@particle-academy/agent-integrations 0.44.0 → 0.46.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 (182) hide show
  1. package/README.md +42 -3
  2. package/dist/bridges/artboard.d.cts +3 -3
  3. package/dist/bridges/artboard.d.ts +3 -3
  4. package/dist/bridges/catalog.d.cts +3 -3
  5. package/dist/bridges/catalog.d.ts +3 -3
  6. package/dist/bridges/charts.d.cts +3 -3
  7. package/dist/bridges/charts.d.ts +3 -3
  8. package/dist/bridges/cms.d.cts +3 -3
  9. package/dist/bridges/cms.d.ts +3 -3
  10. package/dist/bridges/code.d.cts +3 -3
  11. package/dist/bridges/code.d.ts +3 -3
  12. package/dist/bridges/doc.d.cts +3 -3
  13. package/dist/bridges/doc.d.ts +3 -3
  14. package/dist/bridges/features.d.cts +3 -3
  15. package/dist/bridges/features.d.ts +3 -3
  16. package/dist/bridges/files.d.cts +3 -3
  17. package/dist/bridges/files.d.ts +3 -3
  18. package/dist/bridges/flow.d.cts +3 -3
  19. package/dist/bridges/flow.d.ts +3 -3
  20. package/dist/bridges/forms.d.cts +3 -3
  21. package/dist/bridges/forms.d.ts +3 -3
  22. package/dist/bridges/git.d.cts +3 -3
  23. package/dist/bridges/git.d.ts +3 -3
  24. package/dist/bridges/grid.d.cts +3 -3
  25. package/dist/bridges/grid.d.ts +3 -3
  26. package/dist/bridges/map.d.cts +3 -3
  27. package/dist/bridges/map.d.ts +3 -3
  28. package/dist/bridges/passkeys.d.cts +3 -3
  29. package/dist/bridges/passkeys.d.ts +3 -3
  30. package/dist/bridges/scene.d.cts +3 -3
  31. package/dist/bridges/scene.d.ts +3 -3
  32. package/dist/bridges/screens.d.cts +3 -3
  33. package/dist/bridges/screens.d.ts +3 -3
  34. package/dist/bridges/sheets.d.cts +3 -3
  35. package/dist/bridges/sheets.d.ts +3 -3
  36. package/dist/bridges/slides.d.cts +3 -3
  37. package/dist/bridges/slides.d.ts +3 -3
  38. package/dist/bridges/terminal.d.cts +3 -3
  39. package/dist/bridges/terminal.d.ts +3 -3
  40. package/dist/bridges/tui.d.cts +2 -2
  41. package/dist/bridges/tui.d.ts +2 -2
  42. package/dist/bridges/whiteboard.d.cts +3 -3
  43. package/dist/bridges/whiteboard.d.ts +3 -3
  44. package/dist/bridges-artboard.cjs.map +1 -1
  45. package/dist/bridges-artboard.js +2 -2
  46. package/dist/bridges-catalog.cjs.map +1 -1
  47. package/dist/bridges-catalog.js +3 -3
  48. package/dist/bridges-charts.cjs.map +1 -1
  49. package/dist/bridges-charts.js +3 -3
  50. package/dist/bridges-cms.cjs.map +1 -1
  51. package/dist/bridges-cms.js +4 -4
  52. package/dist/bridges-code.cjs.map +1 -1
  53. package/dist/bridges-code.js +3 -3
  54. package/dist/bridges-doc.cjs.map +1 -1
  55. package/dist/bridges-doc.js +3 -3
  56. package/dist/bridges-features.cjs.map +1 -1
  57. package/dist/bridges-features.js +3 -3
  58. package/dist/bridges-files.cjs.map +1 -1
  59. package/dist/bridges-files.js +3 -3
  60. package/dist/bridges-flow.cjs.map +1 -1
  61. package/dist/bridges-flow.js +2 -2
  62. package/dist/bridges-forms.cjs.map +1 -1
  63. package/dist/bridges-forms.js +3 -3
  64. package/dist/bridges-git.cjs.map +1 -1
  65. package/dist/bridges-git.js +3 -3
  66. package/dist/bridges-grid.cjs.map +1 -1
  67. package/dist/bridges-grid.js +3 -3
  68. package/dist/bridges-map.cjs.map +1 -1
  69. package/dist/bridges-map.js +3 -3
  70. package/dist/bridges-passkeys.cjs.map +1 -1
  71. package/dist/bridges-passkeys.js +3 -3
  72. package/dist/bridges-scene.cjs.map +1 -1
  73. package/dist/bridges-scene.js +3 -3
  74. package/dist/bridges-screens.cjs.map +1 -1
  75. package/dist/bridges-screens.js +3 -3
  76. package/dist/bridges-sheets.cjs.map +1 -1
  77. package/dist/bridges-sheets.js +3 -3
  78. package/dist/bridges-slides.cjs.map +1 -1
  79. package/dist/bridges-slides.js +3 -3
  80. package/dist/bridges-terminal.cjs.map +1 -1
  81. package/dist/bridges-terminal.js +3 -3
  82. package/dist/bridges-tui.cjs.map +1 -1
  83. package/dist/bridges-tui.js +2 -2
  84. package/dist/bridges-whiteboard.cjs.map +1 -1
  85. package/dist/bridges-whiteboard.js +3 -3
  86. package/dist/{chunk-5W6YOXLT.js → chunk-36MKPTVD.js} +4 -4
  87. package/dist/{chunk-5W6YOXLT.js.map → chunk-36MKPTVD.js.map} +1 -1
  88. package/dist/{chunk-SXVRIIXW.js → chunk-3HVYUMQF.js} +4 -4
  89. package/dist/{chunk-SXVRIIXW.js.map → chunk-3HVYUMQF.js.map} +1 -1
  90. package/dist/{chunk-MZ74LLDS.js → chunk-3UUF5KKZ.js} +4 -4
  91. package/dist/{chunk-MZ74LLDS.js.map → chunk-3UUF5KKZ.js.map} +1 -1
  92. package/dist/{chunk-WEXMZMJH.js → chunk-3WVXAB3D.js} +3 -3
  93. package/dist/{chunk-WEXMZMJH.js.map → chunk-3WVXAB3D.js.map} +1 -1
  94. package/dist/{chunk-OZBUPO4K.js → chunk-5W34X4EY.js} +263 -58
  95. package/dist/chunk-5W34X4EY.js.map +1 -0
  96. package/dist/{chunk-Z4L2GOAK.js → chunk-5ZWNCHZS.js} +4 -4
  97. package/dist/{chunk-Z4L2GOAK.js.map → chunk-5ZWNCHZS.js.map} +1 -1
  98. package/dist/{chunk-TEB5U6Y5.js → chunk-7NVATRLE.js} +4 -4
  99. package/dist/{chunk-TEB5U6Y5.js.map → chunk-7NVATRLE.js.map} +1 -1
  100. package/dist/{chunk-PUMQDV67.js → chunk-AXWMWYH5.js} +4 -4
  101. package/dist/{chunk-PUMQDV67.js.map → chunk-AXWMWYH5.js.map} +1 -1
  102. package/dist/{chunk-NKAH67JK.js → chunk-CS3CHGYC.js} +4 -4
  103. package/dist/{chunk-NKAH67JK.js.map → chunk-CS3CHGYC.js.map} +1 -1
  104. package/dist/{chunk-QJYRWEXD.js → chunk-CZV3WUW5.js} +35 -8
  105. package/dist/chunk-CZV3WUW5.js.map +1 -0
  106. package/dist/{chunk-PCFRBVKS.js → chunk-FCXSR7I5.js} +4 -4
  107. package/dist/{chunk-PCFRBVKS.js.map → chunk-FCXSR7I5.js.map} +1 -1
  108. package/dist/{chunk-NIFPRC7P.js → chunk-GVTBMJU6.js} +4 -4
  109. package/dist/{chunk-NIFPRC7P.js.map → chunk-GVTBMJU6.js.map} +1 -1
  110. package/dist/{chunk-E2I3YVKC.js → chunk-JLHVQWOV.js} +3 -3
  111. package/dist/{chunk-E2I3YVKC.js.map → chunk-JLHVQWOV.js.map} +1 -1
  112. package/dist/{chunk-2LSU3NFO.js → chunk-LQB42OSA.js} +4 -4
  113. package/dist/{chunk-2LSU3NFO.js.map → chunk-LQB42OSA.js.map} +1 -1
  114. package/dist/{chunk-VJD3Y7E5.js → chunk-MIDZWKIF.js} +4 -4
  115. package/dist/{chunk-VJD3Y7E5.js.map → chunk-MIDZWKIF.js.map} +1 -1
  116. package/dist/{chunk-LOD77NCD.js → chunk-PWYEW6NL.js} +4 -4
  117. package/dist/{chunk-LOD77NCD.js.map → chunk-PWYEW6NL.js.map} +1 -1
  118. package/dist/{chunk-HVDHT7DM.js → chunk-R4XXOGQH.js} +3 -3
  119. package/dist/{chunk-HVDHT7DM.js.map → chunk-R4XXOGQH.js.map} +1 -1
  120. package/dist/{chunk-7LLMILTM.js → chunk-RVMM4BHK.js} +4 -4
  121. package/dist/{chunk-7LLMILTM.js.map → chunk-RVMM4BHK.js.map} +1 -1
  122. package/dist/{chunk-NIXOY473.js → chunk-SWWJUOCY.js} +3 -3
  123. package/dist/{chunk-NIXOY473.js.map → chunk-SWWJUOCY.js.map} +1 -1
  124. package/dist/{chunk-EIBV76IB.js → chunk-VFWFT3OK.js} +4 -4
  125. package/dist/{chunk-EIBV76IB.js.map → chunk-VFWFT3OK.js.map} +1 -1
  126. package/dist/{chunk-2Q4EGZHJ.js → chunk-VMRUW4B4.js} +4 -4
  127. package/dist/{chunk-2Q4EGZHJ.js.map → chunk-VMRUW4B4.js.map} +1 -1
  128. package/dist/{chunk-GT63LSPJ.js → chunk-VOCUGTZB.js} +4 -4
  129. package/dist/{chunk-GT63LSPJ.js.map → chunk-VOCUGTZB.js.map} +1 -1
  130. package/dist/{chunk-N5VOPV64.js → chunk-Z5NL5D4J.js} +4 -4
  131. package/dist/{chunk-N5VOPV64.js.map → chunk-Z5NL5D4J.js.map} +1 -1
  132. package/dist/components-shared-whiteboard.cjs +33 -6
  133. package/dist/components-shared-whiteboard.cjs.map +1 -1
  134. package/dist/components-shared-whiteboard.js +3 -3
  135. package/dist/index.cjs +33 -6
  136. package/dist/index.cjs.map +1 -1
  137. package/dist/index.d.cts +7 -7
  138. package/dist/index.d.ts +7 -7
  139. package/dist/index.js +27 -27
  140. package/dist/mcp/index.d.cts +5 -5
  141. package/dist/mcp/index.d.ts +5 -5
  142. package/dist/mcp/stdio.d.cts +94 -0
  143. package/dist/mcp/stdio.d.ts +94 -0
  144. package/dist/mcp-stdio.cjs +120 -0
  145. package/dist/mcp-stdio.cjs.map +1 -0
  146. package/dist/mcp-stdio.js +117 -0
  147. package/dist/mcp-stdio.js.map +1 -0
  148. package/dist/mcp.cjs +33 -6
  149. package/dist/mcp.cjs.map +1 -1
  150. package/dist/mcp.js +1 -1
  151. package/dist/presence/index.d.cts +1 -1
  152. package/dist/presence/index.d.ts +1 -1
  153. package/dist/relay-server/index.d.cts +110 -26
  154. package/dist/relay-server/index.d.ts +110 -26
  155. package/dist/relay-server-cli.cjs +374 -89
  156. package/dist/relay-server-cli.cjs.map +1 -1
  157. package/dist/relay-server-cli.js +120 -38
  158. package/dist/relay-server-cli.js.map +1 -1
  159. package/dist/relay-server.cjs +255 -51
  160. package/dist/relay-server.cjs.map +1 -1
  161. package/dist/relay-server.js +1 -1
  162. package/dist/{server-BJNF7pQe.d.cts → server-BIcA3ZtK.d.cts} +32 -3
  163. package/dist/{server-Dt97UxuD.d.ts → server-DnUyeavY.d.ts} +32 -3
  164. package/dist/sharing/index.d.cts +3 -3
  165. package/dist/sharing/index.d.ts +3 -3
  166. package/dist/sheets-adapter.d.cts +3 -3
  167. package/dist/sheets-adapter.d.ts +3 -3
  168. package/dist/{tool-host-BpEBqf5u.d.cts → tool-host-LVBgCN5m.d.cts} +1 -1
  169. package/dist/{tool-host-xY5F-eqG.d.ts → tool-host-Wo0pkY83.d.ts} +1 -1
  170. package/dist/{types-DSwsNTBG.d.ts → types-BxNRKSVd.d.ts} +1 -1
  171. package/dist/{types-C58ZXs4K.d.cts → types-C2DtnHIn.d.cts} +25 -1
  172. package/dist/{types-C58ZXs4K.d.ts → types-C2DtnHIn.d.ts} +25 -1
  173. package/dist/{types-C4NaIW6B.d.cts → types-EcElKOlk.d.cts} +1 -1
  174. package/dist/undo/index.d.cts +2 -2
  175. package/dist/undo/index.d.ts +2 -2
  176. package/dist/undo.cjs.map +1 -1
  177. package/dist/undo.js +3 -3
  178. package/docs/relay-protocol.md +41 -5
  179. package/docs/relay-server.md +102 -15
  180. package/package.json +19 -2
  181. package/dist/chunk-OZBUPO4K.js.map +0 -1
  182. package/dist/chunk-QJYRWEXD.js.map +0 -1
package/README.md CHANGED
@@ -113,6 +113,38 @@ await host.callTool("sheet_set_cell", { address: "B3", value: 42 });
113
113
 
114
114
  Need both? `MicroMcpServer` extends `ToolRegistry`, so the same instance serves direct in-process calls **and** SSE-relayed remote agents at the same time. Bridges accept either — every `register*Bridge(host, …)` signature takes a `ToolHost`.
115
115
 
116
+ ## A headless MCP server over stdio
117
+
118
+ For a Node process that an MCP client launches as a subprocess (Claude Code,
119
+ Codex, Cursor, Claude Desktop), import the two **headless** subpaths. Neither
120
+ reaches React or the DOM: `/mcp` imports no package at all, and `/mcp/stdio`
121
+ imports only Node built-ins — a test walks both import graphs to keep it so.
122
+
123
+ ```ts
124
+ import { MicroMcpServer } from "@particle-academy/agent-integrations/mcp";
125
+ import { attachStdio } from "@particle-academy/agent-integrations/mcp/stdio";
126
+
127
+ const server = new MicroMcpServer({
128
+ info: { name: "my-server", version: "1.0.0" },
129
+ // Newest first. initialize echoes the client's revision when it is listed,
130
+ // and answers the first entry otherwise. Omit to answer MCP_PROTOCOL_VERSION.
131
+ protocolVersions: ["2025-11-25", "2025-06-18", "2024-11-05"],
132
+ });
133
+ server.registerTool({ name: "hello", inputSchema: { type: "object" } }, () => ({
134
+ content: [{ type: "text", text: "hi" }],
135
+ }));
136
+
137
+ attachStdio(server); // stdin/stdout; pass { input, output } for other streams
138
+ ```
139
+
140
+ stdout carries protocol frames and nothing else — log to stderr. A line that is
141
+ not a JSON-RPC message is reported through `onError` (stderr by default) and
142
+ skipped rather than ending the session, and replies still in flight when stdin
143
+ ends are delivered before the transport closes.
144
+
145
+ Import `/mcp/stdio` only from Node. Browser bundles import `/mcp`, which never
146
+ pulls it in.
147
+
116
148
  ## Connect an agent to your app — `<ConnectorButtons>`
117
149
 
118
150
  The step *before* presence: getting your MCP server installed in the user's
@@ -291,9 +323,16 @@ to you:
291
323
  `confirm` argument that would apply it (revoking the last passkey is a lockout).
292
324
  `passkey_list` re-projects onto the public summary fields, so handing it your
293
325
  ORM model cannot leak a public key, a user handle, or a signature counter.
294
- - **The relay fans tool results + activity to all peers.** The terminal bridge
295
- redacts raw command bytes from broadcast meta, but any `structuredContent` you
296
- return is visible to every connected peer — don't return secrets.
326
+ - **Activity reaches every peer; tool results reach the caller only if clients
327
+ label themselves.** Since 0.44.0 a reply goes only to the client that asked
328
+ when clients send a `client` query parameter; unlabelled clients still get
329
+ every frame. Notifications are always broadcast. The terminal bridge redacts
330
+ raw command bytes from broadcast meta, but treat anything you return as
331
+ visible to every holder of the token — don't return secrets.
332
+ - **The relay serves SSE and long-poll.** Behind Cloudflare (whose HTTP/3 edge
333
+ resets long SSE streams) install `@particle-academy/fancy-cf-relay` so the
334
+ browser polls; see `docs/relay-server.md`. Pass `--cors` a list of your
335
+ sites' origins rather than leaving `*` on a public relay.
297
336
 
298
337
  ## Status
299
338
 
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
2
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
3
- import '../types-C58ZXs4K.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
3
+ import '../types-C2DtnHIn.cjs';
4
4
 
5
5
  /**
6
6
  * Transport-level JSON shapes. These intentionally mirror fancy-artboard's
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
2
- import { B as Bridge } from '../types-DSwsNTBG.js';
3
- import '../types-C58ZXs4K.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
+ import { B as Bridge } from '../types-BxNRKSVd.js';
3
+ import '../types-C2DtnHIn.js';
4
4
 
5
5
  /**
6
6
  * Transport-level JSON shapes. These intentionally mirror fancy-artboard's
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
2
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
3
- import '../types-C58ZXs4K.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
3
+ import '../types-C2DtnHIn.cjs';
4
4
 
5
5
  /**
6
6
  * Headless bridge for `@particle-academy/fancy-catalog` — a Stripe catalog with
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
2
- import { B as Bridge } from '../types-DSwsNTBG.js';
3
- import '../types-C58ZXs4K.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
+ import { B as Bridge } from '../types-BxNRKSVd.js';
3
+ import '../types-C2DtnHIn.js';
4
4
 
5
5
  /**
6
6
  * Headless bridge for `@particle-academy/fancy-catalog` — a Stripe catalog with
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
2
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
3
- import '../types-C58ZXs4K.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
3
+ import '../types-C2DtnHIn.cjs';
4
4
 
5
5
  /**
6
6
  * Adapter wires a single fancy-echarts chart to the bridge. Charts are
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
2
- import { B as Bridge } from '../types-DSwsNTBG.js';
3
- import '../types-C58ZXs4K.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
+ import { B as Bridge } from '../types-BxNRKSVd.js';
3
+ import '../types-C2DtnHIn.js';
4
4
 
5
5
  /**
6
6
  * Adapter wires a single fancy-echarts chart to the bridge. Charts are
@@ -1,8 +1,8 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
2
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
3
3
  import { DocAdapter } from './doc.cjs';
4
4
  import { StyledNode, StagePolicy, TreeOp, StyleProps, LayoutMode, DocReducer, DocTree } from '@particle-academy/fancy-doc-commons';
5
- import '../types-C58ZXs4K.cjs';
5
+ import '../types-C2DtnHIn.cjs';
6
6
 
7
7
  /**
8
8
  * registerCmsBridge — the greenfield CMS agent bridge, built entirely on
@@ -1,8 +1,8 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
2
- import { B as Bridge } from '../types-DSwsNTBG.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
+ import { B as Bridge } from '../types-BxNRKSVd.js';
3
3
  import { DocAdapter } from './doc.js';
4
4
  import { StyledNode, StagePolicy, TreeOp, StyleProps, LayoutMode, DocReducer, DocTree } from '@particle-academy/fancy-doc-commons';
5
- import '../types-C58ZXs4K.js';
5
+ import '../types-C2DtnHIn.js';
6
6
 
7
7
  /**
8
8
  * registerCmsBridge — the greenfield CMS agent bridge, built entirely on
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
2
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
3
- import '../types-C58ZXs4K.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
3
+ import '../types-C2DtnHIn.cjs';
4
4
 
5
5
  /**
6
6
  * Adapter the host wires to a fancy-code CodeEditor (typically via the
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
2
- import { B as Bridge } from '../types-DSwsNTBG.js';
3
- import '../types-C58ZXs4K.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
+ import { B as Bridge } from '../types-BxNRKSVd.js';
3
+ import '../types-C2DtnHIn.js';
4
4
 
5
5
  /**
6
6
  * Adapter the host wires to a fancy-code CodeEditor (typically via the
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
2
- import { J as JsonObject } from '../types-C58ZXs4K.cjs';
3
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
+ import { J as JsonObject } from '../types-C2DtnHIn.cjs';
3
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
4
4
  import { DocNode, DocTree, TreeOp, DocReducer, StagePolicy } from '@particle-academy/fancy-doc-commons';
5
5
 
6
6
  /** Host-provided access to the document tree. */
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
2
- import { J as JsonObject } from '../types-C58ZXs4K.js';
3
- import { B as Bridge } from '../types-DSwsNTBG.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
+ import { J as JsonObject } from '../types-C2DtnHIn.js';
3
+ import { B as Bridge } from '../types-BxNRKSVd.js';
4
4
  import { DocNode, DocTree, TreeOp, DocReducer, StagePolicy } from '@particle-academy/fancy-doc-commons';
5
5
 
6
6
  /** Host-provided access to the document tree. */
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
2
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
3
- import '../types-C58ZXs4K.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
3
+ import '../types-C2DtnHIn.cjs';
4
4
 
5
5
  /**
6
6
  * Headless bridge for `@particle-academy/fancy-features` — feature management
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
2
- import { B as Bridge } from '../types-DSwsNTBG.js';
3
- import '../types-C58ZXs4K.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
+ import { B as Bridge } from '../types-BxNRKSVd.js';
3
+ import '../types-C2DtnHIn.js';
4
4
 
5
5
  /**
6
6
  * Headless bridge for `@particle-academy/fancy-features` — feature management
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
2
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
3
- import '../types-C58ZXs4K.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
3
+ import '../types-C2DtnHIn.cjs';
4
4
 
5
5
  type FileKind = "file" | "dir";
6
6
  type FileEntry = {
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
2
- import { B as Bridge } from '../types-DSwsNTBG.js';
3
- import '../types-C58ZXs4K.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
+ import { B as Bridge } from '../types-BxNRKSVd.js';
3
+ import '../types-C2DtnHIn.js';
4
4
 
5
5
  type FileKind = "file" | "dir";
6
6
  type FileEntry = {
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
2
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
3
- import '../types-C58ZXs4K.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
3
+ import '../types-C2DtnHIn.cjs';
4
4
 
5
5
  type FlowNode = {
6
6
  id: string;
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
2
- import { B as Bridge } from '../types-DSwsNTBG.js';
3
- import '../types-C58ZXs4K.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
+ import { B as Bridge } from '../types-BxNRKSVd.js';
3
+ import '../types-C2DtnHIn.js';
4
4
 
5
5
  type FlowNode = {
6
6
  id: string;
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
2
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
3
- import '../types-C58ZXs4K.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
3
+ import '../types-C2DtnHIn.cjs';
4
4
 
5
5
  /**
6
6
  * Field descriptor — what the host says about each form field. Mirrors the
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
2
- import { B as Bridge } from '../types-DSwsNTBG.js';
3
- import '../types-C58ZXs4K.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
+ import { B as Bridge } from '../types-BxNRKSVd.js';
3
+ import '../types-C2DtnHIn.js';
4
4
 
5
5
  /**
6
6
  * Field descriptor — what the host says about each form field. Mirrors the
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
2
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
3
- import '../types-C58ZXs4K.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
3
+ import '../types-C2DtnHIn.cjs';
4
4
 
5
5
  type GitProposal = {
6
6
  operation: string;
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
2
- import { B as Bridge } from '../types-DSwsNTBG.js';
3
- import '../types-C58ZXs4K.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
+ import { B as Bridge } from '../types-BxNRKSVd.js';
3
+ import '../types-C2DtnHIn.js';
4
4
 
5
5
  type GitProposal = {
6
6
  operation: string;
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
2
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
3
- import '../types-C58ZXs4K.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
3
+ import '../types-C2DtnHIn.cjs';
4
4
 
5
5
  /**
6
6
  * Loose grid types — the public state shape of `@particle-academy/fancy-grid`,
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
2
- import { B as Bridge } from '../types-DSwsNTBG.js';
3
- import '../types-C58ZXs4K.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
+ import { B as Bridge } from '../types-BxNRKSVd.js';
3
+ import '../types-C2DtnHIn.js';
4
4
 
5
5
  /**
6
6
  * Loose grid types — the public state shape of `@particle-academy/fancy-grid`,
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
2
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
3
- import '../types-C58ZXs4K.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
3
+ import '../types-C2DtnHIn.cjs';
4
4
 
5
5
  type LatLng = {
6
6
  lat: number;
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
2
- import { B as Bridge } from '../types-DSwsNTBG.js';
3
- import '../types-C58ZXs4K.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
+ import { B as Bridge } from '../types-BxNRKSVd.js';
3
+ import '../types-C2DtnHIn.js';
4
4
 
5
5
  type LatLng = {
6
6
  lat: number;
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
2
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
3
- import '../types-C58ZXs4K.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
3
+ import '../types-C2DtnHIn.cjs';
4
4
 
5
5
  /**
6
6
  * Bridge for `@particle-academy/fancy-passkeys-ui` — the **management** half of
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
2
- import { B as Bridge } from '../types-DSwsNTBG.js';
3
- import '../types-C58ZXs4K.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
+ import { B as Bridge } from '../types-BxNRKSVd.js';
3
+ import '../types-C2DtnHIn.js';
4
4
 
5
5
  /**
6
6
  * Bridge for `@particle-academy/fancy-passkeys-ui` — the **management** half of
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
2
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
3
- import '../types-C58ZXs4K.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
3
+ import '../types-C2DtnHIn.cjs';
4
4
 
5
5
  /**
6
6
  * Loose Scene types — mirror the public surface of fancy-3d's Scene
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
2
- import { B as Bridge } from '../types-DSwsNTBG.js';
3
- import '../types-C58ZXs4K.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
+ import { B as Bridge } from '../types-BxNRKSVd.js';
3
+ import '../types-C2DtnHIn.js';
4
4
 
5
5
  /**
6
6
  * Loose Scene types — mirror the public surface of fancy-3d's Scene
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
2
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
3
- import '../types-C58ZXs4K.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
3
+ import '../types-C2DtnHIn.cjs';
4
4
 
5
5
  /**
6
6
  * Loose snapshot of a screen — what's in fancy-screens' ScreenMeta plus
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
2
- import { B as Bridge } from '../types-DSwsNTBG.js';
3
- import '../types-C58ZXs4K.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
+ import { B as Bridge } from '../types-BxNRKSVd.js';
3
+ import '../types-C2DtnHIn.js';
4
4
 
5
5
  /**
6
6
  * Loose snapshot of a screen — what's in fancy-screens' ScreenMeta plus
@@ -1,7 +1,7 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
2
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
3
3
  import { WorkbookData } from '@particle-academy/fancy-sheets';
4
- import '../types-C58ZXs4K.cjs';
4
+ import '../types-C2DtnHIn.cjs';
5
5
 
6
6
  /**
7
7
  * Cell writes funnel through fancy-sheets' own `reduceWorkbook` + `SheetOp` —
@@ -1,7 +1,7 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
2
- import { B as Bridge } from '../types-DSwsNTBG.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
+ import { B as Bridge } from '../types-BxNRKSVd.js';
3
3
  import { WorkbookData } from '@particle-academy/fancy-sheets';
4
- import '../types-C58ZXs4K.js';
4
+ import '../types-C2DtnHIn.js';
5
5
 
6
6
  /**
7
7
  * Cell writes funnel through fancy-sheets' own `reduceWorkbook` + `SheetOp` —
@@ -1,7 +1,7 @@
1
1
  import { Deck, DeckOp } from '@particle-academy/fancy-slides';
2
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
3
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
4
- import '../types-C58ZXs4K.cjs';
2
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
3
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
4
+ import '../types-C2DtnHIn.cjs';
5
5
 
6
6
  /**
7
7
  * Adapter — the bridge calls into these to read or change deck state. The
@@ -1,7 +1,7 @@
1
1
  import { Deck, DeckOp } from '@particle-academy/fancy-slides';
2
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
3
- import { B as Bridge } from '../types-DSwsNTBG.js';
4
- import '../types-C58ZXs4K.js';
2
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
3
+ import { B as Bridge } from '../types-BxNRKSVd.js';
4
+ import '../types-C2DtnHIn.js';
5
5
 
6
6
  /**
7
7
  * Adapter — the bridge calls into these to read or change deck state. The
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
2
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
3
- import '../types-C58ZXs4K.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
3
+ import '../types-C2DtnHIn.cjs';
4
4
 
5
5
  /**
6
6
  * A shell/profile an agent can switch a terminal to. Mirrors fancy-term's
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
2
- import { B as Bridge } from '../types-DSwsNTBG.js';
3
- import '../types-C58ZXs4K.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
+ import { B as Bridge } from '../types-BxNRKSVd.js';
3
+ import '../types-C2DtnHIn.js';
4
4
 
5
5
  /**
6
6
  * A shell/profile an agent can switch a terminal to. Mirrors fancy-term's
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
1
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
2
2
  import { HumanPlusEventStore, HumanPlusActor } from '../human-plus/index.cjs';
3
- import '../types-C58ZXs4K.cjs';
3
+ import '../types-C2DtnHIn.cjs';
4
4
 
5
5
  type TuiActionPolicy = "observe" | "execute" | "propose" | "confirm" | "human-only";
6
6
  interface TuiSurfaceCommandLike {
@@ -1,6 +1,6 @@
1
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
1
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
2
2
  import { HumanPlusEventStore, HumanPlusActor } from '../human-plus/index.js';
3
- import '../types-C58ZXs4K.js';
3
+ import '../types-C2DtnHIn.js';
4
4
 
5
5
  type TuiActionPolicy = "observe" | "execute" | "propose" | "confirm" | "human-only";
6
6
  interface TuiSurfaceCommandLike {
@@ -1,7 +1,7 @@
1
1
  import { StickyNoteItem, ShapeItem, ConnectorItem, Stroke, Viewport, RemoteCursor } from '@particle-academy/fancy-whiteboard';
2
- import { T as ToolHost } from '../tool-host-BpEBqf5u.cjs';
3
- import { B as Bridge } from '../types-C4NaIW6B.cjs';
4
- import '../types-C58ZXs4K.cjs';
2
+ import { T as ToolHost } from '../tool-host-LVBgCN5m.cjs';
3
+ import { B as Bridge } from '../types-EcElKOlk.cjs';
4
+ import '../types-C2DtnHIn.cjs';
5
5
 
6
6
  /**
7
7
  * State accessors / mutators the bridge needs from the host. The host owns
@@ -1,7 +1,7 @@
1
1
  import { StickyNoteItem, ShapeItem, ConnectorItem, Stroke, Viewport, RemoteCursor } from '@particle-academy/fancy-whiteboard';
2
- import { T as ToolHost } from '../tool-host-xY5F-eqG.js';
3
- import { B as Bridge } from '../types-DSwsNTBG.js';
4
- import '../types-C58ZXs4K.js';
2
+ import { T as ToolHost } from '../tool-host-Wo0pkY83.js';
3
+ import { B as Bridge } from '../types-BxNRKSVd.js';
4
+ import '../types-C2DtnHIn.js';
5
5
 
6
6
  /**
7
7
  * State accessors / mutators the bridge needs from the host. The host owns