@wardby/cli 0.5.3 → 0.6.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.
Files changed (370) hide show
  1. package/.env.example +33 -0
  2. package/README.md +25 -14
  3. package/dist/claude-coding-worker/context.d.ts +22 -0
  4. package/dist/claude-coding-worker/context.js +92 -0
  5. package/dist/claude-coding-worker/driver.d.ts +7 -1
  6. package/dist/claude-coding-worker/driver.js +38 -5
  7. package/dist/claude-coding-worker/sdk.js +13 -4
  8. package/dist/cli-help.d.ts +1 -1
  9. package/dist/cli-help.js +5 -2
  10. package/dist/cli-native-mode.d.ts +9 -0
  11. package/dist/cli-native-mode.js +20 -0
  12. package/dist/cli.d.ts +3 -1
  13. package/dist/cli.js +141 -5
  14. package/dist/coding/claude-context.d.ts +45 -0
  15. package/dist/coding/claude-context.js +434 -0
  16. package/dist/coding/profile.d.ts +12 -0
  17. package/dist/coding/profile.js +6 -0
  18. package/dist/coding/protocol.d.ts +104 -0
  19. package/dist/coding/protocol.js +87 -3
  20. package/dist/coding-worker/artifact.d.ts +8 -0
  21. package/dist/coding-worker/artifact.js +2 -2
  22. package/dist/coding-worker/driver.js +2 -0
  23. package/dist/coding-worker/sdk.d.ts +6 -0
  24. package/dist/coding-worker/sdk.js +1 -0
  25. package/dist/coding-worker/skills.d.ts +23 -0
  26. package/dist/coding-worker/skills.js +117 -0
  27. package/dist/coding-worker/types.d.ts +2 -0
  28. package/dist/config/github-allowed-accounts.d.ts +15 -0
  29. package/dist/config/github-allowed-accounts.js +36 -0
  30. package/dist/config/low-power.d.ts +12 -0
  31. package/dist/config/low-power.js +18 -0
  32. package/dist/config/mobile.d.ts +12 -0
  33. package/dist/config/mobile.js +18 -0
  34. package/dist/config/providers.d.ts +53 -0
  35. package/dist/config/providers.js +92 -6
  36. package/dist/core/db.d.ts +16 -6
  37. package/dist/core/db.js +12 -10
  38. package/dist/core/dispatch.d.ts +11 -0
  39. package/dist/core/dispatch.js +36 -1
  40. package/dist/core/engine-native.js +9 -5
  41. package/dist/core/host-events.d.ts +49 -3
  42. package/dist/core/host-events.js +289 -15
  43. package/dist/core/issue-bridge.js +42 -2
  44. package/dist/core/issue-events.js +12 -1
  45. package/dist/core/issue-status.js +14 -3
  46. package/dist/core/merge-order-check.d.ts +129 -0
  47. package/dist/core/merge-order-check.js +336 -0
  48. package/dist/core/notification-dispatcher.d.ts +70 -0
  49. package/dist/core/notification-dispatcher.js +368 -0
  50. package/dist/core/notification-templates.d.ts +25 -0
  51. package/dist/core/notification-templates.js +105 -0
  52. package/dist/core/notifications.d.ts +10 -0
  53. package/dist/core/notifications.js +38 -0
  54. package/dist/core/pg-auth.d.ts +22 -0
  55. package/dist/core/pg-auth.js +152 -0
  56. package/dist/core/power-composition.d.ts +16 -0
  57. package/dist/core/power-composition.js +37 -0
  58. package/dist/core/power-idle.d.ts +14 -0
  59. package/dist/core/power-idle.js +30 -0
  60. package/dist/core/power.d.ts +71 -0
  61. package/dist/core/power.js +202 -0
  62. package/dist/core/reconciler.d.ts +4 -2
  63. package/dist/core/reconciler.js +29 -5
  64. package/dist/core/related-pull-requests.d.ts +48 -4
  65. package/dist/core/related-pull-requests.js +113 -11
  66. package/dist/core/repo-access.d.ts +15 -0
  67. package/dist/core/repo-access.js +66 -0
  68. package/dist/core/review-fix.d.ts +37 -0
  69. package/dist/core/review-fix.js +207 -6
  70. package/dist/core/review-host-tools.d.ts +20 -0
  71. package/dist/core/review-host-tools.js +58 -2
  72. package/dist/core/runner.d.ts +336 -3
  73. package/dist/core/runner.js +894 -317
  74. package/dist/core/secret-broker-config.d.ts +103 -0
  75. package/dist/core/secret-broker-config.js +112 -0
  76. package/dist/core/secrets.d.ts +39 -4
  77. package/dist/core/secrets.js +148 -40
  78. package/dist/core/workflow-event-recorder.d.ts +14 -0
  79. package/dist/core/workflow-event-recorder.js +120 -0
  80. package/dist/core/workflow-events.d.ts +82 -0
  81. package/dist/core/workflow-events.js +44 -0
  82. package/dist/core/workflow-run-events.d.ts +16 -0
  83. package/dist/core/workflow-run-events.js +40 -0
  84. package/dist/generated/prisma/browser.d.ts +58 -0
  85. package/dist/generated/prisma/client.d.ts +58 -0
  86. package/dist/generated/prisma/commonInputTypes.d.ts +150 -0
  87. package/dist/generated/prisma/enums.d.ts +27 -0
  88. package/dist/generated/prisma/enums.js +23 -0
  89. package/dist/generated/prisma/internal/class.d.ts +88 -0
  90. package/dist/generated/prisma/internal/class.js +4 -4
  91. package/dist/generated/prisma/internal/prismaNamespace.d.ts +772 -1
  92. package/dist/generated/prisma/internal/prismaNamespace.js +135 -4
  93. package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +139 -0
  94. package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +135 -4
  95. package/dist/generated/prisma/models/Agent.d.ts +360 -1
  96. package/dist/generated/prisma/models/CodingAgentProfile.d.ts +73 -1
  97. package/dist/generated/prisma/models/CodingRun.d.ts +205 -1
  98. package/dist/generated/prisma/models/DeferredReview.d.ts +78 -1
  99. package/dist/generated/prisma/models/NativeGatewayCall.d.ts +1675 -0
  100. package/dist/generated/prisma/models/NativeGatewayCall.js +1 -0
  101. package/dist/generated/prisma/models/NativeGatewaySession.d.ts +1517 -0
  102. package/dist/generated/prisma/models/NativeGatewaySession.js +1 -0
  103. package/dist/generated/prisma/models/NativeWarmWorker.d.ts +1296 -0
  104. package/dist/generated/prisma/models/NativeWarmWorker.js +1 -0
  105. package/dist/generated/prisma/models/NotificationChannel.d.ts +1543 -0
  106. package/dist/generated/prisma/models/NotificationChannel.js +1 -0
  107. package/dist/generated/prisma/models/NotificationDelivery.d.ts +1502 -0
  108. package/dist/generated/prisma/models/NotificationDelivery.js +1 -0
  109. package/dist/generated/prisma/models/NotificationThread.d.ts +1090 -0
  110. package/dist/generated/prisma/models/NotificationThread.js +1 -0
  111. package/dist/generated/prisma/models/Run.d.ts +826 -1
  112. package/dist/generated/prisma/models/RunHostCheck.d.ts +36 -1
  113. package/dist/generated/prisma/models/Secret.d.ts +37 -1
  114. package/dist/generated/prisma/models/SecretBrokerChange.d.ts +1101 -0
  115. package/dist/generated/prisma/models/SecretBrokerChange.js +1 -0
  116. package/dist/generated/prisma/models/WorkflowEvent.d.ts +1422 -0
  117. package/dist/generated/prisma/models/WorkflowEvent.js +1 -0
  118. package/dist/generated/prisma/models.d.ts +8 -0
  119. package/dist/help/build.js +4 -2
  120. package/dist/help/catalog.d.ts +1 -1
  121. package/dist/help/catalog.js +31 -6
  122. package/dist/help-index.json +1363 -176
  123. package/dist/import/create.js +17 -0
  124. package/dist/import/neutral-schema.d.ts +6 -2
  125. package/dist/import/neutral-schema.js +2 -0
  126. package/dist/mcp/auth/access.d.ts +1 -0
  127. package/dist/mcp/auth/repo-authorization.js +14 -0
  128. package/dist/mcp/auth/resource-server.d.ts +2 -1
  129. package/dist/mcp/auth/resource-server.js +7 -2
  130. package/dist/mcp/auth/self-hosted/browser.d.ts +1 -1
  131. package/dist/mcp/auth/self-hosted/browser.js +19 -6
  132. package/dist/mcp/context.d.ts +6 -0
  133. package/dist/mcp/host-events/github-ingress.d.ts +23 -1
  134. package/dist/mcp/host-events/github-ingress.js +68 -0
  135. package/dist/mcp/index.d.ts +13 -0
  136. package/dist/mcp/index.js +59 -10
  137. package/dist/mcp/tools/agents.js +82 -11
  138. package/dist/mcp/tools/notification-channels.d.ts +2 -0
  139. package/dist/mcp/tools/notification-channels.js +293 -0
  140. package/dist/mcp/tools/power.d.ts +2 -0
  141. package/dist/mcp/tools/power.js +77 -0
  142. package/dist/mcp/tools/runs.d.ts +0 -6
  143. package/dist/mcp/tools/runs.js +7 -2
  144. package/dist/mcp/tools/secret-broker-compat.d.ts +12 -0
  145. package/dist/mcp/tools/secret-broker-compat.js +23 -0
  146. package/dist/mcp/tools/secret-elicitation-form.d.ts +22 -2
  147. package/dist/mcp/tools/secret-elicitation-form.js +200 -10
  148. package/dist/mcp/tools/secret-elicitation-server.js +8 -1
  149. package/dist/mcp/tools/secret-elicitation.d.ts +38 -3
  150. package/dist/mcp/tools/secret-elicitation.js +110 -12
  151. package/dist/mcp/tools/secrets.js +184 -7
  152. package/dist/mcp/tools/tools.d.ts +1 -1
  153. package/dist/mcp/tools/tools.js +22 -2
  154. package/dist/native-worker/composition.d.ts +23 -0
  155. package/dist/native-worker/composition.js +77 -0
  156. package/dist/native-worker/docker-isolation.d.ts +65 -0
  157. package/dist/native-worker/docker-isolation.js +183 -0
  158. package/dist/native-worker/docker-launcher.d.ts +74 -0
  159. package/dist/native-worker/docker-launcher.js +237 -0
  160. package/dist/native-worker/gateway-server.d.ts +39 -0
  161. package/dist/native-worker/gateway-server.js +315 -0
  162. package/dist/native-worker/gateway.d.ts +44 -0
  163. package/dist/native-worker/gateway.js +197 -0
  164. package/dist/native-worker/http-server.d.ts +22 -0
  165. package/dist/native-worker/http-server.js +109 -0
  166. package/dist/native-worker/http-transport.d.ts +17 -0
  167. package/dist/native-worker/http-transport.js +88 -0
  168. package/dist/native-worker/kubernetes-isolation.d.ts +90 -0
  169. package/dist/native-worker/kubernetes-isolation.js +218 -0
  170. package/dist/native-worker/kubernetes-launcher.d.ts +102 -0
  171. package/dist/native-worker/kubernetes-launcher.js +335 -0
  172. package/dist/native-worker/launch.d.ts +45 -0
  173. package/dist/native-worker/launch.js +44 -0
  174. package/dist/native-worker/ledger.d.ts +109 -0
  175. package/dist/native-worker/ledger.js +192 -0
  176. package/dist/native-worker/loopback.d.ts +12 -0
  177. package/dist/native-worker/loopback.js +49 -0
  178. package/dist/native-worker/main.d.ts +7 -0
  179. package/dist/native-worker/main.js +74 -0
  180. package/dist/native-worker/protocol.d.ts +744 -0
  181. package/dist/native-worker/protocol.js +200 -0
  182. package/dist/native-worker/sandbox-executor.d.ts +68 -0
  183. package/dist/native-worker/sandbox-executor.js +210 -0
  184. package/dist/native-worker/stdio.d.ts +29 -0
  185. package/dist/native-worker/stdio.js +188 -0
  186. package/dist/native-worker/warm-delivery.d.ts +16 -0
  187. package/dist/native-worker/warm-delivery.js +33 -0
  188. package/dist/native-worker/warm-pool-ledger.d.ts +39 -0
  189. package/dist/native-worker/warm-pool-ledger.js +73 -0
  190. package/dist/native-worker/warm-pool.d.ts +107 -0
  191. package/dist/native-worker/warm-pool.js +283 -0
  192. package/dist/native-worker/worker.d.ts +17 -0
  193. package/dist/native-worker/worker.js +115 -0
  194. package/dist/providers/auth/authorization-server.d.ts +3 -0
  195. package/dist/providers/auth/index.js +2 -0
  196. package/dist/providers/auth/self-hosted.d.ts +13 -1
  197. package/dist/providers/auth/self-hosted.js +54 -4
  198. package/dist/providers/chat/fake.d.ts +46 -0
  199. package/dist/providers/chat/fake.js +39 -0
  200. package/dist/providers/chat/index.d.ts +4 -0
  201. package/dist/providers/chat/index.js +8 -0
  202. package/dist/providers/chat/slack.d.ts +37 -0
  203. package/dist/providers/chat/slack.js +105 -0
  204. package/dist/providers/chat/types.d.ts +42 -0
  205. package/dist/providers/chat/types.js +19 -0
  206. package/dist/providers/engine/types.d.ts +19 -0
  207. package/dist/providers/engine/types.js +22 -0
  208. package/dist/providers/executor/composition.d.ts +24 -1
  209. package/dist/providers/executor/composition.js +39 -6
  210. package/dist/providers/executor/container.d.ts +24 -1
  211. package/dist/providers/executor/container.js +101 -11
  212. package/dist/providers/executor/dbos.d.ts +42 -0
  213. package/dist/providers/executor/dbos.js +118 -12
  214. package/dist/providers/executor/deferred.d.ts +56 -0
  215. package/dist/providers/executor/deferred.js +119 -0
  216. package/dist/providers/executor/routing.d.ts +37 -10
  217. package/dist/providers/executor/routing.js +73 -32
  218. package/dist/providers/executor/types.d.ts +12 -0
  219. package/dist/providers/jobs/docker.js +3 -3
  220. package/dist/providers/jobs/fake-kubernetes-api.d.ts +21 -2
  221. package/dist/providers/jobs/fake-kubernetes-api.js +42 -1
  222. package/dist/providers/jobs/kubernetes-api.d.ts +17 -1
  223. package/dist/providers/jobs/kubernetes-api.js +7 -0
  224. package/dist/providers/jobs/kubernetes-client.d.ts +10 -1
  225. package/dist/providers/jobs/kubernetes-client.js +52 -3
  226. package/dist/providers/jobs/kubernetes-dry-run-fixture.d.ts +6 -1
  227. package/dist/providers/jobs/kubernetes-dry-run-fixture.js +6 -3
  228. package/dist/providers/jobs/kubernetes-isolation.d.ts +3 -1
  229. package/dist/providers/jobs/kubernetes-isolation.js +6 -0
  230. package/dist/providers/jobs/kubernetes-platform.d.ts +4 -1
  231. package/dist/providers/jobs/kubernetes-platform.js +38 -1
  232. package/dist/providers/jobs/kubernetes-preflight.d.ts +2 -1
  233. package/dist/providers/jobs/kubernetes-preflight.js +4 -2
  234. package/dist/providers/jobs/kubernetes.d.ts +36 -1
  235. package/dist/providers/jobs/kubernetes.js +74 -4
  236. package/dist/providers/jobs/metadata-probes.d.ts +11 -0
  237. package/dist/providers/jobs/metadata-probes.js +13 -0
  238. package/dist/providers/jobs/types.d.ts +9 -0
  239. package/dist/providers/review-host/github.d.ts +11 -1
  240. package/dist/providers/review-host/github.js +50 -0
  241. package/dist/providers/review-host/types.d.ts +23 -0
  242. package/dist/providers/vcs/github.d.ts +32 -6
  243. package/dist/providers/vcs/github.js +74 -16
  244. package/dist/quickstart/coding-seed.d.ts +10 -3
  245. package/dist/quickstart/coding-seed.js +74 -3
  246. package/dist/quickstart/images.d.ts +2 -0
  247. package/dist/quickstart/images.js +7 -1
  248. package/dist/quickstart/reviewer-prompt.d.ts +1 -1
  249. package/dist/quickstart/reviewer-prompt.js +1 -1
  250. package/dist/quickstart-images.json +1 -1
  251. package/dist/sandbox/brokered-fetch.d.ts +23 -0
  252. package/dist/sandbox/brokered-fetch.js +37 -0
  253. package/dist/sandbox/host-functions.d.ts +34 -0
  254. package/dist/sandbox/host-functions.js +144 -80
  255. package/dist/sandbox/prelude.js +7 -1
  256. package/dist/sandbox/run-in-sandbox.d.ts +19 -0
  257. package/dist/sandbox/run-in-sandbox.js +28 -10
  258. package/dist/sandbox/safe-fetch.d.ts +2 -0
  259. package/dist/sandbox/safe-fetch.js +3 -1
  260. package/dist/sandbox/secret-broker-sigv4.d.ts +2 -0
  261. package/dist/sandbox/secret-broker-sigv4.js +49 -0
  262. package/dist/sandbox/secret-broker.d.ts +34 -0
  263. package/dist/sandbox/secret-broker.js +162 -0
  264. package/dist/sandbox/user-tool.d.ts +14 -0
  265. package/dist/sandbox/user-tool.js +32 -0
  266. package/dist/serve.js +18 -0
  267. package/dist/viewer/api-schema.d.ts +210 -14
  268. package/dist/viewer/api-schema.js +22 -0
  269. package/dist/viewer/build-schemas.js +4 -1
  270. package/dist/viewer/event-bus.d.ts +6 -0
  271. package/dist/viewer/event-bus.js +16 -7
  272. package/dist/viewer/graph.d.ts +5 -2
  273. package/dist/viewer/graph.js +7 -2
  274. package/dist/viewer/http.d.ts +0 -1
  275. package/dist/viewer/http.js +2 -2
  276. package/dist/viewer/infra.js +25 -2
  277. package/dist/viewer/limits.d.ts +4 -0
  278. package/dist/viewer/limits.js +4 -0
  279. package/dist/viewer/openapi.d.ts +15 -0
  280. package/dist/viewer/openapi.js +172 -0
  281. package/docs/README.md +7 -0
  282. package/docs/agent-recipes.md +57 -8
  283. package/docs/architecture-runtime.md +16 -1
  284. package/docs/code-review-agents.md +139 -5
  285. package/docs/coding-agent-setup.md +113 -5
  286. package/docs/coding-packages.md +4 -2
  287. package/docs/coding-services.md +3 -1
  288. package/docs/coding-worker-byo-images.md +198 -6
  289. package/docs/coding-worker-isolation.md +68 -14
  290. package/docs/getting-started-gke.md +225 -9
  291. package/docs/getting-started-identity-provider.md +21 -10
  292. package/docs/getting-started.md +5 -4
  293. package/docs/jira-agents.md +5 -1
  294. package/docs/native-sandbox.md +635 -0
  295. package/docs/release-verification.md +9 -0
  296. package/docs/security-deployment.md +113 -12
  297. package/docs/slack-notifications.md +252 -0
  298. package/docs/tool-secrets.md +252 -0
  299. package/docs/viewer-api.md +46 -5
  300. package/docs/viewer-api.openapi.yml +1404 -0
  301. package/help/admin-viewer.md +6 -2
  302. package/help/agent-recipes.md +27 -0
  303. package/help/architecture-agent.md +1 -1
  304. package/help/brokered-secrets.md +79 -0
  305. package/help/build-claude-code-image.md +131 -0
  306. package/help/build-worker-image.md +3 -6
  307. package/help/code-review-agents.md +68 -6
  308. package/help/deploy-gke.md +8 -1
  309. package/help/deployment-targets.md +25 -14
  310. package/help/errors/coding-provider-not-configured.md +2 -2
  311. package/help/errors/database-auth-invalid.md +28 -0
  312. package/help/errors/github-account-not-allowed.md +25 -0
  313. package/help/errors/low-power-disabled.md +29 -0
  314. package/help/errors/low-power-scale-forbidden.md +35 -0
  315. package/help/errors/low-power-wake-timeout.md +30 -0
  316. package/help/errors/mobile-disabled.md +31 -0
  317. package/help/errors/native-sandbox-capacity.md +22 -0
  318. package/help/errors/native-sandbox-deadline-exceeded.md +19 -0
  319. package/help/errors/native-sandbox-docker-failed.md +20 -0
  320. package/help/errors/native-sandbox-gateway-unavailable.md +21 -0
  321. package/help/errors/native-sandbox-image-not-pinned.md +19 -0
  322. package/help/errors/native-sandbox-isolation-mismatch.md +20 -0
  323. package/help/errors/native-sandbox-network-unenforced.md +22 -0
  324. package/help/errors/native-sandbox-requires-catalog.md +31 -0
  325. package/help/errors/native-sandbox-unavailable.md +19 -0
  326. package/help/errors/native-sandbox-warm-delivery-failed.md +21 -0
  327. package/help/errors/native-sandbox-worker-exited.md +20 -0
  328. package/help/errors/native-sandbox-worker-lost.md +20 -0
  329. package/help/errors/native-sandbox-worker-unready.md +22 -0
  330. package/help/errors/secret-broker-body-invalid.md +26 -0
  331. package/help/errors/secret-broker-changed.md +20 -0
  332. package/help/errors/secret-broker-config-invalid.md +30 -0
  333. package/help/errors/secret-broker-conflict.md +27 -0
  334. package/help/errors/secret-broker-destination-denied.md +28 -0
  335. package/help/errors/secret-broker-value-invalid.md +28 -0
  336. package/help/errors/secret-brokered.md +24 -0
  337. package/help/errors/secret-not-brokered.md +25 -0
  338. package/help/errors/slack-auth-failed.md +48 -0
  339. package/help/errors/slack-channel-unreachable.md +39 -0
  340. package/help/errors/slack-not-configured.md +33 -0
  341. package/help/getting-started.md +4 -5
  342. package/help/github.md +18 -1
  343. package/help/identity-and-access.md +5 -1
  344. package/help/local-repositories.md +2 -3
  345. package/help/low-power-mode.md +125 -0
  346. package/help/merge-order-check.md +117 -0
  347. package/help/mobile-app.md +54 -0
  348. package/help/native-sandbox.md +136 -0
  349. package/help/observability.md +8 -0
  350. package/help/related-pull-requests.md +70 -9
  351. package/help/repo-instructions-and-skills.md +91 -0
  352. package/help/review-fix-rounds.md +10 -0
  353. package/help/slack-notifications.md +62 -0
  354. package/help/troubleshooting/coding-workers.md +21 -0
  355. package/package.json +11 -4
  356. package/prisma/migrations/20261009000003_native_execution_mode/migration.sql +12 -0
  357. package/prisma/migrations/20261009000004_native_gateway_ledger/migration.sql +65 -0
  358. package/prisma/migrations/20261009000005_native_gateway_call_child_agent/migration.sql +5 -0
  359. package/prisma/migrations/20261009000006_run_deferred_start_stop/migration.sql +14 -0
  360. package/prisma/migrations/20261009000007_native_gateway_network_ready/migration.sql +5 -0
  361. package/prisma/migrations/20261010000001_workflow_notifications/migration.sql +99 -0
  362. package/prisma/migrations/20261011000001_native_gateway_session_status_index/migration.sql +2 -0
  363. package/prisma/migrations/20261012000001_native_warm_worker/migration.sql +32 -0
  364. package/prisma/migrations/20261013000001_coding_run_merge_order/migration.sql +2 -0
  365. package/prisma/migrations/20261013000001_secret_broker/migration.sql +17 -0
  366. package/prisma/migrations/20261013000002_deferred_review_request/migration.sql +4 -0
  367. package/prisma/migrations/20261014000000_repo_skills/migration.sql +15 -0
  368. package/prisma/migrations/20261015000001_coding_run_merge_order_index/migration.sql +2 -0
  369. package/prisma/migrations/20261015000002_no_change_rereview/migration.sql +2 -0
  370. package/prisma/schema.prisma +362 -91
@@ -0,0 +1,30 @@
1
+ ---
2
+ id: errors/low-power-wake-timeout
3
+ title: Wake timed out (scale to zero)
4
+ summary: When scaling from zero, the coding proxy or native gateway did not become ready after being scaled up, or its Deployment does not exist.
5
+ audience: operator
6
+ tags: [error, low-power, gke, kubernetes, scale-to-zero, low_power_wake_timeout]
7
+ appliesTo: ">=0.6.0"
8
+ ---
9
+
10
+ # Low-power wake timed out
11
+
12
+ `low_power_wake_timeout` means a run needed the coding proxy (or, for a sandbox
13
+ run, the native gateway), Wardby scaled it from 0 to 1, and no ready endpoint
14
+ appeared within the bound. The bound is 5 minutes, or
15
+ `KUBERNETES_READY_TIMEOUT_MS` for the proxy and
16
+ `NATIVE_SANDBOX_READY_TIMEOUT_MS` for the gateway when that is higher. It is
17
+ also raised when the target Deployment does not exist.
18
+
19
+ 1. Check the Deployment exists: `kubectl -n wardby-coding get deploy wardby-coding-proxy wardby-native-gateway`
20
+ (names follow `KUBERNETES_PROXY_SERVICE` and `NATIVE_GATEWAY_SERVICE`). If
21
+ one is missing, re-run `deploy/gke/up.sh`.
22
+ 2. If it exists, look at why its Pod is not ready: `kubectl -n wardby-coding describe pod -l app.kubernetes.io/name=wardby-coding-proxy`.
23
+ A cold Autopilot node can take 1 to 2 minutes; unschedulable Pods, image
24
+ pull errors or a failing sidecar are the usual causes.
25
+ 3. If the node is simply slow, raise the timeout for that target above 5
26
+ minutes (300000): set `KUBERNETES_READY_TIMEOUT_MS` (proxy) or
27
+ `NATIVE_SANDBOX_READY_TIMEOUT_MS` (gateway) on the control-plane Deployment.
28
+ 4. Trigger the run again.
29
+
30
+ See [Low-power mode on GKE](../low-power-mode.md).
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: errors/mobile-disabled
3
+ title: Mobile sign-in is not enabled
4
+ summary: The server refused the mobile app's sign-in or registration because WARDBY_MOBILE_ENABLED is not true.
5
+ audience: operator
6
+ tags: [error, mobile, sign-in, oauth, mobile_disabled, WARDBY_MOBILE_ENABLED]
7
+ appliesTo: ">=0.6.0"
8
+ ---
9
+
10
+ # Mobile sign-in is not enabled
11
+
12
+ Mobile sign-in is switched off. An operator turns it on with
13
+ `WARDBY_MOBILE_ENABLED`.
14
+
15
+ Only client registration returns the reason: `400 invalid_redirect_uri` with the
16
+ description `mobile_disabled: mobile sign-in is not enabled on this server
17
+ (WARDBY_MOBILE_ENABLED)`. Sign-in (authorize) and token refresh return the
18
+ generic `invalid_request` or `invalid_grant` with an `id`. The `mobile_disabled`
19
+ reason appears only in the control-plane log line "self-hosted OAuth request
20
+ rejected" for that `id`, so look the `id` up in the control-plane logs.
21
+
22
+ 1. Set `WARDBY_MOBILE_ENABLED=true` on the control plane and restart it. On GKE,
23
+ redeploy with `WARDBY_MOBILE_ENABLED=true` passed to `deploy/gke/up.sh`; a
24
+ run without it turns mobile sign-in off again.
25
+ 2. If you use a white-label build, check that `WARDBY_MOBILE_REDIRECT_URI`
26
+ matches the redirect URI the app uses.
27
+ 3. Sign in again from the app.
28
+
29
+ With an external identity provider this error does not come from Wardby; check
30
+ that the IdP client lists the mobile redirect URI. See
31
+ [Use the wardby mobile app](../mobile-app.md).
@@ -0,0 +1,22 @@
1
+ ---
2
+ id: errors/native-sandbox-capacity
3
+ title: Native sandbox is at capacity
4
+ summary: A sandbox run could not start because the concurrent sandbox run limit or the namespace ResourceQuota has no room; the run failed at start and was not queued.
5
+ audience: operator
6
+ tags: [error, native-agents, sandbox, kubernetes, capacity, quota, native_sandbox_capacity]
7
+ appliesTo: ">=0.5.4"
8
+ ---
9
+
10
+ # Native sandbox is at capacity
11
+
12
+ `native_sandbox_capacity` means a sandbox-mode run could not start because there was no room for it. The run failed at start; it is not queued. The message gives one of two reasons:
13
+
14
+ - **"N sandbox runs are already active (NATIVE_SANDBOX_MAX_CONCURRENT)"**: the cap on concurrent sandbox runs, counted across all server replicas as active gateway sessions, has been reached.
15
+ - **"the namespace's ResourceQuota has no room for another native worker pod"**: with `NATIVE_SANDBOX_LAUNCHER=kubernetes`, the run namespace's quota on pods, CPU, or memory is full.
16
+
17
+ 1. Wait for running sandbox runs to finish, then trigger the run again.
18
+ 2. To allow more at once, raise `NATIVE_SANDBOX_MAX_CONCURRENT` (unset means no cap) and raise the namespace ResourceQuota with it. Each worker pod needs its CPU and memory limits (`NATIVE_SANDBOX_CPUS`, `NATIVE_SANDBOX_MEMORY_MB`) from the quota, which coding runs and the gateway share. Idle warm-pool workers (`NATIVE_SANDBOX_WARM_POOL_SIZE`) take quota too, so leave room for `NATIVE_SANDBOX_MAX_CONCURRENT` plus the pool size.
19
+ 3. Check current usage with `kubectl describe resourcequota -n <namespace>` and `kubectl get pods -n <namespace> -l wardby.io/component=native-run`.
20
+
21
+ See [Run native agents in a sandbox](../native-sandbox.md) and the
22
+ [native sandbox guide](../../docs/native-sandbox.md).
@@ -0,0 +1,19 @@
1
+ ---
2
+ id: errors/native-sandbox-deadline-exceeded
3
+ title: Native run deadline exceeded
4
+ summary: A sandbox run passed its 60-minute maximum lifetime and its worker was stopped.
5
+ audience: operator
6
+ tags: [error, native-agents, sandbox, native_sandbox_deadline_exceeded]
7
+ appliesTo: ">=0.5.4"
8
+ ---
9
+
10
+ # Native run deadline exceeded
11
+
12
+ `native_sandbox_deadline_exceeded` means the run was still going when it reached the sandbox's maximum lifetime of 60 minutes, so the worker was stopped and the run failed. The limit protects against stuck runs and is not configurable.
13
+
14
+ 1. Look for a tool that waits forever or a loop that does not converge.
15
+ 2. Split long work into smaller runs, or delegate parts to sub-agents (each is its own run).
16
+ 3. Trigger the run again.
17
+
18
+ See [Run native agents in a sandbox](../native-sandbox.md) and the
19
+ [native sandbox guide](../../docs/native-sandbox.md).
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: errors/native-sandbox-docker-failed
3
+ title: Native worker Docker command failed
4
+ summary: A Docker command Wardby ran to start or clean up a sandbox worker failed.
5
+ audience: operator
6
+ tags: [error, native-agents, sandbox, native_sandbox_docker_failed]
7
+ appliesTo: ">=0.5.4"
8
+ ---
9
+
10
+ # Native worker Docker command failed
11
+
12
+ `native_sandbox_docker_failed` means a Docker command needed to launch a worker (pull the image, create the run network, join the gateway to it, or start the container) failed. The message names the step and includes Docker's error output.
13
+
14
+ 1. Confirm the server can reach the Docker daemon (`docker info` as the server's user).
15
+ 2. For an image step, confirm the image exists on the host (a local id must already be present; a digest must be pullable without registry credentials, or pull it beforehand).
16
+ 3. For a network step, confirm `NATIVE_GATEWAY_CONTAINER` names a running gateway container on this Docker host.
17
+ 4. Trigger the run again.
18
+
19
+ See [Run native agents in a sandbox](../native-sandbox.md) and the
20
+ [native sandbox guide](../../docs/native-sandbox.md).
@@ -0,0 +1,21 @@
1
+ ---
2
+ id: errors/native-sandbox-gateway-unavailable
3
+ title: Native gateway Service unavailable
4
+ summary: On Kubernetes, Wardby could not find a usable native gateway Service, so a sandbox run could not start.
5
+ audience: operator
6
+ tags: [error, native-agents, sandbox, kubernetes, native_sandbox_gateway_unavailable]
7
+ appliesTo: ">=0.5.4"
8
+ ---
9
+
10
+ # Native gateway Service unavailable
11
+
12
+ `native_sandbox_gateway_unavailable` means that with `NATIVE_SANDBOX_LAUNCHER=kubernetes`, the Service named by `NATIVE_GATEWAY_SERVICE` (default `wardby-native-gateway`) does not exist in the sandbox namespace or has no ClusterIP. Workers dial the Service's ClusterIP, so Wardby needs one.
13
+
14
+ 1. Confirm the namespace: `NATIVE_SANDBOX_NAMESPACE`, else `KUBERNETES_NAMESPACE`, else `wardby-coding`.
15
+ 2. Create the Service there as a regular ClusterIP Service (not headless) that selects the gateway pods (`app.kubernetes.io/name: wardby-native-gateway`) and exposes both 8790 and the deny port 8791.
16
+ 3. Confirm the server's Role allows `get` on `services` in that namespace.
17
+ 4. Alternatively set `NATIVE_GATEWAY_URL` to an address workers can dial, and keep the gateway's NetworkPolicy and the workers' egress consistent with it.
18
+ 5. Trigger the run again.
19
+
20
+ See [Run native agents in a sandbox](../native-sandbox.md) and the
21
+ [native sandbox guide](../../docs/native-sandbox.md).
@@ -0,0 +1,19 @@
1
+ ---
2
+ id: errors/native-sandbox-image-not-pinned
3
+ title: Native worker image not pinned
4
+ summary: NATIVE_SANDBOX_WORKER_IMAGE is a mutable tag, so Wardby refused to launch a sandbox worker.
5
+ audience: operator
6
+ tags: [error, native-agents, sandbox, native_sandbox_image_not_pinned]
7
+ appliesTo: ">=0.5.4"
8
+ ---
9
+
10
+ # Native worker image not pinned
11
+
12
+ `native_sandbox_image_not_pinned` means `NATIVE_SANDBOX_WORKER_IMAGE` is not immutable. Wardby only launches a worker from a digest (`repo@sha256:...`) or a local image id, so the code it isolates cannot change underneath it.
13
+
14
+ 1. Use the digest-pinned reference listed as `nativeWorker` in `dist/quickstart-images.json` for your version, or build locally with `npm run native-worker:image:local` and use the image id from `docker image inspect --format '{{.Id}}' wardby-native-worker:local`.
15
+ 2. On Kubernetes (`NATIVE_SANDBOX_LAUNCHER=kubernetes`) a local image id is not accepted: the image must be a registry digest, `repo@sha256:...`, that the cluster can pull. Push your build to a registry and use its digest.
16
+ 3. Set it as `NATIVE_SANDBOX_WORKER_IMAGE`, restart the server, and trigger the run again.
17
+
18
+ See [Run native agents in a sandbox](../native-sandbox.md) and the
19
+ [native sandbox guide](../../docs/native-sandbox.md).
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: errors/native-sandbox-isolation-mismatch
3
+ title: Native worker pod differs from what Wardby built
4
+ summary: On Kubernetes, the sandbox pod or its NetworkPolicy as stored by the cluster differs from what Wardby created, so the run failed before starting.
5
+ audience: operator
6
+ tags: [error, native-agents, sandbox, kubernetes, native_sandbox_isolation_mismatch]
7
+ appliesTo: ">=0.5.4"
8
+ ---
9
+
10
+ # Native worker pod differs from what Wardby built
11
+
12
+ `native_sandbox_isolation_mismatch` means that with `NATIVE_SANDBOX_LAUNCHER=kubernetes`, Wardby read back the worker pod and NetworkPolicy it had just created and found a security-relevant difference: a service-account token, host networking, a different runtime class, priority class, image, container resources, or container security context or environment, an extra init container, or a changed NetworkPolicy. Something in the cluster modified the objects after creation, typically a mutating admission webhook, policy engine, or service mesh injector. The run is failed and the pod removed.
13
+
14
+ 1. Inspect an equivalent pod while a run is starting: `kubectl get pods -n <namespace> -l wardby.io/component=native-run -o yaml`.
15
+ 2. Find the admission controller that changes it (`kubectl get mutatingwebhookconfigurations`) and exempt pods labeled `wardby.io/component: native-run` and the run namespace's NetworkPolicies, for example by namespace or label selector. Do not disable sidecar-style injection by editing the pod after the fact.
16
+ 3. If `NATIVE_SANDBOX_RUNTIME_CLASS` or `NATIVE_SANDBOX_PRIORITY_CLASS` is set, confirm no policy overrides it. On GKE Autopilot set `KUBERNETES_PLATFORM=gke-autopilot` so pod resources are already in the form Autopilot admits and are not rewritten.
17
+ 4. Trigger the run again.
18
+
19
+ See [Run native agents in a sandbox](../native-sandbox.md) and the
20
+ [native sandbox guide](../../docs/native-sandbox.md).
@@ -0,0 +1,22 @@
1
+ ---
2
+ id: errors/native-sandbox-network-unenforced
3
+ title: Native worker network isolation not proven
4
+ summary: On Kubernetes, Wardby could not prove a sandbox pod's network isolation in time, so it removed the pod and failed the run.
5
+ audience: operator
6
+ tags: [error, native-agents, sandbox, kubernetes, native_sandbox_network_unenforced]
7
+ appliesTo: ">=0.5.4"
8
+ ---
9
+
10
+ # Native worker network isolation not proven
11
+
12
+ `native_sandbox_network_unenforced` means that with `NATIVE_SANDBOX_LAUNCHER=kubernetes`, Wardby ran a check inside the worker pod and it did not pass before the time limit. The check requires the gateway to be reachable on port 8790 while the gateway's deny port (8791 by default), an outside address, and the cloud metadata endpoints (`169.254.169.254:80`, the EKS Pod Identity agent `169.254.170.23:80` and `[fd00:ec2::23]:80`, and EC2's IPv6 metadata address `[fd00:ec2::254]:80`) are not. The message says which part failed. The pod is removed and the run never started.
13
+
14
+ - **"the gateway was unreachable"**: confirm the gateway Deployment has ready pods, the `wardby-native-gateway` Service (or `NATIVE_GATEWAY_SERVICE`) exposes 8790 and 8791, and the gateway's own NetworkPolicy admits `wardby.io/component: native-run` pods on port 8790.
15
+ - **"the gateway's deny port was reachable"** or **"an outside address was reachable"** (or a metadata endpoint): the cluster is not enforcing the per-run NetworkPolicy. Confirm your CNI enforces `NetworkPolicy` (some local clusters need a policy-capable CNI such as Calico), and that no other policy or mesh adds egress for these pods.
16
+ - If the Service lacks port 8791, or the gateway's policy does not admit 8791, unprogrammed pods would look isolated. Keep both in place; the check depends on them.
17
+ - On a slow node the policy can take longer to program. Retrigger the run once, or raise `NATIVE_SANDBOX_ENFORCEMENT_TIMEOUT_MS` (default 30000), before changing anything.
18
+
19
+ A cluster that does not enforce NetworkPolicy fails every sandbox run this way, by design. Switch the agent back to `control-plane` if you cannot enable enforcement.
20
+
21
+ See [Run native agents in a sandbox](../native-sandbox.md) and the
22
+ [native sandbox guide](../../docs/native-sandbox.md).
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: errors/native-sandbox-requires-catalog
3
+ title: Sandbox run has no model catalog entry
4
+ summary: A sandbox-mode run could not start because no model catalog entry was recorded for it.
5
+ audience: operator
6
+ tags: [error, native-agents, sandbox, model-catalog, native_sandbox_requires_catalog]
7
+ appliesTo: ">=0.5.4"
8
+ ---
9
+
10
+ # Sandbox run has no model catalog entry
11
+
12
+ `native_sandbox_requires_catalog` means a sandbox-mode run reached its worker
13
+ launch without a model catalog entry. The worker prices every model call and
14
+ enforces the run's budget from that entry, so Wardby fails the run before
15
+ starting a worker or spending anything.
16
+
17
+ Every run records its model's catalog entry when it first starts. A model
18
+ that is unknown, disabled, or has no configured provider fails earlier with
19
+ its own model error, not this one. This error only appears when the process
20
+ executing the run does not use Wardby's catalog-backed model router, for
21
+ example a modified build or an embedding that supplies its own LLM provider.
22
+
23
+ 1. Run sandbox-mode agents on a standard `wardby serve` (or `wardby
24
+ scheduler` / `wardby mcp`) process, which always uses the catalog.
25
+ 2. If you supply your own LLM provider, route it through the model catalog,
26
+ or keep the agent on `control-plane` with `update_agent` or
27
+ `wardby agent mode <name> control-plane`.
28
+ 3. Trigger the run again. A failed run is not retried on its own.
29
+
30
+ See [Run native agents in a sandbox](../native-sandbox.md) and
31
+ [Models and the model catalog](../models.md).
@@ -0,0 +1,19 @@
1
+ ---
2
+ id: errors/native-sandbox-unavailable
3
+ title: Native execution mode unavailable
4
+ summary: A run failed with native_sandbox_unavailable because its agent is in sandbox mode but the server has no native sandbox configured.
5
+ audience: operator
6
+ tags: [error, native-agents, sandbox, native_sandbox_unavailable]
7
+ appliesTo: ">=0.5.4"
8
+ ---
9
+
10
+ # Native execution mode unavailable
11
+
12
+ `native_sandbox_unavailable` means the agent's `nativeExecutionMode` is `sandbox` but this deployment has no native sandbox configured. Wardby fails the run before any spend rather than running it unisolated.
13
+
14
+ 1. To use the sandbox, set `NATIVE_SANDBOX_LAUNCHER=docker`, `NATIVE_SANDBOX_WORKER_IMAGE`, and `NATIVE_GATEWAY_CONTAINER` on the server that executes runs (`wardby serve` or `wardby scheduler`), start the native gateway, and restart the server.
15
+ 2. Otherwise set the agent back to `control-plane` with `update_agent`.
16
+ 3. Trigger the run again.
17
+
18
+ See [Run native agents in a sandbox](../native-sandbox.md) and the
19
+ [native sandbox guide](../../docs/native-sandbox.md).
@@ -0,0 +1,21 @@
1
+ ---
2
+ id: errors/native-sandbox-warm-delivery-failed
3
+ title: Native sandbox warm worker could not take the run
4
+ summary: A run claimed an idle warm-pool worker, delivering its input failed, and the worker could not be confirmed stopped within 30 seconds, so the run failed instead of cold-launching.
5
+ audience: operator
6
+ tags: [error, native-agents, sandbox, warm-pool, kubernetes, docker, native_sandbox_warm_delivery_failed]
7
+ appliesTo: ">=0.5.4"
8
+ ---
9
+
10
+ # Native sandbox warm worker could not take the run
11
+
12
+ `native_sandbox_warm_delivery_failed` means a sandbox run claimed an idle worker from the warm pool (`NATIVE_SANDBOX_WARM_POOL_SIZE`), but writing the run's input into that worker failed. The worker may already hold the run's one-time gateway capability, so Wardby removes it and waits up to 30 seconds for it to be confirmed gone before starting a cold worker. This error means it could not be confirmed gone in that time, so the run failed rather than risk two workers holding the same capability. If the worker is confirmed gone, the run cold-launches and you see no error (the log has a `fallback` event).
13
+
14
+ 1. Trigger the run again. Most failures are transient.
15
+ 2. Check that the worker is gone: `kubectl get pods -n <namespace> -l wardby.io/pool=warm` (Kubernetes) or `docker ps --all --filter label=io.wardby.pool=warm` (Docker). Pool upkeep removes leftovers, but a stuck pod usually means the node or Docker host is unhealthy.
16
+ 3. Look for `native-warm-pool` log entries with `event` `fallback`, and check that the server may exec into pods in the run namespace.
17
+ 4. To bypass the pool while you investigate, set `NATIVE_SANDBOX_WARM_POOL_SIZE=0`; every run then cold-starts.
18
+
19
+ See [Run native agents in a sandbox](../native-sandbox.md) and the
20
+ [native sandbox guide](../../docs/native-sandbox.md#warm-pool). A related error is
21
+ [native_sandbox_capacity](native-sandbox-capacity.md).
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: errors/native-sandbox-worker-exited
3
+ title: Native worker exited without a result
4
+ summary: The sandbox worker container ended without producing a result.
5
+ audience: operator
6
+ tags: [error, native-agents, sandbox, native_sandbox_worker_exited]
7
+ appliesTo: ">=0.5.4"
8
+ ---
9
+
10
+ # Native worker exited without a result
11
+
12
+ `native_sandbox_worker_exited` means the worker container stopped without reporting a result; the message includes its exit code. Common causes are a tool that exhausted the worker's memory or process limit, or a crash in tool code.
13
+
14
+ 1. Read the exit code in the run's error (`get_run`). Code 137 usually means the memory limit was hit.
15
+ 2. If limits are the cause, raise `NATIVE_SANDBOX_MEMORY_MB`, `NATIVE_SANDBOX_PIDS`, or `NATIVE_SANDBOX_CPUS` on the server and restart it.
16
+ 3. Otherwise test the agent's tools with `dry_run_tool` and fix the failing code.
17
+ 4. Trigger the run again.
18
+
19
+ See [Run native agents in a sandbox](../native-sandbox.md) and the
20
+ [native sandbox guide](../../docs/native-sandbox.md).
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: errors/native-sandbox-worker-lost
3
+ title: Native worker lost
4
+ summary: The sandbox worker container disappeared and was not relaunched.
5
+ audience: operator
6
+ tags: [error, native-agents, sandbox, native_sandbox_worker_lost]
7
+ appliesTo: ">=0.5.4"
8
+ ---
9
+
10
+ # Native worker lost
11
+
12
+ `native_sandbox_worker_lost` means the run's worker container (or Kubernetes pod) is gone and left no result, for example because the Docker host restarted or an operator removed the container. Wardby never relaunches a worker, because a relaunch could repeat tool side effects.
13
+
14
+ 1. Check whether the Docker host or daemon restarted around the run's time.
15
+ 2. List workers with `docker ps --all --filter label=io.wardby.component=native-worker`; do not remove workers of running runs by hand.
16
+ 3. On Kubernetes, check whether the node was drained or preempted, and list pods with `kubectl get pods -n <namespace> -l wardby.io/component=native-run`.
17
+ 4. Trigger the run again.
18
+
19
+ See [Run native agents in a sandbox](../native-sandbox.md) and the
20
+ [native sandbox guide](../../docs/native-sandbox.md).
@@ -0,0 +1,22 @@
1
+ ---
2
+ id: errors/native-sandbox-worker-unready
3
+ title: Native worker pod did not start
4
+ summary: On Kubernetes, the sandbox worker pod did not reach the Running state in time, so the run failed before starting.
5
+ audience: operator
6
+ tags: [error, native-agents, sandbox, kubernetes, native_sandbox_worker_unready]
7
+ appliesTo: ">=0.5.4"
8
+ ---
9
+
10
+ # Native worker pod did not start
11
+
12
+ `native_sandbox_worker_unready` means that with `NATIVE_SANDBOX_LAUNCHER=kubernetes`, the worker pod stayed pending past the start-up limit (`NATIVE_SANDBOX_READY_TIMEOUT_MS`, default two minutes). Nothing ran.
13
+
14
+ 1. Describe the pod while it waits: `kubectl describe pod -n <namespace> -l wardby.io/component=native-run`. Look at the events for image pull errors, unschedulable reasons, or an unknown runtime class.
15
+ 2. Image pull: the cluster must be able to pull `NATIVE_SANDBOX_WORKER_IMAGE` (a registry digest) without interactive credentials; add a pull secret to the namespace's default service account if the registry is private.
16
+ 3. Scheduling: raise node capacity or lower `NATIVE_SANDBOX_CPUS` and `NATIVE_SANDBOX_MEMORY_MB`, and check namespace ResourceQuotas.
17
+ 4. Runtime class: confirm `NATIVE_SANDBOX_RUNTIME_CLASS` (or `KUBERNETES_RUNTIME_CLASS`) exists on the cluster. On Amazon EKS (`KUBERNETES_PLATFORM=eks`) the `gvisor` RuntimeClass must use handler `runsc` and its scheduling block must match your sandbox nodes (label `wardby.dev/sandbox=gvisor`, taint `sandbox=gvisor:NoSchedule`); a mismatch leaves the pod pending.
18
+ 5. On a cold node, such as a first gVisor pod on GKE Autopilot (about two minutes), raise `NATIVE_SANDBOX_READY_TIMEOUT_MS` (1000 to 1800000; about 600000 on Autopilot).
19
+ 6. Trigger the run again.
20
+
21
+ See [Run native agents in a sandbox](../native-sandbox.md) and the
22
+ [native sandbox guide](../../docs/native-sandbox.md).
@@ -0,0 +1,26 @@
1
+ ---
2
+ id: errors/secret-broker-body-invalid
3
+ title: Secret broker body invalid
4
+ summary: Body placement needs a JSON-object or form-encoded request body with a matching content-type.
5
+ audience: operator
6
+ tags: [error, secrets, secret_broker_body_invalid]
7
+ appliesTo: ">=0.6.0"
8
+ ---
9
+
10
+ # Secret broker body invalid
11
+
12
+ `secret_broker_body_invalid` means a secret placed in the request body could not
13
+ be added to the body the tool sent. Body placement needs one of:
14
+
15
+ - a JSON object body with `content-type: application/json` (or a `+json` type);
16
+ - a form body with `content-type: application/x-www-form-urlencoded`.
17
+
18
+ The request must have a body, valid JSON that is an object (not an array or a
19
+ scalar), and a matching `content-type` header.
20
+
21
+ 1. Send a body of a supported type and set the `content-type` header to match.
22
+ 2. If the API expects the credential elsewhere, change the placement with
23
+ `set_secret_broker` to `header` or `query`.
24
+
25
+ See [Brokered secrets](../brokered-secrets.md) and the
26
+ [secrets guide](../../docs/tool-secrets.md).
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: errors/secret-broker-changed
3
+ title: Brokering changed since the link was created
4
+ summary: A browser link to remove brokering was created before the secret's broker config changed, so it no longer applies.
5
+ audience: operator
6
+ tags: [error, secrets, secret_broker_changed]
7
+ appliesTo: ">=0.6.0"
8
+ ---
9
+
10
+ # Brokering changed since the link was created
11
+
12
+ `secret_broker_changed` means the browser link for removing brokering was minted
13
+ for a broker config that has since changed or been removed. A link only ever
14
+ removes the exact config it was created for.
15
+
16
+ 1. Call `set_secret_broker` with `broker: null` again to get a new link.
17
+ 2. Check the config shown on the new page before confirming removal.
18
+
19
+ See [Brokered secrets](../brokered-secrets.md) and the
20
+ [secrets guide](../../docs/tool-secrets.md).
@@ -0,0 +1,30 @@
1
+ ---
2
+ id: errors/secret-broker-config-invalid
3
+ title: Secret broker config invalid
4
+ summary: A broker config failed validation: hosts, path prefixes, or placement are malformed.
5
+ audience: operator
6
+ tags: [error, secrets, secret_broker_config_invalid]
7
+ appliesTo: ">=0.6.0"
8
+ ---
9
+
10
+ # Secret broker config invalid
11
+
12
+ `secret_broker_config_invalid` means the broker config passed to `create_secret`,
13
+ `set_secret_broker`, or the browser form did not validate. The message lists
14
+ each problem. Common causes:
15
+
16
+ - `hosts` is empty, has more than 20 entries, or contains a scheme, port,
17
+ wildcard, or IP address (including short forms such as `127.1`), or a label
18
+ ending in `-`; use exact hostnames such as `api.example.com`;
19
+ - a `pathPrefixes` entry does not start with `/`, or contains `?`, `#`, a
20
+ backslash, a control character, `%2F`, or `%5C`;
21
+ - a header `format` does not contain `{value}` exactly once or contains a line
22
+ break, or the header name is not allowed (`Host`, `Content-Length` and similar);
23
+ - an AWS `region` or `service` is malformed;
24
+ - the config or its placement has fields it does not define.
25
+
26
+ 1. Fix the fields named in the message and retry.
27
+ 2. The config shape is `{ hosts, pathPrefixes?, placement }`.
28
+
29
+ See [Brokered secrets](../brokered-secrets.md) and the
30
+ [secrets guide](../../docs/tool-secrets.md).
@@ -0,0 +1,27 @@
1
+ ---
2
+ id: errors/secret-broker-conflict
3
+ title: Secret broker placement conflict
4
+ summary: The request already sets the header, parameter, or field a broker places, two brokers collide, or more than one SigV4 secret was named.
5
+ audience: operator
6
+ tags: [error, secrets, secret_broker_conflict]
7
+ appliesTo: ">=0.6.0"
8
+ ---
9
+
10
+ # Secret broker placement conflict
11
+
12
+ `secret_broker_conflict` means the request would set the same spot twice. A
13
+ brokered value is never merged with or overridden by one from the tool. It
14
+ occurs when:
15
+
16
+ - the tool sets the header, query parameter, or body field that a brokered
17
+ secret places (for SigV4: `authorization`, `x-amz-date`,
18
+ `x-amz-security-token`, or `x-amz-content-sha256`);
19
+ - two named secrets place the same header, parameter, or field;
20
+ - more than one AWS SigV4 secret is named in one request.
21
+
22
+ 1. Remove the conflicting header, parameter, or field from the tool's request.
23
+ 2. Send secrets that place the same spot in separate requests.
24
+ 3. Name at most one SigV4 secret per request.
25
+
26
+ See [Brokered secrets](../brokered-secrets.md) and the
27
+ [secrets guide](../../docs/tool-secrets.md).
@@ -0,0 +1,28 @@
1
+ ---
2
+ id: errors/secret-broker-destination-denied
3
+ title: Secret broker destination denied
4
+ summary: A fetch with a brokered secret targeted a URL that is not https, uses a non-default port, or is outside the allowed hosts or path prefixes.
5
+ audience: operator
6
+ tags: [error, secrets, secret_broker_destination_denied]
7
+ appliesTo: ">=0.6.0"
8
+ ---
9
+
10
+ # Secret broker destination denied
11
+
12
+ `secret_broker_destination_denied` means a brokered secret may not be sent to
13
+ the requested URL. The message says which check failed:
14
+
15
+ - the URL is not `https`, or names a port other than the default;
16
+ - the host is not in the secret's `hosts` (exact match, no wildcards);
17
+ - the path does not start with any of the secret's `pathPrefixes`, or, for a
18
+ secret with `pathPrefixes`, contains an encoded slash or backslash (`%2F`,
19
+ `%5C`).
20
+
21
+ 1. Correct the URL in the tool.
22
+ 2. If the destination is intended, the secret's owner updates the config with
23
+ `set_secret_broker`, adding the host or path prefix.
24
+ 3. Make sure the tool attachment's `allowedHosts` also lists the host; a host
25
+ missing there is refused by the normal fetch policy.
26
+
27
+ See [Brokered secrets](../brokered-secrets.md) and the
28
+ [secrets guide](../../docs/tool-secrets.md).
@@ -0,0 +1,28 @@
1
+ ---
2
+ id: errors/secret-broker-value-invalid
3
+ title: Secret broker value invalid
4
+ summary: A brokered value is shorter than 6 characters, or an AWS SigV4 secret is not the expected JSON.
5
+ audience: operator
6
+ tags: [error, secrets, secret_broker_value_invalid]
7
+ appliesTo: ">=0.6.0"
8
+ ---
9
+
10
+ # Secret broker value invalid
11
+
12
+ `secret_broker_value_invalid` means the stored value cannot be brokered under its
13
+ config. It is returned when saving a config and when a tool uses the secret.
14
+
15
+ - A brokered value must be at least 6 characters.
16
+ - An AWS SigV4 secret's value must be JSON
17
+ `{"accessKeyId": "...", "secretAccessKey": "...", "sessionToken": "..."}` with
18
+ no other keys. `sessionToken` is optional; the secret access key and session
19
+ token must each be at least 6 characters.
20
+
21
+ 1. Re-enter the value with `create_secret` using the same name; it rotates the
22
+ value in place. Leave out `broker`: a rotation without one keeps the
23
+ existing broker config. In the browser form, correct the value and submit
24
+ the same link again.
25
+ 2. For SigV4, store the credentials as that JSON object.
26
+
27
+ See [Brokered secrets](../brokered-secrets.md) and the
28
+ [secrets guide](../../docs/tool-secrets.md).
@@ -0,0 +1,24 @@
1
+ ---
2
+ id: errors/secret-brokered
3
+ title: Secret is brokered and cannot be read
4
+ summary: A tool called secrets.get on a brokered secret; brokered secrets are only sent with fetch(url, { secrets }).
5
+ audience: operator
6
+ tags: [error, secrets, secret_brokered]
7
+ appliesTo: ">=0.6.0"
8
+ ---
9
+
10
+ # Secret is brokered and cannot be read
11
+
12
+ `secret_brokered` means a tool called `secrets.get(name)` on a secret that is
13
+ brokered. A brokered secret never exposes its value to tool code.
14
+
15
+ 1. Update the tool to send the secret with
16
+ `fetch(url, { secrets: ["NAME"] })`; the host places the value in the request.
17
+ 2. Or, if the tool really must read the value, have the secret owner remove
18
+ brokering with `set_secret_broker` and `broker: null`, confirmed in the
19
+ browser. This makes the value readable by every tool granted it.
20
+ 3. `attach_tool` and `set_secret_broker` warn when a granted tool calls
21
+ `secrets.get`; that scan is best-effort.
22
+
23
+ See [Brokered secrets](../brokered-secrets.md) and the
24
+ [secrets guide](../../docs/tool-secrets.md).
@@ -0,0 +1,25 @@
1
+ ---
2
+ id: errors/secret-not-brokered
3
+ title: Secret is not brokered
4
+ summary: A fetch named a secret that is readable, not attached to the agent, or not granted to the tool.
5
+ audience: operator
6
+ tags: [error, secrets, secret_not_brokered]
7
+ appliesTo: ">=0.6.0"
8
+ ---
9
+
10
+ # Secret is not brokered
11
+
12
+ `secret_not_brokered` means `fetch(url, { secrets: [...] })` named a secret that
13
+ is not a brokered secret available to this tool: it is readable, it is not
14
+ attached to the agent, it is not listed in the attachment's `allowedSecrets`, or
15
+ the request named more than 8 secrets.
16
+
17
+ 1. Check the name matches the alias the secret is attached under
18
+ (`attach_secret`) and appears in the tool attachment's `allowedSecrets`.
19
+ 2. To send the secret through `fetch`, make it brokered with
20
+ `set_secret_broker { name, broker }`.
21
+ 3. If the secret is meant to stay readable, read it with `secrets.get(name)`
22
+ instead of naming it in `fetch`.
23
+
24
+ See [Brokered secrets](../brokered-secrets.md) and the
25
+ [secrets guide](../../docs/tool-secrets.md).
@@ -0,0 +1,48 @@
1
+ ---
2
+ id: errors/slack-auth-failed
3
+ title: Bot authentication failed — invalid or revoked token
4
+ summary: wardby's Slack bot token is invalid, revoked, disabled, or missing a required scope, so delivery to every linked channel is paused.
5
+ audience: operator
6
+ tags: [error, notifications, auth, authentication, invalid_auth, token_revoked, missing_scope]
7
+ appliesTo: ">=0.6.0"
8
+ ---
9
+
10
+ # Bot authentication failed — invalid or revoked token
11
+
12
+ Slack returned `invalid_auth`, `token_revoked`, `account_inactive`,
13
+ `missing_scope`, or `not_authed` for `WARDBY_SLACK_BOT_TOKEN`. This is
14
+ different from a single channel being unreachable: it means the token
15
+ itself no longer works, so wardby pauses delivery to **every** linked
16
+ channel rather than attempting and failing each one. Deliveries already
17
+ queued stay pending — nothing is lost — and wardby automatically re-checks
18
+ the token every five minutes with Slack's `auth.test`, resuming delivery as
19
+ soon as it succeeds.
20
+
21
+ A **missing scope** (`missing_scope`) does not fix itself this way:
22
+ `auth.test` needs no scope, so the re-check succeeds, the next delivery fails
23
+ again, and delivery pauses again. Add the scope and reinstall the app (steps
24
+ 1–2 below).
25
+
26
+ The same errors while linking a channel refuse the link, except
27
+ `missing_scope` from a missing `channels:read`/`groups:read`, which only
28
+ skips validating the channel id.
29
+
30
+ wardby logs this once per pause, not on every retry.
31
+
32
+ ## What to do
33
+
34
+ 1. In Slack, check the app's **OAuth & Permissions** page: is the bot
35
+ installed, and does it still have `chat:write` at minimum?
36
+ 2. If the app's scopes changed (for example after editing
37
+ [`app-manifest.yaml`](../../deploy/slack/app-manifest.yaml)), reinstall
38
+ the app to the workspace to apply them.
39
+ 3. If the token was revoked or the app was uninstalled, reinstall it and
40
+ copy a fresh Bot User OAuth Token.
41
+ 4. If Slack issued a new token, set it as `WARDBY_SLACK_BOT_TOKEN` and
42
+ restart wardby; the startup log line `chat notifications acting as`
43
+ confirms it. If the token is unchanged (a scope added and the app
44
+ reinstalled), no restart is needed: pending deliveries go out after the
45
+ next check.
46
+
47
+ See [Send workflow updates to Slack](../../docs/slack-notifications.md) for
48
+ the full guide.