@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
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { readFile, lstat } from 'node:fs/promises';
|
|
2
|
+
import { dirname, extname, join, resolve } from 'node:path';
|
|
3
|
+
import { parse } from 'yaml';
|
|
4
|
+
import { sealBundle, verifyBundle } from '../bundle.js';
|
|
5
|
+
import { canonicalize } from '../canonical.js';
|
|
6
|
+
import { compileSpec, toKernelSpec } from '../compile.js';
|
|
7
|
+
import { preflight } from '../preflight.js';
|
|
8
|
+
import { buildTypescript } from '../bundle-typescript.js';
|
|
9
|
+
import { checkBuildableFlow, readProjectConfig } from './check.js';
|
|
10
|
+
export function parseBuildArgs(args) {
|
|
11
|
+
if (args[0] === '--verify') {
|
|
12
|
+
return args.length === 2 && !args[1].startsWith('-')
|
|
13
|
+
? { command: 'build', value: args[1], verify: true, json: false } : undefined;
|
|
14
|
+
}
|
|
15
|
+
let out;
|
|
16
|
+
let value;
|
|
17
|
+
let json = false;
|
|
18
|
+
for (let i = 0; i < args.length; i++) {
|
|
19
|
+
const arg = args[i];
|
|
20
|
+
if (arg === '--out') {
|
|
21
|
+
if (out !== undefined || args[i + 1] === undefined || args[i + 1].startsWith('-'))
|
|
22
|
+
return undefined;
|
|
23
|
+
out = args[++i];
|
|
24
|
+
}
|
|
25
|
+
else if (arg === '--json') {
|
|
26
|
+
if (json)
|
|
27
|
+
return undefined;
|
|
28
|
+
json = true;
|
|
29
|
+
}
|
|
30
|
+
else if (arg.startsWith('-') || value !== undefined)
|
|
31
|
+
return undefined;
|
|
32
|
+
else
|
|
33
|
+
value = arg;
|
|
34
|
+
}
|
|
35
|
+
return value === undefined ? undefined : { command: 'build', value, out, verify: false, json };
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Emit a check report in the same shape `flows check` uses so build-time
|
|
39
|
+
* refusals are consumable by the same tooling.
|
|
40
|
+
*/
|
|
41
|
+
function emitBuildCheckReport(report, json, io) {
|
|
42
|
+
for (const diagnostic of report.diagnostics) {
|
|
43
|
+
if (diagnostic.severity !== 'refusal')
|
|
44
|
+
continue;
|
|
45
|
+
io.stderr(`REFUSED [${diagnostic.kind}] ${diagnostic.message}`);
|
|
46
|
+
}
|
|
47
|
+
if (json)
|
|
48
|
+
io.stdout(JSON.stringify(report));
|
|
49
|
+
}
|
|
50
|
+
export async function runBuild(args, io) {
|
|
51
|
+
try {
|
|
52
|
+
if (args.verify) {
|
|
53
|
+
io.stdout(`VERIFIED sha256:${await verifyBundle(args.value)}`);
|
|
54
|
+
return 0;
|
|
55
|
+
}
|
|
56
|
+
// Gate the build on the same preflight pipeline `flows check` uses.
|
|
57
|
+
// Refusals never leave partial artifacts — no file capture, no canonical
|
|
58
|
+
// spec write, no digest computation, no bundle directory creation. A
|
|
59
|
+
// previous `dist/flows/<name>@sha256:<hex>/` directory from an earlier
|
|
60
|
+
// successful build is not touched (buildFlow is never called).
|
|
61
|
+
const gate = await checkBuildableFlow(args.value);
|
|
62
|
+
if (!gate.report.ok) {
|
|
63
|
+
emitBuildCheckReport(gate.report, args.json, io);
|
|
64
|
+
return 2;
|
|
65
|
+
}
|
|
66
|
+
io.stdout(await buildFlow(args.value, args.out ?? 'dist/flows', io.stderr));
|
|
67
|
+
return 0;
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
io.stderr(`REFUSED [bundle_invalid] ${error instanceof Error ? error.message : String(error)}`);
|
|
71
|
+
return 2;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/** Build checks never probe credentials, workers, or the author's PATH. */
|
|
75
|
+
export async function buildFlow(path, out, warn) {
|
|
76
|
+
const input = resolve(path);
|
|
77
|
+
const directory = dirname(input);
|
|
78
|
+
const files = [];
|
|
79
|
+
let authoring;
|
|
80
|
+
let authored = false;
|
|
81
|
+
let compiler;
|
|
82
|
+
if (extname(input) === '.ts') {
|
|
83
|
+
const result = await buildTypescript(input);
|
|
84
|
+
authoring = result.spec;
|
|
85
|
+
authored = result.authored;
|
|
86
|
+
compiler = result.compiler;
|
|
87
|
+
files.push(...result.files);
|
|
88
|
+
}
|
|
89
|
+
else if (['.yaml', '.yml'].includes(extname(input))) {
|
|
90
|
+
authoring = compileSpec(parse(await readFile(input, 'utf8')));
|
|
91
|
+
files.push({ path: 'lockfile.json', data: canonicalize({ version: 1, adapters: [] }) });
|
|
92
|
+
}
|
|
93
|
+
else
|
|
94
|
+
throw new Error('build expects a .yaml, .yml, or .ts flow');
|
|
95
|
+
// The current preflight API reports uncollected environment facts as
|
|
96
|
+
// probe_failed. Preserve that truthful report verbatim and separately declare
|
|
97
|
+
// the deployment obligations; never manufacture successful auth probes.
|
|
98
|
+
//
|
|
99
|
+
// Load the nearest flows.json so declared model allowlists and the project
|
|
100
|
+
// CLI participate in build-time preflight. Without them a declared `model:`
|
|
101
|
+
// that appears in flows.json/models refuses the whole build as
|
|
102
|
+
// `model_unknown`, because preflight defaults treat "no registry" as "no
|
|
103
|
+
// model is known" and only environment probes (deferred here) would rescue
|
|
104
|
+
// it. Model existence is a build-provable fact; only the live probe is not.
|
|
105
|
+
const config = readProjectConfig(directory);
|
|
106
|
+
const report = preflight(authoring, {
|
|
107
|
+
...(config.cli !== undefined ? { projectCli: config.cli } : {}),
|
|
108
|
+
...(config.path !== undefined ? { projectConfigPath: config.path } : {}),
|
|
109
|
+
projectSearchStart: directory,
|
|
110
|
+
models: config.models,
|
|
111
|
+
...(config.path !== undefined ? { modelRegistryPath: config.path } : {}),
|
|
112
|
+
probes: {
|
|
113
|
+
cli: () => { throw new Error('deferred to deployment'); },
|
|
114
|
+
executor: () => { throw new Error('deferred to deployment'); },
|
|
115
|
+
command: () => { throw new Error('deferred to deployment'); },
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
const refusals = report.diagnostics.filter(d => d.severity === 'refusal' && d.kind !== 'probe_failed');
|
|
119
|
+
if (refusals.length > 0)
|
|
120
|
+
throw new Error(refusals.map(d => `[${d.kind}] ${d.message}`).join('\n'));
|
|
121
|
+
authoring = await captureFiles(authoring, directory, files);
|
|
122
|
+
files.push({ path: 'spec.canonical.json', data: canonicalize(toKernelSpec(authoring)) }, { path: 'preflight.json', data: canonicalize(report) }, { path: 'metadata.json', data: canonicalize({
|
|
123
|
+
version: 1, platform: { os: process.platform, arch: process.arch },
|
|
124
|
+
executables: files.filter(file => file.path === 'flow' || file.executable).map(file => file.path).sort(),
|
|
125
|
+
kind: authored ? 'authored-typescript' : 'declarative',
|
|
126
|
+
...(compiler === undefined ? {} : { compiler }),
|
|
127
|
+
preflight: { buildPassed: true, deferred: ['commands', 'credentials', 'workers', 'mcp_servers'],
|
|
128
|
+
...(authored ? { dynamicSteps: 'exported spec declaration checked; body was not executed during build' } : {}) },
|
|
129
|
+
}) });
|
|
130
|
+
return sealBundle({ name: authoring.name ?? 'flow', out, files,
|
|
131
|
+
repo: await repositoryRoot(directory), warn });
|
|
132
|
+
}
|
|
133
|
+
async function repositoryRoot(start) {
|
|
134
|
+
for (let dir = start;; dir = dirname(dir)) {
|
|
135
|
+
try {
|
|
136
|
+
await lstat(join(dir, '.git'));
|
|
137
|
+
return dir;
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
if (error.code !== 'ENOENT')
|
|
141
|
+
throw error;
|
|
142
|
+
}
|
|
143
|
+
if (dirname(dir) === dir)
|
|
144
|
+
return start;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/** Relative CLI executables are the file references in the current spec schema.
|
|
148
|
+
* Shell commands are opaque; explicit ./file words are captured without
|
|
149
|
+
* interpreting substitutions or running a shell at build time. */
|
|
150
|
+
async function captureFiles(flow, directory, files) {
|
|
151
|
+
// Cache the in-flight *promise*, not the resolved string. Two concurrent
|
|
152
|
+
// captures of the same path (Promise.all over named agents that share a CLI)
|
|
153
|
+
// both pass a `captured.has(path)` guard before either has finished awaiting
|
|
154
|
+
// its lstat/readFile, so both would push the same `assets/...` entry -- and
|
|
155
|
+
// sealBundle then refuses the whole flow as a duplicate. Storing the promise
|
|
156
|
+
// dedups on the first synchronous look-up.
|
|
157
|
+
const captured = new Map();
|
|
158
|
+
function capture(path) {
|
|
159
|
+
if (!path.includes('/'))
|
|
160
|
+
return Promise.resolve(path);
|
|
161
|
+
if (!path.startsWith('./') || path.split('/').includes('..') || path.includes('\\')) {
|
|
162
|
+
return Promise.reject(new Error(`${path}: bundle file references must start with ./ and stay inside the flow directory`));
|
|
163
|
+
}
|
|
164
|
+
const existing = captured.get(path);
|
|
165
|
+
if (existing !== undefined)
|
|
166
|
+
return existing;
|
|
167
|
+
const pending = (async () => {
|
|
168
|
+
const parts = path.slice(2).split('/');
|
|
169
|
+
if (parts.some(p => p === '' || p === '.'))
|
|
170
|
+
throw new Error(`${path}: invalid file reference`);
|
|
171
|
+
let executable = false;
|
|
172
|
+
for (let i = 1; i <= parts.length; i++) {
|
|
173
|
+
const stat = await lstat(join(directory, ...parts.slice(0, i)));
|
|
174
|
+
if (i === parts.length ? !stat.isFile() : !stat.isDirectory())
|
|
175
|
+
throw new Error(`${path}: expected regular file without symlinks`);
|
|
176
|
+
if (i === parts.length)
|
|
177
|
+
executable = (stat.mode & 0o111) !== 0;
|
|
178
|
+
}
|
|
179
|
+
const target = `assets/${parts.join('/')}`;
|
|
180
|
+
files.push({ path: target, data: await readFile(join(directory, ...parts)), executable });
|
|
181
|
+
return `./${target}`;
|
|
182
|
+
})();
|
|
183
|
+
captured.set(path, pending);
|
|
184
|
+
return pending;
|
|
185
|
+
}
|
|
186
|
+
// Capture the flow-level `cli` default and every named-agent `cli` BEFORE
|
|
187
|
+
// walking steps. Otherwise a step that inherits its CLI from the flow header
|
|
188
|
+
// or an agents-map entry never emits its own `cli`, so the step-level walk
|
|
189
|
+
// below misses it, the executable never enters the bundle, and the sealed
|
|
190
|
+
// spec still points at the author's absolute path outside the bundle.
|
|
191
|
+
const flowCli = flow.cli !== undefined ? await capture(flow.cli) : undefined;
|
|
192
|
+
const agents = flow.agents === undefined ? undefined
|
|
193
|
+
: Object.fromEntries(await Promise.all(Object.entries(flow.agents).map(async ([name, agent]) => [name, { ...agent, cli: await capture(agent.cli) }])));
|
|
194
|
+
const compiled = toKernelSpec(flow);
|
|
195
|
+
// Lower named/flow CLI resolution first so every runtime reference is bound.
|
|
196
|
+
const steps = [];
|
|
197
|
+
for (const [index, step] of flow.steps.entries()) {
|
|
198
|
+
if (step.type !== 'deterministic') {
|
|
199
|
+
const lowered = compiled.steps[index];
|
|
200
|
+
const cli = lowered && lowered.type !== 'deterministic' ? lowered.cli : undefined;
|
|
201
|
+
steps.push(cli === undefined ? step : { ...step, cli: await capture(cli) });
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
let command = step.command;
|
|
205
|
+
const references = [...command.matchAll(/(?:^|[\s;|&<>])(?:"(\.\/[^"$`]+)"|'(\.\/[^']+)'|(\.\/[^\s;|&<>"'$`]+))/g)];
|
|
206
|
+
// Replace only each complete matched word, from right to left so offsets
|
|
207
|
+
// stay valid and similarly prefixed filenames cannot rewrite one another.
|
|
208
|
+
for (const match of references.reverse()) {
|
|
209
|
+
const ref = (match[1] ?? match[2] ?? match[3]);
|
|
210
|
+
const start = match.index + match[0].indexOf(ref);
|
|
211
|
+
command = command.slice(0, start) + await capture(ref) + command.slice(start + ref.length);
|
|
212
|
+
}
|
|
213
|
+
if (/^\s*["']?\//.test(command))
|
|
214
|
+
throw new Error(`${step.id}: absolute command paths cannot be bundled`);
|
|
215
|
+
steps.push({ ...step, command });
|
|
216
|
+
}
|
|
217
|
+
return {
|
|
218
|
+
...flow,
|
|
219
|
+
...(flowCli !== undefined ? { cli: flowCli } : {}),
|
|
220
|
+
...(agents !== undefined ? { agents } : {}),
|
|
221
|
+
steps,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type CheckExecution } from './check.js';
|
|
2
|
+
/** Refuse unsupported execution: a TS declaration is not its body, and
|
|
3
|
+
* daemon-relative assets must never resolve in an unrelated checkout. */
|
|
4
|
+
export declare function checkRunnableBundle(directory: string, name: string): Promise<CheckExecution>;
|
|
5
|
+
//# sourceMappingURL=bundle-preflight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-preflight.d.ts","sourceRoot":"","sources":["../../src/cli/bundle-preflight.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAEpE;yEACyE;AACzE,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAmBlG"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { BundleFailure } from '../bundle-transport.js';
|
|
4
|
+
import { compileSpec, kernelToAuthoring } from '../compile.js';
|
|
5
|
+
import { checkAuthoredFlow } from './check.js';
|
|
6
|
+
/** Refuse unsupported execution: a TS declaration is not its body, and
|
|
7
|
+
* daemon-relative assets must never resolve in an unrelated checkout. */
|
|
8
|
+
export async function checkRunnableBundle(directory, name) {
|
|
9
|
+
const metadata = JSON.parse(await readFile(join(directory, 'metadata.json'), 'utf8'));
|
|
10
|
+
const manifest = JSON.parse(await readFile(join(directory, 'manifest.json'), 'utf8'));
|
|
11
|
+
const flow = compileSpec(kernelToAuthoring(JSON.parse(await readFile(join(directory, 'spec.canonical.json'), 'utf8'))));
|
|
12
|
+
if (flow.name !== undefined && flow.name !== name)
|
|
13
|
+
throw new BundleFailure('bundle_signature_invalid', 'Bundle name does not match the requested flow.');
|
|
14
|
+
flow.name ??= name;
|
|
15
|
+
if (metadata.kind !== 'declarative' || flow.steps.some(step => step.type !== 'deterministic'
|
|
16
|
+
|| step.requirements !== undefined) || (flow.triggers?.length ?? 0) > 0
|
|
17
|
+
|| manifest.some(entry => entry.path.startsWith('assets/'))) {
|
|
18
|
+
throw new BundleFailure('bundle_unsupported', 'This slice runs declarative deterministic bundles without assets, placement requirements, or triggers.');
|
|
19
|
+
}
|
|
20
|
+
// Keep existing fail-closed environment checks before transport/journal.
|
|
21
|
+
// Splitting static and environment checks is follow-up.
|
|
22
|
+
// This deterministic-only slice declares no project models or executors.
|
|
23
|
+
// Never discover flows.json in the deployment/cache tree or its ancestors.
|
|
24
|
+
return checkAuthoredFlow(flow, join(directory, 'spec.canonical.json'), {
|
|
25
|
+
directory, models: [], executors: [],
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=bundle-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-preflight.js","sourceRoot":"","sources":["../../src/cli/bundle-preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAuB,MAAM,YAAY,CAAC;AAEpE;yEACyE;AACzE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,SAAiB,EAAE,IAAY;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACtF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,CAAuB,CAAC;IAC5G,MAAM,IAAI,GAAG,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACxH,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;QAAE,MAAM,IAAI,aAAa,CAAC,0BAA0B,EAAE,gDAAgD,CAAC,CAAC;IACzJ,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;IACnB,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe;WACrF,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;WACpE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,aAAa,CAAC,oBAAoB,EAC1C,wGAAwG,CAAC,CAAC;IAC9G,CAAC;IACD,yEAAyE;IACzE,wDAAwD;IACxD,yEAAyE;IACzE,2EAA2E;IAC3E,OAAO,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAE;QACrE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;KACrC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-helper-body.d.ts","sourceRoot":"","sources":["../../src/cli/check-helper-body.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAErE,+EAA+E;AAC/E,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAQ3E"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { loadAuthoredFlow } from '../authored-flow-loader.js';
|
|
2
|
+
import { checkSlackHelpers } from '../slack-preflight.js';
|
|
3
|
+
import { inputFailureReport } from './check.js';
|
|
4
|
+
/** Imports the definition, but never executes arbitrary authored body code. */
|
|
5
|
+
export async function checkHelperBody(path) {
|
|
6
|
+
try {
|
|
7
|
+
const { handle, getDefinition } = await loadAuthoredFlow(path);
|
|
8
|
+
return { report: { ...checkSlackHelpers(getDefinition(handle)), path } };
|
|
9
|
+
}
|
|
10
|
+
catch (error) {
|
|
11
|
+
return { report: inputFailureReport({ kind: 'invalid_spec',
|
|
12
|
+
message: error instanceof Error ? error.message : 'Could not import authored flow.' }, path) };
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=check-helper-body.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-helper-body.js","sourceRoot":"","sources":["../../src/cli/check-helper-body.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAuB,MAAM,YAAY,CAAC;AAErE,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC/D,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,iBAAiB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;IAC3E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,IAAI,EAAE,cAAc;gBACxD,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iCAAiC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;IACnG,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type LoadedAuthoredFlow } from '../authored-flow-loader.js';
|
|
2
|
+
import { type CheckReport } from './check.js';
|
|
3
|
+
/**
|
|
4
|
+
* Inspect an authored flow without running a handler or contacting the daemon.
|
|
5
|
+
* Combines the two authored-only preflight paths that share a loaded flow: the
|
|
6
|
+
* webhook-trigger check (E) and the f.slack helper check (B). Skipping either
|
|
7
|
+
* turned this into a silent trapdoor -- a `.flow.ts` using `f.slack.post`
|
|
8
|
+
* without a token would pass `flows check` and only crash at run.
|
|
9
|
+
*/
|
|
10
|
+
export declare function checkAuthoredTriggers(path: string): Promise<{
|
|
11
|
+
report: CheckReport;
|
|
12
|
+
loaded?: LoadedAuthoredFlow;
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=check-triggers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-triggers.d.ts","sourceRoot":"","sources":["../../src/cli/check-triggers.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGvF,OAAO,EAAyC,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAErF;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACjE,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,CAAC,CAwBD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { dirname, resolve } from 'node:path';
|
|
2
|
+
import { loadAuthoredFlow } from '../authored-flow-loader.js';
|
|
3
|
+
import { preflightWebhookTriggers } from '../preflight.js';
|
|
4
|
+
import { checkSlackHelpers } from '../slack-preflight.js';
|
|
5
|
+
import { inputFailureReport, readProjectConfig } from './check.js';
|
|
6
|
+
/**
|
|
7
|
+
* Inspect an authored flow without running a handler or contacting the daemon.
|
|
8
|
+
* Combines the two authored-only preflight paths that share a loaded flow: the
|
|
9
|
+
* webhook-trigger check (E) and the f.slack helper check (B). Skipping either
|
|
10
|
+
* turned this into a silent trapdoor -- a `.flow.ts` using `f.slack.post`
|
|
11
|
+
* without a token would pass `flows check` and only crash at run.
|
|
12
|
+
*/
|
|
13
|
+
export async function checkAuthoredTriggers(path) {
|
|
14
|
+
try {
|
|
15
|
+
const loaded = await loadAuthoredFlow(path);
|
|
16
|
+
const definition = loaded.getDefinition(loaded.handle);
|
|
17
|
+
const config = readProjectConfig(dirname(resolve(path)));
|
|
18
|
+
const triggerDiagnostics = preflightWebhookTriggers((definition.handlers ?? []).map(handler => handler.trigger), config.executors);
|
|
19
|
+
const helperReport = checkSlackHelpers(definition);
|
|
20
|
+
const diagnostics = [...triggerDiagnostics, ...helperReport.diagnostics];
|
|
21
|
+
return {
|
|
22
|
+
loaded,
|
|
23
|
+
report: {
|
|
24
|
+
ok: diagnostics.length === 0, path, gates: [], resolutions: [], diagnostics,
|
|
25
|
+
...(config.path === undefined ? {} : { projectConfigPath: config.path }),
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
return { report: inputFailureReport({
|
|
31
|
+
kind: typeof error === 'object' && error !== null && 'kind' in error && error.kind === 'config_invalid'
|
|
32
|
+
? 'config_invalid' : 'invalid_spec',
|
|
33
|
+
message: error instanceof Error ? error.message : 'Cannot inspect authored triggers',
|
|
34
|
+
}, path) };
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=check-triggers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-triggers.js","sourceRoot":"","sources":["../../src/cli/check-triggers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAA2B,MAAM,4BAA4B,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAoB,MAAM,YAAY,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAY;IAItD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,kBAAkB,GAAG,wBAAwB,CACjD,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,SAAS,CAC9E,CAAC;QACF,MAAM,YAAY,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,CAAC,GAAG,kBAAkB,EAAE,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;QACzE,OAAO;YACL,MAAM;YACN,MAAM,EAAE;gBACN,EAAE,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW;gBAC3E,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;aACzE;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC;gBAClC,IAAI,EAAE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;oBACrG,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc;gBACrC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,kCAAkC;aACrF,EAAE,IAAI,CAAC,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { LoadedPlugin } from '../plugin-loader.js';
|
|
2
|
+
import type { AuthoredFlowDefinition } from '../authored-flow.js';
|
|
3
|
+
import { type McpServerConfig } from '../spec.js';
|
|
4
|
+
import { type CheckReport } from './check.js';
|
|
5
|
+
export interface CheckedMcp {
|
|
6
|
+
plugins?: readonly LoadedPlugin[];
|
|
7
|
+
report: CheckReport;
|
|
8
|
+
servers: Readonly<Record<string, McpServerConfig>>;
|
|
9
|
+
inventory: Readonly<Record<string, readonly string[]>>;
|
|
10
|
+
}
|
|
11
|
+
export declare function checkTypeScriptFlow(path: string): Promise<{
|
|
12
|
+
report: CheckReport;
|
|
13
|
+
}>;
|
|
14
|
+
/** Check declarations without executing the authored body. */
|
|
15
|
+
export declare function checkMcpHeader(definition: Pick<AuthoredFlowDefinition, 'name' | 'header'>, path: string): Promise<CheckedMcp>;
|
|
16
|
+
export declare class McpPreflightError extends Error {
|
|
17
|
+
readonly report: CheckReport;
|
|
18
|
+
constructor(report: CheckReport);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=check-typescript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-typescript.d.ts","sourceRoot":"","sources":["../../src/cli/check-typescript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAGlE,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAyC,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAErF,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAClC,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IACnD,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CACxD;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC,CAOxF;AAED,8DAA8D;AAC9D,wBAAsB,cAAc,CAClC,UAAU,EAAE,IAAI,CAAC,sBAAsB,EAAE,MAAM,GAAG,QAAQ,CAAC,EAC3D,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,UAAU,CAAC,CA4BrB;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAC9B,QAAQ,CAAC,MAAM,EAAE,WAAW;gBAAnB,MAAM,EAAE,WAAW;CAGzC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { dirname, resolve } from 'node:path';
|
|
2
|
+
import { loadAuthoredFlow } from '../authored-flow-loader.js';
|
|
3
|
+
import { preflight } from '../preflight.js';
|
|
4
|
+
import { SPEC_SCHEMA_VERSION } from '../spec.js';
|
|
5
|
+
import { inputFailureReport, readProjectConfig } from './check.js';
|
|
6
|
+
export async function checkTypeScriptFlow(path) {
|
|
7
|
+
try {
|
|
8
|
+
const { handle, getDefinition } = await loadAuthoredFlow(path);
|
|
9
|
+
return await checkMcpHeader(getDefinition(handle), path);
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
return { report: inputFailureReport({ kind: 'invalid_spec', message: error.message }, path) };
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/** Check declarations without executing the authored body. */
|
|
16
|
+
export async function checkMcpHeader(definition, path) {
|
|
17
|
+
const empty = { servers: Object.freeze({}), inventory: Object.freeze({}) };
|
|
18
|
+
const KNOWN_HEADER_FIELDS = new Set(['tools', 'budget', 'identity', 'memory', 'workspace', 'use']);
|
|
19
|
+
const header = definition.header ?? {};
|
|
20
|
+
const unsupported = Object.keys(header).filter(key => !KNOWN_HEADER_FIELDS.has(key));
|
|
21
|
+
if (header.tools?.relayfile !== undefined)
|
|
22
|
+
unsupported.push('tools.relayfile');
|
|
23
|
+
if (unsupported.length) {
|
|
24
|
+
return { ...empty, report: inputFailureReport({ kind: 'invalid_spec',
|
|
25
|
+
message: `flow "${definition.name}" uses unsupported header fields: ${unsupported.join(', ')}` }, path) };
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
const config = readProjectConfig(dirname(resolve(path)));
|
|
29
|
+
const result = await preflight({ version: SPEC_SCHEMA_VERSION, name: definition.name,
|
|
30
|
+
steps: [{ id: 'header', type: 'deterministic', command: ':' }] }, {
|
|
31
|
+
pluginSearchStart: dirname(resolve(path)),
|
|
32
|
+
mcpServers: header.tools?.mcp ?? [], mcp: config.mcp,
|
|
33
|
+
probes: { command: () => true, cli: () => { throw new Error('no CLI declared'); }, executor: () => false },
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
plugins: result.plugins,
|
|
37
|
+
servers: config.mcp ?? empty.servers,
|
|
38
|
+
inventory: result.mcpTools ?? empty.inventory,
|
|
39
|
+
report: { ...result, path, projectConfigPath: config.path, gates: [],
|
|
40
|
+
diagnostics: result.diagnostics.filter(d => d.stepId !== 'header') },
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
return { ...empty, report: inputFailureReport({ kind: 'config_invalid', message: error.message }, path) };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export class McpPreflightError extends Error {
|
|
48
|
+
report;
|
|
49
|
+
constructor(report) {
|
|
50
|
+
super(report.diagnostics.map(d => d.message).join('; '));
|
|
51
|
+
this.report = report;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=check-typescript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-typescript.js","sourceRoot":"","sources":["../../src/cli/check-typescript.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/check.d.ts
CHANGED
|
@@ -1,14 +1,32 @@
|
|
|
1
1
|
import type { FlowSpec } from '../spec.js';
|
|
2
|
+
import type { McpServerConfig } from '../spec.js';
|
|
2
3
|
import type { StepGateInspection } from '../gate-contract.js';
|
|
3
|
-
import type { CheckFailureKind } from '../failure-kinds.js';
|
|
4
|
+
import type { CheckFailureKind, CheckWarningKind } from '../failure-kinds.js';
|
|
4
5
|
import { type CliResolution, type PreflightDiagnostic } from '../preflight.js';
|
|
6
|
+
export interface ProjectConfig {
|
|
7
|
+
deploy?: {
|
|
8
|
+
bucket: string;
|
|
9
|
+
};
|
|
10
|
+
mcp?: Record<string, McpServerConfig>;
|
|
11
|
+
cli?: string;
|
|
12
|
+
executors: string[];
|
|
13
|
+
models: string[];
|
|
14
|
+
directory: string;
|
|
15
|
+
path?: string;
|
|
16
|
+
}
|
|
5
17
|
export interface CheckReport {
|
|
18
|
+
mcpTools?: Readonly<Record<string, readonly string[]>>;
|
|
6
19
|
ok: boolean;
|
|
7
20
|
path?: string;
|
|
8
21
|
projectConfigPath?: string;
|
|
9
22
|
gates: StepGateInspection[];
|
|
10
23
|
resolutions: CliResolution[];
|
|
11
|
-
diagnostics: Array<PreflightDiagnostic | CheckInputDiagnostic>;
|
|
24
|
+
diagnostics: Array<PreflightDiagnostic | CheckInputDiagnostic | CheckWarningDiagnostic>;
|
|
25
|
+
}
|
|
26
|
+
export interface CheckWarningDiagnostic {
|
|
27
|
+
severity: 'warning';
|
|
28
|
+
kind: CheckWarningKind;
|
|
29
|
+
message: string;
|
|
12
30
|
}
|
|
13
31
|
export interface CheckInputDiagnostic {
|
|
14
32
|
severity: 'refusal';
|
|
@@ -19,12 +37,27 @@ export interface CheckExecution {
|
|
|
19
37
|
report: CheckReport;
|
|
20
38
|
flow?: FlowSpec;
|
|
21
39
|
}
|
|
40
|
+
export declare class CheckFailure extends Error {
|
|
41
|
+
readonly kind: CheckFailureKind;
|
|
42
|
+
constructor(kind: CheckFailureKind, message: string);
|
|
43
|
+
}
|
|
22
44
|
/** Validate and preflight one working-tree spec without starting a run. */
|
|
23
45
|
export declare function checkFlow(path: string): CheckExecution;
|
|
24
46
|
/** Preflight a validated authored flow through the same path as YAML/JSON. */
|
|
25
|
-
export declare function checkAuthoredFlow(authoring: FlowSpec, path: string): CheckExecution;
|
|
47
|
+
export declare function checkAuthoredFlow(authoring: FlowSpec, path: string, projectConfig?: ProjectConfig): CheckExecution;
|
|
48
|
+
/**
|
|
49
|
+
* Build-time gate that runs the same preflight pipeline as `checkFlow`
|
|
50
|
+
* but with deferred probes — a build machine is not the deployment target,
|
|
51
|
+
* so `cli`/`command`/`executor` existence is checked at run-time, not here.
|
|
52
|
+
*
|
|
53
|
+
* "Build-provable" refusals (unknown model, `use:` unresolved, invalid
|
|
54
|
+
* verification, missing bundle assets, budget syntax, etc.) still surface,
|
|
55
|
+
* because they are properties of the flow spec, not of the build host.
|
|
56
|
+
*/
|
|
57
|
+
export declare function checkBuildableFlow(path: string): Promise<CheckExecution>;
|
|
26
58
|
export declare function inputFailureReport(failure: {
|
|
27
59
|
kind: CheckFailureKind;
|
|
28
60
|
message: string;
|
|
29
61
|
}, path?: string): CheckReport;
|
|
62
|
+
export declare function readProjectConfig(start: string): ProjectConfig;
|
|
30
63
|
//# sourceMappingURL=check.d.ts.map
|
package/dist/cli/check.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/cli/check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/cli/check.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAGL,KAAK,aAAa,EAElB,KAAK,mBAAmB,EAEzB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;IACvD,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,WAAW,EAAE,KAAK,CAAC,mBAAmB,GAAG,oBAAoB,GAAG,sBAAsB,CAAC,CAAC;CACzF;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,qBAAa,YAAa,SAAQ,KAAK;IACzB,QAAQ,CAAC,IAAI,EAAE,gBAAgB;gBAAtB,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM;CAG7D;AAED,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CA4BtD;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,cAAc,CAsClH;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAuD9E;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,WAAW,CAQb;AAqCD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CA4D9D"}
|