@wardby/cli 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deploy/local/docker-compose.quickstart-coding.yml +13 -0
- package/dist/claude-coding-worker/driver.d.ts +21 -3
- package/dist/claude-coding-worker/driver.js +125 -17
- package/dist/claude-coding-worker/main.js +34 -6
- package/dist/claude-coding-worker/sdk.js +12 -1
- package/dist/claude-coding-worker/tool-socket.d.ts +27 -0
- package/dist/claude-coding-worker/tool-socket.js +111 -0
- package/dist/claude-coding-worker/transcript.d.ts +18 -0
- package/dist/claude-coding-worker/transcript.js +77 -0
- package/dist/cli-help.d.ts +1 -1
- package/dist/cli-help.js +1 -0
- package/dist/cli.js +24 -10
- package/dist/coding/continuation-wording.d.ts +35 -0
- package/dist/coding/continuation-wording.js +73 -0
- package/dist/coding/linked-issue-note.d.ts +23 -0
- package/dist/coding/linked-issue-note.js +47 -0
- package/dist/coding/merge-wording.d.ts +28 -0
- package/dist/coding/merge-wording.js +78 -0
- package/dist/coding/pr-description-note.d.ts +9 -0
- package/dist/coding/pr-description-note.js +32 -0
- package/dist/coding/profile.d.ts +46 -126
- package/dist/coding/profile.js +45 -4
- package/dist/coding/protected-path-wording.d.ts +8 -0
- package/dist/coding/protected-path-wording.js +1 -1
- package/dist/coding/protocol.d.ts +264 -346
- package/dist/coding/protocol.js +235 -12
- package/dist/coding/redact.d.ts +3 -0
- package/dist/coding/redact.js +12 -0
- package/dist/coding/registry/allowlist.d.ts +12 -0
- package/dist/coding/registry/allowlist.js +14 -1
- package/dist/coding/registry/audit-mode.d.ts +153 -0
- package/dist/coding/registry/audit-mode.js +304 -0
- package/dist/coding/registry/lockfile-shared.d.ts +36 -0
- package/dist/coding/registry/lockfile-shared.js +128 -0
- package/dist/coding/registry/lockfiles.js +1 -1
- package/dist/coding/registry/npm-lockfile-formats.d.ts +11 -0
- package/dist/coding/registry/npm-lockfile-formats.js +41 -0
- package/dist/coding/registry/npm-lockfile.d.ts +8 -4
- package/dist/coding/registry/npm-lockfile.js +4 -6
- package/dist/coding/registry/npm.js +78 -8
- package/dist/coding/registry/pnpm-lockfile.d.ts +17 -0
- package/dist/coding/registry/pnpm-lockfile.js +189 -0
- package/dist/coding/registry/pypi-plan.d.ts +50 -0
- package/dist/coding/registry/pypi-plan.js +406 -0
- package/dist/coding/registry/pypi-requirements.d.ts +58 -0
- package/dist/coding/registry/pypi-requirements.js +155 -0
- package/dist/coding/registry/pypi.d.ts +3 -27
- package/dist/coding/registry/pypi.js +40 -154
- package/dist/coding/registry/refusal-hints.d.ts +20 -0
- package/dist/coding/registry/refusal-hints.js +61 -0
- package/dist/coding/registry/refusal-wording.d.ts +11 -0
- package/dist/coding/registry/refusal-wording.js +56 -0
- package/dist/coding/registry/report.d.ts +70 -8
- package/dist/coding/registry/report.js +112 -5
- package/dist/coding/registry/types.d.ts +58 -8
- package/dist/coding/registry/yarn-lockfile.d.ts +30 -0
- package/dist/coding/registry/yarn-lockfile.js +367 -0
- package/dist/coding/services/catalog.d.ts +37 -351
- package/dist/coding/transcript/claude-code.d.ts +13 -0
- package/dist/coding/transcript/claude-code.js +273 -0
- package/dist/coding/transcript/download-protocol.d.ts +30 -0
- package/dist/coding/transcript/download-protocol.js +18 -0
- package/dist/coding/transcript/format.d.ts +20 -0
- package/dist/coding/transcript/format.js +32 -0
- package/dist/coding/transcript/recorder.d.ts +51 -0
- package/dist/coding/transcript/recorder.js +225 -0
- package/dist/coding/transcript/resume/checkout.d.ts +31 -0
- package/dist/coding/transcript/resume/checkout.js +203 -0
- package/dist/coding/transcript/resume/command.d.ts +17 -0
- package/dist/coding/transcript/resume/command.js +176 -0
- package/dist/coding/transcript/resume/download.d.ts +20 -0
- package/dist/coding/transcript/resume/download.js +153 -0
- package/dist/coding/transcript/resume/launch.d.ts +38 -0
- package/dist/coding/transcript/resume/launch.js +128 -0
- package/dist/coding/transcript/resume/session-file.d.ts +13 -0
- package/dist/coding/transcript/resume/session-file.js +79 -0
- package/dist/coding/transcript/resume/stand-in.d.ts +11 -0
- package/dist/coding/transcript/resume/stand-in.js +49 -0
- package/dist/coding-worker/artifact.d.ts +8 -3
- package/dist/coding-worker/artifact.js +3 -1
- package/dist/coding-worker/debug-trace.d.ts +6 -5
- package/dist/coding-worker/debug-trace.js +13 -18
- package/dist/coding-worker/dependency-cache.d.mts +229 -0
- package/dist/coding-worker/dependency-cache.mjs +2123 -0
- package/dist/coding-worker/driver.d.ts +4 -3
- package/dist/coding-worker/driver.js +116 -38
- package/dist/coding-worker/errors.d.ts +1 -0
- package/dist/coding-worker/errors.js +32 -0
- package/dist/coding-worker/task-note.d.ts +11 -0
- package/dist/coding-worker/task-note.js +13 -0
- package/dist/coding-worker/types.d.ts +11 -0
- package/dist/config/dependency-cache.d.ts +23 -0
- package/dist/config/dependency-cache.js +32 -0
- package/dist/config/providers.d.ts +12 -3
- package/dist/config/providers.js +55 -5
- package/dist/config/test-simulators.d.ts +82 -0
- package/dist/config/test-simulators.js +305 -0
- package/dist/core/async-context.d.ts +2 -0
- package/dist/core/async-context.js +12 -0
- package/dist/core/budget-events.d.ts +108 -0
- package/dist/core/budget-events.js +346 -0
- package/dist/core/budget-groups.d.ts +50 -1
- package/dist/core/budget-groups.js +236 -27
- package/dist/core/budget-stopped-head.d.ts +46 -0
- package/dist/core/budget-stopped-head.js +81 -0
- package/dist/core/budget-topup.d.ts +51 -0
- package/dist/core/budget-topup.js +156 -0
- package/dist/core/budget-wording.d.ts +16 -2
- package/dist/core/budget-wording.js +40 -2
- package/dist/core/coding-queue.d.ts +2 -1
- package/dist/core/coding-queue.js +7 -0
- package/dist/core/cron.d.ts +19 -1
- package/dist/core/cron.js +17 -0
- package/dist/core/datastores.js +1 -1
- package/dist/core/deferred-coding.d.ts +14 -0
- package/dist/core/deferred-coding.js +62 -0
- package/dist/core/delegation-child.d.ts +25 -0
- package/dist/core/delegation-child.js +37 -0
- package/dist/core/dispatch.d.ts +42 -0
- package/dist/core/dispatch.js +131 -56
- package/dist/core/engine-native.js +1 -1
- package/dist/core/error-code.d.ts +38 -0
- package/dist/core/error-code.js +168 -0
- package/dist/core/grants.d.ts +19 -6
- package/dist/core/grants.js +55 -6
- package/dist/core/host-events.d.ts +18 -2
- package/dist/core/host-events.js +284 -24
- package/dist/core/host-status.d.ts +85 -3
- package/dist/core/host-status.js +298 -20
- package/dist/core/issue-bridge.d.ts +50 -6
- package/dist/core/issue-bridge.js +124 -33
- package/dist/core/issue-events.d.ts +1 -1
- package/dist/core/issue-events.js +4 -10
- package/dist/core/issue-status.d.ts +1 -1
- package/dist/core/issue-status.js +54 -26
- package/dist/core/logger.d.ts +5 -0
- package/dist/core/logger.js +14 -1
- package/dist/core/lost-run-children.d.ts +6 -0
- package/dist/core/lost-run-children.js +32 -0
- package/dist/core/mark-ready.d.ts +34 -0
- package/dist/core/mark-ready.js +152 -0
- package/dist/core/markdown-code.d.ts +8 -0
- package/dist/core/markdown-code.js +107 -0
- package/dist/core/memory-tools.js +7 -0
- package/dist/core/merge-order-check.d.ts +2 -1
- package/dist/core/merge-order-check.js +8 -1
- package/dist/core/notification-templates.d.ts +1 -7
- package/dist/core/notification-templates.js +36 -2
- package/dist/core/pull-request-state-sync.js +2 -2
- package/dist/core/reconciler.d.ts +4 -3
- package/dist/core/reconciler.js +8 -1
- package/dist/core/related-pull-requests.d.ts +11 -3
- package/dist/core/related-pull-requests.js +27 -14
- package/dist/core/reply-parts.d.ts +21 -0
- package/dist/core/reply-parts.js +73 -0
- package/dist/core/review-fix.d.ts +1 -1
- package/dist/core/review-fix.js +2 -1
- package/dist/core/review-host-checks.d.ts +1 -1
- package/dist/core/review-host-tools.d.ts +3 -0
- package/dist/core/review-host-tools.js +99 -13
- package/dist/core/review-reads.d.ts +55 -0
- package/dist/core/review-reads.js +233 -0
- package/dist/core/run-status.d.ts +12 -0
- package/dist/core/run-status.js +12 -0
- package/dist/core/runner.d.ts +80 -34
- package/dist/core/runner.js +439 -144
- package/dist/core/schedule-start.d.ts +12 -0
- package/dist/core/schedule-start.js +14 -0
- package/dist/core/secret-broker-config.d.ts +10 -74
- package/dist/core/secret-guard.d.ts +46 -0
- package/dist/core/secret-guard.js +104 -0
- package/dist/core/secret-guarded-stores.d.ts +12 -0
- package/dist/core/secret-guarded-stores.js +41 -0
- package/dist/core/secret-spans.d.ts +50 -0
- package/dist/core/secret-spans.js +94 -0
- package/dist/core/stop-run.d.ts +46 -0
- package/dist/core/stop-run.js +61 -0
- package/dist/core/workflow-events.d.ts +14 -2
- package/dist/core/workflow-events.js +4 -0
- package/dist/core/workflow-run-events.d.ts +5 -3
- package/dist/core/workflow-run-events.js +43 -8
- package/dist/core/zod-json-schema.d.ts +4 -0
- package/dist/core/zod-json-schema.js +39 -0
- package/dist/core/zod3-window.d.ts +35 -0
- package/dist/core/zod3-window.js +124 -0
- package/dist/generated/prisma/browser.d.ts +34 -3
- package/dist/generated/prisma/client.d.ts +34 -3
- package/dist/generated/prisma/commonInputTypes.d.ts +220 -60
- package/dist/generated/prisma/enums.d.ts +10 -0
- package/dist/generated/prisma/enums.js +8 -0
- package/dist/generated/prisma/internal/class.d.ts +44 -0
- package/dist/generated/prisma/internal/class.js +4 -4
- package/dist/generated/prisma/internal/prismaNamespace.d.ts +428 -9
- package/dist/generated/prisma/internal/prismaNamespace.js +92 -1
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +95 -0
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +92 -1
- package/dist/generated/prisma/models/Agent.d.ts +106 -8
- package/dist/generated/prisma/models/AgentRepository.d.ts +42 -1
- package/dist/generated/prisma/models/CodingAgentProfile.d.ts +229 -1
- package/dist/generated/prisma/models/CodingProxyRequest.d.ts +207 -3
- package/dist/generated/prisma/models/CodingProxySession.d.ts +114 -1
- package/dist/generated/prisma/models/CodingRun.d.ts +1637 -1
- package/dist/generated/prisma/models/DependencySnapshot.d.ts +1668 -0
- package/dist/generated/prisma/models/DependencySnapshot.js +1 -0
- package/dist/generated/prisma/models/IssuePullRequest.d.ts +6 -2
- package/dist/generated/prisma/models/LocalReview.d.ts +40 -1
- package/dist/generated/prisma/models/NativeGatewayCall.d.ts +39 -1
- package/dist/generated/prisma/models/NativeGatewaySession.d.ts +35 -1
- package/dist/generated/prisma/models/RegistryAllowance.d.ts +41 -1
- package/dist/generated/prisma/models/RegistryApprovedVersion.d.ts +75 -1
- package/dist/generated/prisma/models/RegistryAuditRecord.d.ts +1364 -0
- package/dist/generated/prisma/models/RegistryAuditRecord.js +1 -0
- package/dist/generated/prisma/models/Run.d.ts +738 -2
- package/dist/generated/prisma/models/RunBudgetEvent.d.ts +1211 -0
- package/dist/generated/prisma/models/RunBudgetEvent.js +1 -0
- package/dist/generated/prisma/models/RunTranscript.d.ts +1339 -0
- package/dist/generated/prisma/models/RunTranscript.js +1 -0
- package/dist/generated/prisma/models.d.ts +4 -0
- package/dist/help-index.json +1320 -69
- package/dist/import/create.js +32 -3
- package/dist/import/neutral-schema.d.ts +50 -281
- package/dist/import/neutral-schema.js +5 -4
- package/dist/knowledge/check.d.ts +1 -1
- package/dist/knowledge/cli.d.ts +11 -1
- package/dist/knowledge/cli.js +37 -4
- package/dist/knowledge/concept.d.ts +3 -19
- package/dist/knowledge/location.d.ts +31 -0
- package/dist/knowledge/location.js +78 -0
- package/dist/mcp/auth/access.d.ts +10 -2
- package/dist/mcp/auth/access.js +15 -1
- package/dist/mcp/auth/ownership.d.ts +7 -7
- package/dist/mcp/auth/self-hosted/credentials.d.ts +3 -3
- package/dist/mcp/auth/self-hosted/session.d.ts +2 -2
- package/dist/mcp/host-events/github-ingress.d.ts +2 -0
- package/dist/mcp/host-events/github-ingress.js +2 -1
- package/dist/mcp/index.d.ts +6 -0
- package/dist/mcp/index.js +58 -10
- package/dist/mcp/server.d.ts +13 -0
- package/dist/mcp/server.js +33 -14
- package/dist/mcp/tools/agents.d.ts +4 -0
- package/dist/mcp/tools/agents.js +198 -16
- package/dist/mcp/tools/datastore.js +17 -8
- package/dist/mcp/tools/grants.js +9 -3
- package/dist/mcp/tools/memory.js +11 -1
- package/dist/mcp/tools/notification-channels.js +2 -2
- package/dist/mcp/tools/packages.d.ts +2 -0
- package/dist/mcp/tools/packages.js +195 -0
- package/dist/mcp/tools/repositories.js +18 -5
- package/dist/mcp/tools/run-access.d.ts +16 -0
- package/dist/mcp/tools/run-access.js +25 -0
- package/dist/mcp/tools/run-transcript-download.d.ts +30 -0
- package/dist/mcp/tools/run-transcript-download.js +129 -0
- package/dist/mcp/tools/run-transcript.d.ts +19 -0
- package/dist/mcp/tools/run-transcript.js +70 -0
- package/dist/mcp/tools/runs.js +34 -12
- package/dist/mcp/tools/scheduling.js +3 -1
- package/dist/mcp/tools/secret-elicitation-form.js +5 -0
- package/dist/mcp/tools/secret-elicitation-server.d.ts +6 -0
- package/dist/mcp/tools/secret-elicitation-server.js +10 -61
- package/dist/mcp/tools/secrets.js +2 -2
- package/dist/mcp/tools/stop-run.d.ts +2 -0
- package/dist/mcp/tools/stop-run.js +82 -0
- package/dist/mcp/tools/subagents.js +2 -2
- package/dist/mcp/tools/tools.d.ts +1 -1
- package/dist/mcp/tools/tools.js +25 -9
- package/dist/mcp/transport/stdio-link-host.d.ts +20 -0
- package/dist/mcp/transport/stdio-link-host.js +67 -0
- package/dist/mcp/transport/streamable-http.d.ts +13 -0
- package/dist/mcp/transport/streamable-http.js +41 -1
- package/dist/native-worker/docker-launcher.d.ts +38 -2
- package/dist/native-worker/docker-launcher.js +65 -5
- package/dist/native-worker/gateway-server.d.ts +41 -3
- package/dist/native-worker/gateway-server.js +124 -27
- package/dist/native-worker/gateway.d.ts +27 -1
- package/dist/native-worker/gateway.js +70 -4
- package/dist/native-worker/http-server.d.ts +3 -1
- package/dist/native-worker/http-server.js +11 -7
- package/dist/native-worker/http-transport.js +1 -1
- package/dist/native-worker/kubernetes-launcher.d.ts +7 -3
- package/dist/native-worker/kubernetes-launcher.js +43 -3
- package/dist/native-worker/launch.d.ts +18 -1
- package/dist/native-worker/launch.js +6 -1
- package/dist/native-worker/ledger.d.ts +18 -2
- package/dist/native-worker/ledger.js +57 -4
- package/dist/native-worker/loopback.js +3 -8
- package/dist/native-worker/main.d.ts +2 -1
- package/dist/native-worker/main.js +14 -3
- package/dist/native-worker/protocol.d.ts +129 -577
- package/dist/native-worker/protocol.js +47 -1
- package/dist/native-worker/sandbox-executor.d.ts +17 -2
- package/dist/native-worker/sandbox-executor.js +78 -4
- package/dist/native-worker/stderr-redaction.d.ts +77 -0
- package/dist/native-worker/stderr-redaction.js +237 -0
- package/dist/native-worker/stdio.d.ts +1 -1
- package/dist/native-worker/stdio.js +6 -5
- package/dist/native-worker/warm-pool.d.ts +2 -2
- package/dist/native-worker/warm-pool.js +4 -4
- package/dist/native-worker/worker.js +28 -2
- package/dist/observability/metrics.js +6 -1
- package/dist/providers/auth/self-hosted.d.ts +1 -1
- package/dist/providers/coding-proxy/dependency-cache/eviction.d.ts +29 -0
- package/dist/providers/coding-proxy/dependency-cache/eviction.js +87 -0
- package/dist/providers/coding-proxy/dependency-cache/key.d.ts +33 -0
- package/dist/providers/coding-proxy/dependency-cache/key.js +86 -0
- package/dist/providers/coding-proxy/dependency-cache/model-request-seal.d.ts +18 -0
- package/dist/providers/coding-proxy/dependency-cache/model-request-seal.js +40 -0
- package/dist/providers/coding-proxy/dependency-cache/prisma-store.d.ts +25 -0
- package/dist/providers/coding-proxy/dependency-cache/prisma-store.js +131 -0
- package/dist/providers/coding-proxy/dependency-cache/service.d.ts +70 -0
- package/dist/providers/coding-proxy/dependency-cache/service.js +409 -0
- package/dist/providers/coding-proxy/dependency-cache/store.d.ts +85 -0
- package/dist/providers/coding-proxy/dependency-cache/store.js +95 -0
- package/dist/providers/coding-proxy/hold.d.ts +32 -0
- package/dist/providers/coding-proxy/hold.js +86 -0
- package/dist/providers/coding-proxy/interrupted.d.ts +70 -0
- package/dist/providers/coding-proxy/interrupted.js +104 -0
- package/dist/providers/coding-proxy/memory-ledger.d.ts +15 -2
- package/dist/providers/coding-proxy/memory-ledger.js +84 -8
- package/dist/providers/coding-proxy/metering.d.ts +16 -0
- package/dist/providers/coding-proxy/metering.js +27 -4
- package/dist/providers/coding-proxy/prisma-ledger.d.ts +15 -2
- package/dist/providers/coding-proxy/prisma-ledger.js +179 -67
- package/dist/providers/coding-proxy/proxy.d.ts +14 -1
- package/dist/providers/coding-proxy/proxy.js +166 -14
- package/dist/providers/coding-proxy/registry/audit.d.ts +53 -10
- package/dist/providers/coding-proxy/registry/audit.js +94 -17
- package/dist/providers/coding-proxy/registry/lockfile-parse-worker.d.ts +36 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse-worker.js +67 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse.d.ts +16 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse.js +110 -0
- package/dist/providers/coding-proxy/registry/plan.d.ts +9 -0
- package/dist/providers/coding-proxy/registry/plan.js +201 -48
- package/dist/providers/coding-proxy/registry/prisma-store.d.ts +11 -5
- package/dist/providers/coding-proxy/registry/prisma-store.js +120 -17
- package/dist/providers/coding-proxy/registry/service.d.ts +97 -16
- package/dist/providers/coding-proxy/registry/service.js +579 -112
- package/dist/providers/coding-proxy/registry/store.d.ts +84 -9
- package/dist/providers/coding-proxy/registry/store.js +54 -1
- package/dist/providers/coding-proxy/runtime.d.ts +4 -0
- package/dist/providers/coding-proxy/runtime.js +78 -16
- package/dist/providers/coding-proxy/server.d.ts +6 -1
- package/dist/providers/coding-proxy/server.js +45 -1
- package/dist/providers/coding-proxy/types.d.ts +65 -1
- package/dist/providers/datastore/types.d.ts +5 -0
- package/dist/providers/engine/types.d.ts +17 -2
- package/dist/providers/engine/types.js +17 -0
- package/dist/providers/executor/composition.d.ts +10 -3
- package/dist/providers/executor/composition.js +47 -7
- package/dist/providers/executor/container.d.ts +361 -8
- package/dist/providers/executor/container.js +1136 -91
- package/dist/providers/executor/dbos-status.d.ts +31 -0
- package/dist/providers/executor/dbos-status.js +64 -0
- package/dist/providers/executor/dbos.d.ts +50 -1
- package/dist/providers/executor/dbos.js +207 -20
- package/dist/providers/executor/deferred.d.ts +12 -24
- package/dist/providers/executor/deferred.js +10 -29
- package/dist/providers/executor/in-process.d.ts +9 -1
- package/dist/providers/executor/in-process.js +14 -4
- package/dist/providers/executor/linked-issue-reader.d.ts +16 -0
- package/dist/providers/executor/linked-issue-reader.js +30 -0
- package/dist/providers/executor/routing.d.ts +2 -0
- package/dist/providers/executor/routing.js +4 -0
- package/dist/providers/executor/types.d.ts +13 -0
- package/dist/providers/index.d.ts +2 -1
- package/dist/providers/issue-tracker/types.d.ts +17 -0
- package/dist/providers/issue-tracker/types.js +39 -1
- package/dist/providers/jobs/claude-tool-setup.d.ts +4 -0
- package/dist/providers/jobs/claude-tool-setup.js +5 -2
- package/dist/providers/jobs/docker-isolation.d.ts +8 -0
- package/dist/providers/jobs/docker-isolation.js +17 -0
- package/dist/providers/jobs/docker.d.ts +1 -0
- package/dist/providers/jobs/docker.js +27 -2
- package/dist/providers/jobs/fake-kubernetes-api.d.ts +2 -0
- package/dist/providers/jobs/fake-kubernetes-api.js +3 -0
- package/dist/providers/jobs/kubernetes-api.d.ts +8 -0
- package/dist/providers/jobs/kubernetes-api.js +10 -0
- package/dist/providers/jobs/kubernetes-client.js +10 -1
- package/dist/providers/jobs/kubernetes-isolation.d.ts +2 -0
- package/dist/providers/jobs/kubernetes-isolation.js +17 -1
- package/dist/providers/jobs/kubernetes.d.ts +6 -1
- package/dist/providers/jobs/kubernetes.js +105 -16
- package/dist/providers/jobs/types.d.ts +33 -0
- package/dist/providers/jobs/types.js +13 -1
- package/dist/providers/llm/anthropic.js +5 -1
- package/dist/providers/llm/bedrock.d.ts +0 -12
- package/dist/providers/llm/bedrock.js +4 -0
- package/dist/providers/llm/claude-messages.d.ts +3 -1
- package/dist/providers/llm/claude-messages.js +4 -1
- package/dist/providers/llm/claude-provider.d.ts +2 -2
- package/dist/providers/llm/claude-provider.js +2 -2
- package/dist/providers/llm/openai.d.ts +2 -2
- package/dist/providers/llm/openai.js +6 -2
- package/dist/providers/llm/routing.d.ts +2 -2
- package/dist/providers/llm/routing.js +2 -2
- package/dist/providers/llm/types.d.ts +12 -2
- package/dist/providers/review-host/github-events.d.ts +9 -1
- package/dist/providers/review-host/github-events.js +34 -12
- package/dist/providers/review-host/github.d.ts +29 -2
- package/dist/providers/review-host/github.js +224 -29
- package/dist/providers/review-host/local.d.ts +8 -4
- package/dist/providers/review-host/local.js +49 -31
- package/dist/providers/review-host/patch-pages.d.ts +41 -0
- package/dist/providers/review-host/patch-pages.js +176 -0
- package/dist/providers/review-host/review-format.d.ts +19 -1
- package/dist/providers/review-host/review-format.js +38 -7
- package/dist/providers/review-host/types.d.ts +134 -2
- package/dist/providers/review-host/types.js +8 -0
- package/dist/providers/storage/gcs.d.ts +63 -0
- package/dist/providers/storage/gcs.js +69 -0
- package/dist/providers/storage/index.d.ts +15 -0
- package/dist/providers/storage/index.js +14 -0
- package/dist/providers/storage/local.d.ts +24 -0
- package/dist/providers/storage/local.js +92 -0
- package/dist/providers/storage/meter.d.ts +14 -0
- package/dist/providers/storage/meter.js +34 -0
- package/dist/providers/storage/s3.d.ts +41 -0
- package/dist/providers/storage/s3.js +107 -0
- package/dist/providers/storage/types.d.ts +37 -3
- package/dist/providers/storage/types.js +21 -4
- package/dist/providers/vcs/git.d.ts +33 -2
- package/dist/providers/vcs/git.js +324 -22
- package/dist/providers/vcs/github-remote.d.ts +26 -3
- package/dist/providers/vcs/github-remote.js +124 -14
- package/dist/providers/vcs/github.d.ts +214 -6
- package/dist/providers/vcs/github.js +447 -45
- package/dist/providers/vcs/index.js +8 -1
- package/dist/providers/vcs/pr-description.d.ts +127 -0
- package/dist/providers/vcs/pr-description.js +270 -0
- package/dist/providers/vcs/remote.d.ts +33 -1
- package/dist/providers/vcs/routing.d.ts +4 -2
- package/dist/providers/vcs/routing.js +6 -0
- package/dist/providers/vcs/types.d.ts +80 -3
- package/dist/quickstart/coding-seed.d.ts +14 -3
- package/dist/quickstart/coding-seed.js +213 -4
- package/dist/quickstart/reviewer-prompt.d.ts +1 -1
- package/dist/quickstart/reviewer-prompt.js +6 -6
- package/dist/quickstart-images.json +1 -1
- package/dist/sandbox/generated/zod.bundle.js +62 -1
- package/dist/sandbox/generated/zod3.bundle.js +5 -0
- package/dist/sandbox/host-functions.d.ts +1 -0
- package/dist/sandbox/host-functions.js +6 -11
- package/dist/sandbox/secret-broker.js +3 -4
- package/dist/sandbox/tool-capabilities.d.ts +10 -30
- package/dist/sandbox/zod-params.d.ts +37 -5
- package/dist/sandbox/zod-params.js +181 -26
- package/dist/serve.js +8 -1
- package/dist/viewer/api-schema.d.ts +349 -2627
- package/dist/viewer/api-schema.js +7 -0
- package/dist/viewer/build-schemas.js +6 -2
- package/dist/viewer/openapi.js +2 -4
- package/dist/wardby-bin.js +10 -0
- package/docs/agent-recipes.md +58 -20
- package/docs/code-review-agents.md +551 -41
- package/docs/coding-agent-setup.md +489 -7
- package/docs/coding-packages.md +1033 -90
- package/docs/coding-services.md +27 -12
- package/docs/coding-worker-byo-images.md +20 -0
- package/docs/coding-worker-isolation.md +105 -30
- package/docs/getting-started-gke.md +124 -137
- package/docs/getting-started-identity-provider.md +10 -1
- package/docs/getting-started.md +9 -0
- package/docs/jira-agents.md +17 -8
- package/docs/knowledge/blob-not-found-semantics.md +41 -0
- package/docs/knowledge/bounded-file-descriptor.md +52 -0
- package/docs/knowledge/delegation-admission-slots.md +52 -0
- package/docs/knowledge/http-dispatcher-bootstrap.md +61 -0
- package/docs/knowledge/import-rename-target.md +52 -0
- package/docs/knowledge/index.md +57 -0
- package/docs/knowledge/log.md +9 -0
- package/docs/knowledge/mcp-cancelled-task-precedence.md +41 -0
- package/docs/knowledge/mcp-http-prompt-discovery.md +41 -0
- package/docs/knowledge/mcp-schema-module-boundary.md +41 -0
- package/docs/knowledge/nullable-tool-uniqueness.md +52 -0
- package/docs/knowledge/overview-cli.md +74 -0
- package/docs/knowledge/overview-coding-proxy.md +72 -0
- package/docs/knowledge/overview-coding.md +72 -0
- package/docs/knowledge/overview-config.md +60 -0
- package/docs/knowledge/overview-core.md +72 -0
- package/docs/knowledge/overview-deploy.md +83 -0
- package/docs/knowledge/overview-mcp.md +61 -0
- package/docs/knowledge/overview-prisma.md +72 -0
- package/docs/knowledge/overview-providers.md +89 -0
- package/docs/knowledge/overview-sandbox.md +83 -0
- package/docs/knowledge/overview-surfaces.md +83 -0
- package/docs/knowledge/private-datastore-shared-boundary.md +54 -0
- package/docs/knowledge/proxy-settlement-projections.md +41 -0
- package/docs/knowledge/run-pricing-first-writer.md +43 -0
- package/docs/knowledge/schedule-claim-transaction.md +41 -0
- package/docs/knowledge/secret-entry-replica-contract.md +52 -0
- package/docs/knowledge/terminal-run-first-writer.md +41 -0
- package/docs/knowledge/transactional-agent-authorization.md +52 -0
- package/docs/knowledge/viewer-notify-write-isolation.md +30 -0
- package/docs/knowledge/warm-input-publication.md +30 -0
- package/docs/knowledge/workspace-staging-failure.md +54 -0
- package/docs/knowledge.md +54 -14
- package/docs/native-sandbox.md +119 -23
- package/docs/observability.md +4 -0
- package/docs/security-deployment.md +33 -2
- package/docs/slack-notifications.md +35 -19
- package/docs/tool-secrets.md +42 -10
- package/docs/viewer-api.openapi.yml +1 -1
- package/help/admin-viewer.md +24 -2
- package/help/architecture-agent.md +11 -6
- package/help/build-worker-image.md +3 -1
- package/help/builder-agent.md +19 -6
- package/help/code-review-agents.md +177 -6
- package/help/coding-packages.md +156 -6
- package/help/cost-attribution.md +9 -5
- package/help/creating-agents.md +14 -1
- package/help/dependency-cache.md +143 -0
- package/help/deploy-gke.md +15 -8
- package/help/errors/budget-exhausted.md +187 -0
- package/help/errors/budget-group-exhausted.md +5 -1
- package/help/errors/coding-stream-quota-exceeded.md +33 -0
- package/help/errors/coding-workspace-disk-exceeds-limit.md +39 -0
- package/help/errors/continuation-closed.md +9 -12
- package/help/errors/delegation-conflict.md +24 -0
- package/help/errors/file-list-truncated.md +45 -0
- package/help/errors/full-read-required.md +49 -0
- package/help/errors/github-account-not-allowed.md +4 -0
- package/help/errors/graph-incomplete.md +43 -0
- package/help/errors/graph-limit.md +43 -0
- package/help/errors/merge-conflict.md +49 -0
- package/help/errors/native-sandbox-gateway-error.md +20 -0
- package/help/errors/native-sandbox-launch-abandoned.md +21 -0
- package/help/errors/native-sandbox-worker-exited.md +3 -2
- package/help/errors/package-not-allowed-pending.md +52 -0
- package/help/errors/package-not-allowed.md +51 -0
- package/help/errors/package-refusals.md +43 -0
- package/help/errors/patch-cursor-malformed.md +31 -0
- package/help/errors/run-lost.md +39 -0
- package/help/errors/run-transcript-download.md +44 -0
- package/help/errors/secret-in-value.md +69 -0
- package/help/errors/target-merge.md +40 -0
- package/help/fix-merge-conflicts.md +73 -0
- package/help/github-app-setup.md +132 -0
- package/help/github.md +22 -0
- package/help/identity-and-access.md +2 -0
- package/help/jira.md +23 -6
- package/help/knowledge.md +16 -7
- package/help/local-repositories.md +1 -1
- package/help/low-power-mode.md +7 -1
- package/help/merge-order-check.md +5 -0
- package/help/native-capabilities.md +29 -1
- package/help/native-sandbox.md +15 -1
- package/help/operating-agents.md +5 -0
- package/help/package-audit-mode.md +91 -0
- package/help/related-pull-requests.md +10 -7
- package/help/resume-runs-locally.md +131 -0
- package/help/review-fix-rounds.md +33 -1
- package/help/sharing-agents.md +59 -0
- package/help/slack-notifications.md +19 -5
- package/help/status-comments.md +31 -0
- package/help/stop-run.md +58 -0
- package/help/troubleshooting/budgets.md +28 -0
- package/help/troubleshooting/coding-workers.md +78 -7
- package/package.json +17 -10
- package/prisma/migrations/20261016000000_registry_approved_accepted_advisories/migration.sql +3 -0
- package/prisma/migrations/20261016000001_mark_ready_when_passing/migration.sql +3 -0
- package/prisma/migrations/20261017000000_debug_trace_max_mb/migration.sql +4 -0
- package/prisma/migrations/20261018000000_dependency_cache/migration.sql +53 -0
- package/prisma/migrations/20261019000000_claude_max_output_tokens/migration.sql +5 -0
- package/prisma/migrations/20261021000000_pr_description_hash/migration.sql +4 -0
- package/prisma/migrations/20261022000000_dependency_snapshot_validation_metadata/migration.sql +4 -0
- package/prisma/migrations/20261023000000_package_audit_mode/migration.sql +27 -0
- package/prisma/migrations/20261024000000_budget_events/migration.sql +26 -0
- package/prisma/migrations/20261025000000_cache_aware_holds/migration.sql +9 -0
- package/prisma/migrations/20261026000000_budget_overrun/migration.sql +4 -0
- package/prisma/migrations/20261027000000_coding_run_request/migration.sql +1 -0
- package/prisma/migrations/20261028000000_native_gateway_review_reads/migration.sql +6 -0
- package/prisma/migrations/20261029000000_lead_survives_deploy/migration.sql +6 -0
- package/prisma/migrations/20261030000000_local_review_covered_sha/migration.sql +2 -0
- package/prisma/migrations/20261031000000_coding_run_budget_limit/migration.sql +9 -0
- package/prisma/migrations/20261101000000_run_transcripts/migration.sql +22 -0
- package/prisma/schema.prisma +311 -97
- package/dist/sandbox/generated/zod-to-json-schema.bundle.js +0 -5
|
@@ -0,0 +1,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
|
@@ -23,6 +23,8 @@ 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).
|
|
@@ -69,6 +71,19 @@ The `review_fix` trigger lets Wardby fix its own review's findings
|
|
|
69
71
|
automatically, up to a round cap, on pull requests its own coding runs
|
|
70
72
|
opened. See [Automatic review fix rounds](review-fix-rounds.md).
|
|
71
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
|
+
|
|
72
87
|
`waitForCi` holds a reviewer's review until that pull request's own CI
|
|
73
88
|
finishes, and gates its ability to approve on CI passing. See
|
|
74
89
|
[Review after CI (`waitForCi`)](code-review-agents.md#review-after-ci-waitforci).
|
|
@@ -79,4 +94,11 @@ opening coding run was delegated by a lead agent. See [Reviewing a pull
|
|
|
79
94
|
request a delegated run
|
|
80
95
|
opened](code-review-agents.md#reviewing-a-pull-request-a-delegated-run-opened).
|
|
81
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
|
+
|
|
82
104
|
For Jira Cloud instead of GitHub, see [Run Jira agents](jira.md).
|
|
@@ -46,3 +46,5 @@ that request every advertised scope otherwise fail with `invalid_scope`.
|
|
|
46
46
|
Read [`docs/getting-started-identity-provider.md`](../docs/getting-started-identity-provider.md)
|
|
47
47
|
for the required claims, scope list, role mapping, provider examples, and
|
|
48
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
|
package/help/knowledge.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: knowledge
|
|
3
3
|
title: Architecture knowledge bundles
|
|
4
|
-
summary: Keep cited, non-obvious architecture knowledge in docs/knowledge/ so coding runs, reviewers, and live sessions (through the AGENTS.md pointer) use it; validate it with wardby knowledge check.
|
|
4
|
+
summary: Keep cited, non-obvious architecture knowledge in docs/knowledge/ (or a folder you pick in .wardby/knowledge.yaml) so coding runs, reviewers, and live sessions (through the AGENTS.md pointer) use it; validate it with wardby knowledge check.
|
|
5
5
|
audience: operator
|
|
6
|
-
tags: [knowledge, architecture, coding-agents, okf, cli, drift, push]
|
|
6
|
+
tags: [knowledge, architecture, coding-agents, okf, cli, drift, push, knowledge.yaml, bundle-path]
|
|
7
7
|
appliesTo: >=0.4.0
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -16,9 +16,18 @@ their reasons, and cross-module contracts. It uses the Open Knowledge Format
|
|
|
16
16
|
for, the paths it affects, and citations to the code it describes. Each citation
|
|
17
17
|
carries a commit `sha` and a `spanHash` so staleness can be detected.
|
|
18
18
|
|
|
19
|
-
- `
|
|
20
|
-
|
|
21
|
-
-
|
|
19
|
+
- `index.md` lists every concept in one line; `log.md` records changes to the
|
|
20
|
+
bundle.
|
|
21
|
+
- **Pick your own folder:** add `.wardby/knowledge.yaml` with one line,
|
|
22
|
+
`path: .okf` (any repo-relative folder outside `.wardby/` and `.git/`). Wardby
|
|
23
|
+
then reads the bundle there for the coding-run note, merge-watcher drift runs,
|
|
24
|
+
and `wardby knowledge check`. Without the file it uses `docs/knowledge/`; an
|
|
25
|
+
invalid file is ignored with a warning (`knowledge_config_invalid` from the
|
|
26
|
+
check). Or skip wardby's reading entirely: tell your agents where knowledge
|
|
27
|
+
lives in their prompts or `AGENTS.md`, and they use that folder; you lose
|
|
28
|
+
only the automatic note and drift scoping on merge. Update any prompt that
|
|
29
|
+
names `docs/knowledge/` to your folder.
|
|
30
|
+
- When the bundle's `index.md` exists on a coding run's base branch, the run's
|
|
22
31
|
task includes the index automatically (up to 8 KiB). It never fails a
|
|
23
32
|
dispatch; an unreadable index just means no note.
|
|
24
33
|
- When the run's commit is known (it always is for a normal clone) and the
|
|
@@ -26,8 +35,8 @@ carries a commit `sha` and a `spanHash` so staleness can be detected.
|
|
|
26
35
|
has no git metadata, so use that value for citation `sha` fields.
|
|
27
36
|
- Validate the bundle with `wardby knowledge check` (add `--strict` to fail on
|
|
28
37
|
warnings, `--json` for machine output, `--root` to point at the repository).
|
|
29
|
-
Errors are `concept_invalid`, `concept_secret`, `index_missing`,
|
|
30
|
-
`index_link_broken`; warnings are `concept_not_indexed`,
|
|
38
|
+
Errors are `concept_invalid`, `concept_secret`, `index_missing`,
|
|
39
|
+
`index_link_broken`, and `knowledge_config_invalid`; warnings are `concept_not_indexed`,
|
|
31
40
|
`citation_unverifiable`, and `citation_stale`.
|
|
32
41
|
- Builders may edit concept prose. Citations can go stale afterward; the
|
|
33
42
|
architecture agent re-anchors them.
|
|
@@ -50,7 +50,7 @@ The easiest way to try it is the optional coding step of
|
|
|
50
50
|
machine cannot see the folder: it ignores a trusted folder that does not
|
|
51
51
|
exist, so the repository fails with `local_repo_not_allowed`, and `doctor`
|
|
52
52
|
reports the folder as missing.
|
|
53
|
-
- **git 2.
|
|
53
|
+
- **git 2.38 or newer** on the machine that runs the wardby server.
|
|
54
54
|
- **Worker images from this release or later.** An older worker image rejects
|
|
55
55
|
a `local:` repository and the run fails with `worker_input_failed`. That
|
|
56
56
|
includes a bring-your-own `workerImageRef` image: rebuild it on a current
|
package/help/low-power-mode.md
CHANGED
|
@@ -46,7 +46,11 @@ only when `WARDBY_LOW_POWER=1`.
|
|
|
46
46
|
a sandbox run does the same for the gateway. The wait is at least 5 minutes.
|
|
47
47
|
A `KUBERNETES_READY_TIMEOUT_MS` (proxy) or `NATIVE_SANDBOX_READY_TIMEOUT_MS`
|
|
48
48
|
(gateway) above that, set on the control-plane Deployment, raises it. Expect
|
|
49
|
-
about 1 to 2 minutes extra on a cold node. Log: `power: proxy woke`.
|
|
49
|
+
about 1 to 2 minutes extra on a cold node. Log: `power: proxy woke`. A
|
|
50
|
+
sandbox run woken this way may then wait for a gVisor node for its worker
|
|
51
|
+
pod, so its first model call can come several minutes after it started. From
|
|
52
|
+
0.7.0 it shows as running the whole time and is not reaped as orphaned; only
|
|
53
|
+
the wake and pod-start limits above can fail it.
|
|
50
54
|
- **Preflight.** The first coding run after a control-plane restart also runs
|
|
51
55
|
the cluster preflight canary, because start-up preflight is deferred while the
|
|
52
56
|
proxy sleeps (`kubernetes_preflight_deferred`).
|
|
@@ -107,6 +111,8 @@ full table.
|
|
|
107
111
|
|
|
108
112
|
- [`low_power_wake_timeout`](errors/low-power-wake-timeout.md): the target did
|
|
109
113
|
not become ready in time, or its Deployment does not exist.
|
|
114
|
+
- `native_sandbox_launch_abandoned` (0.7.0 and later): a sandbox run was
|
|
115
|
+
stopped while the gateway woke, so no worker pod was made.
|
|
110
116
|
- [`low_power_disabled`](errors/low-power-disabled.md): `power_sleep` was
|
|
111
117
|
called while the mode is off.
|
|
112
118
|
- [`low_power_scale_forbidden`](errors/low-power-scale-forbidden.md): the
|
|
@@ -51,6 +51,11 @@ merge order set by the delegating agent," counted over the whole set
|
|
|
51
51
|
(merged and closed pull requests included), so a pull request's step
|
|
52
52
|
number doesn't change as earlier steps merge.
|
|
53
53
|
|
|
54
|
+
With Wardby 0.7.0 or later, when the delegating lead is linked with
|
|
55
|
+
`markReadyWhenPassing`, later steps become ready for review only once this
|
|
56
|
+
check is `success`. See
|
|
57
|
+
[Mark ready when passing](code-review-agents.md#mark-ready-when-passing).
|
|
58
|
+
|
|
54
59
|
### Waiting for the delegating run to finish
|
|
55
60
|
|
|
56
61
|
While the delegating (lead) agent's run that produced this set is still
|
|
@@ -3,7 +3,7 @@ id: native-capabilities
|
|
|
3
3
|
title: Use native agents, tools, and data
|
|
4
4
|
summary: Attach scoped tools, secrets, datastores, memory, schedules, and sub-agents to a native Wardby agent.
|
|
5
5
|
audience: developer
|
|
6
|
-
tags: [agents, tools, secrets, datastores, memory, schedules, subagents]
|
|
6
|
+
tags: [agents, tools, secrets, datastores, memory, schedules, subagents, zod, paramsZod, create_tool, dry_run_tool]
|
|
7
7
|
appliesTo: >=0.2.1
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -20,6 +20,34 @@ checkout. Give each agent only the capabilities its job needs:
|
|
|
20
20
|
- **Schedules and webhooks** to start event-driven work.
|
|
21
21
|
- **Sub-agents** for delegated, bounded work with their own capability set.
|
|
22
22
|
|
|
23
|
+
A tool's parameters are a Zod schema written as source text (`paramsZod` on
|
|
24
|
+
`create_tool` and `update_tool`). Wardby compiles it inside the sandbox, both to
|
|
25
|
+
derive the JSON Schema the model sees and to validate each call's arguments.
|
|
26
|
+
|
|
27
|
+
Wardby itself now uses Zod 4. For this release only, a tool's `paramsZod` is
|
|
28
|
+
still compiled with Zod 3 (Zod 4's built-in `zod/v3` API), so existing tools keep
|
|
29
|
+
working unchanged; a schema Zod 3 can't compile, such as one using `z.email()`,
|
|
30
|
+
is compiled with Zod 4. **Zod 3 schemas stop working in the next release**,
|
|
31
|
+
which compiles `paramsZod` with Zod 4 only. A schema that calls something Zod 4
|
|
32
|
+
removed, such as `.nonstrict()`, `.deepPartial()`, `z.ostring()` or
|
|
33
|
+
`z.string().ip()`, will then fail every call's validation.
|
|
34
|
+
|
|
35
|
+
Wardby warns about each such tool now:
|
|
36
|
+
|
|
37
|
+
- `create_tool`, `update_tool` and `dry_run_tool` results include a `warnings`
|
|
38
|
+
list naming the tool and the removed methods;
|
|
39
|
+
- in `list_tools` and in `get_agent`'s attached tools, each tool you own that is
|
|
40
|
+
affected carries the same `warnings` list;
|
|
41
|
+
- `wardby tool create` and bundle imports print the same warning;
|
|
42
|
+
- the server logs one warning per affected tool at startup.
|
|
43
|
+
|
|
44
|
+
To check a schema before the next release, call `dry_run_tool` with the tool's
|
|
45
|
+
`paramsZod` and sample arguments. With no `warnings` in the result, the schema
|
|
46
|
+
compiles with Zod 4 and Zod 4 treats those arguments the same way. Otherwise,
|
|
47
|
+
rewrite the schema with the Zod 4 API (for example `z.looseObject()` for
|
|
48
|
+
`.nonstrict()`, `z.string().optional()` for `z.ostring()`, and `z.ipv4()` or
|
|
49
|
+
`z.ipv6()` for `.ip()`), dry-run it again, and save it with `update_tool`.
|
|
50
|
+
|
|
23
51
|
Use a budget or shared budget group on every agent, and inspect runs before
|
|
24
52
|
expanding its access. An access grant is intentional delegation: use it only
|
|
25
53
|
when an owner permits one agent to use another resource. Creating or changing
|
package/help/native-sandbox.md
CHANGED
|
@@ -102,8 +102,21 @@ are in [Native sandbox](../docs/native-sandbox.md#warm-pool).
|
|
|
102
102
|
run `budget_exhausted`.
|
|
103
103
|
- Sub-agents of a sandboxed run are managed runs started by the scheduler
|
|
104
104
|
leader on its next tick (about every 10 seconds), so the server or scheduler
|
|
105
|
-
must be running.
|
|
105
|
+
must be running. A coding agent child is resolved by the server when it
|
|
106
|
+
starts (worker image, services, knowledge), so the gateway needs no `CODING_*`
|
|
107
|
+
settings; a problem there (such as a `workerImageRef` that is not pinned by digest)
|
|
108
|
+
shows as the child run `failed` or `refused`; the parent's `delegate_to_*`
|
|
109
|
+
call receives `status: "failed"` with the `errorCode`, or for a refused child
|
|
110
|
+
the refusal sentence, and the full error is on the child run (`get_run`).
|
|
111
|
+
Upgrade `wardby serve` and `wardby scheduler` before or together with the
|
|
112
|
+
gateway: an older server starts the child unresolved (a Codex child on the
|
|
113
|
+
default image without its instructions, a Claude Code child failing with
|
|
114
|
+
`coding_provider_not_configured:claude-code`).
|
|
106
115
|
- A sandbox run has a 60-minute maximum lifetime.
|
|
116
|
+
- `stop_run` stops a sandbox run: its gateway session ends so the worker exits
|
|
117
|
+
at its next call, and a worker still running after 5 seconds is killed and
|
|
118
|
+
removed (a warm pool worker is discarded, never reused). Search help for
|
|
119
|
+
"stop run" (article `stop-run`, Wardby 0.7.0 and later).
|
|
107
120
|
|
|
108
121
|
## Roll back
|
|
109
122
|
|
|
@@ -120,6 +133,7 @@ codes:
|
|
|
120
133
|
|
|
121
134
|
- [native_sandbox_unavailable](errors/native-sandbox-unavailable.md)
|
|
122
135
|
- [native_sandbox_worker_exited](errors/native-sandbox-worker-exited.md)
|
|
136
|
+
- [native_sandbox_gateway_error](errors/native-sandbox-gateway-error.md)
|
|
123
137
|
- [native_sandbox_deadline_exceeded](errors/native-sandbox-deadline-exceeded.md)
|
|
124
138
|
- [native_sandbox_worker_lost](errors/native-sandbox-worker-lost.md)
|
|
125
139
|
- [native_sandbox_image_not_pinned](errors/native-sandbox-image-not-pinned.md)
|
package/help/operating-agents.md
CHANGED
|
@@ -32,5 +32,10 @@ A running run's cost, token counts, and turn count update after each model
|
|
|
32
32
|
call, so `get_run` and `list_runs` show spend so far rather than zero until the
|
|
33
33
|
run finishes.
|
|
34
34
|
|
|
35
|
+
To stop a run that is pending, queued, or running (for example one a schedule
|
|
36
|
+
started that you did not want), call `stop_run` with its id. It ends as
|
|
37
|
+
`cancelled`, along with the sub-agent runs it still has in flight. Search help
|
|
38
|
+
for "stop run" (article `stop-run`, Wardby 0.7.0 and later).
|
|
39
|
+
|
|
35
40
|
For the full lifecycle and the controls applied to every managed run, read
|
|
36
41
|
[`README.md`](../README.md).
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: package-audit-mode
|
|
3
|
+
title: Package audit mode
|
|
4
|
+
summary: Let a coding agent install packages outside its allowlist for a limited time, recorded for approval afterwards; full mode also installs versions with high-severity advisories. Malware and the release-age limit are always enforced.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [coding-agents, packages, allowlist, package audit, package audit mode, audit mode, packageAuditMode, packageAuditMinutes, approve_audited_packages, packages_audited, npm, pypi, supply-chain]
|
|
7
|
+
appliesTo: >=0.7.0
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Package audit mode
|
|
11
|
+
|
|
12
|
+
From Wardby 0.7.0, a coding agent's registry can run in package audit mode for
|
|
13
|
+
a limited time. Instead of refusing a package that is not on the agent's
|
|
14
|
+
allowlist, the registry installs it and records it. Use it to find out which
|
|
15
|
+
packages a task needs, then approve them and turn the mode off.
|
|
16
|
+
|
|
17
|
+
## Modes
|
|
18
|
+
|
|
19
|
+
| Mode | Packages outside the allowlist | High or critical advisories | Malware | Release age |
|
|
20
|
+
| ------- | ------------------------------ | --------------------------- | ------- | ----------- |
|
|
21
|
+
| off | refused | withheld unless accepted | refused | enforced |
|
|
22
|
+
| `audit` | installed and recorded | withheld unless accepted | refused | enforced |
|
|
23
|
+
| `full` | installed and recorded | installed and recorded | refused | enforced |
|
|
24
|
+
|
|
25
|
+
Everything else still applies in every mode: integrity checks, source
|
|
26
|
+
distributions, size and file limits, and a version outside an allowlist
|
|
27
|
+
entry's own range (`foo@^1` never serves `foo@2`).
|
|
28
|
+
|
|
29
|
+
## Turn it on and off
|
|
30
|
+
|
|
31
|
+
The agent's owner sets it with `update_agent` (needs `packages:approve` or
|
|
32
|
+
`agents:admin`):
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{ "id": "<agent id>", "codingProfile": { "packageAuditMode": "audit", "packageAuditMinutes": 1440 } }
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
- `packageAuditMinutes` defaults to 1440 (24 hours); the most is 10080 (7 days).
|
|
39
|
+
- `packageAuditMinutes` alone re-arms the stored mode for that long.
|
|
40
|
+
- `"packageAuditMode": null` turns it off.
|
|
41
|
+
- `create_agent` does not accept it.
|
|
42
|
+
|
|
43
|
+
`get_agent` shows `packageAuditActive` and a warning while the window is
|
|
44
|
+
open. Each coding run takes the mode when it is dispatched and keeps it for
|
|
45
|
+
its whole life, so a run that starts just before the window ends still runs
|
|
46
|
+
with it.
|
|
47
|
+
|
|
48
|
+
## Where audited packages show up
|
|
49
|
+
|
|
50
|
+
- `get_run`: `packageAuditMode` and `packageAudit`, one entry per version
|
|
51
|
+
with its `relation` (`top-level`, `transitive` with `via`, `unknown`, or
|
|
52
|
+
`allowed`) and, in `full` mode, its `advisories` (the high and critical ones it was served despite).
|
|
53
|
+
- The pull request body: a caution banner, **Packages outside the
|
|
54
|
+
allowlist**, and in `full` mode **Served despite advisories**.
|
|
55
|
+
- The run's status comment on GitHub or Jira, and a `packages_audited` Slack
|
|
56
|
+
message on linked channels (see [Slack notifications](slack-notifications.md)).
|
|
57
|
+
- The proxy log: one `registry.audited` line per version.
|
|
58
|
+
|
|
59
|
+
A lockfile plan in audit mode approves what passes every other check, and the
|
|
60
|
+
dependency cache never restores or saves a lockfile whose plan audited
|
|
61
|
+
anything.
|
|
62
|
+
|
|
63
|
+
## Keep the packages
|
|
64
|
+
|
|
65
|
+
Approve the names a run recorded with `approve_audited_packages`
|
|
66
|
+
(`{ "runId": "<run id>" }`), or add them to `codingProfile.packageAllowlist`
|
|
67
|
+
with `update_agent`. Then turn the mode off.
|
|
68
|
+
|
|
69
|
+
Without `names`, the tool adds only `top-level` packages. A package recorded
|
|
70
|
+
as `unknown` (installed with no metadata or plan to show its parent) may be a
|
|
71
|
+
dependency of an allowlisted package, so every report lists it apart as
|
|
72
|
+
"Relation unknown — may be a dependency; approve only if needed directly".
|
|
73
|
+
Add one only if the project uses it directly, by listing it in `names`.
|
|
74
|
+
|
|
75
|
+
## Risks
|
|
76
|
+
|
|
77
|
+
Audit mode weakens the supply-chain guard while it is on. `audit` keeps the
|
|
78
|
+
malware, advisory and release-age checks; `full` keeps only malware and
|
|
79
|
+
release age. A confused or prompt-injected agent could install a lookalike
|
|
80
|
+
package that has no advisory yet. Install scripts stay off, but tests and
|
|
81
|
+
builds still run what was installed. Keep the window short, review the
|
|
82
|
+
caution banner on every affected pull request, and never leave it on.
|
|
83
|
+
|
|
84
|
+
## Related
|
|
85
|
+
|
|
86
|
+
- [Coding packages](coding-packages.md)
|
|
87
|
+
- [Not allowed: `wardby_package_not_allowed`](errors/package-not-allowed.md)
|
|
88
|
+
- [Package not reached: `wardby_package_not_allowed_pending`](errors/package-not-allowed-pending.md)
|
|
89
|
+
- [Graph limit: `wardby_graph_limit`](errors/graph-limit.md)
|
|
90
|
+
- [Still being checked: `wardby_graph_incomplete`](errors/graph-incomplete.md)
|
|
91
|
+
- [Package audit mode guide](../docs/coding-packages.md#package-audit-mode)
|
|
@@ -11,16 +11,19 @@ appliesTo: ">=0.4.2"
|
|
|
11
11
|
|
|
12
12
|
When one request produces pull requests in several repositories — a lead
|
|
13
13
|
agent that delegates to one coding agent per repository, or several runs for
|
|
14
|
-
the same Jira issue — Wardby adds a **Related pull requests** section to each
|
|
14
|
+
the same Jira or GitHub issue — Wardby adds a **Related pull requests** section to each
|
|
15
15
|
of those pull requests' descriptions. It lists the others with links and
|
|
16
16
|
their state, names the originating issue when there is one, and gives a
|
|
17
17
|
merge order: the one the delegating agent set, or else a suggested one.
|
|
18
18
|
|
|
19
|
-
Without a tracked
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
Without a tracked issue, the list covers the pull requests opened by runs in
|
|
20
|
+
the same delegation tree (the same lead run and everything it started). With
|
|
21
|
+
a tracked issue (a Jira issue, or a GitHub issue whose `@<app-slug>` mention
|
|
22
|
+
started the request), the list covers every pull request Wardby has recorded
|
|
23
|
+
for that issue across every run, merged and closed ones included, plus that
|
|
24
|
+
run tree's own siblings. The section names the issue the same way for both,
|
|
25
|
+
for example "for Jira issue PROJ-123" or "for GitHub issue owner/repo#7",
|
|
26
|
+
linked to the issue.
|
|
24
27
|
|
|
25
28
|
- **Written by Wardby, not the model.** The list comes from Wardby's own run
|
|
26
29
|
records, never from the agent's text. Edits you make inside the section
|
|
@@ -65,7 +68,7 @@ included, plus that run tree's own siblings.
|
|
|
65
68
|
name and number, so a request that spans repositories of different
|
|
66
69
|
visibility can show a private repository's name in a public repository's
|
|
67
70
|
pull request. If you mix public and private repositories, keep such work in
|
|
68
|
-
separate requests: separate
|
|
71
|
+
separate requests: separate issues, or separate lead agents.
|
|
69
72
|
|
|
70
73
|
Reviewers see the section in the pull request description, so a reviewer
|
|
71
74
|
agent can tell that a field, route, or schema a change relies on is added by
|