@wardby/cli 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +5 -5
- package/README.md +6 -1
- package/deploy/local/docker-compose.quickstart-coding.yml +19 -0
- package/dist/claude-coding-worker/driver.d.ts +33 -3
- package/dist/claude-coding-worker/driver.js +151 -21
- package/dist/claude-coding-worker/main.js +38 -6
- package/dist/claude-coding-worker/sdk.js +29 -2
- package/dist/claude-coding-worker/tool-socket.d.ts +27 -0
- package/dist/claude-coding-worker/tool-socket.js +111 -0
- package/dist/claude-coding-worker/transcript.d.ts +18 -0
- package/dist/claude-coding-worker/transcript.js +77 -0
- package/dist/claude-plugin/command.d.ts +61 -0
- package/dist/claude-plugin/command.js +376 -0
- package/dist/cli-help.d.ts +1 -1
- package/dist/cli-help.js +3 -1
- package/dist/cli.js +71 -13
- package/dist/coding/code-host.d.ts +16 -0
- package/dist/coding/code-host.js +60 -0
- package/dist/coding/continuation-wording.d.ts +35 -0
- package/dist/coding/continuation-wording.js +73 -0
- package/dist/coding/linked-issue-note.d.ts +23 -0
- package/dist/coding/linked-issue-note.js +47 -0
- package/dist/coding/mcp-token.d.ts +12 -0
- package/dist/coding/mcp-token.js +26 -0
- package/dist/coding/merge-wording.d.ts +28 -0
- package/dist/coding/merge-wording.js +78 -0
- package/dist/coding/pr-description-note.d.ts +9 -0
- package/dist/coding/pr-description-note.js +32 -0
- package/dist/coding/profile.d.ts +46 -126
- package/dist/coding/profile.js +45 -4
- package/dist/coding/protected-path-wording.d.ts +8 -0
- package/dist/coding/protected-path-wording.js +1 -1
- package/dist/coding/protocol.d.ts +264 -346
- package/dist/coding/protocol.js +237 -12
- package/dist/coding/redact.d.ts +3 -0
- package/dist/coding/redact.js +17 -0
- package/dist/coding/registry/allowlist.d.ts +12 -0
- package/dist/coding/registry/allowlist.js +14 -1
- package/dist/coding/registry/audit-mode.d.ts +153 -0
- package/dist/coding/registry/audit-mode.js +304 -0
- package/dist/coding/registry/lockfile-shared.d.ts +36 -0
- package/dist/coding/registry/lockfile-shared.js +128 -0
- package/dist/coding/registry/lockfiles.js +1 -1
- package/dist/coding/registry/npm-lockfile-formats.d.ts +11 -0
- package/dist/coding/registry/npm-lockfile-formats.js +41 -0
- package/dist/coding/registry/npm-lockfile.d.ts +8 -4
- package/dist/coding/registry/npm-lockfile.js +4 -6
- package/dist/coding/registry/npm.js +78 -8
- package/dist/coding/registry/pnpm-lockfile.d.ts +17 -0
- package/dist/coding/registry/pnpm-lockfile.js +189 -0
- package/dist/coding/registry/pypi-plan.d.ts +50 -0
- package/dist/coding/registry/pypi-plan.js +406 -0
- package/dist/coding/registry/pypi-requirements.d.ts +58 -0
- package/dist/coding/registry/pypi-requirements.js +155 -0
- package/dist/coding/registry/pypi.d.ts +3 -27
- package/dist/coding/registry/pypi.js +40 -154
- package/dist/coding/registry/refusal-hints.d.ts +20 -0
- package/dist/coding/registry/refusal-hints.js +61 -0
- package/dist/coding/registry/refusal-wording.d.ts +11 -0
- package/dist/coding/registry/refusal-wording.js +56 -0
- package/dist/coding/registry/report.d.ts +70 -8
- package/dist/coding/registry/report.js +112 -5
- package/dist/coding/registry/types.d.ts +58 -8
- package/dist/coding/registry/yarn-lockfile.d.ts +30 -0
- package/dist/coding/registry/yarn-lockfile.js +367 -0
- package/dist/coding/services/catalog.d.ts +37 -351
- package/dist/coding/transcript/claude-code.d.ts +13 -0
- package/dist/coding/transcript/claude-code.js +273 -0
- package/dist/coding/transcript/download-protocol.d.ts +30 -0
- package/dist/coding/transcript/download-protocol.js +18 -0
- package/dist/coding/transcript/format.d.ts +20 -0
- package/dist/coding/transcript/format.js +32 -0
- package/dist/coding/transcript/recorder.d.ts +52 -0
- package/dist/coding/transcript/recorder.js +225 -0
- package/dist/coding/transcript/resume/checkout.d.ts +31 -0
- package/dist/coding/transcript/resume/checkout.js +203 -0
- package/dist/coding/transcript/resume/command.d.ts +17 -0
- package/dist/coding/transcript/resume/command.js +176 -0
- package/dist/coding/transcript/resume/download.d.ts +20 -0
- package/dist/coding/transcript/resume/download.js +153 -0
- package/dist/coding/transcript/resume/launch.d.ts +38 -0
- package/dist/coding/transcript/resume/launch.js +128 -0
- package/dist/coding/transcript/resume/session-file.d.ts +13 -0
- package/dist/coding/transcript/resume/session-file.js +79 -0
- package/dist/coding/transcript/resume/stand-in.d.ts +11 -0
- package/dist/coding/transcript/resume/stand-in.js +49 -0
- package/dist/coding-worker/artifact.d.ts +8 -3
- package/dist/coding-worker/artifact.js +3 -1
- package/dist/coding-worker/debug-trace.d.ts +9 -6
- package/dist/coding-worker/debug-trace.js +16 -19
- package/dist/coding-worker/dependency-cache.d.mts +229 -0
- package/dist/coding-worker/dependency-cache.mjs +2123 -0
- package/dist/coding-worker/driver.d.ts +4 -3
- package/dist/coding-worker/driver.js +124 -39
- package/dist/coding-worker/errors.d.ts +1 -0
- package/dist/coding-worker/errors.js +32 -0
- package/dist/coding-worker/main.js +5 -1
- package/dist/coding-worker/mcp-config.d.ts +27 -0
- package/dist/coding-worker/mcp-config.js +32 -0
- package/dist/coding-worker/sdk.d.ts +36 -0
- package/dist/coding-worker/sdk.js +28 -1
- package/dist/coding-worker/task-note.d.ts +11 -0
- package/dist/coding-worker/task-note.js +13 -0
- package/dist/coding-worker/types.d.ts +15 -0
- package/dist/config/dependency-cache.d.ts +23 -0
- package/dist/config/dependency-cache.js +32 -0
- package/dist/config/mcp-call-limit.d.ts +8 -0
- package/dist/config/mcp-call-limit.js +18 -0
- package/dist/config/mcp-servers.d.ts +8 -0
- package/dist/config/mcp-servers.js +12 -0
- package/dist/config/providers.d.ts +12 -3
- package/dist/config/providers.js +55 -5
- package/dist/config/test-simulators.d.ts +92 -0
- package/dist/config/test-simulators.js +333 -0
- package/dist/config/tool-timeout.d.ts +1 -0
- package/dist/config/tool-timeout.js +18 -0
- package/dist/core/async-context.d.ts +2 -0
- package/dist/core/async-context.js +12 -0
- package/dist/core/budget-events.d.ts +108 -0
- package/dist/core/budget-events.js +346 -0
- package/dist/core/budget-groups.d.ts +50 -1
- package/dist/core/budget-groups.js +236 -27
- package/dist/core/budget-stopped-head.d.ts +46 -0
- package/dist/core/budget-stopped-head.js +81 -0
- package/dist/core/budget-topup.d.ts +51 -0
- package/dist/core/budget-topup.js +156 -0
- package/dist/core/budget-wording.d.ts +16 -2
- package/dist/core/budget-wording.js +40 -2
- package/dist/core/coding-mcp.d.ts +36 -0
- package/dist/core/coding-mcp.js +253 -0
- package/dist/core/coding-queue.d.ts +2 -1
- package/dist/core/coding-queue.js +7 -0
- package/dist/core/coding-repository.d.ts +46 -0
- package/dist/core/coding-repository.js +92 -0
- package/dist/core/cron.d.ts +19 -1
- package/dist/core/cron.js +17 -0
- package/dist/core/datastores.js +1 -1
- package/dist/core/deferred-coding.d.ts +14 -0
- package/dist/core/deferred-coding.js +62 -0
- package/dist/core/delegation-child.d.ts +25 -0
- package/dist/core/delegation-child.js +37 -0
- package/dist/core/delegation-slots.d.ts +27 -0
- package/dist/core/delegation-slots.js +44 -0
- package/dist/core/dispatch.d.ts +48 -2
- package/dist/core/dispatch.js +166 -66
- package/dist/core/engine-native.js +1 -1
- package/dist/core/error-code.d.ts +38 -0
- package/dist/core/error-code.js +169 -0
- package/dist/core/grants.d.ts +46 -8
- package/dist/core/grants.js +99 -8
- package/dist/core/host-events.d.ts +18 -2
- package/dist/core/host-events.js +291 -27
- package/dist/core/host-status.d.ts +85 -3
- package/dist/core/host-status.js +300 -22
- package/dist/core/issue-bridge.d.ts +50 -6
- package/dist/core/issue-bridge.js +124 -33
- package/dist/core/issue-events.d.ts +1 -1
- package/dist/core/issue-events.js +4 -10
- package/dist/core/issue-status.d.ts +1 -1
- package/dist/core/issue-status.js +58 -29
- package/dist/core/logger.d.ts +5 -0
- package/dist/core/logger.js +14 -1
- package/dist/core/lost-run-children.d.ts +6 -0
- package/dist/core/lost-run-children.js +32 -0
- package/dist/core/mark-ready.d.ts +34 -0
- package/dist/core/mark-ready.js +152 -0
- package/dist/core/markdown-code.d.ts +8 -0
- package/dist/core/markdown-code.js +107 -0
- package/dist/core/mcp-client/client.d.ts +47 -0
- package/dist/core/mcp-client/client.js +141 -0
- package/dist/core/mcp-client/jsonrpc.d.ts +15 -0
- package/dist/core/mcp-client/jsonrpc.js +54 -0
- package/dist/core/mcp-client/results.d.ts +13 -0
- package/dist/core/mcp-client/results.js +42 -0
- package/dist/core/mcp-servers.d.ts +90 -0
- package/dist/core/mcp-servers.js +230 -0
- package/dist/core/mcp-tools.d.ts +108 -0
- package/dist/core/mcp-tools.js +287 -0
- package/dist/core/memory-tools.js +7 -0
- package/dist/core/merge-order-check.d.ts +2 -1
- package/dist/core/merge-order-check.js +44 -18
- package/dist/core/notification-dispatcher.js +2 -1
- package/dist/core/notification-templates.d.ts +1 -7
- package/dist/core/notification-templates.js +36 -2
- package/dist/core/pull-request-state-sync.js +2 -2
- package/dist/core/reconciler.d.ts +4 -3
- package/dist/core/reconciler.js +8 -1
- package/dist/core/related-pull-requests.d.ts +11 -3
- package/dist/core/related-pull-requests.js +49 -20
- package/dist/core/reply-parts.d.ts +21 -0
- package/dist/core/reply-parts.js +73 -0
- package/dist/core/review-fix.d.ts +1 -1
- package/dist/core/review-fix.js +4 -3
- package/dist/core/review-host-checks.d.ts +1 -1
- package/dist/core/review-host-tools.d.ts +3 -0
- package/dist/core/review-host-tools.js +102 -14
- package/dist/core/review-reads.d.ts +55 -0
- package/dist/core/review-reads.js +233 -0
- package/dist/core/run-status.d.ts +12 -0
- package/dist/core/run-status.js +12 -0
- package/dist/core/runner.d.ts +145 -49
- package/dist/core/runner.js +719 -216
- package/dist/core/schedule-start.d.ts +12 -0
- package/dist/core/schedule-start.js +14 -0
- package/dist/core/secret-broker-config.d.ts +12 -74
- package/dist/core/secret-broker-config.js +1 -1
- package/dist/core/secret-guard.d.ts +49 -0
- package/dist/core/secret-guard.js +119 -0
- package/dist/core/secret-guarded-stores.d.ts +12 -0
- package/dist/core/secret-guarded-stores.js +41 -0
- package/dist/core/secret-spans.d.ts +50 -0
- package/dist/core/secret-spans.js +94 -0
- package/dist/core/secrets.d.ts +11 -1
- package/dist/core/secrets.js +27 -1
- package/dist/core/serializable-retry.d.ts +18 -0
- package/dist/core/serializable-retry.js +43 -0
- package/dist/core/stop-run.d.ts +46 -0
- package/dist/core/stop-run.js +61 -0
- package/dist/core/tool-admin.d.ts +5 -1
- package/dist/core/tool-admin.js +7 -2
- package/dist/core/tool-names.d.ts +13 -0
- package/dist/core/tool-names.js +20 -0
- package/dist/core/webhooks.d.ts +4 -0
- package/dist/core/webhooks.js +68 -49
- package/dist/core/workflow-events.d.ts +14 -2
- package/dist/core/workflow-events.js +4 -0
- package/dist/core/workflow-run-events.d.ts +5 -3
- package/dist/core/workflow-run-events.js +45 -9
- package/dist/core/zod-json-schema.d.ts +4 -0
- package/dist/core/zod-json-schema.js +39 -0
- package/dist/core/zod3-window.d.ts +35 -0
- package/dist/core/zod3-window.js +124 -0
- package/dist/generated/prisma/browser.d.ts +65 -3
- package/dist/generated/prisma/client.d.ts +65 -3
- package/dist/generated/prisma/commonInputTypes.d.ts +266 -106
- package/dist/generated/prisma/enums.d.ts +10 -0
- package/dist/generated/prisma/enums.js +8 -0
- package/dist/generated/prisma/internal/class.d.ts +110 -0
- package/dist/generated/prisma/internal/class.js +4 -4
- package/dist/generated/prisma/internal/prismaNamespace.d.ts +957 -9
- package/dist/generated/prisma/internal/prismaNamespace.js +166 -2
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +174 -0
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +166 -2
- package/dist/generated/prisma/models/Agent.d.ts +377 -8
- package/dist/generated/prisma/models/AgentMcpServer.d.ts +1412 -0
- package/dist/generated/prisma/models/AgentMcpServer.js +1 -0
- package/dist/generated/prisma/models/AgentRepository.d.ts +81 -1
- package/dist/generated/prisma/models/AuthUser.d.ts +1 -1
- package/dist/generated/prisma/models/CodingAgentProfile.d.ts +228 -7
- package/dist/generated/prisma/models/CodingProxyRequest.d.ts +207 -3
- package/dist/generated/prisma/models/CodingProxySession.d.ts +232 -2
- package/dist/generated/prisma/models/CodingRun.d.ts +1712 -1
- package/dist/generated/prisma/models/DependencySnapshot.d.ts +1668 -0
- package/dist/generated/prisma/models/DependencySnapshot.js +1 -0
- package/dist/generated/prisma/models/HostProvider.d.ts +2176 -0
- package/dist/generated/prisma/models/HostProvider.js +1 -0
- package/dist/generated/prisma/models/HostProviderCredential.d.ts +1285 -0
- package/dist/generated/prisma/models/HostProviderCredential.js +1 -0
- package/dist/generated/prisma/models/HostProviderOperation.d.ts +1470 -0
- package/dist/generated/prisma/models/HostProviderOperation.js +1 -0
- package/dist/generated/prisma/models/HostProviderTrustedAccount.d.ts +1145 -0
- package/dist/generated/prisma/models/HostProviderTrustedAccount.js +1 -0
- package/dist/generated/prisma/models/IssuePullRequest.d.ts +6 -2
- package/dist/generated/prisma/models/LocalReview.d.ts +40 -1
- package/dist/generated/prisma/models/McpServer.d.ts +1500 -0
- package/dist/generated/prisma/models/McpServer.js +1 -0
- package/dist/generated/prisma/models/NativeGatewayCall.d.ts +77 -1
- package/dist/generated/prisma/models/NativeGatewaySession.d.ts +35 -1
- package/dist/generated/prisma/models/Principal.d.ts +167 -0
- package/dist/generated/prisma/models/RegistryAllowance.d.ts +41 -1
- package/dist/generated/prisma/models/RegistryApprovedVersion.d.ts +75 -1
- package/dist/generated/prisma/models/RegistryAuditRecord.d.ts +1364 -0
- package/dist/generated/prisma/models/RegistryAuditRecord.js +1 -0
- package/dist/generated/prisma/models/ResourceGrant.d.ts +1 -1
- package/dist/generated/prisma/models/Run.d.ts +738 -2
- package/dist/generated/prisma/models/RunBudgetEvent.d.ts +1211 -0
- package/dist/generated/prisma/models/RunBudgetEvent.js +1 -0
- package/dist/generated/prisma/models/RunTranscript.d.ts +1339 -0
- package/dist/generated/prisma/models/RunTranscript.js +1 -0
- package/dist/generated/prisma/models/Secret.d.ts +387 -0
- package/dist/generated/prisma/models/Tool.d.ts +223 -1
- package/dist/generated/prisma/models.d.ts +10 -0
- package/dist/help/search.js +12 -3
- package/dist/help-index.json +2033 -110
- package/dist/import/create.js +48 -4
- package/dist/import/neutral-schema.d.ts +51 -281
- package/dist/import/neutral-schema.js +7 -4
- package/dist/knowledge/check.d.ts +1 -1
- package/dist/knowledge/cli.d.ts +11 -1
- package/dist/knowledge/cli.js +37 -4
- package/dist/knowledge/concept.d.ts +3 -19
- package/dist/knowledge/location.d.ts +31 -0
- package/dist/knowledge/location.js +78 -0
- package/dist/mcp/auth/access.d.ts +10 -2
- package/dist/mcp/auth/access.js +15 -1
- package/dist/mcp/auth/grants-cli.d.ts +6 -4
- package/dist/mcp/auth/grants-cli.js +42 -3
- package/dist/mcp/auth/ownership.d.ts +7 -7
- package/dist/mcp/auth/resource-server.d.ts +3 -1
- package/dist/mcp/auth/resource-server.js +17 -2
- package/dist/mcp/auth/self-hosted/credentials.d.ts +3 -3
- package/dist/mcp/auth/self-hosted/session.d.ts +2 -2
- package/dist/mcp/context.d.ts +3 -0
- package/dist/mcp/host-events/github-ingress.d.ts +2 -0
- package/dist/mcp/host-events/github-ingress.js +2 -1
- package/dist/mcp/index.d.ts +6 -0
- package/dist/mcp/index.js +69 -10
- package/dist/mcp/server.d.ts +13 -0
- package/dist/mcp/server.js +33 -14
- package/dist/mcp/tools/agents.d.ts +4 -0
- package/dist/mcp/tools/agents.js +295 -28
- package/dist/mcp/tools/datastore.js +17 -8
- package/dist/mcp/tools/grants.js +73 -29
- package/dist/mcp/tools/host-providers.d.ts +2 -0
- package/dist/mcp/tools/host-providers.js +215 -0
- package/dist/mcp/tools/mcp-servers.d.ts +26 -0
- package/dist/mcp/tools/mcp-servers.js +481 -0
- package/dist/mcp/tools/memory.js +11 -1
- package/dist/mcp/tools/notification-channels.js +2 -2
- package/dist/mcp/tools/packages.d.ts +2 -0
- package/dist/mcp/tools/packages.js +195 -0
- package/dist/mcp/tools/repositories.js +65 -12
- package/dist/mcp/tools/run-access.d.ts +16 -0
- package/dist/mcp/tools/run-access.js +25 -0
- package/dist/mcp/tools/run-transcript-download.d.ts +30 -0
- package/dist/mcp/tools/run-transcript-download.js +129 -0
- package/dist/mcp/tools/run-transcript.d.ts +19 -0
- package/dist/mcp/tools/run-transcript.js +70 -0
- package/dist/mcp/tools/runs.js +209 -27
- package/dist/mcp/tools/scheduling.js +3 -1
- package/dist/mcp/tools/secret-elicitation-form.js +5 -0
- package/dist/mcp/tools/secret-elicitation-server.d.ts +6 -0
- package/dist/mcp/tools/secret-elicitation-server.js +10 -61
- package/dist/mcp/tools/secret-elicitation.d.ts +2 -0
- package/dist/mcp/tools/secret-elicitation.js +25 -2
- package/dist/mcp/tools/secrets.js +40 -6
- package/dist/mcp/tools/stop-run.d.ts +2 -0
- package/dist/mcp/tools/stop-run.js +82 -0
- package/dist/mcp/tools/subagents.js +2 -2
- package/dist/mcp/tools/tools.d.ts +7 -5
- package/dist/mcp/tools/tools.js +64 -16
- package/dist/mcp/tools/trigger.js +28 -6
- package/dist/mcp/transport/http-limits.d.ts +2 -0
- package/dist/mcp/transport/http-limits.js +6 -2
- package/dist/mcp/transport/stdio-link-host.d.ts +20 -0
- package/dist/mcp/transport/stdio-link-host.js +67 -0
- package/dist/mcp/transport/streamable-http.d.ts +13 -0
- package/dist/mcp/transport/streamable-http.js +41 -1
- package/dist/mcp/webhooks/ingress.js +10 -0
- package/dist/native-worker/docker-launcher.d.ts +38 -2
- package/dist/native-worker/docker-launcher.js +65 -5
- package/dist/native-worker/gateway-server.d.ts +55 -3
- package/dist/native-worker/gateway-server.js +152 -34
- package/dist/native-worker/gateway.d.ts +29 -1
- package/dist/native-worker/gateway.js +74 -4
- package/dist/native-worker/http-server.d.ts +7 -1
- package/dist/native-worker/http-server.js +62 -7
- package/dist/native-worker/http-transport.js +1 -1
- package/dist/native-worker/kubernetes-launcher.d.ts +7 -3
- package/dist/native-worker/kubernetes-launcher.js +43 -3
- package/dist/native-worker/launch.d.ts +18 -1
- package/dist/native-worker/launch.js +6 -1
- package/dist/native-worker/ledger.d.ts +24 -4
- package/dist/native-worker/ledger.js +62 -8
- package/dist/native-worker/loopback.js +3 -8
- package/dist/native-worker/main.d.ts +2 -1
- package/dist/native-worker/main.js +14 -3
- package/dist/native-worker/protocol.d.ts +130 -577
- package/dist/native-worker/protocol.js +51 -2
- package/dist/native-worker/sandbox-executor.d.ts +17 -2
- package/dist/native-worker/sandbox-executor.js +78 -4
- package/dist/native-worker/stderr-redaction.d.ts +77 -0
- package/dist/native-worker/stderr-redaction.js +237 -0
- package/dist/native-worker/stdio.d.ts +1 -1
- package/dist/native-worker/stdio.js +6 -5
- package/dist/native-worker/warm-pool.d.ts +2 -2
- package/dist/native-worker/warm-pool.js +4 -4
- package/dist/native-worker/worker.js +28 -2
- package/dist/observability/metrics.js +6 -1
- package/dist/providers/auth/self-hosted.d.ts +1 -1
- package/dist/providers/coding-proxy/capability-hash.d.ts +2 -0
- package/dist/providers/coding-proxy/capability-hash.js +5 -0
- package/dist/providers/coding-proxy/dependency-cache/eviction.d.ts +29 -0
- package/dist/providers/coding-proxy/dependency-cache/eviction.js +87 -0
- package/dist/providers/coding-proxy/dependency-cache/key.d.ts +33 -0
- package/dist/providers/coding-proxy/dependency-cache/key.js +86 -0
- package/dist/providers/coding-proxy/dependency-cache/model-request-seal.d.ts +18 -0
- package/dist/providers/coding-proxy/dependency-cache/model-request-seal.js +40 -0
- package/dist/providers/coding-proxy/dependency-cache/prisma-store.d.ts +25 -0
- package/dist/providers/coding-proxy/dependency-cache/prisma-store.js +131 -0
- package/dist/providers/coding-proxy/dependency-cache/service.d.ts +70 -0
- package/dist/providers/coding-proxy/dependency-cache/service.js +409 -0
- package/dist/providers/coding-proxy/dependency-cache/store.d.ts +85 -0
- package/dist/providers/coding-proxy/dependency-cache/store.js +95 -0
- package/dist/providers/coding-proxy/hold.d.ts +32 -0
- package/dist/providers/coding-proxy/hold.js +86 -0
- package/dist/providers/coding-proxy/interrupted.d.ts +70 -0
- package/dist/providers/coding-proxy/interrupted.js +104 -0
- package/dist/providers/coding-proxy/mcp-route.d.ts +34 -0
- package/dist/providers/coding-proxy/mcp-route.js +166 -0
- package/dist/providers/coding-proxy/memory-ledger.d.ts +17 -2
- package/dist/providers/coding-proxy/memory-ledger.js +99 -8
- package/dist/providers/coding-proxy/metering.d.ts +16 -0
- package/dist/providers/coding-proxy/metering.js +27 -4
- package/dist/providers/coding-proxy/prisma-ledger.d.ts +16 -2
- package/dist/providers/coding-proxy/prisma-ledger.js +209 -69
- package/dist/providers/coding-proxy/proxy.d.ts +21 -2
- package/dist/providers/coding-proxy/proxy.js +300 -48
- package/dist/providers/coding-proxy/registry/audit.d.ts +53 -10
- package/dist/providers/coding-proxy/registry/audit.js +94 -17
- package/dist/providers/coding-proxy/registry/lockfile-parse-worker.d.ts +36 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse-worker.js +67 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse.d.ts +16 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse.js +110 -0
- package/dist/providers/coding-proxy/registry/plan.d.ts +9 -0
- package/dist/providers/coding-proxy/registry/plan.js +201 -48
- package/dist/providers/coding-proxy/registry/prisma-store.d.ts +11 -5
- package/dist/providers/coding-proxy/registry/prisma-store.js +120 -17
- package/dist/providers/coding-proxy/registry/service.d.ts +97 -16
- package/dist/providers/coding-proxy/registry/service.js +579 -112
- package/dist/providers/coding-proxy/registry/store.d.ts +84 -9
- package/dist/providers/coding-proxy/registry/store.js +54 -1
- package/dist/providers/coding-proxy/runtime.d.ts +10 -0
- package/dist/providers/coding-proxy/runtime.js +109 -16
- package/dist/providers/coding-proxy/server.d.ts +9 -1
- package/dist/providers/coding-proxy/server.js +55 -1
- package/dist/providers/coding-proxy/types.d.ts +78 -1
- package/dist/providers/datastore/types.d.ts +5 -0
- package/dist/providers/engine/types.d.ts +17 -2
- package/dist/providers/engine/types.js +17 -0
- package/dist/providers/executor/composition.d.ts +10 -3
- package/dist/providers/executor/composition.js +52 -7
- package/dist/providers/executor/container.d.ts +394 -9
- package/dist/providers/executor/container.js +1210 -96
- package/dist/providers/executor/dbos-status.d.ts +31 -0
- package/dist/providers/executor/dbos-status.js +64 -0
- package/dist/providers/executor/dbos.d.ts +50 -1
- package/dist/providers/executor/dbos.js +207 -20
- package/dist/providers/executor/deferred.d.ts +12 -24
- package/dist/providers/executor/deferred.js +10 -29
- package/dist/providers/executor/in-process.d.ts +9 -1
- package/dist/providers/executor/in-process.js +14 -4
- package/dist/providers/executor/linked-issue-reader.d.ts +16 -0
- package/dist/providers/executor/linked-issue-reader.js +30 -0
- package/dist/providers/executor/routing.d.ts +2 -0
- package/dist/providers/executor/routing.js +4 -0
- package/dist/providers/executor/types.d.ts +13 -0
- package/dist/providers/host-tools/invoke.d.ts +37 -0
- package/dist/providers/host-tools/invoke.js +117 -0
- package/dist/providers/host-tools/operations.d.ts +65 -0
- package/dist/providers/host-tools/operations.js +149 -0
- package/dist/providers/host-tools/registry.d.ts +79 -0
- package/dist/providers/host-tools/registry.js +362 -0
- package/dist/providers/host-tools/request-guard.d.ts +17 -0
- package/dist/providers/host-tools/request-guard.js +99 -0
- package/dist/providers/host-tools/self-test.d.ts +64 -0
- package/dist/providers/host-tools/self-test.js +142 -0
- package/dist/providers/index.d.ts +2 -1
- package/dist/providers/issue-tracker/types.d.ts +17 -0
- package/dist/providers/issue-tracker/types.js +39 -1
- package/dist/providers/jobs/claude-tool-setup.d.ts +4 -0
- package/dist/providers/jobs/claude-tool-setup.js +5 -2
- package/dist/providers/jobs/docker-isolation.d.ts +10 -2
- package/dist/providers/jobs/docker-isolation.js +47 -8
- package/dist/providers/jobs/docker.d.ts +9 -0
- package/dist/providers/jobs/docker.js +60 -11
- package/dist/providers/jobs/fake-kubernetes-api.d.ts +2 -0
- package/dist/providers/jobs/fake-kubernetes-api.js +3 -0
- package/dist/providers/jobs/kubernetes-api.d.ts +8 -0
- package/dist/providers/jobs/kubernetes-api.js +10 -0
- package/dist/providers/jobs/kubernetes-client.js +10 -1
- package/dist/providers/jobs/kubernetes-isolation.d.ts +5 -1
- package/dist/providers/jobs/kubernetes-isolation.js +32 -3
- package/dist/providers/jobs/kubernetes.d.ts +11 -1
- package/dist/providers/jobs/kubernetes.js +111 -17
- package/dist/providers/jobs/types.d.ts +39 -0
- package/dist/providers/jobs/types.js +13 -1
- package/dist/providers/llm/anthropic.js +5 -1
- package/dist/providers/llm/bedrock.d.ts +0 -12
- package/dist/providers/llm/bedrock.js +4 -0
- package/dist/providers/llm/claude-messages.d.ts +3 -1
- package/dist/providers/llm/claude-messages.js +4 -1
- package/dist/providers/llm/claude-provider.d.ts +2 -2
- package/dist/providers/llm/claude-provider.js +2 -2
- package/dist/providers/llm/openai.d.ts +2 -2
- package/dist/providers/llm/openai.js +6 -2
- package/dist/providers/llm/routing.d.ts +2 -2
- package/dist/providers/llm/routing.js +2 -2
- package/dist/providers/llm/types.d.ts +12 -2
- package/dist/providers/review-host/github-events.d.ts +9 -1
- package/dist/providers/review-host/github-events.js +34 -12
- package/dist/providers/review-host/github.d.ts +29 -2
- package/dist/providers/review-host/github.js +224 -29
- package/dist/providers/review-host/local.d.ts +8 -4
- package/dist/providers/review-host/local.js +49 -31
- package/dist/providers/review-host/patch-pages.d.ts +41 -0
- package/dist/providers/review-host/patch-pages.js +176 -0
- package/dist/providers/review-host/review-format.d.ts +19 -1
- package/dist/providers/review-host/review-format.js +38 -7
- package/dist/providers/review-host/types.d.ts +140 -6
- package/dist/providers/review-host/types.js +9 -1
- package/dist/providers/storage/gcs.d.ts +63 -0
- package/dist/providers/storage/gcs.js +69 -0
- package/dist/providers/storage/index.d.ts +15 -0
- package/dist/providers/storage/index.js +14 -0
- package/dist/providers/storage/local.d.ts +24 -0
- package/dist/providers/storage/local.js +92 -0
- package/dist/providers/storage/meter.d.ts +14 -0
- package/dist/providers/storage/meter.js +34 -0
- package/dist/providers/storage/s3.d.ts +41 -0
- package/dist/providers/storage/s3.js +107 -0
- package/dist/providers/storage/types.d.ts +37 -3
- package/dist/providers/storage/types.js +21 -4
- package/dist/providers/vcs/git.d.ts +39 -4
- package/dist/providers/vcs/git.js +339 -26
- package/dist/providers/vcs/github-remote.d.ts +26 -3
- package/dist/providers/vcs/github-remote.js +124 -14
- package/dist/providers/vcs/github.d.ts +183 -44
- package/dist/providers/vcs/github.js +455 -56
- package/dist/providers/vcs/index.d.ts +1 -1
- package/dist/providers/vcs/index.js +9 -2
- package/dist/providers/vcs/pr-description.d.ts +127 -0
- package/dist/providers/vcs/pr-description.js +270 -0
- package/dist/providers/vcs/remote.d.ts +37 -1
- package/dist/providers/vcs/remote.js +7 -1
- package/dist/providers/vcs/routing.d.ts +16 -8
- package/dist/providers/vcs/routing.js +27 -6
- package/dist/providers/vcs/types.d.ts +150 -5
- package/dist/quickstart/coding-seed.d.ts +14 -3
- package/dist/quickstart/coding-seed.js +213 -4
- package/dist/quickstart/index.d.ts +5 -0
- package/dist/quickstart/index.js +21 -0
- package/dist/quickstart/reviewer-prompt.d.ts +1 -1
- package/dist/quickstart/reviewer-prompt.js +6 -6
- package/dist/quickstart-images.json +1 -1
- package/dist/sandbox/eval-core.d.ts +12 -2
- package/dist/sandbox/eval-core.js +20 -4
- package/dist/sandbox/generated/zod.bundle.js +62 -1
- package/dist/sandbox/generated/zod3.bundle.js +5 -0
- package/dist/sandbox/host-functions.d.ts +5 -0
- package/dist/sandbox/host-functions.js +13 -13
- package/dist/sandbox/limits.d.ts +4 -1
- package/dist/sandbox/limits.js +4 -1
- package/dist/sandbox/run-in-sandbox.d.ts +6 -0
- package/dist/sandbox/run-in-sandbox.js +14 -2
- package/dist/sandbox/safe-fetch.d.ts +2 -0
- package/dist/sandbox/safe-fetch.js +1 -1
- package/dist/sandbox/secret-broker.d.ts +1 -0
- package/dist/sandbox/secret-broker.js +4 -5
- package/dist/sandbox/tool-capabilities.d.ts +10 -30
- package/dist/sandbox/tool-timeout.d.ts +32 -0
- package/dist/sandbox/tool-timeout.js +52 -0
- package/dist/sandbox/user-tool.d.ts +8 -1
- package/dist/sandbox/user-tool.js +9 -3
- package/dist/sandbox/zod-params.d.ts +37 -5
- package/dist/sandbox/zod-params.js +181 -26
- package/dist/serve.js +8 -1
- package/dist/viewer/api-schema.d.ts +349 -2627
- package/dist/viewer/api-schema.js +7 -0
- package/dist/viewer/build-schemas.js +6 -2
- package/dist/viewer/graph.js +2 -1
- package/dist/viewer/openapi.js +2 -4
- package/dist/wardby-bin.js +15 -0
- package/docs/README.md +11 -1
- package/docs/agent-recipes.md +95 -24
- package/docs/architecture-runtime.md +1 -1
- package/docs/claude-code-plugin.md +164 -0
- package/docs/code-review-agents.md +557 -41
- package/docs/coding-agent-setup.md +566 -8
- package/docs/coding-packages.md +1033 -90
- package/docs/coding-services.md +27 -12
- package/docs/coding-worker-byo-images.md +24 -2
- package/docs/coding-worker-isolation.md +183 -37
- package/docs/debugging-agent-runs.md +242 -0
- package/docs/getting-started-gke.md +129 -141
- package/docs/getting-started-identity-provider.md +53 -38
- package/docs/getting-started.md +17 -0
- package/docs/host-providers.md +294 -0
- package/docs/jira-agents.md +17 -8
- package/docs/knowledge/blob-not-found-semantics.md +41 -0
- package/docs/knowledge/bounded-file-descriptor.md +52 -0
- package/docs/knowledge/delegation-admission-slots.md +52 -0
- package/docs/knowledge/http-dispatcher-bootstrap.md +61 -0
- package/docs/knowledge/import-rename-target.md +52 -0
- package/docs/knowledge/index.md +57 -0
- package/docs/knowledge/log.md +9 -0
- package/docs/knowledge/mcp-cancelled-task-precedence.md +41 -0
- package/docs/knowledge/mcp-http-prompt-discovery.md +41 -0
- package/docs/knowledge/mcp-schema-module-boundary.md +41 -0
- package/docs/knowledge/nullable-tool-uniqueness.md +52 -0
- package/docs/knowledge/overview-cli.md +74 -0
- package/docs/knowledge/overview-coding-proxy.md +72 -0
- package/docs/knowledge/overview-coding.md +72 -0
- package/docs/knowledge/overview-config.md +60 -0
- package/docs/knowledge/overview-core.md +72 -0
- package/docs/knowledge/overview-deploy.md +83 -0
- package/docs/knowledge/overview-mcp.md +61 -0
- package/docs/knowledge/overview-prisma.md +72 -0
- package/docs/knowledge/overview-providers.md +89 -0
- package/docs/knowledge/overview-sandbox.md +83 -0
- package/docs/knowledge/overview-surfaces.md +83 -0
- package/docs/knowledge/private-datastore-shared-boundary.md +54 -0
- package/docs/knowledge/proxy-settlement-projections.md +41 -0
- package/docs/knowledge/run-pricing-first-writer.md +43 -0
- package/docs/knowledge/schedule-claim-transaction.md +41 -0
- package/docs/knowledge/secret-entry-replica-contract.md +52 -0
- package/docs/knowledge/terminal-run-first-writer.md +41 -0
- package/docs/knowledge/transactional-agent-authorization.md +52 -0
- package/docs/knowledge/viewer-notify-write-isolation.md +30 -0
- package/docs/knowledge/warm-input-publication.md +30 -0
- package/docs/knowledge/workspace-staging-failure.md +54 -0
- package/docs/knowledge.md +54 -14
- package/docs/mcp-servers.md +254 -0
- package/docs/native-sandbox.md +143 -31
- package/docs/observability.md +4 -0
- package/docs/security-deployment.md +139 -29
- package/docs/slack-notifications.md +35 -19
- package/docs/tool-secrets.md +45 -10
- package/docs/viewer-api.md +6 -0
- package/docs/viewer-api.openapi.yml +1 -1
- package/help/admin-viewer.md +28 -2
- package/help/agent-recipes.md +33 -2
- package/help/architecture-agent.md +11 -6
- package/help/brokered-secrets.md +3 -0
- package/help/build-claude-code-image.md +1 -1
- package/help/build-worker-image.md +3 -1
- package/help/builder-agent.md +19 -6
- package/help/claude-code-run-pane.md +40 -0
- package/help/code-review-agents.md +177 -6
- package/help/coding-packages.md +156 -6
- package/help/cost-attribution.md +9 -5
- package/help/creating-agents.md +14 -1
- package/help/dependency-cache.md +143 -0
- package/help/deploy-gke.md +15 -8
- package/help/errors/budget-exhausted.md +187 -0
- package/help/errors/budget-group-exhausted.md +5 -1
- package/help/errors/coding-mcp-pins-unavailable.md +35 -0
- package/help/errors/coding-stream-quota-exceeded.md +33 -0
- package/help/errors/coding-workspace-disk-exceeds-limit.md +39 -0
- package/help/errors/continuation-closed.md +9 -12
- package/help/errors/database-auth-invalid.md +1 -1
- package/help/errors/delegation-conflict.md +24 -0
- package/help/errors/file-list-truncated.md +45 -0
- package/help/errors/full-read-required.md +49 -0
- package/help/errors/github-account-not-allowed.md +4 -0
- package/help/errors/graph-incomplete.md +43 -0
- package/help/errors/graph-limit.md +43 -0
- package/help/errors/host-provider-error.md +40 -0
- package/help/errors/host-tool-failed.md +36 -0
- package/help/errors/mcp-call-limit.md +22 -0
- package/help/errors/mcp-call-timeout.md +22 -0
- package/help/errors/mcp-server-auth-failed.md +22 -0
- package/help/errors/mcp-server-credentials-unavailable.md +45 -0
- package/help/errors/mcp-server-error.md +28 -0
- package/help/errors/mcp-server-unreachable.md +22 -0
- package/help/errors/mcp-servers-off.md +21 -0
- package/help/errors/mcp-tool-not-allowed.md +26 -0
- package/help/errors/mcp-tool-removed.md +22 -0
- package/help/errors/mcp-unavailable.md +25 -0
- package/help/errors/merge-conflict.md +49 -0
- package/help/errors/native-sandbox-capacity.md +1 -1
- package/help/errors/native-sandbox-deadline-exceeded.md +1 -1
- package/help/errors/native-sandbox-docker-failed.md +1 -1
- package/help/errors/native-sandbox-gateway-error.md +20 -0
- package/help/errors/native-sandbox-gateway-unavailable.md +1 -1
- package/help/errors/native-sandbox-image-not-pinned.md +1 -1
- package/help/errors/native-sandbox-isolation-mismatch.md +1 -1
- package/help/errors/native-sandbox-launch-abandoned.md +21 -0
- package/help/errors/native-sandbox-network-unenforced.md +1 -1
- package/help/errors/native-sandbox-requires-catalog.md +1 -1
- package/help/errors/native-sandbox-unavailable.md +1 -1
- package/help/errors/native-sandbox-warm-delivery-failed.md +1 -1
- package/help/errors/native-sandbox-worker-exited.md +4 -3
- package/help/errors/native-sandbox-worker-lost.md +1 -1
- package/help/errors/native-sandbox-worker-unready.md +1 -1
- package/help/errors/package-not-allowed-pending.md +52 -0
- package/help/errors/package-not-allowed.md +51 -0
- package/help/errors/package-refusals.md +43 -0
- package/help/errors/patch-cursor-malformed.md +31 -0
- package/help/errors/repository-not-listed.md +36 -0
- package/help/errors/repository-required.md +36 -0
- package/help/errors/run-lost.md +39 -0
- package/help/errors/run-transcript-download.md +44 -0
- package/help/errors/secret-in-value.md +69 -0
- package/help/errors/target-merge.md +40 -0
- package/help/errors/tool-timeout.md +38 -0
- package/help/fix-merge-conflicts.md +73 -0
- package/help/github-app-setup.md +132 -0
- package/help/github.md +22 -0
- package/help/host-providers.md +40 -0
- package/help/identity-and-access.md +6 -1
- package/help/jira.md +23 -6
- package/help/knowledge.md +16 -7
- package/help/local-repositories.md +1 -1
- package/help/low-power-mode.md +7 -1
- package/help/mcp-servers.md +73 -0
- package/help/mcp.md +7 -2
- package/help/merge-order-check.md +5 -0
- package/help/native-capabilities.md +55 -1
- package/help/native-sandbox.md +16 -2
- package/help/operating-agents.md +21 -0
- package/help/package-audit-mode.md +91 -0
- package/help/related-pull-requests.md +17 -10
- package/help/repo-instructions-and-skills.md +3 -1
- package/help/resume-runs-locally.md +134 -0
- package/help/review-fix-rounds.md +33 -1
- package/help/sharing-agents.md +59 -0
- package/help/slack-notifications.md +19 -5
- package/help/status-comments.md +31 -0
- package/help/stop-run.md +58 -0
- package/help/troubleshooting/budgets.md +28 -0
- package/help/troubleshooting/coding-workers.md +86 -7
- package/help/troubleshooting/debugging-agent-runs.md +29 -0
- package/package.json +18 -10
- package/prisma/migrations/20261016000000_registry_approved_accepted_advisories/migration.sql +3 -0
- package/prisma/migrations/20261016000001_mark_ready_when_passing/migration.sql +3 -0
- package/prisma/migrations/20261017000000_debug_trace_max_mb/migration.sql +4 -0
- package/prisma/migrations/20261018000000_dependency_cache/migration.sql +53 -0
- package/prisma/migrations/20261019000000_claude_max_output_tokens/migration.sql +5 -0
- package/prisma/migrations/20261021000000_pr_description_hash/migration.sql +4 -0
- package/prisma/migrations/20261022000000_dependency_snapshot_validation_metadata/migration.sql +4 -0
- package/prisma/migrations/20261023000000_package_audit_mode/migration.sql +27 -0
- package/prisma/migrations/20261024000000_budget_events/migration.sql +26 -0
- package/prisma/migrations/20261025000000_cache_aware_holds/migration.sql +9 -0
- package/prisma/migrations/20261026000000_budget_overrun/migration.sql +4 -0
- package/prisma/migrations/20261027000000_coding_run_request/migration.sql +1 -0
- package/prisma/migrations/20261028000000_native_gateway_review_reads/migration.sql +6 -0
- package/prisma/migrations/20261029000000_lead_survives_deploy/migration.sql +6 -0
- package/prisma/migrations/20261030000000_local_review_covered_sha/migration.sql +2 -0
- package/prisma/migrations/20261031000000_coding_run_budget_limit/migration.sql +9 -0
- package/prisma/migrations/20261101000000_run_transcripts/migration.sql +22 -0
- package/prisma/migrations/20261102000000_host_providers/migration.sql +56 -0
- package/prisma/migrations/20261104000000_coding_agent_repository_list/migration.sql +5 -0
- package/prisma/migrations/20261106000000_tool_timeout/migration.sql +4 -0
- package/prisma/migrations/20261107000000_mcp_servers/migration.sql +33 -0
- package/prisma/migrations/20261108000000_coding_mcp/migration.sql +5 -0
- package/prisma/migrations/20261109000000_task_run_index/migration.sql +3 -0
- package/prisma/schema.prisma +468 -109
- package/scripts/git-askpass.sh +1 -1
- package/dist/sandbox/generated/zod-to-json-schema.bundle.js +0 -5
package/docs/coding-services.md
CHANGED
|
@@ -105,18 +105,18 @@ caller's principal id).
|
|
|
105
105
|
|
|
106
106
|
An entry has:
|
|
107
107
|
|
|
108
|
-
| Field | Meaning
|
|
109
|
-
| ----------------- |
|
|
110
|
-
| `name`, `version` | What a repository declares. Unique together.
|
|
111
|
-
| `kind` | `sidecar`: a fresh instance next to each run.
|
|
112
|
-
| `image` | The image, pinned by digest.
|
|
113
|
-
| `port` | The port it listens on.
|
|
114
|
-
| `serviceEnv` | Environment for the service container. Per-run throwaway values only; never put a secret here.
|
|
115
|
-
| `testEnv` | Variables the agent's shells receive. Upper-case names
|
|
116
|
-
| `readiness` | A command in the image that succeeds once the service accepts connections on `127.0.0.1`, with its period, timeout and failure threshold.
|
|
117
|
-
| `resources` | CPU (millicores), memory (MiB) and disk (MiB). Requests equal limits.
|
|
118
|
-
| `dataPath` | The directory the service writes its data to; an empty volume in every run (memory-backed on Docker).
|
|
119
|
-
| `writablePaths` | Other directories the image writes to (a socket directory, `/tmp`). The service's root filesystem is read-only.
|
|
108
|
+
| Field | Meaning |
|
|
109
|
+
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
110
|
+
| `name`, `version` | What a repository declares. Unique together. |
|
|
111
|
+
| `kind` | `sidecar`: a fresh instance next to each run. |
|
|
112
|
+
| `image` | The image, pinned by digest. |
|
|
113
|
+
| `port` | The port it listens on. |
|
|
114
|
+
| `serviceEnv` | Environment for the service container. Per-run throwaway values only; never put a secret here. |
|
|
115
|
+
| `testEnv` | Variables the agent's shells receive. Upper-case names. Names wardby uses itself are refused: `HOME`, `LANG`, `LC_ALL`, `PATH`, `SHELL`, `TMPDIR`, `USER`, `LD_PRELOAD`, `LD_LIBRARY_PATH`, `NODE_OPTIONS`, `NODE_PATH`, `PYTHONPATH`, `PYTHONHOME`, the proxy settings (`HTTP_PROXY`, `HTTPS_PROXY`, `NO_PROXY`, `ALL_PROXY`), `SSL_CERT_FILE`, `SSL_CERT_DIR`, and anything starting `WARDBY_`, `CODEX_`, `OPENAI_`, `ANTHROPIC_`, `PIP_`, `NPM_CONFIG_`, `UV_`, `GIT_`, `YARN_`, `PNPM_` or `COREPACK_`. |
|
|
116
|
+
| `readiness` | A command in the image that succeeds once the service accepts connections on `127.0.0.1`, with its period, timeout and failure threshold. |
|
|
117
|
+
| `resources` | CPU (millicores), memory (MiB) and disk (MiB). Requests equal limits. |
|
|
118
|
+
| `dataPath` | The directory the service writes its data to; an empty volume in every run (memory-backed on Docker). |
|
|
119
|
+
| `writablePaths` | Other directories the image writes to (a socket directory, `/tmp`). The service's root filesystem is read-only. |
|
|
120
120
|
|
|
121
121
|
### Built-in services
|
|
122
122
|
|
|
@@ -233,6 +233,8 @@ Protected-path entries also accept a leading `!` for your own exceptions:
|
|
|
233
233
|
| A service never became ready | Launch | failed, category `service_unready` | "The `<name>` service didn't become ready, so the run couldn't start." |
|
|
234
234
|
| The run's changes touched a protected path | Collect | failed, category `protected_path` | "its changes include `<path>`, which this agent may not edit, so none of its changes were kept. Ask again without changing that file, or have the repository owner make that change." |
|
|
235
235
|
|
|
236
|
+
For a coding sub-agent of a sandboxed run, these refusals appear when the run starts instead of at dispatch, and the parent's delegation call receives the result.
|
|
237
|
+
|
|
236
238
|
A refused run's `error` (from `get_run`) is the code followed by that sentence.
|
|
237
239
|
The sentence reaches the requester on the run's status comment and, for a
|
|
238
240
|
coding run started by another agent, in that agent's tool result. A
|
|
@@ -303,3 +305,16 @@ who maintain the catalog; see
|
|
|
303
305
|
Existing agents are allowed no services until their owners add
|
|
304
306
|
`codingProfile.services`, and every existing agent gets the `.wardby/`
|
|
305
307
|
protected-path baseline without any change to its settings.
|
|
308
|
+
|
|
309
|
+
### From 0.7.0: `YARN_*`, `PNPM_*` and `COREPACK_*` are reserved
|
|
310
|
+
|
|
311
|
+
From Wardby 0.7.0 a service's `testEnv` can't set a variable starting
|
|
312
|
+
`YARN_`, `PNPM_` or `COREPACK_`: the worker uses them to point yarn, pnpm and
|
|
313
|
+
corepack at the package registry (see
|
|
314
|
+
[pnpm and yarn](coding-packages.md#pnpm-and-yarn)). A custom catalog entry
|
|
315
|
+
that sets one fails to load after the upgrade, and so does a run that
|
|
316
|
+
declares it. Before you upgrade, list the catalog (`list_services`) and
|
|
317
|
+
remove those variables from any entry's `testEnv` with `update_service`.
|
|
318
|
+
After the upgrade such an entry can no longer be read or updated: delete it
|
|
319
|
+
with `delete_service` and create it again without those variables. The
|
|
320
|
+
built-in services set none.
|
|
@@ -95,8 +95,10 @@ the exact command.
|
|
|
95
95
|
On a local quickstart install with the Docker launcher, `workerImageRef` can be
|
|
96
96
|
the local image ID (`docker image inspect --format '{{.Id}}' <your-tag>`).
|
|
97
97
|
Otherwise, build it, push it to your own registry, and note the resulting digest —
|
|
98
|
-
`docker inspect --format '{{
|
|
99
|
-
|
|
98
|
+
`docker inspect --format '{{range .RepoDigests}}{{println .}}{{end}}' <your-tag>`
|
|
99
|
+
after a push lists one digest per registry the image is in: take the one in
|
|
100
|
+
the registry your cluster pulls from, not simply the first. Or read it straight
|
|
101
|
+
from `docker buildx build --push`'s output.
|
|
100
102
|
|
|
101
103
|
## Pointing an agent at it
|
|
102
104
|
|
|
@@ -285,6 +287,11 @@ These details explain the rules above.
|
|
|
285
287
|
`/etc/profile` and the files in `/etc/profile.d/`, so that is where your own
|
|
286
288
|
settings go. `/etc/profile` resets `PATH` to Debian's default, so add any
|
|
287
289
|
other folder to `PATH` in your `/etc/profile.d/` file.
|
|
290
|
+
`/opt/wardby/bin` holds wardby's package-manager shim, linked as `npm`,
|
|
291
|
+
`pnpm` and `yarn`: it verifies the project's lockfile with the registry
|
|
292
|
+
before an install, then runs the image's own tool (or the release the
|
|
293
|
+
project pins, through corepack). Keep it first on `PATH`; see
|
|
294
|
+
[pnpm and yarn](coding-packages.md#pnpm-and-yarn).
|
|
288
295
|
- **Network.** The tool runner reaches only wardby's package registry (npm and
|
|
289
296
|
PyPI).
|
|
290
297
|
- **Images on the Docker launcher are never pulled.** When wardby runs coding
|
|
@@ -322,6 +329,21 @@ current driver always disables. Rebuild any `workerImageRef` image on a
|
|
|
322
329
|
current `driver-vN` digest (see "The driver image" above) before relying on
|
|
323
330
|
either behavior.
|
|
324
331
|
|
|
332
|
+
## The dependency cache needs a current driver
|
|
333
|
+
|
|
334
|
+
The [dependency cache](coding-packages.md#dependency-cache) adds keys to the run
|
|
335
|
+
input (`dependencyCache` and the workspace size). A worker built on an older
|
|
336
|
+
driver base validates its input with a strict schema, so with the cache on
|
|
337
|
+
for its agent every run fails at input (`worker_input_failed`) before the
|
|
338
|
+
agent starts. For a Claude Code agent, a tool runner built on an older tool
|
|
339
|
+
runner image doesn't fail the run, but it has no cache: its projects report
|
|
340
|
+
`tool_unavailable`. Rebuild a `workerImageRef` image `FROM` the driver image
|
|
341
|
+
(Codex) or tool runner image (Claude Code) of the release that includes the
|
|
342
|
+
cache before you set `dependencyCache: true` on an agent that uses it.
|
|
343
|
+
`create_agent` and `update_agent` return a warning when an agent has both.
|
|
344
|
+
Images built `FROM` that release carry the cache module at
|
|
345
|
+
`/opt/wardby/coding-worker/dependency-cache.mjs`; keep that path.
|
|
346
|
+
|
|
325
347
|
## What this doesn't cover
|
|
326
348
|
|
|
327
349
|
wardby does not re-validate the contents of your built image beyond the
|
|
@@ -74,12 +74,22 @@ again.
|
|
|
74
74
|
If the stream still fails, the run's diagnostic (in the control-plane log,
|
|
75
75
|
under the run's `coding_diag_…` id) names the cause as a fixed code, never the
|
|
76
76
|
error text: `job_coding_stream_proxy_denied` (401/403 from the proxy),
|
|
77
|
-
`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`
|
|
78
82
|
(5xx), `job_coding_stream_timeout`, `job_coding_stream_proxy_unreachable`
|
|
79
83
|
(the worker could not connect), `job_coding_stream_agent_exited` (the agent
|
|
80
84
|
process exited without an HTTP error), or `job_coding_stream_failed` when none
|
|
81
85
|
of these match. A refusal because the run's budget is used up ends the run as
|
|
82
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`.
|
|
83
93
|
|
|
84
94
|
The proxy side of the same request is in the coding proxy's log as
|
|
85
95
|
`audit.*` events (`audit.request.reserved`, `audit.response.completed`,
|
|
@@ -133,7 +143,8 @@ deeply to process is refused with `request_nesting_too_deep`.
|
|
|
133
143
|
|
|
134
144
|
- **Anthropic Messages** (`parseAnthropicRequest`): a fixed set of keys,
|
|
135
145
|
text/`tool_use`/`tool_result`/thinking blocks, exactly the two Wardby tool
|
|
136
|
-
names
|
|
146
|
+
names plus the run's own MCP tool names (see
|
|
147
|
+
[Remote MCP tools](#remote-mcp-tools)), the reviewed beta values, the thinking mode the run's model catalog
|
|
137
148
|
entry names, and only effort levels that entry lists in `efforts` (top-level,
|
|
138
149
|
or on an effort-only system message for models that change effort per turn).
|
|
139
150
|
- **OpenAI Responses** (`parseOpenAiRequest`), built from what the pinned
|
|
@@ -147,8 +158,15 @@ deeply to process is refused with `request_nesting_too_deep`.
|
|
|
147
158
|
`previous_response_id`, `conversation` and `metadata`, is refused with
|
|
148
159
|
`openai_request_key_not_allowed:<key>`.
|
|
149
160
|
- Tools: `function` and `custom` definitions, and `namespace` groups of
|
|
150
|
-
them, either in `tools` or in Codex's `additional_tools` input item.
|
|
151
|
-
|
|
161
|
+
them, either in `tools` or in Codex's `additional_tools` input item. A
|
|
162
|
+
`tool_search` tool is accepted only in the top-level `tools`, only with
|
|
163
|
+
`execution: "client"` (Codex runs the search over its own tools) and only
|
|
164
|
+
with `type`, `execution`, `description` and `parameters`; a
|
|
165
|
+
server-executed search is refused with
|
|
166
|
+
`openai_tool_not_allowed:tool_search`. Each tool list holds at most 512
|
|
167
|
+
tools, and a request at most 512 distinct tools in all; a definition
|
|
168
|
+
repeated in replayed tool search results counts once. Every other tool
|
|
169
|
+
type, including all hosted tools (`web_search`, `mcp`,
|
|
152
170
|
`code_interpreter`, `image_generation`, `file_search`, `local_shell`, and
|
|
153
171
|
so on), is refused with `openai_tool_not_allowed:<type>`. Tool names are
|
|
154
172
|
checked for shape (`[A-Za-z0-9_-]{1,128}`) but not against a fixed list:
|
|
@@ -159,10 +177,17 @@ deeply to process is refused with `request_nesting_too_deep`.
|
|
|
159
177
|
- Input items: `message` (`input_text`/`input_image` for user, developer
|
|
160
178
|
and system; `output_text` for assistant), `reasoning`, `function_call`,
|
|
161
179
|
`function_call_output`, `custom_tool_call`, `custom_tool_call_output`,
|
|
162
|
-
`agent_message
|
|
163
|
-
sends.
|
|
164
|
-
|
|
165
|
-
|
|
180
|
+
`agent_message`, `additional_tools`, `tool_search_call` and
|
|
181
|
+
`tool_search_output`, each with only the keys Codex sends. The two tool
|
|
182
|
+
search items must say `execution: "client"`. A `tool_search_call` may
|
|
183
|
+
carry only a string `query` and a positive integer `limit` as its
|
|
184
|
+
arguments. Every tool a `tool_search_output` brings into the conversation
|
|
185
|
+
passes the same checks as a top-level tool, except another `tool_search`;
|
|
186
|
+
a `function` there may also carry `defer_loading: true`, which Codex sets
|
|
187
|
+
on the tools it loads through tool search, and nowhere else. Anything
|
|
188
|
+
else (`input_file`, `input_audio`, `item_reference`, replayed hosted-tool
|
|
189
|
+
calls, `compaction`, `local_shell_call`) is refused with
|
|
190
|
+
`openai_input_not_allowed:<type>`. An `input_image` must be an inline
|
|
166
191
|
`data:image/{png,jpeg,gif,webp};base64,` URL, as Codex's `view_image`
|
|
167
192
|
produces; a remote URL or a `file_id` is refused with
|
|
168
193
|
`openai_remote_input_not_allowed`.
|
|
@@ -208,6 +233,62 @@ rather than silently widening what reaches OpenAI. Upgrading the pinned
|
|
|
208
233
|
then widen `parseOpenAiRequest` only for what that review accepts, and
|
|
209
234
|
document it in the list above.
|
|
210
235
|
|
|
236
|
+
### Remote MCP tools
|
|
237
|
+
|
|
238
|
+
A coding agent can have [remote MCP server](mcp-servers.md#coding-agents) tools
|
|
239
|
+
attached. The worker still reaches only the proxy:
|
|
240
|
+
|
|
241
|
+
1. When a run has MCP tools, the control plane mints a per-run MCP token
|
|
242
|
+
(`rmt_` plus 32 random bytes, base64url). Only its SHA-256 hash is stored
|
|
243
|
+
with the run's proxy session; the token reaches the worker only as
|
|
244
|
+
`WARDBY_MCP_TOKEN`, and is never logged. It is valid only on the proxy's
|
|
245
|
+
`/mcp` route, and only while the session is active and before its deadline.
|
|
246
|
+
It is not the run capability, and it is not accepted by the model routes.
|
|
247
|
+
2. The worker (Claude Code or Codex, over HTTP) calls `POST /mcp` on the proxy
|
|
248
|
+
with `Authorization: Bearer <token>`. The proxy checks the token and
|
|
249
|
+
forwards the request to the native gateway's `/coding-mcp` route
|
|
250
|
+
(`WARDBY_MCP_GATEWAY_URL`). The proxy never sees an MCP server's URL or
|
|
251
|
+
secrets. Without `WARDBY_MCP_GATEWAY_URL`, `/mcp` answers `503`
|
|
252
|
+
`mcp_unavailable`. A bad or expired token gets a `401` without a
|
|
253
|
+
`WWW-Authenticate` header, so a client doesn't start OAuth discovery.
|
|
254
|
+
3. The gateway checks the token again (the proxy is not trusted), checks the
|
|
255
|
+
live attachment on every call, counts the call against the run's limit
|
|
256
|
+
(`WARDBY_MCP_MAX_CALLS_PER_RUN`, default 100; failed calls count), runs it,
|
|
257
|
+
and removes the server's secret values from the result before it leaves.
|
|
258
|
+
Logs for the route carry the method, status and session id, never bodies,
|
|
259
|
+
arguments, results or the token.
|
|
260
|
+
|
|
261
|
+
The proxy can reach the gateway's HTTP port. It holds no gateway credentials,
|
|
262
|
+
and each route authenticates separately. The Anthropic allowlist accepts the
|
|
263
|
+
run's own MCP tools as plain client tools named
|
|
264
|
+
`mcp__wardby_mcp__<server>__<tool>`, and only those the run pinned.
|
|
265
|
+
|
|
266
|
+
Where the token is exposed:
|
|
267
|
+
|
|
268
|
+
- **Claude Code.** The agent container receives the MCP configuration, its
|
|
269
|
+
bearer header included, on Claude Code's command line. That container runs no
|
|
270
|
+
model commands and shares no PID namespace with the tool runner, so commands
|
|
271
|
+
the model runs can't read it.
|
|
272
|
+
- **Codex.** Shell commands run in the same container as Codex, and can read
|
|
273
|
+
the token through `/proc`. For that reason a Codex agent may use only tools
|
|
274
|
+
the server marks `readOnlyHint: true`: Wardby refuses any other tool when you
|
|
275
|
+
attach, when a run loads its tools, and on every call. `readOnlyHint` is the
|
|
276
|
+
server's own claim, which Wardby can't verify, so the allowlist remains the
|
|
277
|
+
owner's control. A leaked token is limited to this run's allowed tools, the
|
|
278
|
+
call limit and the run's deadline.
|
|
279
|
+
|
|
280
|
+
A repository's own MCP configuration is never loaded. MCP tools need this
|
|
281
|
+
release's Claude worker image and a new Codex driver image; an older image
|
|
282
|
+
ignores the token and gets no MCP tools, and the run does not fail. Codex
|
|
283
|
+
models that use tool search get their MCP tools through `tool_search_output`
|
|
284
|
+
items; the proxy checks every tool in them like a top-level tool (see
|
|
285
|
+
[Model request allowlist](#model-request-allowlist)).
|
|
286
|
+
|
|
287
|
+
The read-only rule follows the provider a run was started with
|
|
288
|
+
(`CodingRun.provider`), at pin time and on every call, not the agent's current
|
|
289
|
+
profile. At attach, a coding agent counts as Codex unless its provider is
|
|
290
|
+
exactly `claude-code`, so an agent without a profile is held to the rule too.
|
|
291
|
+
|
|
211
292
|
The proxy also binds a second listener, the **deny port** (`8788`,
|
|
212
293
|
`CODING_PROXY_DENY_PORT`), which serves nothing: it accepts a connection,
|
|
213
294
|
sends no bytes and closes it immediately
|
|
@@ -240,21 +321,52 @@ expires on its own: each coding run dispatched before the expiry is traced for
|
|
|
240
321
|
its whole life, and `get_run` shows `debugTrace: true` for it. Runs dispatched
|
|
241
322
|
afterwards are not.
|
|
242
323
|
|
|
243
|
-
A traced run's
|
|
244
|
-
|
|
245
|
-
chain), to its **own log**, one JSON line each under a `debugTrace` key
|
|
324
|
+
A traced run's worker writes its whole agent stream, and the full text of a
|
|
325
|
+
stream failure (including the agent process's own error output and cause
|
|
326
|
+
chain), to its **own log**, one JSON line each under a `debugTrace` key
|
|
327
|
+
(`{ runId, at, kind, data }`, with `truncated: true` on a cut line). On
|
|
246
328
|
Kubernetes that is the run pod's `worker` container log; on GKE, Cloud Logging
|
|
247
329
|
keeps it after the pod is deleted. With the Docker launcher it is the worker
|
|
248
330
|
container's log (`docker logs`), for as long as the container exists. Nothing from the trace goes to the database,
|
|
249
331
|
GitHub, the run's error, or the control-plane log. Token-shaped values (the run
|
|
250
|
-
capability,
|
|
251
|
-
|
|
332
|
+
capability, the package-registry token derived from it, bearer tokens, API
|
|
333
|
+
keys, GitHub tokens) are redacted, and each line is capped at 16 KiB.
|
|
334
|
+
|
|
335
|
+
- **Codex** runs trace every Codex stream event (`event`), turn and error
|
|
336
|
+
events (`turn_failed`, `error_event`), and stream failures (`stream_error`).
|
|
337
|
+
- **Claude Code** runs (Wardby 0.7.0 or later) trace every Claude Agent SDK
|
|
338
|
+
message (`message`): the session's `system`/`init` message, each `assistant`
|
|
339
|
+
message, whose `tool_use` blocks carry the command given to `run_command`,
|
|
340
|
+
each `user` message, whose `tool_result` blocks carry that command's output
|
|
341
|
+
and error flag, and the final `result` message with its usage, cost and
|
|
342
|
+
duration. They also trace Claude Code's own error output (`sdk_stderr`) and
|
|
343
|
+
stream failures (`stream_error`). A command's duration is the difference
|
|
344
|
+
between the `at` of its `tool_use` message and that of its `tool_result`.
|
|
345
|
+
- Both write `worker_error` when the worker itself fails.
|
|
346
|
+
|
|
347
|
+
Each traced run's total is capped at 2 MiB by default. Once the cap is reached
|
|
348
|
+
the worker writes one `limit_reached` line and stops tracing that run. An admin
|
|
349
|
+
can raise or lower the cap for an agent, from 1 to 64 MiB, together with the
|
|
350
|
+
trace or separately (Wardby 0.7.0 or later):
|
|
351
|
+
|
|
352
|
+
```
|
|
353
|
+
update_agent { "id": "<agent id>", "codingProfile": { "debugTraceMinutes": 30, "debugTraceMaxMb": 20 } }
|
|
354
|
+
```
|
|
252
355
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
356
|
+
`debugTraceMaxMb` needs `agents:admin` too, and `null` restores the default.
|
|
357
|
+
Changes are written to the same `coding.debug_trace.set` audit line. It is
|
|
358
|
+
fixed on each traced run at dispatch, and `get_run` shows it as
|
|
359
|
+
`debugTraceMaxMb` when it is not the default. A long trace can outgrow what
|
|
360
|
+
your log pipeline keeps: Kubernetes rotates container logs (often at about
|
|
361
|
+
10 MiB per file), so `kubectl logs` may show only the newest part of a large
|
|
362
|
+
trace, while a log collector such as Cloud Logging on GKE keeps every line.
|
|
363
|
+
|
|
364
|
+
The trace can contain prompts, model output, commands, their output and
|
|
365
|
+
repository content. Turn it on only while diagnosing a failure, for as short a
|
|
366
|
+
time as you can, and treat the pod logs of traced runs as sensitive. Tracing
|
|
367
|
+
needs a worker image from a release that supports it (for Claude Code, 0.7.0
|
|
368
|
+
or later). A Codex worker that predates it rejects a traced run's input as
|
|
369
|
+
invalid; a Claude Code worker from 0.6.x runs the task but writes no trace.
|
|
258
370
|
|
|
259
371
|
## Container Policy
|
|
260
372
|
|
|
@@ -419,18 +531,20 @@ inert until an operator explicitly raises the ceiling above `CODING_DISK_MB`.
|
|
|
419
531
|
A coding agent's profile carries an optional `workspaceDiskMb` (MiB; `null`
|
|
420
532
|
means "use the deployment default `CODING_DISK_MB`"). It is snapshotted onto
|
|
421
533
|
the `CodingRun` at dispatch time, so a later profile edit never changes an
|
|
422
|
-
in-flight run's size, and it is capped by `CODING_MAX_DISK_MB
|
|
423
|
-
|
|
424
|
-
`
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
534
|
+
in-flight run's size, and it is capped by `CODING_MAX_DISK_MB`.
|
|
535
|
+
`create_agent` refuses a coding profile above the effective ceiling.
|
|
536
|
+
`update_agent` checks the ceiling when setting a numeric `workspaceDiskMb`
|
|
537
|
+
or changing an agent's kind to coding. Unrelated edits to an already-saved
|
|
538
|
+
over-cap coding agent remain allowed. The error names the requested MiB, the cap, and
|
|
539
|
+
`CODING_MAX_DISK_MB`, which the operator must raise to allow that size.
|
|
540
|
+
A value exactly at the cap is allowed; `null` restores the deployment default.
|
|
541
|
+
|
|
542
|
+
Agents already saved above the cap (including after an operator lowers it)
|
|
543
|
+
still fail at run time with `coding_workspace_disk_exceeds_limit`.
|
|
544
|
+
The run-time check runs after the workspace has been cloned onto the control
|
|
545
|
+
plane and before the worker starts; the run record shows the sanitized
|
|
546
|
+
`coding_failure_workspace:<id>`. Lower the profile's size or raise the
|
|
547
|
+
operator ceiling before running the agent again.
|
|
434
548
|
|
|
435
549
|
`CODING_MAX_CONCURRENT` (default `4`) caps coding runs that hold a slot at
|
|
436
550
|
once, across every control-plane replica: the cap is enforced in Postgres
|
|
@@ -440,6 +554,12 @@ it starts, oldest first, when a slot frees (immediately in the process whose
|
|
|
440
554
|
run finished, or on the scheduler leader's next tick). A newly dispatched run
|
|
441
555
|
never takes a free slot ahead of an older queued run. A run still queued after
|
|
442
556
|
`CODING_QUEUE_TIMEOUT_SEC` (default `3600`) fails with `coding_queue_timeout`.
|
|
557
|
+
To end a queued run sooner, or a running one, call `stop_run` with its id: a
|
|
558
|
+
queued run is recorded `cancelled` and never starts; a running run is recorded
|
|
559
|
+
`cancelled` first, then its proxy session is cancelled and its job is stopped
|
|
560
|
+
and removed. The cancelled state is checked again before anything is pushed,
|
|
561
|
+
so a stopped run opens or updates no pull request, even when its worker had
|
|
562
|
+
already finished (see [Stop or cancel a run](../help/stop-run.md)).
|
|
443
563
|
Slot usage is derived from run state, so a crashed replica cannot leak slots:
|
|
444
564
|
its runs are reconciled to `lost`, which frees them.
|
|
445
565
|
|
|
@@ -455,13 +575,33 @@ size (a service sidecar adds to a run's CPU and memory) and other pods share the
|
|
|
455
575
|
quota. Set `KUBERNETES_RESOURCE_QUOTA` to the quota's name and the launcher
|
|
456
576
|
checks, before a run claims a slot, whether the pod it would create fits the
|
|
457
577
|
quota's free room. A run that doesn't fit is queued the same way as a run over
|
|
458
|
-
`CODING_MAX_CONCURRENT`, and is retried when a run ends and on each leader tick
|
|
459
|
-
|
|
460
|
-
reads one ResourceQuota by name (`get` on `resourcequotas` with that
|
|
578
|
+
`CODING_MAX_CONCURRENT`, and is retried when a run ends and on each leader tick.
|
|
579
|
+
The check reads one ResourceQuota by name (`get` on `resourcequotas` with that
|
|
461
580
|
`resourceName` in the launcher's Role). If the quota is missing or can't be
|
|
462
581
|
read, the launcher logs `kubernetes_resource_quota_missing` or
|
|
463
|
-
`kubernetes_resource_quota_unreadable` once and launches as before.
|
|
464
|
-
|
|
582
|
+
`kubernetes_resource_quota_unreadable` once and launches as before.
|
|
583
|
+
|
|
584
|
+
The check can be stale: the quota may fill up between the check and the pod
|
|
585
|
+
create, or `KUBERNETES_RESOURCE_QUOTA` may be unset. When the cluster still
|
|
586
|
+
refuses the pod, the run does not fail. It returns to the coding queue (the
|
|
587
|
+
control plane logs `coding run waiting for capacity: the cluster refused its
|
|
588
|
+
pod`), keeps its place and its original queue clock, and is retried no sooner
|
|
589
|
+
than about a minute later. It fails only when `CODING_QUEUE_TIMEOUT_SEC`
|
|
590
|
+
expires, with `coding_queue_timeout`; a follow-up run on a pull request then
|
|
591
|
+
also finishes the in-progress status it posted there, as failed. The queue stays first in, first out, so
|
|
592
|
+
runs behind a refused run wait for it, and each retry happens about once a
|
|
593
|
+
minute while the quota is full. A refused run shows `running` briefly, then
|
|
594
|
+
`pending` again while it waits. When `KUBERNETES_RESOURCE_QUOTA` is unset and a
|
|
595
|
+
pod is refused by a ResourceQuota, the launcher logs
|
|
596
|
+
`kubernetes_resource_quota_unconfigured` once per process: set
|
|
597
|
+
`KUBERNETES_RESOURCE_QUOTA` to that quota and grant the launcher `get` on it, so
|
|
598
|
+
runs wait before they start instead of being refused at creation. The Docker
|
|
599
|
+
launcher has no quota, so none of this applies there. In low-power mode, a run
|
|
600
|
+
waiting in the coding queue keeps the coding proxy awake, as any queued run
|
|
601
|
+
does.
|
|
602
|
+
|
|
603
|
+
Size the quota for `CODING_MAX_CONCURRENT` times the run pod's requests, so
|
|
604
|
+
slots and quota agree.
|
|
465
605
|
|
|
466
606
|
Operating the queue across replicas:
|
|
467
607
|
|
|
@@ -521,7 +661,9 @@ the model, and a tag that breaks it is normalized to a lowercase slug (or
|
|
|
521
661
|
dropped) instead of failing an otherwise finished run. GitHub finalization
|
|
522
662
|
re-validates the tag independently. Linking an issue is not the tag's job: put
|
|
523
663
|
a closing keyword such as `Resolves #37` in the task so the worker includes it
|
|
524
|
-
in the summary, which becomes the pull request body
|
|
664
|
+
in the summary, which becomes the pull request body on every run,
|
|
665
|
+
including follow-ups (see
|
|
666
|
+
[How the pull request description is kept current](code-review-agents.md#how-the-pull-request-description-is-kept-current)).
|
|
525
667
|
|
|
526
668
|
Some workspace folders are never collected from a run: `node_modules`, `.venv`,
|
|
527
669
|
`venv`, `__pycache__`, `.pytest_cache`, `.ruff_cache`, `.mypy_cache`, `.tox`,
|
|
@@ -683,6 +825,10 @@ One pod per run, built by the canonical, deny-by-default policy in
|
|
|
683
825
|
that points at the workspace's `.cache/tmp` on the disk-backed `storage`
|
|
684
826
|
volume instead, so it scales with `workspaceDiskMb` rather than this tiny
|
|
685
827
|
in-memory scratch.
|
|
828
|
+
- A Claude Code run with `sessionResume` on also gives the worker's Claude
|
|
829
|
+
Code config directory (`/tmp/claude-config`, where the session file grows)
|
|
830
|
+
its own 80 MiB `medium: Memory` `emptyDir` (a tmpfs of the same size under
|
|
831
|
+
Docker), so a long session never fills `/tmp`. Only the worker mounts it.
|
|
686
832
|
- `dnsPolicy: None` with `dnsConfig.nameservers: ["127.0.0.1"]` — **no DNS is
|
|
687
833
|
configured for worker/agent pods at all.** The proxy is reached by name
|
|
688
834
|
(`WARDBY_PROXY_URL=http://wardby-proxy:8787` — `CODING_PROXY_ALIAS` in
|
|
@@ -1105,7 +1251,7 @@ values. The list is kept only when every entry matches
|
|
|
1105
1251
|
- **No end-to-end backpressure or host-side archive-size cap** once the
|
|
1106
1252
|
exec WebSocket for a seed/collect transfer is connected — pre-existing,
|
|
1107
1253
|
documented, not a regression of this milestone.
|
|
1108
|
-
- **An over-ceiling `workspaceDiskMb` fails
|
|
1254
|
+
- **An already-saved over-ceiling `workspaceDiskMb` fails at run time** — see
|
|
1109
1255
|
"Control Plane Configuration" above.
|
|
1110
1256
|
- **Namespace handling must remain explicit in every overlay.**
|
|
1111
1257
|
`deploy/kind-coding/manifests/base/kustomization.yaml`
|