agentfootprint 9.79.0 → 9.81.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/AGENTS.md +20 -0
  2. package/CHANGELOG.md +171 -0
  3. package/CLAUDE.md +2 -1
  4. package/dist/core/runbook/index.js +2 -1
  5. package/dist/core/runbook/index.js.map +1 -1
  6. package/dist/core/runbook/runbookAsTool.js +34 -3
  7. package/dist/core/runbook/runbookAsTool.js.map +1 -1
  8. package/dist/core/runbook/verdicts.js +24 -2
  9. package/dist/core/runbook/verdicts.js.map +1 -1
  10. package/dist/esm/core/runbook/index.d.ts +2 -2
  11. package/dist/esm/core/runbook/index.js +1 -1
  12. package/dist/esm/core/runbook/index.js.map +1 -1
  13. package/dist/esm/core/runbook/runbookAsTool.d.ts +7 -0
  14. package/dist/esm/core/runbook/runbookAsTool.js +35 -4
  15. package/dist/esm/core/runbook/runbookAsTool.js.map +1 -1
  16. package/dist/esm/core/runbook/types.d.ts +31 -2
  17. package/dist/esm/core/runbook/verdicts.d.ts +18 -1
  18. package/dist/esm/core/runbook/verdicts.js +23 -1
  19. package/dist/esm/core/runbook/verdicts.js.map +1 -1
  20. package/dist/esm/index.d.ts +1 -1
  21. package/dist/esm/index.js +1 -1
  22. package/dist/esm/index.js.map +1 -1
  23. package/dist/esm/lib/mcp/connectionRefusals.d.ts +30 -0
  24. package/dist/esm/lib/mcp/connectionRefusals.js +110 -0
  25. package/dist/esm/lib/mcp/connectionRefusals.js.map +1 -0
  26. package/dist/esm/lib/mcp/index.d.ts +3 -2
  27. package/dist/esm/lib/mcp/index.js +4 -0
  28. package/dist/esm/lib/mcp/index.js.map +1 -1
  29. package/dist/esm/lib/mcp/mcpClient.d.ts +18 -5
  30. package/dist/esm/lib/mcp/mcpClient.js +102 -38
  31. package/dist/esm/lib/mcp/mcpClient.js.map +1 -1
  32. package/dist/esm/lib/mcp/mcpServe.js +45 -13
  33. package/dist/esm/lib/mcp/mcpServe.js.map +1 -1
  34. package/dist/esm/lib/mcp/sdkLoadFailure.d.ts +60 -0
  35. package/dist/esm/lib/mcp/sdkLoadFailure.js +74 -0
  36. package/dist/esm/lib/mcp/sdkLoadFailure.js.map +1 -0
  37. package/dist/esm/lib/mcp/throttleRetry.d.ts +20 -1
  38. package/dist/esm/lib/mcp/throttleRetry.js +20 -1
  39. package/dist/esm/lib/mcp/throttleRetry.js.map +1 -1
  40. package/dist/esm/lib/mcp/transportUrl.d.ts +30 -0
  41. package/dist/esm/lib/mcp/transportUrl.js +71 -0
  42. package/dist/esm/lib/mcp/transportUrl.js.map +1 -0
  43. package/dist/esm/lib/mcp/types.d.ts +143 -13
  44. package/dist/esm/tool-providers/index.d.ts +2 -2
  45. package/dist/esm/tool-providers/index.js +6 -1
  46. package/dist/esm/tool-providers/index.js.map +1 -1
  47. package/dist/index.js +4 -3
  48. package/dist/index.js.map +1 -1
  49. package/dist/lib/mcp/connectionRefusals.js +114 -0
  50. package/dist/lib/mcp/connectionRefusals.js.map +1 -0
  51. package/dist/lib/mcp/index.js +6 -1
  52. package/dist/lib/mcp/index.js.map +1 -1
  53. package/dist/lib/mcp/mcpClient.js +102 -38
  54. package/dist/lib/mcp/mcpClient.js.map +1 -1
  55. package/dist/lib/mcp/mcpServe.js +45 -13
  56. package/dist/lib/mcp/mcpServe.js.map +1 -1
  57. package/dist/lib/mcp/sdkLoadFailure.js +78 -0
  58. package/dist/lib/mcp/sdkLoadFailure.js.map +1 -0
  59. package/dist/lib/mcp/throttleRetry.js +20 -1
  60. package/dist/lib/mcp/throttleRetry.js.map +1 -1
  61. package/dist/lib/mcp/transportUrl.js +75 -0
  62. package/dist/lib/mcp/transportUrl.js.map +1 -0
  63. package/dist/tool-providers/index.js +6 -1
  64. package/dist/tool-providers/index.js.map +1 -1
  65. package/dist/types/core/runbook/index.d.ts +2 -2
  66. package/dist/types/core/runbook/index.d.ts.map +1 -1
  67. package/dist/types/core/runbook/runbookAsTool.d.ts +7 -0
  68. package/dist/types/core/runbook/runbookAsTool.d.ts.map +1 -1
  69. package/dist/types/core/runbook/types.d.ts +31 -2
  70. package/dist/types/core/runbook/types.d.ts.map +1 -1
  71. package/dist/types/core/runbook/verdicts.d.ts +18 -1
  72. package/dist/types/core/runbook/verdicts.d.ts.map +1 -1
  73. package/dist/types/index.d.ts +1 -1
  74. package/dist/types/index.d.ts.map +1 -1
  75. package/dist/types/lib/mcp/connectionRefusals.d.ts +31 -0
  76. package/dist/types/lib/mcp/connectionRefusals.d.ts.map +1 -0
  77. package/dist/types/lib/mcp/index.d.ts +3 -2
  78. package/dist/types/lib/mcp/index.d.ts.map +1 -1
  79. package/dist/types/lib/mcp/mcpClient.d.ts +18 -5
  80. package/dist/types/lib/mcp/mcpClient.d.ts.map +1 -1
  81. package/dist/types/lib/mcp/mcpServe.d.ts.map +1 -1
  82. package/dist/types/lib/mcp/sdkLoadFailure.d.ts +61 -0
  83. package/dist/types/lib/mcp/sdkLoadFailure.d.ts.map +1 -0
  84. package/dist/types/lib/mcp/throttleRetry.d.ts +20 -1
  85. package/dist/types/lib/mcp/throttleRetry.d.ts.map +1 -1
  86. package/dist/types/lib/mcp/transportUrl.d.ts +31 -0
  87. package/dist/types/lib/mcp/transportUrl.d.ts.map +1 -0
  88. package/dist/types/lib/mcp/types.d.ts +143 -13
  89. package/dist/types/lib/mcp/types.d.ts.map +1 -1
  90. package/dist/types/tool-providers/index.d.ts +2 -2
  91. package/dist/types/tool-providers/index.d.ts.map +1 -1
  92. package/package.json +1 -1
package/AGENTS.md CHANGED
@@ -112,6 +112,26 @@ Transports: `stdio` (local subprocess), `http` (Streamable HTTP). The
112
112
  `@modelcontextprotocol/sdk` peer-dep is lazy-required — zero runtime
113
113
  cost when MCP isn't used. Friendly install hint if missing.
114
114
 
115
+ **In a BROWSER** the Node `require` loader does not exist, so supply what it
116
+ would have found. Give the two SDK modules as `sdk` (the library still builds
117
+ the transport, so headers / your own `fetch` / gateway vending / throttle retry
118
+ all keep working), or a client you connected yourself as `connection`:
119
+
120
+ ```typescript
121
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
122
+ import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
123
+
124
+ const sidecar = await mcpClient({
125
+ name: 'sidecar',
126
+ sdk: { Client, StreamableHTTPClientTransport },
127
+ transport: { transport: 'http', url: '/py/mcp' }, // relative resolves against the page
128
+ });
129
+ ```
130
+
131
+ `stdio` spawns a subprocess and is refused in words there. On the `connection`
132
+ arm the library builds no transport, so `retryOnThrottle` / `clientInfo` are
133
+ REFUSED rather than ignored — wrap your own fetch with `retryingFetch` instead.
134
+
115
135
  `agent.tools(arr)` is the bulk-register companion to `agent.tool(t)`.
116
136
  Pair with `await client.tools()` to register everything an MCP server
117
137
  exposes in one builder call. Tool-name uniqueness is still validated
package/CHANGELOG.md CHANGED
@@ -7,6 +7,177 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [9.81.0] - 2026-08-30
11
+
12
+ ### Added
13
+
14
+ - **MCP from a browser — because the barrier was never the protocol, it was one
15
+ line of ours.** `mcpClient` loads `@modelcontextprotocol/sdk` through a Node
16
+ `require` loader, and that loader does not exist in a browser bundle. The SDK
17
+ itself is fine: its `client/index.js` and `client/streamableHttp.js` bundle at
18
+ `platform: 'browser'` with **zero** `node:` edges and never pull in
19
+ `client/stdio.js`. So the fix is not to reimplement anything — it is to let the
20
+ caller supply what the library would otherwise have loaded.
21
+
22
+ **`sdk?: McpSdk`** — hand over the two SDK modules, imported statically by your
23
+ own bundler, and the library **still builds the transport**. Everything the
24
+ transport carries keeps working: `headers`, your own `fetch`, gateway
25
+ vending, `retryOnThrottle`, `_meta` ingestion.
26
+
27
+ ```ts
28
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
29
+ import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
30
+ import { mcpClient } from 'agentfootprint/providers';
31
+
32
+ const sidecar = await mcpClient({
33
+ name: 'sidecar',
34
+ sdk: { Client, StreamableHTTPClientTransport },
35
+ transport: { transport: 'http', url: '/py/mcp' },
36
+ });
37
+ const tools = await sidecar.tools(); // the same readonly Tool[], _meta and all
38
+ ```
39
+
40
+ **`connection?: McpConnection`** — the full escape hatch: you connect the
41
+ client, the library only adapts its tools. Three methods over JSON-RPC and no
42
+ vendor named, so an SDK `Client`, a fake, or a future fetch-only transport all
43
+ satisfy it. `connect()` is deliberately **absent** from the type: you already
44
+ connected it, and the library never calls it. Reach for this when the library
45
+ must not construct anything — a strict CSP, where the SDK's own
46
+ `jsonSchemaValidator` (reachable only here) is what keeps ajv's `new Function`
47
+ off the page.
48
+
49
+ **The refusals are the design.** On the `connection` arm the library builds no
50
+ transport, so every option consumed INSIDE one is refused at construction,
51
+ naming where the behaviour went — `retryOnThrottle`, `clientInfo`, `transport`,
52
+ `sdk`, `_client`. Accepting a knob that names a behaviour which no longer
53
+ happens is the defect class this release exists to close, not a convenience.
54
+ `signal` IS honoured on both arms: it rides the SDK's request options.
55
+
56
+ - **`retryingFetch` is public** (`agentfootprint/providers`), with
57
+ `ThrottleFetch`. It was `@internal`, and on the `connection` arm — the one a
58
+ browser takes — a caller would otherwise have silently lost the HTTP 429
59
+ handling every Node consumer gets ON by default. Same implementation, applied
60
+ where you build the transport: `fetch: retryingFetch(yourFetch, { maxAttempts: 5 })`.
61
+
62
+ ### Fixed
63
+
64
+ - **A relative `transport.url` resolves against the page.** `new URL('/py/mcp')`
65
+ throws `TypeError: Invalid URL` — correct in Node, wrong in a browser, where a
66
+ same-origin path is the ordinary way to reach a sidecar (and the way to avoid a
67
+ CORS preflight entirely). It now resolves against `globalThis.location.href`
68
+ when there is one, and in Node refuses **by name**, saying which world it is in
69
+ and to pass an absolute URL. An absolute url takes the identical first branch,
70
+ so Node behaviour has not moved.
71
+
72
+ - **The SDK-load errors stop lying.** Every load sat behind a bare `catch`, which
73
+ cannot tell "the package is absent" from "the LOADER is absent" — so a browser
74
+ that had the SDK installed all along was told to `npm install` it, and nothing
75
+ changed when it did. The failure is now classified at all seven sites (three in
76
+ `mcpClient`, four in `mcpServe`): a resolution failure produces the
77
+ **byte-identical** message every release before this one produced, and anything
78
+ else names the underlying error and the seam that gets past it. `mcpServe` says
79
+ the honest thing instead — it listens on stdio or a Node socket, so that
80
+ direction cannot run in a browser at all.
81
+
82
+ ### Unchanged, deliberately
83
+
84
+ - **Zero packaging change.** No new subpath, no `browser` export condition (a
85
+ compiler is blind to it), no `typesVersions` row, no `postbuild-esm.mjs` edit.
86
+ `@modelcontextprotocol/sdk` stays an OPTIONAL peer, and there is no literal
87
+ dynamic `import()` of it anywhere — one would be statically resolved by a
88
+ bundler and would hard-fail the build for every consumer who does not have it.
89
+
90
+ - **Every existing Node consumer.** A call with neither `sdk` nor `connection`
91
+ reaches the same `lazyRequire` on the same specifiers and builds the same
92
+ transport; the difference is a `??` on an `undefined` parameter. `stdio` keeps
93
+ the loader permanently — it spawns a subprocess, so it can never be portable,
94
+ and keeping it there is what keeps the SDK's one Node-importing client module
95
+ off every browser graph.
96
+
97
+ ### Proof, and its limits
98
+
99
+ `test/lib/mcp/browserGraph.test.ts` bundles the SHIPPED `dist/` the way a browser
100
+ build does and asserts: `agentfootprint/providers` still bundles with the MCP SDK
101
+ **blocked at resolve time** (the optional-peer property, stated as a build); its
102
+ `node:` edges are EXACTLY the two known ones; the builtins hidden behind
103
+ `lazyRequire` — which no module graph can see — are exactly the four known ones;
104
+ the path a browser walks reaches `node:module` and nothing else and never pulls
105
+ in `client/stdio.js`; and everything on that path except the loader bundles with
106
+ NO externals and zero node edges. `mcpConnection.real.test.ts` drives both new
107
+ arms through a real socket against the real SDK.
108
+
109
+ **What none of that proves: a browser.** This repo has no browser test
110
+ environment, so nobody has yet driven initialize/listTools/callTool from an
111
+ actual page. The honest status is *proven in Node, fenced at the graph, not gated
112
+ in a browser.* Three costs land on the app, not here: your server must send CORS
113
+ headers (every MCP request preflights, and `Mcp-Session-Id` must be in
114
+ `Access-Control-Expose-Headers`) — `mcpServe` sends none; SSE through a dev or
115
+ production proxy is unproven; and the SDK's client path adds roughly 260 KB
116
+ minified, about half of it ajv, whose `new Function` needs `unsafe-eval` the
117
+ first time a tool with an `outputSchema` is validated.
118
+
119
+ ## [9.80.0] - 2026-08-30
120
+
121
+ ### Added
122
+
123
+ - **`presentation` on `runbookAsTool` — a rowset's surface is a fact about the
124
+ CLIENT, and the caller is the only one who knows it.** Seen in production: a
125
+ triage answer opened with a wall of pipe-delimited rows — the entire verdict
126
+ table retyped into the prose — while those same rows were already on screen
127
+ beside it, ticketed as a dataset with a table view and a chart view. The host
128
+ had a standing rule against exactly that. The library was overruling it.
129
+
130
+ The instruction was ours. Every verdict projection shipped `table`
131
+ pre-rendered with `VERDICT_RENDER_NOTE`: *"table is PRE-RENDERED over the
132
+ same rows as `verdicts` — output it VERBATIM."* That note is RIGHT wherever
133
+ the model's words are the rows' only surface — a chat client, a log line, an
134
+ email — because the alternative there is retyping, and a retyped identifier
135
+ that looks right and matches nothing is the failure the note exists to stop.
136
+ It is WRONG in a client that draws the rowset itself: the retype buys
137
+ nothing, runs the same transcription risk, and lands a second, subtly
138
+ different copy of the table beside the real one.
139
+
140
+ Nothing in a chart, a `resultKind` or a rule set says whether a human will
141
+ read these rows in prose or in a grid — the bridge cannot know which client
142
+ it is in. So the caller says, in one word:
143
+
144
+ ```ts
145
+ runbookAsTool({ /* … */ presentation: 'panel' }); // default: 'prose'
146
+ ```
147
+
148
+ - **`'prose'` (the default)** — today's envelope, key for key: `table`
149
+ pre-rendered over the shown rows, `render_note` = `VERDICT_RENDER_NOTE`.
150
+ Every existing consumer is byte-identical, pinned by a test that asserts
151
+ the whole `result` key list in order.
152
+ - **`'panel'`** — the host renders the rowset, so the envelope omits `table`
153
+ ENTIRELY (the key, not an empty string), and `render_note` becomes the new
154
+ exported `PANEL_RENDER_NOTE`, which states the opposite law: the rows are
155
+ already on the reader's screen; do not reproduce them in prose in any form
156
+ — not as a table, not as bullets, not as one sentence per row; when a
157
+ finding names a row, quote the evidence sentence that row carries VERBATIM,
158
+ and cite only the values the finding rests on, copied byte-for-byte.
159
+
160
+ `verdicts`, `rows_shown`, `rows_total`, `rows_complete` and
161
+ `verdict_meanings` are identical across both modes for the same run — the
162
+ dial names who RENDERS the rows, never which rows there are. `table` stays
163
+ RESERVED in both modes, so a chart's `report` cannot put a table back into a
164
+ panel answer: the mode's promise outranks the freed name. An unknown value
165
+ THROWS at definition instead of falling back to `'prose'` — a mis-spelled
166
+ dial that silently keeps working is a dial you cannot trust to have been set.
167
+
168
+ **The ceiling, stated:** this changes what the envelope SHIPS, never what the
169
+ model does with it. A note is an instruction, not an enforcement —
170
+ `presentation: 'panel'` takes away the table the model was told to output; it
171
+ cannot stop a model that decides to retype rows anyway. And it is silent
172
+ about every other part of the answer: coverage, provenance, rule version and
173
+ the walk are untouched in both modes.
174
+
175
+ New exports beside `VERDICT_RENDER_NOTE`: **`PANEL_RENDER_NOTE`** and the
176
+ **`RunbookPresentation`** (`'prose' | 'panel'`) type. Worked example:
177
+ `examples/features/68-runbook-as-tool.ts` now registers the same procedure
178
+ twice, one dial apart, and prints both surfaces. Docs: "Who renders the
179
+ rowset" in `docs-next/content/docs/build/runbook-as-tool.mdx`.
180
+
10
181
  ## [9.79.0] - 2026-08-30
11
182
 
12
183
  ### Added
package/CLAUDE.md CHANGED
@@ -17,7 +17,8 @@ not in this table, search `src/index.ts` for the nearest noun before writing cod
17
17
 
18
18
  | If you are about to build… | It is | Where | Since |
19
19
  |---|---|---|---|
20
- | turning a written operational procedure (a runbook, a triage playbook) into ONE agent tool whose every answer is EVIDENCE — coverage folded up from the inner tools it calls, rule name+version, verdict rows with GENERATED meanings, and the recorded walk as an artifact ticket, never bytes | `runbookAsTool` — dials: `procedure` (factory, invoked per call with `ctx.tools`) + `resultKind` (`'verdict/*'` arms the rowset projection; anything else ships spine + the chart's `report`) + `rules {name, version}` (default absent ⇒ `rule_version: 'undeclared'`) + `verdicts {decider, maxRows}` (default 50) + `walk {cap, recording}` (cap default 500; over-cap ⇒ control-flow projection, declared · `recording: true` or `{label, maxBytes}`, default OFF — ALSO files the inner chart's own `{snapshot, events, structure}` under `recording/run` and puts its ref on the spine as `walk.recording_ref`, because the ROW projection cannot be drawn; snapshot read from the REDACTED mirror so one `redact` means the same for both; over `maxBytes` (`DEFAULT_RECORDING_MAX_BYTES` = 5,000,000) it is REFUSED not truncated; every absence — no store / over size / unserializable / store threw — is STATED in `walk.recording_note`, and the four `recording_*` fields are absent entirely when the dial is off) + `composedOf` (drift-checked at agent BUILD) + kept `recorders`/`keepRecord`/`keepRecordLimit`/`redact`; reserved state keys `verdicts`/`coverage`/`report` (the `report` bag lands BESIDE the spine, never over it — a report field spelling `af_coverage`/`af_provenance`/`rule_version`/`walk`/`report_note` or a live projection key is discarded and NAMED in `result.report_note`; precedence is explicit in `report.ts`, never spread order); inner `absent()` passes through VERBATIM unless the call said `allowAbsent`; walk kind `recording/chart-walk` + `walk_segment` discriminant | `src/core/runbook/` | 9.76.0, recording 9.79.0 |
20
+ | turning a written operational procedure (a runbook, a triage playbook) into ONE agent tool whose every answer is EVIDENCE — coverage folded up from the inner tools it calls, rule name+version, verdict rows with GENERATED meanings, and the recorded walk as an artifact ticket, never bytes | `runbookAsTool` — dials: `procedure` (factory, invoked per call with `ctx.tools`) + `resultKind` (`'verdict/*'` arms the rowset projection; anything else ships spine + the chart's `report`) + `rules {name, version}` (default absent ⇒ `rule_version: 'undeclared'`) + `verdicts {decider, maxRows}` (default 50) + `presentation` (`'prose'` default = ship `table` + `VERDICT_RENDER_NOTE` "output it VERBATIM"; `'panel'` = the HOST renders the rowset, so NO `table` key at all + `PANEL_RENDER_NOTE` "the rows are already on the reader's screen — do not reproduce them"; the rowset half is byte-identical across modes, `table` stays RESERVED in both, an unknown value THROWS at definition) + `walk {cap, recording}` (cap default 500; over-cap ⇒ control-flow projection, declared · `recording: true` or `{label, maxBytes}`, default OFF — ALSO files the inner chart's own `{snapshot, events, structure}` under `recording/run` and puts its ref on the spine as `walk.recording_ref`, because the ROW projection cannot be drawn; snapshot read from the REDACTED mirror so one `redact` means the same for both; over `maxBytes` (`DEFAULT_RECORDING_MAX_BYTES` = 5,000,000) it is REFUSED not truncated; every absence — no store / over size / unserializable / store threw — is STATED in `walk.recording_note`, and the four `recording_*` fields are absent entirely when the dial is off) + `composedOf` (drift-checked at agent BUILD) + kept `recorders`/`keepRecord`/`keepRecordLimit`/`redact`; reserved state keys `verdicts`/`coverage`/`report` (the `report` bag lands BESIDE the spine, never over it — a report field spelling `af_coverage`/`af_provenance`/`rule_version`/`walk`/`report_note` or a live projection key is discarded and NAMED in `result.report_note`; precedence is explicit in `report.ts`, never spread order); inner `absent()` passes through VERBATIM unless the call said `allowAbsent`; walk kind `recording/chart-walk` + `walk_segment` discriminant | `src/core/runbook/` | 9.76.0, recording 9.79.0 |
21
+ | speaking MCP from a BROWSER — the SDK is browser-clean (its client + streamableHttp bundle at `platform:'browser'` with zero `node:` edges and never pull in `client/stdio.js`); the one barrier was that `lazyRequire` gets CALLED there, so the fix is to let the caller supply what the loader would have found | `mcpClient({ sdk })` (`McpSdk` = the two SDK modules you imported statically; the library STILL builds the transport, so headers/fetch/gateway vending/`retryOnThrottle`/`_meta` all keep working) · `mcpClient({ connection })` (`McpConnection` = listTools/callTool/close, deliberately NO `connect` — you already did; the only arm that reaches the SDK's `jsonSchemaValidator`, i.e. CSP) + `McpConnectionOptions`; `refuseConflictingOptions` REFUSES at construction every option a transport would have consumed, naming where it moved (a knob naming a behaviour that no longer happens is the defect class); `transportUrl` resolves a relative `url` against `globalThis.location.href` (absolute takes the identical branch, Node refuses by name); `sdkLoadFailure` classifies the seven load sites so a browser is never told to install a package it has (resolution failure ⇒ byte-identical historical message); `retryingFetch` + `ThrottleFetch` promoted out of `@internal` so the connection arm keeps its 429 handling. stdio keeps `lazyRequire` FOREVER — it spawns a subprocess. ZERO packaging change: no subpath, no `browser` condition (TypeScript is blind to it), peer stays optional (no literal dynamic `import()`). Fenced by `test/lib/mcp/browserGraph.test.ts` | `src/lib/mcp/` | 9.81.0 |
21
22
  | calling ANOTHER registered tool from inside a tool's `execute` — composition over the agent's own dispatch map instead of importing the module and building a second query stack | `agentToolDispatch` + `ctx.tools` (ToolDispatch has/call) — sees static and skill-carried tools, NEVER ToolProvider-delivered ones (no build-time list, the 9.72.0 caveat); inner calls get the outer facts with hasArtifacts false and a derived toolCallId, `needs` resolved fail-closed non-interactively, `checkIn` and `wants` tools refused by name, no nested dispatch; declare ingredients via `composedOf` (and `gates` for a pausing procedure) — both travel MCP `_meta` | `src/core/agent/toolDispatch.ts` | 9.76.0 |
22
23
  | a tool returning numbers WITH the caveats that make them honest — interval/aggregation grain, is-it-a-counter, when the world was measured, which ground was NOT covered — as typed data the model reads compactly and the record keeps whole | `semantic()` + `tools.semantics_declared` (model sees `semanticsForModel` projection; `coverage` field absorbed by the coverage()/absent() channel) | `src/lib/semantics/` | 9.53.0 |
23
24
  | a build gate that refuses a triage/inventory tool that forgot its caveats, by tool name and field name | `checkSemantics` + `defineTool({ resultClass })` (`'triage'`/`'inventory'`, the closed set) + bin `agentfootprint-check-semantics` | `src/lib/semantics/check.ts` | 9.53.0 |
@@ -4,7 +4,7 @@
4
4
  * tool with the mandatory honesty spine. See README.md in this folder.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.DEFAULT_RECORDING_MAX_BYTES = exports.projectWalk = exports.DEFAULT_WALK_CAP = exports.verdictRowsOf = exports.VERDICT_RENDER_NOTE = exports.renderVerdictTable = exports.DEFAULT_MAX_ROWS = exports.DECLINED_VERDICT = exports.RunbookAbsenceSignal = exports.recordingDispatch = exports.probeDispatch = exports.absenceSignalOf = exports.runbookAsTool = void 0;
7
+ exports.DEFAULT_RECORDING_MAX_BYTES = exports.projectWalk = exports.DEFAULT_WALK_CAP = exports.verdictRowsOf = exports.VERDICT_RENDER_NOTE = exports.renderVerdictTable = exports.PANEL_RENDER_NOTE = exports.DEFAULT_MAX_ROWS = exports.DECLINED_VERDICT = exports.RunbookAbsenceSignal = exports.recordingDispatch = exports.probeDispatch = exports.absenceSignalOf = exports.runbookAsTool = void 0;
8
8
  var runbookAsTool_js_1 = require("./runbookAsTool.js");
9
9
  Object.defineProperty(exports, "runbookAsTool", { enumerable: true, get: function () { return runbookAsTool_js_1.runbookAsTool; } });
10
10
  var dispatch_js_1 = require("./dispatch.js");
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "RunbookAbsenceSignal", { enumerable: true, get:
15
15
  var verdicts_js_1 = require("./verdicts.js");
16
16
  Object.defineProperty(exports, "DECLINED_VERDICT", { enumerable: true, get: function () { return verdicts_js_1.DECLINED_VERDICT; } });
17
17
  Object.defineProperty(exports, "DEFAULT_MAX_ROWS", { enumerable: true, get: function () { return verdicts_js_1.DEFAULT_MAX_ROWS; } });
18
+ Object.defineProperty(exports, "PANEL_RENDER_NOTE", { enumerable: true, get: function () { return verdicts_js_1.PANEL_RENDER_NOTE; } });
18
19
  Object.defineProperty(exports, "renderVerdictTable", { enumerable: true, get: function () { return verdicts_js_1.renderVerdictTable; } });
19
20
  Object.defineProperty(exports, "VERDICT_RENDER_NOTE", { enumerable: true, get: function () { return verdicts_js_1.VERDICT_RENDER_NOTE; } });
20
21
  Object.defineProperty(exports, "verdictRowsOf", { enumerable: true, get: function () { return verdicts_js_1.verdictRowsOf; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/runbook/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AACtB,6CAOuB;AANrB,8GAAA,eAAe,OAAA;AACf,4GAAA,aAAa,OAAA;AACb,gHAAA,iBAAiB,OAAA;AACjB,mHAAA,oBAAoB,OAAA;AAItB,6CAMuB;AALrB,+GAAA,gBAAgB,OAAA;AAChB,+GAAA,gBAAgB,OAAA;AAChB,iHAAA,kBAAkB,OAAA;AAClB,kHAAA,mBAAmB,OAAA;AACnB,4GAAA,aAAa,OAAA;AAEf,qCAA4F;AAAnF,2GAAA,gBAAgB,OAAA;AAAE,sGAAA,WAAW,OAAA;AACtC,+CAA6D;AAApD,2HAAA,2BAA2B,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/runbook/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AACtB,6CAOuB;AANrB,8GAAA,eAAe,OAAA;AACf,4GAAA,aAAa,OAAA;AACb,gHAAA,iBAAiB,OAAA;AACjB,mHAAA,oBAAoB,OAAA;AAItB,6CAOuB;AANrB,+GAAA,gBAAgB,OAAA;AAChB,+GAAA,gBAAgB,OAAA;AAChB,gHAAA,iBAAiB,OAAA;AACjB,iHAAA,kBAAkB,OAAA;AAClB,kHAAA,mBAAmB,OAAA;AACnB,4GAAA,aAAa,OAAA;AAEf,qCAA4F;AAAnF,2GAAA,gBAAgB,OAAA;AAAE,sGAAA,WAAW,OAAA;AACtC,+CAA6D;AAApD,2HAAA,2BAA2B,OAAA"}
@@ -32,6 +32,13 @@
32
32
  * `verdict_meanings` GENERATED from the decider's declared branches +
33
33
  * the rule labels this run's decide() evidence carried.
34
34
  *
35
+ * WHO RENDERS THE ROWSET (`presentation`, default `'prose'`): the bridge
36
+ * cannot see which client it is in, so the caller says. Under `'prose'`
37
+ * the model's words are the rowset's only surface — the table ships
38
+ * pre-rendered and is output verbatim. Under `'panel'` the host draws
39
+ * the rowset itself — no table ships, and the note says not to
40
+ * reproduce rows the reader is already looking at.
41
+ *
35
42
  * THREE OUTCOMES, honestly: a clean envelope; an inner ABSENCE passed
36
43
  * through verbatim (the framework still reads it as an absence); and
37
44
  * DECLINED rows counted into the ledger as not-checked ground.
@@ -100,6 +107,17 @@ const walk_js_1 = require("./walk.js");
100
107
  * the rowset projection; every other kind ships the spine plus the chart's
101
108
  * own `report`. */
102
109
  const VERDICT_KIND_PREFIX = 'verdict/';
110
+ /** The presentations, as the dial spells them. */
111
+ const PRESENTATIONS = ['prose', 'panel'];
112
+ /**
113
+ * The projection's RESERVED VOCABULARY: the keys this run assembled, plus
114
+ * `table` — which `presentation: 'panel'` deliberately omits so that no table
115
+ * reaches the model at all. A `report` field spelling the freed name would put
116
+ * one straight back, so the mode's promise outranks the vacancy.
117
+ */
118
+ function reservedProjectionNames(projection) {
119
+ return projection === undefined ? [] : [...Object.keys(projection), 'table'];
120
+ }
103
121
  function bagOf(value) {
104
122
  return value !== null && typeof value === 'object' && !Array.isArray(value)
105
123
  ? value
@@ -157,6 +175,12 @@ function runbookAsTool(opts) {
157
175
  `${String(maxRows)}.`);
158
176
  }
159
177
  }
178
+ if (opts.presentation !== undefined && !PRESENTATIONS.includes(opts.presentation)) {
179
+ throw new Error(`${label}: \`presentation\` names WHO renders the rowset — 'prose' (the default: the ` +
180
+ `model's prose is the rowset's only surface, so the pre-rendered table ships and is ` +
181
+ `output verbatim) or 'panel' (the host draws the rowset, so no table ships). Got ` +
182
+ `${JSON.stringify(opts.presentation)}.`);
183
+ }
160
184
  const cap = opts.walk?.cap;
161
185
  if (cap !== undefined && (!Number.isInteger(cap) || cap < 1)) {
162
186
  throw new Error(`${label}: \`walk.cap\` must be a whole number of rows, at least 1 — got ${String(cap)}.`);
@@ -205,6 +229,7 @@ function runbookAsTool(opts) {
205
229
  }
206
230
  const inputSchema = opts.inputSchema ?? liftInputSchema(probeChart);
207
231
  const isVerdictKind = opts.resultKind?.startsWith(VERDICT_KIND_PREFIX) === true;
232
+ const rendersItsOwnRows = opts.presentation === 'panel';
208
233
  const maxRows = opts.verdicts?.maxRows ?? verdicts_js_1.DEFAULT_MAX_ROWS;
209
234
  const walkCap = opts.walk?.cap ?? walk_js_1.DEFAULT_WALK_CAP;
210
235
  // Resolved ONCE at definition. `undefined` is the whole off-switch: every
@@ -384,20 +409,26 @@ function runbookAsTool(opts) {
384
409
  rule_version: opts.rules?.version ?? 'undeclared',
385
410
  walk,
386
411
  };
412
+ // The rowset half is the same in both presentations — the dial names who
413
+ // RENDERS the rows, never which rows there are. Only the surface differs:
414
+ // prose gets the pre-rendered table plus "output it verbatim"; a panel
415
+ // host gets no table and the opposite law, because the rows it would
416
+ // retype are already on the reader's screen.
387
417
  const projection = shown !== undefined && rows !== undefined
388
418
  ? {
389
419
  verdicts: shown,
390
420
  rows_shown: shown.length,
391
421
  rows_total: rows.length,
392
422
  rows_complete: shown.length === rows.length,
393
- table: (0, verdicts_js_1.renderVerdictTable)(shown),
394
- render_note: verdicts_js_1.VERDICT_RENDER_NOTE,
423
+ ...(rendersItsOwnRows
424
+ ? { render_note: verdicts_js_1.PANEL_RENDER_NOTE }
425
+ : { table: (0, verdicts_js_1.renderVerdictTable)(shown), render_note: verdicts_js_1.VERDICT_RENDER_NOTE }),
395
426
  ...(meanings !== undefined && { verdict_meanings: meanings }),
396
427
  }
397
428
  : undefined;
398
429
  const report = (0, report_js_1.admitReport)(bagOf(state.report) ?? {}, [
399
430
  ...Object.keys(spine),
400
- ...Object.keys(projection ?? {}),
431
+ ...reservedProjectionNames(projection),
401
432
  ]);
402
433
  const envelope = {
403
434
  af_coverage: ledger,
@@ -1 +1 @@
1
- {"version":3,"file":"runbookAsTool.js","sourceRoot":"","sources":["../../../src/core/runbook/runbookAsTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runbookAsTool.js","sourceRoot":"","sources":["../../../src/core/runbook/runbookAsTool.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,13 @@
14
14
  * structured list is an invitation that gets accepted — rows come back
15
15
  * retyped with subtly wrong identifiers.
16
16
  *
17
+ * TWO SURFACES, TWO LAWS: a rowset does not always reach its reader through
18
+ * the model's prose. Where it does, the table ships pre-rendered and the model
19
+ * is told to output it verbatim (`VERDICT_RENDER_NOTE`); where the HOST draws
20
+ * the rowset itself, no table ships and the model is told the opposite
21
+ * (`PANEL_RENDER_NOTE`). The bridge cannot tell which client it is in, so the
22
+ * caller says — `presentation` on the options bag.
23
+ *
17
24
  * GENERATED MEANINGS, never hand-restated: `verdict_meanings` is composed
18
25
  * from (a) the named decider's declared branches in the chart's own structure
19
26
  * (branch description, falling back to branch name), overlaid by (b) the rule
@@ -23,13 +30,28 @@
23
30
  * covers every verdict an executed rule produced.
24
31
  */
25
32
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.composeMeanings = exports.meaningsRecorder = exports.resolveDecider = exports.renderVerdictTable = exports.verdictRowsOf = exports.DECLINED_VERDICT = exports.VERDICT_RENDER_NOTE = exports.DEFAULT_MAX_ROWS = void 0;
33
+ exports.composeMeanings = exports.meaningsRecorder = exports.resolveDecider = exports.renderVerdictTable = exports.verdictRowsOf = exports.DECLINED_VERDICT = exports.PANEL_RENDER_NOTE = exports.VERDICT_RENDER_NOTE = exports.DEFAULT_MAX_ROWS = void 0;
27
34
  /** Default cap on `verdicts` rows and the rendered table. */
28
35
  exports.DEFAULT_MAX_ROWS = 50;
29
- /** The render law, stated to the model beside every table. */
36
+ /** The render law when PROSE is the rowset's only surface (`presentation:
37
+ * 'prose'`, the default) — stated to the model beside the table. */
30
38
  exports.VERDICT_RENDER_NOTE = 'table is PRE-RENDERED over the same rows as `verdicts` — output it VERBATIM. Never ' +
31
39
  'retype an identifier from `verdicts`; a transcribed name that looks right and matches ' +
32
40
  'nothing is the failure this note exists to stop.';
41
+ /**
42
+ * The render law when the HOST renders the rowset (`presentation: 'panel'`) —
43
+ * stated to the model INSTEAD of a table, because there is none to ship.
44
+ *
45
+ * Same failure, opposite instruction. A rowset the reader can already see does
46
+ * not need retyping into prose; retyping it is how an identifier arrives
47
+ * subtly wrong beside a correct one on screen.
48
+ */
49
+ exports.PANEL_RENDER_NOTE = "the rows in `verdicts` are ALREADY on the reader's screen — this host renders the " +
50
+ 'rowset itself, so no table is shipped here. Do NOT reproduce those rows in prose in ' +
51
+ 'any form: not as a table, not as bullets, not as one sentence per row. When a finding ' +
52
+ 'names a row, quote the evidence sentence that row carries VERBATIM, and cite only the ' +
53
+ 'values the finding rests on, copied byte-for-byte. A retyped identifier that looks ' +
54
+ 'right and matches nothing is the failure this note exists to stop.';
33
55
  /** The reserved verdict word for "no classification was reached" — rows
34
56
  * carrying it are counted into the coverage ledger as not-checked ground
35
57
  * (the three-outcome honesty: reached, reached-and-clear, DECLINED). */
@@ -1 +1 @@
1
- {"version":3,"file":"verdicts.js","sourceRoot":"","sources":["../../../src/core/runbook/verdicts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verdicts.js","sourceRoot":"","sources":["../../../src/core/runbook/verdicts.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  export { runbookAsTool } from './runbookAsTool.js';
6
6
  export { absenceSignalOf, probeDispatch, recordingDispatch, RunbookAbsenceSignal, type InnerCallRecord, type RecordedDispatch, } from './dispatch.js';
7
- export { DECLINED_VERDICT, DEFAULT_MAX_ROWS, renderVerdictTable, VERDICT_RENDER_NOTE, verdictRowsOf, } from './verdicts.js';
7
+ export { DECLINED_VERDICT, DEFAULT_MAX_ROWS, PANEL_RENDER_NOTE, renderVerdictTable, VERDICT_RENDER_NOTE, verdictRowsOf, } from './verdicts.js';
8
8
  export { DEFAULT_WALK_CAP, projectWalk, type ProjectedWalk, type WalkRow } from './walk.js';
9
9
  export { DEFAULT_RECORDING_MAX_BYTES } from './recording.js';
10
- export type { RunbookAsToolOptions, RunbookEnvelope, RunbookProcedure, RunbookRecordingOptions, RunbookRules, RunbookVerdictsOptions, RunbookWalkOptions, VerdictRow, WalkDescriptor, } from './types.js';
10
+ export type { RunbookAsToolOptions, RunbookEnvelope, RunbookPresentation, RunbookProcedure, RunbookRecordingOptions, RunbookRules, RunbookVerdictsOptions, RunbookWalkOptions, VerdictRow, WalkDescriptor, } from './types.js';
@@ -4,7 +4,7 @@
4
4
  */
5
5
  export { runbookAsTool } from './runbookAsTool.js';
6
6
  export { absenceSignalOf, probeDispatch, recordingDispatch, RunbookAbsenceSignal, } from './dispatch.js';
7
- export { DECLINED_VERDICT, DEFAULT_MAX_ROWS, renderVerdictTable, VERDICT_RENDER_NOTE, verdictRowsOf, } from './verdicts.js';
7
+ export { DECLINED_VERDICT, DEFAULT_MAX_ROWS, PANEL_RENDER_NOTE, renderVerdictTable, VERDICT_RENDER_NOTE, verdictRowsOf, } from './verdicts.js';
8
8
  export { DEFAULT_WALK_CAP, projectWalk } from './walk.js';
9
9
  export { DEFAULT_RECORDING_MAX_BYTES } from './recording.js';
10
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/runbook/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,oBAAoB,GAGrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAoC,MAAM,WAAW,CAAC;AAC5F,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/runbook/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,oBAAoB,GAGrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAoC,MAAM,WAAW,CAAC;AAC5F,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC"}
@@ -31,6 +31,13 @@
31
31
  * `verdict_meanings` GENERATED from the decider's declared branches +
32
32
  * the rule labels this run's decide() evidence carried.
33
33
  *
34
+ * WHO RENDERS THE ROWSET (`presentation`, default `'prose'`): the bridge
35
+ * cannot see which client it is in, so the caller says. Under `'prose'`
36
+ * the model's words are the rowset's only surface — the table ships
37
+ * pre-rendered and is output verbatim. Under `'panel'` the host draws
38
+ * the rowset itself — no table ships, and the note says not to
39
+ * reproduce rows the reader is already looking at.
40
+ *
34
41
  * THREE OUTCOMES, honestly: a clean envelope; an inner ABSENCE passed
35
42
  * through verbatim (the framework still reads it as an absence); and
36
43
  * DECLINED rows counted into the ledger as not-checked ground.
@@ -31,6 +31,13 @@
31
31
  * `verdict_meanings` GENERATED from the decider's declared branches +
32
32
  * the rule labels this run's decide() evidence carried.
33
33
  *
34
+ * WHO RENDERS THE ROWSET (`presentation`, default `'prose'`): the bridge
35
+ * cannot see which client it is in, so the caller says. Under `'prose'`
36
+ * the model's words are the rowset's only surface — the table ships
37
+ * pre-rendered and is output verbatim. Under `'panel'` the host draws
38
+ * the rowset itself — no table ships, and the note says not to
39
+ * reproduce rows the reader is already looking at.
40
+ *
34
41
  * THREE OUTCOMES, honestly: a clean envelope; an inner ABSENCE passed
35
42
  * through verbatim (the framework still reads it as an absence); and
36
43
  * DECLINED rows counted into the ledger as not-checked ground.
@@ -91,12 +98,23 @@ import { carriedProvenanceOf, chartCoverageOf, composeLedger, foldInnerCoverage,
91
98
  import { absenceSignalOf, probeDispatch, recordingDispatch } from './dispatch.js';
92
99
  import { chartRecordingOf, mintChartRecording, resolveRecordingPolicy } from './recording.js';
93
100
  import { admitReport, REPORT_NOTE_KEY, shadowedFieldsNote } from './report.js';
94
- import { composeMeanings, DECLINED_VERDICT, DEFAULT_MAX_ROWS, meaningsRecorder, renderVerdictTable, resolveDecider, VERDICT_RENDER_NOTE, verdictRowsOf, } from './verdicts.js';
101
+ import { composeMeanings, DECLINED_VERDICT, DEFAULT_MAX_ROWS, meaningsRecorder, PANEL_RENDER_NOTE, renderVerdictTable, resolveDecider, VERDICT_RENDER_NOTE, verdictRowsOf, } from './verdicts.js';
95
102
  import { DEFAULT_WALK_CAP, mintWalk, projectWalk } from './walk.js';
96
103
  /** The projection selector: a `resultKind` in the `verdict/` namespace gets
97
104
  * the rowset projection; every other kind ships the spine plus the chart's
98
105
  * own `report`. */
99
106
  const VERDICT_KIND_PREFIX = 'verdict/';
107
+ /** The presentations, as the dial spells them. */
108
+ const PRESENTATIONS = ['prose', 'panel'];
109
+ /**
110
+ * The projection's RESERVED VOCABULARY: the keys this run assembled, plus
111
+ * `table` — which `presentation: 'panel'` deliberately omits so that no table
112
+ * reaches the model at all. A `report` field spelling the freed name would put
113
+ * one straight back, so the mode's promise outranks the vacancy.
114
+ */
115
+ function reservedProjectionNames(projection) {
116
+ return projection === undefined ? [] : [...Object.keys(projection), 'table'];
117
+ }
100
118
  function bagOf(value) {
101
119
  return value !== null && typeof value === 'object' && !Array.isArray(value)
102
120
  ? value
@@ -154,6 +172,12 @@ export function runbookAsTool(opts) {
154
172
  `${String(maxRows)}.`);
155
173
  }
156
174
  }
175
+ if (opts.presentation !== undefined && !PRESENTATIONS.includes(opts.presentation)) {
176
+ throw new Error(`${label}: \`presentation\` names WHO renders the rowset — 'prose' (the default: the ` +
177
+ `model's prose is the rowset's only surface, so the pre-rendered table ships and is ` +
178
+ `output verbatim) or 'panel' (the host draws the rowset, so no table ships). Got ` +
179
+ `${JSON.stringify(opts.presentation)}.`);
180
+ }
157
181
  const cap = opts.walk?.cap;
158
182
  if (cap !== undefined && (!Number.isInteger(cap) || cap < 1)) {
159
183
  throw new Error(`${label}: \`walk.cap\` must be a whole number of rows, at least 1 — got ${String(cap)}.`);
@@ -202,6 +226,7 @@ export function runbookAsTool(opts) {
202
226
  }
203
227
  const inputSchema = opts.inputSchema ?? liftInputSchema(probeChart);
204
228
  const isVerdictKind = opts.resultKind?.startsWith(VERDICT_KIND_PREFIX) === true;
229
+ const rendersItsOwnRows = opts.presentation === 'panel';
205
230
  const maxRows = opts.verdicts?.maxRows ?? DEFAULT_MAX_ROWS;
206
231
  const walkCap = opts.walk?.cap ?? DEFAULT_WALK_CAP;
207
232
  // Resolved ONCE at definition. `undefined` is the whole off-switch: every
@@ -381,20 +406,26 @@ export function runbookAsTool(opts) {
381
406
  rule_version: opts.rules?.version ?? 'undeclared',
382
407
  walk,
383
408
  };
409
+ // The rowset half is the same in both presentations — the dial names who
410
+ // RENDERS the rows, never which rows there are. Only the surface differs:
411
+ // prose gets the pre-rendered table plus "output it verbatim"; a panel
412
+ // host gets no table and the opposite law, because the rows it would
413
+ // retype are already on the reader's screen.
384
414
  const projection = shown !== undefined && rows !== undefined
385
415
  ? {
386
416
  verdicts: shown,
387
417
  rows_shown: shown.length,
388
418
  rows_total: rows.length,
389
419
  rows_complete: shown.length === rows.length,
390
- table: renderVerdictTable(shown),
391
- render_note: VERDICT_RENDER_NOTE,
420
+ ...(rendersItsOwnRows
421
+ ? { render_note: PANEL_RENDER_NOTE }
422
+ : { table: renderVerdictTable(shown), render_note: VERDICT_RENDER_NOTE }),
392
423
  ...(meanings !== undefined && { verdict_meanings: meanings }),
393
424
  }
394
425
  : undefined;
395
426
  const report = admitReport(bagOf(state.report) ?? {}, [
396
427
  ...Object.keys(spine),
397
- ...Object.keys(projection ?? {}),
428
+ ...reservedProjectionNames(projection),
398
429
  ]);
399
430
  const envelope = {
400
431
  af_coverage: ledger,