@wardby/cli 0.6.0 → 0.8.0
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/.env.example +5 -5
- package/README.md +6 -1
- package/deploy/local/docker-compose.quickstart-coding.yml +19 -0
- package/dist/claude-coding-worker/driver.d.ts +33 -3
- package/dist/claude-coding-worker/driver.js +151 -21
- package/dist/claude-coding-worker/main.js +38 -6
- package/dist/claude-coding-worker/sdk.js +29 -2
- package/dist/claude-coding-worker/tool-socket.d.ts +27 -0
- package/dist/claude-coding-worker/tool-socket.js +111 -0
- package/dist/claude-coding-worker/transcript.d.ts +18 -0
- package/dist/claude-coding-worker/transcript.js +77 -0
- package/dist/claude-plugin/command.d.ts +61 -0
- package/dist/claude-plugin/command.js +376 -0
- package/dist/cli-help.d.ts +1 -1
- package/dist/cli-help.js +3 -1
- package/dist/cli.js +71 -13
- package/dist/coding/code-host.d.ts +16 -0
- package/dist/coding/code-host.js +60 -0
- package/dist/coding/continuation-wording.d.ts +35 -0
- package/dist/coding/continuation-wording.js +73 -0
- package/dist/coding/linked-issue-note.d.ts +23 -0
- package/dist/coding/linked-issue-note.js +47 -0
- package/dist/coding/mcp-token.d.ts +12 -0
- package/dist/coding/mcp-token.js +26 -0
- package/dist/coding/merge-wording.d.ts +28 -0
- package/dist/coding/merge-wording.js +78 -0
- package/dist/coding/pr-description-note.d.ts +9 -0
- package/dist/coding/pr-description-note.js +32 -0
- package/dist/coding/profile.d.ts +46 -126
- package/dist/coding/profile.js +45 -4
- package/dist/coding/protected-path-wording.d.ts +8 -0
- package/dist/coding/protected-path-wording.js +1 -1
- package/dist/coding/protocol.d.ts +264 -346
- package/dist/coding/protocol.js +237 -12
- package/dist/coding/redact.d.ts +3 -0
- package/dist/coding/redact.js +17 -0
- package/dist/coding/registry/allowlist.d.ts +12 -0
- package/dist/coding/registry/allowlist.js +14 -1
- package/dist/coding/registry/audit-mode.d.ts +153 -0
- package/dist/coding/registry/audit-mode.js +304 -0
- package/dist/coding/registry/lockfile-shared.d.ts +36 -0
- package/dist/coding/registry/lockfile-shared.js +128 -0
- package/dist/coding/registry/lockfiles.js +1 -1
- package/dist/coding/registry/npm-lockfile-formats.d.ts +11 -0
- package/dist/coding/registry/npm-lockfile-formats.js +41 -0
- package/dist/coding/registry/npm-lockfile.d.ts +8 -4
- package/dist/coding/registry/npm-lockfile.js +4 -6
- package/dist/coding/registry/npm.js +78 -8
- package/dist/coding/registry/pnpm-lockfile.d.ts +17 -0
- package/dist/coding/registry/pnpm-lockfile.js +189 -0
- package/dist/coding/registry/pypi-plan.d.ts +50 -0
- package/dist/coding/registry/pypi-plan.js +406 -0
- package/dist/coding/registry/pypi-requirements.d.ts +58 -0
- package/dist/coding/registry/pypi-requirements.js +155 -0
- package/dist/coding/registry/pypi.d.ts +3 -27
- package/dist/coding/registry/pypi.js +40 -154
- package/dist/coding/registry/refusal-hints.d.ts +20 -0
- package/dist/coding/registry/refusal-hints.js +61 -0
- package/dist/coding/registry/refusal-wording.d.ts +11 -0
- package/dist/coding/registry/refusal-wording.js +56 -0
- package/dist/coding/registry/report.d.ts +70 -8
- package/dist/coding/registry/report.js +112 -5
- package/dist/coding/registry/types.d.ts +58 -8
- package/dist/coding/registry/yarn-lockfile.d.ts +30 -0
- package/dist/coding/registry/yarn-lockfile.js +367 -0
- package/dist/coding/services/catalog.d.ts +37 -351
- package/dist/coding/transcript/claude-code.d.ts +13 -0
- package/dist/coding/transcript/claude-code.js +273 -0
- package/dist/coding/transcript/download-protocol.d.ts +30 -0
- package/dist/coding/transcript/download-protocol.js +18 -0
- package/dist/coding/transcript/format.d.ts +20 -0
- package/dist/coding/transcript/format.js +32 -0
- package/dist/coding/transcript/recorder.d.ts +52 -0
- package/dist/coding/transcript/recorder.js +225 -0
- package/dist/coding/transcript/resume/checkout.d.ts +31 -0
- package/dist/coding/transcript/resume/checkout.js +203 -0
- package/dist/coding/transcript/resume/command.d.ts +17 -0
- package/dist/coding/transcript/resume/command.js +176 -0
- package/dist/coding/transcript/resume/download.d.ts +20 -0
- package/dist/coding/transcript/resume/download.js +153 -0
- package/dist/coding/transcript/resume/launch.d.ts +38 -0
- package/dist/coding/transcript/resume/launch.js +128 -0
- package/dist/coding/transcript/resume/session-file.d.ts +13 -0
- package/dist/coding/transcript/resume/session-file.js +79 -0
- package/dist/coding/transcript/resume/stand-in.d.ts +11 -0
- package/dist/coding/transcript/resume/stand-in.js +49 -0
- package/dist/coding-worker/artifact.d.ts +8 -3
- package/dist/coding-worker/artifact.js +3 -1
- package/dist/coding-worker/debug-trace.d.ts +9 -6
- package/dist/coding-worker/debug-trace.js +16 -19
- package/dist/coding-worker/dependency-cache.d.mts +229 -0
- package/dist/coding-worker/dependency-cache.mjs +2123 -0
- package/dist/coding-worker/driver.d.ts +4 -3
- package/dist/coding-worker/driver.js +124 -39
- package/dist/coding-worker/errors.d.ts +1 -0
- package/dist/coding-worker/errors.js +32 -0
- package/dist/coding-worker/main.js +5 -1
- package/dist/coding-worker/mcp-config.d.ts +27 -0
- package/dist/coding-worker/mcp-config.js +32 -0
- package/dist/coding-worker/sdk.d.ts +36 -0
- package/dist/coding-worker/sdk.js +28 -1
- package/dist/coding-worker/task-note.d.ts +11 -0
- package/dist/coding-worker/task-note.js +13 -0
- package/dist/coding-worker/types.d.ts +15 -0
- package/dist/config/dependency-cache.d.ts +23 -0
- package/dist/config/dependency-cache.js +32 -0
- package/dist/config/mcp-call-limit.d.ts +8 -0
- package/dist/config/mcp-call-limit.js +18 -0
- package/dist/config/mcp-servers.d.ts +8 -0
- package/dist/config/mcp-servers.js +12 -0
- package/dist/config/providers.d.ts +12 -3
- package/dist/config/providers.js +55 -5
- package/dist/config/test-simulators.d.ts +92 -0
- package/dist/config/test-simulators.js +333 -0
- package/dist/config/tool-timeout.d.ts +1 -0
- package/dist/config/tool-timeout.js +18 -0
- package/dist/core/async-context.d.ts +2 -0
- package/dist/core/async-context.js +12 -0
- package/dist/core/budget-events.d.ts +108 -0
- package/dist/core/budget-events.js +346 -0
- package/dist/core/budget-groups.d.ts +50 -1
- package/dist/core/budget-groups.js +236 -27
- package/dist/core/budget-stopped-head.d.ts +46 -0
- package/dist/core/budget-stopped-head.js +81 -0
- package/dist/core/budget-topup.d.ts +51 -0
- package/dist/core/budget-topup.js +156 -0
- package/dist/core/budget-wording.d.ts +16 -2
- package/dist/core/budget-wording.js +40 -2
- package/dist/core/coding-mcp.d.ts +36 -0
- package/dist/core/coding-mcp.js +253 -0
- package/dist/core/coding-queue.d.ts +2 -1
- package/dist/core/coding-queue.js +7 -0
- package/dist/core/coding-repository.d.ts +46 -0
- package/dist/core/coding-repository.js +92 -0
- package/dist/core/cron.d.ts +19 -1
- package/dist/core/cron.js +17 -0
- package/dist/core/datastores.js +1 -1
- package/dist/core/deferred-coding.d.ts +14 -0
- package/dist/core/deferred-coding.js +62 -0
- package/dist/core/delegation-child.d.ts +25 -0
- package/dist/core/delegation-child.js +37 -0
- package/dist/core/delegation-slots.d.ts +27 -0
- package/dist/core/delegation-slots.js +44 -0
- package/dist/core/dispatch.d.ts +48 -2
- package/dist/core/dispatch.js +166 -66
- package/dist/core/engine-native.js +1 -1
- package/dist/core/error-code.d.ts +38 -0
- package/dist/core/error-code.js +169 -0
- package/dist/core/grants.d.ts +46 -8
- package/dist/core/grants.js +99 -8
- package/dist/core/host-events.d.ts +18 -2
- package/dist/core/host-events.js +291 -27
- package/dist/core/host-status.d.ts +85 -3
- package/dist/core/host-status.js +300 -22
- package/dist/core/issue-bridge.d.ts +50 -6
- package/dist/core/issue-bridge.js +124 -33
- package/dist/core/issue-events.d.ts +1 -1
- package/dist/core/issue-events.js +4 -10
- package/dist/core/issue-status.d.ts +1 -1
- package/dist/core/issue-status.js +58 -29
- package/dist/core/logger.d.ts +5 -0
- package/dist/core/logger.js +14 -1
- package/dist/core/lost-run-children.d.ts +6 -0
- package/dist/core/lost-run-children.js +32 -0
- package/dist/core/mark-ready.d.ts +34 -0
- package/dist/core/mark-ready.js +152 -0
- package/dist/core/markdown-code.d.ts +8 -0
- package/dist/core/markdown-code.js +107 -0
- package/dist/core/mcp-client/client.d.ts +47 -0
- package/dist/core/mcp-client/client.js +141 -0
- package/dist/core/mcp-client/jsonrpc.d.ts +15 -0
- package/dist/core/mcp-client/jsonrpc.js +54 -0
- package/dist/core/mcp-client/results.d.ts +13 -0
- package/dist/core/mcp-client/results.js +42 -0
- package/dist/core/mcp-servers.d.ts +90 -0
- package/dist/core/mcp-servers.js +230 -0
- package/dist/core/mcp-tools.d.ts +108 -0
- package/dist/core/mcp-tools.js +287 -0
- package/dist/core/memory-tools.js +7 -0
- package/dist/core/merge-order-check.d.ts +2 -1
- package/dist/core/merge-order-check.js +44 -18
- package/dist/core/notification-dispatcher.js +2 -1
- package/dist/core/notification-templates.d.ts +1 -7
- package/dist/core/notification-templates.js +36 -2
- package/dist/core/pull-request-state-sync.js +2 -2
- package/dist/core/reconciler.d.ts +4 -3
- package/dist/core/reconciler.js +8 -1
- package/dist/core/related-pull-requests.d.ts +11 -3
- package/dist/core/related-pull-requests.js +49 -20
- package/dist/core/reply-parts.d.ts +21 -0
- package/dist/core/reply-parts.js +73 -0
- package/dist/core/review-fix.d.ts +1 -1
- package/dist/core/review-fix.js +4 -3
- package/dist/core/review-host-checks.d.ts +1 -1
- package/dist/core/review-host-tools.d.ts +3 -0
- package/dist/core/review-host-tools.js +102 -14
- package/dist/core/review-reads.d.ts +55 -0
- package/dist/core/review-reads.js +233 -0
- package/dist/core/run-status.d.ts +12 -0
- package/dist/core/run-status.js +12 -0
- package/dist/core/runner.d.ts +145 -49
- package/dist/core/runner.js +719 -216
- package/dist/core/schedule-start.d.ts +12 -0
- package/dist/core/schedule-start.js +14 -0
- package/dist/core/secret-broker-config.d.ts +12 -74
- package/dist/core/secret-broker-config.js +1 -1
- package/dist/core/secret-guard.d.ts +49 -0
- package/dist/core/secret-guard.js +119 -0
- package/dist/core/secret-guarded-stores.d.ts +12 -0
- package/dist/core/secret-guarded-stores.js +41 -0
- package/dist/core/secret-spans.d.ts +50 -0
- package/dist/core/secret-spans.js +94 -0
- package/dist/core/secrets.d.ts +11 -1
- package/dist/core/secrets.js +27 -1
- package/dist/core/serializable-retry.d.ts +18 -0
- package/dist/core/serializable-retry.js +43 -0
- package/dist/core/stop-run.d.ts +46 -0
- package/dist/core/stop-run.js +61 -0
- package/dist/core/tool-admin.d.ts +5 -1
- package/dist/core/tool-admin.js +7 -2
- package/dist/core/tool-names.d.ts +13 -0
- package/dist/core/tool-names.js +20 -0
- package/dist/core/webhooks.d.ts +4 -0
- package/dist/core/webhooks.js +68 -49
- package/dist/core/workflow-events.d.ts +14 -2
- package/dist/core/workflow-events.js +4 -0
- package/dist/core/workflow-run-events.d.ts +5 -3
- package/dist/core/workflow-run-events.js +45 -9
- package/dist/core/zod-json-schema.d.ts +4 -0
- package/dist/core/zod-json-schema.js +39 -0
- package/dist/core/zod3-window.d.ts +35 -0
- package/dist/core/zod3-window.js +124 -0
- package/dist/generated/prisma/browser.d.ts +65 -3
- package/dist/generated/prisma/client.d.ts +65 -3
- package/dist/generated/prisma/commonInputTypes.d.ts +266 -106
- package/dist/generated/prisma/enums.d.ts +10 -0
- package/dist/generated/prisma/enums.js +8 -0
- package/dist/generated/prisma/internal/class.d.ts +110 -0
- package/dist/generated/prisma/internal/class.js +4 -4
- package/dist/generated/prisma/internal/prismaNamespace.d.ts +957 -9
- package/dist/generated/prisma/internal/prismaNamespace.js +166 -2
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +174 -0
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +166 -2
- package/dist/generated/prisma/models/Agent.d.ts +377 -8
- package/dist/generated/prisma/models/AgentMcpServer.d.ts +1412 -0
- package/dist/generated/prisma/models/AgentMcpServer.js +1 -0
- package/dist/generated/prisma/models/AgentRepository.d.ts +81 -1
- package/dist/generated/prisma/models/AuthUser.d.ts +1 -1
- package/dist/generated/prisma/models/CodingAgentProfile.d.ts +228 -7
- package/dist/generated/prisma/models/CodingProxyRequest.d.ts +207 -3
- package/dist/generated/prisma/models/CodingProxySession.d.ts +232 -2
- package/dist/generated/prisma/models/CodingRun.d.ts +1712 -1
- package/dist/generated/prisma/models/DependencySnapshot.d.ts +1668 -0
- package/dist/generated/prisma/models/DependencySnapshot.js +1 -0
- package/dist/generated/prisma/models/HostProvider.d.ts +2176 -0
- package/dist/generated/prisma/models/HostProvider.js +1 -0
- package/dist/generated/prisma/models/HostProviderCredential.d.ts +1285 -0
- package/dist/generated/prisma/models/HostProviderCredential.js +1 -0
- package/dist/generated/prisma/models/HostProviderOperation.d.ts +1470 -0
- package/dist/generated/prisma/models/HostProviderOperation.js +1 -0
- package/dist/generated/prisma/models/HostProviderTrustedAccount.d.ts +1145 -0
- package/dist/generated/prisma/models/HostProviderTrustedAccount.js +1 -0
- package/dist/generated/prisma/models/IssuePullRequest.d.ts +6 -2
- package/dist/generated/prisma/models/LocalReview.d.ts +40 -1
- package/dist/generated/prisma/models/McpServer.d.ts +1500 -0
- package/dist/generated/prisma/models/McpServer.js +1 -0
- package/dist/generated/prisma/models/NativeGatewayCall.d.ts +77 -1
- package/dist/generated/prisma/models/NativeGatewaySession.d.ts +35 -1
- package/dist/generated/prisma/models/Principal.d.ts +167 -0
- package/dist/generated/prisma/models/RegistryAllowance.d.ts +41 -1
- package/dist/generated/prisma/models/RegistryApprovedVersion.d.ts +75 -1
- package/dist/generated/prisma/models/RegistryAuditRecord.d.ts +1364 -0
- package/dist/generated/prisma/models/RegistryAuditRecord.js +1 -0
- package/dist/generated/prisma/models/ResourceGrant.d.ts +1 -1
- package/dist/generated/prisma/models/Run.d.ts +738 -2
- package/dist/generated/prisma/models/RunBudgetEvent.d.ts +1211 -0
- package/dist/generated/prisma/models/RunBudgetEvent.js +1 -0
- package/dist/generated/prisma/models/RunTranscript.d.ts +1339 -0
- package/dist/generated/prisma/models/RunTranscript.js +1 -0
- package/dist/generated/prisma/models/Secret.d.ts +387 -0
- package/dist/generated/prisma/models/Tool.d.ts +223 -1
- package/dist/generated/prisma/models.d.ts +10 -0
- package/dist/help/search.js +12 -3
- package/dist/help-index.json +2033 -110
- package/dist/import/create.js +48 -4
- package/dist/import/neutral-schema.d.ts +51 -281
- package/dist/import/neutral-schema.js +7 -4
- package/dist/knowledge/check.d.ts +1 -1
- package/dist/knowledge/cli.d.ts +11 -1
- package/dist/knowledge/cli.js +37 -4
- package/dist/knowledge/concept.d.ts +3 -19
- package/dist/knowledge/location.d.ts +31 -0
- package/dist/knowledge/location.js +78 -0
- package/dist/mcp/auth/access.d.ts +10 -2
- package/dist/mcp/auth/access.js +15 -1
- package/dist/mcp/auth/grants-cli.d.ts +6 -4
- package/dist/mcp/auth/grants-cli.js +42 -3
- package/dist/mcp/auth/ownership.d.ts +7 -7
- package/dist/mcp/auth/resource-server.d.ts +3 -1
- package/dist/mcp/auth/resource-server.js +17 -2
- package/dist/mcp/auth/self-hosted/credentials.d.ts +3 -3
- package/dist/mcp/auth/self-hosted/session.d.ts +2 -2
- package/dist/mcp/context.d.ts +3 -0
- package/dist/mcp/host-events/github-ingress.d.ts +2 -0
- package/dist/mcp/host-events/github-ingress.js +2 -1
- package/dist/mcp/index.d.ts +6 -0
- package/dist/mcp/index.js +69 -10
- package/dist/mcp/server.d.ts +13 -0
- package/dist/mcp/server.js +33 -14
- package/dist/mcp/tools/agents.d.ts +4 -0
- package/dist/mcp/tools/agents.js +295 -28
- package/dist/mcp/tools/datastore.js +17 -8
- package/dist/mcp/tools/grants.js +73 -29
- package/dist/mcp/tools/host-providers.d.ts +2 -0
- package/dist/mcp/tools/host-providers.js +215 -0
- package/dist/mcp/tools/mcp-servers.d.ts +26 -0
- package/dist/mcp/tools/mcp-servers.js +481 -0
- package/dist/mcp/tools/memory.js +11 -1
- package/dist/mcp/tools/notification-channels.js +2 -2
- package/dist/mcp/tools/packages.d.ts +2 -0
- package/dist/mcp/tools/packages.js +195 -0
- package/dist/mcp/tools/repositories.js +65 -12
- package/dist/mcp/tools/run-access.d.ts +16 -0
- package/dist/mcp/tools/run-access.js +25 -0
- package/dist/mcp/tools/run-transcript-download.d.ts +30 -0
- package/dist/mcp/tools/run-transcript-download.js +129 -0
- package/dist/mcp/tools/run-transcript.d.ts +19 -0
- package/dist/mcp/tools/run-transcript.js +70 -0
- package/dist/mcp/tools/runs.js +209 -27
- package/dist/mcp/tools/scheduling.js +3 -1
- package/dist/mcp/tools/secret-elicitation-form.js +5 -0
- package/dist/mcp/tools/secret-elicitation-server.d.ts +6 -0
- package/dist/mcp/tools/secret-elicitation-server.js +10 -61
- package/dist/mcp/tools/secret-elicitation.d.ts +2 -0
- package/dist/mcp/tools/secret-elicitation.js +25 -2
- package/dist/mcp/tools/secrets.js +40 -6
- package/dist/mcp/tools/stop-run.d.ts +2 -0
- package/dist/mcp/tools/stop-run.js +82 -0
- package/dist/mcp/tools/subagents.js +2 -2
- package/dist/mcp/tools/tools.d.ts +7 -5
- package/dist/mcp/tools/tools.js +64 -16
- package/dist/mcp/tools/trigger.js +28 -6
- package/dist/mcp/transport/http-limits.d.ts +2 -0
- package/dist/mcp/transport/http-limits.js +6 -2
- package/dist/mcp/transport/stdio-link-host.d.ts +20 -0
- package/dist/mcp/transport/stdio-link-host.js +67 -0
- package/dist/mcp/transport/streamable-http.d.ts +13 -0
- package/dist/mcp/transport/streamable-http.js +41 -1
- package/dist/mcp/webhooks/ingress.js +10 -0
- package/dist/native-worker/docker-launcher.d.ts +38 -2
- package/dist/native-worker/docker-launcher.js +65 -5
- package/dist/native-worker/gateway-server.d.ts +55 -3
- package/dist/native-worker/gateway-server.js +152 -34
- package/dist/native-worker/gateway.d.ts +29 -1
- package/dist/native-worker/gateway.js +74 -4
- package/dist/native-worker/http-server.d.ts +7 -1
- package/dist/native-worker/http-server.js +62 -7
- package/dist/native-worker/http-transport.js +1 -1
- package/dist/native-worker/kubernetes-launcher.d.ts +7 -3
- package/dist/native-worker/kubernetes-launcher.js +43 -3
- package/dist/native-worker/launch.d.ts +18 -1
- package/dist/native-worker/launch.js +6 -1
- package/dist/native-worker/ledger.d.ts +24 -4
- package/dist/native-worker/ledger.js +62 -8
- package/dist/native-worker/loopback.js +3 -8
- package/dist/native-worker/main.d.ts +2 -1
- package/dist/native-worker/main.js +14 -3
- package/dist/native-worker/protocol.d.ts +130 -577
- package/dist/native-worker/protocol.js +51 -2
- package/dist/native-worker/sandbox-executor.d.ts +17 -2
- package/dist/native-worker/sandbox-executor.js +78 -4
- package/dist/native-worker/stderr-redaction.d.ts +77 -0
- package/dist/native-worker/stderr-redaction.js +237 -0
- package/dist/native-worker/stdio.d.ts +1 -1
- package/dist/native-worker/stdio.js +6 -5
- package/dist/native-worker/warm-pool.d.ts +2 -2
- package/dist/native-worker/warm-pool.js +4 -4
- package/dist/native-worker/worker.js +28 -2
- package/dist/observability/metrics.js +6 -1
- package/dist/providers/auth/self-hosted.d.ts +1 -1
- package/dist/providers/coding-proxy/capability-hash.d.ts +2 -0
- package/dist/providers/coding-proxy/capability-hash.js +5 -0
- package/dist/providers/coding-proxy/dependency-cache/eviction.d.ts +29 -0
- package/dist/providers/coding-proxy/dependency-cache/eviction.js +87 -0
- package/dist/providers/coding-proxy/dependency-cache/key.d.ts +33 -0
- package/dist/providers/coding-proxy/dependency-cache/key.js +86 -0
- package/dist/providers/coding-proxy/dependency-cache/model-request-seal.d.ts +18 -0
- package/dist/providers/coding-proxy/dependency-cache/model-request-seal.js +40 -0
- package/dist/providers/coding-proxy/dependency-cache/prisma-store.d.ts +25 -0
- package/dist/providers/coding-proxy/dependency-cache/prisma-store.js +131 -0
- package/dist/providers/coding-proxy/dependency-cache/service.d.ts +70 -0
- package/dist/providers/coding-proxy/dependency-cache/service.js +409 -0
- package/dist/providers/coding-proxy/dependency-cache/store.d.ts +85 -0
- package/dist/providers/coding-proxy/dependency-cache/store.js +95 -0
- package/dist/providers/coding-proxy/hold.d.ts +32 -0
- package/dist/providers/coding-proxy/hold.js +86 -0
- package/dist/providers/coding-proxy/interrupted.d.ts +70 -0
- package/dist/providers/coding-proxy/interrupted.js +104 -0
- package/dist/providers/coding-proxy/mcp-route.d.ts +34 -0
- package/dist/providers/coding-proxy/mcp-route.js +166 -0
- package/dist/providers/coding-proxy/memory-ledger.d.ts +17 -2
- package/dist/providers/coding-proxy/memory-ledger.js +99 -8
- package/dist/providers/coding-proxy/metering.d.ts +16 -0
- package/dist/providers/coding-proxy/metering.js +27 -4
- package/dist/providers/coding-proxy/prisma-ledger.d.ts +16 -2
- package/dist/providers/coding-proxy/prisma-ledger.js +209 -69
- package/dist/providers/coding-proxy/proxy.d.ts +21 -2
- package/dist/providers/coding-proxy/proxy.js +300 -48
- package/dist/providers/coding-proxy/registry/audit.d.ts +53 -10
- package/dist/providers/coding-proxy/registry/audit.js +94 -17
- package/dist/providers/coding-proxy/registry/lockfile-parse-worker.d.ts +36 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse-worker.js +67 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse.d.ts +16 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse.js +110 -0
- package/dist/providers/coding-proxy/registry/plan.d.ts +9 -0
- package/dist/providers/coding-proxy/registry/plan.js +201 -48
- package/dist/providers/coding-proxy/registry/prisma-store.d.ts +11 -5
- package/dist/providers/coding-proxy/registry/prisma-store.js +120 -17
- package/dist/providers/coding-proxy/registry/service.d.ts +97 -16
- package/dist/providers/coding-proxy/registry/service.js +579 -112
- package/dist/providers/coding-proxy/registry/store.d.ts +84 -9
- package/dist/providers/coding-proxy/registry/store.js +54 -1
- package/dist/providers/coding-proxy/runtime.d.ts +10 -0
- package/dist/providers/coding-proxy/runtime.js +109 -16
- package/dist/providers/coding-proxy/server.d.ts +9 -1
- package/dist/providers/coding-proxy/server.js +55 -1
- package/dist/providers/coding-proxy/types.d.ts +78 -1
- package/dist/providers/datastore/types.d.ts +5 -0
- package/dist/providers/engine/types.d.ts +17 -2
- package/dist/providers/engine/types.js +17 -0
- package/dist/providers/executor/composition.d.ts +10 -3
- package/dist/providers/executor/composition.js +52 -7
- package/dist/providers/executor/container.d.ts +394 -9
- package/dist/providers/executor/container.js +1210 -96
- package/dist/providers/executor/dbos-status.d.ts +31 -0
- package/dist/providers/executor/dbos-status.js +64 -0
- package/dist/providers/executor/dbos.d.ts +50 -1
- package/dist/providers/executor/dbos.js +207 -20
- package/dist/providers/executor/deferred.d.ts +12 -24
- package/dist/providers/executor/deferred.js +10 -29
- package/dist/providers/executor/in-process.d.ts +9 -1
- package/dist/providers/executor/in-process.js +14 -4
- package/dist/providers/executor/linked-issue-reader.d.ts +16 -0
- package/dist/providers/executor/linked-issue-reader.js +30 -0
- package/dist/providers/executor/routing.d.ts +2 -0
- package/dist/providers/executor/routing.js +4 -0
- package/dist/providers/executor/types.d.ts +13 -0
- package/dist/providers/host-tools/invoke.d.ts +37 -0
- package/dist/providers/host-tools/invoke.js +117 -0
- package/dist/providers/host-tools/operations.d.ts +65 -0
- package/dist/providers/host-tools/operations.js +149 -0
- package/dist/providers/host-tools/registry.d.ts +79 -0
- package/dist/providers/host-tools/registry.js +362 -0
- package/dist/providers/host-tools/request-guard.d.ts +17 -0
- package/dist/providers/host-tools/request-guard.js +99 -0
- package/dist/providers/host-tools/self-test.d.ts +64 -0
- package/dist/providers/host-tools/self-test.js +142 -0
- package/dist/providers/index.d.ts +2 -1
- package/dist/providers/issue-tracker/types.d.ts +17 -0
- package/dist/providers/issue-tracker/types.js +39 -1
- package/dist/providers/jobs/claude-tool-setup.d.ts +4 -0
- package/dist/providers/jobs/claude-tool-setup.js +5 -2
- package/dist/providers/jobs/docker-isolation.d.ts +10 -2
- package/dist/providers/jobs/docker-isolation.js +47 -8
- package/dist/providers/jobs/docker.d.ts +9 -0
- package/dist/providers/jobs/docker.js +60 -11
- package/dist/providers/jobs/fake-kubernetes-api.d.ts +2 -0
- package/dist/providers/jobs/fake-kubernetes-api.js +3 -0
- package/dist/providers/jobs/kubernetes-api.d.ts +8 -0
- package/dist/providers/jobs/kubernetes-api.js +10 -0
- package/dist/providers/jobs/kubernetes-client.js +10 -1
- package/dist/providers/jobs/kubernetes-isolation.d.ts +5 -1
- package/dist/providers/jobs/kubernetes-isolation.js +32 -3
- package/dist/providers/jobs/kubernetes.d.ts +11 -1
- package/dist/providers/jobs/kubernetes.js +111 -17
- package/dist/providers/jobs/types.d.ts +39 -0
- package/dist/providers/jobs/types.js +13 -1
- package/dist/providers/llm/anthropic.js +5 -1
- package/dist/providers/llm/bedrock.d.ts +0 -12
- package/dist/providers/llm/bedrock.js +4 -0
- package/dist/providers/llm/claude-messages.d.ts +3 -1
- package/dist/providers/llm/claude-messages.js +4 -1
- package/dist/providers/llm/claude-provider.d.ts +2 -2
- package/dist/providers/llm/claude-provider.js +2 -2
- package/dist/providers/llm/openai.d.ts +2 -2
- package/dist/providers/llm/openai.js +6 -2
- package/dist/providers/llm/routing.d.ts +2 -2
- package/dist/providers/llm/routing.js +2 -2
- package/dist/providers/llm/types.d.ts +12 -2
- package/dist/providers/review-host/github-events.d.ts +9 -1
- package/dist/providers/review-host/github-events.js +34 -12
- package/dist/providers/review-host/github.d.ts +29 -2
- package/dist/providers/review-host/github.js +224 -29
- package/dist/providers/review-host/local.d.ts +8 -4
- package/dist/providers/review-host/local.js +49 -31
- package/dist/providers/review-host/patch-pages.d.ts +41 -0
- package/dist/providers/review-host/patch-pages.js +176 -0
- package/dist/providers/review-host/review-format.d.ts +19 -1
- package/dist/providers/review-host/review-format.js +38 -7
- package/dist/providers/review-host/types.d.ts +140 -6
- package/dist/providers/review-host/types.js +9 -1
- package/dist/providers/storage/gcs.d.ts +63 -0
- package/dist/providers/storage/gcs.js +69 -0
- package/dist/providers/storage/index.d.ts +15 -0
- package/dist/providers/storage/index.js +14 -0
- package/dist/providers/storage/local.d.ts +24 -0
- package/dist/providers/storage/local.js +92 -0
- package/dist/providers/storage/meter.d.ts +14 -0
- package/dist/providers/storage/meter.js +34 -0
- package/dist/providers/storage/s3.d.ts +41 -0
- package/dist/providers/storage/s3.js +107 -0
- package/dist/providers/storage/types.d.ts +37 -3
- package/dist/providers/storage/types.js +21 -4
- package/dist/providers/vcs/git.d.ts +39 -4
- package/dist/providers/vcs/git.js +339 -26
- package/dist/providers/vcs/github-remote.d.ts +26 -3
- package/dist/providers/vcs/github-remote.js +124 -14
- package/dist/providers/vcs/github.d.ts +183 -44
- package/dist/providers/vcs/github.js +455 -56
- package/dist/providers/vcs/index.d.ts +1 -1
- package/dist/providers/vcs/index.js +9 -2
- package/dist/providers/vcs/pr-description.d.ts +127 -0
- package/dist/providers/vcs/pr-description.js +270 -0
- package/dist/providers/vcs/remote.d.ts +37 -1
- package/dist/providers/vcs/remote.js +7 -1
- package/dist/providers/vcs/routing.d.ts +16 -8
- package/dist/providers/vcs/routing.js +27 -6
- package/dist/providers/vcs/types.d.ts +150 -5
- package/dist/quickstart/coding-seed.d.ts +14 -3
- package/dist/quickstart/coding-seed.js +213 -4
- package/dist/quickstart/index.d.ts +5 -0
- package/dist/quickstart/index.js +21 -0
- package/dist/quickstart/reviewer-prompt.d.ts +1 -1
- package/dist/quickstart/reviewer-prompt.js +6 -6
- package/dist/quickstart-images.json +1 -1
- package/dist/sandbox/eval-core.d.ts +12 -2
- package/dist/sandbox/eval-core.js +20 -4
- package/dist/sandbox/generated/zod.bundle.js +62 -1
- package/dist/sandbox/generated/zod3.bundle.js +5 -0
- package/dist/sandbox/host-functions.d.ts +5 -0
- package/dist/sandbox/host-functions.js +13 -13
- package/dist/sandbox/limits.d.ts +4 -1
- package/dist/sandbox/limits.js +4 -1
- package/dist/sandbox/run-in-sandbox.d.ts +6 -0
- package/dist/sandbox/run-in-sandbox.js +14 -2
- package/dist/sandbox/safe-fetch.d.ts +2 -0
- package/dist/sandbox/safe-fetch.js +1 -1
- package/dist/sandbox/secret-broker.d.ts +1 -0
- package/dist/sandbox/secret-broker.js +4 -5
- package/dist/sandbox/tool-capabilities.d.ts +10 -30
- package/dist/sandbox/tool-timeout.d.ts +32 -0
- package/dist/sandbox/tool-timeout.js +52 -0
- package/dist/sandbox/user-tool.d.ts +8 -1
- package/dist/sandbox/user-tool.js +9 -3
- package/dist/sandbox/zod-params.d.ts +37 -5
- package/dist/sandbox/zod-params.js +181 -26
- package/dist/serve.js +8 -1
- package/dist/viewer/api-schema.d.ts +349 -2627
- package/dist/viewer/api-schema.js +7 -0
- package/dist/viewer/build-schemas.js +6 -2
- package/dist/viewer/graph.js +2 -1
- package/dist/viewer/openapi.js +2 -4
- package/dist/wardby-bin.js +15 -0
- package/docs/README.md +11 -1
- package/docs/agent-recipes.md +95 -24
- package/docs/architecture-runtime.md +1 -1
- package/docs/claude-code-plugin.md +164 -0
- package/docs/code-review-agents.md +557 -41
- package/docs/coding-agent-setup.md +566 -8
- package/docs/coding-packages.md +1033 -90
- package/docs/coding-services.md +27 -12
- package/docs/coding-worker-byo-images.md +24 -2
- package/docs/coding-worker-isolation.md +183 -37
- package/docs/debugging-agent-runs.md +242 -0
- package/docs/getting-started-gke.md +129 -141
- package/docs/getting-started-identity-provider.md +53 -38
- package/docs/getting-started.md +17 -0
- package/docs/host-providers.md +294 -0
- package/docs/jira-agents.md +17 -8
- package/docs/knowledge/blob-not-found-semantics.md +41 -0
- package/docs/knowledge/bounded-file-descriptor.md +52 -0
- package/docs/knowledge/delegation-admission-slots.md +52 -0
- package/docs/knowledge/http-dispatcher-bootstrap.md +61 -0
- package/docs/knowledge/import-rename-target.md +52 -0
- package/docs/knowledge/index.md +57 -0
- package/docs/knowledge/log.md +9 -0
- package/docs/knowledge/mcp-cancelled-task-precedence.md +41 -0
- package/docs/knowledge/mcp-http-prompt-discovery.md +41 -0
- package/docs/knowledge/mcp-schema-module-boundary.md +41 -0
- package/docs/knowledge/nullable-tool-uniqueness.md +52 -0
- package/docs/knowledge/overview-cli.md +74 -0
- package/docs/knowledge/overview-coding-proxy.md +72 -0
- package/docs/knowledge/overview-coding.md +72 -0
- package/docs/knowledge/overview-config.md +60 -0
- package/docs/knowledge/overview-core.md +72 -0
- package/docs/knowledge/overview-deploy.md +83 -0
- package/docs/knowledge/overview-mcp.md +61 -0
- package/docs/knowledge/overview-prisma.md +72 -0
- package/docs/knowledge/overview-providers.md +89 -0
- package/docs/knowledge/overview-sandbox.md +83 -0
- package/docs/knowledge/overview-surfaces.md +83 -0
- package/docs/knowledge/private-datastore-shared-boundary.md +54 -0
- package/docs/knowledge/proxy-settlement-projections.md +41 -0
- package/docs/knowledge/run-pricing-first-writer.md +43 -0
- package/docs/knowledge/schedule-claim-transaction.md +41 -0
- package/docs/knowledge/secret-entry-replica-contract.md +52 -0
- package/docs/knowledge/terminal-run-first-writer.md +41 -0
- package/docs/knowledge/transactional-agent-authorization.md +52 -0
- package/docs/knowledge/viewer-notify-write-isolation.md +30 -0
- package/docs/knowledge/warm-input-publication.md +30 -0
- package/docs/knowledge/workspace-staging-failure.md +54 -0
- package/docs/knowledge.md +54 -14
- package/docs/mcp-servers.md +254 -0
- package/docs/native-sandbox.md +143 -31
- package/docs/observability.md +4 -0
- package/docs/security-deployment.md +139 -29
- package/docs/slack-notifications.md +35 -19
- package/docs/tool-secrets.md +45 -10
- package/docs/viewer-api.md +6 -0
- package/docs/viewer-api.openapi.yml +1 -1
- package/help/admin-viewer.md +28 -2
- package/help/agent-recipes.md +33 -2
- package/help/architecture-agent.md +11 -6
- package/help/brokered-secrets.md +3 -0
- package/help/build-claude-code-image.md +1 -1
- package/help/build-worker-image.md +3 -1
- package/help/builder-agent.md +19 -6
- package/help/claude-code-run-pane.md +40 -0
- package/help/code-review-agents.md +177 -6
- package/help/coding-packages.md +156 -6
- package/help/cost-attribution.md +9 -5
- package/help/creating-agents.md +14 -1
- package/help/dependency-cache.md +143 -0
- package/help/deploy-gke.md +15 -8
- package/help/errors/budget-exhausted.md +187 -0
- package/help/errors/budget-group-exhausted.md +5 -1
- package/help/errors/coding-mcp-pins-unavailable.md +35 -0
- package/help/errors/coding-stream-quota-exceeded.md +33 -0
- package/help/errors/coding-workspace-disk-exceeds-limit.md +39 -0
- package/help/errors/continuation-closed.md +9 -12
- package/help/errors/database-auth-invalid.md +1 -1
- package/help/errors/delegation-conflict.md +24 -0
- package/help/errors/file-list-truncated.md +45 -0
- package/help/errors/full-read-required.md +49 -0
- package/help/errors/github-account-not-allowed.md +4 -0
- package/help/errors/graph-incomplete.md +43 -0
- package/help/errors/graph-limit.md +43 -0
- package/help/errors/host-provider-error.md +40 -0
- package/help/errors/host-tool-failed.md +36 -0
- package/help/errors/mcp-call-limit.md +22 -0
- package/help/errors/mcp-call-timeout.md +22 -0
- package/help/errors/mcp-server-auth-failed.md +22 -0
- package/help/errors/mcp-server-credentials-unavailable.md +45 -0
- package/help/errors/mcp-server-error.md +28 -0
- package/help/errors/mcp-server-unreachable.md +22 -0
- package/help/errors/mcp-servers-off.md +21 -0
- package/help/errors/mcp-tool-not-allowed.md +26 -0
- package/help/errors/mcp-tool-removed.md +22 -0
- package/help/errors/mcp-unavailable.md +25 -0
- package/help/errors/merge-conflict.md +49 -0
- package/help/errors/native-sandbox-capacity.md +1 -1
- package/help/errors/native-sandbox-deadline-exceeded.md +1 -1
- package/help/errors/native-sandbox-docker-failed.md +1 -1
- package/help/errors/native-sandbox-gateway-error.md +20 -0
- package/help/errors/native-sandbox-gateway-unavailable.md +1 -1
- package/help/errors/native-sandbox-image-not-pinned.md +1 -1
- package/help/errors/native-sandbox-isolation-mismatch.md +1 -1
- package/help/errors/native-sandbox-launch-abandoned.md +21 -0
- package/help/errors/native-sandbox-network-unenforced.md +1 -1
- package/help/errors/native-sandbox-requires-catalog.md +1 -1
- package/help/errors/native-sandbox-unavailable.md +1 -1
- package/help/errors/native-sandbox-warm-delivery-failed.md +1 -1
- package/help/errors/native-sandbox-worker-exited.md +4 -3
- package/help/errors/native-sandbox-worker-lost.md +1 -1
- package/help/errors/native-sandbox-worker-unready.md +1 -1
- package/help/errors/package-not-allowed-pending.md +52 -0
- package/help/errors/package-not-allowed.md +51 -0
- package/help/errors/package-refusals.md +43 -0
- package/help/errors/patch-cursor-malformed.md +31 -0
- package/help/errors/repository-not-listed.md +36 -0
- package/help/errors/repository-required.md +36 -0
- package/help/errors/run-lost.md +39 -0
- package/help/errors/run-transcript-download.md +44 -0
- package/help/errors/secret-in-value.md +69 -0
- package/help/errors/target-merge.md +40 -0
- package/help/errors/tool-timeout.md +38 -0
- package/help/fix-merge-conflicts.md +73 -0
- package/help/github-app-setup.md +132 -0
- package/help/github.md +22 -0
- package/help/host-providers.md +40 -0
- package/help/identity-and-access.md +6 -1
- package/help/jira.md +23 -6
- package/help/knowledge.md +16 -7
- package/help/local-repositories.md +1 -1
- package/help/low-power-mode.md +7 -1
- package/help/mcp-servers.md +73 -0
- package/help/mcp.md +7 -2
- package/help/merge-order-check.md +5 -0
- package/help/native-capabilities.md +55 -1
- package/help/native-sandbox.md +16 -2
- package/help/operating-agents.md +21 -0
- package/help/package-audit-mode.md +91 -0
- package/help/related-pull-requests.md +17 -10
- package/help/repo-instructions-and-skills.md +3 -1
- package/help/resume-runs-locally.md +134 -0
- package/help/review-fix-rounds.md +33 -1
- package/help/sharing-agents.md +59 -0
- package/help/slack-notifications.md +19 -5
- package/help/status-comments.md +31 -0
- package/help/stop-run.md +58 -0
- package/help/troubleshooting/budgets.md +28 -0
- package/help/troubleshooting/coding-workers.md +86 -7
- package/help/troubleshooting/debugging-agent-runs.md +29 -0
- package/package.json +18 -10
- package/prisma/migrations/20261016000000_registry_approved_accepted_advisories/migration.sql +3 -0
- package/prisma/migrations/20261016000001_mark_ready_when_passing/migration.sql +3 -0
- package/prisma/migrations/20261017000000_debug_trace_max_mb/migration.sql +4 -0
- package/prisma/migrations/20261018000000_dependency_cache/migration.sql +53 -0
- package/prisma/migrations/20261019000000_claude_max_output_tokens/migration.sql +5 -0
- package/prisma/migrations/20261021000000_pr_description_hash/migration.sql +4 -0
- package/prisma/migrations/20261022000000_dependency_snapshot_validation_metadata/migration.sql +4 -0
- package/prisma/migrations/20261023000000_package_audit_mode/migration.sql +27 -0
- package/prisma/migrations/20261024000000_budget_events/migration.sql +26 -0
- package/prisma/migrations/20261025000000_cache_aware_holds/migration.sql +9 -0
- package/prisma/migrations/20261026000000_budget_overrun/migration.sql +4 -0
- package/prisma/migrations/20261027000000_coding_run_request/migration.sql +1 -0
- package/prisma/migrations/20261028000000_native_gateway_review_reads/migration.sql +6 -0
- package/prisma/migrations/20261029000000_lead_survives_deploy/migration.sql +6 -0
- package/prisma/migrations/20261030000000_local_review_covered_sha/migration.sql +2 -0
- package/prisma/migrations/20261031000000_coding_run_budget_limit/migration.sql +9 -0
- package/prisma/migrations/20261101000000_run_transcripts/migration.sql +22 -0
- package/prisma/migrations/20261102000000_host_providers/migration.sql +56 -0
- package/prisma/migrations/20261104000000_coding_agent_repository_list/migration.sql +5 -0
- package/prisma/migrations/20261106000000_tool_timeout/migration.sql +4 -0
- package/prisma/migrations/20261107000000_mcp_servers/migration.sql +33 -0
- package/prisma/migrations/20261108000000_coding_mcp/migration.sql +5 -0
- package/prisma/migrations/20261109000000_task_run_index/migration.sql +3 -0
- package/prisma/schema.prisma +468 -109
- package/scripts/git-askpass.sh +1 -1
- package/dist/sandbox/generated/zod-to-json-schema.bundle.js +0 -5
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { type CatalogEntry } from "../llm/catalog-types.js";
|
|
2
2
|
import type { ModelPricing } from "../llm/pricing-core.js";
|
|
3
|
+
import type { ProxyRefusalDetails } from "../../core/budget-events.js";
|
|
4
|
+
import type { McpToolPin } from "../../core/mcp-tools.js";
|
|
3
5
|
export type ProxySessionStatus = "active" | "cancelled";
|
|
4
6
|
export type ProxyRequestStatus = "reserved" | "completed" | "released" | "uncertain";
|
|
5
7
|
export type ProxyProtocol = "openai-responses" | "anthropic-messages";
|
|
@@ -39,10 +41,18 @@ export interface ProxySession {
|
|
|
39
41
|
registryTokenHash?: string | null;
|
|
40
42
|
/** When the ledger first refused a request of this session for budget. */
|
|
41
43
|
budgetExhaustedAt?: Date | null;
|
|
44
|
+
/** The numbers behind the first budget refusal, set with budgetExhaustedAt. */
|
|
45
|
+
budgetRefusal?: ProxyRefusalRecord | null;
|
|
42
46
|
/** The code of the first upstream failure the proxy relayed for this session. */
|
|
43
47
|
upstreamFailure?: string | null;
|
|
44
48
|
/** The run's catalog entry, copied at session creation; null on sessions from before the catalog. */
|
|
45
49
|
terms?: ProxyModelTerms | null;
|
|
50
|
+
/** The run's pinned MCP tools (no URLs or secrets); null when the run has none, and on older sessions. */
|
|
51
|
+
mcpTools: McpToolPin[] | null;
|
|
52
|
+
/** SHA-256 (base64url) of the run's MCP token; null when the run has no MCP tools. */
|
|
53
|
+
mcpTokenHash: string | null;
|
|
54
|
+
/** The run's MCP tools/call count so far. */
|
|
55
|
+
mcpCallCount: number;
|
|
46
56
|
}
|
|
47
57
|
export interface ProxyRequest {
|
|
48
58
|
id: string;
|
|
@@ -56,6 +66,24 @@ export interface ProxyRequest {
|
|
|
56
66
|
pricing: PricingSnapshot;
|
|
57
67
|
usage?: ProxyUsage;
|
|
58
68
|
upstreamStatus?: number;
|
|
69
|
+
/** An uncertain request settled at an estimate: actualCostUsd and usage are estimated, not reported. */
|
|
70
|
+
costEstimated?: boolean;
|
|
71
|
+
requestBytes?: number;
|
|
72
|
+
ceilingUsd?: number;
|
|
73
|
+
reservationBasis?: ReservationBasis;
|
|
74
|
+
conversationKey?: string | null;
|
|
75
|
+
}
|
|
76
|
+
export type ReservationBasis = "cached" | "full";
|
|
77
|
+
/** The latest finished (completed or uncertain) request of a conversation, for the next request's hold. */
|
|
78
|
+
export interface PreviousReply {
|
|
79
|
+
model: string;
|
|
80
|
+
status: "completed" | "uncertain";
|
|
81
|
+
costEstimated: boolean;
|
|
82
|
+
usage?: ProxyUsage;
|
|
83
|
+
/** UTF-8 bytes of the request body the proxy forwarded; null on rows from before cache-aware holds. */
|
|
84
|
+
requestBytes: number | null;
|
|
85
|
+
/** When the previous request was reserved: the prompt cache was last refreshed around then. */
|
|
86
|
+
startedAt: Date;
|
|
59
87
|
}
|
|
60
88
|
export interface CreateProxySessionInput {
|
|
61
89
|
id: string;
|
|
@@ -68,6 +96,10 @@ export interface CreateProxySessionInput {
|
|
|
68
96
|
budgetUsd: number;
|
|
69
97
|
registryTokenHash: string;
|
|
70
98
|
terms?: ProxyModelTerms;
|
|
99
|
+
/** The run's pinned MCP tools; set together with mcpTokenHash, and only when there is at least one. */
|
|
100
|
+
mcpTools?: McpToolPin[];
|
|
101
|
+
/** SHA-256 (base64url) of the run's MCP token (mcpTokenHash in src/coding/mcp-token.ts). */
|
|
102
|
+
mcpTokenHash?: string;
|
|
71
103
|
}
|
|
72
104
|
export interface ReserveProxyRequestInput {
|
|
73
105
|
id: string;
|
|
@@ -78,7 +110,13 @@ export interface ReserveProxyRequestInput {
|
|
|
78
110
|
reservationUsd: number;
|
|
79
111
|
pricing: PricingSnapshot;
|
|
80
112
|
now: Date;
|
|
113
|
+
requestBytes?: number;
|
|
114
|
+
ceilingUsd?: number;
|
|
115
|
+
reservationBasis?: ReservationBasis;
|
|
116
|
+
conversationKey?: string | null;
|
|
81
117
|
}
|
|
118
|
+
/** What the proxy knows about a refusal: the numbers only; names and the binding limit are the control plane's. */
|
|
119
|
+
export type ProxyRefusalRecord = Omit<ProxyRefusalDetails, "agentBudgetUsd" | "groupName" | "leadAgentName">;
|
|
82
120
|
export type ReserveProxyRequestResult = {
|
|
83
121
|
outcome: "reserved";
|
|
84
122
|
request: ProxyRequest;
|
|
@@ -87,6 +125,7 @@ export type ReserveProxyRequestResult = {
|
|
|
87
125
|
request: ProxyRequest;
|
|
88
126
|
} | {
|
|
89
127
|
outcome: "budget_exhausted";
|
|
128
|
+
details: Omit<ProxyRefusalRecord, "source">;
|
|
90
129
|
} | {
|
|
91
130
|
outcome: "inactive";
|
|
92
131
|
reason: "cancelled" | "expired";
|
|
@@ -94,13 +133,33 @@ export type ReserveProxyRequestResult = {
|
|
|
94
133
|
export interface ProxyLedger {
|
|
95
134
|
createSession(input: CreateProxySessionInput): Promise<void>;
|
|
96
135
|
findSessionByCapabilityHash(capabilityHash: string): Promise<ProxySession | null>;
|
|
136
|
+
/** The session whose MCP token hashes to this; any status (the caller checks it is active and in time). */
|
|
137
|
+
findSessionByMcpTokenHash(mcpTokenHash: string): Promise<ProxySession | undefined>;
|
|
97
138
|
reserve(input: ReserveProxyRequestInput): Promise<ReserveProxyRequestResult>;
|
|
98
139
|
complete(requestId: string, usage: ProxyUsage, actualCostUsd: number, upstreamStatus: number): Promise<ProxyRequest>;
|
|
99
140
|
release(requestId: string, upstreamStatus: number): Promise<void>;
|
|
100
|
-
|
|
141
|
+
/**
|
|
142
|
+
* Marks a reserved request uncertain. With an estimate it is also settled at that cost (and
|
|
143
|
+
* counts at it, not at its hold); without one it keeps its full hold.
|
|
144
|
+
*/
|
|
145
|
+
markUncertain(requestId: string, upstreamStatus?: number, estimate?: {
|
|
146
|
+
usage: ProxyUsage;
|
|
147
|
+
costUsd: number;
|
|
148
|
+
}): Promise<void>;
|
|
149
|
+
/**
|
|
150
|
+
* What an interrupted reply's output can be estimated from: the median output tokens of the
|
|
151
|
+
* session's completed replies for this model. Its input comes from previousReply.
|
|
152
|
+
*/
|
|
153
|
+
settlementHints(sessionId: string, model: string): Promise<{
|
|
154
|
+
medianOutputTokens?: number;
|
|
155
|
+
}>;
|
|
156
|
+
/** The latest completed or uncertain request of a conversation, or null when it has none. */
|
|
157
|
+
previousReply(sessionId: string, conversationKey: string): Promise<PreviousReply | null>;
|
|
101
158
|
cancelSession(sessionId: string): Promise<void>;
|
|
102
159
|
/** Whether a request of this session was ever refused for budget. */
|
|
103
160
|
budgetExhausted(sessionId: string): Promise<boolean>;
|
|
161
|
+
/** The numbers behind the session's first budget refusal, if any. */
|
|
162
|
+
budgetRefusal(sessionId: string): Promise<ProxyRefusalRecord | null>;
|
|
104
163
|
/** Records an upstream failure code on the session; only the first one is kept. */
|
|
105
164
|
recordUpstreamFailure(sessionId: string, code: string): Promise<void>;
|
|
106
165
|
/** The first upstream failure code relayed for this session, if any. */
|
|
@@ -115,7 +174,25 @@ export interface ProxyAuditEvent {
|
|
|
115
174
|
status?: number;
|
|
116
175
|
reason?: string;
|
|
117
176
|
reservationUsd?: number;
|
|
177
|
+
/** For request.reserved and a budget refusal: the worst-case hold and how the hold was priced. */
|
|
178
|
+
ceilingUsd?: number;
|
|
179
|
+
reservationBasis?: ReservationBasis;
|
|
180
|
+
/** Why the hold fell back to the ceiling (basis "full"). */
|
|
181
|
+
holdFallback?: string;
|
|
182
|
+
/** Basis "cached": tokens priced at the cache-read rate, and at the input + cache-write rates. */
|
|
183
|
+
holdCachedTokens?: number;
|
|
184
|
+
holdUncachedTokens?: number;
|
|
185
|
+
/** For response.completed: how much the reply cost above its hold (reason "reservation_exceeded"). */
|
|
186
|
+
overshootUsd?: number;
|
|
187
|
+
/** For a budget refusal: the numbers behind it. */
|
|
188
|
+
budgetUsd?: number;
|
|
189
|
+
spentUsd?: number;
|
|
190
|
+
heldReservedUsd?: number;
|
|
191
|
+
heldUncertainUsd?: number;
|
|
192
|
+
turn?: number;
|
|
118
193
|
costUsd?: number;
|
|
194
|
+
/** For request.uncertain: the estimated cost it was settled at, when one could be made. */
|
|
195
|
+
estimatedCostUsd?: number;
|
|
119
196
|
inputTokens?: number;
|
|
120
197
|
outputTokens?: number;
|
|
121
198
|
cachedInputTokens?: number;
|
|
@@ -15,6 +15,11 @@ export interface DatastoreSetOptions {
|
|
|
15
15
|
* for values that actually carry PII.
|
|
16
16
|
*/
|
|
17
17
|
pii?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Shared stores only: the agent doing the write, so the secret guard can
|
|
20
|
+
* check the value against that agent's attached secrets. Never persisted.
|
|
21
|
+
*/
|
|
22
|
+
writerAgentId?: string;
|
|
18
23
|
}
|
|
19
24
|
export interface Datastore {
|
|
20
25
|
get(agentId: string, key: string): Promise<DatastoreValue | undefined>;
|
|
@@ -67,6 +67,21 @@ export declare class RunOwnershipLostError extends Error {
|
|
|
67
67
|
discardedUsage?: Readonly<Record<string, number>>;
|
|
68
68
|
});
|
|
69
69
|
}
|
|
70
|
+
/** Why a run ends lost when its replay meets a step its record does not have (StepReplayMismatchError). */
|
|
71
|
+
export declare const STEPS_CHANGED_REASON = "Could not continue across versions: the run's steps changed in the new version.";
|
|
72
|
+
/**
|
|
73
|
+
* Part of the StepRunner contract: a durable step runner may throw this when a
|
|
74
|
+
* replayed run reaches a step whose name differs from the one recorded at that
|
|
75
|
+
* position (the run was recorded by a release whose steps differ). The run
|
|
76
|
+
* cannot continue from its record; engines rethrow it untouched and the
|
|
77
|
+
* runner ends the run lost with STEPS_CHANGED_REASON.
|
|
78
|
+
*/
|
|
79
|
+
export declare class StepReplayMismatchError extends Error {
|
|
80
|
+
readonly step: string;
|
|
81
|
+
constructor(step: string, options?: {
|
|
82
|
+
cause?: unknown;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
70
85
|
/** The no-checkpoint default: run the step body directly. */
|
|
71
86
|
export declare const runStepInline: StepRunner;
|
|
72
87
|
/**
|
|
@@ -86,8 +101,8 @@ export interface EngineRunContext {
|
|
|
86
101
|
agent: EngineAgent;
|
|
87
102
|
tools: LoadedTool[];
|
|
88
103
|
providers: Pick<ProviderRegistry, "llm">;
|
|
89
|
-
/** Host bridge: validates params (Zod-in-sandbox) then runs the tool body in the WASM sandbox. Never throws — a tool/validation failure is a JSON error result string, fed back to the model as the tool's result. */
|
|
90
|
-
runSandboxTool(name: string, argsJson: string): Promise<string>;
|
|
104
|
+
/** Host bridge: validates params (Zod-in-sandbox) then runs the tool body in the WASM sandbox. Never throws — a tool/validation failure is a JSON error result string, fed back to the model as the tool's result. `callId` is the model's id for this tool call; the same on a replay of the turn. */
|
|
105
|
+
runSandboxTool(name: string, argsJson: string, callId?: string): Promise<string>;
|
|
91
106
|
/**
|
|
92
107
|
* Consecutive tool calls of one model turn for which this returns true run
|
|
93
108
|
* at the same time as each other (a lead's delegate_to_* calls, when the
|
|
@@ -34,5 +34,22 @@ export class RunOwnershipLostError extends Error {
|
|
|
34
34
|
this.discardedUsage = options.discardedUsage;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
+
/** Why a run ends lost when its replay meets a step its record does not have (StepReplayMismatchError). */
|
|
38
|
+
export const STEPS_CHANGED_REASON = "Could not continue across versions: the run's steps changed in the new version.";
|
|
39
|
+
/**
|
|
40
|
+
* Part of the StepRunner contract: a durable step runner may throw this when a
|
|
41
|
+
* replayed run reaches a step whose name differs from the one recorded at that
|
|
42
|
+
* position (the run was recorded by a release whose steps differ). The run
|
|
43
|
+
* cannot continue from its record; engines rethrow it untouched and the
|
|
44
|
+
* runner ends the run lost with STEPS_CHANGED_REASON.
|
|
45
|
+
*/
|
|
46
|
+
export class StepReplayMismatchError extends Error {
|
|
47
|
+
step;
|
|
48
|
+
constructor(step, options) {
|
|
49
|
+
super(`step_replay_mismatch: the recorded run has a different step where "${step}" was expected.`, options?.cause === undefined ? undefined : { cause: options.cause });
|
|
50
|
+
this.name = "StepReplayMismatchError";
|
|
51
|
+
this.step = step;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
37
54
|
/** The no-checkpoint default: run the step body directly. */
|
|
38
55
|
export const runStepInline = (_name, fn) => fn();
|
|
@@ -3,13 +3,18 @@ import { type ProviderConfig } from "../../config/providers.js";
|
|
|
3
3
|
import { type Power } from "../../core/power.js";
|
|
4
4
|
import { type ReReviewDeps } from "../../core/review-fix.js";
|
|
5
5
|
import type { KubernetesApi } from "../jobs/kubernetes-api.js";
|
|
6
|
+
import { loadAgentSecretValues } from "../../core/secret-guard.js";
|
|
6
7
|
import type { Executor } from "./types.js";
|
|
7
8
|
import { type RepoAccessGate } from "../../core/repo-access.js";
|
|
8
9
|
/**
|
|
9
10
|
* The coding-run terminal hook: a review-fix round's coding run that made no change re-reviews
|
|
10
|
-
* the PR once (core/review-fix.ts)
|
|
11
|
-
*
|
|
12
|
-
*
|
|
11
|
+
* the PR once (core/review-fix.ts), and the reviews of its pull request that waited for it (a
|
|
12
|
+
* draft's head it may have pushed before recording its result, core/host-events.ts) are
|
|
13
|
+
* released. Started in the background so the executor's terminal path (and the slot release
|
|
14
|
+
* after it) never waits on the host; idempotent (released rows are claimed), and never throws.
|
|
15
|
+
* Started outside the caller's async context: a delegated coding run finishes inside its lead's
|
|
16
|
+
* delegation step, and a review started from there would be refused by DBOS as a workflow
|
|
17
|
+
* started from inside a step. `deps` is read only when a run finishes, after composition returned.
|
|
13
18
|
*/
|
|
14
19
|
export declare function reReviewOnCodingRunTerminal(deps: () => ReReviewDeps): (runId: string) => void;
|
|
15
20
|
export interface ConfiguredExecutorOptions {
|
|
@@ -32,6 +37,8 @@ export interface ConfiguredExecutorOptions {
|
|
|
32
37
|
* launcher (wakes the coding proxy before a run); absent: `DISABLED_POWER`.
|
|
33
38
|
*/
|
|
34
39
|
power?: Power;
|
|
40
|
+
/** Decrypts agent secrets for transcript redaction (session resume). Absent: transcripts are never stored. */
|
|
41
|
+
secretCipher?: Parameters<typeof loadAgentSecretValues>[1];
|
|
35
42
|
}
|
|
36
43
|
/**
|
|
37
44
|
* Builds container execution only when Docker or Kubernetes is explicitly
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { tmpdir } from "node:os";
|
|
2
2
|
import { resolve } from "node:path";
|
|
3
|
-
import { loadCodingConcurrencyConfig, loadContainerExecutorConfig, loadGitHubVcsConfig, loadKubernetesJobConfig, loadProviderConfig, } from "../../config/providers.js";
|
|
3
|
+
import { loadBlobStoreConfig, loadCodingConcurrencyConfig, loadContainerExecutorConfig, loadGitHubVcsConfig, loadKubernetesJobConfig, loadProviderConfig, } from "../../config/providers.js";
|
|
4
|
+
import { summarizePackageAudit } from "../../coding/registry/audit-mode.js";
|
|
4
5
|
import { summarizeRegistryFetches } from "../../coding/registry/report.js";
|
|
6
|
+
import { linkedIssueReader } from "./linked-issue-reader.js";
|
|
5
7
|
import { drainCodingQueue } from "../../core/coding-queue.js";
|
|
6
8
|
import { prismaServiceStateReporter } from "../../core/coding-service-status.js";
|
|
7
9
|
import { logger } from "../../core/logger.js";
|
|
10
|
+
import { outsideRunContext } from "../../core/async-context.js";
|
|
8
11
|
import { DISABLED_POWER } from "../../core/power.js";
|
|
12
|
+
import { startDeferredForRequest } from "../../core/host-events.js";
|
|
9
13
|
import { reReviewAfterNoChangeFix } from "../../core/review-fix.js";
|
|
10
14
|
import { EnvironmentCredentialResolver } from "../coding-proxy/environment-credentials.js";
|
|
11
15
|
import { CodingProxy } from "../coding-proxy/proxy.js";
|
|
@@ -18,7 +22,11 @@ import { preflightCanaryImage, runKubernetesPreflight } from "../jobs/kubernetes
|
|
|
18
22
|
import { CODING_WORKER_IMAGES_REQUIRED } from "../../coding/docker-preflight.js";
|
|
19
23
|
import { KubernetesJobLauncher } from "../jobs/kubernetes.js";
|
|
20
24
|
import { buildVcsProvider } from "../vcs/index.js";
|
|
25
|
+
import { RunTranscriptRecorder, loadTranscriptMaxBytes, loadTranscriptRetentionDays, } from "../../coding/transcript/recorder.js";
|
|
26
|
+
import { loadAgentSecretValues } from "../../core/secret-guard.js";
|
|
27
|
+
import { createBlobStore } from "../storage/index.js";
|
|
21
28
|
import { ContainerExecutor, PrismaContainerExecutionStore, RunCapabilityVault } from "./container.js";
|
|
29
|
+
import { loadMcpToolPins } from "../../core/mcp-tools.js";
|
|
22
30
|
import { PrismaExecutionKindResolver, RoutingExecutor } from "./routing.js";
|
|
23
31
|
import { createRepoAccessGate } from "../../core/repo-access.js";
|
|
24
32
|
import { buildIssueTrackers } from "../issue-tracker/index.js";
|
|
@@ -26,16 +34,24 @@ import { buildReviewHosts } from "../review-host/index.js";
|
|
|
26
34
|
const compositionLog = logger.child({ module: "executor-composition" });
|
|
27
35
|
/**
|
|
28
36
|
* The coding-run terminal hook: a review-fix round's coding run that made no change re-reviews
|
|
29
|
-
* the PR once (core/review-fix.ts)
|
|
30
|
-
*
|
|
31
|
-
*
|
|
37
|
+
* the PR once (core/review-fix.ts), and the reviews of its pull request that waited for it (a
|
|
38
|
+
* draft's head it may have pushed before recording its result, core/host-events.ts) are
|
|
39
|
+
* released. Started in the background so the executor's terminal path (and the slot release
|
|
40
|
+
* after it) never waits on the host; idempotent (released rows are claimed), and never throws.
|
|
41
|
+
* Started outside the caller's async context: a delegated coding run finishes inside its lead's
|
|
42
|
+
* delegation step, and a review started from there would be refused by DBOS as a workflow
|
|
43
|
+
* started from inside a step. `deps` is read only when a run finishes, after composition returned.
|
|
32
44
|
*/
|
|
33
45
|
export function reReviewOnCodingRunTerminal(deps) {
|
|
34
|
-
return (runId) => {
|
|
46
|
+
return (runId) => outsideRunContext(() => {
|
|
35
47
|
void Promise.resolve()
|
|
36
48
|
.then(() => reReviewAfterNoChangeFix(runId, deps()))
|
|
37
49
|
.catch((err) => compositionLog.warn({ err, runId }, "no-change re-review hook failed"));
|
|
38
|
-
|
|
50
|
+
// Never throws (logs its own failures).
|
|
51
|
+
void Promise.resolve()
|
|
52
|
+
.then(() => startDeferredForRequest(deps(), runId))
|
|
53
|
+
.catch((err) => compositionLog.warn({ err, runId }, "could not release the reviews waiting for this run"));
|
|
54
|
+
});
|
|
39
55
|
}
|
|
40
56
|
/**
|
|
41
57
|
* Builds container execution only when Docker or Kubernetes is explicitly
|
|
@@ -101,6 +117,7 @@ export function buildConfiguredExecutor(options) {
|
|
|
101
117
|
config: kubernetes,
|
|
102
118
|
workspaceRoot,
|
|
103
119
|
resolveCapability: (runId) => capabilities.get(runId),
|
|
120
|
+
resolveMcpToken: (runId) => capabilities.mcpToken(runId),
|
|
104
121
|
readyTimeoutMs: kubernetes.readyTimeoutMs,
|
|
105
122
|
enforcementExecTimeoutMs: kubernetes.enforcementExecTimeoutMs,
|
|
106
123
|
power: options.power ?? DISABLED_POWER,
|
|
@@ -125,6 +142,7 @@ export function buildConfiguredExecutor(options) {
|
|
|
125
142
|
workspaceRoot,
|
|
126
143
|
proxyContainer: proxyContainer,
|
|
127
144
|
resolveCapability: (runId) => capabilities.get(runId),
|
|
145
|
+
resolveMcpToken: (runId) => capabilities.mcpToken(runId),
|
|
128
146
|
isRunActive: async (runId, handle) => {
|
|
129
147
|
const coding = await options.db.codingRun.findUnique({
|
|
130
148
|
where: { runId },
|
|
@@ -141,12 +159,29 @@ export function buildConfiguredExecutor(options) {
|
|
|
141
159
|
// The release and terminal hooks need the composed RoutingExecutor, which only exists
|
|
142
160
|
// after the ContainerExecutor it wraps is built. The closure reads
|
|
143
161
|
// `composed` only when a run finishes, which is after this function returns.
|
|
162
|
+
const blobStoreConfig = loadBlobStoreConfig(env);
|
|
163
|
+
const cipher = options.secretCipher;
|
|
164
|
+
const transcripts = new RunTranscriptRecorder({
|
|
165
|
+
db: options.db,
|
|
166
|
+
blobs: blobStoreConfig && cipher ? createBlobStore(blobStoreConfig) : undefined,
|
|
167
|
+
secretValues: async (agentId) => {
|
|
168
|
+
if (!cipher)
|
|
169
|
+
throw new Error("transcript_secrets_unavailable");
|
|
170
|
+
const named = await loadAgentSecretValues(options.db, cipher, agentId);
|
|
171
|
+
return named.flatMap((entry) => entry.values);
|
|
172
|
+
},
|
|
173
|
+
retentionDays: loadTranscriptRetentionDays(env),
|
|
174
|
+
maxBytes: loadTranscriptMaxBytes(env),
|
|
175
|
+
});
|
|
144
176
|
const coding = new ContainerExecutor({
|
|
177
|
+
transcripts,
|
|
145
178
|
store: new PrismaContainerExecutionStore(options.db, { maxConcurrent: concurrency.maxConcurrent, issueTrackers }),
|
|
146
179
|
jobs,
|
|
147
180
|
vcs,
|
|
148
181
|
sessions,
|
|
149
182
|
capabilities,
|
|
183
|
+
// Remote MCP servers: a coding run gets its agent's pinned tools and an MCP token ([] when off).
|
|
184
|
+
mcpToolPins: (agentId, pinOptions) => loadMcpToolPins(options.db, agentId, pinOptions),
|
|
150
185
|
artifactRoot,
|
|
151
186
|
workerImage: config.workerImage,
|
|
152
187
|
claudeWorkerImage: config.claudeWorkerImage,
|
|
@@ -158,10 +193,20 @@ export function buildConfiguredExecutor(options) {
|
|
|
158
193
|
limits: { cpus: config.cpus, memoryMb: config.memoryMb, pids: config.pids, diskMb: config.diskMb },
|
|
159
194
|
maxDiskMb: config.maxDiskMb,
|
|
160
195
|
repoAccess,
|
|
196
|
+
readLinkedIssue: linkedIssueReader({ hosts: reviewHosts, issueTrackers }),
|
|
161
197
|
issueUrl: (provider, key) => (provider === "jira" ? issueTrackers.jira?.issueUrl(key) : undefined),
|
|
162
198
|
registryReport: async (runId) => {
|
|
163
199
|
const rows = await options.db.registryFetch.findMany({ where: { runId }, orderBy: { createdAt: "asc" } });
|
|
164
|
-
|
|
200
|
+
const coding = await options.db.codingRun.findUnique({ where: { runId }, select: { packageAuditMode: true } });
|
|
201
|
+
const packageAuditMode = coding?.packageAuditMode ?? null;
|
|
202
|
+
if (!packageAuditMode)
|
|
203
|
+
return summarizeRegistryFetches(rows);
|
|
204
|
+
const audits = await options.db.registryAuditRecord.findMany({ where: { runId }, orderBy: { createdAt: "asc" } });
|
|
205
|
+
return {
|
|
206
|
+
...summarizeRegistryFetches(rows),
|
|
207
|
+
packageAuditMode,
|
|
208
|
+
packageAudit: summarizePackageAudit(audits).entries,
|
|
209
|
+
};
|
|
165
210
|
},
|
|
166
211
|
onCodingRunTerminal: reReviewOnCodingRunTerminal(() => ({
|
|
167
212
|
db: options.db,
|