@openclaw/lobster 2026.9.5 → 2026.9.6
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/node_modules/@clawdbot/lobster/README.md +20 -133
- package/node_modules/@clawdbot/lobster/VISION.md +15 -238
- package/node_modules/@clawdbot/lobster/bin/clawd.invoke.js +2 -21
- package/node_modules/@clawdbot/lobster/bin/invoke.js +19 -0
- package/node_modules/@clawdbot/lobster/bin/lobster.js +2 -21
- package/node_modules/@clawdbot/lobster/bin/openclaw.invoke.js +2 -24
- package/node_modules/@clawdbot/lobster/dist/src/cli.js +32 -48
- package/node_modules/@clawdbot/lobster/dist/src/cli.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/command_tokens.js +81 -0
- package/node_modules/@clawdbot/lobster/dist/src/command_tokens.js.map +1 -0
- package/node_modules/@clawdbot/lobster/dist/src/commands/stdlib/dedupe.js +1 -12
- package/node_modules/@clawdbot/lobster/dist/src/commands/stdlib/dedupe.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/commands/stdlib/group_by.js +2 -14
- package/node_modules/@clawdbot/lobster/dist/src/commands/stdlib/group_by.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/commands/stdlib/llm_invoke.js +1 -337
- package/node_modules/@clawdbot/lobster/dist/src/commands/stdlib/llm_invoke.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/commands/stdlib/map.js +2 -13
- package/node_modules/@clawdbot/lobster/dist/src/commands/stdlib/map.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/commands/stdlib/sort.js +4 -21
- package/node_modules/@clawdbot/lobster/dist/src/commands/stdlib/sort.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/commands/stdlib/state.js +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/commands/stdlib/state.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/commands/stdlib/template.js +2 -13
- package/node_modules/@clawdbot/lobster/dist/src/commands/stdlib/template.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/commands/workflows/workflows_run.js +0 -18
- package/node_modules/@clawdbot/lobster/dist/src/commands/workflows/workflows_run.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/core/llm_accounting.js +304 -0
- package/node_modules/@clawdbot/lobster/dist/src/core/llm_accounting.js.map +1 -0
- package/node_modules/@clawdbot/lobster/dist/src/core/value_path.js +11 -0
- package/node_modules/@clawdbot/lobster/dist/src/core/value_path.js.map +1 -0
- package/node_modules/@clawdbot/lobster/dist/src/parser.js +2 -67
- package/node_modules/@clawdbot/lobster/dist/src/parser.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/recipes/github/index.js +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/recipes/github/pr-monitor.js +5 -64
- package/node_modules/@clawdbot/lobster/dist/src/recipes/github/pr-monitor.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/recipes/github/read_pr.js +45 -0
- package/node_modules/@clawdbot/lobster/dist/src/recipes/github/read_pr.js.map +1 -0
- package/node_modules/@clawdbot/lobster/dist/src/recipes/github/snapshot.js +45 -0
- package/node_modules/@clawdbot/lobster/dist/src/recipes/github/snapshot.js.map +1 -0
- package/node_modules/@clawdbot/lobster/dist/src/recipes/github/stages/pr-view.js +9 -47
- package/node_modules/@clawdbot/lobster/dist/src/recipes/github/stages/pr-view.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/sdk/Lobster.js +18 -135
- package/node_modules/@clawdbot/lobster/dist/src/sdk/Lobster.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/sdk/index.js +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/sdk/primitives/approve.js +1 -2
- package/node_modules/@clawdbot/lobster/dist/src/sdk/primitives/approve.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/sdk/primitives/diff.js +2 -8
- package/node_modules/@clawdbot/lobster/dist/src/sdk/primitives/diff.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/sdk/primitives/exec.js +15 -81
- package/node_modules/@clawdbot/lobster/dist/src/sdk/primitives/exec.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/sdk/primitives/state.js +3 -9
- package/node_modules/@clawdbot/lobster/dist/src/sdk/primitives/state.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/sdk/runtime.js +0 -12
- package/node_modules/@clawdbot/lobster/dist/src/sdk/runtime.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/sdk/state_env.js +6 -0
- package/node_modules/@clawdbot/lobster/dist/src/sdk/state_env.js.map +1 -0
- package/node_modules/@clawdbot/lobster/dist/src/state/atomic_file.js +192 -0
- package/node_modules/@clawdbot/lobster/dist/src/state/atomic_file.js.map +1 -0
- package/node_modules/@clawdbot/lobster/dist/src/state/store.js +2 -188
- package/node_modules/@clawdbot/lobster/dist/src/state/store.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/workflows/dry_run.js +262 -0
- package/node_modules/@clawdbot/lobster/dist/src/workflows/dry_run.js.map +1 -0
- package/node_modules/@clawdbot/lobster/dist/src/workflows/expressions.js +345 -0
- package/node_modules/@clawdbot/lobster/dist/src/workflows/expressions.js.map +1 -0
- package/node_modules/@clawdbot/lobster/dist/src/workflows/file.js +21 -1036
- package/node_modules/@clawdbot/lobster/dist/src/workflows/file.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/workflows/github_pr_monitor.js +8 -77
- package/node_modules/@clawdbot/lobster/dist/src/workflows/github_pr_monitor.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/workflows/graph.js +1 -7
- package/node_modules/@clawdbot/lobster/dist/src/workflows/graph.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/src/workflows/load.js +347 -0
- package/node_modules/@clawdbot/lobster/dist/src/workflows/load.js.map +1 -0
- package/node_modules/@clawdbot/lobster/dist/src/workflows/types.js +2 -0
- package/node_modules/@clawdbot/lobster/dist/src/workflows/types.js.map +1 -0
- package/node_modules/@clawdbot/lobster/dist/src/workflows/values.js +93 -0
- package/node_modules/@clawdbot/lobster/dist/src/workflows/values.js.map +1 -0
- package/node_modules/@clawdbot/lobster/dist/test/cancellation.test.js +1 -0
- package/node_modules/@clawdbot/lobster/dist/test/cancellation.test.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/test/cli_run_errors.test.js +53 -0
- package/node_modules/@clawdbot/lobster/dist/test/cli_run_errors.test.js.map +1 -0
- package/node_modules/@clawdbot/lobster/dist/test/command_arguments.test.js +82 -0
- package/node_modules/@clawdbot/lobster/dist/test/command_arguments.test.js.map +1 -0
- package/node_modules/@clawdbot/lobster/dist/test/cost_tracker.test.js +49 -19
- package/node_modules/@clawdbot/lobster/dist/test/cost_tracker.test.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/test/helpers/node_shell_fixture.js +17 -0
- package/node_modules/@clawdbot/lobster/dist/test/helpers/node_shell_fixture.js.map +1 -0
- package/node_modules/@clawdbot/lobster/dist/test/llm_invoke.test.js +2 -0
- package/node_modules/@clawdbot/lobster/dist/test/llm_invoke.test.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/test/pipeline_resume_state.test.js +65 -0
- package/node_modules/@clawdbot/lobster/dist/test/pipeline_resume_state.test.js.map +1 -0
- package/node_modules/@clawdbot/lobster/dist/test/process_output_limit.test.js +5 -3
- package/node_modules/@clawdbot/lobster/dist/test/process_output_limit.test.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/test/sdk_exec.test.js +72 -25
- package/node_modules/@clawdbot/lobster/dist/test/sdk_exec.test.js.map +1 -1
- package/node_modules/@clawdbot/lobster/dist/test/workflow_graph.test.js +1 -1
- package/node_modules/@clawdbot/lobster/dist/test/workflow_graph.test.js.map +1 -1
- package/node_modules/@clawdbot/lobster/package.json +6 -8
- package/package.json +5 -5
- package/node_modules/@clawdbot/lobster/dist/src/sdk/token.js +0 -9
- package/node_modules/@clawdbot/lobster/dist/src/sdk/token.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/workflows/graph.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/workflows/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAwBvD,SAAS,cAAc,CAAC,IAAkB;IACzC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACtF,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtF,OAAO,IAAI,CAAC;IACb,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,IAAkB;IACtC,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,QAAQ,CAAC,IAAkB;IACnC,IAAI,IAAI,CAAC,QAAQ;QAAE,OAAO,UAAU,CAAC;IACrC,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC;IACzD,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,UAAU,CAAC;IACjF,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,UAAU,CAAC;IACjF,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACnF,IAAI,cAAc,CAAC,IAAI,CAAC;QAAE,OAAO,UAAU,CAAC;IAC5C,IAAI,WAAW,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IACtC,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,IAAkB,EAAE,IAA6B;IACrE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,aAAa,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC;IACpD,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,aAAa,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;IAChE,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/D,OAAO,aAAa,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;IAChE,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/D,OAAO,aAAa,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;IAChE,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACrE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,OAAO,QAAQ,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;IACnD,CAAC;IACD,IAAI,cAAc,CAAC,IAAI,CAAC;QAAE,OAAO,eAAe,CAAC;IACjD,IAAI,WAAW,CAAC,IAAI,CAAC;QAAE,OAAO,eAAe,CAAC;IAC9C,OAAO,EAAE,CAAC;AACX,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAa;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,EAAE,GAAG,wDAAwD,CAAC;IACpE,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACvE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC,EAAE,CAAC;YACjE,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,EAAE,CAAC;AACX,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,GAAG,GAAG,EAAE;IACxC,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;AACtC,CAAC;AAED,SAAS,YAAY,CAAC,QAAsB,EAAE,IAA6B;IAC1E,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9D,IAAI,UAAU,GAAkB,IAAI,CAAC;IAErC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,MAAM,OAAO,GAAG,CAAC,IAAe,EAAE,EAAE;QACnC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QAC1D,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAClC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,KAAK,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI;YACJ,KAAK;YACL,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;SAC/C,CAAC,CAAC;QAEH,IAAI,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;QAErB,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACvC,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClD,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YACnF,CAAC;QACF,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC;QAC9C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YACvD,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7D,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9C,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YACnF,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAU;IACpC,OAAO,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACxC,MAAM,QAAQ,GAAG;QAChB,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,QAAQ;QACb,GAAG,EAAE,MAAM;QACX,GAAG,EAAE,MAAM;QACX,GAAG,EAAE,QAAQ;KACJ,CAAC;IACX,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAkC,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,aAAa,CAAC,KAAkB,EAAE,KAAkB;IAC5D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC;QAC/C,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,GAAG,GAAG,KAAK,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,GAAG,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,CAAC,IAAI,CAAC,CAAC;QACR,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,cAAc,CAAC,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC;QAChC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC;QACpC,CAAC;IACF,CAAC;IACD,IAAI,KAAK,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;YAAE,SAAS;QAC3B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,SAAS,CAAC,KAAkB,EAAE,KAAkB;IACxD,MAAM,KAAK,GAAG,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;IACtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,KAAK,WAAW,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,KAAK,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CACT,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAC5F,CAAC;QACH,CAAC;aAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC;IACF,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,WAAW,CAAC,KAAkB,EAAE,KAAkB;IAC1D,MAAM,KAAK,GAAG,CAAC,gBAAgB,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CACT,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAC3G,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAqB;IACrF,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtD,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrD,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzD,OAAO,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
import { promises as fsp } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { parse as parseYaml } from "yaml";
|
|
4
|
+
import { compileCached } from "../validation.js";
|
|
5
|
+
export async function loadWorkflowFile(filePath) {
|
|
6
|
+
const text = await fsp.readFile(filePath, "utf8");
|
|
7
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
8
|
+
const parsed = ext === ".json" ? JSON.parse(text) : parseYaml(text);
|
|
9
|
+
if (!parsed || typeof parsed !== "object") {
|
|
10
|
+
throw new Error("Workflow file must be a JSON/YAML object");
|
|
11
|
+
}
|
|
12
|
+
const steps = parsed.steps;
|
|
13
|
+
if (!Array.isArray(steps) || steps.length === 0) {
|
|
14
|
+
throw new Error("Workflow file requires a non-empty steps array");
|
|
15
|
+
}
|
|
16
|
+
const costLimit = parsed.cost_limit;
|
|
17
|
+
if (costLimit !== undefined) {
|
|
18
|
+
if (!costLimit || typeof costLimit !== "object" || Array.isArray(costLimit)) {
|
|
19
|
+
throw new Error("Workflow cost_limit must be an object");
|
|
20
|
+
}
|
|
21
|
+
if (!Number.isFinite(Number(costLimit.max_usd)) || Number(costLimit.max_usd) < 0) {
|
|
22
|
+
throw new Error("Workflow cost_limit.max_usd must be a non-negative number");
|
|
23
|
+
}
|
|
24
|
+
if (costLimit.action !== undefined &&
|
|
25
|
+
costLimit.action !== "warn" &&
|
|
26
|
+
costLimit.action !== "stop") {
|
|
27
|
+
throw new Error('Workflow cost_limit.action must be "warn" or "stop"');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const seen = new Set();
|
|
31
|
+
for (const step of steps) {
|
|
32
|
+
if (!step || typeof step !== "object") {
|
|
33
|
+
throw new Error("Workflow step must be an object");
|
|
34
|
+
}
|
|
35
|
+
if (!step.id || typeof step.id !== "string") {
|
|
36
|
+
throw new Error("Workflow step requires an id");
|
|
37
|
+
}
|
|
38
|
+
if (step.workflow !== undefined && typeof step.workflow !== "string") {
|
|
39
|
+
throw new Error(`Workflow step ${step.id} workflow must be a string (file path)`);
|
|
40
|
+
}
|
|
41
|
+
if (typeof step.workflow === "string" && !step.workflow.trim()) {
|
|
42
|
+
throw new Error(`Workflow step ${step.id} workflow path cannot be blank`);
|
|
43
|
+
}
|
|
44
|
+
if (step.workflow_args !== undefined) {
|
|
45
|
+
if (!step.workflow_args ||
|
|
46
|
+
typeof step.workflow_args !== "object" ||
|
|
47
|
+
Array.isArray(step.workflow_args)) {
|
|
48
|
+
throw new Error(`Workflow step ${step.id} workflow_args must be a plain object`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (step.parallel !== undefined &&
|
|
52
|
+
(!step.parallel || typeof step.parallel !== "object" || Array.isArray(step.parallel))) {
|
|
53
|
+
throw new Error(`Workflow step ${step.id} parallel must be an object`);
|
|
54
|
+
}
|
|
55
|
+
const isParallel = Boolean(step.parallel && typeof step.parallel === "object" && !Array.isArray(step.parallel));
|
|
56
|
+
if (isParallel) {
|
|
57
|
+
const parallel = step.parallel;
|
|
58
|
+
if (!Array.isArray(parallel.branches) || parallel.branches.length === 0) {
|
|
59
|
+
throw new Error(`Workflow step ${step.id} parallel requires a non-empty branches array`);
|
|
60
|
+
}
|
|
61
|
+
if (parallel.wait !== undefined && parallel.wait !== "all" && parallel.wait !== "any") {
|
|
62
|
+
throw new Error(`Workflow step ${step.id} parallel wait must be "all" or "any"`);
|
|
63
|
+
}
|
|
64
|
+
if (parallel.timeout_ms !== undefined &&
|
|
65
|
+
(typeof parallel.timeout_ms !== "number" ||
|
|
66
|
+
!Number.isFinite(parallel.timeout_ms) ||
|
|
67
|
+
!Number.isInteger(parallel.timeout_ms) ||
|
|
68
|
+
parallel.timeout_ms < 1 ||
|
|
69
|
+
parallel.timeout_ms > 2_147_483_647)) {
|
|
70
|
+
throw new Error(`Workflow step ${step.id} parallel timeout_ms must be a positive integer between 1 and 2147483647`);
|
|
71
|
+
}
|
|
72
|
+
const branchIds = new Set();
|
|
73
|
+
for (const branch of parallel.branches) {
|
|
74
|
+
if (!branch || typeof branch !== "object") {
|
|
75
|
+
throw new Error(`Workflow step ${step.id} parallel branches must be objects`);
|
|
76
|
+
}
|
|
77
|
+
if (!branch.id || typeof branch.id !== "string") {
|
|
78
|
+
throw new Error(`Workflow step ${step.id} parallel branch requires an id`);
|
|
79
|
+
}
|
|
80
|
+
if (branch.id === step.id) {
|
|
81
|
+
throw new Error(`Workflow step ${step.id} parallel branch id cannot match the step id`);
|
|
82
|
+
}
|
|
83
|
+
if (branchIds.has(branch.id)) {
|
|
84
|
+
throw new Error(`Workflow step ${step.id} duplicate parallel branch id: ${branch.id}`);
|
|
85
|
+
}
|
|
86
|
+
if (seen.has(branch.id)) {
|
|
87
|
+
throw new Error(`Duplicate workflow id across steps/parallel branches: ${branch.id}`);
|
|
88
|
+
}
|
|
89
|
+
branchIds.add(branch.id);
|
|
90
|
+
const branchShell = typeof branch.run === "string" ? branch.run : branch.command;
|
|
91
|
+
const branchPipeline = typeof branch.pipeline === "string" ? branch.pipeline : undefined;
|
|
92
|
+
const branchExecCount = Number(Boolean(branchShell)) + Number(Boolean(branchPipeline));
|
|
93
|
+
if (branchExecCount === 0) {
|
|
94
|
+
throw new Error(`Workflow step ${step.id} parallel branch ${branch.id} requires run, command, or pipeline`);
|
|
95
|
+
}
|
|
96
|
+
if (branchExecCount > 1) {
|
|
97
|
+
throw new Error(`Workflow step ${step.id} parallel branch ${branch.id} can only define one of run, command, or pipeline`);
|
|
98
|
+
}
|
|
99
|
+
if (branch.run !== undefined && typeof branch.run !== "string") {
|
|
100
|
+
throw new Error(`Workflow step ${step.id} parallel branch ${branch.id} run must be a string`);
|
|
101
|
+
}
|
|
102
|
+
if (branch.command !== undefined && typeof branch.command !== "string") {
|
|
103
|
+
throw new Error(`Workflow step ${step.id} parallel branch ${branch.id} command must be a string`);
|
|
104
|
+
}
|
|
105
|
+
if (branch.pipeline !== undefined && typeof branch.pipeline !== "string") {
|
|
106
|
+
throw new Error(`Workflow step ${step.id} parallel branch ${branch.id} pipeline must be a string`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (step.for_each !== undefined && typeof step.for_each !== "string") {
|
|
111
|
+
throw new Error(`Workflow step ${step.id} for_each must be a string (step reference expression)`);
|
|
112
|
+
}
|
|
113
|
+
const isForEach = typeof step.for_each === "string";
|
|
114
|
+
if (isForEach) {
|
|
115
|
+
if (!Array.isArray(step.steps) || step.steps.length === 0) {
|
|
116
|
+
throw new Error(`Workflow step ${step.id} for_each requires a non-empty steps array`);
|
|
117
|
+
}
|
|
118
|
+
if (step.batch_size !== undefined &&
|
|
119
|
+
(typeof step.batch_size !== "number" ||
|
|
120
|
+
!Number.isInteger(step.batch_size) ||
|
|
121
|
+
step.batch_size < 1)) {
|
|
122
|
+
throw new Error(`Workflow step ${step.id} batch_size must be a positive integer`);
|
|
123
|
+
}
|
|
124
|
+
if (step.pause_ms !== undefined &&
|
|
125
|
+
(typeof step.pause_ms !== "number" || !Number.isFinite(step.pause_ms) || step.pause_ms < 0)) {
|
|
126
|
+
throw new Error(`Workflow step ${step.id} pause_ms must be a finite non-negative number`);
|
|
127
|
+
}
|
|
128
|
+
if (isApprovalStep(step.approval)) {
|
|
129
|
+
throw new Error(`Workflow step ${step.id} for_each steps cannot define approval (use a separate step after the loop)`);
|
|
130
|
+
}
|
|
131
|
+
if (isInputStep(step.input)) {
|
|
132
|
+
throw new Error(`Workflow step ${step.id} for_each steps cannot define input (use a separate step after the loop)`);
|
|
133
|
+
}
|
|
134
|
+
if (step.stdin !== undefined && step.stdin !== null) {
|
|
135
|
+
throw new Error(`Workflow step ${step.id} for_each steps cannot define stdin (loop input comes from the for_each expression)`);
|
|
136
|
+
}
|
|
137
|
+
const loopShell = typeof step.run === "string" ? step.run : step.command;
|
|
138
|
+
const loopPipeline = typeof step.pipeline === "string" ? step.pipeline : undefined;
|
|
139
|
+
if (loopShell || loopPipeline || step.workflow || step.parallel) {
|
|
140
|
+
throw new Error(`Workflow step ${step.id} for_each cannot also define run, command, pipeline, workflow, or parallel`);
|
|
141
|
+
}
|
|
142
|
+
if (step.item_var !== undefined && typeof step.item_var !== "string") {
|
|
143
|
+
throw new Error(`Workflow step ${step.id} item_var must be a string`);
|
|
144
|
+
}
|
|
145
|
+
if (step.index_var !== undefined && typeof step.index_var !== "string") {
|
|
146
|
+
throw new Error(`Workflow step ${step.id} index_var must be a string`);
|
|
147
|
+
}
|
|
148
|
+
const loopItemVar = step.item_var ?? "item";
|
|
149
|
+
const loopIndexVar = step.index_var ?? "index";
|
|
150
|
+
if (loopItemVar === loopIndexVar) {
|
|
151
|
+
throw new Error(`Workflow step ${step.id} item_var and index_var cannot be the same`);
|
|
152
|
+
}
|
|
153
|
+
const subStepIds = new Set();
|
|
154
|
+
for (const sub of step.steps) {
|
|
155
|
+
if (!sub || typeof sub !== "object" || !sub.id || typeof sub.id !== "string") {
|
|
156
|
+
throw new Error(`Workflow step ${step.id} for_each sub-step requires an id`);
|
|
157
|
+
}
|
|
158
|
+
if (sub.id === loopItemVar || sub.id === loopIndexVar) {
|
|
159
|
+
throw new Error(`Workflow step ${step.id} for_each sub-step id '${sub.id}' conflicts with loop variable`);
|
|
160
|
+
}
|
|
161
|
+
if (subStepIds.has(sub.id)) {
|
|
162
|
+
throw new Error(`Workflow step ${step.id} duplicate for_each sub-step id: ${sub.id}`);
|
|
163
|
+
}
|
|
164
|
+
subStepIds.add(sub.id);
|
|
165
|
+
if (isApprovalStep(sub.approval) || isInputStep(sub.input)) {
|
|
166
|
+
throw new Error(`Workflow step ${step.id} for_each sub-steps cannot contain approval or input steps`);
|
|
167
|
+
}
|
|
168
|
+
if (sub.run !== undefined && typeof sub.run !== "string") {
|
|
169
|
+
throw new Error(`Workflow step ${step.id} for_each sub-step ${sub.id} run must be a string`);
|
|
170
|
+
}
|
|
171
|
+
if (sub.command !== undefined && typeof sub.command !== "string") {
|
|
172
|
+
throw new Error(`Workflow step ${step.id} for_each sub-step ${sub.id} command must be a string`);
|
|
173
|
+
}
|
|
174
|
+
if (sub.pipeline !== undefined && typeof sub.pipeline !== "string") {
|
|
175
|
+
throw new Error(`Workflow step ${step.id} for_each sub-step ${sub.id} pipeline must be a string`);
|
|
176
|
+
}
|
|
177
|
+
if (sub.workflow || sub.parallel || sub.for_each) {
|
|
178
|
+
throw new Error(`Workflow step ${step.id} for_each sub-step ${sub.id} cannot define workflow, parallel, or for_each`);
|
|
179
|
+
}
|
|
180
|
+
const subShell = typeof sub.run === "string" && sub.run.trim()
|
|
181
|
+
? sub.run
|
|
182
|
+
: typeof sub.command === "string" && sub.command.trim()
|
|
183
|
+
? sub.command
|
|
184
|
+
: undefined;
|
|
185
|
+
const subPipeline = typeof sub.pipeline === "string" && sub.pipeline.trim() ? sub.pipeline : undefined;
|
|
186
|
+
if (!subShell && !subPipeline) {
|
|
187
|
+
throw new Error(`Workflow step ${step.id} for_each sub-step ${sub.id} requires run, command, or pipeline`);
|
|
188
|
+
}
|
|
189
|
+
if (Number(Boolean(subShell)) + Number(Boolean(subPipeline)) > 1) {
|
|
190
|
+
throw new Error(`Workflow step ${step.id} for_each sub-step ${sub.id} can only define one of run, command, or pipeline`);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
const shellCommand = typeof step.run === "string" ? step.run : step.command;
|
|
195
|
+
const pipeline = typeof step.pipeline === "string" ? step.pipeline : undefined;
|
|
196
|
+
const workflowRef = typeof step.workflow === "string" && step.workflow.trim() ? step.workflow : undefined;
|
|
197
|
+
const executionCount = Number(Boolean(shellCommand)) +
|
|
198
|
+
Number(Boolean(pipeline)) +
|
|
199
|
+
Number(Boolean(workflowRef)) +
|
|
200
|
+
Number(isParallel) +
|
|
201
|
+
Number(isForEach);
|
|
202
|
+
if (executionCount === 0 && !isApprovalStep(step.approval) && !isInputStep(step.input)) {
|
|
203
|
+
throw new Error(`Workflow step ${step.id} requires run, command, pipeline, workflow, parallel, for_each, approval, or input`);
|
|
204
|
+
}
|
|
205
|
+
if (executionCount > 1) {
|
|
206
|
+
throw new Error(`Workflow step ${step.id} can only define one of run, command, pipeline, workflow, parallel, or for_each`);
|
|
207
|
+
}
|
|
208
|
+
if (executionCount > 0 && isInputStep(step.input)) {
|
|
209
|
+
throw new Error(`Workflow step ${step.id} input steps cannot define run, command, pipeline, workflow, parallel, or for_each`);
|
|
210
|
+
}
|
|
211
|
+
if (isApprovalStep(step.approval) && isInputStep(step.input)) {
|
|
212
|
+
throw new Error(`Workflow step ${step.id} cannot define both approval and input`);
|
|
213
|
+
}
|
|
214
|
+
if (step.run !== undefined && typeof step.run !== "string") {
|
|
215
|
+
throw new Error(`Workflow step ${step.id} run must be a string`);
|
|
216
|
+
}
|
|
217
|
+
if (step.command !== undefined && typeof step.command !== "string") {
|
|
218
|
+
throw new Error(`Workflow step ${step.id} command must be a string`);
|
|
219
|
+
}
|
|
220
|
+
if (step.pipeline !== undefined && typeof step.pipeline !== "string") {
|
|
221
|
+
throw new Error(`Workflow step ${step.id} pipeline must be a string`);
|
|
222
|
+
}
|
|
223
|
+
if (step.input !== undefined && !isInputStep(step.input)) {
|
|
224
|
+
throw new Error(`Workflow step ${step.id} input must be an object`);
|
|
225
|
+
}
|
|
226
|
+
if (step.input && typeof step.input.prompt !== "string") {
|
|
227
|
+
throw new Error(`Workflow step ${step.id} input.prompt must be a string`);
|
|
228
|
+
}
|
|
229
|
+
if (step.input &&
|
|
230
|
+
(step.input.responseSchema === undefined || typeof step.input.responseSchema !== "object")) {
|
|
231
|
+
throw new Error(`Workflow step ${step.id} input.responseSchema must be an object`);
|
|
232
|
+
}
|
|
233
|
+
if (step.input) {
|
|
234
|
+
try {
|
|
235
|
+
compileCached(step.input.responseSchema);
|
|
236
|
+
}
|
|
237
|
+
catch (err) {
|
|
238
|
+
throw new Error(`Workflow step ${step.id} input.responseSchema is invalid: ${err?.message ?? String(err)}`);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
if (step.approval && typeof step.approval === "object" && !Array.isArray(step.approval)) {
|
|
242
|
+
const approval = step.approval;
|
|
243
|
+
if (approval.initiated_by !== undefined && typeof approval.initiated_by !== "string") {
|
|
244
|
+
throw new Error(`Workflow step ${step.id} approval.initiated_by must be a string`);
|
|
245
|
+
}
|
|
246
|
+
if (approval.initiatedBy !== undefined && typeof approval.initiatedBy !== "string") {
|
|
247
|
+
throw new Error(`Workflow step ${step.id} approval.initiatedBy must be a string`);
|
|
248
|
+
}
|
|
249
|
+
if (approval.required_approver !== undefined &&
|
|
250
|
+
typeof approval.required_approver !== "string") {
|
|
251
|
+
throw new Error(`Workflow step ${step.id} approval.required_approver must be a string`);
|
|
252
|
+
}
|
|
253
|
+
if (approval.requiredApprover !== undefined &&
|
|
254
|
+
typeof approval.requiredApprover !== "string") {
|
|
255
|
+
throw new Error(`Workflow step ${step.id} approval.requiredApprover must be a string`);
|
|
256
|
+
}
|
|
257
|
+
if (approval.require_different_approver !== undefined &&
|
|
258
|
+
typeof approval.require_different_approver !== "boolean") {
|
|
259
|
+
throw new Error(`Workflow step ${step.id} approval.require_different_approver must be a boolean`);
|
|
260
|
+
}
|
|
261
|
+
if (approval.requireDifferentApprover !== undefined &&
|
|
262
|
+
typeof approval.requireDifferentApprover !== "boolean") {
|
|
263
|
+
throw new Error(`Workflow step ${step.id} approval.requireDifferentApprover must be a boolean`);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
if (step.timeout_ms !== undefined &&
|
|
267
|
+
(typeof step.timeout_ms !== "number" ||
|
|
268
|
+
!Number.isFinite(step.timeout_ms) ||
|
|
269
|
+
!Number.isInteger(step.timeout_ms) ||
|
|
270
|
+
step.timeout_ms < 1 ||
|
|
271
|
+
step.timeout_ms > 2_147_483_647)) {
|
|
272
|
+
throw new Error(`Workflow step ${step.id} timeout_ms must be a positive integer between 1 and 2147483647`);
|
|
273
|
+
}
|
|
274
|
+
if (step.on_error !== undefined &&
|
|
275
|
+
step.on_error !== "stop" &&
|
|
276
|
+
step.on_error !== "continue" &&
|
|
277
|
+
step.on_error !== "skip_rest") {
|
|
278
|
+
throw new Error(`Workflow step ${step.id} on_error must be "stop", "continue", or "skip_rest"`);
|
|
279
|
+
}
|
|
280
|
+
if (step.retry !== undefined) {
|
|
281
|
+
if (!step.retry || typeof step.retry !== "object" || Array.isArray(step.retry)) {
|
|
282
|
+
throw new Error(`Workflow step ${step.id} retry must be an object`);
|
|
283
|
+
}
|
|
284
|
+
const r = step.retry;
|
|
285
|
+
if (r.max !== undefined &&
|
|
286
|
+
(typeof r.max !== "number" || !Number.isInteger(r.max) || r.max < 1)) {
|
|
287
|
+
throw new Error(`Workflow step ${step.id} retry.max must be a positive integer`);
|
|
288
|
+
}
|
|
289
|
+
if (r.backoff !== undefined && r.backoff !== "fixed" && r.backoff !== "exponential") {
|
|
290
|
+
throw new Error(`Workflow step ${step.id} retry.backoff must be "fixed" or "exponential"`);
|
|
291
|
+
}
|
|
292
|
+
if (r.delay_ms !== undefined &&
|
|
293
|
+
(typeof r.delay_ms !== "number" || !Number.isFinite(r.delay_ms) || r.delay_ms < 0)) {
|
|
294
|
+
throw new Error(`Workflow step ${step.id} retry.delay_ms must be a finite non-negative number`);
|
|
295
|
+
}
|
|
296
|
+
if (r.max_delay_ms !== undefined &&
|
|
297
|
+
(typeof r.max_delay_ms !== "number" ||
|
|
298
|
+
!Number.isFinite(r.max_delay_ms) ||
|
|
299
|
+
r.max_delay_ms < 0)) {
|
|
300
|
+
throw new Error(`Workflow step ${step.id} retry.max_delay_ms must be a finite non-negative number`);
|
|
301
|
+
}
|
|
302
|
+
if (r.jitter !== undefined && typeof r.jitter !== "boolean") {
|
|
303
|
+
throw new Error(`Workflow step ${step.id} retry.jitter must be a boolean`);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
if (seen.has(step.id)) {
|
|
307
|
+
throw new Error(`Duplicate workflow step id: ${step.id}`);
|
|
308
|
+
}
|
|
309
|
+
if (isParallel) {
|
|
310
|
+
const parallel = step.parallel;
|
|
311
|
+
for (const branch of parallel.branches) {
|
|
312
|
+
seen.add(branch.id);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
seen.add(step.id);
|
|
316
|
+
}
|
|
317
|
+
return parsed;
|
|
318
|
+
}
|
|
319
|
+
export function isApprovalStep(approval) {
|
|
320
|
+
if (approval === true)
|
|
321
|
+
return true;
|
|
322
|
+
if (typeof approval === "string" && approval.trim().length > 0)
|
|
323
|
+
return true;
|
|
324
|
+
if (approval && typeof approval === "object" && !Array.isArray(approval))
|
|
325
|
+
return true;
|
|
326
|
+
return false;
|
|
327
|
+
}
|
|
328
|
+
export function isInputStep(input) {
|
|
329
|
+
return Boolean(input && typeof input === "object" && !Array.isArray(input));
|
|
330
|
+
}
|
|
331
|
+
export function getStepExecution(step) {
|
|
332
|
+
if (step.parallel && typeof step.parallel === "object" && !Array.isArray(step.parallel)) {
|
|
333
|
+
return { kind: "parallel", value: step.parallel };
|
|
334
|
+
}
|
|
335
|
+
if (typeof step.workflow === "string" && step.workflow.trim()) {
|
|
336
|
+
return { kind: "workflow", value: step.workflow };
|
|
337
|
+
}
|
|
338
|
+
if (typeof step.pipeline === "string" && step.pipeline.trim()) {
|
|
339
|
+
return { kind: "pipeline", value: step.pipeline };
|
|
340
|
+
}
|
|
341
|
+
const shellCommand = typeof step.run === "string" ? step.run : step.command;
|
|
342
|
+
if (typeof shellCommand === "string" && shellCommand.trim()) {
|
|
343
|
+
return { kind: "shell", value: shellCommand };
|
|
344
|
+
}
|
|
345
|
+
return { kind: "none" };
|
|
346
|
+
}
|
|
347
|
+
//# sourceMappingURL=load.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../../src/workflows/load.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/workflows/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { resolveArgsTemplate, resolveTemplate, parseStepRef, getStepRefValue, } from "./expressions.js";
|
|
2
|
+
export function createRecord(source) {
|
|
3
|
+
const record = Object.create(null);
|
|
4
|
+
if (!source)
|
|
5
|
+
return record;
|
|
6
|
+
for (const [key, value] of Object.entries(source))
|
|
7
|
+
record[key] = value;
|
|
8
|
+
return record;
|
|
9
|
+
}
|
|
10
|
+
export function mergeEnv(base, workflowEnv, stepEnv, args, results) {
|
|
11
|
+
const env = createRecord(base);
|
|
12
|
+
// Expose resolved args as env vars so shell commands can safely reference them
|
|
13
|
+
// without embedding raw values into the command string.
|
|
14
|
+
// Example: $LOBSTER_ARG_TEXT
|
|
15
|
+
env.LOBSTER_ARGS_JSON = JSON.stringify(args ?? {});
|
|
16
|
+
for (const [key, value] of Object.entries(args ?? {})) {
|
|
17
|
+
const normalized = normalizeArgEnvKey(key);
|
|
18
|
+
if (!normalized)
|
|
19
|
+
continue;
|
|
20
|
+
env[`LOBSTER_ARG_${normalized}`] = String(value);
|
|
21
|
+
}
|
|
22
|
+
const apply = (source) => {
|
|
23
|
+
if (!source)
|
|
24
|
+
return;
|
|
25
|
+
for (const [key, value] of Object.entries(source)) {
|
|
26
|
+
if (typeof value === "string") {
|
|
27
|
+
env[key] = resolveTemplate(value, args, results);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
// Allow explicit env blocks to override injected defaults.
|
|
32
|
+
apply(workflowEnv);
|
|
33
|
+
apply(stepEnv);
|
|
34
|
+
return env;
|
|
35
|
+
}
|
|
36
|
+
function normalizeArgEnvKey(key) {
|
|
37
|
+
const trimmed = String(key ?? "").trim();
|
|
38
|
+
if (!trimmed)
|
|
39
|
+
return null;
|
|
40
|
+
// Keep it predictable for shells: uppercase and [A-Z0-9_]
|
|
41
|
+
const up = trimmed.toUpperCase();
|
|
42
|
+
let normalized = up.replace(/[^A-Z0-9]+/g, "_");
|
|
43
|
+
let start = 0;
|
|
44
|
+
while (normalized[start] === "_")
|
|
45
|
+
start++;
|
|
46
|
+
let end = normalized.length;
|
|
47
|
+
while (end > start && normalized[end - 1] === "_")
|
|
48
|
+
end--;
|
|
49
|
+
normalized = normalized.slice(start, end);
|
|
50
|
+
return normalized || null;
|
|
51
|
+
}
|
|
52
|
+
export function resolveCwd(cwd, args) {
|
|
53
|
+
if (!cwd)
|
|
54
|
+
return undefined;
|
|
55
|
+
return resolveArgsTemplate(cwd, args);
|
|
56
|
+
}
|
|
57
|
+
export function resolveInputValue(stdin, args, results) {
|
|
58
|
+
if (stdin === null || stdin === undefined)
|
|
59
|
+
return null;
|
|
60
|
+
if (typeof stdin === "string") {
|
|
61
|
+
const ref = parseStepRef(stdin.trim());
|
|
62
|
+
if (ref)
|
|
63
|
+
return getStepRefValue(ref, results, true);
|
|
64
|
+
return resolveTemplate(stdin, args, results);
|
|
65
|
+
}
|
|
66
|
+
return stdin;
|
|
67
|
+
}
|
|
68
|
+
export function resolveShellStdin(stdin, args, results) {
|
|
69
|
+
const value = resolveInputValue(stdin, args, results);
|
|
70
|
+
return encodeShellInput(value);
|
|
71
|
+
}
|
|
72
|
+
export function resolveWorkflowStepArgs(workflowArgs, parentArgs, results) {
|
|
73
|
+
if (!workflowArgs)
|
|
74
|
+
return createRecord();
|
|
75
|
+
const resolved = createRecord();
|
|
76
|
+
for (const [key, value] of Object.entries(workflowArgs)) {
|
|
77
|
+
if (typeof value === "string") {
|
|
78
|
+
resolved[key] = resolveTemplate(value, parentArgs, results);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
resolved[key] = value;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return resolved;
|
|
85
|
+
}
|
|
86
|
+
export function encodeShellInput(value) {
|
|
87
|
+
if (value === null || value === undefined)
|
|
88
|
+
return null;
|
|
89
|
+
if (typeof value === "string")
|
|
90
|
+
return value;
|
|
91
|
+
return JSON.stringify(value);
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.js","sourceRoot":"","sources":["../../../src/workflows/values.ts"],"names":[],"mappings":"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"}
|
|
@@ -2047,6 +2047,7 @@ test("a permanently stalled native lazy generator does not block cancellation",
|
|
|
2047
2047
|
name: "test.native-lazy-output",
|
|
2048
2048
|
async run() {
|
|
2049
2049
|
return {
|
|
2050
|
+
// oxlint-disable-next-line require-yield -- A native generator stalled before its first item.
|
|
2050
2051
|
output: (async function* () {
|
|
2051
2052
|
try {
|
|
2052
2053
|
readStarted();
|