From e1732c275784d3bdb6bb2127caef064883d564c0 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 1 May 2026 20:59:00 +0100 Subject: [PATCH] fix(release): quote Parallels model config paths --- scripts/e2e/parallels/powershell.ts | 8 ++++++-- scripts/e2e/parallels/provider-auth.ts | 6 +++++- test/scripts/parallels-smoke-model.test.ts | 18 +++++++++++++++++- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/scripts/e2e/parallels/powershell.ts b/scripts/e2e/parallels/powershell.ts index ffcd265280e..c0a0509073f 100644 --- a/scripts/e2e/parallels/powershell.ts +++ b/scripts/e2e/parallels/powershell.ts @@ -1,4 +1,8 @@ -import { providerIdFromModelId, providerTimeoutConfigJson } from "./provider-auth.ts"; +import { + configPathMapKey, + providerIdFromModelId, + providerTimeoutConfigJson, +} from "./provider-auth.ts"; export function psSingleQuote(value: string): string { return `'${value.replaceAll("'", "''")}'`; @@ -26,7 +30,7 @@ export function windowsModelProviderTimeoutScript(modelId: string): string { value: JSON.parse(configJson) as unknown, }, { - path: `agents.defaults.models.${modelId}`, + path: `agents.defaults.models${configPathMapKey(modelId)}`, value: { alias: "GPT", params: { diff --git a/scripts/e2e/parallels/provider-auth.ts b/scripts/e2e/parallels/provider-auth.ts index 49796d8fc97..48c17522532 100644 --- a/scripts/e2e/parallels/provider-auth.ts +++ b/scripts/e2e/parallels/provider-auth.ts @@ -122,6 +122,10 @@ export function modelTransportConfigJson(modelId: string): string { }); } +export function configPathMapKey(key: string): string { + return `[${JSON.stringify(key)}]`; +} + export function modelProviderConfigBatchJson(modelId: string, platform: Platform): string { const commands: Array<{ path: string; value: unknown }> = []; const providerId = providerIdFromModelId(modelId); @@ -135,7 +139,7 @@ export function modelProviderConfigBatchJson(modelId: string, platform: Platform const modelTransportConfig = modelTransportConfigJson(modelId); if (modelTransportConfig) { commands.push({ - path: `agents.defaults.models.${modelId}`, + path: `agents.defaults.models${configPathMapKey(modelId)}`, value: JSON.parse(modelTransportConfig) as unknown, }); } diff --git a/test/scripts/parallels-smoke-model.test.ts b/test/scripts/parallels-smoke-model.test.ts index 22f5066ed7d..00e1dcc44cb 100644 --- a/test/scripts/parallels-smoke-model.test.ts +++ b/test/scripts/parallels-smoke-model.test.ts @@ -103,6 +103,21 @@ describe("Parallels smoke model selection", () => { } }); + it("writes full model ids as config map keys in provider batches", () => { + const source = ` +import { modelProviderConfigBatchJson } from "./${TS_PATHS.common}"; +const result = modelProviderConfigBatchJson("openai/gpt-4.1-mini", "windows"); +console.log(result); +`; + const batch = JSON.parse(runTsEval(source, { OPENAI_API_KEY: "sk-openai" })) as Array<{ + path: string; + }>; + + expect(batch.map((entry) => entry.path)).toContain( + 'agents.defaults.models["openai/gpt-4.1-mini"]', + ); + }); + it("keeps snapshot, host, package, and quote helpers shared", () => { const common = readFileSync(TS_PATHS.common, "utf8"); const hostCommand = readFileSync(TS_PATHS.hostCommand, "utf8"); @@ -488,7 +503,8 @@ console.log(JSON.stringify(result)); expect(powershell).toContain("windowsOpenClawResolver"); expect(powershell).toContain("providerTimeoutConfigJson"); expect(powershell).toContain("models.providers.${providerId}"); - expect(powershell).toContain("agents.defaults.models.${modelId}"); + expect(powershell).toContain("agents.defaults.models${configPathMapKey(modelId)}"); + expect(powershell).toContain("configPathMapKey"); expect(powershell).toContain('transport: "sse"'); expect(powershell).toContain("Resolve-OpenClawCommand"); expect(powershell).toContain("npm\\node_modules\\openclaw\\openclaw.mjs");