yaml-flow 7.1.0 → 8.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/asset-integrity.json +8 -4
- package/browser/board-livecards-client.js +1 -1
- package/browser/board-livecards-localstorage.js +4 -4
- package/browser/live-cards.js +19 -3309
- package/cli/board-live-cards-lib-tjYsPt5U.d.ts +321 -0
- package/{dist/cli → cli}/browser-api/board-live-cards-browser-adapter.d.ts +3 -5
- package/{dist/cli → cli}/browser-api/card-store-browser-api.d.ts +1 -2
- package/{dist/cli → cli}/browser-api/card-store-browser-api.js +1 -1
- package/cli/execution-interface-ftO1W7Po.d.ts +286 -0
- package/{dist/cli → cli}/node/artifacts-store-cli.js +2 -2
- package/cli/node/batch-runner-cli.js +3 -0
- package/cli/node/board-live-cards-cli.js +15 -0
- package/{dist/cli → cli}/node/card-store-cli.js +1 -1
- package/{dist/cli → cli}/node/execution-adapter.d.ts +49 -4
- package/cli/node/execution-adapter.js +3 -0
- package/{dist/cli → cli}/node/fs-board-adapter.d.ts +24 -11
- package/cli/node/fs-board-adapter.js +14 -0
- package/cli/node/step-machine-cli.d.ts +7 -0
- package/cli/node/step-machine-cli.js +5 -0
- package/{dist/board-live-cards-public-5n1-syA3.d.cts → cli/types-C2YQXFwo.d.ts} +68 -5
- package/examples/board/.demo-setup/run-1778665078572-3466-a8ay4k/board-default/gandalf-runtime/.config/card-store-ref.json +1 -0
- package/examples/board/.demo-setup/run-1778665078572-3466-a8ay4k/board-default/gandalf-runtime/.config/chat-handler.json +1 -0
- package/examples/board/.demo-setup/run-1778665078572-3466-a8ay4k/board-default/gandalf-runtime/.config/outputs-store-ref.json +1 -0
- package/examples/board/.demo-setup/run-1778665078572-3466-a8ay4k/board-default/gandalf-runtime/.config/task-executor.json +1 -0
- package/examples/board/.demo-setup/run-1778665078572-3466-a8ay4k/board-default/gandalf-runtime/.state-snapshot/board/graph.json +29 -0
- package/examples/board/.demo-setup/run-1778665078572-3466-a8ay4k/board-default/gandalf-runtime/.state-snapshot/board/lastJournalProcessedId.json +1 -0
- package/examples/board/.demo-setup/run-1778665078572-3466-a8ay4k/board-default/gandalf-runtime-out/.outputs/status.json +25 -0
- package/examples/board/.demo-setup/run-1778665078572-3466-a8ay4k/board-default/runtime-out/.outputs/cards/card-market-prices/computed_values.json +67 -0
- package/examples/board/.demo-setup/run-1778665078572-3466-a8ay4k/board-default/runtime-out/.outputs/cards/card-portfolio/computed_values.json +1 -0
- package/examples/board/.demo-setup/run-1778665078572-3466-a8ay4k/board-default/runtime-out/.outputs/cards/card-portfolio-value/computed_values.json +52 -0
- package/examples/board/.demo-setup/run-1778665078572-3466-a8ay4k/board-default/runtime-out/.outputs/data-objects/holdings.json +22 -0
- package/examples/board/.demo-setup/run-1778665078572-3466-a8ay4k/board-default/runtime-out/.outputs/data-objects/positions.json +46 -0
- package/examples/board/.demo-setup/run-1778665078572-3466-a8ay4k/board-default/runtime-out/.outputs/data-objects/quotes.json +35 -0
- package/examples/board/.demo-setup/run-1778665078572-3466-a8ay4k/board-default/runtime-out/.outputs/status.json +113 -0
- package/examples/{example-board → board}/demo-server-config.json +0 -1
- package/examples/{example-board → board}/demo-server.js +23 -48
- package/examples/{example-board → board}/demo-shell-with-server.html +3 -3
- package/examples/{example-board → board}/demo-task-executor.js +71 -24
- package/examples/board/gandalf-cards/card-source-kinds.json +36 -0
- package/examples/board/gandalf-cards/cards/_index.json +7 -0
- package/examples/board/gandalf-cards/cards/card-source-kinds.json +64 -0
- package/examples/board/source-def-flows/copilot.flow.json +33 -0
- package/examples/board/source-def-flows/mock.flow.json +35 -0
- package/examples/board/source-def-flows/url-list.flow.json +33 -0
- package/examples/board/source-def-flows/url.flow.json +33 -0
- package/examples/board/source-def-flows/workiq.flow.json +34 -0
- package/examples/board/source-def-handlers/copilot-source-handler.js +141 -0
- package/examples/board/source-def-handlers/http-source-handler.js +145 -0
- package/examples/board/source_def_flows.json +249 -0
- package/examples/board/test/demo-http-test.js +317 -0
- package/examples/{example-board → board-local}/demo-shell-localstorage.html +4 -4
- package/examples/{browser/boards/portfolio-tracker → portfolio-tracker/handlers}/portfolio-tracker-fetch-prices.js +1 -1
- package/examples/{browser/boards/portfolio-tracker/portfolio-tracker-public.js → portfolio-tracker/portfolio-tracker.js} +11 -14
- package/examples/{browser/boards/portfolio-tracker → portfolio-tracker/test}/portfolio-t4.js +32 -50
- package/lib/artifacts-store-lib-public-BABrgFkV.d.ts +119 -0
- package/lib/artifacts-store-lib-public-DGa8BpJT.d.cts +119 -0
- package/lib/artifacts-store-public.cjs +2 -0
- package/lib/artifacts-store-public.d.cts +5 -0
- package/lib/artifacts-store-public.d.ts +5 -0
- package/lib/artifacts-store-public.js +2 -0
- package/lib/board-live-cards-node.cjs +14 -0
- package/lib/board-live-cards-node.d.cts +178 -0
- package/lib/board-live-cards-node.d.ts +178 -0
- package/lib/board-live-cards-node.js +14 -0
- package/lib/board-live-cards-public-BnmRAbQV.d.cts +383 -0
- package/{dist/board-live-cards-public-CK_J8uv0.d.ts → lib/board-live-cards-public-CsmYrvpd.d.ts} +142 -76
- package/lib/board-live-cards-public.cjs +3 -0
- package/lib/board-live-cards-public.d.cts +4 -0
- package/lib/board-live-cards-public.d.ts +4 -0
- package/lib/board-live-cards-public.js +3 -0
- package/lib/board-live-cards-server-runtime.cjs +9 -0
- package/lib/board-live-cards-server-runtime.d.cts +6 -0
- package/lib/board-live-cards-server-runtime.d.ts +6 -0
- package/lib/board-live-cards-server-runtime.js +9 -0
- package/lib/board-livegraph-runtime/index.cjs +3 -0
- package/{dist → lib}/board-livegraph-runtime/index.d.cts +1 -2
- package/{dist → lib}/board-livegraph-runtime/index.d.ts +1 -2
- package/lib/board-livegraph-runtime/index.js +3 -0
- package/{dist/storage-refs.cjs → lib/board-worker-adapter.cjs} +2 -2
- package/{dist/storage-refs.d.cts → lib/board-worker-adapter.d.cts} +4 -3
- package/{dist/storage-refs.d.ts → lib/board-worker-adapter.d.ts} +4 -3
- package/{dist/storage-refs.js → lib/board-worker-adapter.js} +2 -2
- package/{dist → lib}/card-compute/index.cjs +1 -1
- package/{dist → lib}/card-compute/index.js +1 -1
- package/lib/card-store-public.cjs +2 -0
- package/lib/card-store-public.d.cts +61 -0
- package/lib/card-store-public.d.ts +61 -0
- package/lib/card-store-public.js +2 -0
- package/lib/card-validation.cjs +10 -0
- package/lib/card-validation.d.cts +35 -0
- package/lib/card-validation.d.ts +35 -0
- package/lib/card-validation.js +10 -0
- package/{dist/constants-oCEbNpul.d.ts → lib/constants-BPVLb3Es.d.ts} +1 -1
- package/{dist/constants-BzZUyYlp.d.cts → lib/constants-DXxsRN9y.d.cts} +1 -1
- package/{dist → lib}/continuous-event-graph/index.cjs +2 -2
- package/{dist → lib}/continuous-event-graph/index.d.cts +3 -5
- package/{dist → lib}/continuous-event-graph/index.d.ts +3 -5
- package/{dist → lib}/continuous-event-graph/index.js +2 -2
- package/{dist → lib}/event-graph/index.d.cts +2 -2
- package/{dist → lib}/event-graph/index.d.ts +2 -2
- package/lib/execution-refs.cjs +3 -0
- package/{dist → lib}/execution-refs.d.cts +33 -12
- package/{dist → lib}/execution-refs.d.ts +33 -12
- package/lib/execution-refs.js +3 -0
- package/lib/index.cjs +25 -0
- package/{dist → lib}/index.d.cts +7 -8
- package/{dist → lib}/index.d.ts +7 -8
- package/lib/index.js +25 -0
- package/{dist/live-cards-bridge-BXbVTsna.d.cts → lib/live-cards-bridge-DC_ZU0eS.d.ts} +134 -3
- package/{dist/live-cards-bridge-Ds28XR15.d.ts → lib/live-cards-bridge-b25aAVvE.d.cts} +134 -3
- package/lib/loader-CuuLjxVA.d.cts +42 -0
- package/lib/loader-Zborm2pq.d.ts +42 -0
- package/lib/server-runtime/index.cjs +9 -0
- package/{dist → lib}/server-runtime/index.d.cts +4 -4
- package/{dist → lib}/server-runtime/index.d.ts +4 -4
- package/lib/server-runtime/index.js +9 -0
- package/lib/step-machine/index.d.cts +64 -0
- package/lib/step-machine/index.d.ts +64 -0
- package/lib/step-machine-public/index.cjs +5 -0
- package/{dist → lib}/step-machine-public/index.d.cts +14 -1
- package/{dist → lib}/step-machine-public/index.d.ts +14 -1
- package/lib/step-machine-public/index.js +5 -0
- package/lib/storage-interface-BhAON-gW.d.cts +84 -0
- package/lib/storage-interface-BhAON-gW.d.ts +84 -0
- package/lib/stores/index.cjs +3 -0
- package/lib/stores/index.d.cts +4 -0
- package/lib/stores/index.d.ts +4 -0
- package/lib/stores/index.js +3 -0
- package/lib/stores/kv.cjs +3 -0
- package/lib/stores/kv.d.cts +32 -0
- package/lib/stores/kv.d.ts +32 -0
- package/lib/stores/kv.js +3 -0
- package/{dist → lib}/stores/memory.d.cts +1 -1
- package/{dist → lib}/stores/memory.d.ts +1 -1
- package/{dist/types-HGDTWIun.d.ts → lib/types-CBxkYuLY.d.ts} +2 -1
- package/{dist/types-ycun84cq.d.cts → lib/types-DQ1bKuB1.d.cts} +11 -0
- package/{dist/types-ycun84cq.d.ts → lib/types-DQ1bKuB1.d.ts} +11 -0
- package/{dist/types-CU3DjTKL.d.cts → lib/types-DkFvgxwq.d.cts} +2 -1
- package/package.json +79 -119
- package/board-live-cards-cli.js +0 -37
- package/browser/board-livecards-client.js.map +0 -1
- package/browser/board-livecards-localstorage.js.map +0 -1
- package/browser/board-livegraph-engine.js +0 -3
- package/browser/board-livegraph-engine.js.map +0 -1
- package/browser/card-compute.js +0 -266
- package/browser/compute-jsonata.js.map +0 -1
- package/card-store.js +0 -37
- package/dist/batch/index.cjs.map +0 -1
- package/dist/batch/index.js.map +0 -1
- package/dist/board-live-cards-lib-Bg6EvCo5.d.cts +0 -136
- package/dist/board-live-cards-lib-jM2uYG1v.d.ts +0 -136
- package/dist/board-livegraph-runtime/index.cjs +0 -3
- package/dist/board-livegraph-runtime/index.cjs.map +0 -1
- package/dist/board-livegraph-runtime/index.js +0 -3
- package/dist/board-livegraph-runtime/index.js.map +0 -1
- package/dist/card-compute/index.cjs.map +0 -1
- package/dist/card-compute/index.js.map +0 -1
- package/dist/cli/browser-api/board-live-cards-browser-adapter.cjs +0 -3
- package/dist/cli/browser-api/board-live-cards-browser-adapter.cjs.map +0 -1
- package/dist/cli/browser-api/board-live-cards-browser-adapter.d.cts +0 -37
- package/dist/cli/browser-api/board-live-cards-browser-adapter.js.map +0 -1
- package/dist/cli/browser-api/card-store-browser-api.cjs +0 -2
- package/dist/cli/browser-api/card-store-browser-api.cjs.map +0 -1
- package/dist/cli/browser-api/card-store-browser-api.d.cts +0 -26
- package/dist/cli/browser-api/card-store-browser-api.js.map +0 -1
- package/dist/cli/node/artifacts-store-cli.cjs +0 -11
- package/dist/cli/node/artifacts-store-cli.cjs.map +0 -1
- package/dist/cli/node/artifacts-store-cli.d.cts +0 -8
- package/dist/cli/node/artifacts-store-cli.js.map +0 -1
- package/dist/cli/node/board-live-cards-cli.cjs +0 -15
- package/dist/cli/node/board-live-cards-cli.cjs.map +0 -1
- package/dist/cli/node/board-live-cards-cli.d.cts +0 -20
- package/dist/cli/node/board-live-cards-cli.js +0 -15
- package/dist/cli/node/board-live-cards-cli.js.map +0 -1
- package/dist/cli/node/card-store-cli.cjs +0 -8
- package/dist/cli/node/card-store-cli.cjs.map +0 -1
- package/dist/cli/node/card-store-cli.d.cts +0 -15
- package/dist/cli/node/card-store-cli.js.map +0 -1
- package/dist/cli/node/execution-adapter.cjs +0 -3
- package/dist/cli/node/execution-adapter.cjs.map +0 -1
- package/dist/cli/node/execution-adapter.d.cts +0 -174
- package/dist/cli/node/execution-adapter.js +0 -3
- package/dist/cli/node/execution-adapter.js.map +0 -1
- package/dist/cli/node/fs-board-adapter.cjs +0 -14
- package/dist/cli/node/fs-board-adapter.cjs.map +0 -1
- package/dist/cli/node/fs-board-adapter.d.cts +0 -204
- package/dist/cli/node/fs-board-adapter.js +0 -14
- package/dist/cli/node/fs-board-adapter.js.map +0 -1
- package/dist/cli/node/source-cli-task-executor.cjs +0 -11
- package/dist/cli/node/source-cli-task-executor.cjs.map +0 -1
- package/dist/cli/node/source-cli-task-executor.js.map +0 -1
- package/dist/config/index.cjs.map +0 -1
- package/dist/config/index.js.map +0 -1
- package/dist/continuous-event-graph/index.cjs.map +0 -1
- package/dist/continuous-event-graph/index.js.map +0 -1
- package/dist/event-graph/index.cjs.map +0 -1
- package/dist/event-graph/index.js.map +0 -1
- package/dist/execution-refs.cjs +0 -3
- package/dist/execution-refs.cjs.map +0 -1
- package/dist/execution-refs.js +0 -3
- package/dist/execution-refs.js.map +0 -1
- package/dist/index.cjs +0 -30
- package/dist/index.cjs.map +0 -1
- package/dist/index.js +0 -30
- package/dist/index.js.map +0 -1
- package/dist/inference/index.cjs +0 -7
- package/dist/inference/index.cjs.map +0 -1
- package/dist/inference/index.d.cts +0 -229
- package/dist/inference/index.d.ts +0 -229
- package/dist/inference/index.js +0 -7
- package/dist/inference/index.js.map +0 -1
- package/dist/server-runtime/index.cjs +0 -9
- package/dist/server-runtime/index.cjs.map +0 -1
- package/dist/server-runtime/index.js +0 -9
- package/dist/server-runtime/index.js.map +0 -1
- package/dist/step-machine/index.cjs.map +0 -1
- package/dist/step-machine/index.d.cts +0 -102
- package/dist/step-machine/index.d.ts +0 -102
- package/dist/step-machine/index.js.map +0 -1
- package/dist/step-machine-public/index.cjs +0 -3
- package/dist/step-machine-public/index.cjs.map +0 -1
- package/dist/step-machine-public/index.js +0 -3
- package/dist/step-machine-public/index.js.map +0 -1
- package/dist/storage-refs.cjs.map +0 -1
- package/dist/storage-refs.js.map +0 -1
- package/dist/stores/file.cjs +0 -2
- package/dist/stores/file.cjs.map +0 -1
- package/dist/stores/file.d.cts +0 -36
- package/dist/stores/file.d.ts +0 -36
- package/dist/stores/file.js +0 -2
- package/dist/stores/file.js.map +0 -1
- package/dist/stores/index.cjs +0 -2
- package/dist/stores/index.cjs.map +0 -1
- package/dist/stores/index.d.cts +0 -4
- package/dist/stores/index.d.ts +0 -4
- package/dist/stores/index.js +0 -2
- package/dist/stores/index.js.map +0 -1
- package/dist/stores/localStorage.cjs +0 -2
- package/dist/stores/localStorage.cjs.map +0 -1
- package/dist/stores/localStorage.d.cts +0 -34
- package/dist/stores/localStorage.d.ts +0 -34
- package/dist/stores/localStorage.js +0 -2
- package/dist/stores/localStorage.js.map +0 -1
- package/dist/stores/memory.cjs.map +0 -1
- package/dist/stores/memory.js.map +0 -1
- package/dist/types-CHSdoAAA.d.cts +0 -135
- package/dist/types-CoW0gQl3.d.ts +0 -135
- package/examples/browser/boards/portfolio-tracker/portfolio-tracker-fetch-prices.py +0 -201
- package/examples/browser/boards/portfolio-tracker/portfolio-tracker-http-test.js +0 -370
- package/examples/browser/boards/portfolio-tracker/portfolio-tracker-http-test.py +0 -398
- package/examples/browser/boards/portfolio-tracker/portfolio-tracker-inference-adapter.js +0 -196
- package/examples/browser/boards/portfolio-tracker/portfolio-tracker-server.js +0 -300
- package/examples/browser/boards/portfolio-tracker/portfolio-tracker-server.py +0 -617
- package/examples/browser/boards/portfolio-tracker/portfolio-tracker.py +0 -366
- package/examples/browser/livecards-browser/index.html +0 -41
- package/examples/browser/step-machine-browser/index.html +0 -367
- package/examples/cli/step-machine-cli/portfolio-tracker/--base-ref/.runtime-out +0 -1
- package/examples/cli/step-machine-cli/portfolio-tracker/--base-ref/board-graph.json +0 -32
- package/examples/cli/step-machine-cli/portfolio-tracker/cards/holdings-table.json +0 -22
- package/examples/cli/step-machine-cli/portfolio-tracker/cards/portfolio-form.json +0 -43
- package/examples/cli/step-machine-cli/portfolio-tracker/cards/portfolio-value.json +0 -15
- package/examples/cli/step-machine-cli/portfolio-tracker/cards/price-fetch.json +0 -15
- package/examples/cli/step-machine-cli/portfolio-tracker/fetch-prices.js +0 -48
- package/examples/cli/step-machine-cli/portfolio-tracker/handlers/_board-cli.js +0 -125
- package/examples/cli/step-machine-cli/portfolio-tracker/handlers/add-cards-cli.js +0 -32
- package/examples/cli/step-machine-cli/portfolio-tracker/handlers/init-board-cli.js +0 -26
- package/examples/cli/step-machine-cli/portfolio-tracker/handlers/poll-status-cli.js +0 -49
- package/examples/cli/step-machine-cli/portfolio-tracker/handlers/reset-board-dir-cli.js +0 -25
- package/examples/cli/step-machine-cli/portfolio-tracker/handlers/retrigger-cli.js +0 -23
- package/examples/cli/step-machine-cli/portfolio-tracker/handlers/status-cli.js +0 -21
- package/examples/cli/step-machine-cli/portfolio-tracker/handlers/update-holdings-cli.js +0 -38
- package/examples/cli/step-machine-cli/portfolio-tracker/handlers/wait-completed-cli.js +0 -48
- package/examples/cli/step-machine-cli/portfolio-tracker/handlers/write-prices-cli.js +0 -31
- package/examples/cli/step-machine-cli/portfolio-tracker/handlers-py/_board_pycli.py +0 -107
- package/examples/cli/step-machine-cli/portfolio-tracker/handlers-py/add-cards.py +0 -51
- package/examples/cli/step-machine-cli/portfolio-tracker/handlers-py/init-board.py +0 -45
- package/examples/cli/step-machine-cli/portfolio-tracker/handlers-py/poll-status.py +0 -71
- package/examples/cli/step-machine-cli/portfolio-tracker/handlers-py/reset-board-dir.py +0 -36
- package/examples/cli/step-machine-cli/portfolio-tracker/inline-python-demo.flow.yaml +0 -26
- package/examples/cli/step-machine-cli/portfolio-tracker/inline-python-handlers.py +0 -39
- package/examples/cli/step-machine-cli/portfolio-tracker/portfolio-tracker-pycli.flow.yaml +0 -80
- package/examples/cli/step-machine-cli/portfolio-tracker/portfolio-tracker.flow.yaml +0 -76
- package/examples/cli/step-machine-cli/portfolio-tracker/portfolio-tracker.input.json +0 -44
- package/examples/cli/step-machine-cli/portfolio-tracker/run-inline-python-demo-pycli.py +0 -43
- package/examples/cli/step-machine-cli/portfolio-tracker/run-portfolio-tracker-pycli.py +0 -77
- package/examples/cli/step-machine-cli/portfolio-tracker/run-portfolio-tracker.bat +0 -28
- package/examples/cli/step-machine-demo/jsonata-init-board-cli.js +0 -31
- package/examples/cli/step-machine-demo/jsonata-init-board.flow.yaml +0 -54
- package/examples/cli/step-machine-demo/one-step-cli-only.flow.yaml +0 -21
- package/examples/cli/step-machine-demo/step-cli-echo-y.js +0 -15
- package/examples/cli/step-machine-demo/step2-double-cli.js +0 -33
- package/examples/cli/step-machine-demo/two-step-math.flow.yaml +0 -93
- package/examples/cli/step-machine-demo/two-step-mixed.flow.yaml +0 -43
- package/examples/example-board/agent-instructions-cardlayout.md +0 -56
- package/examples/example-board/agent-instructions.md +0 -834
- package/examples/example-board/demo-shell.html +0 -63
- package/examples/index.html +0 -785
- package/examples/npm-libs/batch/batch-step-machine.ts +0 -121
- package/examples/npm-libs/continuous-event-graph/live-cards-board.ts +0 -215
- package/examples/npm-libs/continuous-event-graph/live-portfolio-dashboard.ts +0 -555
- package/examples/npm-libs/continuous-event-graph/portfolio-tracker.ts +0 -287
- package/examples/npm-libs/continuous-event-graph/reactive-monitoring.ts +0 -265
- package/examples/npm-libs/continuous-event-graph/reactive-pipeline.ts +0 -168
- package/examples/npm-libs/continuous-event-graph/soc-incident-board.ts +0 -287
- package/examples/npm-libs/continuous-event-graph/stock-dashboard.ts +0 -229
- package/examples/npm-libs/event-graph/ci-cd-pipeline.ts +0 -243
- package/examples/npm-libs/event-graph/executor-diamond.ts +0 -165
- package/examples/npm-libs/event-graph/executor-pipeline.ts +0 -161
- package/examples/npm-libs/event-graph/research-pipeline.ts +0 -137
- package/examples/npm-libs/flows/ai-conversation.yaml +0 -116
- package/examples/npm-libs/flows/order-processing.yaml +0 -143
- package/examples/npm-libs/flows/simple-greeting.yaml +0 -54
- package/examples/npm-libs/graph-of-graphs/multi-stage-etl.ts +0 -307
- package/examples/npm-libs/graph-of-graphs/url-processing-pipeline.ts +0 -254
- package/examples/npm-libs/inference/azure-deployment.ts +0 -149
- package/examples/npm-libs/inference/copilot-cli.ts +0 -138
- package/examples/npm-libs/inference/data-pipeline.ts +0 -145
- package/examples/npm-libs/inference/pluggable-adapters.ts +0 -254
- package/examples/npm-libs/node/ai-conversation.ts +0 -195
- package/examples/npm-libs/node/simple-greeting.ts +0 -101
- package/examples/step-machine-cli/portfolio-tracker/cards/holdings-table.json +0 -22
- package/examples/step-machine-cli/portfolio-tracker/cards/portfolio-form.json +0 -43
- package/examples/step-machine-cli/portfolio-tracker/cards/portfolio-value.json +0 -15
- package/examples/step-machine-cli/portfolio-tracker/cards/price-fetch.json +0 -15
- package/examples/step-machine-cli/portfolio-tracker/fetch-prices.js +0 -48
- package/examples/step-machine-cli/portfolio-tracker/handlers/_board-cli.js +0 -57
- package/examples/step-machine-cli/portfolio-tracker/handlers/add-cards-cli.js +0 -27
- package/examples/step-machine-cli/portfolio-tracker/handlers/init-board-cli.js +0 -25
- package/examples/step-machine-cli/portfolio-tracker/handlers/reset-board-dir-cli.js +0 -29
- package/examples/step-machine-cli/portfolio-tracker/handlers/retrigger-cli.js +0 -27
- package/examples/step-machine-cli/portfolio-tracker/handlers/status-cli.js +0 -25
- package/examples/step-machine-cli/portfolio-tracker/handlers/update-holdings-cli.js +0 -37
- package/examples/step-machine-cli/portfolio-tracker/handlers/wait-completed-cli.js +0 -53
- package/examples/step-machine-cli/portfolio-tracker/handlers/write-prices-cli.js +0 -35
- package/examples/step-machine-cli/portfolio-tracker/portfolio-tracker-task-executor.cjs +0 -96
- package/examples/step-machine-cli/portfolio-tracker/portfolio-tracker.flow.yaml +0 -227
- package/examples/step-machine-cli/portfolio-tracker/portfolio-tracker.input.json +0 -38
- package/examples/step-machine-cli/portfolio-tracker/run-portfolio-tracker.bat +0 -28
- package/step-machine-cli.js +0 -407
- /package/{dist/cli → cli}/browser-api/board-live-cards-browser-adapter.js +0 -0
- /package/{dist/board-livegraph-runtime → cli/browser-api}/jsonata-sync.cjs +0 -0
- /package/{dist/cli → cli}/node/artifacts-store-cli.d.ts +0 -0
- /package/{dist/cli/node/source-cli-task-executor.d.cts → cli/node/batch-runner-cli.d.ts} +0 -0
- /package/{dist/cli → cli}/node/board-live-cards-cli.d.ts +0 -0
- /package/{dist/cli → cli}/node/card-store-cli.d.ts +0 -0
- /package/{dist/card-compute → cli/node}/jsonata-sync.cjs +0 -0
- /package/{dist/cli → cli}/node/source-cli-task-executor.d.ts +0 -0
- /package/{dist/cli → cli}/node/source-cli-task-executor.js +0 -0
- /package/examples/{example-board → board}/cards/card-concentration.json +0 -0
- /package/examples/{example-board → board}/cards/card-my-identity.json +0 -0
- /package/examples/{example-board → board}/cards/card-portfolio-action.json +0 -0
- /package/examples/{example-board → board}/cards/card-portfolio-intelligence.json +0 -0
- /package/examples/{example-board → board}/cards/card-portfolio-risks.json +0 -0
- /package/examples/{example-board → board}/cards/card-rebalance-impact.json +0 -0
- /package/examples/{example-board → board}/cards/card-rebalance-sim.json +0 -0
- /package/examples/{example-board → board}/cards/cardT-market-prices.json +0 -0
- /package/examples/{example-board → board}/cards/cardT-portfolio-value.json +0 -0
- /package/examples/{example-board → board}/cards/cardT-portfolio.json +0 -0
- /package/examples/{example-board → board}/demo-chat-handler.js +0 -0
- /package/examples/{example-board → board}/scripts/copilot_wrapper.bat +0 -0
- /package/examples/{example-board → board}/scripts/copilot_wrapper_helper.ps1 +0 -0
- /package/examples/{example-board → board}/scripts/workiq_wrapper.mjs +0 -0
- /package/examples/{browser/boards/portfolio-tracker → board/test}/portfolio-tracker-sse-worker.js +0 -0
- /package/{dist → lib}/batch/index.cjs +0 -0
- /package/{dist → lib}/batch/index.d.cts +0 -0
- /package/{dist → lib}/batch/index.d.ts +0 -0
- /package/{dist → lib}/batch/index.js +0 -0
- /package/{dist/cli/browser-api → lib/board-livegraph-runtime}/jsonata-sync.cjs +0 -0
- /package/{dist → lib}/card-compute/index.d.cts +0 -0
- /package/{dist → lib}/card-compute/index.d.ts +0 -0
- /package/{dist/cli/node → lib/card-compute}/jsonata-sync.cjs +0 -0
- /package/{dist → lib}/config/index.cjs +0 -0
- /package/{dist → lib}/config/index.d.cts +0 -0
- /package/{dist → lib}/config/index.d.ts +0 -0
- /package/{dist → lib}/config/index.js +0 -0
- /package/{dist → lib}/continuous-event-graph/jsonata-sync.cjs +0 -0
- /package/{dist → lib}/event-graph/index.cjs +0 -0
- /package/{dist → lib}/event-graph/index.js +0 -0
- /package/{dist → lib}/jsonata-sync.cjs +0 -0
- /package/{dist → lib}/server-runtime/jsonata-sync.cjs +0 -0
- /package/{dist → lib}/step-machine/index.cjs +0 -0
- /package/{dist → lib}/step-machine/index.js +0 -0
- /package/{dist → lib}/step-machine-public/jsonata-sync.cjs +0 -0
- /package/{dist → lib}/stores/memory.cjs +0 -0
- /package/{dist → lib}/stores/memory.js +0 -0
- /package/{dist → lib}/types-BBhqYGhE.d.cts +0 -0
- /package/{dist → lib}/types-BBhqYGhE.d.ts +0 -0
- /package/{dist → lib}/validate-BAVzUJWa.d.ts +0 -0
- /package/{dist → lib}/validate-Dbu7ygys.d.cts +0 -0
package/card-store.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import * as fs from 'node:fs';
|
|
4
|
-
import * as path from 'node:path';
|
|
5
|
-
import { fileURLToPath } from 'node:url';
|
|
6
|
-
import { spawnSync } from 'node:child_process';
|
|
7
|
-
|
|
8
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
9
|
-
const distCli = path.join(__dirname, 'dist', 'cli', 'node', 'card-store-cli.js');
|
|
10
|
-
const srcCli = path.join(__dirname, 'src', 'cli', 'node', 'card-store-cli.ts');
|
|
11
|
-
const tsxCli = path.join(__dirname, 'node_modules', 'tsx', 'dist', 'cli.mjs');
|
|
12
|
-
|
|
13
|
-
if (fs.existsSync(srcCli)) {
|
|
14
|
-
const result = spawnSync(process.execPath, [tsxCli, srcCli, ...process.argv.slice(2)], {
|
|
15
|
-
stdio: 'inherit',
|
|
16
|
-
shell: false,
|
|
17
|
-
windowsHide: true,
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
if (result.error) {
|
|
21
|
-
console.error(`[card-store] Failed to launch dev fallback: ${result.error.message}`);
|
|
22
|
-
process.exit(1);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
process.exit(result.status ?? 0);
|
|
26
|
-
} else if (fs.existsSync(distCli)) {
|
|
27
|
-
const { cli } = await import(pathToFileUrl(distCli).href);
|
|
28
|
-
await cli(process.argv.slice(2));
|
|
29
|
-
} else {
|
|
30
|
-
console.error('[card-store] Could not find dist or src CLI entrypoint.');
|
|
31
|
-
process.exit(1);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function pathToFileUrl(filePath) {
|
|
35
|
-
const resolved = path.resolve(filePath).replace(/\\/g, '/');
|
|
36
|
-
return new URL(`file:///${resolved.startsWith('/') ? resolved.slice(1) : resolved}`);
|
|
37
|
-
}
|
package/dist/batch/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/batch/runner.ts"],"names":["batch","items","options","concurrency","processor","onItemComplete","onItemError","onProgress","signal","total","results","batchStart","completed","failed","nextIndex","makeProgress","active","done","resolve","tryStartNext","idx","item","itemStart","result","err","error"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Batch Runner — Core\n *\n * Slot-based concurrent processor. Pure control flow — no I/O opinions.\n *\n * @example Step Machine batch\n * ```ts\n * import { batch } from 'yaml-flow/batch';\n * import { createStepMachine, loadStepFlow } from 'yaml-flow/step-machine';\n *\n * const flow = await loadStepFlow('./support-ticket.yaml');\n * const results = await batch(tickets, {\n * concurrency: 5,\n * processor: async (ticket) => {\n * const machine = createStepMachine(flow, handlers);\n * return machine.run(ticket);\n * },\n * });\n * ```\n *\n * @example Event Graph batch\n * ```ts\n * import { batch } from 'yaml-flow/batch';\n * import { next, apply, createInitialExecutionState } from 'yaml-flow/event-graph';\n *\n * const results = await batch(items, {\n * concurrency: 3,\n * processor: async (item, index) => {\n * let state = createInitialExecutionState(graph, `exec-${index}`);\n * state = apply(state, { type: 'inject-tokens', tokens: [item.token], timestamp: new Date().toISOString() }, graph);\n * // ... drive the graph loop\n * return state;\n * },\n * });\n * ```\n */\n\nimport type {\n BatchOptions,\n BatchResult,\n BatchItemResult,\n BatchProgress,\n} from './types.js';\n\n/**\n * Run an array of items through an async processor with concurrency control.\n *\n * - Items are started in order, up to `concurrency` at a time.\n * - Results are returned in the original item order.\n * - If a processor throws, the item is marked as failed; other items continue.\n * - An AbortSignal prevents new items from starting (in-flight items are not cancelled).\n */\nexport async function batch<TItem, TResult>(\n items: TItem[],\n options: BatchOptions<TItem, TResult>\n): Promise<BatchResult<TItem, TResult>> {\n const {\n concurrency = 5,\n processor,\n onItemComplete,\n onItemError,\n onProgress,\n signal,\n } = options;\n\n const total = items.length;\n const results: BatchItemResult<TItem, TResult>[] = new Array(total);\n const batchStart = Date.now();\n\n let completed = 0;\n let failed = 0;\n let nextIndex = 0;\n\n function makeProgress(active: number): BatchProgress {\n const done = completed + failed;\n return {\n completed,\n failed,\n active,\n pending: total - done - active,\n total,\n percent: total === 0 ? 100 : Math.round((done / total) * 100),\n elapsedMs: Date.now() - batchStart,\n };\n }\n\n // Empty input — short-circuit\n if (total === 0) {\n return { items: [], completed: 0, failed: 0, total: 0, durationMs: 0 };\n }\n\n return new Promise<BatchResult<TItem, TResult>>((resolve) => {\n let active = 0;\n\n function tryStartNext() {\n while (active < concurrency && nextIndex < total) {\n // Respect abort signal — don't start new items\n if (signal?.aborted) {\n // Mark remaining as failed with abort error\n while (nextIndex < total) {\n const idx = nextIndex++;\n results[idx] = {\n item: items[idx],\n index: idx,\n status: 'failed',\n error: new Error('Batch aborted'),\n durationMs: 0,\n };\n failed++;\n }\n // If nothing is in-flight, resolve immediately\n if (active === 0 && completed + failed === total) {\n resolve({\n items: results,\n completed,\n failed,\n total,\n durationMs: Date.now() - batchStart,\n });\n }\n break;\n }\n\n const idx = nextIndex++;\n const item = items[idx];\n active++;\n const itemStart = Date.now();\n\n processor(item, idx)\n .then((result) => {\n results[idx] = {\n item,\n index: idx,\n status: 'completed',\n result,\n durationMs: Date.now() - itemStart,\n };\n completed++;\n onItemComplete?.(item, result, idx);\n })\n .catch((err) => {\n const error = err instanceof Error ? err : new Error(String(err));\n results[idx] = {\n item,\n index: idx,\n status: 'failed',\n error,\n durationMs: Date.now() - itemStart,\n };\n failed++;\n onItemError?.(item, error, idx);\n })\n .finally(() => {\n active--;\n onProgress?.(makeProgress(active));\n\n if (completed + failed === total) {\n resolve({\n items: results,\n completed,\n failed,\n total,\n durationMs: Date.now() - batchStart,\n });\n } else {\n tryStartNext();\n }\n });\n }\n }\n\n tryStartNext();\n });\n}\n"]}
|
package/dist/batch/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/batch/runner.ts"],"names":["batch","items","options","concurrency","processor","onItemComplete","onItemError","onProgress","signal","total","results","batchStart","completed","failed","nextIndex","makeProgress","active","done","resolve","tryStartNext","idx","item","itemStart","result","err","error"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Batch Runner — Core\n *\n * Slot-based concurrent processor. Pure control flow — no I/O opinions.\n *\n * @example Step Machine batch\n * ```ts\n * import { batch } from 'yaml-flow/batch';\n * import { createStepMachine, loadStepFlow } from 'yaml-flow/step-machine';\n *\n * const flow = await loadStepFlow('./support-ticket.yaml');\n * const results = await batch(tickets, {\n * concurrency: 5,\n * processor: async (ticket) => {\n * const machine = createStepMachine(flow, handlers);\n * return machine.run(ticket);\n * },\n * });\n * ```\n *\n * @example Event Graph batch\n * ```ts\n * import { batch } from 'yaml-flow/batch';\n * import { next, apply, createInitialExecutionState } from 'yaml-flow/event-graph';\n *\n * const results = await batch(items, {\n * concurrency: 3,\n * processor: async (item, index) => {\n * let state = createInitialExecutionState(graph, `exec-${index}`);\n * state = apply(state, { type: 'inject-tokens', tokens: [item.token], timestamp: new Date().toISOString() }, graph);\n * // ... drive the graph loop\n * return state;\n * },\n * });\n * ```\n */\n\nimport type {\n BatchOptions,\n BatchResult,\n BatchItemResult,\n BatchProgress,\n} from './types.js';\n\n/**\n * Run an array of items through an async processor with concurrency control.\n *\n * - Items are started in order, up to `concurrency` at a time.\n * - Results are returned in the original item order.\n * - If a processor throws, the item is marked as failed; other items continue.\n * - An AbortSignal prevents new items from starting (in-flight items are not cancelled).\n */\nexport async function batch<TItem, TResult>(\n items: TItem[],\n options: BatchOptions<TItem, TResult>\n): Promise<BatchResult<TItem, TResult>> {\n const {\n concurrency = 5,\n processor,\n onItemComplete,\n onItemError,\n onProgress,\n signal,\n } = options;\n\n const total = items.length;\n const results: BatchItemResult<TItem, TResult>[] = new Array(total);\n const batchStart = Date.now();\n\n let completed = 0;\n let failed = 0;\n let nextIndex = 0;\n\n function makeProgress(active: number): BatchProgress {\n const done = completed + failed;\n return {\n completed,\n failed,\n active,\n pending: total - done - active,\n total,\n percent: total === 0 ? 100 : Math.round((done / total) * 100),\n elapsedMs: Date.now() - batchStart,\n };\n }\n\n // Empty input — short-circuit\n if (total === 0) {\n return { items: [], completed: 0, failed: 0, total: 0, durationMs: 0 };\n }\n\n return new Promise<BatchResult<TItem, TResult>>((resolve) => {\n let active = 0;\n\n function tryStartNext() {\n while (active < concurrency && nextIndex < total) {\n // Respect abort signal — don't start new items\n if (signal?.aborted) {\n // Mark remaining as failed with abort error\n while (nextIndex < total) {\n const idx = nextIndex++;\n results[idx] = {\n item: items[idx],\n index: idx,\n status: 'failed',\n error: new Error('Batch aborted'),\n durationMs: 0,\n };\n failed++;\n }\n // If nothing is in-flight, resolve immediately\n if (active === 0 && completed + failed === total) {\n resolve({\n items: results,\n completed,\n failed,\n total,\n durationMs: Date.now() - batchStart,\n });\n }\n break;\n }\n\n const idx = nextIndex++;\n const item = items[idx];\n active++;\n const itemStart = Date.now();\n\n processor(item, idx)\n .then((result) => {\n results[idx] = {\n item,\n index: idx,\n status: 'completed',\n result,\n durationMs: Date.now() - itemStart,\n };\n completed++;\n onItemComplete?.(item, result, idx);\n })\n .catch((err) => {\n const error = err instanceof Error ? err : new Error(String(err));\n results[idx] = {\n item,\n index: idx,\n status: 'failed',\n error,\n durationMs: Date.now() - itemStart,\n };\n failed++;\n onItemError?.(item, error, idx);\n })\n .finally(() => {\n active--;\n onProgress?.(makeProgress(active));\n\n if (completed + failed === total) {\n resolve({\n items: results,\n completed,\n failed,\n total,\n durationMs: Date.now() - batchStart,\n });\n } else {\n tryStartNext();\n }\n });\n }\n }\n\n tryStartNext();\n });\n}\n"]}
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { f as GraphEvent, G as GraphConfig } from './types-BBhqYGhE.cjs';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* board-live-cards-lib — Pure logic library for the board-live-cards CLI.
|
|
5
|
-
*
|
|
6
|
-
* Merged from:
|
|
7
|
-
* board-live-cards-all-stores.ts
|
|
8
|
-
* board-live-cards-lib-types.ts
|
|
9
|
-
* board-live-cards-lib-board-status.ts
|
|
10
|
-
* board-live-cards-lib-card-handler.ts
|
|
11
|
-
* board-live-cards-cli-board-commands.ts
|
|
12
|
-
* board-live-cards-cli-card-commands.ts
|
|
13
|
-
* board-live-cards-cli-callbacks.ts
|
|
14
|
-
*
|
|
15
|
-
* Zero platform imports. All storage is injected via adapter interfaces.
|
|
16
|
-
* Safe for Node, browser, and neutral (V8/PyMiniRacer) bundles.
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
interface LiveCard {
|
|
20
|
-
id: string;
|
|
21
|
-
[key: string]: unknown;
|
|
22
|
-
}
|
|
23
|
-
interface CardIndexEntry {
|
|
24
|
-
/** Storage-specific address (file path, Cosmos doc id, localStorage key). */
|
|
25
|
-
key: string;
|
|
26
|
-
/** Checksum of card content — computed by the adapter at write time. */
|
|
27
|
-
checksum: string;
|
|
28
|
-
updatedAt: string;
|
|
29
|
-
}
|
|
30
|
-
type CardIndex = Record<string, CardIndexEntry>;
|
|
31
|
-
type CardChecksumIndex = Record<string, string>;
|
|
32
|
-
interface CardStorageAdapter {
|
|
33
|
-
readIndex(): CardIndex | null;
|
|
34
|
-
writeIndex(index: CardIndex): void;
|
|
35
|
-
readCard(key: string): LiveCard | null;
|
|
36
|
-
/** Write card content; returns checksum of what was written. */
|
|
37
|
-
writeCard(key: string, card: LiveCard): string;
|
|
38
|
-
cardExists(key: string): boolean;
|
|
39
|
-
defaultCardKey(cardId: string): string;
|
|
40
|
-
}
|
|
41
|
-
interface CardStore {
|
|
42
|
-
readCard(id: string): LiveCard | null;
|
|
43
|
-
readCardKey(id: string): string | null;
|
|
44
|
-
readAllCards(): LiveCard[];
|
|
45
|
-
readChecksumIndex(): CardChecksumIndex;
|
|
46
|
-
changedSince(snapshotChecksumIndex: CardChecksumIndex): string[];
|
|
47
|
-
}
|
|
48
|
-
interface CardUpsertValidation {
|
|
49
|
-
ok: boolean;
|
|
50
|
-
error?: string;
|
|
51
|
-
}
|
|
52
|
-
interface CardAdminStore extends CardStore {
|
|
53
|
-
validateUpsert(id: string, cardKey: string): CardUpsertValidation;
|
|
54
|
-
writeCard(id: string, card: LiveCard, cardKey?: string): void;
|
|
55
|
-
patchCard(id: string, jsonPath: string, value: unknown): void;
|
|
56
|
-
removeCard(id: string): void;
|
|
57
|
-
readIndex(): CardIndex;
|
|
58
|
-
}
|
|
59
|
-
declare function createCardStore(adapter: CardStorageAdapter, onWarn?: (msg: string) => void): CardAdminStore;
|
|
60
|
-
interface JournalEntry {
|
|
61
|
-
id: string;
|
|
62
|
-
event: GraphEvent;
|
|
63
|
-
}
|
|
64
|
-
interface JournalStorageAdapter {
|
|
65
|
-
readAllEntries(): JournalEntry[];
|
|
66
|
-
appendEntry(entry: JournalEntry): void;
|
|
67
|
-
generateId(): string;
|
|
68
|
-
}
|
|
69
|
-
declare const SNAPSHOT_SCHEMA_VERSION_V1 = "v1";
|
|
70
|
-
declare const BOARD_GRAPH_KEY = "board/graph";
|
|
71
|
-
type OutputStoreEvent = {
|
|
72
|
-
kind: 'computed_values';
|
|
73
|
-
cardId: string;
|
|
74
|
-
values: Record<string, unknown>;
|
|
75
|
-
} | {
|
|
76
|
-
kind: 'data_object';
|
|
77
|
-
key: string;
|
|
78
|
-
payload: unknown;
|
|
79
|
-
} | {
|
|
80
|
-
kind: 'status';
|
|
81
|
-
status: unknown;
|
|
82
|
-
};
|
|
83
|
-
interface BoardStatusCard {
|
|
84
|
-
name: string;
|
|
85
|
-
status: string;
|
|
86
|
-
error?: {
|
|
87
|
-
message: string;
|
|
88
|
-
code?: string;
|
|
89
|
-
at?: string;
|
|
90
|
-
source?: 'task-runtime' | 'source-fetch' | 'timeout' | 'unknown';
|
|
91
|
-
};
|
|
92
|
-
requires: string[];
|
|
93
|
-
requires_satisfied: string[];
|
|
94
|
-
requires_missing: string[];
|
|
95
|
-
provides_declared: string[];
|
|
96
|
-
provides_runtime: string[];
|
|
97
|
-
blocked_by: string[];
|
|
98
|
-
unblocks: string[];
|
|
99
|
-
runtime: {
|
|
100
|
-
attempt_count: number;
|
|
101
|
-
restart_count: number;
|
|
102
|
-
in_progress_since: string | null;
|
|
103
|
-
last_transition_at: string | null;
|
|
104
|
-
last_completed_at: string | null;
|
|
105
|
-
last_restarted_at: string | null;
|
|
106
|
-
status_age_ms: number | null;
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
interface BoardStatusObject {
|
|
110
|
-
schema_version: 'v1';
|
|
111
|
-
meta: {
|
|
112
|
-
board: {
|
|
113
|
-
path: string;
|
|
114
|
-
};
|
|
115
|
-
};
|
|
116
|
-
summary: {
|
|
117
|
-
card_count: number;
|
|
118
|
-
completed: number;
|
|
119
|
-
eligible: number;
|
|
120
|
-
pending: number;
|
|
121
|
-
blocked: number;
|
|
122
|
-
unresolved: number;
|
|
123
|
-
failed?: number;
|
|
124
|
-
in_progress?: number;
|
|
125
|
-
orphan_cards?: number;
|
|
126
|
-
topology?: {
|
|
127
|
-
edge_count: number;
|
|
128
|
-
max_fan_out_card: string | null;
|
|
129
|
-
max_fan_out: number;
|
|
130
|
-
};
|
|
131
|
-
};
|
|
132
|
-
cards: BoardStatusCard[];
|
|
133
|
-
}
|
|
134
|
-
declare const EMPTY_CONFIG: GraphConfig;
|
|
135
|
-
|
|
136
|
-
export { type BoardStatusObject as B, type CardAdminStore as C, EMPTY_CONFIG as E, type JournalStorageAdapter as J, type LiveCard as L, type OutputStoreEvent as O, SNAPSHOT_SCHEMA_VERSION_V1 as S, BOARD_GRAPH_KEY as a, createCardStore as c };
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { f as GraphEvent, G as GraphConfig } from './types-BBhqYGhE.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* board-live-cards-lib — Pure logic library for the board-live-cards CLI.
|
|
5
|
-
*
|
|
6
|
-
* Merged from:
|
|
7
|
-
* board-live-cards-all-stores.ts
|
|
8
|
-
* board-live-cards-lib-types.ts
|
|
9
|
-
* board-live-cards-lib-board-status.ts
|
|
10
|
-
* board-live-cards-lib-card-handler.ts
|
|
11
|
-
* board-live-cards-cli-board-commands.ts
|
|
12
|
-
* board-live-cards-cli-card-commands.ts
|
|
13
|
-
* board-live-cards-cli-callbacks.ts
|
|
14
|
-
*
|
|
15
|
-
* Zero platform imports. All storage is injected via adapter interfaces.
|
|
16
|
-
* Safe for Node, browser, and neutral (V8/PyMiniRacer) bundles.
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
interface LiveCard {
|
|
20
|
-
id: string;
|
|
21
|
-
[key: string]: unknown;
|
|
22
|
-
}
|
|
23
|
-
interface CardIndexEntry {
|
|
24
|
-
/** Storage-specific address (file path, Cosmos doc id, localStorage key). */
|
|
25
|
-
key: string;
|
|
26
|
-
/** Checksum of card content — computed by the adapter at write time. */
|
|
27
|
-
checksum: string;
|
|
28
|
-
updatedAt: string;
|
|
29
|
-
}
|
|
30
|
-
type CardIndex = Record<string, CardIndexEntry>;
|
|
31
|
-
type CardChecksumIndex = Record<string, string>;
|
|
32
|
-
interface CardStorageAdapter {
|
|
33
|
-
readIndex(): CardIndex | null;
|
|
34
|
-
writeIndex(index: CardIndex): void;
|
|
35
|
-
readCard(key: string): LiveCard | null;
|
|
36
|
-
/** Write card content; returns checksum of what was written. */
|
|
37
|
-
writeCard(key: string, card: LiveCard): string;
|
|
38
|
-
cardExists(key: string): boolean;
|
|
39
|
-
defaultCardKey(cardId: string): string;
|
|
40
|
-
}
|
|
41
|
-
interface CardStore {
|
|
42
|
-
readCard(id: string): LiveCard | null;
|
|
43
|
-
readCardKey(id: string): string | null;
|
|
44
|
-
readAllCards(): LiveCard[];
|
|
45
|
-
readChecksumIndex(): CardChecksumIndex;
|
|
46
|
-
changedSince(snapshotChecksumIndex: CardChecksumIndex): string[];
|
|
47
|
-
}
|
|
48
|
-
interface CardUpsertValidation {
|
|
49
|
-
ok: boolean;
|
|
50
|
-
error?: string;
|
|
51
|
-
}
|
|
52
|
-
interface CardAdminStore extends CardStore {
|
|
53
|
-
validateUpsert(id: string, cardKey: string): CardUpsertValidation;
|
|
54
|
-
writeCard(id: string, card: LiveCard, cardKey?: string): void;
|
|
55
|
-
patchCard(id: string, jsonPath: string, value: unknown): void;
|
|
56
|
-
removeCard(id: string): void;
|
|
57
|
-
readIndex(): CardIndex;
|
|
58
|
-
}
|
|
59
|
-
declare function createCardStore(adapter: CardStorageAdapter, onWarn?: (msg: string) => void): CardAdminStore;
|
|
60
|
-
interface JournalEntry {
|
|
61
|
-
id: string;
|
|
62
|
-
event: GraphEvent;
|
|
63
|
-
}
|
|
64
|
-
interface JournalStorageAdapter {
|
|
65
|
-
readAllEntries(): JournalEntry[];
|
|
66
|
-
appendEntry(entry: JournalEntry): void;
|
|
67
|
-
generateId(): string;
|
|
68
|
-
}
|
|
69
|
-
declare const SNAPSHOT_SCHEMA_VERSION_V1 = "v1";
|
|
70
|
-
declare const BOARD_GRAPH_KEY = "board/graph";
|
|
71
|
-
type OutputStoreEvent = {
|
|
72
|
-
kind: 'computed_values';
|
|
73
|
-
cardId: string;
|
|
74
|
-
values: Record<string, unknown>;
|
|
75
|
-
} | {
|
|
76
|
-
kind: 'data_object';
|
|
77
|
-
key: string;
|
|
78
|
-
payload: unknown;
|
|
79
|
-
} | {
|
|
80
|
-
kind: 'status';
|
|
81
|
-
status: unknown;
|
|
82
|
-
};
|
|
83
|
-
interface BoardStatusCard {
|
|
84
|
-
name: string;
|
|
85
|
-
status: string;
|
|
86
|
-
error?: {
|
|
87
|
-
message: string;
|
|
88
|
-
code?: string;
|
|
89
|
-
at?: string;
|
|
90
|
-
source?: 'task-runtime' | 'source-fetch' | 'timeout' | 'unknown';
|
|
91
|
-
};
|
|
92
|
-
requires: string[];
|
|
93
|
-
requires_satisfied: string[];
|
|
94
|
-
requires_missing: string[];
|
|
95
|
-
provides_declared: string[];
|
|
96
|
-
provides_runtime: string[];
|
|
97
|
-
blocked_by: string[];
|
|
98
|
-
unblocks: string[];
|
|
99
|
-
runtime: {
|
|
100
|
-
attempt_count: number;
|
|
101
|
-
restart_count: number;
|
|
102
|
-
in_progress_since: string | null;
|
|
103
|
-
last_transition_at: string | null;
|
|
104
|
-
last_completed_at: string | null;
|
|
105
|
-
last_restarted_at: string | null;
|
|
106
|
-
status_age_ms: number | null;
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
interface BoardStatusObject {
|
|
110
|
-
schema_version: 'v1';
|
|
111
|
-
meta: {
|
|
112
|
-
board: {
|
|
113
|
-
path: string;
|
|
114
|
-
};
|
|
115
|
-
};
|
|
116
|
-
summary: {
|
|
117
|
-
card_count: number;
|
|
118
|
-
completed: number;
|
|
119
|
-
eligible: number;
|
|
120
|
-
pending: number;
|
|
121
|
-
blocked: number;
|
|
122
|
-
unresolved: number;
|
|
123
|
-
failed?: number;
|
|
124
|
-
in_progress?: number;
|
|
125
|
-
orphan_cards?: number;
|
|
126
|
-
topology?: {
|
|
127
|
-
edge_count: number;
|
|
128
|
-
max_fan_out_card: string | null;
|
|
129
|
-
max_fan_out: number;
|
|
130
|
-
};
|
|
131
|
-
};
|
|
132
|
-
cards: BoardStatusCard[];
|
|
133
|
-
}
|
|
134
|
-
declare const EMPTY_CONFIG: GraphConfig;
|
|
135
|
-
|
|
136
|
-
export { type BoardStatusObject as B, type CardAdminStore as C, EMPTY_CONFIG as E, type JournalStorageAdapter as J, type LiveCard as L, type OutputStoreEvent as O, SNAPSHOT_SCHEMA_VERSION_V1 as S, BOARD_GRAPH_KEY as a, createCardStore as c };
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
'use strict';var module$1=require('module');require('ajv-formats'),require('child_process');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;var be=module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)));be("./jsonata-sync.cjs");var Te=module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))),j=Te("./jsonata-sync.cjs"),ne=j;function te(e,t){if(!t||!e)return;let r=t.split("."),n=e;for(let s=0;s<r.length;s++){if(n==null)return;n=n[r[s]];}return n}function se(e,t,r){let n=t.split("."),s=e;for(let o=0;o<n.length-1;o++)(s[n[o]]==null||typeof s[n[o]]!="object")&&(s[n[o]]={}),s=s[n[o]];s[n[n.length-1]]=r;}async function Se(e,t){if(!e?.compute?.length)return e;e.card_data||(e.card_data={}),e.computed_values={},e._sourcesData=t?.sourcesData??{};let r=e.requires??{},n={card_data:e.card_data,requires:r,expects_data:r,fetched_sources:e._sourcesData,data:e.computed_values,computed_values:e.computed_values};for(let s of e.compute)try{let o=await j(s.expr).evaluate(n);se(e.computed_values,s.bindTo,o),n.computed_values=e.computed_values;}catch(o){console.error(`CardCompute.run error on "${e.id??"?"}.${s.bindTo}":`,o);}return e}function we(e,t){if(!e?.compute?.length)return {ok:true,node:e};e.card_data||(e.card_data={}),e.computed_values={},e._sourcesData=t?.sourcesData??{};let r=e.requires??{},n={card_data:e.card_data,requires:r,expects_data:r,fetched_sources:e._sourcesData,data:e.computed_values,computed_values:e.computed_values},s=[];for(let o of e.compute)try{let i=ne(o.expr).evaluate(n);se(e.computed_values,o.bindTo,i),n.computed_values=e.computed_values;}catch(i){let d=i instanceof Error?i.message:String(i);s.push({bindTo:o.bindTo,error:d}),console.error(`CardCompute.runSync error on "${e.id??"?"}.${o.bindTo}":`,i);}return s.length>0?{ok:true,node:e,errors:s}:{ok:true,node:e}}async function Ce(e,t,r){let n={...r??{},card_data:t.card_data??{},requires:t.requires??{},fetched_sources:t._sourcesData??{},computed_values:t.computed_values??{}};return j(e).evaluate(n)}function _e(e,t){return t.startsWith("fetched_sources.")?te(e._sourcesData??{},t.slice(16)):te(e,t)}var re=new Set(["metric","table","editable-table","chart","form","filter","list","notes","todo","alert","narrative","badge","text","markdown","ref","custom","actions"]),xe=new Set(["id","meta","requires","provides","view","card_data","compute","source_defs"]);function Ae(e){let t=[];if(!e||typeof e!="object"||Array.isArray(e))return {ok:false,errors:["Node must be a non-null object"]};let r=e;(typeof r.id!="string"||!r.id)&&t.push("id: required, must be a non-empty string");for(let n of Object.keys(r))xe.has(n)||t.push(`Unknown top-level key: "${n}"`);if((r.card_data==null||typeof r.card_data!="object"||Array.isArray(r.card_data))&&t.push("card_data: required, must be an object"),r.meta!=null)if(typeof r.meta!="object"||Array.isArray(r.meta))t.push("meta: must be an object");else {let n=r.meta;n.title!=null&&typeof n.title!="string"&&t.push("meta.title: must be a string"),n.tags!=null&&!Array.isArray(n.tags)&&t.push("meta.tags: must be an array");}if(r.requires!=null&&!Array.isArray(r.requires)&&t.push("requires: must be an array of strings"),r.provides!=null&&(Array.isArray(r.provides)?r.provides.forEach((n,s)=>{if(!n||typeof n!="object"||Array.isArray(n))t.push(`provides[${s}]: must be an object with bindTo and ref`);else {let o=n;(typeof o.bindTo!="string"||!o.bindTo)&&t.push(`provides[${s}]: missing required "bindTo" string`),(typeof o.ref!="string"||!o.ref)&&t.push(`provides[${s}]: missing required "ref" string`);}}):t.push("provides: must be an array of { bindTo, ref } bindings")),r.compute!=null&&(Array.isArray(r.compute)?r.compute.forEach((n,s)=>{if(!n||typeof n!="object"||Array.isArray(n))t.push(`compute[${s}]: must be a compute step object`);else {let o=n;(typeof o.bindTo!="string"||!o.bindTo)&&t.push(`compute[${s}]: missing required "bindTo" property`),(typeof o.expr!="string"||!o.expr)&&t.push(`compute[${s}]: missing required "expr" string (JSONata expression)`);}}):t.push("compute: must be an array of compute steps")),r.source_defs!=null)if(!Array.isArray(r.source_defs))t.push("source_defs: must be an array");else {let n=new Set,s=new Set;r.source_defs.forEach((o,i)=>{if(!o||typeof o!="object"||Array.isArray(o))t.push(`source_defs[${i}]: must be an object`);else {let d=o;typeof d.bindTo!="string"||!d.bindTo?t.push(`source_defs[${i}]: missing required "bindTo" property`):(n.has(d.bindTo)&&t.push(`source_defs[${i}]: bindTo "${d.bindTo}" is not unique across source_defs`),n.add(d.bindTo)),typeof d.outputFile!="string"||!d.outputFile?t.push(`source_defs[${i}]: missing required "outputFile" property`):(s.has(d.outputFile)&&t.push(`source_defs[${i}]: outputFile "${d.outputFile}" is not unique across source_defs`),s.add(d.outputFile)),d.optionalForCompletionGating!=null&&typeof d.optionalForCompletionGating!="boolean"&&t.push(`source_defs[${i}]: optionalForCompletionGating must be a boolean`);}});}if(r.view!=null)if(typeof r.view!="object"||Array.isArray(r.view))t.push("view: must be an object");else {let n=r.view;!Array.isArray(n.elements)||n.elements.length===0?t.push("view.elements: required, must be a non-empty array"):n.elements.forEach((s,o)=>{if(!s||typeof s!="object"){t.push(`view.elements[${o}]: must be an object`);return}!s.kind||typeof s.kind!="string"?t.push(`view.elements[${o}].kind: required, must be a string`):re.has(s.kind)||t.push(`view.elements[${o}].kind: unknown kind "${s.kind}". Valid: ${[...re].join(", ")}`),s.data!=null&&(typeof s.data!="object"||Array.isArray(s.data))&&t.push(`view.elements[${o}].data: must be an object`);}),n.layout!=null&&(typeof n.layout!="object"||Array.isArray(n.layout))&&t.push("view.layout: must be an object"),n.features!=null&&(typeof n.features!="object"||Array.isArray(n.features))&&t.push("view.features: must be an object");}return {ok:t.length===0,errors:t}}async function Ee(e,t){if(!e||e.length===0)return [];let r={card_data:t.card_data??{},requires:t.requires??{}};return Promise.all(e.map(async n=>{let s={};if(n.projections&&typeof n.projections=="object"&&!Array.isArray(n.projections)){for(let[o,i]of Object.entries(n.projections))if(typeof i=="string"&&i.trim().length>0)try{s[o]=await j(i).evaluate(r);}catch{s[o]=void 0;}}return {...n,_projections:s}}))}function Oe(e,t){if(!e||e.length===0)return [];let r={card_data:t.card_data??{},requires:t.requires??{}};return e.map(n=>{let s={};if(n.projections&&typeof n.projections=="object"&&!Array.isArray(n.projections)){for(let[o,i]of Object.entries(n.projections))if(typeof i=="string"&&i.trim().length>0)try{s[o]=ne(i).evaluate(r);}catch{s[o]=void 0;}}return {...n,_projections:s}})}var D={run:Se,runSync:we,eval:Ce,resolve:_e,validate:Ae,enrichSources:Ee,enrichSourcesSync:Oe};var G={RUNNING:"running",COMPLETED:"completed",FAILED:"failed",INACTIVATED:"inactivated"};function E(e){return e?Array.isArray(e.provides)?e.provides:[]:[]}function N(e){return e?Array.isArray(e.requires)?e.requires:[]:[]}function H(e){return e.tasks??{}}function P(e){return e?e.status===G.FAILED||e.status===G.INACTIVATED:false}function oe(e,t){return e.refreshStrategy??t?.refreshStrategy??"data-changed"}function ae(e){return e.maxExecutions}function ie(e,t){let r=new Set;for(let[n,s]of Object.entries(t))if(s.status===G.COMPLETED){let o=e.tasks[n];o&&E(o).forEach(d=>r.add(d));}return Array.from(r)}function ce(e,t){let r={};return e.forEach(n=>{let s=t[n];if(!s)return;E(s).forEach(i=>{r[i]||(r[i]=[]),r[i].push(n);});}),r}function de(e,t,r){let n=e.tasks[t]??q(),s={};if(r){let i=r.tasks[t],d=N(i);for(let p of d)for(let[R,w]of Object.entries(r.tasks))if(E(w).includes(p)){let T=e.tasks[R];T?.lastDataHash&&(s[p]=T.lastDataHash);break}}let o={...n,status:"running",startedAt:new Date().toISOString(),lastUpdated:new Date().toISOString(),progress:0,error:void 0,startConsumedHashes:s};return {...e,tasks:{...e.tasks,[t]:o},lastUpdated:new Date().toISOString()}}function ue(e,t,r,n,s,o){let i=e.tasks[r]??q(),d=t.tasks[r];if(!d)throw new Error(`Task "${r}" not found in graph`);let p;n&&d.on&&d.on[n]?p=d.on[n]:p=E(d);let R=i.startConsumedHashes?{...i.startConsumedHashes}:{...i.lastConsumedHashes};if(!i.startConsumedHashes){let f=d.requires??[];for(let m of f)for(let[v,b]of Object.entries(t.tasks))if(E(b).includes(m)){let k=e.tasks[v];k?.lastDataHash&&(R[m]=k.lastDataHash);break}}let w={...i,status:"completed",completedAt:new Date().toISOString(),lastUpdated:new Date().toISOString(),executionCount:i.executionCount+1,lastEpoch:i.executionCount+1,lastDataHash:s,data:o,lastConsumedHashes:R,error:void 0},T=[...new Set([...e.availableOutputs,...p])];return {...e,tasks:{...e.tasks,[r]:w},availableOutputs:T,lastUpdated:new Date().toISOString()}}function pe(e,t,r,n){let s=e.tasks[r]??q(),o=t.tasks[r];if(o?.retry){let p=s.retryCount+1;if(p<=o.retry.max_attempts){let R={...s,status:"not-started",retryCount:p,lastUpdated:new Date().toISOString(),error:n};return {...e,tasks:{...e.tasks,[r]:R},lastUpdated:new Date().toISOString()}}}let i={...s,status:"failed",failedAt:new Date().toISOString(),lastUpdated:new Date().toISOString(),error:n,executionCount:s.executionCount+1},d=e.availableOutputs;if(o?.on_failure&&o.on_failure.length>0&&(d=[...new Set([...e.availableOutputs,...o.on_failure])]),o?.circuit_breaker&&i.executionCount>=o.circuit_breaker.max_executions){let p=o.circuit_breaker.on_break;d=[...new Set([...d,...p])];}return {...e,tasks:{...e.tasks,[r]:i},availableOutputs:d,lastUpdated:new Date().toISOString()}}function fe(e,t,r,n){let s=e.tasks[t]??q(),o={...s,progress:typeof n=="number"?n:s.progress,messages:[...s.messages??[],...r?[{message:r,timestamp:new Date().toISOString(),status:s.status}]:[]],lastUpdated:new Date().toISOString()};return {...e,tasks:{...e.tasks,[t]:o},lastUpdated:new Date().toISOString()}}function le(e,t){let r=e.tasks[t];if(!r)return e;let n={...r,status:"not-started",startedAt:void 0,completedAt:void 0,failedAt:void 0,error:void 0,data:void 0,progress:null,lastUpdated:new Date().toISOString()};return {...e,tasks:{...e.tasks,[t]:n},lastUpdated:new Date().toISOString()}}function q(){return {status:"not-started",executionCount:0,retryCount:0,lastEpoch:0,messages:[],progress:null}}function B(e,t){let r=t??`live-${Date.now()}`,n={};for(let o of Object.keys(e.tasks))n[o]=me();let s={status:"running",tasks:n,availableOutputs:[],stuckDetection:{is_stuck:false,stuck_description:null,outputs_unresolvable:[],tasks_blocked:[]},lastUpdated:new Date().toISOString(),executionId:r,executionConfig:{executionMode:e.settings.execution_mode??"eligibility-mode",conflictStrategy:e.settings.conflict_strategy??"alphabetical",completionStrategy:e.settings.completion}};return {config:e,state:s}}function ge(e,t){let{config:r,state:n}=e;if("executionId"in t&&t.executionId&&t.executionId!==n.executionId)return e;switch(t.type){case "task-started":return {config:r,state:de(n,t.taskName,r)};case "task-completed":return {config:r,state:ue(n,r,t.taskName,t.result,t.dataHash,t.data)};case "task-failed":return {config:r,state:pe(n,r,t.taskName,t.error)};case "task-progress":return {config:r,state:fe(n,t.taskName,t.message,t.progress)};case "task-restart":return {config:r,state:le(n,t.taskName)};case "inject-tokens":return {config:r,state:{...n,availableOutputs:[...new Set([...n.availableOutputs,...t.tokens])],lastUpdated:new Date().toISOString()}};case "agent-action":return {config:r,state:Ge(n,t.action)};case "task-upsert":return K(e,t.taskName,t.taskConfig);case "task-removal":return V(e,t.taskName);case "node-requires-add":return W(e,t.nodeName,t.tokens);case "node-requires-remove":return J(e,t.nodeName,t.tokens);case "node-provides-add":return X(e,t.nodeName,t.tokens);case "node-provides-remove":return Y(e,t.nodeName,t.tokens);default:return e}}function M(e,t){return t.reduce((r,n)=>ge(r,n),e)}function K(e,t,r){let n=!!e.config.tasks[t];return {config:{...e.config,tasks:{...e.config.tasks,[t]:r}},state:{...e.state,tasks:{...e.state.tasks,[t]:n?e.state.tasks[t]:me()},lastUpdated:new Date().toISOString()}}}function V(e,t){if(!e.config.tasks[t])return e;let{[t]:r,...n}=e.config.tasks,{[t]:s,...o}=e.state.tasks;return {config:{...e.config,tasks:n},state:{...e.state,tasks:o,lastUpdated:new Date().toISOString()}}}function W(e,t,r){let n=e.config.tasks[t];if(!n)return e;let s=N(n),o=r.filter(i=>!s.includes(i));return o.length===0?e:{config:{...e.config,tasks:{...e.config.tasks,[t]:{...n,requires:[...s,...o]}}},state:e.state}}function J(e,t,r){let n=e.config.tasks[t];if(!n)return e;let s=N(n),o=s.filter(i=>!r.includes(i));return o.length===s.length?e:{config:{...e.config,tasks:{...e.config.tasks,[t]:{...n,requires:o}}},state:e.state}}function X(e,t,r){let n=e.config.tasks[t];if(!n)return e;let s=E(n),o=r.filter(i=>!s.includes(i));return o.length===0?e:{config:{...e.config,tasks:{...e.config.tasks,[t]:{...n,provides:[...s,...o]}}},state:e.state}}function Y(e,t,r){let n=e.config.tasks[t];if(!n)return e;let s=E(n),o=s.filter(i=>!r.includes(i));return o.length===s.length?e:{config:{...e.config,tasks:{...e.config.tasks,[t]:{...n,provides:o}}},state:e.state}}function z(e){return {version:1,config:e.config,state:e.state,snapshotAt:new Date().toISOString()}}function me(){return {status:"not-started",executionCount:0,retryCount:0,lastEpoch:0,messages:[],progress:null}}function Ge(e,t){let r=new Date().toISOString();switch(t){case "stop":return {...e,status:"stopped",lastUpdated:r};case "pause":return {...e,status:"paused",lastUpdated:r};case "resume":return {...e,status:"running",lastUpdated:r};default:return e}}function F(e){let{config:t,state:r}=e,n=H(t);if(Object.keys(n).length===0)return {eligible:[],pending:[],unresolved:[],blocked:[],conflicts:{}};let o=Ne(n),i=ie(t,r.tasks),d=new Set([...i,...r.availableOutputs]),p=[],R=[],w=[],T=[];for(let[m,v]of Object.entries(n)){let b=r.tasks[m],k=oe(v,t.settings),O=k!=="once";if(b?.status===G.RUNNING||P(b))continue;let c=ae(v);if(c!==void 0&&b&&b.executionCount>=c||v.circuit_breaker&&b&&b.executionCount>=v.circuit_breaker.max_executions||!O&&b?.status===G.COMPLETED)continue;if(O&&b?.status===G.COMPLETED){let u=N(v),g=false;switch(k){case "data-changed":{u.length>0&&u.some(C=>{for(let[_,x]of Object.entries(n))if(E(x).includes(C)){let S=r.tasks[_];if(!S)continue;let ve=b.lastConsumedHashes?.[C];return S.lastDataHash==null?S.executionCount>b.lastEpoch:S.lastDataHash!==ve}return false})||(g=true);break}case "epoch-changed":{u.length>0&&u.some(C=>{for(let[_,x]of Object.entries(n))if(E(x).includes(C)){let S=r.tasks[_];if(S&&S.executionCount>b.lastEpoch)return true}return false})||(g=true);break}case "time-based":{let A=v.refreshInterval??0;if(A<=0){g=true;break}let C=b.completedAt;if(!C){g=true;break}(Date.now()-Date.parse(C))/1e3<A&&(g=true);break}case "manual":g=true;break}if(g)continue}let a=N(v);if(a.length===0){p.push(m);continue}let h=[],l=[],y=[];for(let u of a){if(d.has(u))continue;let g=o[u]||[];g.length===0?h.push(u):g.every(C=>P(r.tasks[C]))?y.push({token:u,failedProducer:g[0]}):l.push(u);}h.length>0?w.push({taskName:m,missingTokens:h}):y.length>0?T.push({taskName:m,failedTokens:y.map(u=>u.token),failedProducers:[...new Set(y.map(u=>u.failedProducer))]}):l.length>0?R.push({taskName:m,waitingOn:l}):p.push(m);}let f={};if(p.length>1){let m=ce(p,n);for(let[v,b]of Object.entries(m))b.length>1&&(f[v]=b);}return {eligible:p,pending:R,unresolved:w,blocked:T,conflicts:f}}function Ne(e){let t={};for(let[r,n]of Object.entries(e)){for(let s of E(n))t[s]||(t[s]=[]),t[s].push(r);if(n.on)for(let s of Object.values(n.on))for(let o of s)t[o]||(t[o]=[]),t[o].includes(r)||t[o].push(r);if(n.on_failure)for(let s of n.on_failure)t[s]||(t[s]=[]),t[s].includes(r)||t[s].push(r);}return t}var I=class{buffer=[];append(t){this.buffer.push(t);}drain(){let t=this.buffer;return this.buffer=[],t}get size(){return this.buffer.length}};function U(e){let t=Q(e);return Le(t)}function Q(e){if(e==null||typeof e!="object")return JSON.stringify(e);if(Array.isArray(e))return "["+e.map(Q).join(",")+"]";let t=e;return "{"+Object.keys(t).sort().map(n=>JSON.stringify(n)+":"+Q(t[n])).join(",")+"}"}function Le(e){let t=0xcbf29ce484222325n,r=0x100000001b3n,n=0xffffffffffffffffn;for(let s=0;s<e.length;s++)t^=BigInt(e.charCodeAt(s)),t=t*r&n;return t.toString(16).padStart(16,"0")}function Ie(e){if(typeof Buffer<"u")return Buffer.from(e,"utf8").toString("base64url");if(typeof btoa=="function"){let t=new TextEncoder().encode(e),r="";for(let n of t)r+=String.fromCharCode(n);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}throw new Error("No base64 encoder available in this runtime")}function je(e){if(typeof Buffer<"u")return Buffer.from(e,"base64url").toString("utf8");if(typeof atob=="function"){let t=e.replace(/-/g,"+").replace(/_/g,"/"),r=t+"=".repeat((4-t.length%4)%4),n=atob(r),s=new Uint8Array(n.length);for(let o=0;o<n.length;o++)s[o]=n.charCodeAt(o);return new TextDecoder().decode(s)}throw new Error("No base64 decoder available in this runtime")}function ke(e){let t=JSON.stringify({t:e,n:Date.now().toString(36)+Math.random().toString(36).slice(2,6)});return Ie(t)}function De(e){try{let t=JSON.parse(je(e));return typeof t?.t=="string"?{taskName:t.t}:null}catch{return null}}function $(e,t,r){let{handlers:n,onDrain:s}=t,o=new I,i="state"in e&&"config"in e?e:B(e,r),d=false,p=new Set,R=new Map(Object.entries(n)),w=new I,T=false,f=false;function m(){if(!d){if(T){f=true;return}T=true;try{do f=!1,v();while(f)}finally{T=false;}}}function v(){let c=w.drain(),a=o.drain(),h=[...c,...a];h.length>0&&(i=M(i,h));let l=F(i);h.length>0&&s?.(h,i,l);for(let y of l.eligible)O(y);for(let y of h)if(y.type==="task-progress"){let{taskName:u,update:g}=y;if(!i.config.tasks[u])continue;let C=i.state.tasks[u];if(!C||C.status!=="running")continue;let _=ke(u),x=k(u,_,g).catch(S=>{d||(w.append({type:"task-failed",taskName:u,error:S.message??String(S),timestamp:new Date().toISOString()}),m());}).finally(()=>{p.delete(x);});p.add(x);}}function b(c){let h=i.config.tasks[c].requires??[],l=new Map;for(let[u,g]of Object.entries(i.config.tasks))for(let A of g.provides??[])l.set(A,u);let y={};for(let u of h){let g=l.get(u);g?y[u]=i.state.tasks[g]?.data:y[u]=void 0;}return y}async function k(c,a,h){let l=i.config.tasks[c],y=l.taskHandlers??[],u=b(c);for(let g of y){let A=R.get(g);if(!A)throw new Error(`Handler '${g}' not found in registry (task '${c}')`);let C={nodeId:c,state:u,taskState:i.state.tasks[c],config:l,callbackToken:a,update:h};if(await A(C)==="task-initiate-failure")throw new Error(`Handler '${g}' returned task-initiate-failure (task '${c}')`)}}function O(c){let h=i.config.tasks[c]?.taskHandlers;if(!h||h.length===0)return;w.append({type:"task-started",taskName:c,timestamp:new Date().toISOString()}),m();let l=ke(c),y=k(c,l).catch(u=>{d||(w.append({type:"task-failed",taskName:c,error:u.message??String(u),timestamp:new Date().toISOString()}),m());}).finally(()=>{p.delete(y);});p.add(y);}return {push(c){d||(c.type==="task-completed"&&c.data&&!c.dataHash&&(c={...c,dataHash:U(c.data)}),o.append(c),m());},pushAll(c){if(!d){for(let a of c)a.type==="task-completed"&&a.data&&!a.dataHash?o.append({...a,dataHash:U(a.data)}):o.append(a);m();}},resolveCallback(c,a,h){if(d)return;let l=De(c);if(!l)return;let{taskName:y}=l;if(i.config.tasks[y]){if(h&&h.length>0)o.append({type:"task-failed",taskName:y,error:h.join("; "),timestamp:new Date().toISOString()});else {let u=a&&Object.keys(a).length>0?U(a):void 0;o.append({type:"task-completed",taskName:y,data:a,dataHash:u,timestamp:new Date().toISOString()});}m();}},addNode(c,a){d||(o.append({type:"task-upsert",taskName:c,taskConfig:a,timestamp:new Date().toISOString()}),m());},removeNode(c){d||(o.append({type:"task-removal",taskName:c,timestamp:new Date().toISOString()}),m());},addRequires(c,a){d||(o.append({type:"node-requires-add",nodeName:c,tokens:a,timestamp:new Date().toISOString()}),m());},removeRequires(c,a){d||(o.append({type:"node-requires-remove",nodeName:c,tokens:a,timestamp:new Date().toISOString()}),m());},addProvides(c,a){d||(o.append({type:"node-provides-add",nodeName:c,tokens:a,timestamp:new Date().toISOString()}),m());},removeProvides(c,a){d||(o.append({type:"node-provides-remove",nodeName:c,tokens:a,timestamp:new Date().toISOString()}),m());},registerHandler(c,a){R.set(c,a);},unregisterHandler(c){R.delete(c);},retrigger(c){d||i.config.tasks[c]&&(o.append({type:"task-restart",taskName:c,timestamp:new Date().toISOString()}),m());},retriggerAll(c){if(!d){for(let a of c)i.config.tasks[a]&&o.append({type:"task-restart",taskName:a,timestamp:new Date().toISOString()});m();}},snapshot(){return z(i)},getState(){return i},getSchedule(){return F(i)},async waitForHandlers(){p.size>0&&await Promise.allSettled([...p]);},async dispose(c){c?.wait&&p.size>0&&await Promise.allSettled([...p]),d=true;}}}function L(e){return JSON.parse(JSON.stringify(e))}function Z(e){let t=e.provides&&e.provides.length>0?e.provides.map(r=>r.bindTo):[e.id];return {requires:e.requires&&e.requires.length>0?[...e.requires]:void 0,provides:t,taskHandlers:[e.id],description:e.meta?.title??e.id}}function Ue(e){let t=new Map;for(let[r,n]of e.entries()){let s=n.provides&&n.provides.length>0?n.provides:[{bindTo:r,ref:"card_data"}];for(let o of s)t.set(o.bindTo,r);}return t}function ee(e,t){let r=Ue(e),n=e.get(t);if(n){for(let s of n.requires??[])if(!r.has(s))throw new Error(`Card "${t}" requires token "${s}" but no card provides it`)}}var fr={CARD_PREFIX:"yf:cards:",RUNTIME_OUT_PREFIX:"yf:runtime-out:cards:",STATUS_KEY:"yf:runtime-out:status",writeCard(e,t){try{localStorage.setItem(this.CARD_PREFIX+e,JSON.stringify(t));}catch(r){console.warn(`Failed to write card ${e} to localStorage:`,r);}},readCard(e){try{let t=localStorage.getItem(this.CARD_PREFIX+e);return t?JSON.parse(t):null}catch(t){return console.warn(`Failed to read card ${e} from localStorage:`,t),null}},readAllCards(e){let t={};for(let r of e){let n=this.readCard(r);n&&(t[r]=n);}return t},writeComputedArtifact(e){if(!(!e||!e.card_id))try{localStorage.setItem(this.RUNTIME_OUT_PREFIX+String(e.card_id),JSON.stringify(e));}catch(t){console.warn(`Failed to write computed artifact ${e.card_id}:`,t);}},readComputedArtifact(e){try{let t=localStorage.getItem(this.RUNTIME_OUT_PREFIX+e);return t?JSON.parse(t):null}catch(t){return console.warn(`Failed to read computed artifact ${e}:`,t),null}},readAllComputedArtifacts(e){let t={};for(let r of e){let n=this.readComputedArtifact(r);n&&(t[r]=n);}return t},writeStatusSnapshot(e){try{localStorage.setItem(this.STATUS_KEY,JSON.stringify(e));}catch(t){console.warn("Failed to write status snapshot to localStorage:",t);}},readStatusSnapshot(){try{let e=localStorage.getItem(this.STATUS_KEY);return e?JSON.parse(e):null}catch(e){return console.warn("Failed to read status snapshot from localStorage:",e),null}},clear(){let e=[];for(let t=0;t<localStorage.length;t++){let r=localStorage.key(t);r&&(r.startsWith(this.CARD_PREFIX)||r.startsWith(this.RUNTIME_OUT_PREFIX)||r===this.STATUS_KEY)&&e.push(r);}for(let t of e)localStorage.removeItem(t);}};function lr(e,t={}){let r=Array.isArray(e)?{}:{id:e.id,title:e.title,mode:e.mode,positions:e.positions,settings:e.settings},n=Array.isArray(e)?e:e.nodes,s=new Map;for(let a of n){if(s.has(a.id))throw new Error(`Duplicate card ID: "${a.id}"`);s.set(a.id,L(a));}let o=new Set,i=t.taskExecutor,d=t.sourceAdapters??{},p=t.defaultSourceAdapter,R=null,w=(a,h)=>{let l={events:a,graph:h,nodes:O()};for(let y of o)y(l);},T=a=>async h=>{let l=s.get(a);if(!l)return "task-initiate-failure";let y={};for(let _ of l.requires??[]){let x=h.state[_];if(!x||typeof x!="object")continue;let S=x.provides_data;!S||typeof S!="object"||Object.prototype.hasOwnProperty.call(S,_)&&(y[_]=S[_]);}let u={};if(l.source_defs&&l.source_defs.length>0){let _=d[a]??p,x=i?await i({card:l,input:h}):_?await _({card:l,input:h}):void 0;if(x&&typeof x=="object")for(let S of l.source_defs)Object.prototype.hasOwnProperty.call(x,S.bindTo)?u[S.bindTo]=x[S.bindTo]:l.source_defs.length===1&&(u[S.bindTo]=x);}let g={id:l.id,card_data:L(l.card_data??{}),requires:y,source_defs:l.source_defs,compute:l.compute};g._sourcesData=u,g.compute&&g.compute.length>0&&await D.run(g,{sourcesData:u});let A={};if(l.provides&&l.provides.length>0)for(let{bindTo:_,ref:x}of l.provides)A[_]=D.resolve(g,x);else A[l.id]={...g.card_data??{},...g.computed_values??{},...g._sourcesData??{}};let C={provides_data:A,card_data:g.card_data??{},computed_values:g.computed_values??{},fetched_sources:u,requires:y};return R?.resolveCallback(h.callbackToken,C),"task-initiated"},f={},m={};for(let[a,h]of s.entries())ee(s,a),f[a]=Z(h),m[a]=T(a);let v={id:r.id??`browser-board-${Date.now()}`,settings:{completion:"manual",execution_mode:"eligibility-mode",...r.settings??{},...t.graphSettings??{}},tasks:f},b=t.reactiveOptions?.onDrain,k=$(v,{...t.reactiveOptions??{},handlers:m,onDrain:(a,h,l)=>{b?.(a,h,l),w(a,h);}},t.executionId);R=k;function O(){let a=k.getState(),h=[];for(let[l,y]of s.entries()){let u=a.state.tasks[l]?.data,g=a.state.tasks[l],A={...y.card_data??{},...u&&typeof u.card_data=="object"?u.card_data:{}},C=g?.status==="running"?"loading":g?.status,_={...A,...C?{status:C}:{},...g?.lastUpdated?{lastRun:g.lastUpdated}:{},...g?.status==="failed"&&g.error?{error:g.error}:{}};h.push({id:l,card:L(y),card_data:_,requires:u&&typeof u.requires=="object"?L(u.requires):{},computed_values:u&&typeof u.computed_values=="object"?L(u.computed_values):{},runtime_state:g?L(g):{}});}return h}return {getGraph:()=>k,getState:()=>k.getState(),getSchedule:()=>k.getSchedule(),getNodes:()=>O(),getBoard:()=>({...r,nodes:O()}),subscribe(a){return o.add(a),a({events:[],graph:k.getState(),nodes:O()}),()=>o.delete(a)},addCard(a){if(s.has(a.id))throw new Error(`Card "${a.id}" already exists`);s.set(a.id,L(a)),ee(s,a.id),k.registerHandler(a.id,T(a.id)),k.addNode(a.id,Z(a));},upsertCard(a){s.set(a.id,L(a)),ee(s,a.id),k.registerHandler(a.id,T(a.id)),k.addNode(a.id,Z(a));},removeCard(a){s.delete(a),k.unregisterHandler(a),k.removeNode(a);},patchCardState(a,h){let l=s.get(a);if(!l)throw new Error(`Card "${a}" not found`);l.card_data={...l.card_data??{},...h},k.retrigger(a);},retrigger(a){k.retrigger(a);},retriggerAll(){k.retriggerAll(Array.from(s.keys()));},push(a){k.push(a);},pushAll(a){k.pushAll(a);},dispose(){o.clear(),k.dispose();}}}function he(e){return e==="running"||e==="in-progress"?"loading":e==="failed"?"error":"fresh"}function $e(e){return e==="loading"?"in-progress":e==="error"?"failed":e==="stale"?"pending":e==="fresh"?"completed":"pending"}function Be(e,t){let r=t&&typeof t=="object"&&!Array.isArray(t)?t:{};return {schema_version:r.schema_version||"v1",card_id:typeof r.card_id=="string"?r.card_id:e,card_data:r.card_data&&typeof r.card_data=="object"&&!Array.isArray(r.card_data)?structuredClone(r.card_data):{},computed_values:r.computed_values&&typeof r.computed_values=="object"&&!Array.isArray(r.computed_values)?structuredClone(r.computed_values):{}}}function Ke(e,t){if(!e||typeof e!="object")throw new Error("payload must be an object");if(!t)throw new Error("cardId is required");let n=(Array.isArray(e.cardDefinitions)?e.cardDefinitions:[]).find(k=>k.id===t);if(!n)throw new Error(`cardDefinitions has no entry with id ${t}`);let s=e.statusSnapshot&&typeof e.statusSnapshot=="object"?e.statusSnapshot:{},o=e.cardRuntimeById&&typeof e.cardRuntimeById=="object"?e.cardRuntimeById:{},i=e.dataObjectsByToken&&typeof e.dataObjectsByToken=="object"?e.dataObjectsByToken:{},p=(Array.isArray(s.cards)?s.cards:[]).find(k=>k.name===t),R=structuredClone(n),w=Be(t,o[t]),f={...R.card_data&&typeof R.card_data=="object"&&!Array.isArray(R.card_data)?R.card_data:{},...w.card_data||{},status:he(p?.status),lastRun:p?.runtime?.last_transition_at??null};p?.error?.message&&(f.error=p.error.message);let m=p?{task_status:p.status??null,card_status:he(p.status),runtime:structuredClone(p.runtime??{}),error:p.error?structuredClone(p.error):null,blocked_by:Array.isArray(p.blocked_by)?structuredClone(p.blocked_by):[],requires_missing:Array.isArray(p.requires_missing)?structuredClone(p.requires_missing):[]}:{task_status:null,card_status:f.status??"fresh",runtime:{last_transition_at:f.lastRun??null},error:f.error?{message:f.error}:null,blocked_by:[],requires_missing:[]},v=Array.isArray(R.requires)?R.requires:[],b={};for(let[k,O]of Object.entries(i))b[k]=structuredClone(O);for(let k of v)Object.prototype.hasOwnProperty.call(b,k)||(b[k]=null);return {id:t,card:R,card_data:f,requires:b,computed_values:w.computed_values,runtime_state:m}}function gr(e){if(!e||typeof e!="object")throw new Error("payload must be an object");return (Array.isArray(e.cardDefinitions)?e.cardDefinitions:[]).map(r=>Ke(e,r.id))}function mr({boardPath:e,cardDefinitions:t,runtimeModels:r,graphState:n}){let s=Array.isArray(t)?t:[],o=Array.isArray(r)?r:[],i=new Map(o.map(f=>[f.id,f])),p=n.state?.tasks??{},R={};for(let f of o)f?.id&&(R[f.id]={schema_version:"v1",card_id:f.id,card_data:structuredClone(f.card_data??{}),computed_values:structuredClone(f.computed_values??{})});let w={};for(let f of Object.keys(p)){let m=p[f]?.data?.provides_data;if(m&&typeof m=="object")for(let v of Object.keys(m))w[v]=structuredClone(m[v]);}let T=s.map(f=>{let m=i.get(f.id)??{},v=p[f.id],b=typeof v?.status=="string"?v.status:$e(m.card_data?.status),k=typeof v?.error=="string"?v.error:typeof m.card_data?.error=="string"?m.card_data.error:null;return {name:f.id,status:b,...k?{error:{message:k,code:"TASK_FAILED",at:v?.failedAt??null,source:"browser-runtime"}}:{},requires:Array.isArray(f.requires)?f.requires:[],requires_satisfied:[],requires_missing:[],provides_declared:Array.isArray(f.provides)?f.provides.map(O=>O.bindTo):[f.id],provides_runtime:Object.keys(v?.data?.provides_data??{}).sort(),blocked_by:[],unblocks:[],runtime:{attempt_count:v?.executionCount??0,restart_count:v?.retryCount??0,in_progress_since:b==="in-progress"?v?.startedAt??null:null,last_transition_at:v?.lastUpdated??m.card_data?.lastRun??null,last_completed_at:v?.completedAt??null,last_restarted_at:v?.startedAt??null,status_age_ms:null}}});return {cardDefinitions:structuredClone(s),cardRuntimeById:R,dataObjectsByToken:w,statusSnapshot:{schema_version:"v1",meta:{board:{path:e??"browser-runtime"}},summary:{card_count:T.length,completed:T.filter(f=>f.status==="completed").length,eligible:0,pending:T.filter(f=>f.status==="pending").length,blocked:0,unresolved:0,failed:T.filter(f=>f.status==="failed").length,in_progress:T.filter(f=>f.status==="in-progress").length,orphan_cards:0,topology:{edge_count:0,max_fan_out_card:null,max_fan_out:0}},cards:T}}}
|
|
2
|
-
exports.LocalStorageService=fr;exports.buildBrowserArtifactsFromRuntime=mr;exports.createBoardLiveGraphRuntime=lr;exports.selectAllLiveCardModels=gr;exports.selectLiveCardModel=Ke;//# sourceMappingURL=index.cjs.map
|
|
3
|
-
//# sourceMappingURL=index.cjs.map
|