fix(agents): fall back from tool search code under Electron (#122037)

Punchcard-Session: ember-cedar-willow-tp
This commit is contained in:
Alix-007
2026-08-20 16:44:53 +08:00
committed by GitHub
parent 45ed68e6ea
commit 607eb2efbf
2 changed files with 25 additions and 1 deletions
+6 -1
View File
@@ -37,7 +37,12 @@ export function isToolSearchCodeModeSupported(): boolean {
if (toolSearchCodeModeSupportedForTest !== undefined) {
return toolSearchCodeModeSupportedForTest;
}
return process.allowedNodeEnvironmentFlags.has("--permission");
// Electron advertises Node flags but process.execPath remains the host binary,
// so the isolated code child cannot be launched as a plain Node process.
return (
typeof process.versions.electron !== "string" &&
process.allowedNodeEnvironmentFlags.has("--permission")
);
}
function resolveMinCodeTimeoutMs(): number {
+19
View File
@@ -1127,6 +1127,25 @@ describe("Tool Search", () => {
}
});
it("falls back to structured controls under Electron without changing Node mode", () => {
const electronDescriptor = Object.getOwnPropertyDescriptor(process.versions, "electron");
Object.defineProperty(process.versions, "electron", {
configurable: true,
value: "99.0.0",
});
try {
expect(resolveToolSearchConfig({ tools: { toolSearch: true } } as never).mode).toBe("tools");
} finally {
if (electronDescriptor) {
Object.defineProperty(process.versions, "electron", electronDescriptor);
} else {
delete (process.versions as NodeJS.ProcessVersions & { electron?: string }).electron;
}
}
expect(resolveToolSearchConfig({ tools: { toolSearch: true } } as never).mode).toBe("code");
});
it("guides structured control tools toward compact catalog calls", () => {
const tools = createToolSearchTools({ config: {} as never });
const byName = new Map(tools.map((tool) => [tool.name, tool]));