@wardby/cli 0.2.1 → 0.3.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 +34 -4
- package/README.md +41 -4
- package/dist/claude-coding-worker/driver.d.ts +6 -1
- package/dist/claude-coding-worker/driver.js +27 -1
- package/dist/claude-coding-worker/main.js +2 -0
- package/dist/claude-coding-worker/tool-socket.d.ts +9 -0
- package/dist/claude-coding-worker/tool-socket.js +26 -0
- package/dist/cli-help.d.ts +1 -1
- package/dist/cli-help.js +13 -4
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +219 -29
- package/dist/coding/collect-exclude.d.ts +25 -0
- package/dist/coding/collect-exclude.js +76 -0
- package/dist/coding/profile.d.ts +67 -22
- package/dist/coding/profile.js +58 -25
- package/dist/coding/protected-path-wording.d.ts +24 -0
- package/dist/coding/protected-path-wording.js +55 -0
- package/dist/coding/protected-paths.d.ts +31 -0
- package/dist/coding/protected-paths.js +48 -0
- package/dist/coding/protocol.d.ts +75 -4
- package/dist/coding/protocol.js +107 -7
- package/dist/coding/registry/adapters.d.ts +2 -0
- package/dist/coding/registry/adapters.js +9 -0
- package/dist/coding/registry/allowlist.d.ts +9 -0
- package/dist/coding/registry/allowlist.js +28 -0
- package/dist/coding/registry/json-scan.d.ts +55 -0
- package/dist/coding/registry/json-scan.js +191 -0
- package/dist/coding/registry/lockfiles.d.ts +6 -0
- package/dist/coding/registry/lockfiles.js +89 -0
- package/dist/coding/registry/npm-lockfile.d.ts +9 -0
- package/dist/coding/registry/npm-lockfile.js +73 -0
- package/dist/coding/registry/npm-plan.d.ts +29 -0
- package/dist/coding/registry/npm-plan.js +289 -0
- package/dist/coding/registry/npm.d.ts +7 -0
- package/dist/coding/registry/npm.js +252 -0
- package/dist/coding/registry/pypi.d.ts +4 -0
- package/dist/coding/registry/pypi.js +210 -0
- package/dist/coding/registry/report.d.ts +37 -0
- package/dist/coding/registry/report.js +31 -0
- package/dist/coding/registry/token.d.ts +4 -0
- package/dist/coding/registry/token.js +7 -0
- package/dist/coding/registry/types.d.ts +286 -0
- package/dist/coding/registry/types.js +19 -0
- package/dist/coding/registry/worker-config.d.ts +14 -0
- package/dist/coding/registry/worker-config.js +31 -0
- package/dist/coding/services/builtins.d.ts +22 -0
- package/dist/coding/services/builtins.js +85 -0
- package/dist/coding/services/catalog.d.ts +443 -0
- package/dist/coding/services/catalog.js +159 -0
- package/dist/coding/services/declaration.d.ts +11 -0
- package/dist/coding/services/declaration.js +114 -0
- package/dist/coding/services/note.d.ts +8 -0
- package/dist/coding/services/note.js +15 -0
- package/dist/coding/services/resolve.d.ts +25 -0
- package/dist/coding/services/resolve.js +50 -0
- package/dist/coding/services/wording.d.ts +25 -0
- package/dist/coding/services/wording.js +70 -0
- package/dist/coding-proxy/main.js +24 -4
- package/dist/coding-worker/artifact.d.ts +6 -0
- package/dist/coding-worker/debug-trace.d.ts +37 -0
- package/dist/coding-worker/debug-trace.js +117 -0
- package/dist/coding-worker/driver.d.ts +13 -1
- package/dist/coding-worker/driver.js +102 -13
- package/dist/coding-worker/errors.js +8 -0
- package/dist/coding-worker/main.js +10 -2
- package/dist/coding-worker/sdk.d.ts +2 -2
- package/dist/coding-worker/sdk.js +7 -2
- package/dist/coding-worker/types.d.ts +3 -0
- package/dist/config/providers.d.ts +41 -0
- package/dist/config/providers.js +66 -0
- package/dist/core/budget-groups.d.ts +108 -5
- package/dist/core/budget-groups.js +125 -19
- package/dist/core/budget-wording.d.ts +22 -0
- package/dist/core/budget-wording.js +55 -0
- package/dist/core/datastores.js +18 -2
- package/dist/core/db.d.ts +5 -1
- package/dist/core/db.js +8 -2
- package/dist/core/dispatch.d.ts +33 -6
- package/dist/core/dispatch.js +260 -43
- package/dist/core/engine-native.js +27 -10
- package/dist/core/grants.d.ts +86 -0
- package/dist/core/grants.js +126 -0
- package/dist/core/host-events.d.ts +49 -0
- package/dist/core/host-events.js +257 -0
- package/dist/core/host-identity-links.d.ts +54 -0
- package/dist/core/host-identity-links.js +189 -0
- package/dist/core/host-status.d.ts +61 -0
- package/dist/core/host-status.js +211 -0
- package/dist/core/in-flight-runs.d.ts +8 -0
- package/dist/core/in-flight-runs.js +56 -0
- package/dist/core/provider-wording.d.ts +12 -0
- package/dist/core/provider-wording.js +44 -0
- package/dist/core/reconciler.d.ts +38 -2
- package/dist/core/reconciler.js +86 -2
- package/dist/core/repo-access.d.ts +99 -0
- package/dist/core/repo-access.js +136 -0
- package/dist/core/review-host-checks.d.ts +11 -0
- package/dist/core/review-host-checks.js +41 -0
- package/dist/core/review-host-tools.d.ts +47 -0
- package/dist/core/review-host-tools.js +347 -0
- package/dist/core/run-heartbeat.d.ts +27 -0
- package/dist/core/run-heartbeat.js +54 -0
- package/dist/core/runner.d.ts +30 -8
- package/dist/core/runner.js +237 -40
- package/dist/core/secrets.d.ts +11 -2
- package/dist/core/secrets.js +25 -6
- package/dist/core/subagent-memory-tools.d.ts +1 -1
- package/dist/core/subagent-memory-tools.js +16 -3
- package/dist/core/tool-admin.d.ts +81 -0
- package/dist/core/tool-admin.js +129 -0
- package/dist/core/tool-names.d.ts +42 -0
- package/dist/core/tool-names.js +64 -0
- package/dist/core/untrusted-content.d.ts +32 -0
- package/dist/core/untrusted-content.js +72 -0
- package/dist/core/webhooks.d.ts +8 -1
- package/dist/core/webhooks.js +23 -2
- package/dist/generated/prisma/browser.d.ts +100 -0
- package/dist/generated/prisma/client.d.ts +100 -0
- package/dist/generated/prisma/commonInputTypes.d.ts +30 -0
- package/dist/generated/prisma/enums.d.ts +6 -0
- package/dist/generated/prisma/enums.js +6 -1
- package/dist/generated/prisma/internal/class.d.ts +143 -0
- package/dist/generated/prisma/internal/class.js +4 -4
- package/dist/generated/prisma/internal/prismaNamespace.d.ts +1746 -577
- package/dist/generated/prisma/internal/prismaNamespace.js +179 -6
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +186 -0
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +179 -6
- package/dist/generated/prisma/models/Agent.d.ts +294 -1
- package/dist/generated/prisma/models/AgentRepository.d.ts +1425 -0
- package/dist/generated/prisma/models/AgentRepository.js +1 -0
- package/dist/generated/prisma/models/AgentTool.d.ts +95 -1
- package/dist/generated/prisma/models/AuthUser.d.ts +56 -1
- package/dist/generated/prisma/models/CodingAgentProfile.d.ts +258 -7
- package/dist/generated/prisma/models/CodingProxySession.d.ts +123 -2
- package/dist/generated/prisma/models/CodingRun.d.ts +1276 -95
- package/dist/generated/prisma/models/CodingService.d.ts +1348 -0
- package/dist/generated/prisma/models/CodingService.js +1 -0
- package/dist/generated/prisma/models/HostEventDelivery.d.ts +946 -0
- package/dist/generated/prisma/models/HostEventDelivery.js +1 -0
- package/dist/generated/prisma/models/HostIdentity.d.ts +1232 -0
- package/dist/generated/prisma/models/HostIdentity.js +1 -0
- package/dist/generated/prisma/models/HostIdentityLinkRequest.d.ts +1473 -0
- package/dist/generated/prisma/models/HostIdentityLinkRequest.js +1 -0
- package/dist/generated/prisma/models/Principal.d.ts +455 -0
- package/dist/generated/prisma/models/RegistryAllowance.d.ts +1148 -0
- package/dist/generated/prisma/models/RegistryAllowance.js +1 -0
- package/dist/generated/prisma/models/RegistryApprovedVersion.d.ts +1219 -0
- package/dist/generated/prisma/models/RegistryApprovedVersion.js +1 -0
- package/dist/generated/prisma/models/RegistryFetch.d.ts +1428 -0
- package/dist/generated/prisma/models/RegistryFetch.js +1 -0
- package/dist/generated/prisma/models/RegistryPlanRefusal.d.ts +1294 -0
- package/dist/generated/prisma/models/RegistryPlanRefusal.js +1 -0
- package/dist/generated/prisma/models/RegistryVersionFact.d.ts +1085 -0
- package/dist/generated/prisma/models/RegistryVersionFact.js +1 -0
- package/dist/generated/prisma/models/ResourceGrant.d.ts +1437 -0
- package/dist/generated/prisma/models/ResourceGrant.js +1 -0
- package/dist/generated/prisma/models/Run.d.ts +389 -1
- package/dist/generated/prisma/models/RunHostCheck.d.ts +1239 -0
- package/dist/generated/prisma/models/RunHostCheck.js +1 -0
- package/dist/generated/prisma/models/RunHostStatus.d.ts +1315 -0
- package/dist/generated/prisma/models/RunHostStatus.js +1 -0
- package/dist/generated/prisma/models/Tool.d.ts +15 -3
- package/dist/generated/prisma/models.d.ts +13 -0
- package/dist/help/build.d.ts +1 -0
- package/dist/help/build.js +9 -0
- package/dist/help/catalog.d.ts +24 -0
- package/dist/help/catalog.js +160 -0
- package/dist/help/cli.d.ts +2 -0
- package/dist/help/cli.js +65 -0
- package/dist/help/runtime.d.ts +3 -0
- package/dist/help/runtime.js +44 -0
- package/dist/help/search.d.ts +9 -0
- package/dist/help/search.js +104 -0
- package/dist/help-index.json +660 -0
- package/dist/import/cli-args.js +3 -2
- package/dist/import/create.d.ts +5 -0
- package/dist/import/create.js +67 -13
- package/dist/import/index.js +19 -9
- package/dist/import/neutral-schema.d.ts +11 -11
- package/dist/mcp/auth/access.d.ts +70 -0
- package/dist/mcp/auth/access.js +58 -0
- package/dist/mcp/auth/grants-cli.d.ts +149 -0
- package/dist/mcp/auth/grants-cli.js +518 -0
- package/dist/mcp/auth/host-account-cli.d.ts +2 -0
- package/dist/mcp/auth/host-account-cli.js +47 -0
- package/dist/mcp/auth/ownership.d.ts +26 -52
- package/dist/mcp/auth/ownership.js +19 -14
- package/dist/mcp/auth/repo-authorization.d.ts +22 -0
- package/dist/mcp/auth/repo-authorization.js +51 -0
- package/dist/mcp/auth/resource-server.d.ts +31 -2
- package/dist/mcp/auth/resource-server.js +84 -3
- package/dist/mcp/auth/self-hosted/browser.js +2 -2
- package/dist/mcp/auth/self-hosted/cli.js +47 -13
- package/dist/mcp/auth/self-hosted/credentials.d.ts +20 -2
- package/dist/mcp/auth/self-hosted/credentials.js +62 -4
- package/dist/mcp/auth/self-hosted/session.d.ts +2 -1
- package/dist/mcp/context.d.ts +27 -1
- package/dist/mcp/errors.d.ts +25 -6
- package/dist/mcp/errors.js +98 -0
- package/dist/mcp/host-events/github-ingress.d.ts +36 -0
- package/dist/mcp/host-events/github-ingress.js +92 -0
- package/dist/mcp/host-events/github-user-callback.d.ts +18 -0
- package/dist/mcp/host-events/github-user-callback.js +50 -0
- package/dist/mcp/index.d.ts +8 -1
- package/dist/mcp/index.js +106 -16
- package/dist/mcp/server.js +27 -9
- package/dist/mcp/tools/agents.js +446 -48
- package/dist/mcp/tools/budget-groups.js +3 -3
- package/dist/mcp/tools/datastore.js +22 -15
- package/dist/mcp/tools/grants.d.ts +2 -0
- package/dist/mcp/tools/grants.js +239 -0
- package/dist/mcp/tools/help.d.ts +5 -0
- package/dist/mcp/tools/help.js +67 -0
- package/dist/mcp/tools/host-accounts.d.ts +2 -0
- package/dist/mcp/tools/host-accounts.js +114 -0
- package/dist/mcp/tools/memory.d.ts +7 -1
- package/dist/mcp/tools/memory.js +5 -5
- package/dist/mcp/tools/repositories.d.ts +2 -0
- package/dist/mcp/tools/repositories.js +181 -0
- package/dist/mcp/tools/runs.d.ts +6 -0
- package/dist/mcp/tools/runs.js +60 -6
- package/dist/mcp/tools/scheduling.js +3 -6
- package/dist/mcp/tools/secrets.js +18 -6
- package/dist/mcp/tools/services.d.ts +2 -0
- package/dist/mcp/tools/services.js +222 -0
- package/dist/mcp/tools/subagents.js +52 -16
- package/dist/mcp/tools/tools.d.ts +41 -0
- package/dist/mcp/tools/tools.js +201 -40
- package/dist/mcp/tools/trigger.js +36 -6
- package/dist/mcp/tools/webhooks.js +15 -4
- package/dist/mcp/transport/streamable-http.d.ts +10 -0
- package/dist/mcp/transport/streamable-http.js +32 -2
- package/dist/providers/auth/delegating.d.ts +19 -0
- package/dist/providers/auth/delegating.js +71 -0
- package/dist/providers/auth/index.d.ts +2 -0
- package/dist/providers/auth/index.js +11 -0
- package/dist/providers/auth/self-hosted.d.ts +2 -1
- package/dist/providers/auth/self-hosted.js +16 -4
- package/dist/providers/auth/types.d.ts +6 -0
- package/dist/providers/coding-proxy/memory-ledger.d.ts +3 -0
- package/dist/providers/coding-proxy/memory-ledger.js +21 -2
- package/dist/providers/coding-proxy/metering.d.ts +4 -0
- package/dist/providers/coding-proxy/metering.js +28 -2
- package/dist/providers/coding-proxy/prisma-ledger.d.ts +17 -0
- package/dist/providers/coding-proxy/prisma-ledger.js +50 -5
- package/dist/providers/coding-proxy/proxy.d.ts +13 -0
- package/dist/providers/coding-proxy/proxy.js +479 -18
- package/dist/providers/coding-proxy/registry/audit.d.ts +131 -0
- package/dist/providers/coding-proxy/registry/audit.js +380 -0
- package/dist/providers/coding-proxy/registry/bounded-fetch.d.ts +16 -0
- package/dist/providers/coding-proxy/registry/bounded-fetch.js +77 -0
- package/dist/providers/coding-proxy/registry/plan.d.ts +58 -0
- package/dist/providers/coding-proxy/registry/plan.js +304 -0
- package/dist/providers/coding-proxy/registry/prisma-store.d.ts +34 -0
- package/dist/providers/coding-proxy/registry/prisma-store.js +151 -0
- package/dist/providers/coding-proxy/registry/service.d.ts +213 -0
- package/dist/providers/coding-proxy/registry/service.js +1137 -0
- package/dist/providers/coding-proxy/registry/store.d.ts +127 -0
- package/dist/providers/coding-proxy/registry/store.js +70 -0
- package/dist/providers/coding-proxy/runtime.d.ts +17 -0
- package/dist/providers/coding-proxy/runtime.js +63 -0
- package/dist/providers/coding-proxy/secure-fetch.js +0 -1
- package/dist/providers/coding-proxy/server.d.ts +11 -0
- package/dist/providers/coding-proxy/server.js +163 -0
- package/dist/providers/coding-proxy/types.d.ts +15 -0
- package/dist/providers/engine/types.d.ts +10 -0
- package/dist/providers/executor/build.d.ts +2 -2
- package/dist/providers/executor/composition.d.ts +3 -0
- package/dist/providers/executor/composition.js +19 -0
- package/dist/providers/executor/container.d.ts +105 -3
- package/dist/providers/executor/container.js +296 -20
- package/dist/providers/executor/dbos.d.ts +2 -3
- package/dist/providers/executor/in-process.d.ts +2 -3
- package/dist/providers/executor/routing.d.ts +7 -0
- package/dist/providers/executor/routing.js +13 -0
- package/dist/providers/executor/types.d.ts +22 -0
- package/dist/providers/jobs/claude-tool-setup.d.ts +23 -0
- package/dist/providers/jobs/claude-tool-setup.js +50 -0
- package/dist/providers/jobs/collect-prune.d.ts +7 -0
- package/dist/providers/jobs/collect-prune.js +27 -0
- package/dist/providers/jobs/docker-isolation.d.ts +48 -3
- package/dist/providers/jobs/docker-isolation.js +213 -22
- package/dist/providers/jobs/docker-services.d.ts +35 -0
- package/dist/providers/jobs/docker-services.js +191 -0
- package/dist/providers/jobs/docker.d.ts +49 -2
- package/dist/providers/jobs/docker.js +279 -32
- package/dist/providers/jobs/fake-kubernetes-api.d.ts +1 -0
- package/dist/providers/jobs/fake-kubernetes-api.js +12 -3
- package/dist/providers/jobs/kubernetes-isolation.d.ts +17 -2
- package/dist/providers/jobs/kubernetes-isolation.js +238 -57
- package/dist/providers/jobs/kubernetes-platform.d.ts +10 -4
- package/dist/providers/jobs/kubernetes-platform.js +11 -5
- package/dist/providers/jobs/kubernetes-preflight.js +3 -0
- package/dist/providers/jobs/kubernetes.d.ts +21 -2
- package/dist/providers/jobs/kubernetes.js +112 -21
- package/dist/providers/jobs/types.d.ts +18 -0
- package/dist/providers/llm/anthropic.js +6 -2
- package/dist/providers/llm/bedrock.js +2 -1
- package/dist/providers/llm/claude-messages.d.ts +5 -1
- package/dist/providers/llm/claude-messages.js +1 -0
- package/dist/providers/llm/claude-provider.d.ts +3 -1
- package/dist/providers/llm/claude-provider.js +5 -1
- package/dist/providers/llm/index.d.ts +1 -1
- package/dist/providers/llm/index.js +1 -1
- package/dist/providers/llm/pricing-anthropic.d.ts +10 -0
- package/dist/providers/llm/pricing-anthropic.js +32 -14
- package/dist/providers/llm/pricing-bedrock-claude.d.ts +8 -0
- package/dist/providers/llm/pricing-bedrock-claude.js +9 -0
- package/dist/providers/llm/routing.d.ts +10 -1
- package/dist/providers/llm/routing.js +18 -0
- package/dist/providers/llm/types.d.ts +12 -0
- package/dist/providers/llm/types.js +8 -1
- package/dist/providers/review-host/diff-lines.d.ts +16 -0
- package/dist/providers/review-host/diff-lines.js +59 -0
- package/dist/providers/review-host/github-events.d.ts +6 -0
- package/dist/providers/review-host/github-events.js +180 -0
- package/dist/providers/review-host/github-user-auth.d.ts +38 -0
- package/dist/providers/review-host/github-user-auth.js +128 -0
- package/dist/providers/review-host/github.d.ts +57 -0
- package/dist/providers/review-host/github.js +567 -0
- package/dist/providers/review-host/index.d.ts +12 -0
- package/dist/providers/review-host/index.js +30 -0
- package/dist/providers/review-host/review-format.d.ts +19 -0
- package/dist/providers/review-host/review-format.js +59 -0
- package/dist/providers/review-host/types.d.ts +284 -0
- package/dist/providers/review-host/types.js +24 -0
- package/dist/providers/vcs/git.d.ts +16 -6
- package/dist/providers/vcs/git.js +77 -13
- package/dist/providers/vcs/github.d.ts +74 -3
- package/dist/providers/vcs/github.js +195 -15
- package/dist/providers/vcs/types.d.ts +42 -4
- package/dist/quickstart/index.js +13 -2
- package/dist/sandbox/fetch-policy.d.ts +20 -2
- package/dist/sandbox/fetch-policy.js +64 -3
- package/dist/sandbox/host-functions.d.ts +9 -1
- package/dist/sandbox/host-functions.js +12 -5
- package/dist/serve.js +1 -1
- package/dist/wardby-bin.js +6 -0
- package/docs/README.md +30 -0
- package/docs/architecture-runtime.md +90 -0
- package/docs/assets/brand/wardby-icon-512.png +0 -0
- package/docs/assets/brand/wardby-icon.svg +16 -0
- package/docs/assets/brand/wardby-mascot-profile-512.png +0 -0
- package/docs/assets/brand/wardby-mascot.png +0 -0
- package/docs/assets/brand/wardby-mascot.svg +5 -0
- package/docs/assets/wardby-workflow.svg +106 -0
- package/docs/code-review-agents.md +481 -0
- package/docs/coding-agent-setup.md +172 -0
- package/docs/coding-packages.md +455 -0
- package/docs/coding-services.md +300 -0
- package/docs/coding-worker-byo-images.md +98 -0
- package/docs/coding-worker-isolation.md +1061 -0
- package/docs/getting-started-gke.md +615 -0
- package/docs/getting-started-identity-provider.md +308 -0
- package/docs/getting-started.md +133 -0
- package/docs/observability.md +53 -0
- package/docs/release-verification.md +66 -0
- package/docs/security-deployment.md +657 -0
- package/help/code-review-agents.md +31 -0
- package/help/coding-packages.md +31 -0
- package/help/coding-services.md +71 -0
- package/help/creating-agents.md +68 -0
- package/help/deploy-gke.md +39 -0
- package/help/deployment-targets.md +39 -0
- package/help/errors/budget-group-exhausted.md +25 -0
- package/help/errors/docker-isolation-unsupported.md +26 -0
- package/help/errors/protected-path.md +45 -0
- package/help/errors/repo-access.md +27 -0
- package/help/errors/service-declaration-invalid.md +27 -0
- package/help/errors/service-declaration-unavailable.md +25 -0
- package/help/errors/service-launcher-unsupported.md +30 -0
- package/help/errors/service-not-allowed.md +27 -0
- package/help/errors/service-unknown.md +23 -0
- package/help/errors/service-unready.md +49 -0
- package/help/getting-started.md +31 -0
- package/help/github.md +30 -0
- package/help/identity-and-access.md +39 -0
- package/help/mcp.md +30 -0
- package/help/native-capabilities.md +30 -0
- package/help/observability.md +41 -0
- package/help/operating-agents.md +30 -0
- package/help/security.md +27 -0
- package/help/troubleshooting/budgets.md +26 -0
- package/help/troubleshooting/coding-workers.md +47 -0
- package/help/troubleshooting/repository-access.md +27 -0
- package/package.json +12 -3
- package/prisma/migrations/20260925010000_coding_collect_exclude/migration.sql +8 -0
- package/prisma/migrations/20260925015000_allowed_egress_default/migration.sql +8 -0
- package/prisma/migrations/20260925020000_coding_package_registry/migration.sql +55 -0
- package/prisma/migrations/20260925030000_tool_name_per_owner/migration.sql +11 -0
- package/prisma/migrations/20260926010000_run_trigger_host_event/migration.sql +7 -0
- package/prisma/migrations/20260926020000_code_review_hosts/migration.sql +53 -0
- package/prisma/migrations/20260926030000_auth_user_roles/migration.sql +9 -0
- package/prisma/migrations/20260926040000_agent_effort/migration.sql +6 -0
- package/prisma/migrations/20260926050000_registry_lockfile_plan/migration.sql +32 -0
- package/prisma/migrations/20260926050000_repo_access_authorization/migration.sql +82 -0
- package/prisma/migrations/20260926060000_registry_plan_refusal/migration.sql +19 -0
- package/prisma/migrations/20260926100000_registry_plan_refusal_published_at/migration.sql +5 -0
- package/prisma/migrations/20260926190000_run_host_status/migration.sql +18 -0
- package/prisma/migrations/20260926210000_run_host_status_at_dispatch/migration.sql +5 -0
- package/prisma/migrations/20260927010000_resource_grants/migration.sql +72 -0
- package/prisma/migrations/20260927020000_proxy_session_budget_exhausted/migration.sql +3 -0
- package/prisma/migrations/20260927030000_coding_debug_trace/migration.sql +4 -0
- package/prisma/migrations/20260927040000_proxy_session_upstream_failure/migration.sql +3 -0
- package/prisma/migrations/20260927050000_coding_run_services/migration.sql +74 -0
- package/prisma/migrations/20260928000000_coding_run_tool_image/migration.sql +5 -0
- package/prisma/schema.prisma +407 -21
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: code-review-agents
|
|
3
|
+
title: Run GitHub code-review agents
|
|
4
|
+
summary: Link a read-only review agent to a repository for pull-request checks and trusted mention workflows.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [github, code-review, pull-requests, webhooks]
|
|
7
|
+
appliesTo: >=0.2.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Run GitHub code-review agents
|
|
11
|
+
|
|
12
|
+
A native agent linked through Wardby's GitHub App can review pull requests
|
|
13
|
+
without receiving repository credentials. On pull-request pushes it creates an
|
|
14
|
+
in-progress check, reads the diff, then posts inline findings, one updated
|
|
15
|
+
summary comment, and a final approve, changes-requested, or comment result.
|
|
16
|
+
Budget exhaustion or another failed review makes the check fail rather than
|
|
17
|
+
silently pass branch protection.
|
|
18
|
+
|
|
19
|
+
People with write access to the repository may request another review with
|
|
20
|
+
`@<app-slug> review`. Other mentions can be routed to a dedicated mention
|
|
21
|
+
agent, which acknowledges the request and posts its final outcome. Do not give
|
|
22
|
+
a mention agent instructions that could echo secrets or internal details: its
|
|
23
|
+
reply is visible wherever the mention was posted.
|
|
24
|
+
|
|
25
|
+
Wardby skips pull requests whose head is in a fork. It also ignores mentions
|
|
26
|
+
from bots and people without write access. Repository links require the
|
|
27
|
+
agent owner's linked GitHub access, or an explicitly recorded administrator
|
|
28
|
+
approval.
|
|
29
|
+
|
|
30
|
+
For App permissions, webhook setup, trigger configuration, and security
|
|
31
|
+
details, follow [`docs/code-review-agents.md`](../docs/code-review-agents.md).
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: coding-packages
|
|
3
|
+
title: Approve packages for coding agents
|
|
4
|
+
summary: Let Codex coding workers install vetted npm and PyPI dependencies through Wardby's registry proxy.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [coding-agents, packages, npm, pypi, supply-chain]
|
|
7
|
+
appliesTo: >=0.2.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Approve packages for coding agents
|
|
11
|
+
|
|
12
|
+
Coding workers have no direct registry network access. For **Codex** workers,
|
|
13
|
+
Wardby's registry proxy can allow `npm install` and `pip install` from a
|
|
14
|
+
per-agent npm or PyPI allowlist. The proxy records what was fetched and applies
|
|
15
|
+
supply-chain checks, including package graph validation, release-age policy,
|
|
16
|
+
and vulnerability filtering.
|
|
17
|
+
|
|
18
|
+
An empty allowlist keeps registry mode off. Approve only top-level packages;
|
|
19
|
+
Wardby validates and permits the required transitive dependency graph for the
|
|
20
|
+
run. Changing a package allowlist or policy needs `packages:approve` (or
|
|
21
|
+
`agents:admin`) and a Wardby `admin` or `package-approver` role.
|
|
22
|
+
|
|
23
|
+
Registry mode works for Codex and Claude Code runs alike, on the `node`
|
|
24
|
+
toolchain (npm) and the `node-python` toolchain (npm and pip). Claude Code runs
|
|
25
|
+
its shell commands in a separate, credential-free tool-runner container that
|
|
26
|
+
reaches the registry through the run's proxy network. Use a pinned custom
|
|
27
|
+
worker image when an agent needs system packages, another runtime, or
|
|
28
|
+
dependencies that should be baked into the image.
|
|
29
|
+
|
|
30
|
+
Read [`docs/coding-packages.md`](../docs/coding-packages.md) for allowlist
|
|
31
|
+
syntax, package-policy controls, lockfile behavior, and refusal errors.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: coding-services
|
|
3
|
+
title: Give coding runs the services their tests need
|
|
4
|
+
summary: Let coding runs on the Kubernetes or Docker launcher start fresh PostgreSQL, Redis or MySQL instances declared in the repository's .wardby/services.yaml.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [coding-agents, services, postgres, redis, mysql, kubernetes, docker]
|
|
7
|
+
appliesTo: >=0.2.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Give coding runs the services their tests need
|
|
11
|
+
|
|
12
|
+
A coding run can have a PostgreSQL, Redis or MySQL instance next to it for the
|
|
13
|
+
length of the run. Three parties agree before a service starts:
|
|
14
|
+
|
|
15
|
+
- **The repository** declares it in `.wardby/services.yaml` on its base branch,
|
|
16
|
+
for example `services: { postgres: "16" }`. Wardby reads the file from the
|
|
17
|
+
run's base branch (the agent's `baseRef`, or a `baseRef` given to
|
|
18
|
+
`trigger_agent` for that run), never from the run's own branch, so a change
|
|
19
|
+
to the declaration takes effect only once it is merged into that base.
|
|
20
|
+
- **The service catalog** says what each name and version is: a digest-pinned
|
|
21
|
+
image, its readiness check, resources, and the variables the agent's shells
|
|
22
|
+
receive (`testEnv`, such as `DATABASE_URL`). `list_services` and
|
|
23
|
+
`get_service` need `agents:read`. `create_service`, `update_service` and
|
|
24
|
+
`delete_service` need `services:manage` and the `admin` or
|
|
25
|
+
`service-manager` role. Built-in entries (`postgres` 15, 16 and 17, `redis`
|
|
26
|
+
7, `mysql` 8) cannot be changed over MCP.
|
|
27
|
+
- **The agent's owner** lists the catalog names its runs may use in
|
|
28
|
+
`codingProfile.services`. An empty list, the default, allows none.
|
|
29
|
+
|
|
30
|
+
An agent with an empty list never reads the repository's declaration at all —
|
|
31
|
+
wardby only looks at `.wardby/services.yaml` for an agent that allows at least
|
|
32
|
+
one service. Such an agent's runs simply start without services, whatever a
|
|
33
|
+
repository declares, and none of the errors below can apply to them.
|
|
34
|
+
|
|
35
|
+
Services need the Kubernetes job launcher with Kubernetes 1.29 or later (each
|
|
36
|
+
service runs as a native sidecar in the run's pod) or the Docker job launcher
|
|
37
|
+
(each service runs as its own container sharing the run's network namespace);
|
|
38
|
+
both start them for Codex and Claude Code agents. Each run gets its own empty
|
|
39
|
+
instance, reachable on `127.0.0.1`; the run's sandbox and network policy do
|
|
40
|
+
not change, and the instance is deleted with the run. Each service's CPU,
|
|
41
|
+
memory and disk count toward the run: on Kubernetes toward its pod, namespace
|
|
42
|
+
quota and what a managed cluster bills; on Docker toward the host's memory,
|
|
43
|
+
because its data is kept in memory.
|
|
44
|
+
|
|
45
|
+
A bring-your-own worker image
|
|
46
|
+
([`docs/coding-worker-byo-images.md`](../docs/coding-worker-byo-images.md))
|
|
47
|
+
needs driver v11 or later to run with services.
|
|
48
|
+
|
|
49
|
+
Catalog values are visible to anyone with `agents:read`. Use throwaway test
|
|
50
|
+
credentials only; never put a real secret in `serviceEnv` or `testEnv`.
|
|
51
|
+
|
|
52
|
+
Every run protects `.wardby/**` except `.wardby/services.yaml`, so a coding
|
|
53
|
+
agent may propose a declaration change in its pull request but cannot change
|
|
54
|
+
other `.wardby/` files. An agent's own `protectedPaths` exceptions (entries
|
|
55
|
+
starting with `!`) must be literal file paths and cannot unprotect `.wardby/`.
|
|
56
|
+
|
|
57
|
+
When upgrading a deployment that delegates to an identity provider, define the
|
|
58
|
+
`services:manage` scope in the provider first; see
|
|
59
|
+
[Configure identity and privileged access](identity-and-access.md).
|
|
60
|
+
|
|
61
|
+
If a run is refused or fails over its services, read the page for its code:
|
|
62
|
+
|
|
63
|
+
- [`service_declaration_invalid`](errors/service-declaration-invalid.md)
|
|
64
|
+
- [`service_declaration_unavailable`](errors/service-declaration-unavailable.md)
|
|
65
|
+
- [`service_unknown`](errors/service-unknown.md)
|
|
66
|
+
- [`service_not_allowed`](errors/service-not-allowed.md)
|
|
67
|
+
- [`service_launcher_unsupported`](errors/service-launcher-unsupported.md)
|
|
68
|
+
- [`service_unready`](errors/service-unready.md)
|
|
69
|
+
|
|
70
|
+
Read [`docs/coding-services.md`](../docs/coding-services.md) for the file
|
|
71
|
+
format, catalog fields, built-in variables, custom entries, and capacity.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: creating-agents
|
|
3
|
+
title: Choose a native or coding agent
|
|
4
|
+
summary: Decide whether a task should run as a native Wardby agent or an isolated Codex or Claude Code coding agent.
|
|
5
|
+
audience: developer
|
|
6
|
+
tags: [agents, native-agents, coding-agents, codex, claude-code]
|
|
7
|
+
appliesTo: >=0.2.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Choose a native or coding agent
|
|
11
|
+
|
|
12
|
+
Create a **native agent** when Wardby should run a model with explicit,
|
|
13
|
+
attached capabilities to produce a bounded operational result. Create a
|
|
14
|
+
**coding agent** when the task must inspect and change a Git repository, run
|
|
15
|
+
project checks, and optionally open a draft pull request.
|
|
16
|
+
|
|
17
|
+
| Choose | Best for | Execution model | Typical result |
|
|
18
|
+
| ------------ | ------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
|
|
19
|
+
| Native agent | Review, triage, analysis, reporting, workflow coordination, and API-backed tasks | Wardby's managed native run loop with only its attached tools, secrets, datastores, and sub-agents | A structured result, report, decision, or bounded follow-up action |
|
|
20
|
+
| Coding agent | Repository changes, tests, dependency updates, implementation work, and PR revisions | An isolated Codex or Claude Code worker with a trusted proxy and Git finalization | No changes, a bounded result, or one controlled draft pull request |
|
|
21
|
+
|
|
22
|
+
## Start with a native agent
|
|
23
|
+
|
|
24
|
+
Native agents are the default when a task does not need a full repository
|
|
25
|
+
workspace. Give the agent a narrow purpose, model, per-run budget, and only the
|
|
26
|
+
tools or data it needs. Attach schedules or webhooks when the work should run
|
|
27
|
+
without a person starting it manually.
|
|
28
|
+
|
|
29
|
+
Examples include an architecture reviewer that writes findings to a datastore,
|
|
30
|
+
a release monitor that investigates an alert, or a triage agent that turns
|
|
31
|
+
incoming information into a report for a person to act on.
|
|
32
|
+
|
|
33
|
+
## Use a coding agent for repository work
|
|
34
|
+
|
|
35
|
+
Coding agents use a `codingProfile` that selects Codex or Claude Code and names
|
|
36
|
+
the authorized repository. They run in isolated workers; Wardby keeps provider
|
|
37
|
+
credentials and the GitHub App private key in trusted components. A coding run
|
|
38
|
+
can change a checkout and run approved checks, but trusted finalization is what
|
|
39
|
+
validates the result, pushes a controlled branch, and opens a draft pull
|
|
40
|
+
request. It never auto-merges.
|
|
41
|
+
|
|
42
|
+
Before creating one, configure immutable worker images, the selected launcher,
|
|
43
|
+
the trusted coding proxy, and a narrowly installed GitHub App. The agent owner
|
|
44
|
+
must have the required repository access, or an administrator must explicitly
|
|
45
|
+
approve the repository.
|
|
46
|
+
|
|
47
|
+
## Decision checklist
|
|
48
|
+
|
|
49
|
+
Choose a native agent when all of these are true:
|
|
50
|
+
|
|
51
|
+
- The task can be completed with a narrow set of attached tools or data.
|
|
52
|
+
- A repository checkout, shell-based project setup, and code changes are not
|
|
53
|
+
required.
|
|
54
|
+
- The intended output is an analysis, report, decision, or controlled API
|
|
55
|
+
action.
|
|
56
|
+
|
|
57
|
+
Choose a coding agent when any of these are true:
|
|
58
|
+
|
|
59
|
+
- The agent must edit a repository or execute the project's test suite.
|
|
60
|
+
- The reviewable outcome should be a branch or draft pull request.
|
|
61
|
+
- The task needs a coding-agent builder such as Codex or Claude Code inside an
|
|
62
|
+
isolated workspace.
|
|
63
|
+
|
|
64
|
+
Do not use a coding agent merely because a task is complex. Start with the
|
|
65
|
+
least powerful execution model that can safely produce the required outcome.
|
|
66
|
+
Read [Connect GitHub repositories](github.md) and
|
|
67
|
+
[Troubleshoot coding workers](troubleshooting/coding-workers.md) before
|
|
68
|
+
enabling repository-changing work.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: deploy-gke
|
|
3
|
+
title: Deploy Wardby on GKE Autopilot
|
|
4
|
+
summary: Use the supported Google Cloud path for a private database, isolated coding workers, and HTTPS ingress.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [deployment, gke, gcp, kubernetes, production]
|
|
7
|
+
appliesTo: >=0.2.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Deploy Wardby on GKE Autopilot
|
|
11
|
+
|
|
12
|
+
The supported Google Cloud deployment creates a GKE Autopilot cluster, private
|
|
13
|
+
Cloud SQL for PostgreSQL, Artifact Registry, HTTPS Gateway, Google Secret
|
|
14
|
+
Manager synchronization, and isolated gVisor-backed **Codex** coding-worker
|
|
15
|
+
pods. It also applies namespace RBAC and default-deny network policies.
|
|
16
|
+
|
|
17
|
+
Use a dedicated billed project, a hostname you control, remote Terraform state,
|
|
18
|
+
and a GitHub App installed only on repositories that agents need. Review
|
|
19
|
+
Terraform's plan and set cloud budgets before applying it: the deployment
|
|
20
|
+
creates billable resources.
|
|
21
|
+
|
|
22
|
+
The deployment process is:
|
|
23
|
+
|
|
24
|
+
1. Install `gcloud`, Terraform, Docker with `linux/amd64` support, `kubectl`,
|
|
25
|
+
Helm, Node.js 24, and authenticate to the target project.
|
|
26
|
+
2. Configure `deploy/gke/terraform.tfvars`, apply Terraform, and prepare the
|
|
27
|
+
Gateway's address, certificate map, Cloud Armor policy, and DNS record.
|
|
28
|
+
3. Put first-time values in an untracked `.env.local`; `deploy/gke/up.sh`
|
|
29
|
+
seeds Secret Manager without overwriting existing production values.
|
|
30
|
+
4. Run `HOSTNAME=wardby.example.com deploy/gke/up.sh`, then verify DNS,
|
|
31
|
+
certificate issuance, database IAM bootstrap, and service health.
|
|
32
|
+
|
|
33
|
+
Claude Code's two-container executor is currently Docker-only; Kubernetes
|
|
34
|
+
coding workers use the Codex path. Configure an identity provider and GitHub
|
|
35
|
+
App before allowing people to use the public endpoint.
|
|
36
|
+
|
|
37
|
+
Follow the complete, ordered guide at
|
|
38
|
+
[`docs/getting-started-gke.md`](../docs/getting-started-gke.md). It includes
|
|
39
|
+
the precise IAM, DNS, bootstrap, upgrades, and teardown steps.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: deployment-targets
|
|
3
|
+
title: Choose a deployment target
|
|
4
|
+
summary: Pick the supported Wardby deployment path and understand its operational boundary.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [deployment, docker, gke, aws, production]
|
|
7
|
+
appliesTo: >=0.2.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Choose a deployment target
|
|
11
|
+
|
|
12
|
+
Wardby has one local path and two production-ready deployment shapes:
|
|
13
|
+
|
|
14
|
+
- **Local development:** `wardby quickstart` runs the control plane locally
|
|
15
|
+
with its portable PostgreSQL container. It is the best place to evaluate,
|
|
16
|
+
develop agents, and connect a local Codex or Claude Code client.
|
|
17
|
+
- **Production container baseline:** run the published production image with
|
|
18
|
+
PostgreSQL, HTTPS ingress, durable storage, backups, and an operator-owned
|
|
19
|
+
identity provider. The Compose and Caddy configuration is a reference
|
|
20
|
+
baseline, not a managed platform.
|
|
21
|
+
- **Google Kubernetes Engine Autopilot:** the supported Google Cloud path. It
|
|
22
|
+
provisions GKE, private-IP Cloud SQL, Artifact Registry, isolated Codex
|
|
23
|
+
workers, HTTPS Gateway, and GCP-native secret and network controls. See
|
|
24
|
+
[Deploy on GKE](deploy-gke.md).
|
|
25
|
+
|
|
26
|
+
AWS is supported as a portable runtime target and has a Bedrock Claude adapter,
|
|
27
|
+
but Wardby does not ship a native AWS deployment module. Other cloud providers
|
|
28
|
+
can run the production container image with equivalent database, ingress,
|
|
29
|
+
identity, secret, isolation, and observability controls; that infrastructure is
|
|
30
|
+
operator-owned.
|
|
31
|
+
|
|
32
|
+
The older `deploy/gcp` Cloud Run module is deprecated. Do not choose it for a
|
|
33
|
+
new installation.
|
|
34
|
+
|
|
35
|
+
Before going live, complete the deployment security checklist and make a
|
|
36
|
+
backup, upgrades, alerting, and incident-response plan. Read
|
|
37
|
+
[`docs/getting-started.md`](../docs/getting-started.md) for the local and
|
|
38
|
+
container setup, and [`docs/security-deployment.md`](../docs/security-deployment.md)
|
|
39
|
+
for the production controls.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/budget-group-exhausted
|
|
3
|
+
title: Budget group exhausted
|
|
4
|
+
summary: Wardby refused the run because the shared budget group has no remaining capacity for the period.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, budget, refusal]
|
|
7
|
+
appliesTo: >=0.2.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Budget group exhausted
|
|
11
|
+
|
|
12
|
+
An error such as `budget_group_exhausted:week` means the agent's budget group
|
|
13
|
+
has no capacity left for that period after accounting for actual spending and
|
|
14
|
+
active reservations. Wardby refuses the run before model work or a coding
|
|
15
|
+
worker begins.
|
|
16
|
+
|
|
17
|
+
1. Inspect the budget group's `spentUsd` and `reservedUsd` values.
|
|
18
|
+
2. Inspect active and recent runs that use the group.
|
|
19
|
+
3. Wait for the period to reset, cancel unneeded active work, or deliberately
|
|
20
|
+
adjust the agent or group budget.
|
|
21
|
+
4. Trigger a new run after capacity is available; a refused run is not resumed
|
|
22
|
+
automatically.
|
|
23
|
+
|
|
24
|
+
Do not raise a limit merely to clear a refusal without confirming the intended
|
|
25
|
+
owner, schedule, and overlapping work. See [Budget troubleshooting](../troubleshooting/budgets.md).
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/docker-isolation-unsupported
|
|
3
|
+
title: Coding-worker isolation unavailable
|
|
4
|
+
summary: Wardby refused to launch a coding worker because it could not verify the required isolation controls.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, docker, isolation]
|
|
7
|
+
appliesTo: >=0.2.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Coding-worker isolation unavailable
|
|
11
|
+
|
|
12
|
+
`docker_isolation_unsupported` means a required worker-isolation guarantee was
|
|
13
|
+
missing, unexpected, or could not be inspected. Wardby fails closed rather than
|
|
14
|
+
running a worker with a weaker profile.
|
|
15
|
+
|
|
16
|
+
1. Run `wardby coding preflight` and correct the reported launcher, image,
|
|
17
|
+
proxy-network, or host-support issue.
|
|
18
|
+
2. Confirm worker images are immutable image IDs or digests, not mutable tags.
|
|
19
|
+
3. Confirm the trusted proxy and worker use the intended isolated network and
|
|
20
|
+
that no unapproved host mount, Docker socket, environment, or network path
|
|
21
|
+
is present.
|
|
22
|
+
4. Re-run preflight before triggering another coding run.
|
|
23
|
+
|
|
24
|
+
If the deployment target does not support the selected coding provider, choose
|
|
25
|
+
a supported launcher/provider combination instead of disabling the controls.
|
|
26
|
+
See [Coding-worker troubleshooting](../troubleshooting/coding-workers.md).
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/protected-path
|
|
3
|
+
title: Run changed a protected path
|
|
4
|
+
summary: A coding run's changes touched a path this agent may not edit, so none of its changes were kept.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, vcs]
|
|
7
|
+
appliesTo: >=0.2.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Run changed a protected path
|
|
11
|
+
|
|
12
|
+
A run that failed with category `protected_path` finished its work, but the
|
|
13
|
+
changes it collected included a file its agent is not allowed to edit. Wardby
|
|
14
|
+
discards the run's changes entirely rather than dropping just that file:
|
|
15
|
+
nothing from the run reaches a pull request.
|
|
16
|
+
|
|
17
|
+
Wardby protects two kinds of paths on every coding run:
|
|
18
|
+
|
|
19
|
+
- **The agent's own `protectedPaths`**, a list of glob patterns set on the
|
|
20
|
+
agent (`codingProfile.protectedPaths`, via `create_agent`/`update_agent`).
|
|
21
|
+
An entry may start with `!` to carve out one literal file as an exception
|
|
22
|
+
to the agent's own patterns; a whole tree can never be carved out this way.
|
|
23
|
+
- **The `.wardby/` baseline**, which every coding run gets regardless of the
|
|
24
|
+
agent's own settings. It protects everything under `.wardby/` except the one
|
|
25
|
+
literal file `.wardby/services.yaml`, which any coding agent may propose a
|
|
26
|
+
change to (see [Coding services](../coding-services.md)) — the baseline
|
|
27
|
+
cannot be widened to cover that file, and no exception can narrow it further
|
|
28
|
+
than that.
|
|
29
|
+
|
|
30
|
+
What to do:
|
|
31
|
+
|
|
32
|
+
1. Ask again without changing the named file. If the change is small, doing it
|
|
33
|
+
yourself and letting the agent build on top is often fastest.
|
|
34
|
+
2. If the agent genuinely needs to change that file, its owner (or an admin)
|
|
35
|
+
can widen `codingProfile.protectedPaths` with `update_agent` — for example
|
|
36
|
+
adding a `!`-prefixed exception for one file. This can never remove the
|
|
37
|
+
`.wardby/` baseline itself.
|
|
38
|
+
3. Otherwise, the repository owner makes the change directly and the agent
|
|
39
|
+
works around it on the next run.
|
|
40
|
+
|
|
41
|
+
When this run is a sub-run another agent dispatched (for example a router
|
|
42
|
+
handing work to a coding agent), the parent sees a failed sub-run on its own
|
|
43
|
+
status comment: "A sub-run could not open its changes: it changed a file its
|
|
44
|
+
agent may not edit, so none of its changes were kept." That line never names
|
|
45
|
+
the file; check the sub-run's own PR comment or `get_run` for it.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/repo-access
|
|
3
|
+
title: Repository access refused
|
|
4
|
+
summary: Wardby refused repository work because it could not confirm the managed agent owner's required GitHub access.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, github, authorization, refusal]
|
|
7
|
+
appliesTo: >=0.2.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Repository access refused
|
|
11
|
+
|
|
12
|
+
`repo_access` means Wardby cannot authorize the agent owner's current access to
|
|
13
|
+
the selected repository. Nothing is cloned or pushed for a refusal at run
|
|
14
|
+
preparation. The check also happens immediately before a coding run pushes, so
|
|
15
|
+
access lost during a run prevents publication.
|
|
16
|
+
|
|
17
|
+
1. Confirm the agent has an owner and the intended repository is attached.
|
|
18
|
+
2. Confirm that owner has linked their GitHub account to Wardby.
|
|
19
|
+
3. Confirm the GitHub App is installed on the repository and the owner has the
|
|
20
|
+
required permission: write for coding work, read for a read-only link.
|
|
21
|
+
4. If no individual owner can hold the access, ask a Wardby administrator to
|
|
22
|
+
record an explicit repository approval.
|
|
23
|
+
5. Trigger a fresh run after the correction.
|
|
24
|
+
|
|
25
|
+
`repo_access_unavailable` is different: GitHub could not be queried reliably.
|
|
26
|
+
Resolve the availability condition and retry later rather than treating it as
|
|
27
|
+
an authorization success. See [Repository-access troubleshooting](../troubleshooting/repository-access.md).
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/service-declaration-invalid
|
|
3
|
+
title: Service declaration invalid
|
|
4
|
+
summary: Wardby refused the coding run because the repository's .wardby/services.yaml on the base branch is not a valid declaration.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, services, refusal]
|
|
7
|
+
appliesTo: >=0.2.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Service declaration invalid
|
|
11
|
+
|
|
12
|
+
`service_declaration_invalid` means the repository's `.wardby/services.yaml`,
|
|
13
|
+
read from the run's base branch, could not be used. The run's `error` names the
|
|
14
|
+
line and reason. Wardby refuses the run before a coding worker starts.
|
|
15
|
+
|
|
16
|
+
1. Check the file on the base branch. Its only key is `services`, mapping
|
|
17
|
+
catalog names (lowercase letters, digits and hyphens) to quoted version
|
|
18
|
+
strings, for example `postgres: "16"`.
|
|
19
|
+
2. Keep it to at most five services and under 8 KiB. Images, ports, commands
|
|
20
|
+
and environment belong in the catalog, not in the repository.
|
|
21
|
+
3. Merge the fix to the base branch; a fix on the run's own branch has no
|
|
22
|
+
effect.
|
|
23
|
+
4. Trigger a new run; a refused run is not resumed automatically.
|
|
24
|
+
|
|
25
|
+
The same code is used when the declared services' instructions would push the
|
|
26
|
+
coding task over its size limit; declare fewer services in that case. See
|
|
27
|
+
[Coding services](../coding-services.md).
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/service-declaration-unavailable
|
|
3
|
+
title: Service declaration unavailable
|
|
4
|
+
summary: Wardby refused the coding run because it could not read .wardby/services.yaml from the base branch.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, services, github, refusal]
|
|
7
|
+
appliesTo: >=0.2.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Service declaration unavailable
|
|
11
|
+
|
|
12
|
+
`service_declaration_unavailable` means Wardby could not read
|
|
13
|
+
`.wardby/services.yaml` from the run's base branch through the GitHub App, so
|
|
14
|
+
it could not tell which services the run needs. A missing file is not this
|
|
15
|
+
error (no file means no services); this is a failed read. Wardby refuses the
|
|
16
|
+
run rather than start it without services the repository may require.
|
|
17
|
+
|
|
18
|
+
1. Trigger the run again; the cause is often a transient GitHub error.
|
|
19
|
+
2. If it repeats, confirm the GitHub App installation still covers the
|
|
20
|
+
repository and has contents read access, and that the agent's base branch
|
|
21
|
+
exists.
|
|
22
|
+
3. Check the control-plane logs around the refusal for the GitHub response.
|
|
23
|
+
|
|
24
|
+
See [Repository access troubleshooting](../troubleshooting/repository-access.md)
|
|
25
|
+
and [Coding services](../coding-services.md).
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/service-launcher-unsupported
|
|
3
|
+
title: Services are not available to this run
|
|
4
|
+
summary: Wardby refused the coding run because the repository declares services and this deployment cannot start them.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, services, kubernetes, docker, refusal]
|
|
7
|
+
appliesTo: >=0.2.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Services are not available to this run
|
|
11
|
+
|
|
12
|
+
`service_launcher_unsupported` means the repository declares services, but this
|
|
13
|
+
deployment cannot start them. Services need a job launcher that starts them:
|
|
14
|
+
|
|
15
|
+
- `JOB_LAUNCHER=kubernetes` and `JOB_LAUNCHER=docker` start them for Codex and
|
|
16
|
+
Claude Code agents;
|
|
17
|
+
- a deployment with `JOB_LAUNCHER=local` cannot start them at all.
|
|
18
|
+
|
|
19
|
+
1. Run the coding agent on a deployment that uses the Kubernetes or Docker job
|
|
20
|
+
launcher, or
|
|
21
|
+
2. remove `.wardby/services.yaml` from the base branch if the repository's
|
|
22
|
+
tests do not need the services.
|
|
23
|
+
|
|
24
|
+
This error only applies to an agent that already allows at least one service
|
|
25
|
+
(`codingProfile.services` is non-empty): wardby reads a repository's
|
|
26
|
+
declaration only for such an agent, and refuses rather than silently starting
|
|
27
|
+
the run without the services it names. An agent that allows no services never
|
|
28
|
+
reads the declaration at all, so its runs are unaffected and start normally on
|
|
29
|
+
any launcher. See [Coding-worker troubleshooting](../troubleshooting/coding-workers.md)
|
|
30
|
+
and [Coding services](../coding-services.md).
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/service-not-allowed
|
|
3
|
+
title: Service not allowed for this agent
|
|
4
|
+
summary: Wardby refused the coding run because the repository declares a service the agent's codingProfile.services does not allow.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, services, refusal]
|
|
7
|
+
appliesTo: >=0.2.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Service not allowed for this agent
|
|
11
|
+
|
|
12
|
+
`service_not_allowed` means the repository declares a service that exists in
|
|
13
|
+
the catalog, but the agent's `codingProfile.services` does not list its name.
|
|
14
|
+
Wardby refuses the run before a coding worker starts.
|
|
15
|
+
|
|
16
|
+
1. Confirm the repository should have the service; the declaration is on the
|
|
17
|
+
base branch in `.wardby/services.yaml`.
|
|
18
|
+
2. If it should, the agent's owner (or an admin) adds the name, for example
|
|
19
|
+
`postgres`, to `codingProfile.services` with `update_agent`. Allowing a name
|
|
20
|
+
allows every version the catalog has for it.
|
|
21
|
+
3. Trigger a new run.
|
|
22
|
+
|
|
23
|
+
Each allowed service reserves CPU, memory and disk for the whole run, so allow
|
|
24
|
+
only what the agent's repositories need. This error implies the agent already
|
|
25
|
+
allows at least one service — an agent whose `codingProfile.services` is empty
|
|
26
|
+
never reads the declaration at all, so it never reaches this check. See
|
|
27
|
+
[Coding services](../coding-services.md).
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/service-unknown
|
|
3
|
+
title: Service not in the catalog
|
|
4
|
+
summary: Wardby refused the coding run because the repository declares a service name and version the service catalog does not have.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, services, refusal]
|
|
7
|
+
appliesTo: >=0.2.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Service not in the catalog
|
|
11
|
+
|
|
12
|
+
`service_unknown` means `.wardby/services.yaml` on the base branch asks for a
|
|
13
|
+
name and version, such as `postgres 14`, that has no entry in Wardby's service
|
|
14
|
+
catalog. Wardby refuses the run before a coding worker starts.
|
|
15
|
+
|
|
16
|
+
1. Run `list_services` (needs `agents:read`) to see the names and versions
|
|
17
|
+
available.
|
|
18
|
+
2. Either change the declaration on the base branch to an available version,
|
|
19
|
+
or ask someone with `services:manage` and the `admin` or `service-manager`
|
|
20
|
+
role to add the entry with `create_service`, pinned by digest.
|
|
21
|
+
3. Trigger a new run once the catalog or the declaration matches.
|
|
22
|
+
|
|
23
|
+
See [Coding services](../coding-services.md).
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/service-unready
|
|
3
|
+
title: Service did not become ready
|
|
4
|
+
summary: A coding run failed at launch because one of its services never passed its readiness check.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, services, kubernetes, docker]
|
|
7
|
+
appliesTo: >=0.2.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Service did not become ready
|
|
11
|
+
|
|
12
|
+
A run that failed with category `service_unready` (launcher error
|
|
13
|
+
`coding_service_unready:<name>`) started, but the named service never became
|
|
14
|
+
ready, so the coding agent never started. A service is not ready when its
|
|
15
|
+
readiness command keeps failing past its failure threshold, its image cannot
|
|
16
|
+
be pulled or started, or it is still not ready when the launcher's start-up
|
|
17
|
+
limit runs out.
|
|
18
|
+
|
|
19
|
+
1. On Kubernetes, inspect the run pod's init-container status and events for
|
|
20
|
+
the `service-<name>` container: image pull errors, crash loops, or probe
|
|
21
|
+
failures. On Docker the service's container is removed with the failed run,
|
|
22
|
+
so reproduce it on the Docker host: pull the entry's image and run it with
|
|
23
|
+
`--read-only`, `--user 10001:10001`, a `--tmpfs` at its `dataPath` and at
|
|
24
|
+
each `writablePaths` entry, and its `serviceEnv`; then run its readiness
|
|
25
|
+
command with `docker exec`.
|
|
26
|
+
2. For a custom catalog entry, confirm the image runs as a non-root user with a
|
|
27
|
+
read-only root filesystem: every directory it writes to must be its
|
|
28
|
+
`dataPath` or one of its `writablePaths`. Probe over TCP on `127.0.0.1`
|
|
29
|
+
rather than a Unix socket.
|
|
30
|
+
3. Each entry's readiness settings (`periodSeconds`, `timeoutSeconds`,
|
|
31
|
+
`failureThreshold`) apply within an overall start-up limit, whatever the
|
|
32
|
+
entry's own threshold would otherwise allow. On Kubernetes that limit is
|
|
33
|
+
the pod-start timeout (`KUBERNETES_READY_TIMEOUT_MS`, default 120000, an
|
|
34
|
+
operator setting) and includes image pulls; if first pulls on new nodes
|
|
35
|
+
are slow, raise it or mirror the image into a nearby registry. On Docker
|
|
36
|
+
the limit is a fixed 120 seconds covering every service of the run
|
|
37
|
+
together (they start one at a time), never runs past the run's own
|
|
38
|
+
timeout, and has no setting to raise it; image pulls are not counted in it
|
|
39
|
+
but may take up to 5 minutes each. The Docker launcher pulls without
|
|
40
|
+
registry credentials, so pull a private or rate-limited image on the
|
|
41
|
+
Docker host beforehand.
|
|
42
|
+
4. Trigger a new run once the cause is fixed.
|
|
43
|
+
|
|
44
|
+
When this run is a sub-run another agent dispatched (for example a router
|
|
45
|
+
handing work to a coding agent), the parent sees a failed sub-run on its own
|
|
46
|
+
status comment, with a line naming the service: "A sub-run could not start:
|
|
47
|
+
The `<name>` service didn't become ready, so the run couldn't start."
|
|
48
|
+
|
|
49
|
+
See [Coding services](../coding-services.md).
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: getting-started
|
|
3
|
+
title: Get started with Wardby
|
|
4
|
+
summary: Set up a local Wardby control plane, verify it, and choose the next guide.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [setup, quickstart, operator]
|
|
7
|
+
appliesTo: >=0.2.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Get started with Wardby
|
|
11
|
+
|
|
12
|
+
From the project you want Wardby to manage, run:
|
|
13
|
+
|
|
14
|
+
```sh
|
|
15
|
+
npx --yes @wardby/cli@latest quickstart
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
The quickstart creates local state under `.wardby/`, starts the local services,
|
|
19
|
+
applies the required database migrations, and can register Wardby with Codex or
|
|
20
|
+
Claude Code. Run `wardby doctor` afterwards to verify the local installation.
|
|
21
|
+
|
|
22
|
+
Use [Operate agents](operating-agents.md) to create and supervise managed work.
|
|
23
|
+
Read [Choose a native or coding agent](creating-agents.md) before creating your
|
|
24
|
+
first agent.
|
|
25
|
+
Use [MCP access](mcp.md) when connecting an MCP client. Before enabling coding
|
|
26
|
+
agents against a repository, complete [GitHub integration](github.md).
|
|
27
|
+
For a self-hosted installation, start with [Choose a deployment target](deployment-targets.md)
|
|
28
|
+
and [Configure identity and privileged access](identity-and-access.md).
|
|
29
|
+
|
|
30
|
+
For complete local setup and deployment prerequisites, read
|
|
31
|
+
[`docs/getting-started.md`](../docs/getting-started.md).
|