yaml-flow 7.1.0 → 8.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 (386) hide show
  1. package/browser/asset-integrity.json +8 -4
  2. package/browser/board-livecards-client.js +1 -1
  3. package/browser/board-livecards-localstorage.js +5 -5
  4. package/browser/live-cards.js +19 -3309
  5. package/cli/board-live-cards-lib-tjYsPt5U.d.ts +321 -0
  6. package/{dist/cli → cli}/browser-api/board-live-cards-browser-adapter.d.ts +3 -5
  7. package/{dist/cli → cli}/browser-api/card-store-browser-api.d.ts +1 -2
  8. package/{dist/cli → cli}/browser-api/card-store-browser-api.js +1 -1
  9. package/cli/execution-interface-C_A6WCiK.d.ts +284 -0
  10. package/{dist/cli → cli}/node/artifacts-store-cli.js +2 -2
  11. package/cli/node/batch-runner-cli.js +3 -0
  12. package/cli/node/board-live-cards-cli.js +15 -0
  13. package/{dist/cli → cli}/node/execution-adapter.d.ts +3 -3
  14. package/cli/node/execution-adapter.js +3 -0
  15. package/{dist/cli → cli}/node/fs-board-adapter.d.ts +24 -11
  16. package/cli/node/fs-board-adapter.js +14 -0
  17. package/cli/node/step-machine-cli.d.ts +7 -0
  18. package/cli/node/step-machine-cli.js +5 -0
  19. package/{dist/board-live-cards-public-5n1-syA3.d.cts → cli/types-CziUxkiv.d.ts} +68 -5
  20. package/examples/board/.demo-setup/run-1778643703151-3360-dopnpv/board-default/gandalf-runtime/.config/card-store-ref.json +1 -0
  21. package/examples/board/.demo-setup/run-1778643703151-3360-dopnpv/board-default/gandalf-runtime/.config/chat-handler.json +1 -0
  22. package/examples/board/.demo-setup/run-1778643703151-3360-dopnpv/board-default/gandalf-runtime/.config/outputs-store-ref.json +1 -0
  23. package/examples/board/.demo-setup/run-1778643703151-3360-dopnpv/board-default/gandalf-runtime/.config/task-executor.json +1 -0
  24. package/examples/board/.demo-setup/run-1778643703151-3360-dopnpv/board-default/gandalf-runtime/.state-snapshot/board/graph.json +29 -0
  25. package/examples/board/.demo-setup/run-1778643703151-3360-dopnpv/board-default/gandalf-runtime/.state-snapshot/board/lastJournalProcessedId.json +1 -0
  26. package/examples/board/.demo-setup/run-1778643703151-3360-dopnpv/board-default/gandalf-runtime-out/.outputs/status.json +25 -0
  27. package/examples/board/.demo-setup/run-1778643703151-3360-dopnpv/board-default/runtime-out/.outputs/cards/card-market-prices/computed_values.json +67 -0
  28. package/examples/board/.demo-setup/run-1778643703151-3360-dopnpv/board-default/runtime-out/.outputs/cards/card-portfolio/computed_values.json +1 -0
  29. package/examples/board/.demo-setup/run-1778643703151-3360-dopnpv/board-default/runtime-out/.outputs/cards/card-portfolio-value/computed_values.json +52 -0
  30. package/examples/board/.demo-setup/run-1778643703151-3360-dopnpv/board-default/runtime-out/.outputs/data-objects/holdings.json +22 -0
  31. package/examples/board/.demo-setup/run-1778643703151-3360-dopnpv/board-default/runtime-out/.outputs/data-objects/positions.json +46 -0
  32. package/examples/board/.demo-setup/run-1778643703151-3360-dopnpv/board-default/runtime-out/.outputs/data-objects/quotes.json +35 -0
  33. package/examples/board/.demo-setup/run-1778643703151-3360-dopnpv/board-default/runtime-out/.outputs/status.json +113 -0
  34. package/examples/{example-board → board}/demo-server-config.json +0 -1
  35. package/examples/{example-board → board}/demo-server.js +23 -48
  36. package/examples/{example-board → board}/demo-shell-with-server.html +3 -3
  37. package/examples/{example-board → board}/demo-task-executor.js +71 -24
  38. package/examples/board/gandalf-cards/card-source-kinds.json +36 -0
  39. package/examples/board/gandalf-cards/cards/_index.json +7 -0
  40. package/examples/board/gandalf-cards/cards/card-source-kinds.json +64 -0
  41. package/examples/board/source-def-flows/copilot.flow.json +33 -0
  42. package/examples/board/source-def-flows/mock.flow.json +35 -0
  43. package/examples/board/source-def-flows/url-list.flow.json +33 -0
  44. package/examples/board/source-def-flows/url.flow.json +33 -0
  45. package/examples/board/source-def-flows/workiq.flow.json +34 -0
  46. package/examples/board/source-def-handlers/copilot-source-handler.js +141 -0
  47. package/examples/board/source-def-handlers/http-source-handler.js +145 -0
  48. package/examples/board/source_def_flows.json +249 -0
  49. package/examples/board/test/demo-http-test.js +317 -0
  50. package/examples/{example-board → board-local}/demo-shell-localstorage.html +4 -4
  51. package/examples/{browser/boards/portfolio-tracker → portfolio-tracker/handlers}/portfolio-tracker-fetch-prices.js +1 -1
  52. package/examples/{browser/boards/portfolio-tracker/portfolio-tracker-public.js → portfolio-tracker/portfolio-tracker.js} +11 -14
  53. package/examples/{browser/boards/portfolio-tracker → portfolio-tracker/test}/portfolio-t4.js +32 -50
  54. package/lib/artifacts-store-lib-public-BABrgFkV.d.ts +119 -0
  55. package/lib/artifacts-store-lib-public-DGa8BpJT.d.cts +119 -0
  56. package/lib/artifacts-store-public.cjs +2 -0
  57. package/lib/artifacts-store-public.d.cts +5 -0
  58. package/lib/artifacts-store-public.d.ts +5 -0
  59. package/lib/artifacts-store-public.js +2 -0
  60. package/lib/board-live-cards-node.cjs +14 -0
  61. package/{dist/cli/node/execution-adapter.d.cts → lib/board-live-cards-node.d.cts} +45 -85
  62. package/lib/board-live-cards-node.d.ts +134 -0
  63. package/lib/board-live-cards-node.js +14 -0
  64. package/lib/board-live-cards-public-BnmRAbQV.d.cts +383 -0
  65. package/{dist/board-live-cards-public-CK_J8uv0.d.ts → lib/board-live-cards-public-CsmYrvpd.d.ts} +142 -76
  66. package/lib/board-live-cards-public.cjs +3 -0
  67. package/lib/board-live-cards-public.d.cts +4 -0
  68. package/lib/board-live-cards-public.d.ts +4 -0
  69. package/lib/board-live-cards-public.js +3 -0
  70. package/lib/board-live-cards-server-runtime.cjs +9 -0
  71. package/lib/board-live-cards-server-runtime.d.cts +6 -0
  72. package/lib/board-live-cards-server-runtime.d.ts +6 -0
  73. package/lib/board-live-cards-server-runtime.js +9 -0
  74. package/lib/board-livegraph-runtime/index.cjs +3 -0
  75. package/{dist → lib}/board-livegraph-runtime/index.d.cts +1 -2
  76. package/{dist → lib}/board-livegraph-runtime/index.d.ts +1 -2
  77. package/lib/board-livegraph-runtime/index.js +3 -0
  78. package/{dist/storage-refs.cjs → lib/board-worker-adapter.cjs} +2 -2
  79. package/{dist/storage-refs.d.cts → lib/board-worker-adapter.d.cts} +4 -3
  80. package/{dist/storage-refs.d.ts → lib/board-worker-adapter.d.ts} +4 -3
  81. package/{dist/storage-refs.js → lib/board-worker-adapter.js} +2 -2
  82. package/{dist → lib}/card-compute/index.cjs +1 -1
  83. package/{dist → lib}/card-compute/index.js +1 -1
  84. package/lib/card-store-public.cjs +2 -0
  85. package/lib/card-store-public.d.cts +61 -0
  86. package/lib/card-store-public.d.ts +61 -0
  87. package/lib/card-store-public.js +2 -0
  88. package/lib/card-validation.cjs +10 -0
  89. package/lib/card-validation.d.cts +35 -0
  90. package/lib/card-validation.d.ts +35 -0
  91. package/lib/card-validation.js +10 -0
  92. package/{dist/constants-oCEbNpul.d.ts → lib/constants-BPVLb3Es.d.ts} +1 -1
  93. package/{dist/constants-BzZUyYlp.d.cts → lib/constants-DXxsRN9y.d.cts} +1 -1
  94. package/{dist → lib}/continuous-event-graph/index.cjs +2 -2
  95. package/{dist → lib}/continuous-event-graph/index.d.cts +3 -5
  96. package/{dist → lib}/continuous-event-graph/index.d.ts +3 -5
  97. package/{dist → lib}/continuous-event-graph/index.js +2 -2
  98. package/{dist → lib}/event-graph/index.d.cts +2 -2
  99. package/{dist → lib}/event-graph/index.d.ts +2 -2
  100. package/{dist → lib}/execution-refs.d.cts +29 -10
  101. package/{dist → lib}/execution-refs.d.ts +29 -10
  102. package/lib/index.cjs +25 -0
  103. package/{dist → lib}/index.d.cts +7 -8
  104. package/{dist → lib}/index.d.ts +7 -8
  105. package/lib/index.js +25 -0
  106. package/{dist/live-cards-bridge-BXbVTsna.d.cts → lib/live-cards-bridge-DC_ZU0eS.d.ts} +134 -3
  107. package/{dist/live-cards-bridge-Ds28XR15.d.ts → lib/live-cards-bridge-b25aAVvE.d.cts} +134 -3
  108. package/lib/loader-CuuLjxVA.d.cts +42 -0
  109. package/lib/loader-Zborm2pq.d.ts +42 -0
  110. package/lib/server-runtime/index.cjs +9 -0
  111. package/{dist → lib}/server-runtime/index.d.cts +4 -4
  112. package/{dist → lib}/server-runtime/index.d.ts +4 -4
  113. package/lib/server-runtime/index.js +9 -0
  114. package/lib/step-machine/index.d.cts +64 -0
  115. package/lib/step-machine/index.d.ts +64 -0
  116. package/lib/step-machine-public/index.cjs +5 -0
  117. package/{dist → lib}/step-machine-public/index.d.cts +14 -1
  118. package/{dist → lib}/step-machine-public/index.d.ts +14 -1
  119. package/lib/step-machine-public/index.js +5 -0
  120. package/lib/storage-interface-BhAON-gW.d.cts +84 -0
  121. package/lib/storage-interface-BhAON-gW.d.ts +84 -0
  122. package/lib/stores/index.cjs +3 -0
  123. package/lib/stores/index.d.cts +4 -0
  124. package/lib/stores/index.d.ts +4 -0
  125. package/lib/stores/index.js +3 -0
  126. package/lib/stores/kv.cjs +3 -0
  127. package/lib/stores/kv.d.cts +32 -0
  128. package/lib/stores/kv.d.ts +32 -0
  129. package/lib/stores/kv.js +3 -0
  130. package/{dist → lib}/stores/memory.d.cts +1 -1
  131. package/{dist → lib}/stores/memory.d.ts +1 -1
  132. package/{dist/types-HGDTWIun.d.ts → lib/types-CBxkYuLY.d.ts} +2 -1
  133. package/{dist/types-ycun84cq.d.cts → lib/types-DQ1bKuB1.d.cts} +11 -0
  134. package/{dist/types-ycun84cq.d.ts → lib/types-DQ1bKuB1.d.ts} +11 -0
  135. package/{dist/types-CU3DjTKL.d.cts → lib/types-DkFvgxwq.d.cts} +2 -1
  136. package/package.json +79 -119
  137. package/board-live-cards-cli.js +0 -37
  138. package/browser/board-livecards-client.js.map +0 -1
  139. package/browser/board-livecards-localstorage.js.map +0 -1
  140. package/browser/board-livegraph-engine.js +0 -3
  141. package/browser/board-livegraph-engine.js.map +0 -1
  142. package/browser/card-compute.js +0 -266
  143. package/browser/compute-jsonata.js.map +0 -1
  144. package/card-store.js +0 -37
  145. package/dist/batch/index.cjs.map +0 -1
  146. package/dist/batch/index.js.map +0 -1
  147. package/dist/board-live-cards-lib-Bg6EvCo5.d.cts +0 -136
  148. package/dist/board-live-cards-lib-jM2uYG1v.d.ts +0 -136
  149. package/dist/board-livegraph-runtime/index.cjs +0 -3
  150. package/dist/board-livegraph-runtime/index.cjs.map +0 -1
  151. package/dist/board-livegraph-runtime/index.js +0 -3
  152. package/dist/board-livegraph-runtime/index.js.map +0 -1
  153. package/dist/card-compute/index.cjs.map +0 -1
  154. package/dist/card-compute/index.js.map +0 -1
  155. package/dist/cli/browser-api/board-live-cards-browser-adapter.cjs +0 -3
  156. package/dist/cli/browser-api/board-live-cards-browser-adapter.cjs.map +0 -1
  157. package/dist/cli/browser-api/board-live-cards-browser-adapter.d.cts +0 -37
  158. package/dist/cli/browser-api/board-live-cards-browser-adapter.js.map +0 -1
  159. package/dist/cli/browser-api/card-store-browser-api.cjs +0 -2
  160. package/dist/cli/browser-api/card-store-browser-api.cjs.map +0 -1
  161. package/dist/cli/browser-api/card-store-browser-api.d.cts +0 -26
  162. package/dist/cli/browser-api/card-store-browser-api.js.map +0 -1
  163. package/dist/cli/node/artifacts-store-cli.cjs +0 -11
  164. package/dist/cli/node/artifacts-store-cli.cjs.map +0 -1
  165. package/dist/cli/node/artifacts-store-cli.d.cts +0 -8
  166. package/dist/cli/node/artifacts-store-cli.js.map +0 -1
  167. package/dist/cli/node/board-live-cards-cli.cjs +0 -15
  168. package/dist/cli/node/board-live-cards-cli.cjs.map +0 -1
  169. package/dist/cli/node/board-live-cards-cli.d.cts +0 -20
  170. package/dist/cli/node/board-live-cards-cli.js +0 -15
  171. package/dist/cli/node/board-live-cards-cli.js.map +0 -1
  172. package/dist/cli/node/card-store-cli.cjs +0 -8
  173. package/dist/cli/node/card-store-cli.cjs.map +0 -1
  174. package/dist/cli/node/card-store-cli.d.cts +0 -15
  175. package/dist/cli/node/card-store-cli.js.map +0 -1
  176. package/dist/cli/node/execution-adapter.cjs +0 -3
  177. package/dist/cli/node/execution-adapter.cjs.map +0 -1
  178. package/dist/cli/node/execution-adapter.js +0 -3
  179. package/dist/cli/node/execution-adapter.js.map +0 -1
  180. package/dist/cli/node/fs-board-adapter.cjs +0 -14
  181. package/dist/cli/node/fs-board-adapter.cjs.map +0 -1
  182. package/dist/cli/node/fs-board-adapter.d.cts +0 -204
  183. package/dist/cli/node/fs-board-adapter.js +0 -14
  184. package/dist/cli/node/fs-board-adapter.js.map +0 -1
  185. package/dist/cli/node/source-cli-task-executor.cjs +0 -11
  186. package/dist/cli/node/source-cli-task-executor.cjs.map +0 -1
  187. package/dist/cli/node/source-cli-task-executor.js.map +0 -1
  188. package/dist/config/index.cjs.map +0 -1
  189. package/dist/config/index.js.map +0 -1
  190. package/dist/continuous-event-graph/index.cjs.map +0 -1
  191. package/dist/continuous-event-graph/index.js.map +0 -1
  192. package/dist/event-graph/index.cjs.map +0 -1
  193. package/dist/event-graph/index.js.map +0 -1
  194. package/dist/execution-refs.cjs.map +0 -1
  195. package/dist/execution-refs.js.map +0 -1
  196. package/dist/index.cjs +0 -30
  197. package/dist/index.cjs.map +0 -1
  198. package/dist/index.js +0 -30
  199. package/dist/index.js.map +0 -1
  200. package/dist/inference/index.cjs +0 -7
  201. package/dist/inference/index.cjs.map +0 -1
  202. package/dist/inference/index.d.cts +0 -229
  203. package/dist/inference/index.d.ts +0 -229
  204. package/dist/inference/index.js +0 -7
  205. package/dist/inference/index.js.map +0 -1
  206. package/dist/server-runtime/index.cjs +0 -9
  207. package/dist/server-runtime/index.cjs.map +0 -1
  208. package/dist/server-runtime/index.js +0 -9
  209. package/dist/server-runtime/index.js.map +0 -1
  210. package/dist/step-machine/index.cjs.map +0 -1
  211. package/dist/step-machine/index.d.cts +0 -102
  212. package/dist/step-machine/index.d.ts +0 -102
  213. package/dist/step-machine/index.js.map +0 -1
  214. package/dist/step-machine-public/index.cjs +0 -3
  215. package/dist/step-machine-public/index.cjs.map +0 -1
  216. package/dist/step-machine-public/index.js +0 -3
  217. package/dist/step-machine-public/index.js.map +0 -1
  218. package/dist/storage-refs.cjs.map +0 -1
  219. package/dist/storage-refs.js.map +0 -1
  220. package/dist/stores/file.cjs +0 -2
  221. package/dist/stores/file.cjs.map +0 -1
  222. package/dist/stores/file.d.cts +0 -36
  223. package/dist/stores/file.d.ts +0 -36
  224. package/dist/stores/file.js +0 -2
  225. package/dist/stores/file.js.map +0 -1
  226. package/dist/stores/index.cjs +0 -2
  227. package/dist/stores/index.cjs.map +0 -1
  228. package/dist/stores/index.d.cts +0 -4
  229. package/dist/stores/index.d.ts +0 -4
  230. package/dist/stores/index.js +0 -2
  231. package/dist/stores/index.js.map +0 -1
  232. package/dist/stores/localStorage.cjs +0 -2
  233. package/dist/stores/localStorage.cjs.map +0 -1
  234. package/dist/stores/localStorage.d.cts +0 -34
  235. package/dist/stores/localStorage.d.ts +0 -34
  236. package/dist/stores/localStorage.js +0 -2
  237. package/dist/stores/localStorage.js.map +0 -1
  238. package/dist/stores/memory.cjs.map +0 -1
  239. package/dist/stores/memory.js.map +0 -1
  240. package/dist/types-CHSdoAAA.d.cts +0 -135
  241. package/dist/types-CoW0gQl3.d.ts +0 -135
  242. package/examples/browser/boards/portfolio-tracker/portfolio-tracker-fetch-prices.py +0 -201
  243. package/examples/browser/boards/portfolio-tracker/portfolio-tracker-http-test.js +0 -370
  244. package/examples/browser/boards/portfolio-tracker/portfolio-tracker-http-test.py +0 -398
  245. package/examples/browser/boards/portfolio-tracker/portfolio-tracker-inference-adapter.js +0 -196
  246. package/examples/browser/boards/portfolio-tracker/portfolio-tracker-server.js +0 -300
  247. package/examples/browser/boards/portfolio-tracker/portfolio-tracker-server.py +0 -617
  248. package/examples/browser/boards/portfolio-tracker/portfolio-tracker.py +0 -366
  249. package/examples/browser/livecards-browser/index.html +0 -41
  250. package/examples/browser/step-machine-browser/index.html +0 -367
  251. package/examples/cli/step-machine-cli/portfolio-tracker/--base-ref/.runtime-out +0 -1
  252. package/examples/cli/step-machine-cli/portfolio-tracker/--base-ref/board-graph.json +0 -32
  253. package/examples/cli/step-machine-cli/portfolio-tracker/cards/holdings-table.json +0 -22
  254. package/examples/cli/step-machine-cli/portfolio-tracker/cards/portfolio-form.json +0 -43
  255. package/examples/cli/step-machine-cli/portfolio-tracker/cards/portfolio-value.json +0 -15
  256. package/examples/cli/step-machine-cli/portfolio-tracker/cards/price-fetch.json +0 -15
  257. package/examples/cli/step-machine-cli/portfolio-tracker/fetch-prices.js +0 -48
  258. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/_board-cli.js +0 -125
  259. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/add-cards-cli.js +0 -32
  260. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/init-board-cli.js +0 -26
  261. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/poll-status-cli.js +0 -49
  262. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/reset-board-dir-cli.js +0 -25
  263. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/retrigger-cli.js +0 -23
  264. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/status-cli.js +0 -21
  265. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/update-holdings-cli.js +0 -38
  266. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/wait-completed-cli.js +0 -48
  267. package/examples/cli/step-machine-cli/portfolio-tracker/handlers/write-prices-cli.js +0 -31
  268. package/examples/cli/step-machine-cli/portfolio-tracker/handlers-py/_board_pycli.py +0 -107
  269. package/examples/cli/step-machine-cli/portfolio-tracker/handlers-py/add-cards.py +0 -51
  270. package/examples/cli/step-machine-cli/portfolio-tracker/handlers-py/init-board.py +0 -45
  271. package/examples/cli/step-machine-cli/portfolio-tracker/handlers-py/poll-status.py +0 -71
  272. package/examples/cli/step-machine-cli/portfolio-tracker/handlers-py/reset-board-dir.py +0 -36
  273. package/examples/cli/step-machine-cli/portfolio-tracker/inline-python-demo.flow.yaml +0 -26
  274. package/examples/cli/step-machine-cli/portfolio-tracker/inline-python-handlers.py +0 -39
  275. package/examples/cli/step-machine-cli/portfolio-tracker/portfolio-tracker-pycli.flow.yaml +0 -80
  276. package/examples/cli/step-machine-cli/portfolio-tracker/portfolio-tracker.flow.yaml +0 -76
  277. package/examples/cli/step-machine-cli/portfolio-tracker/portfolio-tracker.input.json +0 -44
  278. package/examples/cli/step-machine-cli/portfolio-tracker/run-inline-python-demo-pycli.py +0 -43
  279. package/examples/cli/step-machine-cli/portfolio-tracker/run-portfolio-tracker-pycli.py +0 -77
  280. package/examples/cli/step-machine-cli/portfolio-tracker/run-portfolio-tracker.bat +0 -28
  281. package/examples/cli/step-machine-demo/jsonata-init-board-cli.js +0 -31
  282. package/examples/cli/step-machine-demo/jsonata-init-board.flow.yaml +0 -54
  283. package/examples/cli/step-machine-demo/one-step-cli-only.flow.yaml +0 -21
  284. package/examples/cli/step-machine-demo/step-cli-echo-y.js +0 -15
  285. package/examples/cli/step-machine-demo/step2-double-cli.js +0 -33
  286. package/examples/cli/step-machine-demo/two-step-math.flow.yaml +0 -93
  287. package/examples/cli/step-machine-demo/two-step-mixed.flow.yaml +0 -43
  288. package/examples/example-board/agent-instructions-cardlayout.md +0 -56
  289. package/examples/example-board/agent-instructions.md +0 -834
  290. package/examples/example-board/demo-shell.html +0 -63
  291. package/examples/index.html +0 -785
  292. package/examples/npm-libs/batch/batch-step-machine.ts +0 -121
  293. package/examples/npm-libs/continuous-event-graph/live-cards-board.ts +0 -215
  294. package/examples/npm-libs/continuous-event-graph/live-portfolio-dashboard.ts +0 -555
  295. package/examples/npm-libs/continuous-event-graph/portfolio-tracker.ts +0 -287
  296. package/examples/npm-libs/continuous-event-graph/reactive-monitoring.ts +0 -265
  297. package/examples/npm-libs/continuous-event-graph/reactive-pipeline.ts +0 -168
  298. package/examples/npm-libs/continuous-event-graph/soc-incident-board.ts +0 -287
  299. package/examples/npm-libs/continuous-event-graph/stock-dashboard.ts +0 -229
  300. package/examples/npm-libs/event-graph/ci-cd-pipeline.ts +0 -243
  301. package/examples/npm-libs/event-graph/executor-diamond.ts +0 -165
  302. package/examples/npm-libs/event-graph/executor-pipeline.ts +0 -161
  303. package/examples/npm-libs/event-graph/research-pipeline.ts +0 -137
  304. package/examples/npm-libs/flows/ai-conversation.yaml +0 -116
  305. package/examples/npm-libs/flows/order-processing.yaml +0 -143
  306. package/examples/npm-libs/flows/simple-greeting.yaml +0 -54
  307. package/examples/npm-libs/graph-of-graphs/multi-stage-etl.ts +0 -307
  308. package/examples/npm-libs/graph-of-graphs/url-processing-pipeline.ts +0 -254
  309. package/examples/npm-libs/inference/azure-deployment.ts +0 -149
  310. package/examples/npm-libs/inference/copilot-cli.ts +0 -138
  311. package/examples/npm-libs/inference/data-pipeline.ts +0 -145
  312. package/examples/npm-libs/inference/pluggable-adapters.ts +0 -254
  313. package/examples/npm-libs/node/ai-conversation.ts +0 -195
  314. package/examples/npm-libs/node/simple-greeting.ts +0 -101
  315. package/examples/step-machine-cli/portfolio-tracker/cards/holdings-table.json +0 -22
  316. package/examples/step-machine-cli/portfolio-tracker/cards/portfolio-form.json +0 -43
  317. package/examples/step-machine-cli/portfolio-tracker/cards/portfolio-value.json +0 -15
  318. package/examples/step-machine-cli/portfolio-tracker/cards/price-fetch.json +0 -15
  319. package/examples/step-machine-cli/portfolio-tracker/fetch-prices.js +0 -48
  320. package/examples/step-machine-cli/portfolio-tracker/handlers/_board-cli.js +0 -57
  321. package/examples/step-machine-cli/portfolio-tracker/handlers/add-cards-cli.js +0 -27
  322. package/examples/step-machine-cli/portfolio-tracker/handlers/init-board-cli.js +0 -25
  323. package/examples/step-machine-cli/portfolio-tracker/handlers/reset-board-dir-cli.js +0 -29
  324. package/examples/step-machine-cli/portfolio-tracker/handlers/retrigger-cli.js +0 -27
  325. package/examples/step-machine-cli/portfolio-tracker/handlers/status-cli.js +0 -25
  326. package/examples/step-machine-cli/portfolio-tracker/handlers/update-holdings-cli.js +0 -37
  327. package/examples/step-machine-cli/portfolio-tracker/handlers/wait-completed-cli.js +0 -53
  328. package/examples/step-machine-cli/portfolio-tracker/handlers/write-prices-cli.js +0 -35
  329. package/examples/step-machine-cli/portfolio-tracker/portfolio-tracker-task-executor.cjs +0 -96
  330. package/examples/step-machine-cli/portfolio-tracker/portfolio-tracker.flow.yaml +0 -227
  331. package/examples/step-machine-cli/portfolio-tracker/portfolio-tracker.input.json +0 -38
  332. package/examples/step-machine-cli/portfolio-tracker/run-portfolio-tracker.bat +0 -28
  333. package/step-machine-cli.js +0 -407
  334. /package/{dist/cli → cli}/browser-api/board-live-cards-browser-adapter.js +0 -0
  335. /package/{dist/board-livegraph-runtime → cli/browser-api}/jsonata-sync.cjs +0 -0
  336. /package/{dist/cli → cli}/node/artifacts-store-cli.d.ts +0 -0
  337. /package/{dist/cli/node/source-cli-task-executor.d.cts → cli/node/batch-runner-cli.d.ts} +0 -0
  338. /package/{dist/cli → cli}/node/board-live-cards-cli.d.ts +0 -0
  339. /package/{dist/cli → cli}/node/card-store-cli.d.ts +0 -0
  340. /package/{dist/cli → cli}/node/card-store-cli.js +0 -0
  341. /package/{dist/card-compute → cli/node}/jsonata-sync.cjs +0 -0
  342. /package/{dist/cli → cli}/node/source-cli-task-executor.d.ts +0 -0
  343. /package/{dist/cli → cli}/node/source-cli-task-executor.js +0 -0
  344. /package/examples/{example-board → board}/cards/card-concentration.json +0 -0
  345. /package/examples/{example-board → board}/cards/card-my-identity.json +0 -0
  346. /package/examples/{example-board → board}/cards/card-portfolio-action.json +0 -0
  347. /package/examples/{example-board → board}/cards/card-portfolio-intelligence.json +0 -0
  348. /package/examples/{example-board → board}/cards/card-portfolio-risks.json +0 -0
  349. /package/examples/{example-board → board}/cards/card-rebalance-impact.json +0 -0
  350. /package/examples/{example-board → board}/cards/card-rebalance-sim.json +0 -0
  351. /package/examples/{example-board → board}/cards/cardT-market-prices.json +0 -0
  352. /package/examples/{example-board → board}/cards/cardT-portfolio-value.json +0 -0
  353. /package/examples/{example-board → board}/cards/cardT-portfolio.json +0 -0
  354. /package/examples/{example-board → board}/demo-chat-handler.js +0 -0
  355. /package/examples/{example-board → board}/scripts/copilot_wrapper.bat +0 -0
  356. /package/examples/{example-board → board}/scripts/copilot_wrapper_helper.ps1 +0 -0
  357. /package/examples/{example-board → board}/scripts/workiq_wrapper.mjs +0 -0
  358. /package/examples/{browser/boards/portfolio-tracker → board/test}/portfolio-tracker-sse-worker.js +0 -0
  359. /package/{dist → lib}/batch/index.cjs +0 -0
  360. /package/{dist → lib}/batch/index.d.cts +0 -0
  361. /package/{dist → lib}/batch/index.d.ts +0 -0
  362. /package/{dist → lib}/batch/index.js +0 -0
  363. /package/{dist/cli/browser-api → lib/board-livegraph-runtime}/jsonata-sync.cjs +0 -0
  364. /package/{dist → lib}/card-compute/index.d.cts +0 -0
  365. /package/{dist → lib}/card-compute/index.d.ts +0 -0
  366. /package/{dist/cli/node → lib/card-compute}/jsonata-sync.cjs +0 -0
  367. /package/{dist → lib}/config/index.cjs +0 -0
  368. /package/{dist → lib}/config/index.d.cts +0 -0
  369. /package/{dist → lib}/config/index.d.ts +0 -0
  370. /package/{dist → lib}/config/index.js +0 -0
  371. /package/{dist → lib}/continuous-event-graph/jsonata-sync.cjs +0 -0
  372. /package/{dist → lib}/event-graph/index.cjs +0 -0
  373. /package/{dist → lib}/event-graph/index.js +0 -0
  374. /package/{dist → lib}/execution-refs.cjs +0 -0
  375. /package/{dist → lib}/execution-refs.js +0 -0
  376. /package/{dist → lib}/jsonata-sync.cjs +0 -0
  377. /package/{dist → lib}/server-runtime/jsonata-sync.cjs +0 -0
  378. /package/{dist → lib}/step-machine/index.cjs +0 -0
  379. /package/{dist → lib}/step-machine/index.js +0 -0
  380. /package/{dist → lib}/step-machine-public/jsonata-sync.cjs +0 -0
  381. /package/{dist → lib}/stores/memory.cjs +0 -0
  382. /package/{dist → lib}/stores/memory.js +0 -0
  383. /package/{dist → lib}/types-BBhqYGhE.d.cts +0 -0
  384. /package/{dist → lib}/types-BBhqYGhE.d.ts +0 -0
  385. /package/{dist → lib}/validate-BAVzUJWa.d.ts +0 -0
  386. /package/{dist → lib}/validate-Dbu7ygys.d.cts +0 -0
@@ -1,116 +0,0 @@
1
- # yaml-language-server: $schema=../schema/flow.schema.json
2
-
3
- # AI Conversation Flow with Validation Loop
4
- # Demonstrates retry logic, circuit breakers, and multi-step AI workflows
5
-
6
- settings:
7
- start_step: generate_response
8
- max_total_steps: 50
9
- timeout_ms: 60000
10
-
11
- steps:
12
- generate_response:
13
- description: "Generate AI response based on user input"
14
- expects_data:
15
- - user_message
16
- - conversation_history
17
- produces_data:
18
- - ai_response
19
- - confidence_score
20
- transitions:
21
- success: validate_response
22
- failure: error_state
23
- retry:
24
- max_attempts: 3
25
- delay_ms: 1000
26
- backoff_multiplier: 2
27
-
28
- validate_response:
29
- description: "Validate the AI response meets quality criteria"
30
- expects_data:
31
- - ai_response
32
- - confidence_score
33
- produces_data:
34
- - validation_result
35
- - validation_feedback
36
- transitions:
37
- valid: check_approval
38
- needs_refinement: refine_response
39
- failure: error_state
40
-
41
- refine_response:
42
- description: "Refine AI response based on validation feedback"
43
- expects_data:
44
- - ai_response
45
- - validation_feedback
46
- - user_message
47
- produces_data:
48
- - ai_response
49
- - confidence_score
50
- transitions:
51
- success: validate_response
52
- failure: error_state
53
- circuit_breaker:
54
- max_iterations: 3
55
- on_open: max_refinements
56
-
57
- check_approval:
58
- description: "Present response and check for user approval"
59
- expects_data:
60
- - ai_response
61
- produces_data:
62
- - user_approved
63
- - user_feedback
64
- transitions:
65
- approved: success_state
66
- rejected: incorporate_feedback
67
- timeout: timeout_state
68
-
69
- incorporate_feedback:
70
- description: "Incorporate user feedback into response"
71
- expects_data:
72
- - ai_response
73
- - user_feedback
74
- - user_message
75
- produces_data:
76
- - ai_response
77
- - confidence_score
78
- transitions:
79
- success: validate_response
80
- failure: error_state
81
- circuit_breaker:
82
- max_iterations: 5
83
- on_open: max_feedback_loops
84
-
85
- terminal_states:
86
- success_state:
87
- description: "User approved the AI response"
88
- return_intent: "approved"
89
- return_artifacts:
90
- - ai_response
91
- - conversation_history
92
-
93
- error_state:
94
- description: "Flow encountered an error"
95
- return_intent: "error"
96
- return_artifacts: false
97
-
98
- timeout_state:
99
- description: "User did not respond in time"
100
- return_intent: "timeout"
101
- return_artifacts:
102
- - ai_response
103
-
104
- max_refinements:
105
- description: "Maximum refinement attempts reached"
106
- return_intent: "max_refinements"
107
- return_artifacts:
108
- - ai_response
109
- - validation_feedback
110
-
111
- max_feedback_loops:
112
- description: "Maximum feedback incorporation attempts reached"
113
- return_intent: "max_feedback"
114
- return_artifacts:
115
- - ai_response
116
- - user_feedback
@@ -1,143 +0,0 @@
1
- # yaml-language-server: $schema=../schema/flow.schema.json
2
-
3
- # Order Processing Workflow
4
- # Demonstrates a practical e-commerce order flow with inventory, payment, and shipping
5
-
6
- settings:
7
- start_step: validate_order
8
- max_total_steps: 20
9
- timeout_ms: 120000
10
-
11
- steps:
12
- validate_order:
13
- description: "Validate order details"
14
- expects_data:
15
- - order
16
- produces_data:
17
- - validated_order
18
- - validation_errors
19
- transitions:
20
- valid: check_inventory
21
- invalid: order_invalid
22
- failure: error_state
23
-
24
- check_inventory:
25
- description: "Check product availability"
26
- expects_data:
27
- - validated_order
28
- produces_data:
29
- - inventory_status
30
- - reserved_items
31
- transitions:
32
- available: process_payment
33
- partial: partial_availability
34
- unavailable: out_of_stock
35
- failure: error_state
36
- retry:
37
- max_attempts: 2
38
- delay_ms: 500
39
-
40
- partial_availability:
41
- description: "Handle partial availability - ask user to proceed or cancel"
42
- expects_data:
43
- - validated_order
44
- - inventory_status
45
- produces_data:
46
- - user_decision
47
- - adjusted_order
48
- transitions:
49
- proceed: process_payment
50
- cancel: order_cancelled
51
- failure: error_state
52
-
53
- process_payment:
54
- description: "Process payment for the order"
55
- expects_data:
56
- - validated_order
57
- - reserved_items
58
- produces_data:
59
- - payment_result
60
- - transaction_id
61
- transitions:
62
- success: create_shipment
63
- declined: payment_failed
64
- failure: error_state
65
- retry:
66
- max_attempts: 3
67
- delay_ms: 2000
68
- backoff_multiplier: 1.5
69
-
70
- create_shipment:
71
- description: "Create shipping label and schedule pickup"
72
- expects_data:
73
- - validated_order
74
- - transaction_id
75
- produces_data:
76
- - shipment_id
77
- - tracking_number
78
- - estimated_delivery
79
- transitions:
80
- success: order_complete
81
- failure: shipment_error
82
-
83
- shipment_error:
84
- description: "Handle shipment creation failure - refund and notify"
85
- expects_data:
86
- - transaction_id
87
- - validated_order
88
- produces_data:
89
- - refund_status
90
- transitions:
91
- refunded: order_refunded
92
- failure: manual_intervention
93
-
94
- terminal_states:
95
- order_complete:
96
- description: "Order successfully processed"
97
- return_intent: "success"
98
- return_artifacts:
99
- - transaction_id
100
- - tracking_number
101
- - estimated_delivery
102
-
103
- order_invalid:
104
- description: "Order validation failed"
105
- return_intent: "invalid_order"
106
- return_artifacts:
107
- - validation_errors
108
-
109
- out_of_stock:
110
- description: "Products out of stock"
111
- return_intent: "out_of_stock"
112
- return_artifacts:
113
- - inventory_status
114
-
115
- order_cancelled:
116
- description: "Order cancelled by user"
117
- return_intent: "cancelled"
118
- return_artifacts: false
119
-
120
- payment_failed:
121
- description: "Payment was declined"
122
- return_intent: "payment_declined"
123
- return_artifacts:
124
- - payment_result
125
-
126
- order_refunded:
127
- description: "Order refunded due to shipment failure"
128
- return_intent: "refunded"
129
- return_artifacts:
130
- - refund_status
131
- - transaction_id
132
-
133
- manual_intervention:
134
- description: "Requires manual intervention"
135
- return_intent: "manual_required"
136
- return_artifacts:
137
- - transaction_id
138
- - validated_order
139
-
140
- error_state:
141
- description: "System error"
142
- return_intent: "error"
143
- return_artifacts: false
@@ -1,54 +0,0 @@
1
- # yaml-language-server: $schema=../schema/flow.schema.json
2
-
3
- # Simple Greeting Flow
4
- # Demonstrates basic flow structure with validation and error handling
5
-
6
- settings:
7
- start_step: greet
8
- max_total_steps: 10
9
-
10
- steps:
11
- greet:
12
- description: "Generate a greeting message"
13
- produces_data:
14
- - greeting
15
- - user_name
16
- transitions:
17
- success: validate
18
- failure: error_state
19
-
20
- validate:
21
- description: "Validate the greeting was generated correctly"
22
- expects_data:
23
- - greeting
24
- - user_name
25
- produces_data:
26
- - is_valid
27
- transitions:
28
- success: personalize
29
- invalid: error_state
30
- failure: error_state
31
-
32
- personalize:
33
- description: "Create personalized response"
34
- expects_data:
35
- - greeting
36
- - user_name
37
- produces_data:
38
- - final_message
39
- transitions:
40
- success: success_state
41
- failure: error_state
42
-
43
- terminal_states:
44
- success_state:
45
- description: "Flow completed successfully"
46
- return_intent: "success"
47
- return_artifacts:
48
- - final_message
49
- - user_name
50
-
51
- error_state:
52
- description: "Flow encountered an error"
53
- return_intent: "error"
54
- return_artifacts: false
@@ -1,307 +0,0 @@
1
- /**
2
- * Graph-of-Graphs Example: Multi-Stage ETL Pipeline
3
- *
4
- * An outer event-graph orchestrates an ETL pipeline where:
5
- * - "extract" stage: batch × inner EVENT-GRAPH (parallel source extraction)
6
- * - "transform" stage: batch × inner STEP-MACHINE (sequential validation pipeline)
7
- * - "load" + "validate" stages: run in parallel after transform
8
- *
9
- * Demonstrates:
10
- * - Mixed sub-graph modes (event-graph + step-machine in same pipeline)
11
- * - Config templates shared across both inner configs
12
- * - Variables resolved per-item in the batch
13
- * - Fan-out / fan-in in the outer graph
14
- *
15
- * Outer graph:
16
- * discover-bsources → extract-batch → transform-batch → [load ∥ validate] → finalize
17
- *
18
- * Inner extract graph (event-graph, per source):
19
- * connect → [fetch-metadata ∥ fetch-schema] → snapshot-data
20
- *
21
- * Inner transform flow (step-machine, per record):
22
- * parse → validate → normalize → enrich → (accept | reject)
23
- *
24
- * Run with: npx tsx examples/npm-libs/graph-of-graphs/multi-stage-etl.ts
25
- */
26
-
27
- import {
28
- next, apply, createInitialExecutionState,
29
- } from '../../src/event-graph/index.js';
30
- import { createStepMachine } from '../../src/step-machine/index.js';
31
- import { batch } from '../../src/batch/index.js';
32
- import { resolveVariables, resolveConfigTemplates } from '../../src/config/index.js';
33
- import type { GraphConfig } from '../../src/event-graph/types.js';
34
- import type { StepFlowConfig, StepHandler } from '../../src/step-machine/types.js';
35
-
36
- // ============================================================================
37
- // 1. Inner configs
38
- // ============================================================================
39
-
40
- // --- Extract: event-graph (parallel metadata + schema fetch) ---
41
- const extractGraphTemplate: Record<string, unknown> = {
42
- id: 'source-extractor',
43
- 'config-templates': {
44
- DB_CONN: { driver: 'pg', timeout: 10000, host: '${DB_HOST}' },
45
- },
46
- settings: {
47
- completion: 'all-tasks-complete' as const,
48
- },
49
- tasks: {
50
- connect: {
51
- provides: ['connected'],
52
- config: { 'config-template': 'DB_CONN', database: '${SOURCE_DB}' },
53
- },
54
- 'fetch-metadata': {
55
- requires: ['connected'],
56
- provides: ['metadata-ready'],
57
- config: { 'config-template': 'DB_CONN', query: 'SELECT * FROM information_schema.tables' },
58
- },
59
- 'fetch-schema': {
60
- requires: ['connected'],
61
- provides: ['schema-ready'],
62
- config: { 'config-template': 'DB_CONN', query: 'SELECT * FROM information_schema.columns' },
63
- },
64
- 'snapshot-data': {
65
- requires: ['metadata-ready', 'schema-ready'],
66
- provides: ['snapshot-complete'],
67
- config: { 'config-template': 'DB_CONN', 'cmd-args': 'pg_dump ${SOURCE_DB}' },
68
- },
69
- },
70
- };
71
-
72
- // --- Transform: step-machine (sequential validation pipeline) ---
73
- const transformFlow: StepFlowConfig = {
74
- id: 'record-transformer',
75
- settings: { start_step: 'parse', max_total_steps: 10 },
76
- steps: {
77
- parse: {
78
- produces_data: ['parsed_record'],
79
- transitions: { success: 'validate', error: 'reject' },
80
- },
81
- validate: {
82
- expects_data: ['parsed_record'],
83
- produces_data: ['validation_result'],
84
- transitions: { valid: 'normalize', invalid: 'reject' },
85
- },
86
- normalize: {
87
- expects_data: ['parsed_record'],
88
- produces_data: ['normalized_record'],
89
- transitions: { done: 'enrich' },
90
- },
91
- enrich: {
92
- expects_data: ['normalized_record'],
93
- produces_data: ['enriched_record'],
94
- transitions: { done: 'accept' },
95
- },
96
- },
97
- terminal_states: {
98
- accept: { return_intent: 'accepted', return_artifacts: ['enriched_record'] },
99
- reject: { return_intent: 'rejected', return_artifacts: ['validation_result'] },
100
- },
101
- };
102
-
103
- const transformHandlers: Record<string, StepHandler> = {
104
- parse: async (input) => {
105
- const raw = input.raw_data as string || '';
106
- if (!raw) return { result: 'error' };
107
- return { result: 'success', data: { parsed_record: JSON.parse(raw) } };
108
- },
109
- validate: async (input) => {
110
- const rec = input.parsed_record as Record<string, unknown>;
111
- if (!rec.id || !rec.name) return { result: 'invalid', data: { validation_result: 'missing required fields' } };
112
- return { result: 'valid', data: { validation_result: 'ok' } };
113
- },
114
- normalize: async (input) => {
115
- const rec = input.parsed_record as Record<string, unknown>;
116
- return { result: 'done', data: { normalized_record: { ...rec, name: (rec.name as string).trim().toLowerCase() } } };
117
- },
118
- enrich: async (input) => {
119
- const rec = input.normalized_record as Record<string, unknown>;
120
- return { result: 'done', data: { enriched_record: { ...rec, enriched_at: new Date().toISOString() } } };
121
- },
122
- };
123
-
124
- // ============================================================================
125
- // 2. Outer graph
126
- // ============================================================================
127
-
128
- const outerGraph: GraphConfig = {
129
- id: 'etl-pipeline',
130
- settings: { completion: 'all-tasks-complete' },
131
- tasks: {
132
- 'discover-bsources': {
133
- provides: ['source_defs-discovered'],
134
- },
135
- 'extract-batch': {
136
- requires: ['source_defs-discovered'],
137
- provides: ['extraction-complete'],
138
- },
139
- 'transform-batch': {
140
- requires: ['extraction-complete'],
141
- provides: ['transform-complete'],
142
- },
143
- 'load-to-warehouse': {
144
- requires: ['transform-complete'],
145
- provides: ['load-complete'],
146
- },
147
- 'validate-integrity': {
148
- requires: ['transform-complete'],
149
- provides: ['validation-complete'],
150
- },
151
- 'finalize': {
152
- requires: ['load-complete', 'validation-complete'],
153
- provides: ['pipeline-done'],
154
- },
155
- },
156
- };
157
-
158
- // ============================================================================
159
- // 3. Sub-graph drivers
160
- // ============================================================================
161
-
162
- /** Drive one source through the extract event-graph */
163
- async function runExtractGraph(source: { id: string; db: string }) {
164
- const config = resolveVariables(
165
- resolveConfigTemplates(extractGraphTemplate),
166
- { SOURCE_DB: source.db, DB_HOST: 'db.internal' },
167
- ) as unknown as GraphConfig;
168
-
169
- let state = createInitialExecutionState(config, `extract-${source.id}`);
170
- while (true) {
171
- const { eligibleTasks, isComplete } = next(config, state);
172
- if (isComplete || eligibleTasks.length === 0) break;
173
- await Promise.all(
174
- eligibleTasks.map(async (taskName) => {
175
- state = apply(state, { type: 'task-started', taskName, timestamp: new Date().toISOString() }, config);
176
- await new Promise((r) => setTimeout(r, 5 + Math.random() * 15)); // simulate work
177
- state = apply(state, { type: 'task-completed', taskName, timestamp: new Date().toISOString() }, config);
178
- }),
179
- );
180
- }
181
- return { sourceId: source.id, tokens: state.availableOutputs };
182
- }
183
-
184
- /** Drive one record through the transform step-machine */
185
- async function runTransformFlow(record: { id: string; raw_data: string }) {
186
- const machine = createStepMachine(transformFlow, transformHandlers);
187
- return machine.run({ raw_data: record.raw_data });
188
- }
189
-
190
- // ============================================================================
191
- // 4. Sample data
192
- // ============================================================================
193
-
194
- const source_defs = [
195
- { id: 'src-orders', db: 'orders_db' },
196
- { id: 'src-users', db: 'users_db' },
197
- { id: 'src-products', db: 'products_db' },
198
- ];
199
-
200
- const records = [
201
- { id: 'rec-1', raw_data: '{"id": 1, "name": " Alice "}' },
202
- { id: 'rec-2', raw_data: '{"id": 2, "name": " Bob "}' },
203
- { id: 'rec-3', raw_data: '{"name": "no-id"}' }, // will be rejected (no id)
204
- { id: 'rec-4', raw_data: '' }, // will fail to parse
205
- { id: 'rec-5', raw_data: '{"id": 5, "name": " Charlie "}' },
206
- { id: 'rec-6', raw_data: '{"id": 6, "name": " Diana "}' },
207
- ];
208
-
209
- // ============================================================================
210
- // 5. Outer graph handlers
211
- // ============================================================================
212
-
213
- const outerHandlers: Record<string, () => Promise<void>> = {
214
- 'discover-bsources': async () => {
215
- console.log(` Found ${source_defs.length} data source_defs`);
216
- },
217
-
218
- 'extract-batch': async () => {
219
- console.log(` Extracting from ${source_defs.length} source_defs (concurrency: 2, mode: event-graph)`);
220
- const result = await batch(source_defs, {
221
- concurrency: 2,
222
- processor: runExtractGraph,
223
- onItemComplete: (src, res) => {
224
- console.log(` ✓ ${src.id} (${src.db}): [${res.tokens.join(', ')}]`);
225
- },
226
- });
227
- console.log(` Extract done: ${result.completed}/${result.total} in ${result.durationMs}ms`);
228
- },
229
-
230
- 'transform-batch': async () => {
231
- console.log(` Transforming ${records.length} records (concurrency: 4, mode: step-machine)`);
232
- const result = await batch(records, {
233
- concurrency: 4,
234
- processor: runTransformFlow,
235
- onItemComplete: (rec, res) => {
236
- console.log(` ✓ ${rec.id}: ${res.intent} — [${res.stepHistory.join(' → ')}]`);
237
- },
238
- onItemError: (rec, err) => {
239
- console.log(` ✗ ${rec.id}: ${err.message}`);
240
- },
241
- });
242
- console.log(` Transform done: ${result.completed} ok, ${result.failed} failed in ${result.durationMs}ms`);
243
-
244
- // Show accepted vs rejected
245
- const accepted = result.items.filter((i) => i.status === 'completed' && i.result?.intent === 'accepted');
246
- const rejected = result.items.filter((i) => i.status === 'completed' && i.result?.intent === 'rejected');
247
- console.log(` Accepted: ${accepted.length}, Rejected: ${rejected.length}`);
248
- },
249
-
250
- 'load-to-warehouse': async () => {
251
- console.log(' Loading accepted records to data warehouse');
252
- await new Promise((r) => setTimeout(r, 20));
253
- },
254
-
255
- 'validate-integrity': async () => {
256
- console.log(' Running integrity checks on loaded data');
257
- await new Promise((r) => setTimeout(r, 15));
258
- },
259
-
260
- 'finalize': async () => {
261
- console.log(' Generating ETL summary report');
262
- },
263
- };
264
-
265
- // ============================================================================
266
- // 6. Drive outer graph
267
- // ============================================================================
268
-
269
- async function main() {
270
- console.log('=== Multi-Stage ETL Pipeline (Graph-of-Graphs) ===');
271
- console.log('Outer: event-graph | Extract sub: event-graph | Transform sub: step-machine\n');
272
-
273
- let state = createInitialExecutionState(outerGraph, 'etl-run-1');
274
- const now = () => new Date().toISOString();
275
-
276
- while (true) {
277
- const { eligibleTasks, isComplete } = next(outerGraph, state);
278
- if (isComplete) break;
279
- if (eligibleTasks.length === 0) {
280
- console.log('\nPipeline stuck!');
281
- break;
282
- }
283
-
284
- // Note: load-to-warehouse and validate-integrity will run in PARALLEL
285
- // because they both only require transform-complete
286
- if (eligibleTasks.length > 1) {
287
- console.log(`\n▶ [parallel] ${eligibleTasks.join(' + ')}`);
288
- }
289
- await Promise.all(
290
- eligibleTasks.map(async (taskName) => {
291
- if (eligibleTasks.length === 1) console.log(`\n▶ ${taskName}`);
292
- state = apply(state, { type: 'task-started', taskName, timestamp: now() }, outerGraph);
293
- try {
294
- await outerHandlers[taskName]();
295
- state = apply(state, { type: 'task-completed', taskName, timestamp: now() }, outerGraph);
296
- } catch (err: any) {
297
- state = apply(state, { type: 'task-failed', taskName, error: err.message, timestamp: now() }, outerGraph);
298
- }
299
- }),
300
- );
301
- }
302
-
303
- console.log('\n=== ETL Pipeline Complete ===');
304
- console.log('Final tokens:', state.availableOutputs);
305
- }
306
-
307
- main().catch(console.error);