@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,652 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic per-session runner manager.
|
|
3
|
+
*
|
|
4
|
+
* Unlike {@link createStigmerRunner} which creates a single Worker polling
|
|
5
|
+
* one task queue, the RunnerManager maintains a pool of Workers — one per
|
|
6
|
+
* session — all sharing a single Temporal connection and a shared set of
|
|
7
|
+
* activities.
|
|
8
|
+
*
|
|
9
|
+
* Used by the desktop app and any multi-session host that needs to
|
|
10
|
+
* dynamically add/remove sessions without restarting the process.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { mkdirSync } from "node:fs";
|
|
14
|
+
import { join } from "node:path";
|
|
15
|
+
import { homedir, tmpdir } from "node:os";
|
|
16
|
+
import { fileURLToPath } from "node:url";
|
|
17
|
+
import { createRequire } from "node:module";
|
|
18
|
+
import {
|
|
19
|
+
NativeConnection,
|
|
20
|
+
Worker,
|
|
21
|
+
bundleWorkflowCode,
|
|
22
|
+
type ActivityInterceptorsFactory,
|
|
23
|
+
type InjectedSinks,
|
|
24
|
+
} from "@temporalio/worker";
|
|
25
|
+
import type { PayloadCodec } from "@temporalio/common";
|
|
26
|
+
import type { Config } from "./config.js";
|
|
27
|
+
import type { WorkerActivities } from "./worker.js";
|
|
28
|
+
import { resolveRunnerBootstrap, refreshRunnerAccessToken } from "./bootstrap.js";
|
|
29
|
+
import { createRunnerTokenCoordinator } from "./runner-token-coordinator.js";
|
|
30
|
+
|
|
31
|
+
const SESSION_QUEUE_PREFIX = "session:";
|
|
32
|
+
const WFEXEC_QUEUE_PREFIX = "wfexec:";
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Module-level registry of shutdown signals per task queue.
|
|
36
|
+
* Activities running in the same process can read this to determine
|
|
37
|
+
* whether their worker is being shut down (vs orchestrator pause).
|
|
38
|
+
*/
|
|
39
|
+
const _shutdownSignalRegistry = new Map<string, AbortSignal>();
|
|
40
|
+
|
|
41
|
+
export function getShutdownSignalForQueue(taskQueue: string): AbortSignal | undefined {
|
|
42
|
+
return _shutdownSignalRegistry.get(taskQueue);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface RunnerManagerOptions {
|
|
46
|
+
/**
|
|
47
|
+
* Temporal server address (e.g. "localhost:7233"). Optional: when omitted, the
|
|
48
|
+
* runner self-discovers it during boot from the control plane using
|
|
49
|
+
* {@link stigmerToken} (see bootstrap.ts). Provide it explicitly to bypass
|
|
50
|
+
* discovery — an explicit value always wins.
|
|
51
|
+
*/
|
|
52
|
+
readonly temporalAddress?: string;
|
|
53
|
+
|
|
54
|
+
/** Stigmer server endpoint for status updates, artifacts, and blueprints. */
|
|
55
|
+
readonly stigmerEndpoint: string;
|
|
56
|
+
|
|
57
|
+
/** Temporal namespace. @default "default" */
|
|
58
|
+
readonly temporalNamespace?: string;
|
|
59
|
+
|
|
60
|
+
/** Auth token for authenticating with the Stigmer server. */
|
|
61
|
+
readonly stigmerToken?: string;
|
|
62
|
+
|
|
63
|
+
/** Cursor API key for direct mode (not needed in proxy mode). */
|
|
64
|
+
readonly cursorApiKey?: string;
|
|
65
|
+
|
|
66
|
+
/** Root directory for agent workspaces. Defaults to ~/.stigmer/workspaces/runner. */
|
|
67
|
+
readonly workspaceRootDir?: string;
|
|
68
|
+
|
|
69
|
+
/** Maximum concurrent activity executions per session Worker. @default 5 */
|
|
70
|
+
readonly maxConcurrentActivitiesPerSession?: number;
|
|
71
|
+
|
|
72
|
+
/** Stigmer proxy endpoint for cloud mode. */
|
|
73
|
+
readonly proxyEndpoint?: string;
|
|
74
|
+
|
|
75
|
+
/** Default LLM model identifier. @default "gpt-4.1" */
|
|
76
|
+
readonly primaryModel?: string;
|
|
77
|
+
|
|
78
|
+
/** Checkpointer type for LangGraph agent state. @default "memory" (or "http" if proxyEndpoint is set) */
|
|
79
|
+
readonly checkpointerType?: "memory" | "http";
|
|
80
|
+
|
|
81
|
+
/** Checkpointer proxy endpoint. Falls back to proxyEndpoint. */
|
|
82
|
+
readonly checkpointerProxyEndpoint?: string;
|
|
83
|
+
|
|
84
|
+
/** Enable Cursor cloud mode. @default false */
|
|
85
|
+
readonly cloudModeEnabled?: boolean;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Workspace/filesystem execution location — where the agent actually runs.
|
|
89
|
+
*
|
|
90
|
+
* - "local": the agent operates on the host filesystem (local-path workspace
|
|
91
|
+
* entries are valid; the desktop app and CLI daemon use this).
|
|
92
|
+
* - "cloud": the agent runs in a server-provisioned sandbox (git-only).
|
|
93
|
+
*
|
|
94
|
+
* This is intentionally distinct from {@link proxyEndpoint}, which controls
|
|
95
|
+
* credential/artifact *transport*. The desktop runner is the canonical case
|
|
96
|
+
* where the two diverge: it executes locally while routing Cursor traffic and
|
|
97
|
+
* artifacts through the proxy. Defaults to "local".
|
|
98
|
+
*
|
|
99
|
+
* @default "local"
|
|
100
|
+
*/
|
|
101
|
+
readonly executionMode?: "local" | "cloud";
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export interface StigmerRunnerManager {
|
|
105
|
+
/** Add a session — creates a Worker polling session:{sessionId}. Idempotent. */
|
|
106
|
+
addSession(sessionId: string): Promise<void>;
|
|
107
|
+
|
|
108
|
+
/** Remove a session — gracefully shuts down that session's Worker. */
|
|
109
|
+
removeSession(sessionId: string): Promise<void>;
|
|
110
|
+
|
|
111
|
+
/** List currently active session IDs. */
|
|
112
|
+
activeSessions(): string[];
|
|
113
|
+
|
|
114
|
+
/** Add a workflow execution — creates a Worker polling wfexec:{executionId}. Idempotent. */
|
|
115
|
+
addWorkflowExecution(executionId: string): Promise<void>;
|
|
116
|
+
|
|
117
|
+
/** Remove a workflow execution — gracefully shuts down that execution's Worker. */
|
|
118
|
+
removeWorkflowExecution(executionId: string): Promise<void>;
|
|
119
|
+
|
|
120
|
+
/** List currently active workflow execution IDs. */
|
|
121
|
+
activeWorkflowExecutions(): string[];
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Push a refreshed *control-plane* auth token (the host's durable credential,
|
|
125
|
+
* e.g. the desktop's Auth0 token) to all activity clients.
|
|
126
|
+
*
|
|
127
|
+
* This updates the control-plane credential only. The proxy credential
|
|
128
|
+
* (x-stigmer-auth) follows it in lockstep UNLESS the runner minted its own
|
|
129
|
+
* proxy token during bootstrap, in which case the runner owns and refreshes
|
|
130
|
+
* that token itself and this push must not clobber it. See the two-writer note
|
|
131
|
+
* on the implementation.
|
|
132
|
+
*/
|
|
133
|
+
updateToken(token: string | null): void;
|
|
134
|
+
|
|
135
|
+
/** Graceful shutdown of all Workers and the Temporal connection. */
|
|
136
|
+
shutdown(): Promise<void>;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
interface ManagedSession {
|
|
140
|
+
worker: Worker;
|
|
141
|
+
runPromise: Promise<void>;
|
|
142
|
+
shutdownController: AbortController;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Create a runner manager that dynamically manages per-session Workers.
|
|
147
|
+
*
|
|
148
|
+
* One shared NativeConnection to Temporal, one shared set of activities.
|
|
149
|
+
* Each call to `addSession(id)` creates a new Worker polling `session:{id}`.
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```ts
|
|
153
|
+
* import { createStigmerRunnerManager } from '@stigmer/runner';
|
|
154
|
+
*
|
|
155
|
+
* const manager = await createStigmerRunnerManager({
|
|
156
|
+
* temporalAddress: 'localhost:7233',
|
|
157
|
+
* stigmerEndpoint: 'http://localhost:7234',
|
|
158
|
+
* });
|
|
159
|
+
*
|
|
160
|
+
* await manager.addSession('ses_abc123');
|
|
161
|
+
* await manager.addSession('ses_def456');
|
|
162
|
+
*
|
|
163
|
+
* // Later:
|
|
164
|
+
* await manager.removeSession('ses_abc123');
|
|
165
|
+
* await manager.shutdown();
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
export async function createStigmerRunnerManager(
|
|
169
|
+
options: RunnerManagerOptions,
|
|
170
|
+
): Promise<StigmerRunnerManager> {
|
|
171
|
+
validateManagerOptions(options);
|
|
172
|
+
|
|
173
|
+
// `tokenRef` holds the control-plane token (the host's durable credential,
|
|
174
|
+
// e.g. the desktop's Auth0 token) and is shared with activity clients via
|
|
175
|
+
// config.stigmerTokenRef. The proxy credential (x-stigmer-auth) is managed
|
|
176
|
+
// separately by a RunnerTokenCoordinator (created after the interceptors are
|
|
177
|
+
// installed) — see that module for the two-writer rationale and the staleness
|
|
178
|
+
// history it guards.
|
|
179
|
+
const tokenRef = { current: options.stigmerToken ?? null };
|
|
180
|
+
const baseConfig = mapManagerOptionsToConfig(options, tokenRef);
|
|
181
|
+
|
|
182
|
+
// Install the Cursor SDK interceptors BEFORE resolving Temporal coordinates.
|
|
183
|
+
// Coordinate discovery dials the control plane via StigmerClient, which loads
|
|
184
|
+
// @connectrpc/connect-node and snapshots the node:http2 ESM facade on first
|
|
185
|
+
// import. The HTTP/2 interceptor patches http2.connect and only propagates to
|
|
186
|
+
// that facade if it runs first, so install MUST precede any connect-node load
|
|
187
|
+
// (discovery here, and the SDK later). The interceptors depend only on
|
|
188
|
+
// proxyEndpoint/stigmerToken (already in baseConfig), not resolved coordinates.
|
|
189
|
+
|
|
190
|
+
// Install fetch interceptor before any @cursor/sdk imports
|
|
191
|
+
const { installFetchInterceptor, updateInterceptorToken, getExecutionContext } = await import(
|
|
192
|
+
"./activities/execute-cursor/fetch-interceptor.js"
|
|
193
|
+
);
|
|
194
|
+
installFetchInterceptor({
|
|
195
|
+
proxyEndpoint: baseConfig.proxyEndpoint ?? undefined,
|
|
196
|
+
stigmerToken: baseConfig.stigmerToken ?? undefined,
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
// HTTP/2 interceptor for Connect RPC auth + execution ID injection (BiDi billing)
|
|
200
|
+
const { installHttp2Interceptor, updateHttp2InterceptorToken, assertHttp2ConnectPatched } = await import(
|
|
201
|
+
"./activities/execute-cursor/http2-interceptor.js"
|
|
202
|
+
);
|
|
203
|
+
installHttp2Interceptor({
|
|
204
|
+
proxyEndpoint: baseConfig.proxyEndpoint ?? undefined,
|
|
205
|
+
stigmerToken: baseConfig.stigmerToken ?? undefined,
|
|
206
|
+
});
|
|
207
|
+
// Fail loudly at boot if a load-order regression left the node:http2 ESM
|
|
208
|
+
// facade unpatched (otherwise BiDi streams would silently 401). No-op when
|
|
209
|
+
// the interceptor is unconfigured (no proxy/token).
|
|
210
|
+
await assertHttp2ConnectPatched();
|
|
211
|
+
|
|
212
|
+
// The token coordinator owns the proxy credential (x-stigmer-auth) and its
|
|
213
|
+
// refresh lifecycle. It writes ONLY the interceptors and re-mints using the
|
|
214
|
+
// always-fresh control-plane token in `tokenRef` — never the (possibly
|
|
215
|
+
// expired) minted token itself, so a slept-past-TTL runner recovers without a
|
|
216
|
+
// restart.
|
|
217
|
+
const tokenCoordinator = createRunnerTokenCoordinator({
|
|
218
|
+
applyProxyToken: (token) => {
|
|
219
|
+
updateInterceptorToken(token);
|
|
220
|
+
updateHttp2InterceptorToken(token);
|
|
221
|
+
},
|
|
222
|
+
reMint: () =>
|
|
223
|
+
refreshRunnerAccessToken({
|
|
224
|
+
token: tokenRef.current,
|
|
225
|
+
stigmerEndpoint: baseConfig.stigmerBackendEndpoint,
|
|
226
|
+
}),
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
// Resolve the runner bootstrap after the http2 patch is in place (discovery
|
|
230
|
+
// dials the control plane through connect-node). An explicit address wins;
|
|
231
|
+
// otherwise a token triggers control-plane discovery; otherwise localhost.
|
|
232
|
+
// Must happen before createAllActivities so runtime activities that dial
|
|
233
|
+
// Temporal (e.g. emit-event) see the resolved address too.
|
|
234
|
+
const bootstrap = await resolveRunnerBootstrap({
|
|
235
|
+
explicitAddress: options.temporalAddress,
|
|
236
|
+
explicitNamespace: options.temporalNamespace,
|
|
237
|
+
token: options.stigmerToken,
|
|
238
|
+
stigmerEndpoint: baseConfig.stigmerBackendEndpoint,
|
|
239
|
+
});
|
|
240
|
+
const config: Config = {
|
|
241
|
+
...baseConfig,
|
|
242
|
+
temporalAddress: bootstrap.temporalAddress,
|
|
243
|
+
temporalNamespace: bootstrap.temporalNamespace,
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
// Adopt the minted proxy token (cloud): it diverges from the control-plane
|
|
247
|
+
// token from here on, and the coordinator refreshes it before expiry.
|
|
248
|
+
if (bootstrap.runnerAccessToken) {
|
|
249
|
+
tokenCoordinator.adoptMintedToken(
|
|
250
|
+
bootstrap.runnerAccessToken,
|
|
251
|
+
bootstrap.runnerAccessTokenExpiresInSeconds,
|
|
252
|
+
);
|
|
253
|
+
console.log("[runner-manager] Adopted minted proxy token from bootstrap");
|
|
254
|
+
} else if (baseConfig.proxyEndpoint && tokenRef.current) {
|
|
255
|
+
// Proxy is configured but no token was minted (OSS, signing key unset, or an
|
|
256
|
+
// explicit Temporal address pinned so bootstrap discovery was skipped). The
|
|
257
|
+
// runner keeps using the control-plane token for proxy traffic; warn so a
|
|
258
|
+
// resulting 401 is diagnosable rather than silent.
|
|
259
|
+
console.warn(
|
|
260
|
+
"[runner-manager] Proxy endpoint configured but no runner token was minted; " +
|
|
261
|
+
"falling back to the control-plane token for x-stigmer-auth",
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
const { setExecutionContextRef } = await import(
|
|
266
|
+
"./activities/execute-cursor/rejection-capture.js"
|
|
267
|
+
);
|
|
268
|
+
setExecutionContextRef(getExecutionContext());
|
|
269
|
+
|
|
270
|
+
const activities = await createAllActivities(config);
|
|
271
|
+
const payloadCodec = await createPayloadCodec(config);
|
|
272
|
+
|
|
273
|
+
const connection = await NativeConnection.connect({
|
|
274
|
+
address: config.temporalAddress,
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
const interceptorConfig = await buildInterceptorConfig();
|
|
278
|
+
const workflowsPath = fileURLToPath(
|
|
279
|
+
new URL("./workflows/index.js", import.meta.url),
|
|
280
|
+
);
|
|
281
|
+
|
|
282
|
+
console.log("[runner-manager] Pre-bundling workflow code...");
|
|
283
|
+
const workflowBundle = await bundleWorkflowCode({ workflowsPath });
|
|
284
|
+
console.log("[runner-manager] Workflow code bundled successfully");
|
|
285
|
+
|
|
286
|
+
const sessions = new Map<string, ManagedSession>();
|
|
287
|
+
const workflowExecutions = new Map<string, ManagedSession>();
|
|
288
|
+
const shutdownSignals = new Map<string, AbortController>();
|
|
289
|
+
let shuttingDown = false;
|
|
290
|
+
|
|
291
|
+
async function createWorkerOnQueue(taskQueue: string): Promise<ManagedSession> {
|
|
292
|
+
const shutdownController = new AbortController();
|
|
293
|
+
shutdownSignals.set(taskQueue, shutdownController);
|
|
294
|
+
_shutdownSignalRegistry.set(taskQueue, shutdownController.signal);
|
|
295
|
+
|
|
296
|
+
const worker = await Worker.create({
|
|
297
|
+
connection,
|
|
298
|
+
namespace: config.temporalNamespace,
|
|
299
|
+
taskQueue,
|
|
300
|
+
activities,
|
|
301
|
+
workflowBundle,
|
|
302
|
+
maxConcurrentActivityTaskExecutions: config.maxConcurrentActivities,
|
|
303
|
+
dataConverter: payloadCodec
|
|
304
|
+
? { payloadCodecs: [payloadCodec] }
|
|
305
|
+
: undefined,
|
|
306
|
+
sinks: interceptorConfig.sinks,
|
|
307
|
+
interceptors: interceptorConfig.interceptors,
|
|
308
|
+
});
|
|
309
|
+
|
|
310
|
+
const runPromise = worker.run().catch((err) => {
|
|
311
|
+
console.error(
|
|
312
|
+
`[runner-manager] Worker for queue ${taskQueue} exited with error:`,
|
|
313
|
+
err,
|
|
314
|
+
);
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
return { worker, runPromise, shutdownController };
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
return {
|
|
321
|
+
async addSession(sessionId: string): Promise<void> {
|
|
322
|
+
if (shuttingDown) {
|
|
323
|
+
throw new Error("RunnerManager is shutting down");
|
|
324
|
+
}
|
|
325
|
+
if (sessions.has(sessionId)) {
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
const taskQueue = SESSION_QUEUE_PREFIX + sessionId;
|
|
330
|
+
const managed = await createWorkerOnQueue(taskQueue);
|
|
331
|
+
sessions.set(sessionId, managed);
|
|
332
|
+
console.log(
|
|
333
|
+
`[runner-manager] Added session ${sessionId} (queue=${taskQueue}, active=${sessions.size})`,
|
|
334
|
+
);
|
|
335
|
+
},
|
|
336
|
+
|
|
337
|
+
async removeSession(sessionId: string): Promise<void> {
|
|
338
|
+
const session = sessions.get(sessionId);
|
|
339
|
+
if (!session) {
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
const taskQueue = SESSION_QUEUE_PREFIX + sessionId;
|
|
344
|
+
session.shutdownController.abort();
|
|
345
|
+
session.worker.shutdown();
|
|
346
|
+
await session.runPromise;
|
|
347
|
+
sessions.delete(sessionId);
|
|
348
|
+
shutdownSignals.delete(taskQueue);
|
|
349
|
+
_shutdownSignalRegistry.delete(taskQueue);
|
|
350
|
+
console.log(
|
|
351
|
+
`[runner-manager] Removed session ${sessionId} (active=${sessions.size})`,
|
|
352
|
+
);
|
|
353
|
+
},
|
|
354
|
+
|
|
355
|
+
activeSessions(): string[] {
|
|
356
|
+
return Array.from(sessions.keys());
|
|
357
|
+
},
|
|
358
|
+
|
|
359
|
+
async addWorkflowExecution(executionId: string): Promise<void> {
|
|
360
|
+
if (shuttingDown) {
|
|
361
|
+
throw new Error("RunnerManager is shutting down");
|
|
362
|
+
}
|
|
363
|
+
if (workflowExecutions.has(executionId)) {
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
const taskQueue = WFEXEC_QUEUE_PREFIX + executionId;
|
|
368
|
+
const managed = await createWorkerOnQueue(taskQueue);
|
|
369
|
+
workflowExecutions.set(executionId, managed);
|
|
370
|
+
console.log(
|
|
371
|
+
`[runner-manager] Added workflow execution ${executionId} (queue=${taskQueue}, active=${workflowExecutions.size})`,
|
|
372
|
+
);
|
|
373
|
+
},
|
|
374
|
+
|
|
375
|
+
async removeWorkflowExecution(executionId: string): Promise<void> {
|
|
376
|
+
const execution = workflowExecutions.get(executionId);
|
|
377
|
+
if (!execution) {
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
const taskQueue = WFEXEC_QUEUE_PREFIX + executionId;
|
|
382
|
+
execution.shutdownController.abort();
|
|
383
|
+
execution.worker.shutdown();
|
|
384
|
+
await execution.runPromise;
|
|
385
|
+
workflowExecutions.delete(executionId);
|
|
386
|
+
shutdownSignals.delete(taskQueue);
|
|
387
|
+
_shutdownSignalRegistry.delete(taskQueue);
|
|
388
|
+
console.log(
|
|
389
|
+
`[runner-manager] Removed workflow execution ${executionId} (active=${workflowExecutions.size})`,
|
|
390
|
+
);
|
|
391
|
+
},
|
|
392
|
+
|
|
393
|
+
activeWorkflowExecutions(): string[] {
|
|
394
|
+
return Array.from(workflowExecutions.keys());
|
|
395
|
+
},
|
|
396
|
+
|
|
397
|
+
updateToken(token: string | null): void {
|
|
398
|
+
// Writes the control-plane credential. The coordinator decides whether the
|
|
399
|
+
// proxy credential follows it: only when no token has been minted (so the
|
|
400
|
+
// pre-mint lockstep is preserved), never once the runner owns a minted
|
|
401
|
+
// token. See runner-token-coordinator.ts and the staleness changelogs.
|
|
402
|
+
tokenRef.current = token;
|
|
403
|
+
if (token) {
|
|
404
|
+
process.env.STIGMER_TOKEN = token;
|
|
405
|
+
} else {
|
|
406
|
+
delete process.env.STIGMER_TOKEN;
|
|
407
|
+
}
|
|
408
|
+
tokenCoordinator.onControlPlaneTokenChanged(token);
|
|
409
|
+
console.log("[runner-manager] Auth token updated");
|
|
410
|
+
},
|
|
411
|
+
|
|
412
|
+
async shutdown(): Promise<void> {
|
|
413
|
+
shuttingDown = true;
|
|
414
|
+
tokenCoordinator.stop();
|
|
415
|
+
const totalWorkers = sessions.size + workflowExecutions.size;
|
|
416
|
+
console.log(
|
|
417
|
+
`[runner-manager] Shutting down ${totalWorkers} workers (${sessions.size} sessions, ${workflowExecutions.size} workflow executions)...`,
|
|
418
|
+
);
|
|
419
|
+
|
|
420
|
+
const shutdownPromises = [
|
|
421
|
+
...Array.from(sessions.entries()).map(
|
|
422
|
+
async ([id, session]) => {
|
|
423
|
+
session.worker.shutdown();
|
|
424
|
+
await session.runPromise;
|
|
425
|
+
console.log(`[runner-manager] Session worker ${id} stopped`);
|
|
426
|
+
},
|
|
427
|
+
),
|
|
428
|
+
...Array.from(workflowExecutions.entries()).map(
|
|
429
|
+
async ([id, execution]) => {
|
|
430
|
+
execution.worker.shutdown();
|
|
431
|
+
await execution.runPromise;
|
|
432
|
+
console.log(`[runner-manager] Workflow execution worker ${id} stopped`);
|
|
433
|
+
},
|
|
434
|
+
),
|
|
435
|
+
];
|
|
436
|
+
|
|
437
|
+
await Promise.all(shutdownPromises);
|
|
438
|
+
sessions.clear();
|
|
439
|
+
workflowExecutions.clear();
|
|
440
|
+
connection.close();
|
|
441
|
+
console.log("[runner-manager] All workers stopped, connection closed");
|
|
442
|
+
},
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
function validateManagerOptions(options: RunnerManagerOptions): void {
|
|
447
|
+
if (!options.stigmerEndpoint) {
|
|
448
|
+
throw new Error(
|
|
449
|
+
"RunnerManagerOptions.stigmerEndpoint is required — specify the Stigmer server endpoint",
|
|
450
|
+
);
|
|
451
|
+
}
|
|
452
|
+
// temporalAddress is intentionally NOT required: when omitted, the runner
|
|
453
|
+
// discovers it from the control plane (token-only embedding). If neither an
|
|
454
|
+
// explicit address nor a token is present, discovery falls back to localhost.
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
export function mapManagerOptionsToConfig(
|
|
458
|
+
options: RunnerManagerOptions,
|
|
459
|
+
tokenRef?: { current: string | null },
|
|
460
|
+
): Config {
|
|
461
|
+
const proxyActive = !!options.proxyEndpoint;
|
|
462
|
+
|
|
463
|
+
// Execution location is independent of proxy transport. Do NOT derive `mode`
|
|
464
|
+
// from `proxyActive`: the desktop runner executes LOCALLY (local-path
|
|
465
|
+
// workspaces must work) while still routing Cursor traffic through the proxy.
|
|
466
|
+
// Coupling the two here is exactly what previously broke local-path sessions.
|
|
467
|
+
const mode = options.executionMode ?? ("local" as const);
|
|
468
|
+
|
|
469
|
+
return {
|
|
470
|
+
taskQueue: "manager", // not used for Workers — each Worker gets its own
|
|
471
|
+
// May be empty here; createStigmerRunnerManager resolves it via
|
|
472
|
+
// resolveTemporalCoordinates before any Temporal connection is opened.
|
|
473
|
+
temporalAddress: options.temporalAddress ?? "",
|
|
474
|
+
temporalNamespace: options.temporalNamespace ?? "default",
|
|
475
|
+
stigmerBackendEndpoint: normalizeEndpoint(options.stigmerEndpoint),
|
|
476
|
+
stigmerToken: options.stigmerToken ?? null,
|
|
477
|
+
stigmerTokenRef: tokenRef,
|
|
478
|
+
cursorApiKey: proxyActive
|
|
479
|
+
? (options.cursorApiKey ?? "proxy-managed")
|
|
480
|
+
: (options.cursorApiKey ?? ""),
|
|
481
|
+
workspaceRootDir: options.workspaceRootDir ?? resolveDefaultWorkspaceDir(),
|
|
482
|
+
mode,
|
|
483
|
+
proxyEndpoint: options.proxyEndpoint ?? null,
|
|
484
|
+
maxConcurrentActivities: options.maxConcurrentActivitiesPerSession ?? 5,
|
|
485
|
+
idleTimeoutSeconds: null,
|
|
486
|
+
cloudModeEnabled: options.cloudModeEnabled ?? false,
|
|
487
|
+
checkpointerType:
|
|
488
|
+
options.checkpointerType ?? (proxyActive ? "http" : "memory"),
|
|
489
|
+
checkpointerProxyEndpoint:
|
|
490
|
+
options.checkpointerProxyEndpoint ?? options.proxyEndpoint ?? null,
|
|
491
|
+
primaryModel: options.primaryModel ?? "gpt-4.1",
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
async function createAllActivities(config: Config): Promise<WorkerActivities> {
|
|
496
|
+
const [
|
|
497
|
+
{ createCursorActivities },
|
|
498
|
+
{ createDeepAgentActivities },
|
|
499
|
+
{ createEnsureThreadActivities },
|
|
500
|
+
{ createClassifyToolApprovalsActivities },
|
|
501
|
+
{ createDiscoverMcpServerActivities },
|
|
502
|
+
{ createEvaluateExpressionsActivities },
|
|
503
|
+
{ createCallHttpActivities },
|
|
504
|
+
{ createCallGrpcActivities },
|
|
505
|
+
{ createCallFunctionActivities },
|
|
506
|
+
{ createCallLlmActivities },
|
|
507
|
+
{ createCallAgentActivities },
|
|
508
|
+
{ createCallAgentStatusActivities },
|
|
509
|
+
{ createRunCommandActivities },
|
|
510
|
+
{ createHydrateWorkflowActivities },
|
|
511
|
+
{ createWorkflowEventActivities },
|
|
512
|
+
{ createPromoteTaskOutputActivities },
|
|
513
|
+
] = await Promise.all([
|
|
514
|
+
import("./activities/execute-cursor/index.js"),
|
|
515
|
+
import("./activities/execute-deep-agent/index.js"),
|
|
516
|
+
import("./activities/ensure-thread.js"),
|
|
517
|
+
import("./activities/classify-tool-approvals.js"),
|
|
518
|
+
import("./activities/discover-mcp-server.js"),
|
|
519
|
+
import("./activities/evaluate-expressions.js"),
|
|
520
|
+
import("./activities/call-http.js"),
|
|
521
|
+
import("./activities/call-grpc.js"),
|
|
522
|
+
import("./activities/call-function.js"),
|
|
523
|
+
import("./activities/call-llm.js"),
|
|
524
|
+
import("./activities/call-agent.js"),
|
|
525
|
+
import("./activities/call-agent-status.js"),
|
|
526
|
+
import("./activities/run-command.js"),
|
|
527
|
+
import("./activities/hydrate-workflow-execution.js"),
|
|
528
|
+
import("./activities/workflow-event-activities.js"),
|
|
529
|
+
import("./activities/promote-task-output.js"),
|
|
530
|
+
]);
|
|
531
|
+
|
|
532
|
+
return {
|
|
533
|
+
...createCursorActivities(config),
|
|
534
|
+
...createDeepAgentActivities(config),
|
|
535
|
+
...createEnsureThreadActivities(),
|
|
536
|
+
...createClassifyToolApprovalsActivities(config),
|
|
537
|
+
...createDiscoverMcpServerActivities(config),
|
|
538
|
+
...createEvaluateExpressionsActivities(),
|
|
539
|
+
...createCallHttpActivities(),
|
|
540
|
+
...createCallGrpcActivities(),
|
|
541
|
+
...createCallFunctionActivities(),
|
|
542
|
+
...createCallLlmActivities(),
|
|
543
|
+
...createCallAgentActivities(),
|
|
544
|
+
...createCallAgentStatusActivities(),
|
|
545
|
+
...createRunCommandActivities(),
|
|
546
|
+
...createHydrateWorkflowActivities(config),
|
|
547
|
+
...createWorkflowEventActivities(),
|
|
548
|
+
...createPromoteTaskOutputActivities(),
|
|
549
|
+
};
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
async function createPayloadCodec(
|
|
553
|
+
config: Config,
|
|
554
|
+
): Promise<PayloadCodec | undefined> {
|
|
555
|
+
const { loadClaimcheckConfig, ClaimcheckPayloadCodec } = await import(
|
|
556
|
+
"./claimcheck/index.js"
|
|
557
|
+
);
|
|
558
|
+
const claimcheckConfig = loadClaimcheckConfig();
|
|
559
|
+
if (!claimcheckConfig.enabled) {
|
|
560
|
+
return undefined;
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
const { loadArtifactStorageConfig, createArtifactStorage } = await import(
|
|
564
|
+
"./shared/artifact-storage.js"
|
|
565
|
+
);
|
|
566
|
+
const storageConfig = loadArtifactStorageConfig(config);
|
|
567
|
+
const storage = createArtifactStorage(storageConfig);
|
|
568
|
+
return new ClaimcheckPayloadCodec(storage, claimcheckConfig);
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
interface InterceptorConfig {
|
|
572
|
+
sinks: InjectedSinks<any>;
|
|
573
|
+
interceptors: Record<string, any>;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
async function buildInterceptorConfig(): Promise<InterceptorConfig> {
|
|
577
|
+
const { createWorkflowMetricsSinks } = await import(
|
|
578
|
+
"./interceptors/workflow-metrics-sink.js"
|
|
579
|
+
);
|
|
580
|
+
|
|
581
|
+
const activityInterceptors: ActivityInterceptorsFactory[] = [];
|
|
582
|
+
let sinks: InjectedSinks<any> = { ...createWorkflowMetricsSinks() };
|
|
583
|
+
const workflowInterceptorModules: string[] = [];
|
|
584
|
+
|
|
585
|
+
if (process.env.OTEL_EXPORTER_OTLP_ENDPOINT) {
|
|
586
|
+
const { OpenTelemetryActivityInboundInterceptor, makeWorkflowExporter } =
|
|
587
|
+
await import("@temporalio/interceptors-opentelemetry");
|
|
588
|
+
const { OTLPTraceExporter } = await import(
|
|
589
|
+
"@opentelemetry/exporter-trace-otlp-grpc"
|
|
590
|
+
);
|
|
591
|
+
const { resourceFromAttributes } = await import(
|
|
592
|
+
"@opentelemetry/resources"
|
|
593
|
+
);
|
|
594
|
+
|
|
595
|
+
activityInterceptors.push((ctx) => ({
|
|
596
|
+
inbound: new OpenTelemetryActivityInboundInterceptor(ctx),
|
|
597
|
+
}));
|
|
598
|
+
|
|
599
|
+
const resource = resourceFromAttributes({
|
|
600
|
+
"service.name": "stigmer-runner-manager",
|
|
601
|
+
});
|
|
602
|
+
const exporter = new OTLPTraceExporter({
|
|
603
|
+
url: process.env.OTEL_EXPORTER_OTLP_ENDPOINT,
|
|
604
|
+
});
|
|
605
|
+
const otelSinks = makeWorkflowExporter(
|
|
606
|
+
exporter as any,
|
|
607
|
+
resource as any,
|
|
608
|
+
) as unknown as InjectedSinks<any>;
|
|
609
|
+
sinks = { ...sinks, ...otelSinks };
|
|
610
|
+
|
|
611
|
+
const esmRequire = createRequire(import.meta.url);
|
|
612
|
+
workflowInterceptorModules.push(
|
|
613
|
+
esmRequire.resolve(
|
|
614
|
+
"@temporalio/interceptors-opentelemetry/lib/workflow-interceptors",
|
|
615
|
+
),
|
|
616
|
+
);
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
return {
|
|
620
|
+
sinks,
|
|
621
|
+
interceptors: {
|
|
622
|
+
...(activityInterceptors.length > 0
|
|
623
|
+
? { activity: activityInterceptors }
|
|
624
|
+
: {}),
|
|
625
|
+
...(workflowInterceptorModules.length > 0
|
|
626
|
+
? { workflowModules: workflowInterceptorModules }
|
|
627
|
+
: {}),
|
|
628
|
+
},
|
|
629
|
+
};
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
function resolveDefaultWorkspaceDir(): string {
|
|
633
|
+
try {
|
|
634
|
+
const dir = join(homedir(), ".stigmer", "workspaces", "runner");
|
|
635
|
+
mkdirSync(dir, { recursive: true });
|
|
636
|
+
return dir;
|
|
637
|
+
} catch {
|
|
638
|
+
const dir = join(tmpdir(), "stigmer-runner-workspace");
|
|
639
|
+
mkdirSync(dir, { recursive: true });
|
|
640
|
+
return dir;
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
function normalizeEndpoint(endpoint: string): string {
|
|
645
|
+
if (endpoint.startsWith("http://") || endpoint.startsWith("https://")) {
|
|
646
|
+
return endpoint;
|
|
647
|
+
}
|
|
648
|
+
if (endpoint.endsWith(":443")) {
|
|
649
|
+
return `https://${endpoint}`;
|
|
650
|
+
}
|
|
651
|
+
return `http://${endpoint}`;
|
|
652
|
+
}
|