From ee580a693c1f72c81770e8844df37993cd3eed2e Mon Sep 17 00:00:00 2001 From: bitkyc08-arch Date: Fri, 7 Aug 2026 01:43:00 +0900 Subject: [PATCH 1/4] fix(combos): keep unknown effort models selectable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adapted from PR #1092 while preserving fail-closed runtime injection. Co-authored-by: 关俊江 Co-authored-by: Eachann <43348055+eachann1024@users.noreply.github.com> --- gui/src/combo-workspace-data.ts | 15 ++++++++------- src/combos/request.ts | 2 ++ tests/combo-workspace-data.test.ts | 18 +++++++++++++++++- tests/combos.test.ts | 9 ++++++++- 4 files changed, 35 insertions(+), 9 deletions(-) diff --git a/gui/src/combo-workspace-data.ts b/gui/src/combo-workspace-data.ts index bc29bff703..aa32facedd 100644 --- a/gui/src/combo-workspace-data.ts +++ b/gui/src/combo-workspace-data.ts @@ -8,7 +8,10 @@ export type ComboEffort = "low" | "medium" | "high" | "xhigh" | "max" | "ultra"; export const COMBO_EFFORTS: ComboEffort[] = ["low", "medium", "high", "xhigh", "max", "ultra"]; -/** Intersection of per-member effort ladders; unknown ladders contribute no selectable efforts. */ +/** + * Intersection of advertised effort ladders for picker availability. + * Unknown ladders are wildcards here only; runtime injection remains fail-closed. + */ export function intersectComboEfforts( targets: readonly ComboTarget[], modelEfforts: ReadonlyMap, @@ -20,11 +23,8 @@ export function intersectComboEfforts( for (const target of complete) { const key = `${target.provider.trim()}/${target.model.trim()}`; const listed = modelEfforts.get(key); - // Missing metadata must not invent a full ladder — runtime omits the combo default when - // supportedLadderFor is undefined (#488 / Codex review). - const member: string[] = listed === undefined - ? [] - : listed.filter((effort) => effortSet.has(effort)); + if (listed === undefined) continue; + const member = listed.filter((effort) => effortSet.has(effort)); if (common === null) { common = member; } else { @@ -32,7 +32,8 @@ export function intersectComboEfforts( common = common.filter((effort) => memberSet.has(effort)); } } - const commonSet = new Set(common ?? []); + if (common === null) return [...COMBO_EFFORTS]; + const commonSet = new Set(common); return COMBO_EFFORTS.filter((effort) => commonSet.has(effort)); } diff --git a/src/combos/request.ts b/src/combos/request.ts index c7d535f7c9..7727b7689b 100644 --- a/src/combos/request.ts +++ b/src/combos/request.ts @@ -40,6 +40,8 @@ export function concreteComboRequestBody( && !Object.prototype.hasOwnProperty.call(reasoning, "effort") ); if (!needsDefault) return clone; + // Picker availability treats an unknown ladder as a wildcard, but runtime + // injection stays fail-closed until this concrete target advertises support. if (!targetReasoningEfforts?.includes(defaultEffort)) { const key = `${target.provider}/${target.model}:${defaultEffort}`; if (!warnedUnsupportedDefaults.has(key)) { diff --git a/tests/combo-workspace-data.test.ts b/tests/combo-workspace-data.test.ts index 43a6c00366..9ad3ed6544 100644 --- a/tests/combo-workspace-data.test.ts +++ b/tests/combo-workspace-data.test.ts @@ -1,6 +1,7 @@ import { describe, expect, test } from "bun:test"; import { type ComboItem, + COMBO_EFFORTS, buildComboAttention, comboPublicModelId, draftEquals, @@ -171,13 +172,28 @@ describe("combo-workspace-data", () => { )).toEqual(["medium", "high"]); }); - test("intersectComboEfforts treats unknown members as having no selectable efforts", () => { + test("intersectComboEfforts treats unknown members as picker wildcards", () => { const map = new Map([ ["a/m1", ["low", "medium"]], ]); expect(intersectComboEfforts( [{ provider: "a", model: "m1" }, { provider: "b", model: "unknown" }], map, + )).toEqual(["low", "medium"]); + expect(intersectComboEfforts( + [{ provider: "b", model: "unknown" }], + map, + )).toEqual(COMBO_EFFORTS); + }); + + test("intersectComboEfforts keeps an advertised empty ladder restrictive", () => { + const map = new Map([ + ["a/m1", ["low", "medium"]], + ["b/no-reasoning", []], + ]); + expect(intersectComboEfforts( + [{ provider: "a", model: "m1" }, { provider: "b", model: "no-reasoning" }], + map, )).toEqual([]); }); diff --git a/tests/combos.test.ts b/tests/combos.test.ts index f2705d6437..b9b7d1ef35 100644 --- a/tests/combos.test.ts +++ b/tests/combos.test.ts @@ -235,7 +235,7 @@ describe("combo request cloning", () => { expect(concreteComboRequestBody({ model: "combo/x" }, target, "high", ["low", "medium"]).reasoning).toBeUndefined(); }); - test("debug-warns once per unsupported combo default", () => { + test("debug-warns once per unsupported or unknown combo default", () => { const debug = spyOn(console, "debug").mockImplementation(() => {}); concreteComboRequestBody({ model: "combo/x" }, target, "high", []); concreteComboRequestBody({ model: "combo/x" }, target, "high", []); @@ -246,6 +246,13 @@ describe("combo request cloning", () => { requestedEffort: "high", capability: "unsupported", }); + concreteComboRequestBody({ model: "combo/x" }, target, "medium", undefined); + concreteComboRequestBody({ model: "combo/x" }, target, "medium", undefined); + expect(debug).toHaveBeenCalledTimes(2); + expect(debug.mock.calls[1]?.[1]).toMatchObject({ + requestedEffort: "medium", + capability: "unknown", + }); debug.mockRestore(); }); }); From db7c6f0ae92f15840c72abcf0a6b9e7449953ae1 Mon Sep 17 00:00:00 2001 From: bitkyc08-arch Date: Fri, 7 Aug 2026 01:43:57 +0900 Subject: [PATCH 2/4] fix(pi): keep loopback models visible Adapted from PR #1085 without direct-mode filtering or cross-client contract changes. Co-authored-by: n3wr1ch <40690535+n3wr1ch@users.noreply.github.com> --- src/clients/config-export.ts | 31 +++++++------------ .../client-config-export-new-clients.test.ts | 4 +-- tests/client-config-export.test.ts | 16 +++++----- tests/client-config-new-clients.test.ts | 4 +-- tests/management-client-config-route.test.ts | 7 ++--- 5 files changed, 26 insertions(+), 36 deletions(-) diff --git a/src/clients/config-export.ts b/src/clients/config-export.ts index 0a4a84ed00..4d8ca366c1 100644 --- a/src/clients/config-export.ts +++ b/src/clients/config-export.ts @@ -107,15 +107,9 @@ export const OPENCODE_API_KEY_ENV = "OPENCODEX_OPENCODE_API_KEY"; /** Env reference shared by apiKey and the dedicated proxy admission header. */ export const OPENCODE_API_KEY_ENV_REF = `{env:${OPENCODE_API_KEY_ENV}}`; -/** Env var Pi interpolates. Pi takes bare `$NAME`, not opencode's `{env:NAME}`. */ -export const PI_API_KEY_ENV = "OPENCODEX_API_KEY"; - -/** Pi's reference form for the admission key. Never the value. */ -export const PI_API_KEY_ENV_REF = `$${PI_API_KEY_ENV}`; - /** * Hermes interpolates `${VAR}` anywhere in config.yaml, so the credential stays - * in the environment exactly as it does for OpenCode and Pi. + * in the environment exactly as it does for OpenCode. */ export const HERMES_API_KEY_ENV = "OPENCODEX_HERMES_API_KEY"; export const HERMES_API_KEY_ENV_REF = `\${${HERMES_API_KEY_ENV}}`; @@ -125,12 +119,12 @@ export const OPENCLAW_API_KEY_ENV = "OPENCODEX_OPENCLAW_API_KEY"; export const OPENCLAW_API_KEY_ENV_REF = `\${${OPENCLAW_API_KEY_ENV}}`; /** - * Kimi Code reads credentials ONLY from its config file — it never falls back - * to the shell environment. A loopback bind needs no real admission key, so we - * emit the same placeholder the Grok managed block uses rather than a user - * secret; a non-loopback bind is refused by the writer instead of papered over. + * Placeholder credential for loopback-only clients (Kimi, Pi). A loopback + * bind needs no real admission key, so we emit the same placeholder the Grok + * managed block uses rather than a user secret. Pi resolves `apiKey` before + * building its model list and hides the provider when an env reference is unset. */ -export const KIMI_LOOPBACK_PLACEHOLDER = "opencodex-loopback"; +export const LOOPBACK_API_KEY_PLACEHOLDER = "opencodex-loopback"; /** * Gajae's `apiKeyEnv` is env-name-only and fail-closed. Its sibling `apiKey` @@ -728,7 +722,7 @@ function buildPiClientConfig(ctx: ExportContext): PiGeneratedConfig { [OPENCODE_PROVIDER_ID]: { baseUrl: ctx.baseUrl, api: PI_API_DIALECT, - apiKey: PI_API_KEY_ENV_REF, + apiKey: LOOPBACK_API_KEY_PLACEHOLDER, models, }, }, @@ -808,7 +802,7 @@ function buildKimiClientConfig(ctx: ExportContext): KimiGeneratedConfig { [OPENCODE_PROVIDER_ID]: { type: "openai", base_url: ctx.baseUrl, - api_key: KIMI_LOOPBACK_PLACEHOLDER, + api_key: LOOPBACK_API_KEY_PLACEHOLDER, }, }, models, @@ -949,15 +943,14 @@ export const EXPORT_CLIENTS: Record = { id: "pi", filename: "pi-models.json", destination: () => join(homedir(), ".pi", "agent", "models.json"), - apiKeyEnv: PI_API_KEY_ENV, - exportHint: `export ${PI_API_KEY_ENV}=`, + apiKeyEnv: "", + exportHint: "Pi reads a non-secret placeholder from models.json; loopback needs no key.", build: buildPiClientConfig, format: "json", summarize: summarizePi, buildContribution: buildPiContribution, - // No header field in Pi's provider block (and the schema is unverified - // against a real install), so there is nowhere to put the dedicated - // admission header a remote bind requires. + // No header field in Pi's provider block, so there is nowhere to put the + // dedicated admission header a remote bind requires. loopbackOnly: true, }, hermes: { diff --git a/tests/client-config-export-new-clients.test.ts b/tests/client-config-export-new-clients.test.ts index 9de47024f6..8f5173b14c 100644 --- a/tests/client-config-export-new-clients.test.ts +++ b/tests/client-config-export-new-clients.test.ts @@ -5,7 +5,7 @@ import { EXPORT_CLIENT_IDS, GAJAE_API_KEY_ENV, HERMES_API_KEY_ENV_REF, - KIMI_LOOPBACK_PLACEHOLDER, + LOOPBACK_API_KEY_PLACEHOLDER, OPENCLAW_API_KEY_ENV_REF, OPENCODE_PROVIDER_ID, buildClientConfig, @@ -235,7 +235,7 @@ describe("kimi", () => { test("uses the loopback placeholder because Kimi reads no environment", () => { const doc = buildClientConfig("kimi", ctx()) as KimiGeneratedConfig; - expect(doc.providers[OPENCODE_PROVIDER_ID]!.api_key).toBe(KIMI_LOOPBACK_PLACEHOLDER); + expect(doc.providers[OPENCODE_PROVIDER_ID]!.api_key).toBe(LOOPBACK_API_KEY_PLACEHOLDER); }); test("never emits capabilities it cannot assert", () => { diff --git a/tests/client-config-export.test.ts b/tests/client-config-export.test.ts index 8ab7faeab5..3e8b8e881e 100644 --- a/tests/client-config-export.test.ts +++ b/tests/client-config-export.test.ts @@ -6,8 +6,7 @@ import { EXPORT_CLIENT_IDS, OPENCODE_API_KEY_ENV, OPENCODE_API_KEY_ENV_REF, - PI_API_KEY_ENV, - PI_API_KEY_ENV_REF, + LOOPBACK_API_KEY_PLACEHOLDER, SCHEMA_REQUIRED_OUTPUT_BUDGET, buildClientConfig, buildClientConfigText, @@ -160,12 +159,11 @@ describe("Pi serializer (accept criterion 2)", () => { ]); }); - test("provider envelope names the OpenAI-compatible dialect and the env reference", () => { + test("provider envelope names the OpenAI-compatible dialect and the loopback placeholder", () => { const provider = piConfig().providers.opencodex!; expect(provider.baseUrl).toBe(BASE_URL); expect(provider.api).toBe("openai-completions"); - expect(provider.apiKey).toBe(PI_API_KEY_ENV_REF); - expect(provider.apiKey).toBe("$OPENCODEX_API_KEY"); + expect(provider.apiKey).toBe(LOOPBACK_API_KEY_PLACEHOLDER); }); test("cost is omitted on every entry — zeros would assert routed models are free", () => { @@ -236,7 +234,7 @@ describe("no credential ever reaches the output (accept criterion 3)", () => { test("each client emits only its own documented env reference", () => { expect(JSON.stringify(opencodeConfig())).toContain(OPENCODE_API_KEY_ENV_REF); - expect(JSON.stringify(piConfig())).toContain(PI_API_KEY_ENV_REF); + expect(JSON.stringify(piConfig())).toContain(LOOPBACK_API_KEY_PLACEHOLDER); expect(JSON.stringify(piConfig())).not.toContain("{env:"); }); }); @@ -348,7 +346,7 @@ describe("EXPORT_CLIENTS registry", () => { "opencodex": { "baseUrl": "http://127.0.0.1:10100/v1", "api": "openai-completions", - "apiKey": "$OPENCODEX_API_KEY", + "apiKey": "opencodex-loopback", "models": [ { "id": "anthropic/claude-opus-5", @@ -449,8 +447,8 @@ describe("EXPORT_CLIENTS registry", () => { test("apiKeyEnv and exportHint name the variable the config references", () => { expect(EXPORT_CLIENTS.opencode.apiKeyEnv).toBe(OPENCODE_API_KEY_ENV); expect(EXPORT_CLIENTS.opencode.exportHint).toContain(OPENCODE_API_KEY_ENV); - expect(EXPORT_CLIENTS.pi.apiKeyEnv).toBe(PI_API_KEY_ENV); - expect(EXPORT_CLIENTS.pi.exportHint).toContain(PI_API_KEY_ENV); + expect(EXPORT_CLIENTS.pi.apiKeyEnv).toBe(""); + expect(EXPORT_CLIENTS.pi.exportHint).toContain("loopback"); for (const id of EXPORT_CLIENT_IDS) { expect(EXPORT_CLIENTS[id].exportHint).not.toContain("ocx_"); } diff --git a/tests/client-config-new-clients.test.ts b/tests/client-config-new-clients.test.ts index 51fd6de1f4..eaf500ca54 100644 --- a/tests/client-config-new-clients.test.ts +++ b/tests/client-config-new-clients.test.ts @@ -4,7 +4,7 @@ import { EXPORT_CLIENT_IDS, GAJAE_API_KEY_ENV, HERMES_API_KEY_ENV_REF, - KIMI_LOOPBACK_PLACEHOLDER, + LOOPBACK_API_KEY_PLACEHOLDER, OPENCLAW_API_KEY_ENV_REF, OPENCODE_PROVIDER_ID, buildClientConfig, @@ -56,7 +56,7 @@ describe("no client config ever carries a credential", () => { test("kimi uses the loopback placeholder because it cannot read env vars", () => { const doc = buildClientConfig("kimi", ctx()) as KimiGeneratedConfig; - expect(doc.providers[OPENCODE_PROVIDER_ID]!.api_key).toBe(KIMI_LOOPBACK_PLACEHOLDER); + expect(doc.providers[OPENCODE_PROVIDER_ID]!.api_key).toBe(LOOPBACK_API_KEY_PLACEHOLDER); }); test("gajae uses apiKeyEnv, not the apiKey footgun", () => { diff --git a/tests/management-client-config-route.test.ts b/tests/management-client-config-route.test.ts index c5fa46912b..1e20c446ee 100644 --- a/tests/management-client-config-route.test.ts +++ b/tests/management-client-config-route.test.ts @@ -4,8 +4,7 @@ import { OPENCODE_API_KEY_ENV, OPENCODE_CONFIG_SCHEMA, OPENCODE_PROVIDER_ID, - PI_API_KEY_ENV, - PI_API_KEY_ENV_REF, + LOOPBACK_API_KEY_PLACEHOLDER, buildClientConfig, normalizeExportModels, opencodeGlobalConfigPath, @@ -149,11 +148,11 @@ describe("GET /api/client-config", () => { expect(body.client).toBe("pi"); expect(body.filename).toBe("pi-models.json"); - expect(body.apiKeyEnv).toBe(PI_API_KEY_ENV); + expect(body.apiKeyEnv).toBe(""); const provider = (body.config as PiGeneratedConfig).providers[OPENCODE_PROVIDER_ID]; expect(Array.isArray(provider.models)).toBe(true); - expect(provider.apiKey).toBe(PI_API_KEY_ENV_REF); + expect(provider.apiKey).toBe(LOOPBACK_API_KEY_PLACEHOLDER); expect(provider.baseUrl).toBe("http://127.0.0.1:10100/v1"); expect(provider.models.map(model => model.id)).toContain("a/m1"); }, 15_000); From 634390df75d13b37be9e08692f6b03aa1af57c44 Mon Sep 17 00:00:00 2001 From: JUN Date: Fri, 7 Aug 2026 01:54:26 +0900 Subject: [PATCH 3/4] test(export): align the Pi CLI assertions with the loopback placeholder The two failing assertions encoded the behavior the fix deliberately changes: Pi no longer emits an OPENCODEX_API_KEY env reference, because Pi resolves apiKey before building its model list and hides the provider when the reference is unset - which is the defect #1085 reported. The security property under test is unchanged and still asserted: no ocx_ token ever reaches stdout. Only the expected reference form moved from $OPENCODEX_API_KEY to the non-secret opencodex-loopback placeholder. Co-authored-by: n3wr1ch <40690535+n3wr1ch@users.noreply.github.com> --- tests/cli-export-command.test.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tests/cli-export-command.test.ts b/tests/cli-export-command.test.ts index 108dbcaa3d..f793fc7e08 100644 --- a/tests/cli-export-command.test.ts +++ b/tests/cli-export-command.test.ts @@ -139,11 +139,15 @@ describe("ocx export human output (accept criterion 2)", () => { expect(result.stdout).toContain("3 models; 1 omit context limits"); }); - test("Pi names its own destination and env var", async () => { + test("Pi names its own destination and needs no env var", async () => { const proxy = fakeProxy(); const result = await run(["--client", "pi"], { baseUrl: proxy.baseUrl }); expect(result.stdout).toContain(join(".pi", "agent", "models.json")); - expect(result.stdout).toContain("export OPENCODEX_API_KEY="); + // Pi resolves `apiKey` before building its model list and hides the provider + // when an env reference is unset, so a loopback bind ships the non-secret + // placeholder instead of an env var the user was never told to export. + expect(result.stdout).toContain("opencodex-loopback"); + expect(result.stdout).not.toContain("export OPENCODEX_API_KEY="); }); }); @@ -297,8 +301,10 @@ describe("ocx export never serializes a key (accept criterion 6)", () => { for (const [args, envRef] of [ [["--client", "opencode"], "{env:OPENCODEX_OPENCODE_API_KEY}"], [["--client", "opencode", "--json"], "{env:OPENCODEX_OPENCODE_API_KEY}"], - [["--client", "pi"], "$OPENCODEX_API_KEY"], - [["--client", "pi", "--json"], "$OPENCODEX_API_KEY"], + // Pi ships the non-secret loopback placeholder rather than an env reference; + // the property under test is unchanged — no real key ever reaches stdout. + [["--client", "pi"], "opencodex-loopback"], + [["--client", "pi", "--json"], "opencodex-loopback"], ] as Array<[string[], string]>) { logs = []; errors = []; From 033db630748ab5fdf4110e5f0c55cd238a21601f Mon Sep 17 00:00:00 2001 From: JUN Date: Fri, 7 Aug 2026 11:29:23 +0900 Subject: [PATCH 4/4] docs(devlog): add the #1151 effort-picker before/after capture Live GUI evidence for the combo effort-picker fix, captured from two Vite dev servers against the same running proxy: dev (b.png, left) and this branch (a.png, right), both with the same metadata-poor target selected (Zenmux / deepseek-v4-flash-free). Before: 'Default reasoning' offers 1 option - None (target default). After: 7 options - None plus low/medium/high/xhigh/max/ultra. The options are rendered into the page as a visible list because headless Chromium does not paint a native select popup. --- .../1151-effort-picker-before-after.png | Bin 0 -> 40606 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 devlog/_plan/260806_stacked_bug_campaign/evidence/1151-effort-picker-before-after.png diff --git a/devlog/_plan/260806_stacked_bug_campaign/evidence/1151-effort-picker-before-after.png b/devlog/_plan/260806_stacked_bug_campaign/evidence/1151-effort-picker-before-after.png new file mode 100644 index 0000000000000000000000000000000000000000..bc92ea158c9299848a9c5fe52100a7cce8622472 GIT binary patch literal 40606 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%0DNqsYY3$d>j;9Yl&6mhdfqw~%w+ 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