@wardby/cli 0.7.0 → 0.9.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 +5 -5
- package/README.md +6 -1
- package/deploy/local/docker-compose.quickstart-coding.yml +11 -0
- package/dist/claude-coding-worker/driver.d.ts +12 -0
- package/dist/claude-coding-worker/driver.js +29 -7
- package/dist/claude-coding-worker/main.js +5 -1
- package/dist/claude-coding-worker/sdk.js +17 -1
- package/dist/claude-plugin/command.d.ts +64 -0
- package/dist/claude-plugin/command.js +379 -0
- package/dist/cli-help.d.ts +1 -1
- package/dist/cli-help.js +2 -1
- package/dist/cli.js +71 -3
- package/dist/coding/code-host.d.ts +16 -0
- package/dist/coding/code-host.js +60 -0
- package/dist/coding/mcp-token.d.ts +12 -0
- package/dist/coding/mcp-token.js +26 -0
- package/dist/coding/protocol.js +2 -0
- package/dist/coding/redact.js +6 -1
- package/dist/coding/transcript/recorder.d.ts +5 -4
- package/dist/coding/transcript/recorder.js +3 -9
- package/dist/coding-worker/debug-trace.d.ts +3 -1
- package/dist/coding-worker/debug-trace.js +4 -2
- package/dist/coding-worker/driver.js +8 -1
- package/dist/coding-worker/main.js +5 -1
- package/dist/coding-worker/mcp-config.d.ts +27 -0
- package/dist/coding-worker/mcp-config.js +32 -0
- package/dist/coding-worker/sdk.d.ts +36 -0
- package/dist/coding-worker/sdk.js +28 -1
- package/dist/coding-worker/types.d.ts +4 -0
- package/dist/config/mcp-call-limit.d.ts +8 -0
- package/dist/config/mcp-call-limit.js +18 -0
- package/dist/config/mcp-servers.d.ts +8 -0
- package/dist/config/mcp-servers.js +12 -0
- package/dist/config/test-simulators.d.ts +10 -0
- package/dist/config/test-simulators.js +28 -0
- package/dist/config/tool-timeout.d.ts +1 -0
- package/dist/config/tool-timeout.js +18 -0
- package/dist/core/coding-mcp.d.ts +36 -0
- package/dist/core/coding-mcp.js +253 -0
- package/dist/core/coding-repository.d.ts +46 -0
- package/dist/core/coding-repository.js +92 -0
- package/dist/core/delegation-slots.d.ts +27 -0
- package/dist/core/delegation-slots.js +44 -0
- package/dist/core/dispatch.d.ts +6 -2
- package/dist/core/dispatch.js +39 -11
- package/dist/core/engine-native.d.ts +2 -0
- package/dist/core/engine-native.js +13 -0
- package/dist/core/error-code.js +2 -0
- package/dist/core/grants.d.ts +28 -3
- package/dist/core/grants.js +46 -4
- package/dist/core/host-events.js +7 -3
- package/dist/core/host-status.js +2 -2
- package/dist/core/issue-status.js +4 -3
- package/dist/core/listen-address.d.ts +10 -0
- package/dist/core/listen-address.js +14 -0
- package/dist/core/mark-ready.d.ts +1 -1
- package/dist/core/mark-ready.js +1 -1
- package/dist/core/mcp-client/client.d.ts +47 -0
- package/dist/core/mcp-client/client.js +141 -0
- package/dist/core/mcp-client/jsonrpc.d.ts +15 -0
- package/dist/core/mcp-client/jsonrpc.js +54 -0
- package/dist/core/mcp-client/results.d.ts +13 -0
- package/dist/core/mcp-client/results.js +42 -0
- package/dist/core/mcp-servers.d.ts +90 -0
- package/dist/core/mcp-servers.js +230 -0
- package/dist/core/mcp-tools.d.ts +108 -0
- package/dist/core/mcp-tools.js +287 -0
- package/dist/core/merge-order-check.js +38 -19
- package/dist/core/notification-dispatcher.js +2 -1
- package/dist/core/power-idle.d.ts +8 -2
- package/dist/core/power-idle.js +17 -3
- package/dist/core/power.d.ts +5 -0
- package/dist/core/power.js +5 -0
- package/dist/core/related-pull-requests.js +26 -10
- package/dist/core/retention-days.d.ts +5 -0
- package/dist/core/retention-days.js +14 -0
- package/dist/core/review-fix.js +2 -2
- package/dist/core/review-host-tools.js +3 -1
- package/dist/core/run-steps/config.d.ts +25 -0
- package/dist/core/run-steps/config.js +40 -0
- package/dist/core/run-steps/control-chars.d.ts +16 -0
- package/dist/core/run-steps/control-chars.js +26 -0
- package/dist/core/run-steps/detail.d.ts +32 -0
- package/dist/core/run-steps/detail.js +240 -0
- package/dist/core/run-steps/extract.d.ts +52 -0
- package/dist/core/run-steps/extract.js +467 -0
- package/dist/core/run-steps/ingress.d.ts +51 -0
- package/dist/core/run-steps/ingress.js +160 -0
- package/dist/core/run-steps/last-step.d.ts +15 -0
- package/dist/core/run-steps/last-step.js +35 -0
- package/dist/core/run-steps/native.d.ts +48 -0
- package/dist/core/run-steps/native.js +164 -0
- package/dist/core/run-steps/seen.d.ts +16 -0
- package/dist/core/run-steps/seen.js +35 -0
- package/dist/core/run-steps/summarize.d.ts +57 -0
- package/dist/core/run-steps/summarize.js +304 -0
- package/dist/core/run-steps/sweep.d.ts +21 -0
- package/dist/core/run-steps/sweep.js +41 -0
- package/dist/core/run-steps/types.d.ts +89 -0
- package/dist/core/run-steps/types.js +39 -0
- package/dist/core/run-steps/wire.d.ts +35 -0
- package/dist/core/run-steps/wire.js +47 -0
- package/dist/core/run-steps/writer.d.ts +49 -0
- package/dist/core/run-steps/writer.js +279 -0
- package/dist/core/runner.d.ts +70 -16
- package/dist/core/runner.js +296 -74
- package/dist/core/secret-broker-config.d.ts +2 -0
- package/dist/core/secret-broker-config.js +1 -1
- package/dist/core/secret-guard.d.ts +5 -2
- package/dist/core/secret-guard.js +22 -7
- package/dist/core/secrets.d.ts +11 -1
- package/dist/core/secrets.js +27 -1
- package/dist/core/serializable-retry.d.ts +18 -0
- package/dist/core/serializable-retry.js +43 -0
- package/dist/core/tool-admin.d.ts +5 -1
- package/dist/core/tool-admin.js +7 -2
- package/dist/core/tool-names.d.ts +13 -0
- package/dist/core/tool-names.js +20 -0
- package/dist/core/webhooks.d.ts +4 -0
- package/dist/core/webhooks.js +68 -49
- package/dist/core/workflow-run-events.js +2 -1
- package/dist/generated/prisma/browser.d.ts +39 -0
- package/dist/generated/prisma/client.d.ts +39 -0
- package/dist/generated/prisma/commonInputTypes.d.ts +80 -50
- package/dist/generated/prisma/enums.d.ts +6 -0
- package/dist/generated/prisma/enums.js +5 -0
- package/dist/generated/prisma/internal/class.d.ts +77 -0
- package/dist/generated/prisma/internal/class.js +4 -4
- package/dist/generated/prisma/internal/prismaNamespace.d.ts +632 -1
- package/dist/generated/prisma/internal/prismaNamespace.js +94 -3
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +98 -0
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +94 -3
- package/dist/generated/prisma/models/Agent.d.ts +372 -1
- package/dist/generated/prisma/models/AgentMcpServer.d.ts +1412 -0
- package/dist/generated/prisma/models/AgentMcpServer.js +1 -0
- package/dist/generated/prisma/models/AgentRepository.d.ts +40 -1
- package/dist/generated/prisma/models/AuthUser.d.ts +1 -1
- package/dist/generated/prisma/models/CodingAgentProfile.d.ts +0 -7
- package/dist/generated/prisma/models/CodingProxySession.d.ts +159 -2
- package/dist/generated/prisma/models/CodingRun.d.ts +76 -1
- package/dist/generated/prisma/models/HostProvider.d.ts +2176 -0
- package/dist/generated/prisma/models/HostProvider.js +1 -0
- package/dist/generated/prisma/models/HostProviderCredential.d.ts +1285 -0
- package/dist/generated/prisma/models/HostProviderCredential.js +1 -0
- package/dist/generated/prisma/models/HostProviderOperation.d.ts +1470 -0
- package/dist/generated/prisma/models/HostProviderOperation.js +1 -0
- package/dist/generated/prisma/models/HostProviderTrustedAccount.d.ts +1145 -0
- package/dist/generated/prisma/models/HostProviderTrustedAccount.js +1 -0
- package/dist/generated/prisma/models/McpServer.d.ts +1500 -0
- package/dist/generated/prisma/models/McpServer.js +1 -0
- package/dist/generated/prisma/models/NativeGatewayCall.d.ts +39 -1
- package/dist/generated/prisma/models/Principal.d.ts +167 -0
- package/dist/generated/prisma/models/ResourceGrant.d.ts +1 -1
- package/dist/generated/prisma/models/Run.d.ts +503 -1
- package/dist/generated/prisma/models/RunStep.d.ts +1453 -0
- package/dist/generated/prisma/models/RunStep.js +1 -0
- package/dist/generated/prisma/models/Secret.d.ts +387 -0
- package/dist/generated/prisma/models/Tool.d.ts +223 -1
- package/dist/generated/prisma/models.d.ts +7 -0
- package/dist/help/search.js +12 -3
- package/dist/help-index.json +812 -52
- package/dist/import/create.js +16 -1
- package/dist/import/neutral-schema.d.ts +1 -0
- package/dist/import/neutral-schema.js +2 -0
- package/dist/mcp/auth/access.d.ts +1 -0
- package/dist/mcp/auth/grants-cli.d.ts +6 -4
- package/dist/mcp/auth/grants-cli.js +42 -3
- package/dist/mcp/auth/resource-server.d.ts +3 -1
- package/dist/mcp/auth/resource-server.js +17 -2
- package/dist/mcp/context.d.ts +6 -0
- package/dist/mcp/index.js +21 -0
- package/dist/mcp/tools/agents.js +135 -20
- package/dist/mcp/tools/grants.js +66 -28
- package/dist/mcp/tools/host-providers.d.ts +2 -0
- package/dist/mcp/tools/host-providers.js +215 -0
- package/dist/mcp/tools/mcp-servers.d.ts +26 -0
- package/dist/mcp/tools/mcp-servers.js +481 -0
- package/dist/mcp/tools/power.js +2 -2
- package/dist/mcp/tools/repositories.js +50 -10
- package/dist/mcp/tools/run-access.d.ts +7 -0
- package/dist/mcp/tools/run-access.js +14 -0
- package/dist/mcp/tools/run-steps.d.ts +16 -0
- package/dist/mcp/tools/run-steps.js +85 -0
- package/dist/mcp/tools/runs.js +186 -18
- package/dist/mcp/tools/secret-elicitation.d.ts +2 -0
- package/dist/mcp/tools/secret-elicitation.js +25 -2
- package/dist/mcp/tools/secrets.js +38 -4
- package/dist/mcp/tools/tools.d.ts +6 -4
- package/dist/mcp/tools/tools.js +40 -8
- package/dist/mcp/tools/trigger.js +28 -6
- package/dist/mcp/transport/http-limits.d.ts +2 -0
- package/dist/mcp/transport/http-limits.js +6 -2
- package/dist/mcp/webhooks/ingress.js +10 -0
- package/dist/native-worker/gateway-server.d.ts +18 -1
- package/dist/native-worker/gateway-server.js +38 -9
- package/dist/native-worker/gateway.d.ts +5 -0
- package/dist/native-worker/gateway.js +13 -1
- package/dist/native-worker/http-server.d.ts +6 -4
- package/dist/native-worker/http-server.js +53 -8
- package/dist/native-worker/ledger.d.ts +6 -2
- package/dist/native-worker/ledger.js +5 -4
- package/dist/native-worker/protocol.d.ts +1 -0
- package/dist/native-worker/protocol.js +4 -1
- package/dist/providers/coding-proxy/capability-hash.d.ts +2 -0
- package/dist/providers/coding-proxy/capability-hash.js +5 -0
- package/dist/providers/coding-proxy/mcp-route.d.ts +34 -0
- package/dist/providers/coding-proxy/mcp-route.js +166 -0
- package/dist/providers/coding-proxy/memory-ledger.d.ts +2 -0
- package/dist/providers/coding-proxy/memory-ledger.js +16 -0
- package/dist/providers/coding-proxy/prisma-ledger.d.ts +1 -0
- package/dist/providers/coding-proxy/prisma-ledger.js +36 -2
- package/dist/providers/coding-proxy/proxy.d.ts +33 -1
- package/dist/providers/coding-proxy/proxy.js +266 -75
- package/dist/providers/coding-proxy/run-step-forwarder.d.ts +42 -0
- package/dist/providers/coding-proxy/run-step-forwarder.js +206 -0
- package/dist/providers/coding-proxy/runtime.d.ts +13 -0
- package/dist/providers/coding-proxy/runtime.js +87 -4
- package/dist/providers/coding-proxy/server.d.ts +3 -0
- package/dist/providers/coding-proxy/server.js +10 -0
- package/dist/providers/coding-proxy/types.d.ts +18 -0
- package/dist/providers/engine/types.d.ts +26 -0
- package/dist/providers/executor/composition.js +5 -0
- package/dist/providers/executor/container.d.ts +47 -1
- package/dist/providers/executor/container.js +84 -8
- package/dist/providers/host-tools/invoke.d.ts +37 -0
- package/dist/providers/host-tools/invoke.js +117 -0
- package/dist/providers/host-tools/operations.d.ts +65 -0
- package/dist/providers/host-tools/operations.js +149 -0
- package/dist/providers/host-tools/registry.d.ts +79 -0
- package/dist/providers/host-tools/registry.js +362 -0
- package/dist/providers/host-tools/request-guard.d.ts +17 -0
- package/dist/providers/host-tools/request-guard.js +99 -0
- package/dist/providers/host-tools/self-test.d.ts +64 -0
- package/dist/providers/host-tools/self-test.js +142 -0
- package/dist/providers/jobs/docker-isolation.d.ts +2 -2
- package/dist/providers/jobs/docker-isolation.js +30 -8
- package/dist/providers/jobs/docker.d.ts +8 -0
- package/dist/providers/jobs/docker.js +33 -9
- package/dist/providers/jobs/kubernetes-isolation.d.ts +3 -1
- package/dist/providers/jobs/kubernetes-isolation.js +15 -2
- package/dist/providers/jobs/kubernetes.d.ts +13 -0
- package/dist/providers/jobs/kubernetes.js +28 -5
- package/dist/providers/jobs/types.d.ts +6 -0
- package/dist/providers/review-host/types.d.ts +6 -4
- package/dist/providers/review-host/types.js +1 -1
- package/dist/providers/vcs/git.d.ts +6 -2
- package/dist/providers/vcs/git.js +15 -4
- package/dist/providers/vcs/github.d.ts +2 -71
- package/dist/providers/vcs/github.js +8 -11
- package/dist/providers/vcs/index.d.ts +1 -1
- package/dist/providers/vcs/index.js +1 -1
- package/dist/providers/vcs/remote.d.ts +4 -0
- package/dist/providers/vcs/remote.js +7 -1
- package/dist/providers/vcs/routing.d.ts +12 -6
- package/dist/providers/vcs/routing.js +21 -6
- package/dist/providers/vcs/types.d.ts +71 -3
- package/dist/quickstart/index.d.ts +5 -0
- package/dist/quickstart/index.js +21 -0
- package/dist/quickstart-images.json +1 -1
- package/dist/sandbox/eval-core.d.ts +12 -2
- package/dist/sandbox/eval-core.js +20 -4
- package/dist/sandbox/host-functions.d.ts +4 -0
- package/dist/sandbox/host-functions.js +7 -2
- package/dist/sandbox/limits.d.ts +4 -1
- package/dist/sandbox/limits.js +4 -1
- package/dist/sandbox/run-in-sandbox.d.ts +6 -0
- package/dist/sandbox/run-in-sandbox.js +14 -2
- package/dist/sandbox/safe-fetch.d.ts +2 -0
- package/dist/sandbox/safe-fetch.js +1 -1
- package/dist/sandbox/secret-broker.d.ts +1 -0
- package/dist/sandbox/secret-broker.js +1 -1
- package/dist/sandbox/tool-timeout.d.ts +32 -0
- package/dist/sandbox/tool-timeout.js +52 -0
- package/dist/sandbox/user-tool.d.ts +8 -1
- package/dist/sandbox/user-tool.js +9 -3
- package/dist/serve.js +26 -18
- package/dist/viewer/api-schema.d.ts +66 -0
- package/dist/viewer/api-schema.js +31 -0
- package/dist/viewer/graph.js +2 -1
- package/dist/viewer/openapi.js +2 -1
- package/dist/viewer/run-detail.d.ts +2 -0
- package/dist/viewer/run-detail.js +26 -1
- package/dist/wardby-bin.js +5 -0
- package/docs/README.md +11 -1
- package/docs/agent-recipes.md +37 -4
- package/docs/architecture-runtime.md +1 -1
- package/docs/claude-code-plugin.md +208 -0
- package/docs/code-review-agents.md +6 -0
- package/docs/coding-agent-setup.md +94 -1
- package/docs/coding-worker-byo-images.md +4 -2
- package/docs/coding-worker-isolation.md +94 -7
- package/docs/debugging-agent-runs.md +354 -0
- package/docs/getting-started-gke.md +33 -11
- package/docs/getting-started-identity-provider.md +43 -37
- package/docs/getting-started.md +8 -0
- package/docs/host-providers.md +294 -0
- package/docs/mcp-servers.md +263 -0
- package/docs/native-sandbox.md +31 -9
- package/docs/security-deployment.md +161 -31
- package/docs/tool-secrets.md +3 -0
- package/docs/viewer-api.md +27 -12
- package/docs/viewer-api.openapi.yml +78 -2
- package/help/admin-viewer.md +5 -0
- package/help/agent-recipes.md +33 -2
- package/help/brokered-secrets.md +3 -0
- package/help/build-claude-code-image.md +1 -1
- package/help/claude-code-run-pane.md +63 -0
- package/help/deploy-gke.md +5 -0
- package/help/errors/coding-mcp-gateway-unavailable.md +46 -0
- package/help/errors/coding-mcp-pins-unavailable.md +35 -0
- package/help/errors/database-auth-invalid.md +1 -1
- package/help/errors/host-provider-error.md +40 -0
- package/help/errors/host-tool-failed.md +36 -0
- package/help/errors/mcp-call-limit.md +22 -0
- package/help/errors/mcp-call-timeout.md +22 -0
- package/help/errors/mcp-server-auth-failed.md +22 -0
- package/help/errors/mcp-server-credentials-unavailable.md +45 -0
- package/help/errors/mcp-server-error.md +28 -0
- package/help/errors/mcp-server-unreachable.md +22 -0
- package/help/errors/mcp-servers-off.md +21 -0
- package/help/errors/mcp-tool-not-allowed.md +26 -0
- package/help/errors/mcp-tool-removed.md +22 -0
- package/help/errors/mcp-unavailable.md +25 -0
- package/help/errors/native-sandbox-capacity.md +1 -1
- package/help/errors/native-sandbox-deadline-exceeded.md +1 -1
- package/help/errors/native-sandbox-docker-failed.md +1 -1
- package/help/errors/native-sandbox-gateway-error.md +1 -1
- package/help/errors/native-sandbox-gateway-unavailable.md +1 -1
- package/help/errors/native-sandbox-image-not-pinned.md +1 -1
- package/help/errors/native-sandbox-isolation-mismatch.md +1 -1
- package/help/errors/native-sandbox-network-unenforced.md +1 -1
- package/help/errors/native-sandbox-requires-catalog.md +1 -1
- package/help/errors/native-sandbox-unavailable.md +1 -1
- package/help/errors/native-sandbox-warm-delivery-failed.md +1 -1
- package/help/errors/native-sandbox-worker-exited.md +1 -1
- package/help/errors/native-sandbox-worker-lost.md +1 -1
- package/help/errors/native-sandbox-worker-unready.md +1 -1
- package/help/errors/repository-not-listed.md +36 -0
- package/help/errors/repository-required.md +36 -0
- package/help/errors/tool-timeout.md +38 -0
- package/help/host-providers.md +40 -0
- package/help/identity-and-access.md +4 -1
- package/help/low-power-mode.md +19 -8
- package/help/mcp-servers.md +73 -0
- package/help/mcp.md +9 -2
- package/help/native-capabilities.md +27 -1
- package/help/native-sandbox.md +1 -1
- package/help/operating-agents.md +16 -0
- package/help/related-pull-requests.md +7 -3
- package/help/repo-instructions-and-skills.md +3 -1
- package/help/resume-runs-locally.md +7 -0
- package/help/run-steps.md +140 -0
- package/help/stop-run.md +1 -1
- package/help/troubleshooting/coding-workers.md +9 -1
- package/help/troubleshooting/debugging-agent-runs.md +29 -0
- package/package.json +2 -1
- package/prisma/migrations/20261102000000_host_providers/migration.sql +56 -0
- package/prisma/migrations/20261104000000_coding_agent_repository_list/migration.sql +5 -0
- package/prisma/migrations/20261106000000_tool_timeout/migration.sql +4 -0
- package/prisma/migrations/20261107000000_mcp_servers/migration.sql +33 -0
- package/prisma/migrations/20261108000000_coding_mcp/migration.sql +5 -0
- package/prisma/migrations/20261109000000_task_run_index/migration.sql +3 -0
- package/prisma/migrations/20261110000000_run_steps/migration.sql +26 -0
- package/prisma/migrations/20261111000000_run_steps_viewer_notify/migration.sql +59 -0
- package/prisma/migrations/20261112000000_run_steps_detail/migration.sql +9 -0
- package/prisma/schema.prisma +211 -14
- package/scripts/git-askpass.sh +1 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/repository-required
|
|
3
|
+
title: Repository required (repository_required)
|
|
4
|
+
summary: A coding agent with several repositories was asked to work without being told which one; pass repository, or use continuePriorRun.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [error, coding-agents, repository_required, repository, link_repository, delegation]
|
|
7
|
+
appliesTo: ">=0.8.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Repository required
|
|
11
|
+
|
|
12
|
+
`repository_required` means a coding agent has more than its default repository
|
|
13
|
+
(it has write links without triggers added with `link_repository`), and the
|
|
14
|
+
request did not say which one to work in. Nothing was started.
|
|
15
|
+
|
|
16
|
+
A `delegate_to_<name>` call to such a sub-agent must name a repository. The
|
|
17
|
+
exception is a follow-up: with `continuePriorRun`, the run works in the
|
|
18
|
+
repository of the run it continues. The message lists the repositories on the
|
|
19
|
+
agent's list.
|
|
20
|
+
|
|
21
|
+
## What to do
|
|
22
|
+
|
|
23
|
+
- Pass `repository` on the call, using one of the listed repositories, for
|
|
24
|
+
example `your-org/your-repo`.
|
|
25
|
+
- Tell the lead agent in its system prompt which repository each kind of
|
|
26
|
+
change belongs to.
|
|
27
|
+
- If the agent should only work in one repository, remove the extra ones with
|
|
28
|
+
`unlink_repository`.
|
|
29
|
+
|
|
30
|
+
On `trigger_agent` and webhooks, leaving `repository` out uses the default
|
|
31
|
+
repository (`codingProfile.repository`) and is not an error. Webhooks use the
|
|
32
|
+
body field `wardbyRepository`.
|
|
33
|
+
|
|
34
|
+
See [Repository not on the agent's list](repository-not-listed.md),
|
|
35
|
+
[Agent recipes](../agent-recipes.md) and the operator guide
|
|
36
|
+
`docs/coding-agent-setup.md`, section "A coding agent's repositories".
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: errors/tool-timeout
|
|
3
|
+
title: A tool call ran out of time (timeout, fetch_cancelled_or_timeout)
|
|
4
|
+
summary: A sandboxed tool call hit its time limit; raise the tool's timeoutMs, up to the server's WARDBY_TOOL_MAX_TIMEOUT_MS.
|
|
5
|
+
audience: developer
|
|
6
|
+
tags: [timeout, timeoutMs, wall-time, fetch_cancelled_or_timeout, sleep_limit, WARDBY_TOOL_MAX_TIMEOUT_MS]
|
|
7
|
+
appliesTo: ">=0.8.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# A tool call ran out of time
|
|
11
|
+
|
|
12
|
+
## What happened
|
|
13
|
+
|
|
14
|
+
A tool's result was `{"error":"timeout","message":"Exceeded the 10000ms wall-time limit. ..."}`.
|
|
15
|
+
The call ran longer than the tool's time limit, so it was stopped. The run goes on: only this call
|
|
16
|
+
failed. The message names the limit. Without `timeoutMs` a tool has 10 seconds.
|
|
17
|
+
|
|
18
|
+
Related results:
|
|
19
|
+
|
|
20
|
+
- `fetch_cancelled_or_timeout` from inside the tool: a `fetch` was aborted because the call ran
|
|
21
|
+
out of time or the run stopped.
|
|
22
|
+
- `sleep_limit`: the tool asked to wait longer than its own limit.
|
|
23
|
+
- `{"error":"cancelled"}`: the run was stopped while the call was running.
|
|
24
|
+
|
|
25
|
+
## What to do
|
|
26
|
+
|
|
27
|
+
1. Check how long the API the tool calls really takes.
|
|
28
|
+
2. Give the tool a longer limit with `update_tool` (`timeoutMs`, in milliseconds), or
|
|
29
|
+
`wardby tool update <tool> --timeout-ms <ms>`.
|
|
30
|
+
3. Test it with `dry_run_tool` and the same `timeoutMs`.
|
|
31
|
+
|
|
32
|
+
`timeoutMs` can't exceed the server's `WARDBY_TOOL_MAX_TIMEOUT_MS` (default `300000`); a larger
|
|
33
|
+
value is refused with an error naming the ceiling. If you need more, ask the operator to raise it.
|
|
34
|
+
If the operator lowers the ceiling, a tool with a larger `timeoutMs` runs with the ceiling.
|
|
35
|
+
|
|
36
|
+
Runs that started before the change keep the limit they loaded; the next run uses the new one.
|
|
37
|
+
|
|
38
|
+
See [Use native agents, tools, and data](../native-capabilities.md#tool-time-limits).
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: host-providers
|
|
3
|
+
title: Add a code host with your own tools (host providers)
|
|
4
|
+
summary: Register a code host implemented by custom tools, approve changes to them, and test them with read-only calls. Agents can't use a provider yet.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [host provider, register_host_provider, approve_host_provider_tools, hosts:admin, host-manager]
|
|
7
|
+
appliesTo: >=0.8.0
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Host providers
|
|
11
|
+
|
|
12
|
+
A host provider adds a code host using your own custom tools. This release lets you register
|
|
13
|
+
a provider, approve its tools and test them. Agents can't use a registered provider yet.
|
|
14
|
+
|
|
15
|
+
You need the `hosts:admin` scope and a role that grants it (`admin` or `host-manager`). See
|
|
16
|
+
[Identity and access](identity-and-access.md).
|
|
17
|
+
|
|
18
|
+
1. Write one tool per operation with `create_tool`.
|
|
19
|
+
2. Broker each credential with `set_secret_broker`, allowing the API hosts and the git host. The
|
|
20
|
+
permission credential needs only the API hosts ([Brokered secrets](brokered-secrets.md)).
|
|
21
|
+
3. Call `register_host_provider`. No restart is needed today, because agents can't use a provider
|
|
22
|
+
yet; a new provider will need one once they can. A refusal has a
|
|
23
|
+
[`host_provider_*` code](errors/host-provider-error.md).
|
|
24
|
+
4. Call `test_host_provider` to check each read-only tool. Failures have
|
|
25
|
+
[fixed codes](errors/host-tool-failed.md).
|
|
26
|
+
|
|
27
|
+
`update_tool` changes nothing until you call `approve_host_provider_tools`, a new `timeoutMs`
|
|
28
|
+
included. See which tools have changes with `get_host_provider`.
|
|
29
|
+
|
|
30
|
+
A bound tool reaches only the provider's API hosts, inside one repository's path, and Wardby
|
|
31
|
+
follows no redirects; the tool must fetch the `Location` itself. Any host manager can read and re-register any
|
|
32
|
+
provider.
|
|
33
|
+
|
|
34
|
+
Replacing a secret a provider uses, or changing its broker config, needs `hosts:admin` as well as
|
|
35
|
+
`secrets:write`. A webhook secret stays at 16 characters or more.
|
|
36
|
+
|
|
37
|
+
Keep provider credentials unattached: an agent's own tools can use an attached one without the
|
|
38
|
+
provider's path guard.
|
|
39
|
+
|
|
40
|
+
See [docs/host-providers.md](../docs/host-providers.md) for the full guide.
|
|
@@ -21,7 +21,7 @@ audience, and the granted Wardby scopes in `scope` or `scp`.
|
|
|
21
21
|
|
|
22
22
|
Scopes authorize normal operations such as managing agents, runs, tools,
|
|
23
23
|
datastores, secrets, webhooks, budgets, packages, services, memory, and
|
|
24
|
-
models.
|
|
24
|
+
models. Seven sensitive permissions have an additional role requirement:
|
|
25
25
|
|
|
26
26
|
- `agents:admin` requires the Wardby `admin` role.
|
|
27
27
|
- `packages:approve` requires the `admin` or `package-approver` role.
|
|
@@ -31,6 +31,9 @@ models. Six sensitive permissions have an additional role requirement:
|
|
|
31
31
|
- `models:admin` requires the `admin` or `model-manager` role. It adds,
|
|
32
32
|
overrides, disables, and resets model catalog entries; see
|
|
33
33
|
[Models and pricing](models.md).
|
|
34
|
+
- `hosts:admin` requires the `admin` or `host-manager` role. It registers host
|
|
35
|
+
providers, approves their tools and, with `secrets:write`, replaces their secrets; see
|
|
36
|
+
[Host providers](../docs/host-providers.md).
|
|
34
37
|
- `power:manage` requires the `admin` role. It reads low-power state and
|
|
35
38
|
sleeps the coding proxy and native gateway now (`power_status`,
|
|
36
39
|
`power_sleep`); see
|
package/help/low-power-mode.md
CHANGED
|
@@ -3,7 +3,7 @@ id: low-power-mode
|
|
|
3
3
|
title: Low power mode on GKE
|
|
4
4
|
summary: Low power mode: scale the coding proxy and native gateway to zero when idle to cut the cost of a lightly used GKE deployment, and what changes when they wake.
|
|
5
5
|
audience: operator
|
|
6
|
-
tags: [gke, cost, low-power, scale-to-zero, kubernetes, autoscaling, idle, power_sleep, power_status, sleep now, power:manage]
|
|
6
|
+
tags: [gke, cost, low-power, scale-to-zero, kubernetes, autoscaling, idle, power_sleep, power_status, sleep now, power:manage, mcp, coding-agents]
|
|
7
7
|
appliesTo: ">=0.6.0"
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -38,14 +38,20 @@ only when `WARDBY_LOW_POWER=1`.
|
|
|
38
38
|
- **Sleep.** Every minute the scheduler leader scales the coding proxy
|
|
39
39
|
(`wardby-coding-proxy`) or native gateway (`wardby-native-gateway`) to 0 when
|
|
40
40
|
nothing is pending or running for it and nothing finished within the idle
|
|
41
|
-
window.
|
|
41
|
+
window. For the gateway that means sandbox runs and coding runs with MCP
|
|
42
|
+
tools, and it also needs no active session. Either target sleeps only
|
|
42
43
|
once at least one idle window has passed since it was last woken (annotation
|
|
43
44
|
`wardby.io/power-woke-at`) and since the control plane started, whichever is
|
|
44
45
|
later. The check repeats just before scaling. Log: `power: proxy slept (idle 30m)`.
|
|
45
46
|
- **Wake.** A coding run scales the proxy to 1 and waits for a ready endpoint;
|
|
46
|
-
a sandbox run does the same for the gateway.
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
a sandbox run does the same for the gateway. A coding run with MCP tools
|
|
48
|
+
wakes both at once, because its MCP calls go through the gateway; if the
|
|
49
|
+
gateway does not wake it fails before launch with
|
|
50
|
+
[`coding_failure_mcp_gateway_unavailable`](errors/coding-mcp-gateway-unavailable.md).
|
|
51
|
+
The wait is at least 5 minutes.
|
|
52
|
+
A `KUBERNETES_READY_TIMEOUT_MS` (the proxy, and the gateway wake of a coding
|
|
53
|
+
run) or `NATIVE_SANDBOX_READY_TIMEOUT_MS` (the gateway wake of a sandbox run)
|
|
54
|
+
above that, set on the control-plane Deployment, raises it. Expect
|
|
49
55
|
about 1 to 2 minutes extra on a cold node. Log: `power: proxy woke`. A
|
|
50
56
|
sandbox run woken this way may then wait for a gVisor node for its worker
|
|
51
57
|
pod, so its first model call can come several minutes after it started. From
|
|
@@ -71,15 +77,17 @@ Pass `target: "proxy"` or `target: "gateway"` to sleep one; omit it for both.
|
|
|
71
77
|
|
|
72
78
|
- It scales the target to 0 at once, ignoring the idle window and the woke-at
|
|
73
79
|
grace.
|
|
74
|
-
- It never stops a run. A target with a pending or running run
|
|
75
|
-
gateway
|
|
80
|
+
- It never stops a run. A target with a pending or running run (for the
|
|
81
|
+
gateway, a sandbox run or a coding run with MCP tools), or for the gateway an
|
|
82
|
+
active gateway session, stays up, and its run ids are returned:
|
|
76
83
|
`{ "slept": ["proxy"], "blocked": [{ "target": "gateway", "runIds": ["..."] }] }`.
|
|
77
84
|
Recently finished runs do not block it.
|
|
78
85
|
- The next run wakes the target as usual.
|
|
79
86
|
- Each call is logged with `event: "power.sleep"` and the caller's principal.
|
|
80
87
|
|
|
81
88
|
`power_status` returns, for each target, `replicas`, `ready`, `wokeAt` and
|
|
82
|
-
`blockers` (the run ids keeping it busy
|
|
89
|
+
`blockers` (the run ids keeping it busy; for the gateway these include
|
|
90
|
+
pending or running coding runs with MCP tools).
|
|
83
91
|
|
|
84
92
|
Both tools need the `power:manage` scope, which only the `admin` role grants
|
|
85
93
|
(see [Identity and access](identity-and-access.md)). With the mode off,
|
|
@@ -111,6 +119,9 @@ full table.
|
|
|
111
119
|
|
|
112
120
|
- [`low_power_wake_timeout`](errors/low-power-wake-timeout.md): the target did
|
|
113
121
|
not become ready in time, or its Deployment does not exist.
|
|
122
|
+
- [`coding_failure_mcp_gateway_unavailable`](errors/coding-mcp-gateway-unavailable.md):
|
|
123
|
+
a coding run with MCP tools failed before launch because the gateway did not
|
|
124
|
+
wake.
|
|
114
125
|
- `native_sandbox_launch_abandoned` (0.7.0 and later): a sandbox run was
|
|
115
126
|
stopped while the gateway woke, so no worker pod was made.
|
|
116
127
|
- [`low_power_disabled`](errors/low-power-disabled.md): `power_sleep` was
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: mcp-servers
|
|
3
|
+
title: Remote MCP server tools for native and coding agents
|
|
4
|
+
summary: Register a remote MCP server, then attach an allowlist of its tools to a native, Claude Code or Codex agent; credentials stay in brokered secrets.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [mcp, mcp server, coding-agent, codex, register_mcp_server, attach_mcp_server, readOnlyHint, WARDBY_MCP_SERVERS]
|
|
7
|
+
appliesTo: ">=0.8.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Remote MCP server tools for native and coding agents
|
|
11
|
+
|
|
12
|
+
A native, Claude Code or Codex agent can call tools from a remote MCP server (Streamable HTTP, HTTPS only).
|
|
13
|
+
|
|
14
|
+
1. Create a [brokered secret](brokered-secrets.md) for the server's host, for example
|
|
15
|
+
`Authorization: Bearer {value}`.
|
|
16
|
+
2. `register_mcp_server` with a `name`, the `url` (`https://mcp.example.com/mcp`) and
|
|
17
|
+
`secretNames`. Wardby saves the server's tool list.
|
|
18
|
+
3. `attach_mcp_server` with the agent, the server and `allowedTools` (exact names, at least one).
|
|
19
|
+
The agent sees each as `<server name>__<tool name>`.
|
|
20
|
+
4. After the server changes its tools, `refresh_mcp_server` applies the new list at once. Allowed
|
|
21
|
+
tools the server dropped show as `missingTools` in `get_agent`.
|
|
22
|
+
|
|
23
|
+
Each call has `callTimeoutMs` (default `30000`, at most `WARDBY_TOOL_MAX_TIMEOUT_MS`, and never
|
|
24
|
+
past the run's deadline). Results are untrusted input; the allowlist is the control. stdio servers
|
|
25
|
+
and OAuth are not supported.
|
|
26
|
+
|
|
27
|
+
`WARDBY_MCP_SERVERS` is `owners` (default), `admins` (registering needs `hosts:admin`) or `off`
|
|
28
|
+
(only `detach_mcp_server` and `delete_mcp_server` still work, for cleanup).
|
|
29
|
+
|
|
30
|
+
Each call opens a fresh MCP session, so a server that keeps state between calls in one session
|
|
31
|
+
won't see it. Arguments that aren't a JSON object return `invalid_arguments`.
|
|
32
|
+
|
|
33
|
+
## Coding agents
|
|
34
|
+
|
|
35
|
+
`attach_mcp_server` also takes a Claude Code or Codex agent. Its run reaches the tools only through
|
|
36
|
+
the coding proxy and the native gateway; the worker never sees the server's URL or secrets.
|
|
37
|
+
|
|
38
|
+
- Claude Code agents see each tool as `mcp__wardby_mcp__<server name>__<tool name>` and may use any
|
|
39
|
+
allowed tool.
|
|
40
|
+
- Codex agents may use only tools the server marks `readOnlyHint: true`. Wardby checks this when
|
|
41
|
+
you attach, when a run loads and on every call. Repository code in a Codex run can read the run's
|
|
42
|
+
MCP token, so a Codex agent must not be given tools that change things. `readOnlyHint` is the
|
|
43
|
+
server's claim, which Wardby can't verify, so the allowlist stays your control.
|
|
44
|
+
- A run may make `WARDBY_MCP_MAX_CALLS_PER_RUN` calls (default `100`, failed calls count); more are
|
|
45
|
+
refused with [`mcp_call_limit`](errors/mcp-call-limit.md).
|
|
46
|
+
- The proxy needs `WARDBY_MCP_GATEWAY_URL`. Without it coding agents get no MCP tools
|
|
47
|
+
([`mcp_unavailable`](errors/mcp-unavailable.md)).
|
|
48
|
+
- MCP for coding agents needs this release's Claude worker image and a new Codex driver image.
|
|
49
|
+
Older images get no MCP tools, and runs don't fail.
|
|
50
|
+
- A repository's MCP configuration is still never loaded.
|
|
51
|
+
- Codex models that use tool search load MCP tools on demand. They need this release's coding
|
|
52
|
+
proxy; an older one refuses their requests with `openai_tool_not_allowed:tool_search`.
|
|
53
|
+
- Switching an agent to Codex with `update_agent` keeps its attachments, but tools not marked
|
|
54
|
+
read-only won't reach Codex runs; the result's `warnings` names them.
|
|
55
|
+
- The proxy gives up on a coding run's MCP call after 5 minutes, whatever
|
|
56
|
+
`WARDBY_TOOL_MAX_TIMEOUT_MS` says ([`mcp_unavailable`](errors/mcp-unavailable.md)).
|
|
57
|
+
|
|
58
|
+
Share a server with `grant_access` (`resourceType: "mcp_server"`; needs the `agents:write` scope,
|
|
59
|
+
registering needs `tools:write`). `use` lets the grantee attach it, and its tools then run with your
|
|
60
|
+
secrets. Revoking the grant, or lowering it to `read`, detaches the server from the grantee's agents
|
|
61
|
+
at once, and their runs' next call is refused with `mcp_tool_not_allowed`.
|
|
62
|
+
|
|
63
|
+
Errors a call can return: [`mcp_server_unreachable`](errors/mcp-server-unreachable.md),
|
|
64
|
+
[`mcp_server_auth_failed`](errors/mcp-server-auth-failed.md),
|
|
65
|
+
[`mcp_server_credentials_unavailable`](errors/mcp-server-credentials-unavailable.md),
|
|
66
|
+
[`mcp_server_error`](errors/mcp-server-error.md),
|
|
67
|
+
[`mcp_tool_not_allowed`](errors/mcp-tool-not-allowed.md),
|
|
68
|
+
[`mcp_tool_removed`](errors/mcp-tool-removed.md),
|
|
69
|
+
[`mcp_call_timeout`](errors/mcp-call-timeout.md),
|
|
70
|
+
[`mcp_servers_off`](errors/mcp-servers-off.md), and for coding agents
|
|
71
|
+
[`mcp_call_limit`](errors/mcp-call-limit.md) and [`mcp_unavailable`](errors/mcp-unavailable.md).
|
|
72
|
+
|
|
73
|
+
Full guide: [Remote MCP servers](../docs/mcp-servers.md).
|
package/help/mcp.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: mcp-access
|
|
3
|
-
title: Connect
|
|
3
|
+
title: Connect a client to Wardby
|
|
4
4
|
summary: Use Wardby's local stdio or protected HTTP MCP transport safely.
|
|
5
5
|
audience: developer
|
|
6
6
|
tags: [mcp, oauth, codex, claude-code]
|
|
7
7
|
appliesTo: >=0.2.1
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
# Connect
|
|
10
|
+
# Connect a client to Wardby
|
|
11
11
|
|
|
12
12
|
For local use, `wardby quickstart` can register the local stdio MCP server with
|
|
13
13
|
Codex or Claude Code. Local stdio trusts the local operator.
|
|
@@ -28,3 +28,10 @@ offline catalog as `wardby help`; they expose no instance data or credentials.
|
|
|
28
28
|
|
|
29
29
|
See [`docs/getting-started-identity-provider.md`](../docs/getting-started-identity-provider.md)
|
|
30
30
|
for the supported self-hosted and delegated identity-provider setup.
|
|
31
|
+
|
|
32
|
+
From Wardby 0.8.0, Claude Code can show your runs in a pane beside the chat
|
|
33
|
+
through the `wardby-runs` plugin: run `wardby claude-plugin install`, then
|
|
34
|
+
`/wardby-runs`. Search help for "claude code plugin" (article
|
|
35
|
+
`claude-code-run-pane`, Wardby 0.8.0 and later).
|
|
36
|
+
|
|
37
|
+
To follow what a run is doing, call `get_run_steps` (article `run-steps`).
|
|
@@ -3,7 +3,7 @@ id: native-capabilities
|
|
|
3
3
|
title: Use native agents, tools, and data
|
|
4
4
|
summary: Attach scoped tools, secrets, datastores, memory, schedules, and sub-agents to a native Wardby agent.
|
|
5
5
|
audience: developer
|
|
6
|
-
tags: [agents, tools, secrets, datastores, memory, schedules, subagents, zod,
|
|
6
|
+
tags: [agents, tools, secrets, datastores, memory, schedules, subagents, zod, create_tool, dry_run_tool, timeoutMs, mcp]
|
|
7
7
|
appliesTo: >=0.2.1
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -48,11 +48,37 @@ rewrite the schema with the Zod 4 API (for example `z.looseObject()` for
|
|
|
48
48
|
`.nonstrict()`, `z.string().optional()` for `z.ostring()`, and `z.ipv4()` or
|
|
49
49
|
`z.ipv6()` for `.ip()`), dry-run it again, and save it with `update_tool`.
|
|
50
50
|
|
|
51
|
+
## Tool time limits
|
|
52
|
+
|
|
53
|
+
Wardby 0.8.0 and later. Each call of a tool has 10 seconds by default. A tool that calls a slow API can
|
|
54
|
+
ask for more with `timeoutMs` (milliseconds, at least `1000`) on `create_tool`,
|
|
55
|
+
`update_tool` or `dry_run_tool`, or `--timeout-ms` on `wardby tool create` and
|
|
56
|
+
`wardby tool update`. Pass `timeoutMs: null` to `update_tool` (or
|
|
57
|
+
`--timeout-ms default` to `wardby tool update`) to go back to the default.
|
|
58
|
+
|
|
59
|
+
- The limit covers the whole call. Each `fetch` may run until the limit, and a
|
|
60
|
+
timer (`setTimeout`) can't be set for longer than it.
|
|
61
|
+
- The server's `WARDBY_TOOL_MAX_TIMEOUT_MS` (default `300000`, five minutes)
|
|
62
|
+
caps it. A larger `timeoutMs` is refused with an error naming the ceiling. If
|
|
63
|
+
the operator lowers the ceiling later, existing tools run with the ceiling.
|
|
64
|
+
- A run keeps the value it loaded, as it does the tool's code.
|
|
65
|
+
- A call never outlasts its run: stopping the run aborts it, and a sandboxed
|
|
66
|
+
run's deadline cuts it off.
|
|
67
|
+
- `list_tools` and `get_agent` show each tool's `timeoutMs` (`null` means the
|
|
68
|
+
default).
|
|
69
|
+
|
|
70
|
+
Test a slow tool with `dry_run_tool` and the same `timeoutMs` before you attach
|
|
71
|
+
it. A call that runs out of time fails with a `timeout` error; the help article
|
|
72
|
+
`errors/tool-timeout` explains what to do.
|
|
73
|
+
|
|
51
74
|
Use a budget or shared budget group on every agent, and inspect runs before
|
|
52
75
|
expanding its access. An access grant is intentional delegation: use it only
|
|
53
76
|
when an owner permits one agent to use another resource. Creating or changing
|
|
54
77
|
tools, secrets, datastores, schedules, webhooks, memory, and budget groups
|
|
55
78
|
requires the matching MCP scope.
|
|
56
79
|
|
|
80
|
+
Native agents can also call tools from remote MCP servers; see
|
|
81
|
+
[Remote MCP servers](../docs/mcp-servers.md) (0.8.0+).
|
|
82
|
+
|
|
57
83
|
See [Operate agents](operating-agents.md) for run and budget management, and
|
|
58
84
|
[`README.md`](../README.md) for the feature overview and MCP operations.
|
package/help/native-sandbox.md
CHANGED
|
@@ -4,7 +4,7 @@ title: Run native agents in a sandbox
|
|
|
4
4
|
summary: Turn on sandbox mode so a native agent's turn loop and tools run in a single-use, credential-free Docker container or Kubernetes pod behind a native gateway.
|
|
5
5
|
audience: operator
|
|
6
6
|
tags: [native-agents, sandbox, isolation, docker, kubernetes, native-gateway, security, warm-pool]
|
|
7
|
-
appliesTo: ">=0.
|
|
7
|
+
appliesTo: ">=0.6.0"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Run native agents in a sandbox
|
package/help/operating-agents.md
CHANGED
|
@@ -32,6 +32,22 @@ A running run's cost, token counts, and turn count update after each model
|
|
|
32
32
|
call, so `get_run` and `list_runs` show spend so far rather than zero until the
|
|
33
33
|
run finishes.
|
|
34
34
|
|
|
35
|
+
To see your runs across every agent, call `list_runs` without an `agentId`
|
|
36
|
+
(Wardby 0.8.0 and later). Each row names its agent and leaves out the final
|
|
37
|
+
text; `active: true` keeps pending and running runs, and `since` (an ISO time)
|
|
38
|
+
keeps runs that started or finished since then plus any still active. You see
|
|
39
|
+
every run of the agents you own and only the runs you started on the others.
|
|
40
|
+
`list_agents` with `summary: true` returns just each agent's id, name, kind,
|
|
41
|
+
model, coding provider, budget, owner and your access, without the full
|
|
42
|
+
configuration.
|
|
43
|
+
|
|
44
|
+
From Wardby 0.8.0, `get_run` and `list_runs` without an `agentId` also return
|
|
45
|
+
`triggerInfo` (the pull request or issue that started the run, and whether it
|
|
46
|
+
was a review or a mention), `outcomes` (pull requests opened, comments, checks)
|
|
47
|
+
and `serviceReadiness` (each coding-run service's state). They use the admin
|
|
48
|
+
viewer API's shapes. Match one run's pull-request outcome to another run's
|
|
49
|
+
trigger to follow a pull request through its review and fix rounds.
|
|
50
|
+
|
|
35
51
|
To stop a run that is pending, queued, or running (for example one a schedule
|
|
36
52
|
started that you did not want), call `stop_run` with its id. It ends as
|
|
37
53
|
`cancelled`, along with the sub-agent runs it still has in flight. Search help
|
|
@@ -128,15 +128,19 @@ such hints: a fix round's task names only its own pull request. Merged and
|
|
|
128
128
|
closed pull requests are never listed as continuable: a change there needs a
|
|
129
129
|
new pull request, which joins the set once it is recorded.
|
|
130
130
|
|
|
131
|
+
When the sub-agent is a coding agent with a list of repositories, a
|
|
132
|
+
follow-up delegation passes `continuePriorRun` and takes its repository from
|
|
133
|
+
that run, so it needs no `repository` of its own.
|
|
134
|
+
|
|
131
135
|
Give your own delivery or router agent's system prompt a line such as:
|
|
132
136
|
|
|
133
137
|
Continue the pull request you were asked about, and any listed open
|
|
134
138
|
sibling the change requires; never open a new pull request in a
|
|
135
139
|
repository that already has an open sibling for this request.
|
|
136
140
|
|
|
137
|
-
The usual limits still apply: `maxDelegationsPerRun` and
|
|
138
|
-
|
|
139
|
-
gets its own review; fix rounds are capped per pull request and only one
|
|
141
|
+
The usual limits still apply: `maxDelegationsPerRun` and delegating to each
|
|
142
|
+
sub-agent and repository at most once per run; every push to a sibling pull
|
|
143
|
+
request gets its own review; fix rounds are capped per pull request and only one
|
|
140
144
|
runs at a time on a pull request; and a continuation only ever reaches a
|
|
141
145
|
sub-agent that shares the same owner as the one asked to continue it.
|
|
142
146
|
|
|
@@ -4,7 +4,7 @@ title: Repository instructions and skills in coding runs
|
|
|
4
4
|
summary: What AGENTS.md, CLAUDE.md, and repo skills a coding run loads, and how to turn repo skills off per agent with codingProfile.repoSkills.
|
|
5
5
|
audience: all
|
|
6
6
|
tags: [coding, skills, repoSkills, claudeBareMode, CLAUDE.md, AGENTS.md, SKILL.md, codex, claude-code]
|
|
7
|
-
appliesTo: ">=0.
|
|
7
|
+
appliesTo: ">=0.6.0"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Repository instructions and skills in coding runs
|
|
@@ -81,6 +81,8 @@ never loaded in either mode.
|
|
|
81
81
|
|
|
82
82
|
## See also
|
|
83
83
|
|
|
84
|
+
- [Remote MCP servers](../docs/mcp-servers.md) (0.8.0+) are for native agents only; a coding run loads no
|
|
85
|
+
MCP configuration.
|
|
84
86
|
- [Choose a native or coding agent](creating-agents.md) for `codingProfile`
|
|
85
87
|
basics and the other fields it accepts.
|
|
86
88
|
- [Bring-Your-Own Coding-Worker Images](../docs/coding-worker-byo-images.md)
|
|
@@ -49,6 +49,10 @@ blob store nothing is stored, and `update_agent` warns you.
|
|
|
49
49
|
(default 10 MiB, at most 64 MiB). Each run records a status (`stored`,
|
|
50
50
|
`too_large`, `not_captured` or `failed`) with a reason code.
|
|
51
51
|
|
|
52
|
+
For a short line-per-step record of any run, without a blob store and without
|
|
53
|
+
continuing it, see `run-steps`; from 0.9.0 its `detail` level is a lighter way to
|
|
54
|
+
see tool output without a transcript.
|
|
55
|
+
|
|
52
56
|
## Who can read it
|
|
53
57
|
|
|
54
58
|
Transcripts are stored from the first run with `sessionResume` on. Anyone
|
|
@@ -129,3 +133,6 @@ or its runs fail at input with `worker_input_failed`.
|
|
|
129
133
|
|
|
130
134
|
Full setup: [Resume a run locally](../docs/coding-agent-setup.md#resume-a-run-locally).
|
|
131
135
|
See also [Choose a native or coding agent](help://creating-agents).
|
|
136
|
+
|
|
137
|
+
The `wardby-runs` Claude Code plugin can start the import from a run's detail
|
|
138
|
+
(**Continue locally**); see `claude-code-run-pane` (Wardby 0.8.0 and later).
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: run-steps
|
|
3
|
+
title: See what a run is doing (run steps)
|
|
4
|
+
summary: Wardby records each run's steps, one line per tool call or model message, so you can follow a running run and read what a finished one did with get_run_steps. Run steps detail adds tool output.
|
|
5
|
+
audience: operator
|
|
6
|
+
tags: [run steps, claude code run steps, get_run_steps, what is my run doing, WARDBY_RUN_STEPS, viewer step event]
|
|
7
|
+
appliesTo: >=0.9.0
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# See what a run is doing
|
|
11
|
+
|
|
12
|
+
Wardby records the steps of a run while it runs:
|
|
13
|
+
|
|
14
|
+
- one line for each **tool call**: the tool, and its command, file or first
|
|
15
|
+
argument, cut to about 100 characters, with its status once the result is
|
|
16
|
+
back (`ok`, `error`, or `exit N` for a command that exited with code N);
|
|
17
|
+
- one line for what the **model said**, cut to about 120 characters.
|
|
18
|
+
|
|
19
|
+
## Levels
|
|
20
|
+
|
|
21
|
+
| Level | Tool input | Tool result | Model text |
|
|
22
|
+
| --------- | -------------------- | --------------------------------------- | -------------------- |
|
|
23
|
+
| `off` | - | - | - |
|
|
24
|
+
| `summary` | about 100 characters | status only (`ok`, `error`, `exit N`) | about 120 characters |
|
|
25
|
+
| `detail` | up to about 4 KB | status and the last ~2 KB of its output | up to about 8 KB |
|
|
26
|
+
|
|
27
|
+
At `summary`, the default, tool output is never recorded. At `detail` each step
|
|
28
|
+
also keeps a **detail** text, at most 16 KB. When the output is cut at the
|
|
29
|
+
start, the partial first line is dropped if it ends within 256 characters;
|
|
30
|
+
otherwise only the first 256 characters are dropped, so a long single-line
|
|
31
|
+
output, such as a JSON result, keeps about its last 1.8 KB. At every level,
|
|
32
|
+
terminal escape sequences (colour codes, links, clipboard writes, title changes)
|
|
33
|
+
and every other control character except line breaks and tabs are removed from
|
|
34
|
+
step text before it is stored.
|
|
35
|
+
|
|
36
|
+
A run's level is the lower of two settings, fixed when the run is dispatched (a
|
|
37
|
+
change reaches later runs only; lowering the ceiling also stops detail for runs
|
|
38
|
+
already in flight):
|
|
39
|
+
|
|
40
|
+
- the instance's ceiling, `WARDBY_RUN_STEPS` (default `summary`);
|
|
41
|
+
- the agent's `runSteps` (`off`, `summary` or `detail`), set by the agent's
|
|
42
|
+
owner with `create_agent` or `update_agent`. Unset counts as `summary`. Set
|
|
43
|
+
`null` to clear it.
|
|
44
|
+
|
|
45
|
+
So `detail` needs both the operator and the agent's owner. If `runSteps` asks
|
|
46
|
+
for more than the instance allows, the value is stored, `update_agent` and
|
|
47
|
+
`get_agent` say so in `warnings`, and runs record at the ceiling.
|
|
48
|
+
|
|
49
|
+
> **Warning: `detail` stores tool output.** Before a step is stored, every
|
|
50
|
+
> secret value the run was given is removed and anything shaped like a token or
|
|
51
|
+
> key is masked. A secret that exists only inside a repository file, or another
|
|
52
|
+
> source the run read, and that matches no known shape, is not known to Wardby
|
|
53
|
+
> and can remain in the detail text. That is why detail is off unless both the
|
|
54
|
+
> operator and the agent's owner ask for it. Turn it on only for agents whose
|
|
55
|
+
> tool output you are prepared to keep for the retention period.
|
|
56
|
+
|
|
57
|
+
Steps are recorded for native runs (in the control plane and on the native
|
|
58
|
+
sandbox) and for Claude Code and Codex runs. Every agent's shell command shows
|
|
59
|
+
as `Bash`: a native agent's `run_command`, Claude Code's command tool, and
|
|
60
|
+
Codex's `exec_command`, `shell`, `local_shell` and `shell_command`. Another tool
|
|
61
|
+
shows under its own name (for example `apply_patch`), and a remote MCP tool as
|
|
62
|
+
`mcp:<tool>`.
|
|
63
|
+
|
|
64
|
+
A Claude Code or Codex run's final answer is one `said` step: the start of the
|
|
65
|
+
summary it returned (the pull request description), or `Finished` with the
|
|
66
|
+
outcome (for example `Finished: changes ready`) when it returned none.
|
|
67
|
+
|
|
68
|
+
For Claude Code and Codex runs, the coding proxy reads the steps from the
|
|
69
|
+
model's replies after relaying them and posts them to the server, which needs a
|
|
70
|
+
listener for them: `WARDBY_RUN_STEPS_LISTEN` on `wardby serve` and
|
|
71
|
+
`WARDBY_RUN_STEPS_URL` on the proxy. The reference GKE manifests set both; the
|
|
72
|
+
kind overlay sets only `WARDBY_RUN_STEPS_URL`, so set
|
|
73
|
+
`WARDBY_RUN_STEPS_LISTEN` on the host's `wardby serve`. Without either, coding
|
|
74
|
+
runs record no steps; native runs are not affected. A slow or unreachable listener loses steps; it never slows the run.
|
|
75
|
+
|
|
76
|
+
## Read the steps
|
|
77
|
+
|
|
78
|
+
- `get_run_steps` with `runId` lists a run's steps, oldest first, 50 at a time
|
|
79
|
+
(`limit`, at most 200). `next` is what to pass as `after` for the next page.
|
|
80
|
+
To follow a running run, call it again every few seconds with `after` set to
|
|
81
|
+
the last `seq` you have.
|
|
82
|
+
- `get_run` and `list_runs` (without `agentId`) include `lastStep`, the run's
|
|
83
|
+
newest step as one line, for example `Bash: npm test (exit 1)`.
|
|
84
|
+
- The `wardby-runs` Claude Code pane shows a running run's last steps and a
|
|
85
|
+
finished run's steps; see `claude-code-run-pane`.
|
|
86
|
+
- The admin viewer API sends a `step` event on `/admin/api/events` for each
|
|
87
|
+
step and status, and `GET /admin/api/runs/<id>` lists the run's newest 200
|
|
88
|
+
steps (see `admin-viewer`). The Wardby Viewer app shows them in a **Steps**
|
|
89
|
+
section of a run's detail.
|
|
90
|
+
|
|
91
|
+
At `detail`, `get_run_steps` also returns each step's `detail` to the agent's
|
|
92
|
+
owner and to the person who started the run (and to the stdio operator); anyone
|
|
93
|
+
else, including an admin who does not own the agent, gets the lines only. `lastStep`, the admin viewer API
|
|
94
|
+
and its `step` events never include detail.
|
|
95
|
+
|
|
96
|
+
You can read a run's steps when you can read the run with `get_run`.
|
|
97
|
+
|
|
98
|
+
A run records at most 2,000 steps. Later steps are not recorded; `dropped`
|
|
99
|
+
counts them.
|
|
100
|
+
|
|
101
|
+
## Secrets
|
|
102
|
+
|
|
103
|
+
Before a step is stored, Wardby removes every secret value the run's agent has
|
|
104
|
+
(its attached secrets, readable or brokered, and its MCP servers' secrets), the
|
|
105
|
+
run's own capability and registry token, and
|
|
106
|
+
anything shaped like a token or key. A command that echoes a secret shows
|
|
107
|
+
`[REDACTED]` in its place.
|
|
108
|
+
|
|
109
|
+
## Retention
|
|
110
|
+
|
|
111
|
+
Steps, and their detail, are deleted `RUN_STEP_RETENTION_DAYS` after they are
|
|
112
|
+
recorded (default 30). A change applies to steps recorded after it. `get_run_steps` reports `expired` when a run finished more than
|
|
113
|
+
`RUN_STEP_RETENTION_DAYS` ago and has no steps left.
|
|
114
|
+
|
|
115
|
+
## Settings
|
|
116
|
+
|
|
117
|
+
| Variable | Default | What it does |
|
|
118
|
+
| ------------------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
119
|
+
| `WARDBY_RUN_STEPS` | `summary` | `off` records no steps; `summary` the lines above; `detail` allows agents whose `runSteps` is `detail` to record detail. The ceiling for every run. Any other value stops start-up. |
|
|
120
|
+
| `RUN_STEP_RETENTION_DAYS` | `30` | Days to keep a step, a whole number from 1 to 3650. Any other value stops start-up. |
|
|
121
|
+
| `WARDBY_RUN_STEPS_LISTEN` | unset | On `wardby serve` only: `host:port` (or `:port`) of the listener the coding proxy posts coding runs' steps to. Unset: no listener. |
|
|
122
|
+
| `WARDBY_RUN_STEPS_URL` | unset | On the coding proxy: the listener's origin, for example `http://<server host>:8792`, with no credentials or path. Unset: coding runs record no steps. |
|
|
123
|
+
|
|
124
|
+
Set `WARDBY_RUN_STEPS` (including `detail`) and `RUN_STEP_RETENTION_DAYS` on
|
|
125
|
+
every process that writes steps: `wardby serve`,
|
|
126
|
+
`wardby scheduler`, `wardby run`, `wardby mcp` and `wardby native-gateway`. The
|
|
127
|
+
coding proxy reads `WARDBY_RUN_STEPS` too: with `off`, or with
|
|
128
|
+
`WARDBY_RUN_STEPS_URL` unset, no step text leaves the proxy. For a coding
|
|
129
|
+
run's steps use `wardby serve` (the only process that runs the listener), not
|
|
130
|
+
the stdio `wardby mcp`.
|
|
131
|
+
|
|
132
|
+
For coding runs at `detail`, set `WARDBY_RUN_STEPS=detail` on the coding proxy
|
|
133
|
+
too: below `detail`, the proxy never sends any tool output to the server.
|
|
134
|
+
|
|
135
|
+
The listener is a second network path into the server, from the coding proxy
|
|
136
|
+
only; keep it off any load balancer. See
|
|
137
|
+
[Run steps](../docs/security-deployment.md#run-steps) for how to restrict it.
|
|
138
|
+
|
|
139
|
+
The full guide is
|
|
140
|
+
[Debugging agent runs](../docs/debugging-agent-runs.md#run-steps).
|
package/help/stop-run.md
CHANGED
|
@@ -28,7 +28,7 @@ in its `stopRequestReason` (and, for a native run, in its `error`).
|
|
|
28
28
|
| The run is | `stop_run` |
|
|
29
29
|
| ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
30
30
|
| Pending, or a coding run queued for a slot | Ends it now. It never starts. |
|
|
31
|
-
| A running native run in the control plane | Ends it now; the run stops at its next step
|
|
31
|
+
| A running native run in the control plane | Ends it now; the run stops at its next step. A model turn already under way finishes first; a tool call already under way is aborted within a few seconds. |
|
|
32
32
|
| A running native run in the sandbox | Ends it now and ends its gateway session, so the worker's next call is refused and it exits. A worker still running after a short grace (5 seconds) is killed and removed; a warm pool worker is never reused. |
|
|
33
33
|
| A running coding run | Ends it, cancels its model proxy session, and stops and removes its worker. It opens or updates no pull request afterwards. |
|
|
34
34
|
| Already finished (any other status) | Changes nothing and returns its status. Calling `stop_run` again is safe. |
|
|
@@ -3,7 +3,7 @@ id: troubleshooting/coding-workers
|
|
|
3
3
|
title: Troubleshoot coding workers
|
|
4
4
|
summary: Investigate coding-worker setup, isolation preflight, and safe failure handling.
|
|
5
5
|
audience: operator
|
|
6
|
-
tags: [coding-agents, quota, coding_queue_timeout, docker, kubernetes, isolation, services, debug-trace, debugTraceMinutes, debugTraceMaxMb, maxOutputTokens, output-tokens, claude-code, codex, memory, CODING_MEMORY_MB, CODING_CPUS, out-of-memory]
|
|
6
|
+
tags: [coding-agents, get_run, request, requestUnavailable, quota, coding_queue_timeout, docker, kubernetes, isolation, services, debug-trace, debugTraceMinutes, debugTraceMaxMb, maxOutputTokens, output-tokens, claude-code, codex, memory, CODING_MEMORY_MB, CODING_CPUS, out-of-memory]
|
|
7
7
|
appliesTo: >=0.2.1
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -95,6 +95,14 @@ commands run in a tool-runner container limited to at most 512 MiB and 0.25 CPU.
|
|
|
95
95
|
3. For a Claude Code agent with heavy checks, run it on Codex instead, since raising
|
|
96
96
|
the pod's memory doesn't raise the tool runner's limit.
|
|
97
97
|
|
|
98
|
+
## See what a run was asked to do
|
|
99
|
+
|
|
100
|
+
From Wardby 0.8.0, `get_run` returns a coding run's `request`: the task it
|
|
101
|
+
received from `trigger_agent`, a webhook or a lead, without the agent's standing
|
|
102
|
+
instructions. Use it to check what a lead told a coding agent. The agent's secret
|
|
103
|
+
values and token-shaped values are masked. If the secrets can't be read, you get
|
|
104
|
+
`requestUnavailable: true` instead of the text.
|
|
105
|
+
|
|
98
106
|
## Debug trace
|
|
99
107
|
|
|
100
108
|
When a run's fixed error code or a slow run doesn't say enough, an admin can
|