@wardby/cli 0.6.0 → 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 (576) hide show
  1. package/deploy/local/docker-compose.quickstart-coding.yml +13 -0
  2. package/dist/claude-coding-worker/driver.d.ts +21 -3
  3. package/dist/claude-coding-worker/driver.js +125 -17
  4. package/dist/claude-coding-worker/main.js +34 -6
  5. package/dist/claude-coding-worker/sdk.js +12 -1
  6. package/dist/claude-coding-worker/tool-socket.d.ts +27 -0
  7. package/dist/claude-coding-worker/tool-socket.js +111 -0
  8. package/dist/claude-coding-worker/transcript.d.ts +18 -0
  9. package/dist/claude-coding-worker/transcript.js +77 -0
  10. package/dist/cli-help.d.ts +1 -1
  11. package/dist/cli-help.js +1 -0
  12. package/dist/cli.js +24 -10
  13. package/dist/coding/continuation-wording.d.ts +35 -0
  14. package/dist/coding/continuation-wording.js +73 -0
  15. package/dist/coding/linked-issue-note.d.ts +23 -0
  16. package/dist/coding/linked-issue-note.js +47 -0
  17. package/dist/coding/merge-wording.d.ts +28 -0
  18. package/dist/coding/merge-wording.js +78 -0
  19. package/dist/coding/pr-description-note.d.ts +9 -0
  20. package/dist/coding/pr-description-note.js +32 -0
  21. package/dist/coding/profile.d.ts +46 -126
  22. package/dist/coding/profile.js +45 -4
  23. package/dist/coding/protected-path-wording.d.ts +8 -0
  24. package/dist/coding/protected-path-wording.js +1 -1
  25. package/dist/coding/protocol.d.ts +264 -346
  26. package/dist/coding/protocol.js +235 -12
  27. package/dist/coding/redact.d.ts +3 -0
  28. package/dist/coding/redact.js +12 -0
  29. package/dist/coding/registry/allowlist.d.ts +12 -0
  30. package/dist/coding/registry/allowlist.js +14 -1
  31. package/dist/coding/registry/audit-mode.d.ts +153 -0
  32. package/dist/coding/registry/audit-mode.js +304 -0
  33. package/dist/coding/registry/lockfile-shared.d.ts +36 -0
  34. package/dist/coding/registry/lockfile-shared.js +128 -0
  35. package/dist/coding/registry/lockfiles.js +1 -1
  36. package/dist/coding/registry/npm-lockfile-formats.d.ts +11 -0
  37. package/dist/coding/registry/npm-lockfile-formats.js +41 -0
  38. package/dist/coding/registry/npm-lockfile.d.ts +8 -4
  39. package/dist/coding/registry/npm-lockfile.js +4 -6
  40. package/dist/coding/registry/npm.js +78 -8
  41. package/dist/coding/registry/pnpm-lockfile.d.ts +17 -0
  42. package/dist/coding/registry/pnpm-lockfile.js +189 -0
  43. package/dist/coding/registry/pypi-plan.d.ts +50 -0
  44. package/dist/coding/registry/pypi-plan.js +406 -0
  45. package/dist/coding/registry/pypi-requirements.d.ts +58 -0
  46. package/dist/coding/registry/pypi-requirements.js +155 -0
  47. package/dist/coding/registry/pypi.d.ts +3 -27
  48. package/dist/coding/registry/pypi.js +40 -154
  49. package/dist/coding/registry/refusal-hints.d.ts +20 -0
  50. package/dist/coding/registry/refusal-hints.js +61 -0
  51. package/dist/coding/registry/refusal-wording.d.ts +11 -0
  52. package/dist/coding/registry/refusal-wording.js +56 -0
  53. package/dist/coding/registry/report.d.ts +70 -8
  54. package/dist/coding/registry/report.js +112 -5
  55. package/dist/coding/registry/types.d.ts +58 -8
  56. package/dist/coding/registry/yarn-lockfile.d.ts +30 -0
  57. package/dist/coding/registry/yarn-lockfile.js +367 -0
  58. package/dist/coding/services/catalog.d.ts +37 -351
  59. package/dist/coding/transcript/claude-code.d.ts +13 -0
  60. package/dist/coding/transcript/claude-code.js +273 -0
  61. package/dist/coding/transcript/download-protocol.d.ts +30 -0
  62. package/dist/coding/transcript/download-protocol.js +18 -0
  63. package/dist/coding/transcript/format.d.ts +20 -0
  64. package/dist/coding/transcript/format.js +32 -0
  65. package/dist/coding/transcript/recorder.d.ts +51 -0
  66. package/dist/coding/transcript/recorder.js +225 -0
  67. package/dist/coding/transcript/resume/checkout.d.ts +31 -0
  68. package/dist/coding/transcript/resume/checkout.js +203 -0
  69. package/dist/coding/transcript/resume/command.d.ts +17 -0
  70. package/dist/coding/transcript/resume/command.js +176 -0
  71. package/dist/coding/transcript/resume/download.d.ts +20 -0
  72. package/dist/coding/transcript/resume/download.js +153 -0
  73. package/dist/coding/transcript/resume/launch.d.ts +38 -0
  74. package/dist/coding/transcript/resume/launch.js +128 -0
  75. package/dist/coding/transcript/resume/session-file.d.ts +13 -0
  76. package/dist/coding/transcript/resume/session-file.js +79 -0
  77. package/dist/coding/transcript/resume/stand-in.d.ts +11 -0
  78. package/dist/coding/transcript/resume/stand-in.js +49 -0
  79. package/dist/coding-worker/artifact.d.ts +8 -3
  80. package/dist/coding-worker/artifact.js +3 -1
  81. package/dist/coding-worker/debug-trace.d.ts +6 -5
  82. package/dist/coding-worker/debug-trace.js +13 -18
  83. package/dist/coding-worker/dependency-cache.d.mts +229 -0
  84. package/dist/coding-worker/dependency-cache.mjs +2123 -0
  85. package/dist/coding-worker/driver.d.ts +4 -3
  86. package/dist/coding-worker/driver.js +116 -38
  87. package/dist/coding-worker/errors.d.ts +1 -0
  88. package/dist/coding-worker/errors.js +32 -0
  89. package/dist/coding-worker/task-note.d.ts +11 -0
  90. package/dist/coding-worker/task-note.js +13 -0
  91. package/dist/coding-worker/types.d.ts +11 -0
  92. package/dist/config/dependency-cache.d.ts +23 -0
  93. package/dist/config/dependency-cache.js +32 -0
  94. package/dist/config/providers.d.ts +12 -3
  95. package/dist/config/providers.js +55 -5
  96. package/dist/config/test-simulators.d.ts +82 -0
  97. package/dist/config/test-simulators.js +305 -0
  98. package/dist/core/async-context.d.ts +2 -0
  99. package/dist/core/async-context.js +12 -0
  100. package/dist/core/budget-events.d.ts +108 -0
  101. package/dist/core/budget-events.js +346 -0
  102. package/dist/core/budget-groups.d.ts +50 -1
  103. package/dist/core/budget-groups.js +236 -27
  104. package/dist/core/budget-stopped-head.d.ts +46 -0
  105. package/dist/core/budget-stopped-head.js +81 -0
  106. package/dist/core/budget-topup.d.ts +51 -0
  107. package/dist/core/budget-topup.js +156 -0
  108. package/dist/core/budget-wording.d.ts +16 -2
  109. package/dist/core/budget-wording.js +40 -2
  110. package/dist/core/coding-queue.d.ts +2 -1
  111. package/dist/core/coding-queue.js +7 -0
  112. package/dist/core/cron.d.ts +19 -1
  113. package/dist/core/cron.js +17 -0
  114. package/dist/core/datastores.js +1 -1
  115. package/dist/core/deferred-coding.d.ts +14 -0
  116. package/dist/core/deferred-coding.js +62 -0
  117. package/dist/core/delegation-child.d.ts +25 -0
  118. package/dist/core/delegation-child.js +37 -0
  119. package/dist/core/dispatch.d.ts +42 -0
  120. package/dist/core/dispatch.js +131 -56
  121. package/dist/core/engine-native.js +1 -1
  122. package/dist/core/error-code.d.ts +38 -0
  123. package/dist/core/error-code.js +168 -0
  124. package/dist/core/grants.d.ts +19 -6
  125. package/dist/core/grants.js +55 -6
  126. package/dist/core/host-events.d.ts +18 -2
  127. package/dist/core/host-events.js +284 -24
  128. package/dist/core/host-status.d.ts +85 -3
  129. package/dist/core/host-status.js +298 -20
  130. package/dist/core/issue-bridge.d.ts +50 -6
  131. package/dist/core/issue-bridge.js +124 -33
  132. package/dist/core/issue-events.d.ts +1 -1
  133. package/dist/core/issue-events.js +4 -10
  134. package/dist/core/issue-status.d.ts +1 -1
  135. package/dist/core/issue-status.js +54 -26
  136. package/dist/core/logger.d.ts +5 -0
  137. package/dist/core/logger.js +14 -1
  138. package/dist/core/lost-run-children.d.ts +6 -0
  139. package/dist/core/lost-run-children.js +32 -0
  140. package/dist/core/mark-ready.d.ts +34 -0
  141. package/dist/core/mark-ready.js +152 -0
  142. package/dist/core/markdown-code.d.ts +8 -0
  143. package/dist/core/markdown-code.js +107 -0
  144. package/dist/core/memory-tools.js +7 -0
  145. package/dist/core/merge-order-check.d.ts +2 -1
  146. package/dist/core/merge-order-check.js +8 -1
  147. package/dist/core/notification-templates.d.ts +1 -7
  148. package/dist/core/notification-templates.js +36 -2
  149. package/dist/core/pull-request-state-sync.js +2 -2
  150. package/dist/core/reconciler.d.ts +4 -3
  151. package/dist/core/reconciler.js +8 -1
  152. package/dist/core/related-pull-requests.d.ts +11 -3
  153. package/dist/core/related-pull-requests.js +27 -14
  154. package/dist/core/reply-parts.d.ts +21 -0
  155. package/dist/core/reply-parts.js +73 -0
  156. package/dist/core/review-fix.d.ts +1 -1
  157. package/dist/core/review-fix.js +2 -1
  158. package/dist/core/review-host-checks.d.ts +1 -1
  159. package/dist/core/review-host-tools.d.ts +3 -0
  160. package/dist/core/review-host-tools.js +99 -13
  161. package/dist/core/review-reads.d.ts +55 -0
  162. package/dist/core/review-reads.js +233 -0
  163. package/dist/core/run-status.d.ts +12 -0
  164. package/dist/core/run-status.js +12 -0
  165. package/dist/core/runner.d.ts +80 -34
  166. package/dist/core/runner.js +439 -144
  167. package/dist/core/schedule-start.d.ts +12 -0
  168. package/dist/core/schedule-start.js +14 -0
  169. package/dist/core/secret-broker-config.d.ts +10 -74
  170. package/dist/core/secret-guard.d.ts +46 -0
  171. package/dist/core/secret-guard.js +104 -0
  172. package/dist/core/secret-guarded-stores.d.ts +12 -0
  173. package/dist/core/secret-guarded-stores.js +41 -0
  174. package/dist/core/secret-spans.d.ts +50 -0
  175. package/dist/core/secret-spans.js +94 -0
  176. package/dist/core/stop-run.d.ts +46 -0
  177. package/dist/core/stop-run.js +61 -0
  178. package/dist/core/workflow-events.d.ts +14 -2
  179. package/dist/core/workflow-events.js +4 -0
  180. package/dist/core/workflow-run-events.d.ts +5 -3
  181. package/dist/core/workflow-run-events.js +43 -8
  182. package/dist/core/zod-json-schema.d.ts +4 -0
  183. package/dist/core/zod-json-schema.js +39 -0
  184. package/dist/core/zod3-window.d.ts +35 -0
  185. package/dist/core/zod3-window.js +124 -0
  186. package/dist/generated/prisma/browser.d.ts +34 -3
  187. package/dist/generated/prisma/client.d.ts +34 -3
  188. package/dist/generated/prisma/commonInputTypes.d.ts +220 -60
  189. package/dist/generated/prisma/enums.d.ts +10 -0
  190. package/dist/generated/prisma/enums.js +8 -0
  191. package/dist/generated/prisma/internal/class.d.ts +44 -0
  192. package/dist/generated/prisma/internal/class.js +4 -4
  193. package/dist/generated/prisma/internal/prismaNamespace.d.ts +428 -9
  194. package/dist/generated/prisma/internal/prismaNamespace.js +92 -1
  195. package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +95 -0
  196. package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +92 -1
  197. package/dist/generated/prisma/models/Agent.d.ts +106 -8
  198. package/dist/generated/prisma/models/AgentRepository.d.ts +42 -1
  199. package/dist/generated/prisma/models/CodingAgentProfile.d.ts +229 -1
  200. package/dist/generated/prisma/models/CodingProxyRequest.d.ts +207 -3
  201. package/dist/generated/prisma/models/CodingProxySession.d.ts +114 -1
  202. package/dist/generated/prisma/models/CodingRun.d.ts +1637 -1
  203. package/dist/generated/prisma/models/DependencySnapshot.d.ts +1668 -0
  204. package/dist/generated/prisma/models/DependencySnapshot.js +1 -0
  205. package/dist/generated/prisma/models/IssuePullRequest.d.ts +6 -2
  206. package/dist/generated/prisma/models/LocalReview.d.ts +40 -1
  207. package/dist/generated/prisma/models/NativeGatewayCall.d.ts +39 -1
  208. package/dist/generated/prisma/models/NativeGatewaySession.d.ts +35 -1
  209. package/dist/generated/prisma/models/RegistryAllowance.d.ts +41 -1
  210. package/dist/generated/prisma/models/RegistryApprovedVersion.d.ts +75 -1
  211. package/dist/generated/prisma/models/RegistryAuditRecord.d.ts +1364 -0
  212. package/dist/generated/prisma/models/RegistryAuditRecord.js +1 -0
  213. package/dist/generated/prisma/models/Run.d.ts +738 -2
  214. package/dist/generated/prisma/models/RunBudgetEvent.d.ts +1211 -0
  215. package/dist/generated/prisma/models/RunBudgetEvent.js +1 -0
  216. package/dist/generated/prisma/models/RunTranscript.d.ts +1339 -0
  217. package/dist/generated/prisma/models/RunTranscript.js +1 -0
  218. package/dist/generated/prisma/models.d.ts +4 -0
  219. package/dist/help-index.json +1320 -69
  220. package/dist/import/create.js +32 -3
  221. package/dist/import/neutral-schema.d.ts +50 -281
  222. package/dist/import/neutral-schema.js +5 -4
  223. package/dist/knowledge/check.d.ts +1 -1
  224. package/dist/knowledge/cli.d.ts +11 -1
  225. package/dist/knowledge/cli.js +37 -4
  226. package/dist/knowledge/concept.d.ts +3 -19
  227. package/dist/knowledge/location.d.ts +31 -0
  228. package/dist/knowledge/location.js +78 -0
  229. package/dist/mcp/auth/access.d.ts +10 -2
  230. package/dist/mcp/auth/access.js +15 -1
  231. package/dist/mcp/auth/ownership.d.ts +7 -7
  232. package/dist/mcp/auth/self-hosted/credentials.d.ts +3 -3
  233. package/dist/mcp/auth/self-hosted/session.d.ts +2 -2
  234. package/dist/mcp/host-events/github-ingress.d.ts +2 -0
  235. package/dist/mcp/host-events/github-ingress.js +2 -1
  236. package/dist/mcp/index.d.ts +6 -0
  237. package/dist/mcp/index.js +58 -10
  238. package/dist/mcp/server.d.ts +13 -0
  239. package/dist/mcp/server.js +33 -14
  240. package/dist/mcp/tools/agents.d.ts +4 -0
  241. package/dist/mcp/tools/agents.js +198 -16
  242. package/dist/mcp/tools/datastore.js +17 -8
  243. package/dist/mcp/tools/grants.js +9 -3
  244. package/dist/mcp/tools/memory.js +11 -1
  245. package/dist/mcp/tools/notification-channels.js +2 -2
  246. package/dist/mcp/tools/packages.d.ts +2 -0
  247. package/dist/mcp/tools/packages.js +195 -0
  248. package/dist/mcp/tools/repositories.js +18 -5
  249. package/dist/mcp/tools/run-access.d.ts +16 -0
  250. package/dist/mcp/tools/run-access.js +25 -0
  251. package/dist/mcp/tools/run-transcript-download.d.ts +30 -0
  252. package/dist/mcp/tools/run-transcript-download.js +129 -0
  253. package/dist/mcp/tools/run-transcript.d.ts +19 -0
  254. package/dist/mcp/tools/run-transcript.js +70 -0
  255. package/dist/mcp/tools/runs.js +34 -12
  256. package/dist/mcp/tools/scheduling.js +3 -1
  257. package/dist/mcp/tools/secret-elicitation-form.js +5 -0
  258. package/dist/mcp/tools/secret-elicitation-server.d.ts +6 -0
  259. package/dist/mcp/tools/secret-elicitation-server.js +10 -61
  260. package/dist/mcp/tools/secrets.js +2 -2
  261. package/dist/mcp/tools/stop-run.d.ts +2 -0
  262. package/dist/mcp/tools/stop-run.js +82 -0
  263. package/dist/mcp/tools/subagents.js +2 -2
  264. package/dist/mcp/tools/tools.d.ts +1 -1
  265. package/dist/mcp/tools/tools.js +25 -9
  266. package/dist/mcp/transport/stdio-link-host.d.ts +20 -0
  267. package/dist/mcp/transport/stdio-link-host.js +67 -0
  268. package/dist/mcp/transport/streamable-http.d.ts +13 -0
  269. package/dist/mcp/transport/streamable-http.js +41 -1
  270. package/dist/native-worker/docker-launcher.d.ts +38 -2
  271. package/dist/native-worker/docker-launcher.js +65 -5
  272. package/dist/native-worker/gateway-server.d.ts +41 -3
  273. package/dist/native-worker/gateway-server.js +124 -27
  274. package/dist/native-worker/gateway.d.ts +27 -1
  275. package/dist/native-worker/gateway.js +70 -4
  276. package/dist/native-worker/http-server.d.ts +3 -1
  277. package/dist/native-worker/http-server.js +11 -7
  278. package/dist/native-worker/http-transport.js +1 -1
  279. package/dist/native-worker/kubernetes-launcher.d.ts +7 -3
  280. package/dist/native-worker/kubernetes-launcher.js +43 -3
  281. package/dist/native-worker/launch.d.ts +18 -1
  282. package/dist/native-worker/launch.js +6 -1
  283. package/dist/native-worker/ledger.d.ts +18 -2
  284. package/dist/native-worker/ledger.js +57 -4
  285. package/dist/native-worker/loopback.js +3 -8
  286. package/dist/native-worker/main.d.ts +2 -1
  287. package/dist/native-worker/main.js +14 -3
  288. package/dist/native-worker/protocol.d.ts +129 -577
  289. package/dist/native-worker/protocol.js +47 -1
  290. package/dist/native-worker/sandbox-executor.d.ts +17 -2
  291. package/dist/native-worker/sandbox-executor.js +78 -4
  292. package/dist/native-worker/stderr-redaction.d.ts +77 -0
  293. package/dist/native-worker/stderr-redaction.js +237 -0
  294. package/dist/native-worker/stdio.d.ts +1 -1
  295. package/dist/native-worker/stdio.js +6 -5
  296. package/dist/native-worker/warm-pool.d.ts +2 -2
  297. package/dist/native-worker/warm-pool.js +4 -4
  298. package/dist/native-worker/worker.js +28 -2
  299. package/dist/observability/metrics.js +6 -1
  300. package/dist/providers/auth/self-hosted.d.ts +1 -1
  301. package/dist/providers/coding-proxy/dependency-cache/eviction.d.ts +29 -0
  302. package/dist/providers/coding-proxy/dependency-cache/eviction.js +87 -0
  303. package/dist/providers/coding-proxy/dependency-cache/key.d.ts +33 -0
  304. package/dist/providers/coding-proxy/dependency-cache/key.js +86 -0
  305. package/dist/providers/coding-proxy/dependency-cache/model-request-seal.d.ts +18 -0
  306. package/dist/providers/coding-proxy/dependency-cache/model-request-seal.js +40 -0
  307. package/dist/providers/coding-proxy/dependency-cache/prisma-store.d.ts +25 -0
  308. package/dist/providers/coding-proxy/dependency-cache/prisma-store.js +131 -0
  309. package/dist/providers/coding-proxy/dependency-cache/service.d.ts +70 -0
  310. package/dist/providers/coding-proxy/dependency-cache/service.js +409 -0
  311. package/dist/providers/coding-proxy/dependency-cache/store.d.ts +85 -0
  312. package/dist/providers/coding-proxy/dependency-cache/store.js +95 -0
  313. package/dist/providers/coding-proxy/hold.d.ts +32 -0
  314. package/dist/providers/coding-proxy/hold.js +86 -0
  315. package/dist/providers/coding-proxy/interrupted.d.ts +70 -0
  316. package/dist/providers/coding-proxy/interrupted.js +104 -0
  317. package/dist/providers/coding-proxy/memory-ledger.d.ts +15 -2
  318. package/dist/providers/coding-proxy/memory-ledger.js +84 -8
  319. package/dist/providers/coding-proxy/metering.d.ts +16 -0
  320. package/dist/providers/coding-proxy/metering.js +27 -4
  321. package/dist/providers/coding-proxy/prisma-ledger.d.ts +15 -2
  322. package/dist/providers/coding-proxy/prisma-ledger.js +179 -67
  323. package/dist/providers/coding-proxy/proxy.d.ts +14 -1
  324. package/dist/providers/coding-proxy/proxy.js +166 -14
  325. package/dist/providers/coding-proxy/registry/audit.d.ts +53 -10
  326. package/dist/providers/coding-proxy/registry/audit.js +94 -17
  327. package/dist/providers/coding-proxy/registry/lockfile-parse-worker.d.ts +36 -0
  328. package/dist/providers/coding-proxy/registry/lockfile-parse-worker.js +67 -0
  329. package/dist/providers/coding-proxy/registry/lockfile-parse.d.ts +16 -0
  330. package/dist/providers/coding-proxy/registry/lockfile-parse.js +110 -0
  331. package/dist/providers/coding-proxy/registry/plan.d.ts +9 -0
  332. package/dist/providers/coding-proxy/registry/plan.js +201 -48
  333. package/dist/providers/coding-proxy/registry/prisma-store.d.ts +11 -5
  334. package/dist/providers/coding-proxy/registry/prisma-store.js +120 -17
  335. package/dist/providers/coding-proxy/registry/service.d.ts +97 -16
  336. package/dist/providers/coding-proxy/registry/service.js +579 -112
  337. package/dist/providers/coding-proxy/registry/store.d.ts +84 -9
  338. package/dist/providers/coding-proxy/registry/store.js +54 -1
  339. package/dist/providers/coding-proxy/runtime.d.ts +4 -0
  340. package/dist/providers/coding-proxy/runtime.js +78 -16
  341. package/dist/providers/coding-proxy/server.d.ts +6 -1
  342. package/dist/providers/coding-proxy/server.js +45 -1
  343. package/dist/providers/coding-proxy/types.d.ts +65 -1
  344. package/dist/providers/datastore/types.d.ts +5 -0
  345. package/dist/providers/engine/types.d.ts +17 -2
  346. package/dist/providers/engine/types.js +17 -0
  347. package/dist/providers/executor/composition.d.ts +10 -3
  348. package/dist/providers/executor/composition.js +47 -7
  349. package/dist/providers/executor/container.d.ts +361 -8
  350. package/dist/providers/executor/container.js +1136 -91
  351. package/dist/providers/executor/dbos-status.d.ts +31 -0
  352. package/dist/providers/executor/dbos-status.js +64 -0
  353. package/dist/providers/executor/dbos.d.ts +50 -1
  354. package/dist/providers/executor/dbos.js +207 -20
  355. package/dist/providers/executor/deferred.d.ts +12 -24
  356. package/dist/providers/executor/deferred.js +10 -29
  357. package/dist/providers/executor/in-process.d.ts +9 -1
  358. package/dist/providers/executor/in-process.js +14 -4
  359. package/dist/providers/executor/linked-issue-reader.d.ts +16 -0
  360. package/dist/providers/executor/linked-issue-reader.js +30 -0
  361. package/dist/providers/executor/routing.d.ts +2 -0
  362. package/dist/providers/executor/routing.js +4 -0
  363. package/dist/providers/executor/types.d.ts +13 -0
  364. package/dist/providers/index.d.ts +2 -1
  365. package/dist/providers/issue-tracker/types.d.ts +17 -0
  366. package/dist/providers/issue-tracker/types.js +39 -1
  367. package/dist/providers/jobs/claude-tool-setup.d.ts +4 -0
  368. package/dist/providers/jobs/claude-tool-setup.js +5 -2
  369. package/dist/providers/jobs/docker-isolation.d.ts +8 -0
  370. package/dist/providers/jobs/docker-isolation.js +17 -0
  371. package/dist/providers/jobs/docker.d.ts +1 -0
  372. package/dist/providers/jobs/docker.js +27 -2
  373. package/dist/providers/jobs/fake-kubernetes-api.d.ts +2 -0
  374. package/dist/providers/jobs/fake-kubernetes-api.js +3 -0
  375. package/dist/providers/jobs/kubernetes-api.d.ts +8 -0
  376. package/dist/providers/jobs/kubernetes-api.js +10 -0
  377. package/dist/providers/jobs/kubernetes-client.js +10 -1
  378. package/dist/providers/jobs/kubernetes-isolation.d.ts +2 -0
  379. package/dist/providers/jobs/kubernetes-isolation.js +17 -1
  380. package/dist/providers/jobs/kubernetes.d.ts +6 -1
  381. package/dist/providers/jobs/kubernetes.js +105 -16
  382. package/dist/providers/jobs/types.d.ts +33 -0
  383. package/dist/providers/jobs/types.js +13 -1
  384. package/dist/providers/llm/anthropic.js +5 -1
  385. package/dist/providers/llm/bedrock.d.ts +0 -12
  386. package/dist/providers/llm/bedrock.js +4 -0
  387. package/dist/providers/llm/claude-messages.d.ts +3 -1
  388. package/dist/providers/llm/claude-messages.js +4 -1
  389. package/dist/providers/llm/claude-provider.d.ts +2 -2
  390. package/dist/providers/llm/claude-provider.js +2 -2
  391. package/dist/providers/llm/openai.d.ts +2 -2
  392. package/dist/providers/llm/openai.js +6 -2
  393. package/dist/providers/llm/routing.d.ts +2 -2
  394. package/dist/providers/llm/routing.js +2 -2
  395. package/dist/providers/llm/types.d.ts +12 -2
  396. package/dist/providers/review-host/github-events.d.ts +9 -1
  397. package/dist/providers/review-host/github-events.js +34 -12
  398. package/dist/providers/review-host/github.d.ts +29 -2
  399. package/dist/providers/review-host/github.js +224 -29
  400. package/dist/providers/review-host/local.d.ts +8 -4
  401. package/dist/providers/review-host/local.js +49 -31
  402. package/dist/providers/review-host/patch-pages.d.ts +41 -0
  403. package/dist/providers/review-host/patch-pages.js +176 -0
  404. package/dist/providers/review-host/review-format.d.ts +19 -1
  405. package/dist/providers/review-host/review-format.js +38 -7
  406. package/dist/providers/review-host/types.d.ts +134 -2
  407. package/dist/providers/review-host/types.js +8 -0
  408. package/dist/providers/storage/gcs.d.ts +63 -0
  409. package/dist/providers/storage/gcs.js +69 -0
  410. package/dist/providers/storage/index.d.ts +15 -0
  411. package/dist/providers/storage/index.js +14 -0
  412. package/dist/providers/storage/local.d.ts +24 -0
  413. package/dist/providers/storage/local.js +92 -0
  414. package/dist/providers/storage/meter.d.ts +14 -0
  415. package/dist/providers/storage/meter.js +34 -0
  416. package/dist/providers/storage/s3.d.ts +41 -0
  417. package/dist/providers/storage/s3.js +107 -0
  418. package/dist/providers/storage/types.d.ts +37 -3
  419. package/dist/providers/storage/types.js +21 -4
  420. package/dist/providers/vcs/git.d.ts +33 -2
  421. package/dist/providers/vcs/git.js +324 -22
  422. package/dist/providers/vcs/github-remote.d.ts +26 -3
  423. package/dist/providers/vcs/github-remote.js +124 -14
  424. package/dist/providers/vcs/github.d.ts +214 -6
  425. package/dist/providers/vcs/github.js +447 -45
  426. package/dist/providers/vcs/index.js +8 -1
  427. package/dist/providers/vcs/pr-description.d.ts +127 -0
  428. package/dist/providers/vcs/pr-description.js +270 -0
  429. package/dist/providers/vcs/remote.d.ts +33 -1
  430. package/dist/providers/vcs/routing.d.ts +4 -2
  431. package/dist/providers/vcs/routing.js +6 -0
  432. package/dist/providers/vcs/types.d.ts +80 -3
  433. package/dist/quickstart/coding-seed.d.ts +14 -3
  434. package/dist/quickstart/coding-seed.js +213 -4
  435. package/dist/quickstart/reviewer-prompt.d.ts +1 -1
  436. package/dist/quickstart/reviewer-prompt.js +6 -6
  437. package/dist/quickstart-images.json +1 -1
  438. package/dist/sandbox/generated/zod.bundle.js +62 -1
  439. package/dist/sandbox/generated/zod3.bundle.js +5 -0
  440. package/dist/sandbox/host-functions.d.ts +1 -0
  441. package/dist/sandbox/host-functions.js +6 -11
  442. package/dist/sandbox/secret-broker.js +3 -4
  443. package/dist/sandbox/tool-capabilities.d.ts +10 -30
  444. package/dist/sandbox/zod-params.d.ts +37 -5
  445. package/dist/sandbox/zod-params.js +181 -26
  446. package/dist/serve.js +8 -1
  447. package/dist/viewer/api-schema.d.ts +349 -2627
  448. package/dist/viewer/api-schema.js +7 -0
  449. package/dist/viewer/build-schemas.js +6 -2
  450. package/dist/viewer/openapi.js +2 -4
  451. package/dist/wardby-bin.js +10 -0
  452. package/docs/agent-recipes.md +58 -20
  453. package/docs/code-review-agents.md +551 -41
  454. package/docs/coding-agent-setup.md +489 -7
  455. package/docs/coding-packages.md +1033 -90
  456. package/docs/coding-services.md +27 -12
  457. package/docs/coding-worker-byo-images.md +20 -0
  458. package/docs/coding-worker-isolation.md +105 -30
  459. package/docs/getting-started-gke.md +124 -137
  460. package/docs/getting-started-identity-provider.md +10 -1
  461. package/docs/getting-started.md +9 -0
  462. package/docs/jira-agents.md +17 -8
  463. package/docs/knowledge/blob-not-found-semantics.md +41 -0
  464. package/docs/knowledge/bounded-file-descriptor.md +52 -0
  465. package/docs/knowledge/delegation-admission-slots.md +52 -0
  466. package/docs/knowledge/http-dispatcher-bootstrap.md +61 -0
  467. package/docs/knowledge/import-rename-target.md +52 -0
  468. package/docs/knowledge/index.md +57 -0
  469. package/docs/knowledge/log.md +9 -0
  470. package/docs/knowledge/mcp-cancelled-task-precedence.md +41 -0
  471. package/docs/knowledge/mcp-http-prompt-discovery.md +41 -0
  472. package/docs/knowledge/mcp-schema-module-boundary.md +41 -0
  473. package/docs/knowledge/nullable-tool-uniqueness.md +52 -0
  474. package/docs/knowledge/overview-cli.md +74 -0
  475. package/docs/knowledge/overview-coding-proxy.md +72 -0
  476. package/docs/knowledge/overview-coding.md +72 -0
  477. package/docs/knowledge/overview-config.md +60 -0
  478. package/docs/knowledge/overview-core.md +72 -0
  479. package/docs/knowledge/overview-deploy.md +83 -0
  480. package/docs/knowledge/overview-mcp.md +61 -0
  481. package/docs/knowledge/overview-prisma.md +72 -0
  482. package/docs/knowledge/overview-providers.md +89 -0
  483. package/docs/knowledge/overview-sandbox.md +83 -0
  484. package/docs/knowledge/overview-surfaces.md +83 -0
  485. package/docs/knowledge/private-datastore-shared-boundary.md +54 -0
  486. package/docs/knowledge/proxy-settlement-projections.md +41 -0
  487. package/docs/knowledge/run-pricing-first-writer.md +43 -0
  488. package/docs/knowledge/schedule-claim-transaction.md +41 -0
  489. package/docs/knowledge/secret-entry-replica-contract.md +52 -0
  490. package/docs/knowledge/terminal-run-first-writer.md +41 -0
  491. package/docs/knowledge/transactional-agent-authorization.md +52 -0
  492. package/docs/knowledge/viewer-notify-write-isolation.md +30 -0
  493. package/docs/knowledge/warm-input-publication.md +30 -0
  494. package/docs/knowledge/workspace-staging-failure.md +54 -0
  495. package/docs/knowledge.md +54 -14
  496. package/docs/native-sandbox.md +119 -23
  497. package/docs/observability.md +4 -0
  498. package/docs/security-deployment.md +33 -2
  499. package/docs/slack-notifications.md +35 -19
  500. package/docs/tool-secrets.md +42 -10
  501. package/docs/viewer-api.openapi.yml +1 -1
  502. package/help/admin-viewer.md +24 -2
  503. package/help/architecture-agent.md +11 -6
  504. package/help/build-worker-image.md +3 -1
  505. package/help/builder-agent.md +19 -6
  506. package/help/code-review-agents.md +177 -6
  507. package/help/coding-packages.md +156 -6
  508. package/help/cost-attribution.md +9 -5
  509. package/help/creating-agents.md +14 -1
  510. package/help/dependency-cache.md +143 -0
  511. package/help/deploy-gke.md +15 -8
  512. package/help/errors/budget-exhausted.md +187 -0
  513. package/help/errors/budget-group-exhausted.md +5 -1
  514. package/help/errors/coding-stream-quota-exceeded.md +33 -0
  515. package/help/errors/coding-workspace-disk-exceeds-limit.md +39 -0
  516. package/help/errors/continuation-closed.md +9 -12
  517. package/help/errors/delegation-conflict.md +24 -0
  518. package/help/errors/file-list-truncated.md +45 -0
  519. package/help/errors/full-read-required.md +49 -0
  520. package/help/errors/github-account-not-allowed.md +4 -0
  521. package/help/errors/graph-incomplete.md +43 -0
  522. package/help/errors/graph-limit.md +43 -0
  523. package/help/errors/merge-conflict.md +49 -0
  524. package/help/errors/native-sandbox-gateway-error.md +20 -0
  525. package/help/errors/native-sandbox-launch-abandoned.md +21 -0
  526. package/help/errors/native-sandbox-worker-exited.md +3 -2
  527. package/help/errors/package-not-allowed-pending.md +52 -0
  528. package/help/errors/package-not-allowed.md +51 -0
  529. package/help/errors/package-refusals.md +43 -0
  530. package/help/errors/patch-cursor-malformed.md +31 -0
  531. package/help/errors/run-lost.md +39 -0
  532. package/help/errors/run-transcript-download.md +44 -0
  533. package/help/errors/secret-in-value.md +69 -0
  534. package/help/errors/target-merge.md +40 -0
  535. package/help/fix-merge-conflicts.md +73 -0
  536. package/help/github-app-setup.md +132 -0
  537. package/help/github.md +22 -0
  538. package/help/identity-and-access.md +2 -0
  539. package/help/jira.md +23 -6
  540. package/help/knowledge.md +16 -7
  541. package/help/local-repositories.md +1 -1
  542. package/help/low-power-mode.md +7 -1
  543. package/help/merge-order-check.md +5 -0
  544. package/help/native-capabilities.md +29 -1
  545. package/help/native-sandbox.md +15 -1
  546. package/help/operating-agents.md +5 -0
  547. package/help/package-audit-mode.md +91 -0
  548. package/help/related-pull-requests.md +10 -7
  549. package/help/resume-runs-locally.md +131 -0
  550. package/help/review-fix-rounds.md +33 -1
  551. package/help/sharing-agents.md +59 -0
  552. package/help/slack-notifications.md +19 -5
  553. package/help/status-comments.md +31 -0
  554. package/help/stop-run.md +58 -0
  555. package/help/troubleshooting/budgets.md +28 -0
  556. package/help/troubleshooting/coding-workers.md +78 -7
  557. package/package.json +17 -10
  558. package/prisma/migrations/20261016000000_registry_approved_accepted_advisories/migration.sql +3 -0
  559. package/prisma/migrations/20261016000001_mark_ready_when_passing/migration.sql +3 -0
  560. package/prisma/migrations/20261017000000_debug_trace_max_mb/migration.sql +4 -0
  561. package/prisma/migrations/20261018000000_dependency_cache/migration.sql +53 -0
  562. package/prisma/migrations/20261019000000_claude_max_output_tokens/migration.sql +5 -0
  563. package/prisma/migrations/20261021000000_pr_description_hash/migration.sql +4 -0
  564. package/prisma/migrations/20261022000000_dependency_snapshot_validation_metadata/migration.sql +4 -0
  565. package/prisma/migrations/20261023000000_package_audit_mode/migration.sql +27 -0
  566. package/prisma/migrations/20261024000000_budget_events/migration.sql +26 -0
  567. package/prisma/migrations/20261025000000_cache_aware_holds/migration.sql +9 -0
  568. package/prisma/migrations/20261026000000_budget_overrun/migration.sql +4 -0
  569. package/prisma/migrations/20261027000000_coding_run_request/migration.sql +1 -0
  570. package/prisma/migrations/20261028000000_native_gateway_review_reads/migration.sql +6 -0
  571. package/prisma/migrations/20261029000000_lead_survives_deploy/migration.sql +6 -0
  572. package/prisma/migrations/20261030000000_local_review_covered_sha/migration.sql +2 -0
  573. package/prisma/migrations/20261031000000_coding_run_budget_limit/migration.sql +9 -0
  574. package/prisma/migrations/20261101000000_run_transcripts/migration.sql +22 -0
  575. package/prisma/schema.prisma +311 -97
  576. package/dist/sandbox/generated/zod-to-json-schema.bundle.js +0 -5
@@ -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).
@@ -46,3 +46,5 @@ that request every advertised scope otherwise fail with `invalid_scope`.
46
46
  Read [`docs/getting-started-identity-provider.md`](../docs/getting-started-identity-provider.md)
47
47
  for the required claims, scope list, role mapping, provider examples, and
48
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
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
@@ -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, paramsZod, create_tool, dry_run_tool]
7
7
  appliesTo: >=0.2.1
8
8
  ---
9
9
 
@@ -20,6 +20,34 @@ 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
+
23
51
  Use a budget or shared budget group on every agent, and inspect runs before
24
52
  expanding its access. An access grant is intentional delegation: use it only
25
53
  when an owner permits one agent to use another resource. Creating or changing
@@ -102,8 +102,21 @@ are in [Native sandbox](../docs/native-sandbox.md#warm-pool).
102
102
  run `budget_exhausted`.
103
103
  - Sub-agents of a sandboxed run are managed runs started by the scheduler
104
104
  leader on its next tick (about every 10 seconds), so the server or scheduler
105
- must be running.
105
+ must be running. A coding agent child is resolved by the server when it
106
+ starts (worker image, services, knowledge), so the gateway needs no `CODING_*`
107
+ settings; a problem there (such as a `workerImageRef` that is not pinned by digest)
108
+ shows as the child run `failed` or `refused`; the parent's `delegate_to_*`
109
+ call receives `status: "failed"` with the `errorCode`, or for a refused child
110
+ the refusal sentence, and the full error is on the child run (`get_run`).
111
+ Upgrade `wardby serve` and `wardby scheduler` before or together with the
112
+ gateway: an older server starts the child unresolved (a Codex child on the
113
+ default image without its instructions, a Claude Code child failing with
114
+ `coding_provider_not_configured:claude-code`).
106
115
  - A sandbox run has a 60-minute maximum lifetime.
116
+ - `stop_run` stops a sandbox run: its gateway session ends so the worker exits
117
+ at its next call, and a worker still running after 5 seconds is killed and
118
+ removed (a warm pool worker is discarded, never reused). Search help for
119
+ "stop run" (article `stop-run`, Wardby 0.7.0 and later).
107
120
 
108
121
  ## Roll back
109
122
 
@@ -120,6 +133,7 @@ codes:
120
133
 
121
134
  - [native_sandbox_unavailable](errors/native-sandbox-unavailable.md)
122
135
  - [native_sandbox_worker_exited](errors/native-sandbox-worker-exited.md)
136
+ - [native_sandbox_gateway_error](errors/native-sandbox-gateway-error.md)
123
137
  - [native_sandbox_deadline_exceeded](errors/native-sandbox-deadline-exceeded.md)
124
138
  - [native_sandbox_worker_lost](errors/native-sandbox-worker-lost.md)
125
139
  - [native_sandbox_image_not_pinned](errors/native-sandbox-image-not-pinned.md)
@@ -32,5 +32,10 @@ A running run's cost, token counts, and turn count update after each model
32
32
  call, so `get_run` and `list_runs` show spend so far rather than zero until the
33
33
  run finishes.
34
34
 
35
+ To stop a run that is pending, queued, or running (for example one a schedule
36
+ started that you did not want), call `stop_run` with its id. It ends as
37
+ `cancelled`, along with the sub-agent runs it still has in flight. Search help
38
+ for "stop run" (article `stop-run`, Wardby 0.7.0 and later).
39
+
35
40
  For the full lifecycle and the controls applied to every managed run, read
36
41
  [`README.md`](../README.md).
@@ -0,0 +1,91 @@
1
+ ---
2
+ id: package-audit-mode
3
+ title: Package audit mode
4
+ summary: Let a coding agent install packages outside its allowlist for a limited time, recorded for approval afterwards; full mode also installs versions with high-severity advisories. Malware and the release-age limit are always enforced.
5
+ audience: operator
6
+ tags: [coding-agents, packages, allowlist, package audit, package audit mode, audit mode, packageAuditMode, packageAuditMinutes, approve_audited_packages, packages_audited, npm, pypi, supply-chain]
7
+ appliesTo: >=0.7.0
8
+ ---
9
+
10
+ # Package audit mode
11
+
12
+ From Wardby 0.7.0, a coding agent's registry can run in package audit mode for
13
+ a limited time. Instead of refusing a package that is not on the agent's
14
+ allowlist, the registry installs it and records it. Use it to find out which
15
+ packages a task needs, then approve them and turn the mode off.
16
+
17
+ ## Modes
18
+
19
+ | Mode | Packages outside the allowlist | High or critical advisories | Malware | Release age |
20
+ | ------- | ------------------------------ | --------------------------- | ------- | ----------- |
21
+ | off | refused | withheld unless accepted | refused | enforced |
22
+ | `audit` | installed and recorded | withheld unless accepted | refused | enforced |
23
+ | `full` | installed and recorded | installed and recorded | refused | enforced |
24
+
25
+ Everything else still applies in every mode: integrity checks, source
26
+ distributions, size and file limits, and a version outside an allowlist
27
+ entry's own range (`foo@^1` never serves `foo@2`).
28
+
29
+ ## Turn it on and off
30
+
31
+ The agent's owner sets it with `update_agent` (needs `packages:approve` or
32
+ `agents:admin`):
33
+
34
+ ```json
35
+ { "id": "<agent id>", "codingProfile": { "packageAuditMode": "audit", "packageAuditMinutes": 1440 } }
36
+ ```
37
+
38
+ - `packageAuditMinutes` defaults to 1440 (24 hours); the most is 10080 (7 days).
39
+ - `packageAuditMinutes` alone re-arms the stored mode for that long.
40
+ - `"packageAuditMode": null` turns it off.
41
+ - `create_agent` does not accept it.
42
+
43
+ `get_agent` shows `packageAuditActive` and a warning while the window is
44
+ open. Each coding run takes the mode when it is dispatched and keeps it for
45
+ its whole life, so a run that starts just before the window ends still runs
46
+ with it.
47
+
48
+ ## Where audited packages show up
49
+
50
+ - `get_run`: `packageAuditMode` and `packageAudit`, one entry per version
51
+ with its `relation` (`top-level`, `transitive` with `via`, `unknown`, or
52
+ `allowed`) and, in `full` mode, its `advisories` (the high and critical ones it was served despite).
53
+ - The pull request body: a caution banner, **Packages outside the
54
+ allowlist**, and in `full` mode **Served despite advisories**.
55
+ - The run's status comment on GitHub or Jira, and a `packages_audited` Slack
56
+ message on linked channels (see [Slack notifications](slack-notifications.md)).
57
+ - The proxy log: one `registry.audited` line per version.
58
+
59
+ A lockfile plan in audit mode approves what passes every other check, and the
60
+ dependency cache never restores or saves a lockfile whose plan audited
61
+ anything.
62
+
63
+ ## Keep the packages
64
+
65
+ Approve the names a run recorded with `approve_audited_packages`
66
+ (`{ "runId": "<run id>" }`), or add them to `codingProfile.packageAllowlist`
67
+ with `update_agent`. Then turn the mode off.
68
+
69
+ Without `names`, the tool adds only `top-level` packages. A package recorded
70
+ as `unknown` (installed with no metadata or plan to show its parent) may be a
71
+ dependency of an allowlisted package, so every report lists it apart as
72
+ "Relation unknown — may be a dependency; approve only if needed directly".
73
+ Add one only if the project uses it directly, by listing it in `names`.
74
+
75
+ ## Risks
76
+
77
+ Audit mode weakens the supply-chain guard while it is on. `audit` keeps the
78
+ malware, advisory and release-age checks; `full` keeps only malware and
79
+ release age. A confused or prompt-injected agent could install a lookalike
80
+ package that has no advisory yet. Install scripts stay off, but tests and
81
+ builds still run what was installed. Keep the window short, review the
82
+ caution banner on every affected pull request, and never leave it on.
83
+
84
+ ## Related
85
+
86
+ - [Coding packages](coding-packages.md)
87
+ - [Not allowed: `wardby_package_not_allowed`](errors/package-not-allowed.md)
88
+ - [Package not reached: `wardby_package_not_allowed_pending`](errors/package-not-allowed-pending.md)
89
+ - [Graph limit: `wardby_graph_limit`](errors/graph-limit.md)
90
+ - [Still being checked: `wardby_graph_incomplete`](errors/graph-incomplete.md)
91
+ - [Package audit mode guide](../docs/coding-packages.md#package-audit-mode)
@@ -11,16 +11,19 @@ appliesTo: ">=0.4.2"
11
11
 
12
12
  When one request produces pull requests in several repositories — a lead
13
13
  agent that delegates to one coding agent per repository, or several runs for
14
- the same Jira issue — Wardby adds a **Related pull requests** section to each
14
+ the same Jira or GitHub issue — Wardby adds a **Related pull requests** section to each
15
15
  of those pull requests' descriptions. It lists the others with links and
16
16
  their state, names the originating issue when there is one, and gives a
17
17
  merge order: the one the delegating agent set, or else a suggested one.
18
18
 
19
- Without a tracked Jira issue, the list covers the pull requests opened by
20
- runs in the same delegation tree (the same lead run and everything it
21
- started). With a tracked issue, the list covers every pull request Wardby
22
- has recorded for that issue across every run, merged and closed ones
23
- included, plus that run tree's own siblings.
19
+ Without a tracked issue, the list covers the pull requests opened by runs in
20
+ the same delegation tree (the same lead run and everything it started). With
21
+ a tracked issue (a Jira issue, or a GitHub issue whose `@<app-slug>` mention
22
+ started the request), the list covers every pull request Wardby has recorded
23
+ for that issue across every run, merged and closed ones included, plus that
24
+ run tree's own siblings. The section names the issue the same way for both,
25
+ for example "for Jira issue PROJ-123" or "for GitHub issue owner/repo#7",
26
+ linked to the issue.
24
27
 
25
28
  - **Written by Wardby, not the model.** The list comes from Wardby's own run
26
29
  records, never from the agent's text. Edits you make inside the section
@@ -65,7 +68,7 @@ included, plus that run tree's own siblings.
65
68
  name and number, so a request that spans repositories of different
66
69
  visibility can show a private repository's name in a public repository's
67
70
  pull request. If you mix public and private repositories, keep such work in
68
- separate requests: separate Jira issues, or separate lead agents.
71
+ separate requests: separate issues, or separate lead agents.
69
72
 
70
73
  Reviewers see the section in the pull request description, so a reviewer
71
74
  agent can tell that a field, route, or schema a change relies on is added by