From a6525546a2ca047a07c9c6447a0cd797114fa33b Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Mon, 31 Aug 2026 07:20:57 +0000 Subject: [PATCH 1/2] docs(examples): link the framework-mode doc from skills-starter and drop the JSX-free test's .tsx extension Wave B sweep of the leftovers from the framework-mode migration (#67). skills-starter's README teaches the skills-directory convention but had nowhere to send a reader for the model behind it; docs/framework-mode.md now exists, so point at it there. audiobook-curator's tests/application.test.tsx lost its last JSX when the migration replaced the structural tree with config assertions, and #67 already renamed src/application.tsx to .ts for the same reason. --- .../tests/{application.test.tsx => application.test.ts} | 0 examples/skills-starter/README.md | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) rename examples/audiobook-curator/tests/{application.test.tsx => application.test.ts} (100%) diff --git a/examples/audiobook-curator/tests/application.test.tsx b/examples/audiobook-curator/tests/application.test.ts similarity index 100% rename from examples/audiobook-curator/tests/application.test.tsx rename to examples/audiobook-curator/tests/application.test.ts diff --git a/examples/skills-starter/README.md b/examples/skills-starter/README.md index a27deebdd..b780389f5 100644 --- a/examples/skills-starter/README.md +++ b/examples/skills-starter/README.md @@ -14,7 +14,8 @@ required. Both eval suites are deterministic and read only checked-in fixtures. - `agent-bundle.config.ts` declares the plugin and its portable, Codex, and Claude targets. The Skills are not listed there: every `skills/*/SKILL.md` - directory is discovered automatically by convention. + directory is discovered automatically by convention, the model described in + [`docs/framework-mode.md`](../../docs/framework-mode.md). - `skills/incident-triage/SKILL.md` guides a production incident from first signal through containment, evidence collection, and a handoff-ready update. - `skills/dependency-upgrade/SKILL.md` plans dependency upgrades with API, From 2b8d240d739e274b7b48c528a86d889b2d4190f3 Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Mon, 31 Aug 2026 07:47:02 +0000 Subject: [PATCH 2/2] docs(rsc-runtime): restore the MCP Apps guidance framework mode dropped, in config terms The framework-mode pass (#67) rewrote this README's structural-JSX section around defineRscApplication but deleted the paragraph outright rather than restating it. That left the README teaching `_meta: { ui: { resourceUri } }` as the way a tool binds to its widget with nothing saying where the widget itself is declared, and no note that createRscMcpServer registers tools only. Also point the Applications section at docs/framework-mode.md, which did not exist when this section was last written. --- packages/rsc-runtime/README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/rsc-runtime/README.md b/packages/rsc-runtime/README.md index 1c6d6d604..43f23800c 100644 --- a/packages/rsc-runtime/README.md +++ b/packages/rsc-runtime/README.md @@ -30,8 +30,10 @@ are still rejected, and the error names the offending key path. ## Applications Structure — targets, skills, scripts, MCP servers, MCP apps — lives in -`agent-bundle.config.ts` and file conventions; JSX renders. The -`@agent-bundle/rsc-runtime/plugin` entry defines the application's runtime +`agent-bundle.config.ts` and file conventions; JSX renders. That split is the +whole authoring model, described on one screen in +[Framework mode](https://github.com/ScriptedAlchemy/agent-bundle/blob/main/docs/framework-mode.md). +The `@agent-bundle/rsc-runtime/plugin` entry defines the application's runtime identity and typed operation catalog once and derives its CLI commands and MCP tool registrations from that one registry: @@ -92,5 +94,13 @@ operation declares (`readOnly`, plus `destructive` / `idempotent` / `openWorld` when present); absent hints stay absent on the wire, where they keep their MCP-spec default semantics. +The widget behind that `resourceUri` is structure, so it is declared in +`agent-bundle.config.ts` under the owning server — `mcp.servers..apps.` +with an `entry`, the matching `resourceUri`, and optional `template`, `targets`, +and `_meta`. Agent Bundle compiles each view into a self-contained HTML resource +and hands it to the server through `import apps from 'agent-bundle/mcp-apps'`. +`createRscMcpServer` registers tools only, so serving that resource remains an +explicit `registerResource` call on the server it returns. + This layer intentionally does not own transport persistence or application state. Those remain explicit dependencies of operation implementations.