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
|
@@ -7,12 +7,11 @@ import os from 'node:os';
|
|
|
7
7
|
import net from 'node:net';
|
|
8
8
|
import { spawnSync, spawn } from 'node:child_process';
|
|
9
9
|
import { fileURLToPath } from 'node:url';
|
|
10
|
-
import { createRequire } from 'node:module';
|
|
11
10
|
|
|
12
11
|
import {
|
|
13
12
|
createMultiBoardServerRuntime,
|
|
14
13
|
createSingleBoardServerRuntime,
|
|
15
|
-
} from 'yaml-flow/server-runtime';
|
|
14
|
+
} from 'yaml-flow/board-live-cards-server-runtime';
|
|
16
15
|
|
|
17
16
|
import {
|
|
18
17
|
createFsBoardPlatformAdapter,
|
|
@@ -23,23 +22,7 @@ import {
|
|
|
23
22
|
|
|
24
23
|
const __filename = fileURLToPath(import.meta.url);
|
|
25
24
|
const __dirname = path.dirname(__filename);
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
function resolveYamlFlowDir() {
|
|
29
|
-
try {
|
|
30
|
-
return path.dirname(_require.resolve('yaml-flow/package.json'));
|
|
31
|
-
} catch {
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const _yamlFlowDir = resolveYamlFlowDir();
|
|
37
|
-
|
|
38
|
-
// cliDir must point to the yaml-flow root so buildBoardCliInvocation finds
|
|
39
|
-
// board-live-cards-cli.js for task-executor completion callbacks.
|
|
40
|
-
// demo-src/example-board is 2 levels below the yaml-flow root.
|
|
41
|
-
const YAML_FLOW_CLI_DIR = _yamlFlowDir || path.resolve(__dirname, '..', '..');
|
|
42
|
-
const _pkgStepMachineCli = _yamlFlowDir ? path.join(_yamlFlowDir, 'step-machine-cli.js') : null;
|
|
25
|
+
const cliArgs = process.argv.slice(2);
|
|
43
26
|
|
|
44
27
|
function loadServerConfig() {
|
|
45
28
|
const configPath = path.join(__dirname, 'demo-server-config.json');
|
|
@@ -77,7 +60,7 @@ function resolveKindRefFromConfig(configValue) {
|
|
|
77
60
|
const serverConfig = loadServerConfig();
|
|
78
61
|
const configuredCardsDir = resolveFromConfig(serverConfig.cardsDir);
|
|
79
62
|
const configuredTaskExecutorPath = resolveFromConfig(serverConfig.taskExecutorPath || serverConfig.demoTaskExecutorPath);
|
|
80
|
-
const configuredStepMachineCliPath = resolveFromConfig(serverConfig.stepMachineCliPath)
|
|
63
|
+
const configuredStepMachineCliPath = resolveFromConfig(serverConfig.stepMachineCliPath);
|
|
81
64
|
const configuredChatHandlerPath = resolveFromConfig(serverConfig.chatHandlerPath);
|
|
82
65
|
const configuredInferenceAdapterPath = resolveFromConfig(serverConfig.inferenceAdapterPath);
|
|
83
66
|
const configuredGandalfCardsDir = resolveFromConfig(serverConfig.gandalfCardsDir);
|
|
@@ -97,7 +80,9 @@ if (!process.env.DEMO_INFERENCE_ADAPTER_PATH && configuredInferenceAdapterPath)
|
|
|
97
80
|
}
|
|
98
81
|
|
|
99
82
|
const PORT = Number(process.env.DEMO_SERVER_PORT || serverConfig.port || 7799);
|
|
100
|
-
const
|
|
83
|
+
const cardsPatternArgIndex = cliArgs.indexOf('--cards-pattern');
|
|
84
|
+
const cliCardsPattern = cardsPatternArgIndex !== -1 ? cliArgs[cardsPatternArgIndex + 1] : null;
|
|
85
|
+
const selectedCardsPattern = (process.env.DEMO_CARDS_PATTERN || cliCardsPattern || '').trim() || null;
|
|
101
86
|
|
|
102
87
|
const CORS_HEADERS = {
|
|
103
88
|
'Access-Control-Allow-Origin': '*',
|
|
@@ -132,12 +117,23 @@ const defaultGandalfInferenceAdapterPath = process.env.DEMO_GANDALF_INFERENCE_AD
|
|
|
132
117
|
// platform-free server runtime.
|
|
133
118
|
// ---------------------------------------------------------------------------
|
|
134
119
|
|
|
135
|
-
function
|
|
120
|
+
function wildcardToRegExp(pattern) {
|
|
121
|
+
const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&');
|
|
122
|
+
return new RegExp(`^${escaped.replace(/\*/g, '.*').replace(/\?/g, '.')}$`);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function createFsCardSource(cardsDir, cardPattern = null) {
|
|
126
|
+
const cardRegex = cardPattern ? wildcardToRegExp(cardPattern) : null;
|
|
136
127
|
return {
|
|
137
128
|
listCards() {
|
|
138
129
|
if (!fs.existsSync(cardsDir)) return [];
|
|
139
130
|
return fs.readdirSync(cardsDir)
|
|
140
|
-
.filter(f =>
|
|
131
|
+
.filter(f => {
|
|
132
|
+
if (!f.endsWith('.json')) return false;
|
|
133
|
+
if (!cardRegex) return true;
|
|
134
|
+
const cardId = path.basename(f, '.json');
|
|
135
|
+
return cardRegex.test(cardId);
|
|
136
|
+
})
|
|
141
137
|
.map(f => {
|
|
142
138
|
try { return JSON.parse(fs.readFileSync(path.join(cardsDir, f), 'utf-8')); }
|
|
143
139
|
catch { return null; }
|
|
@@ -275,7 +271,7 @@ function createNamedPipeNotificationTransport() {
|
|
|
275
271
|
|
|
276
272
|
const serverMetaRef = process.env.DEMO_SERVER_META_STORE_REF || configuredServerMetaStoreRef || serializeRef({ kind: 'fs-path', value: setupDir });
|
|
277
273
|
const serverMetaAdapter = createFsBoardPlatformAdapter(
|
|
278
|
-
parseRef(serverMetaRef),
|
|
274
|
+
parseRef(serverMetaRef), { suppressSpawn: true },
|
|
279
275
|
);
|
|
280
276
|
const serverMetaStore = createArtifactsStore(serverMetaAdapter.blobStorage('server-meta'));
|
|
281
277
|
|
|
@@ -304,7 +300,7 @@ function buildBoardContextConfig(label, boardDir, taskExecPath, chatHandlerPath,
|
|
|
304
300
|
|
|
305
301
|
const notifyChannel = `yaml-flow-server-${label}-${boardId}-${process.pid}`;
|
|
306
302
|
const baseRef = parseRef(serializeRef({ kind: 'fs-path', value: boardDir }));
|
|
307
|
-
const boardAdapter = createFsBoardPlatformAdapter(baseRef,
|
|
303
|
+
const boardAdapter = createFsBoardPlatformAdapter(baseRef, {
|
|
308
304
|
notifyChannel,
|
|
309
305
|
});
|
|
310
306
|
// In the server context the drain loop is driven in-process; suppress the
|
|
@@ -312,7 +308,7 @@ function buildBoardContextConfig(label, boardDir, taskExecPath, chatHandlerPath,
|
|
|
312
308
|
boardAdapter.requestProcessAccumulated = () => {};
|
|
313
309
|
// Artifacts adapter rooted at runtimeCardsDir so chats/ and files/ are siblings of store/.
|
|
314
310
|
const artifactsRef = parseRef(serializeRef({ kind: 'fs-path', value: runtimeCardsDir }));
|
|
315
|
-
const artifactsAdapter = createFsBoardPlatformAdapter(artifactsRef,
|
|
311
|
+
const artifactsAdapter = createFsBoardPlatformAdapter(artifactsRef, { suppressSpawn: true });
|
|
316
312
|
|
|
317
313
|
const cardStoreRef = serializeRef({ kind: 'fs-path', value: runtimeCardStoreDir });
|
|
318
314
|
|
|
@@ -390,7 +386,7 @@ const runtime = createMultiBoardServerRuntime({
|
|
|
390
386
|
const existing = singleBoardRuntime.cardStore.get({});
|
|
391
387
|
const isEmpty = existing.status !== 'success' || !existing.data?.cards?.length;
|
|
392
388
|
if (isEmpty) {
|
|
393
|
-
const cards = createFsCardSource(sourceCardsDir).listCards();
|
|
389
|
+
const cards = createFsCardSource(sourceCardsDir, selectedCardsPattern).listCards();
|
|
394
390
|
if (cards.length) singleBoardRuntime.cardStore.set({ body: cards });
|
|
395
391
|
}
|
|
396
392
|
// Seed gandalf board if present
|
|
@@ -410,27 +406,6 @@ const runtime = createMultiBoardServerRuntime({
|
|
|
410
406
|
},
|
|
411
407
|
});
|
|
412
408
|
|
|
413
|
-
// ---------------------------------------------------------------------------
|
|
414
|
-
// Reset
|
|
415
|
-
// ---------------------------------------------------------------------------
|
|
416
|
-
|
|
417
|
-
function resetRuntime() {
|
|
418
|
-
if (fs.existsSync(setupDir)) {
|
|
419
|
-
fs.rmSync(setupDir, { recursive: true, force: true });
|
|
420
|
-
console.log(`[demo-server] reset: wiped ${setupDir}`);
|
|
421
|
-
}
|
|
422
|
-
const chatSessionsDir = serverConfig.chatSessionsDir
|
|
423
|
-
? path.resolve(__dirname, serverConfig.chatSessionsDir)
|
|
424
|
-
: path.join(os.tmpdir(), 'demo-chat-handler-sessions');
|
|
425
|
-
if (fs.existsSync(chatSessionsDir)) {
|
|
426
|
-
fs.rmSync(chatSessionsDir, { recursive: true, force: true });
|
|
427
|
-
console.log(`[demo-server] reset: wiped ${chatSessionsDir}`);
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
if (RESET_ON_START) {
|
|
432
|
-
resetRuntime();
|
|
433
|
-
}
|
|
434
409
|
|
|
435
410
|
// ---------------------------------------------------------------------------
|
|
436
411
|
// Demo-setup — host-level concern (not a runtime concern).
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<meta charset="utf-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
6
|
<title>Example Board Demo (Server Runtime)</title>
|
|
7
|
-
<link rel="icon" type="image/svg+xml" href="favicon.svg" />
|
|
7
|
+
<link rel="icon" type="image/svg+xml" href="../../browser/favicon.svg" />
|
|
8
8
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" />
|
|
9
9
|
<style>
|
|
10
10
|
/* Scale down markdown headings inside cards to stay in proportion with card body text */
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
|
20
20
|
<script src="https://cdn.jsdelivr.net/npm/dompurify/dist/purify.min.js"></script>
|
|
21
21
|
<script src="https://cdn.jsdelivr.net/npm/leader-line/leader-line.min.js"></script>
|
|
22
|
-
<script src="https://cdn.jsdelivr.net/npm/yaml-flow@
|
|
23
|
-
<script src="https://cdn.jsdelivr.net/npm/yaml-flow@
|
|
22
|
+
<script src="https://cdn.jsdelivr.net/npm/yaml-flow@8.0.1/browser/live-cards.js"></script>
|
|
23
|
+
<script src="https://cdn.jsdelivr.net/npm/yaml-flow@8.0.1/browser/board-livecards-client.js"></script>
|
|
24
24
|
</head>
|
|
25
25
|
<body class="bg-light">
|
|
26
26
|
<div class="container-fluid py-3">
|
|
@@ -60,10 +60,9 @@ import path from 'node:path';
|
|
|
60
60
|
import os from 'node:os';
|
|
61
61
|
import { execFileSync } from 'node:child_process';
|
|
62
62
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
63
|
-
import { parseRef, blobStorageForRef, reportComplete, reportFailed } from 'yaml-flow/
|
|
64
|
-
import { loadStepFlow, createStepMachine, MemoryStore } from '
|
|
65
|
-
import {
|
|
66
|
-
import { invokeRefSync } from '../../dist/cli/node/execution-adapter.js';
|
|
63
|
+
import { parseRef, blobStorageForRef, reportComplete, reportFailed } from 'yaml-flow/board-worker-adapter';
|
|
64
|
+
import { loadStepFlow, createStepMachine, MemoryStore, buildStepHandlersForFlow } from 'yaml-flow/step-machine-public';
|
|
65
|
+
import { invokeRefSync } from 'yaml-flow/board-live-cards-node';
|
|
67
66
|
|
|
68
67
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
69
68
|
const SOURCE_DEF_FLOWS_FILE = path.join(__dirname, 'source_def_flows.json');
|
|
@@ -212,7 +211,9 @@ function loadSourceDefFlowsConfig() {
|
|
|
212
211
|
try {
|
|
213
212
|
return readJson(SOURCE_DEF_FLOWS_FILE);
|
|
214
213
|
} catch (err) {
|
|
215
|
-
fail(
|
|
214
|
+
fail(
|
|
215
|
+
`Cannot read source flow registry (${SOURCE_DEF_FLOWS_FILE}): ${String(err && err.message || err)}`,
|
|
216
|
+
);
|
|
216
217
|
}
|
|
217
218
|
}
|
|
218
219
|
|
|
@@ -356,6 +357,22 @@ async function executeStepMachineSourceFlow(context) {
|
|
|
356
357
|
};
|
|
357
358
|
}
|
|
358
359
|
|
|
360
|
+
async function resolveAndExecuteSourceFlow(sourceDef, extra, refs = {}) {
|
|
361
|
+
const registry = loadSourceDefFlowsConfig();
|
|
362
|
+
const kind = resolveSourceKind(sourceDef, registry);
|
|
363
|
+
const flowResult = await executeStepMachineSourceFlow({
|
|
364
|
+
kind,
|
|
365
|
+
registry,
|
|
366
|
+
sourceDef,
|
|
367
|
+
extra,
|
|
368
|
+
inRef: refs.inRef,
|
|
369
|
+
outRef: refs.outRef,
|
|
370
|
+
errRef: refs.errRef,
|
|
371
|
+
mockDb: MOCK_DB,
|
|
372
|
+
});
|
|
373
|
+
return { kind, flowResult };
|
|
374
|
+
}
|
|
375
|
+
|
|
359
376
|
async function runSourceFetchSubcommand(argv) {
|
|
360
377
|
const inIdx = argv.indexOf('--in-ref');
|
|
361
378
|
const outIdx = argv.indexOf('--out-ref');
|
|
@@ -418,29 +435,15 @@ async function runSourceFetchSubcommand(argv) {
|
|
|
418
435
|
failRef(`Cannot resolve source_def: ${String(err && err.message || err)}`, callback);
|
|
419
436
|
}
|
|
420
437
|
|
|
421
|
-
const registry = loadSourceDefFlowsConfig();
|
|
422
438
|
let kind;
|
|
423
|
-
try {
|
|
424
|
-
kind = resolveSourceKind(sourceDef, registry);
|
|
425
|
-
} catch (err) {
|
|
426
|
-
failRef(String(err && err.message || err), callback);
|
|
427
|
-
}
|
|
428
|
-
|
|
429
439
|
let flowResult;
|
|
430
440
|
try {
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
sourceDef,
|
|
435
|
-
extra,
|
|
436
|
-
inRef,
|
|
437
|
-
outRef,
|
|
438
|
-
errRef,
|
|
439
|
-
mockDb: MOCK_DB,
|
|
440
|
-
});
|
|
441
|
+
const resolved = await resolveAndExecuteSourceFlow(sourceDef, extra, { inRef, outRef, errRef });
|
|
442
|
+
kind = resolved.kind;
|
|
443
|
+
flowResult = resolved.flowResult;
|
|
441
444
|
} catch (err) {
|
|
442
445
|
const detail = (err && (err.stderr || err.stdout)) ? `\n${err.stderr || err.stdout}`.trimEnd() : '';
|
|
443
|
-
failRef(
|
|
446
|
+
failRef(`source invocation failed: ${String(err && err.message || err)}${detail}`, callback);
|
|
444
447
|
}
|
|
445
448
|
|
|
446
449
|
if (!flowResult?.wroteOutputDirectly) {
|
|
@@ -462,6 +465,46 @@ async function runSourceFetchSubcommand(argv) {
|
|
|
462
465
|
|
|
463
466
|
}
|
|
464
467
|
|
|
468
|
+
async function probeSourcePreflightSubcommand(argv) {
|
|
469
|
+
const extraIdx = argv.indexOf('--extra');
|
|
470
|
+
const extraB64 = extraIdx !== -1 ? argv[extraIdx + 1] : undefined;
|
|
471
|
+
|
|
472
|
+
let extra = {};
|
|
473
|
+
if (extraB64) {
|
|
474
|
+
try { extra = JSON.parse(Buffer.from(extraB64, 'base64').toString('utf-8')); }
|
|
475
|
+
catch { /* ignore malformed extra */ }
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
const startedAt = Date.now();
|
|
479
|
+
try {
|
|
480
|
+
const chunks = [];
|
|
481
|
+
for await (const chunk of process.stdin) {
|
|
482
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
483
|
+
}
|
|
484
|
+
const raw = Buffer.concat(chunks).toString('utf-8').trim();
|
|
485
|
+
if (!raw) {
|
|
486
|
+
console.log(JSON.stringify({ ok: false, reachable: false, latencyMs: Date.now() - startedAt, error: 'Missing probe input JSON on stdin' }));
|
|
487
|
+
process.exit(0);
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
let sourceDef;
|
|
491
|
+
try {
|
|
492
|
+
sourceDef = JSON.parse(raw);
|
|
493
|
+
} catch (err) {
|
|
494
|
+
console.log(JSON.stringify({ ok: false, reachable: false, latencyMs: Date.now() - startedAt, error: `Invalid probe JSON: ${String(err && err.message || err)}` }));
|
|
495
|
+
process.exit(0);
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
await resolveAndExecuteSourceFlow(sourceDef, extra);
|
|
499
|
+
console.log(JSON.stringify({ ok: true, reachable: true, latencyMs: Date.now() - startedAt }));
|
|
500
|
+
process.exit(0);
|
|
501
|
+
} catch (err) {
|
|
502
|
+
const detail = (err && (err.stderr || err.stdout)) ? `\n${err.stderr || err.stdout}`.trimEnd() : '';
|
|
503
|
+
console.log(JSON.stringify({ ok: false, reachable: false, latencyMs: Date.now() - startedAt, error: `source invocation failed: ${String(err && err.message || err)}${detail}` }));
|
|
504
|
+
process.exit(0);
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
|
|
465
508
|
// ---------------------------------------------------------------------------
|
|
466
509
|
// validate-source-def — structural validation of a source definition
|
|
467
510
|
// ---------------------------------------------------------------------------
|
|
@@ -547,7 +590,7 @@ function validateSourceDefSubcommand(argv) {
|
|
|
547
590
|
const CAPABILITIES = {
|
|
548
591
|
version: '1.0',
|
|
549
592
|
executor: 'demo-task-executor',
|
|
550
|
-
subcommands: ['run-source-fetch', 'describe-capabilities', 'validate-source-def'],
|
|
593
|
+
subcommands: ['run-source-fetch', 'probe-source-preflight', 'describe-capabilities', 'validate-source-def'],
|
|
551
594
|
sourceKinds: {
|
|
552
595
|
mock: {
|
|
553
596
|
description: 'Look up a key in a hardcoded MOCK_DB dictionary.',
|
|
@@ -658,6 +701,10 @@ async function main() {
|
|
|
658
701
|
await runSourceFetchSubcommand(process.argv.slice(3));
|
|
659
702
|
return;
|
|
660
703
|
}
|
|
704
|
+
if (sub === 'probe-source-preflight') {
|
|
705
|
+
await probeSourcePreflightSubcommand(process.argv.slice(3));
|
|
706
|
+
return;
|
|
707
|
+
}
|
|
661
708
|
if (sub === 'describe' || sub === 'describe-capabilities') {
|
|
662
709
|
describeCapabilities();
|
|
663
710
|
return;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "card-source-kinds",
|
|
3
|
+
"meta": {
|
|
4
|
+
"title": "Source Connection Types",
|
|
5
|
+
"tags": ["admin"],
|
|
6
|
+
"desc": "Reference card listing the source def kinds supported by the demo task executor.",
|
|
7
|
+
"_gandalfCard": true
|
|
8
|
+
},
|
|
9
|
+
"provides": [],
|
|
10
|
+
"compute": [],
|
|
11
|
+
"view": {
|
|
12
|
+
"elements": [
|
|
13
|
+
{
|
|
14
|
+
"kind": "table",
|
|
15
|
+
"label": "Supported connection types",
|
|
16
|
+
"data": {
|
|
17
|
+
"bind": "card_data.kinds",
|
|
18
|
+
"columns": ["kind", "description"]
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"layout": {
|
|
23
|
+
"board": { "col": 4, "order": 99 },
|
|
24
|
+
"canvas": { "x": 900, "y": 50, "w": 480, "h": 240 }
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"card_data": {
|
|
28
|
+
"kinds": [
|
|
29
|
+
{ "kind": "mock", "description": "Look up a key in the built-in MOCK_DB dictionary and return static JSON." },
|
|
30
|
+
{ "kind": "copilot", "description": "Invoke GitHub Copilot CLI using copilot.prompt_template (or top-level prompt_template shorthand) with {{key}} interpolation from _projections and args." },
|
|
31
|
+
{ "kind": "workiq", "description": "Invoke WorkIQ (Microsoft 365 Copilot) using workiq.query_template with {{key}} interpolation. Requires workiq CLI + az login." },
|
|
32
|
+
{ "kind": "url", "description": "Single URL fetch via curl with {{key}} interpolation from _projections. Supports method, headers, args, tickersFrom, and cacheTimeout (seconds)." },
|
|
33
|
+
{ "kind": "url-list", "description": "Fan-out fetch over _projections.url_list (string[]), returning an array of raw JSON responses. Supports method, headers, and cacheTimeout." }
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "card-source-kinds",
|
|
3
|
+
"meta": {
|
|
4
|
+
"title": "Source Connection Types",
|
|
5
|
+
"tags": [
|
|
6
|
+
"admin"
|
|
7
|
+
],
|
|
8
|
+
"desc": "Reference card listing the source def kinds supported by the demo task executor.",
|
|
9
|
+
"_gandalfCard": true
|
|
10
|
+
},
|
|
11
|
+
"provides": [],
|
|
12
|
+
"compute": [],
|
|
13
|
+
"view": {
|
|
14
|
+
"elements": [
|
|
15
|
+
{
|
|
16
|
+
"kind": "table",
|
|
17
|
+
"label": "Supported connection types",
|
|
18
|
+
"data": {
|
|
19
|
+
"bind": "card_data.kinds",
|
|
20
|
+
"columns": [
|
|
21
|
+
"kind",
|
|
22
|
+
"description"
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"layout": {
|
|
28
|
+
"board": {
|
|
29
|
+
"col": 4,
|
|
30
|
+
"order": 99
|
|
31
|
+
},
|
|
32
|
+
"canvas": {
|
|
33
|
+
"x": 900,
|
|
34
|
+
"y": 50,
|
|
35
|
+
"w": 480,
|
|
36
|
+
"h": 240
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"card_data": {
|
|
41
|
+
"kinds": [
|
|
42
|
+
{
|
|
43
|
+
"kind": "mock",
|
|
44
|
+
"description": "Look up a key in the built-in MOCK_DB dictionary and return static JSON."
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"kind": "copilot",
|
|
48
|
+
"description": "Invoke GitHub Copilot CLI using copilot.prompt_template (or top-level prompt_template shorthand) with {{key}} interpolation from _projections and args."
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"kind": "workiq",
|
|
52
|
+
"description": "Invoke WorkIQ (Microsoft 365 Copilot) using workiq.query_template with {{key}} interpolation. Requires workiq CLI + az login."
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"kind": "url",
|
|
56
|
+
"description": "Single URL fetch via curl with {{key}} interpolation from _projections. Supports method, headers, args, tickersFrom, and cacheTimeout (seconds)."
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"kind": "url-list",
|
|
60
|
+
"description": "Fan-out fetch over _projections.url_list (string[]), returning an array of raw JSON responses. Supports method, headers, and cacheTimeout."
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "demo-source-copilot",
|
|
3
|
+
"settings": {
|
|
4
|
+
"start_step": "execute",
|
|
5
|
+
"max_total_steps": 8,
|
|
6
|
+
"timeout_ms": 180000
|
|
7
|
+
},
|
|
8
|
+
"steps": {
|
|
9
|
+
"execute": {
|
|
10
|
+
"description": "Execute copilot source def",
|
|
11
|
+
"handler": {
|
|
12
|
+
"type": "ref",
|
|
13
|
+
"howToRun": "demo-local-module",
|
|
14
|
+
"whatToRun": { "kind": "fs-path", "value": "./source-def-handlers/copilot-source-handler.js" }
|
|
15
|
+
},
|
|
16
|
+
"transitions": {
|
|
17
|
+
"success": "completed",
|
|
18
|
+
"failure": "failed"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"terminal_states": {
|
|
23
|
+
"completed": {
|
|
24
|
+
"description": "Copilot source succeeded",
|
|
25
|
+
"return_intent": "success",
|
|
26
|
+
"return_artifacts": ["resultValue", "wroteOutputDirectly"]
|
|
27
|
+
},
|
|
28
|
+
"failed": {
|
|
29
|
+
"description": "Copilot source failed",
|
|
30
|
+
"return_intent": "failure"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "demo-source-mock",
|
|
3
|
+
"settings": {
|
|
4
|
+
"start_step": "execute",
|
|
5
|
+
"max_total_steps": 5,
|
|
6
|
+
"timeout_ms": 30000
|
|
7
|
+
},
|
|
8
|
+
"steps": {
|
|
9
|
+
"execute": {
|
|
10
|
+
"description": "Execute mock source def",
|
|
11
|
+
"handler": {
|
|
12
|
+
"type": "compute-jsonata",
|
|
13
|
+
"expr": [
|
|
14
|
+
"data.resultValue = $lookup(expects_data.mockDb, expects_data.sourceDef.mock)",
|
|
15
|
+
"result = $exists(data.resultValue) ? \"success\" : \"failure\""
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"transitions": {
|
|
19
|
+
"success": "completed",
|
|
20
|
+
"failure": "failed"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"terminal_states": {
|
|
25
|
+
"completed": {
|
|
26
|
+
"description": "Mock lookup succeeded",
|
|
27
|
+
"return_intent": "success",
|
|
28
|
+
"return_artifacts": ["resultValue", "wroteOutputDirectly"]
|
|
29
|
+
},
|
|
30
|
+
"failed": {
|
|
31
|
+
"description": "Mock lookup failed",
|
|
32
|
+
"return_intent": "failure"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "demo-source-url-list",
|
|
3
|
+
"settings": {
|
|
4
|
+
"start_step": "execute",
|
|
5
|
+
"max_total_steps": 10,
|
|
6
|
+
"timeout_ms": 60000
|
|
7
|
+
},
|
|
8
|
+
"steps": {
|
|
9
|
+
"execute": {
|
|
10
|
+
"description": "Execute URL list source def",
|
|
11
|
+
"handler": {
|
|
12
|
+
"type": "ref",
|
|
13
|
+
"howToRun": "demo-local-module",
|
|
14
|
+
"whatToRun": { "kind": "fs-path", "value": "./source-def-handlers/http-source-handler.js" }
|
|
15
|
+
},
|
|
16
|
+
"transitions": {
|
|
17
|
+
"success": "completed",
|
|
18
|
+
"failure": "failed"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"terminal_states": {
|
|
23
|
+
"completed": {
|
|
24
|
+
"description": "URL list fetch succeeded",
|
|
25
|
+
"return_intent": "success",
|
|
26
|
+
"return_artifacts": ["resultValue", "wroteOutputDirectly"]
|
|
27
|
+
},
|
|
28
|
+
"failed": {
|
|
29
|
+
"description": "URL list fetch failed",
|
|
30
|
+
"return_intent": "failure"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "demo-source-url",
|
|
3
|
+
"settings": {
|
|
4
|
+
"start_step": "execute",
|
|
5
|
+
"max_total_steps": 10,
|
|
6
|
+
"timeout_ms": 60000
|
|
7
|
+
},
|
|
8
|
+
"steps": {
|
|
9
|
+
"execute": {
|
|
10
|
+
"description": "Execute single URL source def",
|
|
11
|
+
"handler": {
|
|
12
|
+
"type": "ref",
|
|
13
|
+
"howToRun": "demo-local-module",
|
|
14
|
+
"whatToRun": { "kind": "fs-path", "value": "./source-def-handlers/http-source-handler.js" }
|
|
15
|
+
},
|
|
16
|
+
"transitions": {
|
|
17
|
+
"success": "completed",
|
|
18
|
+
"failure": "failed"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"terminal_states": {
|
|
23
|
+
"completed": {
|
|
24
|
+
"description": "URL fetch succeeded",
|
|
25
|
+
"return_intent": "success",
|
|
26
|
+
"return_artifacts": ["resultValue", "wroteOutputDirectly"]
|
|
27
|
+
},
|
|
28
|
+
"failed": {
|
|
29
|
+
"description": "URL fetch failed",
|
|
30
|
+
"return_intent": "failure"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "demo-source-workiq",
|
|
3
|
+
"settings": {
|
|
4
|
+
"start_step": "execute",
|
|
5
|
+
"max_total_steps": 8,
|
|
6
|
+
"timeout_ms": 120000
|
|
7
|
+
},
|
|
8
|
+
"steps": {
|
|
9
|
+
"execute": {
|
|
10
|
+
"description": "Execute workiq source def via demo-server HTTP proxy",
|
|
11
|
+
"handler": {
|
|
12
|
+
"type": "ref",
|
|
13
|
+
"howToRun": "http:post",
|
|
14
|
+
"whatToRun": { "kind": "http-url", "value": "/api/workiq/ask" }
|
|
15
|
+
},
|
|
16
|
+
"transitions": {
|
|
17
|
+
"success": "completed",
|
|
18
|
+
"failure": "failed"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"terminal_states": {
|
|
23
|
+
"completed": {
|
|
24
|
+
"description": "WorkIQ source succeeded",
|
|
25
|
+
"return_intent": "success",
|
|
26
|
+
"return_artifacts": ["resultValue", "wroteOutputDirectly"]
|
|
27
|
+
},
|
|
28
|
+
"failed": {
|
|
29
|
+
"description": "WorkIQ source failed",
|
|
30
|
+
"return_intent": "failure",
|
|
31
|
+
"return_artifacts": ["error"]
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|