docs: add agent-bundle walkthrough canvas - #342
Conversation
… and event matrices)
|
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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b164472b38
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| conventional file whose path is its identity. A route module is one | ||
| async default Server Component plus statically extractable | ||
| <Text as="span" weight="semibold"> config</Text>, | ||
| <Text as="span" weight="semibold"> inputSchema</Text>, and | ||
| <Text as="span" weight="semibold"> resultSchema</Text> exports — there is no |
There was a problem hiding this comment.
Scope the schema-export contract to applicable MCP routes
This presents config, inputSchema, and resultSchema as requirements for every route module, but the compiler applies that contract only to generated MCP tool/resource/prompt routes. MCP Apps skip validateRouteModuleContract, event routes require only an async default component, scripts have a separate contract, and providers are factories. As written, the walkthrough directs authors of several route kinds to add exports that are not part of their API; qualify this paragraph by route kind.
Useful? React with 👍 / 👎.
| "event": "tool/before", | ||
| "hostContractRevision": "2.1.250", | ||
| "target": "claude", | ||
| "native": { ...the stdin envelope, byte-for-byte... } |
There was a problem hiding this comment.
Remove the byte-for-byte claim from the IPC request
The wrapper does not forward the stdin envelope byte-for-byte: it parses stdin with JSON.parse, stores the resulting object, and requestEventRuntime serializes a newly constructed request with JSON.stringify. Consequently whitespace, key formatting, and duplicate-key representation are lost before the socket write. Describe this as preserving the validated envelope value rather than its original bytes.
Useful? React with 👍 / 👎.
| each target's adapter revision, capability-table hash, and the sha256 of every | ||
| pinned host schema it was validated against. agent-bundle.hooks.json is the |
There was a problem hiding this comment.
Stop claiming manifests record capability-table hashes
The artifact manifest target record contains only adapterRevision, name, observedVersion, and schemas; neither manifestTargets nor ArtifactManifestTarget emits a capability-table hash. This provenance promise therefore cannot be verified from a built artifact. Remove the claim or add an actual manifest field before documenting it.
Useful? React with 👍 / 👎.
| n={5} | ||
| title="Thin client prints the host-native response and exits 0" | ||
| channel="wrapper → Claude · stdout" | ||
| note="Claude blocks the Write and surfaces the reason to the model. If the route had allowed it, the wrapper would print nothing (or updatedInput / additionalContext) instead." |
There was a problem hiding this comment.
Document Claude's explicit allow response
For a Claude tool/before route that allows the call without context or updated input, projectEventDocument still returns hookSpecificOutput with hookEventName and permissionDecision: "allow", so the wrapper prints JSON rather than nothing. This note gives the wrong expected wire behavior for the ordinary allow case and should show the explicit allow response.
Useful? React with 👍 / 👎.
Summary
docs/canvases/agent-bundle-walkthrough.canvas.tsx) to the repo, current as of the feat(cursor): support workspace/open event routes as fire-and-forget observation #298 workspace/open correction (Cursor observe-only supported).Test plan