@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,16 +1,24 @@
|
|
|
1
1
|
# Coding Worker Isolation
|
|
2
2
|
|
|
3
|
-
Wardby
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
Wardby runs Codex and Claude Code coding workers through Docker or Kubernetes
|
|
4
|
+
launchers. Both fail closed when the effective runtime does not match the
|
|
5
|
+
reviewed policy. Claude Code separates its model-facing worker from its
|
|
6
|
+
workspace-facing tool runner: Docker uses companion containers, while
|
|
7
|
+
Kubernetes uses a native sidecar in the run pod.
|
|
6
8
|
|
|
7
9
|
## Security Boundary
|
|
8
10
|
|
|
9
|
-
Coding-agent repositories and instructions are untrusted. The
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
Coding-agent repositories and instructions are untrusted. The Wardby control
|
|
12
|
+
plane, immutable worker images, dedicated coding proxy, and the platform
|
|
13
|
+
enforcing container and network policies are trusted.
|
|
14
|
+
|
|
15
|
+
### Docker launcher
|
|
16
|
+
|
|
17
|
+
The Docker daemon and host kernel are trusted. Docker containers are defense
|
|
18
|
+
in depth rather than a VM boundary. Production should run the Docker host on a
|
|
19
|
+
dedicated worker node or VM with no production credentials beyond those
|
|
20
|
+
required by the proxy. The Kubernetes launcher section below describes the
|
|
21
|
+
corresponding pod and network rules.
|
|
14
22
|
|
|
15
23
|
The Codex worker has one network attachment: a unique per-run internal bridge using
|
|
16
24
|
Docker's isolated gateway mode. It has no default external route, published
|
|
@@ -66,12 +74,22 @@ again.
|
|
|
66
74
|
If the stream still fails, the run's diagnostic (in the control-plane log,
|
|
67
75
|
under the run's `coding_diag_…` id) names the cause as a fixed code, never the
|
|
68
76
|
error text: `job_coding_stream_proxy_denied` (401/403 from the proxy),
|
|
69
|
-
`job_coding_stream_rate_limited` (429), `
|
|
77
|
+
`job_coding_stream_rate_limited` (429), `job_coding_stream_quota_exceeded`
|
|
78
|
+
(the provider account is out of credit or over its spend limit; OpenAI answers
|
|
79
|
+
that with a 429 too, and retrying never helps; see
|
|
80
|
+
[the error article](../help/errors/coding-stream-quota-exceeded.md)),
|
|
81
|
+
`job_coding_stream_upstream_error`
|
|
70
82
|
(5xx), `job_coding_stream_timeout`, `job_coding_stream_proxy_unreachable`
|
|
71
83
|
(the worker could not connect), `job_coding_stream_agent_exited` (the agent
|
|
72
84
|
process exited without an HTTP error), or `job_coding_stream_failed` when none
|
|
73
85
|
of these match. A refusal because the run's budget is used up ends the run as
|
|
74
86
|
out of budget instead.
|
|
87
|
+
Claude Code reports most API failures as a failed turn rather than a dropped
|
|
88
|
+
stream; the Claude worker reads the error type its SDK reports and uses the
|
|
89
|
+
same codes (a rate limit, an exhausted credit balance, an overloaded or
|
|
90
|
+
failing provider, a refused credential, a timeout or an unreachable proxy). A
|
|
91
|
+
failed turn with no such error, or with one none of these codes covers (for
|
|
92
|
+
example an invalid request), is `job_coding_turn_failed`.
|
|
75
93
|
|
|
76
94
|
The proxy side of the same request is in the coding proxy's log as
|
|
77
95
|
`audit.*` events (`audit.request.reserved`, `audit.response.completed`,
|
|
@@ -232,21 +250,52 @@ expires on its own: each coding run dispatched before the expiry is traced for
|
|
|
232
250
|
its whole life, and `get_run` shows `debugTrace: true` for it. Runs dispatched
|
|
233
251
|
afterwards are not.
|
|
234
252
|
|
|
235
|
-
A traced run's
|
|
236
|
-
|
|
237
|
-
chain), to its **own log**, one JSON line each under a `debugTrace` key
|
|
253
|
+
A traced run's worker writes its whole agent stream, and the full text of a
|
|
254
|
+
stream failure (including the agent process's own error output and cause
|
|
255
|
+
chain), to its **own log**, one JSON line each under a `debugTrace` key
|
|
256
|
+
(`{ runId, at, kind, data }`, with `truncated: true` on a cut line). On
|
|
238
257
|
Kubernetes that is the run pod's `worker` container log; on GKE, Cloud Logging
|
|
239
258
|
keeps it after the pod is deleted. With the Docker launcher it is the worker
|
|
240
259
|
container's log (`docker logs`), for as long as the container exists. Nothing from the trace goes to the database,
|
|
241
260
|
GitHub, the run's error, or the control-plane log. Token-shaped values (the run
|
|
242
|
-
capability,
|
|
243
|
-
|
|
261
|
+
capability, the package-registry token derived from it, bearer tokens, API
|
|
262
|
+
keys, GitHub tokens) are redacted, and each line is capped at 16 KiB.
|
|
263
|
+
|
|
264
|
+
- **Codex** runs trace every Codex stream event (`event`), turn and error
|
|
265
|
+
events (`turn_failed`, `error_event`), and stream failures (`stream_error`).
|
|
266
|
+
- **Claude Code** runs (Wardby 0.7.0 or later) trace every Claude Agent SDK
|
|
267
|
+
message (`message`): the session's `system`/`init` message, each `assistant`
|
|
268
|
+
message, whose `tool_use` blocks carry the command given to `run_command`,
|
|
269
|
+
each `user` message, whose `tool_result` blocks carry that command's output
|
|
270
|
+
and error flag, and the final `result` message with its usage, cost and
|
|
271
|
+
duration. They also trace Claude Code's own error output (`sdk_stderr`) and
|
|
272
|
+
stream failures (`stream_error`). A command's duration is the difference
|
|
273
|
+
between the `at` of its `tool_use` message and that of its `tool_result`.
|
|
274
|
+
- Both write `worker_error` when the worker itself fails.
|
|
275
|
+
|
|
276
|
+
Each traced run's total is capped at 2 MiB by default. Once the cap is reached
|
|
277
|
+
the worker writes one `limit_reached` line and stops tracing that run. An admin
|
|
278
|
+
can raise or lower the cap for an agent, from 1 to 64 MiB, together with the
|
|
279
|
+
trace or separately (Wardby 0.7.0 or later):
|
|
244
280
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
281
|
+
```
|
|
282
|
+
update_agent { "id": "<agent id>", "codingProfile": { "debugTraceMinutes": 30, "debugTraceMaxMb": 20 } }
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
`debugTraceMaxMb` needs `agents:admin` too, and `null` restores the default.
|
|
286
|
+
Changes are written to the same `coding.debug_trace.set` audit line. It is
|
|
287
|
+
fixed on each traced run at dispatch, and `get_run` shows it as
|
|
288
|
+
`debugTraceMaxMb` when it is not the default. A long trace can outgrow what
|
|
289
|
+
your log pipeline keeps: Kubernetes rotates container logs (often at about
|
|
290
|
+
10 MiB per file), so `kubectl logs` may show only the newest part of a large
|
|
291
|
+
trace, while a log collector such as Cloud Logging on GKE keeps every line.
|
|
292
|
+
|
|
293
|
+
The trace can contain prompts, model output, commands, their output and
|
|
294
|
+
repository content. Turn it on only while diagnosing a failure, for as short a
|
|
295
|
+
time as you can, and treat the pod logs of traced runs as sensitive. Tracing
|
|
296
|
+
needs a worker image from a release that supports it (for Claude Code, 0.7.0
|
|
297
|
+
or later). A Codex worker that predates it rejects a traced run's input as
|
|
298
|
+
invalid; a Claude Code worker from 0.6.x runs the task but writes no trace.
|
|
250
299
|
|
|
251
300
|
## Container Policy
|
|
252
301
|
|
|
@@ -411,18 +460,20 @@ inert until an operator explicitly raises the ceiling above `CODING_DISK_MB`.
|
|
|
411
460
|
A coding agent's profile carries an optional `workspaceDiskMb` (MiB; `null`
|
|
412
461
|
means "use the deployment default `CODING_DISK_MB`"). It is snapshotted onto
|
|
413
462
|
the `CodingRun` at dispatch time, so a later profile edit never changes an
|
|
414
|
-
in-flight run's size, and it is capped by `CODING_MAX_DISK_MB
|
|
415
|
-
|
|
416
|
-
`
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
463
|
+
in-flight run's size, and it is capped by `CODING_MAX_DISK_MB`.
|
|
464
|
+
`create_agent` refuses a coding profile above the effective ceiling.
|
|
465
|
+
`update_agent` checks the ceiling when setting a numeric `workspaceDiskMb`
|
|
466
|
+
or changing an agent's kind to coding. Unrelated edits to an already-saved
|
|
467
|
+
over-cap coding agent remain allowed. The error names the requested MiB, the cap, and
|
|
468
|
+
`CODING_MAX_DISK_MB`, which the operator must raise to allow that size.
|
|
469
|
+
A value exactly at the cap is allowed; `null` restores the deployment default.
|
|
470
|
+
|
|
471
|
+
Agents already saved above the cap (including after an operator lowers it)
|
|
472
|
+
still fail at run time with `coding_workspace_disk_exceeds_limit`.
|
|
473
|
+
The run-time check runs after the workspace has been cloned onto the control
|
|
474
|
+
plane and before the worker starts; the run record shows the sanitized
|
|
475
|
+
`coding_failure_workspace:<id>`. Lower the profile's size or raise the
|
|
476
|
+
operator ceiling before running the agent again.
|
|
426
477
|
|
|
427
478
|
`CODING_MAX_CONCURRENT` (default `4`) caps coding runs that hold a slot at
|
|
428
479
|
once, across every control-plane replica: the cap is enforced in Postgres
|
|
@@ -432,6 +483,12 @@ it starts, oldest first, when a slot frees (immediately in the process whose
|
|
|
432
483
|
run finished, or on the scheduler leader's next tick). A newly dispatched run
|
|
433
484
|
never takes a free slot ahead of an older queued run. A run still queued after
|
|
434
485
|
`CODING_QUEUE_TIMEOUT_SEC` (default `3600`) fails with `coding_queue_timeout`.
|
|
486
|
+
To end a queued run sooner, or a running one, call `stop_run` with its id: a
|
|
487
|
+
queued run is recorded `cancelled` and never starts; a running run is recorded
|
|
488
|
+
`cancelled` first, then its proxy session is cancelled and its job is stopped
|
|
489
|
+
and removed. The cancelled state is checked again before anything is pushed,
|
|
490
|
+
so a stopped run opens or updates no pull request, even when its worker had
|
|
491
|
+
already finished (see [Stop or cancel a run](../help/stop-run.md)).
|
|
435
492
|
Slot usage is derived from run state, so a crashed replica cannot leak slots:
|
|
436
493
|
its runs are reconciled to `lost`, which frees them.
|
|
437
494
|
|
|
@@ -447,13 +504,33 @@ size (a service sidecar adds to a run's CPU and memory) and other pods share the
|
|
|
447
504
|
quota. Set `KUBERNETES_RESOURCE_QUOTA` to the quota's name and the launcher
|
|
448
505
|
checks, before a run claims a slot, whether the pod it would create fits the
|
|
449
506
|
quota's free room. A run that doesn't fit is queued the same way as a run over
|
|
450
|
-
`CODING_MAX_CONCURRENT`, and is retried when a run ends and on each leader tick
|
|
451
|
-
|
|
452
|
-
reads one ResourceQuota by name (`get` on `resourcequotas` with that
|
|
507
|
+
`CODING_MAX_CONCURRENT`, and is retried when a run ends and on each leader tick.
|
|
508
|
+
The check reads one ResourceQuota by name (`get` on `resourcequotas` with that
|
|
453
509
|
`resourceName` in the launcher's Role). If the quota is missing or can't be
|
|
454
510
|
read, the launcher logs `kubernetes_resource_quota_missing` or
|
|
455
|
-
`kubernetes_resource_quota_unreadable` once and launches as before.
|
|
456
|
-
|
|
511
|
+
`kubernetes_resource_quota_unreadable` once and launches as before.
|
|
512
|
+
|
|
513
|
+
The check can be stale: the quota may fill up between the check and the pod
|
|
514
|
+
create, or `KUBERNETES_RESOURCE_QUOTA` may be unset. When the cluster still
|
|
515
|
+
refuses the pod, the run does not fail. It returns to the coding queue (the
|
|
516
|
+
control plane logs `coding run waiting for capacity: the cluster refused its
|
|
517
|
+
pod`), keeps its place and its original queue clock, and is retried no sooner
|
|
518
|
+
than about a minute later. It fails only when `CODING_QUEUE_TIMEOUT_SEC`
|
|
519
|
+
expires, with `coding_queue_timeout`; a follow-up run on a pull request then
|
|
520
|
+
also finishes the in-progress status it posted there, as failed. The queue stays first in, first out, so
|
|
521
|
+
runs behind a refused run wait for it, and each retry happens about once a
|
|
522
|
+
minute while the quota is full. A refused run shows `running` briefly, then
|
|
523
|
+
`pending` again while it waits. When `KUBERNETES_RESOURCE_QUOTA` is unset and a
|
|
524
|
+
pod is refused by a ResourceQuota, the launcher logs
|
|
525
|
+
`kubernetes_resource_quota_unconfigured` once per process: set
|
|
526
|
+
`KUBERNETES_RESOURCE_QUOTA` to that quota and grant the launcher `get` on it, so
|
|
527
|
+
runs wait before they start instead of being refused at creation. The Docker
|
|
528
|
+
launcher has no quota, so none of this applies there. In low-power mode, a run
|
|
529
|
+
waiting in the coding queue keeps the coding proxy awake, as any queued run
|
|
530
|
+
does.
|
|
531
|
+
|
|
532
|
+
Size the quota for `CODING_MAX_CONCURRENT` times the run pod's requests, so
|
|
533
|
+
slots and quota agree.
|
|
457
534
|
|
|
458
535
|
Operating the queue across replicas:
|
|
459
536
|
|
|
@@ -513,7 +590,9 @@ the model, and a tag that breaks it is normalized to a lowercase slug (or
|
|
|
513
590
|
dropped) instead of failing an otherwise finished run. GitHub finalization
|
|
514
591
|
re-validates the tag independently. Linking an issue is not the tag's job: put
|
|
515
592
|
a closing keyword such as `Resolves #37` in the task so the worker includes it
|
|
516
|
-
in the summary, which becomes the pull request body
|
|
593
|
+
in the summary, which becomes the pull request body on every run,
|
|
594
|
+
including follow-ups (see
|
|
595
|
+
[How the pull request description is kept current](code-review-agents.md#how-the-pull-request-description-is-kept-current)).
|
|
517
596
|
|
|
518
597
|
Some workspace folders are never collected from a run: `node_modules`, `.venv`,
|
|
519
598
|
`venv`, `__pycache__`, `.pytest_cache`, `.ruff_cache`, `.mypy_cache`, `.tox`,
|
|
@@ -588,6 +667,7 @@ Kubernetes-specific settings (`src/config/providers.ts`,
|
|
|
588
667
|
| `KUBERNETES_CONTEXT` | (unset → in-cluster/default kubeconfig context) | Which kubeconfig context `ClientNodeKubernetesApi` connects with. |
|
|
589
668
|
| `KUBERNETES_RUNTIME_CLASS` | (unset) | e.g. `gvisor` on GKE. Unset means pods run without a sandboxing runtime class — logged once per launch as `kubernetes_runtime_class_unset` and development-only. |
|
|
590
669
|
| `KUBERNETES_RESOURCE_QUOTA` | (unset) | Name of the namespace ResourceQuota run pods count against, e.g. `wardby-coding` in the GKE overlay. When set, a run whose pod would not fit the quota's free room waits in the coding queue instead of failing at pod create. Needs `get` on that one `resourcequotas` object. Unset means no check. |
|
|
670
|
+
| `KUBERNETES_PLATFORM` | `generic` | `generic`, `gke-autopilot` or `eks`. Selects the cluster's admission rules that run pods are conformed to. `gke-autopilot` and `eks` both require `KUBERNETES_RUNTIME_CLASS=gvisor`; see the platform profile section below. |
|
|
591
671
|
| `KUBERNETES_RUN_PRIORITY_CLASS` | (unset) | PriorityClass for run pods and the preflight canary, e.g. `wardby-coding-run` in the GKE overlay. Must be an existing class and a DNS-1123 subdomain; `system-` classes are refused. Unset means no class (priority 0). |
|
|
592
672
|
|
|
593
673
|
The `CODING_CPUS` / `CODING_MEMORY_MB` / `CODING_PIDS` / `CODING_DISK_MB` /
|
|
@@ -674,6 +754,10 @@ One pod per run, built by the canonical, deny-by-default policy in
|
|
|
674
754
|
that points at the workspace's `.cache/tmp` on the disk-backed `storage`
|
|
675
755
|
volume instead, so it scales with `workspaceDiskMb` rather than this tiny
|
|
676
756
|
in-memory scratch.
|
|
757
|
+
- A Claude Code run with `sessionResume` on also gives the worker's Claude
|
|
758
|
+
Code config directory (`/tmp/claude-config`, where the session file grows)
|
|
759
|
+
its own 80 MiB `medium: Memory` `emptyDir` (a tmpfs of the same size under
|
|
760
|
+
Docker), so a long session never fills `/tmp`. Only the worker mounts it.
|
|
677
761
|
- `dnsPolicy: None` with `dnsConfig.nameservers: ["127.0.0.1"]` — **no DNS is
|
|
678
762
|
configured for worker/agent pods at all.** The proxy is reached by name
|
|
679
763
|
(`WARDBY_PROXY_URL=http://wardby-proxy:8787` — `CODING_PROXY_ALIAS` in
|
|
@@ -798,6 +882,16 @@ landed on — cannot appear in it. That case reached a live Autopilot launch wit
|
|
|
798
882
|
every dry-run-derived check passing, and is now pinned by tests. Treat a
|
|
799
883
|
captured fixture as a lower bound on what a platform mutates.
|
|
800
884
|
|
|
885
|
+
The `eks` profile is for Amazon EKS clusters with a dedicated gVisor node group.
|
|
886
|
+
EKS has no managed sandbox runtime, so the cluster must provide a RuntimeClass
|
|
887
|
+
named `gvisor` with handler `runsc` whose `scheduling` block selects nodes
|
|
888
|
+
labelled `wardby.dev/sandbox=gvisor` and tolerates the taint
|
|
889
|
+
`sandbox=gvisor:NoSchedule` on those nodes. Kubernetes' RuntimeClass admission
|
|
890
|
+
merges that block into each pod; Wardby sets neither the node selector nor the
|
|
891
|
+
toleration itself, and the `eks` profile forgives exactly that nodeSelector and
|
|
892
|
+
that toleration and nothing else. Pod resources follow the generic rules, plus
|
|
893
|
+
an explicit ephemeral-storage request and limit.
|
|
894
|
+
|
|
801
895
|
### The enforcement gate
|
|
802
896
|
|
|
803
897
|
The Kubernetes API can create a NetworkPolicy object without that policy
|
|
@@ -911,9 +1005,9 @@ default 90,000ms):
|
|
|
911
1005
|
1. `platform` — pure configuration, checked before any cluster API call:
|
|
912
1006
|
`assertPlatformConfig` (`src/providers/jobs/kubernetes-platform.ts`) refuses
|
|
913
1007
|
a deployment that cannot work under `KUBERNETES_PLATFORM`. Under
|
|
914
|
-
`gke-autopilot`
|
|
915
|
-
|
|
916
|
-
|
|
1008
|
+
`gke-autopilot` and `eks`, `KUBERNETES_RUNTIME_CLASS` must be `gvisor` (an
|
|
1009
|
+
unset or different runtime class is refused, not warned about). Under
|
|
1010
|
+
`gke-autopilot` the effective `CODING_MAX_DISK_MB` must also leave room
|
|
917
1011
|
for the worker container's 1 GiB reservation inside Autopilot's 10 GiB pod
|
|
918
1012
|
ephemeral-storage ceiling. The same assertion runs again at process
|
|
919
1013
|
start-up in `buildConfiguredExecutor`
|
|
@@ -942,20 +1036,55 @@ default 90,000ms):
|
|
|
942
1036
|
5. `canary` — creates a real run pod + NetworkPolicy from the same builders
|
|
943
1037
|
as a live run, running a script that waits for policy enforcement (as
|
|
944
1038
|
above) then attempts DNS resolution, a connect to the proxy's deny port,
|
|
945
|
-
the internet (`1.1.1.1:443`), the metadata
|
|
946
|
-
|
|
1039
|
+
the internet (`1.1.1.1:443`), the cloud metadata endpoints (`169.254.169.254:80`,
|
|
1040
|
+
the EKS Pod Identity agent `169.254.170.23:80` and its IPv6 address
|
|
1041
|
+
`[fd00:ec2::23]:80`, and EC2's IPv6 metadata address `[fd00:ec2::254]:80`), and the proxy itself —
|
|
1042
|
+
requiring every one of the first four kinds to fail and the proxy connect to
|
|
947
1043
|
succeed. Any other outcome, or a canary pod that itself fails to
|
|
948
1044
|
schedule/run, is `kubernetes_isolation_unsupported:canary`.
|
|
949
1045
|
|
|
950
1046
|
This whole preflight is **memoized per launcher instance and its failure is
|
|
951
1047
|
sticky**: `KubernetesJobLauncher.runPreflight()` caches the first call's
|
|
952
|
-
promise (`this.preflightResult ??= ...`, `kubernetes.ts:
|
|
1048
|
+
promise (`this.preflightResult ??= ...`, `kubernetes.ts:790`), including
|
|
953
1049
|
a rejection — so once a launcher process has seen preflight fail, every
|
|
954
1050
|
subsequent `launch()` in that process fails immediately with the same error
|
|
955
1051
|
without re-probing the cluster. A fresh preflight requires a new process
|
|
956
1052
|
(or, from the CLI, a fresh `wardby coding preflight` invocation, which is
|
|
957
1053
|
not memoized).
|
|
958
1054
|
|
|
1055
|
+
**A long-running server process starts this same memoized preflight at
|
|
1056
|
+
start-up, not on the first coding run.** `wardby serve`, `wardby mcp` (both
|
|
1057
|
+
transports), and `wardby scheduler` each call `KubernetesJobLauncher.warmUp()`
|
|
1058
|
+
right after the executor is built, fire-and-forget: it runs the identical
|
|
1059
|
+
preflight `launch()` would otherwise run lazily, so the first coding run
|
|
1060
|
+
after a restart doesn't pay the preflight's own cost (a canary pod, routinely
|
|
1061
|
+
tens of seconds on a resource-constrained cluster such as `kind`).
|
|
1062
|
+
`wardby scheduler` needs this just as much as the other two — it dispatches
|
|
1063
|
+
scheduled coding runs through its own Kubernetes executor without ever
|
|
1064
|
+
starting an MCP server, so without this it would still pay the lazy cost on
|
|
1065
|
+
its first scheduled run. The result is logged once at start-up — an info
|
|
1066
|
+
line on success, a warning naming the failure code (e.g.
|
|
1067
|
+
`kubernetes_isolation_unsupported:<check>`) otherwise.
|
|
1068
|
+
|
|
1069
|
+
**A start-up warm-up's failure is logged and retried on the next run, not
|
|
1070
|
+
left stuck until restart.** This is the one way a preflight failure is
|
|
1071
|
+
_not_ memoized: a transient cluster problem at process start (the API
|
|
1072
|
+
server briefly unreachable, a slow CNI not yet programmed, and the like)
|
|
1073
|
+
must not fail every coding run for the rest of that process's life, so a
|
|
1074
|
+
failed warm-up clears its own failed attempt once it has logged it, and the
|
|
1075
|
+
_next_ `launch()` runs the preflight fresh — succeeding if the cluster has
|
|
1076
|
+
since recovered. A `launch()` that was already waiting on that same
|
|
1077
|
+
in-flight warm-up attempt still fails with that attempt's error (it shares
|
|
1078
|
+
the same preflight call), exactly as it always has; it's only the attempt
|
|
1079
|
+
_after_ that one which retries. A preflight failure `launch()` triggers
|
|
1080
|
+
itself — because no warm-up ran, or because a warm-up's cleared failure was
|
|
1081
|
+
never retried before the next `launch()` found the cluster still broken —
|
|
1082
|
+
keeps the original behavior exactly: it stays memoized, failing every
|
|
1083
|
+
subsequent `launch()` in that process until it is restarted. This never
|
|
1084
|
+
runs for a one-shot CLI command (`wardby run`, `wardby coding preflight`,
|
|
1085
|
+
migrations, imports) — only for a process that stays up to serve or
|
|
1086
|
+
dispatch runs.
|
|
1087
|
+
|
|
959
1088
|
**A hung pod create during preflight can leave a preflight pod and its
|
|
960
1089
|
NetworkPolicy behind.** If `createPod` never settles (rather than failing),
|
|
961
1090
|
the preflight's own timeout still fires and the caller sees `:timeout`, but
|
|
@@ -1051,7 +1180,7 @@ values. The list is kept only when every entry matches
|
|
|
1051
1180
|
- **No end-to-end backpressure or host-side archive-size cap** once the
|
|
1052
1181
|
exec WebSocket for a seed/collect transfer is connected — pre-existing,
|
|
1053
1182
|
documented, not a regression of this milestone.
|
|
1054
|
-
- **An over-ceiling `workspaceDiskMb` fails
|
|
1183
|
+
- **An already-saved over-ceiling `workspaceDiskMb` fails at run time** — see
|
|
1055
1184
|
"Control Plane Configuration" above.
|
|
1056
1185
|
- **Namespace handling must remain explicit in every overlay.**
|
|
1057
1186
|
`deploy/kind-coding/manifests/base/kustomization.yaml`
|