Sync: upstream v3.74.0 (Opus 5 effort-shape, GPT-5.6, canonical-id, Node 22) - #5
Draft
zephg wants to merge 90 commits into
Draft
Sync: upstream v3.74.0 (Opus 5 effort-shape, GPT-5.6, canonical-id, Node 22)#5zephg wants to merge 90 commits into
zephg wants to merge 90 commits into
Conversation
…ode-Org#807) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…o-Code-Org#808) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…-Org#876) * feat(openai): add GPT-5.6 family (sol, terra, luna) support Add the GPT-5.6 model family to both the OpenAI Codex (ChatGPT subscription) and OpenAI Native (API) providers: - gpt-5.6-sol: flagship frontier reasoning/coding model - gpt-5.6-terra: balanced everyday model - gpt-5.6-luna: fastest, most affordable family member Update the default model id for both providers to gpt-5.6-sol and update the corresponding unit test assertions. Closes Zoo-Code-Org#871 * fix(openai-codex): correct GPT-5.6 context windows to 372000 Address review feedback on PR Zoo-Code-Org#876: the GPT-5.6 model context windows in the Codex provider were set to 400000, but the OpenAI codex models.json shows context_window and max_context_window of 372000 for all three GPT-5.6 variants (sol, terra, luna). Updated accordingly.
…g#809) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…Org#810) * chore(deps): update dependency sanitize-filename to v1.6.4 * test: fix flaky change detection test by wrapping rerender with act --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Elliott de Launay <edelaunay@wealthsimple.com>
…-Org#812) * chore(deps): update dependency tree-sitter-wasms to v0.1.13 * test: add tree-sitter-dart.wasm to verified dist assets list --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Elliott de Launay <edelaunay@wealthsimple.com>
…-Org#270) Co-authored-by: Elliott de Launay <edelauna@gmail.com>
…o onDidStartTerminalShellExecution (Zoo-Code-Org#800) (Zoo-Code-Org#834) * fix(terminal): detect D marker directly to recover from lost VSCode shell-integration completion signals * fix(terminal): move execution.read() into onDidStartTerminalShellExecution to fix cold-terminal zero-chunk output loss * fix(terminal): update unit tests for read()-in-TerminalRegistry architecture * fix(terminal): fix Windows CI test timing and improve coverage * fix(terminal): address code review findings * fix(terminal): address CodeRabbit review findings
* feat(kenari): add Kenari as a first-class provider * test(kenari): cover provider registration arms and stream branches * test(kenari): flip remaining partial branches, drop dead reasoning fallback * refactor(kenari): address review feedback - Reuse the shared extractReasoningFromDelta helper in the stream handler instead of a hand-rolled reasoning_content cast, matching opencode-go; this also adds the OpenRouter-style `reasoning` fallback. New handler test covers the fallback path. - Fetcher spec: assert the surviving entry's contextWindow in the skip-invalid test so a field-mapping regression in that branch is caught, and add a parseKenariModel test that locks the context_window/max_output_tokens precedence over their aliases. - Hoist KENARI_BASE_URL into @roo-code/types so the handler baseURL and the fetcher endpoint share one source of truth.
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…g#817) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…e-Org#814) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…rg#819) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* fix(deps): update ai sdks and providers * fix(deps): bump google-auth-library to ^10.2.0 for vertex-sdk 0.19.0 compat --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Elliott de Launay <edelauna@gmail.com>
* fix(deps): update frontend and ui stack * refactor(webview-ui): replace deprecated lucide-react icon aliases --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Elliott de Launay <edelauna@gmail.com>
…-Code-Org#897) * fix(zoo-gateway): enable image attach from live vision model tags Prefer models-API vision tags over the stale hardcoded allowlist so Zoo Gateway (and Vercel AI Gateway) correctly enable image attachment for models like Claude Sonnet 4.5. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(zoo-gateway): drop unused eslint-disable that failed CI lint CI does not flag no-var on the ambient global declaration, so the disable became an unused-directive warning. Co-authored-by: Cursor <cursoragent@cursor.com> * chore(zoo-gateway): remove redundant vision-capability comments Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com>
…e-Org#820) * chore(deps): update dependency @copilotkit/aimock to v1.35.0 * fix(e2e): update fixtures for aimock v1.35.0 toolCallId breaking change --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Elliott de Launay <edelauna@gmail.com>
* chore: add weekly Discord release reminder * ci(release-reminder): add concurrency guard, failure notification, and shell hardening --------- Co-authored-by: Roomote <roomote@roomote.dev> Co-authored-by: Elliott de Launay <edelauna@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…oo-Code-Org#823) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…Org#821) * chore(deps): update dependency @dotenvx/dotenvx to v1.75.1 * chore: replace @dotenvx/dotenvx with plain dotenv --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Elliott de Launay <edelauna@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…rg#826) * chore(deps): update dependency @vscode/ripgrep to v1.18.0 * fix(cli): resolve ripgrep binary from per-platform package in build.sh --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Elliott de Launay <edelauna@gmail.com>
…-Code-Org#824) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update dependency csstype to v3.2.3 * fix(e2e): wait for reopened parent before draining stack in delegation test --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Elliott de Launay <edelauna@gmail.com>
…#825) * chore(deps): update dependency @trpc/client to v11.18.0 * chore(deps): bump @trpc/server to v11.18.0 to satisfy @trpc/client peer dep * fix(webview): remove ineffective memo wrapper on SettingsView --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Elliott de Launay <edelauna@gmail.com>
…de-Org#867) Add grok-4.5 model definition with 500K context window, .00/.00 input/output pricing, /bin/sh.50 cache pricing, and configurable reasoning (low/medium/high, default high). Update xaiDefaultModelId from grok-4.20 to grok-4.5 as the new flagship model. Fix a latent bug in the xAI handler where reasoning effort was sent in Chat Completions format (reasoning: { reasoning_effort }) instead of the Responses API format (reasoning: { effort }). This affected grok-3-mini and would have broken grok-4.5's configurable reasoning. Update tests to cover the reasoning format fix and add grok-4.5 reasoning support tests. Update e2e test primary model to grok-4.5. Fixes Zoo-Code-Org#866
Zoo-Code-Org#968) The Architect mode custom instructions ended with 'put it in the /plans directory', which models interpreted as an absolute filesystem path, causing 'EROFS: read-only file system, mkdir /plans' when saving plan files. Reword to './plans' and clarify it is relative to the workspace root. Fixes Zoo-Code-Org#965 Co-authored-by: Toray Altas <6816042+taltas@users.noreply.github.com>
…o-Code-Org#1014) * feat(TaskRegistry): introduce TaskRegistry and migrate clineStack * refactor(tests): replace `as any` casts with bracket notation for private member access * chore(eslint): enforce no-explicit-any with bulk suppressions for existing violations * docs(TaskRegistry): push method * fixup! chore(eslint): enforce no-explicit-any with bulk suppressions for existing violations
…Code-Org#986) * chore(deps): update dependency shell-quote to v1.9.0 [security] * chore(deps): remove obsolete shell-quote types --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Elliott de Launay <edelauna@gmail.com>
…#526) * test(webview): add visual regression harness * fix(webview): resolve relative compose path & font race in visual tests * test(webview): configure Codecov JSDOM coverage ratcheting * feat(webview): add Playwright CT coverage ratcheting * fix(webview): swap visual regression target off deprecated toolkit * chore(webview): address CodeRabbit review feedback * fix(webview): emit Playwright CT coverage LCOV * fix(webview): address code review feedback for Playwright CT harness * docs: prefer committed visual snapshots; split videos into their own lane * revert(RooHero): removing on hover test - can't make it deterministic
* refactor(api): use canonical provider identifiers * test(api): cover canonical provider routing * test(api): enforce exhaustive provider routing * test(api): avoid concrete Vertex model IDs
…de-Org#991) * refactor(types): use canonical identifiers for default models * test(types): cover international ZAI default * refactor(types): name absent provider default * test(types): cover defaults preserved during rebase * test(types): document identical Zai defaults
…de-Org#1020) * refactor(api): use canonical model cache provider identifiers * test(api): address model cache review feedback * refactor(api): retain auth-scoped provider set --------- Co-authored-by: edelauna <54631123+edelauna@users.noreply.github.com>
…e-Org#1019) * refactor(shared): use canonical profile provider identifiers * test(shared): strengthen profile validator coverage * test(shared): avoid mutating provider identifiers * chore(lint): prune profile validator suppressions
* refactor(core): use canonical provider identifiers * test(core): tighten canonical provider coverage * test(core): avoid mutating provider identifiers * test(core): address canonical identifier review feedback * chore(lint): update test suppression counts * test(core): keep existing non-null assertions
…oo-Code-Org#1024) (Zoo-Code-Org#1032) * fix(ripgrep): resolve platform-specific binary for @vscode/ripgrep >=1.18 * fix(environment): gracefully handle ripgrep not found during file listing * fix(ripgrep): use npm_config_arch for platform-package resolution * refactor(ripgrep): replace createRequire resolver with static candidate paths * fix(ripgrep): evaluate npm_config_arch at call time in candidate paths --------- Co-authored-by: Naved Merchant <naved.merchant@gmail.com>
…de-Org#950) * chore(lint): add core/webview to no-floating-promises ratchet * fix(webview): catch indexing errors and cover changed handler paths * chore(lint): triage new core/webview call sites after merging main Also restore README.md to the upstream version, dropping an unintended formatter artifact picked up during the merge commit. --------- Co-authored-by: edelauna <54631123+edelauna@users.noreply.github.com>
…Zoo-Code-Org#971) * fix(branding): replace remaining user-facing "Roo" strings with "Zoo" Replace user-facing product references from "Roo" to "Zoo": - Webview panel and editor tab titles - Integrated terminal names - Diff view labels - VS Code LM authorization justification - LM Studio error messages - Missing-parameter tool error (now i18n-keyed via tools:missingToolParameter[WithPath] across all 16 locales) - Webview-ui localization strings (chat, settings, prompts across all locales) Per review feedback, references to the external Roo provider/router remain untouched: the routerRemoval messages, errors.roo/info.roo i18n keys, Roo credit-balance notices, and other internal identifiers that reference the legacy Roo provider rather than our brand. * test: bump coverage for Roo-to-Zoo user-facing string changes (Zoo-Code-Org#971) * chore: simplify i18n mocking in Task.spec.ts * test: increase coverage of vscode-lm.ts and vscode-lm-format.ts * fix(types): eliminate any casts in vscode-lm provider and format transform --------- Co-authored-by: Roomote <roomote@roomote.dev> Co-authored-by: Elliott de Launay <edelauna@gmail.com>
… emit output (Zoo-Code-Org#1043) * fix(terminal): delay command_output ask for short foreground commands The command_output ask fired on the first output chunk of any foreground command, prompting users even for commands about to complete. Schedule the ask instead so it only fires when the command is still running after a 5s delay, preserving the interrupt/feedback path for long-running commands while letting short commands finish without prompting. Closes Zoo-Code-Org#1042 * fix(terminal): anchor command_output ask delay to execution start Anchor the ask-delay timer to onShellExecutionStarted (falling back to the pre-runCommand timestamp) so shell-integration startup on cold terminals does not consume the grace period, and expand ask-policy tests to cover the agent-timeout cancel, re-anchor reschedule, ask error handling, and non-message responses to restore patch coverage. * test(terminal): cover fallback anchor for command_output ask delay * fix(terminal): clean up pending command_output ask on completion - Supersede a still-pending command_output ask in onCompleted so it resolves immediately instead of lingering until the next interactive message, and clear the Proceed/Kill controls in the webview when the final non-partial command_output say arrives. - Continue the process for any ask answer, not just typed messages, so a non-message response actually backgrounds the command and the tool resolves before the process completes. - Strengthen ask-policy tests: assert the rescheduled ask still fires at the re-anchored deadline, assert early resolution for non-message answers, and cover ask supersession on completion. * test(terminal): note synthetic yesButtonClicked in non-message ask test --------- Co-authored-by: Roomote <roomote@roomote.dev>
…, Story 3.1) (Zoo-Code-Org#1031) * feat(TaskScheduler): introduce TaskScheduler and wire into ClineProvider * feat(Task): keep track of active running task * docs(eslint): updating guidance on how to handle suppression file * fix(ClineProvider): route createTaskWithHistoryItem through taskScheduler * test(e2e): add scheduler regression tests for task resume paths * refactor(ClineProvider): extract scheduleTask helper to deduplicate fire-and-forget scheduling * refactor(ClineProvider): extract scheduleTask helper to deduplicate fire-and-forget scheduling --------- Co-authored-by: Naved Merchant <naved.merchant@gmail.com>
…oo-Code-Org#1045) * ci: harden E2E workflow against VS Code binary download failures Add restore-keys fallback to the VS Code test binary cache, probe the VS Code update API before running tests, fall back to a stale cached binary (via VSCODE_VERSION) when the CDN is unreachable, and retry the mocked E2E step so transient network blips don't fail the merge queue. Skip writing the pass marker when the stale-binary fallback was used. Closes Zoo-Code-Org#1044 * ci: scope E2E retries to binary download, probe CDN endpoint, prune stale binaries Address review feedback on Zoo-Code-Org#1045: - Retry only the VS Code binary download (its own step), so genuine test failures fail fast instead of re-running the whole suite. - Probe the archive CDN endpoint (via the 302-redirect HEAD) in addition to the update API, so the stale-binary fallback also engages when only the CDN host is down. - Restore/save the binary cache with restore+save actions and prune older vscode-linux-x64-* dirs so each saved entry keeps one binary instead of growing with every version bump; skip the save when the stale fallback was used. - Emit a ::warning:: when endpoints are unreachable with no cached binary, and echo why the pass marker is skipped on fallback runs. --------- Co-authored-by: Roomote <roomote@roomote.dev> Co-authored-by: edelauna <54631123+edelauna@users.noreply.github.com>
) * refactor(webview): use canonical provider identifiers * test(webview): remove brittle identifier mutation tests * fix(webview): handle remaining model providers explicitly * test(webview): avoid unreachable coverage branch * refactor(webview): use canonical anthropic identifier * test(webview): cover Anthropic Opus 1M tier * test(webview): use canonical Anthropic identifier * fix(webview): address canonical provider review * test(webview): use canonical provider identifiers * test(webview): cover Kimi Code model selection
* refactor: finish canonical provider identifier audit * fix: address provider identifier review feedback * refactor: centralize Anthropic protocol value * refactor: reuse canonical provider protocol constants * refactor: centralize OpenAI protocol value * test: use canonical keyless provider identifiers * test: address protocol routing review feedback
* refactor(api): centralize service-tier primitives * test(openai-native): cover omitted completion tiers * test(openai-native): cover resolved streaming tiers * test(api): cover service tier fallbacks * test(api): cover remaining service tier branches * refactor(api): remove duplicate tier capture * test(openai-native): cover flex service tier * test(openai-native): expand service tier coverage * refactor: address service tier review feedback * refactor(api): address service tier review feedback * test(webview): add model info visual snapshot * fix(webview): isolate visual test dependencies * test(webview): update service tier visual baseline * fix(webview): add @source directive so Tailwind utilities generate in CT builds --------- Co-authored-by: Elliott de Launay <edelauna@gmail.com>
…#1063) * feat(openai-codex): persist and send Fast priority mode * refactor(openai-codex): align service tier types
…rom the previous test (Zoo-Code-Org#1074) * test(e2e): drain delayed mock stream deterministically in subtask suite The API-hang subtask fixture used aimock's flat latency, which applies per SSE chunk and is never interrupted by client disconnects, so a cancelled delayed stream stayed pending server-side for chunks x latency and could flush into the next test's traffic. - delay only the first chunk via streamingProfile.ttft so the pending window is exactly the shared SUBTASK_API_HANG_RESPONSE_LATENCY_MS - anchor the post-test drain to the request's aimock journal timestamp and wait out only the remainder of that bounded window * docs(e2e): clarify subtask drain invariants from code review --------- Co-authored-by: Roomote <roomote@roomote.dev> Co-authored-by: Elliott de Launay <edelauna@gmail.com>
…decisions (Zoo-Code-Org#1053) * fix(router-provider): fetch model metadata before context management decisions Router providers (zoo-gateway, kimi-code) that are auth-scoped skip the model cache entirely. On a fresh handler instance getModel() falls back to hardcoded defaults (e.g. 200k context window) because the real model list has not been fetched yet. Context management runs before createMessage() which is where fetchModel() normally happens, so condensing/truncation decisions use the wrong context window. Add ensureModelFetched() to RouterProvider that fetches once when the instance model map is empty. Call it in Task before context management so getModel() returns accurate metadata from the API. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(router-provider): single-flight ensureModelFetched and earlier call site Make ensureModelFetched single-flight so concurrent callers share a single in-flight fetch instead of firing duplicates. Move the call site before the cachedStreamingModel snapshot so the model info is accurate from the start of the streaming session, not just for context management. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(router-provider): address review feedback on fetch failures and double-fetch Make fetchModel single-flight and short-circuit once models are loaded so auth-scoped providers do not hit the models endpoint twice per request. Catch ensureModelFetched failures in Task via safeEnsureModelFetched so a metadata fetch error falls back to defaults instead of ending the task. Add reject-then-recover coverage and Task tests for the new call sites. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(test): spy private addToApiConversationHistory via TaskTestAccess vi.spyOn on the private method fails check-types; route it through the existing test access cast like the other private helpers. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com>
Sync from fork-point 13c803b (v3.68.0 line) — 87 upstream commits, 447 files. Conflict surface: 6 code files + release mechanics (CHANGELOG/README/i18n/version). Upstream highlights absorbed: Claude Opus 5, GPT-5.6 Fast priority mode, Moonshot / Kimi Code / Kenari providers, Grok 4.5, Gemini 3.6 Flash, MiniMax-M3, the canonical provider-identifier migration, centralized API service-tier types, the Node 22.23.1 toolchain, @vscode/ripgrep 1.18 layout, and the TaskRegistry / semaphore scheduler. Fork features preserved (per FORK.md): - Anthropic/Vertex effort-shape registries (Opus 4.6/4.7/4.8, Sonnet 5, Fable 5): supportsReasoningEffort, no supportsReasoningBudget; the keystone getAnthropicReasoning adaptive / output_config.effort branch is intact. - GPT-5.6 sol/terra/luna fork values (Luna 1.05M contextWindow + longContextPricing + effort defaults + descriptions; upstream cacheWrites/tiers via ae3547c) + gpt-5.5-pro. - openai-native default -> openAiNativeDefaultModelId, re-expressed onto the new providerIdentifiers.openaiNative canonical case (dropped upstream's TODO(Zoo-Code-Org#992) gpt-4o). - Adopted the new upstream exports ANTHROPIC_API_PROTOCOL / OPENAI_API_PROTOCOL. - Code-index workspace-scope wiring (config-resolver / dotfile-loader) survived auto-merge. New this sync — Claude Opus 5 on the fork effort-shape (Sonnet-5 precedent; upstream ships it budget/binary, but it 400s on budget_tokens): converted across anthropic.ts, vertex.ts, and the openrouter/requesty fetchers. Bedrock is unchanged (shared guard already covers opus-5). Opus 5 spec assertions are updated in a follow-up commit. Caveats carried forward: Luna 1.05M vs upstream 400K contextWindow is still unverified against OpenAI docs; Vertex Opus 4.7/4.6 remain budget-shape (known fd93c5b follow-up).
Upstream wired claude-opus-5 in budget/binary shape across the Anthropic, Vertex, OpenRouter, and Requesty spec suites. The fork adopts Opus 5 on the effort/adaptive shape (Sonnet-5 precedent), so mirror the existing opus-4-8 / sonnet-5 / fable-5 assertions: supportsReasoningEffort + no budget/binary, max_tokens at the model ceiling (128k) not the budget default, and the effort/adaptive thinking envelope. Also flips the Requesty provider getModels mock entry to the effort shape. 7 provider spec files, 241 tests pass.
Add the v3.74.0 sync-log entry (merge-base 13c803b, 87 commits / 447 files, 6-file conflict surface) and the decisions: Opus 5 adopted on the fork effort-shape (Sonnet-5 precedent), GPT-5.6 resolved per the pre-baked Feature 2 recipe, the canonical provider-identifier migration (only providers/index.ts conflicted), the new ANTHROPIC_API_PROTOCOL / OPENAI_API_PROTOCOL exports, service-tier centralization (a non-event for the fork), and the Node 20.20.2 -> 22.23.1 toolchain bump. Mark Opus 5 + Sonnet 5 as effort-shape in the divergence table.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Sync: upstream v3.74.0 →
local/daily-driverMerges upstream tag v3.74.0 (fork-point
13c803b7d, the v3.68.0 line) — 87 upstream commits, 447 files. Resolved perFORK.md; fork features preserved and verified.What v3.74.0 brings (3 releases: 3.70 → 3.72 → 3.74)
@vscode/ripgrep1.18 layout, Playwright visual-regression harness, Roo→Zoo branding.engines+.nvmrc; pnpm stays 10.8.1).Conflict surface (6 code files + release mechanics)
providers/{anthropic,index,openai}.ts,api/providers/anthropic.ts,ClineProvider.ts,src/package.json— plus CHANGELOG / README / 18 i18nchat.json/ 18 READMEs (mechanical, upstream block). Everything else auto-merged; the invariant gate confirmed no fork logic was silently reverted.Fork decisions applied
budget_tokens) — the Sonnet-5 precedent. Converted across the Anthropic + Vertex registries and the OpenRouter + Requesty fetchers; Bedrock unchanged (sharedisAdaptiveThinkingModelguard already matchesopus-5). Default efforthigh(tunable;xhighin the array).FORK.mdrecipe: kept the fork's Luna 1.05McontextWindow+longContextPricing+ effort defaults (solhigh, lunalow) + descriptions +gpt-5.5-pro; took upstream's cacheWrites/tiers (already reconciled inae3547c1d).providers/index.tsconflicted — re-expressed theopenai-nativedefault ontoproviderIdentifiers.openaiNative(dropped upstream'sTODO(#992)"gpt-4o"fallback).ANTHROPIC_API_PROTOCOL/OPENAI_API_PROTOCOL(imported byprovider-settings.ts).model.ts;applyLongContextPricingincost.ts, both untouched).Verification (Node 22.23.1)
@roo-code/types+zoo-codecheck-types: clean.pnpm build: green (4/4 packages, webview included).pnpm vsix --force: packagedzoo-code-3.74.0.vsix(version correctly inlined).srcsuite: the only failures are the documented baseline — reasoning.spec (14) + model-params.spec (8) = exactly 22 fixture-drift failures (fromfd93c5bde, unchanged and stable across the Node bump) + the tree-sitter / dist_assets asset false-alarms. No merge regressions.Caveats carried forward
fd93c5bdefollow-up — do not "fix" here).high— flip toxhighif you want it as the flagship default.Commits: merge +
test(providers): assert Opus 5 effort-shape+docs(fork): record the v3.74.0 sync.