diff --git a/docs-site/src/content/docs/reference/cli/lifecycle.md b/docs-site/src/content/docs/reference/cli/lifecycle.md index af5fb389d94..ae592a7c284 100644 --- a/docs-site/src/content/docs/reference/cli/lifecycle.md +++ b/docs-site/src/content/docs/reference/cli/lifecycle.md @@ -117,6 +117,11 @@ If a live listener cannot be attested to a runtime PID (including a pre-update p closed without an `ensure` or stop/start fallback. After confirming ownership, use `ocx stop` then `ocx start` for a standalone proxy. For a service-managed proxy, use `ocx stop` followed by `ocx service start` so supervision is restored. +When the invoking CLI is newer than the attested proxy, restart does not respawn in place (that +would keep serving the old build). Instead it carries the attested PID and port through a guarded +stop validated under the ownership lease — refusing if the target changed — and starts the +current installation only after the target shows stopped, accepting the replacement only when it +serves this CLI version on the expected port. One invocation re-observes transient discovery races. A failed start is retried only when the previous attempt never launched a child or the launched child is known to have exited. If a launch may still be running, restart reports the original failure without starting diff --git a/scripts/test-layout/layout.json b/scripts/test-layout/layout.json index 9bdd9150e9f..5b1147452ff 100644 --- a/scripts/test-layout/layout.json +++ b/scripts/test-layout/layout.json @@ -57,7 +57,7 @@ "low-quota-protection.test.ts": "codex-integration", "responses-compaction-recovery.test.ts": "responses", "responses-canonical-nonstream.test.ts": "responses", "compaction-recovery-settings.test.ts": "config", "responses-compaction-recovery-policy.test.ts": "responses", "plugin-loader.test.ts": "lib", "plugin-upstream-hooks.test.ts": "lib", "cli-kiro-auto-selection.test.ts": "cli", "codebuddy-live-models.test.ts": "providers", "kiro-auto-selection.test.ts": "providers/kiro", "kiro-quota-metrics.test.ts": "providers/kiro", "management-provider-request-pacing.test.ts": "server", - "desktop-supervised-restart.test.ts": "clients", "cli-restart-handoff.test.ts": "cli", + "desktop-supervised-restart.test.ts": "clients", "cli-restart-handoff.test.ts": "cli", "restart-update-coordinator.test.ts": "cli", "restart-replacement.test.ts": "server", "deepseek-artifact-tool-schema.test.ts": "providers", "client-config-export-output-limit.test.ts": "config", "responses-skills-snapshot.test.ts": "responses", "responses-code-mode-mcp-direct.test.ts": "responses", "local-read-response-proof.test.ts": "server", "link-relay-bound-transport.test.ts": "clients", "claude-desktop-system-proxy.test.ts": "claude-integration", "codex-config-drift-heal.test.ts": "codex-integration", diff --git a/src/cli/index.ts b/src/cli/index.ts index fd0ed56099f..af7d96a33a0 100755 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -89,6 +89,7 @@ import { type ProxyRestartStartOutcome, } from "./tray-proxy"; import { requestBoundSystemRestart } from "./system-restart-client"; +import { runRestartUpdate, readResolveJson, type RestartUpdateResult } from "./restart-update-coordinator"; import { installCrashGuards } from "../lib/crash-guard"; import { SpendLedgerOwnerError } from "../lib/spend-ledger-owner"; import { redactUrlForLog } from "../lib/redact"; @@ -911,7 +912,7 @@ function reportRestartFailure(result: Extract if (code === "restart_capability_unsupported") { console.error("❌ The running proxy predates process-bound restart support; no unsafe fallback was attempted."); console.error(" After confirming this home owns the proxy, run `ocx stop` and then `ocx start` once."); - } else if (code === "restart_version_skew") { + } else if (code === "restart_version_skew" || code === "restart_version_skew_cli_newer") { console.error("❌ The running proxy reports a different OpenCodex version than this CLI; restarting in place would respawn the old installation."); console.error(" Run `ocx stop` and then `ocx start` from this installation instead."); } else if (code === "restart_package_tree_unsettled") { @@ -925,17 +926,49 @@ function reportRestartFailure(result: Extract console.error("❌ Proxy was not running and the fallback start did not become healthy."); } } +/** Update restart: the CLI is newer than the attested proxy, so stop the old build + * and start the current installation instead of respawning the old one in place. + * The attested PID/port travels into runRestartUpdate, which revalidates it under + * the ownership lease through the guarded-stop mechanism and refuses on any + * owner change instead of stopping blindly. Other skew directions keep refusing + * in reportRestartFailure. */ +function reportRestartUpdateRefusal(result: Extract): void { + switch (result.reason) { + case "target-changed": + console.error(`❌ Refusing the update restart: the attested proxy changed before the stop (${result.detail ?? "identity mismatch"}); nothing was stopped.`); + break; + case "stop-refused": + console.error(`❌ Refusing the update restart: the guarded stop declined (${result.detail ?? "ownership changed"}); nothing was stopped.`); + break; + case "stop-failed": + console.error(`❌ Update restart failed while stopping the old proxy (${result.detail ?? "unknown error"}).`); + break; + case "target-not-confirmed-stopped": + console.error("❌ Refusing the update restart: the old proxy did not confirm stopped; not starting a second proxy over it."); + break; + case "start-failed": + console.error("❌ Update restart stopped the old proxy but the new proxy did not start. Run `ocx start` to recover."); + break; + case "replacement-unverified": + console.error(`❌ Update restart could not verify a replacement serving this CLI (${result.detail ?? "unhealthy"}). Check ocx status before retrying.`); + break; + } +} async function handleProxyRestart( startWhenStopped: (recoveringLiveRestart: boolean) => Promise, ): Promise { const deadlineAt = Date.now() + PROXY_RESTART_OBSERVE_MS; + const stashed: { previous: ProxyRestartLive | null } = { previous: null }; const result = await runProxyRestart({ findLive: () => discoverStableProxyForRestart({ findLive: () => findLiveProxy({ deadlineAt, attempts: 2, acceptPackageTreeFenced: true }), expired: () => Date.now() >= deadlineAt, }), startWhenStopped, - requestInPlaceRestart: previous => requestBoundSystemRestart(previous, deadlineAt), + requestInPlaceRestart: previous => { + stashed.previous = previous; + return requestBoundSystemRestart(previous, deadlineAt); + }, waitForReplacement: previous => waitForProxyReplacement(previous, deadlineAt - RESTART_REOBSERVE_RESERVE_MS, end => findLiveProxy({ deadlineAt: end })), reobserveAfterReplacement: previous => reobserveRestartReplacement(previous, deadlineAt, end => discoverStableProxyForRestart({ @@ -947,7 +980,34 @@ async function handleProxyRestart( findLive: () => findLiveProxy({ deadlineAt: end, attempts: 2, acceptPackageTreeFenced: true }), expired: () => Date.now() >= end, })), }); - if (!result.ok) reportRestartFailure(result); + if (!result.ok) { + const code = result.phase === "request" && result.error instanceof Error ? result.error.message : ""; + const previous = stashed.previous; + if (result.phase === "request" && code === "restart_version_skew_cli_newer" + && previous !== null && previous.pid !== null) { + console.log(`🔄 Running proxy is older than this CLI (${packageVersion()}); restarting via guarded stop/start from the current installation...`); + const updated = await runRestartUpdate( + { pid: previous.pid, port: previous.port }, + deadlineAt, + { + findLive: () => findLiveProxy({ deadlineAt, attempts: 2 }), + resolve: readResolveJson, + stopGuarded: approval => handleStop(approval), + startWhenStopped, + cliVersion: packageVersion(), + }, + ); + if (updated.ok) { + console.log(`✅ Proxy updated and running on ${updated.live.version ?? packageVersion()} (PID ${updated.live.pid ?? "unknown"}).`); + process.exitCode = 0; + return true; + } + reportRestartUpdateRefusal(updated); + process.exitCode = 1; + return false; + } + reportRestartFailure(result); + } process.exitCode = result.ok ? 0 : 1; return result.ok; } diff --git a/src/cli/restart-update-coordinator.ts b/src/cli/restart-update-coordinator.ts new file mode 100644 index 00000000000..db8de9a1183 --- /dev/null +++ b/src/cli/restart-update-coordinator.ts @@ -0,0 +1,137 @@ +/** + * Identity-carrying coordinator for the CLI-newer update restart. + * + * An in-place restart respawns the live process from its own installation, so a + * restart accepted from a newer CLI would keep serving the old build. Instead of + * refusing (or stopping whatever happens to be live), this coordinator carries + * the attested restart identity (PID/port) through every step and revalidates it + * under the ownership lease through the existing guarded-stop mechanism + * (runApprovedStop): a changed, unknown, or non-runtime owner refuses before any + * stop is attempted, the start runs only after the intended target shows + * stopped, and the replacement is accepted only when it serves this exact CLI + * version on the expected port. Every boundary is injected for tests; no real + * service is touched by the regression suite. + */ +import type { LiveProxy } from "../server/proxy-liveness"; +import { runResolve, type ResolveJson } from "./resolve"; +import type { StopApproval } from "./stop-approval"; +import type { StopOutcome } from "./stop-report"; +import type { ProxyRestartStartOutcome } from "./tray-proxy"; + +/** Attested restart identity observed before the CLI-newer refusal. */ +export interface RestartUpdateTarget { + pid: number; + port: number; +} + +export type RestartUpdateRefusal = + | "target-changed" + | "stop-refused" + | "stop-failed" + | "target-not-confirmed-stopped" + | "start-failed" + | "replacement-unverified"; + +export type RestartUpdateResult = + | { ok: true; live: LiveProxy } + | { ok: false; reason: RestartUpdateRefusal; detail?: string }; + +export interface RestartUpdateIo { + findLive: () => Promise; + resolve: () => Promise; + stopGuarded: (approval: StopApproval) => Promise; + startWhenStopped: (recoveringLiveRestart: boolean) => Promise; + now?: () => number; + sleep?: (ms: number) => Promise; + cliVersion: string; +} + +/** Bounded re-observation shared by the stopped and replacement waits. */ +async function pollLive( + findLive: () => Promise, + deadlineAt: number, + now: () => number, + sleep: (ms: number) => Promise, + accept: (live: LiveProxy | null) => boolean, +): Promise { + for (;;) { + const live = await findLive(); + if (accept(live)) return live; + const remaining = deadlineAt - now(); + if (remaining <= 0) return null; + await sleep(Math.min(250, remaining)); + } +} + +/** Production resolve reader: one JSON document, null on any other outcome. */ +export async function readResolveJson(): Promise { + const lines: string[] = []; + const code = await runResolve({ json: true }, { + stdout: { log: (line: string) => { lines.push(line); } }, + stderr: { error: () => {} }, + }); + if (code !== 0 || lines.length !== 1) return null; + try { + return JSON.parse(lines[0] as string) as ResolveJson; + } catch { + return null; + } +} + +const STOPPED_CONFIRM_BUDGET_MS = 10_000; + +export async function runRestartUpdate( + target: RestartUpdateTarget, + deadlineAt: number, + io: RestartUpdateIo, +): Promise { + const now = io.now ?? Date.now; + const sleep = io.sleep ?? Bun.sleep; + const fail = (reason: RestartUpdateRefusal, detail?: string): RestartUpdateResult => + ({ ok: false, reason, ...(detail === undefined ? {} : { detail }) }); + const resolved = await io.resolve(); + if (resolved === null) return fail("target-changed", "the runtime could not be re-resolved"); + const liveness = resolved.liveness; + if (liveness.status !== "live" || liveness.pid === null || liveness.port === null) { + return fail("target-changed", "the approved runtime is no longer live"); + } + if (liveness.pid !== target.pid || liveness.port !== target.port) { + return fail("target-changed", "the live PID/port no longer match the attested restart target"); + } + if (liveness.source !== "runtime") { + return fail("target-changed", "the live runtime is no longer attested"); + } + if (liveness.role === "client") { + return fail("target-changed", "the runtime now routes as a client"); + } + const approval: StopApproval = { + pid: target.pid, + port: target.port, + hostname: liveness.hostname ?? "", + configHome: resolved.configHome, + cliVersion: io.cliVersion, + compatibilityToken: resolved.takeover.kind === "supported" ? resolved.takeover.token : "", + }; + const stopped = await io.stopGuarded(approval); + if (!stopped.ok) { + const refused = stopped.summary.outcome === "approval-changed"; + return fail(refused ? "stop-refused" : "stop-failed", stopped.summary.message); + } + const stoppedDeadline = Math.min(deadlineAt, now() + STOPPED_CONFIRM_BUDGET_MS); + const gone = await pollLive(io.findLive, stoppedDeadline, now, sleep, + live => live === null || live.port !== target.port); + if (gone === null && now() >= stoppedDeadline) { + return fail("target-not-confirmed-stopped", "the expected port still answers after the stop"); + } + const started = await io.startWhenStopped(true); + if (started.status !== "started") { + return fail("start-failed", "the replacement proxy did not start"); + } + const replacement = await pollLive(io.findLive, deadlineAt, now, sleep, + live => live !== null && live.source === "runtime" && live.port === target.port + && live.pid !== null && live.version === io.cliVersion); + if (replacement === null) { + return fail("replacement-unverified", "no healthy replacement serving this CLI version appeared in time"); + } + return { ok: true, live: replacement }; +} diff --git a/src/cli/system-restart-client.ts b/src/cli/system-restart-client.ts index 5a801d61248..6ca7eb44e2d 100644 --- a/src/cli/system-restart-client.ts +++ b/src/cli/system-restart-client.ts @@ -143,8 +143,15 @@ export async function requestBoundSystemRestart( const proxyVersion = fenced ? body.installedVersion as string : typeof body.version === "string" ? body.version : undefined; - if (computeVersionSkew(deps.cliVersion ?? ownCliVersion(), proxyVersion).skewed) { - return rejected("restart_version_skew"); + const skew = computeVersionSkew(deps.cliVersion ?? ownCliVersion(), proxyVersion); + if (skew.skewed) { + // cli-newer means this installation already holds the update the running proxy + // lacks: an in-place respawn would keep serving the old build (#4522). The + // caller carries the attested identity into runRestartUpdate + // (restart-update-coordinator.ts), which revalidates it under the ownership + // lease through the guarded-stop mechanism instead of refusing. Other skew + // directions (proxy-newer, incomparable) still refuse. + return rejected(skew.relation === "cli-newer" ? "restart_version_skew_cli_newer" : "restart_version_skew"); } let observed: LiveProxy | null; diff --git a/structure/runtime.md b/structure/runtime.md index e776d51ba87..4ba6b7fd37b 100644 --- a/structure/runtime.md +++ b/structure/runtime.md @@ -123,7 +123,7 @@ does not perform OAuth, and runtime credential resolution rereads the owned sour | `bin/ocx.mjs` | Published npm `bin` entry (Node shim). Resolves the bundled or explicit Bun binary before project dotenv can load, stamps its runtime provenance plus a proof-bound Anthropic parent-env snapshot, lazy-runs `bun/install.js` if only the placeholder stub is present, then execs `src/cli/index.ts` under Bun. Lets `npm install -g` work without a separately-installed Bun. The exact `system codex-cli-update` inspection namespace skips both boot repair and lazy Bun installation; missing runtime support fails closed instead of mutating state. | | `src/lib/bun-runtime.ts` | Bundled-Bun resolution: `isRealBunBinary()` (size gate vs the ~450-byte placeholder stub), `bundledBunPath()`, and `durableBunPath()` (path baked into service/shim artifacts). Durable selection accepts only the source/path pair already stamped for the running executable; it never re-reads a project-dotenv `OPENCODEX_BUN_PATH`. | | `src/lib/plain-data.ts` | Detached copies for a consumer that must not observe later edits. Descriptor-based reads, including array elements, so an accessor is refused rather than invoked; refuses cycles, functions, class instances and anything else JSON could not have produced, and returns a copy-or-refusal union rather than degrading silently. Symbol-keyed process bookkeeping is skipped. | -| `src/cli/index.ts` | `ocx` / `opencodex` CLI. Lifecycle: init, start, stop, restart, status, sync, restore/eject, gui, service, update. `restart` refuses an in-place restart requested by a CLI whose version differs from the attested `/healthz` version, because the replacement respawns from the live installation; placeholder versions (unknown/0.0.0) stay incomparable and keep the restart path. Configuration: provider, account, models, combo/route, access, integrations, v2. Client launchers: Claude, OpenCode, MiniMax Code, and MiniMax CLI text. The MMX launcher owns a child-lifetime loopback path bridge from the client's hard-coded `/anthropic/v1/messages` path to the canonical `/v1/messages` data plane; the server does not expose an extra auth surface. Diagnostics: doctor, debug, observe, health. Windows adds tray. Hidden `__update-badge` prints the read-only package badge JSON without refresh or shim repair for the npm tray. The full top-level reference is rendered by `src/cli/help.ts`; this table names the groups, not every verb. After help/version and unknown-root early exits, recognized commands run the bounded best-effort Codex-shim auto-restore policy before dispatch. `system codex-cli-update` is the deliberate read-only exception and suppresses auto-restore for its whole namespace, including malformed invocations. Keeps the `#!/usr/bin/env bun` shebang for from-source dev (`bun run src/cli/index.ts`). `src/cli/init.ts` validates an explicit setup port as a decimal integer from 1 through 65535 before publishing the initial configuration. Only an empty answer selects 10100; malformed input is reported and the port question is asked again, while EOF or SIGINT still cancels without saving. | +| `src/cli/index.ts` | `ocx` / `opencodex` CLI. Lifecycle: init, start, stop, restart, status, sync, restore/eject, gui, service, update. `restart` refuses an in-place restart when the versions differ, because the replacement respawns from the live installation; placeholder versions (unknown/0.0.0) stay incomparable and keep the restart path, while a newer CLI restarts through the identity-carrying update coordinator in `src/cli/restart-update-coordinator.ts` instead of refusing. Configuration: provider, account, models, combo/route, access, integrations, v2. Client launchers: Claude, OpenCode, MiniMax Code, and MiniMax CLI text. The MMX launcher owns a child-lifetime loopback path bridge from the client's hard-coded `/anthropic/v1/messages` path to the canonical `/v1/messages` data plane; the server does not expose an extra auth surface. Diagnostics: doctor, debug, observe, health. Windows adds tray. Hidden `__update-badge` prints the read-only package badge JSON without refresh or shim repair for the npm tray. The full top-level reference is rendered by `src/cli/help.ts`; this table names the groups, not every verb. After help/version and unknown-root early exits, recognized commands run the bounded best-effort Codex-shim auto-restore policy before dispatch. `system codex-cli-update` is the deliberate read-only exception and suppresses auto-restore for its whole namespace, including malformed invocations. Keeps the `#!/usr/bin/env bun` shebang for from-source dev (`bun run src/cli/index.ts`). `src/cli/init.ts` validates an explicit setup port as a decimal integer from 1 through 65535 before publishing the initial configuration. Only an empty answer selects 10100; malformed input is reported and the port question is asked again, while EOF or SIGINT still cancels without saving. | | `src/cli/root.ts`, `src/cli/help.ts`, `src/cli/help-navigation.ts` | The pure Bun-head parser retains command argv and derives transient help paths before shim preflight or command dispatch. Bare `help` is recognized only at root or immediately after the root command; nested paths use `--help`/`-h`, and exact `--` ends head help scanning. Later operand values such as `alias set demo help` stay commands. `runCli` exits help and rejects unknown roots before shim/stateful preflight, while preserving `parseCliHead` and its kinds. Registry names/aliases/hidden entries and the unregistered `internal` runner remain valid dispatch targets; hidden/internal names stay outside discovery and suggestions. `printUsage` renders the same compact index for bare `ocx`, `help`, `--help` and `-h`; static navigation groups reference registry names/summaries and add no configuration reads, width probes or color dependence. `printFullUsage` preserves the full reference behind `ocx help --all` and `ocx --help --all`. This contract concerns the Bun head; the Node launcher's updater interception has its own recognition rules. | | `src/cli/help-catalog.ts`, `src/cli/help-models-context.ts`, `src/cli/help-recovery.ts` | Pure help resolution uses `src/cli/registry.ts` and `src/cli/capabilities.ts`, preserving exact alias usage/details before canonical family navigation. Entry results carry transient canonical identity and declared descendants; family help lists partial child coverage and links the curated models-context topic separately. Hidden entries remain explicitly callable but absent from discovery. Declared capabilities render summaries, known flags/details and parent pointers without inventing operand grammar; declared-prefix groups mark incomplete coverage. Unknown roots and unavailable explicit `ocx help ` detail use concise stderr-only diagnostics/navigation, empty stdout and exit 1, without a full banner. Missing detail never establishes unsupported runtime grammar. Successful appended flag-help parent fallback runs before recovery and preserves its write sink; unresolved explicit help uses stderr regardless of sink. The resolver does not validate runtime command execution. The curated models-context topic shares `MODELS_CONTEXT_USAGE` with `src/cli/models-runtime.ts`, preserving its status/value/provider/all grammar and read-only status example. The catalog projects pure transient recovery candidates from visible registry names/aliases, immediate declared children and curated topics, deduplicated by canonical destination. The pure recovery formatter bounds input/depth/work, matches conservative edit distances including adjacent transpositions and sorts by distance/name; at most three metadata-derived destinations are suggested, never executed or extended with trailing argv. Distant/control/oversized input gets no guess. Root diagnostics echo only a bounded command-shaped first token accepted by `src/lib/redact.ts`; nested diagnostics never echo arbitrary operands. `src/cli/dispatch.ts` reuses the formatter for direct unknown-root dispatch. Capability JSON and provider-specific error semantics remain unchanged. Provider syntax/examples live in registry details; `src/cli/provider.ts` uses the shared renderer for bare/help success (stdout, exit 0) and unknown-action diagnostics/help (stderr, exit 1, no stdout). The transient optional `write` sink defaults to `console.log`, accepts `console.error` for that error path and propagates through parent fallback. Bare provider retains ordinary preflight; only head-help forms bypass it. | | `src/server/index.ts` | Bun server entrypoint: `startServer`, `/v1/responses` HTTP + WebSocket routing (compact handled before generic Responses), exact `POST /v1/images/generations` and `POST /v1/images/edits` routing, `/v1/models`, the Anthropic-shaped `/v1/messages` and OpenAI-shaped `/v1/chat/completions` compatibility surfaces, the Live/Realtime surface, the hosted-search relay, artifact serving, `/healthz`, the `/api/*` auth gate, the `/v1/*` JSON 404 guard, GUI fallback, the opt-in loopback-only hub-management listener, and facade re-exports for split server modules. The route table itself is built by `src/server/index/serve-options.ts`; this entry file owns the listener and the startup transaction. | @@ -192,7 +192,7 @@ described in [OpenAI quota ownership](providers/openai-tiers.md#public-provider- until shutdown. Normal shutdown restores native Codex; a sibling instance beside a live proxy ([Codex home](codex-home.md#codex-home)) syncs and restores nothing, and `ocx stop` of a runtime whose record carries `siblingOfPort` skips the shared teardown. `src/cli/index.ts` resolves same-home ownership, then checks shared client hints through the cross-home owner helper, then reconciles the journal only when no sibling is marked. Service mode sets `OCX_SERVICE=1`, so managed restarts do not repeatedly restore/reinject; explicit service stop and uninstall still restore. `src/service/cli.ts` removes the service token on uninstall only when persisted client state is disconnected and no pending connect marker owns the newly issued key. `src/client/connect.ts` publishes that fingerprint marker before the key, then clears it with the connection commit or rollback under the client lifecycle and config mutation locks. Connected, invalid, or mismatched client state retains an existing token. A valid pending marker retains only its matching fingerprint; an older marker does not own a replacement service key. An absent token is reported as absent; unsafe, malformed, or unreadable markers and lock, state-read, or deletion failures leave cleanup unverified. -`src/cli/tray-proxy.ts` coordinates `ocx restart` and tray restart. A second start requires proof the prior attempt never launched or its child exited, plus confirmed absence under a fresh bounded discovery window; a missing health response alone is insufficient. After an accepted restart, polling continues through uncertain observations until its deadline and requires a new runtime PID on the same port. If the old proxy then disappears, explicit recovery starts it regardless of the Codex autostart preference; a skipped recovery fails rather than reporting success. +`src/cli/tray-proxy.ts` coordinates `ocx restart` and tray restart. A second start requires proof the prior attempt never launched or its child exited, plus confirmed absence under a fresh bounded discovery window; a missing health response alone is insufficient. After an accepted restart, polling continues through uncertain observations until its deadline and requires a new runtime PID on the same port. If the old proxy then disappears, explicit recovery starts it regardless of the Codex autostart preference; a skipped recovery fails rather than reporting success. When the CLI is newer than the attested proxy, the update path carries the observed PID/port into `src/cli/restart-update-coordinator.ts`, which revalidates the identity under the ownership lease through the guarded stop in `src/cli/stop-approval.ts` (a changed, unknown, or non-runtime owner refuses before any stop), starts only after the target shows stopped, and accepts the replacement only when it serves this CLI version on the expected port; `tests/cli/restart-update-coordinator.test.ts` pins every refusal with injected fakes and no real service. The package-tree integrity fence for live package replacement follows the [update transaction contract](ops/docs-and-release.md#package-tree-integrity-fence). After client journal reconciliation, `ocx ensure` in `src/cli/dispatch.ts` treats validated connected-client state as a successful no-op without local startup or a remote health probe; invalid or mismatched state still fails, and disconnected state keeps local ensure. `tests/cli/cli-ensure-client-state.test.ts` pins this dispatch contract so the Codex shim does not warn merely because its proxy is delegated to a hub. A busy preferred port is never resolved by starting somewhere else. Both questions a start asks diff --git a/tests/cli/restart-update-coordinator.test.ts b/tests/cli/restart-update-coordinator.test.ts new file mode 100644 index 00000000000..e314ac92d89 --- /dev/null +++ b/tests/cli/restart-update-coordinator.test.ts @@ -0,0 +1,223 @@ +/** + * Injected regressions for the CLI-newer update coordinator: the attested + * restart identity must survive every step, and anything else refuses before + * acting. No real service is touched — every boundary is a fake. + */ +import { describe, expect, test } from "bun:test"; +import { STOP_SUMMARY_SCHEMA, type StopOutcome } from "../../src/cli/stop-report"; +import type { StopApproval } from "../../src/cli/stop-approval"; +import type { ResolveJson, ResolveLivenessJson } from "../../src/cli/resolve"; +import type { ProxyRestartStartOutcome } from "../../src/cli/tray-proxy"; +import type { LiveProxy } from "../../src/server/proxy-liveness"; +import { + runRestartUpdate, + type RestartUpdateIo, + type RestartUpdateTarget, +} from "../../src/cli/restart-update-coordinator"; + +const CLI_VERSION = "2.77.0"; +const TARGET: RestartUpdateTarget = { pid: 4242, port: 10100 }; +const TOKEN = "a".repeat(64); +const TEST_CONFIG_HOME = "/tmp/ocx-test-config-home"; + +function live(over: Partial = {}): LiveProxy { + return { + pid: 4242, port: 10100, hostname: "127.0.0.1", + source: "runtime", version: "2.69.0", ...over, + }; +} + +function resolveOk( + livenessOver: Partial = {}, + topOver: Partial = {}, +): ResolveJson { + return { + schema: "ocx-resolve/1", + cliVersion: CLI_VERSION, + configHome: TEST_CONFIG_HOME, + port: { effective: 10100, configured: 10100, source: "runtime" }, + liveness: { + status: "live", pid: 4242, port: 10100, + hostname: "127.0.0.1", source: "runtime", version: "2.69.0", + ...livenessOver, + }, + ownership: { kind: "unknown", reason: "test" }, + takeover: { kind: "supported", protocolVersion: 1, minimumCliVersion: "0.0.0", token: TOKEN }, + ...topOver, + }; +} + +function stopSummary(outcome: StopOutcome["summary"]["outcome"], message: string): StopOutcome { + return { + ok: outcome === "stopped", + summary: { + schema: STOP_SUMMARY_SCHEMA, ok: outcome === "stopped", outcome, + exitCode: outcome === "stopped" ? 0 : 1, runtimeDown: outcome === "stopped", + service: "absent", proxy: outcome === "stopped" ? "stopped" : "unknown", + sharedTeardown: "skipped", message, + }, + }; +} + +interface ScriptedIo extends RestartUpdateIo { + stopCalls: StopApproval[]; + startCalls: boolean[]; +} + +function scriptIo(script: { + lives?: Array; + resolve?: ResolveJson | null; + stop?: StopOutcome; + start?: ProxyRestartStartOutcome; +}): ScriptedIo { + let now = 1_000_000; + const liveQueue = [...(script.lives ?? [])]; + let last: LiveProxy | null = null; + const stopCalls: StopApproval[] = []; + const startCalls: boolean[] = []; + return { + stopCalls, + startCalls, + cliVersion: CLI_VERSION, + now: () => now, + sleep: async ms => { now += ms; }, + findLive: async () => { + if (liveQueue.length > 0) last = liveQueue.shift()!; + return last; + }, + resolve: async () => script.resolve ?? null, + stopGuarded: async approval => { + stopCalls.push(approval); + return script.stop ?? stopSummary("stopped", "stopped"); + }, + startWhenStopped: async recovering => { + startCalls.push(recovering); + return script.start ?? { status: "started" }; + }, + }; +} + +function run(io: ScriptedIo) { + return runRestartUpdate(TARGET, 1_000_000 + 30_000, io); +} + +describe("restart update coordinator", () => { + test("updates through guarded stop/start when the attested target is stable", async () => { + const io = scriptIo({ + resolve: resolveOk(), + lives: [null, null, live({ version: CLI_VERSION })], + stop: stopSummary("stopped", "stopped"), + start: { status: "started" }, + }); + const result = await run(io); + expect(result).toEqual({ ok: true, live: live({ version: CLI_VERSION }) }); + expect(io.stopCalls).toEqual([{ + pid: 4242, port: 10100, hostname: "127.0.0.1", + configHome: TEST_CONFIG_HOME, + cliVersion: CLI_VERSION, compatibilityToken: TOKEN, + }]); + expect(io.startCalls).toEqual([true]); + }); + + test("refuses without stopping when a supervisor replaced the target (A-to-B)", async () => { + const io = scriptIo({ + resolve: resolveOk({ pid: 9999 }), + lives: [live({ pid: 9999 })], + }); + const result = await run(io); + expect(result.ok).toBe(false); + if (!result.ok) expect(result.reason).toBe("target-changed"); + expect(io.stopCalls).toHaveLength(0); + expect(io.startCalls).toHaveLength(0); + }); + + test("refuses unresolvable, unattested, or client-role runtimes without stopping", async () => { + for (const resolve of [ + null, + resolveOk({ status: "absent-proven", pid: null, port: null }), + resolveOk({ source: "config" }), + resolveOk({ role: "client" }), + ]) { + const io = scriptIo({ resolve }); + const result = await run(io); + expect(result.ok).toBe(false); + if (!result.ok) expect(result.reason).toBe("target-changed"); + expect(io.stopCalls).toHaveLength(0); + expect(io.startCalls).toHaveLength(0); + } + }); + + test("refuses the stop when the guarded stop declines under lease", async () => { + const io = scriptIo({ + resolve: resolveOk(), + stop: stopSummary("approval-changed", "the live PID is now 9999 (approved 4242)"), + }); + const result = await run(io); + expect(result).toEqual({ + ok: false, reason: "stop-refused", + detail: "the live PID is now 9999 (approved 4242)", + }); + expect(io.stopCalls).toHaveLength(1); + expect(io.startCalls).toHaveLength(0); + }); + + test("fails closed when the guarded stop fails", async () => { + const io = scriptIo({ + resolve: resolveOk(), + stop: stopSummary("failed", "stop exploded"), + }); + const result = await run(io); + expect(result.ok).toBe(false); + if (!result.ok) { + expect(result.reason).toBe("stop-failed"); + expect(result.detail).toBe("stop exploded"); + } + expect(io.startCalls).toHaveLength(0); + }); + + test("refuses to start over a port that still answers after the stop", async () => { + const io = scriptIo({ + resolve: resolveOk(), + lives: [live()], + stop: stopSummary("stopped", "stopped"), + }); + const result = await run(io); + expect(result.ok).toBe(false); + if (!result.ok) expect(result.reason).toBe("target-not-confirmed-stopped"); + expect(io.stopCalls).toHaveLength(1); + expect(io.startCalls).toHaveLength(0); + }); + + test("refuses when the replacement does not start", async () => { + const io = scriptIo({ + resolve: resolveOk(), + lives: [null], + stop: stopSummary("stopped", "stopped"), + start: { status: "failed", launch: "unknown" }, + }); + const result = await run(io); + expect(result.ok).toBe(false); + if (!result.ok) expect(result.reason).toBe("start-failed"); + }); + + test("refuses an unverified replacement identity or version", async () => { + const wrongVersion = scriptIo({ + resolve: resolveOk(), + lives: [null, live({ pid: 5555, version: "2.69.0" })], + stop: stopSummary("stopped", "stopped"), + start: { status: "started" }, + }); + const stale = await run(wrongVersion); + expect(stale.ok).toBe(false); + if (!stale.ok) expect(stale.reason).toBe("replacement-unverified"); + const never = scriptIo({ + resolve: resolveOk(), + lives: [], + stop: stopSummary("stopped", "stopped"), + start: { status: "started" }, + }); + const absent = await run(never); + expect(absent.ok).toBe(false); + if (!absent.ok) expect(absent.reason).toBe("replacement-unverified"); + }); +}); diff --git a/tests/cli/system-restart-client.test.ts b/tests/cli/system-restart-client.test.ts index 5c1abe111c9..04a4c7cad45 100644 --- a/tests/cli/system-restart-client.test.ts +++ b/tests/cli/system-restart-client.test.ts @@ -148,10 +148,10 @@ describe("bound system restart client", () => { }); test("refuses a restart through a CLI whose version differs from the attested proxy", async () => { - for (const [proxyVersion, cliVersion] of [ - ["2.49.0", "2.53.0"], - ["2.53.0", "2.49.0"], - ["test", "2.53.0"], + for (const [proxyVersion, cliVersion, expected] of [ + ["2.49.0", "2.53.0", "restart_version_skew_cli_newer"], + ["2.53.0", "2.49.0", "restart_version_skew"], + ["test", "2.53.0", "restart_version_skew"], ] as const) { const setup = successfulDeps(); setup.deps.cliVersion = cliVersion; @@ -173,7 +173,7 @@ describe("bound system restart client", () => { const outcome = await requestBoundSystemRestart(target, 10_000, setup.deps); expect(outcome).toMatchObject({ accepted: false, uncertain: false }); expect(outcome.accepted ? "" : (outcome.error as Error).message) - .toBe("restart_version_skew"); + .toBe(expected); expect(setup.requests).toHaveLength(1); } }); diff --git a/tests/fixtures/test-layout-expected.json b/tests/fixtures/test-layout-expected.json index 78bb511b0a4..ee7a0053c51 100644 --- a/tests/fixtures/test-layout-expected.json +++ b/tests/fixtures/test-layout-expected.json @@ -1,9 +1,9 @@ { - "droid-normalized-reasoning-defaults.test.ts": "clients", "responses-combo-exhausted-error.test.ts": "responses", "cli-config-default-show.test.ts": "cli", "ollama-native-tool-continuations.test.ts": "providers/ollama", - "usage-antigravity-55.test.ts": "usage", "provider-antigravity-wire-snapshot.test.ts": "providers", + "usage-antigravity-55.test.ts": "usage", + "provider-antigravity-wire-snapshot.test.ts": "providers", "antigravity-discovered-families.test.ts": "adapters/google", "provider-antigravity-effort-families.test.ts": "providers", "provider-antigravity-family-catalog.test.ts": "providers", @@ -22,1009 +22,1887 @@ "codex-shim-path-readiness.test.ts": "codex-integration", "codex-shim-fnm.test.ts": "codex-integration", "claude-intercept-cleanup.test.ts": "claude-integration", - "droid-managed-reasoning-defaults.test.ts": "clients", "management-droid-reasoning-defaults.test.ts": "server", - "droid-reasoning-defaults.test.ts": "responses", "claude-intercept-on-demand.test.ts": "claude-integration", + "droid-managed-reasoning-defaults.test.ts": "clients", + "management-droid-reasoning-defaults.test.ts": "server", + "droid-reasoning-defaults.test.ts": "responses", + "claude-intercept-on-demand.test.ts": "claude-integration", "main-account-hard-lock-thresholds.test.ts": "codex-integration", - "main-account-external-usage.test.ts": "codex-integration", "jev-decision-model-config.test.ts": "routing", - "cli-combo-partial-update.test.ts": "cli", "desktop-app-server-shim.test.ts": "clients", - "desktop-app-server-shim-launcher.test.ts": "clients", "desktop-chatgpt-config.test.ts": "clients", - "owner-registry-acl.test.ts": "config", "minimax-combo-image-input.test.ts": "providers", - "web-search-forced-declaration.test.ts": "web-search", "claude-devin-output-order.test.ts": "claude-integration", - "codex-config-preservation.test.ts": "codex-integration", "codex-credits.test.ts": "codex-integration", - "codex-credits-settings.test.ts": "codex-integration", "codex-credits-probes.test.ts": "codex-integration", - "codex-credits-after-limit.test.ts": "codex-integration", - "codex-credits-after-limit-main.test.ts": "codex-integration", "service-desktop-startup-health.test.ts": "service", - "service-desktop-startup.test.ts": "service", "startup-health-packaged-probe.test.ts": "server", - "discovered-native-models.test.ts": "codex-integration", "responses-hosted-image-delivery.test.ts": "responses", - "responses-hosted-image-display.test.ts": "responses", "responses-hosted-image-limits.test.ts": "responses", - "cursor-local-installer.test.ts": "providers/cursor", "codex-quota-query-backoff.test.ts": "codex-integration", - "link-relay-bound-transport.test.ts": "clients", "pnpm-command-isolation.test.ts": "update", + "main-account-external-usage.test.ts": "codex-integration", + "jev-decision-model-config.test.ts": "routing", + "cli-combo-partial-update.test.ts": "cli", + "desktop-app-server-shim.test.ts": "clients", + "desktop-app-server-shim-launcher.test.ts": "clients", + "desktop-chatgpt-config.test.ts": "clients", + "owner-registry-acl.test.ts": "config", + "minimax-combo-image-input.test.ts": "providers", + "web-search-forced-declaration.test.ts": "web-search", + "claude-devin-output-order.test.ts": "claude-integration", + "codex-config-preservation.test.ts": "codex-integration", + "codex-credits.test.ts": "codex-integration", + "codex-credits-settings.test.ts": "codex-integration", + "codex-credits-probes.test.ts": "codex-integration", + "codex-credits-after-limit.test.ts": "codex-integration", + "codex-credits-after-limit-main.test.ts": "codex-integration", + "service-desktop-startup-health.test.ts": "service", + "service-desktop-startup.test.ts": "service", + "startup-health-packaged-probe.test.ts": "server", + "discovered-native-models.test.ts": "codex-integration", + "responses-hosted-image-delivery.test.ts": "responses", + "responses-hosted-image-display.test.ts": "responses", + "responses-hosted-image-limits.test.ts": "responses", + "cursor-local-installer.test.ts": "providers/cursor", + "codex-quota-query-backoff.test.ts": "codex-integration", + "link-relay-bound-transport.test.ts": "clients", + "pnpm-command-isolation.test.ts": "update", "project-config-warning-snapshot.test.ts": "codex-integration", "codex-quota-auto-refresh-generation.test.ts": "codex-integration", - "low-quota-protection.test.ts": "codex-integration", "provider-antigravity-quota-retry.test.ts": "providers", - "responses-compaction-recovery.test.ts": "responses", "responses-canonical-nonstream.test.ts": "responses", - "compaction-recovery-settings.test.ts": "config", "responses-compaction-recovery-policy.test.ts": "responses", - "plugin-loader.test.ts": "lib", "plugin-upstream-hooks.test.ts": "lib", - "cli-kiro-auto-selection.test.ts": "cli", "codebuddy-live-models.test.ts": "providers", - "kiro-auto-selection.test.ts": "providers/kiro", "kiro-quota-metrics.test.ts": "providers/kiro", - "management-provider-request-pacing.test.ts": "server", "desktop-supervised-restart.test.ts": "clients", - "cli-restart-handoff.test.ts": "cli", "restart-replacement.test.ts": "server", - "deepseek-artifact-tool-schema.test.ts": "providers", "client-config-export-output-limit.test.ts": "config", - "codex-account-clear-paused.test.ts": "codex-integration", "responses-skills-snapshot.test.ts": "responses", + "low-quota-protection.test.ts": "codex-integration", + "provider-antigravity-quota-retry.test.ts": "providers", + "responses-compaction-recovery.test.ts": "responses", + "responses-canonical-nonstream.test.ts": "responses", + "compaction-recovery-settings.test.ts": "config", + "responses-compaction-recovery-policy.test.ts": "responses", + "plugin-loader.test.ts": "lib", + "plugin-upstream-hooks.test.ts": "lib", + "cli-kiro-auto-selection.test.ts": "cli", + "codebuddy-live-models.test.ts": "providers", + "kiro-auto-selection.test.ts": "providers/kiro", + "kiro-quota-metrics.test.ts": "providers/kiro", + "management-provider-request-pacing.test.ts": "server", + "desktop-supervised-restart.test.ts": "clients", + "cli-restart-handoff.test.ts": "cli", + "restart-replacement.test.ts": "server", + "deepseek-artifact-tool-schema.test.ts": "providers", + "client-config-export-output-limit.test.ts": "config", + "codex-account-clear-paused.test.ts": "codex-integration", + "responses-skills-snapshot.test.ts": "responses", "openai-chat-serialized-tool-call-scaling.test.ts": "adapters/openai", - "openai-chat-tool-call-id-remint.test.ts": "adapters/openai", "coding-agent-json-lines-scaling.test.ts": "providers", - "usage-snapshot-digest-reuse.test.ts": "usage", "worker-embed.test.ts": "lib", - "worker-embed-coverage.test.ts": "lib", "jev-stats.test.ts": "usage", - "responses-devin-401-replay.test.ts": "responses", "responses-grok-devin-preflight.test.ts": "responses", - "abort-idle-deadline.test.ts": "lib", "tool-envelope-echo-whole-line.test.ts": "adapters", - "abort-race.test.ts": "adapters", "account-import.test.ts": "server", - "account-pool-management-api.test.ts": "server", "link-listener-admission.test.ts": "server", - "link-listener-lifecycle.test.ts": "server", "link-join-route.test.ts": "server", - "core-link-boundary.test.ts": "lab", "acl-error-classification.test.ts": "lib", - "active-registry-admission.test.ts": "codex-integration", "adapter-buffered-tool-conformance.test.ts": "adapters", - "adapter-error-inline.test.ts": "adapters", "adapter-event-oauth-failover.test.ts": "oauth", - "adapter-inner-send-budget-wiring.test.ts": "adapters", "adapter-inner-send-budget.test.ts": "adapters", - "adapter-input-media-guard.test.ts": "adapters", "adapter-registry-authority.test.ts": "adapters", - "adapter-resolve.test.ts": "server", "inference-client-wire.test.ts": "server", - "inference-attempt.test.ts": "server", "inference-final-log.test.ts": "server", - "inference-send-budget.test.ts": "server", "inference-client-encoder-delivery.test.ts": "server", - "adapter-tool-conformance.test.ts": "adapters", "zed-hosted-provider.test.ts": "providers", - "adapter-usage.test.ts": "adapters", "agent-driven.test.ts": "cli", - "agent-task-recovery-cache.test.ts": "server", "agent-task-recovery-combo.test.ts": "server", - "agent-task-recovery-fallback.test.ts": "server", "agent-task-recovery-security.test.ts": "server", - "agent-task-recovery.test.ts": "server", "alias-management-api.test.ts": "server", - "alibaba-intl-token-plan.test.ts": "gui", "alibaba-region-backup.test.ts": "providers", - "alibaba-region-migration.test.ts": "providers", "alibaba-region-startup.test.ts": "providers", - "alibaba-token-plan-responses-optin.test.ts": "providers", "alibaba-token-plan-wire-defaults.test.ts": "providers", - "always-on-429-failover.test.ts": "routing", "ambiguous-resend-composition.test.ts": "lib", - "ambiguous-resend-gate.test.ts": "lib", "anthropic-client-identity.test.ts": "adapters/anthropic", - "anthropic-account-metadata.test.ts": "adapters/anthropic", "anthropic-account-pool.test.ts": "adapters/anthropic", + "openai-chat-tool-call-id-remint.test.ts": "adapters/openai", + "coding-agent-json-lines-scaling.test.ts": "providers", + "usage-snapshot-digest-reuse.test.ts": "usage", + "worker-embed.test.ts": "lib", + "worker-embed-coverage.test.ts": "lib", + "jev-stats.test.ts": "usage", + "responses-devin-401-replay.test.ts": "responses", + "responses-grok-devin-preflight.test.ts": "responses", + "abort-idle-deadline.test.ts": "lib", + "tool-envelope-echo-whole-line.test.ts": "adapters", + "abort-race.test.ts": "adapters", + "account-import.test.ts": "server", + "account-pool-management-api.test.ts": "server", + "link-listener-admission.test.ts": "server", + "link-listener-lifecycle.test.ts": "server", + "link-join-route.test.ts": "server", + "core-link-boundary.test.ts": "lab", + "acl-error-classification.test.ts": "lib", + "active-registry-admission.test.ts": "codex-integration", + "adapter-buffered-tool-conformance.test.ts": "adapters", + "adapter-error-inline.test.ts": "adapters", + "adapter-event-oauth-failover.test.ts": "oauth", + "adapter-inner-send-budget-wiring.test.ts": "adapters", + "adapter-inner-send-budget.test.ts": "adapters", + "adapter-input-media-guard.test.ts": "adapters", + "adapter-registry-authority.test.ts": "adapters", + "adapter-resolve.test.ts": "server", + "inference-client-wire.test.ts": "server", + "inference-attempt.test.ts": "server", + "inference-final-log.test.ts": "server", + "inference-send-budget.test.ts": "server", + "inference-client-encoder-delivery.test.ts": "server", + "adapter-tool-conformance.test.ts": "adapters", + "zed-hosted-provider.test.ts": "providers", + "adapter-usage.test.ts": "adapters", + "agent-driven.test.ts": "cli", + "agent-task-recovery-cache.test.ts": "server", + "agent-task-recovery-combo.test.ts": "server", + "agent-task-recovery-fallback.test.ts": "server", + "agent-task-recovery-security.test.ts": "server", + "agent-task-recovery.test.ts": "server", + "alias-management-api.test.ts": "server", + "alibaba-intl-token-plan.test.ts": "gui", + "alibaba-region-backup.test.ts": "providers", + "alibaba-region-migration.test.ts": "providers", + "alibaba-region-startup.test.ts": "providers", + "alibaba-token-plan-responses-optin.test.ts": "providers", + "alibaba-token-plan-wire-defaults.test.ts": "providers", + "always-on-429-failover.test.ts": "routing", + "ambiguous-resend-composition.test.ts": "lib", + "ambiguous-resend-gate.test.ts": "lib", + "anthropic-client-identity.test.ts": "adapters/anthropic", + "anthropic-account-metadata.test.ts": "adapters/anthropic", + "anthropic-account-pool.test.ts": "adapters/anthropic", "anthropic-account-pause-outbound.test.ts": "adapters/anthropic", - "anthropic-account-pause.test.ts": "adapters/anthropic", "anthropic-account-threshold.test.ts": "adapters/anthropic", - "anthropic-combo-account-cooldown.test.ts": "adapters/anthropic", "cli-alias-json.test.ts": "cli", - "cli-anthropic-account-threshold.test.ts": "cli", "anthropic-model-routes.test.ts": "adapters/anthropic", + "anthropic-account-pause.test.ts": "adapters/anthropic", + "anthropic-account-threshold.test.ts": "adapters/anthropic", + "anthropic-combo-account-cooldown.test.ts": "adapters/anthropic", + "cli-alias-json.test.ts": "cli", + "cli-anthropic-account-threshold.test.ts": "cli", + "anthropic-model-routes.test.ts": "adapters/anthropic", "anthropic-agentrouter-language-framing.test.ts": "adapters/anthropic", "anthropic-baseurl-override.test.ts": "adapters/anthropic", "anthropic-compatible-stream.test.ts": "adapters/anthropic", - "anthropic-cooldown-recovery.test.ts": "adapters/anthropic", "anthropic-empty-content.test.ts": "adapters/anthropic", - "anthropic-eof-tolerance.test.ts": "adapters/anthropic", "anthropic-error-body.test.ts": "adapters/anthropic", - "anthropic-error-stop-reason.test.ts": "adapters/anthropic", "anthropic-fast-opt-in.test.ts": "adapters/anthropic", - "anthropic-fast-speed.test.ts": "adapters/anthropic", "anthropic-hardening.test.ts": "adapters/anthropic", - "anthropic-image-guard.test.ts": "adapters/anthropic", "anthropic-image-normalize.test.ts": "adapters/anthropic", - "anthropic-image-retry-e2e.test.ts": "adapters/anthropic", "anthropic-image-retry.test.ts": "adapters/anthropic", + "anthropic-cooldown-recovery.test.ts": "adapters/anthropic", + "anthropic-empty-content.test.ts": "adapters/anthropic", + "anthropic-eof-tolerance.test.ts": "adapters/anthropic", + "anthropic-error-body.test.ts": "adapters/anthropic", + "anthropic-error-stop-reason.test.ts": "adapters/anthropic", + "anthropic-fast-opt-in.test.ts": "adapters/anthropic", + "anthropic-fast-speed.test.ts": "adapters/anthropic", + "anthropic-hardening.test.ts": "adapters/anthropic", + "anthropic-image-guard.test.ts": "adapters/anthropic", + "anthropic-image-normalize.test.ts": "adapters/anthropic", + "anthropic-image-retry-e2e.test.ts": "adapters/anthropic", + "anthropic-image-retry.test.ts": "adapters/anthropic", "anthropic-sonnet-5-5-contract.test.ts": "adapters/anthropic", "anthropic-output-maxima.test.ts": "adapters/anthropic", "anthropic-parallel-tool-disable.test.ts": "adapters/anthropic", - "anthropic-pool-toggle-copy.test.ts": "adapters/anthropic", "anthropic-quorum-cache.test.ts": "routing", + "anthropic-pool-toggle-copy.test.ts": "adapters/anthropic", + "anthropic-quorum-cache.test.ts": "routing", "anthropic-quota-dispatch.test.ts": "adapters/anthropic", "anthropic-model-weekly-admission.test.ts": "adapters/anthropic", - "anthropic-429-policy.test.ts": "adapters/anthropic", "anthropic-ratelimit-headers.test.ts": "adapters/anthropic", - "anthropic-reasoning.test.ts": "adapters/anthropic", "anthropic-reset-grants.test.ts": "adapters/anthropic", + "anthropic-429-policy.test.ts": "adapters/anthropic", + "anthropic-ratelimit-headers.test.ts": "adapters/anthropic", + "anthropic-reasoning.test.ts": "adapters/anthropic", + "anthropic-reset-grants.test.ts": "adapters/anthropic", "anthropic-sidecar-account-failover.test.ts": "adapters/anthropic", - "anthropic-stream-hardening.test.ts": "adapters/anthropic", "anthropic-tail-guard.test.ts": "adapters/anthropic", - "anthropic-thinking-signature.test.ts": "adapters/anthropic", "anthropic-opaque-strip.test.ts": "adapters/anthropic", + "anthropic-stream-hardening.test.ts": "adapters/anthropic", + "anthropic-tail-guard.test.ts": "adapters/anthropic", + "anthropic-thinking-signature.test.ts": "adapters/anthropic", + "anthropic-opaque-strip.test.ts": "adapters/anthropic", "anthropic-tool-call-id.test.ts": "adapters/anthropic", "anthropic-messages-passthrough.test.ts": "adapters/anthropic", "anthropic-beta-allowlist.test.ts": "adapters/anthropic", "anthropic-messages-passthrough-oauth.test.ts": "adapters/anthropic", "anthropic-tool-declaration-constraints.test.ts": "adapters/anthropic", - "anthropic-tool-schema.test.ts": "adapters/anthropic", "antigravity-baseurl-override.test.ts": "adapters/google", - "antigravity-refusal.test.ts": "adapters/google", "antigravity-static-catalog.test.ts": "adapters/google", - "api-access-endpoints.test.ts": "server", "api-catalog-route.test.ts": "server", - "api-codex-log-guard-compact.test.ts": "server", "api-codex-log-guard-protection.test.ts": "server", - "api-codex-log-guard.test.ts": "server", "api-debug.test.ts": "server", - "api-key-attribution.test.ts": "server", "api-key-catalog-authority.test.ts": "providers", - "api-key-model-scope.test.ts": "server", "api-key-scope-alpha-search.test.ts": "server", - "api-key-scope-audio.test.ts": "server", "api-key-scope-images.test.ts": "server", - "api-key-scope-live.test.ts": "server", "api-key-selection-capture.test.ts": "providers", - "api-keys-routes.test.ts": "server", "api-storage-cleanup.test.ts": "storage", - "api-storage-policy-already-running.test.ts": "storage", "api-storage-policy-mutation-busy.test.ts": "storage", - "api-storage-policy-put-race.test.ts": "storage", "api-storage-policy-run.test.ts": "storage", - "api-storage-policy.test.ts": "storage", "api-storage.test.ts": "storage", - "api-usage.test.ts": "server", "app-owned-memory.test.ts": "codex-integration", - "apply-patch-envelope.test.ts": "responses", "artifacts-prune.test.ts": "images", - "artifacts-ssrf.test.ts": "images", "aside-client.test.ts": "providers", - "aside-profile-identity.test.ts": "clients", "aside-profile-paths.test.ts": "clients", - "aside-profile-sync-owner.test.ts": "clients", "aside-profiles-routes.test.ts": "server", - "aside-profiles.test.ts": "clients", "assert-mergeable-review.test.ts": "ci-workflows", - "audio-client.test.ts": "server", "audio-dictation.test.ts": "server", - "audio-transcriptions.test.ts": "server", "auto-compact-budget.test.ts": "providers", - "autostart-health.test.ts": "service", "azure-adapter.test.ts": "providers", - "azure-model-router-tool-schema.test.ts": "providers", "bare-echo-alias.test.ts": "responses", - "baseten-provider.test.ts": "providers", "bearer-admission-routed-provider.test.ts": "codex-integration", - "bounded-body.test.ts": "server", "brand-favicons.test.ts": "ci-workflows", - "bridge-legacy-shell-normalization.test.ts": "adapters", "bridge-lifecycle.test.ts": "adapters", - "bridge-live-delivery.test.ts": "server", "bridge-nonstreaming-terminal.test.ts": "adapters", - "bridge-raw-reasoning-hidden.test.ts": "adapters", "bridge-reasoning-replay-batch.test.ts": "adapters", - "bridge-stall.test.ts": "adapters", "bridge-terminal-singleness.test.ts": "adapters", - "bridge.test.ts": "adapters", "buffered-response-shape-guards.test.ts": "adapters", - "build-desktop-icon-set.test.ts": "ci-workflows", "build-release-changelog.test.ts": "ci-workflows", - "bump-dev-version.test.ts": "ci-workflows", "bun-runtime.test.ts": "ci-workflows", - "bun-stream-caps.test.ts": "lib", "cache-diagnostic.test.ts": "usage", - "cancel-body-on-abort.test.ts": "server", "catalog-auto-refresh-scheduler.test.ts": "codex-integration", - "catalog-cursor-search.test.ts": "codex-integration", "catalog-custom-ordering.test.ts": "codex-integration", + "anthropic-tool-schema.test.ts": "adapters/anthropic", + "antigravity-baseurl-override.test.ts": "adapters/google", + "antigravity-refusal.test.ts": "adapters/google", + "antigravity-static-catalog.test.ts": "adapters/google", + "api-access-endpoints.test.ts": "server", + "api-catalog-route.test.ts": "server", + "api-codex-log-guard-compact.test.ts": "server", + "api-codex-log-guard-protection.test.ts": "server", + "api-codex-log-guard.test.ts": "server", + "api-debug.test.ts": "server", + "api-key-attribution.test.ts": "server", + "api-key-catalog-authority.test.ts": "providers", + "api-key-model-scope.test.ts": "server", + "api-key-scope-alpha-search.test.ts": "server", + "api-key-scope-audio.test.ts": "server", + "api-key-scope-images.test.ts": "server", + "api-key-scope-live.test.ts": "server", + "api-key-selection-capture.test.ts": "providers", + "api-keys-routes.test.ts": "server", + "api-storage-cleanup.test.ts": "storage", + "api-storage-policy-already-running.test.ts": "storage", + "api-storage-policy-mutation-busy.test.ts": "storage", + "api-storage-policy-put-race.test.ts": "storage", + "api-storage-policy-run.test.ts": "storage", + "api-storage-policy.test.ts": "storage", + "api-storage.test.ts": "storage", + "api-usage.test.ts": "server", + "app-owned-memory.test.ts": "codex-integration", + "apply-patch-envelope.test.ts": "responses", + "artifacts-prune.test.ts": "images", + "artifacts-ssrf.test.ts": "images", + "aside-client.test.ts": "providers", + "aside-profile-identity.test.ts": "clients", + "aside-profile-paths.test.ts": "clients", + "aside-profile-sync-owner.test.ts": "clients", + "aside-profiles-routes.test.ts": "server", + "aside-profiles.test.ts": "clients", + "assert-mergeable-review.test.ts": "ci-workflows", + "audio-client.test.ts": "server", + "audio-dictation.test.ts": "server", + "audio-transcriptions.test.ts": "server", + "auto-compact-budget.test.ts": "providers", + "autostart-health.test.ts": "service", + "azure-adapter.test.ts": "providers", + "azure-model-router-tool-schema.test.ts": "providers", + "bare-echo-alias.test.ts": "responses", + "baseten-provider.test.ts": "providers", + "bearer-admission-routed-provider.test.ts": "codex-integration", + "bounded-body.test.ts": "server", + "brand-favicons.test.ts": "ci-workflows", + "bridge-legacy-shell-normalization.test.ts": "adapters", + "bridge-lifecycle.test.ts": "adapters", + "bridge-live-delivery.test.ts": "server", + "bridge-nonstreaming-terminal.test.ts": "adapters", + "bridge-raw-reasoning-hidden.test.ts": "adapters", + "bridge-reasoning-replay-batch.test.ts": "adapters", + "bridge-stall.test.ts": "adapters", + "bridge-terminal-singleness.test.ts": "adapters", + "bridge.test.ts": "adapters", + "buffered-response-shape-guards.test.ts": "adapters", + "build-desktop-icon-set.test.ts": "ci-workflows", + "build-release-changelog.test.ts": "ci-workflows", + "bump-dev-version.test.ts": "ci-workflows", + "bun-runtime.test.ts": "ci-workflows", + "bun-stream-caps.test.ts": "lib", + "cache-diagnostic.test.ts": "usage", + "cancel-body-on-abort.test.ts": "server", + "catalog-auto-refresh-scheduler.test.ts": "codex-integration", + "catalog-cursor-search.test.ts": "codex-integration", + "catalog-custom-ordering.test.ts": "codex-integration", "catalog-duplicate-slug-dedup.test.ts": "codex-integration", - "catalog-free-pricing-status.test.ts": "codex-integration", "catalog-full-picker-order.test.ts": "codex-integration", + "catalog-free-pricing-status.test.ts": "codex-integration", + "catalog-full-picker-order.test.ts": "codex-integration", "catalog-gated-native-suppression-reason.test.ts": "codex-integration", - "catalog-go-exact-efforts.test.ts": "codex-integration", "catalog-hub-context-window.test.ts": "codex-integration", + "catalog-go-exact-efforts.test.ts": "codex-integration", + "catalog-hub-context-window.test.ts": "codex-integration", "catalog-input-modality-enum.test.ts": "codex-integration", "catalog-llamacpp-capabilities.test.ts": "codex-integration", "catalog-modelalias-unique-sync.test.ts": "codex-integration", "catalog-oauth-observation.test.ts": "codex-integration", - "catalog-opencode-go-context-window.test.ts": "codex-integration", "catalog-remote-pull.test.ts": "codex-integration", - "catalog-retain-models.test.ts": "codex-integration", "catalog-routed-comp-hash.test.ts": "codex-integration", + "catalog-opencode-go-context-window.test.ts": "codex-integration", + "catalog-remote-pull.test.ts": "codex-integration", + "catalog-retain-models.test.ts": "codex-integration", + "catalog-routed-comp-hash.test.ts": "codex-integration", "catalog-seed-window-fill.test.ts": "codex-integration", "catalog-slug-uniqueness-boundary.test.ts": "codex-integration", "catalog-verbosity-default.test.ts": "codex-integration", "catalog-vision-sidecar-modalities.test.ts": "codex-integration", - "catalog-zero-credit-picker.test.ts": "codex-integration", "chat-completions-deferred-tools.test.ts": "responses", - "chat-completions-endpoint.test.ts": "responses", "chat-completions-pool-mode.test.ts": "responses", - "chat-conversation-affinity.test.ts": "responses", "chat-inbound-developer-position.test.ts": "responses", - "protocol-contract.test.ts": "responses", "protocol-features.test.ts": "responses", - "protocol-opaque-state.test.ts": "responses", "protocol-baseline.test.ts": "responses", - "protocol-dto.test.ts": "responses", "protocol-path.test.ts": "responses", - "protocol-trace.test.ts": "responses", "protocol-plan.test.ts": "responses", - "protocol-plan-snapshot.test.ts": "responses", "protocol-shadow-plan.test.ts": "responses", - "protocol-envelope.test.ts": "responses", "protocol-guard.test.ts": "responses", - "protocol-ingress-guard.test.ts": "responses", "protocol-direct-encoders-chat.test.ts": "responses", + "catalog-zero-credit-picker.test.ts": "codex-integration", + "chat-completions-deferred-tools.test.ts": "responses", + "chat-completions-endpoint.test.ts": "responses", + "chat-completions-pool-mode.test.ts": "responses", + "chat-conversation-affinity.test.ts": "responses", + "chat-inbound-developer-position.test.ts": "responses", + "protocol-contract.test.ts": "responses", + "protocol-features.test.ts": "responses", + "protocol-opaque-state.test.ts": "responses", + "protocol-baseline.test.ts": "responses", + "protocol-dto.test.ts": "responses", + "protocol-path.test.ts": "responses", + "protocol-trace.test.ts": "responses", + "protocol-plan.test.ts": "responses", + "protocol-plan-snapshot.test.ts": "responses", + "protocol-shadow-plan.test.ts": "responses", + "protocol-envelope.test.ts": "responses", + "protocol-guard.test.ts": "responses", + "protocol-ingress-guard.test.ts": "responses", + "protocol-direct-encoders-chat.test.ts": "responses", "protocol-direct-encoders-stall-disabled.test.ts": "responses", "protocol-direct-encoders-local-upstream.test.ts": "responses", - "protocol-direct-encoders-messages.test.ts": "responses", "chat-native-combo.test.ts": "responses", - "messages-native-eligibility.test.ts": "responses", "messages-native-bridge-policy.test.ts": "responses", - "messages-native-oauth-eligibility.test.ts": "responses", "chat-inbound-reasoning-none.test.ts": "responses", - "chat-native-decline-reason.test.ts": "responses", "chat-inbound-reasoning-replay.test.ts": "responses", - "chat-inline-document-bytes.test.ts": "responses", "chat-json-sse-fallback.test.ts": "responses", - "chat-media-translation.test.ts": "responses", "chat-native-developer-role.test.ts": "responses", - "chat-native-image-normalization.test.ts": "responses", "chat-native-spend.test.ts": "responses", - "chat-refusal-scope.test.ts": "responses", "chat-refusal.test.ts": "responses", - "chat-responses-control-integration.test.ts": "responses", "chat-responses-control-scope.test.ts": "responses", - "chat-tool-choice-allowed-tools.test.ts": "responses", "chatgpt-device-auth.test.ts": "oauth", - "chatgpt-oauth.test.ts": "oauth", "chatgpt-token-expiry.test.ts": "oauth", - "chutes-provider.test.ts": "providers", "ci-bun-crash-classifier.test.ts": "ci-workflows", - "ci-crash-disposition.test.ts": "ci-workflows", "ci-privacy-gate.test.ts": "ci-workflows", - "ci-review-lanes.test.ts": "ci-workflows", "ci-scope-reduction.test.ts": "ci-workflows", - "ci-scope-gaps.test.ts": "ci-workflows", "ci-shard-balance.test.ts": "ci-workflows", - "ci-structure-gate.test.ts": "ci-workflows", "ci-workflows.test.ts": "ci-workflows", - "citation-markers.test.ts": "responses", "visualization-directives.test.ts": "responses", + "protocol-direct-encoders-messages.test.ts": "responses", + "chat-native-combo.test.ts": "responses", + "messages-native-eligibility.test.ts": "responses", + "messages-native-bridge-policy.test.ts": "responses", + "messages-native-oauth-eligibility.test.ts": "responses", + "chat-inbound-reasoning-none.test.ts": "responses", + "chat-native-decline-reason.test.ts": "responses", + "chat-inbound-reasoning-replay.test.ts": "responses", + "chat-inline-document-bytes.test.ts": "responses", + "chat-json-sse-fallback.test.ts": "responses", + "chat-media-translation.test.ts": "responses", + "chat-native-developer-role.test.ts": "responses", + "chat-native-image-normalization.test.ts": "responses", + "chat-native-spend.test.ts": "responses", + "chat-refusal-scope.test.ts": "responses", + "chat-refusal.test.ts": "responses", + "chat-responses-control-integration.test.ts": "responses", + "chat-responses-control-scope.test.ts": "responses", + "chat-tool-choice-allowed-tools.test.ts": "responses", + "chatgpt-device-auth.test.ts": "oauth", + "chatgpt-oauth.test.ts": "oauth", + "chatgpt-token-expiry.test.ts": "oauth", + "chutes-provider.test.ts": "providers", + "ci-bun-crash-classifier.test.ts": "ci-workflows", + "ci-crash-disposition.test.ts": "ci-workflows", + "ci-privacy-gate.test.ts": "ci-workflows", + "ci-review-lanes.test.ts": "ci-workflows", + "ci-scope-reduction.test.ts": "ci-workflows", + "ci-scope-gaps.test.ts": "ci-workflows", + "ci-shard-balance.test.ts": "ci-workflows", + "ci-structure-gate.test.ts": "ci-workflows", + "ci-workflows.test.ts": "ci-workflows", + "citation-markers.test.ts": "responses", + "visualization-directives.test.ts": "responses", "cl01-claude-outbound-review-regressions.test.ts": "routing", - "cl01-openai-chat-review-regressions.test.ts": "routing", "cl01-review-regressions.test.ts": "routing", - "claude-529-mapping.test.ts": "claude-integration", "claude-agent-startup-sync.test.ts": "claude-integration", - "claude-agents-inject-client.test.ts": "claude-integration", "claude-agents-inject.test.ts": "claude-integration", - "claude-alias.test.ts": "claude-integration", "claude-auth-detect.test.ts": "claude-integration", - "claude-auth-mode.test.ts": "claude-integration", "claude-authmode-migration.test.ts": "claude-integration", - "claude-cli-adapter.test.ts": "providers", "claude-cli.test.ts": "claude-integration", - "claude-config-first-party.test.ts": "cli", "claude-code-thought-signature-scope.test.ts": "claude-integration", - "claude-compatibility.test.ts": "claude-integration", "claude-context-windows.test.ts": "claude-integration", - "claude-desktop-1m.test.ts": "claude-integration", "claude-desktop-cli.test.ts": "claude-integration", - "claude-desktop-config-path.test.ts": "claude-integration", "claude-desktop-discovery.test.ts": "claude-integration", + "cl01-openai-chat-review-regressions.test.ts": "routing", + "cl01-review-regressions.test.ts": "routing", + "claude-529-mapping.test.ts": "claude-integration", + "claude-agent-startup-sync.test.ts": "claude-integration", + "claude-agents-inject-client.test.ts": "claude-integration", + "claude-agents-inject.test.ts": "claude-integration", + "claude-alias.test.ts": "claude-integration", + "claude-auth-detect.test.ts": "claude-integration", + "claude-auth-mode.test.ts": "claude-integration", + "claude-authmode-migration.test.ts": "claude-integration", + "claude-cli-adapter.test.ts": "providers", + "claude-cli.test.ts": "claude-integration", + "claude-config-first-party.test.ts": "cli", + "claude-code-thought-signature-scope.test.ts": "claude-integration", + "claude-compatibility.test.ts": "claude-integration", + "claude-context-windows.test.ts": "claude-integration", + "claude-desktop-1m.test.ts": "claude-integration", + "claude-desktop-cli.test.ts": "claude-integration", + "claude-desktop-config-path.test.ts": "claude-integration", + "claude-desktop-discovery.test.ts": "claude-integration", "claude-desktop-first-party.test.ts": "claude-integration", "claude-desktop-first-party-guards.test.ts": "claude-integration", "claude-desktop-mode-explanation.test.ts": "claude-integration", - "claude-desktop-picker.test.ts": "claude-integration", "claude-desktop-picker-profile.test.ts": "claude-integration", + "claude-desktop-picker.test.ts": "claude-integration", + "claude-desktop-picker-profile.test.ts": "claude-integration", "claude-desktop-picker-routes.test.ts": "claude-integration", - "claude-desktop-native-context.test.ts": "claude-integration", "claude-desktop-policy.test.ts": "claude-integration", - "claude-cli-picker.test.ts": "claude-integration", "claude-cli-picker-surface.test.ts": "claude-integration", - "claude-picker-bootstrap.test.ts": "claude-integration", "claude-picker-ca.test.ts": "claude-integration", - "claude-picker-listener.test.ts": "claude-integration", "claude-picker-models.test.ts": "claude-integration", - "claude-picker-recovery.test.ts": "claude-integration", "claude-picker-runtime.test.ts": "claude-integration", - "claude-picker-trust.test.ts": "claude-integration", "claude-desktop-remote-hub.test.ts": "claude-integration", + "claude-desktop-native-context.test.ts": "claude-integration", + "claude-desktop-policy.test.ts": "claude-integration", + "claude-cli-picker.test.ts": "claude-integration", + "claude-cli-picker-surface.test.ts": "claude-integration", + "claude-picker-bootstrap.test.ts": "claude-integration", + "claude-picker-ca.test.ts": "claude-integration", + "claude-picker-listener.test.ts": "claude-integration", + "claude-picker-models.test.ts": "claude-integration", + "claude-picker-recovery.test.ts": "claude-integration", + "claude-picker-runtime.test.ts": "claude-integration", + "claude-picker-trust.test.ts": "claude-integration", + "claude-desktop-remote-hub.test.ts": "claude-integration", "claude-dotenv-provenance-transport.test.ts": "claude-integration", "claude-estimate-projection.test.ts": "claude-integration", "claude-first-party-agent-sync.test.ts": "claude-integration", - "claude-first-party-union.test.ts": "claude-integration", "claude-desktop-system-proxy.test.ts": "claude-integration", - "claude-gateway-cache.test.ts": "claude-integration", "claude-inbound-cache-stabilize.test.ts": "claude-integration", - "claude-inbound-debug.test.ts": "claude-integration", "claude-inbound.test.ts": "claude-integration", - "claude-output-schema-strict.test.ts": "claude-integration", "claude-intercept-integration.test.ts": "server", + "claude-first-party-union.test.ts": "claude-integration", + "claude-desktop-system-proxy.test.ts": "claude-integration", + "claude-gateway-cache.test.ts": "claude-integration", + "claude-inbound-cache-stabilize.test.ts": "claude-integration", + "claude-inbound-debug.test.ts": "claude-integration", + "claude-inbound.test.ts": "claude-integration", + "claude-output-schema-strict.test.ts": "claude-integration", + "claude-intercept-integration.test.ts": "server", "claude-intercept-local-ca.test.ts": "claude-integration", "claude-intercept-model-bindings.test.ts": "claude-integration", - "claude-intercept-proxy.test.ts": "claude-integration", "claude-intercept-client-class.test.ts": "claude-integration", + "claude-intercept-proxy.test.ts": "claude-integration", + "claude-intercept-client-class.test.ts": "claude-integration", "claude-intercept-proxy-auth.test.ts": "claude-integration", - "claude-intercept-settings.test.ts": "claude-integration", "claude-management-api.test.ts": "claude-integration", - "claude-manual-env.test.ts": "gui", "claude-messages-endpoint.test.ts": "claude-integration", - "claude-messages-thread.test.ts": "claude-integration", "messages-native.test.ts": "claude-integration", - "messages-native-decline-trace.test.ts": "claude-integration", "messages-native-oauth.test.ts": "claude-integration", - "messages-native-opaque-state.test.ts": "claude-integration", "messages-surface-matrix.test.ts": "claude-integration", - "claude-model-info.test.ts": "claude-integration", "claude-models-discovery.test.ts": "claude-integration", - "claude-native-affinity.test.ts": "claude-integration", "claude-native-passthrough.test.ts": "claude-integration", - "claude-native-rate-limit-headers.test.ts": "claude-integration", "claude-outbound.test.ts": "claude-integration", - "claude-shell-hook.test.ts": "claude-integration", "claude-sidecar-override.test.ts": "claude-integration", - "claude-source-envelope.test.ts": "claude-integration", "claude-system-env-auto.test.ts": "claude-integration", - "cleanup-orphaned-workflows.test.ts": "ci-workflows", "clearable-deadline.test.ts": "lib", - "cli-account-alias-target.test.ts": "cli", "cli-account-cancel-flow.test.ts": "cli", - "cli-account-kiro-device.test.ts": "cli", "cli-account-orca-import.test.ts": "cli", - "cli-account-pin-drain.test.ts": "cli", "cli-account-pool-verbs.test.ts": "cli", - "cli-account-threshold.test.ts": "cli", "cli-account-verify-status.test.ts": "cli", - "cli-account.test.ts": "cli", "cli-capabilities-arguments.test.ts": "cli", - "cli-capabilities.test.ts": "cli", "cli-api-protocols.test.ts": "cli", - "cli-catalog-prewarm.test.ts": "cli", "cli-codex-cli-update.test.ts": "cli", - "cli-codex-log-guard-compact.test.ts": "cli", "cli-codex-log-guard-protection.test.ts": "cli", - "cli-codex-log-guard.test.ts": "cli", "cli-companion.test.ts": "cli", - "cli-config-bom.test.ts": "cli", "cli-config-command.test.ts": "cli", - "cli-config-show-client.test.ts": "cli", "cli-connect-readiness.test.ts": "cli", - "cli-dispatch.test.ts": "cli", "cli-client-start-fence.test.ts": "cli", - "cli-ensure-client-state.test.ts": "cli", "cli-client-start-owner-e2e.test.ts": "cli", - "cli-dto-fidelity.test.ts": "cli", "cli-export-command.test.ts": "cli", - "cli-head.test.ts": "cli", "cli-headless-parity.test.ts": "cli", - "cli-help.test.ts": "cli", "cli-help-paths.test.ts": "cli", - "cli-help-navigation.test.ts": "cli", "cli-help-recovery.test.ts": "cli", - "cli-integer-options.test.ts": "cli", "cli-init-port.test.ts": "cli", - "cli-json-contract.test.ts": "cli", "cli-logs-request-id.test.ts": "cli", - "cli-management-auth.test.ts": "cli", "cli-models-free-only.test.ts": "cli", - "cli-models-price.test.ts": "cli", "cli-models-reasoning.test.ts": "cli", - "cli-models-runtime-dispatch.test.ts": "cli", "cli-models-set.test.ts": "cli", - "cli-models.test.ts": "cli", "cli-native-profile.test.ts": "cli", - "cli-observe-logs.test.ts": "cli", "cli-provider.test.ts": "cli", - "cli-ready-subprocess.test.ts": "cli", "cli-ready.test.ts": "cli", - "cli-registry.test.ts": "cli", "cli-resolve-subprocess.test.ts": "cli", - "cli-resolve.test.ts": "cli", "cli-restart-health.test.ts": "cli", - "cli-restore-back.test.ts": "cli", "cli-route-policy-not-found.test.ts": "cli", - "cli-start-auxiliary-bind.test.ts": "cli", "cli-start-journal-order.test.ts": "cli", - "sibling-home-client-sync.test.ts": "cli", "cli-status-hub-state.test.ts": "cli", - "cli-status-json.test.ts": "cli", "cli-status-oauth-health.test.ts": "cli", - "cli-stop-json.test.ts": "cli", "cli-storage-inspect.test.ts": "cli", - "cli-transport-honesty.test.ts": "cli", "cli-update-badge.test.ts": "cli", - "cli-usage-hub.test.ts": "cli", "cli-usage-report.test.ts": "cli", - "cli-version-skew.test.ts": "cli", "client-catalog-compatibility.test.ts": "clients", - "client-config-export-new-clients.test.ts": "config", "client-config-export.test.ts": "config", - "opencode-kilo-refresh.test.ts": "clients", "client-export-reasoning-metadata.test.ts": "clients", - "client-export-reasoning-controls.test.ts": "clients", "client-export-live-wire.test.ts": "clients", - "client-export-effective-metadata.test.ts": "clients", "client-config-new-clients.test.ts": "config", - "client-connect.test.ts": "clients", "client-export-modality-enum.test.ts": "clients", - "client-fingerprint.test.ts": "clients", "client-hub-relay.test.ts": "clients", - "client-hub-state.test.ts": "clients", "client-hub-usage.test.ts": "clients", - "client-injection-guard.test.ts": "codex-integration", "client-lifecycle-lock.test.ts": "clients", - "client-machine-listener.test.ts": "clients", "client-runtime.test.ts": "clients", - "cline-client.test.ts": "clients", "cline-pass-deepseek-v4-tool-replay.test.ts": "providers", - "cline-pass-provider.test.ts": "providers", "cline-pass-reasoning-efforts.test.ts": "providers", - "cline-provider.test.ts": "providers", "cline-writer.test.ts": "clients", - "closed-pr-branch-cleanup.test.ts": "ci-workflows", "codebuddy-adapter.test.ts": "providers", - "codebuddy-live-acceptance.test.ts": "providers", "codebuddy-mcp-server.test.ts": "providers", - "codebuddy-protocol.test.ts": "providers", "codebuddy-tool-bridge-turn.test.ts": "providers", - "codebuddy-tool-bridge.test.ts": "providers", "codex-account-delete-atomicity.test.ts": "codex-integration", - "codex-account-label.test.ts": "codex-integration", "codex-account-mode-state.test.ts": "gui", + "claude-intercept-settings.test.ts": "claude-integration", + "claude-management-api.test.ts": "claude-integration", + "claude-manual-env.test.ts": "gui", + "claude-messages-endpoint.test.ts": "claude-integration", + "claude-messages-thread.test.ts": "claude-integration", + "messages-native.test.ts": "claude-integration", + "messages-native-decline-trace.test.ts": "claude-integration", + "messages-native-oauth.test.ts": "claude-integration", + "messages-native-opaque-state.test.ts": "claude-integration", + "messages-surface-matrix.test.ts": "claude-integration", + "claude-model-info.test.ts": "claude-integration", + "claude-models-discovery.test.ts": "claude-integration", + "claude-native-affinity.test.ts": "claude-integration", + "claude-native-passthrough.test.ts": "claude-integration", + "claude-native-rate-limit-headers.test.ts": "claude-integration", + "claude-outbound.test.ts": "claude-integration", + "claude-shell-hook.test.ts": "claude-integration", + "claude-sidecar-override.test.ts": "claude-integration", + "claude-source-envelope.test.ts": "claude-integration", + "claude-system-env-auto.test.ts": "claude-integration", + "cleanup-orphaned-workflows.test.ts": "ci-workflows", + "clearable-deadline.test.ts": "lib", + "cli-account-alias-target.test.ts": "cli", + "cli-account-cancel-flow.test.ts": "cli", + "cli-account-kiro-device.test.ts": "cli", + "cli-account-orca-import.test.ts": "cli", + "cli-account-pin-drain.test.ts": "cli", + "cli-account-pool-verbs.test.ts": "cli", + "cli-account-threshold.test.ts": "cli", + "cli-account-verify-status.test.ts": "cli", + "cli-account.test.ts": "cli", + "cli-capabilities-arguments.test.ts": "cli", + "cli-capabilities.test.ts": "cli", + "cli-api-protocols.test.ts": "cli", + "cli-catalog-prewarm.test.ts": "cli", + "cli-codex-cli-update.test.ts": "cli", + "cli-codex-log-guard-compact.test.ts": "cli", + "cli-codex-log-guard-protection.test.ts": "cli", + "cli-codex-log-guard.test.ts": "cli", + "cli-companion.test.ts": "cli", + "cli-config-bom.test.ts": "cli", + "cli-config-command.test.ts": "cli", + "cli-config-show-client.test.ts": "cli", + "cli-connect-readiness.test.ts": "cli", + "cli-dispatch.test.ts": "cli", + "cli-client-start-fence.test.ts": "cli", + "cli-ensure-client-state.test.ts": "cli", + "cli-client-start-owner-e2e.test.ts": "cli", + "cli-dto-fidelity.test.ts": "cli", + "cli-export-command.test.ts": "cli", + "cli-head.test.ts": "cli", + "cli-headless-parity.test.ts": "cli", + "cli-help.test.ts": "cli", + "cli-help-paths.test.ts": "cli", + "cli-help-navigation.test.ts": "cli", + "cli-help-recovery.test.ts": "cli", + "cli-integer-options.test.ts": "cli", + "cli-init-port.test.ts": "cli", + "cli-json-contract.test.ts": "cli", + "cli-logs-request-id.test.ts": "cli", + "cli-management-auth.test.ts": "cli", + "cli-models-free-only.test.ts": "cli", + "cli-models-price.test.ts": "cli", + "cli-models-reasoning.test.ts": "cli", + "cli-models-runtime-dispatch.test.ts": "cli", + "cli-models-set.test.ts": "cli", + "cli-models.test.ts": "cli", + "cli-native-profile.test.ts": "cli", + "cli-observe-logs.test.ts": "cli", + "cli-provider.test.ts": "cli", + "cli-ready-subprocess.test.ts": "cli", + "cli-ready.test.ts": "cli", + "cli-registry.test.ts": "cli", + "cli-resolve-subprocess.test.ts": "cli", + "cli-resolve.test.ts": "cli", + "cli-restart-health.test.ts": "cli", + "cli-restore-back.test.ts": "cli", + "cli-route-policy-not-found.test.ts": "cli", + "cli-start-auxiliary-bind.test.ts": "cli", + "cli-start-journal-order.test.ts": "cli", + "sibling-home-client-sync.test.ts": "cli", + "cli-status-hub-state.test.ts": "cli", + "cli-status-json.test.ts": "cli", + "cli-status-oauth-health.test.ts": "cli", + "cli-stop-json.test.ts": "cli", + "cli-storage-inspect.test.ts": "cli", + "cli-transport-honesty.test.ts": "cli", + "cli-update-badge.test.ts": "cli", + "cli-usage-hub.test.ts": "cli", + "cli-usage-report.test.ts": "cli", + "cli-version-skew.test.ts": "cli", + "client-catalog-compatibility.test.ts": "clients", + "client-config-export-new-clients.test.ts": "config", + "client-config-export.test.ts": "config", + "opencode-kilo-refresh.test.ts": "clients", + "client-export-reasoning-metadata.test.ts": "clients", + "client-export-reasoning-controls.test.ts": "clients", + "client-export-live-wire.test.ts": "clients", + "client-export-effective-metadata.test.ts": "clients", + "client-config-new-clients.test.ts": "config", + "client-connect.test.ts": "clients", + "client-export-modality-enum.test.ts": "clients", + "client-fingerprint.test.ts": "clients", + "client-hub-relay.test.ts": "clients", + "client-hub-state.test.ts": "clients", + "client-hub-usage.test.ts": "clients", + "client-injection-guard.test.ts": "codex-integration", + "client-lifecycle-lock.test.ts": "clients", + "client-machine-listener.test.ts": "clients", + "client-runtime.test.ts": "clients", + "cline-client.test.ts": "clients", + "cline-pass-deepseek-v4-tool-replay.test.ts": "providers", + "cline-pass-provider.test.ts": "providers", + "cline-pass-reasoning-efforts.test.ts": "providers", + "cline-provider.test.ts": "providers", + "cline-writer.test.ts": "clients", + "closed-pr-branch-cleanup.test.ts": "ci-workflows", + "codebuddy-adapter.test.ts": "providers", + "codebuddy-live-acceptance.test.ts": "providers", + "codebuddy-mcp-server.test.ts": "providers", + "codebuddy-protocol.test.ts": "providers", + "codebuddy-tool-bridge-turn.test.ts": "providers", + "codebuddy-tool-bridge.test.ts": "providers", + "codex-account-delete-atomicity.test.ts": "codex-integration", + "codex-account-label.test.ts": "codex-integration", + "codex-account-mode-state.test.ts": "gui", "codex-account-namespaces.test.ts": "codex-integration", "codex-account-selection-preferences.test.ts": "codex-integration", "codex-account-store-refresh-classification.test.ts": "codex-integration", - "codex-account-store.test.ts": "codex-integration", "codex-account-threshold-api.test.ts": "codex-integration", + "codex-account-store.test.ts": "codex-integration", + "codex-account-threshold-api.test.ts": "codex-integration", "codex-account-threshold-auth.test.ts": "codex-integration", "codex-account-threshold-routing.test.ts": "codex-integration", "codex-account-unusable-reason.test.ts": "codex-integration", - "codex-admission-primitives.test.ts": "codex-integration", "codex-admission.test.ts": "codex-integration", - "codex-affinity-debug.test.ts": "codex-integration", "codex-app-server-path-spaces.test.ts": "codex-integration", + "codex-admission-primitives.test.ts": "codex-integration", + "codex-admission.test.ts": "codex-integration", + "codex-affinity-debug.test.ts": "codex-integration", + "codex-app-server-path-spaces.test.ts": "codex-integration", "codex-app-server-processes.test.ts": "codex-integration", - "codex-app-server-restart-service.test.ts": "codex-integration", "codex-auth-api.test.ts": "codex-integration", - "codex-auth-cancel-ownership.test.ts": "codex-integration", "codex-auth-collision.test.ts": "codex-integration", - "codex-auth-context.test.ts": "codex-integration", "codex-auth-modal-status.test.ts": "gui", - "codex-catalog-admission.test.ts": "codex-integration", "codex-catalog-exclusions.test.ts": "codex-integration", - "codex-catalog-golden.test.ts": "codex-integration", "codex-catalog-identity-neutral.test.ts": "codex-integration", - "codex-catalog-ladders.test.ts": "codex-integration", "codex-catalog-model-picker-order.test.ts": "codex-integration", - "codex-catalog-refresh-status.test.ts": "codex-integration", "codex-catalog-restore.test.ts": "codex-integration", + "codex-app-server-restart-service.test.ts": "codex-integration", + "codex-auth-api.test.ts": "codex-integration", + "codex-auth-cancel-ownership.test.ts": "codex-integration", + "codex-auth-collision.test.ts": "codex-integration", + "codex-auth-context.test.ts": "codex-integration", + "codex-auth-modal-status.test.ts": "gui", + "codex-catalog-admission.test.ts": "codex-integration", + "codex-catalog-exclusions.test.ts": "codex-integration", + "codex-catalog-golden.test.ts": "codex-integration", + "codex-catalog-identity-neutral.test.ts": "codex-integration", + "codex-catalog-ladders.test.ts": "codex-integration", + "codex-catalog-model-picker-order.test.ts": "codex-integration", + "codex-catalog-refresh-status.test.ts": "codex-integration", + "codex-catalog-restore.test.ts": "codex-integration", "codex-catalog-sync-hardening.test.ts": "codex-integration", - "codex-catalog-routed-removal.test.ts": "codex-integration", "codex-catalog-intent.test.ts": "codex-integration", - "codex-catalog-write-audit.test.ts": "codex-integration", "codex-catalog-self-heal.test.ts": "codex-integration", - "codex-catalog-heal-integration.test.ts": "codex-integration", "codex-home-owner.test.ts": "codex-integration", + "codex-catalog-routed-removal.test.ts": "codex-integration", + "codex-catalog-intent.test.ts": "codex-integration", + "codex-catalog-write-audit.test.ts": "codex-integration", + "codex-catalog-self-heal.test.ts": "codex-integration", + "codex-catalog-heal-integration.test.ts": "codex-integration", + "codex-home-owner.test.ts": "codex-integration", "codex-home-owner-lifecycle.test.ts": "codex-integration", - "codex-catalog-write-serialization.test.ts": "codex-integration", "codex-catalog-writer.test.ts": "codex-integration", - "codex-catalog.test.ts": "codex-integration", "codex-cli-install-provenance.test.ts": "codex-integration", + "codex-catalog-write-serialization.test.ts": "codex-integration", + "codex-catalog-writer.test.ts": "codex-integration", + "codex-catalog.test.ts": "codex-integration", + "codex-cli-install-provenance.test.ts": "codex-integration", "codex-cli-installation-identity.test.ts": "codex-integration", "codex-cli-installation-targets.test.ts": "codex-integration", "codex-cli-update-launcher-policy.test.ts": "codex-integration", "codex-cli-update-zero-effect.test.ts": "codex-integration", "codex-cli-windows-installation-files.test.ts": "codex-integration", "codex-forward-access-programs-writer.test.ts": "codex-integration", - "codex-composed-acceptance.test.ts": "codex-integration", "codex-config-generation.test.ts": "codex-integration", - "codex-config-drift-heal.test.ts": "codex-integration", "codex-context-owner.test.ts": "codex-integration", + "codex-composed-acceptance.test.ts": "codex-integration", + "codex-config-generation.test.ts": "codex-integration", + "codex-config-drift-heal.test.ts": "codex-integration", + "codex-context-owner.test.ts": "codex-integration", "codex-convergence-account-selectors.test.ts": "codex-integration", - "codex-convergence-contract.test.ts": "codex-integration", "codex-cooldown-recovery.test.ts": "codex-integration", - "codex-coordinator-doctor.test.ts": "codex-integration", "codex-desired-state.test.ts": "codex-integration", + "codex-convergence-contract.test.ts": "codex-integration", + "codex-cooldown-recovery.test.ts": "codex-integration", + "codex-coordinator-doctor.test.ts": "codex-integration", + "codex-desired-state.test.ts": "codex-integration", "codex-entitlement-identity-read-fence.test.ts": "codex-integration", "codex-envkey-admission-substitution.test.ts": "codex-integration", - "codex-exec-invocation.test.ts": "codex-integration", "codex-features-cache.test.ts": "codex-integration", - "codex-features-residual.test.ts": "codex-integration", "codex-filesystem-evidence.test.ts": "codex-integration", - "codex-gather-authority.test.ts": "codex-integration", "codex-history-job.test.ts": "codex-integration", - "codex-history-lock.test.ts": "codex-integration", "codex-history-provider.test.ts": "codex-integration", + "codex-exec-invocation.test.ts": "codex-integration", + "codex-features-cache.test.ts": "codex-integration", + "codex-features-residual.test.ts": "codex-integration", + "codex-filesystem-evidence.test.ts": "codex-integration", + "codex-gather-authority.test.ts": "codex-integration", + "codex-history-job.test.ts": "codex-integration", + "codex-history-lock.test.ts": "codex-integration", + "codex-history-provider.test.ts": "codex-integration", "codex-history-reachability.test.ts": "codex-integration", - "codex-history-worker-boundary.test.ts": "codex-integration", "codex-history-worker.test.ts": "codex-integration", - "codex-history-writer.test.ts": "codex-integration", "codex-home-wsl.test.ts": "codex-integration", + "codex-history-worker-boundary.test.ts": "codex-integration", + "codex-history-worker.test.ts": "codex-integration", + "codex-history-writer.test.ts": "codex-integration", + "codex-home-wsl.test.ts": "codex-integration", "codex-home-wsl-local-state.test.ts": "codex-integration", - "codex-inject-history-wording.test.ts": "codex-integration", "codex-inject-integration.test.ts": "codex-integration", + "codex-inject-history-wording.test.ts": "codex-integration", + "codex-inject-integration.test.ts": "codex-integration", "codex-inject-missing-config.test.ts": "codex-integration", - "codex-inject-retained-table.test.ts": "codex-integration", "codex-inject-v1-reconcile.test.ts": "codex-integration", - "codex-inject-write-lock.test.ts": "codex-integration", "codex-inject.test.ts": "codex-integration", - "codex-injected-marker.test.ts": "codex-integration", "codex-integration-record.test.ts": "codex-integration", - "codex-journal.test.ts": "codex-integration", "codex-legacy-config-keys.test.ts": "codex-integration", - "codex-lineage-placement.test.ts": "codex-integration", "codex-log-guard-coderabbit.test.ts": "codex-integration", + "codex-inject-retained-table.test.ts": "codex-integration", + "codex-inject-v1-reconcile.test.ts": "codex-integration", + "codex-inject-write-lock.test.ts": "codex-integration", + "codex-inject.test.ts": "codex-integration", + "codex-injected-marker.test.ts": "codex-integration", + "codex-integration-record.test.ts": "codex-integration", + "codex-journal.test.ts": "codex-integration", + "codex-legacy-config-keys.test.ts": "codex-integration", + "codex-lineage-placement.test.ts": "codex-integration", + "codex-log-guard-coderabbit.test.ts": "codex-integration", "codex-log-guard-doctor-coderabbit.test.ts": "codex-integration", "codex-log-guard-doctor-protection.test.ts": "codex-integration", - "codex-log-guard-doctor.test.ts": "codex-integration", "codex-log-guard-inspect.test.ts": "codex-integration", + "codex-log-guard-doctor.test.ts": "codex-integration", + "codex-log-guard-inspect.test.ts": "codex-integration", "codex-log-guard-lock.test.ts": "codex-integration", "codex-log-guard-maintenance-coderabbit.test.ts": "codex-integration", - "codex-log-guard-maintenance.test.ts": "codex-integration", "codex-log-guard-policy.test.ts": "codex-integration", - "codex-log-guard-processes.test.ts": "codex-integration", "codex-log-guard-protection.test.ts": "codex-integration", + "codex-log-guard-maintenance.test.ts": "codex-integration", + "codex-log-guard-policy.test.ts": "codex-integration", + "codex-log-guard-processes.test.ts": "codex-integration", + "codex-log-guard-protection.test.ts": "codex-integration", "codex-log-guard-status-zero-write.test.ts": "codex-integration", - "codex-main-account-refresh.test.ts": "codex-integration", "codex-main-rotation.test.ts": "codex-integration", - "codex-management-convergence.test.ts": "codex-integration", "codex-metadata-integrity.test.ts": "codex-integration", + "codex-main-account-refresh.test.ts": "codex-integration", + "codex-main-rotation.test.ts": "codex-integration", + "codex-management-convergence.test.ts": "codex-integration", + "codex-metadata-integrity.test.ts": "codex-integration", "codex-model-availability-error.test.ts": "codex-integration", "codex-model-denial-evidence.test.ts": "codex-integration", "codex-model-entitlement-admission.test.ts": "codex-integration", "codex-model-entitlements-program-shape.test.ts": "codex-integration", - "codex-native-availability-nux.test.ts": "codex-integration", "codex-model-entitlements.test.ts": "codex-integration", - "codex-models-cache-invalidate.test.ts": "codex-integration", "codex-native-residue.test.ts": "codex-integration", - "codex-pin-drain-projection.test.ts": "codex-integration", "codex-plan.test.ts": "codex-integration", - "codex-plugins-doctor.test.ts": "codex-integration", "codex-pool-plan-exclusion.test.ts": "codex-integration", + "codex-native-availability-nux.test.ts": "codex-integration", + "codex-model-entitlements.test.ts": "codex-integration", + "codex-models-cache-invalidate.test.ts": "codex-integration", + "codex-native-residue.test.ts": "codex-integration", + "codex-pin-drain-projection.test.ts": "codex-integration", + "codex-plan.test.ts": "codex-integration", + "codex-plugins-doctor.test.ts": "codex-integration", + "codex-pool-plan-exclusion.test.ts": "codex-integration", "codex-pool-refresh-backoff.test.ts": "codex-integration", - "codex-pool-request-owned-main.test.ts": "codex-integration", "codex-pool-rotation.test.ts": "codex-integration", - "codex-priority-failback.test.ts": "codex-integration", "codex-idle-window.test.ts": "codex-integration", - "codex-prompt-adopt.test.ts": "codex-integration", "codex-prompt-base-variants.test.ts": "codex-integration", - "codex-prompt-journal.test.ts": "codex-integration", "codex-prompt-layers-read.test.ts": "codex-integration", - "codex-prompt-layers-write.test.ts": "codex-integration", "codex-prompt-layers.test.ts": "codex-integration", - "codex-prompt-lock.test.ts": "codex-integration", "codex-prompt-route.test.ts": "codex-integration", - "codex-prompt-text-probe.test.ts": "codex-integration", "codex-provider-table-retention.test.ts": "codex-integration", + "codex-pool-request-owned-main.test.ts": "codex-integration", + "codex-pool-rotation.test.ts": "codex-integration", + "codex-priority-failback.test.ts": "codex-integration", + "codex-idle-window.test.ts": "codex-integration", + "codex-prompt-adopt.test.ts": "codex-integration", + "codex-prompt-base-variants.test.ts": "codex-integration", + "codex-prompt-journal.test.ts": "codex-integration", + "codex-prompt-layers-read.test.ts": "codex-integration", + "codex-prompt-layers-write.test.ts": "codex-integration", + "codex-prompt-layers.test.ts": "codex-integration", + "codex-prompt-lock.test.ts": "codex-integration", + "codex-prompt-route.test.ts": "codex-integration", + "codex-prompt-text-probe.test.ts": "codex-integration", + "codex-provider-table-retention.test.ts": "codex-integration", "codex-quota-auto-refresh-main-admission.test.ts": "codex-integration", - "codex-quota-auto-refresh.test.ts": "codex-integration", "codex-quota-capacity.test.ts": "codex-integration", - "codex-quota-history.test.ts": "codex-integration", "codex-quota-parser-parity.test.ts": "codex-integration", - "codex-quota-prime.test.ts": "codex-integration", "codex-quota-rejection.test.ts": "codex-integration", - "codex-refresh.test.ts": "codex-integration", "codex-reset-credit-auto-redeem.test.ts": "codex-integration", + "codex-quota-auto-refresh.test.ts": "codex-integration", + "codex-quota-capacity.test.ts": "codex-integration", + "codex-quota-history.test.ts": "codex-integration", + "codex-quota-parser-parity.test.ts": "codex-integration", + "codex-quota-prime.test.ts": "codex-integration", + "codex-quota-rejection.test.ts": "codex-integration", + "codex-refresh.test.ts": "codex-integration", + "codex-reset-credit-auto-redeem.test.ts": "codex-integration", "codex-reset-credit-operation-ledger.test.ts": "codex-integration", "codex-reset-credit-recovery.test.ts": "codex-integration", - "codex-restart-contract-parity.test.ts": "codex-integration", "codex-restart-route.test.ts": "codex-integration", + "codex-restart-contract-parity.test.ts": "codex-integration", + "codex-restart-route.test.ts": "codex-integration", "codex-restore-app-rewrite.test.ts": "codex-integration", "codex-retained-root-serialization.test.ts": "codex-integration", - "codex-routing-cache-affinity-detour.test.ts": "codex-integration", "codex-routing.test.ts": "codex-integration", - "codex-runtime.test.ts": "codex-integration", "codex-runtime-wsl-desktop.test.ts": "codex-integration", + "codex-routing-cache-affinity-detour.test.ts": "codex-integration", + "codex-routing.test.ts": "codex-integration", + "codex-runtime.test.ts": "codex-integration", + "codex-runtime-wsl-desktop.test.ts": "codex-integration", "codex-service-manager-probe-hardening.test.ts": "codex-integration", - "codex-service-manager-probe.test.ts": "codex-integration", "codex-systemd-env-probe.test.ts": "codex-integration", - "codex-shim-autorestore.test.ts": "codex-integration", "codex-shim-destroyed-probe.test.ts": "codex-integration", - "codex-shim-ensure-failure.test.ts": "codex-integration", "codex-shim-readiness.test.ts": "codex-integration", - "codex-shim-standalone.test.ts": "codex-integration", "codex-shim.test.ts": "codex-integration", - "codex-signin-lockout.test.ts": "codex-integration", "codex-spark-visibility.test.ts": "codex-integration", - "codex-sqlite-home.test.ts": "codex-integration", "codex-sync-api.test.ts": "codex-integration", - "codex-sync-new-model-policy.test.ts": "codex-integration", "codex-sync-response.test.ts": "codex-integration", - "codex-tool-mode.test.ts": "codex-integration", "codex-transition-state-adoption.test.ts": "codex-integration", + "codex-service-manager-probe.test.ts": "codex-integration", + "codex-systemd-env-probe.test.ts": "codex-integration", + "codex-shim-autorestore.test.ts": "codex-integration", + "codex-shim-destroyed-probe.test.ts": "codex-integration", + "codex-shim-ensure-failure.test.ts": "codex-integration", + "codex-shim-readiness.test.ts": "codex-integration", + "codex-shim-standalone.test.ts": "codex-integration", + "codex-shim.test.ts": "codex-integration", + "codex-signin-lockout.test.ts": "codex-integration", + "codex-spark-visibility.test.ts": "codex-integration", + "codex-sqlite-home.test.ts": "codex-integration", + "codex-sync-api.test.ts": "codex-integration", + "codex-sync-new-model-policy.test.ts": "codex-integration", + "codex-sync-response.test.ts": "codex-integration", + "codex-tool-mode.test.ts": "codex-integration", + "codex-transition-state-adoption.test.ts": "codex-integration", "codex-transition-state-first-use-regression.test.ts": "codex-integration", - "codex-transition-state-race.test.ts": "codex-integration", "codex-transition-state.test.ts": "codex-integration", - "codex-user-identity.test.ts": "codex-integration", "codex-v2-gate.test.ts": "codex-integration", - "codex-warmup.test.ts": "codex-integration", "codex-web-search-switch.test.ts": "codex-integration", - "codex-websocket-registry.test.ts": "codex-integration", "codex-write-lock.test.ts": "codex-integration", - "coding-agent-tool-result-images.test.ts": "adapters", "cold-spawn-warmup.test.ts": "ci-workflows", + "codex-transition-state-race.test.ts": "codex-integration", + "codex-transition-state.test.ts": "codex-integration", + "codex-user-identity.test.ts": "codex-integration", + "codex-v2-gate.test.ts": "codex-integration", + "codex-warmup.test.ts": "codex-integration", + "codex-web-search-switch.test.ts": "codex-integration", + "codex-websocket-registry.test.ts": "codex-integration", + "codex-write-lock.test.ts": "codex-integration", + "coding-agent-tool-result-images.test.ts": "adapters", + "cold-spawn-warmup.test.ts": "ci-workflows", "combo-authoritative-reset.test.ts": "codex-integration", "combo-codex-exhaustion-cooldown.test.ts": "codex-integration", "combo-permanent-failure-cooldown.test.ts": "codex-integration", - "combo-reset-window-model-scope.test.ts": "codex-integration", "combo-child-headers.test.ts": "routing", - "combo-last-resort.test.ts": "codex-integration", "combo-management-api.test.ts": "routing", - "combo-stream-preflight.test.ts": "routing", "combo-workspace-data.test.ts": "gui", - "combo-workspace-jev-decision.test.ts": "gui", "combos.test.ts": "codex-integration", - "command-code-error-finish.test.ts": "providers", "command-code-efforts.test.ts": "providers", - "command-code-project-context.test.ts": "providers", "command-code-provider.test.ts": "providers", - "command-code-quota.test.ts": "providers", "command-code-tool-text.test.ts": "providers", - "command-code-workspace-cache.test.ts": "providers", "commandcode-provider.test.ts": "providers", - "compaction-progress.test.ts": "responses", "companion-settings.test.ts": "server", - "compatibility-manifest.test.ts": "codex-integration", "compatibility-provider-equivalence.test.ts": "routing", - "compatibility-version.test.ts": "ci-workflows", "config-account-thresholds.test.ts": "config", - "config-blocked-model-redirects.test.ts": "config", "config-catalog-auto-refresh.test.ts": "config", - "config-commandcode-claude-pin.test.ts": "config", "config-load-degrade.test.ts": "config", - "protocol-settings.test.ts": "config", "config-mutation-lock.test.ts": "config", - "config-non-object-backup.test.ts": "config", "config-ownership-uninstall.test.ts": "config", - "config-rebase-provenance-writers.test.ts": "config", "config-save-boundary.test.ts": "config", - "config-spend-ceilings.test.ts": "config", "config-user-edits.test.ts": "config", - "config.test.ts": "server", "configured-native-models.test.ts": "codex-integration", - "gui-desktop-sidecar-signing.test.ts": "gui", "linux-desktop-packaged-ci.test.ts": "ci-workflows", - "probe-timeout-env.test.ts": "server", "subagent-roster-migration.test.ts": "routing", - "consume-for-inspection-cancel.test.ts": "server", "container-bootstrap.test.ts": "service", - "context-cap-unknown-window.test.ts": "providers", "context-compat.test.ts": "codex-integration", - "context-history-ownership.test.ts": "server", "context-history.test.ts": "server", - "context-window-seed-repair.test.ts": "providers", "continuation-dedup.test.ts": "responses", - "core-lab-boundary.test.ts": "lab", "cost-cap-unknown-evidence.test.ts": "usage", - "cost-scoring.test.ts": "usage", "crash-guard.test.ts": "service", - "credential-redirect-guard.test.ts": "lib", "crusoe-provider.test.ts": "providers", - "cursor-adapter.test.ts": "providers/cursor", "cursor-arg-normalize.test.ts": "providers/cursor", - "cursor-blob-integrity.test.ts": "providers/cursor", "cursor-blob.test.ts": "providers/cursor", - "cursor-call-id.test.ts": "providers/cursor", "cursor-cancel-provenance.test.ts": "providers/cursor", - "cursor-catalog.test.ts": "providers/cursor", "cursor-claude-id.test.ts": "providers/cursor", + "combo-reset-window-model-scope.test.ts": "codex-integration", + "combo-child-headers.test.ts": "routing", + "combo-last-resort.test.ts": "codex-integration", + "combo-management-api.test.ts": "routing", + "combo-stream-preflight.test.ts": "routing", + "combo-workspace-data.test.ts": "gui", + "combo-workspace-jev-decision.test.ts": "gui", + "combos.test.ts": "codex-integration", + "command-code-error-finish.test.ts": "providers", + "command-code-efforts.test.ts": "providers", + "command-code-project-context.test.ts": "providers", + "command-code-provider.test.ts": "providers", + "command-code-quota.test.ts": "providers", + "command-code-tool-text.test.ts": "providers", + "command-code-workspace-cache.test.ts": "providers", + "commandcode-provider.test.ts": "providers", + "compaction-progress.test.ts": "responses", + "companion-settings.test.ts": "server", + "compatibility-manifest.test.ts": "codex-integration", + "compatibility-provider-equivalence.test.ts": "routing", + "compatibility-version.test.ts": "ci-workflows", + "config-account-thresholds.test.ts": "config", + "config-blocked-model-redirects.test.ts": "config", + "config-catalog-auto-refresh.test.ts": "config", + "config-commandcode-claude-pin.test.ts": "config", + "config-load-degrade.test.ts": "config", + "protocol-settings.test.ts": "config", + "config-mutation-lock.test.ts": "config", + "config-non-object-backup.test.ts": "config", + "config-ownership-uninstall.test.ts": "config", + "config-rebase-provenance-writers.test.ts": "config", + "config-save-boundary.test.ts": "config", + "config-spend-ceilings.test.ts": "config", + "config-user-edits.test.ts": "config", + "config.test.ts": "server", + "configured-native-models.test.ts": "codex-integration", + "gui-desktop-sidecar-signing.test.ts": "gui", + "linux-desktop-packaged-ci.test.ts": "ci-workflows", + "probe-timeout-env.test.ts": "server", + "subagent-roster-migration.test.ts": "routing", + "consume-for-inspection-cancel.test.ts": "server", + "container-bootstrap.test.ts": "service", + "context-cap-unknown-window.test.ts": "providers", + "context-compat.test.ts": "codex-integration", + "context-history-ownership.test.ts": "server", + "context-history.test.ts": "server", + "context-window-seed-repair.test.ts": "providers", + "continuation-dedup.test.ts": "responses", + "core-lab-boundary.test.ts": "lab", + "cost-cap-unknown-evidence.test.ts": "usage", + "cost-scoring.test.ts": "usage", + "crash-guard.test.ts": "service", + "credential-redirect-guard.test.ts": "lib", + "crusoe-provider.test.ts": "providers", + "cursor-adapter.test.ts": "providers/cursor", + "cursor-arg-normalize.test.ts": "providers/cursor", + "cursor-blob-integrity.test.ts": "providers/cursor", + "cursor-blob.test.ts": "providers/cursor", + "cursor-call-id.test.ts": "providers/cursor", + "cursor-cancel-provenance.test.ts": "providers/cursor", + "cursor-catalog.test.ts": "providers/cursor", + "cursor-claude-id.test.ts": "providers/cursor", "cursor-continuation-invariants.test.ts": "providers/cursor", "cursor-continuity-retention.test.ts": "providers/cursor", - "cursor-default-catalog-suppression.test.ts": "providers/cursor", "cursor-desktop-exec.test.ts": "providers/cursor", - "cursor-discovery.test.ts": "providers/cursor", "cursor-display-names.test.ts": "providers/cursor", - "cursor-effort-rows.test.ts": "providers/cursor", "cursor-effort-suffix.test.ts": "providers/cursor", - "cursor-effort-table.test.ts": "providers/cursor", "cursor-envelope-echo-retry.test.ts": "providers/cursor", - "cursor-eof-terminal.test.ts": "providers/cursor", "cursor-errors.test.ts": "providers/cursor", - "cursor-exec-empty-result.test.ts": "providers/cursor", "cursor-fast-listing.test.ts": "providers/cursor", - "cursor-fast-tier.test.ts": "providers/cursor", "cursor-framing.test.ts": "providers/cursor", - "cursor-h2-pool-shutdown.test.ts": "providers/cursor", "cursor-hardening.test.ts": "providers/cursor", - "cursor-http1-transport.test.ts": "providers/cursor", "cursor-images.test.ts": "providers/cursor", - "cursor-integration-status.test.ts": "providers/cursor", "cursor-interaction-query.test.ts": "providers/cursor", - "cursor-kv-store.test.ts": "providers/cursor", "cursor-live-smoke-gate.test.ts": "providers/cursor", - "cursor-live-transport.test.ts": "providers/cursor", "cursor-local-models-schema.test.ts": "providers/cursor", - "cursor-mcp-manager.test.ts": "providers/cursor", "cursor-mcp-stdio.test.ts": "providers/cursor", - "cursor-message-mapper.test.ts": "providers/cursor", "cursor-native-exec-common.test.ts": "providers/cursor", - "cursor-native-exec-policy.test.ts": "providers/cursor", "cursor-native-exec-shell.test.ts": "providers/cursor", - "cursor-foreground-shell.test.ts": "providers/cursor", "cursor-native-exec.test.ts": "providers/cursor", - "cursor-oauth-shell.test.ts": "providers/cursor", "cursor-oauth.test.ts": "providers/cursor", - "cursor-pool.test.ts": "providers/cursor", "cursor-protobuf-events.test.ts": "providers/cursor", - "cursor-repetition-breaker.test.ts": "providers/cursor", "cursor-request-builder.test.ts": "providers/cursor", - "cursor-request-compat.test.ts": "providers/cursor", "cursor-roster-account-scope.test.ts": "providers/cursor", - "cursor-silent-redirect.test.ts": "providers/cursor", "cursor-static-catalog.test.ts": "providers/cursor", - "cursor-stream-health.test.ts": "providers/cursor", "cursor-structured-edit.test.ts": "providers/cursor", - "cursor-tool-arg-decoding.test.ts": "providers/cursor", "cursor-tool-choice.test.ts": "providers/cursor", - "cursor-tool-continuation.test.ts": "providers/cursor", "cursor-tool-definitions.test.ts": "providers/cursor", - "cursor-tool-finalize-race.test.ts": "providers/cursor", "cursor-tool-result-image.test.ts": "providers/cursor", + "cursor-default-catalog-suppression.test.ts": "providers/cursor", + "cursor-desktop-exec.test.ts": "providers/cursor", + "cursor-discovery.test.ts": "providers/cursor", + "cursor-display-names.test.ts": "providers/cursor", + "cursor-effort-rows.test.ts": "providers/cursor", + "cursor-effort-suffix.test.ts": "providers/cursor", + "cursor-effort-table.test.ts": "providers/cursor", + "cursor-envelope-echo-retry.test.ts": "providers/cursor", + "cursor-eof-terminal.test.ts": "providers/cursor", + "cursor-errors.test.ts": "providers/cursor", + "cursor-exec-empty-result.test.ts": "providers/cursor", + "cursor-fast-listing.test.ts": "providers/cursor", + "cursor-fast-tier.test.ts": "providers/cursor", + "cursor-framing.test.ts": "providers/cursor", + "cursor-h2-pool-shutdown.test.ts": "providers/cursor", + "cursor-hardening.test.ts": "providers/cursor", + "cursor-http1-transport.test.ts": "providers/cursor", + "cursor-images.test.ts": "providers/cursor", + "cursor-integration-status.test.ts": "providers/cursor", + "cursor-interaction-query.test.ts": "providers/cursor", + "cursor-kv-store.test.ts": "providers/cursor", + "cursor-live-smoke-gate.test.ts": "providers/cursor", + "cursor-live-transport.test.ts": "providers/cursor", + "cursor-local-models-schema.test.ts": "providers/cursor", + "cursor-mcp-manager.test.ts": "providers/cursor", + "cursor-mcp-stdio.test.ts": "providers/cursor", + "cursor-message-mapper.test.ts": "providers/cursor", + "cursor-native-exec-common.test.ts": "providers/cursor", + "cursor-native-exec-policy.test.ts": "providers/cursor", + "cursor-native-exec-shell.test.ts": "providers/cursor", + "cursor-foreground-shell.test.ts": "providers/cursor", + "cursor-native-exec.test.ts": "providers/cursor", + "cursor-oauth-shell.test.ts": "providers/cursor", + "cursor-oauth.test.ts": "providers/cursor", + "cursor-pool.test.ts": "providers/cursor", + "cursor-protobuf-events.test.ts": "providers/cursor", + "cursor-repetition-breaker.test.ts": "providers/cursor", + "cursor-request-builder.test.ts": "providers/cursor", + "cursor-request-compat.test.ts": "providers/cursor", + "cursor-roster-account-scope.test.ts": "providers/cursor", + "cursor-silent-redirect.test.ts": "providers/cursor", + "cursor-static-catalog.test.ts": "providers/cursor", + "cursor-stream-health.test.ts": "providers/cursor", + "cursor-structured-edit.test.ts": "providers/cursor", + "cursor-tool-arg-decoding.test.ts": "providers/cursor", + "cursor-tool-choice.test.ts": "providers/cursor", + "cursor-tool-continuation.test.ts": "providers/cursor", + "cursor-tool-definitions.test.ts": "providers/cursor", + "cursor-tool-finalize-race.test.ts": "providers/cursor", + "cursor-tool-result-image.test.ts": "providers/cursor", "cursor-tool-result-invocation.test.ts": "providers/cursor", "cursor-tool-suspended-checkpoint.test.ts": "providers/cursor", - "cursor-toolresult-normalize.test.ts": "providers/cursor", "cursor-transport-retry.test.ts": "providers/cursor", - "cursor-ultra-mode.test.ts": "providers/cursor", "cursor-umbrella-rows.test.ts": "providers/cursor", - "cursor-uncallable-quarantine.test.ts": "providers/cursor", "cursor-vision-wire-harness.test.ts": "providers/cursor", - "custom-model-catalog-migration.test.ts": "codex-integration", "custom-tool-compat.test.ts": "responses", - "cyber-policy-error-fidelity.test.ts": "providers", "dashboard-sidecar-codex-write.test.ts": "gui", - "dashboard-uptime.test.ts": "gui", "data-plane-admission-identity.test.ts": "server", - "debug-settings.test.ts": "server", "debug.test.ts": "lib", - "decision-discovery.test.ts": "server", "server-jev-model-decision-e2e.test.ts": "server", - "decision-routes.test.ts": "server", "deepinfra-provider.test.ts": "providers", - "deepseek-inbound-wire.test.ts": "providers", "deepseek-reasoning-replay-gaps.test.ts": "providers", - "deepseek-reasoning-replay.test.ts": "providers", "deepseek-responses-item-id-repair.test.ts": "providers", - "desktop-3p-guard.test.ts": "clients", "desktop-3p-removal.test.ts": "clients", - "desktop-3p.test.ts": "clients", "desktop-app-restart.test.ts": "clients", - "desktop-cli-contracts.test.ts": "clients", "desktop-exit-ownership.test.ts": "clients", - "desktop-host-visibility.test.ts": "clients", "desktop-install-identity.test.ts": "clients", - "desktop-profile.test.ts": "clients", "desktop-proxy-direct-transport.test.ts": "clients", - "desktop-remote-store.test.ts": "clients", "desktop-runtime-identity.test.ts": "clients", - "desktop-start-at-login-default.test.ts": "clients", "desktop-startup-surface.test.ts": "clients", - "desktop-update-surface.test.ts": "clients", "desktop-tray-availability.test.ts": "clients", - "desktop-widget-entry.test.ts": "clients", "destination-policy-resolved.test.ts": "routing", - "devin-adapter-reset-wait.test.ts": "providers", "devin-adapter.test.ts": "providers", - "devin-chat-wire-fixes.test.ts": "providers", "devin-cli-authmode-migration.test.ts": "providers", - "devin-effort-ladder.test.ts": "providers", "devin-family-resolution.test.ts": "providers", - "devin-hardening.test.ts": "providers", "devin-image-passthrough.test.ts": "providers", - "devin-live-models.test.ts": "providers", "devin-login.test.ts": "providers", - "devin-quota.test.ts": "providers", "devin-output-budget.test.ts": "providers", - "devin-prompt-cache.test.ts": "providers", "devin-trajectory.test.ts": "providers", - "devin-provider-merge-migration.test.ts": "providers", "devin-stated-reset-hardening.test.ts": "providers", - "devin-stated-reset-retry.test.ts": "providers", "devin-anthropic-signature-fallback.test.ts": "providers", - "devin-reasoning-continuation.test.ts": "providers", "devin-stream-deadline.test.ts": "providers", - "digitalocean-scaleway-provider.test.ts": "providers", "docs-429-failover-claims.test.ts": "ci-workflows", - "docs-bun-source-requirement.test.ts": "ci-workflows", "docs-developer-role-policy.test.ts": "ci-workflows", - "docs-gui-screenshot-policy.test.ts": "ci-workflows", "docs-link-targets.test.ts": "ci-workflows", - "docs-gjc-reasoning-export.test.ts": "ci-workflows", "docs-provider-billing-claims.test.ts": "ci-workflows", - "docs-provider-discovery-limits.test.ts": "ci-workflows", "docs-provider-preset-counts.test.ts": "ci-workflows", - "docs-readme-memory-inventory.test.ts": "ci-workflows", "docs-readme-translation-parity.test.ts": "ci-workflows", - "docs-remote-hub-claims.test.ts": "ci-workflows", "doctor-codex-envkey-readiness.test.ts": "service", - "doctor-oauth.test.ts": "service", "doctor-provider-apikey.test.ts": "service", - "doctor-service-memory-contract.test.ts": "service", "doctor.test.ts": "codex-integration", - "download-cap-default.test.ts": "images", "download-connect-deadline-default.test.ts": "images", - "droid-client.test.ts": "clients", "dsh-path-contract.test.ts": "ci-workflows", - "dsh-rc6-compat-script.test.ts": "ci-workflows", "dsh-writer-lock.test.ts": "ci-workflows", - "effort-policy.test.ts": "codex-integration", "empty-completion-core.test.ts": "responses", - "empty-completion-guard.test.ts": "responses", "empty-completion-hardening.test.ts": "responses", - "empty-tool-output-annotation.test.ts": "adapters", "ensure-desired-integrations-race.test.ts": "cli", - "error-fidelity.test.ts": "server", "errors-adapter-failure.test.ts": "server", - "eventstream-decoder.test.ts": "responses", "exa-web-search.test.ts": "providers", - "exec-tool-result-normalize.test.ts": "adapters", "execution-budget-permits.test.ts": "lib", - "exhaustive-deps-suppression.test.ts": "ci-workflows", "expand-user-path.test.ts": "config", - "failure-attribution.test.ts": "lib", "failure-stage-model.test.ts": "lib", - "fast-row-ingress.test.ts": "providers", "fast-row-listing.test.ts": "codex-integration", - "fast-row.test.ts": "codex-integration", "fastwire-characterization-routing.test.ts": "routing", - "fastwire-characterization-wire.test.ts": "routing", "fastwire-observability.test.ts": "routing", - "fastwire-response-authority.test.ts": "routing", "fastwire-policy.test.ts": "routing", - "featherless-provider.test.ts": "providers", "fetch-header-timeout.test.ts": "server", - "file-size-ratchet.test.ts": "ci-workflows", "fixture-dir-uniqueness.test.ts": "ci-workflows", - "flash-route-image-modalities.test.ts": "providers", "format-result.test.ts": "web-search", - "forward-admission-separation.test.ts": "providers", "fresh-connection-optout.test.ts": "responses", - "fulfill-video.test.ts": "videos", "gather-routed-models-single-flight.test.ts": "codex-integration", - "gcp-adc.test.ts": "adapters/google", "gemini-37-flash-migration.test.ts": "adapters/google", - "gemini-inline.test.ts": "images", "gemini-web-search.test.ts": "adapters/google", - "generic-oauth-failover.test.ts": "oauth", "generic-oauth-refusal-composition.test.ts": "oauth", + "cursor-toolresult-normalize.test.ts": "providers/cursor", + "cursor-transport-retry.test.ts": "providers/cursor", + "cursor-ultra-mode.test.ts": "providers/cursor", + "cursor-umbrella-rows.test.ts": "providers/cursor", + "cursor-uncallable-quarantine.test.ts": "providers/cursor", + "cursor-vision-wire-harness.test.ts": "providers/cursor", + "custom-model-catalog-migration.test.ts": "codex-integration", + "custom-tool-compat.test.ts": "responses", + "cyber-policy-error-fidelity.test.ts": "providers", + "dashboard-sidecar-codex-write.test.ts": "gui", + "dashboard-uptime.test.ts": "gui", + "data-plane-admission-identity.test.ts": "server", + "debug-settings.test.ts": "server", + "debug.test.ts": "lib", + "decision-discovery.test.ts": "server", + "server-jev-model-decision-e2e.test.ts": "server", + "decision-routes.test.ts": "server", + "deepinfra-provider.test.ts": "providers", + "deepseek-inbound-wire.test.ts": "providers", + "deepseek-reasoning-replay-gaps.test.ts": "providers", + "deepseek-reasoning-replay.test.ts": "providers", + "deepseek-responses-item-id-repair.test.ts": "providers", + "desktop-3p-guard.test.ts": "clients", + "desktop-3p-removal.test.ts": "clients", + "desktop-3p.test.ts": "clients", + "desktop-app-restart.test.ts": "clients", + "desktop-cli-contracts.test.ts": "clients", + "desktop-exit-ownership.test.ts": "clients", + "desktop-host-visibility.test.ts": "clients", + "desktop-install-identity.test.ts": "clients", + "desktop-profile.test.ts": "clients", + "desktop-proxy-direct-transport.test.ts": "clients", + "desktop-remote-store.test.ts": "clients", + "desktop-runtime-identity.test.ts": "clients", + "desktop-start-at-login-default.test.ts": "clients", + "desktop-startup-surface.test.ts": "clients", + "desktop-update-surface.test.ts": "clients", + "desktop-tray-availability.test.ts": "clients", + "desktop-widget-entry.test.ts": "clients", + "destination-policy-resolved.test.ts": "routing", + "devin-adapter-reset-wait.test.ts": "providers", + "devin-adapter.test.ts": "providers", + "devin-chat-wire-fixes.test.ts": "providers", + "devin-cli-authmode-migration.test.ts": "providers", + "devin-effort-ladder.test.ts": "providers", + "devin-family-resolution.test.ts": "providers", + "devin-hardening.test.ts": "providers", + "devin-image-passthrough.test.ts": "providers", + "devin-live-models.test.ts": "providers", + "devin-login.test.ts": "providers", + "devin-quota.test.ts": "providers", + "devin-output-budget.test.ts": "providers", + "devin-prompt-cache.test.ts": "providers", + "devin-trajectory.test.ts": "providers", + "devin-provider-merge-migration.test.ts": "providers", + "devin-stated-reset-hardening.test.ts": "providers", + "devin-stated-reset-retry.test.ts": "providers", + "devin-anthropic-signature-fallback.test.ts": "providers", + "devin-reasoning-continuation.test.ts": "providers", + "devin-stream-deadline.test.ts": "providers", + "digitalocean-scaleway-provider.test.ts": "providers", + "docs-429-failover-claims.test.ts": "ci-workflows", + "docs-bun-source-requirement.test.ts": "ci-workflows", + "docs-developer-role-policy.test.ts": "ci-workflows", + "docs-gui-screenshot-policy.test.ts": "ci-workflows", + "docs-link-targets.test.ts": "ci-workflows", + "docs-gjc-reasoning-export.test.ts": "ci-workflows", + "docs-provider-billing-claims.test.ts": "ci-workflows", + "docs-provider-discovery-limits.test.ts": "ci-workflows", + "docs-provider-preset-counts.test.ts": "ci-workflows", + "docs-readme-memory-inventory.test.ts": "ci-workflows", + "docs-readme-translation-parity.test.ts": "ci-workflows", + "docs-remote-hub-claims.test.ts": "ci-workflows", + "doctor-codex-envkey-readiness.test.ts": "service", + "doctor-oauth.test.ts": "service", + "doctor-provider-apikey.test.ts": "service", + "doctor-service-memory-contract.test.ts": "service", + "doctor.test.ts": "codex-integration", + "download-cap-default.test.ts": "images", + "download-connect-deadline-default.test.ts": "images", + "droid-client.test.ts": "clients", + "dsh-path-contract.test.ts": "ci-workflows", + "dsh-rc6-compat-script.test.ts": "ci-workflows", + "dsh-writer-lock.test.ts": "ci-workflows", + "effort-policy.test.ts": "codex-integration", + "empty-completion-core.test.ts": "responses", + "empty-completion-guard.test.ts": "responses", + "empty-completion-hardening.test.ts": "responses", + "empty-tool-output-annotation.test.ts": "adapters", + "ensure-desired-integrations-race.test.ts": "cli", + "error-fidelity.test.ts": "server", + "errors-adapter-failure.test.ts": "server", + "eventstream-decoder.test.ts": "responses", + "exa-web-search.test.ts": "providers", + "exec-tool-result-normalize.test.ts": "adapters", + "execution-budget-permits.test.ts": "lib", + "exhaustive-deps-suppression.test.ts": "ci-workflows", + "expand-user-path.test.ts": "config", + "failure-attribution.test.ts": "lib", + "failure-stage-model.test.ts": "lib", + "fast-row-ingress.test.ts": "providers", + "fast-row-listing.test.ts": "codex-integration", + "fast-row.test.ts": "codex-integration", + "fastwire-characterization-routing.test.ts": "routing", + "fastwire-characterization-wire.test.ts": "routing", + "fastwire-observability.test.ts": "routing", + "fastwire-response-authority.test.ts": "routing", + "fastwire-policy.test.ts": "routing", + "featherless-provider.test.ts": "providers", + "fetch-header-timeout.test.ts": "server", + "file-size-ratchet.test.ts": "ci-workflows", + "fixture-dir-uniqueness.test.ts": "ci-workflows", + "flash-route-image-modalities.test.ts": "providers", + "format-result.test.ts": "web-search", + "forward-admission-separation.test.ts": "providers", + "fresh-connection-optout.test.ts": "responses", + "fulfill-video.test.ts": "videos", + "gather-routed-models-single-flight.test.ts": "codex-integration", + "gcp-adc.test.ts": "adapters/google", + "gemini-37-flash-migration.test.ts": "adapters/google", + "gemini-inline.test.ts": "images", + "gemini-web-search.test.ts": "adapters/google", + "generic-oauth-failover.test.ts": "oauth", + "generic-oauth-refusal-composition.test.ts": "oauth", "github-copilot-account-origin.test.ts": "providers/github-copilot", "github-copilot-context-tier.test.ts": "providers/github-copilot", "github-copilot-oauth.test.ts": "providers/github-copilot", "github-copilot-sse-rewrite.test.ts": "providers/github-copilot", "github-copilot-stream-contract.test.ts": "providers/github-copilot", - "github-copilot-wire-defaults.test.ts": "providers/github-copilot", "google-adapter.test.ts": "adapters/google", - "google-antigravity-oauth.test.ts": "adapters/google", "google-antigravity-replay.test.ts": "adapters/google", - "google-antigravity-wire.test.ts": "adapters/google", "google-buffered-stop-reason.test.ts": "adapters/google", - "google-claude-prefill-guard.test.ts": "adapters/google", "google-empty-content.test.ts": "adapters/google", - "google-errors.test.ts": "adapters/google", "google-hardening.test.ts": "adapters/google", - "google-models-listing.test.ts": "adapters/google", "google-output-clamp.test.ts": "adapters/google", + "github-copilot-wire-defaults.test.ts": "providers/github-copilot", + "google-adapter.test.ts": "adapters/google", + "google-antigravity-oauth.test.ts": "adapters/google", + "google-antigravity-replay.test.ts": "adapters/google", + "google-antigravity-wire.test.ts": "adapters/google", + "google-buffered-stop-reason.test.ts": "adapters/google", + "google-claude-prefill-guard.test.ts": "adapters/google", + "google-empty-content.test.ts": "adapters/google", + "google-errors.test.ts": "adapters/google", + "google-hardening.test.ts": "adapters/google", + "google-models-listing.test.ts": "adapters/google", + "google-output-clamp.test.ts": "adapters/google", "google-provider-metadata-roundtrip.test.ts": "adapters/google", "google-signature-history-roundtrip.test.ts": "adapters/google", - "google-strict-tool-validated-mode.test.ts": "adapters/google", "google-structured-output.test.ts": "adapters/google", - "google-tool-result-adjacency.test.ts": "adapters/google", "google-tool-schema-contract.test.ts": "adapters/google", - "google-tool-schema.test.ts": "adapters/google", "google-vertex-http.test.ts": "adapters/google", - "google-vertex-stream.test.ts": "adapters/google", "google-vertex-thought-signature.test.ts": "adapters/google", - "google-wire-compiler.test.ts": "adapters/google", "google-wire-shape.test.ts": "adapters/google", - "gpt6-native-rows.test.ts": "codex-integration", "gpt61-sol-rows.test.ts": "codex-integration", - "grok-attribution.test.ts": "providers/xai", "grok-config-inject.test.ts": "providers/xai", - "grok-effort-inject.test.ts": "providers/xai", "grok-lifecycle.test.ts": "providers/xai", - "grok-management-api.test.ts": "providers/xai", "grok-models-effort-list.test.ts": "providers/xai", - "grok-orphan-adoption.test.ts": "providers/xai", "grok-reset-coupon-cli.test.ts": "providers/xai", - "grok-reset-coupons.test.ts": "providers/xai", "grok-selection.test.ts": "providers/xai", - "grok-session-identity.test.ts": "providers/xai", "grok-status.test.ts": "providers/xai", - "grok-sync.test.ts": "providers/xai", "grok-writer-boundary.test.ts": "providers/xai", - "gui-api-error.test.ts": "gui", "html-lang-boot-script.test.ts": "gui", - "gui-codex-usage-score-parity.test.ts": "gui", "gui-desktop-sidecar-script.test.ts": "gui", - "gui-management-session.test.ts": "gui", "gui-pair-capability.test.ts": "gui", - "gui-pair-client.test.ts": "gui", "gui-pair-http.test.ts": "gui", - "gui-static.test.ts": "gui", "gui-tray-vibrancy-surface.test.ts": "gui", - "health-scoring.test.ts": "server", "history-migration-guardian.test.ts": "codex-integration", + "google-strict-tool-validated-mode.test.ts": "adapters/google", + "google-structured-output.test.ts": "adapters/google", + "google-tool-result-adjacency.test.ts": "adapters/google", + "google-tool-schema-contract.test.ts": "adapters/google", + "google-tool-schema.test.ts": "adapters/google", + "google-vertex-http.test.ts": "adapters/google", + "google-vertex-stream.test.ts": "adapters/google", + "google-vertex-thought-signature.test.ts": "adapters/google", + "google-wire-compiler.test.ts": "adapters/google", + "google-wire-shape.test.ts": "adapters/google", + "gpt6-native-rows.test.ts": "codex-integration", + "gpt61-sol-rows.test.ts": "codex-integration", + "grok-attribution.test.ts": "providers/xai", + "grok-config-inject.test.ts": "providers/xai", + "grok-effort-inject.test.ts": "providers/xai", + "grok-lifecycle.test.ts": "providers/xai", + "grok-management-api.test.ts": "providers/xai", + "grok-models-effort-list.test.ts": "providers/xai", + "grok-orphan-adoption.test.ts": "providers/xai", + "grok-reset-coupon-cli.test.ts": "providers/xai", + "grok-reset-coupons.test.ts": "providers/xai", + "grok-selection.test.ts": "providers/xai", + "grok-session-identity.test.ts": "providers/xai", + "grok-status.test.ts": "providers/xai", + "grok-sync.test.ts": "providers/xai", + "grok-writer-boundary.test.ts": "providers/xai", + "gui-api-error.test.ts": "gui", + "html-lang-boot-script.test.ts": "gui", + "gui-codex-usage-score-parity.test.ts": "gui", + "gui-desktop-sidecar-script.test.ts": "gui", + "gui-management-session.test.ts": "gui", + "gui-pair-capability.test.ts": "gui", + "gui-pair-client.test.ts": "gui", + "gui-pair-http.test.ts": "gui", + "gui-static.test.ts": "gui", + "gui-tray-vibrancy-surface.test.ts": "gui", + "health-scoring.test.ts": "server", + "history-migration-guardian.test.ts": "codex-integration", "history-ocx-compaction-recovery.test.ts": "codex-integration", "history-paginated-openai-compat.test.ts": "codex-integration", - "history-paginated-transition-destinations.test.ts": "codex-integration", "hub-gated-local-clients.test.ts": "cli", - "hub-invite.test.ts": "cli", "hub-usage.test.ts": "server", - "hyperbolic-provider.test.ts": "providers", "identity-neutralize.test.ts": "adapters", - "identity-subagent.test.ts": "adapters", "init-backup-cleanup.test.ts": "service", - "init-eof.test.ts": "service", "initial-model-selection.test.ts": "providers", - "initial-selection-write-fence.test.ts": "providers", "injection-model-api.test.ts": "codex-integration", - "inline-think-boundaries.test.ts": "adapters/openai", "input-admission.test.ts": "server", - "install-scripts.test.ts": "ci-workflows", "installed-gate-drivers.test.ts": "ci-workflows", - "integrations-current-store.test.ts": "clients", "integrations-hermes-affinity.test.ts": "clients", - "integrations-invariants.test.ts": "gui", "integrations-journal.test.ts": "clients", - "integrations-merge.test.ts": "clients", "integrations-serialize.test.ts": "clients", - "integrations-state.test.ts": "clients", "integrations-superseded-store.test.ts": "clients", - "integrations-writer-frozen-config.test.ts": "clients", "integrations-writer.test.ts": "clients", - "interactive-confirm.test.ts": "cli", "issue-452-empty-503.test.ts": "codex-integration", + "history-paginated-transition-destinations.test.ts": "codex-integration", + "hub-gated-local-clients.test.ts": "cli", + "hub-invite.test.ts": "cli", + "hub-usage.test.ts": "server", + "hyperbolic-provider.test.ts": "providers", + "identity-neutralize.test.ts": "adapters", + "identity-subagent.test.ts": "adapters", + "init-backup-cleanup.test.ts": "service", + "init-eof.test.ts": "service", + "initial-model-selection.test.ts": "providers", + "initial-selection-write-fence.test.ts": "providers", + "injection-model-api.test.ts": "codex-integration", + "inline-think-boundaries.test.ts": "adapters/openai", + "input-admission.test.ts": "server", + "install-scripts.test.ts": "ci-workflows", + "installed-gate-drivers.test.ts": "ci-workflows", + "integrations-current-store.test.ts": "clients", + "integrations-hermes-affinity.test.ts": "clients", + "integrations-invariants.test.ts": "gui", + "integrations-journal.test.ts": "clients", + "integrations-merge.test.ts": "clients", + "integrations-serialize.test.ts": "clients", + "integrations-state.test.ts": "clients", + "integrations-superseded-store.test.ts": "clients", + "integrations-writer-frozen-config.test.ts": "clients", + "integrations-writer.test.ts": "clients", + "interactive-confirm.test.ts": "cli", + "issue-452-empty-503.test.ts": "codex-integration", "issue-702-expired-replay-state.test.ts": "codex-integration", - "issue-914-transport-attribution.test.ts": "codex-integration", "key-attribution.test.ts": "usage", - "key-failover.test.ts": "adapters", "key-login-live-update.test.ts": "oauth", - "key-login-preserves-model-costs.test.ts": "oauth", "jev-decision.test.ts": "routing", - "jev-decision-destination.test.ts": "routing", "jev-decision-provider-combo.test.ts": "routing", - "jev-typesafe-golden.test.ts": "routing", "jev-model-backend.test.ts": "routing", - "jev-provider.test.ts": "providers", "keyring-smoke.test.ts": "ci-workflows", - "kilo-client.test.ts": "clients", "kimi-oauth-identity.test.ts": "providers", - "kimi-responses-adjacency.test.ts": "providers", "kiro-account-load.test.ts": "providers/kiro", - "kiro-account-quota.test.ts": "providers/kiro", "kiro-account-state-disk.test.ts": "providers/kiro", - "kiro-account-state-imports.test.ts": "providers/kiro", "kiro-adapter.test.ts": "providers/kiro", - "kiro-auth-context-continuation.test.ts": "providers/kiro", "kiro-builder-id-profile.test.ts": "providers/kiro", - "kiro-calibration.test.ts": "providers/kiro", "kiro-device-builder.test.ts": "providers/kiro", - "kiro-device-social.test.ts": "providers/kiro", "kiro-fallback-error-body.test.ts": "providers/kiro", - "kiro-images.test.ts": "providers/kiro", "kiro-leased-responses.test.ts": "providers/kiro", - "kiro-model-catalog.test.ts": "providers/kiro", "kiro-model-preference.test.ts": "providers/kiro", - "kiro-oauth.test.ts": "providers/kiro", "kiro-pool-load-settings.test.ts": "providers/kiro", - "kiro-pool-rank.test.ts": "providers/kiro", "kiro-reasoning-roundtrip.test.ts": "providers/kiro", - "kiro-refusal-failover.test.ts": "providers/kiro", "kiro-refusal.test.ts": "providers/kiro", - "kiro-remote-image.test.ts": "providers/kiro", "kiro-retry.test.ts": "providers/kiro", - "kiro-review-regressions.test.ts": "providers/kiro", "kiro-metering-events.test.ts": "providers/kiro", - "kiro-metering-usage.test.ts": "providers/kiro", "kiro-single-final.test.ts": "providers/kiro", - "kiro-stream.test.ts": "providers/kiro", "kiro-transport-parity.test.ts": "providers/kiro", - "kiro-usage-quota.test.ts": "providers/kiro", "kiro-usage-restart.test.ts": "providers/kiro", - "kiro-windows-cli-db-path.test.ts": "providers/kiro", "kiro-windows-cli-executable-path.test.ts": "providers/kiro", - "kiro-wire-estimate.test.ts": "providers/kiro", "lab-activation.test.ts": "lab", - "lab-automation-coderabbit-regressions.test.ts": "lab", "lab-automation-final-coderabbit-regressions.test.ts": "lab", - "lab-automation-ingwannu-regressions.test.ts": "lab", "lab-automation-management-http.test.ts": "lab", - "lab-automation-persisted-cap-regression.test.ts": "lab", "lab-automation-review-regressions.test.ts": "lab", - "lab-automation.test.ts": "lab", "lab-community-evidence.test.ts": "lab", - "lab-community-filename-contract.test.ts": "lab", "lab-community-mutation-lock.test.ts": "lab", - "lab-community-publisher-continuity.test.ts": "lab", "lab-conformance-harness.test.ts": "lab", - "lab-conformance-runner-failures.test.ts": "lab", "lab-evidence-ledger.test.ts": "lab", - "lab-evidence-sanitization.test.ts": "lab", "lab-fabric-outcome-validation.test.ts": "lab", - "lab-fabric-persistence-boundary.test.ts": "lab", "lab-fabric-producer-deadline.test.ts": "lab", - "lab-fabric-task.test.ts": "lab", "lab-installation-salt-cache.test.ts": "lab", - "lab-ledger-mutation-lock.test.ts": "lab", "lab-live-pinned-timeouts.test.ts": "lab", - "lab-live-probe.test.ts": "lab", "lab-live-receipt-integrity.test.ts": "lab", - "lab-live-review-regressions.test.ts": "lab", "lab-live-sandbox.test.ts": "lab", - "lab-passive-production-evidence.test.ts": "lab", "lab-passive-production-surfaces.test.ts": "lab", - "lab-paths-security.test.ts": "lab", "lab-post-merge-hardening.test.ts": "lab", - "lab-post-merge-projection.test.ts": "lab", "lab-private-file-consumer-recovery.test.ts": "lab", - "lab-private-file-durability.test.ts": "lab", "lab-public-api-json.test.ts": "lab", - "lab-public-artifact-policy.test.ts": "lab", "lab-public-coderabbit-regressions.test.ts": "lab", - "lab-public-core-contract.test.ts": "lab", "lab-public-deep-review-regressions.test.ts": "lab", - "lab-public-evidence.test.ts": "lab", "lab-public-export-transaction.test.ts": "lab", - "lab-public-file-safety.test.ts": "lab", "lab-public-final-review-regressions.test.ts": "lab", - "lab-public-lifecycle-hardening.test.ts": "lab", "lab-public-privacy-ipv6.test.ts": "lab", - "lab-public-provenance-recovery.test.ts": "lab", "lab-public-review-fixes.test.ts": "lab", - "lab-public-route-registry.test.ts": "lab", "lab-public-security-regressions.test.ts": "lab", - "lab-public-surfaces.test.ts": "lab", "lab-public-wire-contract.test.ts": "lab", - "lab-read-filter-validation.test.ts": "lab", "lab-read-surfaces.test.ts": "lab", - "launchd-repair.test.ts": "service", "legacy-shell-compat.test.ts": "responses", - "live-call-bindings.test.ts": "server", "live-service-manager-guard.test.ts": "service", - "linux-desktop-packaged-e2e.test.ts": "ci-workflows", "link-boundary.test.ts": "clients", - "link-ssh-argv.test.ts": "clients", "link-ssh-config.test.ts": "clients", - "link-store.test.ts": "clients", "link-tunnel-state.test.ts": "clients", - "local-aside-sync-capability.test.ts": "server", "local-account-switch-capability.test.ts": "server", - "local-account-switch-ingress.test.ts": "server", "local-destinations.test.ts": "lib", - "local-management-attestation.test.ts": "server", "local-management-capability.test.ts": "server", - "local-management-direct-transport.test.ts": "server", "local-provider-reload-client.test.ts": "server", - "local-token-detect.test.ts": "oauth", "local-upstream.test.ts": "lib", - "logs-model-tier-confirmation.test.ts": "gui", "logs-timezone.test.ts": "server", - "loop-reasoning-replay.test.ts": "images", "loop.test.ts": "images", - "loopback-companion-client-targets.test.ts": "server", "loopback-listener-admission.test.ts": "server", - "loopback-listener-integration.test.ts": "server", "macos-serial-lanes.test.ts": "ci-workflows", + "issue-914-transport-attribution.test.ts": "codex-integration", + "key-attribution.test.ts": "usage", + "key-failover.test.ts": "adapters", + "key-login-live-update.test.ts": "oauth", + "key-login-preserves-model-costs.test.ts": "oauth", + "jev-decision.test.ts": "routing", + "jev-decision-destination.test.ts": "routing", + "jev-decision-provider-combo.test.ts": "routing", + "jev-typesafe-golden.test.ts": "routing", + "jev-model-backend.test.ts": "routing", + "jev-provider.test.ts": "providers", + "keyring-smoke.test.ts": "ci-workflows", + "kilo-client.test.ts": "clients", + "kimi-oauth-identity.test.ts": "providers", + "kimi-responses-adjacency.test.ts": "providers", + "kiro-account-load.test.ts": "providers/kiro", + "kiro-account-quota.test.ts": "providers/kiro", + "kiro-account-state-disk.test.ts": "providers/kiro", + "kiro-account-state-imports.test.ts": "providers/kiro", + "kiro-adapter.test.ts": "providers/kiro", + "kiro-auth-context-continuation.test.ts": "providers/kiro", + "kiro-builder-id-profile.test.ts": "providers/kiro", + "kiro-calibration.test.ts": "providers/kiro", + "kiro-device-builder.test.ts": "providers/kiro", + "kiro-device-social.test.ts": "providers/kiro", + "kiro-fallback-error-body.test.ts": "providers/kiro", + "kiro-images.test.ts": "providers/kiro", + "kiro-leased-responses.test.ts": "providers/kiro", + "kiro-model-catalog.test.ts": "providers/kiro", + "kiro-model-preference.test.ts": "providers/kiro", + "kiro-oauth.test.ts": "providers/kiro", + "kiro-pool-load-settings.test.ts": "providers/kiro", + "kiro-pool-rank.test.ts": "providers/kiro", + "kiro-reasoning-roundtrip.test.ts": "providers/kiro", + "kiro-refusal-failover.test.ts": "providers/kiro", + "kiro-refusal.test.ts": "providers/kiro", + "kiro-remote-image.test.ts": "providers/kiro", + "kiro-retry.test.ts": "providers/kiro", + "kiro-review-regressions.test.ts": "providers/kiro", + "kiro-metering-events.test.ts": "providers/kiro", + "kiro-metering-usage.test.ts": "providers/kiro", + "kiro-single-final.test.ts": "providers/kiro", + "kiro-stream.test.ts": "providers/kiro", + "kiro-transport-parity.test.ts": "providers/kiro", + "kiro-usage-quota.test.ts": "providers/kiro", + "kiro-usage-restart.test.ts": "providers/kiro", + "kiro-windows-cli-db-path.test.ts": "providers/kiro", + "kiro-windows-cli-executable-path.test.ts": "providers/kiro", + "kiro-wire-estimate.test.ts": "providers/kiro", + "lab-activation.test.ts": "lab", + "lab-automation-coderabbit-regressions.test.ts": "lab", + "lab-automation-final-coderabbit-regressions.test.ts": "lab", + "lab-automation-ingwannu-regressions.test.ts": "lab", + "lab-automation-management-http.test.ts": "lab", + "lab-automation-persisted-cap-regression.test.ts": "lab", + "lab-automation-review-regressions.test.ts": "lab", + "lab-automation.test.ts": "lab", + "lab-community-evidence.test.ts": "lab", + "lab-community-filename-contract.test.ts": "lab", + "lab-community-mutation-lock.test.ts": "lab", + "lab-community-publisher-continuity.test.ts": "lab", + "lab-conformance-harness.test.ts": "lab", + "lab-conformance-runner-failures.test.ts": "lab", + "lab-evidence-ledger.test.ts": "lab", + "lab-evidence-sanitization.test.ts": "lab", + "lab-fabric-outcome-validation.test.ts": "lab", + "lab-fabric-persistence-boundary.test.ts": "lab", + "lab-fabric-producer-deadline.test.ts": "lab", + "lab-fabric-task.test.ts": "lab", + "lab-installation-salt-cache.test.ts": "lab", + "lab-ledger-mutation-lock.test.ts": "lab", + "lab-live-pinned-timeouts.test.ts": "lab", + "lab-live-probe.test.ts": "lab", + "lab-live-receipt-integrity.test.ts": "lab", + "lab-live-review-regressions.test.ts": "lab", + "lab-live-sandbox.test.ts": "lab", + "lab-passive-production-evidence.test.ts": "lab", + "lab-passive-production-surfaces.test.ts": "lab", + "lab-paths-security.test.ts": "lab", + "lab-post-merge-hardening.test.ts": "lab", + "lab-post-merge-projection.test.ts": "lab", + "lab-private-file-consumer-recovery.test.ts": "lab", + "lab-private-file-durability.test.ts": "lab", + "lab-public-api-json.test.ts": "lab", + "lab-public-artifact-policy.test.ts": "lab", + "lab-public-coderabbit-regressions.test.ts": "lab", + "lab-public-core-contract.test.ts": "lab", + "lab-public-deep-review-regressions.test.ts": "lab", + "lab-public-evidence.test.ts": "lab", + "lab-public-export-transaction.test.ts": "lab", + "lab-public-file-safety.test.ts": "lab", + "lab-public-final-review-regressions.test.ts": "lab", + "lab-public-lifecycle-hardening.test.ts": "lab", + "lab-public-privacy-ipv6.test.ts": "lab", + "lab-public-provenance-recovery.test.ts": "lab", + "lab-public-review-fixes.test.ts": "lab", + "lab-public-route-registry.test.ts": "lab", + "lab-public-security-regressions.test.ts": "lab", + "lab-public-surfaces.test.ts": "lab", + "lab-public-wire-contract.test.ts": "lab", + "lab-read-filter-validation.test.ts": "lab", + "lab-read-surfaces.test.ts": "lab", + "launchd-repair.test.ts": "service", + "legacy-shell-compat.test.ts": "responses", + "live-call-bindings.test.ts": "server", + "live-service-manager-guard.test.ts": "service", + "linux-desktop-packaged-e2e.test.ts": "ci-workflows", + "link-boundary.test.ts": "clients", + "link-ssh-argv.test.ts": "clients", + "link-ssh-config.test.ts": "clients", + "link-store.test.ts": "clients", + "link-tunnel-state.test.ts": "clients", + "local-aside-sync-capability.test.ts": "server", + "local-account-switch-capability.test.ts": "server", + "local-account-switch-ingress.test.ts": "server", + "local-destinations.test.ts": "lib", + "local-management-attestation.test.ts": "server", + "local-management-capability.test.ts": "server", + "local-management-direct-transport.test.ts": "server", + "local-provider-reload-client.test.ts": "server", + "local-token-detect.test.ts": "oauth", + "local-upstream.test.ts": "lib", + "logs-model-tier-confirmation.test.ts": "gui", + "logs-timezone.test.ts": "server", + "loop-reasoning-replay.test.ts": "images", + "loop.test.ts": "images", + "loopback-companion-client-targets.test.ts": "server", + "loopback-listener-admission.test.ts": "server", + "loopback-listener-integration.test.ts": "server", + "macos-serial-lanes.test.ts": "ci-workflows", "main-account-hard-lock-auth.test.ts": "codex-integration", "main-account-hard-lock-default.test.ts": "codex-integration", "main-account-hard-lock-policy.test.ts": "codex-integration", "main-account-hard-lock-recovery.test.ts": "codex-integration", "main-account-policy-binding-wait.test.ts": "codex-integration", - "main-device-reauth-api.test.ts": "codex-integration", "main-device-reauth-ui.test.ts": "gui", - "main-device-reauth.test.ts": "codex-integration", "main-quota-evidence-validation.test.ts": "codex-integration", + "main-device-reauth-api.test.ts": "codex-integration", + "main-device-reauth-ui.test.ts": "gui", + "main-device-reauth.test.ts": "codex-integration", + "main-quota-evidence-validation.test.ts": "codex-integration", "main-account-hard-lock-retirement.test.ts": "codex-integration", - "main-quota-provenance.test.ts": "codex-integration", "main-quota-window-observation.test.ts": "codex-integration", - "management-anthropic-reset-grants.test.ts": "server", "management-api-logs-metrics.test.ts": "server", - "management-client-config-route.test.ts": "server", "management-google-tool-schema-policy.test.ts": "server", - "management-integration-journal-delete.test.ts": "server", "management-integration-routes.test.ts": "server", - "management-metrics-export.test.ts": "server", "management-model-roster-gather-race.test.ts": "server", - "management-model-roster.test.ts": "server", "model-export-new-model-policy.test.ts": "server", - "management-origin-tls.test.ts": "server", "management-provider-compat-carry.test.ts": "server", - "management-provider-hide-raw-reasoning.test.ts": "server", "management-provider-atomicity.test.ts": "server", - "management-provider-pinsless-validation.test.ts": "server", "management-provider-proto-override.test.ts": "server", - "management-provider-reasoning-lists.test.ts": "server", "management-provider-reset-replay.test.ts": "server", - "management-provider-synthetic-max.test.ts": "server", "management-provider-upstream-websocket.test.ts": "server", - "management-provider-validation.test.ts": "server", "management-provider-verbosity.test.ts": "server", - "management-route-registry.test.ts": "server", "protocol-routes.test.ts": "server", - "protocol-settings-route.test.ts": "server", "protocol-provider-summary.test.ts": "server", - "management-workflow-budget-routes.test.ts": "server", "managing-cli.test.ts": "service", - "memory-watchdog.test.ts": "server", "meta-model-api-provider.test.ts": "providers", - "meta-muse-oauth.test.ts": "providers", "mimo-effort.test.ts": "providers", - "mimo-free-provider.test.ts": "providers", "mimo-token-plan-provider.test.ts": "providers", - "mimo-v26-catalog.test.ts": "providers", "minimax-clients.test.ts": "providers", - "minimax-quota.test.ts": "providers", "minimax-reasoning-split.test.ts": "providers", - "model-cache-generation-tombstone.test.ts": "codex-integration", "model-cache.test.ts": "codex-integration", - "model-costs-management-api.test.ts": "server", "model-discovery-management-api.test.ts": "server", + "main-quota-provenance.test.ts": "codex-integration", + "main-quota-window-observation.test.ts": "codex-integration", + "management-anthropic-reset-grants.test.ts": "server", + "management-api-logs-metrics.test.ts": "server", + "management-client-config-route.test.ts": "server", + "management-google-tool-schema-policy.test.ts": "server", + "management-integration-journal-delete.test.ts": "server", + "management-integration-routes.test.ts": "server", + "management-metrics-export.test.ts": "server", + "management-model-roster-gather-race.test.ts": "server", + "management-model-roster.test.ts": "server", + "model-export-new-model-policy.test.ts": "server", + "management-origin-tls.test.ts": "server", + "management-provider-compat-carry.test.ts": "server", + "management-provider-hide-raw-reasoning.test.ts": "server", + "management-provider-atomicity.test.ts": "server", + "management-provider-pinsless-validation.test.ts": "server", + "management-provider-proto-override.test.ts": "server", + "management-provider-reasoning-lists.test.ts": "server", + "management-provider-reset-replay.test.ts": "server", + "management-provider-synthetic-max.test.ts": "server", + "management-provider-upstream-websocket.test.ts": "server", + "management-provider-validation.test.ts": "server", + "management-provider-verbosity.test.ts": "server", + "management-route-registry.test.ts": "server", + "protocol-routes.test.ts": "server", + "protocol-settings-route.test.ts": "server", + "protocol-provider-summary.test.ts": "server", + "management-workflow-budget-routes.test.ts": "server", + "managing-cli.test.ts": "service", + "memory-watchdog.test.ts": "server", + "meta-model-api-provider.test.ts": "providers", + "meta-muse-oauth.test.ts": "providers", + "mimo-effort.test.ts": "providers", + "mimo-free-provider.test.ts": "providers", + "mimo-token-plan-provider.test.ts": "providers", + "mimo-v26-catalog.test.ts": "providers", + "minimax-clients.test.ts": "providers", + "minimax-quota.test.ts": "providers", + "minimax-reasoning-split.test.ts": "providers", + "model-cache-generation-tombstone.test.ts": "codex-integration", + "model-cache.test.ts": "codex-integration", + "model-costs-management-api.test.ts": "server", + "model-discovery-management-api.test.ts": "server", "server-new-model-policy-arrival.test.ts": "server", - "model-display-names-management-api.test.ts": "codex-integration", "model-metadata-sync.test.ts": "codex-integration", - "model-pinned-effort-config.test.ts": "config", "model-pinned-effort.test.ts": "codex-integration", - "model-presets.test.ts": "providers", "model-rename-migration.test.ts": "providers", + "model-display-names-management-api.test.ts": "codex-integration", + "model-metadata-sync.test.ts": "codex-integration", + "model-pinned-effort-config.test.ts": "config", + "model-pinned-effort.test.ts": "codex-integration", + "model-presets.test.ts": "providers", + "model-rename-migration.test.ts": "providers", "model-roster-seed-repair.test.ts": "providers", - "model-selection-guidance.test.ts": "cli", "model-settings-management-api.test.ts": "server", - "model-visibility-management-api.test.ts": "codex-integration", "models-feedback-callback.test.ts": "gui", - "models-free-filter.test.ts": "gui", "models-page-groups.test.ts": "gui", - "models-workspace-tabs.test.ts": "gui", "moonshot-endpoints.test.ts": "providers", - "moonshot-tool-schema.test.ts": "providers", "multi-agent-compat.test.ts": "codex-integration", - "multi-agent-keep-native-v1.test.ts": "codex-integration", "multi-agent-origin.test.ts": "codex-integration", - "muse-passive-quota-cache.test.ts": "providers", "muse-passive-quota-observation.test.ts": "providers", - "muse-spark-web-search-compat.test.ts": "providers", "muse-subscription-usage.test.ts": "providers", - "muse-tool-name-alias.test.ts": "providers", "mutation-plan.test.ts": "clients", - "namespace-tool-compat.test.ts": "responses", "native-alias-maintainer-regressions.test.ts": "codex-integration", - "native-claude-code-toggle.test.ts": "codex-integration", "native-claude-desktop-toggle.test.ts": "codex-integration", - "native-codex-toggle.test.ts": "codex-integration", "native-grok-toggle.test.ts": "codex-integration", - "native-main-auth-temp.test.ts": "codex-integration", "native-main-claim-cache.test.ts": "codex-integration", - "native-main-claim.test.ts": "codex-integration", "native-main-owner-lifetime.test.ts": "codex-integration", - "native-model-toggle.test.ts": "codex-integration", "native-profile-api.test.ts": "codex-integration", + "model-selection-guidance.test.ts": "cli", + "model-settings-management-api.test.ts": "server", + "model-visibility-management-api.test.ts": "codex-integration", + "models-feedback-callback.test.ts": "gui", + "models-free-filter.test.ts": "gui", + "models-page-groups.test.ts": "gui", + "models-workspace-tabs.test.ts": "gui", + "moonshot-endpoints.test.ts": "providers", + "moonshot-tool-schema.test.ts": "providers", + "multi-agent-compat.test.ts": "codex-integration", + "multi-agent-keep-native-v1.test.ts": "codex-integration", + "multi-agent-origin.test.ts": "codex-integration", + "muse-passive-quota-cache.test.ts": "providers", + "muse-passive-quota-observation.test.ts": "providers", + "muse-spark-web-search-compat.test.ts": "providers", + "muse-subscription-usage.test.ts": "providers", + "muse-tool-name-alias.test.ts": "providers", + "mutation-plan.test.ts": "clients", + "namespace-tool-compat.test.ts": "responses", + "native-alias-maintainer-regressions.test.ts": "codex-integration", + "native-claude-code-toggle.test.ts": "codex-integration", + "native-claude-desktop-toggle.test.ts": "codex-integration", + "native-codex-toggle.test.ts": "codex-integration", + "native-grok-toggle.test.ts": "codex-integration", + "native-main-auth-temp.test.ts": "codex-integration", + "native-main-claim-cache.test.ts": "codex-integration", + "native-main-claim.test.ts": "codex-integration", + "native-main-owner-lifetime.test.ts": "codex-integration", + "native-model-toggle.test.ts": "codex-integration", + "native-profile-api.test.ts": "codex-integration", "native-profile-crash-boundaries.test.ts": "codex-integration", - "native-profile-drain-server.test.ts": "codex-integration", "native-profile-manager.test.ts": "codex-integration", - "native-profile-processes.test.ts": "codex-integration", "native-profile-recovery.test.ts": "codex-integration", + "native-profile-drain-server.test.ts": "codex-integration", + "native-profile-manager.test.ts": "codex-integration", + "native-profile-processes.test.ts": "codex-integration", + "native-profile-recovery.test.ts": "codex-integration", "native-profile-route-security.test.ts": "codex-integration", "native-profile-stage-lifecycle.test.ts": "codex-integration", - "native-profile-startup-release.test.ts": "codex-integration", "native-profile-startup.test.ts": "codex-integration", - "native-profile-store.test.ts": "codex-integration", "new-model-policy.test.ts": "providers", - "new-model-policy-runtime.test.ts": "providers", "nous-oauth-live.test.ts": "providers", - "nous-oauth.test.ts": "providers", "novita-provider.test.ts": "providers", - "nscale-vultr-provider.test.ts": "providers", "nvidia-nim-hardening.test.ts": "providers", - "oauth-account-attribution.test.ts": "oauth", "oauth-account-id-collision.test.ts": "oauth", - "oauth-account-quota-rank.test.ts": "oauth", "oauth-accounts-api.test.ts": "oauth", - "oauth-anthropic-identity.test.ts": "oauth", "oauth-callback-binds.test.ts": "oauth", - "oauth-callback-server.test.ts": "oauth", "oauth-device-code-contract.test.ts": "oauth", - "oauth-first-add-hint.test.ts": "gui", "oauth-health.test.ts": "oauth", - "oauth-log.test.ts": "oauth", "oauth-login-cli-browser-launch.test.ts": "oauth", - "oauth-login-cli-live-update.test.ts": "oauth", "oauth-login-open-browser.test.ts": "oauth", - "oauth-login-summary.test.ts": "oauth", "oauth-manual-code.test.ts": "oauth", - "oauth-open-browser-choice.test.ts": "oauth", "oauth-open-url-result.test.ts": "oauth", - "oauth-provider-reconcile.test.ts": "oauth", "oauth-public-surface.test.ts": "oauth", - "oauth-reauth-bind.test.ts": "oauth", "oauth-refresh-generic-lock.test.ts": "oauth", - "oauth-refresh-lock-multiprocess.test.ts": "oauth", "oauth-refresh.test.ts": "oauth", - "oauth-status-privacy.test.ts": "oauth", "oauth-store-multi.test.ts": "oauth", - "oauth-tos-warning.test.ts": "gui", "oauth-upsert-preserves-api-key.test.ts": "oauth", - "ocx-launcher-runtime.test.ts": "cli", "ocx-launcher-source.test.ts": "cli", - "ocx-run.test.ts": "cli", "ollama-native-parser.test.ts": "providers/ollama", + "native-profile-startup-release.test.ts": "codex-integration", + "native-profile-startup.test.ts": "codex-integration", + "native-profile-store.test.ts": "codex-integration", + "new-model-policy.test.ts": "providers", + "new-model-policy-runtime.test.ts": "providers", + "nous-oauth-live.test.ts": "providers", + "nous-oauth.test.ts": "providers", + "novita-provider.test.ts": "providers", + "nscale-vultr-provider.test.ts": "providers", + "nvidia-nim-hardening.test.ts": "providers", + "oauth-account-attribution.test.ts": "oauth", + "oauth-account-id-collision.test.ts": "oauth", + "oauth-account-quota-rank.test.ts": "oauth", + "oauth-accounts-api.test.ts": "oauth", + "oauth-anthropic-identity.test.ts": "oauth", + "oauth-callback-binds.test.ts": "oauth", + "oauth-callback-server.test.ts": "oauth", + "oauth-device-code-contract.test.ts": "oauth", + "oauth-first-add-hint.test.ts": "gui", + "oauth-health.test.ts": "oauth", + "oauth-log.test.ts": "oauth", + "oauth-login-cli-browser-launch.test.ts": "oauth", + "oauth-login-cli-live-update.test.ts": "oauth", + "oauth-login-open-browser.test.ts": "oauth", + "oauth-login-summary.test.ts": "oauth", + "oauth-manual-code.test.ts": "oauth", + "oauth-open-browser-choice.test.ts": "oauth", + "oauth-open-url-result.test.ts": "oauth", + "oauth-provider-reconcile.test.ts": "oauth", + "oauth-public-surface.test.ts": "oauth", + "oauth-reauth-bind.test.ts": "oauth", + "oauth-refresh-generic-lock.test.ts": "oauth", + "oauth-refresh-lock-multiprocess.test.ts": "oauth", + "oauth-refresh.test.ts": "oauth", + "oauth-status-privacy.test.ts": "oauth", + "oauth-store-multi.test.ts": "oauth", + "oauth-tos-warning.test.ts": "gui", + "oauth-upsert-preserves-api-key.test.ts": "oauth", + "ocx-launcher-runtime.test.ts": "cli", + "ocx-launcher-source.test.ts": "cli", + "ocx-run.test.ts": "cli", + "ollama-native-parser.test.ts": "providers/ollama", "ollama-native-reasoning-wire.test.ts": "providers/ollama", - "ollama-native-structured-output.test.ts": "providers/ollama", "ollama-native-v4.test.ts": "providers/ollama", - "ollama-native.test.ts": "providers/ollama", "ollama-show-enrichment-v7.test.ts": "providers/ollama", - "ollama-show-enrichment.test.ts": "providers/ollama", "ollama-show-ignore-abort.test.ts": "providers/ollama", - "omo-client.test.ts": "clients", "omp-path-contract.test.ts": "clients", - "omp-yaml-source-inline-comments.test.ts": "clients", "opaque-blob-wrapped-rejection.test.ts": "responses", - "openai-api-virtual-models.test.ts": "adapters/openai", "openai-chat-bounded-tool-names.test.ts": "adapters/openai", + "ollama-native-structured-output.test.ts": "providers/ollama", + "ollama-native-v4.test.ts": "providers/ollama", + "ollama-native.test.ts": "providers/ollama", + "ollama-show-enrichment-v7.test.ts": "providers/ollama", + "ollama-show-enrichment.test.ts": "providers/ollama", + "ollama-show-ignore-abort.test.ts": "providers/ollama", + "omo-client.test.ts": "clients", + "omp-path-contract.test.ts": "clients", + "omp-yaml-source-inline-comments.test.ts": "clients", + "opaque-blob-wrapped-rejection.test.ts": "responses", + "openai-api-virtual-models.test.ts": "adapters/openai", + "openai-chat-bounded-tool-names.test.ts": "adapters/openai", "openai-chat-dangling-toolcalls.test.ts": "adapters/openai", - "openai-chat-developer-position.test.ts": "adapters/openai", "openai-chat-eof.test.ts": "adapters/openai", - "openai-chat-hardening.test.ts": "adapters/openai", "openai-chat-image-normalization.test.ts": "adapters/openai", + "openai-chat-developer-position.test.ts": "adapters/openai", + "openai-chat-eof.test.ts": "adapters/openai", + "openai-chat-hardening.test.ts": "adapters/openai", + "openai-chat-image-normalization.test.ts": "adapters/openai", "openai-chat-inline-think-tags.test.ts": "adapters/openai", "openai-chat-invalid-tool-call-diagnostics.test.ts": "adapters/openai", - "openai-chat-model-suffix.test.ts": "adapters/openai", "openai-chat-native-policy.test.ts": "adapters/openai", - "openai-chat-parallel-stream.test.ts": "adapters/openai", "openai-chat-path-override.test.ts": "adapters/openai", + "openai-chat-model-suffix.test.ts": "adapters/openai", + "openai-chat-native-policy.test.ts": "adapters/openai", + "openai-chat-parallel-stream.test.ts": "adapters/openai", + "openai-chat-path-override.test.ts": "adapters/openai", "openai-chat-qwen38-leading-system.test.ts": "adapters/openai", "openai-chat-reasoning-wire-policy.test.ts": "adapters/openai", "openai-chat-sanitization-review-regressions.test.ts": "adapters/openai", "openai-chat-serialized-tool-call-content.test.ts": "adapters/openai", "openai-chat-serialized-tool-call-hold-bound.test.ts": "adapters/openai", "openai-chat-serialized-tool-call-think.test.ts": "adapters/openai", - "openai-chat-system-order.test.ts": "adapters/openai", "responses-chat-tool-call-content.test.ts": "responses", - "openai-chat-tool-result-images.test.ts": "adapters/openai", "openai-chat-url.test.ts": "adapters/openai", - "openai-chat-video-part.test.ts": "adapters/openai", "openai-provider-option-e2e.test.ts": "adapters/openai", + "openai-chat-system-order.test.ts": "adapters/openai", + "responses-chat-tool-call-content.test.ts": "responses", + "openai-chat-tool-result-images.test.ts": "adapters/openai", + "openai-chat-url.test.ts": "adapters/openai", + "openai-chat-video-part.test.ts": "adapters/openai", + "openai-provider-option-e2e.test.ts": "adapters/openai", "openai-provider-option-migration.test.ts": "adapters/openai", "openai-provider-option-startup.test.ts": "adapters/openai", - "openai-provider-option-tooling.test.ts": "adapters/openai", "openai-provider-option.test.ts": "adapters/openai", - "responses-forward-client-headers.test.ts": "responses", "openai-responses-passthrough.test.ts": "responses", - "openai-responses-summary-none.test.ts": "responses", "responses-forward-output-cap.test.ts": "responses", - "opencode-cli.test.ts": "providers", "opencode-free-provider.test.ts": "providers", - "opencode-go-deepseek.test.ts": "providers", "opencode-go-grok46-responses.test.ts": "providers", - "opencode-go-luna-wire.test.ts": "providers", "opencode-go-muse-context.test.ts": "providers", - "opencode-go-muse-vision.test.ts": "providers", "opencode-go-quota.test.ts": "providers", - "opencode-go-session-header.test.ts": "providers", "opencode-management-transport.test.ts": "providers", - "opencode-zen-deepseek-reasoning.test.ts": "providers", "opencode-zen-rate-limit.test.ts": "providers", - "opengateway-provider.test.ts": "providers", "opengateway-key-validation.test.ts": "providers", - "openrouter-provider-routing.test.ts": "providers", "openrouter-quota-reset-cooldown-4024.test.ts": "providers", - "opper-provider.test.ts": "providers", "tokenlab-protocols.test.ts": "providers", - "tokenlab-provider.test.ts": "providers", "optional-shutdown-hooks.test.ts": "lib", - "orca-import.test.ts": "codex-integration", "orcarouter-provider.test.ts": "providers", - "outbound-body-guard.test.ts": "server", "owned-service-home.test.ts": "server", - "package-tree-fenced-restart.test.ts": "ci-workflows", "package-tree-integrity.test.ts": "ci-workflows", - "package-tree-restart-ownership.test.ts": "ci-workflows", "package-tree-retarget.test.ts": "ci-workflows", - "parallel-tool-calls-optin.test.ts": "codex-integration", "parser-content-audio.test.ts": "responses", - "passive-route-linker.test.ts": "server", "passthrough-abort.test.ts": "responses", - "passthrough-grok-upstream-envelope-echo.test.ts": "responses", "passthrough-headers.test.ts": "responses", - "passthrough-override.test.ts": "responses", "phase100-native-parity.test.ts": "e2e-style", - "physical-send.test.ts": "adapters", "pi-path-contract.test.ts": "clients", - "pinned-http-content-coding.test.ts": "lib", "pinned-http.test.ts": "lib", - "pinned-https-get.test.ts": "images", "plaintext-v2-agent-messages-server.test.ts": "server", - "plaintext-v2-agent-messages.test.ts": "responses", "plan-video.test.ts": "videos", - "plan.test.ts": "images", "platform-dialog-guard.test.ts": "gui", - "policy-execution.test.ts": "routing", "pool-kernel-generic-sweep.test.ts": "oauth", - "port-reclaim.test.ts": "server", "ports.test.ts": "server", - "pr-readiness-reattest.test.ts": "ci-workflows", "prime-client.test.ts": "clients", - "privacy-mask-account.test.ts": "lib", "privacy-scan-asset-names.test.ts": "ci-workflows", - "privacy-scan-meta-key.test.ts": "ci-workflows", "privacy-scan-ssh-endpoint.test.ts": "ci-workflows", - "probe-lease-dispatch-wiring.test.ts": "routing", "probe-lease.test.ts": "routing", - "process-control-graceful.test.ts": "lib", "process-control.test.ts": "lib", - "process-state.test.ts": "service", "project-config-warnings.test.ts": "codex-integration", - "provider-account-quota-persistence.test.ts": "providers", "provider-account-quota-routes.test.ts": "server", - "provider-account-quota.test.ts": "providers", "provider-api-keys.test.ts": "providers", - "provider-capacity.test.ts": "providers", "provider-config-batch-management.test.ts": "providers", - "provider-config-validation.test.ts": "providers", "provider-connection-test.test.ts": "providers", - "provider-cost-overlay-config.test.ts": "providers", "provider-discovery-log-suppression.test.ts": "providers", - "provider-egress-fetch.test.ts": "responses", "provider-egress-management-validation.test.ts": "server", - "provider-egress-outbound.test.ts": "providers", "provider-egress.test.ts": "lib", - "provider-id-rewrite.test.ts": "providers", "provider-key-store.test.ts": "providers", - "provider-live-models.test.ts": "providers", "provider-model-aliases.test.ts": "providers", - "provider-model-discovery-contract.test.ts": "providers", "provider-outbound-private-network.test.ts": "providers", - "provider-outbound.test.ts": "providers", "provider-runtime-fetch.test.ts": "providers", - "provider-tls-profile.test.ts": "providers", "provider-payload.test.ts": "gui", - "provider-quota-label-sanitize.test.ts": "providers", "provider-quota-observed-marker.test.ts": "providers", - "provider-quota.test.ts": "providers", "provider-registry-parity.test.ts": "providers", - "provider-send-path-import.test.ts": "server", "provider-static-model-discovery.test.ts": "providers", - "provider-subscription-cli.test.ts": "gui", "provider-workspace-auth.test.ts": "gui", - "provider-workspace-data.test.ts": "gui", "provider-workspace-rail.test.ts": "gui", - "provider-workspace-state.test.ts": "gui", "proxy-env-macos.test.ts": "server", - "proxy-env.test.ts": "server", "proxy-liveness-package-tree-fence.test.ts": "server", - "proxy-liveness.test.ts": "server", "qoder-adapter.test.ts": "providers", - "qoder-live-models.test.ts": "providers", "qoder-scaffold-guard.test.ts": "providers", - "quota-401-recovery-runtime.test.ts": "usage", "quota-401-recovery.test.ts": "usage", - "quota-bars-rows.test.ts": "gui", "quota-reset-account-key.test.ts": "usage", - "quota-reset-core-boundary.test.ts": "usage", "quota-reset-detector.test.ts": "usage", - "quota-reset-notify-config.test.ts": "usage", "quota-reset-notify.test.ts": "usage", - "quota-reset-observation.test.ts": "usage", "quota-reset-seen-store.test.ts": "usage", - "quota-scoring.test.ts": "usage", "qwen-cloud-endpoints.test.ts": "gui", - "qwen38-preserve-reasoning.test.ts": "providers", "rate-limit-reset-credits.test.ts": "gui", - "rate-limit-retry.test.ts": "providers", "raycast-client.test.ts": "clients", - "raycast-detect.test.ts": "clients", "reasoning-effort-summary-default.test.ts": "responses", - "reasoning-effort.test.ts": "codex-integration", "reasoning-envelope.test.ts": "responses", - "reasoning-metadata.test.ts": "codex-integration", "reasoning-replay-identity.test.ts": "adapters", - "reasoning-replay-robustness.test.ts": "adapters", "reasoning-replay-scope-source.test.ts": "lib", - "redact.test.ts": "lib", "relay-eager.test.ts": "server", - "release-desktop-scripts.test.ts": "ci-workflows", "release-helper.test.ts": "ci-workflows", - "release-notes.test.ts": "ci-workflows", "release-outcome-report.test.ts": "ci-workflows", - "release-pipeline-contract.test.ts": "ci-workflows", "release-preflight.test.ts": "ci-workflows", - "release-resume-identity.test.ts": "ci-workflows", "release-version-line.test.ts": "ci-workflows", - "release-version-sources.test.ts": "ci-workflows", "remote-catalog.test.ts": "clients", - "remote-control-prototype.test.ts": "clients", "remote-workspace-activation.test.ts": "clients", - "remote-workspace-agent-wire.test.ts": "clients", "remote-workspace-app-server.integration.test.ts": "clients", - "remote-workspace-claude.integration.test.ts": "clients", "remote-workspace-cli-runtimes.test.ts": "clients", - "remote-workspace-cli.test.ts": "clients", "remote-workspace-codex-runtime.test.ts": "clients", - "remote-workspace-command-runner.test.ts": "clients", "remote-workspace-device.test.ts": "clients", - "remote-workspace-hub.test.ts": "clients", "remote-workspace-linux-confinement.test.ts": "clients", - "remote-workspace-management.test.ts": "clients", "remote-workspace-platform.test.ts": "clients", - "remote-workspace-protocol.test.ts": "clients", "remote-workspace-rpc-framing.test.ts": "clients", - "remote-workspace-secret-store.test.ts": "clients", "remote-workspace-server.test.ts": "clients", - "remote-workspace-session-binding.test.ts": "clients", "remote-workspace-sessions.test.ts": "clients", - "remote-workspace-tool-bridge.test.ts": "clients", "remote-workspace.test.ts": "clients", - "remove-tree-helper.test.ts": "lib", "replay-refusal-parity.test.ts": "server", - "repo-hygiene.test.ts": "ci-workflows", "request-decompress.test.ts": "usage", - "request-evidence.test.ts": "usage", "request-history-index.test.ts": "usage", - "request-log-attempt-identity.test.ts": "usage", "request-log-conversation.test.ts": "usage", - "request-log-estimate-cap.test.ts": "usage", "request-log-jev.test.ts": "usage", - "request-log-nonstream.test.ts": "usage", "request-log-protocol-trace.test.ts": "usage", - "request-log-served-model.test.ts": "usage", "request-log-generation-window.test.ts": "usage", - "request-log.test.ts": "usage", "request-outcome-agreement.test.ts": "usage", - "request-pacing.test.ts": "usage", "reserve-auth-context.test.ts": "codex-integration", - "reserve-availability.test.ts": "codex-integration", "reserve-catalog-lifecycle.test.ts": "codex-integration", - "reserve-catalog.test.ts": "codex-integration", "reserve-claude-policy.test.ts": "server", - "reserve-dispatch-ws.test.ts": "responses", "reserve-dispatch.test.ts": "codex-integration", - "reserve-helper-boundary.test.ts": "codex-integration", "reserve-ingress.test.ts": "server", - "reserve-passive-revocation.test.ts": "codex-integration", "reserve-quota-scope.test.ts": "codex-integration", - "resolved-model-policy-consumers.test.ts": "routing", "resolved-model-policy.test.ts": "providers", - "response-log-inspection.test.ts": "server", "response-model-identity.test.ts": "server", - "responses-4546-incident-regression.test.ts": "responses", "responses-account-change-scrub.test.ts": "responses", - "responses-account-label.test.ts": "responses", "responses-anthropic-fast-downgrade.test.ts": "responses", - "responses-azure-opaque-blob-recovery.test.ts": "responses", "responses-bare-echo-helper-fence.test.ts": "responses", + "openai-provider-option-tooling.test.ts": "adapters/openai", + "openai-provider-option.test.ts": "adapters/openai", + "responses-forward-client-headers.test.ts": "responses", + "openai-responses-passthrough.test.ts": "responses", + "openai-responses-summary-none.test.ts": "responses", + "responses-forward-output-cap.test.ts": "responses", + "opencode-cli.test.ts": "providers", + "opencode-free-provider.test.ts": "providers", + "opencode-go-deepseek.test.ts": "providers", + "opencode-go-grok46-responses.test.ts": "providers", + "opencode-go-luna-wire.test.ts": "providers", + "opencode-go-muse-context.test.ts": "providers", + "opencode-go-muse-vision.test.ts": "providers", + "opencode-go-quota.test.ts": "providers", + "opencode-go-session-header.test.ts": "providers", + "opencode-management-transport.test.ts": "providers", + "opencode-zen-deepseek-reasoning.test.ts": "providers", + "opencode-zen-rate-limit.test.ts": "providers", + "opengateway-provider.test.ts": "providers", + "opengateway-key-validation.test.ts": "providers", + "openrouter-provider-routing.test.ts": "providers", + "openrouter-quota-reset-cooldown-4024.test.ts": "providers", + "opper-provider.test.ts": "providers", + "tokenlab-protocols.test.ts": "providers", + "tokenlab-provider.test.ts": "providers", + "optional-shutdown-hooks.test.ts": "lib", + "orca-import.test.ts": "codex-integration", + "orcarouter-provider.test.ts": "providers", + "outbound-body-guard.test.ts": "server", + "owned-service-home.test.ts": "server", + "package-tree-fenced-restart.test.ts": "ci-workflows", + "package-tree-integrity.test.ts": "ci-workflows", + "package-tree-restart-ownership.test.ts": "ci-workflows", + "package-tree-retarget.test.ts": "ci-workflows", + "parallel-tool-calls-optin.test.ts": "codex-integration", + "parser-content-audio.test.ts": "responses", + "passive-route-linker.test.ts": "server", + "passthrough-abort.test.ts": "responses", + "passthrough-grok-upstream-envelope-echo.test.ts": "responses", + "passthrough-headers.test.ts": "responses", + "passthrough-override.test.ts": "responses", + "phase100-native-parity.test.ts": "e2e-style", + "physical-send.test.ts": "adapters", + "pi-path-contract.test.ts": "clients", + "pinned-http-content-coding.test.ts": "lib", + "pinned-http.test.ts": "lib", + "pinned-https-get.test.ts": "images", + "plaintext-v2-agent-messages-server.test.ts": "server", + "plaintext-v2-agent-messages.test.ts": "responses", + "plan-video.test.ts": "videos", + "plan.test.ts": "images", + "platform-dialog-guard.test.ts": "gui", + "policy-execution.test.ts": "routing", + "pool-kernel-generic-sweep.test.ts": "oauth", + "port-reclaim.test.ts": "server", + "ports.test.ts": "server", + "pr-readiness-reattest.test.ts": "ci-workflows", + "prime-client.test.ts": "clients", + "privacy-mask-account.test.ts": "lib", + "privacy-scan-asset-names.test.ts": "ci-workflows", + "privacy-scan-meta-key.test.ts": "ci-workflows", + "privacy-scan-ssh-endpoint.test.ts": "ci-workflows", + "probe-lease-dispatch-wiring.test.ts": "routing", + "probe-lease.test.ts": "routing", + "process-control-graceful.test.ts": "lib", + "process-control.test.ts": "lib", + "process-state.test.ts": "service", + "project-config-warnings.test.ts": "codex-integration", + "provider-account-quota-persistence.test.ts": "providers", + "provider-account-quota-routes.test.ts": "server", + "provider-account-quota.test.ts": "providers", + "provider-api-keys.test.ts": "providers", + "provider-capacity.test.ts": "providers", + "provider-config-batch-management.test.ts": "providers", + "provider-config-validation.test.ts": "providers", + "provider-connection-test.test.ts": "providers", + "provider-cost-overlay-config.test.ts": "providers", + "provider-discovery-log-suppression.test.ts": "providers", + "provider-egress-fetch.test.ts": "responses", + "provider-egress-management-validation.test.ts": "server", + "provider-egress-outbound.test.ts": "providers", + "provider-egress.test.ts": "lib", + "provider-id-rewrite.test.ts": "providers", + "provider-key-store.test.ts": "providers", + "provider-live-models.test.ts": "providers", + "provider-model-aliases.test.ts": "providers", + "provider-model-discovery-contract.test.ts": "providers", + "provider-outbound-private-network.test.ts": "providers", + "provider-outbound.test.ts": "providers", + "provider-runtime-fetch.test.ts": "providers", + "provider-tls-profile.test.ts": "providers", + "provider-payload.test.ts": "gui", + "provider-quota-label-sanitize.test.ts": "providers", + "provider-quota-observed-marker.test.ts": "providers", + "provider-quota.test.ts": "providers", + "provider-registry-parity.test.ts": "providers", + "provider-send-path-import.test.ts": "server", + "provider-static-model-discovery.test.ts": "providers", + "provider-subscription-cli.test.ts": "gui", + "provider-workspace-auth.test.ts": "gui", + "provider-workspace-data.test.ts": "gui", + "provider-workspace-rail.test.ts": "gui", + "provider-workspace-state.test.ts": "gui", + "proxy-env-macos.test.ts": "server", + "proxy-env.test.ts": "server", + "proxy-liveness-package-tree-fence.test.ts": "server", + "proxy-liveness.test.ts": "server", + "qoder-adapter.test.ts": "providers", + "qoder-live-models.test.ts": "providers", + "qoder-scaffold-guard.test.ts": "providers", + "quota-401-recovery-runtime.test.ts": "usage", + "quota-401-recovery.test.ts": "usage", + "quota-bars-rows.test.ts": "gui", + "quota-reset-account-key.test.ts": "usage", + "quota-reset-core-boundary.test.ts": "usage", + "quota-reset-detector.test.ts": "usage", + "quota-reset-notify-config.test.ts": "usage", + "quota-reset-notify.test.ts": "usage", + "quota-reset-observation.test.ts": "usage", + "quota-reset-seen-store.test.ts": "usage", + "quota-scoring.test.ts": "usage", + "qwen-cloud-endpoints.test.ts": "gui", + "qwen38-preserve-reasoning.test.ts": "providers", + "rate-limit-reset-credits.test.ts": "gui", + "rate-limit-retry.test.ts": "providers", + "raycast-client.test.ts": "clients", + "raycast-detect.test.ts": "clients", + "reasoning-effort-summary-default.test.ts": "responses", + "reasoning-effort.test.ts": "codex-integration", + "reasoning-envelope.test.ts": "responses", + "reasoning-metadata.test.ts": "codex-integration", + "reasoning-replay-identity.test.ts": "adapters", + "reasoning-replay-robustness.test.ts": "adapters", + "reasoning-replay-scope-source.test.ts": "lib", + "redact.test.ts": "lib", + "relay-eager.test.ts": "server", + "release-desktop-scripts.test.ts": "ci-workflows", + "release-helper.test.ts": "ci-workflows", + "release-notes.test.ts": "ci-workflows", + "release-outcome-report.test.ts": "ci-workflows", + "release-pipeline-contract.test.ts": "ci-workflows", + "release-preflight.test.ts": "ci-workflows", + "release-resume-identity.test.ts": "ci-workflows", + "release-version-line.test.ts": "ci-workflows", + "release-version-sources.test.ts": "ci-workflows", + "remote-catalog.test.ts": "clients", + "remote-control-prototype.test.ts": "clients", + "remote-workspace-activation.test.ts": "clients", + "remote-workspace-agent-wire.test.ts": "clients", + "remote-workspace-app-server.integration.test.ts": "clients", + "remote-workspace-claude.integration.test.ts": "clients", + "remote-workspace-cli-runtimes.test.ts": "clients", + "remote-workspace-cli.test.ts": "clients", + "remote-workspace-codex-runtime.test.ts": "clients", + "remote-workspace-command-runner.test.ts": "clients", + "remote-workspace-device.test.ts": "clients", + "remote-workspace-hub.test.ts": "clients", + "remote-workspace-linux-confinement.test.ts": "clients", + "remote-workspace-management.test.ts": "clients", + "remote-workspace-platform.test.ts": "clients", + "remote-workspace-protocol.test.ts": "clients", + "remote-workspace-rpc-framing.test.ts": "clients", + "remote-workspace-secret-store.test.ts": "clients", + "remote-workspace-server.test.ts": "clients", + "remote-workspace-session-binding.test.ts": "clients", + "remote-workspace-sessions.test.ts": "clients", + "remote-workspace-tool-bridge.test.ts": "clients", + "remote-workspace.test.ts": "clients", + "remove-tree-helper.test.ts": "lib", + "replay-refusal-parity.test.ts": "server", + "repo-hygiene.test.ts": "ci-workflows", + "request-decompress.test.ts": "usage", + "request-evidence.test.ts": "usage", + "request-history-index.test.ts": "usage", + "request-log-attempt-identity.test.ts": "usage", + "request-log-conversation.test.ts": "usage", + "request-log-estimate-cap.test.ts": "usage", + "request-log-jev.test.ts": "usage", + "request-log-nonstream.test.ts": "usage", + "request-log-protocol-trace.test.ts": "usage", + "request-log-served-model.test.ts": "usage", + "request-log-generation-window.test.ts": "usage", + "request-log.test.ts": "usage", + "request-outcome-agreement.test.ts": "usage", + "request-pacing.test.ts": "usage", + "reserve-auth-context.test.ts": "codex-integration", + "reserve-availability.test.ts": "codex-integration", + "reserve-catalog-lifecycle.test.ts": "codex-integration", + "reserve-catalog.test.ts": "codex-integration", + "reserve-claude-policy.test.ts": "server", + "reserve-dispatch-ws.test.ts": "responses", + "reserve-dispatch.test.ts": "codex-integration", + "reserve-helper-boundary.test.ts": "codex-integration", + "reserve-ingress.test.ts": "server", + "reserve-passive-revocation.test.ts": "codex-integration", + "reserve-quota-scope.test.ts": "codex-integration", + "resolved-model-policy-consumers.test.ts": "routing", + "resolved-model-policy.test.ts": "providers", + "response-log-inspection.test.ts": "server", + "response-model-identity.test.ts": "server", + "responses-4546-incident-regression.test.ts": "responses", + "responses-account-change-scrub.test.ts": "responses", + "responses-account-label.test.ts": "responses", + "responses-anthropic-fast-downgrade.test.ts": "responses", + "responses-azure-opaque-blob-recovery.test.ts": "responses", + "responses-bare-echo-helper-fence.test.ts": "responses", "responses-canonical-only-top-level-fields.test.ts": "responses", - "responses-chatgpt-web-replay-metadata.test.ts": "responses", "responses-code-mode-goal-helpers.test.ts": "responses", - "responses-code-mode-mcp-direct.test.ts": "responses", "local-read-response-proof.test.ts": "server", - "responses-code-mode-patch-compile.test.ts": "responses", "responses-code-mode-shell-compile.test.ts": "responses", - "responses-compact-handoff-admission.test.ts": "responses", "responses-compaction-override.test.ts": "responses", - "responses-compaction-policy-identity.test.ts": "responses", "responses-compaction-routing.test.ts": "responses", - "responses-compaction.test.ts": "responses", "responses-console-go-upload-retry.test.ts": "responses", - "responses-context-overflow.test.ts": "responses", "responses-continuation-boundaries.test.ts": "responses", - "responses-core-modules.test.ts": "responses", "responses-custom-tool-guidance.test.ts": "responses", + "responses-chatgpt-web-replay-metadata.test.ts": "responses", + "responses-code-mode-goal-helpers.test.ts": "responses", + "responses-code-mode-mcp-direct.test.ts": "responses", + "local-read-response-proof.test.ts": "server", + "responses-code-mode-patch-compile.test.ts": "responses", + "responses-code-mode-shell-compile.test.ts": "responses", + "responses-compact-handoff-admission.test.ts": "responses", + "responses-compaction-override.test.ts": "responses", + "responses-compaction-policy-identity.test.ts": "responses", + "responses-compaction-routing.test.ts": "responses", + "responses-compaction.test.ts": "responses", + "responses-console-go-upload-retry.test.ts": "responses", + "responses-context-overflow.test.ts": "responses", + "responses-continuation-boundaries.test.ts": "responses", + "responses-core-modules.test.ts": "responses", + "responses-custom-tool-guidance.test.ts": "responses", "responses-custom-tool-historical-replay.test.ts": "responses", - "responses-custom-tool-repair-dispatch.test.ts": "responses", "responses-custom-tool-repair.test.ts": "responses", + "responses-custom-tool-repair-dispatch.test.ts": "responses", + "responses-custom-tool-repair.test.ts": "responses", "responses-custom-tool-stream-consistency.test.ts": "responses", "responses-default-namespace-emit-normalize.test.ts": "responses", - "responses-fetch-helpers-boundary.test.ts": "responses", "responses-field-backfill.test.ts": "responses", - "responses-forward-dangling-call.test.ts": "responses", "responses-forward-incomplete-quota.test.ts": "responses", - "responses-forward-posit-continuation.test.ts": "responses", "responses-forward-prompt-envelope.test.ts": "responses", - "responses-freeform-wrapper-keys.test.ts": "responses", "responses-function-tool-repair.test.ts": "responses", - "responses-hosted-tool-declaration.test.ts": "responses", "responses-hosted-tool-min-spread.test.ts": "responses", - "responses-hide-raw-reasoning.test.ts": "responses", "responses-image-gen-repair.test.ts": "responses", - "responses-inbound-store-default.test.ts": "responses", "responses-item-id-repair.test.ts": "responses", - "responses-json-events.test.ts": "responses", "responses-legacy-dotted-tool-name-repair.test.ts": "responses", - "responses-muse-tool-name-alias.test.ts": "responses", "responses-muse-tool-choice.test.ts": "responses", - "responses-native-main-refresh.test.ts": "responses", "responses-opaque-blob-recovery.test.ts": "responses", - "responses-parser-agent-message.test.ts": "responses", "responses-parser-malformed-content.test.ts": "responses", - "responses-parser.test.ts": "responses", "responses-passthrough-transient-policy.test.ts": "responses", - "responses-pool-401-refresh.test.ts": "responses", "responses-pool-refresh-attribution.test.ts": "responses", - "responses-preview-main-read-fence.test.ts": "responses", "responses-reasoning-effort-downgrade.test.ts": "responses", - "responses-reasoning-summary-passthrough.test.ts": "responses", "responses-reset-replay.test.ts": "responses", - "responses-translated-reset.test.ts": "responses", "responses-routed-web-search-fields.test.ts": "responses", - "responses-self-named-namespace-scrub.test.ts": "responses", "responses-send-budget-counts.test.ts": "responses", - "responses-send-budget-errors.test.ts": "responses", "responses-memory-models.test.ts": "responses", - "responses-shadow-intercept.test.ts": "responses", "responses-show-thinking-summary.test.ts": "responses", - "responses-snapshot-repair-server.test.ts": "responses", "responses-snapshot-repair.test.ts": "responses", - "responses-sparse-terminal-tool-scope.test.ts": "responses", "responses-spend-ledger-wiring.test.ts": "responses", - "responses-spend-capacity-guard.test.ts": "responses", "responses-spill-acl-recovery.test.ts": "responses", - "responses-spill-inspection.test.ts": "responses", "responses-spill-orphan-sweep.test.ts": "responses", - "responses-spill-shutdown-clock.test.ts": "responses", "responses-state-snapshot-select.test.ts": "responses", - "responses-state-snapshot-stubs.test.ts": "responses", "responses-state-write-amplification.test.ts": "responses", - "responses-state.test.ts": "responses", "responses-stateless-dangling-call-repair.test.ts": "responses", - "responses-stream-tool-events.test.ts": "responses", "responses-terminal-repair.test.ts": "responses", - "responses-tool-conformance.test.ts": "responses", "responses-tool-groups.test.ts": "responses", - "responses-tool-search-repair.test.ts": "responses", "responses-undeclared-tool-guard.test.ts": "responses", - "responses-usage-passthrough.test.ts": "responses", "responses-xai-request-compat.test.ts": "responses", - "restore-completes-shared-teardown.test.ts": "cli", "retry-after-429.test.ts": "server", - "route-decision-trace.test.ts": "server", "route-explainability.test.ts": "cli", - "routed-agent-messages.test.ts": "adapters", "router-blocked-cross-provider.test.ts": "routing", - "router-combo-failover-classification.test.ts": "routing", "router-discarded-baseurl-warning.test.ts": "routing", - "router-template-baseurl.test.ts": "routing", "router.test.ts": "routing", - "routing-analytics.test.ts": "routing", "routing-capability-catalog.test.ts": "routing", - "routing-capability-model-matching.test.ts": "routing", "routing-compatibility-auth-identity.test.ts": "routing", - "routing-compatibility-boundaries.test.ts": "routing", "routing-compatibility-model-matching.test.ts": "routing", - "routing-compatibility.test.ts": "routing", "routing-identity-domains.test.ts": "routing", - "routing-intelligence-ui.test.ts": "gui", "routing-policy-dispatch-scope.test.ts": "routing", - "routing-policy-fallback.test.ts": "routing", "routing-policy-pool-quota.test.ts": "routing", - "routing-policy-surface-parity.test.ts": "routing", "routing-profile-editor-data.test.ts": "gui", - "routing-profile-management-editor.test.ts": "routing", "routing-profile.test.ts": "routing", - "run-turn-queue.test.ts": "adapters", "sambanova-nebius-provider.test.ts": "providers", - "selected-models.test.ts": "codex-integration", "self-launch-argv.test.ts": "lib", - "server-403-permission-e2e.test.ts": "server", "server-agent-task-recovery-replay.test.ts": "server", - "server-antigravity-verify-replay-scope.test.ts": "server", "server-auth-localhost-bind.test.ts": "server", - "server-auth-scoped-quota.test.ts": "server", "server-auth.test.ts": "server", - "server-background-lifecycle.test.ts": "server", "server-clickjacking-headers.test.ts": "server", - "server-combo-cooldown-fallback.test.ts": "server", "server-combo-failover-e2e.test.ts": "server", - "server-combo-held-response.test.ts": "server", "server-combo-reasoning-replay-eligibility.test.ts": "server", - "server-combo-zero-output-failover.test.ts": "server", "server-google-antigravity-oauth-401-replay.test.ts": "server", - "server-google-antigravity-oauth-429-budget.test.ts": "server", "server-gui-bundle-freshness.test.ts": "server", - "server-images-bodyless-content-length.test.ts": "server", "server-images-pool-admission.test.ts": "server", - "server-images.test.ts": "server", "server-key-failover-e2e.test.ts": "server", - "server-jev-combo-e2e.test.ts": "server", "server-kiro-completion-e2e.test.ts": "server", - "server-kiro-device-login.test.ts": "server", "server-kiro-oauth-401-replay.test.ts": "server", - "server-kiro-refusal-e2e.test.ts": "server", "server-live-frame-log.test.ts": "server", - "server-live-realtime-fixtures.test.ts": "server", "server-live.test.ts": "server", - "server-loopback-host-gate.test.ts": "server", "server-management-auth.test.ts": "server", - "server-opencode-go-goal-streaming.test.ts": "server", "server-rate-limit-retry-e2e.test.ts": "server", - "server-request-body-size.test.ts": "server", "server-search.test.ts": "server", - "server-startup-reconcile-resilience.test.ts": "server", "server-stop-config-hardening.test.ts": "server", - "server-xai-chat-reasoning-streaming.test.ts": "server", "server-xai-header-parity.test.ts": "server", - "server-xai-oauth-401-replay.test.ts": "server", "server-xai-responses-streaming.test.ts": "server", - "service-auth-qualified-localhost.test.ts": "service", "service-child-ownership.test.ts": "service", - "service-handled-signal-exit.test.ts": "service", "service-claim.test.ts": "service", - "service-ownership-compatibility.test.ts": "service", "service-ownership-handover.test.ts": "service", - "service-ownership-state.test.ts": "service", "service-probe-docker.test.ts": "service", - "service-secrets.test.ts": "service", "service-sqlite-home.test.ts": "service", - "service-stop-verification.test.ts": "service", "service-tier-capability.test.ts": "service", - "service-wsl-home-ownership.test.ts": "service", "service.test.ts": "service", - "service-multishell-path.test.ts": "service", "serving-runtimes.test.ts": "config", - "session-affinity.test.ts": "server", "session-lane-recall-harness.test.ts": "server", - "settings-desktop-switch-apply.test.ts": "config", "settings-fast-rows.test.ts": "config", - "settings-main-account-hard-lock.test.ts": "config", "settings-memory-models.test.ts": "config", - "settings-oauth-open-browser.test.ts": "config", "settings-startup-health-seam.test.ts": "config", - "settings-stream-mode.test.ts": "config", "setup-hooks.test.ts": "ci-workflows", - "shadow-intercept-target-lifecycle.test.ts": "responses", "shutdown-drain.test.ts": "service", - "shutdown-launcher.test.ts": "service", "sidebar-routes.test.ts": "server", - "sidebar-star-state.test.ts": "server", "sidecar-abort.test.ts": "vision", - "sidecar-auth.test.ts": "vision", "sidecar-candidates.test.ts": "vision", - "sidecar-settings-vision-controls.test.ts": "vision", "sidecar-settings-vision-filter.test.ts": "vision", - "sidecar-settings-web-search-gate.test.ts": "vision", "sidecar-settings-web-search-off.test.ts": "vision", - "sidecar-settings-web-search-stream.test.ts": "vision", "sidecar-tracker.test.ts": "vision", - "skill-ocx.test.ts": "ci-workflows", "slug-codec.test.ts": "codex-integration", - "socks5-fetch.test.ts": "lib", "socks5-upload-lifecycle.test.ts": "lib", - "spend-ceiling-enforcement.test.ts": "lib", "spend-instrumentation-log.test.ts": "server", - "spend-ledger-file-journal.test.ts": "lib", "spend-ledger-lifecycle.test.ts": "server", - "spend-ledger-owner-startup.test.ts": "server", "spend-ledger-owner.test.ts": "lib", - "spend-reservation-ledger.test.ts": "lib", "sponsor-presets.test.ts": "providers", - "sse-carriage-return.test.ts": "responses", "sse-client-frame-bounds.test.ts": "responses", - "sse-decoder.test.ts": "responses", "sse-failed-tail.test.ts": "responses", - "sse-inspector-bounds.test.ts": "responses", "sse-null-data-frame.test.ts": "responses", - "sse-payload-rewrite.test.ts": "responses", "sse-rewrite-line-endings.test.ts": "responses", - "chat-sse-framing-guard.test.ts": "responses", "sse-unspaced-data-fields.test.ts": "responses", - "stale-state-purge.test.ts": "service", "stall-subprocess-exit.test.ts": "lib", - "stall-timeout.test.ts": "lib", "standalone-build-script.test.ts": "gui", - "standalone-service.test.ts": "service", "standalone.test.ts": "lib", - "star-deferral.test.ts": "cli", "start-args.test.ts": "cli", - "start-ownership-publication.test.ts": "cli", "startup-action-control-elevation.test.ts": "server", - "startup-action-control.test.ts": "server", "startup-health-ui.test.ts": "gui", - "startup-prompt.test.ts": "server", "state-store-sweeper.test.ts": "oauth", - "stepfun-provider.test.ts": "providers", "stop-deferred-teardown.test.ts": "service", - "storage-cleanup.test.ts": "storage", "storage-mutation-race.test.ts": "storage", - "storage-policy-config-race.test.ts": "storage", "storage-policy-job-responsive.test.ts": "storage", - "storage-policy.test.ts": "storage", "storage-restore-job-errors.test.ts": "storage", - "storage-restore-job-responsive.test.ts": "storage", "storage-scanner.test.ts": "storage", - "storage-worker-lifecycle.test.ts": "storage", "storage-worker-os-join-settle.test.ts": "storage", - "storage-worker-teardown-isolate.test.ts": "storage", "stream-aborted-marker.test.ts": "server", - "strict-semver.test.ts": "lib", "structure-ssot.test.ts": "ci-workflows", - "subagent-context-staleness.test.ts": "routing", "subagent-defaults.test.ts": "routing", - "subagent-fallback-handle-responses.test.ts": "routing", "subagent-fallback-preview-sites.test.ts": "routing", - "subagent-model-fallback-api.test.ts": "routing", "subagent-model-fallback.test.ts": "routing", - "codex-agent-role-models.test.ts": "routing", "codex-role-sizing.test.ts": "routing", - "codex-role-auto-assign.test.ts": "routing", "omo-role-models.test.ts": "clients", - "lazycodex-detection.test.ts": "clients", "codex-agent-role-routes.test.ts": "server", - "codex-role-auto-assign-routes.test.ts": "server", "local-chat-completion.test.ts": "lib", - "injection-model-suggest-routes.test.ts": "codex-integration", "subagent-roster-retention.test.ts": "routing", - "sync-client-integrations.test.ts": "clients", "synced-state-location.test.ts": "lib", - "synthetic-tool.test.ts": "images", "system-env.test.ts": "server", - "system-restart-client-package-tree.test.ts": "cli", "system-restart-client.test.ts": "cli", - "system-restart-contract-security.test.ts": "lib", "system-restart.test.ts": "server", - "system-routes.test.ts": "server", "systemd-install-cleanup-hardening.test.ts": "service", - "tencent-siliconflow-providers.test.ts": "gui", "terminal-continuation-owner-rotation.test.ts": "adapters", - "terminal-guard-server.test.ts": "server", "terminal-guard.test.ts": "server", - "test-home-guard.test.ts": "ci-workflows", "test-runner.test.ts": "ci-workflows", - "test-sandbox-cleanup.test.ts": "ci-workflows", "thought-signature-credential-scope.test.ts": "responses", - "token-estimate.test.ts": "lib", "token-guardian.test.ts": "codex-integration", - "tool-argument-integers.test.ts": "adapters", "tool-catalog-nudge.test.ts": "adapters", - "tool-choice-performance.test.ts": "adapters", "transient-budget-scope-source.test.ts": "lib", - "translator-budget.test.ts": "adapters", "transport-null-body.test.ts": "lib", - "tray-proxy-deadline.test.ts": "windows", "tray-proxy.test.ts": "windows", - "types-barrel-identity.test.ts": "config", "ultrafast-tier-honesty.test.ts": "codex-integration", - "umans-provider.test.ts": "providers", "uninstall.test.ts": "cli", - "update-async-routes.test.ts": "server", "update-badge.test.ts": "update", - "update-bun-ownership-lease.test.ts": "update", "update-desktop-badge.test.ts": "update", - "update-desktop-owner.test.ts": "update", "update-job.test.ts": "update", - "update-worker-launch.test.ts": "update", "update-notify.test.ts": "update", - "update-npm-cache-preflight.test.ts": "update", "update-npm-invocation.test.ts": "update", - "update-mise-launcher-target.test.ts": "update", "update-mise.test.ts": "update", - "update-mise-node-runtime.test.ts": "update", "update-pnpm.test.ts": "update", - "update-refresh.test.ts": "update", "update-restart-lease.test.ts": "update", - "update-stop-classification.test.ts": "update", "update-stop-first.test.ts": "update", - "update-transactional-leftovers.test.ts": "update", "update-transactional.test.ts": "update", - "update-tray-handoff.test.ts": "update", "update-tree-ownership.test.ts": "update", - "upstream-connect-error.test.ts": "server", "upstream-error-message-fallback.test.ts": "lib", - "upstream-http-error.test.ts": "adapters", "upstream-http-version.test.ts": "server", - "upstream-reachability.test.ts": "codex-integration", "upstream-retry.test.ts": "lib", - "upstream-retry-zero-output.test.ts": "lib", "upstream-transient-retry.test.ts": "providers", - "url-normalization.test.ts": "config", "usage-aggregate-cache.test.ts": "usage", - "usage-anthropic-fast-pricing.test.ts": "usage", "usage-cursor-fast-pricing.test.ts": "usage", - "usage-attempt-delivery.test.ts": "usage", "usage-cost.test.ts": "usage", - "usage-debug.test.ts": "usage", "usage-failure-fingerprint.test.ts": "usage", - "usage-failure-persistence.test.ts": "usage", "usage-failure-projection.test.ts": "usage", - "usage-ledger-retention.test.ts": "usage", "usage-ledger-scanner.test.ts": "usage", - "usage-log-ws-stage.test.ts": "usage", "usage-log.test.ts": "usage", - "usage-provider-label.test.ts": "usage", "usage-shape-extraction.test.ts": "usage", - "usage-spend-cache-provenance.test.ts": "usage", "usage-summary.test.ts": "usage", - "usage-throughput.test.ts": "usage", "usage-surfaces.test.ts": "usage", - "usage-time-range.test.ts": "usage", "usage-timeline.test.ts": "usage", - "user-cost-overlay-coderabbit-regressions.test.ts": "usage", "user-cost-overlay-live-reconcile.test.ts": "usage", - "user-cost-overlay-provider-delete.test.ts": "usage", "v1-hub-state.test.ts": "server", - "v2-agent-message-failfast.test.ts": "server", "vercel-gateway-provider-routing.test.ts": "providers", - "version-line.test.ts": "ci-workflows", "vertex-catalog.test.ts": "adapters/google", - "vision-anthropic.test.ts": "vision", "vision-backend-union.test.ts": "vision", - "vision-cache.test.ts": "vision", "vision-classification-seed-repair.test.ts": "providers", - "vision-custom-row-precedence.test.ts": "vision", "vision-eligibility.test.ts": "vision", - "vision-fail-closed.test.ts": "vision", "vision-reasoning-contract.test.ts": "vision", - "vision-routed.test.ts": "vision", "vision-sidecar-e2e.test.ts": "vision", - "vision-sidecar-timeout-bounds.test.ts": "gui", "vision-text-only-predicate.test.ts": "vision", - "volcengine-ark-assistant-content.test.ts": "providers", "volcengine-providers.test.ts": "gui", - "warmup-registration.test.ts": "ci-workflows", "warmup.test.ts": "codex-integration", - "web-search-anthropic.test.ts": "web-search", "devin-web-search.test.ts": "web-search", - "web-search-recovery-kind.test.ts": "web-search", "chat-legacy-functions-combo.test.ts": "responses", - "web-search-backend-union.test.ts": "web-search", "web-search-bridge-replay.test.ts": "web-search", - "web-search-candidates.test.ts": "web-search", "web-search-parse.test.ts": "web-search", - "web-search-passthrough-bridge.test.ts": "web-search", "web-search-progress-stream.test.ts": "web-search", - "web-search-retry-heartbeat.test.ts": "web-search", "web-search-sidecar-429.test.ts": "web-search", - "web-search-sources.test.ts": "web-search", "web-search-timeout-contract.test.ts": "web-search", - "web-search-timeout-plan.test.ts": "web-search", "web-search.test.ts": "web-search", - "win-exec.test.ts": "windows", "win-paths.test.ts": "windows", + "responses-fetch-helpers-boundary.test.ts": "responses", + "responses-field-backfill.test.ts": "responses", + "responses-forward-dangling-call.test.ts": "responses", + "responses-forward-incomplete-quota.test.ts": "responses", + "responses-forward-posit-continuation.test.ts": "responses", + "responses-forward-prompt-envelope.test.ts": "responses", + "responses-freeform-wrapper-keys.test.ts": "responses", + "responses-function-tool-repair.test.ts": "responses", + "responses-hosted-tool-declaration.test.ts": "responses", + "responses-hosted-tool-min-spread.test.ts": "responses", + "responses-hide-raw-reasoning.test.ts": "responses", + "responses-image-gen-repair.test.ts": "responses", + "responses-inbound-store-default.test.ts": "responses", + "responses-item-id-repair.test.ts": "responses", + "responses-json-events.test.ts": "responses", + "responses-legacy-dotted-tool-name-repair.test.ts": "responses", + "responses-muse-tool-name-alias.test.ts": "responses", + "responses-muse-tool-choice.test.ts": "responses", + "responses-native-main-refresh.test.ts": "responses", + "responses-opaque-blob-recovery.test.ts": "responses", + "responses-parser-agent-message.test.ts": "responses", + "responses-parser-malformed-content.test.ts": "responses", + "responses-parser.test.ts": "responses", + "responses-passthrough-transient-policy.test.ts": "responses", + "responses-pool-401-refresh.test.ts": "responses", + "responses-pool-refresh-attribution.test.ts": "responses", + "responses-preview-main-read-fence.test.ts": "responses", + "responses-reasoning-effort-downgrade.test.ts": "responses", + "responses-reasoning-summary-passthrough.test.ts": "responses", + "responses-reset-replay.test.ts": "responses", + "responses-translated-reset.test.ts": "responses", + "responses-routed-web-search-fields.test.ts": "responses", + "responses-self-named-namespace-scrub.test.ts": "responses", + "responses-send-budget-counts.test.ts": "responses", + "responses-send-budget-errors.test.ts": "responses", + "responses-memory-models.test.ts": "responses", + "responses-shadow-intercept.test.ts": "responses", + "responses-show-thinking-summary.test.ts": "responses", + "responses-snapshot-repair-server.test.ts": "responses", + "responses-snapshot-repair.test.ts": "responses", + "responses-sparse-terminal-tool-scope.test.ts": "responses", + "responses-spend-ledger-wiring.test.ts": "responses", + "responses-spend-capacity-guard.test.ts": "responses", + "responses-spill-acl-recovery.test.ts": "responses", + "responses-spill-inspection.test.ts": "responses", + "responses-spill-orphan-sweep.test.ts": "responses", + "responses-spill-shutdown-clock.test.ts": "responses", + "responses-state-snapshot-select.test.ts": "responses", + "responses-state-snapshot-stubs.test.ts": "responses", + "responses-state-write-amplification.test.ts": "responses", + "responses-state.test.ts": "responses", + "responses-stateless-dangling-call-repair.test.ts": "responses", + "responses-stream-tool-events.test.ts": "responses", + "responses-terminal-repair.test.ts": "responses", + "responses-tool-conformance.test.ts": "responses", + "responses-tool-groups.test.ts": "responses", + "responses-tool-search-repair.test.ts": "responses", + "responses-undeclared-tool-guard.test.ts": "responses", + "responses-usage-passthrough.test.ts": "responses", + "responses-xai-request-compat.test.ts": "responses", + "restore-completes-shared-teardown.test.ts": "cli", + "retry-after-429.test.ts": "server", + "route-decision-trace.test.ts": "server", + "route-explainability.test.ts": "cli", + "routed-agent-messages.test.ts": "adapters", + "router-blocked-cross-provider.test.ts": "routing", + "router-combo-failover-classification.test.ts": "routing", + "router-discarded-baseurl-warning.test.ts": "routing", + "router-template-baseurl.test.ts": "routing", + "router.test.ts": "routing", + "routing-analytics.test.ts": "routing", + "routing-capability-catalog.test.ts": "routing", + "routing-capability-model-matching.test.ts": "routing", + "routing-compatibility-auth-identity.test.ts": "routing", + "routing-compatibility-boundaries.test.ts": "routing", + "routing-compatibility-model-matching.test.ts": "routing", + "routing-compatibility.test.ts": "routing", + "routing-identity-domains.test.ts": "routing", + "routing-intelligence-ui.test.ts": "gui", + "routing-policy-dispatch-scope.test.ts": "routing", + "routing-policy-fallback.test.ts": "routing", + "routing-policy-pool-quota.test.ts": "routing", + "routing-policy-surface-parity.test.ts": "routing", + "routing-profile-editor-data.test.ts": "gui", + "routing-profile-management-editor.test.ts": "routing", + "routing-profile.test.ts": "routing", + "run-turn-queue.test.ts": "adapters", + "sambanova-nebius-provider.test.ts": "providers", + "selected-models.test.ts": "codex-integration", + "self-launch-argv.test.ts": "lib", + "server-403-permission-e2e.test.ts": "server", + "server-agent-task-recovery-replay.test.ts": "server", + "server-antigravity-verify-replay-scope.test.ts": "server", + "server-auth-localhost-bind.test.ts": "server", + "server-auth-scoped-quota.test.ts": "server", + "server-auth.test.ts": "server", + "server-background-lifecycle.test.ts": "server", + "server-clickjacking-headers.test.ts": "server", + "server-combo-cooldown-fallback.test.ts": "server", + "server-combo-failover-e2e.test.ts": "server", + "server-combo-held-response.test.ts": "server", + "server-combo-reasoning-replay-eligibility.test.ts": "server", + "server-combo-zero-output-failover.test.ts": "server", + "server-google-antigravity-oauth-401-replay.test.ts": "server", + "server-google-antigravity-oauth-429-budget.test.ts": "server", + "server-gui-bundle-freshness.test.ts": "server", + "server-images-bodyless-content-length.test.ts": "server", + "server-images-pool-admission.test.ts": "server", + "server-images.test.ts": "server", + "server-key-failover-e2e.test.ts": "server", + "server-jev-combo-e2e.test.ts": "server", + "server-kiro-completion-e2e.test.ts": "server", + "server-kiro-device-login.test.ts": "server", + "server-kiro-oauth-401-replay.test.ts": "server", + "server-kiro-refusal-e2e.test.ts": "server", + "server-live-frame-log.test.ts": "server", + "server-live-realtime-fixtures.test.ts": "server", + "server-live.test.ts": "server", + "server-loopback-host-gate.test.ts": "server", + "server-management-auth.test.ts": "server", + "server-opencode-go-goal-streaming.test.ts": "server", + "server-rate-limit-retry-e2e.test.ts": "server", + "server-request-body-size.test.ts": "server", + "server-search.test.ts": "server", + "server-startup-reconcile-resilience.test.ts": "server", + "server-stop-config-hardening.test.ts": "server", + "server-xai-chat-reasoning-streaming.test.ts": "server", + "server-xai-header-parity.test.ts": "server", + "server-xai-oauth-401-replay.test.ts": "server", + "server-xai-responses-streaming.test.ts": "server", + "service-auth-qualified-localhost.test.ts": "service", + "service-child-ownership.test.ts": "service", + "service-handled-signal-exit.test.ts": "service", + "service-claim.test.ts": "service", + "service-ownership-compatibility.test.ts": "service", + "service-ownership-handover.test.ts": "service", + "service-ownership-state.test.ts": "service", + "service-probe-docker.test.ts": "service", + "service-secrets.test.ts": "service", + "service-sqlite-home.test.ts": "service", + "service-stop-verification.test.ts": "service", + "service-tier-capability.test.ts": "service", + "service-wsl-home-ownership.test.ts": "service", + "service.test.ts": "service", + "service-multishell-path.test.ts": "service", + "serving-runtimes.test.ts": "config", + "session-affinity.test.ts": "server", + "session-lane-recall-harness.test.ts": "server", + "settings-desktop-switch-apply.test.ts": "config", + "settings-fast-rows.test.ts": "config", + "settings-main-account-hard-lock.test.ts": "config", + "settings-memory-models.test.ts": "config", + "settings-oauth-open-browser.test.ts": "config", + "settings-startup-health-seam.test.ts": "config", + "settings-stream-mode.test.ts": "config", + "setup-hooks.test.ts": "ci-workflows", + "shadow-intercept-target-lifecycle.test.ts": "responses", + "shutdown-drain.test.ts": "service", + "shutdown-launcher.test.ts": "service", + "sidebar-routes.test.ts": "server", + "sidebar-star-state.test.ts": "server", + "sidecar-abort.test.ts": "vision", + "sidecar-auth.test.ts": "vision", + "sidecar-candidates.test.ts": "vision", + "sidecar-settings-vision-controls.test.ts": "vision", + "sidecar-settings-vision-filter.test.ts": "vision", + "sidecar-settings-web-search-gate.test.ts": "vision", + "sidecar-settings-web-search-off.test.ts": "vision", + "sidecar-settings-web-search-stream.test.ts": "vision", + "sidecar-tracker.test.ts": "vision", + "skill-ocx.test.ts": "ci-workflows", + "slug-codec.test.ts": "codex-integration", + "socks5-fetch.test.ts": "lib", + "socks5-upload-lifecycle.test.ts": "lib", + "spend-ceiling-enforcement.test.ts": "lib", + "spend-instrumentation-log.test.ts": "server", + "spend-ledger-file-journal.test.ts": "lib", + "spend-ledger-lifecycle.test.ts": "server", + "spend-ledger-owner-startup.test.ts": "server", + "spend-ledger-owner.test.ts": "lib", + "spend-reservation-ledger.test.ts": "lib", + "sponsor-presets.test.ts": "providers", + "sse-carriage-return.test.ts": "responses", + "sse-client-frame-bounds.test.ts": "responses", + "sse-decoder.test.ts": "responses", + "sse-failed-tail.test.ts": "responses", + "sse-inspector-bounds.test.ts": "responses", + "sse-null-data-frame.test.ts": "responses", + "sse-payload-rewrite.test.ts": "responses", + "sse-rewrite-line-endings.test.ts": "responses", + "chat-sse-framing-guard.test.ts": "responses", + "sse-unspaced-data-fields.test.ts": "responses", + "stale-state-purge.test.ts": "service", + "stall-subprocess-exit.test.ts": "lib", + "stall-timeout.test.ts": "lib", + "standalone-build-script.test.ts": "gui", + "standalone-service.test.ts": "service", + "standalone.test.ts": "lib", + "star-deferral.test.ts": "cli", + "start-args.test.ts": "cli", + "start-ownership-publication.test.ts": "cli", + "startup-action-control-elevation.test.ts": "server", + "startup-action-control.test.ts": "server", + "startup-health-ui.test.ts": "gui", + "startup-prompt.test.ts": "server", + "state-store-sweeper.test.ts": "oauth", + "stepfun-provider.test.ts": "providers", + "stop-deferred-teardown.test.ts": "service", + "storage-cleanup.test.ts": "storage", + "storage-mutation-race.test.ts": "storage", + "storage-policy-config-race.test.ts": "storage", + "storage-policy-job-responsive.test.ts": "storage", + "storage-policy.test.ts": "storage", + "storage-restore-job-errors.test.ts": "storage", + "storage-restore-job-responsive.test.ts": "storage", + "storage-scanner.test.ts": "storage", + "storage-worker-lifecycle.test.ts": "storage", + "storage-worker-os-join-settle.test.ts": "storage", + "storage-worker-teardown-isolate.test.ts": "storage", + "stream-aborted-marker.test.ts": "server", + "strict-semver.test.ts": "lib", + "structure-ssot.test.ts": "ci-workflows", + "subagent-context-staleness.test.ts": "routing", + "subagent-defaults.test.ts": "routing", + "subagent-fallback-handle-responses.test.ts": "routing", + "subagent-fallback-preview-sites.test.ts": "routing", + "subagent-model-fallback-api.test.ts": "routing", + "subagent-model-fallback.test.ts": "routing", + "codex-agent-role-models.test.ts": "routing", + "codex-role-sizing.test.ts": "routing", + "codex-role-auto-assign.test.ts": "routing", + "omo-role-models.test.ts": "clients", + "lazycodex-detection.test.ts": "clients", + "codex-agent-role-routes.test.ts": "server", + "codex-role-auto-assign-routes.test.ts": "server", + "local-chat-completion.test.ts": "lib", + "injection-model-suggest-routes.test.ts": "codex-integration", + "subagent-roster-retention.test.ts": "routing", + "sync-client-integrations.test.ts": "clients", + "synced-state-location.test.ts": "lib", + "synthetic-tool.test.ts": "images", + "system-env.test.ts": "server", + "system-restart-client-package-tree.test.ts": "cli", + "system-restart-client.test.ts": "cli", + "system-restart-contract-security.test.ts": "lib", + "system-restart.test.ts": "server", + "system-routes.test.ts": "server", + "systemd-install-cleanup-hardening.test.ts": "service", + "tencent-siliconflow-providers.test.ts": "gui", + "terminal-continuation-owner-rotation.test.ts": "adapters", + "terminal-guard-server.test.ts": "server", + "terminal-guard.test.ts": "server", + "test-home-guard.test.ts": "ci-workflows", + "test-runner.test.ts": "ci-workflows", + "test-sandbox-cleanup.test.ts": "ci-workflows", + "thought-signature-credential-scope.test.ts": "responses", + "token-estimate.test.ts": "lib", + "token-guardian.test.ts": "codex-integration", + "tool-argument-integers.test.ts": "adapters", + "tool-catalog-nudge.test.ts": "adapters", + "tool-choice-performance.test.ts": "adapters", + "transient-budget-scope-source.test.ts": "lib", + "translator-budget.test.ts": "adapters", + "transport-null-body.test.ts": "lib", + "tray-proxy-deadline.test.ts": "windows", + "tray-proxy.test.ts": "windows", + "types-barrel-identity.test.ts": "config", + "ultrafast-tier-honesty.test.ts": "codex-integration", + "umans-provider.test.ts": "providers", + "uninstall.test.ts": "cli", + "update-async-routes.test.ts": "server", + "update-badge.test.ts": "update", + "update-bun-ownership-lease.test.ts": "update", + "update-desktop-badge.test.ts": "update", + "update-desktop-owner.test.ts": "update", + "update-job.test.ts": "update", + "update-worker-launch.test.ts": "update", + "update-notify.test.ts": "update", + "update-npm-cache-preflight.test.ts": "update", + "update-npm-invocation.test.ts": "update", + "update-mise-launcher-target.test.ts": "update", + "update-mise.test.ts": "update", + "update-mise-node-runtime.test.ts": "update", + "update-pnpm.test.ts": "update", + "update-refresh.test.ts": "update", + "update-restart-lease.test.ts": "update", + "update-stop-classification.test.ts": "update", + "update-stop-first.test.ts": "update", + "update-transactional-leftovers.test.ts": "update", + "update-transactional.test.ts": "update", + "update-tray-handoff.test.ts": "update", + "update-tree-ownership.test.ts": "update", + "upstream-connect-error.test.ts": "server", + "upstream-error-message-fallback.test.ts": "lib", + "upstream-http-error.test.ts": "adapters", + "upstream-http-version.test.ts": "server", + "upstream-reachability.test.ts": "codex-integration", + "upstream-retry.test.ts": "lib", + "upstream-retry-zero-output.test.ts": "lib", + "upstream-transient-retry.test.ts": "providers", + "url-normalization.test.ts": "config", + "usage-aggregate-cache.test.ts": "usage", + "usage-anthropic-fast-pricing.test.ts": "usage", + "usage-cursor-fast-pricing.test.ts": "usage", + "usage-attempt-delivery.test.ts": "usage", + "usage-cost.test.ts": "usage", + "usage-debug.test.ts": "usage", + "usage-failure-fingerprint.test.ts": "usage", + "usage-failure-persistence.test.ts": "usage", + "usage-failure-projection.test.ts": "usage", + "usage-ledger-retention.test.ts": "usage", + "usage-ledger-scanner.test.ts": "usage", + "usage-log-ws-stage.test.ts": "usage", + "usage-log.test.ts": "usage", + "usage-provider-label.test.ts": "usage", + "usage-shape-extraction.test.ts": "usage", + "usage-spend-cache-provenance.test.ts": "usage", + "usage-summary.test.ts": "usage", + "usage-throughput.test.ts": "usage", + "usage-surfaces.test.ts": "usage", + "usage-time-range.test.ts": "usage", + "usage-timeline.test.ts": "usage", + "user-cost-overlay-coderabbit-regressions.test.ts": "usage", + "user-cost-overlay-live-reconcile.test.ts": "usage", + "user-cost-overlay-provider-delete.test.ts": "usage", + "v1-hub-state.test.ts": "server", + "v2-agent-message-failfast.test.ts": "server", + "vercel-gateway-provider-routing.test.ts": "providers", + "version-line.test.ts": "ci-workflows", + "vertex-catalog.test.ts": "adapters/google", + "vision-anthropic.test.ts": "vision", + "vision-backend-union.test.ts": "vision", + "vision-cache.test.ts": "vision", + "vision-classification-seed-repair.test.ts": "providers", + "vision-custom-row-precedence.test.ts": "vision", + "vision-eligibility.test.ts": "vision", + "vision-fail-closed.test.ts": "vision", + "vision-reasoning-contract.test.ts": "vision", + "vision-routed.test.ts": "vision", + "vision-sidecar-e2e.test.ts": "vision", + "vision-sidecar-timeout-bounds.test.ts": "gui", + "vision-text-only-predicate.test.ts": "vision", + "volcengine-ark-assistant-content.test.ts": "providers", + "volcengine-providers.test.ts": "gui", + "warmup-registration.test.ts": "ci-workflows", + "warmup.test.ts": "codex-integration", + "web-search-anthropic.test.ts": "web-search", + "devin-web-search.test.ts": "web-search", + "web-search-recovery-kind.test.ts": "web-search", + "chat-legacy-functions-combo.test.ts": "responses", + "web-search-backend-union.test.ts": "web-search", + "web-search-bridge-replay.test.ts": "web-search", + "web-search-candidates.test.ts": "web-search", + "web-search-parse.test.ts": "web-search", + "web-search-passthrough-bridge.test.ts": "web-search", + "web-search-progress-stream.test.ts": "web-search", + "web-search-retry-heartbeat.test.ts": "web-search", + "web-search-sidecar-429.test.ts": "web-search", + "web-search-sources.test.ts": "web-search", + "web-search-timeout-contract.test.ts": "web-search", + "web-search-timeout-plan.test.ts": "web-search", + "web-search.test.ts": "web-search", + "win-exec.test.ts": "windows", + "win-paths.test.ts": "windows", "windows-acl-start-cost.test.ts": "windows", "windows-atomic-replace.test.ts": "windows", "windows-deploy-close-regressions.test.ts": "windows", @@ -1110,5 +1988,7 @@ "injection-routing-healer.test.ts": "codex-integration", "injection-routing-heal-apply.test.ts": "codex-integration", "cli-start-routing-heal-wiring.test.ts": "cli", - "cli-status-codex-routing-drift.test.ts": "cli" + "cli-status-codex-routing-drift.test.ts": "cli", + "restart-update-coordinator.test.ts": "cli", + "droid-normalized-reasoning-defaults.test.ts": "clients" }