@wardby/cli 0.5.3 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +33 -0
- package/README.md +25 -14
- package/deploy/local/docker-compose.quickstart-coding.yml +13 -0
- package/dist/claude-coding-worker/context.d.ts +22 -0
- package/dist/claude-coding-worker/context.js +92 -0
- package/dist/claude-coding-worker/driver.d.ts +27 -3
- package/dist/claude-coding-worker/driver.js +161 -20
- package/dist/claude-coding-worker/main.js +34 -6
- package/dist/claude-coding-worker/sdk.js +25 -5
- package/dist/claude-coding-worker/tool-socket.d.ts +27 -0
- package/dist/claude-coding-worker/tool-socket.js +111 -0
- package/dist/claude-coding-worker/transcript.d.ts +18 -0
- package/dist/claude-coding-worker/transcript.js +77 -0
- package/dist/cli-help.d.ts +1 -1
- package/dist/cli-help.js +6 -2
- package/dist/cli-native-mode.d.ts +9 -0
- package/dist/cli-native-mode.js +20 -0
- package/dist/cli.d.ts +3 -1
- package/dist/cli.js +161 -11
- package/dist/coding/claude-context.d.ts +45 -0
- package/dist/coding/claude-context.js +434 -0
- package/dist/coding/continuation-wording.d.ts +35 -0
- package/dist/coding/continuation-wording.js +73 -0
- package/dist/coding/linked-issue-note.d.ts +23 -0
- package/dist/coding/linked-issue-note.js +47 -0
- package/dist/coding/merge-wording.d.ts +28 -0
- package/dist/coding/merge-wording.js +78 -0
- package/dist/coding/pr-description-note.d.ts +9 -0
- package/dist/coding/pr-description-note.js +32 -0
- package/dist/coding/profile.d.ts +50 -118
- package/dist/coding/profile.js +51 -4
- package/dist/coding/protected-path-wording.d.ts +8 -0
- package/dist/coding/protected-path-wording.js +1 -1
- package/dist/coding/protocol.d.ts +292 -270
- package/dist/coding/protocol.js +322 -15
- package/dist/coding/redact.d.ts +3 -0
- package/dist/coding/redact.js +12 -0
- package/dist/coding/registry/allowlist.d.ts +12 -0
- package/dist/coding/registry/allowlist.js +14 -1
- package/dist/coding/registry/audit-mode.d.ts +153 -0
- package/dist/coding/registry/audit-mode.js +304 -0
- package/dist/coding/registry/lockfile-shared.d.ts +36 -0
- package/dist/coding/registry/lockfile-shared.js +128 -0
- package/dist/coding/registry/lockfiles.js +1 -1
- package/dist/coding/registry/npm-lockfile-formats.d.ts +11 -0
- package/dist/coding/registry/npm-lockfile-formats.js +41 -0
- package/dist/coding/registry/npm-lockfile.d.ts +8 -4
- package/dist/coding/registry/npm-lockfile.js +4 -6
- package/dist/coding/registry/npm.js +78 -8
- package/dist/coding/registry/pnpm-lockfile.d.ts +17 -0
- package/dist/coding/registry/pnpm-lockfile.js +189 -0
- package/dist/coding/registry/pypi-plan.d.ts +50 -0
- package/dist/coding/registry/pypi-plan.js +406 -0
- package/dist/coding/registry/pypi-requirements.d.ts +58 -0
- package/dist/coding/registry/pypi-requirements.js +155 -0
- package/dist/coding/registry/pypi.d.ts +3 -27
- package/dist/coding/registry/pypi.js +40 -154
- package/dist/coding/registry/refusal-hints.d.ts +20 -0
- package/dist/coding/registry/refusal-hints.js +61 -0
- package/dist/coding/registry/refusal-wording.d.ts +11 -0
- package/dist/coding/registry/refusal-wording.js +56 -0
- package/dist/coding/registry/report.d.ts +70 -8
- package/dist/coding/registry/report.js +112 -5
- package/dist/coding/registry/types.d.ts +58 -8
- package/dist/coding/registry/yarn-lockfile.d.ts +30 -0
- package/dist/coding/registry/yarn-lockfile.js +367 -0
- package/dist/coding/services/catalog.d.ts +37 -351
- package/dist/coding/transcript/claude-code.d.ts +13 -0
- package/dist/coding/transcript/claude-code.js +273 -0
- package/dist/coding/transcript/download-protocol.d.ts +30 -0
- package/dist/coding/transcript/download-protocol.js +18 -0
- package/dist/coding/transcript/format.d.ts +20 -0
- package/dist/coding/transcript/format.js +32 -0
- package/dist/coding/transcript/recorder.d.ts +51 -0
- package/dist/coding/transcript/recorder.js +225 -0
- package/dist/coding/transcript/resume/checkout.d.ts +31 -0
- package/dist/coding/transcript/resume/checkout.js +203 -0
- package/dist/coding/transcript/resume/command.d.ts +17 -0
- package/dist/coding/transcript/resume/command.js +176 -0
- package/dist/coding/transcript/resume/download.d.ts +20 -0
- package/dist/coding/transcript/resume/download.js +153 -0
- package/dist/coding/transcript/resume/launch.d.ts +38 -0
- package/dist/coding/transcript/resume/launch.js +128 -0
- package/dist/coding/transcript/resume/session-file.d.ts +13 -0
- package/dist/coding/transcript/resume/session-file.js +79 -0
- package/dist/coding/transcript/resume/stand-in.d.ts +11 -0
- package/dist/coding/transcript/resume/stand-in.js +49 -0
- package/dist/coding-worker/artifact.d.ts +16 -3
- package/dist/coding-worker/artifact.js +5 -3
- package/dist/coding-worker/debug-trace.d.ts +6 -5
- package/dist/coding-worker/debug-trace.js +13 -18
- package/dist/coding-worker/dependency-cache.d.mts +229 -0
- package/dist/coding-worker/dependency-cache.mjs +2123 -0
- package/dist/coding-worker/driver.d.ts +4 -3
- package/dist/coding-worker/driver.js +118 -38
- package/dist/coding-worker/errors.d.ts +1 -0
- package/dist/coding-worker/errors.js +32 -0
- package/dist/coding-worker/sdk.d.ts +6 -0
- package/dist/coding-worker/sdk.js +1 -0
- package/dist/coding-worker/skills.d.ts +23 -0
- package/dist/coding-worker/skills.js +117 -0
- package/dist/coding-worker/task-note.d.ts +11 -0
- package/dist/coding-worker/task-note.js +13 -0
- package/dist/coding-worker/types.d.ts +13 -0
- package/dist/config/dependency-cache.d.ts +23 -0
- package/dist/config/dependency-cache.js +32 -0
- package/dist/config/github-allowed-accounts.d.ts +15 -0
- package/dist/config/github-allowed-accounts.js +36 -0
- package/dist/config/low-power.d.ts +12 -0
- package/dist/config/low-power.js +18 -0
- package/dist/config/mobile.d.ts +12 -0
- package/dist/config/mobile.js +18 -0
- package/dist/config/providers.d.ts +65 -3
- package/dist/config/providers.js +147 -11
- package/dist/config/test-simulators.d.ts +82 -0
- package/dist/config/test-simulators.js +305 -0
- package/dist/core/async-context.d.ts +2 -0
- package/dist/core/async-context.js +12 -0
- package/dist/core/budget-events.d.ts +108 -0
- package/dist/core/budget-events.js +346 -0
- package/dist/core/budget-groups.d.ts +50 -1
- package/dist/core/budget-groups.js +236 -27
- package/dist/core/budget-stopped-head.d.ts +46 -0
- package/dist/core/budget-stopped-head.js +81 -0
- package/dist/core/budget-topup.d.ts +51 -0
- package/dist/core/budget-topup.js +156 -0
- package/dist/core/budget-wording.d.ts +16 -2
- package/dist/core/budget-wording.js +40 -2
- package/dist/core/coding-queue.d.ts +2 -1
- package/dist/core/coding-queue.js +7 -0
- package/dist/core/cron.d.ts +19 -1
- package/dist/core/cron.js +17 -0
- package/dist/core/datastores.js +1 -1
- package/dist/core/db.d.ts +16 -6
- package/dist/core/db.js +12 -10
- package/dist/core/deferred-coding.d.ts +14 -0
- package/dist/core/deferred-coding.js +62 -0
- package/dist/core/delegation-child.d.ts +25 -0
- package/dist/core/delegation-child.js +37 -0
- package/dist/core/dispatch.d.ts +53 -0
- package/dist/core/dispatch.js +167 -57
- package/dist/core/engine-native.js +10 -6
- package/dist/core/error-code.d.ts +38 -0
- package/dist/core/error-code.js +168 -0
- package/dist/core/grants.d.ts +19 -6
- package/dist/core/grants.js +55 -6
- package/dist/core/host-events.d.ts +67 -5
- package/dist/core/host-events.js +571 -37
- package/dist/core/host-status.d.ts +85 -3
- package/dist/core/host-status.js +298 -20
- package/dist/core/issue-bridge.d.ts +50 -6
- package/dist/core/issue-bridge.js +151 -20
- package/dist/core/issue-events.d.ts +1 -1
- package/dist/core/issue-events.js +16 -11
- package/dist/core/issue-status.d.ts +1 -1
- package/dist/core/issue-status.js +68 -29
- package/dist/core/logger.d.ts +5 -0
- package/dist/core/logger.js +14 -1
- package/dist/core/lost-run-children.d.ts +6 -0
- package/dist/core/lost-run-children.js +32 -0
- package/dist/core/mark-ready.d.ts +34 -0
- package/dist/core/mark-ready.js +152 -0
- package/dist/core/markdown-code.d.ts +8 -0
- package/dist/core/markdown-code.js +107 -0
- package/dist/core/memory-tools.js +7 -0
- package/dist/core/merge-order-check.d.ts +130 -0
- package/dist/core/merge-order-check.js +343 -0
- package/dist/core/notification-dispatcher.d.ts +70 -0
- package/dist/core/notification-dispatcher.js +368 -0
- package/dist/core/notification-templates.d.ts +19 -0
- package/dist/core/notification-templates.js +139 -0
- package/dist/core/notifications.d.ts +10 -0
- package/dist/core/notifications.js +38 -0
- package/dist/core/pg-auth.d.ts +22 -0
- package/dist/core/pg-auth.js +152 -0
- package/dist/core/power-composition.d.ts +16 -0
- package/dist/core/power-composition.js +37 -0
- package/dist/core/power-idle.d.ts +14 -0
- package/dist/core/power-idle.js +30 -0
- package/dist/core/power.d.ts +71 -0
- package/dist/core/power.js +202 -0
- package/dist/core/pull-request-state-sync.js +2 -2
- package/dist/core/reconciler.d.ts +8 -5
- package/dist/core/reconciler.js +37 -6
- package/dist/core/related-pull-requests.d.ts +59 -7
- package/dist/core/related-pull-requests.js +140 -25
- package/dist/core/reply-parts.d.ts +21 -0
- package/dist/core/reply-parts.js +73 -0
- package/dist/core/repo-access.d.ts +15 -0
- package/dist/core/repo-access.js +66 -0
- package/dist/core/review-fix.d.ts +38 -1
- package/dist/core/review-fix.js +209 -7
- package/dist/core/review-host-checks.d.ts +1 -1
- package/dist/core/review-host-tools.d.ts +23 -0
- package/dist/core/review-host-tools.js +156 -14
- package/dist/core/review-reads.d.ts +55 -0
- package/dist/core/review-reads.js +233 -0
- package/dist/core/run-status.d.ts +12 -0
- package/dist/core/run-status.js +12 -0
- package/dist/core/runner.d.ts +384 -5
- package/dist/core/runner.js +1244 -372
- package/dist/core/schedule-start.d.ts +12 -0
- package/dist/core/schedule-start.js +14 -0
- package/dist/core/secret-broker-config.d.ts +39 -0
- package/dist/core/secret-broker-config.js +112 -0
- package/dist/core/secret-guard.d.ts +46 -0
- package/dist/core/secret-guard.js +104 -0
- package/dist/core/secret-guarded-stores.d.ts +12 -0
- package/dist/core/secret-guarded-stores.js +41 -0
- package/dist/core/secret-spans.d.ts +50 -0
- package/dist/core/secret-spans.js +94 -0
- package/dist/core/secrets.d.ts +39 -4
- package/dist/core/secrets.js +148 -40
- package/dist/core/stop-run.d.ts +46 -0
- package/dist/core/stop-run.js +61 -0
- package/dist/core/workflow-event-recorder.d.ts +14 -0
- package/dist/core/workflow-event-recorder.js +120 -0
- package/dist/core/workflow-events.d.ts +94 -0
- package/dist/core/workflow-events.js +48 -0
- package/dist/core/workflow-run-events.d.ts +18 -0
- package/dist/core/workflow-run-events.js +75 -0
- package/dist/core/zod-json-schema.d.ts +4 -0
- package/dist/core/zod-json-schema.js +39 -0
- package/dist/core/zod3-window.d.ts +35 -0
- package/dist/core/zod3-window.js +124 -0
- package/dist/generated/prisma/browser.d.ts +92 -3
- package/dist/generated/prisma/client.d.ts +92 -3
- package/dist/generated/prisma/commonInputTypes.d.ts +364 -54
- package/dist/generated/prisma/enums.d.ts +37 -0
- package/dist/generated/prisma/enums.js +31 -0
- package/dist/generated/prisma/internal/class.d.ts +132 -0
- package/dist/generated/prisma/internal/class.js +4 -4
- package/dist/generated/prisma/internal/prismaNamespace.d.ts +1332 -142
- package/dist/generated/prisma/internal/prismaNamespace.js +227 -5
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +234 -0
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +227 -5
- package/dist/generated/prisma/models/Agent.d.ts +464 -7
- package/dist/generated/prisma/models/AgentRepository.d.ts +42 -1
- package/dist/generated/prisma/models/CodingAgentProfile.d.ts +301 -1
- package/dist/generated/prisma/models/CodingProxyRequest.d.ts +207 -3
- package/dist/generated/prisma/models/CodingProxySession.d.ts +114 -1
- package/dist/generated/prisma/models/CodingRun.d.ts +1841 -1
- package/dist/generated/prisma/models/DeferredReview.d.ts +78 -1
- package/dist/generated/prisma/models/DependencySnapshot.d.ts +1668 -0
- package/dist/generated/prisma/models/DependencySnapshot.js +1 -0
- package/dist/generated/prisma/models/IssuePullRequest.d.ts +6 -2
- package/dist/generated/prisma/models/LocalReview.d.ts +40 -1
- package/dist/generated/prisma/models/NativeGatewayCall.d.ts +1713 -0
- package/dist/generated/prisma/models/NativeGatewayCall.js +1 -0
- package/dist/generated/prisma/models/NativeGatewaySession.d.ts +1551 -0
- package/dist/generated/prisma/models/NativeGatewaySession.js +1 -0
- package/dist/generated/prisma/models/NativeWarmWorker.d.ts +1296 -0
- package/dist/generated/prisma/models/NativeWarmWorker.js +1 -0
- package/dist/generated/prisma/models/NotificationChannel.d.ts +1543 -0
- package/dist/generated/prisma/models/NotificationChannel.js +1 -0
- package/dist/generated/prisma/models/NotificationDelivery.d.ts +1502 -0
- package/dist/generated/prisma/models/NotificationDelivery.js +1 -0
- package/dist/generated/prisma/models/NotificationThread.d.ts +1090 -0
- package/dist/generated/prisma/models/NotificationThread.js +1 -0
- package/dist/generated/prisma/models/RegistryAllowance.d.ts +41 -1
- package/dist/generated/prisma/models/RegistryApprovedVersion.d.ts +75 -1
- package/dist/generated/prisma/models/RegistryAuditRecord.d.ts +1364 -0
- package/dist/generated/prisma/models/RegistryAuditRecord.js +1 -0
- package/dist/generated/prisma/models/Run.d.ts +1619 -58
- package/dist/generated/prisma/models/RunBudgetEvent.d.ts +1211 -0
- package/dist/generated/prisma/models/RunBudgetEvent.js +1 -0
- package/dist/generated/prisma/models/RunHostCheck.d.ts +36 -1
- package/dist/generated/prisma/models/RunTranscript.d.ts +1339 -0
- package/dist/generated/prisma/models/RunTranscript.js +1 -0
- package/dist/generated/prisma/models/Secret.d.ts +37 -1
- package/dist/generated/prisma/models/SecretBrokerChange.d.ts +1101 -0
- package/dist/generated/prisma/models/SecretBrokerChange.js +1 -0
- package/dist/generated/prisma/models/WorkflowEvent.d.ts +1422 -0
- package/dist/generated/prisma/models/WorkflowEvent.js +1 -0
- package/dist/generated/prisma/models.d.ts +12 -0
- package/dist/help/build.js +4 -2
- package/dist/help/catalog.d.ts +1 -1
- package/dist/help/catalog.js +31 -6
- package/dist/help-index.json +2584 -146
- package/dist/import/create.js +49 -3
- package/dist/import/neutral-schema.d.ts +50 -277
- package/dist/import/neutral-schema.js +7 -4
- package/dist/knowledge/check.d.ts +1 -1
- package/dist/knowledge/cli.d.ts +11 -1
- package/dist/knowledge/cli.js +37 -4
- package/dist/knowledge/concept.d.ts +3 -19
- package/dist/knowledge/location.d.ts +31 -0
- package/dist/knowledge/location.js +78 -0
- package/dist/mcp/auth/access.d.ts +11 -2
- package/dist/mcp/auth/access.js +15 -1
- package/dist/mcp/auth/ownership.d.ts +7 -7
- package/dist/mcp/auth/repo-authorization.js +14 -0
- package/dist/mcp/auth/resource-server.d.ts +2 -1
- package/dist/mcp/auth/resource-server.js +7 -2
- package/dist/mcp/auth/self-hosted/browser.d.ts +1 -1
- package/dist/mcp/auth/self-hosted/browser.js +19 -6
- package/dist/mcp/auth/self-hosted/credentials.d.ts +3 -3
- package/dist/mcp/auth/self-hosted/session.d.ts +2 -2
- package/dist/mcp/context.d.ts +6 -0
- package/dist/mcp/host-events/github-ingress.d.ts +25 -1
- package/dist/mcp/host-events/github-ingress.js +70 -1
- package/dist/mcp/index.d.ts +19 -0
- package/dist/mcp/index.js +117 -20
- package/dist/mcp/server.d.ts +13 -0
- package/dist/mcp/server.js +33 -14
- package/dist/mcp/tools/agents.d.ts +4 -0
- package/dist/mcp/tools/agents.js +277 -24
- package/dist/mcp/tools/datastore.js +17 -8
- package/dist/mcp/tools/grants.js +9 -3
- package/dist/mcp/tools/memory.js +11 -1
- package/dist/mcp/tools/notification-channels.d.ts +2 -0
- package/dist/mcp/tools/notification-channels.js +293 -0
- package/dist/mcp/tools/packages.d.ts +2 -0
- package/dist/mcp/tools/packages.js +195 -0
- package/dist/mcp/tools/power.d.ts +2 -0
- package/dist/mcp/tools/power.js +77 -0
- package/dist/mcp/tools/repositories.js +18 -5
- package/dist/mcp/tools/run-access.d.ts +16 -0
- package/dist/mcp/tools/run-access.js +25 -0
- package/dist/mcp/tools/run-transcript-download.d.ts +30 -0
- package/dist/mcp/tools/run-transcript-download.js +129 -0
- package/dist/mcp/tools/run-transcript.d.ts +19 -0
- package/dist/mcp/tools/run-transcript.js +70 -0
- package/dist/mcp/tools/runs.d.ts +0 -6
- package/dist/mcp/tools/runs.js +41 -14
- package/dist/mcp/tools/scheduling.js +3 -1
- package/dist/mcp/tools/secret-broker-compat.d.ts +12 -0
- package/dist/mcp/tools/secret-broker-compat.js +23 -0
- package/dist/mcp/tools/secret-elicitation-form.d.ts +22 -2
- package/dist/mcp/tools/secret-elicitation-form.js +205 -10
- package/dist/mcp/tools/secret-elicitation-server.d.ts +6 -0
- package/dist/mcp/tools/secret-elicitation-server.js +10 -54
- package/dist/mcp/tools/secret-elicitation.d.ts +38 -3
- package/dist/mcp/tools/secret-elicitation.js +110 -12
- package/dist/mcp/tools/secrets.js +186 -9
- package/dist/mcp/tools/stop-run.d.ts +2 -0
- package/dist/mcp/tools/stop-run.js +82 -0
- package/dist/mcp/tools/subagents.js +2 -2
- package/dist/mcp/tools/tools.d.ts +2 -2
- package/dist/mcp/tools/tools.js +47 -11
- package/dist/mcp/transport/stdio-link-host.d.ts +20 -0
- package/dist/mcp/transport/stdio-link-host.js +67 -0
- package/dist/mcp/transport/streamable-http.d.ts +13 -0
- package/dist/mcp/transport/streamable-http.js +41 -1
- package/dist/native-worker/composition.d.ts +23 -0
- package/dist/native-worker/composition.js +77 -0
- package/dist/native-worker/docker-isolation.d.ts +65 -0
- package/dist/native-worker/docker-isolation.js +183 -0
- package/dist/native-worker/docker-launcher.d.ts +110 -0
- package/dist/native-worker/docker-launcher.js +297 -0
- package/dist/native-worker/gateway-server.d.ts +77 -0
- package/dist/native-worker/gateway-server.js +412 -0
- package/dist/native-worker/gateway.d.ts +70 -0
- package/dist/native-worker/gateway.js +263 -0
- package/dist/native-worker/http-server.d.ts +24 -0
- package/dist/native-worker/http-server.js +113 -0
- package/dist/native-worker/http-transport.d.ts +17 -0
- package/dist/native-worker/http-transport.js +88 -0
- package/dist/native-worker/kubernetes-isolation.d.ts +90 -0
- package/dist/native-worker/kubernetes-isolation.js +218 -0
- package/dist/native-worker/kubernetes-launcher.d.ts +106 -0
- package/dist/native-worker/kubernetes-launcher.js +375 -0
- package/dist/native-worker/launch.d.ts +62 -0
- package/dist/native-worker/launch.js +49 -0
- package/dist/native-worker/ledger.d.ts +125 -0
- package/dist/native-worker/ledger.js +245 -0
- package/dist/native-worker/loopback.d.ts +12 -0
- package/dist/native-worker/loopback.js +44 -0
- package/dist/native-worker/main.d.ts +8 -0
- package/dist/native-worker/main.js +85 -0
- package/dist/native-worker/protocol.d.ts +296 -0
- package/dist/native-worker/protocol.js +246 -0
- package/dist/native-worker/sandbox-executor.d.ts +83 -0
- package/dist/native-worker/sandbox-executor.js +284 -0
- package/dist/native-worker/stderr-redaction.d.ts +77 -0
- package/dist/native-worker/stderr-redaction.js +237 -0
- package/dist/native-worker/stdio.d.ts +29 -0
- package/dist/native-worker/stdio.js +189 -0
- package/dist/native-worker/warm-delivery.d.ts +16 -0
- package/dist/native-worker/warm-delivery.js +33 -0
- package/dist/native-worker/warm-pool-ledger.d.ts +39 -0
- package/dist/native-worker/warm-pool-ledger.js +73 -0
- package/dist/native-worker/warm-pool.d.ts +107 -0
- package/dist/native-worker/warm-pool.js +283 -0
- package/dist/native-worker/worker.d.ts +17 -0
- package/dist/native-worker/worker.js +141 -0
- package/dist/observability/metrics.js +6 -1
- package/dist/providers/auth/authorization-server.d.ts +3 -0
- package/dist/providers/auth/index.js +2 -0
- package/dist/providers/auth/self-hosted.d.ts +14 -2
- package/dist/providers/auth/self-hosted.js +54 -4
- package/dist/providers/chat/fake.d.ts +46 -0
- package/dist/providers/chat/fake.js +39 -0
- package/dist/providers/chat/index.d.ts +4 -0
- package/dist/providers/chat/index.js +8 -0
- package/dist/providers/chat/slack.d.ts +37 -0
- package/dist/providers/chat/slack.js +105 -0
- package/dist/providers/chat/types.d.ts +42 -0
- package/dist/providers/chat/types.js +19 -0
- package/dist/providers/coding-proxy/dependency-cache/eviction.d.ts +29 -0
- package/dist/providers/coding-proxy/dependency-cache/eviction.js +87 -0
- package/dist/providers/coding-proxy/dependency-cache/key.d.ts +33 -0
- package/dist/providers/coding-proxy/dependency-cache/key.js +86 -0
- package/dist/providers/coding-proxy/dependency-cache/model-request-seal.d.ts +18 -0
- package/dist/providers/coding-proxy/dependency-cache/model-request-seal.js +40 -0
- package/dist/providers/coding-proxy/dependency-cache/prisma-store.d.ts +25 -0
- package/dist/providers/coding-proxy/dependency-cache/prisma-store.js +131 -0
- package/dist/providers/coding-proxy/dependency-cache/service.d.ts +70 -0
- package/dist/providers/coding-proxy/dependency-cache/service.js +409 -0
- package/dist/providers/coding-proxy/dependency-cache/store.d.ts +85 -0
- package/dist/providers/coding-proxy/dependency-cache/store.js +95 -0
- package/dist/providers/coding-proxy/hold.d.ts +32 -0
- package/dist/providers/coding-proxy/hold.js +86 -0
- package/dist/providers/coding-proxy/interrupted.d.ts +70 -0
- package/dist/providers/coding-proxy/interrupted.js +104 -0
- package/dist/providers/coding-proxy/memory-ledger.d.ts +15 -2
- package/dist/providers/coding-proxy/memory-ledger.js +84 -8
- package/dist/providers/coding-proxy/metering.d.ts +16 -0
- package/dist/providers/coding-proxy/metering.js +27 -4
- package/dist/providers/coding-proxy/prisma-ledger.d.ts +15 -2
- package/dist/providers/coding-proxy/prisma-ledger.js +179 -67
- package/dist/providers/coding-proxy/proxy.d.ts +14 -1
- package/dist/providers/coding-proxy/proxy.js +166 -14
- package/dist/providers/coding-proxy/registry/audit.d.ts +53 -10
- package/dist/providers/coding-proxy/registry/audit.js +94 -17
- package/dist/providers/coding-proxy/registry/lockfile-parse-worker.d.ts +36 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse-worker.js +67 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse.d.ts +16 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse.js +110 -0
- package/dist/providers/coding-proxy/registry/plan.d.ts +9 -0
- package/dist/providers/coding-proxy/registry/plan.js +201 -48
- package/dist/providers/coding-proxy/registry/prisma-store.d.ts +11 -5
- package/dist/providers/coding-proxy/registry/prisma-store.js +120 -17
- package/dist/providers/coding-proxy/registry/service.d.ts +97 -16
- package/dist/providers/coding-proxy/registry/service.js +579 -112
- package/dist/providers/coding-proxy/registry/store.d.ts +84 -9
- package/dist/providers/coding-proxy/registry/store.js +54 -1
- package/dist/providers/coding-proxy/runtime.d.ts +4 -0
- package/dist/providers/coding-proxy/runtime.js +78 -16
- package/dist/providers/coding-proxy/server.d.ts +6 -1
- package/dist/providers/coding-proxy/server.js +45 -1
- package/dist/providers/coding-proxy/types.d.ts +65 -1
- package/dist/providers/datastore/types.d.ts +5 -0
- package/dist/providers/engine/types.d.ts +36 -2
- package/dist/providers/engine/types.js +39 -0
- package/dist/providers/executor/composition.d.ts +31 -1
- package/dist/providers/executor/composition.js +81 -8
- package/dist/providers/executor/container.d.ts +385 -9
- package/dist/providers/executor/container.js +1234 -99
- package/dist/providers/executor/dbos-status.d.ts +31 -0
- package/dist/providers/executor/dbos-status.js +64 -0
- package/dist/providers/executor/dbos.d.ts +91 -0
- package/dist/providers/executor/dbos.js +319 -26
- package/dist/providers/executor/deferred.d.ts +44 -0
- package/dist/providers/executor/deferred.js +100 -0
- package/dist/providers/executor/in-process.d.ts +9 -1
- package/dist/providers/executor/in-process.js +14 -4
- package/dist/providers/executor/linked-issue-reader.d.ts +16 -0
- package/dist/providers/executor/linked-issue-reader.js +30 -0
- package/dist/providers/executor/routing.d.ts +39 -10
- package/dist/providers/executor/routing.js +77 -32
- package/dist/providers/executor/types.d.ts +25 -0
- package/dist/providers/index.d.ts +2 -1
- package/dist/providers/issue-tracker/types.d.ts +17 -0
- package/dist/providers/issue-tracker/types.js +39 -1
- package/dist/providers/jobs/claude-tool-setup.d.ts +4 -0
- package/dist/providers/jobs/claude-tool-setup.js +5 -2
- package/dist/providers/jobs/docker-isolation.d.ts +8 -0
- package/dist/providers/jobs/docker-isolation.js +17 -0
- package/dist/providers/jobs/docker.d.ts +1 -0
- package/dist/providers/jobs/docker.js +29 -4
- package/dist/providers/jobs/fake-kubernetes-api.d.ts +23 -2
- package/dist/providers/jobs/fake-kubernetes-api.js +45 -1
- package/dist/providers/jobs/kubernetes-api.d.ts +25 -1
- package/dist/providers/jobs/kubernetes-api.js +17 -0
- package/dist/providers/jobs/kubernetes-client.d.ts +10 -1
- package/dist/providers/jobs/kubernetes-client.js +61 -3
- package/dist/providers/jobs/kubernetes-dry-run-fixture.d.ts +6 -1
- package/dist/providers/jobs/kubernetes-dry-run-fixture.js +6 -3
- package/dist/providers/jobs/kubernetes-isolation.d.ts +5 -1
- package/dist/providers/jobs/kubernetes-isolation.js +23 -1
- package/dist/providers/jobs/kubernetes-platform.d.ts +4 -1
- package/dist/providers/jobs/kubernetes-platform.js +38 -1
- package/dist/providers/jobs/kubernetes-preflight.d.ts +2 -1
- package/dist/providers/jobs/kubernetes-preflight.js +4 -2
- package/dist/providers/jobs/kubernetes.d.ts +42 -2
- package/dist/providers/jobs/kubernetes.js +178 -19
- package/dist/providers/jobs/metadata-probes.d.ts +11 -0
- package/dist/providers/jobs/metadata-probes.js +13 -0
- package/dist/providers/jobs/types.d.ts +42 -0
- package/dist/providers/jobs/types.js +13 -1
- package/dist/providers/llm/anthropic.js +5 -1
- package/dist/providers/llm/bedrock.d.ts +0 -12
- package/dist/providers/llm/bedrock.js +4 -0
- package/dist/providers/llm/claude-messages.d.ts +3 -1
- package/dist/providers/llm/claude-messages.js +4 -1
- package/dist/providers/llm/claude-provider.d.ts +2 -2
- package/dist/providers/llm/claude-provider.js +2 -2
- package/dist/providers/llm/openai.d.ts +2 -2
- package/dist/providers/llm/openai.js +6 -2
- package/dist/providers/llm/routing.d.ts +2 -2
- package/dist/providers/llm/routing.js +2 -2
- package/dist/providers/llm/types.d.ts +12 -2
- package/dist/providers/review-host/github-events.d.ts +9 -1
- package/dist/providers/review-host/github-events.js +34 -12
- package/dist/providers/review-host/github.d.ts +39 -2
- package/dist/providers/review-host/github.js +274 -29
- package/dist/providers/review-host/local.d.ts +8 -4
- package/dist/providers/review-host/local.js +49 -31
- package/dist/providers/review-host/patch-pages.d.ts +41 -0
- package/dist/providers/review-host/patch-pages.js +176 -0
- package/dist/providers/review-host/review-format.d.ts +19 -1
- package/dist/providers/review-host/review-format.js +38 -7
- package/dist/providers/review-host/types.d.ts +157 -2
- package/dist/providers/review-host/types.js +8 -0
- package/dist/providers/storage/gcs.d.ts +63 -0
- package/dist/providers/storage/gcs.js +69 -0
- package/dist/providers/storage/index.d.ts +15 -0
- package/dist/providers/storage/index.js +14 -0
- package/dist/providers/storage/local.d.ts +24 -0
- package/dist/providers/storage/local.js +92 -0
- package/dist/providers/storage/meter.d.ts +14 -0
- package/dist/providers/storage/meter.js +34 -0
- package/dist/providers/storage/s3.d.ts +41 -0
- package/dist/providers/storage/s3.js +107 -0
- package/dist/providers/storage/types.d.ts +37 -3
- package/dist/providers/storage/types.js +21 -4
- package/dist/providers/vcs/git.d.ts +33 -2
- package/dist/providers/vcs/git.js +324 -22
- package/dist/providers/vcs/github-remote.d.ts +26 -3
- package/dist/providers/vcs/github-remote.js +124 -14
- package/dist/providers/vcs/github.d.ts +246 -12
- package/dist/providers/vcs/github.js +521 -61
- package/dist/providers/vcs/index.js +8 -1
- package/dist/providers/vcs/pr-description.d.ts +127 -0
- package/dist/providers/vcs/pr-description.js +270 -0
- package/dist/providers/vcs/remote.d.ts +33 -1
- package/dist/providers/vcs/routing.d.ts +4 -2
- package/dist/providers/vcs/routing.js +6 -0
- package/dist/providers/vcs/types.d.ts +80 -3
- package/dist/quickstart/coding-seed.d.ts +21 -3
- package/dist/quickstart/coding-seed.js +283 -3
- package/dist/quickstart/images.d.ts +2 -0
- package/dist/quickstart/images.js +7 -1
- package/dist/quickstart/reviewer-prompt.d.ts +1 -1
- package/dist/quickstart/reviewer-prompt.js +6 -6
- package/dist/quickstart-images.json +1 -1
- package/dist/sandbox/brokered-fetch.d.ts +23 -0
- package/dist/sandbox/brokered-fetch.js +37 -0
- package/dist/sandbox/generated/zod.bundle.js +62 -1
- package/dist/sandbox/generated/zod3.bundle.js +5 -0
- package/dist/sandbox/host-functions.d.ts +35 -0
- package/dist/sandbox/host-functions.js +150 -91
- package/dist/sandbox/prelude.js +7 -1
- package/dist/sandbox/run-in-sandbox.d.ts +19 -0
- package/dist/sandbox/run-in-sandbox.js +28 -10
- package/dist/sandbox/safe-fetch.d.ts +2 -0
- package/dist/sandbox/safe-fetch.js +3 -1
- package/dist/sandbox/secret-broker-sigv4.d.ts +2 -0
- package/dist/sandbox/secret-broker-sigv4.js +49 -0
- package/dist/sandbox/secret-broker.d.ts +34 -0
- package/dist/sandbox/secret-broker.js +161 -0
- package/dist/sandbox/tool-capabilities.d.ts +10 -30
- package/dist/sandbox/user-tool.d.ts +14 -0
- package/dist/sandbox/user-tool.js +32 -0
- package/dist/sandbox/zod-params.d.ts +37 -5
- package/dist/sandbox/zod-params.js +181 -26
- package/dist/serve.js +25 -0
- package/dist/viewer/api-schema.d.ts +372 -2454
- package/dist/viewer/api-schema.js +29 -0
- package/dist/viewer/build-schemas.js +10 -3
- package/dist/viewer/event-bus.d.ts +6 -0
- package/dist/viewer/event-bus.js +16 -7
- package/dist/viewer/graph.d.ts +5 -2
- package/dist/viewer/graph.js +7 -2
- package/dist/viewer/http.d.ts +0 -1
- package/dist/viewer/http.js +2 -2
- package/dist/viewer/infra.js +25 -2
- package/dist/viewer/limits.d.ts +4 -0
- package/dist/viewer/limits.js +4 -0
- package/dist/viewer/openapi.d.ts +15 -0
- package/dist/viewer/openapi.js +170 -0
- package/dist/wardby-bin.js +10 -0
- package/docs/README.md +7 -0
- package/docs/agent-recipes.md +114 -27
- package/docs/architecture-runtime.md +16 -1
- package/docs/code-review-agents.md +689 -45
- package/docs/coding-agent-setup.md +602 -12
- package/docs/coding-packages.md +1037 -92
- package/docs/coding-services.md +30 -13
- package/docs/coding-worker-byo-images.md +218 -6
- package/docs/coding-worker-isolation.md +173 -44
- package/docs/getting-started-gke.md +332 -129
- package/docs/getting-started-identity-provider.md +31 -11
- package/docs/getting-started.md +14 -4
- package/docs/jira-agents.md +22 -9
- package/docs/knowledge/blob-not-found-semantics.md +41 -0
- package/docs/knowledge/bounded-file-descriptor.md +52 -0
- package/docs/knowledge/delegation-admission-slots.md +52 -0
- package/docs/knowledge/http-dispatcher-bootstrap.md +61 -0
- package/docs/knowledge/import-rename-target.md +52 -0
- package/docs/knowledge/index.md +57 -0
- package/docs/knowledge/log.md +9 -0
- package/docs/knowledge/mcp-cancelled-task-precedence.md +41 -0
- package/docs/knowledge/mcp-http-prompt-discovery.md +41 -0
- package/docs/knowledge/mcp-schema-module-boundary.md +41 -0
- package/docs/knowledge/nullable-tool-uniqueness.md +52 -0
- package/docs/knowledge/overview-cli.md +74 -0
- package/docs/knowledge/overview-coding-proxy.md +72 -0
- package/docs/knowledge/overview-coding.md +72 -0
- package/docs/knowledge/overview-config.md +60 -0
- package/docs/knowledge/overview-core.md +72 -0
- package/docs/knowledge/overview-deploy.md +83 -0
- package/docs/knowledge/overview-mcp.md +61 -0
- package/docs/knowledge/overview-prisma.md +72 -0
- package/docs/knowledge/overview-providers.md +89 -0
- package/docs/knowledge/overview-sandbox.md +83 -0
- package/docs/knowledge/overview-surfaces.md +83 -0
- package/docs/knowledge/private-datastore-shared-boundary.md +54 -0
- package/docs/knowledge/proxy-settlement-projections.md +41 -0
- package/docs/knowledge/run-pricing-first-writer.md +43 -0
- package/docs/knowledge/schedule-claim-transaction.md +41 -0
- package/docs/knowledge/secret-entry-replica-contract.md +52 -0
- package/docs/knowledge/terminal-run-first-writer.md +41 -0
- package/docs/knowledge/transactional-agent-authorization.md +52 -0
- package/docs/knowledge/viewer-notify-write-isolation.md +30 -0
- package/docs/knowledge/warm-input-publication.md +30 -0
- package/docs/knowledge/workspace-staging-failure.md +54 -0
- package/docs/knowledge.md +54 -14
- package/docs/native-sandbox.md +731 -0
- package/docs/observability.md +4 -0
- package/docs/release-verification.md +9 -0
- package/docs/security-deployment.md +146 -14
- package/docs/slack-notifications.md +268 -0
- package/docs/tool-secrets.md +284 -0
- package/docs/viewer-api.md +46 -5
- package/docs/viewer-api.openapi.yml +1404 -0
- package/help/admin-viewer.md +29 -3
- package/help/agent-recipes.md +27 -0
- package/help/architecture-agent.md +11 -6
- package/help/brokered-secrets.md +79 -0
- package/help/build-claude-code-image.md +131 -0
- package/help/build-worker-image.md +6 -7
- package/help/builder-agent.md +19 -6
- package/help/code-review-agents.md +243 -10
- package/help/coding-packages.md +156 -6
- package/help/cost-attribution.md +9 -5
- package/help/creating-agents.md +14 -1
- package/help/dependency-cache.md +143 -0
- package/help/deploy-gke.md +23 -9
- package/help/deployment-targets.md +25 -14
- package/help/errors/budget-exhausted.md +187 -0
- package/help/errors/budget-group-exhausted.md +5 -1
- package/help/errors/coding-provider-not-configured.md +2 -2
- package/help/errors/coding-stream-quota-exceeded.md +33 -0
- package/help/errors/coding-workspace-disk-exceeds-limit.md +39 -0
- package/help/errors/continuation-closed.md +9 -12
- package/help/errors/database-auth-invalid.md +28 -0
- package/help/errors/delegation-conflict.md +24 -0
- package/help/errors/file-list-truncated.md +45 -0
- package/help/errors/full-read-required.md +49 -0
- package/help/errors/github-account-not-allowed.md +29 -0
- package/help/errors/graph-incomplete.md +43 -0
- package/help/errors/graph-limit.md +43 -0
- package/help/errors/low-power-disabled.md +29 -0
- package/help/errors/low-power-scale-forbidden.md +35 -0
- package/help/errors/low-power-wake-timeout.md +30 -0
- package/help/errors/merge-conflict.md +49 -0
- package/help/errors/mobile-disabled.md +31 -0
- package/help/errors/native-sandbox-capacity.md +22 -0
- package/help/errors/native-sandbox-deadline-exceeded.md +19 -0
- package/help/errors/native-sandbox-docker-failed.md +20 -0
- package/help/errors/native-sandbox-gateway-error.md +20 -0
- package/help/errors/native-sandbox-gateway-unavailable.md +21 -0
- package/help/errors/native-sandbox-image-not-pinned.md +19 -0
- package/help/errors/native-sandbox-isolation-mismatch.md +20 -0
- package/help/errors/native-sandbox-launch-abandoned.md +21 -0
- package/help/errors/native-sandbox-network-unenforced.md +22 -0
- package/help/errors/native-sandbox-requires-catalog.md +31 -0
- package/help/errors/native-sandbox-unavailable.md +19 -0
- package/help/errors/native-sandbox-warm-delivery-failed.md +21 -0
- package/help/errors/native-sandbox-worker-exited.md +21 -0
- package/help/errors/native-sandbox-worker-lost.md +20 -0
- package/help/errors/native-sandbox-worker-unready.md +22 -0
- package/help/errors/package-not-allowed-pending.md +52 -0
- package/help/errors/package-not-allowed.md +51 -0
- package/help/errors/package-refusals.md +43 -0
- package/help/errors/patch-cursor-malformed.md +31 -0
- package/help/errors/run-lost.md +39 -0
- package/help/errors/run-transcript-download.md +44 -0
- package/help/errors/secret-broker-body-invalid.md +26 -0
- package/help/errors/secret-broker-changed.md +20 -0
- package/help/errors/secret-broker-config-invalid.md +30 -0
- package/help/errors/secret-broker-conflict.md +27 -0
- package/help/errors/secret-broker-destination-denied.md +28 -0
- package/help/errors/secret-broker-value-invalid.md +28 -0
- package/help/errors/secret-brokered.md +24 -0
- package/help/errors/secret-in-value.md +69 -0
- package/help/errors/secret-not-brokered.md +25 -0
- package/help/errors/slack-auth-failed.md +48 -0
- package/help/errors/slack-channel-unreachable.md +39 -0
- package/help/errors/slack-not-configured.md +33 -0
- package/help/errors/target-merge.md +40 -0
- package/help/fix-merge-conflicts.md +73 -0
- package/help/getting-started.md +4 -5
- package/help/github-app-setup.md +132 -0
- package/help/github.md +40 -1
- package/help/identity-and-access.md +7 -1
- package/help/jira.md +23 -6
- package/help/knowledge.md +16 -7
- package/help/local-repositories.md +3 -4
- package/help/low-power-mode.md +131 -0
- package/help/merge-order-check.md +122 -0
- package/help/mobile-app.md +54 -0
- package/help/native-capabilities.md +29 -1
- package/help/native-sandbox.md +150 -0
- package/help/observability.md +8 -0
- package/help/operating-agents.md +5 -0
- package/help/package-audit-mode.md +91 -0
- package/help/related-pull-requests.md +80 -16
- package/help/repo-instructions-and-skills.md +91 -0
- package/help/resume-runs-locally.md +131 -0
- package/help/review-fix-rounds.md +43 -1
- package/help/sharing-agents.md +59 -0
- package/help/slack-notifications.md +76 -0
- package/help/status-comments.md +31 -0
- package/help/stop-run.md +58 -0
- package/help/troubleshooting/budgets.md +28 -0
- package/help/troubleshooting/coding-workers.md +99 -7
- package/package.json +27 -13
- package/prisma/migrations/20261009000003_native_execution_mode/migration.sql +12 -0
- package/prisma/migrations/20261009000004_native_gateway_ledger/migration.sql +65 -0
- package/prisma/migrations/20261009000005_native_gateway_call_child_agent/migration.sql +5 -0
- package/prisma/migrations/20261009000006_run_deferred_start_stop/migration.sql +14 -0
- package/prisma/migrations/20261009000007_native_gateway_network_ready/migration.sql +5 -0
- package/prisma/migrations/20261010000001_workflow_notifications/migration.sql +99 -0
- package/prisma/migrations/20261011000001_native_gateway_session_status_index/migration.sql +2 -0
- package/prisma/migrations/20261012000001_native_warm_worker/migration.sql +32 -0
- package/prisma/migrations/20261013000001_coding_run_merge_order/migration.sql +2 -0
- package/prisma/migrations/20261013000001_secret_broker/migration.sql +17 -0
- package/prisma/migrations/20261013000002_deferred_review_request/migration.sql +4 -0
- package/prisma/migrations/20261014000000_repo_skills/migration.sql +15 -0
- package/prisma/migrations/20261015000001_coding_run_merge_order_index/migration.sql +2 -0
- package/prisma/migrations/20261015000002_no_change_rereview/migration.sql +2 -0
- package/prisma/migrations/20261016000000_registry_approved_accepted_advisories/migration.sql +3 -0
- package/prisma/migrations/20261016000001_mark_ready_when_passing/migration.sql +3 -0
- package/prisma/migrations/20261017000000_debug_trace_max_mb/migration.sql +4 -0
- package/prisma/migrations/20261018000000_dependency_cache/migration.sql +53 -0
- package/prisma/migrations/20261019000000_claude_max_output_tokens/migration.sql +5 -0
- package/prisma/migrations/20261021000000_pr_description_hash/migration.sql +4 -0
- package/prisma/migrations/20261022000000_dependency_snapshot_validation_metadata/migration.sql +4 -0
- package/prisma/migrations/20261023000000_package_audit_mode/migration.sql +27 -0
- package/prisma/migrations/20261024000000_budget_events/migration.sql +26 -0
- package/prisma/migrations/20261025000000_cache_aware_holds/migration.sql +9 -0
- package/prisma/migrations/20261026000000_budget_overrun/migration.sql +4 -0
- package/prisma/migrations/20261027000000_coding_run_request/migration.sql +1 -0
- package/prisma/migrations/20261028000000_native_gateway_review_reads/migration.sql +6 -0
- package/prisma/migrations/20261029000000_lead_survives_deploy/migration.sql +6 -0
- package/prisma/migrations/20261030000000_local_review_covered_sha/migration.sql +2 -0
- package/prisma/migrations/20261031000000_coding_run_budget_limit/migration.sql +9 -0
- package/prisma/migrations/20261101000000_run_transcripts/migration.sql +22 -0
- package/prisma/schema.prisma +631 -146
- package/dist/sandbox/generated/zod-to-json-schema.bundle.js +0 -5
|
@@ -3,7 +3,7 @@ id: code-review-agents
|
|
|
3
3
|
title: Run GitHub code-review agents
|
|
4
4
|
summary: Link a read-only review agent to a repository for pull-request checks and trusted mention workflows.
|
|
5
5
|
audience: operator
|
|
6
|
-
tags: [github, code-review, pull-requests, webhooks, ci, checks, waitForCi]
|
|
6
|
+
tags: [github, code-review, skipped-review, budget-stopped-draft, continue-draft, follow-up, pull-requests, webhooks, ci, checks, waitForCi, markReadyWhenPassing, repo_issue_read, issues, mentions, code-spans, contributor, acceptance-criteria, jira, large-pull-request, truncated, patchCursor, unread_files]
|
|
7
7
|
appliesTo: >=0.2.1
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -39,9 +39,100 @@ such a pull request automatically, up to a round cap — see
|
|
|
39
39
|
[Automatic review fix rounds](review-fix-rounds.md).
|
|
40
40
|
|
|
41
41
|
Wardby skips pull requests whose head is in a fork. It also ignores mentions
|
|
42
|
-
from bots and people without write access
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
from bots and people without write access, checked against the author's real
|
|
43
|
+
repository permission. Someone with `triage` access, or with `read` access on a private repository
|
|
44
|
+
or as an owner, member or collaborator, gets a 😕 reaction and a reply saying
|
|
45
|
+
a mention needs write access; anyone else, including a stranger on a public
|
|
46
|
+
repository, is ignored silently. A private organization member, whom GitHub labels
|
|
47
|
+
`CONTRIBUTOR` or `NONE`, is still checked and can start runs. A mention inside
|
|
48
|
+
Markdown code (an inline code span or a code block) is not a request, so
|
|
49
|
+
quoting `` `@<app-slug>` `` in an issue or comment starts nothing. Repository links
|
|
50
|
+
require the agent owner's linked GitHub access, or an explicitly recorded
|
|
51
|
+
administrator approval.
|
|
52
|
+
|
|
53
|
+
## When a mention starts nothing
|
|
54
|
+
|
|
55
|
+
When someone with write access mentions the App and no run starts, the App
|
|
56
|
+
replies with the reason instead of staying silent:
|
|
57
|
+
|
|
58
|
+
- no agent is linked to the repository with the `mention` trigger;
|
|
59
|
+
- `@<app-slug> review` was used, but no reviewer agent (`pull_request` trigger
|
|
60
|
+
and a `checkName`) is linked;
|
|
61
|
+
- the linked agent's owner lost access to the repository, or its authorization
|
|
62
|
+
lapsed: the owner re-authorizes or re-links the agent;
|
|
63
|
+
- the pull request is closed or comes from a fork.
|
|
64
|
+
|
|
65
|
+
Mentions from people without write access never get this reply. The reply is a
|
|
66
|
+
comment anyone who can see the repository reads; to turn it off, for example on
|
|
67
|
+
public repositories, set `WARDBY_MENTION_EXPLANATIONS=false` on the server.
|
|
68
|
+
|
|
69
|
+
## When a review starts
|
|
70
|
+
|
|
71
|
+
A push normally starts a review right away, but its timing can be held back
|
|
72
|
+
by two independent things: from Wardby 0.6.0, the pull request's own
|
|
73
|
+
delegating request still running (see [Reviewing a pull request a delegated run
|
|
74
|
+
opened](#reviewing-a-pull-request-a-delegated-run-opened) below), and, on a
|
|
75
|
+
link set up for it, CI on the pushed head still running (see [Review after
|
|
76
|
+
CI (`waitForCi`)](#review-after-ci-waitforci) below). Either can delay the
|
|
77
|
+
check that reports the review's result; neither changes what the review
|
|
78
|
+
itself reports once it runs. A large diff is read in pages (see [Large pull
|
|
79
|
+
requests](#large-pull-requests)). From Wardby 0.7.0, a push to a draft is also held
|
|
80
|
+
while the coding run that pushed it is still running, and, when a lead
|
|
81
|
+
delegated that run (a follow-up request, say), until that lead finishes.
|
|
82
|
+
|
|
83
|
+
## Large pull requests
|
|
84
|
+
|
|
85
|
+
From Wardby 0.7.0, `repo_pr_read` pages a large diff: all files share one
|
|
86
|
+
budget per call (`maxPatchChars`, default 60,000, at most 200,000), with
|
|
87
|
+
source, test and config files first. Each file has a `patchStatus`
|
|
88
|
+
(`complete`, `partial`, `later_page`, `earlier_page`, `unavailable` or
|
|
89
|
+
`empty`). While a source, test or config file is listed in `truncatedFiles`,
|
|
90
|
+
call `repo_pr_read` again with `patchCursor` set to `nextPatchCursor`; the pages
|
|
91
|
+
after that hold only docs, help, lockfiles and generated files, which are
|
|
92
|
+
optional for the verdict. A page that includes source, test or config files
|
|
93
|
+
stops before the first doc, help, lockfile or generated file, so those come on
|
|
94
|
+
later pages and a reviewer can skip them. Read every `unavailable` source, test or config file
|
|
95
|
+
with `repo_read_file` at the head. A cursor goes stale when
|
|
96
|
+
the branch moves (`patch_cursor_stale`): call again without it. A damaged or
|
|
97
|
+
rewritten cursor returns `patch_cursor_malformed`: pass `nextPatchCursor` back exactly
|
|
98
|
+
as returned.
|
|
99
|
+
`repo_publish_review` refuses `APPROVE` with
|
|
100
|
+
`unread_files` while a listed source, test or config file is neither fully
|
|
101
|
+
delivered nor read at `headSha`. A reviewer that cannot read everything should
|
|
102
|
+
publish `CHANGES_REQUESTED` and name what it skipped: `COMMENT` completes the
|
|
103
|
+
check as neutral, which branch protection treats as passing.
|
|
104
|
+
The shipped reviewer prompt does this; see the [full guide](../docs/code-review-agents.md#large-pull-requests).
|
|
105
|
+
The refusal applies in both `control-plane` and `sandbox` mode.
|
|
106
|
+
A pull request with more changed files than the host lists (1,000; 300 for a
|
|
107
|
+
`sinceSha` compare on GitHub) reads with `fileListComplete: false`, and
|
|
108
|
+
`APPROVE` of that head is refused with
|
|
109
|
+
`file_list_truncated`; `CHANGES_REQUESTED`
|
|
110
|
+
and `COMMENT` still publish.
|
|
111
|
+
|
|
112
|
+
## Drafts stopped at their budget
|
|
113
|
+
|
|
114
|
+
From Wardby 0.7.0, a pull request that is still a draft, whose latest commit
|
|
115
|
+
came from a coding run that stopped at its budget, is not reviewed automatically. Its check
|
|
116
|
+
completes as neutral, "Skipped: stopped at its budget", and no automatic fix
|
|
117
|
+
round follows. Marking the pull request ready for review or pushing a new
|
|
118
|
+
commit starts a normal review, and so does re-running the check or a review
|
|
119
|
+
mention. The `budget-exhausted` error article describes how a stopped run keeps
|
|
120
|
+
its work.
|
|
121
|
+
|
|
122
|
+
## Follow-ups on an issue
|
|
123
|
+
|
|
124
|
+
From Wardby 0.7.0, a mention on a GitHub issue that already has an open pull request Wardby
|
|
125
|
+
opened tells the agent that pull request and the run id to pass as
|
|
126
|
+
`continuePriorRun`, so the work continues on the same branch instead of
|
|
127
|
+
opening a second pull request. Jira issues behave the same way (see
|
|
128
|
+
[Run Jira agents](jira.md)). The run message lists up to ten open pull requests
|
|
129
|
+
recorded for the issue.
|
|
130
|
+
|
|
131
|
+
A pull request opened from a mention on a GitHub issue starts its description
|
|
132
|
+
with `From issue #N` for that issue (same repository), as one opened for a Jira
|
|
133
|
+
issue starts with `Resolves Jira issue …`. The line links the issue but doesn't
|
|
134
|
+
close it; to close it on merge, have the agent end its summary with
|
|
135
|
+
`Resolves #N` (or `Refs #N` to keep it open, for example for a plan).
|
|
45
136
|
|
|
46
137
|
## CI and sibling pull requests
|
|
47
138
|
|
|
@@ -53,6 +144,12 @@ Wardby's coding sandbox, which may have had an incomplete install (see the
|
|
|
53
144
|
**Dependency install incomplete** warning). Checks still running are reported
|
|
54
145
|
as pending.
|
|
55
146
|
|
|
147
|
+
From Wardby 0.7.0, a Wardby pull request whose run had package audit mode on
|
|
148
|
+
(the `package-audit-mode` help article) carries a caution banner: **Packages outside the allowlist** lists what the
|
|
149
|
+
registry installed that the agent's allowlist doesn't cover, and **Served
|
|
150
|
+
despite advisories** (in `full` mode) lists versions with high or critical
|
|
151
|
+
advisories. Reviewers should check those packages before approving.
|
|
152
|
+
|
|
56
153
|
If a review publishes only a comment while CI on the head is still running (or
|
|
57
154
|
has not reported yet), Wardby runs that review again once CI on the same head
|
|
58
155
|
has finished, so it can approve or request changes against the real result.
|
|
@@ -65,6 +162,88 @@ on the review check instead.
|
|
|
65
162
|
Commit statuses need the App's **Commit statuses: Read** permission; without
|
|
66
163
|
it only check runs are shown.
|
|
67
164
|
|
|
165
|
+
With Wardby 0.6.0 or later, `repo_pr_read` also returns `relatedPullRequests`: this
|
|
166
|
+
request's pull requests (`repository`, `number`, `state`, `mergeOrder`,
|
|
167
|
+
`self`), computed fresh at call time; empty on a human pull request, one
|
|
168
|
+
with no recognized Wardby marker, or a pull request on a local repository
|
|
169
|
+
(no origin marker to look up there). The `self` entry (the pull request just
|
|
170
|
+
read) always has a `state` (`draft`, `open`, `merged`, or `closed`) from that
|
|
171
|
+
same read. Another entry has a `state` (`open`, `merged`, or `closed`) only
|
|
172
|
+
when Wardby has it stored, as it does for pull requests linked to an issue,
|
|
173
|
+
and omits it otherwise; call `repo_pr_read` on that pull request when you
|
|
174
|
+
need its live state. The list is current; the PR body's **Related pull
|
|
175
|
+
requests** section can be stale — see
|
|
176
|
+
[Related pull requests across repositories](related-pull-requests.md).
|
|
177
|
+
|
|
178
|
+
With Wardby 0.6.0 or later, once a set has more than one `mergeOrder`, each
|
|
179
|
+
pull request in it also gets its own check run, named `wardby merge order`,
|
|
180
|
+
independent of any reviewer link; search help for "merge order check" for
|
|
181
|
+
its states and for requiring it in branch protection.
|
|
182
|
+
|
|
183
|
+
## Reading the issue a pull request resolves
|
|
184
|
+
|
|
185
|
+
With Wardby 0.7.0 or later, a linked agent also gets `repo_issue_read`: it
|
|
186
|
+
reads one issue in a linked repository (title, state, body, labels, author,
|
|
187
|
+
and the 30 most recent comments), read-only, so a reviewer can check a pull
|
|
188
|
+
request that says `Resolves #N` against the issue's own acceptance criteria
|
|
189
|
+
instead of the description's restatement of them. The body is capped at
|
|
190
|
+
32,000 characters and each comment at 4,000, with `truncated` flags. A pull
|
|
191
|
+
request number is refused (`is_pull_request`; use `repo_pr_read`), a missing
|
|
192
|
+
issue is `issue_not_found`, and a local repository has no issues
|
|
193
|
+
(`issues_unavailable`). It needs the App's **Issues: Read** permission, which
|
|
194
|
+
an App that handles mentions already has. Issue text is untrusted: the agent
|
|
195
|
+
treats it as data, never as instructions.
|
|
196
|
+
|
|
197
|
+
For a pull request that resolves a Jira issue, also link the reviewer to that
|
|
198
|
+
Jira project with read access; it then reads the ticket with
|
|
199
|
+
`jira_get_issue` (see [Run Jira agents](jira.md)). The quickstart reviewer
|
|
200
|
+
prompt reads whichever issue the pull request resolves and says in its
|
|
201
|
+
summary when it could not.
|
|
202
|
+
|
|
203
|
+
## A description wardby can't confirm as its own
|
|
204
|
+
|
|
205
|
+
With Wardby 0.7.0 or later, when a person has edited a Wardby pull request's
|
|
206
|
+
description, Wardby doesn't overwrite it on later runs; it keeps one comment
|
|
207
|
+
with the description its latest run proposed, stamped with the commit it
|
|
208
|
+
describes. `repo_pr_read` returns that proposal as `descriptionProposal` when
|
|
209
|
+
the reviewer reads the pull request, and only for the head being reviewed
|
|
210
|
+
(`state: "current"`, untrusted, cut to 16 KB): a description requirement,
|
|
211
|
+
such as `Resolves #N` or the issue's acceptance checklist, is met if either
|
|
212
|
+
the live description or the proposal meets it. With
|
|
213
|
+
`state: "not_for_this_head"`, no proposal for this head exists yet: review the
|
|
214
|
+
live description. See
|
|
215
|
+
[Automatic review fix rounds](review-fix-rounds.md#description-updates).
|
|
216
|
+
|
|
217
|
+
## Reviewing a pull request a delegated run opened
|
|
218
|
+
|
|
219
|
+
This requires Wardby 0.6.0 or later; earlier releases review such a pull
|
|
220
|
+
request on its first push. When a lead agent delegates coding work and a sub-agent opens the pull
|
|
221
|
+
request (see [Fanning out to several
|
|
222
|
+
builders](../docs/agent-recipes.md#fanning-out-to-several-builders)), every
|
|
223
|
+
reviewer linked with the `pull_request` trigger holds its review of that
|
|
224
|
+
pull request until the delegating (lead) run finishes, however it ends
|
|
225
|
+
(including failing, being cancelled or being lost), even if the link has no
|
|
226
|
+
`waitForCi` set. This gives the request's other pull requests, if any, time
|
|
227
|
+
to open before any of them is reviewed, so a reviewer does not report a
|
|
228
|
+
field or route as missing only because a sibling pull request had not opened
|
|
229
|
+
yet. When the lead run finishes normally, their **Related pull requests**
|
|
230
|
+
sections have also been rewritten (see [Related pull requests across
|
|
231
|
+
repositories](related-pull-requests.md)); when it is ended another way, such
|
|
232
|
+
as being cancelled, held reviews start without that rewrite. Either way,
|
|
233
|
+
reviewers should rely on `repo_pr_read`'s `relatedPullRequests`.
|
|
234
|
+
|
|
235
|
+
A reviewer linked with `waitForCi` then waits for CI too, once the lead run
|
|
236
|
+
finishes, with its own full 15-minute fallback counted from that point. A
|
|
237
|
+
pull request opened directly, by a human, or on a local repository is never
|
|
238
|
+
held this way. A later request that continues an already-open pull request
|
|
239
|
+
is not held again: the request that opened it has already finished (a push
|
|
240
|
+
inside the same, still-running request is held). If Wardby cannot tell
|
|
241
|
+
whether the pull request's opening run was delegated, the review starts
|
|
242
|
+
right away instead. A held review not released when its lead run finishes is
|
|
243
|
+
reconsidered by Wardby's reconciliation sweep once it has been held for 15
|
|
244
|
+
minutes and released when the lead run has finished, and dropped after 24
|
|
245
|
+
hours like a review held for CI.
|
|
246
|
+
|
|
68
247
|
## Review after CI (`waitForCi`)
|
|
69
248
|
|
|
70
249
|
A `pull_request` link can set `waitForCi: true` so this reviewer reviews a
|
|
@@ -96,22 +275,76 @@ a tool error instead of publishing anything:
|
|
|
96
275
|
- `ci_pending` — CI is still running; comment instead. The re-review above
|
|
97
276
|
then runs the review again once a CI check suite finishes.
|
|
98
277
|
|
|
99
|
-
Requesting changes or commenting is never affected by
|
|
278
|
+
Requesting changes or commenting is never affected by the CI gate. When CI
|
|
100
279
|
cannot be read at all, the gate is skipped and the review proceeds as it
|
|
101
280
|
would without `waitForCi`.
|
|
102
281
|
|
|
282
|
+
A separate guard applies per run: `repo_publish_review` refuses `APPROVE`
|
|
283
|
+
with `unread_files` while a source, test or config file of the head
|
|
284
|
+
was listed by `repo_pr_read` but not fully read. Page with `patchCursor`, or
|
|
285
|
+
read the file with `repo_read_file` at `headSha`; if that is not possible,
|
|
286
|
+
publish `CHANGES_REQUESTED` and name the files not reviewed. `APPROVE` is
|
|
287
|
+
also refused with `file_list_truncated` while the head's file list is cut
|
|
288
|
+
(`fileListComplete: false`), and with `full_read_required` when the run read
|
|
289
|
+
the head only with a `sinceSha` other than the `lastCoveredSha` it returned
|
|
290
|
+
(the latest head this agent reviewed after reading every file).
|
|
291
|
+
|
|
103
292
|
Add this to a reviewer's system prompt:
|
|
104
293
|
|
|
105
294
|
Reviewer step (CI and related pull requests). Read `ci` from repo_pr_read.
|
|
106
295
|
When `ci` and the description's Tests disagree, follow CI and say so; never
|
|
107
296
|
ask for a fix only because a sandbox test failed while CI passed. Report
|
|
108
|
-
pending checks as pending. If
|
|
109
|
-
|
|
110
|
-
of those pull requests: do not report it as missing; note the
|
|
111
|
-
and the
|
|
297
|
+
pending checks as pending. If repo_pr_read's relatedPullRequests is
|
|
298
|
+
non-empty, a field, route or schema the change relies on may be added by
|
|
299
|
+
one of those pull requests: do not report it as missing; note the
|
|
300
|
+
dependency and the listed merge order instead. relatedPullRequests is
|
|
301
|
+
current; the PR body's "Related pull requests" section can be stale.
|
|
112
302
|
|
|
113
|
-
|
|
303
|
+
On a release before 0.6.0, `repo_pr_read` has no `relatedPullRequests`:
|
|
304
|
+
use the description's **Related pull requests** section in its place in that
|
|
305
|
+
step. Wardby also writes that section: see
|
|
114
306
|
[Related pull requests across repositories](related-pull-requests.md).
|
|
115
307
|
|
|
308
|
+
## Mark ready when passing
|
|
309
|
+
|
|
310
|
+
With Wardby 0.7.0 or later, set `markReadyWhenPassing: true` on the write
|
|
311
|
+
link (`link_repository`) of the agent the repository event triggers to have
|
|
312
|
+
Wardby mark the draft pull requests it opens here ready for review on its
|
|
313
|
+
own, once they pass, instead of leaving that to a person. For a lead that
|
|
314
|
+
delegates to a coding builder sub-agent, set it on the lead's link: the
|
|
315
|
+
builder needs no repository link of its own, and pull requests its coding
|
|
316
|
+
runs open count for the lead. An opted-in agent outside that run tree never
|
|
317
|
+
counts. Re-linking the repository without it clears it, like every other
|
|
318
|
+
link setting.
|
|
319
|
+
|
|
320
|
+
Wardby marks a pull request ready once it is open and a draft, Wardby's own
|
|
321
|
+
App opened it (and its head isn't in a fork), every authorized reviewer
|
|
322
|
+
linked with the `pull_request` trigger has approved the head with its own
|
|
323
|
+
check, CI on the head is green (every check run and commit status that
|
|
324
|
+
isn't Wardby's own has completed with success, neutral, or skipped, at
|
|
325
|
+
least one with success, or there is no CI at all), and the `wardby merge order` check is `success` or
|
|
326
|
+
isn't posted on it. Commit statuses only count if the App can read them:
|
|
327
|
+
grant **Commit statuses: Read** if your CI reports statuses rather than
|
|
328
|
+
check runs. A pull request with more checks and statuses than Wardby reads
|
|
329
|
+
(about 50) is never marked ready automatically. Wardby marks a given pull
|
|
330
|
+
request ready at most once; moving it back to draft by hand is final —
|
|
331
|
+
Wardby never re-marks it.
|
|
332
|
+
|
|
333
|
+
Wardby checks whether a pull request is ready to mark on any of these
|
|
334
|
+
events: a reviewer run finishing, a CI check suite completing on its head,
|
|
335
|
+
its `wardby merge order` check turning `success`, or (as a fallback) Wardby's
|
|
336
|
+
own reconciliation sweep for a pull request that is part of a merge-ordered
|
|
337
|
+
set. With a `mergeOrder` set, a later step becomes ready this way only once
|
|
338
|
+
the steps it depends on have merged — see [The wardby merge order
|
|
339
|
+
check](merge-order-check.md). CI that reports only commit statuses (no
|
|
340
|
+
check suite) is not re-checked when it finishes; such a pull request is
|
|
341
|
+
marked ready the next time one of those events fires, or stays in draft
|
|
342
|
+
until then.
|
|
343
|
+
|
|
344
|
+
It never approves, merges, or converts a pull request back to draft — a
|
|
345
|
+
person's approval stays the gate wherever branch protection requires one.
|
|
346
|
+
It needs no App permission beyond **Pull requests: Read and write**, which
|
|
347
|
+
an App that opens pull requests already has.
|
|
348
|
+
|
|
116
349
|
For App permissions, webhook setup, trigger configuration, and security
|
|
117
350
|
details, follow [`docs/code-review-agents.md`](../docs/code-review-agents.md).
|
package/help/coding-packages.md
CHANGED
|
@@ -1,24 +1,33 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: coding-packages
|
|
3
3
|
title: Approve packages for coding agents
|
|
4
|
-
summary: Let
|
|
4
|
+
summary: Let coding workers install vetted npm (also with pnpm or yarn) and PyPI dependencies through Wardby's registry proxy.
|
|
5
5
|
audience: operator
|
|
6
|
-
tags: [coding-agents, packages, npm, pypi, supply-chain, refusals, lockfile, extras, pip-extras]
|
|
6
|
+
tags: [coding-agents, packages, npm, pnpm, yarn, pypi, uv, supply-chain, refusals, lockfile, extras, pip-extras]
|
|
7
7
|
appliesTo: >=0.2.1
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Approve packages for coding agents
|
|
11
11
|
|
|
12
|
-
Coding workers have no direct registry network access.
|
|
13
|
-
|
|
12
|
+
Coding workers have no direct registry network access. Wardby's registry
|
|
13
|
+
proxy can allow `npm install` (or `pnpm`/`yarn`) and `pip install` from a
|
|
14
14
|
per-agent npm or PyPI allowlist. The proxy records what was fetched and applies
|
|
15
15
|
supply-chain checks, including package graph validation, release-age policy,
|
|
16
16
|
and vulnerability filtering.
|
|
17
17
|
|
|
18
18
|
An empty allowlist keeps registry mode off. Approve only top-level packages;
|
|
19
19
|
Wardby validates and permits the required transitive dependency graph for the
|
|
20
|
-
run.
|
|
21
|
-
|
|
20
|
+
run. A package the project adds as a new top-level dependency must itself be
|
|
21
|
+
approved (or already be in the verified lockfile), even if an approved
|
|
22
|
+
package depends on it: when npm asks for a package that is not approved and
|
|
23
|
+
was not declared by a package already resolved in the run, Wardby refuses it
|
|
24
|
+
at once with `wardby_package_not_allowed`. Changing a package allowlist or
|
|
25
|
+
policy needs `packages:approve` (or `agents:admin`) and a Wardby `admin` or
|
|
26
|
+
`package-approver` role.
|
|
27
|
+
|
|
28
|
+
If the repository uses npm `overrides`, also approve each overridden package:
|
|
29
|
+
an override installs a version its parent doesn't ask for, so Wardby approves
|
|
30
|
+
it, and what it depends on, only when its name is on the allowlist.
|
|
22
31
|
|
|
23
32
|
Registry mode works for Codex and Claude Code runs alike, on the `node`
|
|
24
33
|
toolchain (npm) and the `node-python` toolchain (npm and pip). Claude Code runs
|
|
@@ -35,6 +44,55 @@ if its own checks failed. A package reachable only through a refused one is
|
|
|
35
44
|
refused too, so a high-severity advisory deep in a toolchain blocks every run
|
|
36
45
|
that installs it.
|
|
37
46
|
|
|
47
|
+
## Allowlist refusals
|
|
48
|
+
|
|
49
|
+
Four codes say a package could not be reached through the allowlist. The agent
|
|
50
|
+
should stop on all of them except `wardby_graph_incomplete`; the owner fixes
|
|
51
|
+
them by allowlisting the package directly (`update_agent`,
|
|
52
|
+
`codingProfile.packageAllowlist`). Each code has an article under `errors/` (for example `errors/package-not-allowed-pending`), available from release 0.7.0.
|
|
53
|
+
|
|
54
|
+
- `wardby_package_not_allowed`: not on the allowlist and not declared by a package already resolved in the run, or only reachable through a refused package.
|
|
55
|
+
- `wardby_package_not_allowed_pending`: the dependency walk stopped before reaching it; retrying rarely helps.
|
|
56
|
+
- `wardby_graph_limit`: the dependency graph is over `REGISTRY_MAX_GRAPH_PACKAGES`.
|
|
57
|
+
- `wardby_graph_incomplete`: still being checked; retry shortly.
|
|
58
|
+
|
|
59
|
+
The last three arise only when the proxy walks the dependency graph: for a
|
|
60
|
+
tarball download the run hasn't resolved (a lockfile install the plan did not
|
|
61
|
+
approve), or for a metadata request after a lockfile plan of the run failed
|
|
62
|
+
or refused an entry. Otherwise a metadata request never walks. A
|
|
63
|
+
lockfileVersion 1 lockfile can't be planned, so regenerate it with a current
|
|
64
|
+
npm to avoid the slower walk.
|
|
65
|
+
|
|
66
|
+
To find out which packages a task needs without a round of refusals for each
|
|
67
|
+
one, turn on package audit mode for a limited time (from Wardby 0.7.0): the
|
|
68
|
+
registry installs packages outside the allowlist and records them for you to
|
|
69
|
+
approve. Read the `package-audit-mode` help article, "Package audit mode".
|
|
70
|
+
|
|
71
|
+
## pnpm and yarn
|
|
72
|
+
|
|
73
|
+
From Wardby 0.7.0, pnpm, yarn classic (1.x) and yarn 2 or later (Berry, with
|
|
74
|
+
node-modules or Plug'n'Play) install from the same npm allowlist as npm, and
|
|
75
|
+
their lockfiles are verified the same way: before `pnpm install`/`add` or
|
|
76
|
+
`yarn`/`yarn install`/`yarn add`, the worker's shim sends `pnpm-lock.yaml`
|
|
77
|
+
(lockfileVersion 6 or 9) or `yarn.lock` to the registry, which approves its
|
|
78
|
+
exact versions, so `pnpm install --frozen-lockfile`, `yarn install
|
|
79
|
+
--frozen-lockfile` and `yarn install --immutable` need no slow graph walk.
|
|
80
|
+
|
|
81
|
+
- The stock images have npm, yarn classic and corepack. The shim runs pnpm,
|
|
82
|
+
and a yarn 2+ release a project pins in `packageManager`, through corepack,
|
|
83
|
+
which downloads it through the registry: allowlist `pnpm` or
|
|
84
|
+
`@yarnpkg/cli-dist` (or bake the tool into a custom worker image).
|
|
85
|
+
- yarn 2+ records yarn's own `checksum`, not npm's integrity: its plan
|
|
86
|
+
approves exact versions, and each download is checked against the
|
|
87
|
+
registry's integrity.
|
|
88
|
+
- yarn 2+ adds an implicit `node-gyp` dependency to packages with install
|
|
89
|
+
scripts (such as `fsevents`); allowlist `node-gyp` when the lockfile has it.
|
|
90
|
+
- Install scripts stay off for every client, and lockfiles a run commits
|
|
91
|
+
name only public registry URLs.
|
|
92
|
+
|
|
93
|
+
See [pnpm and yarn](../docs/coding-packages.md#pnpm-and-yarn) for each
|
|
94
|
+
client's settings and the plan's rules.
|
|
95
|
+
|
|
38
96
|
## PyPI extras
|
|
39
97
|
|
|
40
98
|
A PyPI entry may name extras, as pip does: `psycopg[binary]`,
|
|
@@ -54,6 +112,42 @@ support cannot load an allowlist with a `name[extra]` entry, so every registry
|
|
|
54
112
|
request of that run fails; and once a profile stores an extras entry, do not
|
|
55
113
|
downgrade below the release that added extras.
|
|
56
114
|
|
|
115
|
+
## Python: pip and uv
|
|
116
|
+
|
|
117
|
+
The `node-python` images ship pip (used in a virtual environment) and uv,
|
|
118
|
+
and the worker points both at the registry (`PIP_INDEX_URL`, and
|
|
119
|
+
`UV_DEFAULT_INDEX` with `UV_NO_BUILD=1` for wheels only). Top-level installs
|
|
120
|
+
work with either: `pip install -r requirements.txt`, `uv pip install …`.
|
|
121
|
+
|
|
122
|
+
- **Fully pinned requirements** (`pip-compile`, `pip freeze`) list
|
|
123
|
+
dependencies as top-level lines, so the file is verified first, like an
|
|
124
|
+
npm lockfile: `uv pip install -r` does it itself; for pip, run
|
|
125
|
+
`wardby-packages plan requirements.txt` first. Every pin the allowlist
|
|
126
|
+
reaches is then allowed; the rest are named with their reason (too new,
|
|
127
|
+
no wheel, not reachable).
|
|
128
|
+
- **`uv sync`, `uv run`, `uv add` with a committed `uv.lock`** work: the
|
|
129
|
+
worker's `uv` verifies the lock and points its PyPI URLs at the registry
|
|
130
|
+
for the command, then puts the file back (a committed lock never names
|
|
131
|
+
the registry).
|
|
132
|
+
- **Project installs** (`pip install .`, `uv sync`, `uv run`) need the build
|
|
133
|
+
backend from `[build-system] requires` (`hatchling`, `setuptools`, …)
|
|
134
|
+
allowlisted, plus what it asks for while building (hatchling: `editables`
|
|
135
|
+
for an editable install).
|
|
136
|
+
- **Poetry** doesn't work in the sandbox, and a `poetry.lock` or
|
|
137
|
+
`pylock.toml` can't be verified (`wardby_lockfile_unsupported`): export a
|
|
138
|
+
pinned requirements file, or use uv.
|
|
139
|
+
|
|
140
|
+
pip and uv don't print why the registry refused a package (pip says
|
|
141
|
+
`from versions: none`, uv `403 Forbidden`). The agent is told to run
|
|
142
|
+
`wardby-packages`, which lists the run's recent refusals with their codes
|
|
143
|
+
and hints; a Claude Code agent also gets those lines after any failed
|
|
144
|
+
command. The registry also records packages it hides from the index: one
|
|
145
|
+
with only source distributions (`wardby_file_not_allowed`), or whose every
|
|
146
|
+
wheel is too new (`wardby_version_filtered`). The installer may only have
|
|
147
|
+
looked at that index, so such a refusal (`get_run` marks it `listingOnly`)
|
|
148
|
+
adds nothing to a pull request, shows as a ⚠️ line on a run that made no
|
|
149
|
+
changes, and blocks the status (⛔) only when a coding sub-run failed.
|
|
150
|
+
|
|
57
151
|
The quickstart's coding step offers the packages a local repository declares
|
|
58
152
|
(`package.json`, `pyproject.toml` including its build-system packages,
|
|
59
153
|
`requirements*.txt`, keeping Python extras such as `psycopg[binary]`) as
|
|
@@ -67,5 +161,61 @@ run. See [Local repositories](local-repositories.md).
|
|
|
67
161
|
Review agents see the pull request's CI results in `repo_pr_read` and are
|
|
68
162
|
told to trust CI over the sandbox's **Tests**.
|
|
69
163
|
|
|
164
|
+
## Accepting advisories
|
|
165
|
+
|
|
166
|
+
From Wardby 0.7.0, a version withheld only by a high or critical advisory
|
|
167
|
+
(refused with `wardby_version_filtered`) can be served for one agent once an
|
|
168
|
+
approver accepts the advisory. Set `codingProfile.packagePolicy.acceptedAdvisories`
|
|
169
|
+
with `create_agent` or `update_agent` (needs `packages:approve` or
|
|
170
|
+
`agents:admin`):
|
|
171
|
+
|
|
172
|
+
```json
|
|
173
|
+
{
|
|
174
|
+
"codingProfile": {
|
|
175
|
+
"packagePolicy": { "minReleaseAgeDays": 3, "acceptedAdvisories": ["GHSA-xxxx-xxxx-xxxx"] }
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
- `update_agent` replaces `packagePolicy` as a whole: send the full object
|
|
181
|
+
(omitting `minReleaseAgeDays` resets it to the default 3). To remove a
|
|
182
|
+
waiver, re-send the whole object without that id.
|
|
183
|
+
|
|
184
|
+
- Up to 32 unique ids (`GHSA-…`, `CVE-…`, `PYSEC-…`), matched case-sensitively
|
|
185
|
+
against an advisory's id and its aliases.
|
|
186
|
+
- A version is served only when every blocking advisory is accepted; the
|
|
187
|
+
refusal names the ones still blocking.
|
|
188
|
+
- Malware is never waivable: `MAL-…` ids are rejected, and malware advisories
|
|
189
|
+
stay blocked even if listed.
|
|
190
|
+
- Waivers show as `acceptedAdvisories` per package in `get_run` and in an
|
|
191
|
+
**Accepted advisories** section of the pull request. The policy is fixed
|
|
192
|
+
when a run starts.
|
|
193
|
+
- Find the id from the package named in the refusal: `https://osv.dev/list?q=<package>`
|
|
194
|
+
or `npm audit`. Accept only after judging the exposure (for example, a
|
|
195
|
+
build-time-only dependency), and remove the entry once a fixed version ships.
|
|
196
|
+
|
|
70
197
|
Read [`docs/coding-packages.md`](../docs/coding-packages.md) for allowlist
|
|
71
198
|
syntax (including [PyPI extras](../docs/coding-packages.md#pypi-extras)), package-policy controls, lockfile behavior, and refusal errors.
|
|
199
|
+
|
|
200
|
+
## Dependency cache
|
|
201
|
+
|
|
202
|
+
From Wardby 0.7.0, a coding agent can start with `node_modules` already
|
|
203
|
+
restored from a verified snapshot instead of running `npm ci`. Read the
|
|
204
|
+
`dependency-cache` help article, "Dependency cache for coding runs".
|
|
205
|
+
|
|
206
|
+
## Blocked status comments
|
|
207
|
+
|
|
208
|
+
If a coding child records package refusals, reports no changes or fails, and no
|
|
209
|
+
pull request or pushed changes result, GitHub and Jira status comments show
|
|
210
|
+
⛔ **Blocked by the package registry: no changes were made.** Otherwise, the
|
|
211
|
+
status keeps the agent's reply or answer, or the pull request link, and adds a
|
|
212
|
+
⚠️ dependency install warning. Refusal lists show at most ten distinct entries and a count
|
|
213
|
+
of the rest; `get_run` has the full list.
|
|
214
|
+
A refusal the run got past does not count: when the registry later served the
|
|
215
|
+
same package (or, for a refused version, that version) to the same coding run,
|
|
216
|
+
for example after npm retried a temporary error, it is left out of the status,
|
|
217
|
+
the warning and `get_run`. A package served to another sub-run doesn't clear it.
|
|
218
|
+
|
|
219
|
+
For next steps, see [Package refusal errors](errors/package-refusals.md) and
|
|
220
|
+
[Run status comments](status-comments.md). After an approver updates the
|
|
221
|
+
agent's allowlist or policy, mention `@wardby` again to start a new attempt.
|
package/help/cost-attribution.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: cost-attribution
|
|
3
3
|
title: Attribute agent spend to issues
|
|
4
|
-
summary: See what agent work on a Jira card, epic, or project cost, by model and token kind, with the cost_report MCP tool.
|
|
4
|
+
summary: See what agent work on a Jira card, epic, or project, or on a GitHub issue, cost, by model and token kind, with the cost_report MCP tool.
|
|
5
5
|
audience: operator
|
|
6
|
-
tags: [cost, spend, attribution, jira, epic, reporting, cost_report, tokens]
|
|
6
|
+
tags: [cost, spend, attribution, jira, github, github-issues, epic, reporting, cost_report, tokens]
|
|
7
7
|
appliesTo: >=0.2.1
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -15,10 +15,15 @@ work on a card, an epic, or a whole project cost.
|
|
|
15
15
|
A run is attributed to an issue when:
|
|
16
16
|
|
|
17
17
|
- a Jira event on that issue started it;
|
|
18
|
+
- an `@wardby` mention on a GitHub issue started it: it is attributed to a work
|
|
19
|
+
item with provider `github` and key `owner/repo#N`, like a Jira issue, so
|
|
20
|
+
`cost_report` shows the issue's total;
|
|
18
21
|
- it reviews, or answers an `@wardby` mention on, a pull request Wardby opened
|
|
19
22
|
for the issue — including a review that starts while the agent that asked
|
|
20
23
|
for the pull request is still running, before the pull request is linked to
|
|
21
24
|
the issue (Wardby then uses the issue of the coding run that opened it);
|
|
25
|
+
- it reviews, or answers a mention on, a pull request opened from a GitHub
|
|
26
|
+
issue: it is attributed to that issue's `github` work item;
|
|
22
27
|
- `trigger_agent` named an `issue`, or a webhook call's JSON body named a
|
|
23
28
|
`wardbyIssue`, as `{ "provider": "jira", "key": "PROJ-123" }`, in a project
|
|
24
29
|
the agent is linked to. Keys are matched without regard to case
|
|
@@ -62,8 +67,7 @@ cost per model.
|
|
|
62
67
|
|
|
63
68
|
If a company-managed Jira site still uses the legacy Epic Link field, set
|
|
64
69
|
`WARDBY_JIRA_EPIC_LINK_FIELD` (for example `customfield_10014`) so runs are
|
|
65
|
-
grouped under their epic. On GKE,
|
|
66
|
-
|
|
67
|
-
run and a warning is logged.
|
|
70
|
+
grouped under their epic. On GKE, `deploy/gke/up.sh` applies the database
|
|
71
|
+
grant coding runs need to record their per-model usage when you upgrade.
|
|
68
72
|
|
|
69
73
|
For the full guide, follow [`docs/jira-agents.md`](../docs/jira-agents.md).
|
package/help/creating-agents.md
CHANGED
|
@@ -3,7 +3,7 @@ id: creating-agents
|
|
|
3
3
|
title: Choose a native or coding agent
|
|
4
4
|
summary: Decide whether a task should run as a native Wardby agent or an isolated Codex or Claude Code coding agent.
|
|
5
5
|
audience: developer
|
|
6
|
-
tags: [agents, native-agents, coding-agents, codex, claude-code]
|
|
6
|
+
tags: [agents, native-agents, coding-agents, codex, claude-code, schedules, set_schedule]
|
|
7
7
|
appliesTo: >=0.2.1
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -44,6 +44,12 @@ the trusted coding proxy, and a narrowly installed GitHub App. The agent owner
|
|
|
44
44
|
must have the required repository access, or an administrator must explicitly
|
|
45
45
|
approve the repository.
|
|
46
46
|
|
|
47
|
+
A Claude Code agent can also keep a redacted transcript of each run with
|
|
48
|
+
`codingProfile.sessionResume`, and continue a run on your machine with
|
|
49
|
+
`get_run_transcript` and `npx @wardby/cli@latest resume`; see
|
|
50
|
+
[Resume a run locally](../docs/coding-agent-setup.md#resume-a-run-locally)
|
|
51
|
+
(from 0.7.0, the `resume-runs-locally` help article).
|
|
52
|
+
|
|
47
53
|
## Choosing a model
|
|
48
54
|
|
|
49
55
|
Both agent types take a `model` field naming an entry in wardby's model
|
|
@@ -67,6 +73,13 @@ coding agent needs a `codingProfile.defaultTask` first, since a scheduled run
|
|
|
67
73
|
has no one to pass a task. A native agent's system prompt is its task. Trigger
|
|
68
74
|
the agent once with `trigger_agent` and check the result before scheduling it.
|
|
69
75
|
|
|
76
|
+
A new schedule first fires at its next window after you set it, never for a
|
|
77
|
+
window that already passed. A schedule of `0 6 * * 1` set on a Wednesday
|
|
78
|
+
first runs the following Monday, so a manual run just before scheduling isn't
|
|
79
|
+
followed by a duplicate. Changing the expression or timezone, or turning a
|
|
80
|
+
disabled schedule back on, starts it again from that moment. If the scheduler
|
|
81
|
+
was down and missed windows, it runs only the latest one, once.
|
|
82
|
+
|
|
70
83
|
Schedules fire only while a Wardby scheduler runs: `wardby serve`, or
|
|
71
84
|
`wardby scheduler` next to `wardby mcp`. On a quickstart install, start
|
|
72
85
|
`npx @wardby/cli@latest scheduler` from the project directory and keep it
|