yaml-flow 8.7.0 → 8.8.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 (200) hide show
  1. package/browser/adapters/firebase-storage.js +2 -2
  2. package/browser/adapters/firestore-storage.js +2 -2
  3. package/browser/adapters/localstorage-storage.js +3 -3
  4. package/browser/asset-integrity.json +11 -15
  5. package/browser/live-cards.schema.json +10 -1
  6. package/browser/server-runtime-controlface.js +5 -5
  7. package/examples/ARCHITECTURE.md +0 -27
  8. package/examples/board/server/board-server.js +151 -101
  9. package/examples/board/server/board-worker/source_def_flows.json +0 -8
  10. package/examples/board/server/board-worker/task-executor.js +1 -3
  11. package/examples/board/test/server-http-test.js +181 -152
  12. package/examples/board-firestore/server/worker.js +9 -1
  13. package/examples/portfolio-tracker/portfolio-tracker.js +11 -1
  14. package/examples/portfolio-tracker/test/portfolio-t4.js +12 -2
  15. package/lib/{artifacts-store-lib-D9nMkVcE.d.cts → artifacts-store-lib-C6qBpMfU.d.cts} +1 -1
  16. package/lib/{artifacts-store-lib-DSSMqVL2.d.ts → artifacts-store-lib-D4qf7Q-7.d.ts} +1 -1
  17. package/lib/artifacts-store-public.d.cts +3 -3
  18. package/lib/artifacts-store-public.d.ts +3 -3
  19. package/lib/board-live-cards-mcp.cjs +1 -1
  20. package/lib/board-live-cards-mcp.d.cts +7 -7
  21. package/lib/board-live-cards-mcp.d.ts +7 -7
  22. package/lib/board-live-cards-mcp.js +1 -1
  23. package/lib/board-live-cards-node.cjs +8 -8
  24. package/lib/board-live-cards-node.d.cts +16 -14
  25. package/lib/board-live-cards-node.d.ts +16 -14
  26. package/lib/board-live-cards-node.js +8 -8
  27. package/lib/{board-live-cards-public-DQzPe7A9.d.cts → board-live-cards-public-BT5HrgqZ.d.cts} +82 -59
  28. package/lib/{board-live-cards-public-D-DJek3X.d.ts → board-live-cards-public-DSRamFm8.d.ts} +82 -59
  29. package/lib/{board-live-cards-public-async-CgMCYYft.d.cts → board-live-cards-public-async-CYjr4mgX.d.cts} +18 -8
  30. package/lib/{board-live-cards-public-async-3hUuHxDx.d.ts → board-live-cards-public-async-DlyC3PgC.d.ts} +18 -8
  31. package/lib/board-live-cards-public.cjs +1 -1
  32. package/lib/board-live-cards-public.d.cts +2 -2
  33. package/lib/board-live-cards-public.d.ts +2 -2
  34. package/lib/board-live-cards-public.js +1 -1
  35. package/lib/board-live-cards-server-runtime.cjs +1 -1
  36. package/lib/board-live-cards-server-runtime.d.cts +6 -8
  37. package/lib/board-live-cards-server-runtime.d.ts +6 -8
  38. package/lib/board-live-cards-server-runtime.js +1 -1
  39. package/lib/board-livegraph-runtime/index.cjs +1 -1
  40. package/lib/board-livegraph-runtime/index.js +1 -1
  41. package/lib/{board-platform-adapter-async-DOfEq_HC.d.cts → board-platform-adapter-async-BZIftm36.d.cts} +18 -14
  42. package/lib/{board-platform-adapter-async-JZPCzZnH.d.ts → board-platform-adapter-async-JP9V-U5E.d.ts} +18 -14
  43. package/lib/board-worker-adapter.cjs +1 -24
  44. package/lib/board-worker-adapter.d.cts +68 -3
  45. package/lib/board-worker-adapter.d.ts +68 -3
  46. package/lib/board-worker-adapter.js +1 -24
  47. package/lib/card-compute/index.cjs +1 -1
  48. package/lib/card-compute/index.js +1 -1
  49. package/lib/card-store-public.d.cts +2 -2
  50. package/lib/card-store-public.d.ts +2 -2
  51. package/lib/card-validation.cjs +1 -1
  52. package/lib/card-validation.js +1 -1
  53. package/lib/chat-store-public.cjs +1 -1
  54. package/lib/chat-store-public.d.cts +20 -20
  55. package/lib/chat-store-public.d.ts +20 -20
  56. package/lib/chat-store-public.js +1 -1
  57. package/lib/chunk-2GSI6C45.js +7 -0
  58. package/lib/chunk-35N7ONTH.js +2 -0
  59. package/lib/chunk-37HDEW26.cjs +2 -0
  60. package/lib/{chunk-PMUSJQSR.cjs → chunk-3CZCGNY4.cjs} +2 -2
  61. package/lib/chunk-3KC6LBOG.js +3 -0
  62. package/lib/{chunk-BQS3EIEK.js → chunk-44L64VQ2.js} +3 -3
  63. package/lib/chunk-6OPXQPSC.js +2 -0
  64. package/lib/chunk-7BTZCOT5.js +2 -0
  65. package/lib/{chunk-U2N6MCD5.cjs → chunk-7JVHYHT2.cjs} +2 -2
  66. package/lib/chunk-7QZ267XP.cjs +2 -0
  67. package/lib/{chunk-XQRNDX4Q.js → chunk-ANKA7HEJ.js} +2 -2
  68. package/lib/{chunk-KAWQPLIE.cjs → chunk-BQUQTOPB.cjs} +2 -2
  69. package/lib/chunk-CMFD27ZC.cjs +3 -0
  70. package/lib/chunk-DOFNXJ4C.js +3 -0
  71. package/lib/chunk-ETW3BXHD.cjs +2 -0
  72. package/lib/chunk-FO4KNVU7.cjs +2 -0
  73. package/lib/{chunk-SGV7PU4H.js → chunk-FOFGEABN.js} +2 -2
  74. package/lib/chunk-GPCMBPLK.cjs +2 -0
  75. package/lib/chunk-GU3T75C4.js +3 -0
  76. package/lib/chunk-H3EHFCDZ.js +3 -0
  77. package/lib/chunk-H4TYOSMD.cjs +45 -0
  78. package/lib/chunk-HFW7E2Z7.cjs +4 -0
  79. package/lib/chunk-HWYMZK3N.cjs +3 -0
  80. package/lib/chunk-IQIZA7TN.cjs +7 -0
  81. package/lib/chunk-J4MHQ7JF.js +45 -0
  82. package/lib/chunk-MCPADH33.cjs +2 -0
  83. package/lib/chunk-NBJTYAYN.cjs +2 -0
  84. package/lib/chunk-NDAKMJQK.cjs +3 -0
  85. package/lib/chunk-NNSBBO5R.js +2 -0
  86. package/lib/chunk-NU5NO5NM.js +2 -0
  87. package/lib/chunk-O4RKTQBP.cjs +3 -0
  88. package/lib/chunk-O5UYCGIN.js +2 -0
  89. package/lib/chunk-Q3OTUDIE.js +2 -0
  90. package/lib/chunk-R44X3RQB.cjs +2 -0
  91. package/lib/chunk-RKKSVOP2.js +2 -0
  92. package/lib/chunk-UB54HZA4.cjs +2 -0
  93. package/lib/{chunk-CIAJNUR4.js → chunk-VGDLSS2H.js} +2 -2
  94. package/lib/{chunk-SFVO2LB2.cjs → chunk-VQCIOKJV.cjs} +3 -3
  95. package/lib/chunk-VS3BXEYK.js +4 -0
  96. package/lib/chunk-Y4WK7HE4.js +2 -0
  97. package/lib/chunk-YBYXCFAI.js +2 -0
  98. package/lib/chunk-ZK3E7L4Y.cjs +2 -0
  99. package/lib/cloud-storage.cjs +1 -1
  100. package/lib/cloud-storage.d.cts +6 -6
  101. package/lib/cloud-storage.d.ts +6 -6
  102. package/lib/cloud-storage.js +1 -1
  103. package/lib/continuous-event-graph/index.cjs +1 -1
  104. package/lib/continuous-event-graph/index.js +1 -1
  105. package/lib/execution-refs.cjs +1 -1
  106. package/lib/execution-refs.js +1 -1
  107. package/lib/firebase-storage/index.cjs +2 -2
  108. package/lib/firebase-storage/index.d.cts +2 -2
  109. package/lib/firebase-storage/index.d.ts +2 -2
  110. package/lib/firebase-storage/index.js +2 -2
  111. package/lib/firestore-storage/index.cjs +2 -2
  112. package/lib/firestore-storage/index.d.cts +23 -8
  113. package/lib/firestore-storage/index.d.ts +23 -8
  114. package/lib/firestore-storage/index.js +2 -2
  115. package/lib/index.cjs +2 -2
  116. package/lib/index.d.cts +1 -1
  117. package/lib/index.d.ts +1 -1
  118. package/lib/index.js +1 -1
  119. package/lib/localstorage-storage/index.cjs +1 -1
  120. package/lib/localstorage-storage/index.d.cts +10 -6
  121. package/lib/localstorage-storage/index.d.ts +10 -6
  122. package/lib/localstorage-storage/index.js +1 -1
  123. package/lib/{mcp-tool-registries-W3TRj6O5.d.cts → mcp-tool-registries-CRtea2x4.d.cts} +3 -0
  124. package/lib/{mcp-tool-registries-BBObLYga.d.ts → mcp-tool-registries-D3rWSppt.d.ts} +3 -0
  125. package/lib/server-jobs-queue-runner/index.cjs +1 -1
  126. package/lib/server-jobs-queue-runner/index.d.cts +12 -9
  127. package/lib/server-jobs-queue-runner/index.d.ts +12 -9
  128. package/lib/server-jobs-queue-runner/index.js +1 -1
  129. package/lib/server-runtime/index.cjs +1 -1
  130. package/lib/server-runtime/index.d.cts +7 -9
  131. package/lib/server-runtime/index.d.ts +7 -9
  132. package/lib/server-runtime/index.js +1 -1
  133. package/lib/server-runtime-agentface/index.d.cts +7 -9
  134. package/lib/server-runtime-agentface/index.d.ts +7 -9
  135. package/lib/server-runtime-controlface/index.cjs +1 -1
  136. package/lib/server-runtime-controlface/index.d.cts +19 -71
  137. package/lib/server-runtime-controlface/index.d.ts +19 -71
  138. package/lib/server-runtime-controlface/index.js +1 -1
  139. package/lib/server-runtime-core/index.cjs +1 -1
  140. package/lib/server-runtime-core/index.d.cts +61 -21
  141. package/lib/server-runtime-core/index.d.ts +61 -21
  142. package/lib/server-runtime-core/index.js +1 -1
  143. package/lib/server-runtime-watchers/index.cjs +1 -1
  144. package/lib/server-runtime-watchers/index.d.cts +9 -65
  145. package/lib/server-runtime-watchers/index.d.ts +9 -65
  146. package/lib/server-runtime-watchers/index.js +1 -1
  147. package/lib/server-runtime-webhooks/index.d.cts +7 -9
  148. package/lib/server-runtime-webhooks/index.d.ts +7 -9
  149. package/lib/sse-hub-CYXisfXJ.d.cts +63 -0
  150. package/lib/sse-hub-Dodwtc3_.d.ts +63 -0
  151. package/lib/step-machine-public/index.cjs +1 -1
  152. package/lib/step-machine-public/index.d.cts +1 -1
  153. package/lib/step-machine-public/index.d.ts +1 -1
  154. package/lib/step-machine-public/index.js +1 -1
  155. package/lib/{storage-async-interface-BRR4eBjx.d.cts → storage-async-interface-CG0bMqvE.d.ts} +20 -1
  156. package/lib/{storage-async-interface-DhlOVPSp.d.ts → storage-async-interface-CyO-zwVQ.d.cts} +20 -1
  157. package/lib/{storage-interface-BFiD3kyB.d.ts → storage-interface-D-iEiTJA.d.cts} +45 -1
  158. package/lib/{storage-interface-BFiD3kyB.d.cts → storage-interface-D-iEiTJA.d.ts} +45 -1
  159. package/lib/stores/index.d.cts +1 -1
  160. package/lib/stores/index.d.ts +1 -1
  161. package/lib/stores/kv.d.cts +1 -1
  162. package/lib/stores/kv.d.ts +1 -1
  163. package/lib/{types-CF2xUcZW.d.ts → types-BtH3scgE.d.ts} +66 -29
  164. package/lib/{types-BzQY45dH.d.cts → types-Ch0u3FKP.d.cts} +66 -29
  165. package/package.json +4 -5
  166. package/schema/live-cards.schema.json +10 -1
  167. package/browser/board-livecards-client.js +0 -2
  168. package/examples/board/demo-shell-with-server.html +0 -272
  169. package/examples/board/doc.html +0 -465
  170. package/examples/board/server-config.json +0 -24
  171. package/lib/chat-storage-lib-B9Q34Dyv.d.cts +0 -54
  172. package/lib/chat-storage-lib-DB9iSai2.d.ts +0 -54
  173. package/lib/chunk-5XHOHTLZ.cjs +0 -2
  174. package/lib/chunk-6APH25VI.js +0 -2
  175. package/lib/chunk-76ON3V7R.js +0 -2
  176. package/lib/chunk-7ICPAABP.cjs +0 -7
  177. package/lib/chunk-CPAXTVBQ.cjs +0 -2
  178. package/lib/chunk-DDYSXP2A.cjs +0 -3
  179. package/lib/chunk-EGRHWZRV.js +0 -2
  180. package/lib/chunk-GL2OHR2E.cjs +0 -2
  181. package/lib/chunk-GYQXDNNI.cjs +0 -2
  182. package/lib/chunk-H5HBXPOI.cjs +0 -3
  183. package/lib/chunk-IPLSRN6P.cjs +0 -4
  184. package/lib/chunk-J5J6BG7B.js +0 -2
  185. package/lib/chunk-M3OU6IS5.cjs +0 -2
  186. package/lib/chunk-M6STQR5F.cjs +0 -2
  187. package/lib/chunk-N6P2JW4W.js +0 -3
  188. package/lib/chunk-NJJ7WEDT.cjs +0 -2
  189. package/lib/chunk-NKIQRCOM.cjs +0 -2
  190. package/lib/chunk-NMZ6XNLB.cjs +0 -3
  191. package/lib/chunk-OEFTOO47.cjs +0 -3
  192. package/lib/chunk-PRHQBGPT.js +0 -2
  193. package/lib/chunk-S44QZUDX.js +0 -2
  194. package/lib/chunk-TSN3RTXT.js +0 -4
  195. package/lib/chunk-VLBB3D6B.js +0 -3
  196. package/lib/chunk-VMW4Z6EF.js +0 -3
  197. package/lib/chunk-VXJHBWK3.js +0 -2
  198. package/lib/chunk-WHDEBJLT.js +0 -7
  199. package/lib/chunk-YGALANRO.js +0 -2
  200. package/lib/chunk-ZXQR7GHT.js +0 -3
@@ -1,80 +1,28 @@
1
- import { R as RuntimeRequest, a as RuntimeResponse } from '../types-CF2xUcZW.js';
2
- export { M as MultiBoardRuntime, b as MultiBoardRuntimeOptions, S as SingleBoardRuntime, c as SingleBoardRuntimeOptions } from '../types-CF2xUcZW.js';
3
- import { T as ToolRegistry } from '../mcp-tool-registries-BBObLYga.js';
4
- import { ChatStorePublic } from '../chat-store-public.js';
5
- export { createMultiBoardServerRuntime, createSingleBoardServerRuntime } from '../server-runtime/index.js';
6
- import '../artifacts-store-lib-DSSMqVL2.js';
7
- import '../storage-interface-BFiD3kyB.js';
8
- import '../board-live-cards-public-D-DJek3X.js';
1
+ import { M as MultiBoardRuntimeOptions, a as MultiBoardRuntime, S as SingleBoardRuntimeOptions, b as SingleBoardRuntime } from '../types-BtH3scgE.js';
2
+ import '../board-live-cards-public-DSRamFm8.js';
3
+ import '../storage-interface-D-iEiTJA.js';
9
4
  import '../execution-refs.js';
10
5
  import '../types-BBhqYGhE.js';
11
- import '../board-platform-adapter-async-JZPCzZnH.js';
12
- import '../storage-async-interface-DhlOVPSp.js';
13
- import '../board-live-cards-public-async-3hUuHxDx.js';
14
- import '../chat-storage-lib-DB9iSai2.js';
15
- import '../board-live-cards-mcp.js';
16
- import '../server-jobs-queue-runner/index.js';
17
- import '../queue-lane-registry-PaZuFpwp.js';
6
+ import '../board-platform-adapter-async-JP9V-U5E.js';
7
+ import '../storage-async-interface-CG0bMqvE.js';
8
+ import '../board-live-cards-public-async-DlyC3PgC.js';
18
9
 
19
10
  /**
20
- * server-runtime/routes-runtime-api.ts (controlface)
11
+ * server-runtime-controlface
21
12
  *
22
- * Control-plane HTTP routes extracted from createSingleBoardServerRuntime.
23
- * Handles board lifecycle, card CRUD, chats, file upload/download, and
24
- * the MCP controlplane tool endpoint.
13
+ * MCP-only server runtime surface.
14
+ * POST /mcp
15
+ * POST /mcp-raw
16
+ * POST /mcp-actions
17
+ * POST /mcp-controlplane
18
+ * POST /mcp-webhooks
25
19
  *
26
- * The following routes live in sibling modules:
27
- * routes-agentface.ts — POST /mcp, /mcp-raw
28
- * routes-webhooks.ts — POST /mcp-webhooks
29
- * routes-watchers.ts — GET /sse + subscribe/unsubscribe endpoints
20
+ * This package intentionally does not expose /board-status,
21
+ * /cards/*, or /sse watcher routes. Browser builds keep the full dispatcher
22
+ * through a dedicated browser entrypoint.
30
23
  */
31
24
 
32
- interface McpFacadeLike {
33
- manageAddChatEntryAndAnyAttachments: (args: {
34
- cardId: string;
35
- role: string;
36
- text?: string;
37
- turn?: string;
38
- files?: unknown[];
39
- }) => Promise<{
40
- status: 'success';
41
- data: {
42
- id: string;
43
- };
44
- }>;
45
- setChatProcessing: (args: {
46
- cardId: string;
47
- active: boolean;
48
- }) => {
49
- cardId: string;
50
- active: boolean;
51
- };
52
- }
53
- interface RoutesRuntimeApiDeps {
54
- apiBasePath: string;
55
- json: (res: RuntimeResponse, status: number, payload: unknown) => void;
56
- readJsonBody: (req: RuntimeRequest) => Promise<Record<string, unknown>>;
57
- readRawBody: (req: RuntimeRequest) => Promise<Uint8Array>;
58
- initBoardAndSetup: () => Promise<void>;
59
- bootstrapBoard: () => Promise<void>;
60
- buildPublishedRuntimePayload: () => Promise<unknown>;
61
- createMcpControlplaneToolRegistry: () => ToolRegistry;
62
- readCardFromStore: (cardId: string) => Promise<Record<string, unknown> | null>;
63
- patchCard: (cardId: string, patch: Record<string, unknown>) => Promise<void>;
64
- retriggerCard: (cardId: string) => Promise<void>;
65
- applyCardAction: (cardId: string, actionType: string, payload: Record<string, unknown> | null) => Promise<void>;
66
- resolveChatHandlerTarget: (cardId: string) => Promise<unknown>;
67
- createMcpFacade: () => McpFacadeLike;
68
- chatStorePublic: ChatStorePublic;
69
- uploadCardFile: (cardId: string, fileName: string, contentType: string, bytes: Uint8Array, opts?: {
70
- inChat?: boolean;
71
- turnId?: string;
72
- }) => Promise<unknown>;
73
- sendCardFileDownloadResponse: (res: RuntimeResponse, cardId: string, idx: number, expectedStoredName: string | null) => Promise<void>;
74
- }
75
- interface RoutesRuntimeApi {
76
- handleRuntimeApi: (req: RuntimeRequest, res: RuntimeResponse, parsedUrl: URL) => Promise<boolean>;
77
- }
78
- declare function createRoutesRuntimeApi(deps: RoutesRuntimeApiDeps): RoutesRuntimeApi;
25
+ declare function createSingleBoardServerRuntime(options: SingleBoardRuntimeOptions): SingleBoardRuntime;
26
+ declare function createMultiBoardServerRuntime(options: MultiBoardRuntimeOptions): MultiBoardRuntime;
79
27
 
80
- export { type RoutesRuntimeApi, type RoutesRuntimeApiDeps, createRoutesRuntimeApi };
28
+ export { MultiBoardRuntime, MultiBoardRuntimeOptions, SingleBoardRuntime, SingleBoardRuntimeOptions, createMultiBoardServerRuntime, createSingleBoardServerRuntime };
@@ -1,2 +1,2 @@
1
- export{c as createMultiBoardServerRuntime,a as createRoutesRuntimeApi,b as createSingleBoardServerRuntime}from'../chunk-ZXQR7GHT.js';import'../chunk-J5J6BG7B.js';import'../chunk-NTICU4OK.js';import'../chunk-O7NOHKVR.js';import'../chunk-WHDEBJLT.js';import'../chunk-SGV7PU4H.js';import'../chunk-XYN5D3GL.js';import'../chunk-ZJ5M5COT.js';import'../chunk-YGALANRO.js';import'../chunk-6APH25VI.js';import'../chunk-VXJHBWK3.js';import'../chunk-VMW4Z6EF.js';import'../chunk-HEEDJEKM.js';import'../chunk-N6P2JW4W.js';import'../chunk-XQRNDX4Q.js';import'../chunk-BQS3EIEK.js';import'../chunk-VGT3TRQG.js';import'../chunk-WDPOGXTY.js';import'../chunk-PRHQBGPT.js';import'../chunk-JMDHDY6M.js';import'../chunk-VLBB3D6B.js';import'../chunk-MNEOJWPS.js';import'../chunk-KBELAKIY.js';import'../chunk-76ON3V7R.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
1
+ import {a as a$1,b}from'../chunk-H3EHFCDZ.js';import'../chunk-NU5NO5NM.js';import'../chunk-NTICU4OK.js';import'../chunk-O7NOHKVR.js';import'../chunk-2GSI6C45.js';import'../chunk-XYN5D3GL.js';import'../chunk-ZJ5M5COT.js';import'../chunk-6OPXQPSC.js';import'../chunk-FOFGEABN.js';import'../chunk-O5UYCGIN.js';import'../chunk-RKKSVOP2.js';import'../chunk-GU3T75C4.js';import'../chunk-NNSBBO5R.js';import'../chunk-HEEDJEKM.js';import'../chunk-DOFNXJ4C.js';import'../chunk-ANKA7HEJ.js';import'../chunk-44L64VQ2.js';import'../chunk-VGT3TRQG.js';import'../chunk-WDPOGXTY.js';import'../chunk-35N7ONTH.js';import'../chunk-JMDHDY6M.js';import'../chunk-3KC6LBOG.js';import'../chunk-MNEOJWPS.js';import'../chunk-KBELAKIY.js';import'../chunk-Q3OTUDIE.js';import'../chunk-FW4363Y4.js';var a=["/mcp","/mcp-raw","/mcp-actions","/mcp-controlplane","/mcp-webhooks"];function l(n,e){return a.some(r=>e===`${n}${r}`)}function s(n,e){return a.some(r=>{let i=`${r}`;if(!e.startsWith(`${n}/`)||!e.endsWith(i))return false;let t=e.slice(n.length+1,e.length-i.length);return t.length>0&&!t.includes("/")})}function c(n){let e=a$1(n);return {...e,async handleRuntimeApi(r,i,t){return l(e.apiBasePath,t.pathname)?e.handleRuntimeApi(r,i,t):false}}}function d(n){let e=b(n);return {...e,async handleApi(r,i,t){return s(e.apiBasePath,t.pathname)?e.handleApi(r,i,t):false}}}export{d as createMultiBoardServerRuntime,c as createSingleBoardServerRuntime};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkM3OU6IS5_cjs=require('../chunk-M3OU6IS5.cjs'),chunkLPXVVMQT_cjs=require('../chunk-LPXVVMQT.cjs'),chunkKAWQPLIE_cjs=require('../chunk-KAWQPLIE.cjs'),chunk272IYUKT_cjs=require('../chunk-272IYUKT.cjs'),chunkCPAXTVBQ_cjs=require('../chunk-CPAXTVBQ.cjs');require('../chunk-GL2OHR2E.cjs'),require('../chunk-SFVO2LB2.cjs'),require('../chunk-M6STQR5F.cjs'),require('../chunk-IXZG74EW.cjs'),require('../chunk-NMZ6XNLB.cjs'),require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-GNFE24S7.cjs');Object.defineProperty(exports,"appendNotification",{enumerable:true,get:function(){return chunkM3OU6IS5_cjs.c}});Object.defineProperty(exports,"createCardFileOps",{enumerable:true,get:function(){return chunkM3OU6IS5_cjs.j}});Object.defineProperty(exports,"createControlplaneToolHandlers",{enumerable:true,get:function(){return chunkM3OU6IS5_cjs.h}});Object.defineProperty(exports,"createMcpControlplaneToolRegistry",{enumerable:true,get:function(){return chunkM3OU6IS5_cjs.m}});Object.defineProperty(exports,"createMcpFacadeModule",{enumerable:true,get:function(){return chunkM3OU6IS5_cjs.n}});Object.defineProperty(exports,"createMcpToolRegistry",{enumerable:true,get:function(){return chunkM3OU6IS5_cjs.k}});Object.defineProperty(exports,"createMcpWebhookToolRegistry",{enumerable:true,get:function(){return chunkM3OU6IS5_cjs.l}});Object.defineProperty(exports,"createRuntimePayloadModule",{enumerable:true,get:function(){return chunkM3OU6IS5_cjs.i}});Object.defineProperty(exports,"expectControlplaneSuccess",{enumerable:true,get:function(){return chunkM3OU6IS5_cjs.d}});Object.defineProperty(exports,"expectControlplaneSuccessAsync",{enumerable:true,get:function(){return chunkM3OU6IS5_cjs.e}});Object.defineProperty(exports,"getCardMetaKey",{enumerable:true,get:function(){return chunkM3OU6IS5_cjs.f}});Object.defineProperty(exports,"hasNonEmptyCardCountStatus",{enumerable:true,get:function(){return chunkM3OU6IS5_cjs.b}});Object.defineProperty(exports,"makeNotificationState",{enumerable:true,get:function(){return chunkM3OU6IS5_cjs.a}});Object.defineProperty(exports,"readCardMetaValue",{enumerable:true,get:function(){return chunkM3OU6IS5_cjs.g}});Object.defineProperty(exports,"getMcpArgNumber",{enumerable:true,get:function(){return chunkLPXVVMQT_cjs.b}});Object.defineProperty(exports,"getMcpArgRecord",{enumerable:true,get:function(){return chunkLPXVVMQT_cjs.c}});Object.defineProperty(exports,"getMcpArgString",{enumerable:true,get:function(){return chunkLPXVVMQT_cjs.a}});Object.defineProperty(exports,"getRequiredMcpArgNumber",{enumerable:true,get:function(){return chunkLPXVVMQT_cjs.e}});Object.defineProperty(exports,"getRequiredMcpArgRecord",{enumerable:true,get:function(){return chunkLPXVVMQT_cjs.d}});Object.defineProperty(exports,"parseMcpUploadBytes",{enumerable:true,get:function(){return chunkLPXVVMQT_cjs.f}});Object.defineProperty(exports,"concatUint8Arrays",{enumerable:true,get:function(){return chunkKAWQPLIE_cjs.d}});Object.defineProperty(exports,"escapeRegExp",{enumerable:true,get:function(){return chunkKAWQPLIE_cjs.c}});Object.defineProperty(exports,"executionWhatToRunValue",{enumerable:true,get:function(){return chunkKAWQPLIE_cjs.b}});Object.defineProperty(exports,"isAsyncBoardPlatformAdapter",{enumerable:true,get:function(){return chunkKAWQPLIE_cjs.a}});Object.defineProperty(exports,"extractMcpFailureMessage",{enumerable:true,get:function(){return chunk272IYUKT_cjs.b}});Object.defineProperty(exports,"invokeMcpTool",{enumerable:true,get:function(){return chunk272IYUKT_cjs.a}});Object.defineProperty(exports,"createHostedBoardQueueLaneRegistry",{enumerable:true,get:function(){return chunkCPAXTVBQ_cjs.a}});//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkZK3E7L4Y_cjs=require('../chunk-ZK3E7L4Y.cjs'),chunkLPXVVMQT_cjs=require('../chunk-LPXVVMQT.cjs'),chunk272IYUKT_cjs=require('../chunk-272IYUKT.cjs'),chunkETW3BXHD_cjs=require('../chunk-ETW3BXHD.cjs'),chunkBQUQTOPB_cjs=require('../chunk-BQUQTOPB.cjs');require('../chunk-GPCMBPLK.cjs'),require('../chunk-37HDEW26.cjs'),require('../chunk-7JVHYHT2.cjs'),require('../chunk-VQCIOKJV.cjs'),require('../chunk-7QZ267XP.cjs'),require('../chunk-IXZG74EW.cjs'),require('../chunk-HWYMZK3N.cjs'),require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-GNFE24S7.cjs');Object.defineProperty(exports,"appendNotification",{enumerable:true,get:function(){return chunkZK3E7L4Y_cjs.c}});Object.defineProperty(exports,"createCardFileOps",{enumerable:true,get:function(){return chunkZK3E7L4Y_cjs.j}});Object.defineProperty(exports,"createControlplaneToolHandlers",{enumerable:true,get:function(){return chunkZK3E7L4Y_cjs.h}});Object.defineProperty(exports,"createMcpControlplaneToolRegistry",{enumerable:true,get:function(){return chunkZK3E7L4Y_cjs.m}});Object.defineProperty(exports,"createMcpFacadeModule",{enumerable:true,get:function(){return chunkZK3E7L4Y_cjs.n}});Object.defineProperty(exports,"createMcpToolRegistry",{enumerable:true,get:function(){return chunkZK3E7L4Y_cjs.k}});Object.defineProperty(exports,"createMcpWebhookToolRegistry",{enumerable:true,get:function(){return chunkZK3E7L4Y_cjs.l}});Object.defineProperty(exports,"createRuntimePayloadModule",{enumerable:true,get:function(){return chunkZK3E7L4Y_cjs.i}});Object.defineProperty(exports,"expectControlplaneSuccess",{enumerable:true,get:function(){return chunkZK3E7L4Y_cjs.d}});Object.defineProperty(exports,"expectControlplaneSuccessAsync",{enumerable:true,get:function(){return chunkZK3E7L4Y_cjs.e}});Object.defineProperty(exports,"getCardMetaKey",{enumerable:true,get:function(){return chunkZK3E7L4Y_cjs.f}});Object.defineProperty(exports,"hasNonEmptyCardCountStatus",{enumerable:true,get:function(){return chunkZK3E7L4Y_cjs.b}});Object.defineProperty(exports,"makeNotificationState",{enumerable:true,get:function(){return chunkZK3E7L4Y_cjs.a}});Object.defineProperty(exports,"readCardMetaValue",{enumerable:true,get:function(){return chunkZK3E7L4Y_cjs.g}});Object.defineProperty(exports,"getMcpArgNumber",{enumerable:true,get:function(){return chunkLPXVVMQT_cjs.b}});Object.defineProperty(exports,"getMcpArgRecord",{enumerable:true,get:function(){return chunkLPXVVMQT_cjs.c}});Object.defineProperty(exports,"getMcpArgString",{enumerable:true,get:function(){return chunkLPXVVMQT_cjs.a}});Object.defineProperty(exports,"getRequiredMcpArgNumber",{enumerable:true,get:function(){return chunkLPXVVMQT_cjs.e}});Object.defineProperty(exports,"getRequiredMcpArgRecord",{enumerable:true,get:function(){return chunkLPXVVMQT_cjs.d}});Object.defineProperty(exports,"parseMcpUploadBytes",{enumerable:true,get:function(){return chunkLPXVVMQT_cjs.f}});Object.defineProperty(exports,"extractMcpFailureMessage",{enumerable:true,get:function(){return chunk272IYUKT_cjs.b}});Object.defineProperty(exports,"invokeMcpTool",{enumerable:true,get:function(){return chunk272IYUKT_cjs.a}});Object.defineProperty(exports,"createHostedBoardQueueLaneRegistry",{enumerable:true,get:function(){return chunkETW3BXHD_cjs.a}});Object.defineProperty(exports,"concatUint8Arrays",{enumerable:true,get:function(){return chunkBQUQTOPB_cjs.d}});Object.defineProperty(exports,"escapeRegExp",{enumerable:true,get:function(){return chunkBQUQTOPB_cjs.c}});Object.defineProperty(exports,"executionWhatToRunValue",{enumerable:true,get:function(){return chunkBQUQTOPB_cjs.b}});Object.defineProperty(exports,"isAsyncBoardPlatformAdapter",{enumerable:true,get:function(){return chunkBQUQTOPB_cjs.a}});//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,20 +1,20 @@
1
- import { d as BoardRuntimePlatformAdapter } from '../types-BzQY45dH.cjs';
2
- export { A as Awaitable, B as BoardContextConfig, e as BoardRuntimePublic, C as ChatHandlerFlowRunner, D as DescribeEnvelope, H as HostedBoardQueueLaneTuning, I as InvocationAdapter, M as MultiBoardRuntime, b as MultiBoardRuntimeOptions, N as NotificationTransport, Q as QueueLaneRuntimeTuning, f as RuntimeLogger, R as RuntimeRequest, a as RuntimeResponse, S as SingleBoardRuntime, c as SingleBoardRuntimeOptions } from '../types-BzQY45dH.cjs';
1
+ import { d as BoardRuntimePlatformAdapter } from '../types-Ch0u3FKP.cjs';
2
+ export { A as Awaitable, B as BoardContextConfig, c as BoardRuntimeNonCorePublic, e as BoardRuntimePublic, f as BoardWorkerRequest, C as ChatHandlerFlowRunner, D as DescribeEnvelope, H as HostedBoardQueueLaneTuning, I as InvocationAdapter, a as MultiBoardRuntime, M as MultiBoardRuntimeOptions, N as NotificationTransport, Q as QueueLaneRuntimeTuning, R as RuntimeLogger, g as RuntimeRequest, h as RuntimeResponse, b as SingleBoardRuntime, S as SingleBoardRuntimeOptions } from '../types-Ch0u3FKP.cjs';
3
3
  export { HostedBoardQueueLaneRegistryOptions, createHostedBoardQueueLaneRegistry } from '../server-jobs-queue-runner/index.cjs';
4
- export { M as McpControlplaneRegistryDeps, a as McpFacadeForRegistry, b as McpWebhookFacadeForRegistry, T as ToolRegistry, c as createMcpControlplaneToolRegistry, d as createMcpToolRegistry, e as createMcpWebhookToolRegistry } from '../mcp-tool-registries-W3TRj6O5.cjs';
4
+ export { M as McpControlplaneRegistryDeps, a as McpFacadeForRegistry, b as McpWebhookFacadeForRegistry, T as ToolRegistry, c as createMcpControlplaneToolRegistry, d as createMcpToolRegistry, e as createMcpWebhookToolRegistry } from '../mcp-tool-registries-CRtea2x4.cjs';
5
5
  import { createBoardLiveCardsMcp, BoardLiveCardsMcpBoardDeps, BoardLiveCardsMcpNonCoreDeps, BoardLiveCardsMcpCardStoreDeps, BoardLiveCardsMcp } from '../board-live-cards-mcp.cjs';
6
- import { a as CommandResult } from '../board-live-cards-public-DQzPe7A9.cjs';
7
- export { B as BoardChangeNotification, c as BoardLiveCardsPublic, d as BoardNonCorePlatformAdapter, e as BoardPlatformAdapter, f as BoardWorkerRequest, C as CommandInput } from '../board-live-cards-public-DQzPe7A9.cjs';
8
- import { C as CardFileMetadataStore } from '../artifacts-store-lib-D9nMkVcE.cjs';
9
- import { A as AsyncBoardPlatformAdapter } from '../board-platform-adapter-async-DOfEq_HC.cjs';
6
+ import { a as CommandResult } from '../board-live-cards-public-BT5HrgqZ.cjs';
7
+ export { B as BoardChangeNotification, c as BoardLiveCardsPublic, d as BoardNonCorePlatformAdapter, e as BoardPlatformAdapter, f as ChatStorage, C as CommandInput } from '../board-live-cards-public-BT5HrgqZ.cjs';
8
+ import { S as SseHub } from '../sse-hub-CYXisfXJ.cjs';
9
+ import { C as CardFileMetadataStore } from '../artifacts-store-lib-C6qBpMfU.cjs';
10
+ import { A as AsyncBoardPlatformAdapter } from '../board-platform-adapter-async-BZIftm36.cjs';
10
11
  import { ExecutionRef } from '../execution-refs.cjs';
11
- export { A as AsyncBoardLiveCardsPublic } from '../board-live-cards-public-async-CgMCYYft.cjs';
12
- export { B as BlobStorage, K as KVStorage, a as KindValueRef } from '../storage-interface-BFiD3kyB.cjs';
13
- export { C as ChatStorage } from '../chat-storage-lib-B9Q34Dyv.cjs';
12
+ export { A as AsyncBoardLiveCardsPublic } from '../board-live-cards-public-async-CYjr4mgX.cjs';
13
+ export { B as BlobStorage, K as KVStorage, a as KindValueRef } from '../storage-interface-D-iEiTJA.cjs';
14
14
  import '../queue-lane-registry-PaZuFpwp.cjs';
15
15
  import '../chat-store-public.cjs';
16
16
  import '../types-BBhqYGhE.cjs';
17
- import '../storage-async-interface-BRR4eBjx.cjs';
17
+ import '../storage-async-interface-CyO-zwVQ.cjs';
18
18
 
19
19
  /**
20
20
  * server-runtime/notifications.ts
@@ -156,6 +156,7 @@ interface McpFacadeDeps {
156
156
  reportSourceFetchFailure: (token: string, reason: string) => Promise<CommandResult>;
157
157
  uploadCardFile: (cardId: string, fileName: string, contentType: string, bytes: Uint8Array, opts?: {
158
158
  inChat?: boolean;
159
+ suppressChatRecordWrite?: boolean;
159
160
  }) => unknown | Promise<unknown>;
160
161
  chatStorePublic: Parameters<typeof createBoardLiveCardsMcp>[0]['chatStore'];
161
162
  serverUrl: string | null;
@@ -220,8 +221,8 @@ interface RuntimePayloadDeps {
220
221
  /** Live reference to the runtime's board-contexts array (read on each call). */
221
222
  boardContexts: ReadonlyArray<RuntimePayloadBoardContext>;
222
223
  readCardDefinitions: () => Promise<Array<Record<string, unknown>>>;
223
- readChatRecords: (cardId: string) => Array<Record<string, unknown>>;
224
- getChatProcessing: (cardId: string) => boolean;
224
+ readChatRecords: (cardId: string) => Promise<Array<Record<string, unknown>>>;
225
+ getChatProcessing: (cardId: string) => Promise<boolean>;
225
226
  }
226
227
  interface RuntimePayloadModule {
227
228
  readStatusSnapshot: () => Promise<unknown>;
@@ -246,17 +247,27 @@ declare function createRuntimePayloadModule(deps: RuntimePayloadDeps): RuntimePa
246
247
 
247
248
  interface ControlplaneToolHandlersDeps {
248
249
  boardId: string;
250
+ bootstrapBoard: () => Promise<void>;
251
+ sseHub: Pick<SseHub, 'has' | 'subscribeChat' | 'unsubscribeChat'>;
252
+ onChannelSubscribed?: (clientId: string, channelName: string, params: {
253
+ cardId?: string;
254
+ }) => void;
255
+ onChannelUnsubscribed?: (clientId: string, channelName: string, params: {
256
+ cardId?: string;
257
+ }) => void;
249
258
  /** Returns the live MCP facade (chat processing getters/setters). */
250
259
  getMcpFacade: () => {
251
260
  setChatProcessing: (args: {
252
261
  cardId: string;
253
262
  active: boolean;
254
- }) => unknown;
263
+ }) => Promise<{
264
+ active: boolean;
265
+ }>;
255
266
  getChatProcessing: (args: {
256
267
  cardId: string;
257
- }) => {
268
+ }) => Promise<{
258
269
  active: boolean;
259
- };
270
+ }>;
260
271
  };
261
272
  /** Returns the card-store facade used for meta reads/writes. */
262
273
  getMcpCardStoreFacade: () => BoardLiveCardsMcpCardStoreDeps;
@@ -265,22 +276,50 @@ interface ControlplaneToolHandlers {
265
276
  requireCardArgs: (args: Record<string, unknown>) => {
266
277
  cardId: string;
267
278
  };
268
- setChatProcessing: (args: Record<string, unknown>, active: boolean) => {
279
+ subscribeChat: (args: Record<string, unknown>) => Promise<{
280
+ status: 'success';
281
+ data: {
282
+ boardId: string;
283
+ cardId: string;
284
+ clientId: string;
285
+ subscribed: boolean;
286
+ };
287
+ }>;
288
+ unsubscribeChat: (args: Record<string, unknown>) => Promise<{
289
+ status: 'success';
290
+ data: {
291
+ boardId: string;
292
+ cardId: string;
293
+ clientId: string;
294
+ subscribed: boolean;
295
+ };
296
+ }>;
297
+ watchChannel: (args: Record<string, unknown>, subscribed: boolean) => Promise<{
298
+ status: 'success';
299
+ data: {
300
+ boardId: string;
301
+ clientId: string;
302
+ channelName: string;
303
+ subscribed: boolean;
304
+ cardId?: string;
305
+ };
306
+ }>;
307
+ setChatProcessing: (args: Record<string, unknown>, active: boolean) => Promise<{
269
308
  status: 'success';
270
309
  data: {
271
310
  boardId: string;
272
311
  cardId: string;
273
312
  active: boolean;
274
313
  };
275
- };
276
- getChatProcessing: (args: Record<string, unknown>) => {
314
+ }>;
315
+ getChatProcessing: (args: Record<string, unknown>) => Promise<{
277
316
  status: 'success';
278
317
  data: {
279
318
  boardId: string;
280
319
  cardId: string;
281
320
  active: boolean;
282
321
  };
283
- };
322
+ }>;
284
323
  setCardMeta: (args: Record<string, unknown>) => Promise<{
285
324
  status: 'success';
286
325
  data: {
@@ -346,12 +385,13 @@ interface CardFileOpsDeps {
346
385
  /** Apply a local-only update to a card; same shape as updateCardLocalOnly. */
347
386
  updateCardLocalOnly: (cardId: string, updateFn: (card: Record<string, unknown>) => Record<string, unknown> | void) => Promise<void>;
348
387
  /** Append a chat record (used for in-chat upload announcements). */
349
- writeChatRecord: (cardId: string, role: string, text: string, files: unknown[], turnId: string) => unknown;
388
+ writeChatRecord: (cardId: string, role: string, text: string, files: unknown[], turnId: string) => unknown | Promise<unknown>;
350
389
  }
351
390
  interface CardFileOps {
352
391
  uploadCardFile: (cardId: string, requestedName: string, contentType: string, buffer: Uint8Array, opts?: {
353
392
  inChat?: boolean;
354
393
  turnId?: string;
394
+ suppressChatRecordWrite?: boolean;
355
395
  }) => Promise<{
356
396
  ok: true;
357
397
  file: Record<string, unknown>;
@@ -1,20 +1,20 @@
1
- import { d as BoardRuntimePlatformAdapter } from '../types-CF2xUcZW.js';
2
- export { A as Awaitable, B as BoardContextConfig, e as BoardRuntimePublic, C as ChatHandlerFlowRunner, D as DescribeEnvelope, H as HostedBoardQueueLaneTuning, I as InvocationAdapter, M as MultiBoardRuntime, b as MultiBoardRuntimeOptions, N as NotificationTransport, Q as QueueLaneRuntimeTuning, f as RuntimeLogger, R as RuntimeRequest, a as RuntimeResponse, S as SingleBoardRuntime, c as SingleBoardRuntimeOptions } from '../types-CF2xUcZW.js';
1
+ import { d as BoardRuntimePlatformAdapter } from '../types-BtH3scgE.js';
2
+ export { A as Awaitable, B as BoardContextConfig, c as BoardRuntimeNonCorePublic, e as BoardRuntimePublic, f as BoardWorkerRequest, C as ChatHandlerFlowRunner, D as DescribeEnvelope, H as HostedBoardQueueLaneTuning, I as InvocationAdapter, a as MultiBoardRuntime, M as MultiBoardRuntimeOptions, N as NotificationTransport, Q as QueueLaneRuntimeTuning, R as RuntimeLogger, g as RuntimeRequest, h as RuntimeResponse, b as SingleBoardRuntime, S as SingleBoardRuntimeOptions } from '../types-BtH3scgE.js';
3
3
  export { HostedBoardQueueLaneRegistryOptions, createHostedBoardQueueLaneRegistry } from '../server-jobs-queue-runner/index.js';
4
- export { M as McpControlplaneRegistryDeps, a as McpFacadeForRegistry, b as McpWebhookFacadeForRegistry, T as ToolRegistry, c as createMcpControlplaneToolRegistry, d as createMcpToolRegistry, e as createMcpWebhookToolRegistry } from '../mcp-tool-registries-BBObLYga.js';
4
+ export { M as McpControlplaneRegistryDeps, a as McpFacadeForRegistry, b as McpWebhookFacadeForRegistry, T as ToolRegistry, c as createMcpControlplaneToolRegistry, d as createMcpToolRegistry, e as createMcpWebhookToolRegistry } from '../mcp-tool-registries-D3rWSppt.js';
5
5
  import { createBoardLiveCardsMcp, BoardLiveCardsMcpBoardDeps, BoardLiveCardsMcpNonCoreDeps, BoardLiveCardsMcpCardStoreDeps, BoardLiveCardsMcp } from '../board-live-cards-mcp.js';
6
- import { a as CommandResult } from '../board-live-cards-public-D-DJek3X.js';
7
- export { B as BoardChangeNotification, c as BoardLiveCardsPublic, d as BoardNonCorePlatformAdapter, e as BoardPlatformAdapter, f as BoardWorkerRequest, C as CommandInput } from '../board-live-cards-public-D-DJek3X.js';
8
- import { C as CardFileMetadataStore } from '../artifacts-store-lib-DSSMqVL2.js';
9
- import { A as AsyncBoardPlatformAdapter } from '../board-platform-adapter-async-JZPCzZnH.js';
6
+ import { a as CommandResult } from '../board-live-cards-public-DSRamFm8.js';
7
+ export { B as BoardChangeNotification, c as BoardLiveCardsPublic, d as BoardNonCorePlatformAdapter, e as BoardPlatformAdapter, f as ChatStorage, C as CommandInput } from '../board-live-cards-public-DSRamFm8.js';
8
+ import { S as SseHub } from '../sse-hub-Dodwtc3_.js';
9
+ import { C as CardFileMetadataStore } from '../artifacts-store-lib-D4qf7Q-7.js';
10
+ import { A as AsyncBoardPlatformAdapter } from '../board-platform-adapter-async-JP9V-U5E.js';
10
11
  import { ExecutionRef } from '../execution-refs.js';
11
- export { A as AsyncBoardLiveCardsPublic } from '../board-live-cards-public-async-3hUuHxDx.js';
12
- export { B as BlobStorage, K as KVStorage, a as KindValueRef } from '../storage-interface-BFiD3kyB.js';
13
- export { C as ChatStorage } from '../chat-storage-lib-DB9iSai2.js';
12
+ export { A as AsyncBoardLiveCardsPublic } from '../board-live-cards-public-async-DlyC3PgC.js';
13
+ export { B as BlobStorage, K as KVStorage, a as KindValueRef } from '../storage-interface-D-iEiTJA.js';
14
14
  import '../queue-lane-registry-PaZuFpwp.js';
15
15
  import '../chat-store-public.js';
16
16
  import '../types-BBhqYGhE.js';
17
- import '../storage-async-interface-DhlOVPSp.js';
17
+ import '../storage-async-interface-CG0bMqvE.js';
18
18
 
19
19
  /**
20
20
  * server-runtime/notifications.ts
@@ -156,6 +156,7 @@ interface McpFacadeDeps {
156
156
  reportSourceFetchFailure: (token: string, reason: string) => Promise<CommandResult>;
157
157
  uploadCardFile: (cardId: string, fileName: string, contentType: string, bytes: Uint8Array, opts?: {
158
158
  inChat?: boolean;
159
+ suppressChatRecordWrite?: boolean;
159
160
  }) => unknown | Promise<unknown>;
160
161
  chatStorePublic: Parameters<typeof createBoardLiveCardsMcp>[0]['chatStore'];
161
162
  serverUrl: string | null;
@@ -220,8 +221,8 @@ interface RuntimePayloadDeps {
220
221
  /** Live reference to the runtime's board-contexts array (read on each call). */
221
222
  boardContexts: ReadonlyArray<RuntimePayloadBoardContext>;
222
223
  readCardDefinitions: () => Promise<Array<Record<string, unknown>>>;
223
- readChatRecords: (cardId: string) => Array<Record<string, unknown>>;
224
- getChatProcessing: (cardId: string) => boolean;
224
+ readChatRecords: (cardId: string) => Promise<Array<Record<string, unknown>>>;
225
+ getChatProcessing: (cardId: string) => Promise<boolean>;
225
226
  }
226
227
  interface RuntimePayloadModule {
227
228
  readStatusSnapshot: () => Promise<unknown>;
@@ -246,17 +247,27 @@ declare function createRuntimePayloadModule(deps: RuntimePayloadDeps): RuntimePa
246
247
 
247
248
  interface ControlplaneToolHandlersDeps {
248
249
  boardId: string;
250
+ bootstrapBoard: () => Promise<void>;
251
+ sseHub: Pick<SseHub, 'has' | 'subscribeChat' | 'unsubscribeChat'>;
252
+ onChannelSubscribed?: (clientId: string, channelName: string, params: {
253
+ cardId?: string;
254
+ }) => void;
255
+ onChannelUnsubscribed?: (clientId: string, channelName: string, params: {
256
+ cardId?: string;
257
+ }) => void;
249
258
  /** Returns the live MCP facade (chat processing getters/setters). */
250
259
  getMcpFacade: () => {
251
260
  setChatProcessing: (args: {
252
261
  cardId: string;
253
262
  active: boolean;
254
- }) => unknown;
263
+ }) => Promise<{
264
+ active: boolean;
265
+ }>;
255
266
  getChatProcessing: (args: {
256
267
  cardId: string;
257
- }) => {
268
+ }) => Promise<{
258
269
  active: boolean;
259
- };
270
+ }>;
260
271
  };
261
272
  /** Returns the card-store facade used for meta reads/writes. */
262
273
  getMcpCardStoreFacade: () => BoardLiveCardsMcpCardStoreDeps;
@@ -265,22 +276,50 @@ interface ControlplaneToolHandlers {
265
276
  requireCardArgs: (args: Record<string, unknown>) => {
266
277
  cardId: string;
267
278
  };
268
- setChatProcessing: (args: Record<string, unknown>, active: boolean) => {
279
+ subscribeChat: (args: Record<string, unknown>) => Promise<{
280
+ status: 'success';
281
+ data: {
282
+ boardId: string;
283
+ cardId: string;
284
+ clientId: string;
285
+ subscribed: boolean;
286
+ };
287
+ }>;
288
+ unsubscribeChat: (args: Record<string, unknown>) => Promise<{
289
+ status: 'success';
290
+ data: {
291
+ boardId: string;
292
+ cardId: string;
293
+ clientId: string;
294
+ subscribed: boolean;
295
+ };
296
+ }>;
297
+ watchChannel: (args: Record<string, unknown>, subscribed: boolean) => Promise<{
298
+ status: 'success';
299
+ data: {
300
+ boardId: string;
301
+ clientId: string;
302
+ channelName: string;
303
+ subscribed: boolean;
304
+ cardId?: string;
305
+ };
306
+ }>;
307
+ setChatProcessing: (args: Record<string, unknown>, active: boolean) => Promise<{
269
308
  status: 'success';
270
309
  data: {
271
310
  boardId: string;
272
311
  cardId: string;
273
312
  active: boolean;
274
313
  };
275
- };
276
- getChatProcessing: (args: Record<string, unknown>) => {
314
+ }>;
315
+ getChatProcessing: (args: Record<string, unknown>) => Promise<{
277
316
  status: 'success';
278
317
  data: {
279
318
  boardId: string;
280
319
  cardId: string;
281
320
  active: boolean;
282
321
  };
283
- };
322
+ }>;
284
323
  setCardMeta: (args: Record<string, unknown>) => Promise<{
285
324
  status: 'success';
286
325
  data: {
@@ -346,12 +385,13 @@ interface CardFileOpsDeps {
346
385
  /** Apply a local-only update to a card; same shape as updateCardLocalOnly. */
347
386
  updateCardLocalOnly: (cardId: string, updateFn: (card: Record<string, unknown>) => Record<string, unknown> | void) => Promise<void>;
348
387
  /** Append a chat record (used for in-chat upload announcements). */
349
- writeChatRecord: (cardId: string, role: string, text: string, files: unknown[], turnId: string) => unknown;
388
+ writeChatRecord: (cardId: string, role: string, text: string, files: unknown[], turnId: string) => unknown | Promise<unknown>;
350
389
  }
351
390
  interface CardFileOps {
352
391
  uploadCardFile: (cardId: string, requestedName: string, contentType: string, buffer: Uint8Array, opts?: {
353
392
  inChat?: boolean;
354
393
  turnId?: string;
394
+ suppressChatRecordWrite?: boolean;
355
395
  }) => Promise<{
356
396
  ok: true;
357
397
  file: Record<string, unknown>;
@@ -1,2 +1,2 @@
1
- export{c as appendNotification,j as createCardFileOps,h as createControlplaneToolHandlers,m as createMcpControlplaneToolRegistry,n as createMcpFacadeModule,k as createMcpToolRegistry,l as createMcpWebhookToolRegistry,i as createRuntimePayloadModule,d as expectControlplaneSuccess,e as expectControlplaneSuccessAsync,f as getCardMetaKey,b as hasNonEmptyCardCountStatus,a as makeNotificationState,g as readCardMetaValue}from'../chunk-J5J6BG7B.js';export{b as getMcpArgNumber,c as getMcpArgRecord,a as getMcpArgString,e as getRequiredMcpArgNumber,d as getRequiredMcpArgRecord,f as parseMcpUploadBytes}from'../chunk-O7NOHKVR.js';export{d as concatUint8Arrays,c as escapeRegExp,b as executionWhatToRunValue,a as isAsyncBoardPlatformAdapter}from'../chunk-SGV7PU4H.js';export{b as extractMcpFailureMessage,a as invokeMcpTool}from'../chunk-ZJ5M5COT.js';export{a as createHostedBoardQueueLaneRegistry}from'../chunk-YGALANRO.js';import'../chunk-VXJHBWK3.js';import'../chunk-BQS3EIEK.js';import'../chunk-PRHQBGPT.js';import'../chunk-JMDHDY6M.js';import'../chunk-VLBB3D6B.js';import'../chunk-MNEOJWPS.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
1
+ export{c as appendNotification,j as createCardFileOps,h as createControlplaneToolHandlers,m as createMcpControlplaneToolRegistry,n as createMcpFacadeModule,k as createMcpToolRegistry,l as createMcpWebhookToolRegistry,i as createRuntimePayloadModule,d as expectControlplaneSuccess,e as expectControlplaneSuccessAsync,f as getCardMetaKey,b as hasNonEmptyCardCountStatus,a as makeNotificationState,g as readCardMetaValue}from'../chunk-NU5NO5NM.js';export{b as getMcpArgNumber,c as getMcpArgRecord,a as getMcpArgString,e as getRequiredMcpArgNumber,d as getRequiredMcpArgRecord,f as parseMcpUploadBytes}from'../chunk-O7NOHKVR.js';export{b as extractMcpFailureMessage,a as invokeMcpTool}from'../chunk-ZJ5M5COT.js';export{a as createHostedBoardQueueLaneRegistry}from'../chunk-6OPXQPSC.js';export{d as concatUint8Arrays,c as escapeRegExp,b as executionWhatToRunValue,a as isAsyncBoardPlatformAdapter}from'../chunk-FOFGEABN.js';import'../chunk-RKKSVOP2.js';import'../chunk-NNSBBO5R.js';import'../chunk-ANKA7HEJ.js';import'../chunk-44L64VQ2.js';import'../chunk-35N7ONTH.js';import'../chunk-JMDHDY6M.js';import'../chunk-3KC6LBOG.js';import'../chunk-MNEOJWPS.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- 'use strict';var chunk7ICPAABP_cjs=require('../chunk-7ICPAABP.cjs');require('../chunk-KAWQPLIE.cjs'),require('../chunk-SFVO2LB2.cjs'),require('../chunk-GNFE24S7.cjs');Object.defineProperty(exports,"createRoutesWatchers",{enumerable:true,get:function(){return chunk7ICPAABP_cjs.b}});Object.defineProperty(exports,"createSseHub",{enumerable:true,get:function(){return chunk7ICPAABP_cjs.a}});//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkIQIZA7TN_cjs=require('../chunk-IQIZA7TN.cjs');require('../chunk-BQUQTOPB.cjs'),require('../chunk-VQCIOKJV.cjs'),require('../chunk-GNFE24S7.cjs');Object.defineProperty(exports,"createRoutesWatchers",{enumerable:true,get:function(){return chunkIQIZA7TN_cjs.b}});Object.defineProperty(exports,"createSseHub",{enumerable:true,get:function(){return chunkIQIZA7TN_cjs.a}});//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,69 +1,13 @@
1
- import { a as RuntimeResponse, R as RuntimeRequest } from '../types-BzQY45dH.cjs';
2
- import { C as ChatStorage } from '../chat-storage-lib-B9Q34Dyv.cjs';
3
- import '../artifacts-store-lib-D9nMkVcE.cjs';
4
- import '../storage-interface-BFiD3kyB.cjs';
5
- import '../board-live-cards-public-DQzPe7A9.cjs';
1
+ import { h as RuntimeResponse, g as RuntimeRequest } from '../types-Ch0u3FKP.cjs';
2
+ import { S as SseHub } from '../sse-hub-CYXisfXJ.cjs';
3
+ export { a as SseHubDeps, c as createSseHub } from '../sse-hub-CYXisfXJ.cjs';
4
+ import '../board-live-cards-public-BT5HrgqZ.cjs';
5
+ import '../storage-interface-D-iEiTJA.cjs';
6
6
  import '../execution-refs.cjs';
7
7
  import '../types-BBhqYGhE.cjs';
8
- import '../board-platform-adapter-async-DOfEq_HC.cjs';
9
- import '../storage-async-interface-BRR4eBjx.cjs';
10
- import '../board-live-cards-public-async-CgMCYYft.cjs';
11
-
12
- /**
13
- * server-runtime/sse-hub.ts
14
- *
15
- * Owns the per-runtime SSE client registry, the chat-subscription scanner, and
16
- * all broadcast helpers. The HTTP route handler for the SSE endpoint still
17
- * lives in index.ts because it sequences SSE registration with runtime
18
- * bootstrap; this hub exposes the primitives it needs.
19
- *
20
- * State owned here:
21
- * - sseClients (clientId -> { res, subscribedChatCardIds })
22
- * - sseEventId monotonic counter
23
- * - chat-subscription scan timer + per-card cursor/processing snapshots
24
- *
25
- * Dependencies passed in by the runtime:
26
- * - chatStorage for tailing chat history
27
- * - readChatRecords for building chat-scoped notifications
28
- * - optional host hooks (onSseClientDisconnected, etc.)
29
- */
30
-
31
- interface SseClientState {
32
- res: RuntimeResponse;
33
- subscribedChatCardIds: Set<string>;
34
- }
35
- interface SseHub {
36
- /** Number of currently-registered SSE clients. */
37
- size(): number;
38
- /** Whether a client id is currently registered. */
39
- has(clientId: string): boolean;
40
- /** Returns the existing client state if present (used to migrate chat subs on reconnect). */
41
- get(clientId: string): SseClientState | undefined;
42
- /** Build a wire-format SSE frame for the given payload. Increments the event id. */
43
- buildFrame(payload: unknown): string;
44
- /** Best-effort transport-level flush for the underlying response object. */
45
- flushTransport(res: RuntimeResponse): void;
46
- /** Register a fresh client. Any prior registration with the same id is disconnected first. */
47
- register(clientId: string, res: RuntimeResponse, subscribedChatCardIds?: Set<string>): void;
48
- /** Drop a registered client. If expectedRes is supplied and does not match, no-op. */
49
- disconnect(clientId: string, expectedRes?: RuntimeResponse): void;
50
- /** Write an SSE frame to one client; transport errors disconnect that client. */
51
- writeFrame(clientId: string, payload: unknown): void;
52
- /** Subscribe a client to a card's chat stream and prime its cursor. */
53
- subscribeChat(clientId: string, cardId: string): boolean;
54
- /** Unsubscribe a client from a card's chat stream. */
55
- unsubscribeChat(clientId: string, cardId: string): boolean;
56
- /** Broadcast a notification batch; chat-scoped notes are routed to chat-subscribed clients. */
57
- broadcastNotificationBatch(notifications: unknown[]): void;
58
- /** Push a fresh card-chats notification to every chat-subscribed client. */
59
- broadcastCardChats(cardId: string, receiving?: boolean): void;
60
- }
61
- interface SseHubDeps {
62
- chatStorage: ChatStorage;
63
- readChatRecords: (cardId: string) => Array<Record<string, unknown>>;
64
- onSseClientDisconnected?: (clientId: string) => void;
65
- }
66
- declare function createSseHub(deps: SseHubDeps): SseHub;
8
+ import '../board-platform-adapter-async-BZIftm36.cjs';
9
+ import '../storage-async-interface-CyO-zwVQ.cjs';
10
+ import '../board-live-cards-public-async-CYjr4mgX.cjs';
67
11
 
68
12
  /**
69
13
  * server-runtime/routes-sse.ts
@@ -124,4 +68,4 @@ interface RoutesWatchers {
124
68
  }
125
69
  declare function createRoutesWatchers(deps: RoutesWatchersDeps): RoutesWatchers;
126
70
 
127
- export { type RoutesWatchers, type RoutesWatchersDeps, type SseHub, type SseHubDeps, createRoutesWatchers, createSseHub };
71
+ export { type RoutesWatchers, type RoutesWatchersDeps, SseHub, createRoutesWatchers };
@@ -1,69 +1,13 @@
1
- import { a as RuntimeResponse, R as RuntimeRequest } from '../types-CF2xUcZW.js';
2
- import { C as ChatStorage } from '../chat-storage-lib-DB9iSai2.js';
3
- import '../artifacts-store-lib-DSSMqVL2.js';
4
- import '../storage-interface-BFiD3kyB.js';
5
- import '../board-live-cards-public-D-DJek3X.js';
1
+ import { h as RuntimeResponse, g as RuntimeRequest } from '../types-BtH3scgE.js';
2
+ import { S as SseHub } from '../sse-hub-Dodwtc3_.js';
3
+ export { a as SseHubDeps, c as createSseHub } from '../sse-hub-Dodwtc3_.js';
4
+ import '../board-live-cards-public-DSRamFm8.js';
5
+ import '../storage-interface-D-iEiTJA.js';
6
6
  import '../execution-refs.js';
7
7
  import '../types-BBhqYGhE.js';
8
- import '../board-platform-adapter-async-JZPCzZnH.js';
9
- import '../storage-async-interface-DhlOVPSp.js';
10
- import '../board-live-cards-public-async-3hUuHxDx.js';
11
-
12
- /**
13
- * server-runtime/sse-hub.ts
14
- *
15
- * Owns the per-runtime SSE client registry, the chat-subscription scanner, and
16
- * all broadcast helpers. The HTTP route handler for the SSE endpoint still
17
- * lives in index.ts because it sequences SSE registration with runtime
18
- * bootstrap; this hub exposes the primitives it needs.
19
- *
20
- * State owned here:
21
- * - sseClients (clientId -> { res, subscribedChatCardIds })
22
- * - sseEventId monotonic counter
23
- * - chat-subscription scan timer + per-card cursor/processing snapshots
24
- *
25
- * Dependencies passed in by the runtime:
26
- * - chatStorage for tailing chat history
27
- * - readChatRecords for building chat-scoped notifications
28
- * - optional host hooks (onSseClientDisconnected, etc.)
29
- */
30
-
31
- interface SseClientState {
32
- res: RuntimeResponse;
33
- subscribedChatCardIds: Set<string>;
34
- }
35
- interface SseHub {
36
- /** Number of currently-registered SSE clients. */
37
- size(): number;
38
- /** Whether a client id is currently registered. */
39
- has(clientId: string): boolean;
40
- /** Returns the existing client state if present (used to migrate chat subs on reconnect). */
41
- get(clientId: string): SseClientState | undefined;
42
- /** Build a wire-format SSE frame for the given payload. Increments the event id. */
43
- buildFrame(payload: unknown): string;
44
- /** Best-effort transport-level flush for the underlying response object. */
45
- flushTransport(res: RuntimeResponse): void;
46
- /** Register a fresh client. Any prior registration with the same id is disconnected first. */
47
- register(clientId: string, res: RuntimeResponse, subscribedChatCardIds?: Set<string>): void;
48
- /** Drop a registered client. If expectedRes is supplied and does not match, no-op. */
49
- disconnect(clientId: string, expectedRes?: RuntimeResponse): void;
50
- /** Write an SSE frame to one client; transport errors disconnect that client. */
51
- writeFrame(clientId: string, payload: unknown): void;
52
- /** Subscribe a client to a card's chat stream and prime its cursor. */
53
- subscribeChat(clientId: string, cardId: string): boolean;
54
- /** Unsubscribe a client from a card's chat stream. */
55
- unsubscribeChat(clientId: string, cardId: string): boolean;
56
- /** Broadcast a notification batch; chat-scoped notes are routed to chat-subscribed clients. */
57
- broadcastNotificationBatch(notifications: unknown[]): void;
58
- /** Push a fresh card-chats notification to every chat-subscribed client. */
59
- broadcastCardChats(cardId: string, receiving?: boolean): void;
60
- }
61
- interface SseHubDeps {
62
- chatStorage: ChatStorage;
63
- readChatRecords: (cardId: string) => Array<Record<string, unknown>>;
64
- onSseClientDisconnected?: (clientId: string) => void;
65
- }
66
- declare function createSseHub(deps: SseHubDeps): SseHub;
8
+ import '../board-platform-adapter-async-JP9V-U5E.js';
9
+ import '../storage-async-interface-CG0bMqvE.js';
10
+ import '../board-live-cards-public-async-DlyC3PgC.js';
67
11
 
68
12
  /**
69
13
  * server-runtime/routes-sse.ts
@@ -124,4 +68,4 @@ interface RoutesWatchers {
124
68
  }
125
69
  declare function createRoutesWatchers(deps: RoutesWatchersDeps): RoutesWatchers;
126
70
 
127
- export { type RoutesWatchers, type RoutesWatchersDeps, type SseHub, type SseHubDeps, createRoutesWatchers, createSseHub };
71
+ export { type RoutesWatchers, type RoutesWatchersDeps, SseHub, createRoutesWatchers };
@@ -1,2 +1,2 @@
1
- export{b as createRoutesWatchers,a as createSseHub}from'../chunk-WHDEBJLT.js';import'../chunk-SGV7PU4H.js';import'../chunk-BQS3EIEK.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
1
+ export{b as createRoutesWatchers,a as createSseHub}from'../chunk-2GSI6C45.js';import'../chunk-FOFGEABN.js';import'../chunk-44L64VQ2.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map