@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,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Virtual platform mount — path classification and display humanization
|
|
3
|
+
* for the `.stigmer/` namespace.
|
|
4
|
+
*
|
|
5
|
+
* The platform owns the `.stigmer/` namespace inside the agent's virtual
|
|
6
|
+
* view of the workspace. Platform files (skills, inputs) physically live
|
|
7
|
+
* in an external `platformDir` that is separate from the workspace
|
|
8
|
+
* `rootDir`. Backend path-resolution methods call `classifyPlatformPath`
|
|
9
|
+
* to decide whether a given path targets the platform mount or the
|
|
10
|
+
* workspace, keeping the routing decision in a single place.
|
|
11
|
+
*
|
|
12
|
+
* All functions in this module are **pure** — no I/O, no side effects.
|
|
13
|
+
* They operate exclusively on strings.
|
|
14
|
+
*
|
|
15
|
+
* See Python reference: graphton/core/backends/platform_mount.py (AD-01 v3).
|
|
16
|
+
*/
|
|
17
|
+
import { dirname } from "node:path";
|
|
18
|
+
/** Prefix that identifies paths targeting the virtual platform mount. */
|
|
19
|
+
export const PLATFORM_PREFIX = ".stigmer/";
|
|
20
|
+
/** Directory name used in listings and equality checks. */
|
|
21
|
+
export const PLATFORM_DIR_NAME = ".stigmer";
|
|
22
|
+
/**
|
|
23
|
+
* Environment variable injected into `execute()` calls so shell commands
|
|
24
|
+
* can access platform files via `$STIGMER_PLATFORM_DIR/skills/…`.
|
|
25
|
+
*/
|
|
26
|
+
export const STIGMER_PLATFORM_DIR_ENV = "STIGMER_PLATFORM_DIR";
|
|
27
|
+
/**
|
|
28
|
+
* Matches `$STIGMER_PLATFORM_DIR` and `${STIGMER_PLATFORM_DIR}` in
|
|
29
|
+
* display strings. Brace form is tried first so the replacement does not
|
|
30
|
+
* leave stray braces. The negative lookahead on the bare-dollar form
|
|
31
|
+
* prevents matching `$STIGMER_PLATFORM_DIR_OTHER` as a false positive.
|
|
32
|
+
*/
|
|
33
|
+
const PLATFORM_ENV_RE = new RegExp(`\\$\\{${STIGMER_PLATFORM_DIR_ENV}\\}`
|
|
34
|
+
+ `|\\$${STIGMER_PLATFORM_DIR_ENV}(?![A-Za-z0-9_])`, "g");
|
|
35
|
+
/**
|
|
36
|
+
* Matches `.stigmer` in shell commands when it appears as a standalone
|
|
37
|
+
* path component (e.g. `.stigmer/skills/…`), not as part of a longer
|
|
38
|
+
* name (`my.stigmer`) or a subdirectory (`foo/.stigmer`).
|
|
39
|
+
*/
|
|
40
|
+
const STIGMER_DIR_CMD_RE = /(?<!\w)(?<!\/)\.stigmer(?![a-zA-Z0-9_])/g;
|
|
41
|
+
/**
|
|
42
|
+
* Classify whether `relPath` targets the virtual platform mount.
|
|
43
|
+
*
|
|
44
|
+
* Strips leading slashes before checking so that absolute-looking paths
|
|
45
|
+
* (`/.stigmer/skills/…`) are handled identically to relative ones.
|
|
46
|
+
*
|
|
47
|
+
* @returns An object with `isPlatform` (true when path falls under
|
|
48
|
+
* `.stigmer/`) and `remainder` (the path relative to whichever root
|
|
49
|
+
* applies — `platformDir` when platform, `rootDir` when workspace).
|
|
50
|
+
*/
|
|
51
|
+
export function classifyPlatformPath(relPath) {
|
|
52
|
+
const clean = relPath.replace(/^\/+/, "");
|
|
53
|
+
if (clean.startsWith(PLATFORM_PREFIX)) {
|
|
54
|
+
return { isPlatform: true, remainder: clean.slice(PLATFORM_PREFIX.length) };
|
|
55
|
+
}
|
|
56
|
+
if (clean === PLATFORM_DIR_NAME || clean === PLATFORM_DIR_NAME + "/") {
|
|
57
|
+
return { isPlatform: true, remainder: "" };
|
|
58
|
+
}
|
|
59
|
+
return { isPlatform: false, remainder: clean };
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Replace platform environment-variable references with the user-facing
|
|
63
|
+
* `.stigmer` virtual-mount prefix.
|
|
64
|
+
*
|
|
65
|
+
* Intended for **display strings only** (approval previews, messages) —
|
|
66
|
+
* not for the actual command executed in the sandbox, where the shell
|
|
67
|
+
* must expand the real environment variable.
|
|
68
|
+
*
|
|
69
|
+
* Handles both `$STIGMER_PLATFORM_DIR` and `${STIGMER_PLATFORM_DIR}`.
|
|
70
|
+
*/
|
|
71
|
+
export function humanizePlatformRefs(text) {
|
|
72
|
+
if (!text)
|
|
73
|
+
return text;
|
|
74
|
+
return text.replace(PLATFORM_ENV_RE, PLATFORM_DIR_NAME);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Replace `.stigmer` virtual-mount references in a shell command with
|
|
78
|
+
* the `$STIGMER_PLATFORM_DIR` environment variable.
|
|
79
|
+
*
|
|
80
|
+
* The execute environment already has `STIGMER_PLATFORM_DIR` set, so
|
|
81
|
+
* the shell expands the variable at runtime.
|
|
82
|
+
*
|
|
83
|
+
* This is the inverse of `humanizePlatformRefs`: that function rewrites
|
|
84
|
+
* `$STIGMER_PLATFORM_DIR` → `.stigmer` for display, while this function
|
|
85
|
+
* rewrites `.stigmer` → `$STIGMER_PLATFORM_DIR` for execution.
|
|
86
|
+
*
|
|
87
|
+
* Callers **must** guard this behind a `platformDir != null` check to
|
|
88
|
+
* avoid replacing `.stigmer` when it is a real directory.
|
|
89
|
+
*/
|
|
90
|
+
export function resolvePlatformCommand(command) {
|
|
91
|
+
if (!command)
|
|
92
|
+
return command;
|
|
93
|
+
return command.replace(STIGMER_DIR_CMD_RE, `$${STIGMER_PLATFORM_DIR_ENV}`);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Replace absolute sandbox workspace paths with workspace-relative
|
|
97
|
+
* display paths.
|
|
98
|
+
*
|
|
99
|
+
* Intended for **display strings only** (approval previews, streamed
|
|
100
|
+
* messages) — not for the actual command executed in the sandbox.
|
|
101
|
+
*
|
|
102
|
+
* Performs three ordered replacements:
|
|
103
|
+
* 1. `workspaceRoot + "/"` → empty string (workspace-relative paths)
|
|
104
|
+
* 2. `workspaceRoot` (exact) → `"."` (the workspace root itself)
|
|
105
|
+
* 3. Sandbox home dir (parent of workspaceRoot) → `"~"` (paths outside
|
|
106
|
+
* the workspace, e.g. `/home/daytona/.bashrc` → `~/.bashrc`)
|
|
107
|
+
*
|
|
108
|
+
* Returns `text` unchanged when `workspaceRoot` is empty.
|
|
109
|
+
*/
|
|
110
|
+
export function humanizeSandboxPaths(text, workspaceRoot) {
|
|
111
|
+
if (!text || !workspaceRoot)
|
|
112
|
+
return text;
|
|
113
|
+
const wsRoot = workspaceRoot.replace(/\/+$/, "");
|
|
114
|
+
// 1) workspace_root + "/" → "" (relative paths)
|
|
115
|
+
text = text.replaceAll(wsRoot + "/", "");
|
|
116
|
+
// 2) bare workspace_root → "." (must run after slash-suffixed above)
|
|
117
|
+
text = text.replaceAll(wsRoot, ".");
|
|
118
|
+
// 3) sandbox home → "~" (parent of workspace root)
|
|
119
|
+
const sandboxHome = dirname(wsRoot);
|
|
120
|
+
if (sandboxHome && sandboxHome !== "/") {
|
|
121
|
+
text = text.replaceAll(sandboxHome + "/", "~/");
|
|
122
|
+
text = text.replaceAll(sandboxHome, "~");
|
|
123
|
+
}
|
|
124
|
+
return text;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Resolve agent environment-variable references to their values in a
|
|
128
|
+
* display string.
|
|
129
|
+
*
|
|
130
|
+
* Replaces `$KEY` and `${KEY}` with the corresponding value from
|
|
131
|
+
* `envVars` for every key that is **not** marked as secret.
|
|
132
|
+
*
|
|
133
|
+
* `$STIGMER_PLATFORM_DIR` is handled separately by
|
|
134
|
+
* `humanizePlatformRefs` and is always skipped here.
|
|
135
|
+
*
|
|
136
|
+
* Call this **after** `humanizePlatformRefs` so platform paths are
|
|
137
|
+
* humanized before general env-var resolution runs.
|
|
138
|
+
*/
|
|
139
|
+
export function resolveDisplayEnvVars(text, envVars, secretKeys) {
|
|
140
|
+
if (!text || !envVars || Object.keys(envVars).length === 0)
|
|
141
|
+
return text;
|
|
142
|
+
const secrets = secretKeys ?? new Set();
|
|
143
|
+
for (const [key, value] of Object.entries(envVars)) {
|
|
144
|
+
if (key === STIGMER_PLATFORM_DIR_ENV)
|
|
145
|
+
continue;
|
|
146
|
+
if (secrets.has(key))
|
|
147
|
+
continue;
|
|
148
|
+
const pattern = new RegExp(`\\$\\{${escapeRegExp(key)}\\}`
|
|
149
|
+
+ `|\\$${escapeRegExp(key)}(?![A-Za-z0-9_])`, "g");
|
|
150
|
+
text = text.replace(pattern, value);
|
|
151
|
+
}
|
|
152
|
+
return text;
|
|
153
|
+
}
|
|
154
|
+
function escapeRegExp(s) {
|
|
155
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=platform-mount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-mount.js","sourceRoot":"","sources":["../../../src/shared/workspace/platform-mount.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace provisioner — dispatches on WorkspaceSource proto type to
|
|
3
|
+
* populate a workspace directory.
|
|
4
|
+
*
|
|
5
|
+
* Supports three source variants:
|
|
6
|
+
* - git_repo: clone a repository
|
|
7
|
+
* - local_path: use an existing host directory
|
|
8
|
+
* - empty: create an empty workspace
|
|
9
|
+
*
|
|
10
|
+
* Multi-entry sessions provision each WorkspaceEntry into its own
|
|
11
|
+
* subdirectory of the workspace root.
|
|
12
|
+
*
|
|
13
|
+
* Phase 2 scope: local backend only. The remote (Daytona sandbox)
|
|
14
|
+
* backend will be added in Phase 3.
|
|
15
|
+
*/
|
|
16
|
+
import type { ProvisionResult, WorkspaceBackend } from "./types.js";
|
|
17
|
+
export interface WorkspaceEntry {
|
|
18
|
+
name: string;
|
|
19
|
+
source?: WorkspaceSource;
|
|
20
|
+
}
|
|
21
|
+
export interface WorkspaceSource {
|
|
22
|
+
source: {
|
|
23
|
+
case: "gitRepo";
|
|
24
|
+
value: GitRepoSource;
|
|
25
|
+
} | {
|
|
26
|
+
case: "localPath";
|
|
27
|
+
value: LocalPathSource;
|
|
28
|
+
} | {
|
|
29
|
+
case: undefined;
|
|
30
|
+
value?: undefined;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export interface GitRepoSource {
|
|
34
|
+
url: string;
|
|
35
|
+
branch?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface LocalPathSource {
|
|
38
|
+
path: string;
|
|
39
|
+
}
|
|
40
|
+
export declare class WorkspaceProvisioner {
|
|
41
|
+
provision(workspaceSource: WorkspaceSource | undefined, backend: WorkspaceBackend, mergedEnv: Record<string, string>, isLocalMode: boolean, options?: {
|
|
42
|
+
targetSubdir?: string;
|
|
43
|
+
configureCredentials?: boolean;
|
|
44
|
+
}): Promise<ProvisionResult>;
|
|
45
|
+
provisionAll(entries: WorkspaceEntry[], backend: WorkspaceBackend, mergedEnv: Record<string, string>, isLocalMode: boolean, configureCredentials?: boolean): Promise<ProvisionResult[]>;
|
|
46
|
+
private dispatch;
|
|
47
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace provisioner — dispatches on WorkspaceSource proto type to
|
|
3
|
+
* populate a workspace directory.
|
|
4
|
+
*
|
|
5
|
+
* Supports three source variants:
|
|
6
|
+
* - git_repo: clone a repository
|
|
7
|
+
* - local_path: use an existing host directory
|
|
8
|
+
* - empty: create an empty workspace
|
|
9
|
+
*
|
|
10
|
+
* Multi-entry sessions provision each WorkspaceEntry into its own
|
|
11
|
+
* subdirectory of the workspace root.
|
|
12
|
+
*
|
|
13
|
+
* Phase 2 scope: local backend only. The remote (Daytona sandbox)
|
|
14
|
+
* backend will be added in Phase 3.
|
|
15
|
+
*/
|
|
16
|
+
import { provisionEmpty } from "./sources/empty.js";
|
|
17
|
+
import { provisionLocalPath } from "./sources/local-path.js";
|
|
18
|
+
import { provisionGit } from "./sources/git.js";
|
|
19
|
+
const PROVISION_KEY_PREFIX = "WORKSPACE_PROVISION_";
|
|
20
|
+
export class WorkspaceProvisioner {
|
|
21
|
+
async provision(workspaceSource, backend, mergedEnv, isLocalMode, options) {
|
|
22
|
+
const result = await this.dispatch(workspaceSource, backend, mergedEnv, isLocalMode, options);
|
|
23
|
+
const prefixKeys = Object.keys(mergedEnv)
|
|
24
|
+
.filter(k => k.startsWith(PROVISION_KEY_PREFIX));
|
|
25
|
+
const allConsumed = mergeConsumedKeys(result.consumedKeys, prefixKeys);
|
|
26
|
+
if (allConsumed.length !== result.consumedKeys.length) {
|
|
27
|
+
return { ...result, consumedKeys: allConsumed };
|
|
28
|
+
}
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
async provisionAll(entries, backend, mergedEnv, isLocalMode, configureCredentials = false) {
|
|
32
|
+
if (entries.length === 0)
|
|
33
|
+
return [];
|
|
34
|
+
const useSubdirs = entries.length > 1;
|
|
35
|
+
const results = [];
|
|
36
|
+
for (const entry of entries) {
|
|
37
|
+
const targetSubdir = useSubdirs ? entry.name : undefined;
|
|
38
|
+
const result = await this.provision(entry.source, backend, mergedEnv, isLocalMode, { targetSubdir, configureCredentials });
|
|
39
|
+
results.push({ ...result, entryName: entry.name });
|
|
40
|
+
}
|
|
41
|
+
return results;
|
|
42
|
+
}
|
|
43
|
+
async dispatch(workspaceSource, backend, mergedEnv, isLocalMode, options) {
|
|
44
|
+
if (!workspaceSource || !workspaceSource.source?.case) {
|
|
45
|
+
return provisionEmpty(backend);
|
|
46
|
+
}
|
|
47
|
+
switch (workspaceSource.source.case) {
|
|
48
|
+
case "gitRepo": {
|
|
49
|
+
const gitSource = workspaceSource.source.value;
|
|
50
|
+
return provisionGit({
|
|
51
|
+
url: gitSource.url,
|
|
52
|
+
branch: gitSource.branch,
|
|
53
|
+
backend,
|
|
54
|
+
envVars: mergedEnv,
|
|
55
|
+
isLocalMode,
|
|
56
|
+
targetSubdir: options?.targetSubdir,
|
|
57
|
+
configureCredentials: options?.configureCredentials,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
case "localPath": {
|
|
61
|
+
const localSource = workspaceSource.source.value;
|
|
62
|
+
return provisionLocalPath({
|
|
63
|
+
path: localSource.path,
|
|
64
|
+
isLocalMode,
|
|
65
|
+
targetSubdir: options?.targetSubdir,
|
|
66
|
+
backendRootDir: options?.targetSubdir ? backend.rootDir : undefined,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
default:
|
|
70
|
+
return provisionEmpty(backend);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function mergeConsumedKeys(sourceKeys, prefixKeys) {
|
|
75
|
+
if (prefixKeys.length === 0)
|
|
76
|
+
return [...sourceKeys];
|
|
77
|
+
const merged = new Map();
|
|
78
|
+
for (const k of sourceKeys)
|
|
79
|
+
merged.set(k, true);
|
|
80
|
+
for (const k of prefixKeys)
|
|
81
|
+
merged.set(k, true);
|
|
82
|
+
return [...merged.keys()];
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=provisioner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provisioner.js","sourceRoot":"","sources":["../../../src/shared/workspace/provisioner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Empty workspace source — the default when no WorkspaceSource is configured.
|
|
3
|
+
*
|
|
4
|
+
* The workspace directory already exists (created by initializeLocalWorkspace).
|
|
5
|
+
* This handler simply records the fact and returns the existing root.
|
|
6
|
+
*/
|
|
7
|
+
import { type ProvisionResult, type WorkspaceBackend } from "../types.js";
|
|
8
|
+
export declare function provisionEmpty(backend: WorkspaceBackend): ProvisionResult;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Empty workspace source — the default when no WorkspaceSource is configured.
|
|
3
|
+
*
|
|
4
|
+
* The workspace directory already exists (created by initializeLocalWorkspace).
|
|
5
|
+
* This handler simply records the fact and returns the existing root.
|
|
6
|
+
*/
|
|
7
|
+
import { SourceType } from "../types.js";
|
|
8
|
+
export function provisionEmpty(backend) {
|
|
9
|
+
return {
|
|
10
|
+
rootDir: backend.rootDir,
|
|
11
|
+
sourceType: SourceType.EMPTY,
|
|
12
|
+
consumedKeys: [],
|
|
13
|
+
workspaceDescription: "Your workspace is empty. " +
|
|
14
|
+
"Create files and directories as needed for your task.",
|
|
15
|
+
entryName: "",
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=empty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"empty.js","sourceRoot":"","sources":["../../../../src/shared/workspace/sources/empty.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAA+C,MAAM,aAAa,CAAC;AAEtF,MAAM,UAAU,cAAc,CAAC,OAAyB;IACtD,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,UAAU,CAAC,KAAK;QAC5B,YAAY,EAAE,EAAE;QAChB,oBAAoB,EAClB,2BAA2B;YAC3B,uDAAuD;QACzD,SAAS,EAAE,EAAE;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git workspace source — clones a repository into the workspace.
|
|
3
|
+
*
|
|
4
|
+
* Key behaviors ported from Python:
|
|
5
|
+
* - Idempotent: detects existing .git and skips re-clone
|
|
6
|
+
* - GitHub token injection via HTTPS URL (x-access-token)
|
|
7
|
+
* - Token is never logged; sanitized in error messages
|
|
8
|
+
* - GITHUB_TOKEN reported in consumedKeys for env stripping
|
|
9
|
+
* - Multi-entry mode: clones into target_subdir
|
|
10
|
+
* - Credential store configuration for git push/writeback
|
|
11
|
+
*/
|
|
12
|
+
import { type ProvisionResult, type WorkspaceBackend } from "../types.js";
|
|
13
|
+
export interface GitProvisionOptions {
|
|
14
|
+
url: string;
|
|
15
|
+
branch?: string;
|
|
16
|
+
backend: WorkspaceBackend;
|
|
17
|
+
envVars: Record<string, string>;
|
|
18
|
+
isLocalMode: boolean;
|
|
19
|
+
targetSubdir?: string;
|
|
20
|
+
configureCredentials?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function provisionGit(options: GitProvisionOptions): Promise<ProvisionResult>;
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git workspace source — clones a repository into the workspace.
|
|
3
|
+
*
|
|
4
|
+
* Key behaviors ported from Python:
|
|
5
|
+
* - Idempotent: detects existing .git and skips re-clone
|
|
6
|
+
* - GitHub token injection via HTTPS URL (x-access-token)
|
|
7
|
+
* - Token is never logged; sanitized in error messages
|
|
8
|
+
* - GITHUB_TOKEN reported in consumedKeys for env stripping
|
|
9
|
+
* - Multi-entry mode: clones into target_subdir
|
|
10
|
+
* - Credential store configuration for git push/writeback
|
|
11
|
+
*/
|
|
12
|
+
import { join } from "node:path";
|
|
13
|
+
import { SourceType, WorkspaceProvisionError, } from "../types.js";
|
|
14
|
+
const GITHUB_HOST = "github.com";
|
|
15
|
+
export async function provisionGit(options) {
|
|
16
|
+
const { url, branch, backend, envVars, isLocalMode, targetSubdir, configureCredentials } = options;
|
|
17
|
+
const cloneDir = targetSubdir
|
|
18
|
+
? join(backend.rootDir, targetSubdir)
|
|
19
|
+
: backend.rootDir;
|
|
20
|
+
const gitExists = await backend.exists(targetSubdir ? join(targetSubdir, ".git") : ".git");
|
|
21
|
+
if (gitExists) {
|
|
22
|
+
return reuseExistingRepo(cloneDir, url, backend, envVars, configureCredentials, targetSubdir);
|
|
23
|
+
}
|
|
24
|
+
const githubToken = envVars.GITHUB_TOKEN;
|
|
25
|
+
const consumedKeys = [];
|
|
26
|
+
let cloneUrl = url;
|
|
27
|
+
if (githubToken && url.includes(GITHUB_HOST)) {
|
|
28
|
+
cloneUrl = injectToken(url, githubToken);
|
|
29
|
+
consumedKeys.push("GITHUB_TOKEN");
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
await cloneInPlace(backend, cloneDir, cloneUrl, branch);
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
36
|
+
const sanitized = githubToken
|
|
37
|
+
? message.replaceAll(githubToken, "***")
|
|
38
|
+
: message;
|
|
39
|
+
throw new WorkspaceProvisionError(SourceType.GIT_REPO, `Git clone failed: ${sanitized}`, { cause: err instanceof Error ? err : undefined, transient: true });
|
|
40
|
+
}
|
|
41
|
+
let metadata = await extractGitMetadata(cloneDir, url, backend, targetSubdir);
|
|
42
|
+
if (configureCredentials && githubToken && url.includes(GITHUB_HOST)) {
|
|
43
|
+
const configured = await configureGitCredentialStore(backend, cloneDir, url, githubToken);
|
|
44
|
+
if (configured) {
|
|
45
|
+
metadata = { ...metadata, gitCredentialsConfigured: true };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
await addGitExcludes(backend, targetSubdir);
|
|
49
|
+
return {
|
|
50
|
+
rootDir: cloneDir,
|
|
51
|
+
sourceType: SourceType.GIT_REPO,
|
|
52
|
+
consumedKeys,
|
|
53
|
+
workspaceDescription: `Your workspace is a git clone of ${url}` +
|
|
54
|
+
(metadata.branch ? ` (branch: ${metadata.branch})` : "") +
|
|
55
|
+
`.\nBase commit: ${metadata.baseCommit}`,
|
|
56
|
+
gitMetadata: metadata,
|
|
57
|
+
entryName: "",
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async function reuseExistingRepo(cloneDir, url, backend, envVars, configureCredentials, targetSubdir) {
|
|
61
|
+
let metadata = await extractGitMetadata(cloneDir, url, backend, targetSubdir);
|
|
62
|
+
const githubToken = envVars.GITHUB_TOKEN;
|
|
63
|
+
if (configureCredentials && githubToken && url.includes(GITHUB_HOST)) {
|
|
64
|
+
const configured = await configureGitCredentialStore(backend, cloneDir, url, githubToken);
|
|
65
|
+
if (configured) {
|
|
66
|
+
metadata = { ...metadata, gitCredentialsConfigured: true };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
rootDir: cloneDir,
|
|
71
|
+
sourceType: SourceType.GIT_REPO,
|
|
72
|
+
consumedKeys: [],
|
|
73
|
+
workspaceDescription: `Your workspace is a git clone of ${url}` +
|
|
74
|
+
(metadata.branch ? ` (branch: ${metadata.branch})` : "") +
|
|
75
|
+
` (existing repo detected).\nBase commit: ${metadata.baseCommit}`,
|
|
76
|
+
gitMetadata: metadata,
|
|
77
|
+
entryName: "",
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Clone a repository into a directory that may already be non-empty.
|
|
82
|
+
*
|
|
83
|
+
* `git clone` refuses to write into a non-empty target, but cloud workspace
|
|
84
|
+
* mounts are not guaranteed empty — a freshly provisioned ext4 PersistentVolume
|
|
85
|
+
* ships a `lost+found` directory at its root. We therefore reproduce clone
|
|
86
|
+
* semantics in place: init the repo, add the (token-injected) origin remote,
|
|
87
|
+
* fetch all branches, and check out the requested branch (or the remote's
|
|
88
|
+
* default branch when none is requested). The result is identical to a clone —
|
|
89
|
+
* a working tree on a tracking branch — but tolerant of pre-existing content.
|
|
90
|
+
*/
|
|
91
|
+
async function cloneInPlace(backend, cloneDir, cloneUrl, branch) {
|
|
92
|
+
await backend.execute(`git init -q '${cloneDir}'`);
|
|
93
|
+
const exec = (cmd) => backend.execute(cmd, { cwd: cloneDir });
|
|
94
|
+
await exec(`git remote add origin '${cloneUrl}'`);
|
|
95
|
+
await exec("git fetch --quiet origin");
|
|
96
|
+
const targetBranch = branch && branch.length > 0
|
|
97
|
+
? branch
|
|
98
|
+
: await resolveDefaultBranch(backend, cloneDir);
|
|
99
|
+
// No target branch means the remote has no branches (empty repository).
|
|
100
|
+
// Leave the initialized repo as-is, matching `git clone` of an empty repo.
|
|
101
|
+
if (!targetBranch)
|
|
102
|
+
return;
|
|
103
|
+
await exec(`git checkout '${targetBranch}'`);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Resolve the remote's default branch after a fetch. Returns an empty string
|
|
107
|
+
* when the remote exposes no default (e.g. an empty repository), so the caller
|
|
108
|
+
* can skip checkout gracefully.
|
|
109
|
+
*/
|
|
110
|
+
async function resolveDefaultBranch(backend, cloneDir) {
|
|
111
|
+
const exec = (cmd) => backend.execute(cmd, { cwd: cloneDir });
|
|
112
|
+
try {
|
|
113
|
+
await exec("git remote set-head origin --auto");
|
|
114
|
+
const ref = (await exec("git symbolic-ref --short refs/remotes/origin/HEAD")).trim();
|
|
115
|
+
return ref.replace(/^origin\//, "");
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
return "";
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async function extractGitMetadata(cloneDir, url, backend, targetSubdir) {
|
|
122
|
+
const cwd = targetSubdir ?? undefined;
|
|
123
|
+
let branchName = "";
|
|
124
|
+
let headSha = "";
|
|
125
|
+
try {
|
|
126
|
+
branchName = (await backend.execute("git rev-parse --abbrev-ref HEAD", { cwd: cloneDir })).trim();
|
|
127
|
+
}
|
|
128
|
+
catch { /* non-fatal */ }
|
|
129
|
+
try {
|
|
130
|
+
headSha = (await backend.execute("git rev-parse HEAD", { cwd: cloneDir })).trim();
|
|
131
|
+
}
|
|
132
|
+
catch { /* non-fatal */ }
|
|
133
|
+
return {
|
|
134
|
+
repoUrl: stripToken(url),
|
|
135
|
+
branch: branchName,
|
|
136
|
+
baseCommit: headSha,
|
|
137
|
+
gitCredentialsConfigured: false,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Working-tree entries the agent should never see as untracked changes:
|
|
142
|
+
* - `.stigmer` — platform-managed namespace (skills, inputs, attachments)
|
|
143
|
+
* - `lost+found` — present at the root of a freshly provisioned ext4
|
|
144
|
+
* PersistentVolume, which is where single-entry sessions clone in place
|
|
145
|
+
*/
|
|
146
|
+
const GIT_EXCLUDE_ENTRIES = [".stigmer", "lost+found"];
|
|
147
|
+
async function addGitExcludes(backend, targetSubdir) {
|
|
148
|
+
const excludePath = targetSubdir
|
|
149
|
+
? join(targetSubdir, ".git/info/exclude")
|
|
150
|
+
: ".git/info/exclude";
|
|
151
|
+
try {
|
|
152
|
+
const current = await backend.readFile(excludePath);
|
|
153
|
+
const missing = GIT_EXCLUDE_ENTRIES.filter((entry) => !current.includes(entry));
|
|
154
|
+
if (missing.length > 0) {
|
|
155
|
+
await backend.writeFile(excludePath, current.trimEnd() + "\n" + missing.join("\n") + "\n");
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// .git/info/exclude might not exist — non-fatal
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Configure git credential store for push operations.
|
|
164
|
+
*
|
|
165
|
+
* Three-step process (each step is non-fatal):
|
|
166
|
+
* 1. Clean the remote URL — remove any embedded token from the origin remote
|
|
167
|
+
* 2. Set credential.helper to `store` with a repo-local credential file
|
|
168
|
+
* 3. Write the credential entry to the file
|
|
169
|
+
*
|
|
170
|
+
* Using repo-local config (not --global) keeps credentials scoped to
|
|
171
|
+
* the workspace and avoids polluting the host git config.
|
|
172
|
+
*/
|
|
173
|
+
async function configureGitCredentialStore(backend, cloneDir, url, token) {
|
|
174
|
+
const exec = (cmd) => backend.execute(cmd, { cwd: cloneDir });
|
|
175
|
+
const credFile = join(cloneDir, ".git", ".git-credentials");
|
|
176
|
+
const cleanUrl = stripToken(url);
|
|
177
|
+
try {
|
|
178
|
+
await exec(`git remote set-url origin '${cleanUrl}'`);
|
|
179
|
+
}
|
|
180
|
+
catch (err) {
|
|
181
|
+
console.warn(`[git] Failed to clean remote URL (non-fatal): ${err}`);
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
try {
|
|
185
|
+
await exec(`git config credential.helper 'store --file=${credFile}'`);
|
|
186
|
+
}
|
|
187
|
+
catch (err) {
|
|
188
|
+
console.warn(`[git] Failed to configure credential helper (non-fatal): ${err}`);
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
const credEntry = `https://x-access-token:${token}@github.com\n`;
|
|
192
|
+
try {
|
|
193
|
+
await backend.writeFile(credFile, credEntry);
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
console.warn(`[git] Failed to write credential file (non-fatal): ${err}`);
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
201
|
+
function injectToken(url, token) {
|
|
202
|
+
return url.replace("https://", `https://x-access-token:${token}@`);
|
|
203
|
+
}
|
|
204
|
+
function stripToken(url) {
|
|
205
|
+
return url.replace(/https:\/\/[^@]+@/, "https://");
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../../src/shared/workspace/sources/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local-path workspace source — uses an existing host directory as-is.
|
|
3
|
+
*
|
|
4
|
+
* The user's project directory becomes the workspace root directly. No
|
|
5
|
+
* copy or clone is made; the agent operates on the original files.
|
|
6
|
+
*
|
|
7
|
+
* LocalPathSource is only valid in local mode. Cloud runners reject it
|
|
8
|
+
* with a clear error — use git_repo for cloud deployments.
|
|
9
|
+
*/
|
|
10
|
+
import { type ProvisionResult } from "../types.js";
|
|
11
|
+
export interface LocalPathProvisionOptions {
|
|
12
|
+
path: string;
|
|
13
|
+
isLocalMode: boolean;
|
|
14
|
+
targetSubdir?: string;
|
|
15
|
+
backendRootDir?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function provisionLocalPath(options: LocalPathProvisionOptions): ProvisionResult;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local-path workspace source — uses an existing host directory as-is.
|
|
3
|
+
*
|
|
4
|
+
* The user's project directory becomes the workspace root directly. No
|
|
5
|
+
* copy or clone is made; the agent operates on the original files.
|
|
6
|
+
*
|
|
7
|
+
* LocalPathSource is only valid in local mode. Cloud runners reject it
|
|
8
|
+
* with a clear error — use git_repo for cloud deployments.
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync, statSync, symlinkSync, readlinkSync, unlinkSync, mkdirSync } from "node:fs";
|
|
11
|
+
import { join, isAbsolute } from "node:path";
|
|
12
|
+
import { realpathSync } from "node:fs";
|
|
13
|
+
import { SourceType, WorkspaceProvisionError, } from "../types.js";
|
|
14
|
+
export function provisionLocalPath(options) {
|
|
15
|
+
const { path, isLocalMode, targetSubdir, backendRootDir } = options;
|
|
16
|
+
if (!isLocalMode) {
|
|
17
|
+
throw new WorkspaceProvisionError(SourceType.LOCAL_PATH, "LocalPathSource is only supported in local mode. " +
|
|
18
|
+
"Use git_repo for cloud deployments.");
|
|
19
|
+
}
|
|
20
|
+
if (!isAbsolute(path)) {
|
|
21
|
+
throw new WorkspaceProvisionError(SourceType.LOCAL_PATH, `Path must be absolute, got relative path: '${path}'`);
|
|
22
|
+
}
|
|
23
|
+
if (!existsSync(path)) {
|
|
24
|
+
throw new WorkspaceProvisionError(SourceType.LOCAL_PATH, `Path does not exist: '${path}'`);
|
|
25
|
+
}
|
|
26
|
+
if (!statSync(path).isDirectory()) {
|
|
27
|
+
throw new WorkspaceProvisionError(SourceType.LOCAL_PATH, `Path is not a directory: '${path}'`);
|
|
28
|
+
}
|
|
29
|
+
if (targetSubdir && backendRootDir) {
|
|
30
|
+
createEntrySymlink(backendRootDir, targetSubdir, path);
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
rootDir: path,
|
|
34
|
+
sourceType: SourceType.LOCAL_PATH,
|
|
35
|
+
consumedKeys: [],
|
|
36
|
+
workspaceDescription: `Your workspace is the user's project directory: ${path}\n` +
|
|
37
|
+
"IMPORTANT: You are operating directly on the user's files. " +
|
|
38
|
+
"Changes are immediate and persistent.\n" +
|
|
39
|
+
"Use git to track and verify your changes before finalizing.",
|
|
40
|
+
entryName: "",
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function createEntrySymlink(backendRootDir, targetSubdir, path) {
|
|
44
|
+
const linkPath = join(backendRootDir, targetSubdir);
|
|
45
|
+
try {
|
|
46
|
+
const existing = readlinkSync(linkPath);
|
|
47
|
+
if (realpathSync(existing) === realpathSync(path))
|
|
48
|
+
return;
|
|
49
|
+
unlinkSync(linkPath);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// link doesn't exist — will create below
|
|
53
|
+
}
|
|
54
|
+
mkdirSync(backendRootDir, { recursive: true });
|
|
55
|
+
symlinkSync(path, linkPath);
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=local-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-path.js","sourceRoot":"","sources":["../../../../src/shared/workspace/sources/local-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjG,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EACL,UAAU,EACV,uBAAuB,GAExB,MAAM,aAAa,CAAC;AASrB,MAAM,UAAU,kBAAkB,CAAC,OAAkC;IACnE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAEpE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,uBAAuB,CAC/B,UAAU,CAAC,UAAU,EACrB,mDAAmD;YACnD,qCAAqC,CACtC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,uBAAuB,CAC/B,UAAU,CAAC,UAAU,EACrB,8CAA8C,IAAI,GAAG,CACtD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,uBAAuB,CAC/B,UAAU,CAAC,UAAU,EACrB,yBAAyB,IAAI,GAAG,CACjC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,uBAAuB,CAC/B,UAAU,CAAC,UAAU,EACrB,6BAA6B,IAAI,GAAG,CACrC,CAAC;IACJ,CAAC;IAED,IAAI,YAAY,IAAI,cAAc,EAAE,CAAC;QACnC,kBAAkB,CAAC,cAAc,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,YAAY,EAAE,EAAE;QAChB,oBAAoB,EAClB,mDAAmD,IAAI,IAAI;YAC3D,6DAA6D;YAC7D,yCAAyC;YACzC,6DAA6D;QAC/D,SAAS,EAAE,EAAE;KACd,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,cAAsB,EAAE,YAAoB,EAAE,IAAY;IACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAEpD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC;YAAE,OAAO;QAC1D,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,yCAAyC;IAC3C,CAAC;IAED,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC9B,CAAC"}
|