@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,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor SDK event recorder for capturing raw SDKMessage events.
|
|
3
|
+
*
|
|
4
|
+
* Activated by the CURSOR_EVENT_RECORD_DIR environment variable. When set,
|
|
5
|
+
* the Cursor streaming loop records every SDKMessage and flushes them
|
|
6
|
+
* atomically to a JSONL file after the stream completes.
|
|
7
|
+
*
|
|
8
|
+
* This is development infrastructure for validating the agent_id-based
|
|
9
|
+
* sub-agent routing hypothesis. The captured events reveal whether
|
|
10
|
+
* sub-agent events carry distinct agent_id values and whether they
|
|
11
|
+
* flow through the parent's run.stream() at all.
|
|
12
|
+
*
|
|
13
|
+
* Mirrors the native harness's v3-event-recorder.ts / V3_EVENT_RECORD_DIR.
|
|
14
|
+
*/
|
|
15
|
+
import { writeFile, mkdir } from "node:fs/promises";
|
|
16
|
+
import { join } from "node:path";
|
|
17
|
+
/**
|
|
18
|
+
* Create a recorder if CURSOR_EVENT_RECORD_DIR is set, otherwise undefined.
|
|
19
|
+
* The caller does `recorder?.record(event, seq)` — zero overhead when off.
|
|
20
|
+
*/
|
|
21
|
+
export function createCursorEventRecorder(executionId) {
|
|
22
|
+
const recordDir = process.env.CURSOR_EVENT_RECORD_DIR;
|
|
23
|
+
if (!recordDir)
|
|
24
|
+
return undefined;
|
|
25
|
+
return new FileCursorEventRecorder(executionId, recordDir);
|
|
26
|
+
}
|
|
27
|
+
class FileCursorEventRecorder {
|
|
28
|
+
executionId;
|
|
29
|
+
outputDir;
|
|
30
|
+
lines = [];
|
|
31
|
+
constructor(executionId, outputDir) {
|
|
32
|
+
this.executionId = executionId;
|
|
33
|
+
this.outputDir = outputDir;
|
|
34
|
+
}
|
|
35
|
+
record(event, seq) {
|
|
36
|
+
const entry = {
|
|
37
|
+
seq,
|
|
38
|
+
capturedAt: new Date().toISOString(),
|
|
39
|
+
type: event.type,
|
|
40
|
+
agent_id: event.agent_id,
|
|
41
|
+
run_id: event.run_id,
|
|
42
|
+
event: safeClone(event),
|
|
43
|
+
};
|
|
44
|
+
this.lines.push(JSON.stringify(entry));
|
|
45
|
+
}
|
|
46
|
+
async flush() {
|
|
47
|
+
if (this.lines.length === 0)
|
|
48
|
+
return;
|
|
49
|
+
await mkdir(this.outputDir, { recursive: true });
|
|
50
|
+
const filePath = join(this.outputDir, `${this.executionId}.cursor-events.jsonl`);
|
|
51
|
+
await writeFile(filePath, this.lines.join("\n") + "\n");
|
|
52
|
+
console.log(`CursorEventRecorder: flushed ${this.lines.length} events to ${filePath}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function safeClone(obj) {
|
|
56
|
+
try {
|
|
57
|
+
return JSON.parse(JSON.stringify(obj));
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
if (obj && typeof obj === "object") {
|
|
61
|
+
return { _serializationError: true, keys: Object.keys(obj) };
|
|
62
|
+
}
|
|
63
|
+
return { _serializationError: true };
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=cursor-event-recorder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-event-recorder.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/cursor-event-recorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAQjC;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,WAAmB;IAEnB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IACtD,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,OAAO,IAAI,uBAAuB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,uBAAuB;IAIR;IACA;IAJF,KAAK,GAAa,EAAE,CAAC;IAEtC,YACmB,WAAmB,EACnB,SAAiB;QADjB,gBAAW,GAAX,WAAW,CAAQ;QACnB,cAAS,GAAT,SAAS,CAAQ;IACjC,CAAC;IAEJ,MAAM,CAAC,KAAiB,EAAE,GAAW;QACnC,MAAM,KAAK,GAAG;YACZ,GAAG;YACH,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;SACxB,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEpC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjD,MAAM,QAAQ,GAAG,IAAI,CACnB,IAAI,CAAC,SAAS,EACd,GAAG,IAAI,CAAC,WAAW,sBAAsB,CAC1C,CAAC;QAEF,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CACT,gCAAgC,IAAI,CAAC,KAAK,CAAC,MAAM,cAAc,QAAQ,EAAE,CAC1E,CAAC;IACJ,CAAC;CACF;AAED,SAAS,SAAS,CAAC,GAAY;IAC7B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/D,CAAC;QACD,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor mode determination for sessions using HARNESS_CURSOR.
|
|
3
|
+
*
|
|
4
|
+
* Cloud Cursor agents are DISABLED platform-wide right now, so every session
|
|
5
|
+
* — including git-backed ones — runs as a LOCAL Cursor agent.
|
|
6
|
+
*
|
|
7
|
+
* Why cloud is disabled: Cursor cloud agents clone repositories via Cursor's
|
|
8
|
+
* own GitHub App connection and accept no per-request git credential. Stigmer
|
|
9
|
+
* collects the user's git credentials but has no way to hand them to Cursor's
|
|
10
|
+
* cloud clone, so git-backed cloud sessions fail for user repos. Until that
|
|
11
|
+
* credential story is resolved, Stigmer provisions the workspace itself
|
|
12
|
+
* (including git clones, using the user's GITHUB_TOKEN) and runs a local
|
|
13
|
+
* Cursor agent against it.
|
|
14
|
+
*/
|
|
15
|
+
import { CursorMode } from "@stigmer/protos/ai/stigmer/agentic/session/v1/enum_pb";
|
|
16
|
+
import type { WorkspaceEntry } from "@stigmer/protos/ai/stigmer/agentic/session/v1/workspace_pb";
|
|
17
|
+
/**
|
|
18
|
+
* Determine the CursorMode for a session.
|
|
19
|
+
*
|
|
20
|
+
* Always returns LOCAL while cloud Cursor agents are disabled (see the
|
|
21
|
+
* file-level note). The parameters are retained so the previous
|
|
22
|
+
* workspace/flag-based mode-selection logic (preserved in git history) can be
|
|
23
|
+
* restored when cloud is re-enabled.
|
|
24
|
+
*/
|
|
25
|
+
export declare function determineCursorMode(_workspaceEntries: WorkspaceEntry[], _cloudModeEnabled: boolean): CursorMode;
|
|
26
|
+
/**
|
|
27
|
+
* Type guard that returns true when the mode is CLOUD.
|
|
28
|
+
*
|
|
29
|
+
* Treats UNSPECIFIED as LOCAL for backward compatibility with sessions
|
|
30
|
+
* created before the cursor_mode field existed.
|
|
31
|
+
*/
|
|
32
|
+
export declare function isCloudMode(mode: CursorMode): boolean;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor mode determination for sessions using HARNESS_CURSOR.
|
|
3
|
+
*
|
|
4
|
+
* Cloud Cursor agents are DISABLED platform-wide right now, so every session
|
|
5
|
+
* — including git-backed ones — runs as a LOCAL Cursor agent.
|
|
6
|
+
*
|
|
7
|
+
* Why cloud is disabled: Cursor cloud agents clone repositories via Cursor's
|
|
8
|
+
* own GitHub App connection and accept no per-request git credential. Stigmer
|
|
9
|
+
* collects the user's git credentials but has no way to hand them to Cursor's
|
|
10
|
+
* cloud clone, so git-backed cloud sessions fail for user repos. Until that
|
|
11
|
+
* credential story is resolved, Stigmer provisions the workspace itself
|
|
12
|
+
* (including git clones, using the user's GITHUB_TOKEN) and runs a local
|
|
13
|
+
* Cursor agent against it.
|
|
14
|
+
*/
|
|
15
|
+
import { CursorMode } from "@stigmer/protos/ai/stigmer/agentic/session/v1/enum_pb";
|
|
16
|
+
/**
|
|
17
|
+
* Determine the CursorMode for a session.
|
|
18
|
+
*
|
|
19
|
+
* Always returns LOCAL while cloud Cursor agents are disabled (see the
|
|
20
|
+
* file-level note). The parameters are retained so the previous
|
|
21
|
+
* workspace/flag-based mode-selection logic (preserved in git history) can be
|
|
22
|
+
* restored when cloud is re-enabled.
|
|
23
|
+
*/
|
|
24
|
+
export function determineCursorMode(_workspaceEntries, _cloudModeEnabled) {
|
|
25
|
+
return CursorMode.LOCAL;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Type guard that returns true when the mode is CLOUD.
|
|
29
|
+
*
|
|
30
|
+
* Treats UNSPECIFIED as LOCAL for backward compatibility with sessions
|
|
31
|
+
* created before the cursor_mode field existed.
|
|
32
|
+
*/
|
|
33
|
+
export function isCloudMode(mode) {
|
|
34
|
+
return mode === CursorMode.CLOUD;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=cursor-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-mode.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/cursor-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uDAAuD,CAAC;AAGnF;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,iBAAmC,EACnC,iBAA0B;IAE1B,OAAO,UAAU,CAAC,KAAK,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAAgB;IAC1C,OAAO,IAAI,KAAK,UAAU,CAAC,KAAK,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DeltaEnricher processes Cursor SDK InteractionUpdate events to provide
|
|
3
|
+
* real-time enrichments that the stream channel alone cannot deliver.
|
|
4
|
+
*
|
|
5
|
+
* The Cursor SDK provides two concurrent event channels:
|
|
6
|
+
* - run.stream() (SDKMessage) — coarse-grained, post-hoc events
|
|
7
|
+
* - onDelta (InteractionUpdate) — fine-grained, real-time deltas
|
|
8
|
+
*
|
|
9
|
+
* The stream channel remains the source of truth for message construction.
|
|
10
|
+
* The delta channel provides supplementary real-time signals:
|
|
11
|
+
* - shell-output-delta: live stdout/stderr from running shell commands
|
|
12
|
+
* - tool-call-started/completed: precise lifecycle timestamps
|
|
13
|
+
* - thinking-completed: accurate thinking duration from the SDK
|
|
14
|
+
*
|
|
15
|
+
* Concurrency model: Node.js is single-threaded. The onDelta callback fires
|
|
16
|
+
* between iterations of the for-await stream loop (during event loop yields).
|
|
17
|
+
* The enricher buffers data internally; the stream loop calls
|
|
18
|
+
* applyEnrichments() on each iteration to flush buffered state onto the
|
|
19
|
+
* message array. No locks needed — access is always sequential.
|
|
20
|
+
*
|
|
21
|
+
* Design invariant: The enricher never creates messages or tool calls.
|
|
22
|
+
* It only mutates existing ones that the MessageAccumulator has created.
|
|
23
|
+
* If a delta arrives before its corresponding stream event (e.g.,
|
|
24
|
+
* shell-output-delta before tool_call running), the data is buffered
|
|
25
|
+
* and applied retroactively on the next applyEnrichments() call that
|
|
26
|
+
* finds the matching ToolCall.
|
|
27
|
+
*/
|
|
28
|
+
import type { AgentMessage } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
29
|
+
import type { InteractionUpdate } from "@cursor/sdk";
|
|
30
|
+
export declare class DeltaEnricher {
|
|
31
|
+
private shellOutputByCallId;
|
|
32
|
+
private timingByCallId;
|
|
33
|
+
private thinkingDurationMs;
|
|
34
|
+
private _isDirty;
|
|
35
|
+
private lastPersistTime;
|
|
36
|
+
private lastShellCallId;
|
|
37
|
+
/**
|
|
38
|
+
* Minimum interval between persist-triggering dirty flags (milliseconds).
|
|
39
|
+
* Prevents excessive backend writes during rapid shell output bursts.
|
|
40
|
+
* Matches the Python agent-runner's update_scheduler interval.
|
|
41
|
+
*/
|
|
42
|
+
static readonly PERSIST_DEBOUNCE_MS = 500;
|
|
43
|
+
/**
|
|
44
|
+
* Process a single InteractionUpdate from the onDelta callback.
|
|
45
|
+
* Buffers enrichment data for later application by applyEnrichments().
|
|
46
|
+
*
|
|
47
|
+
* Called from the onDelta callback (between stream loop iterations).
|
|
48
|
+
*/
|
|
49
|
+
processDelta(update: InteractionUpdate): void;
|
|
50
|
+
/**
|
|
51
|
+
* Apply all buffered enrichments to the current message array.
|
|
52
|
+
* Called from the stream loop after each processEvent() iteration.
|
|
53
|
+
*
|
|
54
|
+
* Returns true if any enrichments were applied (messages were mutated).
|
|
55
|
+
*/
|
|
56
|
+
applyEnrichments(messages: AgentMessage[]): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Whether the enricher has pending data that warrants an immediate persist.
|
|
59
|
+
* Only returns true when meaningful UI-visible data has arrived AND the
|
|
60
|
+
* debounce interval has elapsed since the last persist.
|
|
61
|
+
*/
|
|
62
|
+
get isDirty(): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Acknowledge that a persist has occurred. Resets the dirty flag and
|
|
65
|
+
* records the persist timestamp for debounce calculations.
|
|
66
|
+
*/
|
|
67
|
+
markPersisted(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Finalize streaming state and reconcile tool call statuses.
|
|
70
|
+
*
|
|
71
|
+
* Called after the stream loop ends (alongside accumulator.finalize()).
|
|
72
|
+
* Two passes:
|
|
73
|
+
* 1. Clear `isStreaming` on all tool calls (existing behavior).
|
|
74
|
+
* 2. Reconciliation sweep: any tool call still RUNNING with evidence
|
|
75
|
+
* of completion (completedAt set or result non-empty) is promoted
|
|
76
|
+
* to COMPLETED. This is the catch-all safety net — when the stream
|
|
77
|
+
* ends, no tool call should remain in a non-terminal status.
|
|
78
|
+
*/
|
|
79
|
+
finalize(messages: AgentMessage[]): void;
|
|
80
|
+
private handleShellOutputDelta;
|
|
81
|
+
private handleToolCallStarted;
|
|
82
|
+
private handleToolCallCompleted;
|
|
83
|
+
private getOrCreateTiming;
|
|
84
|
+
private applyShellOutput;
|
|
85
|
+
private applyTiming;
|
|
86
|
+
private applyThinkingDuration;
|
|
87
|
+
}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DeltaEnricher processes Cursor SDK InteractionUpdate events to provide
|
|
3
|
+
* real-time enrichments that the stream channel alone cannot deliver.
|
|
4
|
+
*
|
|
5
|
+
* The Cursor SDK provides two concurrent event channels:
|
|
6
|
+
* - run.stream() (SDKMessage) — coarse-grained, post-hoc events
|
|
7
|
+
* - onDelta (InteractionUpdate) — fine-grained, real-time deltas
|
|
8
|
+
*
|
|
9
|
+
* The stream channel remains the source of truth for message construction.
|
|
10
|
+
* The delta channel provides supplementary real-time signals:
|
|
11
|
+
* - shell-output-delta: live stdout/stderr from running shell commands
|
|
12
|
+
* - tool-call-started/completed: precise lifecycle timestamps
|
|
13
|
+
* - thinking-completed: accurate thinking duration from the SDK
|
|
14
|
+
*
|
|
15
|
+
* Concurrency model: Node.js is single-threaded. The onDelta callback fires
|
|
16
|
+
* between iterations of the for-await stream loop (during event loop yields).
|
|
17
|
+
* The enricher buffers data internally; the stream loop calls
|
|
18
|
+
* applyEnrichments() on each iteration to flush buffered state onto the
|
|
19
|
+
* message array. No locks needed — access is always sequential.
|
|
20
|
+
*
|
|
21
|
+
* Design invariant: The enricher never creates messages or tool calls.
|
|
22
|
+
* It only mutates existing ones that the MessageAccumulator has created.
|
|
23
|
+
* If a delta arrives before its corresponding stream event (e.g.,
|
|
24
|
+
* shell-output-delta before tool_call running), the data is buffered
|
|
25
|
+
* and applied retroactively on the next applyEnrichments() call that
|
|
26
|
+
* finds the matching ToolCall.
|
|
27
|
+
*/
|
|
28
|
+
import { ToolCallStatus, ToolCallStreamingSource } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
29
|
+
import { utcTimestamp } from "./message-translator.js";
|
|
30
|
+
export class DeltaEnricher {
|
|
31
|
+
shellOutputByCallId = new Map();
|
|
32
|
+
timingByCallId = new Map();
|
|
33
|
+
thinkingDurationMs;
|
|
34
|
+
_isDirty = false;
|
|
35
|
+
lastPersistTime = 0;
|
|
36
|
+
lastShellCallId;
|
|
37
|
+
/**
|
|
38
|
+
* Minimum interval between persist-triggering dirty flags (milliseconds).
|
|
39
|
+
* Prevents excessive backend writes during rapid shell output bursts.
|
|
40
|
+
* Matches the Python agent-runner's update_scheduler interval.
|
|
41
|
+
*/
|
|
42
|
+
static PERSIST_DEBOUNCE_MS = 500;
|
|
43
|
+
/**
|
|
44
|
+
* Process a single InteractionUpdate from the onDelta callback.
|
|
45
|
+
* Buffers enrichment data for later application by applyEnrichments().
|
|
46
|
+
*
|
|
47
|
+
* Called from the onDelta callback (between stream loop iterations).
|
|
48
|
+
*/
|
|
49
|
+
processDelta(update) {
|
|
50
|
+
switch (update.type) {
|
|
51
|
+
case "shell-output-delta":
|
|
52
|
+
this.handleShellOutputDelta(update);
|
|
53
|
+
break;
|
|
54
|
+
case "tool-call-started":
|
|
55
|
+
this.handleToolCallStarted(update);
|
|
56
|
+
break;
|
|
57
|
+
case "tool-call-completed":
|
|
58
|
+
this.handleToolCallCompleted(update);
|
|
59
|
+
break;
|
|
60
|
+
case "thinking-completed":
|
|
61
|
+
this.thinkingDurationMs = update.thinkingDurationMs;
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Apply all buffered enrichments to the current message array.
|
|
67
|
+
* Called from the stream loop after each processEvent() iteration.
|
|
68
|
+
*
|
|
69
|
+
* Returns true if any enrichments were applied (messages were mutated).
|
|
70
|
+
*/
|
|
71
|
+
applyEnrichments(messages) {
|
|
72
|
+
let applied = false;
|
|
73
|
+
if (this.shellOutputByCallId.size > 0) {
|
|
74
|
+
applied = this.applyShellOutput(messages) || applied;
|
|
75
|
+
}
|
|
76
|
+
if (this.timingByCallId.size > 0) {
|
|
77
|
+
applied = this.applyTiming(messages) || applied;
|
|
78
|
+
}
|
|
79
|
+
if (this.thinkingDurationMs !== undefined) {
|
|
80
|
+
applied = this.applyThinkingDuration(messages) || applied;
|
|
81
|
+
}
|
|
82
|
+
return applied;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Whether the enricher has pending data that warrants an immediate persist.
|
|
86
|
+
* Only returns true when meaningful UI-visible data has arrived AND the
|
|
87
|
+
* debounce interval has elapsed since the last persist.
|
|
88
|
+
*/
|
|
89
|
+
get isDirty() {
|
|
90
|
+
if (!this._isDirty)
|
|
91
|
+
return false;
|
|
92
|
+
const now = Date.now();
|
|
93
|
+
return (now - this.lastPersistTime) >= DeltaEnricher.PERSIST_DEBOUNCE_MS;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Acknowledge that a persist has occurred. Resets the dirty flag and
|
|
97
|
+
* records the persist timestamp for debounce calculations.
|
|
98
|
+
*/
|
|
99
|
+
markPersisted() {
|
|
100
|
+
this._isDirty = false;
|
|
101
|
+
this.lastPersistTime = Date.now();
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Finalize streaming state and reconcile tool call statuses.
|
|
105
|
+
*
|
|
106
|
+
* Called after the stream loop ends (alongside accumulator.finalize()).
|
|
107
|
+
* Two passes:
|
|
108
|
+
* 1. Clear `isStreaming` on all tool calls (existing behavior).
|
|
109
|
+
* 2. Reconciliation sweep: any tool call still RUNNING with evidence
|
|
110
|
+
* of completion (completedAt set or result non-empty) is promoted
|
|
111
|
+
* to COMPLETED. This is the catch-all safety net — when the stream
|
|
112
|
+
* ends, no tool call should remain in a non-terminal status.
|
|
113
|
+
*/
|
|
114
|
+
finalize(messages) {
|
|
115
|
+
for (const msg of messages) {
|
|
116
|
+
for (const tc of msg.toolCalls) {
|
|
117
|
+
if (tc.isStreaming) {
|
|
118
|
+
tc.isStreaming = false;
|
|
119
|
+
tc.streamingSource = ToolCallStreamingSource.UNSPECIFIED;
|
|
120
|
+
}
|
|
121
|
+
if (tc.status === ToolCallStatus.TOOL_CALL_RUNNING && (tc.completedAt || tc.result)) {
|
|
122
|
+
tc.status = ToolCallStatus.TOOL_CALL_COMPLETED;
|
|
123
|
+
if (!tc.completedAt) {
|
|
124
|
+
tc.completedAt = utcTimestamp();
|
|
125
|
+
}
|
|
126
|
+
console.log(`DeltaEnricher finalize reconciliation: promoted tool call ` +
|
|
127
|
+
`${tc.id} (${tc.name}) from RUNNING to COMPLETED`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
handleShellOutputDelta(update) {
|
|
133
|
+
const event = update.event;
|
|
134
|
+
const text = extractShellOutputText(event);
|
|
135
|
+
if (!text)
|
|
136
|
+
return;
|
|
137
|
+
const callId = extractCallIdFromShellEvent(event) ?? this.lastShellCallId;
|
|
138
|
+
if (!callId)
|
|
139
|
+
return;
|
|
140
|
+
let buffer = this.shellOutputByCallId.get(callId);
|
|
141
|
+
if (!buffer) {
|
|
142
|
+
buffer = { chunks: [], totalLength: 0 };
|
|
143
|
+
this.shellOutputByCallId.set(callId, buffer);
|
|
144
|
+
}
|
|
145
|
+
buffer.chunks.push(text);
|
|
146
|
+
buffer.totalLength += text.length;
|
|
147
|
+
this._isDirty = true;
|
|
148
|
+
}
|
|
149
|
+
handleToolCallStarted(update) {
|
|
150
|
+
const timing = this.getOrCreateTiming(update.callId);
|
|
151
|
+
timing.startedAt = utcTimestamp();
|
|
152
|
+
if (update.toolCall.type === "shell") {
|
|
153
|
+
this.lastShellCallId = update.callId;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
handleToolCallCompleted(update) {
|
|
157
|
+
const timing = this.getOrCreateTiming(update.callId);
|
|
158
|
+
timing.completedAt = utcTimestamp();
|
|
159
|
+
}
|
|
160
|
+
getOrCreateTiming(callId) {
|
|
161
|
+
let timing = this.timingByCallId.get(callId);
|
|
162
|
+
if (!timing) {
|
|
163
|
+
timing = {};
|
|
164
|
+
this.timingByCallId.set(callId, timing);
|
|
165
|
+
}
|
|
166
|
+
return timing;
|
|
167
|
+
}
|
|
168
|
+
applyShellOutput(messages) {
|
|
169
|
+
let applied = false;
|
|
170
|
+
for (const [callId, buffer] of this.shellOutputByCallId) {
|
|
171
|
+
const tc = findToolCallById(messages, callId);
|
|
172
|
+
if (!tc)
|
|
173
|
+
continue;
|
|
174
|
+
const content = buffer.chunks.join("");
|
|
175
|
+
tc.result = content;
|
|
176
|
+
tc.isStreaming = true;
|
|
177
|
+
tc.streamingSource = ToolCallStreamingSource.OUTPUT;
|
|
178
|
+
buffer.chunks = [content];
|
|
179
|
+
applied = true;
|
|
180
|
+
}
|
|
181
|
+
return applied;
|
|
182
|
+
}
|
|
183
|
+
applyTiming(messages) {
|
|
184
|
+
let applied = false;
|
|
185
|
+
for (const [callId, timing] of this.timingByCallId) {
|
|
186
|
+
const tc = findToolCallById(messages, callId);
|
|
187
|
+
if (!tc)
|
|
188
|
+
continue;
|
|
189
|
+
if (timing.startedAt && !tc.startedAt) {
|
|
190
|
+
tc.startedAt = timing.startedAt;
|
|
191
|
+
applied = true;
|
|
192
|
+
}
|
|
193
|
+
if (timing.completedAt && !tc.completedAt) {
|
|
194
|
+
tc.completedAt = timing.completedAt;
|
|
195
|
+
applied = true;
|
|
196
|
+
}
|
|
197
|
+
// Promote status when the delta channel reports completion but
|
|
198
|
+
// the stream channel has not yet delivered the status update.
|
|
199
|
+
// Only promotes RUNNING -> COMPLETED; never overwrites terminal
|
|
200
|
+
// states (FAILED, SKIPPED) that carry richer semantics.
|
|
201
|
+
if (timing.completedAt && tc.status === ToolCallStatus.TOOL_CALL_RUNNING) {
|
|
202
|
+
tc.status = ToolCallStatus.TOOL_CALL_COMPLETED;
|
|
203
|
+
applied = true;
|
|
204
|
+
}
|
|
205
|
+
this.timingByCallId.delete(callId);
|
|
206
|
+
}
|
|
207
|
+
return applied;
|
|
208
|
+
}
|
|
209
|
+
applyThinkingDuration(_messages) {
|
|
210
|
+
// Log thinking duration for observability. No proto field exists for this;
|
|
211
|
+
// adding one is a future enhancement (requires proto + UI changes).
|
|
212
|
+
if (this.thinkingDurationMs !== undefined) {
|
|
213
|
+
console.log(`DeltaEnricher: thinking completed in ${this.thinkingDurationMs}ms`);
|
|
214
|
+
this.thinkingDurationMs = undefined;
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
function findToolCallById(messages, callId) {
|
|
221
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
222
|
+
for (const tc of messages[i].toolCalls) {
|
|
223
|
+
if (tc.id === callId)
|
|
224
|
+
return tc;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return undefined;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Extract displayable text from a shell-output-delta event payload.
|
|
231
|
+
*
|
|
232
|
+
* The Cursor SDK's shell-output-delta event carries a generic
|
|
233
|
+
* Record<string, unknown>. Based on observed payloads, the structure is:
|
|
234
|
+
* { type: "stdout" | "stderr", data: string }
|
|
235
|
+
* or sometimes:
|
|
236
|
+
* { output: string }
|
|
237
|
+
*
|
|
238
|
+
* This function handles both shapes defensively.
|
|
239
|
+
*/
|
|
240
|
+
function extractShellOutputText(event) {
|
|
241
|
+
if (typeof event.data === "string")
|
|
242
|
+
return event.data;
|
|
243
|
+
if (typeof event.output === "string")
|
|
244
|
+
return event.output;
|
|
245
|
+
if (typeof event.text === "string")
|
|
246
|
+
return event.text;
|
|
247
|
+
return "";
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Extract the tool call ID from a shell-output-delta event payload.
|
|
251
|
+
*
|
|
252
|
+
* The event may carry callId directly, or we may need to match by
|
|
253
|
+
* context. Based on observed payloads:
|
|
254
|
+
* { callId: string, type: "stdout", data: string }
|
|
255
|
+
*/
|
|
256
|
+
function extractCallIdFromShellEvent(event) {
|
|
257
|
+
if (typeof event.callId === "string")
|
|
258
|
+
return event.callId;
|
|
259
|
+
if (typeof event.call_id === "string")
|
|
260
|
+
return event.call_id;
|
|
261
|
+
if (typeof event.id === "string")
|
|
262
|
+
return event.id;
|
|
263
|
+
return undefined;
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=delta-enricher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delta-enricher.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/delta-enricher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve execution environment variables from the ExecutionContext.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the Python agent-runner's environment.py: fetches the merged,
|
|
5
|
+
* decrypted env vars from the backend so MCP servers receive credentials
|
|
6
|
+
* (e.g. API keys for HTTP headers, secrets for stdio subprocesses).
|
|
7
|
+
*/
|
|
8
|
+
import type { StigmerClient } from "../../client/stigmer-client.js";
|
|
9
|
+
export interface EnvResult {
|
|
10
|
+
envVars: Record<string, string>;
|
|
11
|
+
secretKeys: Set<string>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Fetch and extract env vars from the ExecutionContext for a given execution.
|
|
15
|
+
*
|
|
16
|
+
* Returns an empty env if no ExecutionContext exists (e.g. executions
|
|
17
|
+
* without any configured secrets or env vars).
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolveExecutionEnv(client: StigmerClient, executionId: string): Promise<EnvResult>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve execution environment variables from the ExecutionContext.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the Python agent-runner's environment.py: fetches the merged,
|
|
5
|
+
* decrypted env vars from the backend so MCP servers receive credentials
|
|
6
|
+
* (e.g. API keys for HTTP headers, secrets for stdio subprocesses).
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Fetch and extract env vars from the ExecutionContext for a given execution.
|
|
10
|
+
*
|
|
11
|
+
* Returns an empty env if no ExecutionContext exists (e.g. executions
|
|
12
|
+
* without any configured secrets or env vars).
|
|
13
|
+
*/
|
|
14
|
+
export async function resolveExecutionEnv(client, executionId) {
|
|
15
|
+
let execCtx;
|
|
16
|
+
try {
|
|
17
|
+
execCtx = await client.getExecutionContextByExecutionId(executionId);
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
const code = err?.code;
|
|
21
|
+
// NOT_FOUND (5) is expected for executions without env vars
|
|
22
|
+
if (code === 5) {
|
|
23
|
+
console.log(`No ExecutionContext found for execution ${executionId} — ` +
|
|
24
|
+
`proceeding with empty environment.`);
|
|
25
|
+
return { envVars: {}, secretKeys: new Set() };
|
|
26
|
+
}
|
|
27
|
+
throw err;
|
|
28
|
+
}
|
|
29
|
+
const envVars = {};
|
|
30
|
+
const secretKeys = new Set();
|
|
31
|
+
const data = execCtx.spec?.data;
|
|
32
|
+
if (data) {
|
|
33
|
+
for (const [key, execValue] of Object.entries(data)) {
|
|
34
|
+
envVars[key] = execValue.value;
|
|
35
|
+
if (execValue.isSecret) {
|
|
36
|
+
secretKeys.add(key);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
console.log(`Resolved environment from ExecutionContext: ` +
|
|
41
|
+
`context_id=${execCtx.metadata?.id}, ` +
|
|
42
|
+
`env_count=${Object.keys(envVars).length}, ` +
|
|
43
|
+
`secret_count=${secretKeys.size}, ` +
|
|
44
|
+
`keys=[${Object.keys(envVars).sort().join(", ")}]`);
|
|
45
|
+
return { envVars, secretKeys };
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=env-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-resolver.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/env-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAqB,EACrB,WAAmB;IAEnB,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,WAAW,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAI,GAAyB,EAAE,IAAI,CAAC;QAC9C,4DAA4D;QAC5D,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CACT,2CAA2C,WAAW,KAAK;gBACzD,oCAAoC,CACvC,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;QAChD,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;IAEhC,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;YAC/B,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;gBACvB,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CACT,8CAA8C;QAC5C,cAAc,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI;QACtC,aAAa,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI;QAC5C,gBAAgB,UAAU,CAAC,IAAI,IAAI;QACnC,SAAS,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACrD,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classifies Cursor SDK errors into actionable categories.
|
|
3
|
+
*
|
|
4
|
+
* Used after run.wait() returns status: "error" to:
|
|
5
|
+
* 1. Determine whether the poisoned-handle retry should fire
|
|
6
|
+
* 2. Prefix status.error with a human-readable category
|
|
7
|
+
* 3. Surface isRetryable for future workflow-level retry decisions
|
|
8
|
+
*
|
|
9
|
+
* Error detail can come from several sources (in priority order):
|
|
10
|
+
* - A thrown CursorSdkError's structured fields (highest fidelity)
|
|
11
|
+
* - run.wait().result (SDK-provided string, often bare/generic)
|
|
12
|
+
* - SDKStatusMessage with status "ERROR" from the stream
|
|
13
|
+
* - ConnectError captured from process unhandledRejection
|
|
14
|
+
* - Text extracted from the failing run.conversation() turn
|
|
15
|
+
*
|
|
16
|
+
* Execution context (isResumedHandle) is applied as a post-classification
|
|
17
|
+
* override: when no source can positively identify the error category and
|
|
18
|
+
* the agent was obtained via resume, the error is upgraded to "agent-stale"
|
|
19
|
+
* so that poisoned-handle recovery fires.
|
|
20
|
+
*/
|
|
21
|
+
import type { CapturedRejection } from "./rejection-capture.js";
|
|
22
|
+
export type ErrorCategory = "auth" | "rate-limit" | "network" | "agent-stale" | "model" | "unknown";
|
|
23
|
+
export interface ClassifiedError {
|
|
24
|
+
category: ErrorCategory;
|
|
25
|
+
message: string;
|
|
26
|
+
retryable: boolean;
|
|
27
|
+
source: "sdk" | "stream" | "rejection" | "conversation" | "fallback";
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Structured fields lifted from a thrown CursorSdkError (errors.d.ts:
|
|
31
|
+
* { code, status, isRetryable, cause, endpoint, requestId, operation }).
|
|
32
|
+
* Only the fields used for classification are retained.
|
|
33
|
+
*/
|
|
34
|
+
export interface SdkErrorFields {
|
|
35
|
+
code?: string;
|
|
36
|
+
status?: number;
|
|
37
|
+
message?: string;
|
|
38
|
+
}
|
|
39
|
+
interface SynthesizeErrorOpts {
|
|
40
|
+
/** Structured fields from a thrown CursorSdkError — highest-fidelity source. */
|
|
41
|
+
sdkError?: SdkErrorFields;
|
|
42
|
+
sdkResultFields: string | undefined;
|
|
43
|
+
streamErrorMessage: string | undefined;
|
|
44
|
+
capturedRejection: CapturedRejection | undefined;
|
|
45
|
+
/** Text extracted from the failing run.conversation() turn, if any. */
|
|
46
|
+
conversationErrorText?: string;
|
|
47
|
+
isResumedHandle: boolean;
|
|
48
|
+
fallbackContext: {
|
|
49
|
+
model: string;
|
|
50
|
+
mode: string;
|
|
51
|
+
agentId: string;
|
|
52
|
+
};
|
|
53
|
+
/** Duration of the SDK run in ms — used for transport timeout heuristic. */
|
|
54
|
+
durationMs?: number;
|
|
55
|
+
/** Number of messages received from the stream (0 = no response at all). */
|
|
56
|
+
messageCount?: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Synthesize a classified error from up to three sources, then apply
|
|
60
|
+
* execution context.
|
|
61
|
+
*
|
|
62
|
+
* Two-step process:
|
|
63
|
+
* 1. Classify from the best available source (SDK > stream > rejection > fallback).
|
|
64
|
+
* 2. Apply execution context: on resumed handles, "unknown" from any source
|
|
65
|
+
* is upgraded to "agent-stale" so poisoned-handle recovery can fire.
|
|
66
|
+
*
|
|
67
|
+
* The override only applies to "unknown" — specific diagnoses (auth,
|
|
68
|
+
* rate-limit, network, model) are never overridden, even on resumed handles.
|
|
69
|
+
*/
|
|
70
|
+
export declare function synthesizeError(opts: SynthesizeErrorOpts): ClassifiedError;
|
|
71
|
+
export declare function formatClassifiedError(err: ClassifiedError): string;
|
|
72
|
+
export declare function shouldRetryWithFreshAgent(err: ClassifiedError): boolean;
|
|
73
|
+
export {};
|