Skip to content

chore: merge main (post-#2354/#2095/#1845) into v2-2026-07-28#2374

Open
felixweinberger wants to merge 9 commits into
v2-2026-07-28from
fweinberger/merge-main-into-integration
Open

chore: merge main (post-#2354/#2095/#1845) into v2-2026-07-28#2374
felixweinberger wants to merge 9 commits into
v2-2026-07-28from
fweinberger/merge-main-into-integration

Conversation

@felixweinberger

Copy link
Copy Markdown
Contributor

Merge main (post-#2095/#2367/#2354/#1845) into the integration branch, plus the two follow-up sweeps the merge requires.

Motivation and Context

Brings the integration branch up to date with main now that the alpha has shipped. #2354 renamed corecore-internal and made core the public schema package; #2095 switched to moduleResolution: bundler and dropped .js from relative imports. Integration's ~65 commits touch many of the same files, so this is one merge + two mechanical sweeps rather than a 65-commit replay.

How Has This Been Tested?

Full gates at 2f001e8ad (the .js-sweep tip): typecheck/lint/build, core-internal 1293/1293, core 2/2, client 697, server 350, server-legacy 168, codemod 390, all middleware, integration 348, e2e 2629+155xfail, run:examples 65/65, all conformance legs baseline-clean. The f7cf6d222 merge on top adds only CHANGELOGs + version bumps from #1845.

Breaking Changes

None beyond what #2354/#2095 already shipped on main.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added or updated documentation as needed

Additional context

Recommend merging this PR with a merge-commit (not squash) so git records that main is an ancestor of v2-2026-07-28 — otherwise git log v2-2026-07-28..main keeps listing #2095/#2354/etc. as "not in integration."

Conflict-resolution detail: logs/agent-reports/67-integration-merge.md. Five items flagged in that report:

  1. v2: codemod iterations, canonical zod schema exports from sdk-shared #2354 landed as a directory rename (auth schemas at core root, no /auth subpath); plan §2 applied with the substitution
  2. test(client): cover refresh retry after invalid token 401 #2367's test reshaped to integration's saveTokens(storedTokens, ctx) signature
  3. typedoc invalidLink:false did not land — the §2.4 concern is moot
  4. conformance client 2026-leg shows 226/0 vs 374 prior — client:all unchanged at 438/0, baseline passes; likely profile scope
  5. 8 docs/superpowers/ planning files landed verbatim from v2: codemod iterations, canonical zod schema exports from sdk-shared #2354

mattzcarey and others added 8 commits June 25, 2026 11:49
Co-authored-by: Felix Weinberger <3823880+felixweinberger@users.noreply.github.com>
#2354)

Co-authored-by: Felix Weinberger <fweinberger@anthropic.com>
Brings in #2095 (moduleResolution: bundler, .js-extension removal),
#2367 (refresh-retry test), and #2354 (packages/core → core-internal
rename; new @modelcontextprotocol/core public Zod-schema package).

Conflict resolution:
- modify/delete on docs/migration{,-SKILL}.md → kept deleted (#2360);
  #2354's content re-homed into docs/migration/upgrade-to-v2.md.
- modify/delete on examples/{client,server}/ (old layout, removed by
  #2363) and the .changeset task pair (consumed) → kept deleted.
- modify/delete on codemod expressMiddleware{,.test}.ts (removed by
  #2361) → kept deleted.
- 33 file-location conflicts (integration-added files under
  packages/core/src/{shared,types}/ + test/{shared,types}/) → accepted
  git's directory-rename suggestion (now in packages/core-internal/).
- packages/core/{src/index.ts,eslint.config.mjs} → took main's (the new
  public schema package). Integration's old-core barrel + wire-layer
  eslint rules ported into packages/core-internal/.
- 41 import-block content conflicts (client, server, middleware, e2e,
  core-internal, examples) → kept integration's import set, applied
  main's two transforms (relative .js extension stripped,
  @modelcontextprotocol/core → core-internal).
- codemod transforms/index.ts → 8 transforms; neither expressMiddleware
  (#2361) nor specSchemaAccess (#2354) remains.
- pnpm-lock.yaml → ours (regenerated in the follow-up rename commit).

Auto-merged cleanly: codemod importMap.ts (kept both #2361's 5 entries
and #2354's schemaSymbolTarget routing), specSchemaNames.ts, .changeset/,
CLAUDE.md, typedoc, publish.yml, package.json files.
…ore-internal

#2354 renamed packages/core → packages/core-internal and repurposed
packages/core/ as the public Zod-schema package. The merge applied that
rename to files main knew about; this commit follows through for the
~310 files the integration branch added/modified that #2354 never saw:

- git mv packages/core/{src/wire,test/wire,test/corpus,
  test/packageTopologyPins.test.ts} → packages/core-internal/ (218
  files; git's directory-rename detection moved the src/shared/ +
  test/{shared,types}/ additions in the merge commit but not the
  integration-only subtrees).
- 51 source/test files (client, server, middleware/node, e2e,
  integration) — `from '@modelcontextprotocol/core'` →
  `from '@modelcontextprotocol/core-internal'`.
- 29 integration-added .changeset/*.md frontmatter entries — same swap.
- examples/eslint.config.mjs + test/conformance/eslint.config.mjs —
  the no-restricted-imports ban targets core-internal now (the new
  @modelcontextprotocol/core is a public package and is allowed).
- packageTopologyPins.test.ts — pin @modelcontextprotocol/core as a
  public package (exportKeys ['.']) and pin core-internal as private.
- pnpm-lock.yaml — regenerated (artifactory-taint = 0).

Intentionally NOT swapped (these reference the new public core):
packages/codemod/**/*.ts (importMap routing target, importPaths/
mockPaths tests, generated/versions, batchTest), packages/core/**,
.changeset/{add-core-public-package,pre.json}.
…files

#2095 switched the workspace to moduleResolution: bundler and removed
the .js extension from every relative import/export it knew about. The
integration branch added/modified ~120 files since the merge-base that
#2095 never touched; this sweeps them to the same convention.

- 118 files: `from './…/x.js'` → `from './…/x'` (relative imports
  and re-exports only — package and ajv/dist deep imports unchanged).
- 4 files: dynamic `import('./…/x.js')` and inline-import type
  references — same.

Residual relative-.js count after this commit (packages/ test/
examples/, codemod fixtures excluded): 0.
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@felixweinberger felixweinberger requested a review from a team as a code owner June 25, 2026 20:18
@changeset-bot

changeset-bot Bot commented Jun 25, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 7de6b6d

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 7 packages
Name Type
@modelcontextprotocol/client Major
@modelcontextprotocol/core-internal Major
@modelcontextprotocol/server Major
@modelcontextprotocol/express Major
@modelcontextprotocol/fastify Major
@modelcontextprotocol/hono Major
@modelcontextprotocol/node Major

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

@pkg-pr-new

pkg-pr-new Bot commented Jun 25, 2026

Copy link
Copy Markdown

Open in StackBlitz

@modelcontextprotocol/client

npm i https://pkg.pr.new/@modelcontextprotocol/client@2374

@modelcontextprotocol/codemod

npm i https://pkg.pr.new/@modelcontextprotocol/codemod@2374

@modelcontextprotocol/core

npm i https://pkg.pr.new/@modelcontextprotocol/core@2374

@modelcontextprotocol/server

npm i https://pkg.pr.new/@modelcontextprotocol/server@2374

@modelcontextprotocol/server-legacy

npm i https://pkg.pr.new/@modelcontextprotocol/server-legacy@2374

@modelcontextprotocol/express

npm i https://pkg.pr.new/@modelcontextprotocol/express@2374

@modelcontextprotocol/fastify

npm i https://pkg.pr.new/@modelcontextprotocol/fastify@2374

@modelcontextprotocol/hono

npm i https://pkg.pr.new/@modelcontextprotocol/hono@2374

@modelcontextprotocol/node

npm i https://pkg.pr.new/@modelcontextprotocol/node@2374

commit: 7de6b6d

Comment thread .prettierignore
Comment thread examples/shared/package.json Outdated
Comment thread .changeset/add-core-public-package.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants