Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion config/quality/file-size-baseline.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"_rebaseline_2026_08_04_5887_gpt55_openai_precedence": "PR fix/codex-gpt55-openai-precedence-5887 own growth only: tests/unit/vscode-token-routes.test.ts 1256->1260 (+4, two explanatory comments on the #9275 trailing-period error-message assertions this PR also fixes). Inherited base.ts/chat.ts drifts intentionally NOT bumped here: #9355 base-relative mode keeps innocent PRs green and baseline bumps for inherited drift are the release captain's call.",
"_rebaseline_2026_07_24_8470_hyperagent_sticky_thread": "PR #8470 (artickc, fix/hyperagent-tool-loop-thread-sticky) own growth: open-sse/executors/hyperagent.ts 936->1025 (wc -l; check-file-size.mjs counts via split(\"\\n\").length so the gate sees 937->1026, +89, crosses the 1000 cap). Fixes a real bug where a reverse-conversion proxy (text-Intent/JSON to Claude Code native tool_calls) rewrites assistant messages between agentic tool-loop turns, breaking HyperAgent's conversation-prefix fingerprint and cold-starting the thread mid tool-loop. Adds Anthropic tool_use/tool_result flattening to extractMessageText() plus a new rootUserFingerprint()/root-key lookup tier in resolveHyperAgentThreadBinding()/storeHyperAgentThreadAfterTurn() so the thread stays sticky across the tool loop. Cohesive additions inside the existing single-file executor; not extractable without splitting the executor mid-request-flow. Covered by tests/unit/executor-hyperagent.test.ts (19/19, +5 new cases for tool_result/tool_use flattening + root-key stickiness). Pre-merge review flagged a cross-conversation root-key collision risk (tracked in the PR's own mandatory pre-merge checklist, not yet addressed) — unrelated to this file-size ratchet, tracked separately by /fix-prs.",
"_rebaseline_2026_07_25_8494_capability_filter_fail_closed": "PR #8494 (fix/capability-filters-fail-closed, #8488) own growth: open-sse/services/combo.ts 3640->3693 (+53) adds a fail-closed guard after filterTargetsByRequestCompatibility() — when every eligible target is excluded by request-capability filtering (vision/tools/etc) instead of quota/health, the combo now returns an explicit `capability_mismatch` 400 (describeCapabilityFilterExhaustion, imported from combo/comboStructure.ts) rather than silently falling through to a generic no-targets error, plus a `compatFilterFailOpen` escape hatch (combo config OR settings) mirrored at both the main/auto and round-robin call sites for symmetry. combo/comboStructure.ts (previously under cap, un-frozen) grows 794->918 (+124) — new home for describeCapabilityFilterExhaustion + providerSupportsEmulatedToolCalling (#5240 emulated tool-calling exemption so fail-closed does not regress prompt-emulation-only combos like all-chatgpt-web). Irreducible orchestration wiring at the existing filter chokepoint (same precedent as #7301's universal-cooldown-retry generalization). Companion test tests/unit/combo-routing-engine.test.ts 3409->3449 (+40, fail-closed/fail-open coverage across both call sites) also rebaselined. Covered by tests/unit/8488-capability-filter-fail-closed.test.ts (new) + 95/95 passing across both files. Structural shrink of combo.ts tracked in #3501.",
"_rebaseline_2026_07_25_8499_ts7_result_union_predicates": "PR #8499 (backryun, chore/ts7-types-executor-scattered) own growth: muse-spark-web.ts 1396->1405 (+9, irreducible). Under this workspace's `strictNullChecks: false`, the boolean-literal discriminant on `GraphqlResult` (`{ ok: true } | { ok: false; error: string }`) narrows the positive `.ok===true` branch but leaves `!result.ok` at the full union under TS7, making `.error` unreachable to the checker at the two call sites (warmup, mode-switch). Fixed by adding a single `isGraphqlFailure()` type-predicate helper (doc comment + 3-line body) reused at both call sites instead of duplicating the predicate inline — not extractable to a shared module without splitting a single-file executor's local narrowing helper out of its own file. Covered by the existing muse-spark-web executor test suite (no behavior change, pure narrowing fix).",
Expand Down Expand Up @@ -203,7 +204,7 @@
"tests/unit/translator-openai-to-kiro.test.ts": 1250,
"tests/unit/translator-resp-gemini-to-openai.test.ts": 1234,
"tests/unit/usage-service-hardening.test.ts": 1483,
"tests/unit/vscode-token-routes.test.ts": 1256,
"tests/unit/vscode-token-routes.test.ts": 1260,
"tests/unit/executor-antigravity.test.ts": 1098
},
"_rebaseline_2026_06_09": "Re-baseline consciente pre-release v3.8.19: 9 arquivos cresceram durante o ciclo (features mergeadas: RequestLoggerV2 +281 request-logger rework, stream +101, combo +73, chatCore +45, catalog +32 fable-5/catalog-flag, callLogs +4, accountFallback +2, usageHistory novo 840) + core.ts +7 (fix resetAllDbModuleState, PR 3536). A catraca segue valendo destes valores — proximo crescimento falha. Decisao: encolher (esp. RequestLoggerV2/chatCore) e a issue #3501 ficam para o ciclo seguinte.",
Expand Down
6 changes: 6 additions & 0 deletions open-sse/services/model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -585,6 +585,12 @@ async function resolveModelByProviderInference(modelId: string, extendedContext:
// connection at all — there is no alternative to preempt, and "no codex credentials"
// is the honest error. With codex active the preference still beats OpenAI, and an
// explicit `openai/…` prefix remains the per-request override either way.
// #5887 × #9447 (owner decision 2026-08-05): for gpt-5.5(+effort variants) this
// active-connection bound IS the codex-vs-openai precedence rule — OpenAI serves it
// while codex is inactive, an ACTIVE codex connection preempts (the ChatGPT
// subscription is the quota source of truth), and an explicit `openai/…` prefix
// remains the per-request override. Do not carve gpt-5.5 out of the set: the
// contract lives in tests/unit/codex-gpt55-routing-5887.test.ts.
if (CODEX_NATIVE_UNPREFIXED_MODELS.has(modelId)) {
const codexNativeAlternatives = (MODEL_TO_PROVIDERS.get(modelId) || []).filter(
(p) => p !== "codex"
Expand Down
8 changes: 5 additions & 3 deletions tests/unit/vscode-token-routes.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -767,9 +767,7 @@ test("vscode tokenized tags route only exposes usable canonical chat models", as
);
assert.ok(
!catalogModel.api_format ||
["chat-completions", "responses", "openai-responses"].includes(
catalogModel.api_format
),
["chat-completions", "responses", "openai-responses"].includes(catalogModel.api_format),
`tag ${tagModel.name} should use a text-generation API format`
);
assert.ok(
Expand Down Expand Up @@ -1161,6 +1159,8 @@ test("vscode tokenized /chat/completions route applies the path token and codex
// error code mapping is "model_not_found" (open-sse/config/errorConfig.ts:29).
assert.equal(response.status, 404);
assert.equal(body.error?.code, "model_not_found");
// #9275: handleNoCredentials now always appends a trailing "." (plus an
// optional candidate-alias hint, empty here) after the provider name.
assert.equal(body.error?.message, "No active credentials for provider: codex.");
});

Expand Down Expand Up @@ -1192,6 +1192,8 @@ test("vscode tokenized /responses route applies the path token and codex tier re
// Upstream port decolua/9router#336: see chat/completions sibling test above.
assert.equal(response.status, 404);
assert.equal(body.error?.code, "model_not_found");
// #9275: handleNoCredentials now always appends a trailing "." (plus an
// optional candidate-alias hint, empty here) after the provider name.
assert.equal(body.error?.message, "No active credentials for provider: codex.");
});

Expand Down
Loading