refactor: remove legacy API compatibility paths - #810
Merged
Merged
Conversation
🦋 Changeset detectedLatest commit: 89feb0f The changes in this PR will be included in the next version bump. This PR includes changesets to release 4 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
commit: |
AB5000 rejected examples/mcp-app (and the same duplicate landed in hooks-and-scripts / skills-starter) after the plugin.version migration.
# Conflicts: # packages/agent-bundle/tests/generated-route-server.test.ts # packages/agent-bundle/tests/route-caller-input-types.test.ts # packages/agent-bundle/tests/workbench-surface-dev-server.test.ts # website/docs/en/guide/distribution/installation.mdx # website/docs/zh/guide/distribution/installation.mdx
# Conflicts: # docs/diagnostics.md # docs/entry-conventions.md # packages/rsc-runtime/README.md # website/docs/en/guide/authoring/mcp.mdx # website/docs/en/guide/distribution/installation.mdx # website/docs/zh/guide/authoring/mcp.mdx # website/docs/zh/guide/distribution/installation.mdx
This was referenced Sep 25, 2026
Merged
This was referenced Sep 25, 2026
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.
Summary
Remove deprecated compatibility APIs after migrating every in-repository caller. Package versions now come only from
package.json, generated MCP tools use directdefineTool(...)definitions, and runtime consumers use Agent Documents/projectors instead of the removed JSX lowerers.Removal matrix
plugin.versionpackage.json.versionin examples, fixtures, benchmarks, Workbench tests, integration tests, and packed consumersAB4008;AB4001now rejects the retired key so un-typechecked configs cannot silently ignore it;resolvePluginVersiondeletedexport default defineTool({ inputSchema, resultSchema, ... }, handler)definitionsconfig/execute/rendersplit contract--forcealias--replacefor installationagent-bundle install <host> --forceand standalone installer install-mode aliasServedAppServedMcpAppisTtycallbacksterminalor process probingRunGeneratedCliOptions.isTtyandRunGeneratedRenderedScriptOptions.isTtyAB4827now names the route-relative pathagent()Hook,Mcp,lowerHookResult,NativePostToolUseOutput,lowerMcpResult,createRscRequestContext,RscRequestContextAgentDocumentSnapshotAgentDocumentMcpAppHostProfile,PlaygroundStore,McpConfigDownload, Workbench feature aggregate andProjectClient.connect(..., onEvent)Kept with justification
--force: required to safely inspect, upgrade, or remove on-disk installs without deleting foreign data.AB4001as a retired-key error only: config loading does not runtsc, so this guard prevents a lingeringplugin.versionfrom being silently ignored; it does not restore authored-version behavior.Merge with main (after #808 and #818–#829)
#808 migrated the consumer side (examples) and explicitly left these framework removals to this PR, so nothing here is superseded.
generated-route-server.test.ts(ported feat: filter MCP tool inventory by negotiated client #820'sexcludeClients: ['codex']from the removed splitconfigexport into thedefineTool({...})metadata, which reachesroute.configunchanged), en/zhinstallation.mdx(kept fix(install): hash install.mjs destinations from files present #818'sinstall.mjshashing prose, dropped the removed install--forcealias), and test import unions inroute-caller-input-types.test.ts/workbench-surface-dev-server.test.ts(test: canonical removeTree helper and a lint gate on bare recursive rm #823removeTree).api.test.tsandeval-harness.test.tsauthoredplugin.version; moved the version topackage.json.Independent review
GPT-5.6 Sol
change-risk-reviewerongit diff origin/main...HEADafter the merge: no blocking findings.docs/framework-mode.mdstill taught the removed split tool contract; examples now usedefineTool(...).rsc-markdown-streaminstallDispatcherkept a React <=18ReactCurrentDispatcherbranch; it now uses React 19Honly.excludeClientsport, the docs resolutions, the fixture migrations, and the singleminorchangeset. Follow-up review of the fix commit found no new material findings.Earlier Fable review (pre-merge): the
AB4001retired-key guard and theInstallBundleOptions.replaceJSDoc fixes were made; the optional multi-server recipe was left out.Verification
Tip
ee1d48595b, which contains currentorigin/main(b0b131bbf7):pnpm build,pnpm typecheck,pnpm lint: passpnpm test:unit: pass (309 files; 4,477 tests, 4,471 passed, 6 skipped)pnpm test:integration(whole pool): pass (104 files; 1,187 tests, 1,183 passed, 4 skipped)pnpm check:release:ci(packed pool): pass (16 files; 47 tests, 46 passed, 1 skipped)pnpm docs:site:build: pass (0 locale drift, diagnostics coverage complete, 0 broken links across 30,539 anchors)rsc-markdown-streamtests: passRoot verification verdict: PASS+NOTES on the merged commit
18a913e9d8This PR merged at 01:58Z from head
89feb0fd9b, before the root reissued its verdict. The earlier verdict at6fa35efa4awas ISSUES with three fix-before-merge items. All three are fixed onmain:.changeset/remove-legacy-apis.mdnow names thedefineTooldefault-export rule andAB4810, the five removed@agent-bundle/runtimetypes, the droppedAgentBundlePluginConfigindex signature, and theinstall.mjs --forceexit.rsc-markdown-streamis now apatch.docs/diagnostics.mdcarries anAB4008 | retiredrow.Outside
.changeset/anddocs/diagnostics.md, the PR's patch onmain(dd322cb647..18a913e9d8) is line-identical to the verified6fa35efa4apatch. The PR does not touchpnpm-lock.yaml. So the earlier gate and live results carry over.6fa35efa4a, carried over6fa35efa4a, carried overinstall --forcefails with a named diagnostic.install --forcefails with a generic unknown-option error.6fa35efa4a, carried overmain18a913e9d8, which also contains #815, #837, and #838build,typecheck,lint,test:unit(4475 passed), the whole integration pool (1183 passed), anddocs:site:build(0 broken links). No semantic conflict with the PRs that landed underneath.Still open, follow-up material:
agent-bundle install <host> --forceprints onlyerror: unknown option '--force'. The changeset tells upgraders to use--replace, but the CLI message does not.Final merge with main and gate (head
89feb0fd9b)Merged
origin/maindd322cb647(#837, #838, #830, #815) cleanly; no conflicts.Local gate on merge
398e76ca9f(later commits change onlydocs/diagnostics.mdand the changeset):pnpm install --frozen-lockfile,pnpm build,pnpm typecheck,pnpm lint: passpnpm test:unit: pass (4,475 passed, 6 skipped)emitted-artifact-effect-surface,generated-route-server,route-invocation-dev-server,notices-sqlite-cross-process,state-packaging,state-sqlite-cross-process,mcp-app-preview-browser): pass (42/42)examples/rsc-agent-runtimepnpm check(validate, build, typecheck, tests, route tests): pass (170 + 3)pnpm docs:site:build: pass (0 broken links across 30,539 anchors)check-diagnostics-coverage(all codes documented),check-locale-drift(0),diagnostics-doc-targetstest,changeset status: passRoot verdict items resolved:
defineTooldefault-export requirement andAB4810, the removed runtimeMcp*PropsandRscRequestContexttypes, the droppedAgentBundlePluginConfigindex signature,install.mjs --forceexiting 2, andAB4827.rsc-markdown-streamis nowpatch(no export removed;reactpeer was already^19).docs/diagnostics.mdkeepsAB4008as aretiredrow.--forcehint: not added; the owner rule for this PR is no leftover compatibility path for the removed alias.Independent review (Claude Opus 5.5
change-risk-reviewer, whole PR plus merges): no material risks; its two optional findings (AB4008 retired row, name AB4827) are fixed above.