yaml-flow 8.6.4 → 8.7.1

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 (173) hide show
  1. package/browser/adapters/firebase-storage.js +3 -0
  2. package/browser/adapters/firestore-storage.js +3 -0
  3. package/browser/adapters/localstorage-storage.js +4 -0
  4. package/browser/asset-integrity.json +22 -6
  5. package/browser/live-cards.schema.json +10 -1
  6. package/browser/server-runtime-controlface.js +8 -0
  7. package/examples/ARCHITECTURE.md +5 -32
  8. package/examples/board/demo-shell-with-server.html +2 -2
  9. package/examples/board/doc.html +2 -2
  10. package/examples/board/server/board-server.js +4 -2
  11. package/examples/board/test/server-http-test.js +73 -79
  12. package/examples/board-firestore/README.md +81 -0
  13. package/examples/board-firestore/browser/board-runtime.js +263 -0
  14. package/examples/board-firestore/firestore.indexes.json +29 -0
  15. package/examples/board-firestore/package.json +14 -0
  16. package/examples/board-firestore/server/adapters/firestore-archive-factory.js +59 -0
  17. package/examples/board-firestore/server/adapters/firestore-blob-storage.js +82 -0
  18. package/examples/board-firestore/server/adapters/firestore-board-adapter.js +127 -0
  19. package/examples/board-firestore/server/adapters/firestore-journal-storage.js +54 -0
  20. package/examples/board-firestore/server/adapters/firestore-kv-storage.js +47 -0
  21. package/examples/board-firestore/server/adapters/firestore-lock.js +62 -0
  22. package/examples/board-firestore/server/adapters/firestore-queue-storage.js +186 -0
  23. package/examples/board-firestore/server/adapters/firestore-scratch-storage.js +50 -0
  24. package/examples/board-firestore/server/worker.js +146 -0
  25. package/lib/{artifacts-store-lib-BR-Samty.d.cts → artifacts-store-lib-D9nMkVcE.d.cts} +1 -1
  26. package/lib/{artifacts-store-lib-DT7XlWUL.d.ts → artifacts-store-lib-DSSMqVL2.d.ts} +1 -1
  27. package/lib/artifacts-store-public.d.cts +2 -2
  28. package/lib/artifacts-store-public.d.ts +2 -2
  29. package/lib/board-live-cards-mcp.cjs +1 -1
  30. package/lib/board-live-cards-mcp.d.cts +51 -3
  31. package/lib/board-live-cards-mcp.d.ts +51 -3
  32. package/lib/board-live-cards-mcp.js +1 -1
  33. package/lib/board-live-cards-node.cjs +5 -5
  34. package/lib/board-live-cards-node.d.cts +16 -11
  35. package/lib/board-live-cards-node.d.ts +16 -11
  36. package/lib/board-live-cards-node.js +5 -5
  37. package/lib/{board-live-cards-public-BMUIPOrc.d.ts → board-live-cards-public-JNRKfBZy.d.ts} +1 -1
  38. package/lib/{board-live-cards-public-wkNmBIRC.d.cts → board-live-cards-public-LlVUQPL2.d.cts} +1 -1
  39. package/lib/board-live-cards-public-async-Di9QB141.d.cts +55 -0
  40. package/lib/board-live-cards-public-async-fwd1QI82.d.ts +55 -0
  41. package/lib/board-live-cards-public.cjs +1 -1
  42. package/lib/board-live-cards-public.d.cts +1 -1
  43. package/lib/board-live-cards-public.d.ts +1 -1
  44. package/lib/board-live-cards-public.js +1 -1
  45. package/lib/board-live-cards-server-runtime.cjs +1 -1
  46. package/lib/board-live-cards-server-runtime.d.cts +10 -6
  47. package/lib/board-live-cards-server-runtime.d.ts +10 -6
  48. package/lib/board-live-cards-server-runtime.js +1 -1
  49. package/lib/board-livegraph-runtime/index.cjs +1 -1
  50. package/lib/board-livegraph-runtime/index.js +1 -1
  51. package/lib/board-platform-adapter-async-BfHmHdx2.d.cts +129 -0
  52. package/lib/board-platform-adapter-async-DYahVzIK.d.ts +129 -0
  53. package/lib/board-worker-adapter.cjs +3 -3
  54. package/lib/board-worker-adapter.js +3 -3
  55. package/lib/card-compute/index.cjs +1 -1
  56. package/lib/card-compute/index.js +1 -1
  57. package/lib/card-store-public.d.cts +1 -1
  58. package/lib/card-store-public.d.ts +1 -1
  59. package/lib/card-validation.cjs +1 -1
  60. package/lib/card-validation.js +1 -1
  61. package/lib/{chat-storage-lib-BIUbE-fM.d.cts → chat-storage-lib-B9Q34Dyv.d.cts} +1 -1
  62. package/lib/{chat-storage-lib-BlG-sobS.d.ts → chat-storage-lib-DB9iSai2.d.ts} +1 -1
  63. package/lib/chat-store-public.d.cts +2 -2
  64. package/lib/chat-store-public.d.ts +2 -2
  65. package/lib/chunk-272IYUKT.cjs +2 -0
  66. package/lib/chunk-3KC6LBOG.js +3 -0
  67. package/lib/chunk-5XHOHTLZ.cjs +2 -0
  68. package/lib/chunk-6APH25VI.js +2 -0
  69. package/lib/chunk-76C7N4YT.js +3 -0
  70. package/lib/chunk-7FGPOGRV.cjs +2 -0
  71. package/lib/chunk-7ICPAABP.cjs +7 -0
  72. package/lib/chunk-ASR44K7H.cjs +3 -0
  73. package/lib/chunk-CPAXTVBQ.cjs +2 -0
  74. package/lib/chunk-EGRHWZRV.js +2 -0
  75. package/lib/chunk-EZENHAVZ.cjs +2 -0
  76. package/lib/chunk-FO4KNVU7.cjs +2 -0
  77. package/lib/chunk-GL2OHR2E.cjs +2 -0
  78. package/lib/chunk-HWYMZK3N.cjs +3 -0
  79. package/lib/chunk-IPLSRN6P.cjs +4 -0
  80. package/lib/{chunk-H5HBXPOI.cjs → chunk-J6EGN6S4.cjs} +3 -3
  81. package/lib/chunk-JH37NJGP.js +3 -0
  82. package/lib/chunk-JJL5VOQZ.cjs +3 -0
  83. package/lib/chunk-KAWQPLIE.cjs +2 -0
  84. package/lib/chunk-LPXVVMQT.cjs +2 -0
  85. package/lib/chunk-NJJ7WEDT.cjs +2 -0
  86. package/lib/chunk-NKIQRCOM.cjs +2 -0
  87. package/lib/chunk-NM6O35RY.cjs +2 -0
  88. package/lib/chunk-NTICU4OK.js +2 -0
  89. package/lib/chunk-O7NOHKVR.js +2 -0
  90. package/lib/chunk-PBOQ4HYB.cjs +2 -0
  91. package/lib/{chunk-VMW4Z6EF.js → chunk-PRKRXAVN.js} +3 -3
  92. package/lib/chunk-QJVR3FWQ.js +2 -0
  93. package/lib/chunk-S44QZUDX.js +2 -0
  94. package/lib/chunk-SGV7PU4H.js +2 -0
  95. package/lib/chunk-TSN3RTXT.js +4 -0
  96. package/lib/chunk-VXJHBWK3.js +2 -0
  97. package/lib/chunk-WHDEBJLT.js +7 -0
  98. package/lib/chunk-XYN5D3GL.js +2 -0
  99. package/lib/chunk-YBYXCFAI.js +2 -0
  100. package/lib/chunk-YGALANRO.js +2 -0
  101. package/lib/chunk-ZCNN6XPV.js +2 -0
  102. package/lib/chunk-ZJ5M5COT.js +2 -0
  103. package/lib/cloud-storage.cjs +1 -1
  104. package/lib/cloud-storage.d.cts +5 -3
  105. package/lib/cloud-storage.d.ts +5 -3
  106. package/lib/cloud-storage.js +1 -1
  107. package/lib/continuous-event-graph/index.cjs +1 -1
  108. package/lib/continuous-event-graph/index.js +1 -1
  109. package/lib/firebase-storage/index.cjs +3 -0
  110. package/lib/firebase-storage/index.d.cts +57 -0
  111. package/lib/firebase-storage/index.d.ts +57 -0
  112. package/lib/firebase-storage/index.js +3 -0
  113. package/lib/firestore-storage/index.cjs +3 -0
  114. package/lib/firestore-storage/index.d.cts +111 -0
  115. package/lib/firestore-storage/index.d.ts +111 -0
  116. package/lib/firestore-storage/index.js +3 -0
  117. package/lib/index.cjs +2 -2
  118. package/lib/index.js +1 -1
  119. package/lib/localstorage-storage/index.cjs +2 -0
  120. package/lib/localstorage-storage/index.d.cts +39 -0
  121. package/lib/localstorage-storage/index.d.ts +39 -0
  122. package/lib/localstorage-storage/index.js +2 -0
  123. package/lib/mcp-tool-registries-BBObLYga.d.ts +41 -0
  124. package/lib/mcp-tool-registries-W3TRj6O5.d.cts +41 -0
  125. package/lib/queue-lane-registry-PaZuFpwp.d.cts +30 -0
  126. package/lib/queue-lane-registry-PaZuFpwp.d.ts +30 -0
  127. package/lib/server-jobs-queue-runner/index.cjs +2 -0
  128. package/lib/server-jobs-queue-runner/index.d.cts +22 -0
  129. package/lib/server-jobs-queue-runner/index.d.ts +22 -0
  130. package/lib/server-jobs-queue-runner/index.js +2 -0
  131. package/lib/server-runtime/index.cjs +1 -1
  132. package/lib/server-runtime/index.d.cts +11 -17
  133. package/lib/server-runtime/index.d.ts +11 -17
  134. package/lib/server-runtime/index.js +1 -1
  135. package/lib/server-runtime-agentface/index.cjs +2 -0
  136. package/lib/server-runtime-agentface/index.d.cts +53 -0
  137. package/lib/server-runtime-agentface/index.d.ts +53 -0
  138. package/lib/server-runtime-agentface/index.js +2 -0
  139. package/lib/server-runtime-controlface/index.cjs +2 -0
  140. package/lib/server-runtime-controlface/index.d.cts +29 -0
  141. package/lib/server-runtime-controlface/index.d.ts +29 -0
  142. package/lib/server-runtime-controlface/index.js +2 -0
  143. package/lib/server-runtime-core/index.cjs +2 -0
  144. package/lib/server-runtime-core/index.d.cts +378 -0
  145. package/lib/server-runtime-core/index.d.ts +378 -0
  146. package/lib/server-runtime-core/index.js +2 -0
  147. package/lib/server-runtime-watchers/index.cjs +2 -0
  148. package/lib/server-runtime-watchers/index.d.cts +127 -0
  149. package/lib/server-runtime-watchers/index.d.ts +127 -0
  150. package/lib/server-runtime-watchers/index.js +2 -0
  151. package/lib/server-runtime-webhooks/index.cjs +2 -0
  152. package/lib/server-runtime-webhooks/index.d.cts +34 -0
  153. package/lib/server-runtime-webhooks/index.d.ts +34 -0
  154. package/lib/server-runtime-webhooks/index.js +2 -0
  155. package/lib/storage-async-interface-BRR4eBjx.d.cts +81 -0
  156. package/lib/storage-async-interface-DhlOVPSp.d.ts +81 -0
  157. package/lib/{queue-lane-registry-BPKWWgd4.d.cts → types-Ba8H5_Wo.d.cts} +10 -34
  158. package/lib/{queue-lane-registry-Be6c0ftj.d.ts → types-SO5OZm4s.d.ts} +10 -34
  159. package/package.json +46 -2
  160. package/schema/live-cards.schema.json +10 -1
  161. package/examples/board-local/demo-shell-localstorage.html +0 -843
  162. package/lib/board-live-cards-public-async-DKZqbJVU.d.ts +0 -256
  163. package/lib/board-live-cards-public-async-dMWNbWq6.d.cts +0 -256
  164. package/lib/chunk-KXWT3CY6.cjs +0 -8
  165. package/lib/chunk-MLVTJASJ.js +0 -2
  166. package/lib/chunk-N6P2JW4W.js +0 -3
  167. package/lib/chunk-NMZ6XNLB.cjs +0 -3
  168. package/lib/chunk-OEFTOO47.cjs +0 -3
  169. package/lib/chunk-OJLA6NLU.js +0 -8
  170. package/lib/chunk-R5L5WUKN.js +0 -2
  171. package/lib/chunk-VLBB3D6B.js +0 -3
  172. package/lib/chunk-WOALA3V5.cjs +0 -2
  173. package/lib/chunk-YEB5QHGE.cjs +0 -2
@@ -0,0 +1,378 @@
1
+ import { d as BoardRuntimePlatformAdapter } from '../types-SO5OZm4s.js';
2
+ export { A as Awaitable, B as BoardContextConfig, c as BoardRuntimeNonCorePublic, e as BoardRuntimePublic, 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, f as RuntimeRequest, g as RuntimeResponse, b as SingleBoardRuntime, S as SingleBoardRuntimeOptions } from '../types-SO5OZm4s.js';
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';
5
+ import { createBoardLiveCardsMcp, BoardLiveCardsMcpBoardDeps, BoardLiveCardsMcpNonCoreDeps, BoardLiveCardsMcpCardStoreDeps, BoardLiveCardsMcp } from '../board-live-cards-mcp.js';
6
+ import { a as CommandResult } from '../board-live-cards-public-JNRKfBZy.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-JNRKfBZy.js';
8
+ import { C as CardFileMetadataStore } from '../artifacts-store-lib-DSSMqVL2.js';
9
+ import { A as AsyncBoardPlatformAdapter } from '../board-platform-adapter-async-DYahVzIK.js';
10
+ import { ExecutionRef } from '../execution-refs.js';
11
+ export { A as AsyncBoardLiveCardsPublic } from '../board-live-cards-public-async-fwd1QI82.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';
14
+ import '../queue-lane-registry-PaZuFpwp.js';
15
+ import '../chat-store-public.js';
16
+ import '../types-BBhqYGhE.js';
17
+ import '../storage-async-interface-DhlOVPSp.js';
18
+
19
+ /**
20
+ * server-runtime/notifications.ts
21
+ *
22
+ * Per-board notification accumulator state and the small set of pure helpers
23
+ * that fold incoming runtime events into that state. Owned by the runtime
24
+ * closure; no I/O.
25
+ */
26
+ interface NotificationState {
27
+ status: unknown;
28
+ computedValues: Record<string, unknown>;
29
+ dataObjects: Record<string, unknown>;
30
+ cards: Record<string, unknown>;
31
+ }
32
+ declare function makeNotificationState(): NotificationState;
33
+ declare function hasNonEmptyCardCountStatus(status: unknown): boolean;
34
+ declare function appendNotification(state: NotificationState, event: unknown): void;
35
+
36
+ /**
37
+ * server-runtime/mcp-invoker.ts
38
+ *
39
+ * Pure helpers for invoking MCP tools through a registry and turning a tool
40
+ * result into a human-readable error message. Both helpers are platform-free
41
+ * and depend only on plain values — no closure state.
42
+ */
43
+ type McpToolHandler = (args: Record<string, unknown>) => unknown | Promise<unknown>;
44
+ type McpToolRegistry = Record<string, McpToolHandler>;
45
+ /**
46
+ * Look up `tool` in `registry` and invoke it with `args`. Normalises the
47
+ * returned shape so callers always see `{ status, data? }` (or an explicit
48
+ * `fail` / `error` envelope). Throws an Error tagged with `statusCode: 400`
49
+ * if the tool is unknown.
50
+ */
51
+ declare function invokeMcpTool(tool: string, args: Record<string, unknown>, registry: McpToolRegistry): Promise<unknown>;
52
+ /**
53
+ * Extract a single human-readable failure message from an MCP tool result,
54
+ * looking through validation envelopes for the first useful issue string.
55
+ * Returns `fallback` when nothing better can be found.
56
+ */
57
+ declare function extractMcpFailureMessage(result: unknown, fallback: string): string;
58
+
59
+ /**
60
+ * server-runtime/mcp-args.ts
61
+ *
62
+ * Pure MCP tool argument parsers. These read from the args record and do not
63
+ * touch runtime state. Kept here so the index closure does not redefine them.
64
+ */
65
+ declare function getMcpArgString(args: Record<string, unknown>, ...keys: string[]): string;
66
+ declare function getMcpArgNumber(args: Record<string, unknown>, ...keys: string[]): number | undefined;
67
+ declare function getMcpArgRecord(args: Record<string, unknown>, ...keys: string[]): Record<string, unknown>;
68
+ declare function getRequiredMcpArgRecord(args: Record<string, unknown>, errorKey: string, ...keys: string[]): Record<string, unknown>;
69
+ declare function getRequiredMcpArgNumber(args: Record<string, unknown>, errorKey: string, ...keys: string[]): number;
70
+ declare function parseMcpUploadBytes(args: Record<string, unknown>): Uint8Array | null;
71
+
72
+ /**
73
+ * server-runtime/mcp-facade.ts
74
+ *
75
+ * MCP facade wiring extracted from createSingleBoardServerRuntime.
76
+ * Builds the four facade pieces used by the per-board MCP entry point:
77
+ * - mcpBoardFacade (board command surface used by MCP)
78
+ * - mcpNonCoreFacade (preflight / discovery surface)
79
+ * - mcpCardStoreFacade (card-store CRUD surface)
80
+ * - createMcpFacade (composes the above into BoardLiveCardsMcp)
81
+ *
82
+ * The facade reaches into many runtime closures (status snapshots,
83
+ * data-object reads, card-store reads, lane drains, etc.). Those are
84
+ * passed in as narrow callbacks so this module stays portable.
85
+ */
86
+
87
+ /** Subset of BoardContext consumed by the facade. */
88
+ interface McpFacadeBoardContextLike {
89
+ boardAdapter: unknown;
90
+ boardOps: {
91
+ getOutputsFetchedSources: (input: {
92
+ params: {
93
+ key: string;
94
+ };
95
+ }) => Promise<CommandResult>;
96
+ removeCard: (input: {
97
+ params: {
98
+ id: string;
99
+ };
100
+ }) => Promise<CommandResult>;
101
+ cardRefreshedNotify: (input: {
102
+ params: {
103
+ cardId: string;
104
+ };
105
+ }) => Promise<CommandResult>;
106
+ upsertCard: (input: {
107
+ params: {
108
+ cardId: string;
109
+ restart: boolean;
110
+ };
111
+ }) => Promise<CommandResult>;
112
+ };
113
+ cardStoreOps: {
114
+ set: (input: {
115
+ body: unknown;
116
+ }) => Promise<CommandResult>;
117
+ del: (input: {
118
+ params: {
119
+ id: string;
120
+ };
121
+ }) => Promise<CommandResult>;
122
+ patch: (input: {
123
+ params?: {
124
+ id?: string;
125
+ path?: string;
126
+ };
127
+ body?: unknown;
128
+ }) => Promise<CommandResult>;
129
+ appendFiles: (input: {
130
+ params?: {
131
+ id?: string;
132
+ };
133
+ body?: unknown;
134
+ }) => Promise<CommandResult>;
135
+ };
136
+ nonCore: {
137
+ describeTaskExecutorCapabilities: (input: unknown) => unknown;
138
+ validateCardPreflight: (input: unknown) => unknown;
139
+ evalCardCompute: (input: unknown) => unknown;
140
+ probeSourcePreflight: (input: unknown) => unknown;
141
+ runSourcePreflight: (input: unknown) => unknown;
142
+ simulateCardCycle: (input: unknown) => unknown;
143
+ } | null;
144
+ }
145
+ interface McpFacadeDeps {
146
+ boardContexts: ReadonlyArray<McpFacadeBoardContextLike>;
147
+ cardOwnerIndex: Map<string, number>;
148
+ cardContextForCard: (cardId: string) => McpFacadeBoardContextLike | null;
149
+ readStatusSnapshot: () => Promise<unknown>;
150
+ readDataObjectsByToken: () => Promise<Record<string, unknown>>;
151
+ readCardRuntimeArtifacts: () => Promise<Record<string, unknown>>;
152
+ readCardFromStore: (cardId: string) => Promise<Record<string, unknown> | null>;
153
+ readCardDefinitions: () => Promise<unknown[]>;
154
+ processAccumulatedLaneInternal: (skipInit?: boolean) => Promise<CommandResult>;
155
+ reportSourceFetched: (token: string, ref: string) => Promise<CommandResult>;
156
+ reportSourceFetchFailure: (token: string, reason: string) => Promise<CommandResult>;
157
+ uploadCardFile: (cardId: string, fileName: string, contentType: string, bytes: Uint8Array, opts?: {
158
+ inChat?: boolean;
159
+ suppressChatRecordWrite?: boolean;
160
+ }) => unknown | Promise<unknown>;
161
+ chatStorePublic: Parameters<typeof createBoardLiveCardsMcp>[0]['chatStore'];
162
+ serverUrl: string | null;
163
+ apiBasePath: string;
164
+ }
165
+ interface McpFacadeModule {
166
+ mcpBoardFacade: () => BoardLiveCardsMcpBoardDeps;
167
+ mcpNonCoreFacade: () => BoardLiveCardsMcpNonCoreDeps;
168
+ mcpCardStoreFacade: () => BoardLiveCardsMcpCardStoreDeps;
169
+ createMcpFacade: () => BoardLiveCardsMcp;
170
+ }
171
+ declare function createMcpFacadeModule(deps: McpFacadeDeps): McpFacadeModule;
172
+
173
+ /**
174
+ * server-runtime/runtime-payload.ts
175
+ *
176
+ * Read-only aggregation of the per-runtime "published" payload that SSE
177
+ * snapshots and the /board-status endpoint return. Pulled out of
178
+ * createSingleBoardServerRuntime so the closure no longer has to host the
179
+ * three readers (status, computed-values, data-objects) plus the published
180
+ * payload assembler.
181
+ *
182
+ * Uses a structural board-context type with only the fields the readers need,
183
+ * so this module doesn't pull in the heavy BoardContext interface from
184
+ * index.ts.
185
+ */
186
+
187
+ /** Minimum surface of the kv-storage handle used to read persisted status. */
188
+ interface KvStorageReader {
189
+ read(key: string): unknown | Promise<unknown>;
190
+ }
191
+ /** Minimum surface of the board-platform adapter consumed by readStatusSnapshot. */
192
+ interface BoardAdapterForPayload {
193
+ kvStorageForRef(ref: string): KvStorageReader;
194
+ }
195
+ /** Minimum surface of the board-ops handle consumed by payload readers. */
196
+ interface BoardOpsForPayload {
197
+ getAllOutputsComputedValues(input: Record<string, unknown>): {
198
+ status: string;
199
+ data?: unknown;
200
+ } | Promise<{
201
+ status: string;
202
+ data?: unknown;
203
+ }>;
204
+ getAllOutputsDataObjects(input: Record<string, unknown>): {
205
+ status: string;
206
+ data?: unknown;
207
+ } | Promise<{
208
+ status: string;
209
+ data?: unknown;
210
+ }>;
211
+ }
212
+ /** Subset of BoardContext consumed by runtime-payload readers. */
213
+ interface RuntimePayloadBoardContext {
214
+ boardOps: BoardOpsForPayload;
215
+ boardAdapter: BoardAdapterForPayload;
216
+ outputsStoreRef: string;
217
+ notification: NotificationState;
218
+ }
219
+ interface RuntimePayloadDeps {
220
+ boardId: string;
221
+ /** Live reference to the runtime's board-contexts array (read on each call). */
222
+ boardContexts: ReadonlyArray<RuntimePayloadBoardContext>;
223
+ readCardDefinitions: () => Promise<Array<Record<string, unknown>>>;
224
+ readChatRecords: (cardId: string) => Array<Record<string, unknown>>;
225
+ getChatProcessing: (cardId: string) => boolean;
226
+ }
227
+ interface RuntimePayloadModule {
228
+ readStatusSnapshot: () => Promise<unknown>;
229
+ readCardRuntimeArtifacts: () => Promise<Record<string, unknown>>;
230
+ readDataObjectsByToken: () => Promise<Record<string, unknown>>;
231
+ buildPublishedRuntimePayload: () => Promise<unknown>;
232
+ }
233
+ declare function createRuntimePayloadModule(deps: RuntimePayloadDeps): RuntimePayloadModule;
234
+
235
+ /**
236
+ * server-runtime/controlplane-tool-handlers.ts
237
+ *
238
+ * Handlers for the small "controlplane" MCP tools that read/write chat
239
+ * processing state and per-card meta. Each handler validates `board_id`
240
+ * against the runtime's own boardId, requires `card_id`, then delegates to
241
+ * the MCP facade or card-store facade supplied by the host runtime.
242
+ *
243
+ * The handlers are factored out of createSingleBoardServerRuntime so that
244
+ * createMcpControlplaneToolRegistry in index.ts can simply wire them up,
245
+ * keeping the closure free of repetitive arg-validation noise.
246
+ */
247
+
248
+ interface ControlplaneToolHandlersDeps {
249
+ boardId: string;
250
+ /** Returns the live MCP facade (chat processing getters/setters). */
251
+ getMcpFacade: () => {
252
+ setChatProcessing: (args: {
253
+ cardId: string;
254
+ active: boolean;
255
+ }) => unknown;
256
+ getChatProcessing: (args: {
257
+ cardId: string;
258
+ }) => {
259
+ active: boolean;
260
+ };
261
+ };
262
+ /** Returns the card-store facade used for meta reads/writes. */
263
+ getMcpCardStoreFacade: () => BoardLiveCardsMcpCardStoreDeps;
264
+ }
265
+ interface ControlplaneToolHandlers {
266
+ requireCardArgs: (args: Record<string, unknown>) => {
267
+ cardId: string;
268
+ };
269
+ setChatProcessing: (args: Record<string, unknown>, active: boolean) => {
270
+ status: 'success';
271
+ data: {
272
+ boardId: string;
273
+ cardId: string;
274
+ active: boolean;
275
+ };
276
+ };
277
+ getChatProcessing: (args: Record<string, unknown>) => {
278
+ status: 'success';
279
+ data: {
280
+ boardId: string;
281
+ cardId: string;
282
+ active: boolean;
283
+ };
284
+ };
285
+ setCardMeta: (args: Record<string, unknown>) => Promise<{
286
+ status: 'success';
287
+ data: {
288
+ boardId: string;
289
+ cardId: string;
290
+ key: string;
291
+ };
292
+ }>;
293
+ getCardMeta: (args: Record<string, unknown>) => Promise<{
294
+ status: 'success';
295
+ data: {
296
+ boardId: string;
297
+ cardId: string;
298
+ key: string;
299
+ exists: boolean;
300
+ value: unknown;
301
+ };
302
+ }>;
303
+ }
304
+ declare function createControlplaneToolHandlers(deps: ControlplaneToolHandlersDeps): ControlplaneToolHandlers;
305
+
306
+ /**
307
+ * server-runtime/controlplane-helpers.ts
308
+ *
309
+ * Pure helpers used by the runtime's controlplane MCP handlers. The handlers
310
+ * themselves still live in index.ts because they capture closure state; these
311
+ * utilities are stateless.
312
+ */
313
+
314
+ declare function expectControlplaneSuccess<T>(result: CommandResult<T>, commandName: string): T;
315
+ declare function expectControlplaneSuccessAsync<T>(result: CommandResult<T> | Promise<CommandResult<T>>, commandName: string): Promise<T>;
316
+ declare function getCardMetaKey(args: Record<string, unknown>): string;
317
+ declare function readCardMetaValue(card: Record<string, unknown>, key: string): {
318
+ exists: boolean;
319
+ value: unknown;
320
+ };
321
+
322
+ /**
323
+ * server-runtime/card-file-ops.ts
324
+ *
325
+ * Per-card file upload / metadata-merge orchestration extracted from
326
+ * createSingleBoardServerRuntime. The factory takes narrow callbacks for
327
+ * the small handful of closure-owned helpers (card-store reads,
328
+ * card-data writes, chat-record writes, artifact stores, file-metadata
329
+ * normaliser) and exposes the upload entry point plus its read helper.
330
+ */
331
+
332
+ /** Subset of the per-card files artifact store consumed by file-ops. */
333
+ interface FilesArtifactsStoreLike {
334
+ putBytes(key: string, content: Uint8Array, contentType?: string): unknown | Promise<unknown>;
335
+ }
336
+ interface CardFileOpsDeps {
337
+ /** Sanitised card-id suitable for use as a storage prefix. */
338
+ safeCardId: (cardId: string) => string;
339
+ /** Returns the per-card artifact stores; `files` is the bytes sink. */
340
+ artifactsStores: (cardId: string) => {
341
+ files: FilesArtifactsStoreLike | null;
342
+ };
343
+ /** Card-file-metadata store wired against the runtime's persistence layer. */
344
+ cardFileMetadataStore: () => CardFileMetadataStore;
345
+ /** Read the persisted card from the store (used to count existing files). */
346
+ readCardFromStore: (cardId: string) => Promise<Record<string, unknown> | null>;
347
+ /** Apply a local-only update to a card; same shape as updateCardLocalOnly. */
348
+ updateCardLocalOnly: (cardId: string, updateFn: (card: Record<string, unknown>) => Record<string, unknown> | void) => Promise<void>;
349
+ /** Append a chat record (used for in-chat upload announcements). */
350
+ writeChatRecord: (cardId: string, role: string, text: string, files: unknown[], turnId: string) => unknown;
351
+ }
352
+ interface CardFileOps {
353
+ uploadCardFile: (cardId: string, requestedName: string, contentType: string, buffer: Uint8Array, opts?: {
354
+ inChat?: boolean;
355
+ turnId?: string;
356
+ suppressChatRecordWrite?: boolean;
357
+ }) => Promise<{
358
+ ok: true;
359
+ file: Record<string, unknown>;
360
+ }>;
361
+ readCardStoredFileNames: (cardId: string) => Promise<string[]>;
362
+ }
363
+ declare function createCardFileOps(deps: CardFileOpsDeps): CardFileOps;
364
+
365
+ /**
366
+ * server-runtime/internal-helpers.ts
367
+ *
368
+ * Small, pure helpers shared across the server-runtime slices. No closure
369
+ * state, no I/O. Anything that depends on runtime state belongs in a slice
370
+ * module, not here.
371
+ */
372
+
373
+ declare function isAsyncBoardPlatformAdapter(adapter: BoardRuntimePlatformAdapter): adapter is AsyncBoardPlatformAdapter;
374
+ declare function executionWhatToRunValue(ref: ExecutionRef): string;
375
+ declare function escapeRegExp(str: string): string;
376
+ declare function concatUint8Arrays(arrays: Uint8Array[]): Uint8Array;
377
+
378
+ export { AsyncBoardPlatformAdapter, BoardRuntimePlatformAdapter, CommandResult, ExecutionRef, type McpFacadeBoardContextLike, type McpFacadeDeps, type McpFacadeModule, type McpToolHandler, type McpToolRegistry, type NotificationState, type RuntimePayloadBoardContext, type RuntimePayloadDeps, type RuntimePayloadModule, appendNotification, concatUint8Arrays, createCardFileOps, createControlplaneToolHandlers, createMcpFacadeModule, createRuntimePayloadModule, escapeRegExp, executionWhatToRunValue, expectControlplaneSuccess, expectControlplaneSuccessAsync, extractMcpFailureMessage, getCardMetaKey, getMcpArgNumber, getMcpArgRecord, getMcpArgString, getRequiredMcpArgNumber, getRequiredMcpArgRecord, hasNonEmptyCardCountStatus, invokeMcpTool, isAsyncBoardPlatformAdapter, makeNotificationState, parseMcpUploadBytes, readCardMetaValue };
@@ -0,0 +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-QJVR3FWQ.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-ZCNN6XPV.js';import'../chunk-JMDHDY6M.js';import'../chunk-3KC6LBOG.js';import'../chunk-MNEOJWPS.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,127 @@
1
+ import { g as RuntimeResponse, f as RuntimeRequest } from '../types-Ba8H5_Wo.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-LlVUQPL2.cjs';
6
+ import '../execution-refs.cjs';
7
+ import '../types-BBhqYGhE.cjs';
8
+ import '../board-platform-adapter-async-BfHmHdx2.cjs';
9
+ import '../storage-async-interface-BRR4eBjx.cjs';
10
+ import '../board-live-cards-public-async-Di9QB141.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;
67
+
68
+ /**
69
+ * server-runtime/routes-sse.ts
70
+ *
71
+ * SSE connection lifecycle handler and channel-subscription endpoint
72
+ * extracted from createSingleBoardServerRuntime. Both functions are
73
+ * stateless wrappers around sseHub + the runtime payload aggregator;
74
+ * factory takes narrow callbacks for everything else.
75
+ */
76
+
77
+ interface RoutesSseDeps {
78
+ sseHub: SseHub;
79
+ corsHeaders: Record<string, string>;
80
+ json: (res: RuntimeResponse, status: number, payload: unknown) => void;
81
+ buildPublishedRuntimePayload: () => Promise<unknown>;
82
+ onSseClientConnected?: (clientId: string, writeFrame: (payload: unknown) => void) => void;
83
+ onChannelSubscribed?: (clientId: string, channelName: string, params: {
84
+ cardId?: string;
85
+ }) => void;
86
+ onChannelUnsubscribed?: (clientId: string, channelName: string, params: {
87
+ cardId?: string;
88
+ }) => void;
89
+ }
90
+
91
+ /**
92
+ * server-runtime/routes-watchers.ts
93
+ *
94
+ * All SSE connection and subscription management routes.
95
+ * This is the sole owner of sseHub from a routing perspective.
96
+ *
97
+ * GET /sse — open SSE stream
98
+ * POST /cards/:id/chats/(un)subscribe-sse — chat subscription
99
+ * POST /watch-channel/:name/(un)subscribe-sse — board channel
100
+ * POST /cards/:id/watch-channel/:name/(un)subscribe-sse — card channel
101
+ *
102
+ * Composes createRoutesSse for the SSE connection primitives and adds
103
+ * the HTTP subscription management endpoints on top.
104
+ */
105
+
106
+ interface RoutesWatchersDeps extends RoutesSseDeps {
107
+ apiBasePath: string;
108
+ readJsonBody: (req: RuntimeRequest) => Promise<Record<string, unknown>>;
109
+ initBoardAndSetup: () => Promise<void>;
110
+ bootstrapBoard: () => Promise<void>;
111
+ boardContexts: ReadonlyArray<unknown>;
112
+ publishPersistedStateSnapshot: (ctx: unknown) => Promise<void>;
113
+ upsertCardsFromSource: (ctx: unknown, ctxIndex: number) => Promise<void>;
114
+ }
115
+ interface RoutesWatchers {
116
+ /** Dispatch SSE + subscription routes. Returns true if the request was handled. */
117
+ handleWatchersRoutes: (req: RuntimeRequest, res: RuntimeResponse, parsedUrl: URL) => Promise<boolean>;
118
+ /** Open an SSE stream for a client (also used by the legacy handleRuntimeApi delegate). */
119
+ handleSse: (req: RuntimeRequest, res: RuntimeResponse, clientId: string) => Promise<void>;
120
+ /** Subscribe or unsubscribe a client from a named channel. */
121
+ handleChannelSubscription: (res: RuntimeResponse, clientId: string, channelName: string, params: {
122
+ cardId?: string;
123
+ }, subscribed: boolean) => void;
124
+ }
125
+ declare function createRoutesWatchers(deps: RoutesWatchersDeps): RoutesWatchers;
126
+
127
+ export { type RoutesWatchers, type RoutesWatchersDeps, type SseHub, type SseHubDeps, createRoutesWatchers, createSseHub };
@@ -0,0 +1,127 @@
1
+ import { g as RuntimeResponse, f as RuntimeRequest } from '../types-SO5OZm4s.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-JNRKfBZy.js';
6
+ import '../execution-refs.js';
7
+ import '../types-BBhqYGhE.js';
8
+ import '../board-platform-adapter-async-DYahVzIK.js';
9
+ import '../storage-async-interface-DhlOVPSp.js';
10
+ import '../board-live-cards-public-async-fwd1QI82.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;
67
+
68
+ /**
69
+ * server-runtime/routes-sse.ts
70
+ *
71
+ * SSE connection lifecycle handler and channel-subscription endpoint
72
+ * extracted from createSingleBoardServerRuntime. Both functions are
73
+ * stateless wrappers around sseHub + the runtime payload aggregator;
74
+ * factory takes narrow callbacks for everything else.
75
+ */
76
+
77
+ interface RoutesSseDeps {
78
+ sseHub: SseHub;
79
+ corsHeaders: Record<string, string>;
80
+ json: (res: RuntimeResponse, status: number, payload: unknown) => void;
81
+ buildPublishedRuntimePayload: () => Promise<unknown>;
82
+ onSseClientConnected?: (clientId: string, writeFrame: (payload: unknown) => void) => void;
83
+ onChannelSubscribed?: (clientId: string, channelName: string, params: {
84
+ cardId?: string;
85
+ }) => void;
86
+ onChannelUnsubscribed?: (clientId: string, channelName: string, params: {
87
+ cardId?: string;
88
+ }) => void;
89
+ }
90
+
91
+ /**
92
+ * server-runtime/routes-watchers.ts
93
+ *
94
+ * All SSE connection and subscription management routes.
95
+ * This is the sole owner of sseHub from a routing perspective.
96
+ *
97
+ * GET /sse — open SSE stream
98
+ * POST /cards/:id/chats/(un)subscribe-sse — chat subscription
99
+ * POST /watch-channel/:name/(un)subscribe-sse — board channel
100
+ * POST /cards/:id/watch-channel/:name/(un)subscribe-sse — card channel
101
+ *
102
+ * Composes createRoutesSse for the SSE connection primitives and adds
103
+ * the HTTP subscription management endpoints on top.
104
+ */
105
+
106
+ interface RoutesWatchersDeps extends RoutesSseDeps {
107
+ apiBasePath: string;
108
+ readJsonBody: (req: RuntimeRequest) => Promise<Record<string, unknown>>;
109
+ initBoardAndSetup: () => Promise<void>;
110
+ bootstrapBoard: () => Promise<void>;
111
+ boardContexts: ReadonlyArray<unknown>;
112
+ publishPersistedStateSnapshot: (ctx: unknown) => Promise<void>;
113
+ upsertCardsFromSource: (ctx: unknown, ctxIndex: number) => Promise<void>;
114
+ }
115
+ interface RoutesWatchers {
116
+ /** Dispatch SSE + subscription routes. Returns true if the request was handled. */
117
+ handleWatchersRoutes: (req: RuntimeRequest, res: RuntimeResponse, parsedUrl: URL) => Promise<boolean>;
118
+ /** Open an SSE stream for a client (also used by the legacy handleRuntimeApi delegate). */
119
+ handleSse: (req: RuntimeRequest, res: RuntimeResponse, clientId: string) => Promise<void>;
120
+ /** Subscribe or unsubscribe a client from a named channel. */
121
+ handleChannelSubscription: (res: RuntimeResponse, clientId: string, channelName: string, params: {
122
+ cardId?: string;
123
+ }, subscribed: boolean) => void;
124
+ }
125
+ declare function createRoutesWatchers(deps: RoutesWatchersDeps): RoutesWatchers;
126
+
127
+ export { type RoutesWatchers, type RoutesWatchersDeps, type SseHub, type SseHubDeps, createRoutesWatchers, createSseHub };
@@ -0,0 +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
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkNM6O35RY_cjs=require('../chunk-NM6O35RY.cjs');require('../chunk-272IYUKT.cjs'),require('../chunk-GNFE24S7.cjs');Object.defineProperty(exports,"createRoutesWebhooks",{enumerable:true,get:function(){return chunkNM6O35RY_cjs.a}});//# sourceMappingURL=index.cjs.map
2
+ //# sourceMappingURL=index.cjs.map