惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
小众软件
小众软件
爱范儿
爱范儿
Y
Y Combinator Blog
博客园 - Franky
美团技术团队
博客园 - 【当耐特】
The Cloudflare Blog
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
Jina AI
Jina AI
IT之家
IT之家
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
大猫的无限游戏
大猫的无限游戏
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 聂微东
WordPress大学
WordPress大学
V
Visual Studio Blog
博客园_首页
阮一峰的网络日志
阮一峰的网络日志
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
有赞技术团队
有赞技术团队

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
refactor: route voice call agent runs through session tar...
jalehman · 2026-06-25 · via Recent Commits to openclaw:main

@@ -61,6 +61,7 @@ const sessionStoreRuntimeFileBackedCompatNames = new Set([

6161

"saveSessionStore",

6262

"updateSessionStore",

6363

]);

64+

const embeddedAgentSessionFileRuntimeNames = new Set(["resolveSessionFilePath"]);

64656566

export const allowedSessionStoreRuntimeFileBackedCompatExports = new Set([

6667

"loadSessionStore",

@@ -141,6 +142,11 @@ export const migratedBundledPluginSessionAccessorFiles = new Set([

141142

"extensions/telegram/src/bot.ts",

142143

"extensions/telegram/src/bot-message-dispatch.ts",

143144

"extensions/telegram/src/bot-native-commands.ts",

145+

"extensions/voice-call/src/response-generator.ts",

146+

]);

147+148+

export const migratedEmbeddedAgentSessionTargetFiles = new Set([

149+

"extensions/voice-call/src/response-generator.ts",

144150

]);

145151146152

export const migratedSessionAccessorWriteFiles = new Set([

@@ -252,6 +258,13 @@ function propertyAccessName(expression) {

252258

return null;

253259

}

254260261+

function propertyNameText(name) {

262+

if (ts.isIdentifier(name) || ts.isStringLiteralLike(name) || ts.isNumericLiteral(name)) {

263+

return name.text;

264+

}

265+

return null;

266+

}

267+255268

function bindingName(node) {

256269

if (node.propertyName && ts.isIdentifier(node.propertyName)) {

257270

return node.propertyName.text;

@@ -414,6 +427,51 @@ export function findSessionAccessorBoundaryViolations(content, fileName = "sourc

414427

return findNamedSessionStoreViolations(content, fileName, legacyNames, legacyKind);

415428

}

416429430+

export function findEmbeddedAgentSessionTargetViolations(content, fileName = "source.ts") {

431+

const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, true);

432+

const violations = findNamedBoundaryViolations(

433+

content,

434+

fileName,

435+

embeddedAgentSessionFileRuntimeNames,

436+

"legacy embedded-agent session file resolver",

437+

);

438+439+

const recordDeprecatedSessionFile = (name) => {

440+

violations.push({

441+

line: toLine(sourceFile, name),

442+

reason:

443+

'passes deprecated embedded-agent runtime identity field "sessionFile"; use sessionTarget',

444+

});

445+

};

446+447+

const visitRunOptions = (options) => {

448+

for (const property of options.properties) {

449+

if (ts.isPropertyAssignment(property) && propertyNameText(property.name) === "sessionFile") {

450+

recordDeprecatedSessionFile(property.name);

451+

} else if (

452+

ts.isShorthandPropertyAssignment(property) &&

453+

property.name.text === "sessionFile"

454+

) {

455+

recordDeprecatedSessionFile(property.name);

456+

}

457+

}

458+

};

459+460+

const visit = (node) => {

461+

if (ts.isCallExpression(node) && propertyAccessName(node.expression) === "runEmbeddedAgent") {

462+

const options = unwrapExpression(node.arguments[0]);

463+

if (options && ts.isObjectLiteralExpression(options)) {

464+

visitRunOptions(options);

465+

}

466+

return;

467+

}

468+

ts.forEachChild(node, visit);

469+

};

470+471+

visit(sourceFile);

472+

return violations;

473+

}

474+417475

export function findSessionAccessorWriteBoundaryViolations(content, fileName = "source.ts") {

418476

return findNamedSessionStoreViolations(content, fileName, legacyWriterNames, "writer");

419477

}

@@ -565,6 +623,7 @@ export async function main() {

565623

"extensions/discord/src/monitor",

566624

"extensions/memory-core/src",

567625

"extensions/telegram/src",

626+

"extensions/voice-call/src",

568627

"src/acp",

569628

"src/agents",

570629

"src/auto-reply",

@@ -656,6 +715,15 @@ export async function main() {

656715

),

657716

findViolations: findMemoryHostSessionCorpusBoundaryViolations,

658717

});

718+

const embeddedAgentSessionTargetViolations = await collectFileViolations({

719+

repoRoot,

720+

sourceRoots: resolveSourceRoots(repoRoot, ["extensions/voice-call/src"]),

721+

skipFile: (filePath) =>

722+

!migratedEmbeddedAgentSessionTargetFiles.has(

723+

normalizeRelativePath(path.relative(repoRoot, filePath)),

724+

),

725+

findViolations: findEmbeddedAgentSessionTargetViolations,

726+

});

659727

const sessionStoreRuntimePath = path.join(repoRoot, "src/plugin-sdk/session-store-runtime.ts");

660728

const sessionStoreRuntimeCompatViolations =

661729

findSessionStoreRuntimeFileBackedCompatExportViolations(

@@ -672,6 +740,7 @@ export async function main() {

672740

...manualCompactTrimViolations,

673741

...lifecycleCleanupViolations,

674742

...memoryHostSessionCorpusViolations,

743+

...embeddedAgentSessionTargetViolations,

675744

...sessionStoreRuntimeCompatViolations,

676745

];

677746