@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
|
@@ -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,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/secret-not-brokered
|
|
3
|
+
title: Secret is not brokered
|
|
4
|
+
summary: A fetch named a secret that is readable, not attached to the agent, or not granted to the tool.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, secrets, secret_not_brokered]
|
|
7
|
+
appliesTo: ">=0.6.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Secret is not brokered
|
|
11
|
+
|
|
12
|
+
`secret_not_brokered` means `fetch(url, { secrets: [...] })` named a secret that
|
|
13
|
+
is not a brokered secret available to this tool: it is readable, it is not
|
|
14
|
+
attached to the agent, it is not listed in the attachment's `allowedSecrets`, or
|
|
15
|
+
the request named more than 8 secrets.
|
|
16
|
+
|
|
17
|
+
1. Check the name matches the alias the secret is attached under
|
|
18
|
+
(`attach_secret`) and appears in the tool attachment's `allowedSecrets`.
|
|
19
|
+
2. To send the secret through `fetch`, make it brokered with
|
|
20
|
+
`set_secret_broker { name, broker }`.
|
|
21
|
+
3. If the secret is meant to stay readable, read it with `secrets.get(name)`
|
|
22
|
+
instead of naming it in `fetch`.
|
|
23
|
+
|
|
24
|
+
See [Brokered secrets](../brokered-secrets.md) and the
|
|
25
|
+
[secrets guide](../../docs/tool-secrets.md).
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/slack-auth-failed
|
|
3
|
+
title: Bot authentication failed — invalid or revoked token
|
|
4
|
+
summary: wardby's Slack bot token is invalid, revoked, disabled, or missing a required scope, so delivery to every linked channel is paused.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, notifications, auth, authentication, invalid_auth, token_revoked, missing_scope]
|
|
7
|
+
appliesTo: ">=0.6.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Bot authentication failed — invalid or revoked token
|
|
11
|
+
|
|
12
|
+
Slack returned `invalid_auth`, `token_revoked`, `account_inactive`,
|
|
13
|
+
`missing_scope`, or `not_authed` for `WARDBY_SLACK_BOT_TOKEN`. This is
|
|
14
|
+
different from a single channel being unreachable: it means the token
|
|
15
|
+
itself no longer works, so wardby pauses delivery to **every** linked
|
|
16
|
+
channel rather than attempting and failing each one. Deliveries already
|
|
17
|
+
queued stay pending — nothing is lost — and wardby automatically re-checks
|
|
18
|
+
the token every five minutes with Slack's `auth.test`, resuming delivery as
|
|
19
|
+
soon as it succeeds.
|
|
20
|
+
|
|
21
|
+
A **missing scope** (`missing_scope`) does not fix itself this way:
|
|
22
|
+
`auth.test` needs no scope, so the re-check succeeds, the next delivery fails
|
|
23
|
+
again, and delivery pauses again. Add the scope and reinstall the app (steps
|
|
24
|
+
1–2 below).
|
|
25
|
+
|
|
26
|
+
The same errors while linking a channel refuse the link, except
|
|
27
|
+
`missing_scope` from a missing `channels:read`/`groups:read`, which only
|
|
28
|
+
skips validating the channel id.
|
|
29
|
+
|
|
30
|
+
wardby logs this once per pause, not on every retry.
|
|
31
|
+
|
|
32
|
+
## What to do
|
|
33
|
+
|
|
34
|
+
1. In Slack, check the app's **OAuth & Permissions** page: is the bot
|
|
35
|
+
installed, and does it still have `chat:write` at minimum?
|
|
36
|
+
2. If the app's scopes changed (for example after editing
|
|
37
|
+
[`app-manifest.yaml`](../../deploy/slack/app-manifest.yaml)), reinstall
|
|
38
|
+
the app to the workspace to apply them.
|
|
39
|
+
3. If the token was revoked or the app was uninstalled, reinstall it and
|
|
40
|
+
copy a fresh Bot User OAuth Token.
|
|
41
|
+
4. If Slack issued a new token, set it as `WARDBY_SLACK_BOT_TOKEN` and
|
|
42
|
+
restart wardby; the startup log line `chat notifications acting as`
|
|
43
|
+
confirms it. If the token is unchanged (a scope added and the app
|
|
44
|
+
reinstalled), no restart is needed: pending deliveries go out after the
|
|
45
|
+
next check.
|
|
46
|
+
|
|
47
|
+
See [Send workflow updates to Slack](../../docs/slack-notifications.md) for
|
|
48
|
+
the full guide.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/slack-channel-unreachable
|
|
3
|
+
title: Channel unreachable — bot not invited or archived
|
|
4
|
+
summary: wardby's bot can no longer post to a linked Slack channel — it was removed, archived, or never invited — and that channel's pending deliveries have failed.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, notifications, channel, channel-error, not_in_channel, channel_not_found, is_archived]
|
|
7
|
+
appliesTo: ">=0.6.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Channel unreachable — bot not invited or archived
|
|
11
|
+
|
|
12
|
+
Slack returned `channel_not_found`, `not_in_channel`, or `is_archived` when
|
|
13
|
+
wardby tried to post or update a message. This means the bot genuinely
|
|
14
|
+
cannot write to that channel right now — the channel was deleted or
|
|
15
|
+
archived, or (most commonly) the bot was never invited to a private
|
|
16
|
+
channel.
|
|
17
|
+
|
|
18
|
+
wardby fails that channel's pending deliveries immediately rather than
|
|
19
|
+
retrying forever, and stamps the error on every `NotificationChannel` link
|
|
20
|
+
pointing at it. `list_notification_channels` shows it in `lastError` until
|
|
21
|
+
you fix it.
|
|
22
|
+
|
|
23
|
+
## What to do
|
|
24
|
+
|
|
25
|
+
1. In Slack, confirm the channel still exists and isn't archived.
|
|
26
|
+
2. If it's private, invite the bot: `/invite @wardby` (or whatever you named
|
|
27
|
+
the app) in that channel.
|
|
28
|
+
3. Confirm it worked with `test_notification_channel` — it posts "✅ wardby
|
|
29
|
+
is connected to this channel."
|
|
30
|
+
4. New events deliver as soon as the bot can post there again. Deliveries
|
|
31
|
+
that already failed are not resent. To clear `lastError`, re-link the
|
|
32
|
+
channel with `link_notification_channel` using the same arguments as
|
|
33
|
+
before (a successful `test_notification_channel` in step 3 also clears it).
|
|
34
|
+
|
|
35
|
+
If the channel is gone for good, remove the link with
|
|
36
|
+
`unlink_notification_channel` instead.
|
|
37
|
+
|
|
38
|
+
See [Send workflow updates to Slack](../../docs/slack-notifications.md) for
|
|
39
|
+
the full guide.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/slack-not-configured
|
|
3
|
+
title: Notification bot token not configured
|
|
4
|
+
summary: link_notification_channel and test_notification_channel are refused because wardby has no Slack bot token configured.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, notifications, configuration, config, setup, WARDBY_SLACK_BOT_TOKEN]
|
|
7
|
+
appliesTo: ">=0.6.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Notification bot token not configured
|
|
11
|
+
|
|
12
|
+
`link_notification_channel` and `test_notification_channel` are refused when
|
|
13
|
+
the wardby server has no `WARDBY_SLACK_BOT_TOKEN` set. Without it, Slack workflow notifications are
|
|
14
|
+
entirely disabled: the notification dispatcher does not start, and any event
|
|
15
|
+
that would otherwise post to Slack is skipped — none are queued or
|
|
16
|
+
backfilled once you do configure it.
|
|
17
|
+
|
|
18
|
+
`list_notification_channels` and `unlink_notification_channel` still work,
|
|
19
|
+
so you can see and remove links created earlier, but nothing is delivered to
|
|
20
|
+
them while Slack is unconfigured.
|
|
21
|
+
|
|
22
|
+
## What to do
|
|
23
|
+
|
|
24
|
+
1. Create the Slack app from
|
|
25
|
+
[`deploy/slack/app-manifest.yaml`](../../deploy/slack/app-manifest.yaml)
|
|
26
|
+
and install it to your workspace.
|
|
27
|
+
2. Copy the Bot User OAuth Token (`xoxb-…`) and set
|
|
28
|
+
`WARDBY_SLACK_BOT_TOKEN`, stored like any other provider credential.
|
|
29
|
+
3. Restart wardby. The startup log line `chat notifications acting as`
|
|
30
|
+
confirms which Slack workspace and bot it authenticated as.
|
|
31
|
+
|
|
32
|
+
See [Send workflow updates to Slack](../../docs/slack-notifications.md) for
|
|
33
|
+
the full setup.
|
|
@@ -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).
|
package/help/getting-started.md
CHANGED
|
@@ -47,11 +47,10 @@ Claude Code. Run `wardby doctor` afterwards to verify the local installation.
|
|
|
47
47
|
with webhooks, link a native agent to the repository with the `pull_request`
|
|
48
48
|
trigger, and open a pull request. See [Code review agents](code-review-agents.md).
|
|
49
49
|
|
|
50
|
-
- **D. Another language (Go, Java, Rust…).** Do A
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
[Build a custom worker image](build-worker-image.md). Codex agents only.
|
|
50
|
+
- **D. Another language (Go, Java, Rust…).** Do A, then build an image with
|
|
51
|
+
that toolchain and set the builder's `codingProfile.workerImageRef`. Ask your
|
|
52
|
+
assistant "Help me build a Wardby worker image for Go"; it follows
|
|
53
|
+
[Build a custom worker image](build-worker-image.md).
|
|
55
54
|
|
|
56
55
|
The quickstart ends with a menu of next steps to ask your assistant: run the
|
|
57
56
|
builder and reviewer, allow more packages, build a worker image, schedule an
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: github-app-setup
|
|
3
|
+
title: Set up the GitHub App
|
|
4
|
+
summary: Step by step, create Wardby's GitHub App, choose its events and permissions, install it on your repositories, and give the server its credentials.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [github, github-app, setup, permissions, webhooks, GITHUB_APP_ID, GITHUB_APP_WEBHOOK_SECRET, link_host_account]
|
|
7
|
+
appliesTo: ">=0.2.1"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Set up the GitHub App
|
|
11
|
+
|
|
12
|
+
Wardby reaches GitHub through a GitHub App that you create and own. Each Wardby
|
|
13
|
+
server needs its own App, because an App has exactly one webhook URL. For an
|
|
14
|
+
overview of how Wardby uses the App, see
|
|
15
|
+
[Connect GitHub repositories](github.md).
|
|
16
|
+
|
|
17
|
+
Decide first what the App is for:
|
|
18
|
+
|
|
19
|
+
- **Coding agents only**, triggered with `trigger_agent` or on a schedule:
|
|
20
|
+
GitHub never calls your server, so you can skip the webhook (step 2) and the
|
|
21
|
+
events (step 4).
|
|
22
|
+
- **Review agents, `@`-mentions, review fix rounds, merge watchers, or
|
|
23
|
+
marking pull requests ready**: these start from GitHub webhooks, so your
|
|
24
|
+
server must be reachable over public HTTPS at the host of
|
|
25
|
+
`MCP_CANONICAL_URI`.
|
|
26
|
+
|
|
27
|
+
## 1. Create the App
|
|
28
|
+
|
|
29
|
+
In the GitHub settings of the user or organization that will own it, open
|
|
30
|
+
**Developer settings**, then **GitHub Apps**, then **New GitHub App**. Give
|
|
31
|
+
it a name and a homepage URL. The owner matters: Wardby always serves the
|
|
32
|
+
App's owner, and other accounts only when you list them (step 7).
|
|
33
|
+
|
|
34
|
+
## 2. Webhook
|
|
35
|
+
|
|
36
|
+
- **Webhook URL**: `https://<your-host>/hosts/github/events`, where
|
|
37
|
+
`<your-host>` is the host of `MCP_CANONICAL_URI`. Requests naming any other
|
|
38
|
+
host are rejected.
|
|
39
|
+
- **Webhook secret**: a random value, for example from `openssl rand -hex 32`.
|
|
40
|
+
The same value goes into `GITHUB_APP_WEBHOOK_SECRET` (step 7). Until that
|
|
41
|
+
variable is set, the endpoint answers 404.
|
|
42
|
+
|
|
43
|
+
For coding agents only, untick **Active** under Webhook instead.
|
|
44
|
+
|
|
45
|
+
## 3. Repository permissions
|
|
46
|
+
|
|
47
|
+
| Permission | Access |
|
|
48
|
+
| --------------- | -------------------------------------------------- |
|
|
49
|
+
| Contents | Read and write (Read for an App that only reviews) |
|
|
50
|
+
| Pull requests | Read and write |
|
|
51
|
+
| Checks | Read and write |
|
|
52
|
+
| Issues | Read and write |
|
|
53
|
+
| Commit statuses | Read (optional) |
|
|
54
|
+
|
|
55
|
+
- **Contents: Read and write** lets coding agents push a branch for each pull
|
|
56
|
+
request. A review-only App can have Read, but its reviewers then can't
|
|
57
|
+
resolve their own fixed review threads.
|
|
58
|
+
- **Checks** carries the `wardby review` and `wardby merge order` checks.
|
|
59
|
+
- **Issues** covers mentions in issues and the labels used by
|
|
60
|
+
[automatic review fix rounds](review-fix-rounds.md).
|
|
61
|
+
- **Commit statuses** lets reviewers see CI that reports commit statuses
|
|
62
|
+
rather than check runs.
|
|
63
|
+
|
|
64
|
+
If you change permissions later, every installation must accept the new set
|
|
65
|
+
before its webhooks resume.
|
|
66
|
+
|
|
67
|
+
## 4. Events
|
|
68
|
+
|
|
69
|
+
Tick each one; every event is its own checkbox.
|
|
70
|
+
|
|
71
|
+
| Event | Needed for |
|
|
72
|
+
| --------------------------- | ----------------------------------------------------------------------------------------------------------- |
|
|
73
|
+
| Pull request | `pull_request` reviewers and `review_fix` |
|
|
74
|
+
| Check run | Re-running the review check |
|
|
75
|
+
| Check suite | Reviews that wait for CI (`waitForCi`), and `markReadyWhenPassing` marking a draft ready once CI goes green |
|
|
76
|
+
| Issue comment | `@`-mentions in issue and pull request comments |
|
|
77
|
+
| Issues | `@`-mentions in a newly opened or edited issue |
|
|
78
|
+
| Pull request review comment | `@`-mentions in inline review threads |
|
|
79
|
+
| Push | The `push` trigger (merge-watcher agents) |
|
|
80
|
+
|
|
81
|
+
Missing an event fails quietly: the matching trigger never starts. A common
|
|
82
|
+
case is leaving out Check suite, so drafts that should be marked ready stay
|
|
83
|
+
drafts.
|
|
84
|
+
|
|
85
|
+
## 5. Account linking
|
|
86
|
+
|
|
87
|
+
`link_host_account` lets a Wardby user prove which GitHub account they are, so
|
|
88
|
+
Wardby can check their repository access. In the App's **General** settings:
|
|
89
|
+
|
|
90
|
+
- **Callback URL**: `https://<your-host>/hosts/github/user-callback`.
|
|
91
|
+
- Leave **Request user authorization (OAuth) during installation** unticked.
|
|
92
|
+
- Note the **Client ID** (not the numeric App ID) and generate a **client
|
|
93
|
+
secret**.
|
|
94
|
+
|
|
95
|
+
## 6. Private key and installation
|
|
96
|
+
|
|
97
|
+
1. Save the App, note its numeric **App ID**, and generate a **private key**
|
|
98
|
+
(a `.pem` file).
|
|
99
|
+
2. Under **Install App**, install it on your account or organization and
|
|
100
|
+
choose **Only select repositories**: pick only the repositories your agents
|
|
101
|
+
may use.
|
|
102
|
+
|
|
103
|
+
## 7. Configure Wardby
|
|
104
|
+
|
|
105
|
+
| Variable | Value |
|
|
106
|
+
| -------------------------------- | --------------------------------------------------------------------------- |
|
|
107
|
+
| `GITHUB_APP_ID` | The numeric App ID |
|
|
108
|
+
| `GITHUB_APP_PRIVATE_KEY` | The contents of the `.pem` file |
|
|
109
|
+
| `GITHUB_APP_WEBHOOK_SECRET` | The webhook secret from step 2 |
|
|
110
|
+
| `GITHUB_APP_CLIENT_ID` | The Client ID from step 5 (set together with the client secret, or neither) |
|
|
111
|
+
| `GITHUB_APP_CLIENT_SECRET` | The client secret from step 5 |
|
|
112
|
+
| `WARDBY_GITHUB_ALLOWED_ACCOUNTS` | Optional: accounts other than the App's owner to serve, comma-separated |
|
|
113
|
+
| `WARDBY_MENTION_EXPLANATIONS` | Optional: `false` = no reply saying why a mention started nothing |
|
|
114
|
+
|
|
115
|
+
Restart the server after setting them. Without `GITHUB_APP_ID` and
|
|
116
|
+
`GITHUB_APP_PRIVATE_KEY`, coding runs on GitHub repositories fail with
|
|
117
|
+
[`vcs_github_not_configured`](errors/vcs-github-not-configured.md).
|
|
118
|
+
Repositories of accounts that aren't served are refused with
|
|
119
|
+
[`github_account_not_allowed`](errors/github-account-not-allowed.md).
|
|
120
|
+
|
|
121
|
+
## 8. Check it
|
|
122
|
+
|
|
123
|
+
- Run `link_host_account` and finish the GitHub sign-in it opens.
|
|
124
|
+
- Link an agent with `link_repository`, or create a coding agent on the
|
|
125
|
+
repository (see [builder agents](builder-agent.md) and
|
|
126
|
+
[Run GitHub code-review agents](code-review-agents.md)).
|
|
127
|
+
- In the App's **Advanced** settings, **Recent Deliveries** should show your
|
|
128
|
+
server answering webhooks with a 2xx status. A signature failure there means
|
|
129
|
+
the webhook secret and `GITHUB_APP_WEBHOOK_SECRET` differ.
|
|
130
|
+
|
|
131
|
+
The full reference, including rollout order on Kubernetes deployments, is
|
|
132
|
+
[Registering the GitHub App](../docs/code-review-agents.md#registering-the-github-app).
|
package/help/github.md
CHANGED
|
@@ -3,7 +3,7 @@ id: github-integration
|
|
|
3
3
|
title: Connect GitHub repositories
|
|
4
4
|
summary: Authorize repository access and configure Wardby coding or review agents through a scoped GitHub App.
|
|
5
5
|
audience: operator
|
|
6
|
-
tags: [github, repositories, coding-agents, code-review]
|
|
6
|
+
tags: [github, repositories, coding-agents, code-review, WARDBY_GITHUB_ALLOWED_ACCOUNTS]
|
|
7
7
|
appliesTo: >=0.2.1
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -23,10 +23,23 @@ Workers do not receive the GitHub App private key. A trusted component validates
|
|
|
23
23
|
the changes, pushes a controlled branch, and opens at most one draft pull
|
|
24
24
|
request. Wardby does not auto-merge coding-agent output.
|
|
25
25
|
|
|
26
|
+
To create and install the App, follow [Set up the GitHub App](github-app-setup.md).
|
|
27
|
+
|
|
26
28
|
Set the App's credentials as `GITHUB_APP_ID` and `GITHUB_APP_PRIVATE_KEY` on
|
|
27
29
|
the wardby server. Without them, a coding run on a GitHub repository fails with
|
|
28
30
|
[`vcs_github_not_configured`](errors/vcs-github-not-configured.md).
|
|
29
31
|
|
|
32
|
+
From Wardby 0.6.0, wardby serves only trusted GitHub accounts through the App:
|
|
33
|
+
the App's owner, plus any accounts listed in `WARDBY_GITHUB_ALLOWED_ACCOUNTS`
|
|
34
|
+
(comma-separated logins). Other accounts' events are ignored and their
|
|
35
|
+
repositories are refused with `github_account_not_allowed` (help article
|
|
36
|
+
`errors/github-account-not-allowed`), including existing links and scheduled
|
|
37
|
+
runs after an upgrade. wardby removes the App when another account installs it
|
|
38
|
+
or changes its repository selection; remove installations that already exist
|
|
39
|
+
on other accounts by hand (App settings, **Install App**). After transferring
|
|
40
|
+
the App or renaming its owner, list the new owner in the variable or restart
|
|
41
|
+
wardby.
|
|
42
|
+
|
|
30
43
|
No GitHub App is needed for a git repository on the wardby host. See
|
|
31
44
|
[Use local git repositories](local-repositories.md).
|
|
32
45
|
|
|
@@ -58,8 +71,34 @@ The `review_fix` trigger lets Wardby fix its own review's findings
|
|
|
58
71
|
automatically, up to a round cap, on pull requests its own coding runs
|
|
59
72
|
opened. See [Automatic review fix rounds](review-fix-rounds.md).
|
|
60
73
|
|
|
74
|
+
When a mention run finishes without opening a pull request or failing a
|
|
75
|
+
sub-run and its reply is longer than about 2,000 characters (for example a
|
|
76
|
+
plan), the status comment does not cut the reply short. It says "✅ Finished
|
|
77
|
+
without opening a pull request. The full reply follows in the next
|
|
78
|
+
comment(s)." (in a review thread: "...follows in this pull request's
|
|
79
|
+
conversation."), and the reply is posted in up to four numbered comments
|
|
80
|
+
("Reply, part i of n") of about 60,000 characters each, split at headings,
|
|
81
|
+
paragraphs or lines. Anything beyond four parts is cut with a note; the full
|
|
82
|
+
text stays on the run (`get_run`, `finalText`). `@`-mentions in the reply are
|
|
83
|
+
defused. Each part is posted once; if one cannot be posted, the rest are
|
|
84
|
+
skipped. Shorter replies, and runs that opened a pull request or had a failed
|
|
85
|
+
sub-run, keep the status comment that quotes up to 2,000 characters.
|
|
86
|
+
|
|
61
87
|
`waitForCi` holds a reviewer's review until that pull request's own CI
|
|
62
88
|
finishes, and gates its ability to approve on CI passing. See
|
|
63
89
|
[Review after CI (`waitForCi`)](code-review-agents.md#review-after-ci-waitforci).
|
|
64
90
|
|
|
91
|
+
With Wardby 0.6.0 or later, a `pull_request` reviewer also holds its review, with or without
|
|
92
|
+
`waitForCi`, until the pull request's own delegating run finishes, when its
|
|
93
|
+
opening coding run was delegated by a lead agent. See [Reviewing a pull
|
|
94
|
+
request a delegated run
|
|
95
|
+
opened](code-review-agents.md#reviewing-a-pull-request-a-delegated-run-opened).
|
|
96
|
+
|
|
97
|
+
With Wardby 0.7.0 or later, `markReadyWhenPassing` on the write link of the
|
|
98
|
+
agent the event triggers (a builder, or a lead that delegates to a coding
|
|
99
|
+
builder) has Wardby mark the draft pull requests it opens here ready for review
|
|
100
|
+
on its own, once every Wardby reviewer check and CI on the head are green
|
|
101
|
+
and, for a merge-ordered set, the steps it depends on have merged. See [Mark
|
|
102
|
+
ready when passing](code-review-agents.md#mark-ready-when-passing).
|
|
103
|
+
|
|
65
104
|
For Jira Cloud instead of GitHub, see [Run Jira agents](jira.md).
|
|
@@ -21,7 +21,7 @@ audience, and the granted Wardby scopes in `scope` or `scp`.
|
|
|
21
21
|
|
|
22
22
|
Scopes authorize normal operations such as managing agents, runs, tools,
|
|
23
23
|
datastores, secrets, webhooks, budgets, packages, services, memory, and
|
|
24
|
-
models.
|
|
24
|
+
models. Six sensitive permissions have an additional role requirement:
|
|
25
25
|
|
|
26
26
|
- `agents:admin` requires the Wardby `admin` role.
|
|
27
27
|
- `packages:approve` requires the `admin` or `package-approver` role.
|
|
@@ -31,6 +31,10 @@ models. Five sensitive permissions have an additional role requirement:
|
|
|
31
31
|
- `models:admin` requires the `admin` or `model-manager` role. It adds,
|
|
32
32
|
overrides, disables, and resets model catalog entries; see
|
|
33
33
|
[Models and pricing](models.md).
|
|
34
|
+
- `power:manage` requires the `admin` role. It reads low-power state and
|
|
35
|
+
sleeps the coding proxy and native gateway now (`power_status`,
|
|
36
|
+
`power_sleep`); see
|
|
37
|
+
[Low-power mode](../docs/getting-started-gke.md#low-power-mode).
|
|
34
38
|
|
|
35
39
|
Map roles only from an IdP claim that users cannot self-assign. Removing a
|
|
36
40
|
role affects the next token the caller receives.
|
|
@@ -42,3 +46,5 @@ that request every advertised scope otherwise fail with `invalid_scope`.
|
|
|
42
46
|
Read [`docs/getting-started-identity-provider.md`](../docs/getting-started-identity-provider.md)
|
|
43
47
|
for the required claims, scope list, role mapping, provider examples, and
|
|
44
48
|
client registration.
|
|
49
|
+
|
|
50
|
+
From Wardby 0.7.0, to share an agent with one person or with everyone signed in, see the help article `sharing-agents`.
|
package/help/jira.md
CHANGED
|
@@ -65,13 +65,24 @@ the `Jira acting as` startup line to confirm the account.
|
|
|
65
65
|
Beyond reading, searching and commenting, linked agents get
|
|
66
66
|
`jira_list_transitions`, `jira_transition`, `jira_update_fields`,
|
|
67
67
|
`jira_link_issues`, and `jira_get_property` / `jira_set_property` for
|
|
68
|
-
per-issue state, plus `jira_create_issue` and `jira_read_attachment`. Each
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
68
|
+
per-issue state, plus `jira_create_issue` and `jira_read_attachment`. Each
|
|
69
|
+
authorizes against the issue's own project and the agent's live link.
|
|
70
|
+
Properties are not allowlisted: any `write` link can set them and any link can
|
|
71
|
+
read them. They are stored as `wardby.<agentId>.<name>`, and anyone with Jira
|
|
72
|
+
API access to the issue can read or overwrite them, so never store secrets
|
|
73
|
+
there. Run status comments include an `Agent spend: $...` line. To see what
|
|
74
|
+
work on a card, epic, or project cost, read
|
|
74
75
|
[Attribute agent spend to issues](cost-attribution.md).
|
|
76
|
+
|
|
77
|
+
When a run succeeds, opens no pull request, has no failed sub-run, and its
|
|
78
|
+
reply is longer than about 2,000 characters (for example a plan), the status
|
|
79
|
+
comment says "✅ The full reply follows in the next comment(s)." and the reply
|
|
80
|
+
follows in up to four numbered comments ("Reply, part i of n") of about 15,000
|
|
81
|
+
characters each, split at headings, paragraphs or lines. Anything beyond is
|
|
82
|
+
cut with a note, and the full text stays on the run (`get_run`, `finalText`).
|
|
83
|
+
`@`-mentions are defused. Each part is posted once; if one cannot be posted,
|
|
84
|
+
the rest are skipped. Shorter replies stay in the status comment.
|
|
85
|
+
|
|
75
86
|
If the token belongs to a person, Wardby refuses to act: startup logs an error
|
|
76
87
|
and the webhook answers 503 `jira_personal_account`. Deliveries with a
|
|
77
88
|
timestamp older than two hours (or more than five minutes ahead) are ignored.
|
|
@@ -125,6 +136,12 @@ agent how to continue each open one; see
|
|
|
125
136
|
[Related pull requests across repositories](related-pull-requests.md). See
|
|
126
137
|
the full guide for the recipe.
|
|
127
138
|
|
|
139
|
+
To have a code reviewer check such a pull request against the ticket's own
|
|
140
|
+
acceptance criteria, link the reviewer to the Jira project too (read access
|
|
141
|
+
is enough): it then reads the ticket with `jira_get_issue`. Without that link
|
|
142
|
+
it can only judge the criteria from the pull request's description; see
|
|
143
|
+
[Run GitHub code-review agents](code-review-agents.md#reading-the-issue-a-pull-request-resolves).
|
|
144
|
+
|
|
128
145
|
## Trust rules
|
|
129
146
|
|
|
130
147
|
Only people (not customers, apps, or the service account itself) can trigger
|