@wardby/cli 0.5.3 → 0.7.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 +33 -0
- package/README.md +25 -14
- package/deploy/local/docker-compose.quickstart-coding.yml +13 -0
- package/dist/claude-coding-worker/context.d.ts +22 -0
- package/dist/claude-coding-worker/context.js +92 -0
- package/dist/claude-coding-worker/driver.d.ts +27 -3
- package/dist/claude-coding-worker/driver.js +161 -20
- package/dist/claude-coding-worker/main.js +34 -6
- package/dist/claude-coding-worker/sdk.js +25 -5
- 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/cli-help.d.ts +1 -1
- package/dist/cli-help.js +6 -2
- package/dist/cli-native-mode.d.ts +9 -0
- package/dist/cli-native-mode.js +20 -0
- package/dist/cli.d.ts +3 -1
- package/dist/cli.js +161 -11
- package/dist/coding/claude-context.d.ts +45 -0
- package/dist/coding/claude-context.js +434 -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/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 +50 -118
- package/dist/coding/profile.js +51 -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 +292 -270
- package/dist/coding/protocol.js +322 -15
- package/dist/coding/redact.d.ts +3 -0
- package/dist/coding/redact.js +12 -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 +51 -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 +16 -3
- package/dist/coding-worker/artifact.js +5 -3
- package/dist/coding-worker/debug-trace.d.ts +6 -5
- package/dist/coding-worker/debug-trace.js +13 -18
- 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 +118 -38
- package/dist/coding-worker/errors.d.ts +1 -0
- package/dist/coding-worker/errors.js +32 -0
- package/dist/coding-worker/sdk.d.ts +6 -0
- package/dist/coding-worker/sdk.js +1 -0
- package/dist/coding-worker/skills.d.ts +23 -0
- package/dist/coding-worker/skills.js +117 -0
- 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 +13 -0
- package/dist/config/dependency-cache.d.ts +23 -0
- package/dist/config/dependency-cache.js +32 -0
- package/dist/config/github-allowed-accounts.d.ts +15 -0
- package/dist/config/github-allowed-accounts.js +36 -0
- package/dist/config/low-power.d.ts +12 -0
- package/dist/config/low-power.js +18 -0
- package/dist/config/mobile.d.ts +12 -0
- package/dist/config/mobile.js +18 -0
- package/dist/config/providers.d.ts +65 -3
- package/dist/config/providers.js +147 -11
- package/dist/config/test-simulators.d.ts +82 -0
- package/dist/config/test-simulators.js +305 -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-queue.d.ts +2 -1
- package/dist/core/coding-queue.js +7 -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/db.d.ts +16 -6
- package/dist/core/db.js +12 -10
- 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/dispatch.d.ts +53 -0
- package/dist/core/dispatch.js +167 -57
- package/dist/core/engine-native.js +10 -6
- package/dist/core/error-code.d.ts +38 -0
- package/dist/core/error-code.js +168 -0
- package/dist/core/grants.d.ts +19 -6
- package/dist/core/grants.js +55 -6
- package/dist/core/host-events.d.ts +67 -5
- package/dist/core/host-events.js +571 -37
- package/dist/core/host-status.d.ts +85 -3
- package/dist/core/host-status.js +298 -20
- package/dist/core/issue-bridge.d.ts +50 -6
- package/dist/core/issue-bridge.js +151 -20
- package/dist/core/issue-events.d.ts +1 -1
- package/dist/core/issue-events.js +16 -11
- package/dist/core/issue-status.d.ts +1 -1
- package/dist/core/issue-status.js +68 -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/memory-tools.js +7 -0
- package/dist/core/merge-order-check.d.ts +130 -0
- package/dist/core/merge-order-check.js +343 -0
- package/dist/core/notification-dispatcher.d.ts +70 -0
- package/dist/core/notification-dispatcher.js +368 -0
- package/dist/core/notification-templates.d.ts +19 -0
- package/dist/core/notification-templates.js +139 -0
- package/dist/core/notifications.d.ts +10 -0
- package/dist/core/notifications.js +38 -0
- package/dist/core/pg-auth.d.ts +22 -0
- package/dist/core/pg-auth.js +152 -0
- package/dist/core/power-composition.d.ts +16 -0
- package/dist/core/power-composition.js +37 -0
- package/dist/core/power-idle.d.ts +14 -0
- package/dist/core/power-idle.js +30 -0
- package/dist/core/power.d.ts +71 -0
- package/dist/core/power.js +202 -0
- package/dist/core/pull-request-state-sync.js +2 -2
- package/dist/core/reconciler.d.ts +8 -5
- package/dist/core/reconciler.js +37 -6
- package/dist/core/related-pull-requests.d.ts +59 -7
- package/dist/core/related-pull-requests.js +140 -25
- package/dist/core/reply-parts.d.ts +21 -0
- package/dist/core/reply-parts.js +73 -0
- package/dist/core/repo-access.d.ts +15 -0
- package/dist/core/repo-access.js +66 -0
- package/dist/core/review-fix.d.ts +38 -1
- package/dist/core/review-fix.js +209 -7
- package/dist/core/review-host-checks.d.ts +1 -1
- package/dist/core/review-host-tools.d.ts +23 -0
- package/dist/core/review-host-tools.js +156 -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 +384 -5
- package/dist/core/runner.js +1244 -372
- 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 +39 -0
- package/dist/core/secret-broker-config.js +112 -0
- package/dist/core/secret-guard.d.ts +46 -0
- package/dist/core/secret-guard.js +104 -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 +39 -4
- package/dist/core/secrets.js +148 -40
- package/dist/core/stop-run.d.ts +46 -0
- package/dist/core/stop-run.js +61 -0
- package/dist/core/workflow-event-recorder.d.ts +14 -0
- package/dist/core/workflow-event-recorder.js +120 -0
- package/dist/core/workflow-events.d.ts +94 -0
- package/dist/core/workflow-events.js +48 -0
- package/dist/core/workflow-run-events.d.ts +18 -0
- package/dist/core/workflow-run-events.js +75 -0
- 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 +92 -3
- package/dist/generated/prisma/client.d.ts +92 -3
- package/dist/generated/prisma/commonInputTypes.d.ts +364 -54
- package/dist/generated/prisma/enums.d.ts +37 -0
- package/dist/generated/prisma/enums.js +31 -0
- package/dist/generated/prisma/internal/class.d.ts +132 -0
- package/dist/generated/prisma/internal/class.js +4 -4
- package/dist/generated/prisma/internal/prismaNamespace.d.ts +1332 -142
- package/dist/generated/prisma/internal/prismaNamespace.js +227 -5
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +234 -0
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +227 -5
- package/dist/generated/prisma/models/Agent.d.ts +464 -7
- package/dist/generated/prisma/models/AgentRepository.d.ts +42 -1
- package/dist/generated/prisma/models/CodingAgentProfile.d.ts +301 -1
- package/dist/generated/prisma/models/CodingProxyRequest.d.ts +207 -3
- package/dist/generated/prisma/models/CodingProxySession.d.ts +114 -1
- package/dist/generated/prisma/models/CodingRun.d.ts +1841 -1
- package/dist/generated/prisma/models/DeferredReview.d.ts +78 -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/IssuePullRequest.d.ts +6 -2
- package/dist/generated/prisma/models/LocalReview.d.ts +40 -1
- package/dist/generated/prisma/models/NativeGatewayCall.d.ts +1713 -0
- package/dist/generated/prisma/models/NativeGatewayCall.js +1 -0
- package/dist/generated/prisma/models/NativeGatewaySession.d.ts +1551 -0
- package/dist/generated/prisma/models/NativeGatewaySession.js +1 -0
- package/dist/generated/prisma/models/NativeWarmWorker.d.ts +1296 -0
- package/dist/generated/prisma/models/NativeWarmWorker.js +1 -0
- package/dist/generated/prisma/models/NotificationChannel.d.ts +1543 -0
- package/dist/generated/prisma/models/NotificationChannel.js +1 -0
- package/dist/generated/prisma/models/NotificationDelivery.d.ts +1502 -0
- package/dist/generated/prisma/models/NotificationDelivery.js +1 -0
- package/dist/generated/prisma/models/NotificationThread.d.ts +1090 -0
- package/dist/generated/prisma/models/NotificationThread.js +1 -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/Run.d.ts +1619 -58
- package/dist/generated/prisma/models/RunBudgetEvent.d.ts +1211 -0
- package/dist/generated/prisma/models/RunBudgetEvent.js +1 -0
- package/dist/generated/prisma/models/RunHostCheck.d.ts +36 -1
- 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 +37 -1
- package/dist/generated/prisma/models/SecretBrokerChange.d.ts +1101 -0
- package/dist/generated/prisma/models/SecretBrokerChange.js +1 -0
- package/dist/generated/prisma/models/WorkflowEvent.d.ts +1422 -0
- package/dist/generated/prisma/models/WorkflowEvent.js +1 -0
- package/dist/generated/prisma/models.d.ts +12 -0
- package/dist/help/build.js +4 -2
- package/dist/help/catalog.d.ts +1 -1
- package/dist/help/catalog.js +31 -6
- package/dist/help-index.json +2584 -146
- package/dist/import/create.js +49 -3
- package/dist/import/neutral-schema.d.ts +50 -277
- 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 +11 -2
- package/dist/mcp/auth/access.js +15 -1
- package/dist/mcp/auth/ownership.d.ts +7 -7
- package/dist/mcp/auth/repo-authorization.js +14 -0
- package/dist/mcp/auth/resource-server.d.ts +2 -1
- package/dist/mcp/auth/resource-server.js +7 -2
- package/dist/mcp/auth/self-hosted/browser.d.ts +1 -1
- package/dist/mcp/auth/self-hosted/browser.js +19 -6
- 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 +6 -0
- package/dist/mcp/host-events/github-ingress.d.ts +25 -1
- package/dist/mcp/host-events/github-ingress.js +70 -1
- package/dist/mcp/index.d.ts +19 -0
- package/dist/mcp/index.js +117 -20
- 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 +277 -24
- package/dist/mcp/tools/datastore.js +17 -8
- package/dist/mcp/tools/grants.js +9 -3
- package/dist/mcp/tools/memory.js +11 -1
- package/dist/mcp/tools/notification-channels.d.ts +2 -0
- package/dist/mcp/tools/notification-channels.js +293 -0
- package/dist/mcp/tools/packages.d.ts +2 -0
- package/dist/mcp/tools/packages.js +195 -0
- package/dist/mcp/tools/power.d.ts +2 -0
- package/dist/mcp/tools/power.js +77 -0
- package/dist/mcp/tools/repositories.js +18 -5
- 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.d.ts +0 -6
- package/dist/mcp/tools/runs.js +41 -14
- package/dist/mcp/tools/scheduling.js +3 -1
- package/dist/mcp/tools/secret-broker-compat.d.ts +12 -0
- package/dist/mcp/tools/secret-broker-compat.js +23 -0
- package/dist/mcp/tools/secret-elicitation-form.d.ts +22 -2
- package/dist/mcp/tools/secret-elicitation-form.js +205 -10
- package/dist/mcp/tools/secret-elicitation-server.d.ts +6 -0
- package/dist/mcp/tools/secret-elicitation-server.js +10 -54
- package/dist/mcp/tools/secret-elicitation.d.ts +38 -3
- package/dist/mcp/tools/secret-elicitation.js +110 -12
- package/dist/mcp/tools/secrets.js +186 -9
- 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 +2 -2
- package/dist/mcp/tools/tools.js +47 -11
- 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/native-worker/composition.d.ts +23 -0
- package/dist/native-worker/composition.js +77 -0
- package/dist/native-worker/docker-isolation.d.ts +65 -0
- package/dist/native-worker/docker-isolation.js +183 -0
- package/dist/native-worker/docker-launcher.d.ts +110 -0
- package/dist/native-worker/docker-launcher.js +297 -0
- package/dist/native-worker/gateway-server.d.ts +77 -0
- package/dist/native-worker/gateway-server.js +412 -0
- package/dist/native-worker/gateway.d.ts +70 -0
- package/dist/native-worker/gateway.js +263 -0
- package/dist/native-worker/http-server.d.ts +24 -0
- package/dist/native-worker/http-server.js +113 -0
- package/dist/native-worker/http-transport.d.ts +17 -0
- package/dist/native-worker/http-transport.js +88 -0
- package/dist/native-worker/kubernetes-isolation.d.ts +90 -0
- package/dist/native-worker/kubernetes-isolation.js +218 -0
- package/dist/native-worker/kubernetes-launcher.d.ts +106 -0
- package/dist/native-worker/kubernetes-launcher.js +375 -0
- package/dist/native-worker/launch.d.ts +62 -0
- package/dist/native-worker/launch.js +49 -0
- package/dist/native-worker/ledger.d.ts +125 -0
- package/dist/native-worker/ledger.js +245 -0
- package/dist/native-worker/loopback.d.ts +12 -0
- package/dist/native-worker/loopback.js +44 -0
- package/dist/native-worker/main.d.ts +8 -0
- package/dist/native-worker/main.js +85 -0
- package/dist/native-worker/protocol.d.ts +296 -0
- package/dist/native-worker/protocol.js +246 -0
- package/dist/native-worker/sandbox-executor.d.ts +83 -0
- package/dist/native-worker/sandbox-executor.js +284 -0
- 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 +29 -0
- package/dist/native-worker/stdio.js +189 -0
- package/dist/native-worker/warm-delivery.d.ts +16 -0
- package/dist/native-worker/warm-delivery.js +33 -0
- package/dist/native-worker/warm-pool-ledger.d.ts +39 -0
- package/dist/native-worker/warm-pool-ledger.js +73 -0
- package/dist/native-worker/warm-pool.d.ts +107 -0
- package/dist/native-worker/warm-pool.js +283 -0
- package/dist/native-worker/worker.d.ts +17 -0
- package/dist/native-worker/worker.js +141 -0
- package/dist/observability/metrics.js +6 -1
- package/dist/providers/auth/authorization-server.d.ts +3 -0
- package/dist/providers/auth/index.js +2 -0
- package/dist/providers/auth/self-hosted.d.ts +14 -2
- package/dist/providers/auth/self-hosted.js +54 -4
- package/dist/providers/chat/fake.d.ts +46 -0
- package/dist/providers/chat/fake.js +39 -0
- package/dist/providers/chat/index.d.ts +4 -0
- package/dist/providers/chat/index.js +8 -0
- package/dist/providers/chat/slack.d.ts +37 -0
- package/dist/providers/chat/slack.js +105 -0
- package/dist/providers/chat/types.d.ts +42 -0
- package/dist/providers/chat/types.js +19 -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/memory-ledger.d.ts +15 -2
- package/dist/providers/coding-proxy/memory-ledger.js +84 -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 +15 -2
- package/dist/providers/coding-proxy/prisma-ledger.js +179 -67
- package/dist/providers/coding-proxy/proxy.d.ts +14 -1
- package/dist/providers/coding-proxy/proxy.js +166 -14
- 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 +4 -0
- package/dist/providers/coding-proxy/runtime.js +78 -16
- package/dist/providers/coding-proxy/server.d.ts +6 -1
- package/dist/providers/coding-proxy/server.js +45 -1
- package/dist/providers/coding-proxy/types.d.ts +65 -1
- package/dist/providers/datastore/types.d.ts +5 -0
- package/dist/providers/engine/types.d.ts +36 -2
- package/dist/providers/engine/types.js +39 -0
- package/dist/providers/executor/composition.d.ts +31 -1
- package/dist/providers/executor/composition.js +81 -8
- package/dist/providers/executor/container.d.ts +385 -9
- package/dist/providers/executor/container.js +1234 -99
- 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 +91 -0
- package/dist/providers/executor/dbos.js +319 -26
- package/dist/providers/executor/deferred.d.ts +44 -0
- package/dist/providers/executor/deferred.js +100 -0
- 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 +39 -10
- package/dist/providers/executor/routing.js +77 -32
- package/dist/providers/executor/types.d.ts +25 -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 +8 -0
- package/dist/providers/jobs/docker-isolation.js +17 -0
- package/dist/providers/jobs/docker.d.ts +1 -0
- package/dist/providers/jobs/docker.js +29 -4
- package/dist/providers/jobs/fake-kubernetes-api.d.ts +23 -2
- package/dist/providers/jobs/fake-kubernetes-api.js +45 -1
- package/dist/providers/jobs/kubernetes-api.d.ts +25 -1
- package/dist/providers/jobs/kubernetes-api.js +17 -0
- package/dist/providers/jobs/kubernetes-client.d.ts +10 -1
- package/dist/providers/jobs/kubernetes-client.js +61 -3
- package/dist/providers/jobs/kubernetes-dry-run-fixture.d.ts +6 -1
- package/dist/providers/jobs/kubernetes-dry-run-fixture.js +6 -3
- package/dist/providers/jobs/kubernetes-isolation.d.ts +5 -1
- package/dist/providers/jobs/kubernetes-isolation.js +23 -1
- package/dist/providers/jobs/kubernetes-platform.d.ts +4 -1
- package/dist/providers/jobs/kubernetes-platform.js +38 -1
- package/dist/providers/jobs/kubernetes-preflight.d.ts +2 -1
- package/dist/providers/jobs/kubernetes-preflight.js +4 -2
- package/dist/providers/jobs/kubernetes.d.ts +42 -2
- package/dist/providers/jobs/kubernetes.js +178 -19
- package/dist/providers/jobs/metadata-probes.d.ts +11 -0
- package/dist/providers/jobs/metadata-probes.js +13 -0
- package/dist/providers/jobs/types.d.ts +42 -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 +39 -2
- package/dist/providers/review-host/github.js +274 -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 +157 -2
- package/dist/providers/review-host/types.js +8 -0
- 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 +33 -2
- package/dist/providers/vcs/git.js +324 -22
- 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 +246 -12
- package/dist/providers/vcs/github.js +521 -61
- package/dist/providers/vcs/index.js +8 -1
- 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 +33 -1
- package/dist/providers/vcs/routing.d.ts +4 -2
- package/dist/providers/vcs/routing.js +6 -0
- package/dist/providers/vcs/types.d.ts +80 -3
- package/dist/quickstart/coding-seed.d.ts +21 -3
- package/dist/quickstart/coding-seed.js +283 -3
- package/dist/quickstart/images.d.ts +2 -0
- package/dist/quickstart/images.js +7 -1
- 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/brokered-fetch.d.ts +23 -0
- package/dist/sandbox/brokered-fetch.js +37 -0
- 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 +35 -0
- package/dist/sandbox/host-functions.js +150 -91
- package/dist/sandbox/prelude.js +7 -1
- package/dist/sandbox/run-in-sandbox.d.ts +19 -0
- package/dist/sandbox/run-in-sandbox.js +28 -10
- package/dist/sandbox/safe-fetch.d.ts +2 -0
- package/dist/sandbox/safe-fetch.js +3 -1
- package/dist/sandbox/secret-broker-sigv4.d.ts +2 -0
- package/dist/sandbox/secret-broker-sigv4.js +49 -0
- package/dist/sandbox/secret-broker.d.ts +34 -0
- package/dist/sandbox/secret-broker.js +161 -0
- package/dist/sandbox/tool-capabilities.d.ts +10 -30
- package/dist/sandbox/user-tool.d.ts +14 -0
- package/dist/sandbox/user-tool.js +32 -0
- package/dist/sandbox/zod-params.d.ts +37 -5
- package/dist/sandbox/zod-params.js +181 -26
- package/dist/serve.js +25 -0
- package/dist/viewer/api-schema.d.ts +372 -2454
- package/dist/viewer/api-schema.js +29 -0
- package/dist/viewer/build-schemas.js +10 -3
- package/dist/viewer/event-bus.d.ts +6 -0
- package/dist/viewer/event-bus.js +16 -7
- package/dist/viewer/graph.d.ts +5 -2
- package/dist/viewer/graph.js +7 -2
- package/dist/viewer/http.d.ts +0 -1
- package/dist/viewer/http.js +2 -2
- package/dist/viewer/infra.js +25 -2
- package/dist/viewer/limits.d.ts +4 -0
- package/dist/viewer/limits.js +4 -0
- package/dist/viewer/openapi.d.ts +15 -0
- package/dist/viewer/openapi.js +170 -0
- package/dist/wardby-bin.js +10 -0
- package/docs/README.md +7 -0
- package/docs/agent-recipes.md +114 -27
- package/docs/architecture-runtime.md +16 -1
- package/docs/code-review-agents.md +689 -45
- package/docs/coding-agent-setup.md +602 -12
- package/docs/coding-packages.md +1037 -92
- package/docs/coding-services.md +30 -13
- package/docs/coding-worker-byo-images.md +218 -6
- package/docs/coding-worker-isolation.md +173 -44
- package/docs/getting-started-gke.md +332 -129
- package/docs/getting-started-identity-provider.md +31 -11
- package/docs/getting-started.md +14 -4
- package/docs/jira-agents.md +22 -9
- 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/native-sandbox.md +731 -0
- package/docs/observability.md +4 -0
- package/docs/release-verification.md +9 -0
- package/docs/security-deployment.md +146 -14
- package/docs/slack-notifications.md +268 -0
- package/docs/tool-secrets.md +284 -0
- package/docs/viewer-api.md +46 -5
- package/docs/viewer-api.openapi.yml +1404 -0
- package/help/admin-viewer.md +29 -3
- package/help/agent-recipes.md +27 -0
- package/help/architecture-agent.md +11 -6
- package/help/brokered-secrets.md +79 -0
- package/help/build-claude-code-image.md +131 -0
- package/help/build-worker-image.md +6 -7
- package/help/builder-agent.md +19 -6
- package/help/code-review-agents.md +243 -10
- 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 +23 -9
- package/help/deployment-targets.md +25 -14
- package/help/errors/budget-exhausted.md +187 -0
- package/help/errors/budget-group-exhausted.md +5 -1
- package/help/errors/coding-provider-not-configured.md +2 -2
- 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 +28 -0
- 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 +29 -0
- package/help/errors/graph-incomplete.md +43 -0
- package/help/errors/graph-limit.md +43 -0
- package/help/errors/low-power-disabled.md +29 -0
- package/help/errors/low-power-scale-forbidden.md +35 -0
- package/help/errors/low-power-wake-timeout.md +30 -0
- package/help/errors/merge-conflict.md +49 -0
- package/help/errors/mobile-disabled.md +31 -0
- package/help/errors/native-sandbox-capacity.md +22 -0
- package/help/errors/native-sandbox-deadline-exceeded.md +19 -0
- package/help/errors/native-sandbox-docker-failed.md +20 -0
- package/help/errors/native-sandbox-gateway-error.md +20 -0
- package/help/errors/native-sandbox-gateway-unavailable.md +21 -0
- package/help/errors/native-sandbox-image-not-pinned.md +19 -0
- package/help/errors/native-sandbox-isolation-mismatch.md +20 -0
- package/help/errors/native-sandbox-launch-abandoned.md +21 -0
- package/help/errors/native-sandbox-network-unenforced.md +22 -0
- package/help/errors/native-sandbox-requires-catalog.md +31 -0
- package/help/errors/native-sandbox-unavailable.md +19 -0
- package/help/errors/native-sandbox-warm-delivery-failed.md +21 -0
- package/help/errors/native-sandbox-worker-exited.md +21 -0
- package/help/errors/native-sandbox-worker-lost.md +20 -0
- package/help/errors/native-sandbox-worker-unready.md +22 -0
- 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/run-lost.md +39 -0
- package/help/errors/run-transcript-download.md +44 -0
- package/help/errors/secret-broker-body-invalid.md +26 -0
- package/help/errors/secret-broker-changed.md +20 -0
- package/help/errors/secret-broker-config-invalid.md +30 -0
- package/help/errors/secret-broker-conflict.md +27 -0
- package/help/errors/secret-broker-destination-denied.md +28 -0
- package/help/errors/secret-broker-value-invalid.md +28 -0
- package/help/errors/secret-brokered.md +24 -0
- package/help/errors/secret-in-value.md +69 -0
- package/help/errors/secret-not-brokered.md +25 -0
- package/help/errors/slack-auth-failed.md +48 -0
- package/help/errors/slack-channel-unreachable.md +39 -0
- package/help/errors/slack-not-configured.md +33 -0
- package/help/errors/target-merge.md +40 -0
- package/help/fix-merge-conflicts.md +73 -0
- package/help/getting-started.md +4 -5
- package/help/github-app-setup.md +132 -0
- package/help/github.md +40 -1
- package/help/identity-and-access.md +7 -1
- package/help/jira.md +23 -6
- package/help/knowledge.md +16 -7
- package/help/local-repositories.md +3 -4
- package/help/low-power-mode.md +131 -0
- package/help/merge-order-check.md +122 -0
- package/help/mobile-app.md +54 -0
- package/help/native-capabilities.md +29 -1
- package/help/native-sandbox.md +150 -0
- package/help/observability.md +8 -0
- package/help/operating-agents.md +5 -0
- package/help/package-audit-mode.md +91 -0
- package/help/related-pull-requests.md +80 -16
- package/help/repo-instructions-and-skills.md +91 -0
- package/help/resume-runs-locally.md +131 -0
- package/help/review-fix-rounds.md +43 -1
- package/help/sharing-agents.md +59 -0
- package/help/slack-notifications.md +76 -0
- 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 +99 -7
- package/package.json +27 -13
- package/prisma/migrations/20261009000003_native_execution_mode/migration.sql +12 -0
- package/prisma/migrations/20261009000004_native_gateway_ledger/migration.sql +65 -0
- package/prisma/migrations/20261009000005_native_gateway_call_child_agent/migration.sql +5 -0
- package/prisma/migrations/20261009000006_run_deferred_start_stop/migration.sql +14 -0
- package/prisma/migrations/20261009000007_native_gateway_network_ready/migration.sql +5 -0
- package/prisma/migrations/20261010000001_workflow_notifications/migration.sql +99 -0
- package/prisma/migrations/20261011000001_native_gateway_session_status_index/migration.sql +2 -0
- package/prisma/migrations/20261012000001_native_warm_worker/migration.sql +32 -0
- package/prisma/migrations/20261013000001_coding_run_merge_order/migration.sql +2 -0
- package/prisma/migrations/20261013000001_secret_broker/migration.sql +17 -0
- package/prisma/migrations/20261013000002_deferred_review_request/migration.sql +4 -0
- package/prisma/migrations/20261014000000_repo_skills/migration.sql +15 -0
- package/prisma/migrations/20261015000001_coding_run_merge_order_index/migration.sql +2 -0
- package/prisma/migrations/20261015000002_no_change_rereview/migration.sql +2 -0
- 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/schema.prisma +631 -146
- package/dist/sandbox/generated/zod-to-json-schema.bundle.js +0 -5
|
@@ -1,5 +1,6 @@
|
|
|
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";
|
|
3
4
|
export type ProxySessionStatus = "active" | "cancelled";
|
|
4
5
|
export type ProxyRequestStatus = "reserved" | "completed" | "released" | "uncertain";
|
|
5
6
|
export type ProxyProtocol = "openai-responses" | "anthropic-messages";
|
|
@@ -39,6 +40,8 @@ export interface ProxySession {
|
|
|
39
40
|
registryTokenHash?: string | null;
|
|
40
41
|
/** When the ledger first refused a request of this session for budget. */
|
|
41
42
|
budgetExhaustedAt?: Date | null;
|
|
43
|
+
/** The numbers behind the first budget refusal, set with budgetExhaustedAt. */
|
|
44
|
+
budgetRefusal?: ProxyRefusalRecord | null;
|
|
42
45
|
/** The code of the first upstream failure the proxy relayed for this session. */
|
|
43
46
|
upstreamFailure?: string | null;
|
|
44
47
|
/** The run's catalog entry, copied at session creation; null on sessions from before the catalog. */
|
|
@@ -56,6 +59,24 @@ export interface ProxyRequest {
|
|
|
56
59
|
pricing: PricingSnapshot;
|
|
57
60
|
usage?: ProxyUsage;
|
|
58
61
|
upstreamStatus?: number;
|
|
62
|
+
/** An uncertain request settled at an estimate: actualCostUsd and usage are estimated, not reported. */
|
|
63
|
+
costEstimated?: boolean;
|
|
64
|
+
requestBytes?: number;
|
|
65
|
+
ceilingUsd?: number;
|
|
66
|
+
reservationBasis?: ReservationBasis;
|
|
67
|
+
conversationKey?: string | null;
|
|
68
|
+
}
|
|
69
|
+
export type ReservationBasis = "cached" | "full";
|
|
70
|
+
/** The latest finished (completed or uncertain) request of a conversation, for the next request's hold. */
|
|
71
|
+
export interface PreviousReply {
|
|
72
|
+
model: string;
|
|
73
|
+
status: "completed" | "uncertain";
|
|
74
|
+
costEstimated: boolean;
|
|
75
|
+
usage?: ProxyUsage;
|
|
76
|
+
/** UTF-8 bytes of the request body the proxy forwarded; null on rows from before cache-aware holds. */
|
|
77
|
+
requestBytes: number | null;
|
|
78
|
+
/** When the previous request was reserved: the prompt cache was last refreshed around then. */
|
|
79
|
+
startedAt: Date;
|
|
59
80
|
}
|
|
60
81
|
export interface CreateProxySessionInput {
|
|
61
82
|
id: string;
|
|
@@ -78,7 +99,13 @@ export interface ReserveProxyRequestInput {
|
|
|
78
99
|
reservationUsd: number;
|
|
79
100
|
pricing: PricingSnapshot;
|
|
80
101
|
now: Date;
|
|
102
|
+
requestBytes?: number;
|
|
103
|
+
ceilingUsd?: number;
|
|
104
|
+
reservationBasis?: ReservationBasis;
|
|
105
|
+
conversationKey?: string | null;
|
|
81
106
|
}
|
|
107
|
+
/** What the proxy knows about a refusal: the numbers only; names and the binding limit are the control plane's. */
|
|
108
|
+
export type ProxyRefusalRecord = Omit<ProxyRefusalDetails, "agentBudgetUsd" | "groupName" | "leadAgentName">;
|
|
82
109
|
export type ReserveProxyRequestResult = {
|
|
83
110
|
outcome: "reserved";
|
|
84
111
|
request: ProxyRequest;
|
|
@@ -87,6 +114,7 @@ export type ReserveProxyRequestResult = {
|
|
|
87
114
|
request: ProxyRequest;
|
|
88
115
|
} | {
|
|
89
116
|
outcome: "budget_exhausted";
|
|
117
|
+
details: Omit<ProxyRefusalRecord, "source">;
|
|
90
118
|
} | {
|
|
91
119
|
outcome: "inactive";
|
|
92
120
|
reason: "cancelled" | "expired";
|
|
@@ -97,10 +125,28 @@ export interface ProxyLedger {
|
|
|
97
125
|
reserve(input: ReserveProxyRequestInput): Promise<ReserveProxyRequestResult>;
|
|
98
126
|
complete(requestId: string, usage: ProxyUsage, actualCostUsd: number, upstreamStatus: number): Promise<ProxyRequest>;
|
|
99
127
|
release(requestId: string, upstreamStatus: number): Promise<void>;
|
|
100
|
-
|
|
128
|
+
/**
|
|
129
|
+
* Marks a reserved request uncertain. With an estimate it is also settled at that cost (and
|
|
130
|
+
* counts at it, not at its hold); without one it keeps its full hold.
|
|
131
|
+
*/
|
|
132
|
+
markUncertain(requestId: string, upstreamStatus?: number, estimate?: {
|
|
133
|
+
usage: ProxyUsage;
|
|
134
|
+
costUsd: number;
|
|
135
|
+
}): Promise<void>;
|
|
136
|
+
/**
|
|
137
|
+
* What an interrupted reply's output can be estimated from: the median output tokens of the
|
|
138
|
+
* session's completed replies for this model. Its input comes from previousReply.
|
|
139
|
+
*/
|
|
140
|
+
settlementHints(sessionId: string, model: string): Promise<{
|
|
141
|
+
medianOutputTokens?: number;
|
|
142
|
+
}>;
|
|
143
|
+
/** The latest completed or uncertain request of a conversation, or null when it has none. */
|
|
144
|
+
previousReply(sessionId: string, conversationKey: string): Promise<PreviousReply | null>;
|
|
101
145
|
cancelSession(sessionId: string): Promise<void>;
|
|
102
146
|
/** Whether a request of this session was ever refused for budget. */
|
|
103
147
|
budgetExhausted(sessionId: string): Promise<boolean>;
|
|
148
|
+
/** The numbers behind the session's first budget refusal, if any. */
|
|
149
|
+
budgetRefusal(sessionId: string): Promise<ProxyRefusalRecord | null>;
|
|
104
150
|
/** Records an upstream failure code on the session; only the first one is kept. */
|
|
105
151
|
recordUpstreamFailure(sessionId: string, code: string): Promise<void>;
|
|
106
152
|
/** The first upstream failure code relayed for this session, if any. */
|
|
@@ -115,7 +161,25 @@ export interface ProxyAuditEvent {
|
|
|
115
161
|
status?: number;
|
|
116
162
|
reason?: string;
|
|
117
163
|
reservationUsd?: number;
|
|
164
|
+
/** For request.reserved and a budget refusal: the worst-case hold and how the hold was priced. */
|
|
165
|
+
ceilingUsd?: number;
|
|
166
|
+
reservationBasis?: ReservationBasis;
|
|
167
|
+
/** Why the hold fell back to the ceiling (basis "full"). */
|
|
168
|
+
holdFallback?: string;
|
|
169
|
+
/** Basis "cached": tokens priced at the cache-read rate, and at the input + cache-write rates. */
|
|
170
|
+
holdCachedTokens?: number;
|
|
171
|
+
holdUncachedTokens?: number;
|
|
172
|
+
/** For response.completed: how much the reply cost above its hold (reason "reservation_exceeded"). */
|
|
173
|
+
overshootUsd?: number;
|
|
174
|
+
/** For a budget refusal: the numbers behind it. */
|
|
175
|
+
budgetUsd?: number;
|
|
176
|
+
spentUsd?: number;
|
|
177
|
+
heldReservedUsd?: number;
|
|
178
|
+
heldUncertainUsd?: number;
|
|
179
|
+
turn?: number;
|
|
118
180
|
costUsd?: number;
|
|
181
|
+
/** For request.uncertain: the estimated cost it was settled at, when one could be made. */
|
|
182
|
+
estimatedCostUsd?: number;
|
|
119
183
|
inputTokens?: number;
|
|
120
184
|
outputTokens?: number;
|
|
121
185
|
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>;
|
|
@@ -48,6 +48,40 @@ export interface LoadedTool {
|
|
|
48
48
|
* only on earlier step results and on `agent` fields fixed at run start.
|
|
49
49
|
*/
|
|
50
50
|
export type StepRunner = <T>(name: string, fn: () => Promise<T>) => Promise<T>;
|
|
51
|
+
/**
|
|
52
|
+
* Part of the StepRunner contract: a step runner may throw this when another
|
|
53
|
+
* execution of the same run recorded the step first, so this attempt no
|
|
54
|
+
* longer owns the run. The attempt must stop without writing the run (the
|
|
55
|
+
* winner does that); engines and the runner rethrow it untouched.
|
|
56
|
+
*/
|
|
57
|
+
export declare class RunOwnershipLostError extends Error {
|
|
58
|
+
readonly step: string;
|
|
59
|
+
/**
|
|
60
|
+
* Usage the losing step's body reported before its result was discarded
|
|
61
|
+
* (an LLM turn's token counts and cost), when the step runner saw it. Not
|
|
62
|
+
* recorded on any run: the winner's result replaces it. Logged only.
|
|
63
|
+
*/
|
|
64
|
+
readonly discardedUsage?: Readonly<Record<string, number>>;
|
|
65
|
+
constructor(step: string, options?: {
|
|
66
|
+
cause?: unknown;
|
|
67
|
+
discardedUsage?: Readonly<Record<string, number>>;
|
|
68
|
+
});
|
|
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
|
+
}
|
|
51
85
|
/** The no-checkpoint default: run the step body directly. */
|
|
52
86
|
export declare const runStepInline: StepRunner;
|
|
53
87
|
/**
|
|
@@ -67,8 +101,8 @@ export interface EngineRunContext {
|
|
|
67
101
|
agent: EngineAgent;
|
|
68
102
|
tools: LoadedTool[];
|
|
69
103
|
providers: Pick<ProviderRegistry, "llm">;
|
|
70
|
-
/** 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. */
|
|
71
|
-
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>;
|
|
72
106
|
/**
|
|
73
107
|
* Consecutive tool calls of one model turn for which this returns true run
|
|
74
108
|
* at the same time as each other (a lead's delegate_to_* calls, when the
|
|
@@ -12,5 +12,44 @@
|
|
|
12
12
|
* which engine is driving: an engine that calls a provider SDK directly
|
|
13
13
|
* blinds the pre-flight refuse and mid-stream cutoff, and is not allowed.
|
|
14
14
|
*/
|
|
15
|
+
/**
|
|
16
|
+
* Part of the StepRunner contract: a step runner may throw this when another
|
|
17
|
+
* execution of the same run recorded the step first, so this attempt no
|
|
18
|
+
* longer owns the run. The attempt must stop without writing the run (the
|
|
19
|
+
* winner does that); engines and the runner rethrow it untouched.
|
|
20
|
+
*/
|
|
21
|
+
export class RunOwnershipLostError extends Error {
|
|
22
|
+
step;
|
|
23
|
+
/**
|
|
24
|
+
* Usage the losing step's body reported before its result was discarded
|
|
25
|
+
* (an LLM turn's token counts and cost), when the step runner saw it. Not
|
|
26
|
+
* recorded on any run: the winner's result replaces it. Logged only.
|
|
27
|
+
*/
|
|
28
|
+
discardedUsage;
|
|
29
|
+
constructor(step, options) {
|
|
30
|
+
super(`run_ownership_lost: another execution recorded step "${step}" first; this attempt stops.`, options?.cause === undefined ? undefined : { cause: options.cause });
|
|
31
|
+
this.name = "RunOwnershipLostError";
|
|
32
|
+
this.step = step;
|
|
33
|
+
if (options?.discardedUsage)
|
|
34
|
+
this.discardedUsage = options.discardedUsage;
|
|
35
|
+
}
|
|
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
|
+
}
|
|
15
54
|
/** The no-checkpoint default: run the step body directly. */
|
|
16
55
|
export const runStepInline = (_name, fn) => fn();
|
|
@@ -1,10 +1,30 @@
|
|
|
1
1
|
import type { PrismaClient } from "#prisma";
|
|
2
2
|
import { type ProviderConfig } from "../../config/providers.js";
|
|
3
|
+
import { type Power } from "../../core/power.js";
|
|
4
|
+
import { type ReReviewDeps } from "../../core/review-fix.js";
|
|
3
5
|
import type { KubernetesApi } from "../jobs/kubernetes-api.js";
|
|
6
|
+
import { loadAgentSecretValues } from "../../core/secret-guard.js";
|
|
4
7
|
import type { Executor } from "./types.js";
|
|
5
8
|
import { type RepoAccessGate } from "../../core/repo-access.js";
|
|
9
|
+
/**
|
|
10
|
+
* The coding-run terminal hook: a review-fix round's coding run that made no change re-reviews
|
|
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.
|
|
18
|
+
*/
|
|
19
|
+
export declare function reReviewOnCodingRunTerminal(deps: () => ReReviewDeps): (runId: string) => void;
|
|
6
20
|
export interface ConfiguredExecutorOptions {
|
|
7
21
|
native: Executor;
|
|
22
|
+
/**
|
|
23
|
+
* Runs native agents whose run snapshot says `sandbox`. Composed whether or
|
|
24
|
+
* not a coding job launcher is configured. Absent: sandbox runs go to
|
|
25
|
+
* `native`, whose runner refuses them (RoutingExecutor).
|
|
26
|
+
*/
|
|
27
|
+
nativeSandbox?: Executor;
|
|
8
28
|
db: PrismaClient;
|
|
9
29
|
env?: NodeJS.ProcessEnv;
|
|
10
30
|
providerConfig?: ProviderConfig;
|
|
@@ -12,6 +32,16 @@ export interface ConfiguredExecutorOptions {
|
|
|
12
32
|
kubernetesApi?: KubernetesApi;
|
|
13
33
|
/** Repository authorization for coding runs; built from the configured review hosts when absent. */
|
|
14
34
|
repoAccess?: RepoAccessGate;
|
|
35
|
+
/**
|
|
36
|
+
* Low-power mode, built once by the composition root and shared. Used only by the Kubernetes
|
|
37
|
+
* launcher (wakes the coding proxy before a run); absent: `DISABLED_POWER`.
|
|
38
|
+
*/
|
|
39
|
+
power?: Power;
|
|
40
|
+
/** Decrypts agent secrets for transcript redaction (session resume). Absent: transcripts are never stored. */
|
|
41
|
+
secretCipher?: Parameters<typeof loadAgentSecretValues>[1];
|
|
15
42
|
}
|
|
16
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Builds container execution only when Docker or Kubernetes is explicitly
|
|
45
|
+
* selected, and native sandbox routing whenever a sandbox executor is given.
|
|
46
|
+
*/
|
|
17
47
|
export declare function buildConfiguredExecutor(options: ConfiguredExecutorOptions): Executor;
|
|
@@ -1,10 +1,16 @@
|
|
|
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";
|
|
11
|
+
import { DISABLED_POWER } from "../../core/power.js";
|
|
12
|
+
import { startDeferredForRequest } from "../../core/host-events.js";
|
|
13
|
+
import { reReviewAfterNoChangeFix } from "../../core/review-fix.js";
|
|
8
14
|
import { EnvironmentCredentialResolver } from "../coding-proxy/environment-credentials.js";
|
|
9
15
|
import { CodingProxy } from "../coding-proxy/proxy.js";
|
|
10
16
|
import { PrismaProxyLedger } from "../coding-proxy/prisma-ledger.js";
|
|
@@ -16,18 +22,50 @@ import { preflightCanaryImage, runKubernetesPreflight } from "../jobs/kubernetes
|
|
|
16
22
|
import { CODING_WORKER_IMAGES_REQUIRED } from "../../coding/docker-preflight.js";
|
|
17
23
|
import { KubernetesJobLauncher } from "../jobs/kubernetes.js";
|
|
18
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";
|
|
19
28
|
import { ContainerExecutor, PrismaContainerExecutionStore, RunCapabilityVault } from "./container.js";
|
|
20
29
|
import { PrismaExecutionKindResolver, RoutingExecutor } from "./routing.js";
|
|
21
30
|
import { createRepoAccessGate } from "../../core/repo-access.js";
|
|
22
31
|
import { buildIssueTrackers } from "../issue-tracker/index.js";
|
|
23
32
|
import { buildReviewHosts } from "../review-host/index.js";
|
|
24
33
|
const compositionLog = logger.child({ module: "executor-composition" });
|
|
25
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* The coding-run terminal hook: a review-fix round's coding run that made no change re-reviews
|
|
36
|
+
* the PR once (core/review-fix.ts), and the reviews of its pull request that waited for it (a
|
|
37
|
+
* draft's head it may have pushed before recording its result, core/host-events.ts) are
|
|
38
|
+
* released. Started in the background so the executor's terminal path (and the slot release
|
|
39
|
+
* after it) never waits on the host; idempotent (released rows are claimed), and never throws.
|
|
40
|
+
* Started outside the caller's async context: a delegated coding run finishes inside its lead's
|
|
41
|
+
* delegation step, and a review started from there would be refused by DBOS as a workflow
|
|
42
|
+
* started from inside a step. `deps` is read only when a run finishes, after composition returned.
|
|
43
|
+
*/
|
|
44
|
+
export function reReviewOnCodingRunTerminal(deps) {
|
|
45
|
+
return (runId) => outsideRunContext(() => {
|
|
46
|
+
void Promise.resolve()
|
|
47
|
+
.then(() => reReviewAfterNoChangeFix(runId, deps()))
|
|
48
|
+
.catch((err) => compositionLog.warn({ err, runId }, "no-change re-review hook failed"));
|
|
49
|
+
// Never throws (logs its own failures).
|
|
50
|
+
void Promise.resolve()
|
|
51
|
+
.then(() => startDeferredForRequest(deps(), runId))
|
|
52
|
+
.catch((err) => compositionLog.warn({ err, runId }, "could not release the reviews waiting for this run"));
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Builds container execution only when Docker or Kubernetes is explicitly
|
|
57
|
+
* selected, and native sandbox routing whenever a sandbox executor is given.
|
|
58
|
+
*/
|
|
26
59
|
export function buildConfiguredExecutor(options) {
|
|
27
60
|
const env = options.env ?? process.env;
|
|
28
61
|
const providerConfig = options.providerConfig ?? loadProviderConfig(env);
|
|
29
|
-
if (providerConfig.jobs !== "docker" && providerConfig.jobs !== "kubernetes")
|
|
30
|
-
|
|
62
|
+
if (providerConfig.jobs !== "docker" && providerConfig.jobs !== "kubernetes") {
|
|
63
|
+
if (!options.nativeSandbox)
|
|
64
|
+
return options.native;
|
|
65
|
+
// No coding launcher: coding runs reach the native executor, whose runner fails them with
|
|
66
|
+
// the "needs a container executor" explanation, exactly as without this wrapper.
|
|
67
|
+
return new RoutingExecutor(new PrismaExecutionKindResolver(options.db), options.native, options.native, options.nativeSandbox);
|
|
68
|
+
}
|
|
31
69
|
const github = loadGitHubVcsConfig(env);
|
|
32
70
|
const config = loadContainerExecutorConfig(env);
|
|
33
71
|
// Each provider's images are optional, but a coding launcher with neither can run nothing.
|
|
@@ -80,6 +118,7 @@ export function buildConfiguredExecutor(options) {
|
|
|
80
118
|
resolveCapability: (runId) => capabilities.get(runId),
|
|
81
119
|
readyTimeoutMs: kubernetes.readyTimeoutMs,
|
|
82
120
|
enforcementExecTimeoutMs: kubernetes.enforcementExecTimeoutMs,
|
|
121
|
+
power: options.power ?? DISABLED_POWER,
|
|
83
122
|
preflight: async () => {
|
|
84
123
|
const { proxyIp } = await runKubernetesPreflight({
|
|
85
124
|
api,
|
|
@@ -112,10 +151,27 @@ export function buildConfiguredExecutor(options) {
|
|
|
112
151
|
}
|
|
113
152
|
const issueTrackers = buildIssueTrackers(env);
|
|
114
153
|
const concurrency = loadCodingConcurrencyConfig(env);
|
|
115
|
-
|
|
154
|
+
const reviewHosts = buildReviewHosts(env, options.db);
|
|
155
|
+
const repoAccess = options.repoAccess ?? createRepoAccessGate({ db: options.db, hosts: reviewHosts });
|
|
156
|
+
// The release and terminal hooks need the composed RoutingExecutor, which only exists
|
|
116
157
|
// after the ContainerExecutor it wraps is built. The closure reads
|
|
117
158
|
// `composed` only when a run finishes, which is after this function returns.
|
|
159
|
+
const blobStoreConfig = loadBlobStoreConfig(env);
|
|
160
|
+
const cipher = options.secretCipher;
|
|
161
|
+
const transcripts = new RunTranscriptRecorder({
|
|
162
|
+
db: options.db,
|
|
163
|
+
blobs: blobStoreConfig && cipher ? createBlobStore(blobStoreConfig) : undefined,
|
|
164
|
+
secretValues: async (agentId) => {
|
|
165
|
+
if (!cipher)
|
|
166
|
+
throw new Error("transcript_secrets_unavailable");
|
|
167
|
+
const named = await loadAgentSecretValues(options.db, cipher, agentId);
|
|
168
|
+
return named.flatMap((entry) => entry.values);
|
|
169
|
+
},
|
|
170
|
+
retentionDays: loadTranscriptRetentionDays(env),
|
|
171
|
+
maxBytes: loadTranscriptMaxBytes(env),
|
|
172
|
+
});
|
|
118
173
|
const coding = new ContainerExecutor({
|
|
174
|
+
transcripts,
|
|
119
175
|
store: new PrismaContainerExecutionStore(options.db, { maxConcurrent: concurrency.maxConcurrent, issueTrackers }),
|
|
120
176
|
jobs,
|
|
121
177
|
vcs,
|
|
@@ -131,12 +187,29 @@ export function buildConfiguredExecutor(options) {
|
|
|
131
187
|
anthropicCredentialRef: config.anthropicCredentialRef,
|
|
132
188
|
limits: { cpus: config.cpus, memoryMb: config.memoryMb, pids: config.pids, diskMb: config.diskMb },
|
|
133
189
|
maxDiskMb: config.maxDiskMb,
|
|
134
|
-
repoAccess
|
|
190
|
+
repoAccess,
|
|
191
|
+
readLinkedIssue: linkedIssueReader({ hosts: reviewHosts, issueTrackers }),
|
|
135
192
|
issueUrl: (provider, key) => (provider === "jira" ? issueTrackers.jira?.issueUrl(key) : undefined),
|
|
136
193
|
registryReport: async (runId) => {
|
|
137
194
|
const rows = await options.db.registryFetch.findMany({ where: { runId }, orderBy: { createdAt: "asc" } });
|
|
138
|
-
|
|
195
|
+
const coding = await options.db.codingRun.findUnique({ where: { runId }, select: { packageAuditMode: true } });
|
|
196
|
+
const packageAuditMode = coding?.packageAuditMode ?? null;
|
|
197
|
+
if (!packageAuditMode)
|
|
198
|
+
return summarizeRegistryFetches(rows);
|
|
199
|
+
const audits = await options.db.registryAuditRecord.findMany({ where: { runId }, orderBy: { createdAt: "asc" } });
|
|
200
|
+
return {
|
|
201
|
+
...summarizeRegistryFetches(rows),
|
|
202
|
+
packageAuditMode,
|
|
203
|
+
packageAudit: summarizePackageAudit(audits).entries,
|
|
204
|
+
};
|
|
139
205
|
},
|
|
206
|
+
onCodingRunTerminal: reReviewOnCodingRunTerminal(() => ({
|
|
207
|
+
db: options.db,
|
|
208
|
+
executor: composed,
|
|
209
|
+
hosts: reviewHosts,
|
|
210
|
+
repoAccess,
|
|
211
|
+
issueTrackers,
|
|
212
|
+
})),
|
|
140
213
|
onSlotReleased: () => {
|
|
141
214
|
void drainCodingQueue({
|
|
142
215
|
db: options.db,
|
|
@@ -150,6 +223,6 @@ export function buildConfiguredExecutor(options) {
|
|
|
150
223
|
});
|
|
151
224
|
},
|
|
152
225
|
});
|
|
153
|
-
const composed = new RoutingExecutor(new PrismaExecutionKindResolver(options.db), options.native, coding);
|
|
226
|
+
const composed = new RoutingExecutor(new PrismaExecutionKindResolver(options.db), options.native, coding, options.nativeSandbox);
|
|
154
227
|
return composed;
|
|
155
228
|
}
|