@wardby/cli 0.4.1 → 0.5.1
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 +8 -1
- package/README.md +3 -1
- package/deploy/local/docker-compose.quickstart-coding.yml +27 -0
- package/dist/claude-coding-worker/driver.d.ts +2 -0
- package/dist/claude-coding-worker/driver.js +19 -3
- package/dist/claude-coding-worker/sdk.js +1 -1
- package/dist/cli.js +41 -22
- package/dist/coding/continuation-wording.d.ts +10 -0
- package/dist/coding/continuation-wording.js +13 -0
- package/dist/coding/docker-preflight.d.ts +12 -0
- package/dist/coding/docker-preflight.js +40 -0
- package/dist/coding/local-git.d.ts +22 -0
- package/dist/coding/local-git.js +102 -0
- package/dist/coding/local-repo-status.d.ts +7 -0
- package/dist/coding/local-repo-status.js +56 -0
- package/dist/coding/local-repo.d.ts +17 -0
- package/dist/coding/local-repo.js +65 -0
- package/dist/coding/observability.d.ts +1 -1
- package/dist/coding/observability.js +1 -0
- package/dist/coding/profile.d.ts +6 -0
- package/dist/coding/profile.js +13 -4
- package/dist/coding/protocol.d.ts +32 -7
- package/dist/coding/protocol.js +66 -4
- package/dist/coding-worker/artifact.d.ts +1 -0
- package/dist/coding-worker/errors.js +2 -0
- package/dist/config/providers.d.ts +13 -0
- package/dist/config/providers.js +21 -9
- package/dist/core/attribution.d.ts +13 -0
- package/dist/core/attribution.js +30 -0
- package/dist/core/budget-groups.d.ts +3 -1
- package/dist/core/budget-groups.js +53 -5
- package/dist/core/ci-context.d.ts +8 -0
- package/dist/core/ci-context.js +59 -0
- package/dist/core/delegation-siblings.d.ts +22 -0
- package/dist/core/delegation-siblings.js +40 -0
- package/dist/core/dispatch.d.ts +28 -4
- package/dist/core/dispatch.js +57 -15
- package/dist/core/engine-native.d.ts +16 -0
- package/dist/core/engine-native.js +49 -2
- package/dist/core/host-events.d.ts +25 -2
- package/dist/core/host-events.js +361 -19
- package/dist/core/host-status.d.ts +8 -3
- package/dist/core/host-status.js +38 -7
- package/dist/core/issue-events.d.ts +2 -6
- package/dist/core/issue-events.js +13 -19
- package/dist/core/pull-request-state-sync.d.ts +17 -0
- package/dist/core/pull-request-state-sync.js +53 -0
- package/dist/core/reconciler.d.ts +10 -1
- package/dist/core/reconciler.js +15 -2
- package/dist/core/related-pull-requests.d.ts +95 -0
- package/dist/core/related-pull-requests.js +338 -0
- package/dist/core/repo-access.d.ts +5 -1
- package/dist/core/repo-access.js +17 -1
- package/dist/core/review-fix-ledger.d.ts +20 -0
- package/dist/core/review-fix-ledger.js +41 -0
- package/dist/core/review-fix.d.ts +60 -0
- package/dist/core/review-fix.js +155 -0
- package/dist/core/review-host-tools.d.ts +13 -2
- package/dist/core/review-host-tools.js +72 -11
- package/dist/core/runner.d.ts +2 -2
- package/dist/core/runner.js +379 -184
- package/dist/core/serial-gate.d.ts +11 -0
- package/dist/core/serial-gate.js +19 -0
- package/dist/core/timing.d.ts +7 -0
- package/dist/core/timing.js +7 -0
- package/dist/generated/prisma/browser.d.ts +23 -0
- package/dist/generated/prisma/client.d.ts +23 -0
- package/dist/generated/prisma/commonInputTypes.d.ts +22 -0
- package/dist/generated/prisma/internal/class.d.ts +33 -0
- package/dist/generated/prisma/internal/class.js +4 -4
- package/dist/generated/prisma/internal/prismaNamespace.d.ts +274 -1
- package/dist/generated/prisma/internal/prismaNamespace.js +47 -2
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +48 -0
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +47 -2
- package/dist/generated/prisma/models/Agent.d.ts +422 -1
- package/dist/generated/prisma/models/AgentRepository.d.ts +120 -2
- package/dist/generated/prisma/models/CodingAgentProfile.d.ts +42 -1
- package/dist/generated/prisma/models/CodingRun.d.ts +205 -1
- package/dist/generated/prisma/models/DeferredReview.d.ts +1336 -0
- package/dist/generated/prisma/models/DeferredReview.js +1 -0
- package/dist/generated/prisma/models/LocalPullRequest.d.ts +1384 -0
- package/dist/generated/prisma/models/LocalPullRequest.js +1 -0
- package/dist/generated/prisma/models/LocalReview.d.ts +1315 -0
- package/dist/generated/prisma/models/LocalReview.js +1 -0
- package/dist/generated/prisma/models/Run.d.ts +223 -0
- package/dist/generated/prisma/models/RunHostCheck.d.ts +148 -1
- package/dist/generated/prisma/models.d.ts +3 -0
- package/dist/help-index.json +486 -37
- package/dist/import/neutral-schema.d.ts +2 -2
- package/dist/mcp/auth/access.d.ts +3 -1
- package/dist/mcp/auth/host-account-cli.js +2 -2
- package/dist/mcp/auth/repo-authorization.d.ts +6 -7
- package/dist/mcp/auth/repo-authorization.js +21 -0
- package/dist/mcp/index.js +4 -1
- package/dist/mcp/tools/agents.js +46 -4
- package/dist/mcp/tools/host-accounts.js +2 -2
- package/dist/mcp/tools/repositories.js +71 -12
- package/dist/mcp/tools/runs.js +23 -0
- package/dist/mcp/tools/trigger.js +153 -24
- package/dist/providers/engine/types.d.ts +11 -0
- package/dist/providers/executor/composition.js +12 -7
- package/dist/providers/executor/container.d.ts +40 -3
- package/dist/providers/executor/container.js +140 -9
- package/dist/providers/executor/types.d.ts +1 -1
- package/dist/providers/jobs/fake-kubernetes-api.d.ts +3 -2
- package/dist/providers/jobs/fake-kubernetes-api.js +3 -0
- package/dist/providers/jobs/kubernetes-api.d.ts +3 -1
- package/dist/providers/jobs/kubernetes-client.d.ts +2 -1
- package/dist/providers/jobs/kubernetes-client.js +3 -0
- package/dist/providers/jobs/kubernetes-isolation.d.ts +7 -0
- package/dist/providers/jobs/kubernetes-isolation.js +8 -3
- package/dist/providers/jobs/kubernetes-preflight.d.ts +8 -0
- package/dist/providers/jobs/kubernetes-preflight.js +7 -0
- package/dist/providers/jobs/kubernetes-quota.d.ts +31 -0
- package/dist/providers/jobs/kubernetes-quota.js +110 -0
- package/dist/providers/jobs/kubernetes.d.ts +9 -0
- package/dist/providers/jobs/kubernetes.js +50 -0
- package/dist/providers/jobs/types.d.ts +7 -0
- package/dist/providers/review-host/ci.d.ts +7 -0
- package/dist/providers/review-host/ci.js +20 -0
- package/dist/providers/review-host/github-events.d.ts +7 -0
- package/dist/providers/review-host/github-events.js +31 -7
- package/dist/providers/review-host/github.d.ts +19 -2
- package/dist/providers/review-host/github.js +145 -2
- package/dist/providers/review-host/index.d.ts +8 -2
- package/dist/providers/review-host/index.js +14 -3
- package/dist/providers/review-host/local.d.ts +72 -0
- package/dist/providers/review-host/local.js +434 -0
- package/dist/providers/review-host/types.d.ts +65 -3
- package/dist/providers/review-host/types.js +5 -3
- package/dist/providers/vcs/git.d.ts +10 -20
- package/dist/providers/vcs/git.js +71 -127
- package/dist/providers/vcs/github-remote.d.ts +67 -0
- package/dist/providers/vcs/github-remote.js +201 -0
- package/dist/providers/vcs/github.d.ts +81 -0
- package/dist/providers/vcs/github.js +203 -6
- package/dist/providers/vcs/index.d.ts +16 -1
- package/dist/providers/vcs/index.js +43 -15
- package/dist/providers/vcs/local-remote.d.ts +44 -0
- package/dist/providers/vcs/local-remote.js +108 -0
- package/dist/providers/vcs/remote.d.ts +58 -0
- package/dist/providers/vcs/remote.js +1 -0
- package/dist/providers/vcs/routing.d.ts +33 -0
- package/dist/providers/vcs/routing.js +52 -0
- package/dist/providers/vcs/types.d.ts +12 -1
- package/dist/quickstart/coding-db.d.ts +11 -0
- package/dist/quickstart/coding-db.js +75 -0
- package/dist/quickstart/coding-doctor.d.ts +13 -0
- package/dist/quickstart/coding-doctor.js +88 -0
- package/dist/quickstart/coding-images.d.ts +15 -0
- package/dist/quickstart/coding-images.js +79 -0
- package/dist/quickstart/coding-seed.d.ts +63 -0
- package/dist/quickstart/coding-seed.js +85 -0
- package/dist/quickstart/coding.d.ts +66 -0
- package/dist/quickstart/coding.js +430 -0
- package/dist/quickstart/images.d.ts +19 -0
- package/dist/quickstart/images.js +63 -0
- package/dist/quickstart/index.js +61 -12
- package/dist/quickstart/starter-services.d.ts +45 -0
- package/dist/quickstart/starter-services.js +186 -0
- package/dist/quickstart-images.json +1 -0
- package/dist/serve.js +14 -1
- package/dist/viewer/api-schema.d.ts +176 -0
- package/dist/viewer/api-schema.js +27 -2
- package/dist/viewer/graph.d.ts +7 -2
- package/dist/viewer/graph.js +25 -11
- package/dist/viewer/http.d.ts +7 -1
- package/dist/viewer/http.js +8 -3
- package/dist/viewer/infra.d.ts +2 -0
- package/dist/viewer/infra.js +23 -0
- package/dist/viewer/run-detail.d.ts +2 -1
- package/dist/viewer/run-detail.js +2 -2
- package/docs/agent-recipes.md +127 -5
- package/docs/code-review-agents.md +293 -38
- package/docs/coding-agent-setup.md +141 -2
- package/docs/coding-packages.md +21 -0
- package/docs/coding-services.md +3 -0
- package/docs/coding-worker-isolation.md +56 -20
- package/docs/getting-started-gke.md +24 -0
- package/docs/getting-started.md +196 -10
- package/docs/jira-agents.md +26 -5
- package/docs/security-deployment.md +9 -0
- package/docs/viewer-api.md +21 -2
- package/help/admin-viewer.md +11 -1
- package/help/agent-recipes.md +30 -4
- package/help/builder-agent.md +4 -0
- package/help/code-review-agents.md +82 -2
- package/help/coding-packages.md +12 -1
- package/help/coding-services.md +4 -0
- package/help/cost-attribution.md +3 -1
- package/help/creating-agents.md +3 -0
- package/help/deploy-gke.md +2 -1
- package/help/errors/coding-provider-not-configured.md +60 -0
- package/help/errors/coding-turn-limit.md +25 -0
- package/help/errors/continuation-closed.md +75 -0
- package/help/errors/local-branch-conflict.md +37 -0
- package/help/errors/local-path-invalid.md +30 -0
- package/help/errors/local-ref-invalid.md +36 -0
- package/help/errors/local-ref-not-found.md +41 -0
- package/help/errors/local-repo-not-allowed.md +46 -0
- package/help/errors/local-repo-not-found.md +39 -0
- package/help/errors/model-unavailable.md +7 -6
- package/help/errors/vcs-github-not-configured.md +34 -0
- package/help/getting-started.md +28 -0
- package/help/github.md +22 -5
- package/help/jira.md +9 -2
- package/help/local-repositories.md +182 -0
- package/help/related-pull-requests.md +89 -0
- package/help/review-fix-rounds.md +69 -0
- package/help/troubleshooting/budgets.md +11 -0
- package/help/troubleshooting/coding-workers.md +22 -0
- package/help/troubleshooting/repository-access.md +5 -0
- package/package.json +3 -2
- package/prisma/migrations/20261004100000_delegations_and_coding_turns/migration.sql +12 -0
- package/prisma/migrations/20261005000000_review_fix_rounds/migration.sql +5 -0
- package/prisma/migrations/20261006000000_parallel_delegations/migration.sql +6 -0
- package/prisma/migrations/20261007000000_ci_rereview/migration.sql +4 -0
- package/prisma/migrations/20261008000000_review_after_ci/migration.sql +33 -0
- package/prisma/migrations/20261009000001_coding_run_local_branch/migration.sql +7 -0
- package/prisma/migrations/20261009000002_local_review/migration.sql +50 -0
- package/prisma/schema.prisma +98 -1
|
@@ -3,7 +3,7 @@ id: code-review-agents
|
|
|
3
3
|
title: Run GitHub code-review agents
|
|
4
4
|
summary: Link a read-only review agent to a repository for pull-request checks and trusted mention workflows.
|
|
5
5
|
audience: operator
|
|
6
|
-
tags: [github, code-review, pull-requests, webhooks]
|
|
6
|
+
tags: [github, code-review, pull-requests, webhooks, ci, checks, waitForCi]
|
|
7
7
|
appliesTo: >=0.2.1
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -26,12 +26,92 @@ A mention on a pull request that a wardby coding run opened continues that
|
|
|
26
26
|
run's branch. If this deployment has no record of the run that opened it (for
|
|
27
27
|
example, another wardby deployment sharing the same GitHub App opened it), the
|
|
28
28
|
App replies that it cannot continue the pull request instead of starting a
|
|
29
|
-
run. Ask the deployment that opened it, or change the branch by hand.
|
|
29
|
+
run. Ask the deployment that opened it, or change the branch by hand. A
|
|
30
|
+
continuation also never pushes to a pull request that has since been merged
|
|
31
|
+
or closed — see
|
|
32
|
+
[Continuation's pull request is no longer open](errors/continuation-closed.md).
|
|
33
|
+
|
|
34
|
+
To review a branch of a git repository on the wardby host, without GitHub, see
|
|
35
|
+
[Use local git repositories](local-repositories.md).
|
|
36
|
+
|
|
37
|
+
A repository can also be linked so wardby fixes its own review's findings on
|
|
38
|
+
such a pull request automatically, up to a round cap — see
|
|
39
|
+
[Automatic review fix rounds](review-fix-rounds.md).
|
|
30
40
|
|
|
31
41
|
Wardby skips pull requests whose head is in a fork. It also ignores mentions
|
|
32
42
|
from bots and people without write access. Repository links require the
|
|
33
43
|
agent owner's linked GitHub access, or an explicitly recorded administrator
|
|
34
44
|
approval.
|
|
35
45
|
|
|
46
|
+
## CI and sibling pull requests
|
|
47
|
+
|
|
48
|
+
`repo_pr_read` also returns `ci`: the CI check runs and commit statuses on the
|
|
49
|
+
pull request's head commit (Wardby's own checks left out), an overall state,
|
|
50
|
+
and a note. CI is the authority on whether the head builds and passes its
|
|
51
|
+
tests. The **Tests** list in a Wardby pull request's description was run in
|
|
52
|
+
Wardby's coding sandbox, which may have had an incomplete install (see the
|
|
53
|
+
**Dependency install incomplete** warning). Checks still running are reported
|
|
54
|
+
as pending.
|
|
55
|
+
|
|
56
|
+
If a review publishes only a comment while CI on the head is still running (or
|
|
57
|
+
has not reported yet), Wardby runs that review again once CI on the same head
|
|
58
|
+
has finished, so it can approve or request changes against the real result.
|
|
59
|
+
This happens at most once per head commit for each reviewer, only while the pull request is open
|
|
60
|
+
and still at that commit, and needs the App's **Check suite** event. CI that
|
|
61
|
+
reports only commit statuses (no check suites) does not trigger it, nor does a
|
|
62
|
+
commit status still pending when the last check suite finishes; use **Re-run**
|
|
63
|
+
on the review check instead.
|
|
64
|
+
|
|
65
|
+
Commit statuses need the App's **Commit statuses: Read** permission; without
|
|
66
|
+
it only check runs are shown.
|
|
67
|
+
|
|
68
|
+
## Review after CI (`waitForCi`)
|
|
69
|
+
|
|
70
|
+
A `pull_request` link can set `waitForCi: true` so this reviewer reviews a
|
|
71
|
+
pushed head only after that head's own CI has finished, instead of racing
|
|
72
|
+
it. The gate below keeps it from approving while CI on that head is known
|
|
73
|
+
to be failing or still running; see the gate's own exceptions for when CI
|
|
74
|
+
can't be read or this run doesn't own the check.
|
|
75
|
+
|
|
76
|
+
On a push, Wardby reads CI on the new head before starting a `waitForCi`
|
|
77
|
+
reviewer. If CI is still pending, or nothing has reported yet, the review is
|
|
78
|
+
held rather than started; it starts once CI finishes (the same **Check
|
|
79
|
+
suite** event used for the re-review above), or — if CI never finishes —
|
|
80
|
+
after 15 minutes anyway. CI that reports only commit statuses (no check
|
|
81
|
+
suites), or a status still pending when the last check suite finishes,
|
|
82
|
+
never releases a held review early; it starts only at that 15-minute
|
|
83
|
+
fallback. The 15-minute fallback, and the 24-hour drop below, only run
|
|
84
|
+
where Wardby's scheduler process runs (`wardby scheduler`, or `wardby
|
|
85
|
+
serve` with the scheduler enabled); on an instance running only `wardby
|
|
86
|
+
mcp`, a held review starts only once a **Check suite** event arrives, so
|
|
87
|
+
with status-only CI it can wait indefinitely. A review still held after 24
|
|
88
|
+
hours is dropped. This is decided per pull request, never across a set of
|
|
89
|
+
related pull requests.
|
|
90
|
+
|
|
91
|
+
While CI on the head is failing or still running, `repo_publish_review`
|
|
92
|
+
refuses an approve verdict on a `waitForCi` reviewer's own check, returning
|
|
93
|
+
a tool error instead of publishing anything:
|
|
94
|
+
|
|
95
|
+
- `ci_failing` — CI is failing; request changes (or comment) instead.
|
|
96
|
+
- `ci_pending` — CI is still running; comment instead. The re-review above
|
|
97
|
+
then runs the review again once a CI check suite finishes.
|
|
98
|
+
|
|
99
|
+
Requesting changes or commenting is never affected by this gate. When CI
|
|
100
|
+
cannot be read at all, the gate is skipped and the review proceeds as it
|
|
101
|
+
would without `waitForCi`.
|
|
102
|
+
|
|
103
|
+
Add this to a reviewer's system prompt:
|
|
104
|
+
|
|
105
|
+
Reviewer step (CI and related pull requests). Read `ci` from repo_pr_read.
|
|
106
|
+
When `ci` and the description's Tests disagree, follow CI and say so; never
|
|
107
|
+
ask for a fix only because a sandbox test failed while CI passed. Report
|
|
108
|
+
pending checks as pending. If the description has a "Related pull requests"
|
|
109
|
+
section, a field, route or schema the change relies on may be added by one
|
|
110
|
+
of those pull requests: do not report it as missing; note the dependency
|
|
111
|
+
and the suggested merge order instead.
|
|
112
|
+
|
|
113
|
+
Wardby also writes that section: see
|
|
114
|
+
[Related pull requests across repositories](related-pull-requests.md).
|
|
115
|
+
|
|
36
116
|
For App permissions, webhook setup, trigger configuration, and security
|
|
37
117
|
details, follow [`docs/code-review-agents.md`](../docs/code-review-agents.md).
|
package/help/coding-packages.md
CHANGED
|
@@ -3,7 +3,7 @@ id: coding-packages
|
|
|
3
3
|
title: Approve packages for coding agents
|
|
4
4
|
summary: Let Codex coding workers install vetted npm and PyPI dependencies through Wardby's registry proxy.
|
|
5
5
|
audience: operator
|
|
6
|
-
tags: [coding-agents, packages, npm, pypi, supply-chain]
|
|
6
|
+
tags: [coding-agents, packages, npm, pypi, supply-chain, refusals, lockfile]
|
|
7
7
|
appliesTo: >=0.2.1
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -27,5 +27,16 @@ reaches the registry through the run's proxy network. Use a pinned custom
|
|
|
27
27
|
worker image when an agent needs system packages, another runtime, or
|
|
28
28
|
dependencies that should be baked into the image.
|
|
29
29
|
|
|
30
|
+
When the registry refuses a package, the pull request opens with a
|
|
31
|
+
**Dependency install incomplete** warning naming each refused package and
|
|
32
|
+
any lock file the run changed. A changed lock file may then fail a clean
|
|
33
|
+
install in CI until it is regenerated, and the run's status comment shows ⚠️
|
|
34
|
+
if its own checks failed. A package reachable only through a refused one is
|
|
35
|
+
refused too, so a high-severity advisory deep in a toolchain blocks every run
|
|
36
|
+
that installs it.
|
|
37
|
+
|
|
38
|
+
Review agents see the pull request's CI results in `repo_pr_read` and are
|
|
39
|
+
told to trust CI over the sandbox's **Tests**.
|
|
40
|
+
|
|
30
41
|
Read [`docs/coding-packages.md`](../docs/coding-packages.md) for allowlist
|
|
31
42
|
syntax, package-policy controls, lockfile behavior, and refusal errors.
|
package/help/coding-services.md
CHANGED
|
@@ -58,6 +58,10 @@ When upgrading a deployment that delegates to an identity provider, define the
|
|
|
58
58
|
`services:manage` scope in the provider first; see
|
|
59
59
|
[Configure identity and privileged access](identity-and-access.md).
|
|
60
60
|
|
|
61
|
+
For a repository on the wardby host (`local:/absolute/path`), the declaration is
|
|
62
|
+
read from the committed file at the run's base ref, never the working tree; see
|
|
63
|
+
[Use local git repositories](local-repositories.md).
|
|
64
|
+
|
|
61
65
|
If a run is refused or fails over its services, read the page for its code:
|
|
62
66
|
|
|
63
67
|
- [`service_declaration_invalid`](errors/service-declaration-invalid.md)
|
package/help/cost-attribution.md
CHANGED
|
@@ -16,7 +16,9 @@ A run is attributed to an issue when:
|
|
|
16
16
|
|
|
17
17
|
- a Jira event on that issue started it;
|
|
18
18
|
- it reviews, or answers an `@wardby` mention on, a pull request Wardby opened
|
|
19
|
-
for the issue
|
|
19
|
+
for the issue — including a review that starts while the agent that asked
|
|
20
|
+
for the pull request is still running, before the pull request is linked to
|
|
21
|
+
the issue (Wardby then uses the issue of the coding run that opened it);
|
|
20
22
|
- `trigger_agent` named an `issue`, or a webhook call's JSON body named a
|
|
21
23
|
`wardbyIssue`, as `{ "provider": "jira", "key": "PROJ-123" }`, in a project
|
|
22
24
|
the agent is linked to. Keys are matched without regard to case
|
package/help/creating-agents.md
CHANGED
|
@@ -85,6 +85,9 @@ A coding agent can also keep a repository's architecture knowledge current; see
|
|
|
85
85
|
For an `@mention` builder with a router, see [Agent recipes](help://agent-recipes) and
|
|
86
86
|
[Builder and router prompts](help://builder-agent).
|
|
87
87
|
|
|
88
|
+
A coding or review agent can also use a git folder on the wardby host instead of a
|
|
89
|
+
GitHub repository; see [Use local git repositories](local-repositories.md).
|
|
90
|
+
|
|
88
91
|
Read [Connect GitHub repositories](github.md) and
|
|
89
92
|
[Troubleshoot coding workers](troubleshooting/coding-workers.md) before
|
|
90
93
|
enabling repository-changing work.
|
package/help/deploy-gke.md
CHANGED
|
@@ -3,7 +3,7 @@ id: deploy-gke
|
|
|
3
3
|
title: Deploy Wardby on GKE Autopilot
|
|
4
4
|
summary: Use the supported Google Cloud path for a private database, isolated coding workers, and HTTPS ingress.
|
|
5
5
|
audience: operator
|
|
6
|
-
tags: [deployment, gke, gcp, kubernetes, production]
|
|
6
|
+
tags: [deployment, gke, gcp, kubernetes, production, secrets, jira]
|
|
7
7
|
appliesTo: >=0.2.1
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -27,6 +27,7 @@ The deployment process is:
|
|
|
27
27
|
Gateway's address, certificate map, Cloud Armor policy, and DNS record.
|
|
28
28
|
3. Put first-time values in an untracked `.env.local`; `deploy/gke/up.sh`
|
|
29
29
|
seeds Secret Manager without overwriting existing production values.
|
|
30
|
+
Jira settings are optional there, all or none; see [Jira](jira.md).
|
|
30
31
|
4. Run `HOSTNAME=wardby.example.com deploy/gke/up.sh`, then verify DNS,
|
|
31
32
|
certificate issuance, database IAM bootstrap, and service health.
|
|
32
33
|
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/coding-provider-not-configured
|
|
3
|
+
title: Coding provider not configured
|
|
4
|
+
summary: A coding run was refused because this server has no worker images for the agent's coding provider (Codex or Claude Code).
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, configuration, coding_provider_not_configured, CODING_WORKER_IMAGE, codex, claude-code]
|
|
7
|
+
appliesTo: ">=0.5.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Coding provider not configured
|
|
11
|
+
|
|
12
|
+
`coding_provider_not_configured:<provider>` means a coding agent's provider has
|
|
13
|
+
no worker images on this wardby server. Each provider's images are optional, so
|
|
14
|
+
a server can run Codex agents only, Claude Code agents only, or both. Starting
|
|
15
|
+
the run (a trigger, schedule, or webhook) fails at dispatch with this error,
|
|
16
|
+
before any worker starts and before anything is spent. A run records its worker
|
|
17
|
+
image at dispatch, so removing an image later doesn't affect most runs already
|
|
18
|
+
dispatched. The exceptions fail at launch with category
|
|
19
|
+
`preflight`: a Claude Code run when `CODING_CLAUDE_TOOL_RUNNER_IMAGE` has since
|
|
20
|
+
been unset, and a Codex run with no recorded worker image (one dispatched before
|
|
21
|
+
runs recorded it) when `CODING_WORKER_IMAGE` has since been unset.
|
|
22
|
+
|
|
23
|
+
- **`coding_provider_not_configured:codex`**: `CODING_WORKER_IMAGE` (the Codex
|
|
24
|
+
worker) isn't set, and the agent names no worker image of its own
|
|
25
|
+
(`codingProfile.workerImageRef`). An agent that sets `workerImageRef`, or uses
|
|
26
|
+
a toolchain with its own image (such as `CODING_WORKER_IMAGE_NODE_PYTHON_3_12`),
|
|
27
|
+
still runs without `CODING_WORKER_IMAGE`.
|
|
28
|
+
- **`coding_provider_not_configured:claude-code`**: `CODING_CLAUDE_WORKER_IMAGE`
|
|
29
|
+
or `CODING_CLAUDE_TOOL_RUNNER_IMAGE` isn't set. Claude Code needs both, and
|
|
30
|
+
even an agent's own `workerImageRef` doesn't replace the tool runner.
|
|
31
|
+
|
|
32
|
+
This error is about images, not API keys. A missing or invalid model API key
|
|
33
|
+
fails later, when the run calls the model.
|
|
34
|
+
|
|
35
|
+
## What to do
|
|
36
|
+
|
|
37
|
+
Choose one:
|
|
38
|
+
|
|
39
|
+
1. **Configure the provider.** Set its images on the wardby server and restart
|
|
40
|
+
it:
|
|
41
|
+
- Codex: `CODING_WORKER_IMAGE`.
|
|
42
|
+
- Claude Code: `CODING_CLAUDE_WORKER_IMAGE` and
|
|
43
|
+
`CODING_CLAUDE_TOOL_RUNNER_IMAGE`.
|
|
44
|
+
|
|
45
|
+
Each image must be immutable: a local `sha256:` image ID or a
|
|
46
|
+
`repo@sha256:` digest for Docker, and a registry digest for Kubernetes. With
|
|
47
|
+
the quickstart, re-run it and choose the provider you want; it pulls or builds
|
|
48
|
+
only that provider's images and keeps the ones already set. Then run
|
|
49
|
+
`wardby coding preflight`. See
|
|
50
|
+
[Local coding-agent setup](../../docs/coding-agent-setup.md).
|
|
51
|
+
|
|
52
|
+
2. **Switch the agent to a configured provider.** Use `update_agent` to change
|
|
53
|
+
its `codingProfile.provider` and pick a model for that provider.
|
|
54
|
+
|
|
55
|
+
The server refuses to start with a coding launcher (`JOB_LAUNCHER=docker` or
|
|
56
|
+
`kubernetes`) when neither provider has images. That startup error names both
|
|
57
|
+
options.
|
|
58
|
+
|
|
59
|
+
Related: [Local git repositories](../local-repositories.md),
|
|
60
|
+
[Model not available](model-unavailable.md).
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/coding-turn-limit
|
|
3
|
+
title: Coding run reached its turn limit
|
|
4
|
+
summary: A Claude Code coding run stopped because it used every agent turn its codingProfile.maxTurns allows (200 by default), before it finished the task.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, claude-code, turns, maxTurns]
|
|
7
|
+
appliesTo: ">=0.4.2"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Coding run reached its turn limit
|
|
11
|
+
|
|
12
|
+
`coding_turn_limit` (failure category `turn_limit`) means a Claude Code run used
|
|
13
|
+
all of its agent turns before it finished. Every file read, command and edit is
|
|
14
|
+
a turn. The limit is the agent's `codingProfile.maxTurns`, or 200 when it is
|
|
15
|
+
unset. Codex runs have no turn limit.
|
|
16
|
+
|
|
17
|
+
1. Read the run's summary, and its debug trace if one was on
|
|
18
|
+
(`codingProfile.debugTraceMinutes`), to see whether the task was large or the
|
|
19
|
+
agent was repeating itself.
|
|
20
|
+
2. For a large task, raise the limit (1 to 1000) with `update_agent`:
|
|
21
|
+
`{ "id": "<agent id>", "codingProfile": { "maxTurns": 400 } }`.
|
|
22
|
+
3. For a loop, narrow the task or fix what it was retrying, then run it again.
|
|
23
|
+
|
|
24
|
+
The run's `budgetUsd` and `timeoutSec` still apply. See
|
|
25
|
+
[Troubleshoot coding workers](../troubleshooting/coding-workers.md).
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/continuation-closed
|
|
3
|
+
title: Continuation's pull request is no longer open
|
|
4
|
+
summary: A run asked to continue a pull request that was already merged or closed, so nothing was pushed.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, vcs, pull-requests, continuation, continuePriorRun]
|
|
7
|
+
appliesTo: ">=0.4.2"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Continuation's pull request is no longer open
|
|
11
|
+
|
|
12
|
+
A coding run started with `continuePriorRun` (a mention follow-up, a Jira
|
|
13
|
+
issue-event task, or a review fix round) reuses the branch and pull request
|
|
14
|
+
the named run originally opened. Before cloning, and again right before it
|
|
15
|
+
pushes, wardby asks GitHub whether that pull request is still open. A run
|
|
16
|
+
that stopped with category `continuation_closed` got a definite answer that
|
|
17
|
+
it is not: the pull request was merged or closed, or GitHub no longer lists
|
|
18
|
+
an open pull request carrying that run's marker for the branch. Nothing from
|
|
19
|
+
the run was pushed either way, so the pull request (and anyone who merged or
|
|
20
|
+
closed it) is unaffected.
|
|
21
|
+
|
|
22
|
+
Two things besides an actual merge or close can also make the check come back
|
|
23
|
+
"no longer found," since it looks for an **open** pull request with that
|
|
24
|
+
exact base branch and the run's hidden marker still in its description:
|
|
25
|
+
|
|
26
|
+
- the pull request's base branch was retargeted to something other than the
|
|
27
|
+
one the run recorded;
|
|
28
|
+
- the hidden `<!-- wardby:<run-id> -->` marker was removed or edited out of
|
|
29
|
+
the pull request's description (wardby relies on it to find its own PR;
|
|
30
|
+
nothing else identifies it).
|
|
31
|
+
|
|
32
|
+
When the pull request was merged or closed **before the run started**, the
|
|
33
|
+
check before cloning catches it: the run's status is `refused`, and nothing
|
|
34
|
+
was spent beyond setup. When it was merged or closed **while the run was
|
|
35
|
+
working**, the check right before the push catches it instead: that run ends
|
|
36
|
+
`failed`, having already done its work, and that work is not pushed. Either
|
|
37
|
+
way the category (`get_run`'s `codingRun.failureCategory`) is
|
|
38
|
+
`continuation_closed`.
|
|
39
|
+
|
|
40
|
+
This is a safety check, not a flaky one: a transient GitHub failure while
|
|
41
|
+
checking (a timeout, a rate limit, a 5xx) is retried once, after a short
|
|
42
|
+
wait, and if it still fails, wardby proceeds as though the pull request were
|
|
43
|
+
still open rather than stopping the run on an unconfirmed answer — it only
|
|
44
|
+
ever refuses on a definite "merged", "closed", or "no longer found" answer.
|
|
45
|
+
|
|
46
|
+
## What the requester sees
|
|
47
|
+
|
|
48
|
+
**(a) A parent agent that delegated the continuation** (a router that called
|
|
49
|
+
`continuePriorRun`, a Jira or mention follow-up) gets this back as its
|
|
50
|
+
sub-run's `refusal`, never the raw error code:
|
|
51
|
+
|
|
52
|
+
> The pull request this run was asked to continue is no longer open (merged
|
|
53
|
+
> or closed), so nothing was pushed. If the change is still needed, delegate
|
|
54
|
+
> again without continuePriorRun: it becomes a new pull request from the
|
|
55
|
+
> default branch.
|
|
56
|
+
|
|
57
|
+
**(b) A person watching the request** — the @-mention's status comment, or
|
|
58
|
+
the Jira issue comment for an issue-event task — sees a line about the
|
|
59
|
+
sub-run instead, without the error code:
|
|
60
|
+
|
|
61
|
+
> A sub-run was asked to continue a pull request that is no longer open
|
|
62
|
+
> (merged or closed); nothing was pushed.
|
|
63
|
+
|
|
64
|
+
## What to do
|
|
65
|
+
|
|
66
|
+
If the change is still needed, ask again without `continuePriorRun` (or
|
|
67
|
+
without naming the closed pull request). The new run opens a fresh pull
|
|
68
|
+
request from the repository's default branch. If the check is wrongly
|
|
69
|
+
finding nothing when the pull request is in fact open, check that its base
|
|
70
|
+
branch still matches what wardby recorded and that the `<!-- wardby:... -->`
|
|
71
|
+
marker is still in its description, unedited.
|
|
72
|
+
|
|
73
|
+
Related: [Run GitHub code-review agents](../code-review-agents.md),
|
|
74
|
+
[Automatic review fix rounds](../review-fix-rounds.md),
|
|
75
|
+
[Related pull requests across repositories](../related-pull-requests.md).
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/local-branch-conflict
|
|
3
|
+
title: Run's branch was modified or is checked out
|
|
4
|
+
summary: The branch wardby/run-<id> moved since the run started, or it is checked out in the local repository, so wardby did not push to it.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, local-repositories, coding-agents, vcs]
|
|
7
|
+
appliesTo: ">=0.5.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Run's branch was modified or is checked out
|
|
11
|
+
|
|
12
|
+
`local_branch_conflict` means wardby would not push a run's commit into the
|
|
13
|
+
local repository because the target branch `wardby/run-<run id>` is not in the
|
|
14
|
+
state the run expects. Either:
|
|
15
|
+
|
|
16
|
+
- the branch moved after the run cloned it, for example you or another run
|
|
17
|
+
committed to it, so the push would not be a fast-forward; or
|
|
18
|
+
- the branch is checked out in the repository, and wardby never changes the
|
|
19
|
+
branch you have checked out.
|
|
20
|
+
|
|
21
|
+
The run fails and nothing is pushed. Your repository, working tree and checked-out
|
|
22
|
+
branch are unchanged.
|
|
23
|
+
|
|
24
|
+
## What to do
|
|
25
|
+
|
|
26
|
+
1. Check what is checked out: `git -C /path/to/repo branch --show-current`. If
|
|
27
|
+
it is a `wardby/run-*` branch, switch to another one, such as `main`.
|
|
28
|
+
2. If the branch moved, decide which work to keep. To build on the moved branch,
|
|
29
|
+
start a new run with `baseRef: wardby/run-<run id>` so it starts from the
|
|
30
|
+
branch's current tip.
|
|
31
|
+
3. Start the run again.
|
|
32
|
+
|
|
33
|
+
To avoid this, treat `wardby/run-*` branches as wardby's while a run is active:
|
|
34
|
+
do not commit to them or check them out. To inspect a result, use
|
|
35
|
+
`git show wardby/run-<run id>` or create your own branch from it.
|
|
36
|
+
|
|
37
|
+
Related: [Local git repositories](../local-repositories.md).
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/local-path-invalid
|
|
3
|
+
title: Invalid file path in local repository read
|
|
4
|
+
summary: A file path given to a repository read was absolute or contained empty, dot or dot-dot segments.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, local-repositories, coding-agents, vcs]
|
|
7
|
+
appliesTo: ">=0.5.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Invalid file path in local repository read
|
|
11
|
+
|
|
12
|
+
`local_path_invalid` means a read of a file in a local repository (for example
|
|
13
|
+
`repo_read_file` in a review, or wardby reading `.wardby/services.yaml`) used a
|
|
14
|
+
path wardby will not pass to git. Paths must be relative to the repository root.
|
|
15
|
+
A path is rejected when it:
|
|
16
|
+
|
|
17
|
+
- starts with `/`;
|
|
18
|
+
- contains an empty segment (`src//main.ts`), a `.` segment or a `..` segment; or
|
|
19
|
+
- is empty or contains a NUL.
|
|
20
|
+
|
|
21
|
+
Wardby reads files from the committed tree at a ref, so only regular files are
|
|
22
|
+
readable. A symlink, directory or submodule at that path is not.
|
|
23
|
+
|
|
24
|
+
## What to do
|
|
25
|
+
|
|
26
|
+
Use a clean repository-relative path, such as `src/main.ts` or `docs/README.md`,
|
|
27
|
+
not `/home/you/repo/src/main.ts`, `./src/main.ts` or `src/../src/main.ts`. Use
|
|
28
|
+
`repo_list_files` to see what exists at the ref.
|
|
29
|
+
|
|
30
|
+
Related: [Local git repositories](../local-repositories.md).
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/local-ref-invalid
|
|
3
|
+
title: Invalid git branch or ref name
|
|
4
|
+
summary: A branch or ref name was rejected because it does not follow git's naming rules.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, local-repositories, coding-agents, vcs]
|
|
7
|
+
appliesTo: ">=0.5.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Invalid git branch or ref name
|
|
11
|
+
|
|
12
|
+
`local_ref_invalid` means wardby refused a branch or ref name before passing it
|
|
13
|
+
to git. A name is rejected when it:
|
|
14
|
+
|
|
15
|
+
- is empty, starts with `-`, or contains `@{`, a NUL, a space or other
|
|
16
|
+
non-printable or non-ASCII character;
|
|
17
|
+
- is too long; or
|
|
18
|
+
- is not accepted by `git check-ref-format --branch` (for example it contains
|
|
19
|
+
`..`, a trailing `.lock`, or characters such as `~`, `^`, `:` or `\`).
|
|
20
|
+
|
|
21
|
+
It can also appear when a review is requested without `base` while the
|
|
22
|
+
repository's HEAD is detached, because there is no checked-out branch to use.
|
|
23
|
+
|
|
24
|
+
## What to do
|
|
25
|
+
|
|
26
|
+
Use a plain branch name that git accepts. You can check one with:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
git check-ref-format --branch my-branch-name
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Valid examples: `feature/add-login`, `fix-123`, `release-1.0`. Invalid examples:
|
|
33
|
+
`-feature`, `feature branch`, `feature..fix`. For the detached HEAD case, pass
|
|
34
|
+
`review.base` explicitly or check out a branch.
|
|
35
|
+
|
|
36
|
+
Related: [Local git repositories](../local-repositories.md).
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/local-ref-not-found
|
|
3
|
+
title: Git branch or ref does not exist in the local repository
|
|
4
|
+
summary: A branch or base ref the run asked for was not found in the repository history.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, local-repositories, coding-agents, vcs]
|
|
7
|
+
appliesTo: ">=0.5.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Git branch or ref does not exist in the local repository
|
|
11
|
+
|
|
12
|
+
`local_ref_not_found` means a branch, base or other ref named in a request does
|
|
13
|
+
not resolve to a commit in the local repository. It comes from:
|
|
14
|
+
|
|
15
|
+
- a coding run whose `baseRef` (on the agent's profile or in `trigger_agent`)
|
|
16
|
+
is not a branch of the repository;
|
|
17
|
+
- a continuation or a `baseRef: wardby/run-<run id>` whose result branch was
|
|
18
|
+
deleted, for example with `git branch -D`; or
|
|
19
|
+
- a review (`trigger_agent` with `review`) whose `branch` or `base` is not a
|
|
20
|
+
branch of the repository, or a file read at a ref that does not exist.
|
|
21
|
+
|
|
22
|
+
Only committed history counts. Uncommitted changes are not part of any branch.
|
|
23
|
+
|
|
24
|
+
## What to do
|
|
25
|
+
|
|
26
|
+
1. List the branches the repository really has:
|
|
27
|
+
```
|
|
28
|
+
git -C /path/to/repo branch --all
|
|
29
|
+
```
|
|
30
|
+
2. Fix the name, or commit your work to a branch first:
|
|
31
|
+
```
|
|
32
|
+
git switch -c my-branch
|
|
33
|
+
git commit -am "Work in progress"
|
|
34
|
+
```
|
|
35
|
+
3. If a result branch was deleted and you still have its commit, recreate it
|
|
36
|
+
with `git branch wardby/run-<run id> <commit>`. Otherwise start from another
|
|
37
|
+
branch.
|
|
38
|
+
4. For a review, check both `branch` and `base`; `base` defaults to the branch
|
|
39
|
+
checked out in the repository.
|
|
40
|
+
|
|
41
|
+
Related: [Local git repositories](../local-repositories.md).
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/local-repo-not-allowed
|
|
3
|
+
title: Local repository is not in a trusted folder
|
|
4
|
+
summary: The repository path is outside every folder listed in LOCAL_REPO_ROOTS, so the run was refused.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, local-repositories, coding-agents, vcs]
|
|
7
|
+
appliesTo: ">=0.5.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Local repository is not in a trusted folder
|
|
11
|
+
|
|
12
|
+
`local_repo_not_allowed` means wardby refused a local repository (a repository
|
|
13
|
+
written `local:/absolute/path`) because its real path, after resolving symlinks,
|
|
14
|
+
is not at or below any folder listed in the `LOCAL_REPO_ROOTS` environment
|
|
15
|
+
variable. If `LOCAL_REPO_ROOTS` is unset, no local repository is allowed.
|
|
16
|
+
|
|
17
|
+
A trusted folder that does not exist where the wardby server runs is ignored.
|
|
18
|
+
This is the usual cause when the server runs in a container, a pod or on
|
|
19
|
+
another machine: it cannot see the folder, so every repository under it is
|
|
20
|
+
refused with this error. `doctor` lists each trusted folder and reports a
|
|
21
|
+
missing one.
|
|
22
|
+
|
|
23
|
+
Wardby checks the folders when you create or update an agent, link a
|
|
24
|
+
repository, trigger a run, and again while a run uses the repository, so a
|
|
25
|
+
narrowed list also refuses agents that were saved earlier.
|
|
26
|
+
|
|
27
|
+
## What to do
|
|
28
|
+
|
|
29
|
+
1. Add the repository's folder (or a parent folder) to `LOCAL_REPO_ROOTS` on the
|
|
30
|
+
wardby server. Separate folders with the platform's path delimiter: `:` on
|
|
31
|
+
macOS and Linux, `;` on Windows. For example:
|
|
32
|
+
```
|
|
33
|
+
LOCAL_REPO_ROOTS=/home/you/projects:/srv/repos
|
|
34
|
+
```
|
|
35
|
+
2. Restart the wardby server so it reads the new value.
|
|
36
|
+
3. If you set up wardby with `quickstart`, run it again with
|
|
37
|
+
`--coding --trust /path/to/folder` (repeat `--trust` for more folders). It
|
|
38
|
+
keeps the folders already trusted and writes the new list to `.wardby/.env`.
|
|
39
|
+
|
|
40
|
+
4. Run the wardby server directly on the machine that holds the folders, not
|
|
41
|
+
in a container.
|
|
42
|
+
|
|
43
|
+
If the repository path goes through a symlink, the symlink's target must be
|
|
44
|
+
inside a trusted folder; the link's own location does not count.
|
|
45
|
+
|
|
46
|
+
Related: [Local git repositories](../local-repositories.md), [Get started](../getting-started.md).
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/local-repo-not-found
|
|
3
|
+
title: Local repository path not found or not a git repository
|
|
4
|
+
summary: The repository path does not exist, is not the top level of a git work tree, or is not readable by the wardby server.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, local-repositories, coding-agents, vcs]
|
|
7
|
+
appliesTo: ">=0.5.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Local repository path not found or not a git repository
|
|
11
|
+
|
|
12
|
+
`local_repo_not_found` means wardby could not use a local repository (written
|
|
13
|
+
`local:/absolute/path`) even though the path is inside a trusted folder. One of
|
|
14
|
+
these is true:
|
|
15
|
+
|
|
16
|
+
- the path does not exist (it was moved or deleted);
|
|
17
|
+
- the path is not the top level of a git work tree (it is a subfolder of a
|
|
18
|
+
repository, a bare repository, or not a repository at all); or
|
|
19
|
+
- the wardby server's user cannot read the folder.
|
|
20
|
+
|
|
21
|
+
Local repositories need the wardby server to run on the same machine as the
|
|
22
|
+
folders, outside a container. A server in a container, a pod or on another
|
|
23
|
+
machine usually cannot see the trusted folder at all; it ignores that folder,
|
|
24
|
+
so the repository fails with
|
|
25
|
+
[`local_repo_not_allowed`](local-repo-not-allowed.md) instead.
|
|
26
|
+
|
|
27
|
+
## What to do
|
|
28
|
+
|
|
29
|
+
1. Check the path from the machine that runs the wardby server:
|
|
30
|
+
```
|
|
31
|
+
git -C /path/to/repo rev-parse --show-toplevel
|
|
32
|
+
```
|
|
33
|
+
The output must be the path you gave wardby (after symlinks). If it is a
|
|
34
|
+
parent folder, use that folder instead.
|
|
35
|
+
2. Make sure the server's user can read the folder.
|
|
36
|
+
3. Make sure the path you gave is the folder that holds `.git`, not a
|
|
37
|
+
subfolder.
|
|
38
|
+
|
|
39
|
+
Related: [Local git repositories](../local-repositories.md).
|
|
@@ -45,12 +45,13 @@ A coding agent's model is checked against the catalog only
|
|
|
45
45
|
never look up a provider adapter at all, so a model can pass this check and
|
|
46
46
|
still fail later for reasons `model_unavailable` never reports.
|
|
47
47
|
|
|
48
|
-
One such failure has a specific name: dispatching a
|
|
49
|
-
`coding_provider_not_configured:
|
|
50
|
-
`
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
48
|
+
One such failure has a specific name: dispatching a coding run throws
|
|
49
|
+
`coding_provider_not_configured:codex` or
|
|
50
|
+
`coding_provider_not_configured:claude-code` when this deployment has no
|
|
51
|
+
worker images for that provider (`CODING_WORKER_IMAGE` for Codex;
|
|
52
|
+
`CODING_CLAUDE_WORKER_IMAGE` and `CODING_CLAUDE_TOOL_RUNNER_IMAGE` for Claude
|
|
53
|
+
Code). It means the images themselves aren't configured, not a missing
|
|
54
|
+
credential. See [Coding provider not configured](coding-provider-not-configured.md).
|
|
54
55
|
|
|
55
56
|
A missing or invalid API key behind a coding run's model-provider credential
|
|
56
57
|
(`CODING_OPENAI_CREDENTIAL_REF` for Codex, `CODING_ANTHROPIC_CREDENTIAL_REF`
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/vcs-github-not-configured
|
|
3
|
+
title: GitHub is not configured for coding agents
|
|
4
|
+
summary: A coding run used a GitHub repository, but the wardby server has no GitHub App credentials (GITHUB_APP_ID and GITHUB_APP_PRIVATE_KEY).
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, github, vcs, configuration, GITHUB_APP_ID, GITHUB_APP_PRIVATE_KEY]
|
|
7
|
+
appliesTo: ">=0.5.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# GitHub is not configured for coding agents
|
|
11
|
+
|
|
12
|
+
`vcs_github_not_configured` means a coding run's repository is a GitHub
|
|
13
|
+
repository, but the wardby server was started without GitHub App credentials,
|
|
14
|
+
so it cannot clone the repository or push the result. The run's failure
|
|
15
|
+
category is `preflight`. Nothing is pushed.
|
|
16
|
+
|
|
17
|
+
The server starts without the credentials so that it can serve local git
|
|
18
|
+
repositories (`local:/absolute/path`) on its own. When neither GitHub App
|
|
19
|
+
credentials nor `LOCAL_REPO_ROOTS` are set, the server logs a warning at
|
|
20
|
+
startup that names both options.
|
|
21
|
+
|
|
22
|
+
## What to do
|
|
23
|
+
|
|
24
|
+
Choose one:
|
|
25
|
+
|
|
26
|
+
1. **Use GitHub.** Install a GitHub App on the repository, then set
|
|
27
|
+
`GITHUB_APP_ID` and `GITHUB_APP_PRIVATE_KEY` on the wardby server and restart
|
|
28
|
+
it. See [Connect GitHub repositories](../github.md).
|
|
29
|
+
2. **Use a local repository.** If the code is in a git folder on the machine
|
|
30
|
+
that runs the wardby server, set `LOCAL_REPO_ROOTS` and point the agent's
|
|
31
|
+
`codingProfile.repository` at `local:/absolute/path`. See
|
|
32
|
+
[Local git repositories](../local-repositories.md).
|
|
33
|
+
|
|
34
|
+
Related: [Get started](../getting-started.md).
|