yaml-flow 5.4.2 → 7.0.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 (252) hide show
  1. package/board-live-cards-cli.js +6 -6
  2. package/browser/asset-integrity.json +10 -0
  3. package/browser/board-livecards-client.js +2 -0
  4. package/browser/board-livecards-client.js.map +1 -0
  5. package/browser/board-livecards-localstorage.js +10 -0
  6. package/browser/board-livecards-localstorage.js.map +1 -0
  7. package/browser/board-livegraph-engine.js +2 -1676
  8. package/browser/board-livegraph-engine.js.map +1 -1
  9. package/browser/card-compute.js +28 -28
  10. package/browser/compute-jsonata.js +5 -0
  11. package/browser/compute-jsonata.js.map +1 -0
  12. package/browser/live-cards.js +561 -129
  13. package/browser/live-cards.schema.json +418 -132
  14. package/card-store.js +37 -0
  15. package/dist/batch/index.cjs +1 -108
  16. package/dist/batch/index.cjs.map +1 -1
  17. package/dist/batch/index.js +1 -106
  18. package/dist/batch/index.js.map +1 -1
  19. package/dist/board-live-cards-lib-Bg6EvCo5.d.cts +136 -0
  20. package/dist/board-live-cards-lib-jM2uYG1v.d.ts +136 -0
  21. package/dist/board-live-cards-public-CW5074xr.d.cts +318 -0
  22. package/dist/board-live-cards-public-hnZo0mAf.d.ts +318 -0
  23. package/dist/board-livegraph-runtime/index.cjs +2 -1671
  24. package/dist/board-livegraph-runtime/index.cjs.map +1 -1
  25. package/dist/board-livegraph-runtime/index.d.cts +12 -11
  26. package/dist/board-livegraph-runtime/index.d.ts +12 -11
  27. package/dist/board-livegraph-runtime/index.js +2 -1662
  28. package/dist/board-livegraph-runtime/index.js.map +1 -1
  29. package/dist/board-livegraph-runtime/jsonata-sync.cjs +7623 -0
  30. package/dist/card-compute/index.cjs +9 -7159
  31. package/dist/card-compute/index.cjs.map +1 -1
  32. package/dist/card-compute/index.d.cts +27 -1
  33. package/dist/card-compute/index.d.ts +27 -1
  34. package/dist/card-compute/index.js +9 -7145
  35. package/dist/card-compute/index.js.map +1 -1
  36. package/dist/card-compute/jsonata-sync.cjs +7623 -0
  37. package/dist/cli/browser-api/board-live-cards-browser-adapter.cjs +3 -0
  38. package/dist/cli/browser-api/board-live-cards-browser-adapter.cjs.map +1 -0
  39. package/dist/cli/browser-api/board-live-cards-browser-adapter.d.cts +37 -0
  40. package/dist/cli/browser-api/board-live-cards-browser-adapter.d.ts +37 -0
  41. package/dist/cli/browser-api/board-live-cards-browser-adapter.js +3 -0
  42. package/dist/cli/browser-api/board-live-cards-browser-adapter.js.map +1 -0
  43. package/dist/cli/browser-api/card-store-browser-api.cjs +2 -0
  44. package/dist/cli/browser-api/card-store-browser-api.cjs.map +1 -0
  45. package/dist/cli/browser-api/card-store-browser-api.d.cts +26 -0
  46. package/dist/cli/browser-api/card-store-browser-api.d.ts +26 -0
  47. package/dist/cli/browser-api/card-store-browser-api.js +2 -0
  48. package/dist/cli/browser-api/card-store-browser-api.js.map +1 -0
  49. package/dist/cli/browser-api/jsonata-sync.cjs +7623 -0
  50. package/dist/cli/node/artifacts-store-cli.cjs +11 -0
  51. package/dist/cli/node/artifacts-store-cli.cjs.map +1 -0
  52. package/dist/cli/node/artifacts-store-cli.d.cts +8 -0
  53. package/dist/cli/node/artifacts-store-cli.d.ts +8 -0
  54. package/dist/cli/node/artifacts-store-cli.js +11 -0
  55. package/dist/cli/node/artifacts-store-cli.js.map +1 -0
  56. package/dist/cli/node/board-live-cards-cli.cjs +15 -0
  57. package/dist/cli/node/board-live-cards-cli.cjs.map +1 -0
  58. package/dist/cli/node/board-live-cards-cli.d.cts +20 -0
  59. package/dist/cli/node/board-live-cards-cli.d.ts +20 -0
  60. package/dist/cli/node/board-live-cards-cli.js +15 -0
  61. package/dist/cli/node/board-live-cards-cli.js.map +1 -0
  62. package/dist/cli/node/card-store-cli.cjs +8 -0
  63. package/dist/cli/node/card-store-cli.cjs.map +1 -0
  64. package/dist/cli/node/card-store-cli.d.cts +15 -0
  65. package/dist/cli/node/card-store-cli.d.ts +15 -0
  66. package/dist/cli/node/card-store-cli.js +8 -0
  67. package/dist/cli/node/card-store-cli.js.map +1 -0
  68. package/dist/cli/node/execution-adapter.cjs +3 -0
  69. package/dist/cli/node/execution-adapter.cjs.map +1 -0
  70. package/dist/cli/node/execution-adapter.d.cts +174 -0
  71. package/dist/cli/node/execution-adapter.d.ts +174 -0
  72. package/dist/cli/node/execution-adapter.js +3 -0
  73. package/dist/cli/node/execution-adapter.js.map +1 -0
  74. package/dist/cli/node/fs-board-adapter.cjs +14 -0
  75. package/dist/cli/node/fs-board-adapter.cjs.map +1 -0
  76. package/dist/cli/node/fs-board-adapter.d.cts +204 -0
  77. package/dist/cli/node/fs-board-adapter.d.ts +204 -0
  78. package/dist/cli/node/fs-board-adapter.js +14 -0
  79. package/dist/cli/node/fs-board-adapter.js.map +1 -0
  80. package/dist/cli/node/jsonata-sync.cjs +7623 -0
  81. package/dist/cli/node/source-cli-task-executor.cjs +11 -0
  82. package/dist/cli/node/source-cli-task-executor.cjs.map +1 -0
  83. package/dist/cli/node/source-cli-task-executor.d.cts +1 -0
  84. package/dist/cli/node/source-cli-task-executor.d.ts +1 -0
  85. package/dist/cli/node/source-cli-task-executor.js +11 -0
  86. package/dist/cli/node/source-cli-task-executor.js.map +1 -0
  87. package/dist/config/index.cjs +1 -79
  88. package/dist/config/index.cjs.map +1 -1
  89. package/dist/config/index.js +1 -76
  90. package/dist/config/index.js.map +1 -1
  91. package/dist/continuous-event-graph/index.cjs +2 -2129
  92. package/dist/continuous-event-graph/index.cjs.map +1 -1
  93. package/dist/continuous-event-graph/index.d.cts +81 -5
  94. package/dist/continuous-event-graph/index.d.ts +81 -5
  95. package/dist/continuous-event-graph/index.js +2 -2088
  96. package/dist/continuous-event-graph/index.js.map +1 -1
  97. package/dist/continuous-event-graph/jsonata-sync.cjs +7623 -0
  98. package/dist/event-graph/index.cjs +22 -8292
  99. package/dist/event-graph/index.cjs.map +1 -1
  100. package/dist/event-graph/index.js +22 -8237
  101. package/dist/event-graph/index.js.map +1 -1
  102. package/dist/execution-refs.cjs +3 -0
  103. package/dist/execution-refs.cjs.map +1 -0
  104. package/dist/execution-refs.d.cts +260 -0
  105. package/dist/execution-refs.d.ts +260 -0
  106. package/dist/execution-refs.js +3 -0
  107. package/dist/execution-refs.js.map +1 -0
  108. package/dist/index.cjs +29 -13221
  109. package/dist/index.cjs.map +1 -1
  110. package/dist/index.d.cts +2 -4
  111. package/dist/index.d.ts +2 -4
  112. package/dist/index.js +29 -13112
  113. package/dist/index.js.map +1 -1
  114. package/dist/inference/index.cjs +5 -617
  115. package/dist/inference/index.cjs.map +1 -1
  116. package/dist/inference/index.js +5 -610
  117. package/dist/inference/index.js.map +1 -1
  118. package/dist/jsonata-sync.cjs +7623 -0
  119. package/dist/{live-cards-bridge-x5XREkXm.d.cts → live-cards-bridge-BXbVTsna.d.cts} +27 -4
  120. package/dist/{live-cards-bridge-EQjytzI_.d.ts → live-cards-bridge-Ds28XR15.d.ts} +27 -4
  121. package/dist/server-runtime/index.cjs +9 -0
  122. package/dist/server-runtime/index.cjs.map +1 -0
  123. package/dist/server-runtime/index.d.cts +31 -0
  124. package/dist/server-runtime/index.d.ts +31 -0
  125. package/dist/server-runtime/index.js +9 -0
  126. package/dist/server-runtime/index.js.map +1 -0
  127. package/dist/server-runtime/jsonata-sync.cjs +7623 -0
  128. package/dist/step-machine/index.cjs +11 -7129
  129. package/dist/step-machine/index.cjs.map +1 -1
  130. package/dist/step-machine/index.js +11 -7113
  131. package/dist/step-machine/index.js.map +1 -1
  132. package/dist/step-machine-public/index.cjs +2 -0
  133. package/dist/step-machine-public/index.cjs.map +1 -0
  134. package/dist/step-machine-public/index.d.cts +159 -0
  135. package/dist/step-machine-public/index.d.ts +159 -0
  136. package/dist/step-machine-public/index.js +2 -0
  137. package/dist/step-machine-public/index.js.map +1 -0
  138. package/dist/step-machine-public/jsonata-sync.cjs +7623 -0
  139. package/dist/storage-refs.cjs +10 -0
  140. package/dist/storage-refs.cjs.map +1 -0
  141. package/dist/storage-refs.d.cts +93 -0
  142. package/dist/storage-refs.d.ts +93 -0
  143. package/dist/storage-refs.js +10 -0
  144. package/dist/storage-refs.js.map +1 -0
  145. package/dist/stores/file.cjs +1 -114
  146. package/dist/stores/file.cjs.map +1 -1
  147. package/dist/stores/file.js +1 -112
  148. package/dist/stores/file.js.map +1 -1
  149. package/dist/stores/index.cjs +1 -231
  150. package/dist/stores/index.cjs.map +1 -1
  151. package/dist/stores/index.js +1 -227
  152. package/dist/stores/index.js.map +1 -1
  153. package/dist/stores/localStorage.cjs +1 -76
  154. package/dist/stores/localStorage.cjs.map +1 -1
  155. package/dist/stores/localStorage.js +1 -74
  156. package/dist/stores/localStorage.js.map +1 -1
  157. package/dist/stores/memory.cjs +1 -47
  158. package/dist/stores/memory.cjs.map +1 -1
  159. package/dist/stores/memory.js +1 -45
  160. package/dist/stores/memory.js.map +1 -1
  161. package/dist/types-B1ZRa4aI.d.ts +147 -0
  162. package/dist/types-BxEFcVK9.d.cts +147 -0
  163. package/examples/browser/boards/portfolio-tracker/portfolio-t4.js +291 -0
  164. package/examples/browser/boards/portfolio-tracker/portfolio-tracker-fetch-prices.js +218 -0
  165. package/examples/browser/boards/portfolio-tracker/portfolio-tracker-fetch-prices.py +201 -0
  166. package/examples/browser/boards/portfolio-tracker/portfolio-tracker-http-test.js +357 -0
  167. package/examples/browser/boards/portfolio-tracker/portfolio-tracker-inference-adapter.js +25 -16
  168. package/examples/browser/boards/portfolio-tracker/portfolio-tracker-public.js +552 -0
  169. package/examples/browser/boards/portfolio-tracker/portfolio-tracker-server.js +300 -0
  170. package/examples/browser/boards/portfolio-tracker/portfolio-tracker-server.py +617 -0
  171. package/examples/browser/boards/portfolio-tracker/portfolio-tracker-sse-worker.js +48 -0
  172. package/examples/browser/boards/portfolio-tracker/portfolio-tracker.py +366 -0
  173. package/examples/cli/step-machine-cli/portfolio-tracker/--base-ref/.runtime-out +1 -0
  174. package/examples/cli/step-machine-cli/portfolio-tracker/--base-ref/board-graph.json +32 -0
  175. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/_board-cli.js +70 -3
  176. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/add-cards-cli.js +16 -11
  177. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/init-board-cli.js +9 -8
  178. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/poll-status-cli.js +49 -0
  179. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/reset-board-dir-cli.js +2 -6
  180. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/retrigger-cli.js +4 -8
  181. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/status-cli.js +3 -7
  182. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/update-holdings-cli.js +9 -8
  183. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/wait-completed-cli.js +12 -17
  184. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/write-prices-cli.js +2 -6
  185. package/examples/cli/step-machine-cli/portfolio-tracker/handlers-py/_board_pycli.py +107 -0
  186. package/examples/cli/step-machine-cli/portfolio-tracker/handlers-py/add-cards.py +51 -0
  187. package/examples/cli/step-machine-cli/portfolio-tracker/handlers-py/init-board.py +45 -0
  188. package/examples/cli/step-machine-cli/portfolio-tracker/handlers-py/poll-status.py +71 -0
  189. package/examples/cli/step-machine-cli/portfolio-tracker/handlers-py/reset-board-dir.py +36 -0
  190. package/examples/cli/step-machine-cli/portfolio-tracker/inline-python-demo.flow.yaml +26 -0
  191. package/examples/cli/step-machine-cli/portfolio-tracker/inline-python-handlers.py +39 -0
  192. package/examples/cli/step-machine-cli/portfolio-tracker/portfolio-tracker-pycli.flow.yaml +80 -0
  193. package/examples/cli/step-machine-cli/portfolio-tracker/portfolio-tracker.flow.yaml +36 -187
  194. package/examples/cli/step-machine-cli/portfolio-tracker/portfolio-tracker.input.json +40 -34
  195. package/examples/cli/step-machine-cli/portfolio-tracker/run-inline-python-demo-pycli.py +43 -0
  196. package/examples/cli/step-machine-cli/portfolio-tracker/run-portfolio-tracker-pycli.py +77 -0
  197. package/examples/cli/step-machine-cli/portfolio-tracker/run-portfolio-tracker.bat +1 -2
  198. package/examples/cli/step-machine-demo/jsonata-init-board-cli.js +8 -13
  199. package/examples/cli/step-machine-demo/jsonata-init-board.flow.yaml +33 -9
  200. package/examples/cli/step-machine-demo/one-step-cli-only.flow.yaml +3 -1
  201. package/examples/cli/step-machine-demo/step2-double-cli.js +6 -12
  202. package/examples/cli/step-machine-demo/two-step-math.flow.yaml +66 -4
  203. package/examples/cli/step-machine-demo/two-step-mixed.flow.yaml +13 -5
  204. package/examples/example-board/agent-instructions.md +11 -5
  205. package/examples/example-board/cards/_index.json +47 -0
  206. package/examples/example-board/cards/card-market-prices.json +33 -9
  207. package/examples/example-board/cards/card-my-identity.json +30 -6
  208. package/examples/example-board/cards/card-portfolio-action.json +24 -6
  209. package/examples/example-board/cards/card-portfolio-intelligence.json +97 -0
  210. package/examples/example-board/cards/card-portfolio-risks.json +24 -6
  211. package/examples/example-board/cards/card-portfolio-value.json +38 -10
  212. package/examples/example-board/cards/card-portfolio.json +57 -13
  213. package/examples/example-board/cards/card-rebalance-impact.json +22 -6
  214. package/examples/example-board/cards/card-rebalance-sim.json +66 -15
  215. package/examples/example-board/demo-chat-handler.js +14 -4
  216. package/examples/example-board/demo-server-config.json +1 -0
  217. package/examples/example-board/demo-server.js +366 -68
  218. package/examples/example-board/demo-shell-localstorage.html +774 -0
  219. package/examples/example-board/demo-shell-with-server.html +20 -37
  220. package/examples/example-board/demo-shell.html +5 -4
  221. package/examples/example-board/demo-task-executor.js +273 -275
  222. package/examples/index.html +0 -14
  223. package/examples/step-machine-cli/portfolio-tracker/handlers/_board-cli.js +0 -1
  224. package/examples/step-machine-cli/portfolio-tracker/run-portfolio-tracker.bat +1 -2
  225. package/package.json +46 -8
  226. package/schema/live-cards.schema.json +418 -132
  227. package/step-machine-cli.js +43 -310
  228. package/board-livecards-server-runtime.js +0 -1574
  229. package/browser/board-livecards-runtime-client.js +0 -263
  230. package/dist/cli/board-live-cards-cli.cjs +0 -10650
  231. package/dist/cli/board-live-cards-cli.cjs.map +0 -1
  232. package/dist/cli/board-live-cards-cli.d.cts +0 -179
  233. package/dist/cli/board-live-cards-cli.d.ts +0 -179
  234. package/dist/cli/board-live-cards-cli.js +0 -10598
  235. package/dist/cli/board-live-cards-cli.js.map +0 -1
  236. package/dist/journal-9HEgs7dU.d.ts +0 -28
  237. package/dist/journal-B-JCfQnh.d.cts +0 -28
  238. package/dist/schedule-Cszq9LYY.d.ts +0 -21
  239. package/dist/schedule-qWNL0RQh.d.cts +0 -21
  240. package/examples/browser/boards/portfolio-tracker/cards/holdings-table.json +0 -22
  241. package/examples/browser/boards/portfolio-tracker/cards/portfolio-form.json +0 -16
  242. package/examples/browser/boards/portfolio-tracker/cards/portfolio-risk-assessment.json +0 -28
  243. package/examples/browser/boards/portfolio-tracker/cards/portfolio-value.json +0 -15
  244. package/examples/browser/boards/portfolio-tracker/cards/price-fetch.json +0 -15
  245. package/examples/browser/boards/portfolio-tracker/cards/rebalancing-strategy.json +0 -28
  246. package/examples/browser/boards/portfolio-tracker/fetch-prices.js +0 -43
  247. package/examples/browser/boards/portfolio-tracker/portfolio-tracker-task-executor.cjs +0 -96
  248. package/examples/browser/boards/portfolio-tracker/portfolio-tracker.bat +0 -7
  249. package/examples/browser/boards/portfolio-tracker/portfolio-tracker.js +0 -351
  250. package/examples/cli/step-machine-demo/two-step-math-handlers.js +0 -32
  251. package/examples/cli/step-machine-demo/two-step-mixed-handlers.js +0 -24
  252. package/examples/example-board/demo-shell-browser.html +0 -674
@@ -0,0 +1,318 @@
1
+ import { ExecutionRef } from './execution-refs.cjs';
2
+ import { L as LiveCard, B as BoardStatusObject, J as JournalStorageAdapter, O as OutputStoreEvent } from './board-live-cards-lib-Bg6EvCo5.cjs';
3
+
4
+ /**
5
+ * storage-interface.ts
6
+ *
7
+ * Three minimal storage primitives that together cover all persistence needs
8
+ * of the board-live-cards system. Any backend (Node fs, CosmosDB, Azure Blob,
9
+ * browser localStorage, in-memory test double) implements these three interfaces.
10
+ *
11
+ * The pure-logic stores in board-live-cards-all-stores.ts depend only on these
12
+ * interfaces — never on Node built-ins.
13
+ *
14
+ * Blob — raw string content at a logical, backend-neutral key
15
+ * Journal — append-only log with cursor-based reads
16
+ * KV — key-value store with list/delete
17
+ *
18
+ * Mapping to existing storage adapters:
19
+ *
20
+ * CardStorageAdapter
21
+ * inventory (cardId → { blobRef, checksum, fileMetadata? }) → KV
22
+ * card JSON files → Blob
23
+ * source output files → Blob
24
+ *
25
+ * JournalStorageAdapter → Journal (board-journal.jsonl)
26
+ *
27
+ * ExecutionRequestStore → KV (keyed by journalId, via createFsKvStorage)
28
+ *
29
+ * StateSnapshotStorageAdapter
30
+ * board-graph.json (packed single JSON, written atomically) → Blob
31
+ * per-card sidecars (cards/<id>/runtime, fetched-sources-manifest) → KV
32
+ */
33
+ interface BlobStat {
34
+ key: string;
35
+ size: number;
36
+ updatedAt?: string;
37
+ contentType?: string;
38
+ }
39
+ interface BlobStorage {
40
+ /** Returns raw content string, or null if the blob does not exist. */
41
+ read(key: string): string | null;
42
+ /** Write content at key. Implementations should be atomic (write-rename). */
43
+ write(key: string, content: string): void;
44
+ /** Returns true if a blob exists at key. */
45
+ exists(key: string): boolean;
46
+ /** Delete the blob at key. No-op if it does not exist. */
47
+ remove(key: string): void;
48
+ /** Optional binary read for file-like artifacts. */
49
+ readBytes?(key: string): Uint8Array | null;
50
+ /** Optional binary write for file-like artifacts. */
51
+ writeBytes?(key: string, content: Uint8Array): void;
52
+ /** Optional key listing by prefix. */
53
+ listKeys?(prefix?: string): string[];
54
+ /** Optional metadata lookup. */
55
+ stat?(key: string): BlobStat | null;
56
+ }
57
+ interface KindValueRef {
58
+ readonly kind: string;
59
+ readonly value: string;
60
+ }
61
+ /** Serialize a KindValueRef to the wire format: b64:<base64url(json)> */
62
+ declare function serializeRef(ref: KindValueRef): string;
63
+ /** Parse a wire-format ref string (b64:<base64url(json)>) into a KindValueRef.
64
+ * Also accepts the legacy ::fs-path::<path> format for backward compatibility. */
65
+ declare function parseRef(s: string): KindValueRef;
66
+ interface KVStorage {
67
+ /** Returns the stored value, or null if the key does not exist. */
68
+ read(key: string): unknown | null;
69
+ /** Write value at key. Overwrites any existing value. */
70
+ write(key: string, value: unknown): void;
71
+ /** Delete the key. No-op if it does not exist. */
72
+ delete(key: string): void;
73
+ /**
74
+ * List all keys, optionally filtered to those starting with prefix.
75
+ * Order is implementation-defined.
76
+ */
77
+ listKeys(prefix?: string): string[];
78
+ }
79
+ interface AtomicRelayLock {
80
+ /**
81
+ * Attempt to acquire the lock without blocking.
82
+ * Returns a `release` function if successful, or `null` if the lock is
83
+ * already held by another actor (relay: that actor will complete the work).
84
+ */
85
+ tryAcquire(): (() => void) | null;
86
+ }
87
+
88
+ /**
89
+ * board-live-cards-public.ts
90
+ *
91
+ * Platform-free public API layer for the board-live-cards system.
92
+ *
93
+ * ─────────────────────────────────────────────────────────────────────────────
94
+ * LAYER DIAGRAM
95
+ * ─────────────────────────────────────────────────────────────────────────────
96
+ *
97
+ * board-live-cards-cli.ts (THIN — arg parse → call public → print JSON)
98
+ * ↓ calls
99
+ * board-live-cards-public.ts (THIS FILE — facade, all logic, no platform code)
100
+ * ↓ depends on injected
101
+ * board-live-cards-lib.ts (pure domain — stores, graph, codecs)
102
+ *
103
+ * ─────────────────────────────────────────────────────────────────────────────
104
+ * PLATFORM ADAPTERS (injected into BoardPlatformAdapter)
105
+ * ─────────────────────────────────────────────────────────────────────────────
106
+ *
107
+ * Node/FS createFsBoardPlatformAdapter(baseRef, cliDir)
108
+ * Azure Functions createAzureBoardPlatformAdapter(baseRef, containerClient, …)
109
+ * Firebase Fn createFirebaseBoardPlatformAdapter(baseRef, firestoreDb, …)
110
+ * In-memory/test createInMemoryBoardPlatformAdapter(baseRef)
111
+ *
112
+ * ─────────────────────────────────────────────────────────────────────────────
113
+ * USAGE
114
+ * ─────────────────────────────────────────────────────────────────────────────
115
+ *
116
+ * const board = createBoardLiveCardsPublic(baseRef, adapter);
117
+ * const result = await board.processAccumulatedEvents();
118
+ * const status = board.status();
119
+ */
120
+
121
+ type CommandInput = {
122
+ params?: Record<string, string | number | boolean>;
123
+ body?: unknown;
124
+ };
125
+ type CommandResult<T = undefined> = (T extends undefined ? {
126
+ status: 'success';
127
+ } : {
128
+ status: 'success';
129
+ data: T;
130
+ }) | {
131
+ status: 'fail';
132
+ error: string;
133
+ } | {
134
+ status: 'error';
135
+ error: string;
136
+ };
137
+ interface BoardPlatformAdapter {
138
+ /**
139
+ * KV storage factory — scoped by namespace.
140
+ * Namespaces used by the public layer:
141
+ * 'state-snapshot' — board graph snapshot (StateSnapshotStorageAdapter, built internally)
142
+ * 'config' — board configuration (.task-executor, .chat-handler, .card-store-ref)
143
+ * 'card-upsert' — card upsert dedup index
144
+ * 'execution-requests' — queued execution requests (keyed by journalId)
145
+ * 'card-runtime' — card runtime state snapshots
146
+ * 'output' — published board status + card computed outputs
147
+ */
148
+ kvStorage(namespace: string): KVStorage;
149
+ /**
150
+ * Build a KVStorage rooted at the given ref.
151
+ * Used by the public layer for both card store and outputs store routing.
152
+ * FS: createFsKvStorage(parseRef(ref).value)
153
+ * localStorage: createLocalStorageKvStorage(parseRef(ref).value)
154
+ */
155
+ kvStorageForRef(ref: string): KVStorage;
156
+ /**
157
+ * Blob storage factory — scoped by namespace.
158
+ * Namespaces used by the public layer:
159
+ * 'sources' — fetched source data files (keyed by cardId/outputFile)
160
+ * '' — root-scoped blob access (for resolving arbitrary KindValueRef blobs)
161
+ */
162
+ blobStorage(namespace: string): BlobStorage;
163
+ /**
164
+ * Journal storage adapter (append-only log).
165
+ * Uses the lib's JournalStorageAdapter interface.
166
+ * One journal per board — no namespace parameter needed.
167
+ */
168
+ journalAdapter(): JournalStorageAdapter;
169
+ /**
170
+ * AtomicRelayLock — non-blocking try-acquire with relay-on-busy semantics.
171
+ * Guards processAccumulatedEvents drain cycle.
172
+ * FS: proper-lockfile (createFsAtomicRelayLock)
173
+ * Azure: blob lease
174
+ * Firestore: Firestore transaction + sentinel document
175
+ */
176
+ lock: AtomicRelayLock;
177
+ /**
178
+ * Self-identity ExecutionRef — how to invoke THIS board instance.
179
+ * Embedded in source callback tokens so executors know where to report back.
180
+ * Node/FS: { howToRun: 'local-node', whatToRun: 'b64:<base64url({"kind":"fs-path","value":"/path/to/cli.js"})>' }
181
+ * Azure Fn: { howToRun: 'http:post', whatToRun: 'b64:<base64url({"kind":"http-url","value":"https://…/api/board"})>' }
182
+ */
183
+ selfRef: ExecutionRef;
184
+ /**
185
+ * Generic execution dispatch — platform adapts ExecutionRef → actual transport.
186
+ * Public layer constructs fully-formed semantic args (source def, base_ref,
187
+ * callback token with selfRef baked in). Platform handles transport:
188
+ * Node: writes args to temp file, spawns detached process
189
+ * Azure: HTTP POST args as JSON body
190
+ * Firebase: publishes args as pubsub message
191
+ */
192
+ dispatchExecution(ref: ExecutionRef, args: Record<string, unknown>): Promise<{
193
+ dispatched: boolean;
194
+ error?: string;
195
+ }>;
196
+ /**
197
+ * Resolve a blob ref to its string contents.
198
+ * The adapter handles the platform-specific lookup (e.g. absolute FS path vs board-relative key).
199
+ * Throws if the blob does not exist.
200
+ */
201
+ resolveBlob(ref: KindValueRef): string;
202
+ /**
203
+ * Compute a stable, deterministic content hash for any JSON-serializable value.
204
+ * Used for dedup indexes and snapshot versioning.
205
+ * Node/FS: computeStableJsonHash (storage-fs-adapters)
206
+ * Browser: Web Crypto subtle.digest or equivalent
207
+ */
208
+ hashFn(value: unknown): string;
209
+ /**
210
+ * Generate a random short ID (32 hex chars).
211
+ * Used for commit IDs and delivery tokens.
212
+ * Node/FS: getHash(`${Date.now()}-${Math.random()}`).slice(0, 32)
213
+ * Browser: crypto.randomUUID().replace(/-/g, '')
214
+ */
215
+ genId(): string;
216
+ /**
217
+ * Request an additional drain pass asynchronously (e.g. spawn a background process).
218
+ * Called as the relay continuation after each drain cycle so that events written
219
+ * during the cycle (e.g. task-completed appended by the card handler) are eventually
220
+ * processed even when the current process exits immediately after returning.
221
+ * Optional — if absent, no continuation is scheduled.
222
+ */
223
+ requestProcessAccumulated?(): void;
224
+ /**
225
+ * Optional cross-process board change notification publisher (named pipe, webhook, pubsub, etc.).
226
+ * Called once per drain cycle with the complete batch of notifications produced in that cycle.
227
+ */
228
+ publishBoardChangeNotifications?(notifications: BoardChangeNotification[]): void | Promise<void>;
229
+ /** Optional warn sink — defaults to no-op. */
230
+ onWarn?(msg: string): void;
231
+ }
232
+ interface BoardLiveCardsPublic {
233
+ init(input: CommandInput): CommandResult;
234
+ status(input: CommandInput): CommandResult<BoardStatusObject>;
235
+ getCardStoreRef(input: CommandInput): CommandResult<{
236
+ storeRef: string;
237
+ }>;
238
+ getOutputsStoreRef(input: CommandInput): CommandResult<{
239
+ storeRef: string;
240
+ }>;
241
+ getConfig(input: CommandInput): CommandResult<{
242
+ value: unknown;
243
+ }>;
244
+ getOutputsDataObject(input: CommandInput): CommandResult;
245
+ getAllOutputsDataObjects(input: CommandInput): CommandResult<Record<string, unknown>>;
246
+ getOutputsComputedValues(input: CommandInput): CommandResult;
247
+ getAllOutputsComputedValues(input: CommandInput): CommandResult<Record<string, unknown>>;
248
+ removeCard(input: CommandInput): CommandResult;
249
+ retrigger(input: CommandInput): CommandResult;
250
+ processAccumulatedEvents(input: CommandInput): Promise<CommandResult>;
251
+ upsertCard(input: CommandInput): CommandResult;
252
+ taskFailed(input: CommandInput): CommandResult;
253
+ taskProgress(input: CommandInput): CommandResult;
254
+ sourceDataFetched(input: CommandInput): CommandResult;
255
+ sourceDataFetchFailure(input: CommandInput): CommandResult;
256
+ }
257
+ type BoardChangeNotification = OutputStoreEvent | {
258
+ kind: 'card_refreshed';
259
+ cardId: string;
260
+ card: LiveCard;
261
+ };
262
+ declare function createBoardLiveCardsPublic(baseRef: KindValueRef, adapter: BoardPlatformAdapter): BoardLiveCardsPublic;
263
+ interface BoardNonCorePlatformAdapter extends BoardPlatformAdapter {
264
+ /**
265
+ * Synchronously invoke a task executor subcommand and return stdout.
266
+ * Throws on non-zero exit or timeout.
267
+ */
268
+ invokeExecutorSync(ref: ExecutionRef, subcommand: string, args: string[], opts?: {
269
+ timeout?: number;
270
+ }): string;
271
+ /** Schema-only card validator (no executor invocation). */
272
+ validateSchema(card: Record<string, unknown>): {
273
+ ok: boolean;
274
+ errors: string[];
275
+ };
276
+ /** Create a temp file path for I/O staging — absolute, board-scoped. */
277
+ makeTempFilePath(label: string, ext?: string): string;
278
+ /** Absolute-path blob I/O for temp files and card file references. */
279
+ absoluteBlob: BlobStorage;
280
+ }
281
+ interface BoardLiveCardsNonCorePublic {
282
+ /** params: cardId? or all?; returns array even for single card */
283
+ validateCard(input: CommandInput): CommandResult<Array<{
284
+ cardId: string;
285
+ isValid: boolean;
286
+ issues: string[];
287
+ }>>;
288
+ /** body: { "card-content": <card> } — card JSON arrives via stdin */
289
+ validateTmpCard(input: CommandInput): CommandResult<{
290
+ cardId: string;
291
+ isValid: boolean;
292
+ issues: string[];
293
+ }>;
294
+ /** params: cardId, sourceIdx, outRef?; body — mockProjections object */
295
+ probeSource(input: CommandInput): CommandResult;
296
+ /** body: { sourceDef, mockProjections }; params: outRef? */
297
+ probeTmpSource(input: CommandInput): CommandResult;
298
+ /** no params needed */
299
+ describeTaskExecutorCapabilities(input: CommandInput): CommandResult;
300
+ /**
301
+ * Write/update cards in the configured card store.
302
+ * body: { ops: Array<{ op: 'update', id: string, 'card-content': LiveCard }> }
303
+ */
304
+ updatesInCardStore(input: CommandInput): CommandResult;
305
+ /**
306
+ * Read cards from the configured card store by id.
307
+ * body: { ids: string[] }
308
+ */
309
+ readFromCardStore(input: CommandInput): CommandResult<{
310
+ cards: Array<{
311
+ id: string;
312
+ 'card-content': LiveCard | null;
313
+ }>;
314
+ }>;
315
+ }
316
+ declare function createBoardLiveCardsNonCorePublic(baseRef: KindValueRef, adapter: BoardNonCorePlatformAdapter): BoardLiveCardsNonCorePublic;
317
+
318
+ export { type BoardPlatformAdapter as B, type CommandInput as C, type KVStorage as K, type BlobStorage as a, type BoardChangeNotification as b, type BoardLiveCardsPublic as c, type CommandResult as d, type KindValueRef as e, type BoardNonCorePlatformAdapter as f, type BoardLiveCardsNonCorePublic as g, createBoardLiveCardsNonCorePublic as h, createBoardLiveCardsPublic as i, parseRef as p, serializeRef as s };
@@ -0,0 +1,318 @@
1
+ import { ExecutionRef } from './execution-refs.js';
2
+ import { L as LiveCard, B as BoardStatusObject, J as JournalStorageAdapter, O as OutputStoreEvent } from './board-live-cards-lib-jM2uYG1v.js';
3
+
4
+ /**
5
+ * storage-interface.ts
6
+ *
7
+ * Three minimal storage primitives that together cover all persistence needs
8
+ * of the board-live-cards system. Any backend (Node fs, CosmosDB, Azure Blob,
9
+ * browser localStorage, in-memory test double) implements these three interfaces.
10
+ *
11
+ * The pure-logic stores in board-live-cards-all-stores.ts depend only on these
12
+ * interfaces — never on Node built-ins.
13
+ *
14
+ * Blob — raw string content at a logical, backend-neutral key
15
+ * Journal — append-only log with cursor-based reads
16
+ * KV — key-value store with list/delete
17
+ *
18
+ * Mapping to existing storage adapters:
19
+ *
20
+ * CardStorageAdapter
21
+ * inventory (cardId → { blobRef, checksum, fileMetadata? }) → KV
22
+ * card JSON files → Blob
23
+ * source output files → Blob
24
+ *
25
+ * JournalStorageAdapter → Journal (board-journal.jsonl)
26
+ *
27
+ * ExecutionRequestStore → KV (keyed by journalId, via createFsKvStorage)
28
+ *
29
+ * StateSnapshotStorageAdapter
30
+ * board-graph.json (packed single JSON, written atomically) → Blob
31
+ * per-card sidecars (cards/<id>/runtime, fetched-sources-manifest) → KV
32
+ */
33
+ interface BlobStat {
34
+ key: string;
35
+ size: number;
36
+ updatedAt?: string;
37
+ contentType?: string;
38
+ }
39
+ interface BlobStorage {
40
+ /** Returns raw content string, or null if the blob does not exist. */
41
+ read(key: string): string | null;
42
+ /** Write content at key. Implementations should be atomic (write-rename). */
43
+ write(key: string, content: string): void;
44
+ /** Returns true if a blob exists at key. */
45
+ exists(key: string): boolean;
46
+ /** Delete the blob at key. No-op if it does not exist. */
47
+ remove(key: string): void;
48
+ /** Optional binary read for file-like artifacts. */
49
+ readBytes?(key: string): Uint8Array | null;
50
+ /** Optional binary write for file-like artifacts. */
51
+ writeBytes?(key: string, content: Uint8Array): void;
52
+ /** Optional key listing by prefix. */
53
+ listKeys?(prefix?: string): string[];
54
+ /** Optional metadata lookup. */
55
+ stat?(key: string): BlobStat | null;
56
+ }
57
+ interface KindValueRef {
58
+ readonly kind: string;
59
+ readonly value: string;
60
+ }
61
+ /** Serialize a KindValueRef to the wire format: b64:<base64url(json)> */
62
+ declare function serializeRef(ref: KindValueRef): string;
63
+ /** Parse a wire-format ref string (b64:<base64url(json)>) into a KindValueRef.
64
+ * Also accepts the legacy ::fs-path::<path> format for backward compatibility. */
65
+ declare function parseRef(s: string): KindValueRef;
66
+ interface KVStorage {
67
+ /** Returns the stored value, or null if the key does not exist. */
68
+ read(key: string): unknown | null;
69
+ /** Write value at key. Overwrites any existing value. */
70
+ write(key: string, value: unknown): void;
71
+ /** Delete the key. No-op if it does not exist. */
72
+ delete(key: string): void;
73
+ /**
74
+ * List all keys, optionally filtered to those starting with prefix.
75
+ * Order is implementation-defined.
76
+ */
77
+ listKeys(prefix?: string): string[];
78
+ }
79
+ interface AtomicRelayLock {
80
+ /**
81
+ * Attempt to acquire the lock without blocking.
82
+ * Returns a `release` function if successful, or `null` if the lock is
83
+ * already held by another actor (relay: that actor will complete the work).
84
+ */
85
+ tryAcquire(): (() => void) | null;
86
+ }
87
+
88
+ /**
89
+ * board-live-cards-public.ts
90
+ *
91
+ * Platform-free public API layer for the board-live-cards system.
92
+ *
93
+ * ─────────────────────────────────────────────────────────────────────────────
94
+ * LAYER DIAGRAM
95
+ * ─────────────────────────────────────────────────────────────────────────────
96
+ *
97
+ * board-live-cards-cli.ts (THIN — arg parse → call public → print JSON)
98
+ * ↓ calls
99
+ * board-live-cards-public.ts (THIS FILE — facade, all logic, no platform code)
100
+ * ↓ depends on injected
101
+ * board-live-cards-lib.ts (pure domain — stores, graph, codecs)
102
+ *
103
+ * ─────────────────────────────────────────────────────────────────────────────
104
+ * PLATFORM ADAPTERS (injected into BoardPlatformAdapter)
105
+ * ─────────────────────────────────────────────────────────────────────────────
106
+ *
107
+ * Node/FS createFsBoardPlatformAdapter(baseRef, cliDir)
108
+ * Azure Functions createAzureBoardPlatformAdapter(baseRef, containerClient, …)
109
+ * Firebase Fn createFirebaseBoardPlatformAdapter(baseRef, firestoreDb, …)
110
+ * In-memory/test createInMemoryBoardPlatformAdapter(baseRef)
111
+ *
112
+ * ─────────────────────────────────────────────────────────────────────────────
113
+ * USAGE
114
+ * ─────────────────────────────────────────────────────────────────────────────
115
+ *
116
+ * const board = createBoardLiveCardsPublic(baseRef, adapter);
117
+ * const result = await board.processAccumulatedEvents();
118
+ * const status = board.status();
119
+ */
120
+
121
+ type CommandInput = {
122
+ params?: Record<string, string | number | boolean>;
123
+ body?: unknown;
124
+ };
125
+ type CommandResult<T = undefined> = (T extends undefined ? {
126
+ status: 'success';
127
+ } : {
128
+ status: 'success';
129
+ data: T;
130
+ }) | {
131
+ status: 'fail';
132
+ error: string;
133
+ } | {
134
+ status: 'error';
135
+ error: string;
136
+ };
137
+ interface BoardPlatformAdapter {
138
+ /**
139
+ * KV storage factory — scoped by namespace.
140
+ * Namespaces used by the public layer:
141
+ * 'state-snapshot' — board graph snapshot (StateSnapshotStorageAdapter, built internally)
142
+ * 'config' — board configuration (.task-executor, .chat-handler, .card-store-ref)
143
+ * 'card-upsert' — card upsert dedup index
144
+ * 'execution-requests' — queued execution requests (keyed by journalId)
145
+ * 'card-runtime' — card runtime state snapshots
146
+ * 'output' — published board status + card computed outputs
147
+ */
148
+ kvStorage(namespace: string): KVStorage;
149
+ /**
150
+ * Build a KVStorage rooted at the given ref.
151
+ * Used by the public layer for both card store and outputs store routing.
152
+ * FS: createFsKvStorage(parseRef(ref).value)
153
+ * localStorage: createLocalStorageKvStorage(parseRef(ref).value)
154
+ */
155
+ kvStorageForRef(ref: string): KVStorage;
156
+ /**
157
+ * Blob storage factory — scoped by namespace.
158
+ * Namespaces used by the public layer:
159
+ * 'sources' — fetched source data files (keyed by cardId/outputFile)
160
+ * '' — root-scoped blob access (for resolving arbitrary KindValueRef blobs)
161
+ */
162
+ blobStorage(namespace: string): BlobStorage;
163
+ /**
164
+ * Journal storage adapter (append-only log).
165
+ * Uses the lib's JournalStorageAdapter interface.
166
+ * One journal per board — no namespace parameter needed.
167
+ */
168
+ journalAdapter(): JournalStorageAdapter;
169
+ /**
170
+ * AtomicRelayLock — non-blocking try-acquire with relay-on-busy semantics.
171
+ * Guards processAccumulatedEvents drain cycle.
172
+ * FS: proper-lockfile (createFsAtomicRelayLock)
173
+ * Azure: blob lease
174
+ * Firestore: Firestore transaction + sentinel document
175
+ */
176
+ lock: AtomicRelayLock;
177
+ /**
178
+ * Self-identity ExecutionRef — how to invoke THIS board instance.
179
+ * Embedded in source callback tokens so executors know where to report back.
180
+ * Node/FS: { howToRun: 'local-node', whatToRun: 'b64:<base64url({"kind":"fs-path","value":"/path/to/cli.js"})>' }
181
+ * Azure Fn: { howToRun: 'http:post', whatToRun: 'b64:<base64url({"kind":"http-url","value":"https://…/api/board"})>' }
182
+ */
183
+ selfRef: ExecutionRef;
184
+ /**
185
+ * Generic execution dispatch — platform adapts ExecutionRef → actual transport.
186
+ * Public layer constructs fully-formed semantic args (source def, base_ref,
187
+ * callback token with selfRef baked in). Platform handles transport:
188
+ * Node: writes args to temp file, spawns detached process
189
+ * Azure: HTTP POST args as JSON body
190
+ * Firebase: publishes args as pubsub message
191
+ */
192
+ dispatchExecution(ref: ExecutionRef, args: Record<string, unknown>): Promise<{
193
+ dispatched: boolean;
194
+ error?: string;
195
+ }>;
196
+ /**
197
+ * Resolve a blob ref to its string contents.
198
+ * The adapter handles the platform-specific lookup (e.g. absolute FS path vs board-relative key).
199
+ * Throws if the blob does not exist.
200
+ */
201
+ resolveBlob(ref: KindValueRef): string;
202
+ /**
203
+ * Compute a stable, deterministic content hash for any JSON-serializable value.
204
+ * Used for dedup indexes and snapshot versioning.
205
+ * Node/FS: computeStableJsonHash (storage-fs-adapters)
206
+ * Browser: Web Crypto subtle.digest or equivalent
207
+ */
208
+ hashFn(value: unknown): string;
209
+ /**
210
+ * Generate a random short ID (32 hex chars).
211
+ * Used for commit IDs and delivery tokens.
212
+ * Node/FS: getHash(`${Date.now()}-${Math.random()}`).slice(0, 32)
213
+ * Browser: crypto.randomUUID().replace(/-/g, '')
214
+ */
215
+ genId(): string;
216
+ /**
217
+ * Request an additional drain pass asynchronously (e.g. spawn a background process).
218
+ * Called as the relay continuation after each drain cycle so that events written
219
+ * during the cycle (e.g. task-completed appended by the card handler) are eventually
220
+ * processed even when the current process exits immediately after returning.
221
+ * Optional — if absent, no continuation is scheduled.
222
+ */
223
+ requestProcessAccumulated?(): void;
224
+ /**
225
+ * Optional cross-process board change notification publisher (named pipe, webhook, pubsub, etc.).
226
+ * Called once per drain cycle with the complete batch of notifications produced in that cycle.
227
+ */
228
+ publishBoardChangeNotifications?(notifications: BoardChangeNotification[]): void | Promise<void>;
229
+ /** Optional warn sink — defaults to no-op. */
230
+ onWarn?(msg: string): void;
231
+ }
232
+ interface BoardLiveCardsPublic {
233
+ init(input: CommandInput): CommandResult;
234
+ status(input: CommandInput): CommandResult<BoardStatusObject>;
235
+ getCardStoreRef(input: CommandInput): CommandResult<{
236
+ storeRef: string;
237
+ }>;
238
+ getOutputsStoreRef(input: CommandInput): CommandResult<{
239
+ storeRef: string;
240
+ }>;
241
+ getConfig(input: CommandInput): CommandResult<{
242
+ value: unknown;
243
+ }>;
244
+ getOutputsDataObject(input: CommandInput): CommandResult;
245
+ getAllOutputsDataObjects(input: CommandInput): CommandResult<Record<string, unknown>>;
246
+ getOutputsComputedValues(input: CommandInput): CommandResult;
247
+ getAllOutputsComputedValues(input: CommandInput): CommandResult<Record<string, unknown>>;
248
+ removeCard(input: CommandInput): CommandResult;
249
+ retrigger(input: CommandInput): CommandResult;
250
+ processAccumulatedEvents(input: CommandInput): Promise<CommandResult>;
251
+ upsertCard(input: CommandInput): CommandResult;
252
+ taskFailed(input: CommandInput): CommandResult;
253
+ taskProgress(input: CommandInput): CommandResult;
254
+ sourceDataFetched(input: CommandInput): CommandResult;
255
+ sourceDataFetchFailure(input: CommandInput): CommandResult;
256
+ }
257
+ type BoardChangeNotification = OutputStoreEvent | {
258
+ kind: 'card_refreshed';
259
+ cardId: string;
260
+ card: LiveCard;
261
+ };
262
+ declare function createBoardLiveCardsPublic(baseRef: KindValueRef, adapter: BoardPlatformAdapter): BoardLiveCardsPublic;
263
+ interface BoardNonCorePlatformAdapter extends BoardPlatformAdapter {
264
+ /**
265
+ * Synchronously invoke a task executor subcommand and return stdout.
266
+ * Throws on non-zero exit or timeout.
267
+ */
268
+ invokeExecutorSync(ref: ExecutionRef, subcommand: string, args: string[], opts?: {
269
+ timeout?: number;
270
+ }): string;
271
+ /** Schema-only card validator (no executor invocation). */
272
+ validateSchema(card: Record<string, unknown>): {
273
+ ok: boolean;
274
+ errors: string[];
275
+ };
276
+ /** Create a temp file path for I/O staging — absolute, board-scoped. */
277
+ makeTempFilePath(label: string, ext?: string): string;
278
+ /** Absolute-path blob I/O for temp files and card file references. */
279
+ absoluteBlob: BlobStorage;
280
+ }
281
+ interface BoardLiveCardsNonCorePublic {
282
+ /** params: cardId? or all?; returns array even for single card */
283
+ validateCard(input: CommandInput): CommandResult<Array<{
284
+ cardId: string;
285
+ isValid: boolean;
286
+ issues: string[];
287
+ }>>;
288
+ /** body: { "card-content": <card> } — card JSON arrives via stdin */
289
+ validateTmpCard(input: CommandInput): CommandResult<{
290
+ cardId: string;
291
+ isValid: boolean;
292
+ issues: string[];
293
+ }>;
294
+ /** params: cardId, sourceIdx, outRef?; body — mockProjections object */
295
+ probeSource(input: CommandInput): CommandResult;
296
+ /** body: { sourceDef, mockProjections }; params: outRef? */
297
+ probeTmpSource(input: CommandInput): CommandResult;
298
+ /** no params needed */
299
+ describeTaskExecutorCapabilities(input: CommandInput): CommandResult;
300
+ /**
301
+ * Write/update cards in the configured card store.
302
+ * body: { ops: Array<{ op: 'update', id: string, 'card-content': LiveCard }> }
303
+ */
304
+ updatesInCardStore(input: CommandInput): CommandResult;
305
+ /**
306
+ * Read cards from the configured card store by id.
307
+ * body: { ids: string[] }
308
+ */
309
+ readFromCardStore(input: CommandInput): CommandResult<{
310
+ cards: Array<{
311
+ id: string;
312
+ 'card-content': LiveCard | null;
313
+ }>;
314
+ }>;
315
+ }
316
+ declare function createBoardLiveCardsNonCorePublic(baseRef: KindValueRef, adapter: BoardNonCorePlatformAdapter): BoardLiveCardsNonCorePublic;
317
+
318
+ export { type BoardPlatformAdapter as B, type CommandInput as C, type KVStorage as K, type BlobStorage as a, type BoardChangeNotification as b, type BoardLiveCardsPublic as c, type CommandResult as d, type KindValueRef as e, type BoardNonCorePlatformAdapter as f, type BoardLiveCardsNonCorePublic as g, createBoardLiveCardsNonCorePublic as h, createBoardLiveCardsPublic as i, parseRef as p, serializeRef as s };