@relayflows/sdk 2.0.9 → 2.0.10
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/dist/adapters/base.d.ts +46 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +15 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/claude.d.ts +5 -0
- package/dist/adapters/claude.d.ts.map +1 -0
- package/dist/adapters/claude.js +44 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/codex.d.ts +5 -0
- package/dist/adapters/codex.d.ts.map +1 -0
- package/dist/adapters/codex.js +45 -0
- package/dist/adapters/codex.js.map +1 -0
- package/dist/adapters/index.d.ts +14 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +29 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/wrapper.d.ts +12 -0
- package/dist/adapters/wrapper.d.ts.map +1 -0
- package/dist/adapters/wrapper.js +31 -0
- package/dist/adapters/wrapper.js.map +1 -0
- package/dist/agent-relay-transport.d.ts +84 -0
- package/dist/agent-relay-transport.d.ts.map +1 -0
- package/dist/agent-relay-transport.js +134 -0
- package/dist/agent-relay-transport.js.map +1 -0
- package/dist/authored-budget.d.ts +13 -0
- package/dist/authored-budget.d.ts.map +1 -0
- package/dist/authored-budget.js +78 -0
- package/dist/authored-budget.js.map +1 -0
- package/dist/authored-flow-error.d.ts +2 -21
- package/dist/authored-flow-error.d.ts.map +1 -1
- package/dist/authored-flow-error.js +1 -12
- package/dist/authored-flow-error.js.map +1 -1
- package/dist/authored-flow-executor.d.ts +13 -7
- package/dist/authored-flow-executor.d.ts.map +1 -1
- package/dist/authored-flow-executor.js +116 -235
- package/dist/authored-flow-executor.js.map +1 -1
- package/dist/authored-flow-loader.d.ts +10 -1
- package/dist/authored-flow-loader.d.ts.map +1 -1
- package/dist/authored-flow-loader.js +56 -3
- package/dist/authored-flow-loader.js.map +1 -1
- package/dist/authored-flow-operation.d.ts +9 -1
- package/dist/authored-flow-operation.d.ts.map +1 -1
- package/dist/authored-flow-operation.js +35 -4
- package/dist/authored-flow-operation.js.map +1 -1
- package/dist/authored-helper-effect.d.ts +12 -0
- package/dist/authored-helper-effect.d.ts.map +1 -0
- package/dist/authored-helper-effect.js +144 -0
- package/dist/authored-helper-effect.js.map +1 -0
- package/dist/authored-mcp.d.ts +17 -0
- package/dist/authored-mcp.d.ts.map +1 -0
- package/dist/authored-mcp.js +171 -0
- package/dist/authored-mcp.js.map +1 -0
- package/dist/authored-memory.d.ts +7 -0
- package/dist/authored-memory.d.ts.map +1 -0
- package/dist/authored-memory.js +60 -0
- package/dist/authored-memory.js.map +1 -0
- package/dist/authored-plugin-effect.d.ts +16 -0
- package/dist/authored-plugin-effect.d.ts.map +1 -0
- package/dist/authored-plugin-effect.js +163 -0
- package/dist/authored-plugin-effect.js.map +1 -0
- package/dist/authored-step-output.d.ts +23 -0
- package/dist/authored-step-output.d.ts.map +1 -0
- package/dist/authored-step-output.js +67 -0
- package/dist/authored-step-output.js.map +1 -0
- package/dist/authored-worker-step.d.ts +15 -0
- package/dist/authored-worker-step.d.ts.map +1 -0
- package/dist/authored-worker-step.js +136 -0
- package/dist/authored-worker-step.js.map +1 -0
- package/dist/budget-preflight.d.ts +5 -0
- package/dist/budget-preflight.d.ts.map +1 -0
- package/dist/budget-preflight.js +33 -0
- package/dist/budget-preflight.js.map +1 -0
- package/dist/budget.d.ts +14 -0
- package/dist/budget.d.ts.map +1 -0
- package/dist/budget.js +52 -0
- package/dist/budget.js.map +1 -0
- package/dist/bundle-transport.d.ts +18 -0
- package/dist/bundle-transport.d.ts.map +1 -0
- package/dist/bundle-transport.js +111 -0
- package/dist/bundle-transport.js.map +1 -0
- package/dist/bundle-typescript.d.ts +8 -0
- package/dist/bundle-typescript.d.ts.map +1 -0
- package/dist/bundle-typescript.js +108 -0
- package/dist/bundle-typescript.js.map +1 -0
- package/dist/bundle.d.ts +25 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +199 -0
- package/dist/bundle.js.map +1 -0
- package/dist/child-stop.d.ts +59 -0
- package/dist/child-stop.d.ts.map +1 -0
- package/dist/child-stop.js +94 -0
- package/dist/child-stop.js.map +1 -0
- package/dist/cli/add.d.ts +6 -0
- package/dist/cli/add.d.ts.map +1 -0
- package/dist/cli/add.js +47 -0
- package/dist/cli/add.js.map +1 -0
- package/dist/cli/build.d.ts +13 -0
- package/dist/cli/build.d.ts.map +1 -0
- package/dist/cli/build.js +224 -0
- package/dist/cli/build.js.map +1 -0
- package/dist/cli/bundle-preflight.d.ts +5 -0
- package/dist/cli/bundle-preflight.d.ts.map +1 -0
- package/dist/cli/bundle-preflight.js +28 -0
- package/dist/cli/bundle-preflight.js.map +1 -0
- package/dist/cli/check-helper-body.d.ts +4 -0
- package/dist/cli/check-helper-body.d.ts.map +1 -0
- package/dist/cli/check-helper-body.js +15 -0
- package/dist/cli/check-helper-body.js.map +1 -0
- package/dist/cli/check-triggers.d.ts +14 -0
- package/dist/cli/check-triggers.d.ts.map +1 -0
- package/dist/cli/check-triggers.js +37 -0
- package/dist/cli/check-triggers.js.map +1 -0
- package/dist/cli/check-typescript.d.ts +20 -0
- package/dist/cli/check-typescript.d.ts.map +1 -0
- package/dist/cli/check-typescript.js +54 -0
- package/dist/cli/check-typescript.js.map +1 -0
- package/dist/cli/check.d.ts +36 -3
- package/dist/cli/check.d.ts.map +1 -1
- package/dist/cli/check.js +122 -11
- package/dist/cli/check.js.map +1 -1
- package/dist/cli/cloud-run.d.ts +8 -0
- package/dist/cli/cloud-run.d.ts.map +1 -0
- package/dist/cli/cloud-run.js +50 -0
- package/dist/cli/cloud-run.js.map +1 -0
- package/dist/cli/deploy.d.ts +9 -0
- package/dist/cli/deploy.d.ts.map +1 -0
- package/dist/cli/deploy.js +58 -0
- package/dist/cli/deploy.js.map +1 -0
- package/dist/cli/deterministic-failure.d.ts +5 -0
- package/dist/cli/deterministic-failure.d.ts.map +1 -0
- package/dist/cli/deterministic-failure.js +66 -0
- package/dist/cli/deterministic-failure.js.map +1 -0
- package/dist/cli/direct-run.d.ts.map +1 -1
- package/dist/cli/direct-run.js +83 -18
- package/dist/cli/direct-run.js.map +1 -1
- package/dist/cli/hn-monitor.d.ts.map +1 -1
- package/dist/cli/hn-monitor.js +2 -1
- package/dist/cli/hn-monitor.js.map +1 -1
- package/dist/cli/replay.d.ts +12 -0
- package/dist/cli/replay.d.ts.map +1 -0
- package/dist/cli/replay.js +82 -0
- package/dist/cli/replay.js.map +1 -0
- package/dist/cli/reuse.d.ts +8 -0
- package/dist/cli/reuse.d.ts.map +1 -0
- package/dist/cli/reuse.js +25 -0
- package/dist/cli/reuse.js.map +1 -0
- package/dist/cli/run-digest.d.ts +4 -0
- package/dist/cli/run-digest.d.ts.map +1 -0
- package/dist/cli/run-digest.js +24 -0
- package/dist/cli/run-digest.js.map +1 -0
- package/dist/cli/run.d.ts +16 -5
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +99 -17
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/serve-webhook.d.ts +40 -0
- package/dist/cli/serve-webhook.d.ts.map +1 -0
- package/dist/cli/serve-webhook.js +233 -0
- package/dist/cli/serve-webhook.js.map +1 -0
- package/dist/cli/tick-runner.d.ts.map +1 -1
- package/dist/cli/tick-runner.js +2 -1
- package/dist/cli/tick-runner.js.map +1 -1
- package/dist/cli-adapter.d.ts +8 -14
- package/dist/cli-adapter.d.ts.map +1 -1
- package/dist/cli-adapter.js +19 -64
- package/dist/cli-adapter.js.map +1 -1
- package/dist/cli-watch.d.ts +13 -0
- package/dist/cli-watch.d.ts.map +1 -0
- package/dist/cli-watch.js +185 -0
- package/dist/cli-watch.js.map +1 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +387 -14
- package/dist/cli.js.map +1 -1
- package/dist/cloud-http.d.ts +22 -0
- package/dist/cloud-http.d.ts.map +1 -0
- package/dist/cloud-http.js +84 -0
- package/dist/cloud-http.js.map +1 -0
- package/dist/cloud-run.d.ts +38 -0
- package/dist/cloud-run.d.ts.map +1 -0
- package/dist/cloud-run.js +112 -0
- package/dist/cloud-run.js.map +1 -0
- package/dist/compile.d.ts +21 -3
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +97 -23
- package/dist/compile.js.map +1 -1
- package/dist/create-flow.d.ts +17 -0
- package/dist/create-flow.d.ts.map +1 -0
- package/dist/create-flow.js +72 -0
- package/dist/create-flow.js.map +1 -0
- package/dist/daemon-connection.d.ts +14 -0
- package/dist/daemon-connection.d.ts.map +1 -1
- package/dist/daemon-connection.js +33 -1
- package/dist/daemon-connection.js.map +1 -1
- package/dist/demo-hn-monitor.js +2 -1
- package/dist/demo-hn-monitor.js.map +1 -1
- package/dist/effect-channel.d.ts +30 -0
- package/dist/effect-channel.d.ts.map +1 -0
- package/dist/effect-channel.js +71 -0
- package/dist/effect-channel.js.map +1 -0
- package/dist/failure-kinds.d.ts +14 -3
- package/dist/failure-kinds.d.ts.map +1 -1
- package/dist/failure-kinds.js +27 -0
- package/dist/failure-kinds.js.map +1 -1
- package/dist/gate-contract.d.ts.map +1 -1
- package/dist/gate-contract.js +9 -0
- package/dist/gate-contract.js.map +1 -1
- package/dist/helper-preflight.d.ts +18 -0
- package/dist/helper-preflight.d.ts.map +1 -0
- package/dist/helper-preflight.js +32 -0
- package/dist/helper-preflight.js.map +1 -0
- package/dist/helper-storage.d.ts +5 -0
- package/dist/helper-storage.d.ts.map +1 -0
- package/dist/helper-storage.js +31 -0
- package/dist/helper-storage.js.map +1 -0
- package/dist/helper-writeback.d.ts +12 -0
- package/dist/helper-writeback.d.ts.map +1 -0
- package/dist/helper-writeback.js +95 -0
- package/dist/helper-writeback.js.map +1 -0
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/input-binding.d.ts +4 -0
- package/dist/input-binding.d.ts.map +1 -0
- package/dist/input-binding.js +78 -0
- package/dist/input-binding.js.map +1 -0
- package/dist/journal-client.d.ts +12 -4
- package/dist/journal-client.d.ts.map +1 -1
- package/dist/journal-client.js +17 -6
- package/dist/journal-client.js.map +1 -1
- package/dist/journal-offset.d.ts +3 -0
- package/dist/journal-offset.d.ts.map +1 -0
- package/dist/journal-offset.js +69 -0
- package/dist/journal-offset.js.map +1 -0
- package/dist/journal-reader.d.ts +30 -0
- package/dist/journal-reader.d.ts.map +1 -0
- package/dist/journal-reader.js +156 -0
- package/dist/journal-reader.js.map +1 -0
- package/dist/json-schema.d.ts +2 -0
- package/dist/json-schema.d.ts.map +1 -1
- package/dist/json-schema.js +38 -22
- package/dist/json-schema.js.map +1 -1
- package/dist/llm-worker.d.ts +16 -0
- package/dist/llm-worker.d.ts.map +1 -0
- package/dist/llm-worker.js +79 -0
- package/dist/llm-worker.js.map +1 -0
- package/dist/local-agent.d.ts +8 -0
- package/dist/local-agent.d.ts.map +1 -0
- package/dist/local-agent.js +25 -0
- package/dist/local-agent.js.map +1 -0
- package/dist/mcp-client.d.ts +15 -0
- package/dist/mcp-client.d.ts.map +1 -0
- package/dist/mcp-client.js +104 -0
- package/dist/mcp-client.js.map +1 -0
- package/dist/mcp-config.d.ts +4 -0
- package/dist/mcp-config.d.ts.map +1 -0
- package/dist/mcp-config.js +61 -0
- package/dist/mcp-config.js.map +1 -0
- package/dist/mcp-stdio.d.ts +24 -0
- package/dist/mcp-stdio.d.ts.map +1 -0
- package/dist/mcp-stdio.js +89 -0
- package/dist/mcp-stdio.js.map +1 -0
- package/dist/model-pricing.d.ts +22 -0
- package/dist/model-pricing.d.ts.map +1 -0
- package/dist/model-pricing.js +30 -0
- package/dist/model-pricing.js.map +1 -0
- package/dist/mount-registry.d.ts +9 -0
- package/dist/mount-registry.d.ts.map +1 -0
- package/dist/mount-registry.js +47 -0
- package/dist/mount-registry.js.map +1 -0
- package/dist/named-gate-lowering.d.ts +9 -0
- package/dist/named-gate-lowering.d.ts.map +1 -0
- package/dist/named-gate-lowering.js +152 -0
- package/dist/named-gate-lowering.js.map +1 -0
- package/dist/named-gates.d.ts +10 -0
- package/dist/named-gates.d.ts.map +1 -0
- package/dist/named-gates.js +69 -0
- package/dist/named-gates.js.map +1 -0
- package/dist/observer-link.d.ts +129 -0
- package/dist/observer-link.d.ts.map +1 -0
- package/dist/observer-link.js +274 -0
- package/dist/observer-link.js.map +1 -0
- package/dist/plugin-loader.d.ts +13 -0
- package/dist/plugin-loader.d.ts.map +1 -0
- package/dist/plugin-loader.js +110 -0
- package/dist/plugin-loader.js.map +1 -0
- package/dist/plugin-manifest.d.ts +27 -0
- package/dist/plugin-manifest.d.ts.map +1 -0
- package/dist/plugin-manifest.js +89 -0
- package/dist/plugin-manifest.js.map +1 -0
- package/dist/preflight.d.ts +26 -2
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +175 -1
- package/dist/preflight.js.map +1 -1
- package/dist/progress.d.ts +14 -0
- package/dist/progress.d.ts.map +1 -0
- package/dist/progress.js +39 -0
- package/dist/progress.js.map +1 -0
- package/dist/protocol.d.ts +11 -0
- package/dist/protocol.d.ts.map +1 -1
- package/dist/pty-sidechannel.d.ts +14 -0
- package/dist/pty-sidechannel.d.ts.map +1 -0
- package/dist/pty-sidechannel.js +103 -0
- package/dist/pty-sidechannel.js.map +1 -0
- package/dist/scope-compiler.d.ts +52 -0
- package/dist/scope-compiler.d.ts.map +1 -0
- package/dist/scope-compiler.js +62 -0
- package/dist/scope-compiler.js.map +1 -0
- package/dist/slack-preflight.d.ts +6 -0
- package/dist/slack-preflight.d.ts.map +1 -0
- package/dist/slack-preflight.js +28 -0
- package/dist/slack-preflight.js.map +1 -0
- package/dist/slack-writeback.d.ts +40 -0
- package/dist/slack-writeback.d.ts.map +1 -0
- package/dist/slack-writeback.js +60 -0
- package/dist/slack-writeback.js.map +1 -0
- package/dist/spec.d.ts +134 -4
- package/dist/spec.d.ts.map +1 -1
- package/dist/spec.js.map +1 -1
- package/dist/step-dependencies.d.ts.map +1 -1
- package/dist/step-dependencies.js +2 -1
- package/dist/step-dependencies.js.map +1 -1
- package/dist/step-fields.d.ts +4 -4
- package/dist/step-fields.d.ts.map +1 -1
- package/dist/step-fields.js +5 -2
- package/dist/step-fields.js.map +1 -1
- package/dist/trigger-executor.d.ts +7 -0
- package/dist/trigger-executor.d.ts.map +1 -0
- package/dist/trigger-executor.js +35 -0
- package/dist/trigger-executor.js.map +1 -0
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +53 -6
- package/dist/validate.js.map +1 -1
- package/dist/webhook-rate-limit.d.ts +29 -0
- package/dist/webhook-rate-limit.d.ts.map +1 -0
- package/dist/webhook-rate-limit.js +38 -0
- package/dist/webhook-rate-limit.js.map +1 -0
- package/dist/webhook-signature.d.ts +22 -0
- package/dist/webhook-signature.d.ts.map +1 -0
- package/dist/webhook-signature.js +53 -0
- package/dist/webhook-signature.js.map +1 -0
- package/dist/worker-cli.d.ts +13 -1
- package/dist/worker-cli.d.ts.map +1 -1
- package/dist/worker-cli.js +133 -12
- package/dist/worker-cli.js.map +1 -1
- package/dist/worker-input.d.ts +4 -0
- package/dist/worker-input.d.ts.map +1 -0
- package/dist/worker-input.js +14 -0
- package/dist/worker-input.js.map +1 -0
- package/dist/worker-lease.d.ts +5 -0
- package/dist/worker-lease.d.ts.map +1 -0
- package/dist/worker-lease.js +80 -0
- package/dist/worker-lease.js.map +1 -0
- package/dist/worker-spend.d.ts +19 -0
- package/dist/worker-spend.d.ts.map +1 -0
- package/dist/worker-spend.js +22 -0
- package/dist/worker-spend.js.map +1 -0
- package/dist/worker-usage.d.ts +7 -0
- package/dist/worker-usage.d.ts.map +1 -0
- package/dist/worker-usage.js +54 -0
- package/dist/worker-usage.js.map +1 -0
- package/dist/worker.d.ts +2 -0
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +22 -8
- package/dist/worker.js.map +1 -1
- package/dist/wrapper-session.d.ts +1 -1
- package/dist/wrapper-session.d.ts.map +1 -1
- package/dist/wrapper-session.js +56 -19
- package/dist/wrapper-session.js.map +1 -1
- package/dist/yaml-helper-effect.d.ts +8 -0
- package/dist/yaml-helper-effect.d.ts.map +1 -0
- package/dist/yaml-helper-effect.js +79 -0
- package/dist/yaml-helper-effect.js.map +1 -0
- package/dist/yaml-helpers.d.ts +18 -0
- package/dist/yaml-helpers.d.ts.map +1 -0
- package/dist/yaml-helpers.js +116 -0
- package/dist/yaml-helpers.js.map +1 -0
- package/package.json +19 -2
- package/src/adapters/base.ts +53 -0
- package/src/adapters/claude.ts +55 -0
- package/src/adapters/codex.ts +56 -0
- package/src/adapters/index.ts +36 -0
- package/src/adapters/wrapper.ts +42 -0
- package/src/agent-relay-transport.ts +187 -0
- package/src/authored-budget.ts +69 -0
- package/src/authored-flow-error.ts +10 -10
- package/src/authored-flow-executor.ts +171 -347
- package/src/authored-flow-loader.ts +60 -3
- package/src/authored-flow-operation.ts +38 -5
- package/src/authored-helper-effect.ts +143 -0
- package/src/authored-mcp.ts +166 -0
- package/src/authored-memory.ts +55 -0
- package/src/authored-plugin-effect.ts +152 -0
- package/src/authored-step-output.ts +107 -0
- package/src/authored-worker-step.ts +181 -0
- package/src/budget-preflight.ts +31 -0
- package/src/budget.ts +49 -0
- package/src/bundle-transport.ts +79 -0
- package/src/bundle-typescript.ts +98 -0
- package/src/bundle.ts +182 -0
- package/src/child-stop.ts +138 -0
- package/src/cli/add.ts +45 -0
- package/src/cli/build.ts +214 -0
- package/src/cli/bundle-preflight.ts +28 -0
- package/src/cli/check-helper-body.ts +14 -0
- package/src/cli/check-triggers.ts +41 -0
- package/src/cli/check-typescript.ts +63 -0
- package/src/cli/check.ts +132 -14
- package/src/cli/cloud-run.ts +47 -0
- package/src/cli/deploy.ts +52 -0
- package/src/cli/deterministic-failure.ts +69 -0
- package/src/cli/direct-run.ts +79 -18
- package/src/cli/hn-monitor.ts +2 -1
- package/src/cli/replay.ts +81 -0
- package/src/cli/reuse.ts +23 -0
- package/src/cli/run-digest.ts +24 -0
- package/src/cli/run.ts +104 -21
- package/src/cli/serve-webhook.ts +246 -0
- package/src/cli/tick-runner.ts +2 -1
- package/src/cli-adapter.ts +31 -74
- package/src/cli-watch.ts +174 -0
- package/src/cli.ts +396 -17
- package/src/cloud-http.ts +100 -0
- package/src/cloud-run.ts +137 -0
- package/src/compile.ts +102 -23
- package/src/create-flow.ts +82 -0
- package/src/daemon-connection.ts +32 -1
- package/src/demo-hn-monitor.ts +2 -1
- package/src/effect-channel.ts +97 -0
- package/src/failure-kinds.ts +38 -0
- package/src/gate-contract.ts +7 -0
- package/src/helper-preflight.ts +34 -0
- package/src/helper-storage.ts +23 -0
- package/src/helper-writeback.ts +83 -0
- package/src/index.ts +26 -0
- package/src/input-binding.ts +76 -0
- package/src/journal-client.ts +20 -7
- package/src/journal-offset.ts +60 -0
- package/src/journal-reader.ts +165 -0
- package/src/json-schema.ts +34 -18
- package/src/llm-worker.ts +82 -0
- package/src/local-agent.ts +30 -0
- package/src/mcp-client.ts +97 -0
- package/src/mcp-config.ts +42 -0
- package/src/mcp-stdio.ts +84 -0
- package/src/model-pricing.ts +32 -0
- package/src/mount-registry.ts +44 -0
- package/src/named-gate-lowering.ts +147 -0
- package/src/named-gates.ts +76 -0
- package/src/observer-link.ts +368 -0
- package/src/plugin-loader.ts +88 -0
- package/src/plugin-manifest.ts +76 -0
- package/src/preflight.ts +178 -4
- package/src/progress.ts +51 -0
- package/src/protocol.ts +12 -0
- package/src/pty-sidechannel.ts +92 -0
- package/src/scope-compiler.ts +105 -0
- package/src/slack-preflight.ts +25 -0
- package/src/slack-writeback.ts +63 -0
- package/src/spec.ts +112 -4
- package/src/step-dependencies.ts +3 -1
- package/src/step-fields.ts +5 -2
- package/src/trigger-executor.ts +34 -0
- package/src/validate.ts +47 -6
- package/src/webhook-rate-limit.ts +69 -0
- package/src/webhook-signature.ts +74 -0
- package/src/worker-cli.ts +156 -11
- package/src/worker-input.ts +15 -0
- package/src/worker-lease.ts +85 -0
- package/src/worker-spend.ts +23 -0
- package/src/worker-usage.ts +48 -0
- package/src/worker.ts +27 -9
- package/src/wrapper-session.ts +50 -15
- package/src/yaml-helper-effect.ts +78 -0
- package/src/yaml-helpers.ts +131 -0
package/dist/spec.d.ts
CHANGED
|
@@ -2,11 +2,29 @@ import type { JsonOutputSchema } from './output-schema.js';
|
|
|
2
2
|
export type { JsonOutputSchema } from './output-schema.js';
|
|
3
3
|
/** The three rungs of the ladder (RFC §1; AGENTS.md rule 7). */
|
|
4
4
|
export type StepType = 'deterministic' | 'llm' | 'agent';
|
|
5
|
+
/** Project-owned MCP connections. env contains names, never secret values. */
|
|
6
|
+
export type McpServerConfig = {
|
|
7
|
+
command: string;
|
|
8
|
+
args?: string[];
|
|
9
|
+
env?: string[];
|
|
10
|
+
} | {
|
|
11
|
+
url: string;
|
|
12
|
+
headers?: Record<string, string>;
|
|
13
|
+
};
|
|
14
|
+
export interface FlowsJson {
|
|
15
|
+
deploy?: {
|
|
16
|
+
bucket: string;
|
|
17
|
+
};
|
|
18
|
+
cli?: string;
|
|
19
|
+
executors?: string[];
|
|
20
|
+
models?: string[];
|
|
21
|
+
mcp?: Record<string, McpServerConfig>;
|
|
22
|
+
}
|
|
5
23
|
/**
|
|
6
24
|
* Verification is control flow, not decoration (kernel DESIGN.md §3).
|
|
7
25
|
* v0 gates are deterministic so verification is kernel-side and replayable.
|
|
8
26
|
*/
|
|
9
|
-
export type VerificationGateType = '
|
|
27
|
+
export type VerificationGateType = VerificationSpec['type'];
|
|
10
28
|
/**
|
|
11
29
|
* `exit_code == 0` — the implicit gate for deterministic steps. v0 judges
|
|
12
30
|
* exactly zero (kernel DESIGN.md §4); it is not configurable, so this gate
|
|
@@ -26,8 +44,31 @@ export interface JsonSchemaGate {
|
|
|
26
44
|
type: 'json_schema';
|
|
27
45
|
schema: boolean | Record<string, unknown>;
|
|
28
46
|
}
|
|
29
|
-
export
|
|
30
|
-
|
|
47
|
+
export interface ReferencesInputGate {
|
|
48
|
+
type: 'references_input';
|
|
49
|
+
input_key: string;
|
|
50
|
+
in_output_at?: Array<string | number>;
|
|
51
|
+
}
|
|
52
|
+
export interface SubprocessGate {
|
|
53
|
+
type: 'subprocess_gate';
|
|
54
|
+
command: string;
|
|
55
|
+
from_output?: Array<string | number>;
|
|
56
|
+
}
|
|
57
|
+
export interface WordCountBoundsGate {
|
|
58
|
+
type: 'word_count_bounds';
|
|
59
|
+
min?: number;
|
|
60
|
+
max?: number;
|
|
61
|
+
}
|
|
62
|
+
export interface RegexMatchGate {
|
|
63
|
+
type: 'regex_match';
|
|
64
|
+
pattern: string;
|
|
65
|
+
in_output_at?: Array<string | number>;
|
|
66
|
+
/** Only i, m, and s; evaluated by a non-backtracking RE2 engine. */
|
|
67
|
+
flags?: string;
|
|
68
|
+
}
|
|
69
|
+
export type NamedDataGate = ReferencesInputGate | SubprocessGate | WordCountBoundsGate | RegexMatchGate;
|
|
70
|
+
export type OutputVerificationSpec = OutputContainsGate | JsonSchemaGate | NamedDataGate;
|
|
71
|
+
export type VerificationSpec = ExitCodeGate | OutputVerificationSpec;
|
|
31
72
|
/**
|
|
32
73
|
* Agent-step recovery modes (RFC Appendix A rule 4). Default is `reset`.
|
|
33
74
|
* These recovery modes apply to agent steps; deterministic steps retry their commands.
|
|
@@ -65,6 +106,11 @@ export interface PermissionsSpec {
|
|
|
65
106
|
* are integers.
|
|
66
107
|
*/
|
|
67
108
|
export interface BudgetSpec {
|
|
109
|
+
/** Set when normalizing the surface budget header. Legacy explicit envelopes accept worker-supplied prices. */
|
|
110
|
+
pricing?: 'frozen';
|
|
111
|
+
maxTokens?: number;
|
|
112
|
+
maxWallclockMs?: number;
|
|
113
|
+
window?: 'day';
|
|
68
114
|
maxTokensIn?: number;
|
|
69
115
|
maxTokensOut?: number;
|
|
70
116
|
/** Decimal string, e.g. "1.50". */
|
|
@@ -96,6 +142,8 @@ export interface KernelPlacementRequirements extends Omit<PlacementRequirements,
|
|
|
96
142
|
}
|
|
97
143
|
/** Fields shared by every step on the ladder. */
|
|
98
144
|
export interface BaseStepSpec {
|
|
145
|
+
/** Named values selected from earlier steps' declared, verified outputs. */
|
|
146
|
+
input?: Record<string, OutputBinding>;
|
|
99
147
|
requirements?: PlacementRequirements;
|
|
100
148
|
memory?: MemorySpec;
|
|
101
149
|
/** Stable step identity; journaled as `step_id` and hashed into the idempotency key. */
|
|
@@ -106,6 +154,11 @@ export interface BaseStepSpec {
|
|
|
106
154
|
/** Semantic retry bound (kernel DESIGN.md §1.2 `max_iterations`). Default 1. */
|
|
107
155
|
maxIterations?: number;
|
|
108
156
|
}
|
|
157
|
+
export interface OutputBinding {
|
|
158
|
+
step: string;
|
|
159
|
+
/** Object keys or array indices; omit to select the whole output. */
|
|
160
|
+
path?: Array<string | number>;
|
|
161
|
+
}
|
|
109
162
|
/**
|
|
110
163
|
* Rung 1 — a pure script. Executed by the `relayflowd` binary: spawn command,
|
|
111
164
|
* capture stdout/exit code. Output = `{exit_code, stdout_tail}`. Gate-1
|
|
@@ -116,6 +169,8 @@ export interface DeterministicStepSpec extends BaseStepSpec {
|
|
|
116
169
|
command: string;
|
|
117
170
|
/** Wall-clock command timeout; worker-backed verbs own their dispatch timeout. */
|
|
118
171
|
timeoutMs?: number;
|
|
172
|
+
/** Per-invocation deterministic lease in milliseconds (maximum 15 minutes). */
|
|
173
|
+
lease_ms?: number;
|
|
119
174
|
/** Omit to get the implicit `exit_code` gate. */
|
|
120
175
|
verification?: VerificationSpec;
|
|
121
176
|
}
|
|
@@ -161,6 +216,14 @@ export interface AgentStepSpec extends BaseStepSpec {
|
|
|
161
216
|
surfaces?: AgentSurfaces;
|
|
162
217
|
recoveryMode?: RecoveryMode;
|
|
163
218
|
permissions?: PermissionsSpec;
|
|
219
|
+
/** Working directory for the CLI subprocess; defaults to the flow-runner's cwd. */
|
|
220
|
+
cwd?: string;
|
|
221
|
+
/**
|
|
222
|
+
* Dispatch transport (flows#385). `'direct'` (default) spawns the CLI as
|
|
223
|
+
* a local subprocess. `'relay'` posts to agent-relay so the agent
|
|
224
|
+
* registers as a first-class workspace participant.
|
|
225
|
+
*/
|
|
226
|
+
transport?: 'direct' | 'relay';
|
|
164
227
|
/**
|
|
165
228
|
* Structured-output authoring sugar. A successful CLI JSON object is the parsed
|
|
166
229
|
* value; the kernel persists it only after `json_schema` verification.
|
|
@@ -168,6 +231,47 @@ export interface AgentStepSpec extends BaseStepSpec {
|
|
|
168
231
|
output?: JsonOutputSchema;
|
|
169
232
|
}
|
|
170
233
|
export type StepSpec = DeterministicStepSpec | LlmStepSpec | AgentStepSpec;
|
|
234
|
+
/** YAML argument maps use the same pinned client types as the TS helpers. */
|
|
235
|
+
export interface YamlHelperParams {
|
|
236
|
+
slack: {
|
|
237
|
+
[V in import('./slack-writeback.js').SlackCall['verb']]: Extract<import('./slack-writeback.js').SlackCall, {
|
|
238
|
+
verb: V;
|
|
239
|
+
}>['params'];
|
|
240
|
+
};
|
|
241
|
+
github: {
|
|
242
|
+
comment: {
|
|
243
|
+
target: Parameters<import('@relayfile/relay-helpers').GithubClient['comment']>[0];
|
|
244
|
+
body: string;
|
|
245
|
+
};
|
|
246
|
+
createIssue: Parameters<import('@relayfile/relay-helpers').GithubClient['createIssue']>[0];
|
|
247
|
+
createPullRequest: Parameters<import('@relayfile/relay-helpers').GithubClient['createPullRequest']>[0];
|
|
248
|
+
closePullRequest: Parameters<import('@relayfile/relay-helpers').GithubClient['closePullRequest']>[0];
|
|
249
|
+
};
|
|
250
|
+
linear: {
|
|
251
|
+
comment: {
|
|
252
|
+
issueId: string;
|
|
253
|
+
body: string;
|
|
254
|
+
};
|
|
255
|
+
createIssue: Parameters<import('@relayfile/relay-helpers').LinearClient['createIssue']>[0];
|
|
256
|
+
updateIssue: {
|
|
257
|
+
issueId: string;
|
|
258
|
+
args: Parameters<import('@relayfile/relay-helpers').LinearClient['updateIssue']>[1];
|
|
259
|
+
};
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
type OneKey<T> = {
|
|
263
|
+
[K in keyof T]: Pick<T, K> & Partial<Record<Exclude<keyof T, K>, never>>;
|
|
264
|
+
}[keyof T];
|
|
265
|
+
/** Helper sugar is removed before validation of the three kernel step types. */
|
|
266
|
+
export type YamlHelperStepSpec = Pick<BaseStepSpec, 'id' | 'dependsOn' | 'maxIterations'> & {
|
|
267
|
+
verification?: OutputVerificationSpec;
|
|
268
|
+
output?: JsonOutputSchema;
|
|
269
|
+
} & OneKey<{
|
|
270
|
+
[P in keyof YamlHelperParams]: OneKey<YamlHelperParams[P]>;
|
|
271
|
+
}>;
|
|
272
|
+
export type YamlFlowSpec = Omit<FlowSpec, 'steps'> & {
|
|
273
|
+
steps: Array<StepSpec | YamlHelperStepSpec>;
|
|
274
|
+
};
|
|
171
275
|
/**
|
|
172
276
|
* Reusable authoring declaration for an agent CLI/model pair. Both fields are
|
|
173
277
|
* required so selecting a named agent can never inherit a host model. The
|
|
@@ -233,7 +337,13 @@ export interface FlowSpec {
|
|
|
233
337
|
/** Declarations checked by preflight; gate 1 never dispatches them. */
|
|
234
338
|
triggers?: TriggerSpec[];
|
|
235
339
|
steps: StepSpec[];
|
|
236
|
-
budget?: BudgetSpec;
|
|
340
|
+
budget?: BudgetSpec | import('./budget.js').HeaderBudget;
|
|
341
|
+
/** Path-scoped workspace grants — "mount/path: readonly|readwrite|append". Compiled by preflight. */
|
|
342
|
+
workspace?: string | readonly string[];
|
|
343
|
+
/** Path-scoped tool grants; `fs` mirrors workspace for shell/deterministic scope. */
|
|
344
|
+
tools?: {
|
|
345
|
+
fs?: string | readonly string[];
|
|
346
|
+
};
|
|
237
347
|
}
|
|
238
348
|
/** Current spec schema version emitted by this SDK. */
|
|
239
349
|
export declare const SPEC_SCHEMA_VERSION = "0.1.0";
|
|
@@ -253,6 +363,7 @@ export interface KernelVerificationSpec {
|
|
|
253
363
|
json_schema?: boolean | Record<string, unknown>;
|
|
254
364
|
}
|
|
255
365
|
export interface KernelStepCommon {
|
|
366
|
+
input?: Record<string, OutputBinding>;
|
|
256
367
|
requirements?: KernelPlacementRequirements;
|
|
257
368
|
memory?: KernelMemorySpec;
|
|
258
369
|
id: string;
|
|
@@ -265,6 +376,7 @@ export interface KernelDeterministicStep extends KernelStepCommon {
|
|
|
265
376
|
type: 'deterministic';
|
|
266
377
|
command: string;
|
|
267
378
|
timeout_ms?: number;
|
|
379
|
+
lease_ms?: number;
|
|
268
380
|
}
|
|
269
381
|
export interface KernelLlmStep extends KernelStepCommon {
|
|
270
382
|
type: 'llm';
|
|
@@ -294,9 +406,27 @@ export interface KernelAgentStep extends KernelStepCommon {
|
|
|
294
406
|
recovery_mode: RecoveryMode;
|
|
295
407
|
surfaces?: KernelAgentSurfaces;
|
|
296
408
|
permissions?: KernelPermissionsSpec;
|
|
409
|
+
/** Working directory for the CLI subprocess; kernel passes through untouched. */
|
|
410
|
+
cwd?: string;
|
|
411
|
+
/**
|
|
412
|
+
* Dispatch transport (flows#385). Kernel passes through untouched;
|
|
413
|
+
* the SDK worker selects between direct-spawn and agent-relay routing.
|
|
414
|
+
*/
|
|
415
|
+
transport?: 'direct' | 'relay';
|
|
297
416
|
}
|
|
298
417
|
export type KernelStepSpec = KernelDeterministicStep | KernelLlmStep | KernelAgentStep;
|
|
299
418
|
export interface KernelBudgetSpec {
|
|
419
|
+
pricing?: 'frozen';
|
|
420
|
+
prior_spend?: {
|
|
421
|
+
tokens_in: number;
|
|
422
|
+
tokens_out: number;
|
|
423
|
+
dollars: string;
|
|
424
|
+
wallclock_ms: number;
|
|
425
|
+
day?: number;
|
|
426
|
+
};
|
|
427
|
+
max_tokens?: number;
|
|
428
|
+
max_wallclock_ms?: number;
|
|
429
|
+
window?: 'day';
|
|
300
430
|
max_tokens_in?: number;
|
|
301
431
|
max_tokens_out?: number;
|
|
302
432
|
max_dollars?: string;
|
package/dist/spec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,gEAAgE;AAChE,MAAM,MAAM,QAAQ,GAAG,eAAe,GAAG,KAAK,GAAG,OAAO,CAAC;AAEzD
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
|
package/dist/spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,iEAAiE;AACjE,0EAA0E;AAC1E,qFAAqF;AACrF,kGAAkG;AAClG,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,yDAAyD;
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,iEAAiE;AACjE,0EAA0E;AAC1E,qFAAqF;AACrF,kGAAkG;AAClG,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,yDAAyD;AAsWzD,uDAAuD;AACvD,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-dependencies.d.ts","sourceRoot":"","sources":["../src/step-dependencies.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"step-dependencies.d.ts","sourceRoot":"","sources":["../src/step-dependencies.ts"],"names":[],"mappings":"AAKA,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,OAAO,EAAE,EACzB,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAC5B,MAAM,EAAE,CAsEV"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bindingDependencies } from './input-binding.js';
|
|
1
2
|
/** Return author-facing dependency errors without assuming parsed step shapes. */
|
|
2
3
|
const MAX_REPORTED_CYCLE_PATH_IDS = 16;
|
|
3
4
|
export function stepDependencyErrors(steps, knownIds) {
|
|
@@ -14,7 +15,7 @@ export function stepDependencyErrors(steps, knownIds) {
|
|
|
14
15
|
continue;
|
|
15
16
|
}
|
|
16
17
|
const id = value['id'];
|
|
17
|
-
const dependencies = (rawDependencies ?? []);
|
|
18
|
+
const dependencies = [...(rawDependencies ?? []), ...bindingDependencies(value['input'])];
|
|
18
19
|
for (const dependency of dependencies) {
|
|
19
20
|
if (!knownIds.has(dependency)) {
|
|
20
21
|
errors.push(`spec.steps: step "${id}" dependsOn unknown step "${dependency}"`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-dependencies.js","sourceRoot":"","sources":["../src/step-dependencies.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAEvC,MAAM,UAAU,oBAAoB,CAClC,KAAyB,EACzB,QAA6B;IAE7B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE9C,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,yEAAyE;QACzE,qEAAqE;QACrE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAE,SAAS;QACjE,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3C,IACE,eAAe,KAAK,SAAS;eAC1B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAChF,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,YAAY,GAAG,CAAC,eAAe,IAAI,EAAE,CAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"step-dependencies.js","sourceRoot":"","sources":["../src/step-dependencies.ts"],"names":[],"mappings":"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"}
|
package/dist/step-fields.d.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/** Closed top-level authoring schema, including named agent declarations. */
|
|
2
|
-
export declare const FLOW_FIELDS: readonly ["version", "name", "description", "cli", "agents", "triggers", "steps", "budget"];
|
|
2
|
+
export declare const FLOW_FIELDS: readonly ["version", "name", "description", "cli", "agents", "triggers", "steps", "budget", "workspace", "tools"];
|
|
3
3
|
/** Closed named-agent declaration schema. */
|
|
4
4
|
export declare const AGENT_DECLARATION_FIELDS: readonly ["cli", "model"];
|
|
5
5
|
/** Fields shared by every authoring step, regardless of its verb. */
|
|
6
|
-
export declare const STEP_COMMON_FIELDS: readonly ["id", "type", "dependsOn", "verification", "maxIterations", "memory", "requirements"];
|
|
6
|
+
export declare const STEP_COMMON_FIELDS: readonly ["id", "type", "dependsOn", "input", "verification", "maxIterations", "memory", "requirements"];
|
|
7
7
|
/**
|
|
8
8
|
* Closed verb-specific authoring schema (RFC-0001 decision 13). Validation
|
|
9
9
|
* consumes this descriptor directly so a new optional field cannot bypass the
|
|
10
10
|
* per-verb boundary through a second, drifting allowlist.
|
|
11
11
|
*/
|
|
12
12
|
export declare const STEP_FIELDS_BY_TYPE: {
|
|
13
|
-
readonly deterministic: readonly ["command", "timeoutMs"];
|
|
13
|
+
readonly deterministic: readonly ["command", "timeoutMs", "lease_ms"];
|
|
14
14
|
readonly llm: readonly ["prompt", "model", "cli", "output"];
|
|
15
|
-
readonly agent: readonly ["instruction", "agent", "cli", "model", "surfaces", "recoveryMode", "permissions", "output"];
|
|
15
|
+
readonly agent: readonly ["instruction", "agent", "cli", "model", "cwd", "transport", "surfaces", "recoveryMode", "permissions", "output"];
|
|
16
16
|
};
|
|
17
17
|
//# sourceMappingURL=step-fields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-fields.d.ts","sourceRoot":"","sources":["../src/step-fields.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"step-fields.d.ts","sourceRoot":"","sources":["../src/step-fields.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,eAAO,MAAM,WAAW,mHAWd,CAAC;AAEX,6CAA6C;AAC7C,eAAO,MAAM,wBAAwB,2BAA4B,CAAC;AAElE,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,0GASrB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;CAIwB,CAAC"}
|
package/dist/step-fields.js
CHANGED
|
@@ -8,6 +8,8 @@ export const FLOW_FIELDS = [
|
|
|
8
8
|
'triggers',
|
|
9
9
|
'steps',
|
|
10
10
|
'budget',
|
|
11
|
+
'workspace',
|
|
12
|
+
'tools',
|
|
11
13
|
];
|
|
12
14
|
/** Closed named-agent declaration schema. */
|
|
13
15
|
export const AGENT_DECLARATION_FIELDS = ['cli', 'model'];
|
|
@@ -16,6 +18,7 @@ export const STEP_COMMON_FIELDS = [
|
|
|
16
18
|
'id',
|
|
17
19
|
'type',
|
|
18
20
|
'dependsOn',
|
|
21
|
+
'input',
|
|
19
22
|
'verification',
|
|
20
23
|
'maxIterations',
|
|
21
24
|
'memory',
|
|
@@ -27,8 +30,8 @@ export const STEP_COMMON_FIELDS = [
|
|
|
27
30
|
* per-verb boundary through a second, drifting allowlist.
|
|
28
31
|
*/
|
|
29
32
|
export const STEP_FIELDS_BY_TYPE = {
|
|
30
|
-
deterministic: ['command', 'timeoutMs'],
|
|
33
|
+
deterministic: ['command', 'timeoutMs', 'lease_ms'],
|
|
31
34
|
llm: ['prompt', 'model', 'cli', 'output'],
|
|
32
|
-
agent: ['instruction', 'agent', 'cli', 'model', 'surfaces', 'recoveryMode', 'permissions', 'output'],
|
|
35
|
+
agent: ['instruction', 'agent', 'cli', 'model', 'cwd', 'transport', 'surfaces', 'recoveryMode', 'permissions', 'output'],
|
|
33
36
|
};
|
|
34
37
|
//# sourceMappingURL=step-fields.js.map
|
package/dist/step-fields.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-fields.js","sourceRoot":"","sources":["../src/step-fields.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,SAAS;IACT,MAAM;IACN,aAAa;IACb,KAAK;IACL,QAAQ;IACR,UAAU;IACV,OAAO;IACP,QAAQ;
|
|
1
|
+
{"version":3,"file":"step-fields.js","sourceRoot":"","sources":["../src/step-fields.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,SAAS;IACT,MAAM;IACN,aAAa;IACb,KAAK;IACL,QAAQ;IACR,UAAU;IACV,OAAO;IACP,QAAQ;IACR,WAAW;IACX,OAAO;CACC,CAAC;AAEX,6CAA6C;AAC7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,OAAO,CAAU,CAAC;AAElE,qEAAqE;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI;IACJ,MAAM;IACN,WAAW;IACX,OAAO;IACP,cAAc;IACd,eAAe;IACf,QAAQ;IACR,cAAc;CACN,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,aAAa,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC;IACnD,GAAG,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;IACzC,KAAK,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,CAAC;CAClE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type TriggerSource, type WebhookFilter } from '@relayflows/surface';
|
|
2
|
+
import type { TriggerSpec } from './spec.js';
|
|
3
|
+
/** Lower a surface subscription to the existing inbox executor contract. */
|
|
4
|
+
export declare function webhookTriggerSpec(id: string, source: TriggerSource): TriggerSpec;
|
|
5
|
+
/** Provider ingress uses the path as authority; it never trusts a body to reroute. */
|
|
6
|
+
export declare function providerInboxEvent(provider: string, value: unknown): WebhookFilter;
|
|
7
|
+
//# sourceMappingURL=trigger-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger-executor.d.ts","sourceRoot":"","sources":["../src/trigger-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,WAAW,CAWjF;AAED,sFAAsF;AACtF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,CAelF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { providerEventTypes, webhook } from '@relayflows/surface';
|
|
2
|
+
/** Lower a surface subscription to the existing inbox executor contract. */
|
|
3
|
+
export function webhookTriggerSpec(id, source) {
|
|
4
|
+
if (source.kind !== 'webhook')
|
|
5
|
+
throw new TypeError('unsupported trigger kind');
|
|
6
|
+
const trigger = webhook(source.name, source.filter);
|
|
7
|
+
return {
|
|
8
|
+
id,
|
|
9
|
+
executor: trigger.name,
|
|
10
|
+
eventType: trigger.name,
|
|
11
|
+
...(trigger.filter === undefined ? {} : { pattern: trigger.filter }),
|
|
12
|
+
// The inbox watcher supplies the durable file ID as the event key.
|
|
13
|
+
dedupeKeyTemplate: '{{event.type}}',
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/** Provider ingress uses the path as authority; it never trusts a body to reroute. */
|
|
17
|
+
export function providerInboxEvent(provider, value) {
|
|
18
|
+
if (!Object.hasOwn(providerEventTypes, provider))
|
|
19
|
+
throw new TypeError(`unknown provider: ${provider}`);
|
|
20
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
21
|
+
throw new TypeError('provider event must be an object');
|
|
22
|
+
}
|
|
23
|
+
const event = value;
|
|
24
|
+
const types = providerEventTypes[provider];
|
|
25
|
+
if (typeof event.type !== 'string' || !types.includes(event.type)) {
|
|
26
|
+
throw new TypeError(`unknown event type for ${provider}`);
|
|
27
|
+
}
|
|
28
|
+
if (event.provider !== undefined && event.provider !== provider)
|
|
29
|
+
throw new TypeError('provider does not match inbox');
|
|
30
|
+
if (event.payload === null || typeof event.payload !== 'object' || Array.isArray(event.payload)) {
|
|
31
|
+
throw new TypeError('provider event payload must be an object');
|
|
32
|
+
}
|
|
33
|
+
return webhook(provider, { ...event, provider }).filter;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=trigger-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger-executor.js","sourceRoot":"","sources":["../src/trigger-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAA0C,MAAM,qBAAqB,CAAC;AAG1G,4EAA4E;AAC5E,MAAM,UAAU,kBAAkB,CAAC,EAAU,EAAE,MAAqB;IAClE,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACpD,OAAO;QACL,EAAE;QACF,QAAQ,EAAE,OAAO,CAAC,IAAI;QACtB,SAAS,EAAE,OAAO,CAAC,IAAI;QACvB,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QACpE,mEAAmE;QACnE,iBAAiB,EAAE,gBAAgB;KACpC,CAAC;AACJ,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,KAAc;IACjE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;IACvG,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,KAAK,GAAG,KAAgC,CAAC;IAC/C,MAAM,KAAK,GAAsB,kBAAkB,CAAC,QAA2C,CAAC,CAAC;IACjG,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,SAAS,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAAE,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;IACtH,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAChG,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAmB,CAAC,CAAC,MAAO,CAAC;AAC5E,CAAC"}
|
package/dist/validate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAkCA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AA0gBD,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAS5D"}
|
package/dist/validate.js
CHANGED
|
@@ -7,6 +7,8 @@ import { validateOutputDeclaration } from './output-schema.js';
|
|
|
7
7
|
import { modelNameError } from './model-name.js';
|
|
8
8
|
import { unknownKeyErrors } from './unknown-keys.js';
|
|
9
9
|
import { stepDependencyErrors } from './step-dependencies.js';
|
|
10
|
+
import { inputBindingErrors } from './input-binding.js';
|
|
11
|
+
import { NAMED_GATE_KEYS, namedGateErrors } from './named-gates.js';
|
|
10
12
|
import { AGENT_DECLARATION_FIELDS, FLOW_FIELDS, STEP_COMMON_FIELDS, STEP_FIELDS_BY_TYPE, } from './step-fields.js';
|
|
11
13
|
import { jsonSchemaError, snapshotJsonSchema } from './json-schema.js';
|
|
12
14
|
import { snapshotJsonValue } from './json-value.js';
|
|
@@ -43,8 +45,9 @@ function isCanonicalPathSurface(value) {
|
|
|
43
45
|
// unknown keys (AGENTS.md rule 4; RFC covenant 2): a typo'd key like
|
|
44
46
|
// `depends_on` must be an error naming the nearest valid key, never a
|
|
45
47
|
// silently discarded field — silently dropping `dependsOn` loses ordering.
|
|
46
|
-
const BUDGET_KEYS = ['maxTokensIn', 'maxTokensOut', 'maxDollars'];
|
|
48
|
+
const BUDGET_KEYS = ['maxTokensIn', 'maxTokensOut', 'maxDollars', 'maxTokens', 'maxWallclockMs', 'window', 'pricing'];
|
|
47
49
|
const VERIFICATION_KEYS = {
|
|
50
|
+
...NAMED_GATE_KEYS,
|
|
48
51
|
exit_code: ['type', 'expect'],
|
|
49
52
|
output_contains: ['type', 'value'],
|
|
50
53
|
json_schema: ['type', 'schema'],
|
|
@@ -129,6 +132,23 @@ class Validator {
|
|
|
129
132
|
this.validateTriggers(s['triggers']);
|
|
130
133
|
if (s['budget'] !== undefined)
|
|
131
134
|
this.validateBudget(s['budget']);
|
|
135
|
+
if (s['workspace'] !== undefined)
|
|
136
|
+
this.validateScopeGrants(s['workspace'], 'spec.workspace');
|
|
137
|
+
if (s['tools'] !== undefined) {
|
|
138
|
+
if (!isObject(s['tools'])) {
|
|
139
|
+
this.fail('spec.tools: expected an object');
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
const tools = s['tools'];
|
|
143
|
+
for (const key of Object.keys(tools)) {
|
|
144
|
+
if (key !== 'fs' && key !== 'mcp') {
|
|
145
|
+
this.fail(`spec.tools: unknown key "${key}" (expected fs or mcp)`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (tools['fs'] !== undefined)
|
|
149
|
+
this.validateScopeGrants(tools['fs'], 'spec.tools.fs');
|
|
150
|
+
}
|
|
151
|
+
}
|
|
132
152
|
if (!Array.isArray(s['steps']) || s['steps'].length === 0) {
|
|
133
153
|
this.fail('spec.steps: expected a non-empty array');
|
|
134
154
|
return this.result();
|
|
@@ -140,6 +160,8 @@ class Validator {
|
|
|
140
160
|
// Dependents must reference real step ids and form a DAG (no cycles).
|
|
141
161
|
for (const error of stepDependencyErrors(steps, this.ids))
|
|
142
162
|
this.fail(error);
|
|
163
|
+
for (const error of inputBindingErrors(steps))
|
|
164
|
+
this.fail(error);
|
|
143
165
|
return this.result();
|
|
144
166
|
}
|
|
145
167
|
validateAgents(value) {
|
|
@@ -166,13 +188,30 @@ class Validator {
|
|
|
166
188
|
this.validateModel(declaration.model, at, true);
|
|
167
189
|
}
|
|
168
190
|
}
|
|
191
|
+
validateScopeGrants(value, at) {
|
|
192
|
+
const grants = Array.isArray(value) ? value : [value];
|
|
193
|
+
for (const grant of grants) {
|
|
194
|
+
if (typeof grant !== 'string' || grant.length === 0) {
|
|
195
|
+
this.fail(`${at}: expected a scope-grant string like "mount/path: readonly" (or an array of them)`);
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
169
200
|
validateBudget(b, at = 'spec.budget') {
|
|
170
201
|
if (!isObject(b)) {
|
|
171
202
|
this.fail(`${at}: expected an object`);
|
|
172
203
|
return;
|
|
173
204
|
}
|
|
174
|
-
this.checkKeys(b, BUDGET_KEYS, at);
|
|
205
|
+
this.checkKeys(b, at === 'spec.budget' ? BUDGET_KEYS : ['maxTokensIn', 'maxTokensOut', 'maxDollars'], at);
|
|
175
206
|
const budget = b;
|
|
207
|
+
for (const key of ['maxTokens', 'maxWallclockMs']) {
|
|
208
|
+
if (budget[key] !== undefined && (!Number.isSafeInteger(budget[key]) || budget[key] < 0))
|
|
209
|
+
this.fail(`${at}.${key}: expected a safe non-negative integer`);
|
|
210
|
+
}
|
|
211
|
+
if (budget.pricing !== undefined && budget.pricing !== 'frozen')
|
|
212
|
+
this.fail(`${at}.pricing: expected frozen`);
|
|
213
|
+
if (budget.window !== undefined && budget.window !== 'day')
|
|
214
|
+
this.fail(`${at}.window: expected day`);
|
|
176
215
|
if (budget.maxTokensIn !== undefined &&
|
|
177
216
|
!isNonNegInt(budget.maxTokensIn)) {
|
|
178
217
|
this.fail(`${at}.maxTokensIn: expected a non-negative integer`);
|
|
@@ -314,7 +353,7 @@ class Validator {
|
|
|
314
353
|
}
|
|
315
354
|
}
|
|
316
355
|
if (st['verification'] !== undefined) {
|
|
317
|
-
this.validateVerification(st['verification'], `${at}.verification`, type);
|
|
356
|
+
this.validateVerification(st['verification'], `${at}.verification`, type, st['input']);
|
|
318
357
|
}
|
|
319
358
|
if (st['maxIterations'] !== undefined && !isPosInt(st['maxIterations'])) {
|
|
320
359
|
this.fail(`${at}.maxIterations: expected a positive integer`);
|
|
@@ -333,13 +372,14 @@ class Validator {
|
|
|
333
372
|
this.fail(error);
|
|
334
373
|
}
|
|
335
374
|
}
|
|
336
|
-
validateVerification(v, at, stepType) {
|
|
375
|
+
validateVerification(v, at, stepType, input) {
|
|
337
376
|
if (!isObject(v)) {
|
|
338
377
|
this.fail(`${at}: expected an object`);
|
|
339
378
|
return;
|
|
340
379
|
}
|
|
341
380
|
const gate = v;
|
|
342
|
-
const gateKeys = typeof gate.type === 'string'
|
|
381
|
+
const gateKeys = typeof gate.type === 'string' && Object.hasOwn(VERIFICATION_KEYS, gate.type)
|
|
382
|
+
? VERIFICATION_KEYS[gate.type] : undefined;
|
|
343
383
|
if (gateKeys !== undefined) {
|
|
344
384
|
this.checkKeys(v, gateKeys, at);
|
|
345
385
|
}
|
|
@@ -370,14 +410,21 @@ class Validator {
|
|
|
370
410
|
this.fail(error instanceof Error ? error.message : `${at}.schema: expected JSON-compatible data`);
|
|
371
411
|
}
|
|
372
412
|
}
|
|
413
|
+
else if (Object.hasOwn(NAMED_GATE_KEYS, gate.type)) {
|
|
414
|
+
for (const error of namedGateErrors(v, input, at))
|
|
415
|
+
this.fail(error);
|
|
416
|
+
}
|
|
373
417
|
else {
|
|
374
|
-
this.fail(`${at}.type: expected exit_code | output_contains | json_schema`);
|
|
418
|
+
this.fail(`${at}.type: unknown_gate_kind: expected exit_code | output_contains | json_schema | references_input | subprocess_gate | word_count_bounds | regex_match`);
|
|
375
419
|
}
|
|
376
420
|
}
|
|
377
421
|
validateDeterministic(st, at) {
|
|
378
422
|
if (!isNonEmptyString(st.command)) {
|
|
379
423
|
this.fail(`${at}.command: expected a non-empty string`);
|
|
380
424
|
}
|
|
425
|
+
if (st.lease_ms !== undefined && !isPosInt(st.lease_ms)) {
|
|
426
|
+
this.fail(`${at}.lease_ms: expected a positive integer`);
|
|
427
|
+
}
|
|
381
428
|
if (st.timeoutMs !== undefined && !isPosInt(st.timeoutMs)) {
|
|
382
429
|
this.fail(`${at}.timeoutMs: expected a positive integer`);
|
|
383
430
|
}
|