@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,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM proxy routing utilities — shared between ExecuteDeepAgent and
|
|
3
|
+
* ClassifyToolApprovals (and any future LLM-calling activities).
|
|
4
|
+
*
|
|
5
|
+
* Responsibilities:
|
|
6
|
+
* 1. Infer the LLM provider from a model name string (prefix heuristics).
|
|
7
|
+
* 2. Construct the correct proxy base URL for each provider, matching the
|
|
8
|
+
* path pattern expected by stigmer-cloud's LlmProxyController:
|
|
9
|
+
* - Anthropic: {proxy}/v1/proxy/llm/anthropic
|
|
10
|
+
* - OpenAI: {proxy}/v1/proxy/llm/openai/v1
|
|
11
|
+
* 3. Build authorization and scope headers for proxy requests.
|
|
12
|
+
*
|
|
13
|
+
* These utilities mirror the Python agent-runner's `LLMConfig.build_llm_kwargs`
|
|
14
|
+
* but as composable functions rather than a config class method.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Provider-specific path suffixes appended to `STIGMER_PROXY_ENDPOINT`.
|
|
18
|
+
*
|
|
19
|
+
* OpenAI's SDK includes `/v1` in its default base URL (https://api.openai.com/v1),
|
|
20
|
+
* so the proxy path includes it: `/v1/proxy/llm/openai/v1`.
|
|
21
|
+
*
|
|
22
|
+
* Anthropic's SDK does NOT include `/v1` in its base URL (https://api.anthropic.com),
|
|
23
|
+
* so the proxy path omits it: `/v1/proxy/llm/anthropic`.
|
|
24
|
+
*/
|
|
25
|
+
const PROXY_PATHS = {
|
|
26
|
+
anthropic: "/v1/proxy/llm/anthropic",
|
|
27
|
+
openai: "/v1/proxy/llm/openai/v1",
|
|
28
|
+
};
|
|
29
|
+
const OPENAI_PREFIXES = ["gpt", "o1", "o3", "o4", "chatgpt"];
|
|
30
|
+
/**
|
|
31
|
+
* Infer the LLM provider from a model name.
|
|
32
|
+
*
|
|
33
|
+
* Resolution order:
|
|
34
|
+
* 1. Explicit prefix syntax: "provider:model-name" (e.g. "openai:gpt-4.1")
|
|
35
|
+
* 2. Name prefix heuristics (claude → anthropic, gpt/o1/o3/o4 → openai)
|
|
36
|
+
*
|
|
37
|
+
* Throws if the provider cannot be determined — callers should not silently
|
|
38
|
+
* fall back to a default provider when an unknown model is requested.
|
|
39
|
+
*/
|
|
40
|
+
export function inferProvider(modelName) {
|
|
41
|
+
if (!modelName) {
|
|
42
|
+
throw new Error("Model name is required but received an empty string");
|
|
43
|
+
}
|
|
44
|
+
const colonIdx = modelName.indexOf(":");
|
|
45
|
+
if (colonIdx > 0 && colonIdx < modelName.length - 1) {
|
|
46
|
+
const prefix = modelName.slice(0, colonIdx).toLowerCase();
|
|
47
|
+
if (prefix === "anthropic" || prefix === "openai") {
|
|
48
|
+
return prefix;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const lower = modelName.toLowerCase();
|
|
52
|
+
if (lower.startsWith("claude")) {
|
|
53
|
+
return "anthropic";
|
|
54
|
+
}
|
|
55
|
+
for (const prefix of OPENAI_PREFIXES) {
|
|
56
|
+
if (lower.startsWith(prefix)) {
|
|
57
|
+
return "openai";
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
throw new Error(`Cannot determine LLM provider for model "${modelName}". ` +
|
|
61
|
+
`Known prefixes: claude* (anthropic), gpt*/o1*/o3*/o4*/chatgpt* (openai). ` +
|
|
62
|
+
`Use explicit prefix syntax "provider:model-name" for non-standard model names.`);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Strip an explicit "provider:" prefix from the model name, returning
|
|
66
|
+
* just the model ID portion. If no explicit prefix is present, returns
|
|
67
|
+
* the original name unchanged.
|
|
68
|
+
*/
|
|
69
|
+
export function stripProviderPrefix(modelName) {
|
|
70
|
+
const colonIdx = modelName.indexOf(":");
|
|
71
|
+
if (colonIdx > 0 && colonIdx < modelName.length - 1) {
|
|
72
|
+
const prefix = modelName.slice(0, colonIdx).toLowerCase();
|
|
73
|
+
if (prefix === "anthropic" || prefix === "openai") {
|
|
74
|
+
return modelName.slice(colonIdx + 1);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return modelName;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Construct the proxy base URL for a given provider.
|
|
81
|
+
*
|
|
82
|
+
* The returned URL is what gets passed as `baseURL` / `clientOptions.baseURL`
|
|
83
|
+
* to the LangChain model constructor. The LangChain SDK appends provider-
|
|
84
|
+
* specific API paths (e.g. `/v1/messages` for Anthropic, `/chat/completions`
|
|
85
|
+
* for OpenAI).
|
|
86
|
+
*
|
|
87
|
+
* Example:
|
|
88
|
+
* resolveProxyBaseUrl("https://api.stigmer.ai", "openai")
|
|
89
|
+
* → "https://api.stigmer.ai/v1/proxy/llm/openai/v1"
|
|
90
|
+
*/
|
|
91
|
+
export function resolveProxyBaseUrl(proxyEndpoint, provider) {
|
|
92
|
+
const base = proxyEndpoint.replace(/\/+$/, "");
|
|
93
|
+
return `${base}${PROXY_PATHS[provider]}`;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Build the HTTP headers for proxy-routed LLM requests.
|
|
97
|
+
*
|
|
98
|
+
* Always includes Bearer authorization. Optionally includes scope headers
|
|
99
|
+
* used by the proxy for FGA authorization and billing attribution.
|
|
100
|
+
*/
|
|
101
|
+
export function buildProxyHeaders(token, options) {
|
|
102
|
+
const headers = {
|
|
103
|
+
Authorization: `Bearer ${token}`,
|
|
104
|
+
};
|
|
105
|
+
if (options?.executionId) {
|
|
106
|
+
headers["X-Stigmer-Execution-Id"] = options.executionId;
|
|
107
|
+
}
|
|
108
|
+
if (options?.mcpServerId) {
|
|
109
|
+
headers["X-Stigmer-Mcp-Server-Id"] = options.mcpServerId;
|
|
110
|
+
}
|
|
111
|
+
if (options?.workflowExecutionId) {
|
|
112
|
+
headers["X-Stigmer-Workflow-Execution-Id"] = options.workflowExecutionId;
|
|
113
|
+
}
|
|
114
|
+
return headers;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=llm-proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-proxy.js","sourceRoot":"","sources":["../../src/shared/llm-proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP connection manager for the deep agent execution path.
|
|
3
|
+
*
|
|
4
|
+
* Wraps @langchain/mcp-adapters MultiServerMCPClient with:
|
|
5
|
+
* - Conversion from ResolvedMcpServer[] to the SDK's Connection config
|
|
6
|
+
* - Proper async cleanup via close()
|
|
7
|
+
* - Cloud compatibility validation (warn on non-installable stdio commands)
|
|
8
|
+
* - Tool filtering based on discovered capabilities
|
|
9
|
+
*
|
|
10
|
+
* The Cursor execution path does NOT use this manager — it passes MCP
|
|
11
|
+
* configs directly to the Cursor SDK via toCursorMcpConfig(). This
|
|
12
|
+
* manager is exclusively for LangGraph-based deep agent executions.
|
|
13
|
+
*/
|
|
14
|
+
import { MultiServerMCPClient } from "@langchain/mcp-adapters";
|
|
15
|
+
import type { Connection } from "@langchain/mcp-adapters";
|
|
16
|
+
import type { DynamicStructuredTool } from "@langchain/core/tools";
|
|
17
|
+
import type { ResolvedMcpServer } from "./mcp-resolver.js";
|
|
18
|
+
/**
|
|
19
|
+
* Classifies a stdio command's compatibility with cloud execution.
|
|
20
|
+
* Returns true for commands that are installable/available in typical
|
|
21
|
+
* cloud environments (npx, node, uvx, python).
|
|
22
|
+
*/
|
|
23
|
+
export declare function isCloudCompatibleCommand(command: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Log warnings for MCP servers that may not work in cloud mode.
|
|
26
|
+
* Does not filter or reject — just provides operator visibility.
|
|
27
|
+
*/
|
|
28
|
+
export declare function warnCloudIncompatibleServers(servers: ResolvedMcpServer[], isCloudMode: boolean): void;
|
|
29
|
+
/**
|
|
30
|
+
* Convert harness-agnostic ResolvedMcpServer[] into the
|
|
31
|
+
* MultiServerMCPClient connection config format.
|
|
32
|
+
*/
|
|
33
|
+
export declare function toMcpClientConfig(servers: ResolvedMcpServer[]): Record<string, Connection>;
|
|
34
|
+
export interface McpConnectionResult {
|
|
35
|
+
client: MultiServerMCPClient;
|
|
36
|
+
tools: DynamicStructuredTool[];
|
|
37
|
+
serverToolMap: Record<string, DynamicStructuredTool[]>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Create and initialize MCP connections from resolved server specs.
|
|
41
|
+
*
|
|
42
|
+
* The caller is responsible for calling result.client.close() when
|
|
43
|
+
* done — typically in a finally block or via a cleanup handler.
|
|
44
|
+
*/
|
|
45
|
+
export declare function connectMcpServers(servers: ResolvedMcpServer[], options?: {
|
|
46
|
+
isCloudMode?: boolean;
|
|
47
|
+
}): Promise<McpConnectionResult>;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP connection manager for the deep agent execution path.
|
|
3
|
+
*
|
|
4
|
+
* Wraps @langchain/mcp-adapters MultiServerMCPClient with:
|
|
5
|
+
* - Conversion from ResolvedMcpServer[] to the SDK's Connection config
|
|
6
|
+
* - Proper async cleanup via close()
|
|
7
|
+
* - Cloud compatibility validation (warn on non-installable stdio commands)
|
|
8
|
+
* - Tool filtering based on discovered capabilities
|
|
9
|
+
*
|
|
10
|
+
* The Cursor execution path does NOT use this manager — it passes MCP
|
|
11
|
+
* configs directly to the Cursor SDK via toCursorMcpConfig(). This
|
|
12
|
+
* manager is exclusively for LangGraph-based deep agent executions.
|
|
13
|
+
*/
|
|
14
|
+
import { MultiServerMCPClient } from "@langchain/mcp-adapters";
|
|
15
|
+
const CLOUD_SAFE_COMMANDS = new Set(["npx", "node", "uvx", "python", "python3"]);
|
|
16
|
+
/**
|
|
17
|
+
* Classifies a stdio command's compatibility with cloud execution.
|
|
18
|
+
* Returns true for commands that are installable/available in typical
|
|
19
|
+
* cloud environments (npx, node, uvx, python).
|
|
20
|
+
*/
|
|
21
|
+
export function isCloudCompatibleCommand(command) {
|
|
22
|
+
const base = command.split("/").pop() ?? command;
|
|
23
|
+
return CLOUD_SAFE_COMMANDS.has(base);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Log warnings for MCP servers that may not work in cloud mode.
|
|
27
|
+
* Does not filter or reject — just provides operator visibility.
|
|
28
|
+
*/
|
|
29
|
+
export function warnCloudIncompatibleServers(servers, isCloudMode) {
|
|
30
|
+
if (!isCloudMode)
|
|
31
|
+
return;
|
|
32
|
+
for (const server of servers) {
|
|
33
|
+
if (server.connectionType === "stdio" && server.command) {
|
|
34
|
+
if (!isCloudCompatibleCommand(server.command)) {
|
|
35
|
+
console.warn(`[MCP] Server '${server.slug}' uses stdio command '${server.command}' ` +
|
|
36
|
+
`which may not be available in cloud execution environments. ` +
|
|
37
|
+
`Consider using an HTTP MCP server or an npx-installable package.`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Convert harness-agnostic ResolvedMcpServer[] into the
|
|
44
|
+
* MultiServerMCPClient connection config format.
|
|
45
|
+
*/
|
|
46
|
+
export function toMcpClientConfig(servers) {
|
|
47
|
+
const config = {};
|
|
48
|
+
for (const server of servers) {
|
|
49
|
+
if (server.connectionType === "stdio") {
|
|
50
|
+
if (!server.command)
|
|
51
|
+
continue;
|
|
52
|
+
config[server.slug] = {
|
|
53
|
+
transport: "stdio",
|
|
54
|
+
command: server.command,
|
|
55
|
+
args: server.args ?? [],
|
|
56
|
+
env: server.env ?? processEnvAsStrings(),
|
|
57
|
+
cwd: server.cwd,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
else if (server.connectionType === "http" || server.connectionType === "sse") {
|
|
61
|
+
if (!server.url)
|
|
62
|
+
continue;
|
|
63
|
+
config[server.slug] = {
|
|
64
|
+
transport: "http",
|
|
65
|
+
url: server.url,
|
|
66
|
+
headers: server.headers,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return config;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Create and initialize MCP connections from resolved server specs.
|
|
74
|
+
*
|
|
75
|
+
* The caller is responsible for calling result.client.close() when
|
|
76
|
+
* done — typically in a finally block or via a cleanup handler.
|
|
77
|
+
*/
|
|
78
|
+
export async function connectMcpServers(servers, options) {
|
|
79
|
+
if (options?.isCloudMode) {
|
|
80
|
+
warnCloudIncompatibleServers(servers, true);
|
|
81
|
+
}
|
|
82
|
+
const connectionConfig = toMcpClientConfig(servers);
|
|
83
|
+
if (Object.keys(connectionConfig).length === 0) {
|
|
84
|
+
const client = new MultiServerMCPClient({});
|
|
85
|
+
return { client, tools: [], serverToolMap: {} };
|
|
86
|
+
}
|
|
87
|
+
const client = new MultiServerMCPClient(connectionConfig);
|
|
88
|
+
const serverToolMap = await client.initializeConnections();
|
|
89
|
+
const tools = [];
|
|
90
|
+
for (const serverTools of Object.values(serverToolMap)) {
|
|
91
|
+
tools.push(...serverTools);
|
|
92
|
+
}
|
|
93
|
+
console.log(`[MCP] Connected ${Object.keys(serverToolMap).length} server(s), ` +
|
|
94
|
+
`${tools.length} tool(s) total: ${Object.entries(serverToolMap)
|
|
95
|
+
.map(([name, t]) => `${name}(${t.length})`)
|
|
96
|
+
.join(", ")}`);
|
|
97
|
+
return { client, tools, serverToolMap };
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Snapshot of process.env as a string-only record (no undefined values).
|
|
101
|
+
* Used as a fallback when an MCP server has no declared env — the
|
|
102
|
+
* subprocess inherits the runner's full environment, matching standard
|
|
103
|
+
* Unix child-process behavior.
|
|
104
|
+
*
|
|
105
|
+
* Without this, @modelcontextprotocol/sdk only passes a restricted
|
|
106
|
+
* whitelist (HOME, PATH, USER, etc.) which drops platform variables
|
|
107
|
+
* like STIGMER_SERVER_ADDRESS.
|
|
108
|
+
*/
|
|
109
|
+
function processEnvAsStrings() {
|
|
110
|
+
const env = {};
|
|
111
|
+
for (const [key, value] of Object.entries(process.env)) {
|
|
112
|
+
if (value !== undefined) {
|
|
113
|
+
env[key] = value;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return env;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=mcp-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-manager.js","sourceRoot":"","sources":["../../src/shared/mcp-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves Stigmer McpServerUsage references into an intermediate
|
|
3
|
+
* ResolvedMcpServer format that is harness-agnostic.
|
|
4
|
+
*
|
|
5
|
+
* Both ExecuteCursor and ExecuteDeepAgent need MCP server connection info
|
|
6
|
+
* and tool approval policies. This module provides the common resolution
|
|
7
|
+
* logic; each harness maps ResolvedMcpServer into its SDK-specific format.
|
|
8
|
+
*/
|
|
9
|
+
import type { McpServerUsage } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/spec_pb";
|
|
10
|
+
import type { McpServer } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/api_pb";
|
|
11
|
+
import type { ToolApprovalPolicy } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/spec_pb";
|
|
12
|
+
import type { StigmerClient } from "../client/stigmer-client.js";
|
|
13
|
+
/**
|
|
14
|
+
* Harness-agnostic intermediate representation of a resolved MCP server.
|
|
15
|
+
* Contains connection info and approval policies. Each harness maps this
|
|
16
|
+
* into its SDK-specific format (e.g., Cursor McpServerConfig, LangGraph
|
|
17
|
+
* MultiServerMCPClient config).
|
|
18
|
+
*/
|
|
19
|
+
export interface ResolvedMcpServer {
|
|
20
|
+
slug: string;
|
|
21
|
+
connectionType: "stdio" | "http" | "sse";
|
|
22
|
+
command?: string;
|
|
23
|
+
args?: string[];
|
|
24
|
+
env?: Record<string, string>;
|
|
25
|
+
cwd?: string;
|
|
26
|
+
url?: string;
|
|
27
|
+
headers?: Record<string, string>;
|
|
28
|
+
toolApprovals: ToolApprovalPolicy[];
|
|
29
|
+
pinnedToolApprovals: ToolApprovalPolicy[];
|
|
30
|
+
discoveredCapabilitiesEmpty: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface McpResolutionResult {
|
|
33
|
+
resolvedServers: ResolvedMcpServer[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Fetch McpServer resources and resolve into intermediate format.
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolveMcpServers(client: StigmerClient, usages: McpServerUsage[], envVars?: Record<string, string>): Promise<McpResolutionResult>;
|
|
39
|
+
export declare function mcpServerToResolved(server: McpServer, slug: string, envVars: Record<string, string>): ResolvedMcpServer | null;
|
|
40
|
+
export declare function extractMcpServerSlugs(usages: McpServerUsage[]): string[];
|
|
41
|
+
export { PlaceholderResolutionError } from "./placeholder-resolver.js";
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves Stigmer McpServerUsage references into an intermediate
|
|
3
|
+
* ResolvedMcpServer format that is harness-agnostic.
|
|
4
|
+
*
|
|
5
|
+
* Both ExecuteCursor and ExecuteDeepAgent need MCP server connection info
|
|
6
|
+
* and tool approval policies. This module provides the common resolution
|
|
7
|
+
* logic; each harness maps ResolvedMcpServer into its SDK-specific format.
|
|
8
|
+
*/
|
|
9
|
+
import { resolveHeaders, resolvePlaceholders, filterEnvToDeclaredKeys, PlaceholderResolutionError, } from "./placeholder-resolver.js";
|
|
10
|
+
/**
|
|
11
|
+
* Fetch McpServer resources and resolve into intermediate format.
|
|
12
|
+
*/
|
|
13
|
+
export async function resolveMcpServers(client, usages, envVars = {}) {
|
|
14
|
+
const resolved = [];
|
|
15
|
+
for (const usage of usages) {
|
|
16
|
+
const ref = usage.mcpServerRef;
|
|
17
|
+
if (!ref?.slug)
|
|
18
|
+
continue;
|
|
19
|
+
try {
|
|
20
|
+
const mcpServer = await client.getMcpServerByReference(ref);
|
|
21
|
+
const serverEnv = filterEnvToDeclaredKeys(mcpServer.spec?.env, envVars, ref.slug);
|
|
22
|
+
const server = mcpServerToResolved(mcpServer, ref.slug, serverEnv);
|
|
23
|
+
if (server)
|
|
24
|
+
resolved.push(server);
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
if (err instanceof PlaceholderResolutionError) {
|
|
28
|
+
console.error(`MCP server ${ref.org}/${ref.slug}: ${err.message}`);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
console.warn(`Failed to resolve MCP server ${ref.org}/${ref.slug}: ${err instanceof Error ? err.message : err}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return { resolvedServers: resolved };
|
|
36
|
+
}
|
|
37
|
+
export function mcpServerToResolved(server, slug, envVars) {
|
|
38
|
+
const spec = server.spec;
|
|
39
|
+
if (!spec)
|
|
40
|
+
return null;
|
|
41
|
+
const status = server.status;
|
|
42
|
+
const toolApprovals = status?.toolApprovals ?? [];
|
|
43
|
+
const pinnedToolApprovals = spec.pinnedToolApprovals ?? [];
|
|
44
|
+
const discoveredCapabilitiesEmpty = !status?.discoveredCapabilities
|
|
45
|
+
|| (status.discoveredCapabilities.tools.length === 0
|
|
46
|
+
&& status.discoveredCapabilities.resourceTemplates.length === 0);
|
|
47
|
+
const base = {
|
|
48
|
+
toolApprovals,
|
|
49
|
+
pinnedToolApprovals,
|
|
50
|
+
discoveredCapabilitiesEmpty,
|
|
51
|
+
};
|
|
52
|
+
switch (spec.serverType.case) {
|
|
53
|
+
case "stdio": {
|
|
54
|
+
const stdio = spec.serverType.value;
|
|
55
|
+
if (!stdio.command)
|
|
56
|
+
return null;
|
|
57
|
+
const resolvedArgs = stdio.args.length > 0
|
|
58
|
+
? stdio.args.map((arg, i) => resolvePlaceholders(arg, envVars, `stdio arg[${i}]`))
|
|
59
|
+
: undefined;
|
|
60
|
+
return {
|
|
61
|
+
slug,
|
|
62
|
+
connectionType: "stdio",
|
|
63
|
+
command: stdio.command,
|
|
64
|
+
args: resolvedArgs,
|
|
65
|
+
env: Object.keys(envVars).length > 0 ? { ...envVars } : undefined,
|
|
66
|
+
cwd: stdio.workingDir || undefined,
|
|
67
|
+
...base,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
case "http": {
|
|
71
|
+
const http = spec.serverType.value;
|
|
72
|
+
if (!http.url)
|
|
73
|
+
return null;
|
|
74
|
+
const rawHeaders = Object.keys(http.headers).length > 0 ? http.headers : undefined;
|
|
75
|
+
const resolved = rawHeaders
|
|
76
|
+
? resolveHeaders(Object.fromEntries(Object.entries(rawHeaders)), envVars)
|
|
77
|
+
: undefined;
|
|
78
|
+
return {
|
|
79
|
+
slug,
|
|
80
|
+
connectionType: "http",
|
|
81
|
+
url: http.url,
|
|
82
|
+
headers: resolved,
|
|
83
|
+
...base,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
default:
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export function extractMcpServerSlugs(usages) {
|
|
91
|
+
return usages
|
|
92
|
+
.map((u) => u.mcpServerRef?.slug)
|
|
93
|
+
.filter((s) => !!s);
|
|
94
|
+
}
|
|
95
|
+
export { PlaceholderResolutionError } from "./placeholder-resolver.js";
|
|
96
|
+
//# sourceMappingURL=mcp-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-resolver.js","sourceRoot":"","sources":["../../src/shared/mcp-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AA0BnC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAqB,EACrB,MAAwB,EACxB,UAAkC,EAAE;IAEpC,MAAM,QAAQ,GAAwB,EAAE,CAAC;IAEzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC;QAC/B,IAAI,CAAC,GAAG,EAAE,IAAI;YAAE,SAAS;QAEzB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;YAC5D,MAAM,SAAS,GAAG,uBAAuB,CACvC,SAAS,CAAC,IAAI,EAAE,GAAG,EACnB,OAAO,EACP,GAAG,CAAC,IAAI,CACT,CAAC;YACF,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACnE,IAAI,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,0BAA0B,EAAE,CAAC;gBAC9C,OAAO,CAAC,KAAK,CACX,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CACpD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CACV,gCAAgC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CACnG,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAiB,EACjB,IAAY,EACZ,OAA+B;IAE/B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,aAAa,GAAG,MAAM,EAAE,aAAa,IAAI,EAAE,CAAC;IAClD,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC;IAC3D,MAAM,2BAA2B,GAAG,CAAC,MAAM,EAAE,sBAAsB;WAC9D,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;eAC/C,MAAM,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAErE,MAAM,IAAI,GAAG;QACX,aAAa;QACb,mBAAmB;QACnB,2BAA2B;KAC5B,CAAC;IAEF,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC7B,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAC;YAChC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;gBACxC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CACxB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,CACrD;gBACH,CAAC,CAAC,SAAS,CAAC;YACd,OAAO;gBACL,IAAI;gBACJ,cAAc,EAAE,OAAO;gBACvB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,YAAY;gBAClB,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS;gBACjE,GAAG,EAAE,KAAK,CAAC,UAAU,IAAI,SAAS;gBAClC,GAAG,IAAI;aACR,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC;YAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YACnF,MAAM,QAAQ,GAAG,UAAU;gBACzB,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC;gBACzE,CAAC,CAAC,SAAS,CAAC;YACd,OAAO;gBACL,IAAI;gBACJ,cAAc,EAAE,MAAM;gBACtB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,OAAO,EAAE,QAAQ;gBACjB,GAAG,IAAI;aACR,CAAC;QACJ,CAAC;QACD;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAwB;IAC5D,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC;SAChC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model pricing data — fetched from the model registry API and cached.
|
|
3
|
+
*
|
|
4
|
+
* On first access, fetches the full model registry, filters to models
|
|
5
|
+
* with pricing info, and caches the result. Falls back to conservative
|
|
6
|
+
* default pricing if the API is unreachable.
|
|
7
|
+
*/
|
|
8
|
+
export interface ModelPricing {
|
|
9
|
+
readonly model: string;
|
|
10
|
+
readonly displayName: string;
|
|
11
|
+
readonly costTier: string;
|
|
12
|
+
readonly inputPricePerMillion: number;
|
|
13
|
+
readonly outputPricePerMillion: number;
|
|
14
|
+
readonly cacheWritePricePerMillion: number;
|
|
15
|
+
readonly cacheReadPricePerMillion: number;
|
|
16
|
+
}
|
|
17
|
+
export declare const DEFAULT_PRICING: ModelPricing;
|
|
18
|
+
export declare function getPricingTable(): Promise<readonly ModelPricing[]>;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model pricing data — fetched from the model registry API and cached.
|
|
3
|
+
*
|
|
4
|
+
* On first access, fetches the full model registry, filters to models
|
|
5
|
+
* with pricing info, and caches the result. Falls back to conservative
|
|
6
|
+
* default pricing if the API is unreachable.
|
|
7
|
+
*/
|
|
8
|
+
const DEFAULT_API_URL = "https://api.stigmer.ai";
|
|
9
|
+
const CACHE_TTL_MS = 3_600_000;
|
|
10
|
+
export const DEFAULT_PRICING = {
|
|
11
|
+
model: "unknown",
|
|
12
|
+
displayName: "Unknown",
|
|
13
|
+
costTier: "standard",
|
|
14
|
+
inputPricePerMillion: 1.25,
|
|
15
|
+
outputPricePerMillion: 6.00,
|
|
16
|
+
cacheWritePricePerMillion: 1.25,
|
|
17
|
+
cacheReadPricePerMillion: 0.25,
|
|
18
|
+
};
|
|
19
|
+
let cache = null;
|
|
20
|
+
let inflightFetch = null;
|
|
21
|
+
function parsePricingTable(json) {
|
|
22
|
+
if (!json || typeof json !== "object")
|
|
23
|
+
return [];
|
|
24
|
+
const models = json.models;
|
|
25
|
+
if (!Array.isArray(models))
|
|
26
|
+
return [];
|
|
27
|
+
return models
|
|
28
|
+
.filter((m) => m.pricing != null)
|
|
29
|
+
.map((m) => ({
|
|
30
|
+
model: m.id,
|
|
31
|
+
displayName: m.displayName,
|
|
32
|
+
costTier: m.costTier ?? "standard",
|
|
33
|
+
inputPricePerMillion: m.pricing.inputPricePerMillion,
|
|
34
|
+
outputPricePerMillion: m.pricing.outputPricePerMillion,
|
|
35
|
+
cacheWritePricePerMillion: m.pricing.cacheWritePricePerMillion,
|
|
36
|
+
cacheReadPricePerMillion: m.pricing.cacheReadPricePerMillion,
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
async function fetchFromApi() {
|
|
40
|
+
const url = `${process.env.STIGMER_CLOUD_API_URL ?? DEFAULT_API_URL}/v1/proxy/model-registry`;
|
|
41
|
+
const headers = {};
|
|
42
|
+
const token = process.env.STIGMER_TOKEN ?? process.env.STIGMER_AUTH_TOKEN;
|
|
43
|
+
if (token) {
|
|
44
|
+
headers["Authorization"] = `Bearer ${token}`;
|
|
45
|
+
}
|
|
46
|
+
const res = await fetch(url, { headers });
|
|
47
|
+
if (!res.ok)
|
|
48
|
+
throw new Error(`Model registry fetch failed: ${res.status}`);
|
|
49
|
+
const data = await res.json();
|
|
50
|
+
const table = parsePricingTable(data);
|
|
51
|
+
if (table.length === 0) {
|
|
52
|
+
throw new Error("Model registry returned no models with pricing");
|
|
53
|
+
}
|
|
54
|
+
return table;
|
|
55
|
+
}
|
|
56
|
+
export async function getPricingTable() {
|
|
57
|
+
if (cache && Date.now() < cache.expiresAt) {
|
|
58
|
+
return cache.data;
|
|
59
|
+
}
|
|
60
|
+
if (inflightFetch)
|
|
61
|
+
return inflightFetch;
|
|
62
|
+
inflightFetch = fetchFromApi()
|
|
63
|
+
.then((data) => {
|
|
64
|
+
cache = { data, expiresAt: Date.now() + CACHE_TTL_MS };
|
|
65
|
+
return data;
|
|
66
|
+
})
|
|
67
|
+
.catch((err) => {
|
|
68
|
+
console.warn(`Failed to fetch model registry, using default pricing: ${err}`);
|
|
69
|
+
const fallback = [DEFAULT_PRICING];
|
|
70
|
+
cache = { data: fallback, expiresAt: Date.now() + CACHE_TTL_MS };
|
|
71
|
+
return fallback;
|
|
72
|
+
})
|
|
73
|
+
.finally(() => {
|
|
74
|
+
inflightFetch = null;
|
|
75
|
+
});
|
|
76
|
+
return inflightFetch;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=model-pricing-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-pricing-data.js","sourceRoot":"","sources":["../../src/shared/model-pricing-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model pricing lookup and cost computation.
|
|
3
|
+
*/
|
|
4
|
+
import type { ModelPricing } from "./model-pricing-data.js";
|
|
5
|
+
export type { ModelPricing };
|
|
6
|
+
/**
|
|
7
|
+
* Ensure the pricing map has been populated from the API cache.
|
|
8
|
+
* Call once at startup or before the first pricing lookup.
|
|
9
|
+
*/
|
|
10
|
+
export declare function ensureLoaded(): Promise<void>;
|
|
11
|
+
export declare function resolveModelId(requestedModel: string): string;
|
|
12
|
+
export declare function getModelPricing(model: string): ModelPricing;
|
|
13
|
+
/**
|
|
14
|
+
* Compute USD cost for a single turn using disjoint token buckets.
|
|
15
|
+
*/
|
|
16
|
+
export declare function computeTurnCost(pricing: ModelPricing, inputTokens: number, outputTokens: number, cacheWriteTokens: number, cacheReadTokens: number): number;
|
|
17
|
+
/**
|
|
18
|
+
* Compute cost in micro-USD for a workflow LLM call.
|
|
19
|
+
*
|
|
20
|
+
* Uses the cloud-fetched pricing registry (via `ensureLoaded`).
|
|
21
|
+
* Falls back to DEFAULT_PRICING for unknown models so that cost
|
|
22
|
+
* is always estimated rather than silently reported as zero.
|
|
23
|
+
*/
|
|
24
|
+
export declare function computeLlmCostMicros(modelId: string, inputTokens: number, outputTokens: number): number;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model pricing lookup and cost computation.
|
|
3
|
+
*/
|
|
4
|
+
import { getPricingTable, DEFAULT_PRICING } from "./model-pricing-data.js";
|
|
5
|
+
let pricingByModel = null;
|
|
6
|
+
let initPromise = null;
|
|
7
|
+
/**
|
|
8
|
+
* Ensure the pricing map has been populated from the API cache.
|
|
9
|
+
* Call once at startup or before the first pricing lookup.
|
|
10
|
+
*/
|
|
11
|
+
export async function ensureLoaded() {
|
|
12
|
+
if (initPromise)
|
|
13
|
+
return initPromise;
|
|
14
|
+
initPromise = getPricingTable().then((table) => {
|
|
15
|
+
pricingByModel = new Map(table.map((entry) => [entry.model, entry]));
|
|
16
|
+
});
|
|
17
|
+
return initPromise;
|
|
18
|
+
}
|
|
19
|
+
function getMap() {
|
|
20
|
+
if (!pricingByModel) {
|
|
21
|
+
console.warn("Model pricing accessed before ensureLoaded() — returning empty map");
|
|
22
|
+
return new Map();
|
|
23
|
+
}
|
|
24
|
+
return pricingByModel;
|
|
25
|
+
}
|
|
26
|
+
export function resolveModelId(requestedModel) {
|
|
27
|
+
if (!requestedModel || requestedModel === "default")
|
|
28
|
+
return "default";
|
|
29
|
+
if (getMap().has(requestedModel))
|
|
30
|
+
return requestedModel;
|
|
31
|
+
console.warn(`Model "${requestedModel}" not in pricing registry (${getMap().size} models), falling back to "default"`);
|
|
32
|
+
return "default";
|
|
33
|
+
}
|
|
34
|
+
export function getModelPricing(model) {
|
|
35
|
+
return getMap().get(model) ?? { ...DEFAULT_PRICING, model };
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Compute USD cost for a single turn using disjoint token buckets.
|
|
39
|
+
*/
|
|
40
|
+
export function computeTurnCost(pricing, inputTokens, outputTokens, cacheWriteTokens, cacheReadTokens) {
|
|
41
|
+
return (inputTokens * pricing.inputPricePerMillion
|
|
42
|
+
+ outputTokens * pricing.outputPricePerMillion
|
|
43
|
+
+ cacheWriteTokens * pricing.cacheWritePricePerMillion
|
|
44
|
+
+ cacheReadTokens * pricing.cacheReadPricePerMillion) / 1_000_000;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Compute cost in micro-USD for a workflow LLM call.
|
|
48
|
+
*
|
|
49
|
+
* Uses the cloud-fetched pricing registry (via `ensureLoaded`).
|
|
50
|
+
* Falls back to DEFAULT_PRICING for unknown models so that cost
|
|
51
|
+
* is always estimated rather than silently reported as zero.
|
|
52
|
+
*/
|
|
53
|
+
export function computeLlmCostMicros(modelId, inputTokens, outputTokens) {
|
|
54
|
+
const pricing = getModelPricing(modelId);
|
|
55
|
+
const costUsd = computeTurnCost(pricing, inputTokens, outputTokens, 0, 0);
|
|
56
|
+
return Math.round(costUsd * 1_000_000);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=model-pricing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-pricing.js","sourceRoot":"","sources":["../../src/shared/model-pricing.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK3E,IAAI,cAAc,GAAqC,IAAI,CAAC;AAC5D,IAAI,WAAW,GAAyB,IAAI,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IAEpC,WAAW,GAAG,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7C,cAAc,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,MAAM;IACb,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;QACnF,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,cAAsB;IACnD,IAAI,CAAC,cAAc,IAAI,cAAc,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACtE,IAAI,MAAM,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC;QAAE,OAAO,cAAc,CAAC;IACxD,OAAO,CAAC,IAAI,CACV,UAAU,cAAc,8BAA8B,MAAM,EAAE,CAAC,IAAI,qCAAqC,CACzG,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,eAAe,EAAE,KAAK,EAAE,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAqB,EACrB,WAAmB,EACnB,YAAoB,EACpB,gBAAwB,EACxB,eAAuB;IAEvB,OAAO,CACL,WAAW,GAAG,OAAO,CAAC,oBAAoB;UACxC,YAAY,GAAG,OAAO,CAAC,qBAAqB;UAC5C,gBAAgB,GAAG,OAAO,CAAC,yBAAyB;UACpD,eAAe,GAAG,OAAO,CAAC,wBAAwB,CACrD,GAAG,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAe,EACf,WAAmB,EACnB,YAAoB;IAEpB,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;AACzC,CAAC"}
|