@wardby/cli 0.6.0 → 0.8.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 (740) hide show
  1. package/.env.example +5 -5
  2. package/README.md +6 -1
  3. package/deploy/local/docker-compose.quickstart-coding.yml +19 -0
  4. package/dist/claude-coding-worker/driver.d.ts +33 -3
  5. package/dist/claude-coding-worker/driver.js +151 -21
  6. package/dist/claude-coding-worker/main.js +38 -6
  7. package/dist/claude-coding-worker/sdk.js +29 -2
  8. package/dist/claude-coding-worker/tool-socket.d.ts +27 -0
  9. package/dist/claude-coding-worker/tool-socket.js +111 -0
  10. package/dist/claude-coding-worker/transcript.d.ts +18 -0
  11. package/dist/claude-coding-worker/transcript.js +77 -0
  12. package/dist/claude-plugin/command.d.ts +61 -0
  13. package/dist/claude-plugin/command.js +376 -0
  14. package/dist/cli-help.d.ts +1 -1
  15. package/dist/cli-help.js +3 -1
  16. package/dist/cli.js +71 -13
  17. package/dist/coding/code-host.d.ts +16 -0
  18. package/dist/coding/code-host.js +60 -0
  19. package/dist/coding/continuation-wording.d.ts +35 -0
  20. package/dist/coding/continuation-wording.js +73 -0
  21. package/dist/coding/linked-issue-note.d.ts +23 -0
  22. package/dist/coding/linked-issue-note.js +47 -0
  23. package/dist/coding/mcp-token.d.ts +12 -0
  24. package/dist/coding/mcp-token.js +26 -0
  25. package/dist/coding/merge-wording.d.ts +28 -0
  26. package/dist/coding/merge-wording.js +78 -0
  27. package/dist/coding/pr-description-note.d.ts +9 -0
  28. package/dist/coding/pr-description-note.js +32 -0
  29. package/dist/coding/profile.d.ts +46 -126
  30. package/dist/coding/profile.js +45 -4
  31. package/dist/coding/protected-path-wording.d.ts +8 -0
  32. package/dist/coding/protected-path-wording.js +1 -1
  33. package/dist/coding/protocol.d.ts +264 -346
  34. package/dist/coding/protocol.js +237 -12
  35. package/dist/coding/redact.d.ts +3 -0
  36. package/dist/coding/redact.js +17 -0
  37. package/dist/coding/registry/allowlist.d.ts +12 -0
  38. package/dist/coding/registry/allowlist.js +14 -1
  39. package/dist/coding/registry/audit-mode.d.ts +153 -0
  40. package/dist/coding/registry/audit-mode.js +304 -0
  41. package/dist/coding/registry/lockfile-shared.d.ts +36 -0
  42. package/dist/coding/registry/lockfile-shared.js +128 -0
  43. package/dist/coding/registry/lockfiles.js +1 -1
  44. package/dist/coding/registry/npm-lockfile-formats.d.ts +11 -0
  45. package/dist/coding/registry/npm-lockfile-formats.js +41 -0
  46. package/dist/coding/registry/npm-lockfile.d.ts +8 -4
  47. package/dist/coding/registry/npm-lockfile.js +4 -6
  48. package/dist/coding/registry/npm.js +78 -8
  49. package/dist/coding/registry/pnpm-lockfile.d.ts +17 -0
  50. package/dist/coding/registry/pnpm-lockfile.js +189 -0
  51. package/dist/coding/registry/pypi-plan.d.ts +50 -0
  52. package/dist/coding/registry/pypi-plan.js +406 -0
  53. package/dist/coding/registry/pypi-requirements.d.ts +58 -0
  54. package/dist/coding/registry/pypi-requirements.js +155 -0
  55. package/dist/coding/registry/pypi.d.ts +3 -27
  56. package/dist/coding/registry/pypi.js +40 -154
  57. package/dist/coding/registry/refusal-hints.d.ts +20 -0
  58. package/dist/coding/registry/refusal-hints.js +61 -0
  59. package/dist/coding/registry/refusal-wording.d.ts +11 -0
  60. package/dist/coding/registry/refusal-wording.js +56 -0
  61. package/dist/coding/registry/report.d.ts +70 -8
  62. package/dist/coding/registry/report.js +112 -5
  63. package/dist/coding/registry/types.d.ts +58 -8
  64. package/dist/coding/registry/yarn-lockfile.d.ts +30 -0
  65. package/dist/coding/registry/yarn-lockfile.js +367 -0
  66. package/dist/coding/services/catalog.d.ts +37 -351
  67. package/dist/coding/transcript/claude-code.d.ts +13 -0
  68. package/dist/coding/transcript/claude-code.js +273 -0
  69. package/dist/coding/transcript/download-protocol.d.ts +30 -0
  70. package/dist/coding/transcript/download-protocol.js +18 -0
  71. package/dist/coding/transcript/format.d.ts +20 -0
  72. package/dist/coding/transcript/format.js +32 -0
  73. package/dist/coding/transcript/recorder.d.ts +52 -0
  74. package/dist/coding/transcript/recorder.js +225 -0
  75. package/dist/coding/transcript/resume/checkout.d.ts +31 -0
  76. package/dist/coding/transcript/resume/checkout.js +203 -0
  77. package/dist/coding/transcript/resume/command.d.ts +17 -0
  78. package/dist/coding/transcript/resume/command.js +176 -0
  79. package/dist/coding/transcript/resume/download.d.ts +20 -0
  80. package/dist/coding/transcript/resume/download.js +153 -0
  81. package/dist/coding/transcript/resume/launch.d.ts +38 -0
  82. package/dist/coding/transcript/resume/launch.js +128 -0
  83. package/dist/coding/transcript/resume/session-file.d.ts +13 -0
  84. package/dist/coding/transcript/resume/session-file.js +79 -0
  85. package/dist/coding/transcript/resume/stand-in.d.ts +11 -0
  86. package/dist/coding/transcript/resume/stand-in.js +49 -0
  87. package/dist/coding-worker/artifact.d.ts +8 -3
  88. package/dist/coding-worker/artifact.js +3 -1
  89. package/dist/coding-worker/debug-trace.d.ts +9 -6
  90. package/dist/coding-worker/debug-trace.js +16 -19
  91. package/dist/coding-worker/dependency-cache.d.mts +229 -0
  92. package/dist/coding-worker/dependency-cache.mjs +2123 -0
  93. package/dist/coding-worker/driver.d.ts +4 -3
  94. package/dist/coding-worker/driver.js +124 -39
  95. package/dist/coding-worker/errors.d.ts +1 -0
  96. package/dist/coding-worker/errors.js +32 -0
  97. package/dist/coding-worker/main.js +5 -1
  98. package/dist/coding-worker/mcp-config.d.ts +27 -0
  99. package/dist/coding-worker/mcp-config.js +32 -0
  100. package/dist/coding-worker/sdk.d.ts +36 -0
  101. package/dist/coding-worker/sdk.js +28 -1
  102. package/dist/coding-worker/task-note.d.ts +11 -0
  103. package/dist/coding-worker/task-note.js +13 -0
  104. package/dist/coding-worker/types.d.ts +15 -0
  105. package/dist/config/dependency-cache.d.ts +23 -0
  106. package/dist/config/dependency-cache.js +32 -0
  107. package/dist/config/mcp-call-limit.d.ts +8 -0
  108. package/dist/config/mcp-call-limit.js +18 -0
  109. package/dist/config/mcp-servers.d.ts +8 -0
  110. package/dist/config/mcp-servers.js +12 -0
  111. package/dist/config/providers.d.ts +12 -3
  112. package/dist/config/providers.js +55 -5
  113. package/dist/config/test-simulators.d.ts +92 -0
  114. package/dist/config/test-simulators.js +333 -0
  115. package/dist/config/tool-timeout.d.ts +1 -0
  116. package/dist/config/tool-timeout.js +18 -0
  117. package/dist/core/async-context.d.ts +2 -0
  118. package/dist/core/async-context.js +12 -0
  119. package/dist/core/budget-events.d.ts +108 -0
  120. package/dist/core/budget-events.js +346 -0
  121. package/dist/core/budget-groups.d.ts +50 -1
  122. package/dist/core/budget-groups.js +236 -27
  123. package/dist/core/budget-stopped-head.d.ts +46 -0
  124. package/dist/core/budget-stopped-head.js +81 -0
  125. package/dist/core/budget-topup.d.ts +51 -0
  126. package/dist/core/budget-topup.js +156 -0
  127. package/dist/core/budget-wording.d.ts +16 -2
  128. package/dist/core/budget-wording.js +40 -2
  129. package/dist/core/coding-mcp.d.ts +36 -0
  130. package/dist/core/coding-mcp.js +253 -0
  131. package/dist/core/coding-queue.d.ts +2 -1
  132. package/dist/core/coding-queue.js +7 -0
  133. package/dist/core/coding-repository.d.ts +46 -0
  134. package/dist/core/coding-repository.js +92 -0
  135. package/dist/core/cron.d.ts +19 -1
  136. package/dist/core/cron.js +17 -0
  137. package/dist/core/datastores.js +1 -1
  138. package/dist/core/deferred-coding.d.ts +14 -0
  139. package/dist/core/deferred-coding.js +62 -0
  140. package/dist/core/delegation-child.d.ts +25 -0
  141. package/dist/core/delegation-child.js +37 -0
  142. package/dist/core/delegation-slots.d.ts +27 -0
  143. package/dist/core/delegation-slots.js +44 -0
  144. package/dist/core/dispatch.d.ts +48 -2
  145. package/dist/core/dispatch.js +166 -66
  146. package/dist/core/engine-native.js +1 -1
  147. package/dist/core/error-code.d.ts +38 -0
  148. package/dist/core/error-code.js +169 -0
  149. package/dist/core/grants.d.ts +46 -8
  150. package/dist/core/grants.js +99 -8
  151. package/dist/core/host-events.d.ts +18 -2
  152. package/dist/core/host-events.js +291 -27
  153. package/dist/core/host-status.d.ts +85 -3
  154. package/dist/core/host-status.js +300 -22
  155. package/dist/core/issue-bridge.d.ts +50 -6
  156. package/dist/core/issue-bridge.js +124 -33
  157. package/dist/core/issue-events.d.ts +1 -1
  158. package/dist/core/issue-events.js +4 -10
  159. package/dist/core/issue-status.d.ts +1 -1
  160. package/dist/core/issue-status.js +58 -29
  161. package/dist/core/logger.d.ts +5 -0
  162. package/dist/core/logger.js +14 -1
  163. package/dist/core/lost-run-children.d.ts +6 -0
  164. package/dist/core/lost-run-children.js +32 -0
  165. package/dist/core/mark-ready.d.ts +34 -0
  166. package/dist/core/mark-ready.js +152 -0
  167. package/dist/core/markdown-code.d.ts +8 -0
  168. package/dist/core/markdown-code.js +107 -0
  169. package/dist/core/mcp-client/client.d.ts +47 -0
  170. package/dist/core/mcp-client/client.js +141 -0
  171. package/dist/core/mcp-client/jsonrpc.d.ts +15 -0
  172. package/dist/core/mcp-client/jsonrpc.js +54 -0
  173. package/dist/core/mcp-client/results.d.ts +13 -0
  174. package/dist/core/mcp-client/results.js +42 -0
  175. package/dist/core/mcp-servers.d.ts +90 -0
  176. package/dist/core/mcp-servers.js +230 -0
  177. package/dist/core/mcp-tools.d.ts +108 -0
  178. package/dist/core/mcp-tools.js +287 -0
  179. package/dist/core/memory-tools.js +7 -0
  180. package/dist/core/merge-order-check.d.ts +2 -1
  181. package/dist/core/merge-order-check.js +44 -18
  182. package/dist/core/notification-dispatcher.js +2 -1
  183. package/dist/core/notification-templates.d.ts +1 -7
  184. package/dist/core/notification-templates.js +36 -2
  185. package/dist/core/pull-request-state-sync.js +2 -2
  186. package/dist/core/reconciler.d.ts +4 -3
  187. package/dist/core/reconciler.js +8 -1
  188. package/dist/core/related-pull-requests.d.ts +11 -3
  189. package/dist/core/related-pull-requests.js +49 -20
  190. package/dist/core/reply-parts.d.ts +21 -0
  191. package/dist/core/reply-parts.js +73 -0
  192. package/dist/core/review-fix.d.ts +1 -1
  193. package/dist/core/review-fix.js +4 -3
  194. package/dist/core/review-host-checks.d.ts +1 -1
  195. package/dist/core/review-host-tools.d.ts +3 -0
  196. package/dist/core/review-host-tools.js +102 -14
  197. package/dist/core/review-reads.d.ts +55 -0
  198. package/dist/core/review-reads.js +233 -0
  199. package/dist/core/run-status.d.ts +12 -0
  200. package/dist/core/run-status.js +12 -0
  201. package/dist/core/runner.d.ts +145 -49
  202. package/dist/core/runner.js +719 -216
  203. package/dist/core/schedule-start.d.ts +12 -0
  204. package/dist/core/schedule-start.js +14 -0
  205. package/dist/core/secret-broker-config.d.ts +12 -74
  206. package/dist/core/secret-broker-config.js +1 -1
  207. package/dist/core/secret-guard.d.ts +49 -0
  208. package/dist/core/secret-guard.js +119 -0
  209. package/dist/core/secret-guarded-stores.d.ts +12 -0
  210. package/dist/core/secret-guarded-stores.js +41 -0
  211. package/dist/core/secret-spans.d.ts +50 -0
  212. package/dist/core/secret-spans.js +94 -0
  213. package/dist/core/secrets.d.ts +11 -1
  214. package/dist/core/secrets.js +27 -1
  215. package/dist/core/serializable-retry.d.ts +18 -0
  216. package/dist/core/serializable-retry.js +43 -0
  217. package/dist/core/stop-run.d.ts +46 -0
  218. package/dist/core/stop-run.js +61 -0
  219. package/dist/core/tool-admin.d.ts +5 -1
  220. package/dist/core/tool-admin.js +7 -2
  221. package/dist/core/tool-names.d.ts +13 -0
  222. package/dist/core/tool-names.js +20 -0
  223. package/dist/core/webhooks.d.ts +4 -0
  224. package/dist/core/webhooks.js +68 -49
  225. package/dist/core/workflow-events.d.ts +14 -2
  226. package/dist/core/workflow-events.js +4 -0
  227. package/dist/core/workflow-run-events.d.ts +5 -3
  228. package/dist/core/workflow-run-events.js +45 -9
  229. package/dist/core/zod-json-schema.d.ts +4 -0
  230. package/dist/core/zod-json-schema.js +39 -0
  231. package/dist/core/zod3-window.d.ts +35 -0
  232. package/dist/core/zod3-window.js +124 -0
  233. package/dist/generated/prisma/browser.d.ts +65 -3
  234. package/dist/generated/prisma/client.d.ts +65 -3
  235. package/dist/generated/prisma/commonInputTypes.d.ts +266 -106
  236. package/dist/generated/prisma/enums.d.ts +10 -0
  237. package/dist/generated/prisma/enums.js +8 -0
  238. package/dist/generated/prisma/internal/class.d.ts +110 -0
  239. package/dist/generated/prisma/internal/class.js +4 -4
  240. package/dist/generated/prisma/internal/prismaNamespace.d.ts +957 -9
  241. package/dist/generated/prisma/internal/prismaNamespace.js +166 -2
  242. package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +174 -0
  243. package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +166 -2
  244. package/dist/generated/prisma/models/Agent.d.ts +377 -8
  245. package/dist/generated/prisma/models/AgentMcpServer.d.ts +1412 -0
  246. package/dist/generated/prisma/models/AgentMcpServer.js +1 -0
  247. package/dist/generated/prisma/models/AgentRepository.d.ts +81 -1
  248. package/dist/generated/prisma/models/AuthUser.d.ts +1 -1
  249. package/dist/generated/prisma/models/CodingAgentProfile.d.ts +228 -7
  250. package/dist/generated/prisma/models/CodingProxyRequest.d.ts +207 -3
  251. package/dist/generated/prisma/models/CodingProxySession.d.ts +232 -2
  252. package/dist/generated/prisma/models/CodingRun.d.ts +1712 -1
  253. package/dist/generated/prisma/models/DependencySnapshot.d.ts +1668 -0
  254. package/dist/generated/prisma/models/DependencySnapshot.js +1 -0
  255. package/dist/generated/prisma/models/HostProvider.d.ts +2176 -0
  256. package/dist/generated/prisma/models/HostProvider.js +1 -0
  257. package/dist/generated/prisma/models/HostProviderCredential.d.ts +1285 -0
  258. package/dist/generated/prisma/models/HostProviderCredential.js +1 -0
  259. package/dist/generated/prisma/models/HostProviderOperation.d.ts +1470 -0
  260. package/dist/generated/prisma/models/HostProviderOperation.js +1 -0
  261. package/dist/generated/prisma/models/HostProviderTrustedAccount.d.ts +1145 -0
  262. package/dist/generated/prisma/models/HostProviderTrustedAccount.js +1 -0
  263. package/dist/generated/prisma/models/IssuePullRequest.d.ts +6 -2
  264. package/dist/generated/prisma/models/LocalReview.d.ts +40 -1
  265. package/dist/generated/prisma/models/McpServer.d.ts +1500 -0
  266. package/dist/generated/prisma/models/McpServer.js +1 -0
  267. package/dist/generated/prisma/models/NativeGatewayCall.d.ts +77 -1
  268. package/dist/generated/prisma/models/NativeGatewaySession.d.ts +35 -1
  269. package/dist/generated/prisma/models/Principal.d.ts +167 -0
  270. package/dist/generated/prisma/models/RegistryAllowance.d.ts +41 -1
  271. package/dist/generated/prisma/models/RegistryApprovedVersion.d.ts +75 -1
  272. package/dist/generated/prisma/models/RegistryAuditRecord.d.ts +1364 -0
  273. package/dist/generated/prisma/models/RegistryAuditRecord.js +1 -0
  274. package/dist/generated/prisma/models/ResourceGrant.d.ts +1 -1
  275. package/dist/generated/prisma/models/Run.d.ts +738 -2
  276. package/dist/generated/prisma/models/RunBudgetEvent.d.ts +1211 -0
  277. package/dist/generated/prisma/models/RunBudgetEvent.js +1 -0
  278. package/dist/generated/prisma/models/RunTranscript.d.ts +1339 -0
  279. package/dist/generated/prisma/models/RunTranscript.js +1 -0
  280. package/dist/generated/prisma/models/Secret.d.ts +387 -0
  281. package/dist/generated/prisma/models/Tool.d.ts +223 -1
  282. package/dist/generated/prisma/models.d.ts +10 -0
  283. package/dist/help/search.js +12 -3
  284. package/dist/help-index.json +2033 -110
  285. package/dist/import/create.js +48 -4
  286. package/dist/import/neutral-schema.d.ts +51 -281
  287. package/dist/import/neutral-schema.js +7 -4
  288. package/dist/knowledge/check.d.ts +1 -1
  289. package/dist/knowledge/cli.d.ts +11 -1
  290. package/dist/knowledge/cli.js +37 -4
  291. package/dist/knowledge/concept.d.ts +3 -19
  292. package/dist/knowledge/location.d.ts +31 -0
  293. package/dist/knowledge/location.js +78 -0
  294. package/dist/mcp/auth/access.d.ts +10 -2
  295. package/dist/mcp/auth/access.js +15 -1
  296. package/dist/mcp/auth/grants-cli.d.ts +6 -4
  297. package/dist/mcp/auth/grants-cli.js +42 -3
  298. package/dist/mcp/auth/ownership.d.ts +7 -7
  299. package/dist/mcp/auth/resource-server.d.ts +3 -1
  300. package/dist/mcp/auth/resource-server.js +17 -2
  301. package/dist/mcp/auth/self-hosted/credentials.d.ts +3 -3
  302. package/dist/mcp/auth/self-hosted/session.d.ts +2 -2
  303. package/dist/mcp/context.d.ts +3 -0
  304. package/dist/mcp/host-events/github-ingress.d.ts +2 -0
  305. package/dist/mcp/host-events/github-ingress.js +2 -1
  306. package/dist/mcp/index.d.ts +6 -0
  307. package/dist/mcp/index.js +69 -10
  308. package/dist/mcp/server.d.ts +13 -0
  309. package/dist/mcp/server.js +33 -14
  310. package/dist/mcp/tools/agents.d.ts +4 -0
  311. package/dist/mcp/tools/agents.js +295 -28
  312. package/dist/mcp/tools/datastore.js +17 -8
  313. package/dist/mcp/tools/grants.js +73 -29
  314. package/dist/mcp/tools/host-providers.d.ts +2 -0
  315. package/dist/mcp/tools/host-providers.js +215 -0
  316. package/dist/mcp/tools/mcp-servers.d.ts +26 -0
  317. package/dist/mcp/tools/mcp-servers.js +481 -0
  318. package/dist/mcp/tools/memory.js +11 -1
  319. package/dist/mcp/tools/notification-channels.js +2 -2
  320. package/dist/mcp/tools/packages.d.ts +2 -0
  321. package/dist/mcp/tools/packages.js +195 -0
  322. package/dist/mcp/tools/repositories.js +65 -12
  323. package/dist/mcp/tools/run-access.d.ts +16 -0
  324. package/dist/mcp/tools/run-access.js +25 -0
  325. package/dist/mcp/tools/run-transcript-download.d.ts +30 -0
  326. package/dist/mcp/tools/run-transcript-download.js +129 -0
  327. package/dist/mcp/tools/run-transcript.d.ts +19 -0
  328. package/dist/mcp/tools/run-transcript.js +70 -0
  329. package/dist/mcp/tools/runs.js +209 -27
  330. package/dist/mcp/tools/scheduling.js +3 -1
  331. package/dist/mcp/tools/secret-elicitation-form.js +5 -0
  332. package/dist/mcp/tools/secret-elicitation-server.d.ts +6 -0
  333. package/dist/mcp/tools/secret-elicitation-server.js +10 -61
  334. package/dist/mcp/tools/secret-elicitation.d.ts +2 -0
  335. package/dist/mcp/tools/secret-elicitation.js +25 -2
  336. package/dist/mcp/tools/secrets.js +40 -6
  337. package/dist/mcp/tools/stop-run.d.ts +2 -0
  338. package/dist/mcp/tools/stop-run.js +82 -0
  339. package/dist/mcp/tools/subagents.js +2 -2
  340. package/dist/mcp/tools/tools.d.ts +7 -5
  341. package/dist/mcp/tools/tools.js +64 -16
  342. package/dist/mcp/tools/trigger.js +28 -6
  343. package/dist/mcp/transport/http-limits.d.ts +2 -0
  344. package/dist/mcp/transport/http-limits.js +6 -2
  345. package/dist/mcp/transport/stdio-link-host.d.ts +20 -0
  346. package/dist/mcp/transport/stdio-link-host.js +67 -0
  347. package/dist/mcp/transport/streamable-http.d.ts +13 -0
  348. package/dist/mcp/transport/streamable-http.js +41 -1
  349. package/dist/mcp/webhooks/ingress.js +10 -0
  350. package/dist/native-worker/docker-launcher.d.ts +38 -2
  351. package/dist/native-worker/docker-launcher.js +65 -5
  352. package/dist/native-worker/gateway-server.d.ts +55 -3
  353. package/dist/native-worker/gateway-server.js +152 -34
  354. package/dist/native-worker/gateway.d.ts +29 -1
  355. package/dist/native-worker/gateway.js +74 -4
  356. package/dist/native-worker/http-server.d.ts +7 -1
  357. package/dist/native-worker/http-server.js +62 -7
  358. package/dist/native-worker/http-transport.js +1 -1
  359. package/dist/native-worker/kubernetes-launcher.d.ts +7 -3
  360. package/dist/native-worker/kubernetes-launcher.js +43 -3
  361. package/dist/native-worker/launch.d.ts +18 -1
  362. package/dist/native-worker/launch.js +6 -1
  363. package/dist/native-worker/ledger.d.ts +24 -4
  364. package/dist/native-worker/ledger.js +62 -8
  365. package/dist/native-worker/loopback.js +3 -8
  366. package/dist/native-worker/main.d.ts +2 -1
  367. package/dist/native-worker/main.js +14 -3
  368. package/dist/native-worker/protocol.d.ts +130 -577
  369. package/dist/native-worker/protocol.js +51 -2
  370. package/dist/native-worker/sandbox-executor.d.ts +17 -2
  371. package/dist/native-worker/sandbox-executor.js +78 -4
  372. package/dist/native-worker/stderr-redaction.d.ts +77 -0
  373. package/dist/native-worker/stderr-redaction.js +237 -0
  374. package/dist/native-worker/stdio.d.ts +1 -1
  375. package/dist/native-worker/stdio.js +6 -5
  376. package/dist/native-worker/warm-pool.d.ts +2 -2
  377. package/dist/native-worker/warm-pool.js +4 -4
  378. package/dist/native-worker/worker.js +28 -2
  379. package/dist/observability/metrics.js +6 -1
  380. package/dist/providers/auth/self-hosted.d.ts +1 -1
  381. package/dist/providers/coding-proxy/capability-hash.d.ts +2 -0
  382. package/dist/providers/coding-proxy/capability-hash.js +5 -0
  383. package/dist/providers/coding-proxy/dependency-cache/eviction.d.ts +29 -0
  384. package/dist/providers/coding-proxy/dependency-cache/eviction.js +87 -0
  385. package/dist/providers/coding-proxy/dependency-cache/key.d.ts +33 -0
  386. package/dist/providers/coding-proxy/dependency-cache/key.js +86 -0
  387. package/dist/providers/coding-proxy/dependency-cache/model-request-seal.d.ts +18 -0
  388. package/dist/providers/coding-proxy/dependency-cache/model-request-seal.js +40 -0
  389. package/dist/providers/coding-proxy/dependency-cache/prisma-store.d.ts +25 -0
  390. package/dist/providers/coding-proxy/dependency-cache/prisma-store.js +131 -0
  391. package/dist/providers/coding-proxy/dependency-cache/service.d.ts +70 -0
  392. package/dist/providers/coding-proxy/dependency-cache/service.js +409 -0
  393. package/dist/providers/coding-proxy/dependency-cache/store.d.ts +85 -0
  394. package/dist/providers/coding-proxy/dependency-cache/store.js +95 -0
  395. package/dist/providers/coding-proxy/hold.d.ts +32 -0
  396. package/dist/providers/coding-proxy/hold.js +86 -0
  397. package/dist/providers/coding-proxy/interrupted.d.ts +70 -0
  398. package/dist/providers/coding-proxy/interrupted.js +104 -0
  399. package/dist/providers/coding-proxy/mcp-route.d.ts +34 -0
  400. package/dist/providers/coding-proxy/mcp-route.js +166 -0
  401. package/dist/providers/coding-proxy/memory-ledger.d.ts +17 -2
  402. package/dist/providers/coding-proxy/memory-ledger.js +99 -8
  403. package/dist/providers/coding-proxy/metering.d.ts +16 -0
  404. package/dist/providers/coding-proxy/metering.js +27 -4
  405. package/dist/providers/coding-proxy/prisma-ledger.d.ts +16 -2
  406. package/dist/providers/coding-proxy/prisma-ledger.js +209 -69
  407. package/dist/providers/coding-proxy/proxy.d.ts +21 -2
  408. package/dist/providers/coding-proxy/proxy.js +300 -48
  409. package/dist/providers/coding-proxy/registry/audit.d.ts +53 -10
  410. package/dist/providers/coding-proxy/registry/audit.js +94 -17
  411. package/dist/providers/coding-proxy/registry/lockfile-parse-worker.d.ts +36 -0
  412. package/dist/providers/coding-proxy/registry/lockfile-parse-worker.js +67 -0
  413. package/dist/providers/coding-proxy/registry/lockfile-parse.d.ts +16 -0
  414. package/dist/providers/coding-proxy/registry/lockfile-parse.js +110 -0
  415. package/dist/providers/coding-proxy/registry/plan.d.ts +9 -0
  416. package/dist/providers/coding-proxy/registry/plan.js +201 -48
  417. package/dist/providers/coding-proxy/registry/prisma-store.d.ts +11 -5
  418. package/dist/providers/coding-proxy/registry/prisma-store.js +120 -17
  419. package/dist/providers/coding-proxy/registry/service.d.ts +97 -16
  420. package/dist/providers/coding-proxy/registry/service.js +579 -112
  421. package/dist/providers/coding-proxy/registry/store.d.ts +84 -9
  422. package/dist/providers/coding-proxy/registry/store.js +54 -1
  423. package/dist/providers/coding-proxy/runtime.d.ts +10 -0
  424. package/dist/providers/coding-proxy/runtime.js +109 -16
  425. package/dist/providers/coding-proxy/server.d.ts +9 -1
  426. package/dist/providers/coding-proxy/server.js +55 -1
  427. package/dist/providers/coding-proxy/types.d.ts +78 -1
  428. package/dist/providers/datastore/types.d.ts +5 -0
  429. package/dist/providers/engine/types.d.ts +17 -2
  430. package/dist/providers/engine/types.js +17 -0
  431. package/dist/providers/executor/composition.d.ts +10 -3
  432. package/dist/providers/executor/composition.js +52 -7
  433. package/dist/providers/executor/container.d.ts +394 -9
  434. package/dist/providers/executor/container.js +1210 -96
  435. package/dist/providers/executor/dbos-status.d.ts +31 -0
  436. package/dist/providers/executor/dbos-status.js +64 -0
  437. package/dist/providers/executor/dbos.d.ts +50 -1
  438. package/dist/providers/executor/dbos.js +207 -20
  439. package/dist/providers/executor/deferred.d.ts +12 -24
  440. package/dist/providers/executor/deferred.js +10 -29
  441. package/dist/providers/executor/in-process.d.ts +9 -1
  442. package/dist/providers/executor/in-process.js +14 -4
  443. package/dist/providers/executor/linked-issue-reader.d.ts +16 -0
  444. package/dist/providers/executor/linked-issue-reader.js +30 -0
  445. package/dist/providers/executor/routing.d.ts +2 -0
  446. package/dist/providers/executor/routing.js +4 -0
  447. package/dist/providers/executor/types.d.ts +13 -0
  448. package/dist/providers/host-tools/invoke.d.ts +37 -0
  449. package/dist/providers/host-tools/invoke.js +117 -0
  450. package/dist/providers/host-tools/operations.d.ts +65 -0
  451. package/dist/providers/host-tools/operations.js +149 -0
  452. package/dist/providers/host-tools/registry.d.ts +79 -0
  453. package/dist/providers/host-tools/registry.js +362 -0
  454. package/dist/providers/host-tools/request-guard.d.ts +17 -0
  455. package/dist/providers/host-tools/request-guard.js +99 -0
  456. package/dist/providers/host-tools/self-test.d.ts +64 -0
  457. package/dist/providers/host-tools/self-test.js +142 -0
  458. package/dist/providers/index.d.ts +2 -1
  459. package/dist/providers/issue-tracker/types.d.ts +17 -0
  460. package/dist/providers/issue-tracker/types.js +39 -1
  461. package/dist/providers/jobs/claude-tool-setup.d.ts +4 -0
  462. package/dist/providers/jobs/claude-tool-setup.js +5 -2
  463. package/dist/providers/jobs/docker-isolation.d.ts +10 -2
  464. package/dist/providers/jobs/docker-isolation.js +47 -8
  465. package/dist/providers/jobs/docker.d.ts +9 -0
  466. package/dist/providers/jobs/docker.js +60 -11
  467. package/dist/providers/jobs/fake-kubernetes-api.d.ts +2 -0
  468. package/dist/providers/jobs/fake-kubernetes-api.js +3 -0
  469. package/dist/providers/jobs/kubernetes-api.d.ts +8 -0
  470. package/dist/providers/jobs/kubernetes-api.js +10 -0
  471. package/dist/providers/jobs/kubernetes-client.js +10 -1
  472. package/dist/providers/jobs/kubernetes-isolation.d.ts +5 -1
  473. package/dist/providers/jobs/kubernetes-isolation.js +32 -3
  474. package/dist/providers/jobs/kubernetes.d.ts +11 -1
  475. package/dist/providers/jobs/kubernetes.js +111 -17
  476. package/dist/providers/jobs/types.d.ts +39 -0
  477. package/dist/providers/jobs/types.js +13 -1
  478. package/dist/providers/llm/anthropic.js +5 -1
  479. package/dist/providers/llm/bedrock.d.ts +0 -12
  480. package/dist/providers/llm/bedrock.js +4 -0
  481. package/dist/providers/llm/claude-messages.d.ts +3 -1
  482. package/dist/providers/llm/claude-messages.js +4 -1
  483. package/dist/providers/llm/claude-provider.d.ts +2 -2
  484. package/dist/providers/llm/claude-provider.js +2 -2
  485. package/dist/providers/llm/openai.d.ts +2 -2
  486. package/dist/providers/llm/openai.js +6 -2
  487. package/dist/providers/llm/routing.d.ts +2 -2
  488. package/dist/providers/llm/routing.js +2 -2
  489. package/dist/providers/llm/types.d.ts +12 -2
  490. package/dist/providers/review-host/github-events.d.ts +9 -1
  491. package/dist/providers/review-host/github-events.js +34 -12
  492. package/dist/providers/review-host/github.d.ts +29 -2
  493. package/dist/providers/review-host/github.js +224 -29
  494. package/dist/providers/review-host/local.d.ts +8 -4
  495. package/dist/providers/review-host/local.js +49 -31
  496. package/dist/providers/review-host/patch-pages.d.ts +41 -0
  497. package/dist/providers/review-host/patch-pages.js +176 -0
  498. package/dist/providers/review-host/review-format.d.ts +19 -1
  499. package/dist/providers/review-host/review-format.js +38 -7
  500. package/dist/providers/review-host/types.d.ts +140 -6
  501. package/dist/providers/review-host/types.js +9 -1
  502. package/dist/providers/storage/gcs.d.ts +63 -0
  503. package/dist/providers/storage/gcs.js +69 -0
  504. package/dist/providers/storage/index.d.ts +15 -0
  505. package/dist/providers/storage/index.js +14 -0
  506. package/dist/providers/storage/local.d.ts +24 -0
  507. package/dist/providers/storage/local.js +92 -0
  508. package/dist/providers/storage/meter.d.ts +14 -0
  509. package/dist/providers/storage/meter.js +34 -0
  510. package/dist/providers/storage/s3.d.ts +41 -0
  511. package/dist/providers/storage/s3.js +107 -0
  512. package/dist/providers/storage/types.d.ts +37 -3
  513. package/dist/providers/storage/types.js +21 -4
  514. package/dist/providers/vcs/git.d.ts +39 -4
  515. package/dist/providers/vcs/git.js +339 -26
  516. package/dist/providers/vcs/github-remote.d.ts +26 -3
  517. package/dist/providers/vcs/github-remote.js +124 -14
  518. package/dist/providers/vcs/github.d.ts +183 -44
  519. package/dist/providers/vcs/github.js +455 -56
  520. package/dist/providers/vcs/index.d.ts +1 -1
  521. package/dist/providers/vcs/index.js +9 -2
  522. package/dist/providers/vcs/pr-description.d.ts +127 -0
  523. package/dist/providers/vcs/pr-description.js +270 -0
  524. package/dist/providers/vcs/remote.d.ts +37 -1
  525. package/dist/providers/vcs/remote.js +7 -1
  526. package/dist/providers/vcs/routing.d.ts +16 -8
  527. package/dist/providers/vcs/routing.js +27 -6
  528. package/dist/providers/vcs/types.d.ts +150 -5
  529. package/dist/quickstart/coding-seed.d.ts +14 -3
  530. package/dist/quickstart/coding-seed.js +213 -4
  531. package/dist/quickstart/index.d.ts +5 -0
  532. package/dist/quickstart/index.js +21 -0
  533. package/dist/quickstart/reviewer-prompt.d.ts +1 -1
  534. package/dist/quickstart/reviewer-prompt.js +6 -6
  535. package/dist/quickstart-images.json +1 -1
  536. package/dist/sandbox/eval-core.d.ts +12 -2
  537. package/dist/sandbox/eval-core.js +20 -4
  538. package/dist/sandbox/generated/zod.bundle.js +62 -1
  539. package/dist/sandbox/generated/zod3.bundle.js +5 -0
  540. package/dist/sandbox/host-functions.d.ts +5 -0
  541. package/dist/sandbox/host-functions.js +13 -13
  542. package/dist/sandbox/limits.d.ts +4 -1
  543. package/dist/sandbox/limits.js +4 -1
  544. package/dist/sandbox/run-in-sandbox.d.ts +6 -0
  545. package/dist/sandbox/run-in-sandbox.js +14 -2
  546. package/dist/sandbox/safe-fetch.d.ts +2 -0
  547. package/dist/sandbox/safe-fetch.js +1 -1
  548. package/dist/sandbox/secret-broker.d.ts +1 -0
  549. package/dist/sandbox/secret-broker.js +4 -5
  550. package/dist/sandbox/tool-capabilities.d.ts +10 -30
  551. package/dist/sandbox/tool-timeout.d.ts +32 -0
  552. package/dist/sandbox/tool-timeout.js +52 -0
  553. package/dist/sandbox/user-tool.d.ts +8 -1
  554. package/dist/sandbox/user-tool.js +9 -3
  555. package/dist/sandbox/zod-params.d.ts +37 -5
  556. package/dist/sandbox/zod-params.js +181 -26
  557. package/dist/serve.js +8 -1
  558. package/dist/viewer/api-schema.d.ts +349 -2627
  559. package/dist/viewer/api-schema.js +7 -0
  560. package/dist/viewer/build-schemas.js +6 -2
  561. package/dist/viewer/graph.js +2 -1
  562. package/dist/viewer/openapi.js +2 -4
  563. package/dist/wardby-bin.js +15 -0
  564. package/docs/README.md +11 -1
  565. package/docs/agent-recipes.md +95 -24
  566. package/docs/architecture-runtime.md +1 -1
  567. package/docs/claude-code-plugin.md +164 -0
  568. package/docs/code-review-agents.md +557 -41
  569. package/docs/coding-agent-setup.md +566 -8
  570. package/docs/coding-packages.md +1033 -90
  571. package/docs/coding-services.md +27 -12
  572. package/docs/coding-worker-byo-images.md +24 -2
  573. package/docs/coding-worker-isolation.md +183 -37
  574. package/docs/debugging-agent-runs.md +242 -0
  575. package/docs/getting-started-gke.md +129 -141
  576. package/docs/getting-started-identity-provider.md +53 -38
  577. package/docs/getting-started.md +17 -0
  578. package/docs/host-providers.md +294 -0
  579. package/docs/jira-agents.md +17 -8
  580. package/docs/knowledge/blob-not-found-semantics.md +41 -0
  581. package/docs/knowledge/bounded-file-descriptor.md +52 -0
  582. package/docs/knowledge/delegation-admission-slots.md +52 -0
  583. package/docs/knowledge/http-dispatcher-bootstrap.md +61 -0
  584. package/docs/knowledge/import-rename-target.md +52 -0
  585. package/docs/knowledge/index.md +57 -0
  586. package/docs/knowledge/log.md +9 -0
  587. package/docs/knowledge/mcp-cancelled-task-precedence.md +41 -0
  588. package/docs/knowledge/mcp-http-prompt-discovery.md +41 -0
  589. package/docs/knowledge/mcp-schema-module-boundary.md +41 -0
  590. package/docs/knowledge/nullable-tool-uniqueness.md +52 -0
  591. package/docs/knowledge/overview-cli.md +74 -0
  592. package/docs/knowledge/overview-coding-proxy.md +72 -0
  593. package/docs/knowledge/overview-coding.md +72 -0
  594. package/docs/knowledge/overview-config.md +60 -0
  595. package/docs/knowledge/overview-core.md +72 -0
  596. package/docs/knowledge/overview-deploy.md +83 -0
  597. package/docs/knowledge/overview-mcp.md +61 -0
  598. package/docs/knowledge/overview-prisma.md +72 -0
  599. package/docs/knowledge/overview-providers.md +89 -0
  600. package/docs/knowledge/overview-sandbox.md +83 -0
  601. package/docs/knowledge/overview-surfaces.md +83 -0
  602. package/docs/knowledge/private-datastore-shared-boundary.md +54 -0
  603. package/docs/knowledge/proxy-settlement-projections.md +41 -0
  604. package/docs/knowledge/run-pricing-first-writer.md +43 -0
  605. package/docs/knowledge/schedule-claim-transaction.md +41 -0
  606. package/docs/knowledge/secret-entry-replica-contract.md +52 -0
  607. package/docs/knowledge/terminal-run-first-writer.md +41 -0
  608. package/docs/knowledge/transactional-agent-authorization.md +52 -0
  609. package/docs/knowledge/viewer-notify-write-isolation.md +30 -0
  610. package/docs/knowledge/warm-input-publication.md +30 -0
  611. package/docs/knowledge/workspace-staging-failure.md +54 -0
  612. package/docs/knowledge.md +54 -14
  613. package/docs/mcp-servers.md +254 -0
  614. package/docs/native-sandbox.md +143 -31
  615. package/docs/observability.md +4 -0
  616. package/docs/security-deployment.md +139 -29
  617. package/docs/slack-notifications.md +35 -19
  618. package/docs/tool-secrets.md +45 -10
  619. package/docs/viewer-api.md +6 -0
  620. package/docs/viewer-api.openapi.yml +1 -1
  621. package/help/admin-viewer.md +28 -2
  622. package/help/agent-recipes.md +33 -2
  623. package/help/architecture-agent.md +11 -6
  624. package/help/brokered-secrets.md +3 -0
  625. package/help/build-claude-code-image.md +1 -1
  626. package/help/build-worker-image.md +3 -1
  627. package/help/builder-agent.md +19 -6
  628. package/help/claude-code-run-pane.md +40 -0
  629. package/help/code-review-agents.md +177 -6
  630. package/help/coding-packages.md +156 -6
  631. package/help/cost-attribution.md +9 -5
  632. package/help/creating-agents.md +14 -1
  633. package/help/dependency-cache.md +143 -0
  634. package/help/deploy-gke.md +15 -8
  635. package/help/errors/budget-exhausted.md +187 -0
  636. package/help/errors/budget-group-exhausted.md +5 -1
  637. package/help/errors/coding-mcp-pins-unavailable.md +35 -0
  638. package/help/errors/coding-stream-quota-exceeded.md +33 -0
  639. package/help/errors/coding-workspace-disk-exceeds-limit.md +39 -0
  640. package/help/errors/continuation-closed.md +9 -12
  641. package/help/errors/database-auth-invalid.md +1 -1
  642. package/help/errors/delegation-conflict.md +24 -0
  643. package/help/errors/file-list-truncated.md +45 -0
  644. package/help/errors/full-read-required.md +49 -0
  645. package/help/errors/github-account-not-allowed.md +4 -0
  646. package/help/errors/graph-incomplete.md +43 -0
  647. package/help/errors/graph-limit.md +43 -0
  648. package/help/errors/host-provider-error.md +40 -0
  649. package/help/errors/host-tool-failed.md +36 -0
  650. package/help/errors/mcp-call-limit.md +22 -0
  651. package/help/errors/mcp-call-timeout.md +22 -0
  652. package/help/errors/mcp-server-auth-failed.md +22 -0
  653. package/help/errors/mcp-server-credentials-unavailable.md +45 -0
  654. package/help/errors/mcp-server-error.md +28 -0
  655. package/help/errors/mcp-server-unreachable.md +22 -0
  656. package/help/errors/mcp-servers-off.md +21 -0
  657. package/help/errors/mcp-tool-not-allowed.md +26 -0
  658. package/help/errors/mcp-tool-removed.md +22 -0
  659. package/help/errors/mcp-unavailable.md +25 -0
  660. package/help/errors/merge-conflict.md +49 -0
  661. package/help/errors/native-sandbox-capacity.md +1 -1
  662. package/help/errors/native-sandbox-deadline-exceeded.md +1 -1
  663. package/help/errors/native-sandbox-docker-failed.md +1 -1
  664. package/help/errors/native-sandbox-gateway-error.md +20 -0
  665. package/help/errors/native-sandbox-gateway-unavailable.md +1 -1
  666. package/help/errors/native-sandbox-image-not-pinned.md +1 -1
  667. package/help/errors/native-sandbox-isolation-mismatch.md +1 -1
  668. package/help/errors/native-sandbox-launch-abandoned.md +21 -0
  669. package/help/errors/native-sandbox-network-unenforced.md +1 -1
  670. package/help/errors/native-sandbox-requires-catalog.md +1 -1
  671. package/help/errors/native-sandbox-unavailable.md +1 -1
  672. package/help/errors/native-sandbox-warm-delivery-failed.md +1 -1
  673. package/help/errors/native-sandbox-worker-exited.md +4 -3
  674. package/help/errors/native-sandbox-worker-lost.md +1 -1
  675. package/help/errors/native-sandbox-worker-unready.md +1 -1
  676. package/help/errors/package-not-allowed-pending.md +52 -0
  677. package/help/errors/package-not-allowed.md +51 -0
  678. package/help/errors/package-refusals.md +43 -0
  679. package/help/errors/patch-cursor-malformed.md +31 -0
  680. package/help/errors/repository-not-listed.md +36 -0
  681. package/help/errors/repository-required.md +36 -0
  682. package/help/errors/run-lost.md +39 -0
  683. package/help/errors/run-transcript-download.md +44 -0
  684. package/help/errors/secret-in-value.md +69 -0
  685. package/help/errors/target-merge.md +40 -0
  686. package/help/errors/tool-timeout.md +38 -0
  687. package/help/fix-merge-conflicts.md +73 -0
  688. package/help/github-app-setup.md +132 -0
  689. package/help/github.md +22 -0
  690. package/help/host-providers.md +40 -0
  691. package/help/identity-and-access.md +6 -1
  692. package/help/jira.md +23 -6
  693. package/help/knowledge.md +16 -7
  694. package/help/local-repositories.md +1 -1
  695. package/help/low-power-mode.md +7 -1
  696. package/help/mcp-servers.md +73 -0
  697. package/help/mcp.md +7 -2
  698. package/help/merge-order-check.md +5 -0
  699. package/help/native-capabilities.md +55 -1
  700. package/help/native-sandbox.md +16 -2
  701. package/help/operating-agents.md +21 -0
  702. package/help/package-audit-mode.md +91 -0
  703. package/help/related-pull-requests.md +17 -10
  704. package/help/repo-instructions-and-skills.md +3 -1
  705. package/help/resume-runs-locally.md +134 -0
  706. package/help/review-fix-rounds.md +33 -1
  707. package/help/sharing-agents.md +59 -0
  708. package/help/slack-notifications.md +19 -5
  709. package/help/status-comments.md +31 -0
  710. package/help/stop-run.md +58 -0
  711. package/help/troubleshooting/budgets.md +28 -0
  712. package/help/troubleshooting/coding-workers.md +86 -7
  713. package/help/troubleshooting/debugging-agent-runs.md +29 -0
  714. package/package.json +18 -10
  715. package/prisma/migrations/20261016000000_registry_approved_accepted_advisories/migration.sql +3 -0
  716. package/prisma/migrations/20261016000001_mark_ready_when_passing/migration.sql +3 -0
  717. package/prisma/migrations/20261017000000_debug_trace_max_mb/migration.sql +4 -0
  718. package/prisma/migrations/20261018000000_dependency_cache/migration.sql +53 -0
  719. package/prisma/migrations/20261019000000_claude_max_output_tokens/migration.sql +5 -0
  720. package/prisma/migrations/20261021000000_pr_description_hash/migration.sql +4 -0
  721. package/prisma/migrations/20261022000000_dependency_snapshot_validation_metadata/migration.sql +4 -0
  722. package/prisma/migrations/20261023000000_package_audit_mode/migration.sql +27 -0
  723. package/prisma/migrations/20261024000000_budget_events/migration.sql +26 -0
  724. package/prisma/migrations/20261025000000_cache_aware_holds/migration.sql +9 -0
  725. package/prisma/migrations/20261026000000_budget_overrun/migration.sql +4 -0
  726. package/prisma/migrations/20261027000000_coding_run_request/migration.sql +1 -0
  727. package/prisma/migrations/20261028000000_native_gateway_review_reads/migration.sql +6 -0
  728. package/prisma/migrations/20261029000000_lead_survives_deploy/migration.sql +6 -0
  729. package/prisma/migrations/20261030000000_local_review_covered_sha/migration.sql +2 -0
  730. package/prisma/migrations/20261031000000_coding_run_budget_limit/migration.sql +9 -0
  731. package/prisma/migrations/20261101000000_run_transcripts/migration.sql +22 -0
  732. package/prisma/migrations/20261102000000_host_providers/migration.sql +56 -0
  733. package/prisma/migrations/20261104000000_coding_agent_repository_list/migration.sql +5 -0
  734. package/prisma/migrations/20261106000000_tool_timeout/migration.sql +4 -0
  735. package/prisma/migrations/20261107000000_mcp_servers/migration.sql +33 -0
  736. package/prisma/migrations/20261108000000_coding_mcp/migration.sql +5 -0
  737. package/prisma/migrations/20261109000000_task_run_index/migration.sql +3 -0
  738. package/prisma/schema.prisma +468 -109
  739. package/scripts/git-askpass.sh +1 -1
  740. package/dist/sandbox/generated/zod-to-json-schema.bundle.js +0 -5
@@ -0,0 +1,73 @@
1
+ ---
2
+ id: fix-merge-conflicts
3
+ title: Fix merge conflicts on a wardby pull request
4
+ summary: Follow-up runs merge the PR's current target branch first and resolve its conflicts; ask to update a PR that fell behind.
5
+ audience: operator
6
+ tags: [github, pull-requests, merge-conflict, update-pr, target-branch, continuation, review_fix]
7
+ appliesTo: ">=0.7.0"
8
+ ---
9
+
10
+ # Fix merge conflicts on a wardby pull request
11
+
12
+ Every follow-up run on a pull request a wardby coding run opened (a mention on
13
+ the PR, a delegated `continuePriorRun`, a review fix round) first brings the
14
+ branch up to date with the branch the pull request **currently** targets:
15
+
16
+ 1. Before the agent starts, wardby asks GitHub for the pull request's base
17
+ branch. A pull request retargeted since it opened (a stacked PR whose
18
+ parent merged, a release branch) merges its new base, not the one the
19
+ first run used.
20
+ 2. wardby fetches that branch from the same repository (never a fork) and
21
+ merges it into the workspace, in trusted code, before the agent sees it.
22
+ A branch that already contains its target is left exactly as it was.
23
+ 3. **No conflicts:** the agent works on the updated branch as usual.
24
+ **Conflicts:** the agent's task lists the conflicted files and which side
25
+ is which (this pull request's branch, then the target). It is asked to
26
+ resolve every conflict keeping both sides' intent, fix the tests the
27
+ combination broke, and run the repository's checks.
28
+ 4. The push is one merge commit authored by Wardby, with the pull request's
29
+ head and the target as its parents. It is pushed even when the agent
30
+ changed nothing else, so asking a wardby agent on the pull request to
31
+ "update this PR" or "fix the merge conflicts" is enough.
32
+ 5. The run's status comment on the pull request says what was merged, for
33
+ example "Merged `main` @ `1a2b3c4` into this branch; resolved conflicts
34
+ in 2 files."
35
+
36
+ ## Ask to update this PR
37
+
38
+ Mention the wardby agent on the pull request with "please update this PR" or
39
+ "please fix the merge conflicts". The follow-up merges the target branch,
40
+ resolves any conflicts, and pushes the merge commit.
41
+
42
+ ## What is checked
43
+
44
+ - **Conflict markers.** A file the merge left conflicted that still holds
45
+ conflict markers when the run finishes stops the push: the run fails with
46
+ category `merge_conflict` and nothing is pushed — see
47
+ [Conflict markers remain](errors/merge-conflict.md).
48
+ - **Protected paths and size limits** apply to the agent's own changes,
49
+ measured against the automatic merge: a change the target branch made to a
50
+ protected path is merged as it is, while resolving a conflict in a protected
51
+ path, or reverting the target's change to one, is an edit by the agent and
52
+ is refused as usual (see [Protected path](errors/protected-path.md)).
53
+ - **Someone else pushed meanwhile.** The push is still a fast-forward of the
54
+ head the run started from, so a push by anyone else in the meantime fails
55
+ the run the same way it did before, with nothing pushed.
56
+ - **No merge base.** A target branch that cannot be fetched, or shares no
57
+ history with the pull request, fails the run before the agent starts — see
58
+ [Target branch could not be merged](errors/target-merge.md).
59
+
60
+ ## Limits
61
+
62
+ - Local repositories (`local:`) have no pull requests, so a continuation there
63
+ is not merged with anything.
64
+ - A conflicted file with no markers (a binary file, or one deleted on one side
65
+ and changed on the other) holds one side's version, or the changed version.
66
+ The agent is told to check it, but nothing stops it from leaving that version
67
+ as it is.
68
+ - A conflict in a protected path cannot be resolved by the agent: resolving it
69
+ is an edit to that path, which is refused. Resolve that file by hand and push.
70
+
71
+ Related: [Run GitHub code-review agents](code-review-agents.md),
72
+ [Automatic review fix rounds](review-fix-rounds.md),
73
+ [Related pull requests across repositories](related-pull-requests.md).
@@ -0,0 +1,132 @@
1
+ ---
2
+ id: github-app-setup
3
+ title: Set up the GitHub App
4
+ summary: Step by step, create Wardby's GitHub App, choose its events and permissions, install it on your repositories, and give the server its credentials.
5
+ audience: operator
6
+ tags: [github, github-app, setup, permissions, webhooks, GITHUB_APP_ID, GITHUB_APP_WEBHOOK_SECRET, link_host_account]
7
+ appliesTo: ">=0.2.1"
8
+ ---
9
+
10
+ # Set up the GitHub App
11
+
12
+ Wardby reaches GitHub through a GitHub App that you create and own. Each Wardby
13
+ server needs its own App, because an App has exactly one webhook URL. For an
14
+ overview of how Wardby uses the App, see
15
+ [Connect GitHub repositories](github.md).
16
+
17
+ Decide first what the App is for:
18
+
19
+ - **Coding agents only**, triggered with `trigger_agent` or on a schedule:
20
+ GitHub never calls your server, so you can skip the webhook (step 2) and the
21
+ events (step 4).
22
+ - **Review agents, `@`-mentions, review fix rounds, merge watchers, or
23
+ marking pull requests ready**: these start from GitHub webhooks, so your
24
+ server must be reachable over public HTTPS at the host of
25
+ `MCP_CANONICAL_URI`.
26
+
27
+ ## 1. Create the App
28
+
29
+ In the GitHub settings of the user or organization that will own it, open
30
+ **Developer settings**, then **GitHub Apps**, then **New GitHub App**. Give
31
+ it a name and a homepage URL. The owner matters: Wardby always serves the
32
+ App's owner, and other accounts only when you list them (step 7).
33
+
34
+ ## 2. Webhook
35
+
36
+ - **Webhook URL**: `https://<your-host>/hosts/github/events`, where
37
+ `<your-host>` is the host of `MCP_CANONICAL_URI`. Requests naming any other
38
+ host are rejected.
39
+ - **Webhook secret**: a random value, for example from `openssl rand -hex 32`.
40
+ The same value goes into `GITHUB_APP_WEBHOOK_SECRET` (step 7). Until that
41
+ variable is set, the endpoint answers 404.
42
+
43
+ For coding agents only, untick **Active** under Webhook instead.
44
+
45
+ ## 3. Repository permissions
46
+
47
+ | Permission | Access |
48
+ | --------------- | -------------------------------------------------- |
49
+ | Contents | Read and write (Read for an App that only reviews) |
50
+ | Pull requests | Read and write |
51
+ | Checks | Read and write |
52
+ | Issues | Read and write |
53
+ | Commit statuses | Read (optional) |
54
+
55
+ - **Contents: Read and write** lets coding agents push a branch for each pull
56
+ request. A review-only App can have Read, but its reviewers then can't
57
+ resolve their own fixed review threads.
58
+ - **Checks** carries the `wardby review` and `wardby merge order` checks.
59
+ - **Issues** covers mentions in issues and the labels used by
60
+ [automatic review fix rounds](review-fix-rounds.md).
61
+ - **Commit statuses** lets reviewers see CI that reports commit statuses
62
+ rather than check runs.
63
+
64
+ If you change permissions later, every installation must accept the new set
65
+ before its webhooks resume.
66
+
67
+ ## 4. Events
68
+
69
+ Tick each one; every event is its own checkbox.
70
+
71
+ | Event | Needed for |
72
+ | --------------------------- | ----------------------------------------------------------------------------------------------------------- |
73
+ | Pull request | `pull_request` reviewers and `review_fix` |
74
+ | Check run | Re-running the review check |
75
+ | Check suite | Reviews that wait for CI (`waitForCi`), and `markReadyWhenPassing` marking a draft ready once CI goes green |
76
+ | Issue comment | `@`-mentions in issue and pull request comments |
77
+ | Issues | `@`-mentions in a newly opened or edited issue |
78
+ | Pull request review comment | `@`-mentions in inline review threads |
79
+ | Push | The `push` trigger (merge-watcher agents) |
80
+
81
+ Missing an event fails quietly: the matching trigger never starts. A common
82
+ case is leaving out Check suite, so drafts that should be marked ready stay
83
+ drafts.
84
+
85
+ ## 5. Account linking
86
+
87
+ `link_host_account` lets a Wardby user prove which GitHub account they are, so
88
+ Wardby can check their repository access. In the App's **General** settings:
89
+
90
+ - **Callback URL**: `https://<your-host>/hosts/github/user-callback`.
91
+ - Leave **Request user authorization (OAuth) during installation** unticked.
92
+ - Note the **Client ID** (not the numeric App ID) and generate a **client
93
+ secret**.
94
+
95
+ ## 6. Private key and installation
96
+
97
+ 1. Save the App, note its numeric **App ID**, and generate a **private key**
98
+ (a `.pem` file).
99
+ 2. Under **Install App**, install it on your account or organization and
100
+ choose **Only select repositories**: pick only the repositories your agents
101
+ may use.
102
+
103
+ ## 7. Configure Wardby
104
+
105
+ | Variable | Value |
106
+ | -------------------------------- | --------------------------------------------------------------------------- |
107
+ | `GITHUB_APP_ID` | The numeric App ID |
108
+ | `GITHUB_APP_PRIVATE_KEY` | The contents of the `.pem` file |
109
+ | `GITHUB_APP_WEBHOOK_SECRET` | The webhook secret from step 2 |
110
+ | `GITHUB_APP_CLIENT_ID` | The Client ID from step 5 (set together with the client secret, or neither) |
111
+ | `GITHUB_APP_CLIENT_SECRET` | The client secret from step 5 |
112
+ | `WARDBY_GITHUB_ALLOWED_ACCOUNTS` | Optional: accounts other than the App's owner to serve, comma-separated |
113
+ | `WARDBY_MENTION_EXPLANATIONS` | Optional: `false` = no reply saying why a mention started nothing |
114
+
115
+ Restart the server after setting them. Without `GITHUB_APP_ID` and
116
+ `GITHUB_APP_PRIVATE_KEY`, coding runs on GitHub repositories fail with
117
+ [`vcs_github_not_configured`](errors/vcs-github-not-configured.md).
118
+ Repositories of accounts that aren't served are refused with
119
+ [`github_account_not_allowed`](errors/github-account-not-allowed.md).
120
+
121
+ ## 8. Check it
122
+
123
+ - Run `link_host_account` and finish the GitHub sign-in it opens.
124
+ - Link an agent with `link_repository`, or create a coding agent on the
125
+ repository (see [builder agents](builder-agent.md) and
126
+ [Run GitHub code-review agents](code-review-agents.md)).
127
+ - In the App's **Advanced** settings, **Recent Deliveries** should show your
128
+ server answering webhooks with a 2xx status. A signature failure there means
129
+ the webhook secret and `GITHUB_APP_WEBHOOK_SECRET` differ.
130
+
131
+ The full reference, including rollout order on Kubernetes deployments, is
132
+ [Registering the GitHub App](../docs/code-review-agents.md#registering-the-github-app).
package/help/github.md CHANGED
@@ -23,6 +23,8 @@ Workers do not receive the GitHub App private key. A trusted component validates
23
23
  the changes, pushes a controlled branch, and opens at most one draft pull
24
24
  request. Wardby does not auto-merge coding-agent output.
25
25
 
26
+ To create and install the App, follow [Set up the GitHub App](github-app-setup.md).
27
+
26
28
  Set the App's credentials as `GITHUB_APP_ID` and `GITHUB_APP_PRIVATE_KEY` on
27
29
  the wardby server. Without them, a coding run on a GitHub repository fails with
28
30
  [`vcs_github_not_configured`](errors/vcs-github-not-configured.md).
@@ -69,6 +71,19 @@ The `review_fix` trigger lets Wardby fix its own review's findings
69
71
  automatically, up to a round cap, on pull requests its own coding runs
70
72
  opened. See [Automatic review fix rounds](review-fix-rounds.md).
71
73
 
74
+ When a mention run finishes without opening a pull request or failing a
75
+ sub-run and its reply is longer than about 2,000 characters (for example a
76
+ plan), the status comment does not cut the reply short. It says "✅ Finished
77
+ without opening a pull request. The full reply follows in the next
78
+ comment(s)." (in a review thread: "...follows in this pull request's
79
+ conversation."), and the reply is posted in up to four numbered comments
80
+ ("Reply, part i of n") of about 60,000 characters each, split at headings,
81
+ paragraphs or lines. Anything beyond four parts is cut with a note; the full
82
+ text stays on the run (`get_run`, `finalText`). `@`-mentions in the reply are
83
+ defused. Each part is posted once; if one cannot be posted, the rest are
84
+ skipped. Shorter replies, and runs that opened a pull request or had a failed
85
+ sub-run, keep the status comment that quotes up to 2,000 characters.
86
+
72
87
  `waitForCi` holds a reviewer's review until that pull request's own CI
73
88
  finishes, and gates its ability to approve on CI passing. See
74
89
  [Review after CI (`waitForCi`)](code-review-agents.md#review-after-ci-waitforci).
@@ -79,4 +94,11 @@ opening coding run was delegated by a lead agent. See [Reviewing a pull
79
94
  request a delegated run
80
95
  opened](code-review-agents.md#reviewing-a-pull-request-a-delegated-run-opened).
81
96
 
97
+ With Wardby 0.7.0 or later, `markReadyWhenPassing` on the write link of the
98
+ agent the event triggers (a builder, or a lead that delegates to a coding
99
+ builder) has Wardby mark the draft pull requests it opens here ready for review
100
+ on its own, once every Wardby reviewer check and CI on the head are green
101
+ and, for a merge-ordered set, the steps it depends on have merged. See [Mark
102
+ ready when passing](code-review-agents.md#mark-ready-when-passing).
103
+
82
104
  For Jira Cloud instead of GitHub, see [Run Jira agents](jira.md).
@@ -0,0 +1,40 @@
1
+ ---
2
+ id: host-providers
3
+ title: Add a code host with your own tools (host providers)
4
+ summary: Register a code host implemented by custom tools, approve changes to them, and test them with read-only calls. Agents can't use a provider yet.
5
+ audience: operator
6
+ tags: [host provider, register_host_provider, approve_host_provider_tools, hosts:admin, host-manager]
7
+ appliesTo: >=0.8.0
8
+ ---
9
+
10
+ # Host providers
11
+
12
+ A host provider adds a code host using your own custom tools. This release lets you register
13
+ a provider, approve its tools and test them. Agents can't use a registered provider yet.
14
+
15
+ You need the `hosts:admin` scope and a role that grants it (`admin` or `host-manager`). See
16
+ [Identity and access](identity-and-access.md).
17
+
18
+ 1. Write one tool per operation with `create_tool`.
19
+ 2. Broker each credential with `set_secret_broker`, allowing the API hosts and the git host. The
20
+ permission credential needs only the API hosts ([Brokered secrets](brokered-secrets.md)).
21
+ 3. Call `register_host_provider`. No restart is needed today, because agents can't use a provider
22
+ yet; a new provider will need one once they can. A refusal has a
23
+ [`host_provider_*` code](errors/host-provider-error.md).
24
+ 4. Call `test_host_provider` to check each read-only tool. Failures have
25
+ [fixed codes](errors/host-tool-failed.md).
26
+
27
+ `update_tool` changes nothing until you call `approve_host_provider_tools`, a new `timeoutMs`
28
+ included. See which tools have changes with `get_host_provider`.
29
+
30
+ A bound tool reaches only the provider's API hosts, inside one repository's path, and Wardby
31
+ follows no redirects; the tool must fetch the `Location` itself. Any host manager can read and re-register any
32
+ provider.
33
+
34
+ Replacing a secret a provider uses, or changing its broker config, needs `hosts:admin` as well as
35
+ `secrets:write`. A webhook secret stays at 16 characters or more.
36
+
37
+ Keep provider credentials unattached: an agent's own tools can use an attached one without the
38
+ provider's path guard.
39
+
40
+ See [docs/host-providers.md](../docs/host-providers.md) for the full guide.
@@ -21,7 +21,7 @@ audience, and the granted Wardby scopes in `scope` or `scp`.
21
21
 
22
22
  Scopes authorize normal operations such as managing agents, runs, tools,
23
23
  datastores, secrets, webhooks, budgets, packages, services, memory, and
24
- models. Six sensitive permissions have an additional role requirement:
24
+ models. Seven sensitive permissions have an additional role requirement:
25
25
 
26
26
  - `agents:admin` requires the Wardby `admin` role.
27
27
  - `packages:approve` requires the `admin` or `package-approver` role.
@@ -31,6 +31,9 @@ models. Six sensitive permissions have an additional role requirement:
31
31
  - `models:admin` requires the `admin` or `model-manager` role. It adds,
32
32
  overrides, disables, and resets model catalog entries; see
33
33
  [Models and pricing](models.md).
34
+ - `hosts:admin` requires the `admin` or `host-manager` role. It registers host
35
+ providers, approves their tools and, with `secrets:write`, replaces their secrets; see
36
+ [Host providers](../docs/host-providers.md).
34
37
  - `power:manage` requires the `admin` role. It reads low-power state and
35
38
  sleeps the coding proxy and native gateway now (`power_status`,
36
39
  `power_sleep`); see
@@ -46,3 +49,5 @@ that request every advertised scope otherwise fail with `invalid_scope`.
46
49
  Read [`docs/getting-started-identity-provider.md`](../docs/getting-started-identity-provider.md)
47
50
  for the required claims, scope list, role mapping, provider examples, and
48
51
  client registration.
52
+
53
+ From Wardby 0.7.0, to share an agent with one person or with everyone signed in, see the help article `sharing-agents`.
package/help/jira.md CHANGED
@@ -65,13 +65,24 @@ the `Jira acting as` startup line to confirm the account.
65
65
  Beyond reading, searching and commenting, linked agents get
66
66
  `jira_list_transitions`, `jira_transition`, `jira_update_fields`,
67
67
  `jira_link_issues`, and `jira_get_property` / `jira_set_property` for
68
- per-issue state, plus `jira_create_issue` and `jira_read_attachment`. Each authorizes against the issue's own project and the
69
- agent's live link. Properties are not allowlisted: any `write` link can set
70
- them and any link can read them. They are stored as `wardby.<agentId>.<name>`,
71
- and anyone with Jira API access to the issue can read or overwrite them, so
72
- never store secrets there. Run status comments include an `Agent spend: $...`
73
- line. To see what work on a card, epic, or project cost, read
68
+ per-issue state, plus `jira_create_issue` and `jira_read_attachment`. Each
69
+ authorizes against the issue's own project and the agent's live link.
70
+ Properties are not allowlisted: any `write` link can set them and any link can
71
+ read them. They are stored as `wardby.<agentId>.<name>`, and anyone with Jira
72
+ API access to the issue can read or overwrite them, so never store secrets
73
+ there. Run status comments include an `Agent spend: $...` line. To see what
74
+ work on a card, epic, or project cost, read
74
75
  [Attribute agent spend to issues](cost-attribution.md).
76
+
77
+ When a run succeeds, opens no pull request, has no failed sub-run, and its
78
+ reply is longer than about 2,000 characters (for example a plan), the status
79
+ comment says "✅ The full reply follows in the next comment(s)." and the reply
80
+ follows in up to four numbered comments ("Reply, part i of n") of about 15,000
81
+ characters each, split at headings, paragraphs or lines. Anything beyond is
82
+ cut with a note, and the full text stays on the run (`get_run`, `finalText`).
83
+ `@`-mentions are defused. Each part is posted once; if one cannot be posted,
84
+ the rest are skipped. Shorter replies stay in the status comment.
85
+
75
86
  If the token belongs to a person, Wardby refuses to act: startup logs an error
76
87
  and the webhook answers 503 `jira_personal_account`. Deliveries with a
77
88
  timestamp older than two hours (or more than five minutes ahead) are ignored.
@@ -125,6 +136,12 @@ agent how to continue each open one; see
125
136
  [Related pull requests across repositories](related-pull-requests.md). See
126
137
  the full guide for the recipe.
127
138
 
139
+ To have a code reviewer check such a pull request against the ticket's own
140
+ acceptance criteria, link the reviewer to the Jira project too (read access
141
+ is enough): it then reads the ticket with `jira_get_issue`. Without that link
142
+ it can only judge the criteria from the pull request's description; see
143
+ [Run GitHub code-review agents](code-review-agents.md#reading-the-issue-a-pull-request-resolves).
144
+
128
145
  ## Trust rules
129
146
 
130
147
  Only people (not customers, apps, or the service account itself) can trigger
package/help/knowledge.md CHANGED
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  id: knowledge
3
3
  title: Architecture knowledge bundles
4
- summary: Keep cited, non-obvious architecture knowledge in docs/knowledge/ so coding runs, reviewers, and live sessions (through the AGENTS.md pointer) use it; validate it with wardby knowledge check.
4
+ summary: Keep cited, non-obvious architecture knowledge in docs/knowledge/ (or a folder you pick in .wardby/knowledge.yaml) so coding runs, reviewers, and live sessions (through the AGENTS.md pointer) use it; validate it with wardby knowledge check.
5
5
  audience: operator
6
- tags: [knowledge, architecture, coding-agents, okf, cli, drift, push]
6
+ tags: [knowledge, architecture, coding-agents, okf, cli, drift, push, knowledge.yaml, bundle-path]
7
7
  appliesTo: >=0.4.0
8
8
  ---
9
9
 
@@ -16,9 +16,18 @@ their reasons, and cross-module contracts. It uses the Open Knowledge Format
16
16
  for, the paths it affects, and citations to the code it describes. Each citation
17
17
  carries a commit `sha` and a `spanHash` so staleness can be detected.
18
18
 
19
- - `docs/knowledge/index.md` lists every concept in one line; `log.md` records
20
- changes to the bundle.
21
- - When `docs/knowledge/index.md` exists on a coding run's base branch, the run's
19
+ - `index.md` lists every concept in one line; `log.md` records changes to the
20
+ bundle.
21
+ - **Pick your own folder:** add `.wardby/knowledge.yaml` with one line,
22
+ `path: .okf` (any repo-relative folder outside `.wardby/` and `.git/`). Wardby
23
+ then reads the bundle there for the coding-run note, merge-watcher drift runs,
24
+ and `wardby knowledge check`. Without the file it uses `docs/knowledge/`; an
25
+ invalid file is ignored with a warning (`knowledge_config_invalid` from the
26
+ check). Or skip wardby's reading entirely: tell your agents where knowledge
27
+ lives in their prompts or `AGENTS.md`, and they use that folder; you lose
28
+ only the automatic note and drift scoping on merge. Update any prompt that
29
+ names `docs/knowledge/` to your folder.
30
+ - When the bundle's `index.md` exists on a coding run's base branch, the run's
22
31
  task includes the index automatically (up to 8 KiB). It never fails a
23
32
  dispatch; an unreadable index just means no note.
24
33
  - When the run's commit is known (it always is for a normal clone) and the
@@ -26,8 +35,8 @@ carries a commit `sha` and a `spanHash` so staleness can be detected.
26
35
  has no git metadata, so use that value for citation `sha` fields.
27
36
  - Validate the bundle with `wardby knowledge check` (add `--strict` to fail on
28
37
  warnings, `--json` for machine output, `--root` to point at the repository).
29
- Errors are `concept_invalid`, `concept_secret`, `index_missing`, and
30
- `index_link_broken`; warnings are `concept_not_indexed`,
38
+ Errors are `concept_invalid`, `concept_secret`, `index_missing`,
39
+ `index_link_broken`, and `knowledge_config_invalid`; warnings are `concept_not_indexed`,
31
40
  `citation_unverifiable`, and `citation_stale`.
32
41
  - Builders may edit concept prose. Citations can go stale afterward; the
33
42
  architecture agent re-anchors them.
@@ -50,7 +50,7 @@ The easiest way to try it is the optional coding step of
50
50
  machine cannot see the folder: it ignores a trusted folder that does not
51
51
  exist, so the repository fails with `local_repo_not_allowed`, and `doctor`
52
52
  reports the folder as missing.
53
- - **git 2.24 or newer** on the machine that runs the wardby server.
53
+ - **git 2.38 or newer** on the machine that runs the wardby server.
54
54
  - **Worker images from this release or later.** An older worker image rejects
55
55
  a `local:` repository and the run fails with `worker_input_failed`. That
56
56
  includes a bring-your-own `workerImageRef` image: rebuild it on a current
@@ -46,7 +46,11 @@ only when `WARDBY_LOW_POWER=1`.
46
46
  a sandbox run does the same for the gateway. The wait is at least 5 minutes.
47
47
  A `KUBERNETES_READY_TIMEOUT_MS` (proxy) or `NATIVE_SANDBOX_READY_TIMEOUT_MS`
48
48
  (gateway) above that, set on the control-plane Deployment, raises it. Expect
49
- about 1 to 2 minutes extra on a cold node. Log: `power: proxy woke`.
49
+ about 1 to 2 minutes extra on a cold node. Log: `power: proxy woke`. A
50
+ sandbox run woken this way may then wait for a gVisor node for its worker
51
+ pod, so its first model call can come several minutes after it started. From
52
+ 0.7.0 it shows as running the whole time and is not reaped as orphaned; only
53
+ the wake and pod-start limits above can fail it.
50
54
  - **Preflight.** The first coding run after a control-plane restart also runs
51
55
  the cluster preflight canary, because start-up preflight is deferred while the
52
56
  proxy sleeps (`kubernetes_preflight_deferred`).
@@ -107,6 +111,8 @@ full table.
107
111
 
108
112
  - [`low_power_wake_timeout`](errors/low-power-wake-timeout.md): the target did
109
113
  not become ready in time, or its Deployment does not exist.
114
+ - `native_sandbox_launch_abandoned` (0.7.0 and later): a sandbox run was
115
+ stopped while the gateway woke, so no worker pod was made.
110
116
  - [`low_power_disabled`](errors/low-power-disabled.md): `power_sleep` was
111
117
  called while the mode is off.
112
118
  - [`low_power_scale_forbidden`](errors/low-power-scale-forbidden.md): the
@@ -0,0 +1,73 @@
1
+ ---
2
+ id: mcp-servers
3
+ title: Remote MCP server tools for native and coding agents
4
+ summary: Register a remote MCP server, then attach an allowlist of its tools to a native, Claude Code or Codex agent; credentials stay in brokered secrets.
5
+ audience: operator
6
+ tags: [mcp, mcp server, coding-agent, codex, register_mcp_server, attach_mcp_server, readOnlyHint, WARDBY_MCP_SERVERS]
7
+ appliesTo: ">=0.8.0"
8
+ ---
9
+
10
+ # Remote MCP server tools for native and coding agents
11
+
12
+ A native, Claude Code or Codex agent can call tools from a remote MCP server (Streamable HTTP, HTTPS only).
13
+
14
+ 1. Create a [brokered secret](brokered-secrets.md) for the server's host, for example
15
+ `Authorization: Bearer {value}`.
16
+ 2. `register_mcp_server` with a `name`, the `url` (`https://mcp.example.com/mcp`) and
17
+ `secretNames`. Wardby saves the server's tool list.
18
+ 3. `attach_mcp_server` with the agent, the server and `allowedTools` (exact names, at least one).
19
+ The agent sees each as `<server name>__<tool name>`.
20
+ 4. After the server changes its tools, `refresh_mcp_server` applies the new list at once. Allowed
21
+ tools the server dropped show as `missingTools` in `get_agent`.
22
+
23
+ Each call has `callTimeoutMs` (default `30000`, at most `WARDBY_TOOL_MAX_TIMEOUT_MS`, and never
24
+ past the run's deadline). Results are untrusted input; the allowlist is the control. stdio servers
25
+ and OAuth are not supported.
26
+
27
+ `WARDBY_MCP_SERVERS` is `owners` (default), `admins` (registering needs `hosts:admin`) or `off`
28
+ (only `detach_mcp_server` and `delete_mcp_server` still work, for cleanup).
29
+
30
+ Each call opens a fresh MCP session, so a server that keeps state between calls in one session
31
+ won't see it. Arguments that aren't a JSON object return `invalid_arguments`.
32
+
33
+ ## Coding agents
34
+
35
+ `attach_mcp_server` also takes a Claude Code or Codex agent. Its run reaches the tools only through
36
+ the coding proxy and the native gateway; the worker never sees the server's URL or secrets.
37
+
38
+ - Claude Code agents see each tool as `mcp__wardby_mcp__<server name>__<tool name>` and may use any
39
+ allowed tool.
40
+ - Codex agents may use only tools the server marks `readOnlyHint: true`. Wardby checks this when
41
+ you attach, when a run loads and on every call. Repository code in a Codex run can read the run's
42
+ MCP token, so a Codex agent must not be given tools that change things. `readOnlyHint` is the
43
+ server's claim, which Wardby can't verify, so the allowlist stays your control.
44
+ - A run may make `WARDBY_MCP_MAX_CALLS_PER_RUN` calls (default `100`, failed calls count); more are
45
+ refused with [`mcp_call_limit`](errors/mcp-call-limit.md).
46
+ - The proxy needs `WARDBY_MCP_GATEWAY_URL`. Without it coding agents get no MCP tools
47
+ ([`mcp_unavailable`](errors/mcp-unavailable.md)).
48
+ - MCP for coding agents needs this release's Claude worker image and a new Codex driver image.
49
+ Older images get no MCP tools, and runs don't fail.
50
+ - A repository's MCP configuration is still never loaded.
51
+ - Codex models that use tool search load MCP tools on demand. They need this release's coding
52
+ proxy; an older one refuses their requests with `openai_tool_not_allowed:tool_search`.
53
+ - Switching an agent to Codex with `update_agent` keeps its attachments, but tools not marked
54
+ read-only won't reach Codex runs; the result's `warnings` names them.
55
+ - The proxy gives up on a coding run's MCP call after 5 minutes, whatever
56
+ `WARDBY_TOOL_MAX_TIMEOUT_MS` says ([`mcp_unavailable`](errors/mcp-unavailable.md)).
57
+
58
+ Share a server with `grant_access` (`resourceType: "mcp_server"`; needs the `agents:write` scope,
59
+ registering needs `tools:write`). `use` lets the grantee attach it, and its tools then run with your
60
+ secrets. Revoking the grant, or lowering it to `read`, detaches the server from the grantee's agents
61
+ at once, and their runs' next call is refused with `mcp_tool_not_allowed`.
62
+
63
+ Errors a call can return: [`mcp_server_unreachable`](errors/mcp-server-unreachable.md),
64
+ [`mcp_server_auth_failed`](errors/mcp-server-auth-failed.md),
65
+ [`mcp_server_credentials_unavailable`](errors/mcp-server-credentials-unavailable.md),
66
+ [`mcp_server_error`](errors/mcp-server-error.md),
67
+ [`mcp_tool_not_allowed`](errors/mcp-tool-not-allowed.md),
68
+ [`mcp_tool_removed`](errors/mcp-tool-removed.md),
69
+ [`mcp_call_timeout`](errors/mcp-call-timeout.md),
70
+ [`mcp_servers_off`](errors/mcp-servers-off.md), and for coding agents
71
+ [`mcp_call_limit`](errors/mcp-call-limit.md) and [`mcp_unavailable`](errors/mcp-unavailable.md).
72
+
73
+ Full guide: [Remote MCP servers](../docs/mcp-servers.md).
package/help/mcp.md CHANGED
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  id: mcp-access
3
- title: Connect an MCP client
3
+ title: Connect a client to Wardby
4
4
  summary: Use Wardby's local stdio or protected HTTP MCP transport safely.
5
5
  audience: developer
6
6
  tags: [mcp, oauth, codex, claude-code]
7
7
  appliesTo: >=0.2.1
8
8
  ---
9
9
 
10
- # Connect an MCP client
10
+ # Connect a client to Wardby
11
11
 
12
12
  For local use, `wardby quickstart` can register the local stdio MCP server with
13
13
  Codex or Claude Code. Local stdio trusts the local operator.
@@ -28,3 +28,8 @@ offline catalog as `wardby help`; they expose no instance data or credentials.
28
28
 
29
29
  See [`docs/getting-started-identity-provider.md`](../docs/getting-started-identity-provider.md)
30
30
  for the supported self-hosted and delegated identity-provider setup.
31
+
32
+ From Wardby 0.8.0, Claude Code can show your runs in a pane beside the chat
33
+ through the `wardby-runs` plugin: run `wardby claude-plugin install`, then
34
+ `/wardby-runs`. Search help for "claude code plugin" (article
35
+ `claude-code-run-pane`, Wardby 0.8.0 and later).
@@ -51,6 +51,11 @@ merge order set by the delegating agent," counted over the whole set
51
51
  (merged and closed pull requests included), so a pull request's step
52
52
  number doesn't change as earlier steps merge.
53
53
 
54
+ With Wardby 0.7.0 or later, when the delegating lead is linked with
55
+ `markReadyWhenPassing`, later steps become ready for review only once this
56
+ check is `success`. See
57
+ [Mark ready when passing](code-review-agents.md#mark-ready-when-passing).
58
+
54
59
  ### Waiting for the delegating run to finish
55
60
 
56
61
  While the delegating (lead) agent's run that produced this set is still
@@ -3,7 +3,7 @@ id: native-capabilities
3
3
  title: Use native agents, tools, and data
4
4
  summary: Attach scoped tools, secrets, datastores, memory, schedules, and sub-agents to a native Wardby agent.
5
5
  audience: developer
6
- tags: [agents, tools, secrets, datastores, memory, schedules, subagents]
6
+ tags: [agents, tools, secrets, datastores, memory, schedules, subagents, zod, create_tool, dry_run_tool, timeoutMs, mcp]
7
7
  appliesTo: >=0.2.1
8
8
  ---
9
9
 
@@ -20,11 +20,65 @@ checkout. Give each agent only the capabilities its job needs:
20
20
  - **Schedules and webhooks** to start event-driven work.
21
21
  - **Sub-agents** for delegated, bounded work with their own capability set.
22
22
 
23
+ A tool's parameters are a Zod schema written as source text (`paramsZod` on
24
+ `create_tool` and `update_tool`). Wardby compiles it inside the sandbox, both to
25
+ derive the JSON Schema the model sees and to validate each call's arguments.
26
+
27
+ Wardby itself now uses Zod 4. For this release only, a tool's `paramsZod` is
28
+ still compiled with Zod 3 (Zod 4's built-in `zod/v3` API), so existing tools keep
29
+ working unchanged; a schema Zod 3 can't compile, such as one using `z.email()`,
30
+ is compiled with Zod 4. **Zod 3 schemas stop working in the next release**,
31
+ which compiles `paramsZod` with Zod 4 only. A schema that calls something Zod 4
32
+ removed, such as `.nonstrict()`, `.deepPartial()`, `z.ostring()` or
33
+ `z.string().ip()`, will then fail every call's validation.
34
+
35
+ Wardby warns about each such tool now:
36
+
37
+ - `create_tool`, `update_tool` and `dry_run_tool` results include a `warnings`
38
+ list naming the tool and the removed methods;
39
+ - in `list_tools` and in `get_agent`'s attached tools, each tool you own that is
40
+ affected carries the same `warnings` list;
41
+ - `wardby tool create` and bundle imports print the same warning;
42
+ - the server logs one warning per affected tool at startup.
43
+
44
+ To check a schema before the next release, call `dry_run_tool` with the tool's
45
+ `paramsZod` and sample arguments. With no `warnings` in the result, the schema
46
+ compiles with Zod 4 and Zod 4 treats those arguments the same way. Otherwise,
47
+ rewrite the schema with the Zod 4 API (for example `z.looseObject()` for
48
+ `.nonstrict()`, `z.string().optional()` for `z.ostring()`, and `z.ipv4()` or
49
+ `z.ipv6()` for `.ip()`), dry-run it again, and save it with `update_tool`.
50
+
51
+ ## Tool time limits
52
+
53
+ Wardby 0.8.0 and later. Each call of a tool has 10 seconds by default. A tool that calls a slow API can
54
+ ask for more with `timeoutMs` (milliseconds, at least `1000`) on `create_tool`,
55
+ `update_tool` or `dry_run_tool`, or `--timeout-ms` on `wardby tool create` and
56
+ `wardby tool update`. Pass `timeoutMs: null` to `update_tool` (or
57
+ `--timeout-ms default` to `wardby tool update`) to go back to the default.
58
+
59
+ - The limit covers the whole call. Each `fetch` may run until the limit, and a
60
+ timer (`setTimeout`) can't be set for longer than it.
61
+ - The server's `WARDBY_TOOL_MAX_TIMEOUT_MS` (default `300000`, five minutes)
62
+ caps it. A larger `timeoutMs` is refused with an error naming the ceiling. If
63
+ the operator lowers the ceiling later, existing tools run with the ceiling.
64
+ - A run keeps the value it loaded, as it does the tool's code.
65
+ - A call never outlasts its run: stopping the run aborts it, and a sandboxed
66
+ run's deadline cuts it off.
67
+ - `list_tools` and `get_agent` show each tool's `timeoutMs` (`null` means the
68
+ default).
69
+
70
+ Test a slow tool with `dry_run_tool` and the same `timeoutMs` before you attach
71
+ it. A call that runs out of time fails with a `timeout` error; the help article
72
+ `errors/tool-timeout` explains what to do.
73
+
23
74
  Use a budget or shared budget group on every agent, and inspect runs before
24
75
  expanding its access. An access grant is intentional delegation: use it only
25
76
  when an owner permits one agent to use another resource. Creating or changing
26
77
  tools, secrets, datastores, schedules, webhooks, memory, and budget groups
27
78
  requires the matching MCP scope.
28
79
 
80
+ Native agents can also call tools from remote MCP servers; see
81
+ [Remote MCP servers](../docs/mcp-servers.md) (0.8.0+).
82
+
29
83
  See [Operate agents](operating-agents.md) for run and budget management, and
30
84
  [`README.md`](../README.md) for the feature overview and MCP operations.