@wardby/cli 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (491) hide show
  1. package/.env.example +34 -4
  2. package/README.md +183 -71
  3. package/dist/claude-coding-worker/driver.d.ts +7 -1
  4. package/dist/claude-coding-worker/driver.js +31 -2
  5. package/dist/claude-coding-worker/main.js +5 -2
  6. package/dist/claude-coding-worker/tool-socket.d.ts +9 -0
  7. package/dist/claude-coding-worker/tool-socket.js +26 -0
  8. package/dist/cli-help.d.ts +1 -1
  9. package/dist/cli-help.js +13 -4
  10. package/dist/cli.d.ts +1 -1
  11. package/dist/cli.js +219 -29
  12. package/dist/coding/collect-exclude.d.ts +25 -0
  13. package/dist/coding/collect-exclude.js +76 -0
  14. package/dist/coding/profile.d.ts +67 -22
  15. package/dist/coding/profile.js +58 -25
  16. package/dist/coding/protected-path-wording.d.ts +24 -0
  17. package/dist/coding/protected-path-wording.js +55 -0
  18. package/dist/coding/protected-paths.d.ts +31 -0
  19. package/dist/coding/protected-paths.js +48 -0
  20. package/dist/coding/protocol.d.ts +99 -3
  21. package/dist/coding/protocol.js +155 -4
  22. package/dist/coding/registry/adapters.d.ts +2 -0
  23. package/dist/coding/registry/adapters.js +9 -0
  24. package/dist/coding/registry/allowlist.d.ts +9 -0
  25. package/dist/coding/registry/allowlist.js +28 -0
  26. package/dist/coding/registry/json-scan.d.ts +55 -0
  27. package/dist/coding/registry/json-scan.js +191 -0
  28. package/dist/coding/registry/lockfiles.d.ts +6 -0
  29. package/dist/coding/registry/lockfiles.js +89 -0
  30. package/dist/coding/registry/npm-lockfile.d.ts +9 -0
  31. package/dist/coding/registry/npm-lockfile.js +73 -0
  32. package/dist/coding/registry/npm-plan.d.ts +29 -0
  33. package/dist/coding/registry/npm-plan.js +289 -0
  34. package/dist/coding/registry/npm.d.ts +7 -0
  35. package/dist/coding/registry/npm.js +252 -0
  36. package/dist/coding/registry/pypi.d.ts +4 -0
  37. package/dist/coding/registry/pypi.js +210 -0
  38. package/dist/coding/registry/report.d.ts +37 -0
  39. package/dist/coding/registry/report.js +31 -0
  40. package/dist/coding/registry/token.d.ts +4 -0
  41. package/dist/coding/registry/token.js +7 -0
  42. package/dist/coding/registry/types.d.ts +286 -0
  43. package/dist/coding/registry/types.js +19 -0
  44. package/dist/coding/registry/worker-config.d.ts +14 -0
  45. package/dist/coding/registry/worker-config.js +31 -0
  46. package/dist/coding/services/builtins.d.ts +22 -0
  47. package/dist/coding/services/builtins.js +85 -0
  48. package/dist/coding/services/catalog.d.ts +443 -0
  49. package/dist/coding/services/catalog.js +159 -0
  50. package/dist/coding/services/declaration.d.ts +11 -0
  51. package/dist/coding/services/declaration.js +114 -0
  52. package/dist/coding/services/note.d.ts +8 -0
  53. package/dist/coding/services/note.js +15 -0
  54. package/dist/coding/services/resolve.d.ts +25 -0
  55. package/dist/coding/services/resolve.js +50 -0
  56. package/dist/coding/services/wording.d.ts +25 -0
  57. package/dist/coding/services/wording.js +70 -0
  58. package/dist/coding-proxy/main.js +24 -4
  59. package/dist/coding-worker/artifact.d.ts +18 -0
  60. package/dist/coding-worker/artifact.js +48 -6
  61. package/dist/coding-worker/debug-trace.d.ts +37 -0
  62. package/dist/coding-worker/debug-trace.js +117 -0
  63. package/dist/coding-worker/driver.d.ts +14 -1
  64. package/dist/coding-worker/driver.js +106 -14
  65. package/dist/coding-worker/errors.d.ts +7 -0
  66. package/dist/coding-worker/errors.js +26 -0
  67. package/dist/coding-worker/main.js +13 -4
  68. package/dist/coding-worker/sdk.d.ts +2 -2
  69. package/dist/coding-worker/sdk.js +7 -2
  70. package/dist/coding-worker/types.d.ts +3 -0
  71. package/dist/config/providers.d.ts +41 -0
  72. package/dist/config/providers.js +66 -0
  73. package/dist/core/budget-groups.d.ts +109 -6
  74. package/dist/core/budget-groups.js +125 -19
  75. package/dist/core/budget-wording.d.ts +22 -0
  76. package/dist/core/budget-wording.js +55 -0
  77. package/dist/core/coding-queue.d.ts +1 -1
  78. package/dist/core/datastores.d.ts +1 -1
  79. package/dist/core/datastores.js +18 -2
  80. package/dist/core/db.d.ts +40 -2
  81. package/dist/core/db.js +75 -2
  82. package/dist/core/dispatch.d.ts +49 -7
  83. package/dist/core/dispatch.js +290 -45
  84. package/dist/core/engine-native.js +27 -10
  85. package/dist/core/grants.d.ts +86 -0
  86. package/dist/core/grants.js +126 -0
  87. package/dist/core/host-events.d.ts +49 -0
  88. package/dist/core/host-events.js +257 -0
  89. package/dist/core/host-identity-links.d.ts +54 -0
  90. package/dist/core/host-identity-links.js +189 -0
  91. package/dist/core/host-status.d.ts +61 -0
  92. package/dist/core/host-status.js +211 -0
  93. package/dist/core/http-runtime.js +3 -4
  94. package/dist/core/in-flight-runs.d.ts +8 -0
  95. package/dist/core/in-flight-runs.js +56 -0
  96. package/dist/core/lease.d.ts +1 -1
  97. package/dist/core/private-directory.d.ts +20 -0
  98. package/dist/core/private-directory.js +36 -0
  99. package/dist/core/provider-wording.d.ts +12 -0
  100. package/dist/core/provider-wording.js +44 -0
  101. package/dist/core/reconciler.d.ts +39 -3
  102. package/dist/core/reconciler.js +86 -2
  103. package/dist/core/repo-access.d.ts +99 -0
  104. package/dist/core/repo-access.js +136 -0
  105. package/dist/core/review-host-checks.d.ts +11 -0
  106. package/dist/core/review-host-checks.js +41 -0
  107. package/dist/core/review-host-tools.d.ts +47 -0
  108. package/dist/core/review-host-tools.js +347 -0
  109. package/dist/core/run-heartbeat.d.ts +27 -0
  110. package/dist/core/run-heartbeat.js +54 -0
  111. package/dist/core/runner.d.ts +31 -9
  112. package/dist/core/runner.js +237 -40
  113. package/dist/core/scheduler.d.ts +1 -1
  114. package/dist/core/secrets.d.ts +12 -3
  115. package/dist/core/secrets.js +25 -6
  116. package/dist/core/subagent-memory-tools.d.ts +2 -2
  117. package/dist/core/subagent-memory-tools.js +16 -3
  118. package/dist/core/tool-admin.d.ts +81 -0
  119. package/dist/core/tool-admin.js +129 -0
  120. package/dist/core/tool-names.d.ts +42 -0
  121. package/dist/core/tool-names.js +64 -0
  122. package/dist/core/untrusted-content.d.ts +32 -0
  123. package/dist/core/untrusted-content.js +72 -0
  124. package/dist/core/webhooks.d.ts +9 -2
  125. package/dist/core/webhooks.js +23 -2
  126. package/dist/generated/prisma/browser.d.ts +328 -0
  127. package/dist/generated/prisma/browser.js +17 -0
  128. package/dist/generated/prisma/client.d.ts +347 -0
  129. package/dist/generated/prisma/client.js +34 -0
  130. package/dist/generated/prisma/commonInputTypes.d.ts +839 -0
  131. package/dist/generated/prisma/commonInputTypes.js +10 -0
  132. package/dist/generated/prisma/enums.d.ts +59 -0
  133. package/dist/generated/prisma/enums.js +59 -0
  134. package/dist/generated/prisma/internal/class.d.ts +605 -0
  135. package/dist/generated/prisma/internal/class.js +49 -0
  136. package/dist/generated/prisma/internal/prismaNamespace.d.ts +4494 -0
  137. package/dist/generated/prisma/internal/prismaNamespace.js +628 -0
  138. package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +635 -0
  139. package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +599 -0
  140. package/dist/generated/prisma/models/Agent.d.ts +3560 -0
  141. package/dist/generated/prisma/models/Agent.js +1 -0
  142. package/dist/generated/prisma/models/AgentDatastore.d.ts +1210 -0
  143. package/dist/generated/prisma/models/AgentDatastore.js +1 -0
  144. package/dist/generated/prisma/models/AgentMemory.d.ts +986 -0
  145. package/dist/generated/prisma/models/AgentMemory.js +1 -0
  146. package/dist/generated/prisma/models/AgentRepository.d.ts +1425 -0
  147. package/dist/generated/prisma/models/AgentRepository.js +1 -0
  148. package/dist/generated/prisma/models/AgentSecret.d.ts +1212 -0
  149. package/dist/generated/prisma/models/AgentSecret.js +1 -0
  150. package/dist/generated/prisma/models/AgentSubAgent.d.ts +1217 -0
  151. package/dist/generated/prisma/models/AgentSubAgent.js +1 -0
  152. package/dist/generated/prisma/models/AgentTool.d.ts +1403 -0
  153. package/dist/generated/prisma/models/AgentTool.js +1 -0
  154. package/dist/generated/prisma/models/AuthFormChallenge.d.ts +1298 -0
  155. package/dist/generated/prisma/models/AuthFormChallenge.js +1 -0
  156. package/dist/generated/prisma/models/AuthLoginKey.d.ts +1245 -0
  157. package/dist/generated/prisma/models/AuthLoginKey.js +1 -0
  158. package/dist/generated/prisma/models/AuthRateLimit.d.ts +979 -0
  159. package/dist/generated/prisma/models/AuthRateLimit.js +1 -0
  160. package/dist/generated/prisma/models/AuthSession.d.ts +1376 -0
  161. package/dist/generated/prisma/models/AuthSession.js +1 -0
  162. package/dist/generated/prisma/models/AuthUser.d.ts +1700 -0
  163. package/dist/generated/prisma/models/AuthUser.js +1 -0
  164. package/dist/generated/prisma/models/BudgetGroup.d.ts +1548 -0
  165. package/dist/generated/prisma/models/BudgetGroup.js +1 -0
  166. package/dist/generated/prisma/models/CodingAgentProfile.d.ts +1681 -0
  167. package/dist/generated/prisma/models/CodingAgentProfile.js +1 -0
  168. package/dist/generated/prisma/models/CodingProxyRequest.d.ts +1749 -0
  169. package/dist/generated/prisma/models/CodingProxyRequest.js +1 -0
  170. package/dist/generated/prisma/models/CodingProxySession.d.ts +1626 -0
  171. package/dist/generated/prisma/models/CodingProxySession.js +1 -0
  172. package/dist/generated/prisma/models/CodingRun.d.ts +3583 -0
  173. package/dist/generated/prisma/models/CodingRun.js +1 -0
  174. package/dist/generated/prisma/models/CodingService.d.ts +1348 -0
  175. package/dist/generated/prisma/models/CodingService.js +1 -0
  176. package/dist/generated/prisma/models/Datastore.d.ts +1434 -0
  177. package/dist/generated/prisma/models/Datastore.js +1 -0
  178. package/dist/generated/prisma/models/DatastoreEntry.d.ts +1314 -0
  179. package/dist/generated/prisma/models/DatastoreEntry.js +1 -0
  180. package/dist/generated/prisma/models/HostEventDelivery.d.ts +946 -0
  181. package/dist/generated/prisma/models/HostEventDelivery.js +1 -0
  182. package/dist/generated/prisma/models/HostIdentity.d.ts +1232 -0
  183. package/dist/generated/prisma/models/HostIdentity.js +1 -0
  184. package/dist/generated/prisma/models/HostIdentityLinkRequest.d.ts +1473 -0
  185. package/dist/generated/prisma/models/HostIdentityLinkRequest.js +1 -0
  186. package/dist/generated/prisma/models/OAuthAuthorizationCode.d.ts +1526 -0
  187. package/dist/generated/prisma/models/OAuthAuthorizationCode.js +1 -0
  188. package/dist/generated/prisma/models/OAuthAuthorizationRequest.d.ts +1350 -0
  189. package/dist/generated/prisma/models/OAuthAuthorizationRequest.js +1 -0
  190. package/dist/generated/prisma/models/OAuthClient.d.ts +1289 -0
  191. package/dist/generated/prisma/models/OAuthClient.js +1 -0
  192. package/dist/generated/prisma/models/OAuthFamily.d.ts +1540 -0
  193. package/dist/generated/prisma/models/OAuthFamily.js +1 -0
  194. package/dist/generated/prisma/models/OAuthGrant.d.ts +1280 -0
  195. package/dist/generated/prisma/models/OAuthGrant.js +1 -0
  196. package/dist/generated/prisma/models/Principal.d.ts +2245 -0
  197. package/dist/generated/prisma/models/Principal.js +1 -0
  198. package/dist/generated/prisma/models/RegistryAllowance.d.ts +1148 -0
  199. package/dist/generated/prisma/models/RegistryAllowance.js +1 -0
  200. package/dist/generated/prisma/models/RegistryApprovedVersion.d.ts +1219 -0
  201. package/dist/generated/prisma/models/RegistryApprovedVersion.js +1 -0
  202. package/dist/generated/prisma/models/RegistryFetch.d.ts +1428 -0
  203. package/dist/generated/prisma/models/RegistryFetch.js +1 -0
  204. package/dist/generated/prisma/models/RegistryPlanRefusal.d.ts +1294 -0
  205. package/dist/generated/prisma/models/RegistryPlanRefusal.js +1 -0
  206. package/dist/generated/prisma/models/RegistryVersionFact.d.ts +1085 -0
  207. package/dist/generated/prisma/models/RegistryVersionFact.js +1 -0
  208. package/dist/generated/prisma/models/ResourceGrant.d.ts +1437 -0
  209. package/dist/generated/prisma/models/ResourceGrant.js +1 -0
  210. package/dist/generated/prisma/models/Run.d.ts +2669 -0
  211. package/dist/generated/prisma/models/Run.js +1 -0
  212. package/dist/generated/prisma/models/RunHostCheck.d.ts +1239 -0
  213. package/dist/generated/prisma/models/RunHostCheck.js +1 -0
  214. package/dist/generated/prisma/models/RunHostStatus.d.ts +1315 -0
  215. package/dist/generated/prisma/models/RunHostStatus.js +1 -0
  216. package/dist/generated/prisma/models/SchedulerLease.d.ts +970 -0
  217. package/dist/generated/prisma/models/SchedulerLease.js +1 -0
  218. package/dist/generated/prisma/models/Secret.d.ts +1399 -0
  219. package/dist/generated/prisma/models/Secret.js +1 -0
  220. package/dist/generated/prisma/models/SecretElicitationOutcome.d.ts +973 -0
  221. package/dist/generated/prisma/models/SecretElicitationOutcome.js +1 -0
  222. package/dist/generated/prisma/models/Task.d.ts +1176 -0
  223. package/dist/generated/prisma/models/Task.js +1 -0
  224. package/dist/generated/prisma/models/Tool.d.ts +1490 -0
  225. package/dist/generated/prisma/models/Tool.js +1 -0
  226. package/dist/generated/prisma/models/Webhook.d.ts +1386 -0
  227. package/dist/generated/prisma/models/Webhook.js +1 -0
  228. package/dist/generated/prisma/models.d.ts +45 -0
  229. package/dist/generated/prisma/models.js +1 -0
  230. package/dist/help/build.d.ts +1 -0
  231. package/dist/help/build.js +9 -0
  232. package/dist/help/catalog.d.ts +24 -0
  233. package/dist/help/catalog.js +160 -0
  234. package/dist/help/cli.d.ts +2 -0
  235. package/dist/help/cli.js +65 -0
  236. package/dist/help/runtime.d.ts +3 -0
  237. package/dist/help/runtime.js +44 -0
  238. package/dist/help/search.d.ts +9 -0
  239. package/dist/help/search.js +104 -0
  240. package/dist/help-index.json +660 -0
  241. package/dist/import/cli-args.js +3 -2
  242. package/dist/import/create.d.ts +6 -1
  243. package/dist/import/create.js +68 -14
  244. package/dist/import/index.d.ts +1 -1
  245. package/dist/import/index.js +19 -9
  246. package/dist/import/neutral-schema.d.ts +11 -11
  247. package/dist/mcp/auth/access.d.ts +70 -0
  248. package/dist/mcp/auth/access.js +58 -0
  249. package/dist/mcp/auth/grants-cli.d.ts +149 -0
  250. package/dist/mcp/auth/grants-cli.js +518 -0
  251. package/dist/mcp/auth/host-account-cli.d.ts +2 -0
  252. package/dist/mcp/auth/host-account-cli.js +47 -0
  253. package/dist/mcp/auth/ownership.d.ts +37 -63
  254. package/dist/mcp/auth/ownership.js +19 -14
  255. package/dist/mcp/auth/principal.d.ts +1 -1
  256. package/dist/mcp/auth/repo-authorization.d.ts +22 -0
  257. package/dist/mcp/auth/repo-authorization.js +51 -0
  258. package/dist/mcp/auth/resource-server.d.ts +32 -3
  259. package/dist/mcp/auth/resource-server.js +84 -3
  260. package/dist/mcp/auth/self-hosted/browser.js +22 -8
  261. package/dist/mcp/auth/self-hosted/cli.d.ts +1 -1
  262. package/dist/mcp/auth/self-hosted/cli.js +47 -13
  263. package/dist/mcp/auth/self-hosted/credentials.d.ts +21 -3
  264. package/dist/mcp/auth/self-hosted/credentials.js +62 -4
  265. package/dist/mcp/auth/self-hosted/rate-limit.d.ts +1 -1
  266. package/dist/mcp/auth/self-hosted/session.d.ts +3 -2
  267. package/dist/mcp/context.d.ts +28 -2
  268. package/dist/mcp/errors.d.ts +25 -6
  269. package/dist/mcp/errors.js +98 -0
  270. package/dist/mcp/host-events/github-ingress.d.ts +36 -0
  271. package/dist/mcp/host-events/github-ingress.js +92 -0
  272. package/dist/mcp/host-events/github-user-callback.d.ts +18 -0
  273. package/dist/mcp/host-events/github-user-callback.js +50 -0
  274. package/dist/mcp/index.d.ts +8 -1
  275. package/dist/mcp/index.js +106 -16
  276. package/dist/mcp/server.d.ts +1 -1
  277. package/dist/mcp/server.js +27 -9
  278. package/dist/mcp/shared/page-style.d.ts +16 -0
  279. package/dist/mcp/shared/page-style.js +129 -0
  280. package/dist/mcp/tasks/manager.d.ts +1 -1
  281. package/dist/mcp/tools/agents.js +447 -49
  282. package/dist/mcp/tools/budget-groups.js +3 -3
  283. package/dist/mcp/tools/datastore.js +23 -16
  284. package/dist/mcp/tools/grants.d.ts +2 -0
  285. package/dist/mcp/tools/grants.js +239 -0
  286. package/dist/mcp/tools/help.d.ts +5 -0
  287. package/dist/mcp/tools/help.js +67 -0
  288. package/dist/mcp/tools/host-accounts.d.ts +2 -0
  289. package/dist/mcp/tools/host-accounts.js +114 -0
  290. package/dist/mcp/tools/memory.d.ts +7 -1
  291. package/dist/mcp/tools/memory.js +5 -5
  292. package/dist/mcp/tools/repositories.d.ts +2 -0
  293. package/dist/mcp/tools/repositories.js +181 -0
  294. package/dist/mcp/tools/runs.d.ts +6 -0
  295. package/dist/mcp/tools/runs.js +60 -6
  296. package/dist/mcp/tools/scheduling.js +4 -7
  297. package/dist/mcp/tools/secret-elicitation-form.d.ts +1 -1
  298. package/dist/mcp/tools/secret-elicitation-form.js +10 -28
  299. package/dist/mcp/tools/secret-elicitation.d.ts +1 -1
  300. package/dist/mcp/tools/secrets.js +18 -6
  301. package/dist/mcp/tools/services.d.ts +2 -0
  302. package/dist/mcp/tools/services.js +222 -0
  303. package/dist/mcp/tools/subagents.js +53 -17
  304. package/dist/mcp/tools/tools.d.ts +41 -0
  305. package/dist/mcp/tools/tools.js +202 -41
  306. package/dist/mcp/tools/trigger.js +36 -6
  307. package/dist/mcp/tools/webhooks.js +15 -4
  308. package/dist/mcp/transport/streamable-http.d.ts +11 -1
  309. package/dist/mcp/transport/streamable-http.js +32 -2
  310. package/dist/mcp/unattended-schedules.d.ts +1 -1
  311. package/dist/mcp/webhooks/ingress.d.ts +1 -1
  312. package/dist/providers/auth/delegating.d.ts +19 -0
  313. package/dist/providers/auth/delegating.js +71 -0
  314. package/dist/providers/auth/index.d.ts +3 -1
  315. package/dist/providers/auth/index.js +11 -0
  316. package/dist/providers/auth/self-hosted.d.ts +4 -3
  317. package/dist/providers/auth/self-hosted.js +16 -4
  318. package/dist/providers/auth/types.d.ts +6 -0
  319. package/dist/providers/coding-proxy/memory-ledger.d.ts +3 -0
  320. package/dist/providers/coding-proxy/memory-ledger.js +21 -2
  321. package/dist/providers/coding-proxy/metering.d.ts +4 -0
  322. package/dist/providers/coding-proxy/metering.js +28 -2
  323. package/dist/providers/coding-proxy/prisma-ledger.d.ts +18 -1
  324. package/dist/providers/coding-proxy/prisma-ledger.js +50 -5
  325. package/dist/providers/coding-proxy/proxy.d.ts +13 -0
  326. package/dist/providers/coding-proxy/proxy.js +479 -18
  327. package/dist/providers/coding-proxy/registry/audit.d.ts +131 -0
  328. package/dist/providers/coding-proxy/registry/audit.js +380 -0
  329. package/dist/providers/coding-proxy/registry/bounded-fetch.d.ts +16 -0
  330. package/dist/providers/coding-proxy/registry/bounded-fetch.js +77 -0
  331. package/dist/providers/coding-proxy/registry/plan.d.ts +58 -0
  332. package/dist/providers/coding-proxy/registry/plan.js +304 -0
  333. package/dist/providers/coding-proxy/registry/prisma-store.d.ts +34 -0
  334. package/dist/providers/coding-proxy/registry/prisma-store.js +151 -0
  335. package/dist/providers/coding-proxy/registry/service.d.ts +213 -0
  336. package/dist/providers/coding-proxy/registry/service.js +1137 -0
  337. package/dist/providers/coding-proxy/registry/store.d.ts +127 -0
  338. package/dist/providers/coding-proxy/registry/store.js +70 -0
  339. package/dist/providers/coding-proxy/runtime.d.ts +18 -1
  340. package/dist/providers/coding-proxy/runtime.js +63 -0
  341. package/dist/providers/coding-proxy/secure-fetch.js +0 -1
  342. package/dist/providers/coding-proxy/server.d.ts +11 -0
  343. package/dist/providers/coding-proxy/server.js +163 -0
  344. package/dist/providers/coding-proxy/types.d.ts +15 -0
  345. package/dist/providers/datastore/postgres.d.ts +1 -1
  346. package/dist/providers/engine/types.d.ts +10 -0
  347. package/dist/providers/executor/build.d.ts +3 -3
  348. package/dist/providers/executor/composition.d.ts +4 -1
  349. package/dist/providers/executor/composition.js +19 -0
  350. package/dist/providers/executor/container.d.ts +106 -4
  351. package/dist/providers/executor/container.js +305 -22
  352. package/dist/providers/executor/dbos.d.ts +3 -4
  353. package/dist/providers/executor/in-process.d.ts +2 -3
  354. package/dist/providers/executor/routing.d.ts +7 -0
  355. package/dist/providers/executor/routing.js +13 -0
  356. package/dist/providers/executor/types.d.ts +22 -0
  357. package/dist/providers/jobs/claude-tool-setup.d.ts +23 -0
  358. package/dist/providers/jobs/claude-tool-setup.js +50 -0
  359. package/dist/providers/jobs/collect-prune.d.ts +7 -0
  360. package/dist/providers/jobs/collect-prune.js +27 -0
  361. package/dist/providers/jobs/docker-isolation.d.ts +48 -3
  362. package/dist/providers/jobs/docker-isolation.js +213 -22
  363. package/dist/providers/jobs/docker-services.d.ts +35 -0
  364. package/dist/providers/jobs/docker-services.js +191 -0
  365. package/dist/providers/jobs/docker.d.ts +60 -2
  366. package/dist/providers/jobs/docker.js +313 -50
  367. package/dist/providers/jobs/fake-kubernetes-api.d.ts +1 -0
  368. package/dist/providers/jobs/fake-kubernetes-api.js +12 -3
  369. package/dist/providers/jobs/kubernetes-isolation.d.ts +17 -2
  370. package/dist/providers/jobs/kubernetes-isolation.js +238 -57
  371. package/dist/providers/jobs/kubernetes-platform.d.ts +10 -4
  372. package/dist/providers/jobs/kubernetes-platform.js +11 -5
  373. package/dist/providers/jobs/kubernetes-preflight.js +3 -0
  374. package/dist/providers/jobs/kubernetes.d.ts +21 -2
  375. package/dist/providers/jobs/kubernetes.js +117 -31
  376. package/dist/providers/jobs/types.d.ts +20 -0
  377. package/dist/providers/llm/anthropic.js +6 -2
  378. package/dist/providers/llm/bedrock.js +2 -1
  379. package/dist/providers/llm/claude-messages.d.ts +5 -1
  380. package/dist/providers/llm/claude-messages.js +1 -0
  381. package/dist/providers/llm/claude-provider.d.ts +3 -1
  382. package/dist/providers/llm/claude-provider.js +5 -1
  383. package/dist/providers/llm/index.d.ts +1 -1
  384. package/dist/providers/llm/index.js +1 -1
  385. package/dist/providers/llm/pricing-anthropic.d.ts +10 -0
  386. package/dist/providers/llm/pricing-anthropic.js +32 -14
  387. package/dist/providers/llm/pricing-bedrock-claude.d.ts +8 -0
  388. package/dist/providers/llm/pricing-bedrock-claude.js +9 -0
  389. package/dist/providers/llm/routing.d.ts +10 -1
  390. package/dist/providers/llm/routing.js +18 -0
  391. package/dist/providers/llm/types.d.ts +12 -0
  392. package/dist/providers/llm/types.js +8 -1
  393. package/dist/providers/memory/postgres.d.ts +1 -1
  394. package/dist/providers/review-host/diff-lines.d.ts +16 -0
  395. package/dist/providers/review-host/diff-lines.js +59 -0
  396. package/dist/providers/review-host/github-events.d.ts +6 -0
  397. package/dist/providers/review-host/github-events.js +180 -0
  398. package/dist/providers/review-host/github-user-auth.d.ts +38 -0
  399. package/dist/providers/review-host/github-user-auth.js +128 -0
  400. package/dist/providers/review-host/github.d.ts +57 -0
  401. package/dist/providers/review-host/github.js +567 -0
  402. package/dist/providers/review-host/index.d.ts +12 -0
  403. package/dist/providers/review-host/index.js +30 -0
  404. package/dist/providers/review-host/review-format.d.ts +19 -0
  405. package/dist/providers/review-host/review-format.js +59 -0
  406. package/dist/providers/review-host/types.d.ts +284 -0
  407. package/dist/providers/review-host/types.js +24 -0
  408. package/dist/providers/vcs/git.d.ts +16 -6
  409. package/dist/providers/vcs/git.js +79 -14
  410. package/dist/providers/vcs/github.d.ts +74 -3
  411. package/dist/providers/vcs/github.js +195 -15
  412. package/dist/providers/vcs/types.d.ts +42 -4
  413. package/dist/quickstart/index.js +34 -32
  414. package/dist/quickstart/migrate.d.ts +23 -0
  415. package/dist/quickstart/migrate.js +125 -0
  416. package/dist/sandbox/fetch-policy.d.ts +20 -2
  417. package/dist/sandbox/fetch-policy.js +64 -3
  418. package/dist/sandbox/host-functions.d.ts +9 -1
  419. package/dist/sandbox/host-functions.js +12 -5
  420. package/dist/serve.js +1 -1
  421. package/dist/wardby-bin.js +6 -0
  422. package/docs/README.md +30 -0
  423. package/docs/architecture-runtime.md +90 -0
  424. package/docs/assets/brand/wardby-icon-512.png +0 -0
  425. package/docs/assets/brand/wardby-icon.svg +16 -0
  426. package/docs/assets/brand/wardby-mascot-profile-512.png +0 -0
  427. package/docs/assets/brand/wardby-mascot.png +0 -0
  428. package/docs/assets/brand/wardby-mascot.svg +5 -0
  429. package/docs/assets/wardby-workflow.svg +106 -0
  430. package/docs/code-review-agents.md +481 -0
  431. package/docs/coding-agent-setup.md +172 -0
  432. package/docs/coding-packages.md +455 -0
  433. package/docs/coding-services.md +300 -0
  434. package/docs/coding-worker-byo-images.md +98 -0
  435. package/docs/coding-worker-isolation.md +1061 -0
  436. package/docs/getting-started-gke.md +615 -0
  437. package/docs/getting-started-identity-provider.md +308 -0
  438. package/docs/getting-started.md +133 -0
  439. package/docs/observability.md +53 -0
  440. package/docs/release-verification.md +66 -0
  441. package/docs/security-deployment.md +657 -0
  442. package/help/code-review-agents.md +31 -0
  443. package/help/coding-packages.md +31 -0
  444. package/help/coding-services.md +71 -0
  445. package/help/creating-agents.md +68 -0
  446. package/help/deploy-gke.md +39 -0
  447. package/help/deployment-targets.md +39 -0
  448. package/help/errors/budget-group-exhausted.md +25 -0
  449. package/help/errors/docker-isolation-unsupported.md +26 -0
  450. package/help/errors/protected-path.md +45 -0
  451. package/help/errors/repo-access.md +27 -0
  452. package/help/errors/service-declaration-invalid.md +27 -0
  453. package/help/errors/service-declaration-unavailable.md +25 -0
  454. package/help/errors/service-launcher-unsupported.md +30 -0
  455. package/help/errors/service-not-allowed.md +27 -0
  456. package/help/errors/service-unknown.md +23 -0
  457. package/help/errors/service-unready.md +49 -0
  458. package/help/getting-started.md +31 -0
  459. package/help/github.md +30 -0
  460. package/help/identity-and-access.md +39 -0
  461. package/help/mcp.md +30 -0
  462. package/help/native-capabilities.md +30 -0
  463. package/help/observability.md +41 -0
  464. package/help/operating-agents.md +30 -0
  465. package/help/security.md +27 -0
  466. package/help/troubleshooting/budgets.md +26 -0
  467. package/help/troubleshooting/coding-workers.md +47 -0
  468. package/help/troubleshooting/repository-access.md +27 -0
  469. package/package.json +30 -11
  470. package/prisma/migrate.config.mjs +20 -0
  471. package/prisma/migrations/20260925010000_coding_collect_exclude/migration.sql +8 -0
  472. package/prisma/migrations/20260925015000_allowed_egress_default/migration.sql +8 -0
  473. package/prisma/migrations/20260925020000_coding_package_registry/migration.sql +55 -0
  474. package/prisma/migrations/20260925030000_tool_name_per_owner/migration.sql +11 -0
  475. package/prisma/migrations/20260926010000_run_trigger_host_event/migration.sql +7 -0
  476. package/prisma/migrations/20260926020000_code_review_hosts/migration.sql +53 -0
  477. package/prisma/migrations/20260926030000_auth_user_roles/migration.sql +9 -0
  478. package/prisma/migrations/20260926040000_agent_effort/migration.sql +6 -0
  479. package/prisma/migrations/20260926050000_registry_lockfile_plan/migration.sql +32 -0
  480. package/prisma/migrations/20260926050000_repo_access_authorization/migration.sql +82 -0
  481. package/prisma/migrations/20260926060000_registry_plan_refusal/migration.sql +19 -0
  482. package/prisma/migrations/20260926100000_registry_plan_refusal_published_at/migration.sql +5 -0
  483. package/prisma/migrations/20260926190000_run_host_status/migration.sql +18 -0
  484. package/prisma/migrations/20260926210000_run_host_status_at_dispatch/migration.sql +5 -0
  485. package/prisma/migrations/20260927010000_resource_grants/migration.sql +72 -0
  486. package/prisma/migrations/20260927020000_proxy_session_budget_exhausted/migration.sql +3 -0
  487. package/prisma/migrations/20260927030000_coding_debug_trace/migration.sql +4 -0
  488. package/prisma/migrations/20260927040000_proxy_session_upstream_failure/migration.sql +3 -0
  489. package/prisma/migrations/20260927050000_coding_run_services/migration.sql +74 -0
  490. package/prisma/migrations/20260928000000_coding_run_tool_image/migration.sql +5 -0
  491. package/prisma/schema.prisma +417 -23
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: code-review-agents
3
+ title: Run GitHub code-review agents
4
+ summary: Link a read-only review agent to a repository for pull-request checks and trusted mention workflows.
5
+ audience: operator
6
+ tags: [github, code-review, pull-requests, webhooks]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Run GitHub code-review agents
11
+
12
+ A native agent linked through Wardby's GitHub App can review pull requests
13
+ without receiving repository credentials. On pull-request pushes it creates an
14
+ in-progress check, reads the diff, then posts inline findings, one updated
15
+ summary comment, and a final approve, changes-requested, or comment result.
16
+ Budget exhaustion or another failed review makes the check fail rather than
17
+ silently pass branch protection.
18
+
19
+ People with write access to the repository may request another review with
20
+ `@<app-slug> review`. Other mentions can be routed to a dedicated mention
21
+ agent, which acknowledges the request and posts its final outcome. Do not give
22
+ a mention agent instructions that could echo secrets or internal details: its
23
+ reply is visible wherever the mention was posted.
24
+
25
+ Wardby skips pull requests whose head is in a fork. It also ignores mentions
26
+ from bots and people without write access. Repository links require the
27
+ agent owner's linked GitHub access, or an explicitly recorded administrator
28
+ approval.
29
+
30
+ For App permissions, webhook setup, trigger configuration, and security
31
+ details, follow [`docs/code-review-agents.md`](../docs/code-review-agents.md).
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: coding-packages
3
+ title: Approve packages for coding agents
4
+ summary: Let Codex coding workers install vetted npm and PyPI dependencies through Wardby's registry proxy.
5
+ audience: operator
6
+ tags: [coding-agents, packages, npm, pypi, supply-chain]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Approve packages for coding agents
11
+
12
+ Coding workers have no direct registry network access. For **Codex** workers,
13
+ Wardby's registry proxy can allow `npm install` and `pip install` from a
14
+ per-agent npm or PyPI allowlist. The proxy records what was fetched and applies
15
+ supply-chain checks, including package graph validation, release-age policy,
16
+ and vulnerability filtering.
17
+
18
+ An empty allowlist keeps registry mode off. Approve only top-level packages;
19
+ Wardby validates and permits the required transitive dependency graph for the
20
+ run. Changing a package allowlist or policy needs `packages:approve` (or
21
+ `agents:admin`) and a Wardby `admin` or `package-approver` role.
22
+
23
+ Registry mode works for Codex and Claude Code runs alike, on the `node`
24
+ toolchain (npm) and the `node-python` toolchain (npm and pip). Claude Code runs
25
+ its shell commands in a separate, credential-free tool-runner container that
26
+ reaches the registry through the run's proxy network. Use a pinned custom
27
+ worker image when an agent needs system packages, another runtime, or
28
+ dependencies that should be baked into the image.
29
+
30
+ Read [`docs/coding-packages.md`](../docs/coding-packages.md) for allowlist
31
+ syntax, package-policy controls, lockfile behavior, and refusal errors.
@@ -0,0 +1,71 @@
1
+ ---
2
+ id: coding-services
3
+ title: Give coding runs the services their tests need
4
+ summary: Let coding runs on the Kubernetes or Docker launcher start fresh PostgreSQL, Redis or MySQL instances declared in the repository's .wardby/services.yaml.
5
+ audience: operator
6
+ tags: [coding-agents, services, postgres, redis, mysql, kubernetes, docker]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Give coding runs the services their tests need
11
+
12
+ A coding run can have a PostgreSQL, Redis or MySQL instance next to it for the
13
+ length of the run. Three parties agree before a service starts:
14
+
15
+ - **The repository** declares it in `.wardby/services.yaml` on its base branch,
16
+ for example `services: { postgres: "16" }`. Wardby reads the file from the
17
+ run's base branch (the agent's `baseRef`, or a `baseRef` given to
18
+ `trigger_agent` for that run), never from the run's own branch, so a change
19
+ to the declaration takes effect only once it is merged into that base.
20
+ - **The service catalog** says what each name and version is: a digest-pinned
21
+ image, its readiness check, resources, and the variables the agent's shells
22
+ receive (`testEnv`, such as `DATABASE_URL`). `list_services` and
23
+ `get_service` need `agents:read`. `create_service`, `update_service` and
24
+ `delete_service` need `services:manage` and the `admin` or
25
+ `service-manager` role. Built-in entries (`postgres` 15, 16 and 17, `redis`
26
+ 7, `mysql` 8) cannot be changed over MCP.
27
+ - **The agent's owner** lists the catalog names its runs may use in
28
+ `codingProfile.services`. An empty list, the default, allows none.
29
+
30
+ An agent with an empty list never reads the repository's declaration at all —
31
+ wardby only looks at `.wardby/services.yaml` for an agent that allows at least
32
+ one service. Such an agent's runs simply start without services, whatever a
33
+ repository declares, and none of the errors below can apply to them.
34
+
35
+ Services need the Kubernetes job launcher with Kubernetes 1.29 or later (each
36
+ service runs as a native sidecar in the run's pod) or the Docker job launcher
37
+ (each service runs as its own container sharing the run's network namespace);
38
+ both start them for Codex and Claude Code agents. Each run gets its own empty
39
+ instance, reachable on `127.0.0.1`; the run's sandbox and network policy do
40
+ not change, and the instance is deleted with the run. Each service's CPU,
41
+ memory and disk count toward the run: on Kubernetes toward its pod, namespace
42
+ quota and what a managed cluster bills; on Docker toward the host's memory,
43
+ because its data is kept in memory.
44
+
45
+ A bring-your-own worker image
46
+ ([`docs/coding-worker-byo-images.md`](../docs/coding-worker-byo-images.md))
47
+ needs driver v11 or later to run with services.
48
+
49
+ Catalog values are visible to anyone with `agents:read`. Use throwaway test
50
+ credentials only; never put a real secret in `serviceEnv` or `testEnv`.
51
+
52
+ Every run protects `.wardby/**` except `.wardby/services.yaml`, so a coding
53
+ agent may propose a declaration change in its pull request but cannot change
54
+ other `.wardby/` files. An agent's own `protectedPaths` exceptions (entries
55
+ starting with `!`) must be literal file paths and cannot unprotect `.wardby/`.
56
+
57
+ When upgrading a deployment that delegates to an identity provider, define the
58
+ `services:manage` scope in the provider first; see
59
+ [Configure identity and privileged access](identity-and-access.md).
60
+
61
+ If a run is refused or fails over its services, read the page for its code:
62
+
63
+ - [`service_declaration_invalid`](errors/service-declaration-invalid.md)
64
+ - [`service_declaration_unavailable`](errors/service-declaration-unavailable.md)
65
+ - [`service_unknown`](errors/service-unknown.md)
66
+ - [`service_not_allowed`](errors/service-not-allowed.md)
67
+ - [`service_launcher_unsupported`](errors/service-launcher-unsupported.md)
68
+ - [`service_unready`](errors/service-unready.md)
69
+
70
+ Read [`docs/coding-services.md`](../docs/coding-services.md) for the file
71
+ format, catalog fields, built-in variables, custom entries, and capacity.
@@ -0,0 +1,68 @@
1
+ ---
2
+ id: creating-agents
3
+ title: Choose a native or coding agent
4
+ summary: Decide whether a task should run as a native Wardby agent or an isolated Codex or Claude Code coding agent.
5
+ audience: developer
6
+ tags: [agents, native-agents, coding-agents, codex, claude-code]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Choose a native or coding agent
11
+
12
+ Create a **native agent** when Wardby should run a model with explicit,
13
+ attached capabilities to produce a bounded operational result. Create a
14
+ **coding agent** when the task must inspect and change a Git repository, run
15
+ project checks, and optionally open a draft pull request.
16
+
17
+ | Choose | Best for | Execution model | Typical result |
18
+ | ------------ | ------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
19
+ | Native agent | Review, triage, analysis, reporting, workflow coordination, and API-backed tasks | Wardby's managed native run loop with only its attached tools, secrets, datastores, and sub-agents | A structured result, report, decision, or bounded follow-up action |
20
+ | Coding agent | Repository changes, tests, dependency updates, implementation work, and PR revisions | An isolated Codex or Claude Code worker with a trusted proxy and Git finalization | No changes, a bounded result, or one controlled draft pull request |
21
+
22
+ ## Start with a native agent
23
+
24
+ Native agents are the default when a task does not need a full repository
25
+ workspace. Give the agent a narrow purpose, model, per-run budget, and only the
26
+ tools or data it needs. Attach schedules or webhooks when the work should run
27
+ without a person starting it manually.
28
+
29
+ Examples include an architecture reviewer that writes findings to a datastore,
30
+ a release monitor that investigates an alert, or a triage agent that turns
31
+ incoming information into a report for a person to act on.
32
+
33
+ ## Use a coding agent for repository work
34
+
35
+ Coding agents use a `codingProfile` that selects Codex or Claude Code and names
36
+ the authorized repository. They run in isolated workers; Wardby keeps provider
37
+ credentials and the GitHub App private key in trusted components. A coding run
38
+ can change a checkout and run approved checks, but trusted finalization is what
39
+ validates the result, pushes a controlled branch, and opens a draft pull
40
+ request. It never auto-merges.
41
+
42
+ Before creating one, configure immutable worker images, the selected launcher,
43
+ the trusted coding proxy, and a narrowly installed GitHub App. The agent owner
44
+ must have the required repository access, or an administrator must explicitly
45
+ approve the repository.
46
+
47
+ ## Decision checklist
48
+
49
+ Choose a native agent when all of these are true:
50
+
51
+ - The task can be completed with a narrow set of attached tools or data.
52
+ - A repository checkout, shell-based project setup, and code changes are not
53
+ required.
54
+ - The intended output is an analysis, report, decision, or controlled API
55
+ action.
56
+
57
+ Choose a coding agent when any of these are true:
58
+
59
+ - The agent must edit a repository or execute the project's test suite.
60
+ - The reviewable outcome should be a branch or draft pull request.
61
+ - The task needs a coding-agent builder such as Codex or Claude Code inside an
62
+ isolated workspace.
63
+
64
+ Do not use a coding agent merely because a task is complex. Start with the
65
+ least powerful execution model that can safely produce the required outcome.
66
+ Read [Connect GitHub repositories](github.md) and
67
+ [Troubleshoot coding workers](troubleshooting/coding-workers.md) before
68
+ enabling repository-changing work.
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: deploy-gke
3
+ title: Deploy Wardby on GKE Autopilot
4
+ summary: Use the supported Google Cloud path for a private database, isolated coding workers, and HTTPS ingress.
5
+ audience: operator
6
+ tags: [deployment, gke, gcp, kubernetes, production]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Deploy Wardby on GKE Autopilot
11
+
12
+ The supported Google Cloud deployment creates a GKE Autopilot cluster, private
13
+ Cloud SQL for PostgreSQL, Artifact Registry, HTTPS Gateway, Google Secret
14
+ Manager synchronization, and isolated gVisor-backed **Codex** coding-worker
15
+ pods. It also applies namespace RBAC and default-deny network policies.
16
+
17
+ Use a dedicated billed project, a hostname you control, remote Terraform state,
18
+ and a GitHub App installed only on repositories that agents need. Review
19
+ Terraform's plan and set cloud budgets before applying it: the deployment
20
+ creates billable resources.
21
+
22
+ The deployment process is:
23
+
24
+ 1. Install `gcloud`, Terraform, Docker with `linux/amd64` support, `kubectl`,
25
+ Helm, Node.js 24, and authenticate to the target project.
26
+ 2. Configure `deploy/gke/terraform.tfvars`, apply Terraform, and prepare the
27
+ Gateway's address, certificate map, Cloud Armor policy, and DNS record.
28
+ 3. Put first-time values in an untracked `.env.local`; `deploy/gke/up.sh`
29
+ seeds Secret Manager without overwriting existing production values.
30
+ 4. Run `HOSTNAME=wardby.example.com deploy/gke/up.sh`, then verify DNS,
31
+ certificate issuance, database IAM bootstrap, and service health.
32
+
33
+ Claude Code's two-container executor is currently Docker-only; Kubernetes
34
+ coding workers use the Codex path. Configure an identity provider and GitHub
35
+ App before allowing people to use the public endpoint.
36
+
37
+ Follow the complete, ordered guide at
38
+ [`docs/getting-started-gke.md`](../docs/getting-started-gke.md). It includes
39
+ the precise IAM, DNS, bootstrap, upgrades, and teardown steps.
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: deployment-targets
3
+ title: Choose a deployment target
4
+ summary: Pick the supported Wardby deployment path and understand its operational boundary.
5
+ audience: operator
6
+ tags: [deployment, docker, gke, aws, production]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Choose a deployment target
11
+
12
+ Wardby has one local path and two production-ready deployment shapes:
13
+
14
+ - **Local development:** `wardby quickstart` runs the control plane locally
15
+ with its portable PostgreSQL container. It is the best place to evaluate,
16
+ develop agents, and connect a local Codex or Claude Code client.
17
+ - **Production container baseline:** run the published production image with
18
+ PostgreSQL, HTTPS ingress, durable storage, backups, and an operator-owned
19
+ identity provider. The Compose and Caddy configuration is a reference
20
+ baseline, not a managed platform.
21
+ - **Google Kubernetes Engine Autopilot:** the supported Google Cloud path. It
22
+ provisions GKE, private-IP Cloud SQL, Artifact Registry, isolated Codex
23
+ workers, HTTPS Gateway, and GCP-native secret and network controls. See
24
+ [Deploy on GKE](deploy-gke.md).
25
+
26
+ AWS is supported as a portable runtime target and has a Bedrock Claude adapter,
27
+ but Wardby does not ship a native AWS deployment module. Other cloud providers
28
+ can run the production container image with equivalent database, ingress,
29
+ identity, secret, isolation, and observability controls; that infrastructure is
30
+ operator-owned.
31
+
32
+ The older `deploy/gcp` Cloud Run module is deprecated. Do not choose it for a
33
+ new installation.
34
+
35
+ Before going live, complete the deployment security checklist and make a
36
+ backup, upgrades, alerting, and incident-response plan. Read
37
+ [`docs/getting-started.md`](../docs/getting-started.md) for the local and
38
+ container setup, and [`docs/security-deployment.md`](../docs/security-deployment.md)
39
+ for the production controls.
@@ -0,0 +1,25 @@
1
+ ---
2
+ id: errors/budget-group-exhausted
3
+ title: Budget group exhausted
4
+ summary: Wardby refused the run because the shared budget group has no remaining capacity for the period.
5
+ audience: operator
6
+ tags: [error, budget, refusal]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Budget group exhausted
11
+
12
+ An error such as `budget_group_exhausted:week` means the agent's budget group
13
+ has no capacity left for that period after accounting for actual spending and
14
+ active reservations. Wardby refuses the run before model work or a coding
15
+ worker begins.
16
+
17
+ 1. Inspect the budget group's `spentUsd` and `reservedUsd` values.
18
+ 2. Inspect active and recent runs that use the group.
19
+ 3. Wait for the period to reset, cancel unneeded active work, or deliberately
20
+ adjust the agent or group budget.
21
+ 4. Trigger a new run after capacity is available; a refused run is not resumed
22
+ automatically.
23
+
24
+ Do not raise a limit merely to clear a refusal without confirming the intended
25
+ owner, schedule, and overlapping work. See [Budget troubleshooting](../troubleshooting/budgets.md).
@@ -0,0 +1,26 @@
1
+ ---
2
+ id: errors/docker-isolation-unsupported
3
+ title: Coding-worker isolation unavailable
4
+ summary: Wardby refused to launch a coding worker because it could not verify the required isolation controls.
5
+ audience: operator
6
+ tags: [error, coding-agents, docker, isolation]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Coding-worker isolation unavailable
11
+
12
+ `docker_isolation_unsupported` means a required worker-isolation guarantee was
13
+ missing, unexpected, or could not be inspected. Wardby fails closed rather than
14
+ running a worker with a weaker profile.
15
+
16
+ 1. Run `wardby coding preflight` and correct the reported launcher, image,
17
+ proxy-network, or host-support issue.
18
+ 2. Confirm worker images are immutable image IDs or digests, not mutable tags.
19
+ 3. Confirm the trusted proxy and worker use the intended isolated network and
20
+ that no unapproved host mount, Docker socket, environment, or network path
21
+ is present.
22
+ 4. Re-run preflight before triggering another coding run.
23
+
24
+ If the deployment target does not support the selected coding provider, choose
25
+ a supported launcher/provider combination instead of disabling the controls.
26
+ See [Coding-worker troubleshooting](../troubleshooting/coding-workers.md).
@@ -0,0 +1,45 @@
1
+ ---
2
+ id: errors/protected-path
3
+ title: Run changed a protected path
4
+ summary: A coding run's changes touched a path this agent may not edit, so none of its changes were kept.
5
+ audience: operator
6
+ tags: [error, coding-agents, vcs]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Run changed a protected path
11
+
12
+ A run that failed with category `protected_path` finished its work, but the
13
+ changes it collected included a file its agent is not allowed to edit. Wardby
14
+ discards the run's changes entirely rather than dropping just that file:
15
+ nothing from the run reaches a pull request.
16
+
17
+ Wardby protects two kinds of paths on every coding run:
18
+
19
+ - **The agent's own `protectedPaths`**, a list of glob patterns set on the
20
+ agent (`codingProfile.protectedPaths`, via `create_agent`/`update_agent`).
21
+ An entry may start with `!` to carve out one literal file as an exception
22
+ to the agent's own patterns; a whole tree can never be carved out this way.
23
+ - **The `.wardby/` baseline**, which every coding run gets regardless of the
24
+ agent's own settings. It protects everything under `.wardby/` except the one
25
+ literal file `.wardby/services.yaml`, which any coding agent may propose a
26
+ change to (see [Coding services](../coding-services.md)) — the baseline
27
+ cannot be widened to cover that file, and no exception can narrow it further
28
+ than that.
29
+
30
+ What to do:
31
+
32
+ 1. Ask again without changing the named file. If the change is small, doing it
33
+ yourself and letting the agent build on top is often fastest.
34
+ 2. If the agent genuinely needs to change that file, its owner (or an admin)
35
+ can widen `codingProfile.protectedPaths` with `update_agent` — for example
36
+ adding a `!`-prefixed exception for one file. This can never remove the
37
+ `.wardby/` baseline itself.
38
+ 3. Otherwise, the repository owner makes the change directly and the agent
39
+ works around it on the next run.
40
+
41
+ When this run is a sub-run another agent dispatched (for example a router
42
+ handing work to a coding agent), the parent sees a failed sub-run on its own
43
+ status comment: "A sub-run could not open its changes: it changed a file its
44
+ agent may not edit, so none of its changes were kept." That line never names
45
+ the file; check the sub-run's own PR comment or `get_run` for it.
@@ -0,0 +1,27 @@
1
+ ---
2
+ id: errors/repo-access
3
+ title: Repository access refused
4
+ summary: Wardby refused repository work because it could not confirm the managed agent owner's required GitHub access.
5
+ audience: operator
6
+ tags: [error, github, authorization, refusal]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Repository access refused
11
+
12
+ `repo_access` means Wardby cannot authorize the agent owner's current access to
13
+ the selected repository. Nothing is cloned or pushed for a refusal at run
14
+ preparation. The check also happens immediately before a coding run pushes, so
15
+ access lost during a run prevents publication.
16
+
17
+ 1. Confirm the agent has an owner and the intended repository is attached.
18
+ 2. Confirm that owner has linked their GitHub account to Wardby.
19
+ 3. Confirm the GitHub App is installed on the repository and the owner has the
20
+ required permission: write for coding work, read for a read-only link.
21
+ 4. If no individual owner can hold the access, ask a Wardby administrator to
22
+ record an explicit repository approval.
23
+ 5. Trigger a fresh run after the correction.
24
+
25
+ `repo_access_unavailable` is different: GitHub could not be queried reliably.
26
+ Resolve the availability condition and retry later rather than treating it as
27
+ an authorization success. See [Repository-access troubleshooting](../troubleshooting/repository-access.md).
@@ -0,0 +1,27 @@
1
+ ---
2
+ id: errors/service-declaration-invalid
3
+ title: Service declaration invalid
4
+ summary: Wardby refused the coding run because the repository's .wardby/services.yaml on the base branch is not a valid declaration.
5
+ audience: operator
6
+ tags: [error, coding-agents, services, refusal]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Service declaration invalid
11
+
12
+ `service_declaration_invalid` means the repository's `.wardby/services.yaml`,
13
+ read from the run's base branch, could not be used. The run's `error` names the
14
+ line and reason. Wardby refuses the run before a coding worker starts.
15
+
16
+ 1. Check the file on the base branch. Its only key is `services`, mapping
17
+ catalog names (lowercase letters, digits and hyphens) to quoted version
18
+ strings, for example `postgres: "16"`.
19
+ 2. Keep it to at most five services and under 8 KiB. Images, ports, commands
20
+ and environment belong in the catalog, not in the repository.
21
+ 3. Merge the fix to the base branch; a fix on the run's own branch has no
22
+ effect.
23
+ 4. Trigger a new run; a refused run is not resumed automatically.
24
+
25
+ The same code is used when the declared services' instructions would push the
26
+ coding task over its size limit; declare fewer services in that case. See
27
+ [Coding services](../coding-services.md).
@@ -0,0 +1,25 @@
1
+ ---
2
+ id: errors/service-declaration-unavailable
3
+ title: Service declaration unavailable
4
+ summary: Wardby refused the coding run because it could not read .wardby/services.yaml from the base branch.
5
+ audience: operator
6
+ tags: [error, coding-agents, services, github, refusal]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Service declaration unavailable
11
+
12
+ `service_declaration_unavailable` means Wardby could not read
13
+ `.wardby/services.yaml` from the run's base branch through the GitHub App, so
14
+ it could not tell which services the run needs. A missing file is not this
15
+ error (no file means no services); this is a failed read. Wardby refuses the
16
+ run rather than start it without services the repository may require.
17
+
18
+ 1. Trigger the run again; the cause is often a transient GitHub error.
19
+ 2. If it repeats, confirm the GitHub App installation still covers the
20
+ repository and has contents read access, and that the agent's base branch
21
+ exists.
22
+ 3. Check the control-plane logs around the refusal for the GitHub response.
23
+
24
+ See [Repository access troubleshooting](../troubleshooting/repository-access.md)
25
+ and [Coding services](../coding-services.md).
@@ -0,0 +1,30 @@
1
+ ---
2
+ id: errors/service-launcher-unsupported
3
+ title: Services are not available to this run
4
+ summary: Wardby refused the coding run because the repository declares services and this deployment cannot start them.
5
+ audience: operator
6
+ tags: [error, coding-agents, services, kubernetes, docker, refusal]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Services are not available to this run
11
+
12
+ `service_launcher_unsupported` means the repository declares services, but this
13
+ deployment cannot start them. Services need a job launcher that starts them:
14
+
15
+ - `JOB_LAUNCHER=kubernetes` and `JOB_LAUNCHER=docker` start them for Codex and
16
+ Claude Code agents;
17
+ - a deployment with `JOB_LAUNCHER=local` cannot start them at all.
18
+
19
+ 1. Run the coding agent on a deployment that uses the Kubernetes or Docker job
20
+ launcher, or
21
+ 2. remove `.wardby/services.yaml` from the base branch if the repository's
22
+ tests do not need the services.
23
+
24
+ This error only applies to an agent that already allows at least one service
25
+ (`codingProfile.services` is non-empty): wardby reads a repository's
26
+ declaration only for such an agent, and refuses rather than silently starting
27
+ the run without the services it names. An agent that allows no services never
28
+ reads the declaration at all, so its runs are unaffected and start normally on
29
+ any launcher. See [Coding-worker troubleshooting](../troubleshooting/coding-workers.md)
30
+ and [Coding services](../coding-services.md).
@@ -0,0 +1,27 @@
1
+ ---
2
+ id: errors/service-not-allowed
3
+ title: Service not allowed for this agent
4
+ summary: Wardby refused the coding run because the repository declares a service the agent's codingProfile.services does not allow.
5
+ audience: operator
6
+ tags: [error, coding-agents, services, refusal]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Service not allowed for this agent
11
+
12
+ `service_not_allowed` means the repository declares a service that exists in
13
+ the catalog, but the agent's `codingProfile.services` does not list its name.
14
+ Wardby refuses the run before a coding worker starts.
15
+
16
+ 1. Confirm the repository should have the service; the declaration is on the
17
+ base branch in `.wardby/services.yaml`.
18
+ 2. If it should, the agent's owner (or an admin) adds the name, for example
19
+ `postgres`, to `codingProfile.services` with `update_agent`. Allowing a name
20
+ allows every version the catalog has for it.
21
+ 3. Trigger a new run.
22
+
23
+ Each allowed service reserves CPU, memory and disk for the whole run, so allow
24
+ only what the agent's repositories need. This error implies the agent already
25
+ allows at least one service — an agent whose `codingProfile.services` is empty
26
+ never reads the declaration at all, so it never reaches this check. See
27
+ [Coding services](../coding-services.md).
@@ -0,0 +1,23 @@
1
+ ---
2
+ id: errors/service-unknown
3
+ title: Service not in the catalog
4
+ summary: Wardby refused the coding run because the repository declares a service name and version the service catalog does not have.
5
+ audience: operator
6
+ tags: [error, coding-agents, services, refusal]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Service not in the catalog
11
+
12
+ `service_unknown` means `.wardby/services.yaml` on the base branch asks for a
13
+ name and version, such as `postgres 14`, that has no entry in Wardby's service
14
+ catalog. Wardby refuses the run before a coding worker starts.
15
+
16
+ 1. Run `list_services` (needs `agents:read`) to see the names and versions
17
+ available.
18
+ 2. Either change the declaration on the base branch to an available version,
19
+ or ask someone with `services:manage` and the `admin` or `service-manager`
20
+ role to add the entry with `create_service`, pinned by digest.
21
+ 3. Trigger a new run once the catalog or the declaration matches.
22
+
23
+ See [Coding services](../coding-services.md).
@@ -0,0 +1,49 @@
1
+ ---
2
+ id: errors/service-unready
3
+ title: Service did not become ready
4
+ summary: A coding run failed at launch because one of its services never passed its readiness check.
5
+ audience: operator
6
+ tags: [error, coding-agents, services, kubernetes, docker]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Service did not become ready
11
+
12
+ A run that failed with category `service_unready` (launcher error
13
+ `coding_service_unready:<name>`) started, but the named service never became
14
+ ready, so the coding agent never started. A service is not ready when its
15
+ readiness command keeps failing past its failure threshold, its image cannot
16
+ be pulled or started, or it is still not ready when the launcher's start-up
17
+ limit runs out.
18
+
19
+ 1. On Kubernetes, inspect the run pod's init-container status and events for
20
+ the `service-<name>` container: image pull errors, crash loops, or probe
21
+ failures. On Docker the service's container is removed with the failed run,
22
+ so reproduce it on the Docker host: pull the entry's image and run it with
23
+ `--read-only`, `--user 10001:10001`, a `--tmpfs` at its `dataPath` and at
24
+ each `writablePaths` entry, and its `serviceEnv`; then run its readiness
25
+ command with `docker exec`.
26
+ 2. For a custom catalog entry, confirm the image runs as a non-root user with a
27
+ read-only root filesystem: every directory it writes to must be its
28
+ `dataPath` or one of its `writablePaths`. Probe over TCP on `127.0.0.1`
29
+ rather than a Unix socket.
30
+ 3. Each entry's readiness settings (`periodSeconds`, `timeoutSeconds`,
31
+ `failureThreshold`) apply within an overall start-up limit, whatever the
32
+ entry's own threshold would otherwise allow. On Kubernetes that limit is
33
+ the pod-start timeout (`KUBERNETES_READY_TIMEOUT_MS`, default 120000, an
34
+ operator setting) and includes image pulls; if first pulls on new nodes
35
+ are slow, raise it or mirror the image into a nearby registry. On Docker
36
+ the limit is a fixed 120 seconds covering every service of the run
37
+ together (they start one at a time), never runs past the run's own
38
+ timeout, and has no setting to raise it; image pulls are not counted in it
39
+ but may take up to 5 minutes each. The Docker launcher pulls without
40
+ registry credentials, so pull a private or rate-limited image on the
41
+ Docker host beforehand.
42
+ 4. Trigger a new run once the cause is fixed.
43
+
44
+ When this run is a sub-run another agent dispatched (for example a router
45
+ handing work to a coding agent), the parent sees a failed sub-run on its own
46
+ status comment, with a line naming the service: "A sub-run could not start:
47
+ The `<name>` service didn't become ready, so the run couldn't start."
48
+
49
+ See [Coding services](../coding-services.md).
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: getting-started
3
+ title: Get started with Wardby
4
+ summary: Set up a local Wardby control plane, verify it, and choose the next guide.
5
+ audience: operator
6
+ tags: [setup, quickstart, operator]
7
+ appliesTo: >=0.2.1
8
+ ---
9
+
10
+ # Get started with Wardby
11
+
12
+ From the project you want Wardby to manage, run:
13
+
14
+ ```sh
15
+ npx --yes @wardby/cli@latest quickstart
16
+ ```
17
+
18
+ The quickstart creates local state under `.wardby/`, starts the local services,
19
+ applies the required database migrations, and can register Wardby with Codex or
20
+ Claude Code. Run `wardby doctor` afterwards to verify the local installation.
21
+
22
+ Use [Operate agents](operating-agents.md) to create and supervise managed work.
23
+ Read [Choose a native or coding agent](creating-agents.md) before creating your
24
+ first agent.
25
+ Use [MCP access](mcp.md) when connecting an MCP client. Before enabling coding
26
+ agents against a repository, complete [GitHub integration](github.md).
27
+ For a self-hosted installation, start with [Choose a deployment target](deployment-targets.md)
28
+ and [Configure identity and privileged access](identity-and-access.md).
29
+
30
+ For complete local setup and deployment prerequisites, read
31
+ [`docs/getting-started.md`](../docs/getting-started.md).