@wardby/cli 0.6.0 → 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/deploy/local/docker-compose.quickstart-coding.yml +13 -0
- package/dist/claude-coding-worker/driver.d.ts +21 -3
- package/dist/claude-coding-worker/driver.js +125 -17
- package/dist/claude-coding-worker/main.js +34 -6
- package/dist/claude-coding-worker/sdk.js +12 -1
- 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 +1 -0
- package/dist/cli.js +24 -10
- 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 +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 +235 -12
- 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 +8 -3
- package/dist/coding-worker/artifact.js +3 -1
- 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 +116 -38
- package/dist/coding-worker/errors.d.ts +1 -0
- package/dist/coding-worker/errors.js +32 -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 +11 -0
- package/dist/config/dependency-cache.d.ts +23 -0
- package/dist/config/dependency-cache.js +32 -0
- package/dist/config/providers.d.ts +12 -3
- package/dist/config/providers.js +55 -5
- 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/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 +42 -0
- package/dist/core/dispatch.js +131 -56
- package/dist/core/engine-native.js +1 -1
- 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 +18 -2
- package/dist/core/host-events.js +284 -24
- 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 +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 +54 -26
- 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 +2 -1
- package/dist/core/merge-order-check.js +8 -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 +27 -14
- 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 +2 -1
- 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 +99 -13
- 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 +80 -34
- package/dist/core/runner.js +439 -144
- 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 +10 -74
- 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/stop-run.d.ts +46 -0
- package/dist/core/stop-run.js +61 -0
- 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 +43 -8
- 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 +34 -3
- package/dist/generated/prisma/client.d.ts +34 -3
- package/dist/generated/prisma/commonInputTypes.d.ts +220 -60
- 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 +44 -0
- package/dist/generated/prisma/internal/class.js +4 -4
- package/dist/generated/prisma/internal/prismaNamespace.d.ts +428 -9
- package/dist/generated/prisma/internal/prismaNamespace.js +92 -1
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +95 -0
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +92 -1
- package/dist/generated/prisma/models/Agent.d.ts +106 -8
- package/dist/generated/prisma/models/AgentRepository.d.ts +42 -1
- package/dist/generated/prisma/models/CodingAgentProfile.d.ts +229 -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 +1637 -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 +39 -1
- package/dist/generated/prisma/models/NativeGatewaySession.d.ts +35 -1
- 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 +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.d.ts +4 -0
- package/dist/help-index.json +1320 -69
- package/dist/import/create.js +32 -3
- package/dist/import/neutral-schema.d.ts +50 -281
- package/dist/import/neutral-schema.js +5 -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/ownership.d.ts +7 -7
- 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/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 +58 -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 +198 -16
- 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.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 +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.js +34 -12
- 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/secrets.js +2 -2
- 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 +1 -1
- package/dist/mcp/tools/tools.js +25 -9
- 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/docker-launcher.d.ts +38 -2
- package/dist/native-worker/docker-launcher.js +65 -5
- package/dist/native-worker/gateway-server.d.ts +41 -3
- package/dist/native-worker/gateway-server.js +124 -27
- package/dist/native-worker/gateway.d.ts +27 -1
- package/dist/native-worker/gateway.js +70 -4
- package/dist/native-worker/http-server.d.ts +3 -1
- package/dist/native-worker/http-server.js +11 -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 +18 -2
- package/dist/native-worker/ledger.js +57 -4
- 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 +129 -577
- package/dist/native-worker/protocol.js +47 -1
- 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/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 +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 +47 -7
- package/dist/providers/executor/container.d.ts +361 -8
- package/dist/providers/executor/container.js +1136 -91
- 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/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 +27 -2
- 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 +2 -0
- package/dist/providers/jobs/kubernetes-isolation.js +17 -1
- package/dist/providers/jobs/kubernetes.d.ts +6 -1
- package/dist/providers/jobs/kubernetes.js +105 -16
- package/dist/providers/jobs/types.d.ts +33 -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 +134 -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 +214 -6
- package/dist/providers/vcs/github.js +447 -45
- 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 +14 -3
- package/dist/quickstart/coding-seed.js +213 -4
- 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/generated/zod.bundle.js +62 -1
- package/dist/sandbox/generated/zod3.bundle.js +5 -0
- package/dist/sandbox/host-functions.d.ts +1 -0
- package/dist/sandbox/host-functions.js +6 -11
- package/dist/sandbox/secret-broker.js +3 -4
- package/dist/sandbox/tool-capabilities.d.ts +10 -30
- 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/openapi.js +2 -4
- package/dist/wardby-bin.js +10 -0
- package/docs/agent-recipes.md +58 -20
- package/docs/code-review-agents.md +551 -41
- package/docs/coding-agent-setup.md +489 -7
- package/docs/coding-packages.md +1033 -90
- package/docs/coding-services.md +27 -12
- package/docs/coding-worker-byo-images.md +20 -0
- package/docs/coding-worker-isolation.md +105 -30
- package/docs/getting-started-gke.md +124 -137
- package/docs/getting-started-identity-provider.md +10 -1
- package/docs/getting-started.md +9 -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/native-sandbox.md +119 -23
- package/docs/observability.md +4 -0
- package/docs/security-deployment.md +33 -2
- package/docs/slack-notifications.md +35 -19
- package/docs/tool-secrets.md +42 -10
- package/docs/viewer-api.openapi.yml +1 -1
- package/help/admin-viewer.md +24 -2
- package/help/architecture-agent.md +11 -6
- package/help/build-worker-image.md +3 -1
- package/help/builder-agent.md +19 -6
- 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-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/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/merge-conflict.md +49 -0
- package/help/errors/native-sandbox-gateway-error.md +20 -0
- package/help/errors/native-sandbox-launch-abandoned.md +21 -0
- package/help/errors/native-sandbox-worker-exited.md +3 -2
- 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-in-value.md +69 -0
- package/help/errors/target-merge.md +40 -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/identity-and-access.md +2 -0
- 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/merge-order-check.md +5 -0
- package/help/native-capabilities.md +29 -1
- package/help/native-sandbox.md +15 -1
- package/help/operating-agents.md +5 -0
- package/help/package-audit-mode.md +91 -0
- package/help/related-pull-requests.md +10 -7
- package/help/resume-runs-locally.md +131 -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 +78 -7
- package/package.json +17 -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/schema.prisma +311 -97
- package/dist/sandbox/generated/zod-to-json-schema.bundle.js +0 -5
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/graph-incomplete
|
|
3
|
+
title: Package still being checked (wardby_graph_incomplete)
|
|
4
|
+
summary: The registry's walk reached the package but timed out before checking its versions, usually a slow upstream; retry shortly.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, packages, allowlist, wardby_graph_incomplete]
|
|
7
|
+
appliesTo: ">=0.7.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Package still being checked
|
|
11
|
+
|
|
12
|
+
`wardby_graph_incomplete` (HTTP 503) means the requested package is still
|
|
13
|
+
being checked against the allowed packages' dependency graph. It arises only when the
|
|
14
|
+
registry walks the graph: for a tarball download the run hasn't resolved (a
|
|
15
|
+
lockfile install), or for a metadata request after a lockfile plan of the run
|
|
16
|
+
failed or refused an entry. The walk reached
|
|
17
|
+
the name (an expanded version declares it) but timed out
|
|
18
|
+
(`REGISTRY_GRAPH_TIMEOUT_MS`) before the name's own versions were checked. That
|
|
19
|
+
is usually a slow or failing upstream for that package, or another request's
|
|
20
|
+
walk running out of time. The error message shows the walk's progress. It never
|
|
21
|
+
means the package is outside the graph. When a completed walk has failed
|
|
22
|
+
nodes, the answer is `wardby_upstream_error` or `wardby_audit_unavailable`
|
|
23
|
+
instead.
|
|
24
|
+
|
|
25
|
+
## What the agent should do
|
|
26
|
+
|
|
27
|
+
This is the one allowlist-related code worth retrying: try again shortly (npm
|
|
28
|
+
retries a 5xx on its own). If it keeps happening, report the package so its
|
|
29
|
+
owner can allowlist it directly.
|
|
30
|
+
|
|
31
|
+
## What the owner does
|
|
32
|
+
|
|
33
|
+
If retries do not clear it, add the package to
|
|
34
|
+
`codingProfile.packageAllowlist` with `update_agent` (needs
|
|
35
|
+
`packages:approve` or `agents:admin`).
|
|
36
|
+
|
|
37
|
+
## Related
|
|
38
|
+
|
|
39
|
+
- [Package not reached: `wardby_package_not_allowed_pending`](package-not-allowed-pending.md)
|
|
40
|
+
- [Not allowed: `wardby_package_not_allowed`](package-not-allowed.md)
|
|
41
|
+
- [Graph limit: `wardby_graph_limit`](graph-limit.md)
|
|
42
|
+
- [Package audit mode](../package-audit-mode.md): find out which packages a task needs without refusals, for a limited time.
|
|
43
|
+
- [Coding packages](../coding-packages.md)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/graph-limit
|
|
3
|
+
title: Dependency graph over the limit (wardby_graph_limit)
|
|
4
|
+
summary: The run's dependency graph walk hit REGISTRY_MAX_GRAPH_PACKAGES before reaching the package; the owner can allowlist it directly, or the operator can raise the limit.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, packages, allowlist, wardby_graph_limit, REGISTRY_MAX_GRAPH_PACKAGES]
|
|
7
|
+
appliesTo: ">=0.7.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Dependency graph over the limit
|
|
11
|
+
|
|
12
|
+
`wardby_graph_limit` (HTTP 403) means this run's dependency graph walk reached
|
|
13
|
+
its limit of `REGISTRY_MAX_GRAPH_PACKAGES` package names (default 3000, counted
|
|
14
|
+
per run and ecosystem) before it reached the requested package, so the package
|
|
15
|
+
may not be in the graph at all. The bound is permanent for the run, so
|
|
16
|
+
retrying does not help. It arises only when the
|
|
17
|
+
registry walks the graph: for a tarball download the run hasn't resolved (a
|
|
18
|
+
lockfile install), or for a metadata request after a lockfile plan of the run
|
|
19
|
+
failed or refused an entry.
|
|
20
|
+
|
|
21
|
+
Large frameworks (for example Expo) can exceed the limit, because the walk
|
|
22
|
+
follows every in-range kept version plus optional and peer dependencies, so its
|
|
23
|
+
graph is usually several times larger than a single install.
|
|
24
|
+
|
|
25
|
+
## What the agent should do
|
|
26
|
+
|
|
27
|
+
Stop retrying. Report the package so its owner can act.
|
|
28
|
+
|
|
29
|
+
## What the owner does
|
|
30
|
+
|
|
31
|
+
1. Open the agent with `get_agent`, then add the package (or the top-level package that needs it) to `codingProfile.packageAllowlist` with `update_agent`. This needs `packages:approve` or `agents:admin`.
|
|
32
|
+
2. Run the request again. Allowing a package name allows all of its kept versions, subject to the release-age and vulnerability checks.
|
|
33
|
+
|
|
34
|
+
The operator, not the owner, can instead raise `REGISTRY_MAX_GRAPH_PACKAGES` on the
|
|
35
|
+
coding proxy. A higher limit uses more proxy memory and walk time.
|
|
36
|
+
|
|
37
|
+
## Related
|
|
38
|
+
|
|
39
|
+
- [Package not reached: `wardby_package_not_allowed_pending`](package-not-allowed-pending.md)
|
|
40
|
+
- [Not allowed: `wardby_package_not_allowed`](package-not-allowed.md)
|
|
41
|
+
- [Still being checked: `wardby_graph_incomplete`](graph-incomplete.md)
|
|
42
|
+
- [Package audit mode](../package-audit-mode.md): find out which packages a task needs without refusals, for a limited time.
|
|
43
|
+
- [Coding packages](../../docs/coding-packages.md#operator-limits)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/merge-conflict
|
|
3
|
+
title: Conflict markers remain
|
|
4
|
+
summary: A follow-up run left conflict markers in a file the target-branch merge conflicted, so nothing was pushed.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, vcs, merge-conflict, pull-requests]
|
|
7
|
+
appliesTo: ">=0.7.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Conflict markers remain
|
|
11
|
+
|
|
12
|
+
A follow-up run on a wardby pull request merges the pull request's target
|
|
13
|
+
branch into the branch before the agent starts (see
|
|
14
|
+
[Fix merge conflicts on a wardby pull request](../fix-merge-conflicts.md)).
|
|
15
|
+
When that merge conflicts, the agent is given the conflicted files to
|
|
16
|
+
resolve. A run that finished while one of those files still held a
|
|
17
|
+
`<<<<<<<` … `>>>>>>>` marker pair stops with failure category
|
|
18
|
+
`merge_conflict` (error `vcs_conflict_markers_remain`), and nothing is
|
|
19
|
+
pushed: the pull request is unchanged.
|
|
20
|
+
|
|
21
|
+
Only the files the merge conflicted are checked, so marker-like lines in
|
|
22
|
+
other files (test fixtures, documentation about merging) never trigger this.
|
|
23
|
+
|
|
24
|
+
## What the requester sees
|
|
25
|
+
|
|
26
|
+
The run's status comment on the pull request names the file, for example:
|
|
27
|
+
|
|
28
|
+
> `src/app.ts` still has conflict markers after merging this pull request's
|
|
29
|
+
> target branch, so none of its changes were pushed. Ask again to resolve the
|
|
30
|
+
> conflicts.
|
|
31
|
+
|
|
32
|
+
A lead agent that delegated the follow-up sees the sub-run's error code
|
|
33
|
+
`coding_failure_merge_conflict`.
|
|
34
|
+
|
|
35
|
+
## What to do
|
|
36
|
+
|
|
37
|
+
- Ask again on the pull request (for example "please fix the merge
|
|
38
|
+
conflicts"). The next follow-up merges the target again and gives the agent
|
|
39
|
+
the same list.
|
|
40
|
+
- If the conflicts are too large for the agent's budget or turn limit, raise
|
|
41
|
+
them for that agent, or resolve the conflicts by hand and push.
|
|
42
|
+
- An agent that keeps stopping early may need instructions that put
|
|
43
|
+
resolving the listed conflicts first.
|
|
44
|
+
- A conflict in a path this agent may not edit cannot be resolved by the
|
|
45
|
+
agent (resolving it is an edit, which is refused): resolve that file by hand
|
|
46
|
+
and push.
|
|
47
|
+
|
|
48
|
+
Related: [Run changed a protected path](protected-path.md),
|
|
49
|
+
[Target branch could not be merged](target-merge.md).
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/native-sandbox-gateway-error
|
|
3
|
+
title: Native worker's gateway call failed
|
|
4
|
+
summary: The sandbox worker's call to the gateway failed with an error the run could not continue from.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, native-agents, sandbox, native_sandbox_gateway_error]
|
|
7
|
+
appliesTo: ">=0.5.4"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Native worker's gateway call failed
|
|
11
|
+
|
|
12
|
+
`native_sandbox_gateway_error: <code>: <message>` means the sandbox worker called the gateway (a model turn, a tool, or a delegation) and got an error the run could not continue from. The worker reports the run failed with this error instead of exiting, so it is not `native_sandbox_worker_exited`.
|
|
13
|
+
|
|
14
|
+
1. Read the code and message in the run's error (`get_run`).
|
|
15
|
+
2. For the gateway's `internal` code the message is never recorded. When the gateway's error named one of wardby's own declared codes, that code follows (any other leading word, and any code that matches a secret value the run can read, never leaves the gateway), for example `native_sandbox_gateway_error: internal: coding_execution_not_configured` (the gateway that served the call cannot start coding runs); otherwise the error is `native_sandbox_gateway_error: internal`. Read the gateway's logs (`native gateway request failed`) for the details: the line carries the error's message and stack with the run's secret values replaced by `[REDACTED]`; when the gateway could not read the run's secret values, or the failure was not an error object, it carries only the error's name (`errName`) and declared code (`causeCode`).
|
|
16
|
+
3. Fix the cause the message names, or check that the gateway can reach the database and the LLM provider.
|
|
17
|
+
4. Trigger the run again.
|
|
18
|
+
|
|
19
|
+
See [Run native agents in a sandbox](../native-sandbox.md) and the
|
|
20
|
+
[native sandbox guide](../../docs/native-sandbox.md).
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/native-sandbox-launch-abandoned
|
|
3
|
+
title: Native worker launch abandoned
|
|
4
|
+
summary: A sandbox run ended while its worker was launching (usually stopped during a low-power gateway wake), so no worker pod was created.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, native-agents, sandbox, kubernetes, low-power, native_sandbox_launch_abandoned]
|
|
7
|
+
appliesTo: ">=0.7.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Native worker launch abandoned
|
|
11
|
+
|
|
12
|
+
`native_sandbox_launch_abandoned` means a sandbox run ended while its worker was being launched, so Wardby did not create the worker pod. Most often the run was stopped (`stop_run`, or its parent run was cancelled) while the native gateway was waking in low-power mode, which can take a few minutes on a cold node.
|
|
13
|
+
|
|
14
|
+
The run already has its own final status, such as `cancelled`. This code only appears in the control-plane log, as the reason the launch stopped. Nothing is left to clean up.
|
|
15
|
+
|
|
16
|
+
1. If the run was stopped on purpose, there is nothing to do.
|
|
17
|
+
2. If you did not stop it, check the run with `get_run`: its status and error say what ended it.
|
|
18
|
+
3. Trigger the run again if you still want it.
|
|
19
|
+
|
|
20
|
+
See [Low-power mode](../low-power-mode.md) and the
|
|
21
|
+
[native sandbox guide](../../docs/native-sandbox.md).
|
|
@@ -13,8 +13,9 @@ appliesTo: ">=0.5.4"
|
|
|
13
13
|
|
|
14
14
|
1. Read the exit code in the run's error (`get_run`). Code 137 usually means the memory limit was hit.
|
|
15
15
|
2. If limits are the cause, raise `NATIVE_SANDBOX_MEMORY_MB`, `NATIVE_SANDBOX_PIDS`, or `NATIVE_SANDBOX_CPUS` on the server and restart it.
|
|
16
|
-
3.
|
|
17
|
-
4.
|
|
16
|
+
3. Read the server log line `native worker exited non-zero` (Docker and Kubernetes): its `stderrTail` is the end of the worker's output. The server masks the run's gateway capability and every secret value the agent's tools can read (six characters or longer, as in tool console output) as `[REDACTED]`. If the line has `stderrTailOmitted` instead, there is no tail: `secrets_unavailable` means the server could not read one of those secrets (check the secret store and the tools' attached secrets); `log_read_failed` means it could not read the worker pod's log on Kubernetes (check that the server's Role allows `get` on `pods/log`).
|
|
17
|
+
4. Otherwise test the agent's tools with `dry_run_tool` and fix the failing code.
|
|
18
|
+
5. Trigger the run again.
|
|
18
19
|
|
|
19
20
|
See [Run native agents in a sandbox](../native-sandbox.md) and the
|
|
20
21
|
[native sandbox guide](../../docs/native-sandbox.md).
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/package-not-allowed-pending
|
|
3
|
+
title: Package not reached (wardby_package_not_allowed_pending)
|
|
4
|
+
summary: The dependency-graph walk stopped before reaching the requested package; the owner should allowlist it directly because retrying rarely helps.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, packages, allowlist, wardby_package_not_allowed_pending]
|
|
7
|
+
appliesTo: ">=0.7.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Package not reached
|
|
11
|
+
|
|
12
|
+
`wardby_package_not_allowed_pending` (HTTP 403) means the registry's
|
|
13
|
+
dependency-graph walk ended before it reached the requested package. The
|
|
14
|
+
package may still be reachable from an allowlisted one, but the walk was cut
|
|
15
|
+
short (by `REGISTRY_GRAPH_TIMEOUT_MS`), so it was not proven allowed. The error message shows
|
|
16
|
+
how many packages were walked and how many were still queued. It arises only when the
|
|
17
|
+
registry walks the graph: for a tarball download the run hasn't resolved (a
|
|
18
|
+
lockfile install), or for a metadata request after a lockfile plan of the run
|
|
19
|
+
failed or refused an entry. Otherwise a metadata request gets
|
|
20
|
+
`wardby_package_not_allowed` at once instead.
|
|
21
|
+
|
|
22
|
+
The answer is final for the agent and is not transient: the walk resumes
|
|
23
|
+
within the run, but each request continues the walk for at most
|
|
24
|
+
`REGISTRY_GRAPH_TIMEOUT_MS`, so a large allowlist can take several requests or
|
|
25
|
+
never finish in time. Retrying rarely helps; allowlisting the package directly
|
|
26
|
+
is the reliable fix.
|
|
27
|
+
|
|
28
|
+
## What the agent should do
|
|
29
|
+
|
|
30
|
+
Stop retrying. Report the package name so its owner can allowlist it.
|
|
31
|
+
|
|
32
|
+
## What the owner does
|
|
33
|
+
|
|
34
|
+
1. Open the agent with `get_agent`, then add the package (or the top-level package that needs it) to `codingProfile.packageAllowlist` with `update_agent`. This needs `packages:approve` or `agents:admin`.
|
|
35
|
+
2. Run the request again. Allowing a package name allows all of its kept versions, subject to the release-age and vulnerability checks.
|
|
36
|
+
|
|
37
|
+
Large frameworks (for example Expo) can have a very large graph, because the
|
|
38
|
+
walk follows every in-range version plus optional and peer dependencies.
|
|
39
|
+
Allowlisting the packages the project needs directly avoids the walk for them.
|
|
40
|
+
|
|
41
|
+
## Operator knobs
|
|
42
|
+
|
|
43
|
+
`REGISTRY_GRAPH_TIMEOUT_MS` is the time one request's walk may take. See
|
|
44
|
+
[Operator limits](../../docs/coding-packages.md#operator-limits).
|
|
45
|
+
|
|
46
|
+
## Related
|
|
47
|
+
|
|
48
|
+
- [Not allowed: `wardby_package_not_allowed`](package-not-allowed.md)
|
|
49
|
+
- [Graph limit: `wardby_graph_limit`](graph-limit.md)
|
|
50
|
+
- [Still being checked: `wardby_graph_incomplete`](graph-incomplete.md)
|
|
51
|
+
- [Package audit mode](../package-audit-mode.md): find out which packages a task needs without refusals, for a limited time.
|
|
52
|
+
- [Coding packages](../coding-packages.md)
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/package-not-allowed
|
|
3
|
+
title: Package not allowed (wardby_package_not_allowed)
|
|
4
|
+
summary: The coding package registry refused a package because it is not on the agent's allowlist, or is only reachable through a refused package.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, packages, allowlist, wardby_package_not_allowed]
|
|
7
|
+
appliesTo: ">=0.7.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Package not allowed
|
|
11
|
+
|
|
12
|
+
`wardby_package_not_allowed` (HTTP 403) is a final answer from the package
|
|
13
|
+
registry: the package is not on the agent's `packageAllowlist`, and nothing
|
|
14
|
+
the run has resolved allows it. It is also returned for a package reachable
|
|
15
|
+
only through a package that was itself refused (for example one with a
|
|
16
|
+
high-severity advisory).
|
|
17
|
+
|
|
18
|
+
- When npm resolves a package (a metadata request), the package is refused at
|
|
19
|
+
once unless it is allowlisted, was declared as a dependency by a package
|
|
20
|
+
already resolved in the run, or was approved by the run's lockfile plan. So
|
|
21
|
+
a new top-level package must be allowlisted, even if an allowlisted
|
|
22
|
+
package's dependency graph contains it. (After a lockfile plan of the run
|
|
23
|
+
failed or refused an entry, the metadata request walks the dependency graph
|
|
24
|
+
first, as a download does.)
|
|
25
|
+
- When npm downloads a tarball the run has not resolved (a lockfile install),
|
|
26
|
+
it is refused once the dependency-graph walk finds no allowlisted package
|
|
27
|
+
that reaches it.
|
|
28
|
+
|
|
29
|
+
## What the agent should do
|
|
30
|
+
|
|
31
|
+
Stop. Do not retry, and do not look for a way around the refusal. Pick an
|
|
32
|
+
already-approved alternative, or report that the package needs approval.
|
|
33
|
+
|
|
34
|
+
## What the owner does
|
|
35
|
+
|
|
36
|
+
1. Open the agent with `get_agent`, then add the package to `codingProfile.packageAllowlist` with `update_agent`. This needs `packages:approve` or `agents:admin`. For a package the project adds directly, allowlist the package itself; allowlisting a dependent only helps for a package something already in the project depends on.
|
|
37
|
+
2. Run the request again. Allowing a package name allows all of its kept versions, subject to the release-age and vulnerability checks.
|
|
38
|
+
|
|
39
|
+
For a PyPI package pulled in by an extra (`psycopg-binary` for
|
|
40
|
+
`psycopg[binary]`), name the extra on the entry instead.
|
|
41
|
+
|
|
42
|
+
If the package is only reachable through a refused one, allowlisting more
|
|
43
|
+
packages will not help; change or drop the refused dependency.
|
|
44
|
+
|
|
45
|
+
## Related
|
|
46
|
+
|
|
47
|
+
- [Pending answer: `wardby_package_not_allowed_pending`](package-not-allowed-pending.md): the walk stopped before reaching the name.
|
|
48
|
+
- [Graph limit: `wardby_graph_limit`](graph-limit.md)
|
|
49
|
+
- [Still being checked: `wardby_graph_incomplete`](graph-incomplete.md)
|
|
50
|
+
- [Package audit mode](../package-audit-mode.md): find out which packages a task needs without refusals, for a limited time.
|
|
51
|
+
- [Coding packages](../coding-packages.md): the allowlist, the walk and the full error table.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/package-refusals
|
|
3
|
+
title: Package registry refused an install
|
|
4
|
+
summary: Understand package refusal codes and unblock a coding run's blocked status.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, packages, allowlist, wardby_graph_incomplete, wardby_graph_limit, wardby_package_not_allowed, wardby_package_not_allowed_pending, wardby_version_filtered, wardby_lockfile_entry_unsupported]
|
|
7
|
+
appliesTo: >=0.2.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Package registry refused an install
|
|
11
|
+
|
|
12
|
+
A coding run can finish successfully after restoring its changes because a
|
|
13
|
+
needed package was refused. When no pull request or pushed changes result,
|
|
14
|
+
the parent status says ⛔ **Blocked by the package registry: no changes were
|
|
15
|
+
made.** With a pull request, the link stays and a ⚠️ warning lists refusals.
|
|
16
|
+
|
|
17
|
+
- `wardby_package_not_allowed`, `wardby_package_not_allowed_pending`, and
|
|
18
|
+
`wardby_graph_limit`: add the needed package to the coding agent's
|
|
19
|
+
`codingProfile.packageAllowlist` with `update_agent`.
|
|
20
|
+
- `wardby_graph_incomplete`, `wardby_upstream_error`,
|
|
21
|
+
`wardby_upstream_unavailable`, `wardby_audit_unavailable`, and
|
|
22
|
+
`wardby_download_idle`: the registry could not finish checking the package,
|
|
23
|
+
usually because an upstream was slow or failing. Mention `@wardby` again to
|
|
24
|
+
retry.
|
|
25
|
+
- `wardby_version_filtered`: no version passed the release-age, advisory, or
|
|
26
|
+
malware checks. For release age, wait or adjust
|
|
27
|
+
`codingProfile.packagePolicy.minReleaseAgeDays`. For an advisory, upgrade
|
|
28
|
+
to a safe version or accept the advisory after reviewing exposure using
|
|
29
|
+
`codingProfile.packagePolicy.acceptedAdvisories`. Malware is never waivable:
|
|
30
|
+
use a safe alternative, never bypass the malware check. The code alone
|
|
31
|
+
does not distinguish which check blocked the version.
|
|
32
|
+
- `wardby_lockfile_entry_unsupported`: the lock file installs the package
|
|
33
|
+
from git or a URL, which the registry cannot verify. Depend on a registry
|
|
34
|
+
version instead.
|
|
35
|
+
- Other codes: inspect the registry error and package policy before retrying.
|
|
36
|
+
|
|
37
|
+
Changing allowlists or policy needs `packages:approve` or `agents:admin`.
|
|
38
|
+
`update_agent` replaces the whole package policy, so send all intended fields.
|
|
39
|
+
After fixing the refusal, mention `@wardby` again. An existing run's package
|
|
40
|
+
policy does not change.
|
|
41
|
+
|
|
42
|
+
See [Approve packages for coding agents](../coding-packages.md) and
|
|
43
|
+
[Run status comments](../status-comments.md).
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/patch-cursor-malformed
|
|
3
|
+
title: Patch cursor is malformed
|
|
4
|
+
summary: A repo_pr_read call passed a patchCursor that is not a well-formed cursor for the pull request (edited, truncated, retyped or too long).
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, code-review-agents, repo_pr_read, patchCursor, patch_cursor_malformed, patch_cursor_stale]
|
|
7
|
+
appliesTo: ">=0.7.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Patch cursor is malformed
|
|
11
|
+
|
|
12
|
+
`repo_pr_read` returns `patch_cursor_malformed` to a review agent when the
|
|
13
|
+
`patchCursor` it passed is not a well-formed cursor for this pull request: the
|
|
14
|
+
value was edited, truncated, damaged in transit, retyped by the model, or is
|
|
15
|
+
over-long. No page is returned or recorded as read, and nothing else changes;
|
|
16
|
+
the call can be made again.
|
|
17
|
+
|
|
18
|
+
A cursor is also tied to the pull request's head and compare. When the pull
|
|
19
|
+
request has moved on since the cursor was issued, the call returns
|
|
20
|
+
`patch_cursor_stale` instead.
|
|
21
|
+
|
|
22
|
+
## What to do
|
|
23
|
+
|
|
24
|
+
- Pass `nextPatchCursor` back exactly as `repo_pr_read` returned it, with the
|
|
25
|
+
same arguments as the call that produced it.
|
|
26
|
+
- After `patch_cursor_stale`, or if no valid cursor is at hand, call
|
|
27
|
+
`repo_pr_read` again without `patchCursor` to start from the first page.
|
|
28
|
+
- If a model keeps rewriting the cursor, tell it in the agent's prompt to copy
|
|
29
|
+
`nextPatchCursor` verbatim.
|
|
30
|
+
|
|
31
|
+
See [Code review agents](../code-review-agents.md) for how patch pages work.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/run-lost
|
|
3
|
+
title: Run lost
|
|
4
|
+
summary: A run ended as lost, usually because a deploy replaced the version that was executing it.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, runs, deploy, lost]
|
|
7
|
+
appliesTo: ">=0.7.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Run lost
|
|
11
|
+
|
|
12
|
+
A run with status `lost` stopped without finishing and without a result. Read its `error` with `get_run`. The usual cause is a deploy that changed the application version while the run was still going.
|
|
13
|
+
|
|
14
|
+
## When a deploy does not lose a run
|
|
15
|
+
|
|
16
|
+
A native run that is waiting in a `delegate_to_*` call on a coding sub-agent, or on a native sub-agent running in `sandbox` mode, is taken over by the new version. It continues when the sub-agent finishes, and the turns it already took are not repeated.
|
|
17
|
+
|
|
18
|
+
## Reasons
|
|
19
|
+
|
|
20
|
+
- `Durable workflow belongs to application version <old>; this process runs <new>.` The run was mid-turn, waiting on a tool that is not a delegation, or waiting on a control-plane native sub-agent, so the new version could not take it over.
|
|
21
|
+
- `Could not continue across versions: the run's steps changed in the new version.` The run was waiting on a sub-agent, but the new code no longer matches the steps the run had recorded.
|
|
22
|
+
- `Durable workflow could not be re-driven after 3 adoption attempts…` Wardby tried three times to resume the run and gave up.
|
|
23
|
+
- `Orphaned: no heartbeat/progress since before <time>.` Nothing was executing the run and it stopped reporting progress, for example because its process was killed.
|
|
24
|
+
|
|
25
|
+
## Sub-agents of a lost run
|
|
26
|
+
|
|
27
|
+
When a run is marked lost, sub-agent runs it started that are still going are stopped with the reason `parent run lost`. They are not left running for nobody.
|
|
28
|
+
|
|
29
|
+
A run that continues after a restart of the same version cannot continue a control-plane native sub-agent it was waiting on: that sub-agent ran inside the process that stopped. (After a deploy, a run waiting on such a sub-agent is not taken over at all; it is marked lost, as above.) The sub-agent run is stopped with the reason `parent resumed without it`, and no new one is started. The parent run goes on, and its `delegate_to_*` call returns the error `subagent_interrupted` ("The sub-agent was interrupted by a restart and cannot be resumed; no new sub-agent run was started."), so the model can report it.
|
|
30
|
+
|
|
31
|
+
If two executions of the same `delegate_to_*` step overlap and the call id is already held by a run of a different sub-agent, the call returns `delegation_conflict` instead; see [Delegation conflict](delegation-conflict.md).
|
|
32
|
+
|
|
33
|
+
## What to do
|
|
34
|
+
|
|
35
|
+
1. Read the reason with `get_run`.
|
|
36
|
+
2. Trigger the request again. If an `@`-mention started the run, its status comment says the request was interrupted and should be repeated.
|
|
37
|
+
3. To lose fewer runs, deploy when few runs are executing. The old version first waits for its runs to finish, up to `SHUTDOWN_DRAIN_SECONDS`; only runs still going after that limit are affected.
|
|
38
|
+
|
|
39
|
+
See [Operating agents](../operating-agents.md) and the [GKE guide](../../docs/getting-started-gke.md).
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/run-transcript-download
|
|
3
|
+
title: Run transcript download refused
|
|
4
|
+
summary: What each refusal from a get_run_transcript download link means (link_invalid, not_found, transcript_expired, transcript_unavailable, transcript_corrupt, local_repository_refused) and what to do.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [wardby resume, get_run_transcript, link_invalid, transcript_expired, local_repository_refused, download]
|
|
7
|
+
appliesTo: ">=0.7.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Run transcript download refused
|
|
11
|
+
|
|
12
|
+
`wardby resume` downloads a run's transcript from the link
|
|
13
|
+
`get_run_transcript` returned. When the server refuses, it answers with JSON
|
|
14
|
+
`{ "error": "<code>" }`, and `wardby resume` prints what the code means.
|
|
15
|
+
Nothing is written to your machine.
|
|
16
|
+
|
|
17
|
+
| Code | HTTP | Meaning and what to do |
|
|
18
|
+
| ------------------------ | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
19
|
+
| `link_invalid` | 403 | The link is malformed, was changed, was made by another server (or by a stdio server, on the HTTP route), or is older than 10 minutes. Call `get_run_transcript` again for a new link. Every HTTP instance must share `SECRET_APP_KEY` (or `REQUEST_STATE_KEY`, if set). |
|
|
20
|
+
| `not_found` | 404 | The person the link was made for can no longer read the run, or the run has no stored transcript. |
|
|
21
|
+
| `transcript_expired` | 410 | The transcript was deleted after `RUN_TRANSCRIPT_RETENTION_DAYS`. |
|
|
22
|
+
| `transcript_unavailable` | 503 | The server has no blob store configured (`BLOB_STORE`), or could not read the object. Check the blob store settings on the server process. |
|
|
23
|
+
| `transcript_corrupt` | 500 | The stored object no longer matches the SHA-256 recorded when it was stored, so the server refused to send it. |
|
|
24
|
+
|
|
25
|
+
`wardby resume` also refuses a download whose bytes do not match the
|
|
26
|
+
server's SHA-256 header, a response larger than it accepts or with an invalid
|
|
27
|
+
length, and run details with control characters, and never writes a partial
|
|
28
|
+
file.
|
|
29
|
+
|
|
30
|
+
## local_repository_refused
|
|
31
|
+
|
|
32
|
+
Printed by `wardby resume`, not the server. The run's repository is a
|
|
33
|
+
`local:` folder, which names a path on the server's machine, but the link
|
|
34
|
+
comes from another machine. Checking it out would let that server choose any
|
|
35
|
+
repository on yours, so nothing was written. Run the command on the server's
|
|
36
|
+
machine with a link from its stdio MCP server, or pass `--here` to continue
|
|
37
|
+
in the current directory, or `--dir <path>` to check the run out from that
|
|
38
|
+
folder anyway.
|
|
39
|
+
|
|
40
|
+
Over stdio, the link points at a local port the MCP server opens while links
|
|
41
|
+
are in use: if `wardby resume` cannot reach it, keep your MCP client
|
|
42
|
+
connected and request a new link.
|
|
43
|
+
|
|
44
|
+
See [Resume Claude Code runs locally](../resume-runs-locally.md).
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/secret-in-value
|
|
3
|
+
title: A value was not stored because it contains a secret (secret_in_value)
|
|
4
|
+
summary: A datastore or agent memory write was refused because the value contains the value of a secret attached to the agent; store the secret's name and read it when needed.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, secrets, datastore, memory, secret_in_value, secret_check_unavailable, datastore set, memory set]
|
|
7
|
+
appliesTo: ">=0.7.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# A value was not stored because it contains a secret (secret_in_value)
|
|
11
|
+
|
|
12
|
+
`secret_in_value` means a write to a datastore or agent memory contained the
|
|
13
|
+
value of a secret attached to the agent, in the value or in the key. The write
|
|
14
|
+
came from a tool's `datastore.set` (or a shared datastore's `set`), from the
|
|
15
|
+
`memory_set` tool, from the `datastore_set` or `set_agent_memory` MCP tools, or
|
|
16
|
+
from a bundle import. The error names the secret. Nothing was stored.
|
|
17
|
+
|
|
18
|
+
Secret values are never stored in datastores or agent memory, because anything
|
|
19
|
+
stored there can be read back by other tools and later runs that were never
|
|
20
|
+
given the secret, and can be printed.
|
|
21
|
+
|
|
22
|
+
## What to do
|
|
23
|
+
|
|
24
|
+
Store the secret's **name**, not its value, and read the secret when you need it:
|
|
25
|
+
|
|
26
|
+
- `secrets.get("NAME")` in a tool that is allowed to read the secret, or
|
|
27
|
+
- `fetch(url, { secrets: ["NAME"] })` for a brokered secret.
|
|
28
|
+
|
|
29
|
+
See [Secrets and tools](../../docs/tool-secrets.md#secret-values-are-never-stored).
|
|
30
|
+
|
|
31
|
+
## `secret_check_unavailable`
|
|
32
|
+
|
|
33
|
+
The agent's secrets could not be read, so the value could not be checked and was
|
|
34
|
+
not stored. Try the write again. If it keeps happening, check the database
|
|
35
|
+
connection and the secret encryption configuration on the server.
|
|
36
|
+
|
|
37
|
+
## Bundle imports
|
|
38
|
+
|
|
39
|
+
A seeded datastore entry in an imported bundle, per-agent or shared, whose key
|
|
40
|
+
or value contains an attached secret's value is skipped, and the import reports
|
|
41
|
+
a warning that names the secret (the entry's key is withheld from the warning).
|
|
42
|
+
The rest of the bundle is still imported.
|
|
43
|
+
|
|
44
|
+
## Also masked
|
|
45
|
+
|
|
46
|
+
Secret values are also kept out of other output:
|
|
47
|
+
|
|
48
|
+
- A native run's final text and error have attached secret values replaced with
|
|
49
|
+
`[REDACTED]`.
|
|
50
|
+
- The task text of a `delegate_to_*` call has the delegating agent's attached
|
|
51
|
+
secret values replaced with `[REDACTED]` before the sub-agent's run is created.
|
|
52
|
+
- Comments, reviews, and Jira posts made through built-in tools have attached
|
|
53
|
+
secret values replaced with `[REDACTED]`.
|
|
54
|
+
- If the secrets cannot be read when a run ends, both its stored final text and
|
|
55
|
+
its stored error are
|
|
56
|
+
`[withheld: this text could not be checked for secret values]`.
|
|
57
|
+
- If the secrets cannot be read when a posting tool or a `delegate_to_*` call
|
|
58
|
+
runs, the tool returns `secret_check_unavailable` and posts nothing or creates
|
|
59
|
+
no sub-agent run.
|
|
60
|
+
|
|
61
|
+
## Limits
|
|
62
|
+
|
|
63
|
+
Matching is by exact value, including its JSON-escaped forms and, for brokered
|
|
64
|
+
secrets, the encoded forms that the broker scrubs. Values shorter than 6
|
|
65
|
+
characters are not matched. A value that is split, re-encoded, or otherwise
|
|
66
|
+
transformed is not detected. Values stored before this check existed are not
|
|
67
|
+
scanned.
|
|
68
|
+
|
|
69
|
+
See also [Brokered secrets](../brokered-secrets.md).
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/target-merge
|
|
3
|
+
title: Target branch could not be merged
|
|
4
|
+
summary: A follow-up run could not fetch or merge its pull request's target branch, so it stopped before the agent started.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, vcs, merge-conflict, target-branch, pull-requests]
|
|
7
|
+
appliesTo: ">=0.7.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Target branch could not be merged
|
|
11
|
+
|
|
12
|
+
Before a follow-up run on a wardby pull request starts its agent, wardby
|
|
13
|
+
merges the branch the pull request currently targets into the workspace (see
|
|
14
|
+
[Fix merge conflicts on a wardby pull request](../fix-merge-conflicts.md)).
|
|
15
|
+
A run stops with failure category `target_merge` (error
|
|
16
|
+
`vcs_target_merge_failed`) when that could not be done:
|
|
17
|
+
|
|
18
|
+
- the target branch could not be fetched from the repository (it was deleted,
|
|
19
|
+
or the fetch failed);
|
|
20
|
+
- the pull request's branch and its target share no history wardby could
|
|
21
|
+
find: the branches are unrelated, or their common commit is more than about
|
|
22
|
+
5,000 commits back;
|
|
23
|
+
- the merge itself failed for a reason other than a content conflict (content
|
|
24
|
+
conflicts are handed to the agent, not failed);
|
|
25
|
+
- the git on the machine that runs wardby is older than 2.38, which does not
|
|
26
|
+
support the `merge-tree --write-tree` form the merge uses.
|
|
27
|
+
|
|
28
|
+
Nothing is pushed and no agent work is lost, since the agent had not started.
|
|
29
|
+
|
|
30
|
+
## What to do
|
|
31
|
+
|
|
32
|
+
- Check the pull request's base branch on GitHub. Retarget it if the branch
|
|
33
|
+
it names no longer exists or is not the one it should merge into.
|
|
34
|
+
- For unrelated histories, merge the branches by hand once; later follow-ups
|
|
35
|
+
then find the merge base.
|
|
36
|
+
- A transient fetch failure succeeds on the next request.
|
|
37
|
+
- Upgrade the machine's git to 2.38 or newer (`git --version` shows it).
|
|
38
|
+
|
|
39
|
+
Related: [Conflict markers remain](merge-conflict.md),
|
|
40
|
+
[Continuation's pull request is no longer open](continuation-closed.md).
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: fix-merge-conflicts
|
|
3
|
+
title: Fix merge conflicts on a wardby pull request
|
|
4
|
+
summary: Follow-up runs merge the PR's current target branch first and resolve its conflicts; ask to update a PR that fell behind.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [github, pull-requests, merge-conflict, update-pr, target-branch, continuation, review_fix]
|
|
7
|
+
appliesTo: ">=0.7.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Fix merge conflicts on a wardby pull request
|
|
11
|
+
|
|
12
|
+
Every follow-up run on a pull request a wardby coding run opened (a mention on
|
|
13
|
+
the PR, a delegated `continuePriorRun`, a review fix round) first brings the
|
|
14
|
+
branch up to date with the branch the pull request **currently** targets:
|
|
15
|
+
|
|
16
|
+
1. Before the agent starts, wardby asks GitHub for the pull request's base
|
|
17
|
+
branch. A pull request retargeted since it opened (a stacked PR whose
|
|
18
|
+
parent merged, a release branch) merges its new base, not the one the
|
|
19
|
+
first run used.
|
|
20
|
+
2. wardby fetches that branch from the same repository (never a fork) and
|
|
21
|
+
merges it into the workspace, in trusted code, before the agent sees it.
|
|
22
|
+
A branch that already contains its target is left exactly as it was.
|
|
23
|
+
3. **No conflicts:** the agent works on the updated branch as usual.
|
|
24
|
+
**Conflicts:** the agent's task lists the conflicted files and which side
|
|
25
|
+
is which (this pull request's branch, then the target). It is asked to
|
|
26
|
+
resolve every conflict keeping both sides' intent, fix the tests the
|
|
27
|
+
combination broke, and run the repository's checks.
|
|
28
|
+
4. The push is one merge commit authored by Wardby, with the pull request's
|
|
29
|
+
head and the target as its parents. It is pushed even when the agent
|
|
30
|
+
changed nothing else, so asking a wardby agent on the pull request to
|
|
31
|
+
"update this PR" or "fix the merge conflicts" is enough.
|
|
32
|
+
5. The run's status comment on the pull request says what was merged, for
|
|
33
|
+
example "Merged `main` @ `1a2b3c4` into this branch; resolved conflicts
|
|
34
|
+
in 2 files."
|
|
35
|
+
|
|
36
|
+
## Ask to update this PR
|
|
37
|
+
|
|
38
|
+
Mention the wardby agent on the pull request with "please update this PR" or
|
|
39
|
+
"please fix the merge conflicts". The follow-up merges the target branch,
|
|
40
|
+
resolves any conflicts, and pushes the merge commit.
|
|
41
|
+
|
|
42
|
+
## What is checked
|
|
43
|
+
|
|
44
|
+
- **Conflict markers.** A file the merge left conflicted that still holds
|
|
45
|
+
conflict markers when the run finishes stops the push: the run fails with
|
|
46
|
+
category `merge_conflict` and nothing is pushed — see
|
|
47
|
+
[Conflict markers remain](errors/merge-conflict.md).
|
|
48
|
+
- **Protected paths and size limits** apply to the agent's own changes,
|
|
49
|
+
measured against the automatic merge: a change the target branch made to a
|
|
50
|
+
protected path is merged as it is, while resolving a conflict in a protected
|
|
51
|
+
path, or reverting the target's change to one, is an edit by the agent and
|
|
52
|
+
is refused as usual (see [Protected path](errors/protected-path.md)).
|
|
53
|
+
- **Someone else pushed meanwhile.** The push is still a fast-forward of the
|
|
54
|
+
head the run started from, so a push by anyone else in the meantime fails
|
|
55
|
+
the run the same way it did before, with nothing pushed.
|
|
56
|
+
- **No merge base.** A target branch that cannot be fetched, or shares no
|
|
57
|
+
history with the pull request, fails the run before the agent starts — see
|
|
58
|
+
[Target branch could not be merged](errors/target-merge.md).
|
|
59
|
+
|
|
60
|
+
## Limits
|
|
61
|
+
|
|
62
|
+
- Local repositories (`local:`) have no pull requests, so a continuation there
|
|
63
|
+
is not merged with anything.
|
|
64
|
+
- A conflicted file with no markers (a binary file, or one deleted on one side
|
|
65
|
+
and changed on the other) holds one side's version, or the changed version.
|
|
66
|
+
The agent is told to check it, but nothing stops it from leaving that version
|
|
67
|
+
as it is.
|
|
68
|
+
- A conflict in a protected path cannot be resolved by the agent: resolving it
|
|
69
|
+
is an edit to that path, which is refused. Resolve that file by hand and push.
|
|
70
|
+
|
|
71
|
+
Related: [Run GitHub code-review agents](code-review-agents.md),
|
|
72
|
+
[Automatic review fix rounds](review-fix-rounds.md),
|
|
73
|
+
[Related pull requests across repositories](related-pull-requests.md).
|