@stigmer/runner 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +212 -0
- package/dist/.build-fingerprint +1 -0
- package/dist/activities/call-agent-status.d.ts +37 -0
- package/dist/activities/call-agent-status.js +91 -0
- package/dist/activities/call-agent-status.js.map +1 -0
- package/dist/activities/call-agent.d.ts +25 -0
- package/dist/activities/call-agent.js +233 -0
- package/dist/activities/call-agent.js.map +1 -0
- package/dist/activities/call-eval.d.ts +50 -0
- package/dist/activities/call-eval.js +244 -0
- package/dist/activities/call-eval.js.map +1 -0
- package/dist/activities/call-function.d.ts +21 -0
- package/dist/activities/call-function.js +54 -0
- package/dist/activities/call-function.js.map +1 -0
- package/dist/activities/call-grpc.d.ts +22 -0
- package/dist/activities/call-grpc.js +101 -0
- package/dist/activities/call-grpc.js.map +1 -0
- package/dist/activities/call-http.d.ts +32 -0
- package/dist/activities/call-http.js +134 -0
- package/dist/activities/call-http.js.map +1 -0
- package/dist/activities/call-llm.d.ts +39 -0
- package/dist/activities/call-llm.js +260 -0
- package/dist/activities/call-llm.js.map +1 -0
- package/dist/activities/call-transform.d.ts +20 -0
- package/dist/activities/call-transform.js +33 -0
- package/dist/activities/call-transform.js.map +1 -0
- package/dist/activities/call-validate.d.ts +41 -0
- package/dist/activities/call-validate.js +163 -0
- package/dist/activities/call-validate.js.map +1 -0
- package/dist/activities/classify-tool-approvals.d.ts +47 -0
- package/dist/activities/classify-tool-approvals.js +207 -0
- package/dist/activities/classify-tool-approvals.js.map +1 -0
- package/dist/activities/discover-mcp-server.d.ts +65 -0
- package/dist/activities/discover-mcp-server.js +269 -0
- package/dist/activities/discover-mcp-server.js.map +1 -0
- package/dist/activities/emit-event.d.ts +46 -0
- package/dist/activities/emit-event.js +125 -0
- package/dist/activities/emit-event.js.map +1 -0
- package/dist/activities/ensure-thread.d.ts +24 -0
- package/dist/activities/ensure-thread.js +44 -0
- package/dist/activities/ensure-thread.js.map +1 -0
- package/dist/activities/evaluate-expressions.d.ts +21 -0
- package/dist/activities/evaluate-expressions.js +39 -0
- package/dist/activities/evaluate-expressions.js.map +1 -0
- package/dist/activities/execute-cursor/approval-policy.d.ts +104 -0
- package/dist/activities/execute-cursor/approval-policy.js +193 -0
- package/dist/activities/execute-cursor/approval-policy.js.map +1 -0
- package/dist/activities/execute-cursor/approval-state.d.ts +157 -0
- package/dist/activities/execute-cursor/approval-state.js +223 -0
- package/dist/activities/execute-cursor/approval-state.js.map +1 -0
- package/dist/activities/execute-cursor/attachment-resolver.d.ts +19 -0
- package/dist/activities/execute-cursor/attachment-resolver.js +52 -0
- package/dist/activities/execute-cursor/attachment-resolver.js.map +1 -0
- package/dist/activities/execute-cursor/blueprint-resolver.d.ts +66 -0
- package/dist/activities/execute-cursor/blueprint-resolver.js +169 -0
- package/dist/activities/execute-cursor/blueprint-resolver.js.map +1 -0
- package/dist/activities/execute-cursor/connect-backfill.d.ts +18 -0
- package/dist/activities/execute-cursor/connect-backfill.js +27 -0
- package/dist/activities/execute-cursor/connect-backfill.js.map +1 -0
- package/dist/activities/execute-cursor/cursor-event-recorder.d.ts +24 -0
- package/dist/activities/execute-cursor/cursor-event-recorder.js +66 -0
- package/dist/activities/execute-cursor/cursor-event-recorder.js.map +1 -0
- package/dist/activities/execute-cursor/cursor-mode.d.ts +32 -0
- package/dist/activities/execute-cursor/cursor-mode.js +36 -0
- package/dist/activities/execute-cursor/cursor-mode.js.map +1 -0
- package/dist/activities/execute-cursor/delta-enricher.d.ts +87 -0
- package/dist/activities/execute-cursor/delta-enricher.js +265 -0
- package/dist/activities/execute-cursor/delta-enricher.js.map +1 -0
- package/dist/activities/execute-cursor/env-resolver.d.ts +19 -0
- package/dist/activities/execute-cursor/env-resolver.js +47 -0
- package/dist/activities/execute-cursor/env-resolver.js.map +1 -0
- package/dist/activities/execute-cursor/error-classifier.d.ts +73 -0
- package/dist/activities/execute-cursor/error-classifier.js +185 -0
- package/dist/activities/execute-cursor/error-classifier.js.map +1 -0
- package/dist/activities/execute-cursor/fetch-interceptor.d.ts +59 -0
- package/dist/activities/execute-cursor/fetch-interceptor.js +317 -0
- package/dist/activities/execute-cursor/fetch-interceptor.js.map +1 -0
- package/dist/activities/execute-cursor/hitl-diagnostics.d.ts +32 -0
- package/dist/activities/execute-cursor/hitl-diagnostics.js +73 -0
- package/dist/activities/execute-cursor/hitl-diagnostics.js.map +1 -0
- package/dist/activities/execute-cursor/hook-script.d.ts +47 -0
- package/dist/activities/execute-cursor/hook-script.js +156 -0
- package/dist/activities/execute-cursor/hook-script.js.map +1 -0
- package/dist/activities/execute-cursor/http2-interceptor.d.ts +94 -0
- package/dist/activities/execute-cursor/http2-interceptor.js +209 -0
- package/dist/activities/execute-cursor/http2-interceptor.js.map +1 -0
- package/dist/activities/execute-cursor/index.d.ts +67 -0
- package/dist/activities/execute-cursor/index.js +1176 -0
- package/dist/activities/execute-cursor/index.js.map +1 -0
- package/dist/activities/execute-cursor/mcp-config.d.ts +30 -0
- package/dist/activities/execute-cursor/mcp-config.js +39 -0
- package/dist/activities/execute-cursor/mcp-config.js.map +1 -0
- package/dist/activities/execute-cursor/mcp-resolver.d.ts +91 -0
- package/dist/activities/execute-cursor/mcp-resolver.js +178 -0
- package/dist/activities/execute-cursor/mcp-resolver.js.map +1 -0
- package/dist/activities/execute-cursor/message-translator.d.ts +211 -0
- package/dist/activities/execute-cursor/message-translator.js +786 -0
- package/dist/activities/execute-cursor/message-translator.js.map +1 -0
- package/dist/activities/execute-cursor/model-pricing-data.d.ts +40 -0
- package/dist/activities/execute-cursor/model-pricing-data.js +114 -0
- package/dist/activities/execute-cursor/model-pricing-data.js.map +1 -0
- package/dist/activities/execute-cursor/model-pricing.d.ts +42 -0
- package/dist/activities/execute-cursor/model-pricing.js +141 -0
- package/dist/activities/execute-cursor/model-pricing.js.map +1 -0
- package/dist/activities/execute-cursor/placeholder-resolver.d.ts +34 -0
- package/dist/activities/execute-cursor/placeholder-resolver.js +82 -0
- package/dist/activities/execute-cursor/placeholder-resolver.js.map +1 -0
- package/dist/activities/execute-cursor/prompt-builder.d.ts +80 -0
- package/dist/activities/execute-cursor/prompt-builder.js +280 -0
- package/dist/activities/execute-cursor/prompt-builder.js.map +1 -0
- package/dist/activities/execute-cursor/rejection-capture.d.ts +30 -0
- package/dist/activities/execute-cursor/rejection-capture.js +80 -0
- package/dist/activities/execute-cursor/rejection-capture.js.map +1 -0
- package/dist/activities/execute-cursor/session-lifecycle.d.ts +189 -0
- package/dist/activities/execute-cursor/session-lifecycle.js +285 -0
- package/dist/activities/execute-cursor/session-lifecycle.js.map +1 -0
- package/dist/activities/execute-cursor/skill-resolver.d.ts +29 -0
- package/dist/activities/execute-cursor/skill-resolver.js +134 -0
- package/dist/activities/execute-cursor/skill-resolver.js.map +1 -0
- package/dist/activities/execute-cursor/subagent-config.d.ts +34 -0
- package/dist/activities/execute-cursor/subagent-config.js +55 -0
- package/dist/activities/execute-cursor/subagent-config.js.map +1 -0
- package/dist/activities/execute-cursor/todo-tracker.d.ts +35 -0
- package/dist/activities/execute-cursor/todo-tracker.js +108 -0
- package/dist/activities/execute-cursor/todo-tracker.js.map +1 -0
- package/dist/activities/execute-cursor/usage-accumulator.d.ts +55 -0
- package/dist/activities/execute-cursor/usage-accumulator.js +89 -0
- package/dist/activities/execute-cursor/usage-accumulator.js.map +1 -0
- package/dist/activities/execute-cursor/workspace-provision.d.ts +22 -0
- package/dist/activities/execute-cursor/workspace-provision.js +37 -0
- package/dist/activities/execute-cursor/workspace-provision.js.map +1 -0
- package/dist/activities/execute-cursor/workspace-setup.d.ts +27 -0
- package/dist/activities/execute-cursor/workspace-setup.js +61 -0
- package/dist/activities/execute-cursor/workspace-setup.js.map +1 -0
- package/dist/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.d.ts +71 -0
- package/dist/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.js +182 -0
- package/dist/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.js.map +1 -0
- package/dist/activities/execute-deep-agent/attachment-injector.d.ts +67 -0
- package/dist/activities/execute-deep-agent/attachment-injector.js +306 -0
- package/dist/activities/execute-deep-agent/attachment-injector.js.map +1 -0
- package/dist/activities/execute-deep-agent/auto-publish.d.ts +17 -0
- package/dist/activities/execute-deep-agent/auto-publish.js +71 -0
- package/dist/activities/execute-deep-agent/auto-publish.js.map +1 -0
- package/dist/activities/execute-deep-agent/environment.d.ts +24 -0
- package/dist/activities/execute-deep-agent/environment.js +50 -0
- package/dist/activities/execute-deep-agent/environment.js.map +1 -0
- package/dist/activities/execute-deep-agent/event-recorder.d.ts +21 -0
- package/dist/activities/execute-deep-agent/event-recorder.js +67 -0
- package/dist/activities/execute-deep-agent/event-recorder.js.map +1 -0
- package/dist/activities/execute-deep-agent/execution-state.d.ts +61 -0
- package/dist/activities/execute-deep-agent/execution-state.js +76 -0
- package/dist/activities/execute-deep-agent/execution-state.js.map +1 -0
- package/dist/activities/execute-deep-agent/execution-status-writer.d.ts +17 -0
- package/dist/activities/execute-deep-agent/execution-status-writer.js +9 -0
- package/dist/activities/execute-deep-agent/execution-status-writer.js.map +1 -0
- package/dist/activities/execute-deep-agent/hitl.d.ts +58 -0
- package/dist/activities/execute-deep-agent/hitl.js +155 -0
- package/dist/activities/execute-deep-agent/hitl.js.map +1 -0
- package/dist/activities/execute-deep-agent/index.d.ts +14 -0
- package/dist/activities/execute-deep-agent/index.js +286 -0
- package/dist/activities/execute-deep-agent/index.js.map +1 -0
- package/dist/activities/execute-deep-agent/inline-publisher.d.ts +36 -0
- package/dist/activities/execute-deep-agent/inline-publisher.js +105 -0
- package/dist/activities/execute-deep-agent/inline-publisher.js.map +1 -0
- package/dist/activities/execute-deep-agent/post-stream.d.ts +23 -0
- package/dist/activities/execute-deep-agent/post-stream.js +71 -0
- package/dist/activities/execute-deep-agent/post-stream.js.map +1 -0
- package/dist/activities/execute-deep-agent/prompt-builder.d.ts +27 -0
- package/dist/activities/execute-deep-agent/prompt-builder.js +200 -0
- package/dist/activities/execute-deep-agent/prompt-builder.js.map +1 -0
- package/dist/activities/execute-deep-agent/setup.d.ts +55 -0
- package/dist/activities/execute-deep-agent/setup.js +411 -0
- package/dist/activities/execute-deep-agent/setup.js.map +1 -0
- package/dist/activities/execute-deep-agent/status-builder-shared.d.ts +39 -0
- package/dist/activities/execute-deep-agent/status-builder-shared.js +120 -0
- package/dist/activities/execute-deep-agent/status-builder-shared.js.map +1 -0
- package/dist/activities/execute-deep-agent/status-builder.d.ts +81 -0
- package/dist/activities/execute-deep-agent/status-builder.js +312 -0
- package/dist/activities/execute-deep-agent/status-builder.js.map +1 -0
- package/dist/activities/execute-deep-agent/streaming-scheduler.d.ts +60 -0
- package/dist/activities/execute-deep-agent/streaming-scheduler.js +114 -0
- package/dist/activities/execute-deep-agent/streaming-scheduler.js.map +1 -0
- package/dist/activities/execute-deep-agent/streaming-side-effects.d.ts +22 -0
- package/dist/activities/execute-deep-agent/streaming-side-effects.js +83 -0
- package/dist/activities/execute-deep-agent/streaming-side-effects.js.map +1 -0
- package/dist/activities/execute-deep-agent/streaming-terminal.d.ts +12 -0
- package/dist/activities/execute-deep-agent/streaming-terminal.js +71 -0
- package/dist/activities/execute-deep-agent/streaming-terminal.js.map +1 -0
- package/dist/activities/execute-deep-agent/streaming-v3.d.ts +13 -0
- package/dist/activities/execute-deep-agent/streaming-v3.js +170 -0
- package/dist/activities/execute-deep-agent/streaming-v3.js.map +1 -0
- package/dist/activities/execute-deep-agent/streaming.d.ts +66 -0
- package/dist/activities/execute-deep-agent/streaming.js +169 -0
- package/dist/activities/execute-deep-agent/streaming.js.map +1 -0
- package/dist/activities/execute-deep-agent/subagent-tracker.d.ts +90 -0
- package/dist/activities/execute-deep-agent/subagent-tracker.js +364 -0
- package/dist/activities/execute-deep-agent/subagent-tracker.js.map +1 -0
- package/dist/activities/execute-deep-agent/subagent-transformer.d.ts +150 -0
- package/dist/activities/execute-deep-agent/subagent-transformer.js +450 -0
- package/dist/activities/execute-deep-agent/subagent-transformer.js.map +1 -0
- package/dist/activities/execute-deep-agent/subagent-wiring.d.ts +28 -0
- package/dist/activities/execute-deep-agent/subagent-wiring.js +40 -0
- package/dist/activities/execute-deep-agent/subagent-wiring.js.map +1 -0
- package/dist/activities/execute-deep-agent/v3-event-recorder.d.ts +31 -0
- package/dist/activities/execute-deep-agent/v3-event-recorder.js +71 -0
- package/dist/activities/execute-deep-agent/v3-event-recorder.js.map +1 -0
- package/dist/activities/execute-deep-agent/v3-events.d.ts +102 -0
- package/dist/activities/execute-deep-agent/v3-events.js +35 -0
- package/dist/activities/execute-deep-agent/v3-events.js.map +1 -0
- package/dist/activities/execute-deep-agent/v3-protocol-normalizer.d.ts +15 -0
- package/dist/activities/execute-deep-agent/v3-protocol-normalizer.js +235 -0
- package/dist/activities/execute-deep-agent/v3-protocol-normalizer.js.map +1 -0
- package/dist/activities/execute-deep-agent/v3-status-builder.d.ts +68 -0
- package/dist/activities/execute-deep-agent/v3-status-builder.js +394 -0
- package/dist/activities/execute-deep-agent/v3-status-builder.js.map +1 -0
- package/dist/activities/execute-deep-agent/writeback-coordinator.d.ts +71 -0
- package/dist/activities/execute-deep-agent/writeback-coordinator.js +295 -0
- package/dist/activities/execute-deep-agent/writeback-coordinator.js.map +1 -0
- package/dist/activities/hydrate-workflow-execution.d.ts +32 -0
- package/dist/activities/hydrate-workflow-execution.js +212 -0
- package/dist/activities/hydrate-workflow-execution.js.map +1 -0
- package/dist/activities/notification.d.ts +19 -0
- package/dist/activities/notification.js +47 -0
- package/dist/activities/notification.js.map +1 -0
- package/dist/activities/promote-task-output.d.ts +38 -0
- package/dist/activities/promote-task-output.js +90 -0
- package/dist/activities/promote-task-output.js.map +1 -0
- package/dist/activities/run-command.d.ts +15 -0
- package/dist/activities/run-command.js +123 -0
- package/dist/activities/run-command.js.map +1 -0
- package/dist/activities/workflow-event-activities.d.ts +48 -0
- package/dist/activities/workflow-event-activities.js +415 -0
- package/dist/activities/workflow-event-activities.js.map +1 -0
- package/dist/bootstrap.d.ts +80 -0
- package/dist/bootstrap.js +114 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/budget/index.d.ts +1 -0
- package/dist/budget/index.js +2 -0
- package/dist/budget/index.js.map +1 -0
- package/dist/budget/tracker.d.ts +52 -0
- package/dist/budget/tracker.js +123 -0
- package/dist/budget/tracker.js.map +1 -0
- package/dist/claimcheck/compressor.d.ts +2 -0
- package/dist/claimcheck/compressor.js +8 -0
- package/dist/claimcheck/compressor.js.map +1 -0
- package/dist/claimcheck/config.d.ts +7 -0
- package/dist/claimcheck/config.js +10 -0
- package/dist/claimcheck/config.js.map +1 -0
- package/dist/claimcheck/index.d.ts +3 -0
- package/dist/claimcheck/index.js +4 -0
- package/dist/claimcheck/index.js.map +1 -0
- package/dist/claimcheck/payload-codec.d.ts +23 -0
- package/dist/claimcheck/payload-codec.js +81 -0
- package/dist/claimcheck/payload-codec.js.map +1 -0
- package/dist/client/server-contracts.d.ts +52 -0
- package/dist/client/server-contracts.js +72 -0
- package/dist/client/server-contracts.js.map +1 -0
- package/dist/client/stigmer-client.d.ts +131 -0
- package/dist/client/stigmer-client.js +239 -0
- package/dist/client/stigmer-client.js.map +1 -0
- package/dist/config.d.ts +64 -0
- package/dist/config.js +123 -0
- package/dist/config.js.map +1 -0
- package/dist/idle-watchdog.d.ts +11 -0
- package/dist/idle-watchdog.js +24 -0
- package/dist/idle-watchdog.js.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/interceptors/workflow-metrics-sink.d.ts +11 -0
- package/dist/interceptors/workflow-metrics-sink.js +51 -0
- package/dist/interceptors/workflow-metrics-sink.js.map +1 -0
- package/dist/ipc-protocol-fixtures.d.ts +32 -0
- package/dist/ipc-protocol-fixtures.js +69 -0
- package/dist/ipc-protocol-fixtures.js.map +1 -0
- package/dist/ipc-protocol.d.ts +60 -0
- package/dist/ipc-protocol.js +19 -0
- package/dist/ipc-protocol.js.map +1 -0
- package/dist/main.d.ts +19 -0
- package/dist/main.js +292 -0
- package/dist/main.js.map +1 -0
- package/dist/middleware/approval-gate.d.ts +30 -0
- package/dist/middleware/approval-gate.js +125 -0
- package/dist/middleware/approval-gate.js.map +1 -0
- package/dist/middleware/cost-cap.d.ts +22 -0
- package/dist/middleware/cost-cap.js +159 -0
- package/dist/middleware/cost-cap.js.map +1 -0
- package/dist/middleware/error-hints.d.ts +27 -0
- package/dist/middleware/error-hints.js +116 -0
- package/dist/middleware/error-hints.js.map +1 -0
- package/dist/middleware/execution-budget.d.ts +20 -0
- package/dist/middleware/execution-budget.js +151 -0
- package/dist/middleware/execution-budget.js.map +1 -0
- package/dist/middleware/graceful-stop.d.ts +17 -0
- package/dist/middleware/graceful-stop.js +63 -0
- package/dist/middleware/graceful-stop.js.map +1 -0
- package/dist/middleware/index.d.ts +27 -0
- package/dist/middleware/index.js +45 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/loop-detection.d.ts +14 -0
- package/dist/middleware/loop-detection.js +156 -0
- package/dist/middleware/loop-detection.js.map +1 -0
- package/dist/middleware/otel-spans.d.ts +11 -0
- package/dist/middleware/otel-spans.js +177 -0
- package/dist/middleware/otel-spans.js.map +1 -0
- package/dist/middleware/think-tool.d.ts +23 -0
- package/dist/middleware/think-tool.js +33 -0
- package/dist/middleware/think-tool.js.map +1 -0
- package/dist/middleware/tool-truncation.d.ts +16 -0
- package/dist/middleware/tool-truncation.js +67 -0
- package/dist/middleware/tool-truncation.js.map +1 -0
- package/dist/middleware/types.d.ts +100 -0
- package/dist/middleware/types.js +9 -0
- package/dist/middleware/types.js.map +1 -0
- package/dist/notification/index.d.ts +2 -0
- package/dist/notification/index.js +6 -0
- package/dist/notification/index.js.map +1 -0
- package/dist/notification/provider.d.ts +29 -0
- package/dist/notification/provider.js +25 -0
- package/dist/notification/provider.js.map +1 -0
- package/dist/notification/webhook.d.ts +13 -0
- package/dist/notification/webhook.js +55 -0
- package/dist/notification/webhook.js.map +1 -0
- package/dist/otel-metrics.d.ts +21 -0
- package/dist/otel-metrics.js +54 -0
- package/dist/otel-metrics.js.map +1 -0
- package/dist/otel.d.ts +57 -0
- package/dist/otel.js +164 -0
- package/dist/otel.js.map +1 -0
- package/dist/runner-manager.d.ts +113 -0
- package/dist/runner-manager.js +412 -0
- package/dist/runner-manager.js.map +1 -0
- package/dist/runner-token-coordinator.d.ts +56 -0
- package/dist/runner-token-coordinator.js +84 -0
- package/dist/runner-token-coordinator.js.map +1 -0
- package/dist/runner.d.ts +104 -0
- package/dist/runner.js +234 -0
- package/dist/runner.js.map +1 -0
- package/dist/shared/approval-policy.d.ts +45 -0
- package/dist/shared/approval-policy.js +122 -0
- package/dist/shared/approval-policy.js.map +1 -0
- package/dist/shared/artifact-storage.d.ts +44 -0
- package/dist/shared/artifact-storage.js +162 -0
- package/dist/shared/artifact-storage.js.map +1 -0
- package/dist/shared/checkpointer/factory.d.ts +28 -0
- package/dist/shared/checkpointer/factory.js +55 -0
- package/dist/shared/checkpointer/factory.js.map +1 -0
- package/dist/shared/checkpointer/http-saver.d.ts +34 -0
- package/dist/shared/checkpointer/http-saver.js +274 -0
- package/dist/shared/checkpointer/http-saver.js.map +1 -0
- package/dist/shared/checkpointer/types.d.ts +12 -0
- package/dist/shared/checkpointer/types.js +2 -0
- package/dist/shared/checkpointer/types.js.map +1 -0
- package/dist/shared/connect-backfill.d.ts +58 -0
- package/dist/shared/connect-backfill.js +119 -0
- package/dist/shared/connect-backfill.js.map +1 -0
- package/dist/shared/extract-json.d.ts +26 -0
- package/dist/shared/extract-json.js +140 -0
- package/dist/shared/extract-json.js.map +1 -0
- package/dist/shared/grpc-retry.d.ts +35 -0
- package/dist/shared/grpc-retry.js +78 -0
- package/dist/shared/grpc-retry.js.map +1 -0
- package/dist/shared/heartbeat.d.ts +22 -0
- package/dist/shared/heartbeat.js +55 -0
- package/dist/shared/heartbeat.js.map +1 -0
- package/dist/shared/json-schema-to-zod.d.ts +13 -0
- package/dist/shared/json-schema-to-zod.js +49 -0
- package/dist/shared/json-schema-to-zod.js.map +1 -0
- package/dist/shared/llm-proxy.d.ts +57 -0
- package/dist/shared/llm-proxy.js +116 -0
- package/dist/shared/llm-proxy.js.map +1 -0
- package/dist/shared/mcp-manager.d.ts +47 -0
- package/dist/shared/mcp-manager.js +118 -0
- package/dist/shared/mcp-manager.js.map +1 -0
- package/dist/shared/mcp-resolver.d.ts +41 -0
- package/dist/shared/mcp-resolver.js +96 -0
- package/dist/shared/mcp-resolver.js.map +1 -0
- package/dist/shared/model-pricing-data.d.ts +18 -0
- package/dist/shared/model-pricing-data.js +78 -0
- package/dist/shared/model-pricing-data.js.map +1 -0
- package/dist/shared/model-pricing.d.ts +24 -0
- package/dist/shared/model-pricing.js +58 -0
- package/dist/shared/model-pricing.js.map +1 -0
- package/dist/shared/model-registry.d.ts +55 -0
- package/dist/shared/model-registry.js +178 -0
- package/dist/shared/model-registry.js.map +1 -0
- package/dist/shared/placeholder-resolver.d.ts +27 -0
- package/dist/shared/placeholder-resolver.js +75 -0
- package/dist/shared/placeholder-resolver.js.map +1 -0
- package/dist/shared/plan-artifact.d.ts +56 -0
- package/dist/shared/plan-artifact.js +98 -0
- package/dist/shared/plan-artifact.js.map +1 -0
- package/dist/shared/skill-relevance.d.ts +65 -0
- package/dist/shared/skill-relevance.js +175 -0
- package/dist/shared/skill-relevance.js.map +1 -0
- package/dist/shared/skill-writer.d.ts +73 -0
- package/dist/shared/skill-writer.js +230 -0
- package/dist/shared/skill-writer.js.map +1 -0
- package/dist/shared/status.d.ts +37 -0
- package/dist/shared/status.js +73 -0
- package/dist/shared/status.js.map +1 -0
- package/dist/shared/subagent-gate.d.ts +41 -0
- package/dist/shared/subagent-gate.js +93 -0
- package/dist/shared/subagent-gate.js.map +1 -0
- package/dist/shared/tool-kind.d.ts +22 -0
- package/dist/shared/tool-kind.js +79 -0
- package/dist/shared/tool-kind.js.map +1 -0
- package/dist/shared/workspace/file-tree.d.ts +13 -0
- package/dist/shared/workspace/file-tree.js +101 -0
- package/dist/shared/workspace/file-tree.js.map +1 -0
- package/dist/shared/workspace/local-backend.d.ts +41 -0
- package/dist/shared/workspace/local-backend.js +113 -0
- package/dist/shared/workspace/local-backend.js.map +1 -0
- package/dist/shared/workspace/platform-dir.d.ts +25 -0
- package/dist/shared/workspace/platform-dir.js +36 -0
- package/dist/shared/workspace/platform-dir.js.map +1 -0
- package/dist/shared/workspace/platform-mount.d.ts +95 -0
- package/dist/shared/workspace/platform-mount.js +157 -0
- package/dist/shared/workspace/platform-mount.js.map +1 -0
- package/dist/shared/workspace/provisioner.d.ts +47 -0
- package/dist/shared/workspace/provisioner.js +84 -0
- package/dist/shared/workspace/provisioner.js.map +1 -0
- package/dist/shared/workspace/sources/empty.d.ts +8 -0
- package/dist/shared/workspace/sources/empty.js +18 -0
- package/dist/shared/workspace/sources/empty.js.map +1 -0
- package/dist/shared/workspace/sources/git.d.ts +22 -0
- package/dist/shared/workspace/sources/git.js +207 -0
- package/dist/shared/workspace/sources/git.js.map +1 -0
- package/dist/shared/workspace/sources/local-path.d.ts +17 -0
- package/dist/shared/workspace/sources/local-path.js +57 -0
- package/dist/shared/workspace/sources/local-path.js.map +1 -0
- package/dist/shared/workspace/types.d.ts +58 -0
- package/dist/shared/workspace/types.js +25 -0
- package/dist/shared/workspace/types.js.map +1 -0
- package/dist/shared/zip-extract.d.ts +30 -0
- package/dist/shared/zip-extract.js +150 -0
- package/dist/shared/zip-extract.js.map +1 -0
- package/dist/worker.d.ts +27 -0
- package/dist/worker.js +65 -0
- package/dist/worker.js.map +1 -0
- package/dist/workflow-engine/clone.d.ts +11 -0
- package/dist/workflow-engine/clone.js +21 -0
- package/dist/workflow-engine/clone.js.map +1 -0
- package/dist/workflow-engine/do-executor.d.ts +27 -0
- package/dist/workflow-engine/do-executor.js +418 -0
- package/dist/workflow-engine/do-executor.js.map +1 -0
- package/dist/workflow-engine/duration.d.ts +12 -0
- package/dist/workflow-engine/duration.js +25 -0
- package/dist/workflow-engine/duration.js.map +1 -0
- package/dist/workflow-engine/error-utils.d.ts +42 -0
- package/dist/workflow-engine/error-utils.js +77 -0
- package/dist/workflow-engine/error-utils.js.map +1 -0
- package/dist/workflow-engine/errors.d.ts +46 -0
- package/dist/workflow-engine/errors.js +105 -0
- package/dist/workflow-engine/errors.js.map +1 -0
- package/dist/workflow-engine/expression-utils.d.ts +60 -0
- package/dist/workflow-engine/expression-utils.js +108 -0
- package/dist/workflow-engine/expression-utils.js.map +1 -0
- package/dist/workflow-engine/expression.d.ts +132 -0
- package/dist/workflow-engine/expression.js +366 -0
- package/dist/workflow-engine/expression.js.map +1 -0
- package/dist/workflow-engine/loader.d.ts +23 -0
- package/dist/workflow-engine/loader.js +429 -0
- package/dist/workflow-engine/loader.js.map +1 -0
- package/dist/workflow-engine/recovery.d.ts +53 -0
- package/dist/workflow-engine/recovery.js +46 -0
- package/dist/workflow-engine/recovery.js.map +1 -0
- package/dist/workflow-engine/resolve.d.ts +83 -0
- package/dist/workflow-engine/resolve.js +257 -0
- package/dist/workflow-engine/resolve.js.map +1 -0
- package/dist/workflow-engine/retry.d.ts +30 -0
- package/dist/workflow-engine/retry.js +97 -0
- package/dist/workflow-engine/retry.js.map +1 -0
- package/dist/workflow-engine/state.d.ts +26 -0
- package/dist/workflow-engine/state.js +49 -0
- package/dist/workflow-engine/state.js.map +1 -0
- package/dist/workflow-engine/task-factory.d.ts +20 -0
- package/dist/workflow-engine/task-factory.js +133 -0
- package/dist/workflow-engine/task-factory.js.map +1 -0
- package/dist/workflow-engine/task-status-accumulator.d.ts +59 -0
- package/dist/workflow-engine/task-status-accumulator.js +164 -0
- package/dist/workflow-engine/task-status-accumulator.js.map +1 -0
- package/dist/workflow-engine/tasks/call-agent-output.d.ts +26 -0
- package/dist/workflow-engine/tasks/call-agent-output.js +109 -0
- package/dist/workflow-engine/tasks/call-agent-output.js.map +1 -0
- package/dist/workflow-engine/tasks/call-agent.d.ts +31 -0
- package/dist/workflow-engine/tasks/call-agent.js +161 -0
- package/dist/workflow-engine/tasks/call-agent.js.map +1 -0
- package/dist/workflow-engine/tasks/call-function.d.ts +19 -0
- package/dist/workflow-engine/tasks/call-function.js +64 -0
- package/dist/workflow-engine/tasks/call-function.js.map +1 -0
- package/dist/workflow-engine/tasks/call-grpc.d.ts +15 -0
- package/dist/workflow-engine/tasks/call-grpc.js +27 -0
- package/dist/workflow-engine/tasks/call-grpc.js.map +1 -0
- package/dist/workflow-engine/tasks/call-http.d.ts +19 -0
- package/dist/workflow-engine/tasks/call-http.js +31 -0
- package/dist/workflow-engine/tasks/call-http.js.map +1 -0
- package/dist/workflow-engine/tasks/for.d.ts +39 -0
- package/dist/workflow-engine/tasks/for.js +154 -0
- package/dist/workflow-engine/tasks/for.js.map +1 -0
- package/dist/workflow-engine/tasks/fork.d.ts +42 -0
- package/dist/workflow-engine/tasks/fork.js +142 -0
- package/dist/workflow-engine/tasks/fork.js.map +1 -0
- package/dist/workflow-engine/tasks/human-input.d.ts +33 -0
- package/dist/workflow-engine/tasks/human-input.js +109 -0
- package/dist/workflow-engine/tasks/human-input.js.map +1 -0
- package/dist/workflow-engine/tasks/listen.d.ts +34 -0
- package/dist/workflow-engine/tasks/listen.js +119 -0
- package/dist/workflow-engine/tasks/listen.js.map +1 -0
- package/dist/workflow-engine/tasks/raise.d.ts +18 -0
- package/dist/workflow-engine/tasks/raise.js +60 -0
- package/dist/workflow-engine/tasks/raise.js.map +1 -0
- package/dist/workflow-engine/tasks/run.d.ts +39 -0
- package/dist/workflow-engine/tasks/run.js +114 -0
- package/dist/workflow-engine/tasks/run.js.map +1 -0
- package/dist/workflow-engine/tasks/set.d.ts +15 -0
- package/dist/workflow-engine/tasks/set.js +31 -0
- package/dist/workflow-engine/tasks/set.js.map +1 -0
- package/dist/workflow-engine/tasks/switch.d.ts +25 -0
- package/dist/workflow-engine/tasks/switch.js +76 -0
- package/dist/workflow-engine/tasks/switch.js.map +1 -0
- package/dist/workflow-engine/tasks/try.d.ts +49 -0
- package/dist/workflow-engine/tasks/try.js +189 -0
- package/dist/workflow-engine/tasks/try.js.map +1 -0
- package/dist/workflow-engine/tasks/wait.d.ts +24 -0
- package/dist/workflow-engine/tasks/wait.js +39 -0
- package/dist/workflow-engine/tasks/wait.js.map +1 -0
- package/dist/workflow-engine/types.d.ts +682 -0
- package/dist/workflow-engine/types.js +47 -0
- package/dist/workflow-engine/types.js.map +1 -0
- package/dist/workflows/call-agent-orchestrator.d.ts +31 -0
- package/dist/workflows/call-agent-orchestrator.js +214 -0
- package/dist/workflows/call-agent-orchestrator.js.map +1 -0
- package/dist/workflows/connect-mcp-server.d.ts +20 -0
- package/dist/workflows/connect-mcp-server.js +113 -0
- package/dist/workflows/connect-mcp-server.js.map +1 -0
- package/dist/workflows/engine-core.d.ts +36 -0
- package/dist/workflows/engine-core.js +272 -0
- package/dist/workflows/engine-core.js.map +1 -0
- package/dist/workflows/execute-from-execution.d.ts +32 -0
- package/dist/workflows/execute-from-execution.js +71 -0
- package/dist/workflows/execute-from-execution.js.map +1 -0
- package/dist/workflows/execute-serverless-workflow.d.ts +32 -0
- package/dist/workflows/execute-serverless-workflow.js +36 -0
- package/dist/workflows/execute-serverless-workflow.js.map +1 -0
- package/dist/workflows/human-input-orchestrator.d.ts +19 -0
- package/dist/workflows/human-input-orchestrator.js +59 -0
- package/dist/workflows/human-input-orchestrator.js.map +1 -0
- package/dist/workflows/index.d.ts +22 -0
- package/dist/workflows/index.js +23 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/listen-orchestrator.d.ts +29 -0
- package/dist/workflows/listen-orchestrator.js +143 -0
- package/dist/workflows/listen-orchestrator.js.map +1 -0
- package/dist/workflows/metrics-sink.d.ts +33 -0
- package/dist/workflows/metrics-sink.js +21 -0
- package/dist/workflows/metrics-sink.js.map +1 -0
- package/dist/workflows/run-orchestrator.d.ts +15 -0
- package/dist/workflows/run-orchestrator.js +27 -0
- package/dist/workflows/run-orchestrator.js.map +1 -0
- package/dist/workflows/types.d.ts +46 -0
- package/dist/workflows/types.js +15 -0
- package/dist/workflows/types.js.map +1 -0
- package/dist/workflows/workflow-signals.d.ts +29 -0
- package/dist/workflows/workflow-signals.js +46 -0
- package/dist/workflows/workflow-signals.js.map +1 -0
- package/package.json +108 -0
- package/src/__test-utils__/__tests__/replay-fetch.test.ts +155 -0
- package/src/__test-utils__/mock-client.ts +44 -0
- package/src/__test-utils__/mock-workspace.ts +28 -0
- package/src/__test-utils__/proto-helpers.ts +41 -0
- package/src/__test-utils__/replay-fetch.ts +523 -0
- package/src/__tests__/bootstrap.test.ts +221 -0
- package/src/__tests__/claimcheck-codec.test.ts +257 -0
- package/src/__tests__/config.test.ts +150 -0
- package/src/__tests__/deterministic-eval-llm.test.ts +269 -0
- package/src/__tests__/deterministic-mcp-hitl.test.ts +405 -0
- package/src/__tests__/golden-e2e.test.ts +250 -0
- package/src/__tests__/ipc-protocol-fixtures.test.ts +66 -0
- package/src/__tests__/ipc-protocol.test.ts +32 -0
- package/src/__tests__/otel-metrics.test.ts +40 -0
- package/src/__tests__/runner-manager.test.ts +55 -0
- package/src/__tests__/runner-token-coordinator.test.ts +166 -0
- package/src/__tests__/runner.test.ts +182 -0
- package/src/__tests__/worker.test.ts +18 -0
- package/src/activities/__tests__/call-agent-contracts.test.ts +483 -0
- package/src/activities/__tests__/call-agent.test.ts +263 -0
- package/src/activities/__tests__/call-function.test.ts +47 -0
- package/src/activities/__tests__/call-grpc.test.ts +39 -0
- package/src/activities/__tests__/call-http.test.ts +288 -0
- package/src/activities/__tests__/call-llm.test.ts +301 -0
- package/src/activities/__tests__/classify-tool-approvals.test.ts +430 -0
- package/src/activities/__tests__/discover-mcp-server.test.ts +641 -0
- package/src/activities/__tests__/ensure-thread.test.ts +96 -0
- package/src/activities/__tests__/error-classifier.test.ts +372 -0
- package/src/activities/__tests__/evaluate-expressions.test.ts +114 -0
- package/src/activities/__tests__/hydrate-workflow-execution.test.ts +321 -0
- package/src/activities/__tests__/notification.test.ts +151 -0
- package/src/activities/__tests__/workflow-event-activities.test.ts +664 -0
- package/src/activities/call-agent-status.ts +130 -0
- package/src/activities/call-agent.ts +302 -0
- package/src/activities/call-eval.ts +333 -0
- package/src/activities/call-function.ts +73 -0
- package/src/activities/call-grpc.ts +140 -0
- package/src/activities/call-http.ts +185 -0
- package/src/activities/call-llm.ts +379 -0
- package/src/activities/call-transform.ts +54 -0
- package/src/activities/call-validate.ts +223 -0
- package/src/activities/classify-tool-approvals.ts +319 -0
- package/src/activities/discover-mcp-server.ts +411 -0
- package/src/activities/emit-event.ts +195 -0
- package/src/activities/ensure-thread.ts +45 -0
- package/src/activities/evaluate-expressions.ts +47 -0
- package/src/activities/execute-cursor/__tests__/approval-gate.test.ts +188 -0
- package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +111 -0
- package/src/activities/execute-cursor/__tests__/cursor-baseurl-routing.test.ts +86 -0
- package/src/activities/execute-cursor/__tests__/cursor-fetch-interceptor-bypass.test.ts +64 -0
- package/src/activities/execute-cursor/__tests__/cursor-mode.test.ts +95 -0
- package/src/activities/execute-cursor/__tests__/cursor-sdk-auth-smoke.test.ts +90 -0
- package/src/activities/execute-cursor/__tests__/delta-enricher.test.ts +242 -0
- package/src/activities/execute-cursor/__tests__/error-classifier-introspection.test.ts +156 -0
- package/src/activities/execute-cursor/__tests__/fetch-interceptor.test.ts +211 -0
- package/src/activities/execute-cursor/__tests__/hitl-ledger.test.ts +298 -0
- package/src/activities/execute-cursor/__tests__/http2-interceptor.test.ts +360 -0
- package/src/activities/execute-cursor/__tests__/message-translator.test.ts +657 -0
- package/src/activities/execute-cursor/__tests__/model-pricing.test.ts +92 -0
- package/src/activities/execute-cursor/__tests__/prompt-builder-delegation.test.ts +101 -0
- package/src/activities/execute-cursor/__tests__/runner-error-regressions.test.ts +144 -0
- package/src/activities/execute-cursor/__tests__/session-lifecycle.test.ts +65 -0
- package/src/activities/execute-cursor/__tests__/skill-resolver.test.ts +265 -0
- package/src/activities/execute-cursor/__tests__/subagent-config.test.ts +107 -0
- package/src/activities/execute-cursor/__tests__/todo-tracker.test.ts +498 -0
- package/src/activities/execute-cursor/__tests__/workspace-provision.test.ts +283 -0
- package/src/activities/execute-cursor/approval-policy.ts +224 -0
- package/src/activities/execute-cursor/approval-state.ts +311 -0
- package/src/activities/execute-cursor/attachment-resolver.ts +78 -0
- package/src/activities/execute-cursor/blueprint-resolver.ts +234 -0
- package/src/activities/execute-cursor/connect-backfill.ts +49 -0
- package/src/activities/execute-cursor/cursor-event-recorder.ts +83 -0
- package/src/activities/execute-cursor/cursor-mode.ts +42 -0
- package/src/activities/execute-cursor/delta-enricher.ts +307 -0
- package/src/activities/execute-cursor/env-resolver.ts +64 -0
- package/src/activities/execute-cursor/error-classifier.ts +247 -0
- package/src/activities/execute-cursor/fetch-interceptor.ts +382 -0
- package/src/activities/execute-cursor/hitl-diagnostics.ts +82 -0
- package/src/activities/execute-cursor/hook-script.ts +159 -0
- package/src/activities/execute-cursor/http2-interceptor.ts +253 -0
- package/src/activities/execute-cursor/index.ts +1439 -0
- package/src/activities/execute-cursor/mcp-config.ts +66 -0
- package/src/activities/execute-cursor/mcp-resolver.ts +271 -0
- package/src/activities/execute-cursor/message-translator.ts +896 -0
- package/src/activities/execute-cursor/model-pricing-data.ts +167 -0
- package/src/activities/execute-cursor/model-pricing.ts +167 -0
- package/src/activities/execute-cursor/placeholder-resolver.ts +109 -0
- package/src/activities/execute-cursor/prompt-builder.ts +349 -0
- package/src/activities/execute-cursor/rejection-capture.ts +100 -0
- package/src/activities/execute-cursor/session-lifecycle.ts +429 -0
- package/src/activities/execute-cursor/skill-resolver.ts +176 -0
- package/src/activities/execute-cursor/subagent-config.ts +62 -0
- package/src/activities/execute-cursor/todo-tracker.ts +133 -0
- package/src/activities/execute-cursor/usage-accumulator.ts +126 -0
- package/src/activities/execute-cursor/workspace-provision.ts +55 -0
- package/src/activities/execute-cursor/workspace-setup.ts +75 -0
- package/src/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.ts +281 -0
- package/src/activities/execute-deep-agent/__tests__/attachment-injector.test.ts +720 -0
- package/src/activities/execute-deep-agent/__tests__/auto-publish.test.ts +146 -0
- package/src/activities/execute-deep-agent/__tests__/environment.test.ts +103 -0
- package/src/activities/execute-deep-agent/__tests__/event-recorder.test.ts +150 -0
- package/src/activities/execute-deep-agent/__tests__/execution-state-extended.test.ts +150 -0
- package/src/activities/execute-deep-agent/__tests__/execution-state.test.ts +157 -0
- package/src/activities/execute-deep-agent/__tests__/hitl-integration.test.ts +223 -0
- package/src/activities/execute-deep-agent/__tests__/hitl.test.ts +244 -0
- package/src/activities/execute-deep-agent/__tests__/index.test.ts +91 -0
- package/src/activities/execute-deep-agent/__tests__/inline-publisher.test.ts +240 -0
- package/src/activities/execute-deep-agent/__tests__/post-stream.test.ts +112 -0
- package/src/activities/execute-deep-agent/__tests__/prompt-builder.test.ts +208 -0
- package/src/activities/execute-deep-agent/__tests__/status-builder.test.ts +1771 -0
- package/src/activities/execute-deep-agent/__tests__/streaming-scheduler.test.ts +199 -0
- package/src/activities/execute-deep-agent/__tests__/streaming-v3.test.ts +527 -0
- package/src/activities/execute-deep-agent/__tests__/streaming.test.ts +508 -0
- package/src/activities/execute-deep-agent/__tests__/subagent-tracker.test.ts +474 -0
- package/src/activities/execute-deep-agent/__tests__/subagent-transformer.test.ts +734 -0
- package/src/activities/execute-deep-agent/__tests__/subagent-wiring.test.ts +71 -0
- package/src/activities/execute-deep-agent/__tests__/summarization-verification.test.ts +323 -0
- package/src/activities/execute-deep-agent/__tests__/v3-event-recorder.test.ts +186 -0
- package/src/activities/execute-deep-agent/__tests__/v3-protocol-normalizer.test.ts +324 -0
- package/src/activities/execute-deep-agent/__tests__/v3-status-builder.test.ts +504 -0
- package/src/activities/execute-deep-agent/__tests__/writeback-coordinator.test.ts +399 -0
- package/src/activities/execute-deep-agent/attachment-injector.ts +470 -0
- package/src/activities/execute-deep-agent/auto-publish.ts +80 -0
- package/src/activities/execute-deep-agent/environment.ts +67 -0
- package/src/activities/execute-deep-agent/event-recorder.ts +95 -0
- package/src/activities/execute-deep-agent/execution-state.ts +87 -0
- package/src/activities/execute-deep-agent/execution-status-writer.ts +19 -0
- package/src/activities/execute-deep-agent/hitl.ts +221 -0
- package/src/activities/execute-deep-agent/index.ts +342 -0
- package/src/activities/execute-deep-agent/inline-publisher.ts +134 -0
- package/src/activities/execute-deep-agent/post-stream.ts +109 -0
- package/src/activities/execute-deep-agent/prompt-builder.ts +264 -0
- package/src/activities/execute-deep-agent/setup.ts +599 -0
- package/src/activities/execute-deep-agent/status-builder-shared.ts +136 -0
- package/src/activities/execute-deep-agent/status-builder.ts +412 -0
- package/src/activities/execute-deep-agent/streaming-scheduler.ts +159 -0
- package/src/activities/execute-deep-agent/streaming-side-effects.ts +89 -0
- package/src/activities/execute-deep-agent/streaming-terminal.ts +96 -0
- package/src/activities/execute-deep-agent/streaming-v3.ts +272 -0
- package/src/activities/execute-deep-agent/streaming.ts +303 -0
- package/src/activities/execute-deep-agent/subagent-tracker.ts +445 -0
- package/src/activities/execute-deep-agent/subagent-transformer.ts +648 -0
- package/src/activities/execute-deep-agent/subagent-wiring.ts +56 -0
- package/src/activities/execute-deep-agent/v3-event-recorder.ts +111 -0
- package/src/activities/execute-deep-agent/v3-events.ts +153 -0
- package/src/activities/execute-deep-agent/v3-protocol-normalizer.ts +264 -0
- package/src/activities/execute-deep-agent/v3-status-builder.ts +490 -0
- package/src/activities/execute-deep-agent/writeback-coordinator.ts +420 -0
- package/src/activities/hydrate-workflow-execution.ts +306 -0
- package/src/activities/notification.ts +71 -0
- package/src/activities/promote-task-output.ts +126 -0
- package/src/activities/run-command.ts +148 -0
- package/src/activities/workflow-event-activities.ts +481 -0
- package/src/bootstrap.ts +173 -0
- package/src/budget/__tests__/tracker.test.ts +293 -0
- package/src/budget/index.ts +9 -0
- package/src/budget/tracker.ts +171 -0
- package/src/claimcheck/compressor.ts +9 -0
- package/src/claimcheck/config.ts +20 -0
- package/src/claimcheck/index.ts +3 -0
- package/src/claimcheck/payload-codec.ts +107 -0
- package/src/client/__tests__/server-contracts.test.ts +149 -0
- package/src/client/__tests__/stigmer-client.test.ts +142 -0
- package/src/client/server-contracts.ts +125 -0
- package/src/client/stigmer-client.ts +339 -0
- package/src/config.ts +185 -0
- package/src/idle-watchdog.ts +28 -0
- package/src/index.ts +48 -0
- package/src/interceptors/workflow-metrics-sink.ts +56 -0
- package/src/ipc-protocol-fixtures.ts +117 -0
- package/src/ipc-protocol.ts +113 -0
- package/src/main.ts +324 -0
- package/src/middleware/__tests__/approval-gate.test.ts +231 -0
- package/src/middleware/__tests__/cost-cap.test.ts +192 -0
- package/src/middleware/__tests__/error-hints.test.ts +90 -0
- package/src/middleware/__tests__/execution-budget.test.ts +138 -0
- package/src/middleware/__tests__/graceful-stop.test.ts +105 -0
- package/src/middleware/__tests__/loop-detection.test.ts +137 -0
- package/src/middleware/__tests__/otel-spans.test.ts +89 -0
- package/src/middleware/__tests__/think-tool.test.ts +26 -0
- package/src/middleware/__tests__/tool-truncation.test.ts +112 -0
- package/src/middleware/approval-gate.ts +179 -0
- package/src/middleware/cost-cap.ts +213 -0
- package/src/middleware/error-hints.ts +136 -0
- package/src/middleware/execution-budget.ts +176 -0
- package/src/middleware/graceful-stop.ts +86 -0
- package/src/middleware/index.ts +70 -0
- package/src/middleware/loop-detection.ts +192 -0
- package/src/middleware/otel-spans.ts +205 -0
- package/src/middleware/think-tool.ts +38 -0
- package/src/middleware/tool-truncation.ts +94 -0
- package/src/middleware/types.ts +114 -0
- package/src/notification/__tests__/provider.test.ts +85 -0
- package/src/notification/__tests__/webhook.test.ts +127 -0
- package/src/notification/index.ts +15 -0
- package/src/notification/provider.ts +52 -0
- package/src/notification/webhook.ts +61 -0
- package/src/otel-metrics.ts +73 -0
- package/src/otel.ts +194 -0
- package/src/runner-manager.ts +652 -0
- package/src/runner-token-coordinator.ts +135 -0
- package/src/runner.ts +380 -0
- package/src/shared/__tests__/approval-policy.test.ts +256 -0
- package/src/shared/__tests__/artifact-storage-extended.test.ts +208 -0
- package/src/shared/__tests__/artifact-storage.test.ts +365 -0
- package/src/shared/__tests__/connect-backfill.test.ts +346 -0
- package/src/shared/__tests__/extract-json.test.ts +153 -0
- package/src/shared/__tests__/grpc-retry-extended.test.ts +176 -0
- package/src/shared/__tests__/grpc-retry.test.ts +172 -0
- package/src/shared/__tests__/json-schema-to-zod.test.ts +227 -0
- package/src/shared/__tests__/llm-proxy.test.ts +179 -0
- package/src/shared/__tests__/mcp-manager.test.ts +154 -0
- package/src/shared/__tests__/model-pricing.test.ts +85 -0
- package/src/shared/__tests__/model-registry.test.ts +197 -0
- package/src/shared/__tests__/placeholder-resolver.test.ts +210 -0
- package/src/shared/__tests__/plan-artifact.test.ts +142 -0
- package/src/shared/__tests__/skill-relevance.test.ts +292 -0
- package/src/shared/__tests__/skill-writer.test.ts +349 -0
- package/src/shared/__tests__/status.test.ts +142 -0
- package/src/shared/__tests__/subagent-gate.test.ts +112 -0
- package/src/shared/__tests__/tool-kind.test.ts +58 -0
- package/src/shared/__tests__/zip-extract.test.ts +204 -0
- package/src/shared/approval-policy.ts +146 -0
- package/src/shared/artifact-storage.ts +207 -0
- package/src/shared/checkpointer/__tests__/factory.test.ts +42 -0
- package/src/shared/checkpointer/__tests__/http-saver.test.ts +176 -0
- package/src/shared/checkpointer/factory.ts +73 -0
- package/src/shared/checkpointer/http-saver.ts +349 -0
- package/src/shared/checkpointer/types.ts +12 -0
- package/src/shared/connect-backfill.ts +162 -0
- package/src/shared/extract-json.ts +153 -0
- package/src/shared/grpc-retry.ts +113 -0
- package/src/shared/heartbeat.ts +70 -0
- package/src/shared/json-schema-to-zod.ts +53 -0
- package/src/shared/llm-proxy.ts +138 -0
- package/src/shared/mcp-manager.ts +150 -0
- package/src/shared/mcp-resolver.ts +150 -0
- package/src/shared/model-pricing-data.ts +109 -0
- package/src/shared/model-pricing.ts +81 -0
- package/src/shared/model-registry.ts +214 -0
- package/src/shared/placeholder-resolver.ts +102 -0
- package/src/shared/plan-artifact.ts +120 -0
- package/src/shared/skill-relevance.ts +222 -0
- package/src/shared/skill-writer.ts +300 -0
- package/src/shared/status.ts +94 -0
- package/src/shared/subagent-gate.ts +117 -0
- package/src/shared/tool-kind.ts +91 -0
- package/src/shared/workspace/__tests__/file-tree.test.ts +210 -0
- package/src/shared/workspace/__tests__/git-source.test.ts +423 -0
- package/src/shared/workspace/__tests__/local-backend-platform.test.ts +259 -0
- package/src/shared/workspace/__tests__/local-backend.test.ts +154 -0
- package/src/shared/workspace/__tests__/platform-mount.test.ts +378 -0
- package/src/shared/workspace/__tests__/provisioner.test.ts +145 -0
- package/src/shared/workspace/file-tree.ts +116 -0
- package/src/shared/workspace/local-backend.ts +140 -0
- package/src/shared/workspace/platform-dir.ts +38 -0
- package/src/shared/workspace/platform-mount.ts +190 -0
- package/src/shared/workspace/provisioner.ts +150 -0
- package/src/shared/workspace/sources/empty.ts +20 -0
- package/src/shared/workspace/sources/git.ts +285 -0
- package/src/shared/workspace/sources/local-path.ts +89 -0
- package/src/shared/workspace/types.ts +69 -0
- package/src/shared/zip-extract.ts +193 -0
- package/src/worker.ts +98 -0
- package/src/workflow-engine/__tests__/do-executor-recovery.test.ts +382 -0
- package/src/workflow-engine/__tests__/do-executor.test.ts +963 -0
- package/src/workflow-engine/__tests__/errors.test.ts +174 -0
- package/src/workflow-engine/__tests__/expression.test.ts +776 -0
- package/src/workflow-engine/__tests__/for.test.ts +575 -0
- package/src/workflow-engine/__tests__/fork.test.ts +838 -0
- package/src/workflow-engine/__tests__/golden-execution.test.ts +1085 -0
- package/src/workflow-engine/__tests__/jq-wasm-spike.test.ts +90 -0
- package/src/workflow-engine/__tests__/loader.test.ts +1393 -0
- package/src/workflow-engine/__tests__/pause-resume.test.ts +267 -0
- package/src/workflow-engine/__tests__/recovery.test.ts +115 -0
- package/src/workflow-engine/__tests__/resolve.test.ts +432 -0
- package/src/workflow-engine/__tests__/retry.test.ts +306 -0
- package/src/workflow-engine/__tests__/state.test.ts +174 -0
- package/src/workflow-engine/__tests__/task-status-accumulator.test.ts +373 -0
- package/src/workflow-engine/__tests__/tasks/call-agent-output.test.ts +120 -0
- package/src/workflow-engine/__tests__/tasks/call-agent.test.ts +816 -0
- package/src/workflow-engine/__tests__/tasks/call-function.test.ts +205 -0
- package/src/workflow-engine/__tests__/tasks/call-grpc.test.ts +133 -0
- package/src/workflow-engine/__tests__/tasks/call-http.test.ts +150 -0
- package/src/workflow-engine/__tests__/tasks/emit-event.test.ts +322 -0
- package/src/workflow-engine/__tests__/tasks/human-input.test.ts +416 -0
- package/src/workflow-engine/__tests__/tasks/listen.test.ts +422 -0
- package/src/workflow-engine/__tests__/tasks/raise.test.ts +166 -0
- package/src/workflow-engine/__tests__/tasks/run.test.ts +272 -0
- package/src/workflow-engine/__tests__/tasks/set.test.ts +127 -0
- package/src/workflow-engine/__tests__/tasks/switch.test.ts +277 -0
- package/src/workflow-engine/__tests__/tasks/try.test.ts +590 -0
- package/src/workflow-engine/__tests__/tasks/wait.test.ts +173 -0
- package/src/workflow-engine/clone.ts +18 -0
- package/src/workflow-engine/do-executor.ts +569 -0
- package/src/workflow-engine/duration.ts +22 -0
- package/src/workflow-engine/error-utils.ts +97 -0
- package/src/workflow-engine/errors.ts +130 -0
- package/src/workflow-engine/expression-utils.ts +129 -0
- package/src/workflow-engine/expression.ts +430 -0
- package/src/workflow-engine/loader.ts +524 -0
- package/src/workflow-engine/recovery.ts +80 -0
- package/src/workflow-engine/resolve.ts +342 -0
- package/src/workflow-engine/retry.ts +109 -0
- package/src/workflow-engine/state.ts +56 -0
- package/src/workflow-engine/task-factory.ts +160 -0
- package/src/workflow-engine/task-status-accumulator.ts +204 -0
- package/src/workflow-engine/tasks/call-agent-output.ts +132 -0
- package/src/workflow-engine/tasks/call-agent.ts +221 -0
- package/src/workflow-engine/tasks/call-function.ts +107 -0
- package/src/workflow-engine/tasks/call-grpc.ts +47 -0
- package/src/workflow-engine/tasks/call-http.ts +51 -0
- package/src/workflow-engine/tasks/for.ts +244 -0
- package/src/workflow-engine/tasks/fork.ts +228 -0
- package/src/workflow-engine/tasks/human-input.ts +147 -0
- package/src/workflow-engine/tasks/listen.ts +166 -0
- package/src/workflow-engine/tasks/raise.ts +81 -0
- package/src/workflow-engine/tasks/run.ts +142 -0
- package/src/workflow-engine/tasks/set.ts +47 -0
- package/src/workflow-engine/tasks/switch.ts +102 -0
- package/src/workflow-engine/tasks/try.ts +274 -0
- package/src/workflow-engine/tasks/wait.ts +53 -0
- package/src/workflow-engine/types.ts +911 -0
- package/src/workflows/__tests__/connect-mcp-server.test.ts +359 -0
- package/src/workflows/__tests__/execute-serverless-workflow.test.ts +277 -0
- package/src/workflows/call-agent-orchestrator.ts +283 -0
- package/src/workflows/connect-mcp-server.ts +152 -0
- package/src/workflows/engine-core.ts +406 -0
- package/src/workflows/execute-from-execution.ts +101 -0
- package/src/workflows/execute-serverless-workflow.ts +60 -0
- package/src/workflows/human-input-orchestrator.ts +76 -0
- package/src/workflows/index.ts +32 -0
- package/src/workflows/listen-orchestrator.ts +200 -0
- package/src/workflows/metrics-sink.ts +48 -0
- package/src/workflows/run-orchestrator.ts +34 -0
- package/src/workflows/types.ts +64 -0
- package/src/workflows/workflow-signals.ts +55 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-function.js","sourceRoot":"","sources":["../../../src/workflow-engine/tasks/call-function.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAYzD;;;;;;GAMG;AACH,SAAS,kBAAkB,CACzB,GAAsB,EACtB,iBAA0B;IAE1B,OAAO;QACL,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM;QAChD,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QACtD,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,KAAK,EAAE;YACL,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,aAAa,EAAE,GAAG,CAAC,aAAa;SACjC;QACD,GAAG,CAAC,GAAG,CAAC,qBAAqB,KAAK,SAAS;YACzC,CAAC,CAAC,EAAE,qBAAqB,EAAE,GAAG,CAAC,qBAAqB,EAAE;YACtD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,uBAAuB;IACzB,QAAQ,CAAS;IACjB,OAAO,CAAsB;IAEtC,YAAY,QAAgB,EAAE,OAA4B;QACxD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK;QACH,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACjC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;YAE3C,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAC7C,UAAqC,EACrC,KAAK,EACL,KAAK,EACL,GAAG,CAAC,mBAAmB,CACxB,CAAC;YAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACnC,IAAI,CAAC,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,UAAU,CAAC;gBACrD,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC3D,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;YACzB,CAAC;YAED,MAAM,WAAW,GACd,KAAK,CAAC,GAAG,CAAC,sBAA6C,IAAI,SAAS,CAAC;YAExE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CACnC,QAAQ,EACR,QAAQ,EACR,KAAK,CAAC,GAAG,EACT;gBACE,mBAAmB,EAAE,WAAW;aACjC,CACF,CAAC;YAEF,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;gBACvB,OAAO,kBAAkB,CACvB,MAA2B,EAC3B,CAAC,CAAC,QAAQ,CAAC,eAAe,CAC3B,CAAC;YACJ,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CallGRPC task builder — evaluates expressions in the gRPC call
|
|
3
|
+
* config, then delegates the actual RPC to a Temporal activity
|
|
4
|
+
* via the `ctx.callGrpc` callback.
|
|
5
|
+
*
|
|
6
|
+
* Mirrors Go's `task_builder_call_grpc.go` workflow-side logic.
|
|
7
|
+
*/
|
|
8
|
+
import type { CallGrpcTaskDef, TaskBuilder, TaskExecutorFn } from "../types.js";
|
|
9
|
+
export declare class CallGrpcTaskBuilder implements TaskBuilder {
|
|
10
|
+
readonly taskName: string;
|
|
11
|
+
readonly taskDef: CallGrpcTaskDef;
|
|
12
|
+
constructor(taskName: string, taskDef: CallGrpcTaskDef);
|
|
13
|
+
build(): TaskExecutorFn;
|
|
14
|
+
shouldRun(): Promise<boolean>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CallGRPC task builder — evaluates expressions in the gRPC call
|
|
3
|
+
* config, then delegates the actual RPC to a Temporal activity
|
|
4
|
+
* via the `ctx.callGrpc` callback.
|
|
5
|
+
*
|
|
6
|
+
* Mirrors Go's `task_builder_call_grpc.go` workflow-side logic.
|
|
7
|
+
*/
|
|
8
|
+
import { resolveConfigExpressions } from "../resolve.js";
|
|
9
|
+
export class CallGrpcTaskBuilder {
|
|
10
|
+
taskName;
|
|
11
|
+
taskDef;
|
|
12
|
+
constructor(taskName, taskDef) {
|
|
13
|
+
this.taskName = taskName;
|
|
14
|
+
this.taskDef = taskDef;
|
|
15
|
+
}
|
|
16
|
+
build() {
|
|
17
|
+
return async (input, state, ctx) => {
|
|
18
|
+
const resolved = await resolveConfigExpressions(this.taskDef.with, input, state, ctx.evaluateExpressions);
|
|
19
|
+
const result = await ctx.callGrpc(resolved, state.env);
|
|
20
|
+
return result;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
async shouldRun() {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=call-grpc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-grpc.js","sourceRoot":"","sources":["../../../src/workflow-engine/tasks/call-grpc.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzD,MAAM,OAAO,mBAAmB;IACrB,QAAQ,CAAS;IACjB,OAAO,CAAkB;IAElC,YAAY,QAAgB,EAAE,OAAwB;QACpD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK;QACH,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACjC,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAC7C,IAAI,CAAC,OAAO,CAAC,IAA0C,EACvD,KAAK,EACL,KAAK,EACL,GAAG,CAAC,mBAAmB,CACxB,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAC/B,QAAqC,EACrC,KAAK,CAAC,GAAG,CACV,CAAC;YAEF,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CallHTTP task builder — evaluates expressions in the HTTP call
|
|
3
|
+
* config, then delegates the actual HTTP request to a Temporal
|
|
4
|
+
* activity via the `ctx.callHttp` callback.
|
|
5
|
+
*
|
|
6
|
+
* Mirrors Go's `task_builder_call_http.go` workflow-side logic.
|
|
7
|
+
*
|
|
8
|
+
* Two-phase evaluation:
|
|
9
|
+
* 1. Here (workflow): resolve `${ $context.field }` jq expressions
|
|
10
|
+
* 2. Activity: resolve `${.secrets.KEY}` runtime placeholders
|
|
11
|
+
*/
|
|
12
|
+
import type { CallHttpTaskDef, TaskBuilder, TaskExecutorFn } from "../types.js";
|
|
13
|
+
export declare class CallHttpTaskBuilder implements TaskBuilder {
|
|
14
|
+
readonly taskName: string;
|
|
15
|
+
readonly taskDef: CallHttpTaskDef;
|
|
16
|
+
constructor(taskName: string, taskDef: CallHttpTaskDef);
|
|
17
|
+
build(): TaskExecutorFn;
|
|
18
|
+
shouldRun(): Promise<boolean>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CallHTTP task builder — evaluates expressions in the HTTP call
|
|
3
|
+
* config, then delegates the actual HTTP request to a Temporal
|
|
4
|
+
* activity via the `ctx.callHttp` callback.
|
|
5
|
+
*
|
|
6
|
+
* Mirrors Go's `task_builder_call_http.go` workflow-side logic.
|
|
7
|
+
*
|
|
8
|
+
* Two-phase evaluation:
|
|
9
|
+
* 1. Here (workflow): resolve `${ $context.field }` jq expressions
|
|
10
|
+
* 2. Activity: resolve `${.secrets.KEY}` runtime placeholders
|
|
11
|
+
*/
|
|
12
|
+
import { resolveConfigExpressions } from "../resolve.js";
|
|
13
|
+
export class CallHttpTaskBuilder {
|
|
14
|
+
taskName;
|
|
15
|
+
taskDef;
|
|
16
|
+
constructor(taskName, taskDef) {
|
|
17
|
+
this.taskName = taskName;
|
|
18
|
+
this.taskDef = taskDef;
|
|
19
|
+
}
|
|
20
|
+
build() {
|
|
21
|
+
return async (input, state, ctx) => {
|
|
22
|
+
const resolved = await resolveConfigExpressions(this.taskDef.with, input, state, ctx.evaluateExpressions);
|
|
23
|
+
const result = await ctx.callHttp(resolved, state.env);
|
|
24
|
+
return result;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
async shouldRun() {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=call-http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-http.js","sourceRoot":"","sources":["../../../src/workflow-engine/tasks/call-http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzD,MAAM,OAAO,mBAAmB;IACrB,QAAQ,CAAS;IACjB,OAAO,CAAkB;IAElC,YAAY,QAAgB,EAAE,OAAwB;QACpD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK;QACH,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACjC,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAC7C,IAAI,CAAC,OAAO,CAAC,IAA0C,EACvD,KAAK,EACL,KAAK,EACL,GAAG,CAAC,mBAAmB,CACxB,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAC/B,QAAqC,EACrC,KAAK,CAAC,GAAG,CACV,CAAC;YAEF,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ForTask executor — iterates over a collection, executing a nested
|
|
3
|
+
* `do` block for each element. Returns an ordered array of per-iteration
|
|
4
|
+
* results.
|
|
5
|
+
*
|
|
6
|
+
* Mirrors Go's `ForTaskBuilder` in `task_builder_for.go`. The key
|
|
7
|
+
* behaviors replicated here:
|
|
8
|
+
*
|
|
9
|
+
* - Collection evaluated once up front via jq (null input, state vars)
|
|
10
|
+
* - Per-iteration state cloned from parent snapshot (state.clone().clearOutput())
|
|
11
|
+
* - Iteration variables bound into $data via addData()
|
|
12
|
+
* - Body executed through recursive executeDoTasks()
|
|
13
|
+
* - Optional `while` condition checked per iteration (after variable binding)
|
|
14
|
+
* - Result is an ordered array of per-iteration outputs
|
|
15
|
+
*
|
|
16
|
+
* T17 parallelism (max_parallelism, batch_size, on_error) is deferred
|
|
17
|
+
* to a future phase — sequential execution only.
|
|
18
|
+
*/
|
|
19
|
+
import type { ForTaskDef, WorkflowModel, WorkflowState, ExpressionEvaluator, TaskExecutionContext, TaskBuilder, TaskDef } from "../types.js";
|
|
20
|
+
/**
|
|
21
|
+
* Executes a `for` task — the sequential iteration engine.
|
|
22
|
+
*
|
|
23
|
+
* Called directly by the do-executor's `runSingleTask()` when it
|
|
24
|
+
* encounters a task with `kind: "for"`.
|
|
25
|
+
*/
|
|
26
|
+
export declare function executeForTask(taskDef: ForTaskDef, input: unknown, state: WorkflowState, doc: WorkflowModel, evaluateExpressions: ExpressionEvaluator, ctx?: TaskExecutionContext): Promise<unknown[]>;
|
|
27
|
+
/**
|
|
28
|
+
* Placeholder builder for `for` tasks. The actual execution is handled
|
|
29
|
+
* by the do-executor via `executeForTask()` — this builder exists only
|
|
30
|
+
* to satisfy the TaskBuilder interface in the task factory.
|
|
31
|
+
*/
|
|
32
|
+
export declare class ForTaskPlaceholderBuilder implements TaskBuilder {
|
|
33
|
+
readonly taskName: string;
|
|
34
|
+
readonly taskDef: TaskDef;
|
|
35
|
+
constructor(taskName: string, taskDef: TaskDef);
|
|
36
|
+
build(): () => Promise<never>;
|
|
37
|
+
shouldRun(): Promise<boolean>;
|
|
38
|
+
}
|
|
39
|
+
export declare const FOR_TASK_KIND: "for";
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ForTask executor — iterates over a collection, executing a nested
|
|
3
|
+
* `do` block for each element. Returns an ordered array of per-iteration
|
|
4
|
+
* results.
|
|
5
|
+
*
|
|
6
|
+
* Mirrors Go's `ForTaskBuilder` in `task_builder_for.go`. The key
|
|
7
|
+
* behaviors replicated here:
|
|
8
|
+
*
|
|
9
|
+
* - Collection evaluated once up front via jq (null input, state vars)
|
|
10
|
+
* - Per-iteration state cloned from parent snapshot (state.clone().clearOutput())
|
|
11
|
+
* - Iteration variables bound into $data via addData()
|
|
12
|
+
* - Body executed through recursive executeDoTasks()
|
|
13
|
+
* - Optional `while` condition checked per iteration (after variable binding)
|
|
14
|
+
* - Result is an ordered array of per-iteration outputs
|
|
15
|
+
*
|
|
16
|
+
* T17 parallelism (max_parallelism, batch_size, on_error) is deferred
|
|
17
|
+
* to a future phase — sequential execution only.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Lazy import of executeDoTasks to break the circular dependency:
|
|
21
|
+
* do-executor.ts → tasks/for.ts → do-executor.ts.
|
|
22
|
+
*
|
|
23
|
+
* The function is resolved on first call and cached.
|
|
24
|
+
*/
|
|
25
|
+
let _executeDoTasks = null;
|
|
26
|
+
async function getExecuteDoTasks() {
|
|
27
|
+
if (_executeDoTasks === null) {
|
|
28
|
+
const mod = await import("../do-executor.js");
|
|
29
|
+
_executeDoTasks = mod.executeDoTasks;
|
|
30
|
+
}
|
|
31
|
+
return _executeDoTasks;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Executes a `for` task — the sequential iteration engine.
|
|
35
|
+
*
|
|
36
|
+
* Called directly by the do-executor's `runSingleTask()` when it
|
|
37
|
+
* encounters a task with `kind: "for"`.
|
|
38
|
+
*/
|
|
39
|
+
export async function executeForTask(taskDef, input, state, doc, evaluateExpressions, ctx) {
|
|
40
|
+
const executeDoTasks = await getExecuteDoTasks();
|
|
41
|
+
const collection = await evaluateCollectionExpression(taskDef.for.in, state, evaluateExpressions);
|
|
42
|
+
const items = toIterableSlice(collection);
|
|
43
|
+
const eachVar = taskDef.for.each ?? "item";
|
|
44
|
+
const atVar = taskDef.for.at ?? "index";
|
|
45
|
+
const results = [];
|
|
46
|
+
for (const item of items) {
|
|
47
|
+
if (ctx?.checkPause)
|
|
48
|
+
await ctx.checkPause();
|
|
49
|
+
const iterState = state.clone();
|
|
50
|
+
iterState.clearOutput();
|
|
51
|
+
iterState.addData({
|
|
52
|
+
[eachVar]: item.value,
|
|
53
|
+
[atVar]: item.key,
|
|
54
|
+
});
|
|
55
|
+
if (taskDef.while !== undefined) {
|
|
56
|
+
const shouldContinue = await evaluateWhileCondition(taskDef.while, iterState, evaluateExpressions);
|
|
57
|
+
if (!shouldContinue)
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
await executeDoTasks(taskDef.do, input, iterState, doc, evaluateExpressions, ctx);
|
|
61
|
+
results.push(iterState.output);
|
|
62
|
+
}
|
|
63
|
+
return results;
|
|
64
|
+
}
|
|
65
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
66
|
+
// Collection Expression Evaluation
|
|
67
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
68
|
+
/**
|
|
69
|
+
* Evaluates the `for.in` expression to obtain the collection.
|
|
70
|
+
* Expression is evaluated with null jq input and state variables,
|
|
71
|
+
* matching Go's `EvaluateString(for.In, nil, state)`.
|
|
72
|
+
*/
|
|
73
|
+
async function evaluateCollectionExpression(expression, state, evaluateExpressions) {
|
|
74
|
+
const rawExpr = expression.startsWith("${ ") && expression.endsWith(" }")
|
|
75
|
+
? expression.slice(3, -2)
|
|
76
|
+
: expression;
|
|
77
|
+
const stateVars = state.getAsMap();
|
|
78
|
+
const results = await evaluateExpressions({ __collection__: rawExpr }, null, stateVars);
|
|
79
|
+
return results.__collection__;
|
|
80
|
+
}
|
|
81
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
82
|
+
// Collection Normalization
|
|
83
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
84
|
+
/**
|
|
85
|
+
* Normalizes the evaluated collection into an ordered list of
|
|
86
|
+
* key/value pairs. Mirrors Go's `toIterableSlice()`.
|
|
87
|
+
*
|
|
88
|
+
* - Array → [{key: 0, value: el}, ...]
|
|
89
|
+
* - Plain object → [{key: "k", value: v}, ...]
|
|
90
|
+
* - Integer N → [{key: 0, value: 0}, ..., {key: N-1, value: N-1}]
|
|
91
|
+
*/
|
|
92
|
+
function toIterableSlice(data) {
|
|
93
|
+
if (Array.isArray(data)) {
|
|
94
|
+
return data.map((value, index) => ({ key: index, value }));
|
|
95
|
+
}
|
|
96
|
+
if (typeof data === "number" && Number.isInteger(data) && data >= 0) {
|
|
97
|
+
return Array.from({ length: data }, (_, i) => ({ key: i, value: i }));
|
|
98
|
+
}
|
|
99
|
+
if (data !== null && typeof data === "object" && !Array.isArray(data)) {
|
|
100
|
+
return Object.entries(data).map(([key, value]) => ({ key, value }));
|
|
101
|
+
}
|
|
102
|
+
const typeDesc = data === null ? "null" : typeof data;
|
|
103
|
+
throw new Error(`for.in expression must evaluate to an array, object, or non-negative integer, ` +
|
|
104
|
+
`got ${typeDesc}: ${JSON.stringify(data)}`);
|
|
105
|
+
}
|
|
106
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
107
|
+
// While Condition
|
|
108
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
109
|
+
/**
|
|
110
|
+
* Evaluates the `while` condition against the current iteration state.
|
|
111
|
+
* Returns true to continue, false to stop. Non-boolean results are
|
|
112
|
+
* treated as false (matching Go's behavior).
|
|
113
|
+
*/
|
|
114
|
+
async function evaluateWhileCondition(expression, state, evaluateExpressions) {
|
|
115
|
+
const rawExpr = expression.startsWith("${ ") && expression.endsWith(" }")
|
|
116
|
+
? expression.slice(3, -2)
|
|
117
|
+
: expression;
|
|
118
|
+
const stateVars = state.getAsMap();
|
|
119
|
+
const results = await evaluateExpressions({ __while__: rawExpr }, null, stateVars);
|
|
120
|
+
const result = results.__while__;
|
|
121
|
+
if (typeof result === "boolean")
|
|
122
|
+
return result;
|
|
123
|
+
if (typeof result === "string") {
|
|
124
|
+
return result.toUpperCase() === "TRUE" || result === "1";
|
|
125
|
+
}
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
129
|
+
// Placeholder Builder (for task-factory.ts registration)
|
|
130
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
131
|
+
/**
|
|
132
|
+
* Placeholder builder for `for` tasks. The actual execution is handled
|
|
133
|
+
* by the do-executor via `executeForTask()` — this builder exists only
|
|
134
|
+
* to satisfy the TaskBuilder interface in the task factory.
|
|
135
|
+
*/
|
|
136
|
+
export class ForTaskPlaceholderBuilder {
|
|
137
|
+
taskName;
|
|
138
|
+
taskDef;
|
|
139
|
+
constructor(taskName, taskDef) {
|
|
140
|
+
this.taskName = taskName;
|
|
141
|
+
this.taskDef = taskDef;
|
|
142
|
+
}
|
|
143
|
+
build() {
|
|
144
|
+
return async () => {
|
|
145
|
+
throw new Error(`ForTaskPlaceholderBuilder.build() should never be called directly. ` +
|
|
146
|
+
`The executor handles 'for' tasks via executeForTask().`);
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
async shouldRun() {
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
export const FOR_TASK_KIND = "for";
|
|
154
|
+
//# sourceMappingURL=for.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"for.js","sourceRoot":"","sources":["../../../src/workflow-engine/tasks/for.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ForkTask executor — runs branches in parallel, collecting results
|
|
3
|
+
* into a map keyed by branch name (non-compete) or returning the
|
|
4
|
+
* first branch to complete (compete/race mode).
|
|
5
|
+
*
|
|
6
|
+
* Mirrors Go's `ForkTaskBuilder` in `task_builder_fork.go`. Key
|
|
7
|
+
* behaviors replicated here:
|
|
8
|
+
*
|
|
9
|
+
* - Branches validated at execution time (>= 1 required)
|
|
10
|
+
* - Parent state snapshot cloned once, then each branch clones from it
|
|
11
|
+
* - Each branch gets isolated state (clone + clearOutput)
|
|
12
|
+
* - Non-compete: Promise.all, output = { branchName: branchOutput }
|
|
13
|
+
* - Compete: first settlement wins, output = winner's raw output
|
|
14
|
+
* - Any non-cancellation error from any branch fails the fork
|
|
15
|
+
* - Parent state is never mutated by branch execution
|
|
16
|
+
*
|
|
17
|
+
* Cancellation of losing branches in compete mode is intentionally
|
|
18
|
+
* omitted to preserve kernel Temporal-agnosticism. Losing branches
|
|
19
|
+
* run to completion but their results are discarded. Go's cancellation
|
|
20
|
+
* via workflow.WithCancel also does not short-circuit in practice
|
|
21
|
+
* (documented in TestWorkflowFork_CompeteCancellationTiming).
|
|
22
|
+
*/
|
|
23
|
+
import type { ForkTaskDef, WorkflowModel, WorkflowState, ExpressionEvaluator, TaskExecutionContext, TaskBuilder, TaskDef } from "../types.js";
|
|
24
|
+
/**
|
|
25
|
+
* Executes a `fork` task — the parallel execution engine.
|
|
26
|
+
*
|
|
27
|
+
* Called directly by the do-executor's `runSingleTask()` when it
|
|
28
|
+
* encounters a task with `kind: "fork"`.
|
|
29
|
+
*/
|
|
30
|
+
export declare function executeForkTask(taskDef: ForkTaskDef, input: unknown, state: WorkflowState, doc: WorkflowModel, evaluateExpressions: ExpressionEvaluator, ctx?: TaskExecutionContext): Promise<unknown>;
|
|
31
|
+
/**
|
|
32
|
+
* Placeholder builder for `fork` tasks. The actual execution is
|
|
33
|
+
* handled by the do-executor via `executeForkTask()` — this builder
|
|
34
|
+
* exists only to satisfy the TaskBuilder interface in the task factory.
|
|
35
|
+
*/
|
|
36
|
+
export declare class ForkTaskPlaceholderBuilder implements TaskBuilder {
|
|
37
|
+
readonly taskName: string;
|
|
38
|
+
readonly taskDef: TaskDef;
|
|
39
|
+
constructor(taskName: string, taskDef: TaskDef);
|
|
40
|
+
build(): () => Promise<never>;
|
|
41
|
+
shouldRun(): Promise<boolean>;
|
|
42
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ForkTask executor — runs branches in parallel, collecting results
|
|
3
|
+
* into a map keyed by branch name (non-compete) or returning the
|
|
4
|
+
* first branch to complete (compete/race mode).
|
|
5
|
+
*
|
|
6
|
+
* Mirrors Go's `ForkTaskBuilder` in `task_builder_fork.go`. Key
|
|
7
|
+
* behaviors replicated here:
|
|
8
|
+
*
|
|
9
|
+
* - Branches validated at execution time (>= 1 required)
|
|
10
|
+
* - Parent state snapshot cloned once, then each branch clones from it
|
|
11
|
+
* - Each branch gets isolated state (clone + clearOutput)
|
|
12
|
+
* - Non-compete: Promise.all, output = { branchName: branchOutput }
|
|
13
|
+
* - Compete: first settlement wins, output = winner's raw output
|
|
14
|
+
* - Any non-cancellation error from any branch fails the fork
|
|
15
|
+
* - Parent state is never mutated by branch execution
|
|
16
|
+
*
|
|
17
|
+
* Cancellation of losing branches in compete mode is intentionally
|
|
18
|
+
* omitted to preserve kernel Temporal-agnosticism. Losing branches
|
|
19
|
+
* run to completion but their results are discarded. Go's cancellation
|
|
20
|
+
* via workflow.WithCancel also does not short-circuit in practice
|
|
21
|
+
* (documented in TestWorkflowFork_CompeteCancellationTiming).
|
|
22
|
+
*/
|
|
23
|
+
let _executeDoTasks = null;
|
|
24
|
+
async function getExecuteDoTasks() {
|
|
25
|
+
if (_executeDoTasks === null) {
|
|
26
|
+
const mod = await import("../do-executor.js");
|
|
27
|
+
_executeDoTasks = mod.executeDoTasks;
|
|
28
|
+
}
|
|
29
|
+
return _executeDoTasks;
|
|
30
|
+
}
|
|
31
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
32
|
+
// Core Execution
|
|
33
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
34
|
+
/**
|
|
35
|
+
* Executes a `fork` task — the parallel execution engine.
|
|
36
|
+
*
|
|
37
|
+
* Called directly by the do-executor's `runSingleTask()` when it
|
|
38
|
+
* encounters a task with `kind: "fork"`.
|
|
39
|
+
*/
|
|
40
|
+
export async function executeForkTask(taskDef, input, state, doc, evaluateExpressions, ctx) {
|
|
41
|
+
const branches = taskDef.fork.branches;
|
|
42
|
+
if (branches.length === 0) {
|
|
43
|
+
throw new Error("Fork task requires at least one branch");
|
|
44
|
+
}
|
|
45
|
+
const executeDoTasks = await getExecuteDoTasks();
|
|
46
|
+
const childSnapshot = state.clone();
|
|
47
|
+
childSnapshot.clearOutput();
|
|
48
|
+
if (taskDef.fork.compete) {
|
|
49
|
+
return executeCompete(branches, input, childSnapshot, doc, evaluateExpressions, ctx, executeDoTasks);
|
|
50
|
+
}
|
|
51
|
+
return executeAllBranches(branches, input, childSnapshot, doc, evaluateExpressions, ctx, executeDoTasks);
|
|
52
|
+
}
|
|
53
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
54
|
+
// Non-Compete: All Branches (Promise.all)
|
|
55
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
56
|
+
/**
|
|
57
|
+
* Runs all branches in parallel. Fails fast on the first error.
|
|
58
|
+
* Returns a map of { branchName: branchOutput }.
|
|
59
|
+
*/
|
|
60
|
+
async function executeAllBranches(branches, input, childSnapshot, doc, evaluateExpressions, ctx, executeDoTasks) {
|
|
61
|
+
const branchPromises = branches.map(async (branch) => {
|
|
62
|
+
const branchState = childSnapshot.clone();
|
|
63
|
+
branchState.clearOutput();
|
|
64
|
+
const branchTasks = normalizeBranchTasks(branch.key, branch.task);
|
|
65
|
+
await executeDoTasks(branchTasks, input, branchState, doc, evaluateExpressions, ctx);
|
|
66
|
+
return { name: branch.key, output: branchState.output };
|
|
67
|
+
});
|
|
68
|
+
const results = await Promise.all(branchPromises);
|
|
69
|
+
const output = {};
|
|
70
|
+
for (const result of results) {
|
|
71
|
+
output[result.name] = result.output;
|
|
72
|
+
}
|
|
73
|
+
return output;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Races all branches. The first branch to resolve determines the
|
|
77
|
+
* fork output. The first branch to reject fails the fork.
|
|
78
|
+
*
|
|
79
|
+
* Losing branches continue running in the background but their
|
|
80
|
+
* results are discarded. Rejections from losing branches are
|
|
81
|
+
* silently caught to prevent unhandled promise rejection warnings.
|
|
82
|
+
*/
|
|
83
|
+
async function executeCompete(branches, input, childSnapshot, doc, evaluateExpressions, ctx, executeDoTasks) {
|
|
84
|
+
const branchPromises = branches.map(async (branch) => {
|
|
85
|
+
const branchState = childSnapshot.clone();
|
|
86
|
+
branchState.clearOutput();
|
|
87
|
+
const branchTasks = normalizeBranchTasks(branch.key, branch.task);
|
|
88
|
+
await executeDoTasks(branchTasks, input, branchState, doc, evaluateExpressions, ctx);
|
|
89
|
+
return { output: branchState.output };
|
|
90
|
+
});
|
|
91
|
+
// Attach no-op catch handlers to all promises so that rejections
|
|
92
|
+
// from losing branches don't surface as unhandled rejections.
|
|
93
|
+
// The actual error propagation happens through the race winner.
|
|
94
|
+
for (const p of branchPromises) {
|
|
95
|
+
p.catch(() => { });
|
|
96
|
+
}
|
|
97
|
+
const winner = await Promise.race(branchPromises);
|
|
98
|
+
return winner.output;
|
|
99
|
+
}
|
|
100
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
101
|
+
// Branch Normalization
|
|
102
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
103
|
+
/**
|
|
104
|
+
* Normalizes a branch's task definition into a TaskList suitable
|
|
105
|
+
* for executeDoTasks(). Branches parsed from YAML are typically
|
|
106
|
+
* DoTaskDefs (the branch contains a `do:` block), but a single
|
|
107
|
+
* leaf task is wrapped into a one-element task list.
|
|
108
|
+
*
|
|
109
|
+
* Mirrors Go's branch wrapping in ForkTaskBuilder.buildOrPostLoad().
|
|
110
|
+
*/
|
|
111
|
+
function normalizeBranchTasks(branchName, task) {
|
|
112
|
+
if (task.kind === "do") {
|
|
113
|
+
return task.do;
|
|
114
|
+
}
|
|
115
|
+
return [{ key: branchName, task }];
|
|
116
|
+
}
|
|
117
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
118
|
+
// Placeholder Builder (for task-factory.ts registration)
|
|
119
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
120
|
+
/**
|
|
121
|
+
* Placeholder builder for `fork` tasks. The actual execution is
|
|
122
|
+
* handled by the do-executor via `executeForkTask()` — this builder
|
|
123
|
+
* exists only to satisfy the TaskBuilder interface in the task factory.
|
|
124
|
+
*/
|
|
125
|
+
export class ForkTaskPlaceholderBuilder {
|
|
126
|
+
taskName;
|
|
127
|
+
taskDef;
|
|
128
|
+
constructor(taskName, taskDef) {
|
|
129
|
+
this.taskName = taskName;
|
|
130
|
+
this.taskDef = taskDef;
|
|
131
|
+
}
|
|
132
|
+
build() {
|
|
133
|
+
return async () => {
|
|
134
|
+
throw new Error(`ForkTaskPlaceholderBuilder.build() should never be called directly. ` +
|
|
135
|
+
`The executor handles 'fork' tasks via executeForkTask().`);
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
async shouldRun() {
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=fork.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fork.js","sourceRoot":"","sources":["../../../src/workflow-engine/tasks/fork.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Human input task executor — HITL approval gate.
|
|
3
|
+
*
|
|
4
|
+
* Pauses workflow execution until a human reviewer responds via signal.
|
|
5
|
+
* Supports configurable timeout with policies (fail, auto-approve, auto-deny).
|
|
6
|
+
*
|
|
7
|
+
* The kernel validates the config and delegates to `ctx.awaitHumanInput()`
|
|
8
|
+
* which is wired to the Temporal workflow layer's signal/timer selector.
|
|
9
|
+
*
|
|
10
|
+
* Outcome routing: when an outcome defines a `then` field (e.g.,
|
|
11
|
+
* `then: "gatherMore"`), the returned output includes a
|
|
12
|
+
* `__flow_directive__` that the do-executor uses to jump to the
|
|
13
|
+
* named task — the same mechanism used by switch and validate tasks.
|
|
14
|
+
*
|
|
15
|
+
* YAML shape (via loader reclassification from call: human_input):
|
|
16
|
+
* - requireApproval:
|
|
17
|
+
* call: human_input
|
|
18
|
+
* with:
|
|
19
|
+
* prompt: "Please review this deployment"
|
|
20
|
+
* timeout: 300
|
|
21
|
+
* on_timeout: approve
|
|
22
|
+
* outcomes:
|
|
23
|
+
* - name: approve
|
|
24
|
+
* - name: deny
|
|
25
|
+
* - name: revise
|
|
26
|
+
* then: gatherMore
|
|
27
|
+
*/
|
|
28
|
+
import type { HumanInputTaskDef, WorkflowState, TaskExecutionContext } from "../types.js";
|
|
29
|
+
/**
|
|
30
|
+
* Executes a human_input task. Called from `runSingleTask` in do-executor
|
|
31
|
+
* when the task kind is "human_input".
|
|
32
|
+
*/
|
|
33
|
+
export declare function executeHumanInputTask(taskDef: HumanInputTaskDef, taskName: string, state: WorkflowState, ctx: TaskExecutionContext): Promise<unknown>;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Human input task executor — HITL approval gate.
|
|
3
|
+
*
|
|
4
|
+
* Pauses workflow execution until a human reviewer responds via signal.
|
|
5
|
+
* Supports configurable timeout with policies (fail, auto-approve, auto-deny).
|
|
6
|
+
*
|
|
7
|
+
* The kernel validates the config and delegates to `ctx.awaitHumanInput()`
|
|
8
|
+
* which is wired to the Temporal workflow layer's signal/timer selector.
|
|
9
|
+
*
|
|
10
|
+
* Outcome routing: when an outcome defines a `then` field (e.g.,
|
|
11
|
+
* `then: "gatherMore"`), the returned output includes a
|
|
12
|
+
* `__flow_directive__` that the do-executor uses to jump to the
|
|
13
|
+
* named task — the same mechanism used by switch and validate tasks.
|
|
14
|
+
*
|
|
15
|
+
* YAML shape (via loader reclassification from call: human_input):
|
|
16
|
+
* - requireApproval:
|
|
17
|
+
* call: human_input
|
|
18
|
+
* with:
|
|
19
|
+
* prompt: "Please review this deployment"
|
|
20
|
+
* timeout: 300
|
|
21
|
+
* on_timeout: approve
|
|
22
|
+
* outcomes:
|
|
23
|
+
* - name: approve
|
|
24
|
+
* - name: deny
|
|
25
|
+
* - name: revise
|
|
26
|
+
* then: gatherMore
|
|
27
|
+
*/
|
|
28
|
+
import { resolveEmbeddedExpressions } from "../resolve.js";
|
|
29
|
+
import { isStrictExpr } from "../expression-utils.js";
|
|
30
|
+
const SIGNAL_PREFIX = "human_input_";
|
|
31
|
+
const DEFAULT_TIMEOUT_SECONDS = 0;
|
|
32
|
+
const DEFAULT_ON_TIMEOUT = "fail";
|
|
33
|
+
/**
|
|
34
|
+
* Executes a human_input task. Called from `runSingleTask` in do-executor
|
|
35
|
+
* when the task kind is "human_input".
|
|
36
|
+
*/
|
|
37
|
+
export async function executeHumanInputTask(taskDef, taskName, state, ctx) {
|
|
38
|
+
const config = taskDef.humanInput;
|
|
39
|
+
validateConfig(config, taskName);
|
|
40
|
+
const signalName = SIGNAL_PREFIX + taskName;
|
|
41
|
+
const timeoutSeconds = config.timeout ?? DEFAULT_TIMEOUT_SECONDS;
|
|
42
|
+
const onTimeout = config.onTimeout ?? DEFAULT_ON_TIMEOUT;
|
|
43
|
+
const resolvedPrompt = await resolvePromptExpressions(config.prompt, state, ctx);
|
|
44
|
+
const approvalRequestedAt = Date.now();
|
|
45
|
+
ctx.taskStatusAccumulator?.taskWaitingApproval(taskName);
|
|
46
|
+
if (ctx.emitEvents) {
|
|
47
|
+
await ctx.emitEvents([{
|
|
48
|
+
type: "approval_requested",
|
|
49
|
+
taskName,
|
|
50
|
+
occurredAt: new Date().toISOString(),
|
|
51
|
+
prompt: resolvedPrompt,
|
|
52
|
+
approvers: config.approvers ?? [],
|
|
53
|
+
timeoutSeconds,
|
|
54
|
+
outcomes: (config.outcomes ?? []).map((o) => ({
|
|
55
|
+
name: o.name,
|
|
56
|
+
label: o.label ?? "",
|
|
57
|
+
})),
|
|
58
|
+
formSchema: config.formSchema,
|
|
59
|
+
}]);
|
|
60
|
+
}
|
|
61
|
+
const result = await ctx.awaitHumanInput({
|
|
62
|
+
signalName,
|
|
63
|
+
timeoutSeconds,
|
|
64
|
+
onTimeout,
|
|
65
|
+
});
|
|
66
|
+
if (ctx.emitEvents) {
|
|
67
|
+
await ctx.emitEvents([{
|
|
68
|
+
type: "approval_resolved",
|
|
69
|
+
taskName,
|
|
70
|
+
occurredAt: new Date().toISOString(),
|
|
71
|
+
outcome: result.outcome,
|
|
72
|
+
resolvedBy: result.reviewer ?? "",
|
|
73
|
+
comment: "",
|
|
74
|
+
waitDurationMs: Date.now() - approvalRequestedAt,
|
|
75
|
+
autoResolved: result.auto_resolved ?? false,
|
|
76
|
+
}]);
|
|
77
|
+
}
|
|
78
|
+
state.addData({ [taskName]: result });
|
|
79
|
+
const selectedOutcome = config.outcomes?.find(o => o.name === result.outcome);
|
|
80
|
+
if (selectedOutcome?.then) {
|
|
81
|
+
return { ...result, __flow_directive__: selectedOutcome.then };
|
|
82
|
+
}
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
function validateConfig(config, taskName) {
|
|
86
|
+
if (!config.prompt) {
|
|
87
|
+
throw new Error(`human_input task '${taskName}': 'prompt' is required`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Resolves `${ ... }` expressions in the prompt string against the
|
|
92
|
+
* current workflow state. Handles both strict (whole-value) and embedded
|
|
93
|
+
* (inline fragment) expression patterns.
|
|
94
|
+
*/
|
|
95
|
+
async function resolvePromptExpressions(prompt, state, ctx) {
|
|
96
|
+
const stateVars = state.getAsMap();
|
|
97
|
+
// Strict expression: entire prompt is a single expression
|
|
98
|
+
if (isStrictExpr(prompt)) {
|
|
99
|
+
const expr = prompt.slice(3, -2);
|
|
100
|
+
const results = await ctx.evaluateExpressions({ __prompt__: expr }, null, stateVars);
|
|
101
|
+
const resolved = results.__prompt__;
|
|
102
|
+
return typeof resolved === "string" ? resolved : JSON.stringify(resolved ?? "");
|
|
103
|
+
}
|
|
104
|
+
// Embedded expressions: inline `${ ... }` fragments within the prompt text
|
|
105
|
+
const wrapper = { prompt };
|
|
106
|
+
await resolveEmbeddedExpressions(wrapper, null, stateVars, ctx.evaluateExpressions);
|
|
107
|
+
return wrapper.prompt;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=human-input.js.map
|