@wardby/cli 0.5.3 → 0.7.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 (763) hide show
  1. package/.env.example +33 -0
  2. package/README.md +25 -14
  3. package/deploy/local/docker-compose.quickstart-coding.yml +13 -0
  4. package/dist/claude-coding-worker/context.d.ts +22 -0
  5. package/dist/claude-coding-worker/context.js +92 -0
  6. package/dist/claude-coding-worker/driver.d.ts +27 -3
  7. package/dist/claude-coding-worker/driver.js +161 -20
  8. package/dist/claude-coding-worker/main.js +34 -6
  9. package/dist/claude-coding-worker/sdk.js +25 -5
  10. package/dist/claude-coding-worker/tool-socket.d.ts +27 -0
  11. package/dist/claude-coding-worker/tool-socket.js +111 -0
  12. package/dist/claude-coding-worker/transcript.d.ts +18 -0
  13. package/dist/claude-coding-worker/transcript.js +77 -0
  14. package/dist/cli-help.d.ts +1 -1
  15. package/dist/cli-help.js +6 -2
  16. package/dist/cli-native-mode.d.ts +9 -0
  17. package/dist/cli-native-mode.js +20 -0
  18. package/dist/cli.d.ts +3 -1
  19. package/dist/cli.js +161 -11
  20. package/dist/coding/claude-context.d.ts +45 -0
  21. package/dist/coding/claude-context.js +434 -0
  22. package/dist/coding/continuation-wording.d.ts +35 -0
  23. package/dist/coding/continuation-wording.js +73 -0
  24. package/dist/coding/linked-issue-note.d.ts +23 -0
  25. package/dist/coding/linked-issue-note.js +47 -0
  26. package/dist/coding/merge-wording.d.ts +28 -0
  27. package/dist/coding/merge-wording.js +78 -0
  28. package/dist/coding/pr-description-note.d.ts +9 -0
  29. package/dist/coding/pr-description-note.js +32 -0
  30. package/dist/coding/profile.d.ts +50 -118
  31. package/dist/coding/profile.js +51 -4
  32. package/dist/coding/protected-path-wording.d.ts +8 -0
  33. package/dist/coding/protected-path-wording.js +1 -1
  34. package/dist/coding/protocol.d.ts +292 -270
  35. package/dist/coding/protocol.js +322 -15
  36. package/dist/coding/redact.d.ts +3 -0
  37. package/dist/coding/redact.js +12 -0
  38. package/dist/coding/registry/allowlist.d.ts +12 -0
  39. package/dist/coding/registry/allowlist.js +14 -1
  40. package/dist/coding/registry/audit-mode.d.ts +153 -0
  41. package/dist/coding/registry/audit-mode.js +304 -0
  42. package/dist/coding/registry/lockfile-shared.d.ts +36 -0
  43. package/dist/coding/registry/lockfile-shared.js +128 -0
  44. package/dist/coding/registry/lockfiles.js +1 -1
  45. package/dist/coding/registry/npm-lockfile-formats.d.ts +11 -0
  46. package/dist/coding/registry/npm-lockfile-formats.js +41 -0
  47. package/dist/coding/registry/npm-lockfile.d.ts +8 -4
  48. package/dist/coding/registry/npm-lockfile.js +4 -6
  49. package/dist/coding/registry/npm.js +78 -8
  50. package/dist/coding/registry/pnpm-lockfile.d.ts +17 -0
  51. package/dist/coding/registry/pnpm-lockfile.js +189 -0
  52. package/dist/coding/registry/pypi-plan.d.ts +50 -0
  53. package/dist/coding/registry/pypi-plan.js +406 -0
  54. package/dist/coding/registry/pypi-requirements.d.ts +58 -0
  55. package/dist/coding/registry/pypi-requirements.js +155 -0
  56. package/dist/coding/registry/pypi.d.ts +3 -27
  57. package/dist/coding/registry/pypi.js +40 -154
  58. package/dist/coding/registry/refusal-hints.d.ts +20 -0
  59. package/dist/coding/registry/refusal-hints.js +61 -0
  60. package/dist/coding/registry/refusal-wording.d.ts +11 -0
  61. package/dist/coding/registry/refusal-wording.js +56 -0
  62. package/dist/coding/registry/report.d.ts +70 -8
  63. package/dist/coding/registry/report.js +112 -5
  64. package/dist/coding/registry/types.d.ts +58 -8
  65. package/dist/coding/registry/yarn-lockfile.d.ts +30 -0
  66. package/dist/coding/registry/yarn-lockfile.js +367 -0
  67. package/dist/coding/services/catalog.d.ts +37 -351
  68. package/dist/coding/transcript/claude-code.d.ts +13 -0
  69. package/dist/coding/transcript/claude-code.js +273 -0
  70. package/dist/coding/transcript/download-protocol.d.ts +30 -0
  71. package/dist/coding/transcript/download-protocol.js +18 -0
  72. package/dist/coding/transcript/format.d.ts +20 -0
  73. package/dist/coding/transcript/format.js +32 -0
  74. package/dist/coding/transcript/recorder.d.ts +51 -0
  75. package/dist/coding/transcript/recorder.js +225 -0
  76. package/dist/coding/transcript/resume/checkout.d.ts +31 -0
  77. package/dist/coding/transcript/resume/checkout.js +203 -0
  78. package/dist/coding/transcript/resume/command.d.ts +17 -0
  79. package/dist/coding/transcript/resume/command.js +176 -0
  80. package/dist/coding/transcript/resume/download.d.ts +20 -0
  81. package/dist/coding/transcript/resume/download.js +153 -0
  82. package/dist/coding/transcript/resume/launch.d.ts +38 -0
  83. package/dist/coding/transcript/resume/launch.js +128 -0
  84. package/dist/coding/transcript/resume/session-file.d.ts +13 -0
  85. package/dist/coding/transcript/resume/session-file.js +79 -0
  86. package/dist/coding/transcript/resume/stand-in.d.ts +11 -0
  87. package/dist/coding/transcript/resume/stand-in.js +49 -0
  88. package/dist/coding-worker/artifact.d.ts +16 -3
  89. package/dist/coding-worker/artifact.js +5 -3
  90. package/dist/coding-worker/debug-trace.d.ts +6 -5
  91. package/dist/coding-worker/debug-trace.js +13 -18
  92. package/dist/coding-worker/dependency-cache.d.mts +229 -0
  93. package/dist/coding-worker/dependency-cache.mjs +2123 -0
  94. package/dist/coding-worker/driver.d.ts +4 -3
  95. package/dist/coding-worker/driver.js +118 -38
  96. package/dist/coding-worker/errors.d.ts +1 -0
  97. package/dist/coding-worker/errors.js +32 -0
  98. package/dist/coding-worker/sdk.d.ts +6 -0
  99. package/dist/coding-worker/sdk.js +1 -0
  100. package/dist/coding-worker/skills.d.ts +23 -0
  101. package/dist/coding-worker/skills.js +117 -0
  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 +13 -0
  105. package/dist/config/dependency-cache.d.ts +23 -0
  106. package/dist/config/dependency-cache.js +32 -0
  107. package/dist/config/github-allowed-accounts.d.ts +15 -0
  108. package/dist/config/github-allowed-accounts.js +36 -0
  109. package/dist/config/low-power.d.ts +12 -0
  110. package/dist/config/low-power.js +18 -0
  111. package/dist/config/mobile.d.ts +12 -0
  112. package/dist/config/mobile.js +18 -0
  113. package/dist/config/providers.d.ts +65 -3
  114. package/dist/config/providers.js +147 -11
  115. package/dist/config/test-simulators.d.ts +82 -0
  116. package/dist/config/test-simulators.js +305 -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-queue.d.ts +2 -1
  130. package/dist/core/coding-queue.js +7 -0
  131. package/dist/core/cron.d.ts +19 -1
  132. package/dist/core/cron.js +17 -0
  133. package/dist/core/datastores.js +1 -1
  134. package/dist/core/db.d.ts +16 -6
  135. package/dist/core/db.js +12 -10
  136. package/dist/core/deferred-coding.d.ts +14 -0
  137. package/dist/core/deferred-coding.js +62 -0
  138. package/dist/core/delegation-child.d.ts +25 -0
  139. package/dist/core/delegation-child.js +37 -0
  140. package/dist/core/dispatch.d.ts +53 -0
  141. package/dist/core/dispatch.js +167 -57
  142. package/dist/core/engine-native.js +10 -6
  143. package/dist/core/error-code.d.ts +38 -0
  144. package/dist/core/error-code.js +168 -0
  145. package/dist/core/grants.d.ts +19 -6
  146. package/dist/core/grants.js +55 -6
  147. package/dist/core/host-events.d.ts +67 -5
  148. package/dist/core/host-events.js +571 -37
  149. package/dist/core/host-status.d.ts +85 -3
  150. package/dist/core/host-status.js +298 -20
  151. package/dist/core/issue-bridge.d.ts +50 -6
  152. package/dist/core/issue-bridge.js +151 -20
  153. package/dist/core/issue-events.d.ts +1 -1
  154. package/dist/core/issue-events.js +16 -11
  155. package/dist/core/issue-status.d.ts +1 -1
  156. package/dist/core/issue-status.js +68 -29
  157. package/dist/core/logger.d.ts +5 -0
  158. package/dist/core/logger.js +14 -1
  159. package/dist/core/lost-run-children.d.ts +6 -0
  160. package/dist/core/lost-run-children.js +32 -0
  161. package/dist/core/mark-ready.d.ts +34 -0
  162. package/dist/core/mark-ready.js +152 -0
  163. package/dist/core/markdown-code.d.ts +8 -0
  164. package/dist/core/markdown-code.js +107 -0
  165. package/dist/core/memory-tools.js +7 -0
  166. package/dist/core/merge-order-check.d.ts +130 -0
  167. package/dist/core/merge-order-check.js +343 -0
  168. package/dist/core/notification-dispatcher.d.ts +70 -0
  169. package/dist/core/notification-dispatcher.js +368 -0
  170. package/dist/core/notification-templates.d.ts +19 -0
  171. package/dist/core/notification-templates.js +139 -0
  172. package/dist/core/notifications.d.ts +10 -0
  173. package/dist/core/notifications.js +38 -0
  174. package/dist/core/pg-auth.d.ts +22 -0
  175. package/dist/core/pg-auth.js +152 -0
  176. package/dist/core/power-composition.d.ts +16 -0
  177. package/dist/core/power-composition.js +37 -0
  178. package/dist/core/power-idle.d.ts +14 -0
  179. package/dist/core/power-idle.js +30 -0
  180. package/dist/core/power.d.ts +71 -0
  181. package/dist/core/power.js +202 -0
  182. package/dist/core/pull-request-state-sync.js +2 -2
  183. package/dist/core/reconciler.d.ts +8 -5
  184. package/dist/core/reconciler.js +37 -6
  185. package/dist/core/related-pull-requests.d.ts +59 -7
  186. package/dist/core/related-pull-requests.js +140 -25
  187. package/dist/core/reply-parts.d.ts +21 -0
  188. package/dist/core/reply-parts.js +73 -0
  189. package/dist/core/repo-access.d.ts +15 -0
  190. package/dist/core/repo-access.js +66 -0
  191. package/dist/core/review-fix.d.ts +38 -1
  192. package/dist/core/review-fix.js +209 -7
  193. package/dist/core/review-host-checks.d.ts +1 -1
  194. package/dist/core/review-host-tools.d.ts +23 -0
  195. package/dist/core/review-host-tools.js +156 -14
  196. package/dist/core/review-reads.d.ts +55 -0
  197. package/dist/core/review-reads.js +233 -0
  198. package/dist/core/run-status.d.ts +12 -0
  199. package/dist/core/run-status.js +12 -0
  200. package/dist/core/runner.d.ts +384 -5
  201. package/dist/core/runner.js +1244 -372
  202. package/dist/core/schedule-start.d.ts +12 -0
  203. package/dist/core/schedule-start.js +14 -0
  204. package/dist/core/secret-broker-config.d.ts +39 -0
  205. package/dist/core/secret-broker-config.js +112 -0
  206. package/dist/core/secret-guard.d.ts +46 -0
  207. package/dist/core/secret-guard.js +104 -0
  208. package/dist/core/secret-guarded-stores.d.ts +12 -0
  209. package/dist/core/secret-guarded-stores.js +41 -0
  210. package/dist/core/secret-spans.d.ts +50 -0
  211. package/dist/core/secret-spans.js +94 -0
  212. package/dist/core/secrets.d.ts +39 -4
  213. package/dist/core/secrets.js +148 -40
  214. package/dist/core/stop-run.d.ts +46 -0
  215. package/dist/core/stop-run.js +61 -0
  216. package/dist/core/workflow-event-recorder.d.ts +14 -0
  217. package/dist/core/workflow-event-recorder.js +120 -0
  218. package/dist/core/workflow-events.d.ts +94 -0
  219. package/dist/core/workflow-events.js +48 -0
  220. package/dist/core/workflow-run-events.d.ts +18 -0
  221. package/dist/core/workflow-run-events.js +75 -0
  222. package/dist/core/zod-json-schema.d.ts +4 -0
  223. package/dist/core/zod-json-schema.js +39 -0
  224. package/dist/core/zod3-window.d.ts +35 -0
  225. package/dist/core/zod3-window.js +124 -0
  226. package/dist/generated/prisma/browser.d.ts +92 -3
  227. package/dist/generated/prisma/client.d.ts +92 -3
  228. package/dist/generated/prisma/commonInputTypes.d.ts +364 -54
  229. package/dist/generated/prisma/enums.d.ts +37 -0
  230. package/dist/generated/prisma/enums.js +31 -0
  231. package/dist/generated/prisma/internal/class.d.ts +132 -0
  232. package/dist/generated/prisma/internal/class.js +4 -4
  233. package/dist/generated/prisma/internal/prismaNamespace.d.ts +1332 -142
  234. package/dist/generated/prisma/internal/prismaNamespace.js +227 -5
  235. package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +234 -0
  236. package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +227 -5
  237. package/dist/generated/prisma/models/Agent.d.ts +464 -7
  238. package/dist/generated/prisma/models/AgentRepository.d.ts +42 -1
  239. package/dist/generated/prisma/models/CodingAgentProfile.d.ts +301 -1
  240. package/dist/generated/prisma/models/CodingProxyRequest.d.ts +207 -3
  241. package/dist/generated/prisma/models/CodingProxySession.d.ts +114 -1
  242. package/dist/generated/prisma/models/CodingRun.d.ts +1841 -1
  243. package/dist/generated/prisma/models/DeferredReview.d.ts +78 -1
  244. package/dist/generated/prisma/models/DependencySnapshot.d.ts +1668 -0
  245. package/dist/generated/prisma/models/DependencySnapshot.js +1 -0
  246. package/dist/generated/prisma/models/IssuePullRequest.d.ts +6 -2
  247. package/dist/generated/prisma/models/LocalReview.d.ts +40 -1
  248. package/dist/generated/prisma/models/NativeGatewayCall.d.ts +1713 -0
  249. package/dist/generated/prisma/models/NativeGatewayCall.js +1 -0
  250. package/dist/generated/prisma/models/NativeGatewaySession.d.ts +1551 -0
  251. package/dist/generated/prisma/models/NativeGatewaySession.js +1 -0
  252. package/dist/generated/prisma/models/NativeWarmWorker.d.ts +1296 -0
  253. package/dist/generated/prisma/models/NativeWarmWorker.js +1 -0
  254. package/dist/generated/prisma/models/NotificationChannel.d.ts +1543 -0
  255. package/dist/generated/prisma/models/NotificationChannel.js +1 -0
  256. package/dist/generated/prisma/models/NotificationDelivery.d.ts +1502 -0
  257. package/dist/generated/prisma/models/NotificationDelivery.js +1 -0
  258. package/dist/generated/prisma/models/NotificationThread.d.ts +1090 -0
  259. package/dist/generated/prisma/models/NotificationThread.js +1 -0
  260. package/dist/generated/prisma/models/RegistryAllowance.d.ts +41 -1
  261. package/dist/generated/prisma/models/RegistryApprovedVersion.d.ts +75 -1
  262. package/dist/generated/prisma/models/RegistryAuditRecord.d.ts +1364 -0
  263. package/dist/generated/prisma/models/RegistryAuditRecord.js +1 -0
  264. package/dist/generated/prisma/models/Run.d.ts +1619 -58
  265. package/dist/generated/prisma/models/RunBudgetEvent.d.ts +1211 -0
  266. package/dist/generated/prisma/models/RunBudgetEvent.js +1 -0
  267. package/dist/generated/prisma/models/RunHostCheck.d.ts +36 -1
  268. package/dist/generated/prisma/models/RunTranscript.d.ts +1339 -0
  269. package/dist/generated/prisma/models/RunTranscript.js +1 -0
  270. package/dist/generated/prisma/models/Secret.d.ts +37 -1
  271. package/dist/generated/prisma/models/SecretBrokerChange.d.ts +1101 -0
  272. package/dist/generated/prisma/models/SecretBrokerChange.js +1 -0
  273. package/dist/generated/prisma/models/WorkflowEvent.d.ts +1422 -0
  274. package/dist/generated/prisma/models/WorkflowEvent.js +1 -0
  275. package/dist/generated/prisma/models.d.ts +12 -0
  276. package/dist/help/build.js +4 -2
  277. package/dist/help/catalog.d.ts +1 -1
  278. package/dist/help/catalog.js +31 -6
  279. package/dist/help-index.json +2584 -146
  280. package/dist/import/create.js +49 -3
  281. package/dist/import/neutral-schema.d.ts +50 -277
  282. package/dist/import/neutral-schema.js +7 -4
  283. package/dist/knowledge/check.d.ts +1 -1
  284. package/dist/knowledge/cli.d.ts +11 -1
  285. package/dist/knowledge/cli.js +37 -4
  286. package/dist/knowledge/concept.d.ts +3 -19
  287. package/dist/knowledge/location.d.ts +31 -0
  288. package/dist/knowledge/location.js +78 -0
  289. package/dist/mcp/auth/access.d.ts +11 -2
  290. package/dist/mcp/auth/access.js +15 -1
  291. package/dist/mcp/auth/ownership.d.ts +7 -7
  292. package/dist/mcp/auth/repo-authorization.js +14 -0
  293. package/dist/mcp/auth/resource-server.d.ts +2 -1
  294. package/dist/mcp/auth/resource-server.js +7 -2
  295. package/dist/mcp/auth/self-hosted/browser.d.ts +1 -1
  296. package/dist/mcp/auth/self-hosted/browser.js +19 -6
  297. package/dist/mcp/auth/self-hosted/credentials.d.ts +3 -3
  298. package/dist/mcp/auth/self-hosted/session.d.ts +2 -2
  299. package/dist/mcp/context.d.ts +6 -0
  300. package/dist/mcp/host-events/github-ingress.d.ts +25 -1
  301. package/dist/mcp/host-events/github-ingress.js +70 -1
  302. package/dist/mcp/index.d.ts +19 -0
  303. package/dist/mcp/index.js +117 -20
  304. package/dist/mcp/server.d.ts +13 -0
  305. package/dist/mcp/server.js +33 -14
  306. package/dist/mcp/tools/agents.d.ts +4 -0
  307. package/dist/mcp/tools/agents.js +277 -24
  308. package/dist/mcp/tools/datastore.js +17 -8
  309. package/dist/mcp/tools/grants.js +9 -3
  310. package/dist/mcp/tools/memory.js +11 -1
  311. package/dist/mcp/tools/notification-channels.d.ts +2 -0
  312. package/dist/mcp/tools/notification-channels.js +293 -0
  313. package/dist/mcp/tools/packages.d.ts +2 -0
  314. package/dist/mcp/tools/packages.js +195 -0
  315. package/dist/mcp/tools/power.d.ts +2 -0
  316. package/dist/mcp/tools/power.js +77 -0
  317. package/dist/mcp/tools/repositories.js +18 -5
  318. package/dist/mcp/tools/run-access.d.ts +16 -0
  319. package/dist/mcp/tools/run-access.js +25 -0
  320. package/dist/mcp/tools/run-transcript-download.d.ts +30 -0
  321. package/dist/mcp/tools/run-transcript-download.js +129 -0
  322. package/dist/mcp/tools/run-transcript.d.ts +19 -0
  323. package/dist/mcp/tools/run-transcript.js +70 -0
  324. package/dist/mcp/tools/runs.d.ts +0 -6
  325. package/dist/mcp/tools/runs.js +41 -14
  326. package/dist/mcp/tools/scheduling.js +3 -1
  327. package/dist/mcp/tools/secret-broker-compat.d.ts +12 -0
  328. package/dist/mcp/tools/secret-broker-compat.js +23 -0
  329. package/dist/mcp/tools/secret-elicitation-form.d.ts +22 -2
  330. package/dist/mcp/tools/secret-elicitation-form.js +205 -10
  331. package/dist/mcp/tools/secret-elicitation-server.d.ts +6 -0
  332. package/dist/mcp/tools/secret-elicitation-server.js +10 -54
  333. package/dist/mcp/tools/secret-elicitation.d.ts +38 -3
  334. package/dist/mcp/tools/secret-elicitation.js +110 -12
  335. package/dist/mcp/tools/secrets.js +186 -9
  336. package/dist/mcp/tools/stop-run.d.ts +2 -0
  337. package/dist/mcp/tools/stop-run.js +82 -0
  338. package/dist/mcp/tools/subagents.js +2 -2
  339. package/dist/mcp/tools/tools.d.ts +2 -2
  340. package/dist/mcp/tools/tools.js +47 -11
  341. package/dist/mcp/transport/stdio-link-host.d.ts +20 -0
  342. package/dist/mcp/transport/stdio-link-host.js +67 -0
  343. package/dist/mcp/transport/streamable-http.d.ts +13 -0
  344. package/dist/mcp/transport/streamable-http.js +41 -1
  345. package/dist/native-worker/composition.d.ts +23 -0
  346. package/dist/native-worker/composition.js +77 -0
  347. package/dist/native-worker/docker-isolation.d.ts +65 -0
  348. package/dist/native-worker/docker-isolation.js +183 -0
  349. package/dist/native-worker/docker-launcher.d.ts +110 -0
  350. package/dist/native-worker/docker-launcher.js +297 -0
  351. package/dist/native-worker/gateway-server.d.ts +77 -0
  352. package/dist/native-worker/gateway-server.js +412 -0
  353. package/dist/native-worker/gateway.d.ts +70 -0
  354. package/dist/native-worker/gateway.js +263 -0
  355. package/dist/native-worker/http-server.d.ts +24 -0
  356. package/dist/native-worker/http-server.js +113 -0
  357. package/dist/native-worker/http-transport.d.ts +17 -0
  358. package/dist/native-worker/http-transport.js +88 -0
  359. package/dist/native-worker/kubernetes-isolation.d.ts +90 -0
  360. package/dist/native-worker/kubernetes-isolation.js +218 -0
  361. package/dist/native-worker/kubernetes-launcher.d.ts +106 -0
  362. package/dist/native-worker/kubernetes-launcher.js +375 -0
  363. package/dist/native-worker/launch.d.ts +62 -0
  364. package/dist/native-worker/launch.js +49 -0
  365. package/dist/native-worker/ledger.d.ts +125 -0
  366. package/dist/native-worker/ledger.js +245 -0
  367. package/dist/native-worker/loopback.d.ts +12 -0
  368. package/dist/native-worker/loopback.js +44 -0
  369. package/dist/native-worker/main.d.ts +8 -0
  370. package/dist/native-worker/main.js +85 -0
  371. package/dist/native-worker/protocol.d.ts +296 -0
  372. package/dist/native-worker/protocol.js +246 -0
  373. package/dist/native-worker/sandbox-executor.d.ts +83 -0
  374. package/dist/native-worker/sandbox-executor.js +284 -0
  375. package/dist/native-worker/stderr-redaction.d.ts +77 -0
  376. package/dist/native-worker/stderr-redaction.js +237 -0
  377. package/dist/native-worker/stdio.d.ts +29 -0
  378. package/dist/native-worker/stdio.js +189 -0
  379. package/dist/native-worker/warm-delivery.d.ts +16 -0
  380. package/dist/native-worker/warm-delivery.js +33 -0
  381. package/dist/native-worker/warm-pool-ledger.d.ts +39 -0
  382. package/dist/native-worker/warm-pool-ledger.js +73 -0
  383. package/dist/native-worker/warm-pool.d.ts +107 -0
  384. package/dist/native-worker/warm-pool.js +283 -0
  385. package/dist/native-worker/worker.d.ts +17 -0
  386. package/dist/native-worker/worker.js +141 -0
  387. package/dist/observability/metrics.js +6 -1
  388. package/dist/providers/auth/authorization-server.d.ts +3 -0
  389. package/dist/providers/auth/index.js +2 -0
  390. package/dist/providers/auth/self-hosted.d.ts +14 -2
  391. package/dist/providers/auth/self-hosted.js +54 -4
  392. package/dist/providers/chat/fake.d.ts +46 -0
  393. package/dist/providers/chat/fake.js +39 -0
  394. package/dist/providers/chat/index.d.ts +4 -0
  395. package/dist/providers/chat/index.js +8 -0
  396. package/dist/providers/chat/slack.d.ts +37 -0
  397. package/dist/providers/chat/slack.js +105 -0
  398. package/dist/providers/chat/types.d.ts +42 -0
  399. package/dist/providers/chat/types.js +19 -0
  400. package/dist/providers/coding-proxy/dependency-cache/eviction.d.ts +29 -0
  401. package/dist/providers/coding-proxy/dependency-cache/eviction.js +87 -0
  402. package/dist/providers/coding-proxy/dependency-cache/key.d.ts +33 -0
  403. package/dist/providers/coding-proxy/dependency-cache/key.js +86 -0
  404. package/dist/providers/coding-proxy/dependency-cache/model-request-seal.d.ts +18 -0
  405. package/dist/providers/coding-proxy/dependency-cache/model-request-seal.js +40 -0
  406. package/dist/providers/coding-proxy/dependency-cache/prisma-store.d.ts +25 -0
  407. package/dist/providers/coding-proxy/dependency-cache/prisma-store.js +131 -0
  408. package/dist/providers/coding-proxy/dependency-cache/service.d.ts +70 -0
  409. package/dist/providers/coding-proxy/dependency-cache/service.js +409 -0
  410. package/dist/providers/coding-proxy/dependency-cache/store.d.ts +85 -0
  411. package/dist/providers/coding-proxy/dependency-cache/store.js +95 -0
  412. package/dist/providers/coding-proxy/hold.d.ts +32 -0
  413. package/dist/providers/coding-proxy/hold.js +86 -0
  414. package/dist/providers/coding-proxy/interrupted.d.ts +70 -0
  415. package/dist/providers/coding-proxy/interrupted.js +104 -0
  416. package/dist/providers/coding-proxy/memory-ledger.d.ts +15 -2
  417. package/dist/providers/coding-proxy/memory-ledger.js +84 -8
  418. package/dist/providers/coding-proxy/metering.d.ts +16 -0
  419. package/dist/providers/coding-proxy/metering.js +27 -4
  420. package/dist/providers/coding-proxy/prisma-ledger.d.ts +15 -2
  421. package/dist/providers/coding-proxy/prisma-ledger.js +179 -67
  422. package/dist/providers/coding-proxy/proxy.d.ts +14 -1
  423. package/dist/providers/coding-proxy/proxy.js +166 -14
  424. package/dist/providers/coding-proxy/registry/audit.d.ts +53 -10
  425. package/dist/providers/coding-proxy/registry/audit.js +94 -17
  426. package/dist/providers/coding-proxy/registry/lockfile-parse-worker.d.ts +36 -0
  427. package/dist/providers/coding-proxy/registry/lockfile-parse-worker.js +67 -0
  428. package/dist/providers/coding-proxy/registry/lockfile-parse.d.ts +16 -0
  429. package/dist/providers/coding-proxy/registry/lockfile-parse.js +110 -0
  430. package/dist/providers/coding-proxy/registry/plan.d.ts +9 -0
  431. package/dist/providers/coding-proxy/registry/plan.js +201 -48
  432. package/dist/providers/coding-proxy/registry/prisma-store.d.ts +11 -5
  433. package/dist/providers/coding-proxy/registry/prisma-store.js +120 -17
  434. package/dist/providers/coding-proxy/registry/service.d.ts +97 -16
  435. package/dist/providers/coding-proxy/registry/service.js +579 -112
  436. package/dist/providers/coding-proxy/registry/store.d.ts +84 -9
  437. package/dist/providers/coding-proxy/registry/store.js +54 -1
  438. package/dist/providers/coding-proxy/runtime.d.ts +4 -0
  439. package/dist/providers/coding-proxy/runtime.js +78 -16
  440. package/dist/providers/coding-proxy/server.d.ts +6 -1
  441. package/dist/providers/coding-proxy/server.js +45 -1
  442. package/dist/providers/coding-proxy/types.d.ts +65 -1
  443. package/dist/providers/datastore/types.d.ts +5 -0
  444. package/dist/providers/engine/types.d.ts +36 -2
  445. package/dist/providers/engine/types.js +39 -0
  446. package/dist/providers/executor/composition.d.ts +31 -1
  447. package/dist/providers/executor/composition.js +81 -8
  448. package/dist/providers/executor/container.d.ts +385 -9
  449. package/dist/providers/executor/container.js +1234 -99
  450. package/dist/providers/executor/dbos-status.d.ts +31 -0
  451. package/dist/providers/executor/dbos-status.js +64 -0
  452. package/dist/providers/executor/dbos.d.ts +91 -0
  453. package/dist/providers/executor/dbos.js +319 -26
  454. package/dist/providers/executor/deferred.d.ts +44 -0
  455. package/dist/providers/executor/deferred.js +100 -0
  456. package/dist/providers/executor/in-process.d.ts +9 -1
  457. package/dist/providers/executor/in-process.js +14 -4
  458. package/dist/providers/executor/linked-issue-reader.d.ts +16 -0
  459. package/dist/providers/executor/linked-issue-reader.js +30 -0
  460. package/dist/providers/executor/routing.d.ts +39 -10
  461. package/dist/providers/executor/routing.js +77 -32
  462. package/dist/providers/executor/types.d.ts +25 -0
  463. package/dist/providers/index.d.ts +2 -1
  464. package/dist/providers/issue-tracker/types.d.ts +17 -0
  465. package/dist/providers/issue-tracker/types.js +39 -1
  466. package/dist/providers/jobs/claude-tool-setup.d.ts +4 -0
  467. package/dist/providers/jobs/claude-tool-setup.js +5 -2
  468. package/dist/providers/jobs/docker-isolation.d.ts +8 -0
  469. package/dist/providers/jobs/docker-isolation.js +17 -0
  470. package/dist/providers/jobs/docker.d.ts +1 -0
  471. package/dist/providers/jobs/docker.js +29 -4
  472. package/dist/providers/jobs/fake-kubernetes-api.d.ts +23 -2
  473. package/dist/providers/jobs/fake-kubernetes-api.js +45 -1
  474. package/dist/providers/jobs/kubernetes-api.d.ts +25 -1
  475. package/dist/providers/jobs/kubernetes-api.js +17 -0
  476. package/dist/providers/jobs/kubernetes-client.d.ts +10 -1
  477. package/dist/providers/jobs/kubernetes-client.js +61 -3
  478. package/dist/providers/jobs/kubernetes-dry-run-fixture.d.ts +6 -1
  479. package/dist/providers/jobs/kubernetes-dry-run-fixture.js +6 -3
  480. package/dist/providers/jobs/kubernetes-isolation.d.ts +5 -1
  481. package/dist/providers/jobs/kubernetes-isolation.js +23 -1
  482. package/dist/providers/jobs/kubernetes-platform.d.ts +4 -1
  483. package/dist/providers/jobs/kubernetes-platform.js +38 -1
  484. package/dist/providers/jobs/kubernetes-preflight.d.ts +2 -1
  485. package/dist/providers/jobs/kubernetes-preflight.js +4 -2
  486. package/dist/providers/jobs/kubernetes.d.ts +42 -2
  487. package/dist/providers/jobs/kubernetes.js +178 -19
  488. package/dist/providers/jobs/metadata-probes.d.ts +11 -0
  489. package/dist/providers/jobs/metadata-probes.js +13 -0
  490. package/dist/providers/jobs/types.d.ts +42 -0
  491. package/dist/providers/jobs/types.js +13 -1
  492. package/dist/providers/llm/anthropic.js +5 -1
  493. package/dist/providers/llm/bedrock.d.ts +0 -12
  494. package/dist/providers/llm/bedrock.js +4 -0
  495. package/dist/providers/llm/claude-messages.d.ts +3 -1
  496. package/dist/providers/llm/claude-messages.js +4 -1
  497. package/dist/providers/llm/claude-provider.d.ts +2 -2
  498. package/dist/providers/llm/claude-provider.js +2 -2
  499. package/dist/providers/llm/openai.d.ts +2 -2
  500. package/dist/providers/llm/openai.js +6 -2
  501. package/dist/providers/llm/routing.d.ts +2 -2
  502. package/dist/providers/llm/routing.js +2 -2
  503. package/dist/providers/llm/types.d.ts +12 -2
  504. package/dist/providers/review-host/github-events.d.ts +9 -1
  505. package/dist/providers/review-host/github-events.js +34 -12
  506. package/dist/providers/review-host/github.d.ts +39 -2
  507. package/dist/providers/review-host/github.js +274 -29
  508. package/dist/providers/review-host/local.d.ts +8 -4
  509. package/dist/providers/review-host/local.js +49 -31
  510. package/dist/providers/review-host/patch-pages.d.ts +41 -0
  511. package/dist/providers/review-host/patch-pages.js +176 -0
  512. package/dist/providers/review-host/review-format.d.ts +19 -1
  513. package/dist/providers/review-host/review-format.js +38 -7
  514. package/dist/providers/review-host/types.d.ts +157 -2
  515. package/dist/providers/review-host/types.js +8 -0
  516. package/dist/providers/storage/gcs.d.ts +63 -0
  517. package/dist/providers/storage/gcs.js +69 -0
  518. package/dist/providers/storage/index.d.ts +15 -0
  519. package/dist/providers/storage/index.js +14 -0
  520. package/dist/providers/storage/local.d.ts +24 -0
  521. package/dist/providers/storage/local.js +92 -0
  522. package/dist/providers/storage/meter.d.ts +14 -0
  523. package/dist/providers/storage/meter.js +34 -0
  524. package/dist/providers/storage/s3.d.ts +41 -0
  525. package/dist/providers/storage/s3.js +107 -0
  526. package/dist/providers/storage/types.d.ts +37 -3
  527. package/dist/providers/storage/types.js +21 -4
  528. package/dist/providers/vcs/git.d.ts +33 -2
  529. package/dist/providers/vcs/git.js +324 -22
  530. package/dist/providers/vcs/github-remote.d.ts +26 -3
  531. package/dist/providers/vcs/github-remote.js +124 -14
  532. package/dist/providers/vcs/github.d.ts +246 -12
  533. package/dist/providers/vcs/github.js +521 -61
  534. package/dist/providers/vcs/index.js +8 -1
  535. package/dist/providers/vcs/pr-description.d.ts +127 -0
  536. package/dist/providers/vcs/pr-description.js +270 -0
  537. package/dist/providers/vcs/remote.d.ts +33 -1
  538. package/dist/providers/vcs/routing.d.ts +4 -2
  539. package/dist/providers/vcs/routing.js +6 -0
  540. package/dist/providers/vcs/types.d.ts +80 -3
  541. package/dist/quickstart/coding-seed.d.ts +21 -3
  542. package/dist/quickstart/coding-seed.js +283 -3
  543. package/dist/quickstart/images.d.ts +2 -0
  544. package/dist/quickstart/images.js +7 -1
  545. package/dist/quickstart/reviewer-prompt.d.ts +1 -1
  546. package/dist/quickstart/reviewer-prompt.js +6 -6
  547. package/dist/quickstart-images.json +1 -1
  548. package/dist/sandbox/brokered-fetch.d.ts +23 -0
  549. package/dist/sandbox/brokered-fetch.js +37 -0
  550. package/dist/sandbox/generated/zod.bundle.js +62 -1
  551. package/dist/sandbox/generated/zod3.bundle.js +5 -0
  552. package/dist/sandbox/host-functions.d.ts +35 -0
  553. package/dist/sandbox/host-functions.js +150 -91
  554. package/dist/sandbox/prelude.js +7 -1
  555. package/dist/sandbox/run-in-sandbox.d.ts +19 -0
  556. package/dist/sandbox/run-in-sandbox.js +28 -10
  557. package/dist/sandbox/safe-fetch.d.ts +2 -0
  558. package/dist/sandbox/safe-fetch.js +3 -1
  559. package/dist/sandbox/secret-broker-sigv4.d.ts +2 -0
  560. package/dist/sandbox/secret-broker-sigv4.js +49 -0
  561. package/dist/sandbox/secret-broker.d.ts +34 -0
  562. package/dist/sandbox/secret-broker.js +161 -0
  563. package/dist/sandbox/tool-capabilities.d.ts +10 -30
  564. package/dist/sandbox/user-tool.d.ts +14 -0
  565. package/dist/sandbox/user-tool.js +32 -0
  566. package/dist/sandbox/zod-params.d.ts +37 -5
  567. package/dist/sandbox/zod-params.js +181 -26
  568. package/dist/serve.js +25 -0
  569. package/dist/viewer/api-schema.d.ts +372 -2454
  570. package/dist/viewer/api-schema.js +29 -0
  571. package/dist/viewer/build-schemas.js +10 -3
  572. package/dist/viewer/event-bus.d.ts +6 -0
  573. package/dist/viewer/event-bus.js +16 -7
  574. package/dist/viewer/graph.d.ts +5 -2
  575. package/dist/viewer/graph.js +7 -2
  576. package/dist/viewer/http.d.ts +0 -1
  577. package/dist/viewer/http.js +2 -2
  578. package/dist/viewer/infra.js +25 -2
  579. package/dist/viewer/limits.d.ts +4 -0
  580. package/dist/viewer/limits.js +4 -0
  581. package/dist/viewer/openapi.d.ts +15 -0
  582. package/dist/viewer/openapi.js +170 -0
  583. package/dist/wardby-bin.js +10 -0
  584. package/docs/README.md +7 -0
  585. package/docs/agent-recipes.md +114 -27
  586. package/docs/architecture-runtime.md +16 -1
  587. package/docs/code-review-agents.md +689 -45
  588. package/docs/coding-agent-setup.md +602 -12
  589. package/docs/coding-packages.md +1037 -92
  590. package/docs/coding-services.md +30 -13
  591. package/docs/coding-worker-byo-images.md +218 -6
  592. package/docs/coding-worker-isolation.md +173 -44
  593. package/docs/getting-started-gke.md +332 -129
  594. package/docs/getting-started-identity-provider.md +31 -11
  595. package/docs/getting-started.md +14 -4
  596. package/docs/jira-agents.md +22 -9
  597. package/docs/knowledge/blob-not-found-semantics.md +41 -0
  598. package/docs/knowledge/bounded-file-descriptor.md +52 -0
  599. package/docs/knowledge/delegation-admission-slots.md +52 -0
  600. package/docs/knowledge/http-dispatcher-bootstrap.md +61 -0
  601. package/docs/knowledge/import-rename-target.md +52 -0
  602. package/docs/knowledge/index.md +57 -0
  603. package/docs/knowledge/log.md +9 -0
  604. package/docs/knowledge/mcp-cancelled-task-precedence.md +41 -0
  605. package/docs/knowledge/mcp-http-prompt-discovery.md +41 -0
  606. package/docs/knowledge/mcp-schema-module-boundary.md +41 -0
  607. package/docs/knowledge/nullable-tool-uniqueness.md +52 -0
  608. package/docs/knowledge/overview-cli.md +74 -0
  609. package/docs/knowledge/overview-coding-proxy.md +72 -0
  610. package/docs/knowledge/overview-coding.md +72 -0
  611. package/docs/knowledge/overview-config.md +60 -0
  612. package/docs/knowledge/overview-core.md +72 -0
  613. package/docs/knowledge/overview-deploy.md +83 -0
  614. package/docs/knowledge/overview-mcp.md +61 -0
  615. package/docs/knowledge/overview-prisma.md +72 -0
  616. package/docs/knowledge/overview-providers.md +89 -0
  617. package/docs/knowledge/overview-sandbox.md +83 -0
  618. package/docs/knowledge/overview-surfaces.md +83 -0
  619. package/docs/knowledge/private-datastore-shared-boundary.md +54 -0
  620. package/docs/knowledge/proxy-settlement-projections.md +41 -0
  621. package/docs/knowledge/run-pricing-first-writer.md +43 -0
  622. package/docs/knowledge/schedule-claim-transaction.md +41 -0
  623. package/docs/knowledge/secret-entry-replica-contract.md +52 -0
  624. package/docs/knowledge/terminal-run-first-writer.md +41 -0
  625. package/docs/knowledge/transactional-agent-authorization.md +52 -0
  626. package/docs/knowledge/viewer-notify-write-isolation.md +30 -0
  627. package/docs/knowledge/warm-input-publication.md +30 -0
  628. package/docs/knowledge/workspace-staging-failure.md +54 -0
  629. package/docs/knowledge.md +54 -14
  630. package/docs/native-sandbox.md +731 -0
  631. package/docs/observability.md +4 -0
  632. package/docs/release-verification.md +9 -0
  633. package/docs/security-deployment.md +146 -14
  634. package/docs/slack-notifications.md +268 -0
  635. package/docs/tool-secrets.md +284 -0
  636. package/docs/viewer-api.md +46 -5
  637. package/docs/viewer-api.openapi.yml +1404 -0
  638. package/help/admin-viewer.md +29 -3
  639. package/help/agent-recipes.md +27 -0
  640. package/help/architecture-agent.md +11 -6
  641. package/help/brokered-secrets.md +79 -0
  642. package/help/build-claude-code-image.md +131 -0
  643. package/help/build-worker-image.md +6 -7
  644. package/help/builder-agent.md +19 -6
  645. package/help/code-review-agents.md +243 -10
  646. package/help/coding-packages.md +156 -6
  647. package/help/cost-attribution.md +9 -5
  648. package/help/creating-agents.md +14 -1
  649. package/help/dependency-cache.md +143 -0
  650. package/help/deploy-gke.md +23 -9
  651. package/help/deployment-targets.md +25 -14
  652. package/help/errors/budget-exhausted.md +187 -0
  653. package/help/errors/budget-group-exhausted.md +5 -1
  654. package/help/errors/coding-provider-not-configured.md +2 -2
  655. package/help/errors/coding-stream-quota-exceeded.md +33 -0
  656. package/help/errors/coding-workspace-disk-exceeds-limit.md +39 -0
  657. package/help/errors/continuation-closed.md +9 -12
  658. package/help/errors/database-auth-invalid.md +28 -0
  659. package/help/errors/delegation-conflict.md +24 -0
  660. package/help/errors/file-list-truncated.md +45 -0
  661. package/help/errors/full-read-required.md +49 -0
  662. package/help/errors/github-account-not-allowed.md +29 -0
  663. package/help/errors/graph-incomplete.md +43 -0
  664. package/help/errors/graph-limit.md +43 -0
  665. package/help/errors/low-power-disabled.md +29 -0
  666. package/help/errors/low-power-scale-forbidden.md +35 -0
  667. package/help/errors/low-power-wake-timeout.md +30 -0
  668. package/help/errors/merge-conflict.md +49 -0
  669. package/help/errors/mobile-disabled.md +31 -0
  670. package/help/errors/native-sandbox-capacity.md +22 -0
  671. package/help/errors/native-sandbox-deadline-exceeded.md +19 -0
  672. package/help/errors/native-sandbox-docker-failed.md +20 -0
  673. package/help/errors/native-sandbox-gateway-error.md +20 -0
  674. package/help/errors/native-sandbox-gateway-unavailable.md +21 -0
  675. package/help/errors/native-sandbox-image-not-pinned.md +19 -0
  676. package/help/errors/native-sandbox-isolation-mismatch.md +20 -0
  677. package/help/errors/native-sandbox-launch-abandoned.md +21 -0
  678. package/help/errors/native-sandbox-network-unenforced.md +22 -0
  679. package/help/errors/native-sandbox-requires-catalog.md +31 -0
  680. package/help/errors/native-sandbox-unavailable.md +19 -0
  681. package/help/errors/native-sandbox-warm-delivery-failed.md +21 -0
  682. package/help/errors/native-sandbox-worker-exited.md +21 -0
  683. package/help/errors/native-sandbox-worker-lost.md +20 -0
  684. package/help/errors/native-sandbox-worker-unready.md +22 -0
  685. package/help/errors/package-not-allowed-pending.md +52 -0
  686. package/help/errors/package-not-allowed.md +51 -0
  687. package/help/errors/package-refusals.md +43 -0
  688. package/help/errors/patch-cursor-malformed.md +31 -0
  689. package/help/errors/run-lost.md +39 -0
  690. package/help/errors/run-transcript-download.md +44 -0
  691. package/help/errors/secret-broker-body-invalid.md +26 -0
  692. package/help/errors/secret-broker-changed.md +20 -0
  693. package/help/errors/secret-broker-config-invalid.md +30 -0
  694. package/help/errors/secret-broker-conflict.md +27 -0
  695. package/help/errors/secret-broker-destination-denied.md +28 -0
  696. package/help/errors/secret-broker-value-invalid.md +28 -0
  697. package/help/errors/secret-brokered.md +24 -0
  698. package/help/errors/secret-in-value.md +69 -0
  699. package/help/errors/secret-not-brokered.md +25 -0
  700. package/help/errors/slack-auth-failed.md +48 -0
  701. package/help/errors/slack-channel-unreachable.md +39 -0
  702. package/help/errors/slack-not-configured.md +33 -0
  703. package/help/errors/target-merge.md +40 -0
  704. package/help/fix-merge-conflicts.md +73 -0
  705. package/help/getting-started.md +4 -5
  706. package/help/github-app-setup.md +132 -0
  707. package/help/github.md +40 -1
  708. package/help/identity-and-access.md +7 -1
  709. package/help/jira.md +23 -6
  710. package/help/knowledge.md +16 -7
  711. package/help/local-repositories.md +3 -4
  712. package/help/low-power-mode.md +131 -0
  713. package/help/merge-order-check.md +122 -0
  714. package/help/mobile-app.md +54 -0
  715. package/help/native-capabilities.md +29 -1
  716. package/help/native-sandbox.md +150 -0
  717. package/help/observability.md +8 -0
  718. package/help/operating-agents.md +5 -0
  719. package/help/package-audit-mode.md +91 -0
  720. package/help/related-pull-requests.md +80 -16
  721. package/help/repo-instructions-and-skills.md +91 -0
  722. package/help/resume-runs-locally.md +131 -0
  723. package/help/review-fix-rounds.md +43 -1
  724. package/help/sharing-agents.md +59 -0
  725. package/help/slack-notifications.md +76 -0
  726. package/help/status-comments.md +31 -0
  727. package/help/stop-run.md +58 -0
  728. package/help/troubleshooting/budgets.md +28 -0
  729. package/help/troubleshooting/coding-workers.md +99 -7
  730. package/package.json +27 -13
  731. package/prisma/migrations/20261009000003_native_execution_mode/migration.sql +12 -0
  732. package/prisma/migrations/20261009000004_native_gateway_ledger/migration.sql +65 -0
  733. package/prisma/migrations/20261009000005_native_gateway_call_child_agent/migration.sql +5 -0
  734. package/prisma/migrations/20261009000006_run_deferred_start_stop/migration.sql +14 -0
  735. package/prisma/migrations/20261009000007_native_gateway_network_ready/migration.sql +5 -0
  736. package/prisma/migrations/20261010000001_workflow_notifications/migration.sql +99 -0
  737. package/prisma/migrations/20261011000001_native_gateway_session_status_index/migration.sql +2 -0
  738. package/prisma/migrations/20261012000001_native_warm_worker/migration.sql +32 -0
  739. package/prisma/migrations/20261013000001_coding_run_merge_order/migration.sql +2 -0
  740. package/prisma/migrations/20261013000001_secret_broker/migration.sql +17 -0
  741. package/prisma/migrations/20261013000002_deferred_review_request/migration.sql +4 -0
  742. package/prisma/migrations/20261014000000_repo_skills/migration.sql +15 -0
  743. package/prisma/migrations/20261015000001_coding_run_merge_order_index/migration.sql +2 -0
  744. package/prisma/migrations/20261015000002_no_change_rereview/migration.sql +2 -0
  745. package/prisma/migrations/20261016000000_registry_approved_accepted_advisories/migration.sql +3 -0
  746. package/prisma/migrations/20261016000001_mark_ready_when_passing/migration.sql +3 -0
  747. package/prisma/migrations/20261017000000_debug_trace_max_mb/migration.sql +4 -0
  748. package/prisma/migrations/20261018000000_dependency_cache/migration.sql +53 -0
  749. package/prisma/migrations/20261019000000_claude_max_output_tokens/migration.sql +5 -0
  750. package/prisma/migrations/20261021000000_pr_description_hash/migration.sql +4 -0
  751. package/prisma/migrations/20261022000000_dependency_snapshot_validation_metadata/migration.sql +4 -0
  752. package/prisma/migrations/20261023000000_package_audit_mode/migration.sql +27 -0
  753. package/prisma/migrations/20261024000000_budget_events/migration.sql +26 -0
  754. package/prisma/migrations/20261025000000_cache_aware_holds/migration.sql +9 -0
  755. package/prisma/migrations/20261026000000_budget_overrun/migration.sql +4 -0
  756. package/prisma/migrations/20261027000000_coding_run_request/migration.sql +1 -0
  757. package/prisma/migrations/20261028000000_native_gateway_review_reads/migration.sql +6 -0
  758. package/prisma/migrations/20261029000000_lead_survives_deploy/migration.sql +6 -0
  759. package/prisma/migrations/20261030000000_local_review_covered_sha/migration.sql +2 -0
  760. package/prisma/migrations/20261031000000_coding_run_budget_limit/migration.sql +9 -0
  761. package/prisma/migrations/20261101000000_run_transcripts/migration.sql +22 -0
  762. package/prisma/schema.prisma +631 -146
  763. package/dist/sandbox/generated/zod-to-json-schema.bundle.js +0 -5
@@ -0,0 +1,69 @@
1
+ ---
2
+ id: errors/secret-in-value
3
+ title: A value was not stored because it contains a secret (secret_in_value)
4
+ summary: A datastore or agent memory write was refused because the value contains the value of a secret attached to the agent; store the secret's name and read it when needed.
5
+ audience: operator
6
+ tags: [error, secrets, datastore, memory, secret_in_value, secret_check_unavailable, datastore set, memory set]
7
+ appliesTo: ">=0.7.0"
8
+ ---
9
+
10
+ # A value was not stored because it contains a secret (secret_in_value)
11
+
12
+ `secret_in_value` means a write to a datastore or agent memory contained the
13
+ value of a secret attached to the agent, in the value or in the key. The write
14
+ came from a tool's `datastore.set` (or a shared datastore's `set`), from the
15
+ `memory_set` tool, from the `datastore_set` or `set_agent_memory` MCP tools, or
16
+ from a bundle import. The error names the secret. Nothing was stored.
17
+
18
+ Secret values are never stored in datastores or agent memory, because anything
19
+ stored there can be read back by other tools and later runs that were never
20
+ given the secret, and can be printed.
21
+
22
+ ## What to do
23
+
24
+ Store the secret's **name**, not its value, and read the secret when you need it:
25
+
26
+ - `secrets.get("NAME")` in a tool that is allowed to read the secret, or
27
+ - `fetch(url, { secrets: ["NAME"] })` for a brokered secret.
28
+
29
+ See [Secrets and tools](../../docs/tool-secrets.md#secret-values-are-never-stored).
30
+
31
+ ## `secret_check_unavailable`
32
+
33
+ The agent's secrets could not be read, so the value could not be checked and was
34
+ not stored. Try the write again. If it keeps happening, check the database
35
+ connection and the secret encryption configuration on the server.
36
+
37
+ ## Bundle imports
38
+
39
+ A seeded datastore entry in an imported bundle, per-agent or shared, whose key
40
+ or value contains an attached secret's value is skipped, and the import reports
41
+ a warning that names the secret (the entry's key is withheld from the warning).
42
+ The rest of the bundle is still imported.
43
+
44
+ ## Also masked
45
+
46
+ Secret values are also kept out of other output:
47
+
48
+ - A native run's final text and error have attached secret values replaced with
49
+ `[REDACTED]`.
50
+ - The task text of a `delegate_to_*` call has the delegating agent's attached
51
+ secret values replaced with `[REDACTED]` before the sub-agent's run is created.
52
+ - Comments, reviews, and Jira posts made through built-in tools have attached
53
+ secret values replaced with `[REDACTED]`.
54
+ - If the secrets cannot be read when a run ends, both its stored final text and
55
+ its stored error are
56
+ `[withheld: this text could not be checked for secret values]`.
57
+ - If the secrets cannot be read when a posting tool or a `delegate_to_*` call
58
+ runs, the tool returns `secret_check_unavailable` and posts nothing or creates
59
+ no sub-agent run.
60
+
61
+ ## Limits
62
+
63
+ Matching is by exact value, including its JSON-escaped forms and, for brokered
64
+ secrets, the encoded forms that the broker scrubs. Values shorter than 6
65
+ characters are not matched. A value that is split, re-encoded, or otherwise
66
+ transformed is not detected. Values stored before this check existed are not
67
+ scanned.
68
+
69
+ See also [Brokered secrets](../brokered-secrets.md).
@@ -0,0 +1,25 @@
1
+ ---
2
+ id: errors/secret-not-brokered
3
+ title: Secret is not brokered
4
+ summary: A fetch named a secret that is readable, not attached to the agent, or not granted to the tool.
5
+ audience: operator
6
+ tags: [error, secrets, secret_not_brokered]
7
+ appliesTo: ">=0.6.0"
8
+ ---
9
+
10
+ # Secret is not brokered
11
+
12
+ `secret_not_brokered` means `fetch(url, { secrets: [...] })` named a secret that
13
+ is not a brokered secret available to this tool: it is readable, it is not
14
+ attached to the agent, it is not listed in the attachment's `allowedSecrets`, or
15
+ the request named more than 8 secrets.
16
+
17
+ 1. Check the name matches the alias the secret is attached under
18
+ (`attach_secret`) and appears in the tool attachment's `allowedSecrets`.
19
+ 2. To send the secret through `fetch`, make it brokered with
20
+ `set_secret_broker { name, broker }`.
21
+ 3. If the secret is meant to stay readable, read it with `secrets.get(name)`
22
+ instead of naming it in `fetch`.
23
+
24
+ See [Brokered secrets](../brokered-secrets.md) and the
25
+ [secrets guide](../../docs/tool-secrets.md).
@@ -0,0 +1,48 @@
1
+ ---
2
+ id: errors/slack-auth-failed
3
+ title: Bot authentication failed — invalid or revoked token
4
+ summary: wardby's Slack bot token is invalid, revoked, disabled, or missing a required scope, so delivery to every linked channel is paused.
5
+ audience: operator
6
+ tags: [error, notifications, auth, authentication, invalid_auth, token_revoked, missing_scope]
7
+ appliesTo: ">=0.6.0"
8
+ ---
9
+
10
+ # Bot authentication failed — invalid or revoked token
11
+
12
+ Slack returned `invalid_auth`, `token_revoked`, `account_inactive`,
13
+ `missing_scope`, or `not_authed` for `WARDBY_SLACK_BOT_TOKEN`. This is
14
+ different from a single channel being unreachable: it means the token
15
+ itself no longer works, so wardby pauses delivery to **every** linked
16
+ channel rather than attempting and failing each one. Deliveries already
17
+ queued stay pending — nothing is lost — and wardby automatically re-checks
18
+ the token every five minutes with Slack's `auth.test`, resuming delivery as
19
+ soon as it succeeds.
20
+
21
+ A **missing scope** (`missing_scope`) does not fix itself this way:
22
+ `auth.test` needs no scope, so the re-check succeeds, the next delivery fails
23
+ again, and delivery pauses again. Add the scope and reinstall the app (steps
24
+ 1–2 below).
25
+
26
+ The same errors while linking a channel refuse the link, except
27
+ `missing_scope` from a missing `channels:read`/`groups:read`, which only
28
+ skips validating the channel id.
29
+
30
+ wardby logs this once per pause, not on every retry.
31
+
32
+ ## What to do
33
+
34
+ 1. In Slack, check the app's **OAuth & Permissions** page: is the bot
35
+ installed, and does it still have `chat:write` at minimum?
36
+ 2. If the app's scopes changed (for example after editing
37
+ [`app-manifest.yaml`](../../deploy/slack/app-manifest.yaml)), reinstall
38
+ the app to the workspace to apply them.
39
+ 3. If the token was revoked or the app was uninstalled, reinstall it and
40
+ copy a fresh Bot User OAuth Token.
41
+ 4. If Slack issued a new token, set it as `WARDBY_SLACK_BOT_TOKEN` and
42
+ restart wardby; the startup log line `chat notifications acting as`
43
+ confirms it. If the token is unchanged (a scope added and the app
44
+ reinstalled), no restart is needed: pending deliveries go out after the
45
+ next check.
46
+
47
+ See [Send workflow updates to Slack](../../docs/slack-notifications.md) for
48
+ the full guide.
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: errors/slack-channel-unreachable
3
+ title: Channel unreachable — bot not invited or archived
4
+ summary: wardby's bot can no longer post to a linked Slack channel — it was removed, archived, or never invited — and that channel's pending deliveries have failed.
5
+ audience: operator
6
+ tags: [error, notifications, channel, channel-error, not_in_channel, channel_not_found, is_archived]
7
+ appliesTo: ">=0.6.0"
8
+ ---
9
+
10
+ # Channel unreachable — bot not invited or archived
11
+
12
+ Slack returned `channel_not_found`, `not_in_channel`, or `is_archived` when
13
+ wardby tried to post or update a message. This means the bot genuinely
14
+ cannot write to that channel right now — the channel was deleted or
15
+ archived, or (most commonly) the bot was never invited to a private
16
+ channel.
17
+
18
+ wardby fails that channel's pending deliveries immediately rather than
19
+ retrying forever, and stamps the error on every `NotificationChannel` link
20
+ pointing at it. `list_notification_channels` shows it in `lastError` until
21
+ you fix it.
22
+
23
+ ## What to do
24
+
25
+ 1. In Slack, confirm the channel still exists and isn't archived.
26
+ 2. If it's private, invite the bot: `/invite @wardby` (or whatever you named
27
+ the app) in that channel.
28
+ 3. Confirm it worked with `test_notification_channel` — it posts "✅ wardby
29
+ is connected to this channel."
30
+ 4. New events deliver as soon as the bot can post there again. Deliveries
31
+ that already failed are not resent. To clear `lastError`, re-link the
32
+ channel with `link_notification_channel` using the same arguments as
33
+ before (a successful `test_notification_channel` in step 3 also clears it).
34
+
35
+ If the channel is gone for good, remove the link with
36
+ `unlink_notification_channel` instead.
37
+
38
+ See [Send workflow updates to Slack](../../docs/slack-notifications.md) for
39
+ the full guide.
@@ -0,0 +1,33 @@
1
+ ---
2
+ id: errors/slack-not-configured
3
+ title: Notification bot token not configured
4
+ summary: link_notification_channel and test_notification_channel are refused because wardby has no Slack bot token configured.
5
+ audience: operator
6
+ tags: [error, notifications, configuration, config, setup, WARDBY_SLACK_BOT_TOKEN]
7
+ appliesTo: ">=0.6.0"
8
+ ---
9
+
10
+ # Notification bot token not configured
11
+
12
+ `link_notification_channel` and `test_notification_channel` are refused when
13
+ the wardby server has no `WARDBY_SLACK_BOT_TOKEN` set. Without it, Slack workflow notifications are
14
+ entirely disabled: the notification dispatcher does not start, and any event
15
+ that would otherwise post to Slack is skipped — none are queued or
16
+ backfilled once you do configure it.
17
+
18
+ `list_notification_channels` and `unlink_notification_channel` still work,
19
+ so you can see and remove links created earlier, but nothing is delivered to
20
+ them while Slack is unconfigured.
21
+
22
+ ## What to do
23
+
24
+ 1. Create the Slack app from
25
+ [`deploy/slack/app-manifest.yaml`](../../deploy/slack/app-manifest.yaml)
26
+ and install it to your workspace.
27
+ 2. Copy the Bot User OAuth Token (`xoxb-…`) and set
28
+ `WARDBY_SLACK_BOT_TOKEN`, stored like any other provider credential.
29
+ 3. Restart wardby. The startup log line `chat notifications acting as`
30
+ confirms which Slack workspace and bot it authenticated as.
31
+
32
+ See [Send workflow updates to Slack](../../docs/slack-notifications.md) for
33
+ the full setup.
@@ -0,0 +1,40 @@
1
+ ---
2
+ id: errors/target-merge
3
+ title: Target branch could not be merged
4
+ summary: A follow-up run could not fetch or merge its pull request's target branch, so it stopped before the agent started.
5
+ audience: operator
6
+ tags: [error, coding-agents, vcs, merge-conflict, target-branch, pull-requests]
7
+ appliesTo: ">=0.7.0"
8
+ ---
9
+
10
+ # Target branch could not be merged
11
+
12
+ Before a follow-up run on a wardby pull request starts its agent, wardby
13
+ merges the branch the pull request currently targets into the workspace (see
14
+ [Fix merge conflicts on a wardby pull request](../fix-merge-conflicts.md)).
15
+ A run stops with failure category `target_merge` (error
16
+ `vcs_target_merge_failed`) when that could not be done:
17
+
18
+ - the target branch could not be fetched from the repository (it was deleted,
19
+ or the fetch failed);
20
+ - the pull request's branch and its target share no history wardby could
21
+ find: the branches are unrelated, or their common commit is more than about
22
+ 5,000 commits back;
23
+ - the merge itself failed for a reason other than a content conflict (content
24
+ conflicts are handed to the agent, not failed);
25
+ - the git on the machine that runs wardby is older than 2.38, which does not
26
+ support the `merge-tree --write-tree` form the merge uses.
27
+
28
+ Nothing is pushed and no agent work is lost, since the agent had not started.
29
+
30
+ ## What to do
31
+
32
+ - Check the pull request's base branch on GitHub. Retarget it if the branch
33
+ it names no longer exists or is not the one it should merge into.
34
+ - For unrelated histories, merge the branches by hand once; later follow-ups
35
+ then find the merge base.
36
+ - A transient fetch failure succeeds on the next request.
37
+ - Upgrade the machine's git to 2.38 or newer (`git --version` shows it).
38
+
39
+ Related: [Conflict markers remain](merge-conflict.md),
40
+ [Continuation's pull request is no longer open](continuation-closed.md).
@@ -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).
@@ -47,11 +47,10 @@ Claude Code. Run `wardby doctor` afterwards to verify the local installation.
47
47
  with webhooks, link a native agent to the repository with the `pull_request`
48
48
  trigger, and open a pull request. See [Code review agents](code-review-agents.md).
49
49
 
50
- - **D. Another language (Go, Java, Rust…).** Do A with Codex, then build a
51
- worker image with that toolchain on the base image `wardby doctor` prints,
52
- and set the builder's `codingProfile.workerImageRef`. Ask your assistant
53
- "Help me build a Wardby worker image for Go"; it follows
54
- [Build a custom worker image](build-worker-image.md). Codex agents only.
50
+ - **D. Another language (Go, Java, Rust…).** Do A, then build an image with
51
+ that toolchain and set the builder's `codingProfile.workerImageRef`. Ask your
52
+ assistant "Help me build a Wardby worker image for Go"; it follows
53
+ [Build a custom worker image](build-worker-image.md).
55
54
 
56
55
  The quickstart ends with a menu of next steps to ask your assistant: run the
57
56
  builder and reviewer, allow more packages, build a worker image, schedule an
@@ -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
@@ -3,7 +3,7 @@ id: github-integration
3
3
  title: Connect GitHub repositories
4
4
  summary: Authorize repository access and configure Wardby coding or review agents through a scoped GitHub App.
5
5
  audience: operator
6
- tags: [github, repositories, coding-agents, code-review]
6
+ tags: [github, repositories, coding-agents, code-review, WARDBY_GITHUB_ALLOWED_ACCOUNTS]
7
7
  appliesTo: >=0.2.1
8
8
  ---
9
9
 
@@ -23,10 +23,23 @@ 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).
29
31
 
32
+ From Wardby 0.6.0, wardby serves only trusted GitHub accounts through the App:
33
+ the App's owner, plus any accounts listed in `WARDBY_GITHUB_ALLOWED_ACCOUNTS`
34
+ (comma-separated logins). Other accounts' events are ignored and their
35
+ repositories are refused with `github_account_not_allowed` (help article
36
+ `errors/github-account-not-allowed`), including existing links and scheduled
37
+ runs after an upgrade. wardby removes the App when another account installs it
38
+ or changes its repository selection; remove installations that already exist
39
+ on other accounts by hand (App settings, **Install App**). After transferring
40
+ the App or renaming its owner, list the new owner in the variable or restart
41
+ wardby.
42
+
30
43
  No GitHub App is needed for a git repository on the wardby host. See
31
44
  [Use local git repositories](local-repositories.md).
32
45
 
@@ -58,8 +71,34 @@ The `review_fix` trigger lets Wardby fix its own review's findings
58
71
  automatically, up to a round cap, on pull requests its own coding runs
59
72
  opened. See [Automatic review fix rounds](review-fix-rounds.md).
60
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
+
61
87
  `waitForCi` holds a reviewer's review until that pull request's own CI
62
88
  finishes, and gates its ability to approve on CI passing. See
63
89
  [Review after CI (`waitForCi`)](code-review-agents.md#review-after-ci-waitforci).
64
90
 
91
+ With Wardby 0.6.0 or later, a `pull_request` reviewer also holds its review, with or without
92
+ `waitForCi`, until the pull request's own delegating run finishes, when its
93
+ opening coding run was delegated by a lead agent. See [Reviewing a pull
94
+ request a delegated run
95
+ opened](code-review-agents.md#reviewing-a-pull-request-a-delegated-run-opened).
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
+
65
104
  For Jira Cloud instead of GitHub, see [Run Jira agents](jira.md).
@@ -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. Five sensitive permissions have an additional role requirement:
24
+ models. Six 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,10 @@ models. Five 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
+ - `power:manage` requires the `admin` role. It reads low-power state and
35
+ sleeps the coding proxy and native gateway now (`power_status`,
36
+ `power_sleep`); see
37
+ [Low-power mode](../docs/getting-started-gke.md#low-power-mode).
34
38
 
35
39
  Map roles only from an IdP claim that users cannot self-assign. Removing a
36
40
  role affects the next token the caller receives.
@@ -42,3 +46,5 @@ that request every advertised scope otherwise fail with `invalid_scope`.
42
46
  Read [`docs/getting-started-identity-provider.md`](../docs/getting-started-identity-provider.md)
43
47
  for the required claims, scope list, role mapping, provider examples, and
44
48
  client registration.
49
+
50
+ 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