Skip to content
Merged
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
15 changes: 9 additions & 6 deletions docs/canvases/agent-bundle-walkthrough.canvas.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ const WIRE_IPC_REQUEST = `{
"event": "tool/before",
"hostContractRevision": "2.1.250",
"target": "claude",
"native": { ...the stdin envelope, byte-for-byte... }
"native": { ...the validated stdin envelope, value-preserving (re-serialized JSON, not raw bytes)... }
}
// socket: /tmp/agent-bundle-<uid>/event-<sha256(endpointId)[0..32]>.sock (mode 0600)
// endpointId = "<artifactEpoch>:<target>:<artifact root dir>" - two installs never share a runtime`;
Expand Down Expand Up @@ -396,12 +396,15 @@ export default function AgentBundleWalkthrough() {
<H2>1 · Authoring model: files are the app</H2>
<Text tone="secondary" style={{ maxWidth: 860 }}>
One flat config owns identity and policy; everything executable is a
conventional file whose path is its identity. A route module is one
async default Server Component plus statically extractable
conventional file whose path is its identity. A generated MCP tool,
resource, or prompt 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
execute/render split (exporting either is the AB4811 error).
execute/render split (exporting either is the AB4811 error). Other
route kinds (events, CLI commands, skills) carry their own export
contracts.
Comment on lines +406 to +407

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Remove Markdown skills from the route-export list

Conventional skills such as src/skills/<name>/SKILL.md are documents parsed from YAML frontmatter, not route kinds with exports; only the optional rendered SKILL.tsx form has a component/frontmatter export contract. Describing all skills here as route kinds with export contracts can send users toward an unsupported authoring shape, so distinguish rendered skills or omit skills from this list.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Fixed on main (merge af1c185).

</Text>
<Grid columns="1fr 1fr" gap={12} align="start">
<Card>
Expand Down Expand Up @@ -565,7 +568,7 @@ export default function AgentBundleWalkthrough() {
<Text size="small" tone="secondary">
agent-bundle.manifest.json records, per emitted file, its sha256 and the exact
source inputs that produced it, plus the project revision (the artifact epoch),
each target's adapter revision, capability-table hash, and the sha256 of every
each target's adapter revision, and the sha256 of every
pinned host schema it was validated against. agent-bundle.hooks.json is the
canonical hook index across targets.
</Text>
Expand Down Expand Up @@ -640,7 +643,7 @@ export default function AgentBundleWalkthrough() {
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."
note="Claude blocks the Write and surfaces the reason to the model. If the route had decided to allow it, the wrapper prints an explicit hookSpecificOutput.permissionDecision: 'allow' (optionally with updatedInput / additionalContext); a route that renders no decision prints nothing."

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Do not describe a decisionless tool route as silent

For the Claude PreToolUse / tool/before path illustrated here, projectEventDocument always emits hookSpecificOutput.permissionDecision: "allow" when the result is not a denial, even when document.value and additional context are both absent. Thus a route that renders no decision does not print nothing in this walkthrough; the final clause contradicts the projection behavior and should be removed or scoped to event types that actually support silence.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Fixed on main (merge af1c185).

payload={WIRE_STDOUT}
last
/>
Expand Down
Loading