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

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .changeset/refresh-scaffold-consumers.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
"create-agent-bundle": patch
---

Update the `minimal`, `mcp-server`, and `cli-tool` templates to `@types/node` 26.5.1, update the routed templates to React 19.3.0, and move the `mcp-server` template to `@types/react` 19.3.0 while preserving the `zod` 4.5.4 runtime peer floor. (#808)
Update the `minimal`, `mcp-server`, and `cli-tool` templates to `@types/node` 26.5.1, update the routed templates to React 19.3.0, and move the `mcp-server` template to `@types/react` 19.3.0. (#808)
7 changes: 7 additions & 0 deletions .changeset/zod-4-6-4-floor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@agent-bundle/runtime": minor
"agent-bundle": patch
"create-agent-bundle": patch
---

Raise the `@agent-bundle/runtime` `zod` peer floor from `^4.5.4` to `^4.6.4`: projects on `zod@4.5.x` or earlier must upgrade their direct `zod` dependency before installing the runtime, or npm rejects the required peer with `ERESOLVE`. `agent-bundle` now compiles its bundled schemas with `zod` 4.6.4, and the `cli-tool` and `mcp-server` scaffold templates pin `zod@4.6.4` to satisfy the new peer. (#842)
2 changes: 1 addition & 1 deletion examples/audiobook-curator/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,6 @@
"@types/react": "19.3.0",
"agent-bundle": "workspace:*",
"react": "19.3.0",
"zod": "4.5.4"
"zod": "4.6.4"
}
}
2 changes: 1 addition & 1 deletion examples/host-test/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,6 @@
"@types/react": "19.3.0",
"agent-bundle": "workspace:*",
"react": "19.3.0",
"zod": "4.5.4"
"zod": "4.6.4"
}
}
2 changes: 1 addition & 1 deletion examples/mcp-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@
"agent-bundle": "workspace:*",
"playwright": "1.63.0",
"react": "19.3.0",
"zod": "4.5.4"
"zod": "4.6.4"
}
}
2 changes: 1 addition & 1 deletion examples/rsc-agent-runtime/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
"react": "19.3.0",
"react-dom": "19.3.0",
"react-server-dom-rspack": "0.1.0",
"zod": "4.5.4"
"zod": "4.6.4"
},
"devDependencies": {
"@rsbuild/core": "2.2.5",
Expand Down
2 changes: 1 addition & 1 deletion examples/worktree-proximity/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,6 @@
"@types/react": "19.3.0",
"agent-bundle": "workspace:*",
"react": "19.3.0",
"zod": "4.5.4"
"zod": "4.6.4"
}
}
2 changes: 1 addition & 1 deletion packages/agent-bundle/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@
"effect-rstest": "https://pkg.pr.new/ScriptedAlchemy/effect-rstest@e5f8d5f",
"react": "19.3.0",
"typescript-5": "npm:typescript@5.9.3",
"zod": "4.5.4"
"zod": "4.6.4"
},
"peerDependencies": {
"@agent-bundle/runtime": ">=0.0.0 <1",
Expand Down
8 changes: 4 additions & 4 deletions packages/agent-bundle/tests/check-declaration-imports.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import { removeTree } from './support/remove-tree.ts';
const manifest: DeclarationManifest = {
name: 'fixture-package',
dependencies: { effect: '4.0.0', '@modelcontextprotocol/client': '2.0.0' },
devDependencies: { zod: '4.5.4', 'typescript-5': 'npm:typescript@5.9.3', '@types/node': '26.4.0' },
devDependencies: { zod: '4.6.4', 'typescript-5': 'npm:typescript@5.9.3', '@types/node': '26.4.0' },
exports: {
'.': { types: './dist/index.d.ts', import: './dist/index.js' },
'./routes': { types: './dist/routes/public.d.ts', import: './dist/routes.js' },
Expand Down Expand Up @@ -172,7 +172,7 @@ describe('declarationImportViolations', () => {
const report = declarationImportViolations({
manifest: {
name: 'agent-bundle',
devDependencies: { zod: '4.5.4' },
devDependencies: { zod: '4.6.4' },
exports: { './app': { types: './dist/app.d.ts', import: './dist/app.js' } },
},
packedPaths: ['dist/app.d.ts', 'dist/app.js'],
Expand Down Expand Up @@ -410,7 +410,7 @@ describe('the packed-declaration gate', () => {
type: 'module',
exports: { '.': { types: './dist/index.d.ts', import: './dist/index.js' }, './package.json': './package.json' },
dependencies: { effect: '4.0.0' },
devDependencies: { zod: '4.5.4' },
devDependencies: { zod: '4.6.4' },
};
const badFiles = {
'package.json': `${JSON.stringify(badManifest, null, 2)}\n`,
Expand Down Expand Up @@ -445,7 +445,7 @@ describe('the packed-declaration gate', () => {
});

it('passes the same pack once the import is declared, and lets --strict fail internal declarations', async () => {
const goodManifest = { ...badManifest, name: 'good-fixture', dependencies: { effect: '4.0.0', zod: '4.5.4' }, devDependencies: {} };
const goodManifest = { ...badManifest, name: 'good-fixture', dependencies: { effect: '4.0.0', zod: '4.6.4' }, devDependencies: {} };
const root = await writeFixturePack({
...badFiles,
'package.json': `${JSON.stringify(goodManifest, null, 2)}\n`,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ it('packages both react-server render children and renders a route invocation fr
markdownStream.tarball,
'react@19.2.8',
'react-dom@19.2.8',
'zod@4.5.4',
'zod@4.6.4',
], { cwd: consumer, env: installedEnvironment() });
await mkdir(join(project, 'src', 'mcp', 'status', 'tools'), { recursive: true });
await Promise.all([
Expand Down
4 changes: 2 additions & 2 deletions packages/agent-bundle/tests/function-authoring-build.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ it('runs compiled function events, explicit JSX views, and CLI metadata and JSON
try {
await symlink(join(process.cwd(), 'examples/audiobook-curator/node_modules'), join(root, 'node_modules'), 'dir');
const files = {
'package.json': JSON.stringify({ name: 'function-authoring', type: 'module', version: '1.0.0', dependencies: { '@agent-bundle/runtime': 'workspace:*', react: '19.2.8', zod: '4.5.4' } }),
'package.json': JSON.stringify({ name: 'function-authoring', type: 'module', version: '1.0.0', dependencies: { '@agent-bundle/runtime': 'workspace:*', react: '19.2.8', zod: '4.6.4' } }),
'agent-bundle.config.ts': `import { defineConfig } from 'agent-bundle/config'; export default defineConfig({ plugin: { name: 'function-authoring' }, targets: ['claude'] });`,
'src/providers/unused.ts': `throw new Error('unused provider evaluated'); export default () => 'unused';`,
'src/providers/policy.ts': `export default () => 'Writes disabled';`,
Expand Down Expand Up @@ -157,7 +157,7 @@ it('mounts identities, state, notices, and provider observations in a compiled l
try {
await symlink(join(process.cwd(), 'examples/audiobook-curator/node_modules'), join(root, 'node_modules'), 'dir');
const files = {
'package.json': JSON.stringify({ name: 'event-context', type: 'module', version: '1.0.0', dependencies: { '@agent-bundle/runtime': 'workspace:*', zod: '4.5.4' } }),
'package.json': JSON.stringify({ name: 'event-context', type: 'module', version: '1.0.0', dependencies: { '@agent-bundle/runtime': 'workspace:*', zod: '4.6.4' } }),
'agent-bundle.config.ts': `import { defineConfig } from 'agent-bundle/config'; export default defineConfig({ plugin: { name: 'event-context' }, targets: ['claude'] });`,
'src/state.ts': `import { defineState } from '@agent-bundle/runtime/state'; import { z } from 'zod';
export default defineState({ id: 'event-context/state', lifetime: 'workspace-durable', initial: { count: 7 }, schema: z.object({ count: z.number() }), events: { tick: z.object({}) }, reduce: (state) => state });`,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ it('serves a state-writing tool from a read-only installed artifact without writ
markdownStream.tarball,
'react@19.2.8',
'react-dom@19.2.8',
'zod@4.5.4',
'zod@4.6.4',
], { cwd: project, env: installedEnvironment() });
const cli = join(project, 'node_modules', '.bin', 'agent-bundle');
await execFile(cli, ['build', '--root', project, '--output', artifact], {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ it.each([
markdownStream.tarball,
'react@19.2.8',
'react-dom@19.2.8',
'zod@4.5.4',
'zod@4.6.4',
], { cwd: project, env: installedEnvironment() });

// The fixture selects `claude`, the only target whose capabilities cover
Expand Down
2 changes: 1 addition & 1 deletion packages/agent-bundle/tests/packed-web-command.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ beforeAll(async () => {
markdownStream.tarball,
'react@19.2.8',
'react-dom@19.2.8',
'zod@4.5.4',
'zod@4.6.4',
], { cwd: project, env: installedEnvironment() });
const cli = join(project, 'node_modules', '.bin', 'agent-bundle');
await execFile(cli, ['build', '--root', project, '--output', artifact], {
Expand Down
4 changes: 2 additions & 2 deletions packages/agent-bundle/tests/prepack.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@ it('reports package, model, host, and provenance version disagreement as AB7013'

it('reports installed dependencies a consumer never needs as AB7014, per field', () => withPackageDocument(
(document) => {
document.dependencies = { zod: '4.5.4', effect: '4.0.0' };
document.dependencies = { zod: '4.6.4', effect: '4.0.0' };
document.peerDependencies = { react: '19.2.8', 'optional-host': '^1.0.0' };
document.peerDependenciesMeta = { 'optional-host': { optional: true } };
document.devDependencies = { 'agent-bundle': 'workspace:*' };
Expand Down Expand Up @@ -644,7 +644,7 @@ it('surfaces a warning when the only finding is an unresolvable optional depende

it('accepts a dependency that only packed declaration files reference, including @types for a type directive', () => withPackageDocument(
(document) => {
document.dependencies = { zod: '^4.5.4', '@types/node': '^22.0.0', 'driver-package': '^1.0.0', 'never-loaded': '^1.0.0' };
document.dependencies = { zod: '^4.6.4', '@types/node': '^22.0.0', 'driver-package': '^1.0.0', 'never-loaded': '^1.0.0' };
document.imports = { '#driver': { node: 'driver-package/node', default: 'driver-package' } };
},
async () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ it('invokes compiled tool and event routes through the foreground server', { tim
'',
].join('\n'),
files: {
'package.json': '{"dependencies":{"@agent-bundle/runtime":"workspace:*","react":"19.2.8","zod":"4.5.4"},"type":"module"}\n',
'package.json': '{"dependencies":{"@agent-bundle/runtime":"workspace:*","react":"19.2.8","zod":"4.6.4"},"type":"module"}\n',
'src/aliased.ts': "export const ALIAS_VALUE = 'aliased';\n",
'src/cli/greet.tsx': [
"import { Agent } from '@agent-bundle/runtime';",
Expand Down Expand Up @@ -1604,7 +1604,7 @@ it('enforces compiled handler, MCP schemas, and operator env across production s
const project = await createProjectFixture({
config: "export default { plugin: { name: 'route-parity' }, targets: ['claude'] };\n",
files: {
'package.json': '{"dependencies":{"@agent-bundle/runtime":"workspace:*","react":"19.2.8","zod":"4.5.4"},"type":"module"}\n',
'package.json': '{"dependencies":{"@agent-bundle/runtime":"workspace:*","react":"19.2.8","zod":"4.6.4"},"type":"module"}\n',
'src/events/tool/before.ts': "export default () => ({ outcome: 'deny', reason: 'blocked' });\n",
'src/events/tool/before.view.tsx': [
"export default async function BeforeTool() { throw new Error('handler handler ran'); }",
Expand Down Expand Up @@ -1747,7 +1747,7 @@ it('publishes invocation routes only after a successful initial or recovered bui
'',
].join('\n'),
files: {
'package.json': '{"dependencies":{"@agent-bundle/runtime":"workspace:*","react":"19.2.8","zod":"4.5.4"},"type":"module"}\n',
'package.json': '{"dependencies":{"@agent-bundle/runtime":"workspace:*","react":"19.2.8","zod":"4.6.4"},"type":"module"}\n',
'src/mcp/status/tools/report.tsx': [
"import { defineTool } from 'agent-bundle/routes';",
"import { Agent } from '@agent-bundle/runtime';",
Expand Down Expand Up @@ -1915,7 +1915,7 @@ it('bounds the render history a compiled child produces by count and bytes acros
'',
].join('\n'),
files: {
'package.json': '{"dependencies":{"@agent-bundle/runtime":"workspace:*","react":"19.2.8","zod":"4.5.4"},"type":"module"}\n',
'package.json': '{"dependencies":{"@agent-bundle/runtime":"workspace:*","react":"19.2.8","zod":"4.6.4"},"type":"module"}\n',
// One Suspense boundary per cell settles per macrotask, so the stream
// grows one `replace` snapshot at a time; `gate` names a file the last
// boundary waits for, or `none`.
Expand Down
2 changes: 1 addition & 1 deletion packages/agent-bundle/tests/trace-dev-server.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ it('serves replay and live trace entries and lowers build failures', { timeout:
'',
].join('\n'),
files: {
'package.json': '{"dependencies":{"@agent-bundle/runtime":"workspace:*","react":"19.2.8","zod":"4.5.4"},"type":"module"}\n',
'package.json': '{"dependencies":{"@agent-bundle/runtime":"workspace:*","react":"19.2.8","zod":"4.6.4"},"type":"module"}\n',
'src/events/tool/before.tsx': [
"import { Agent } from '@agent-bundle/runtime';",
"import { createElement } from 'react';",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ it('matches the route manifest and lifecycle inventory a real dev server serves'
'',
].join('\n'),
files: {
'package.json': '{"dependencies":{"@agent-bundle/runtime":"workspace:*","react":"19.2.8","zod":"4.5.4"},"type":"module"}\n',
'package.json': '{"dependencies":{"@agent-bundle/runtime":"workspace:*","react":"19.2.8","zod":"4.6.4"},"type":"module"}\n',
'src/cli/greet.ts': [
"import { z } from 'zod';",
'',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,6 @@
"@agent-bundle/runtime": "workspace:*",
"react": "19.3.0",
"react-dom": "19.3.0",
"zod": "4.5.4"
"zod": "4.6.4"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,6 @@
"@agent-bundle/runtime": "workspace:*",
"react": "19.3.0",
"react-dom": "19.3.0",
"zod": "4.5.4"
"zod": "4.6.4"
}
}
2 changes: 1 addition & 1 deletion packages/create-agent-bundle/tests/scaffold.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@ layer(NodeServices.layer, { excludeTestServices: true })('scaffold (real filesys
expect(cliManifest.devDependencies['@agent-bundle/runtime'])
.toBe(runtimeSpecForFramework(cliTool.frameworkSpec, testPairing));
expect(cliManifest.devDependencies['react-dom']).toBe('19.3.0');
expect(cliManifest.devDependencies['zod']).toBe('4.5.4');
expect(cliManifest.devDependencies['zod']).toBe('4.6.4');

const mcpManifest = yield* readJson<{
readonly devDependencies: Record<string, string>;
Expand Down
4 changes: 2 additions & 2 deletions packages/rsc-runtime/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
"@rspack/core": "^2.2.0-0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"zod": "^4.5.4"
"zod": "^4.6.4"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Add the runtime to the release changeset

The only modified changeset still names create-agent-bundle, so changeset version will not bump or publish @agent-bundle/runtime with this new peer constraint; the documented ^4.6.4 floor would therefore be absent from the next runtime release. Restore the unrelated #808 changeset and add this PR's single changeset naming @agent-bundle/runtime as a pre-1.0 minor (and the other affected publishable packages as appropriate).

AGENTS.md reference: AGENTS.md:L116-L123

Useful? React with 👍 / 👎.

},
"peerDependenciesMeta": {
"@rspack/core": {
Expand All @@ -108,6 +108,6 @@
"micromark-extension-gfm": "3.0.0",
"react": "19.3.0",
"react-dom": "19.3.0",
"zod": "4.5.4"
"zod": "4.6.4"
}
}
6 changes: 3 additions & 3 deletions packages/rsc-runtime/tests/manifest-contract.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,11 @@ describe('@agent-bundle/runtime manifest', () => {
expect(runtimeManifest.dependencies['rsc-markdown-stream']).toBe('workspace:^');
});

it('declares zod as a required caret peer at the proven 4.5.4 floor', () => {
expect(peers.zod).toBe('^4.5.4');
it('declares zod as a required caret peer at the proven 4.6.4 floor', () => {
expect(peers.zod).toBe('^4.6.4');
expect(runtimeManifest.peerDependenciesMeta).not.toHaveProperty('zod');
expect(runtimeManifest.dependencies).not.toHaveProperty('zod');
expect(runtimeManifest.devDependencies.zod).toBe('4.5.4');
expect(runtimeManifest.devDependencies.zod).toBe('4.6.4');
});

it('documents the React contract the manifest declares', async () => {
Expand Down
2 changes: 1 addition & 1 deletion packages/rsc-runtime/tests/packed-entry-identity.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ describe.sequential('packed @agent-bundle/runtime entry identity', () => {
markdownStream.tarball,
'react@19.2.8',
'react-dom@19.2.8',
'zod@4.5.4',
'zod@4.6.4',
], { cwd: consumer, env: installedEnvironment() });

const installed = join(consumer, 'node_modules', '@agent-bundle', 'runtime');
Expand Down
2 changes: 1 addition & 1 deletion packages/workbench/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
"react-markdown": "10.1.0",
"remark-gfm": "4.0.1",
"shiki": "4.4.3",
"zod": "4.5.4"
"zod": "4.6.4"
},
"devDependencies": {
"@rsbuild/core": "2.2.5",
Expand Down
2 changes: 1 addition & 1 deletion packages/workbench/tests/streaming-render.e2e.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ e2e('renders a compiled MCP tool\'s Suspense fallback before its gated child rel
].join('\n'),
files: {
...gatedRouteFiles,
'package.json': '{"dependencies":{"@agent-bundle/runtime":"workspace:*","react":"19.2.8","zod":"4.5.4"},"type":"module","version":"1.0.0"}\n',
'package.json': '{"dependencies":{"@agent-bundle/runtime":"workspace:*","react":"19.2.8","zod":"4.6.4"},"type":"module","version":"1.0.0"}\n',
},
prefix: 'agent-bundle-streaming-render-e2e-',
}),
Expand Down
Loading
Loading