@wardby/cli 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (740) hide show
  1. package/.env.example +5 -5
  2. package/README.md +6 -1
  3. package/deploy/local/docker-compose.quickstart-coding.yml +19 -0
  4. package/dist/claude-coding-worker/driver.d.ts +33 -3
  5. package/dist/claude-coding-worker/driver.js +151 -21
  6. package/dist/claude-coding-worker/main.js +38 -6
  7. package/dist/claude-coding-worker/sdk.js +29 -2
  8. package/dist/claude-coding-worker/tool-socket.d.ts +27 -0
  9. package/dist/claude-coding-worker/tool-socket.js +111 -0
  10. package/dist/claude-coding-worker/transcript.d.ts +18 -0
  11. package/dist/claude-coding-worker/transcript.js +77 -0
  12. package/dist/claude-plugin/command.d.ts +61 -0
  13. package/dist/claude-plugin/command.js +376 -0
  14. package/dist/cli-help.d.ts +1 -1
  15. package/dist/cli-help.js +3 -1
  16. package/dist/cli.js +71 -13
  17. package/dist/coding/code-host.d.ts +16 -0
  18. package/dist/coding/code-host.js +60 -0
  19. package/dist/coding/continuation-wording.d.ts +35 -0
  20. package/dist/coding/continuation-wording.js +73 -0
  21. package/dist/coding/linked-issue-note.d.ts +23 -0
  22. package/dist/coding/linked-issue-note.js +47 -0
  23. package/dist/coding/mcp-token.d.ts +12 -0
  24. package/dist/coding/mcp-token.js +26 -0
  25. package/dist/coding/merge-wording.d.ts +28 -0
  26. package/dist/coding/merge-wording.js +78 -0
  27. package/dist/coding/pr-description-note.d.ts +9 -0
  28. package/dist/coding/pr-description-note.js +32 -0
  29. package/dist/coding/profile.d.ts +46 -126
  30. package/dist/coding/profile.js +45 -4
  31. package/dist/coding/protected-path-wording.d.ts +8 -0
  32. package/dist/coding/protected-path-wording.js +1 -1
  33. package/dist/coding/protocol.d.ts +264 -346
  34. package/dist/coding/protocol.js +237 -12
  35. package/dist/coding/redact.d.ts +3 -0
  36. package/dist/coding/redact.js +17 -0
  37. package/dist/coding/registry/allowlist.d.ts +12 -0
  38. package/dist/coding/registry/allowlist.js +14 -1
  39. package/dist/coding/registry/audit-mode.d.ts +153 -0
  40. package/dist/coding/registry/audit-mode.js +304 -0
  41. package/dist/coding/registry/lockfile-shared.d.ts +36 -0
  42. package/dist/coding/registry/lockfile-shared.js +128 -0
  43. package/dist/coding/registry/lockfiles.js +1 -1
  44. package/dist/coding/registry/npm-lockfile-formats.d.ts +11 -0
  45. package/dist/coding/registry/npm-lockfile-formats.js +41 -0
  46. package/dist/coding/registry/npm-lockfile.d.ts +8 -4
  47. package/dist/coding/registry/npm-lockfile.js +4 -6
  48. package/dist/coding/registry/npm.js +78 -8
  49. package/dist/coding/registry/pnpm-lockfile.d.ts +17 -0
  50. package/dist/coding/registry/pnpm-lockfile.js +189 -0
  51. package/dist/coding/registry/pypi-plan.d.ts +50 -0
  52. package/dist/coding/registry/pypi-plan.js +406 -0
  53. package/dist/coding/registry/pypi-requirements.d.ts +58 -0
  54. package/dist/coding/registry/pypi-requirements.js +155 -0
  55. package/dist/coding/registry/pypi.d.ts +3 -27
  56. package/dist/coding/registry/pypi.js +40 -154
  57. package/dist/coding/registry/refusal-hints.d.ts +20 -0
  58. package/dist/coding/registry/refusal-hints.js +61 -0
  59. package/dist/coding/registry/refusal-wording.d.ts +11 -0
  60. package/dist/coding/registry/refusal-wording.js +56 -0
  61. package/dist/coding/registry/report.d.ts +70 -8
  62. package/dist/coding/registry/report.js +112 -5
  63. package/dist/coding/registry/types.d.ts +58 -8
  64. package/dist/coding/registry/yarn-lockfile.d.ts +30 -0
  65. package/dist/coding/registry/yarn-lockfile.js +367 -0
  66. package/dist/coding/services/catalog.d.ts +37 -351
  67. package/dist/coding/transcript/claude-code.d.ts +13 -0
  68. package/dist/coding/transcript/claude-code.js +273 -0
  69. package/dist/coding/transcript/download-protocol.d.ts +30 -0
  70. package/dist/coding/transcript/download-protocol.js +18 -0
  71. package/dist/coding/transcript/format.d.ts +20 -0
  72. package/dist/coding/transcript/format.js +32 -0
  73. package/dist/coding/transcript/recorder.d.ts +52 -0
  74. package/dist/coding/transcript/recorder.js +225 -0
  75. package/dist/coding/transcript/resume/checkout.d.ts +31 -0
  76. package/dist/coding/transcript/resume/checkout.js +203 -0
  77. package/dist/coding/transcript/resume/command.d.ts +17 -0
  78. package/dist/coding/transcript/resume/command.js +176 -0
  79. package/dist/coding/transcript/resume/download.d.ts +20 -0
  80. package/dist/coding/transcript/resume/download.js +153 -0
  81. package/dist/coding/transcript/resume/launch.d.ts +38 -0
  82. package/dist/coding/transcript/resume/launch.js +128 -0
  83. package/dist/coding/transcript/resume/session-file.d.ts +13 -0
  84. package/dist/coding/transcript/resume/session-file.js +79 -0
  85. package/dist/coding/transcript/resume/stand-in.d.ts +11 -0
  86. package/dist/coding/transcript/resume/stand-in.js +49 -0
  87. package/dist/coding-worker/artifact.d.ts +8 -3
  88. package/dist/coding-worker/artifact.js +3 -1
  89. package/dist/coding-worker/debug-trace.d.ts +9 -6
  90. package/dist/coding-worker/debug-trace.js +16 -19
  91. package/dist/coding-worker/dependency-cache.d.mts +229 -0
  92. package/dist/coding-worker/dependency-cache.mjs +2123 -0
  93. package/dist/coding-worker/driver.d.ts +4 -3
  94. package/dist/coding-worker/driver.js +124 -39
  95. package/dist/coding-worker/errors.d.ts +1 -0
  96. package/dist/coding-worker/errors.js +32 -0
  97. package/dist/coding-worker/main.js +5 -1
  98. package/dist/coding-worker/mcp-config.d.ts +27 -0
  99. package/dist/coding-worker/mcp-config.js +32 -0
  100. package/dist/coding-worker/sdk.d.ts +36 -0
  101. package/dist/coding-worker/sdk.js +28 -1
  102. package/dist/coding-worker/task-note.d.ts +11 -0
  103. package/dist/coding-worker/task-note.js +13 -0
  104. package/dist/coding-worker/types.d.ts +15 -0
  105. package/dist/config/dependency-cache.d.ts +23 -0
  106. package/dist/config/dependency-cache.js +32 -0
  107. package/dist/config/mcp-call-limit.d.ts +8 -0
  108. package/dist/config/mcp-call-limit.js +18 -0
  109. package/dist/config/mcp-servers.d.ts +8 -0
  110. package/dist/config/mcp-servers.js +12 -0
  111. package/dist/config/providers.d.ts +12 -3
  112. package/dist/config/providers.js +55 -5
  113. package/dist/config/test-simulators.d.ts +92 -0
  114. package/dist/config/test-simulators.js +333 -0
  115. package/dist/config/tool-timeout.d.ts +1 -0
  116. package/dist/config/tool-timeout.js +18 -0
  117. package/dist/core/async-context.d.ts +2 -0
  118. package/dist/core/async-context.js +12 -0
  119. package/dist/core/budget-events.d.ts +108 -0
  120. package/dist/core/budget-events.js +346 -0
  121. package/dist/core/budget-groups.d.ts +50 -1
  122. package/dist/core/budget-groups.js +236 -27
  123. package/dist/core/budget-stopped-head.d.ts +46 -0
  124. package/dist/core/budget-stopped-head.js +81 -0
  125. package/dist/core/budget-topup.d.ts +51 -0
  126. package/dist/core/budget-topup.js +156 -0
  127. package/dist/core/budget-wording.d.ts +16 -2
  128. package/dist/core/budget-wording.js +40 -2
  129. package/dist/core/coding-mcp.d.ts +36 -0
  130. package/dist/core/coding-mcp.js +253 -0
  131. package/dist/core/coding-queue.d.ts +2 -1
  132. package/dist/core/coding-queue.js +7 -0
  133. package/dist/core/coding-repository.d.ts +46 -0
  134. package/dist/core/coding-repository.js +92 -0
  135. package/dist/core/cron.d.ts +19 -1
  136. package/dist/core/cron.js +17 -0
  137. package/dist/core/datastores.js +1 -1
  138. package/dist/core/deferred-coding.d.ts +14 -0
  139. package/dist/core/deferred-coding.js +62 -0
  140. package/dist/core/delegation-child.d.ts +25 -0
  141. package/dist/core/delegation-child.js +37 -0
  142. package/dist/core/delegation-slots.d.ts +27 -0
  143. package/dist/core/delegation-slots.js +44 -0
  144. package/dist/core/dispatch.d.ts +48 -2
  145. package/dist/core/dispatch.js +166 -66
  146. package/dist/core/engine-native.js +1 -1
  147. package/dist/core/error-code.d.ts +38 -0
  148. package/dist/core/error-code.js +169 -0
  149. package/dist/core/grants.d.ts +46 -8
  150. package/dist/core/grants.js +99 -8
  151. package/dist/core/host-events.d.ts +18 -2
  152. package/dist/core/host-events.js +291 -27
  153. package/dist/core/host-status.d.ts +85 -3
  154. package/dist/core/host-status.js +300 -22
  155. package/dist/core/issue-bridge.d.ts +50 -6
  156. package/dist/core/issue-bridge.js +124 -33
  157. package/dist/core/issue-events.d.ts +1 -1
  158. package/dist/core/issue-events.js +4 -10
  159. package/dist/core/issue-status.d.ts +1 -1
  160. package/dist/core/issue-status.js +58 -29
  161. package/dist/core/logger.d.ts +5 -0
  162. package/dist/core/logger.js +14 -1
  163. package/dist/core/lost-run-children.d.ts +6 -0
  164. package/dist/core/lost-run-children.js +32 -0
  165. package/dist/core/mark-ready.d.ts +34 -0
  166. package/dist/core/mark-ready.js +152 -0
  167. package/dist/core/markdown-code.d.ts +8 -0
  168. package/dist/core/markdown-code.js +107 -0
  169. package/dist/core/mcp-client/client.d.ts +47 -0
  170. package/dist/core/mcp-client/client.js +141 -0
  171. package/dist/core/mcp-client/jsonrpc.d.ts +15 -0
  172. package/dist/core/mcp-client/jsonrpc.js +54 -0
  173. package/dist/core/mcp-client/results.d.ts +13 -0
  174. package/dist/core/mcp-client/results.js +42 -0
  175. package/dist/core/mcp-servers.d.ts +90 -0
  176. package/dist/core/mcp-servers.js +230 -0
  177. package/dist/core/mcp-tools.d.ts +108 -0
  178. package/dist/core/mcp-tools.js +287 -0
  179. package/dist/core/memory-tools.js +7 -0
  180. package/dist/core/merge-order-check.d.ts +2 -1
  181. package/dist/core/merge-order-check.js +44 -18
  182. package/dist/core/notification-dispatcher.js +2 -1
  183. package/dist/core/notification-templates.d.ts +1 -7
  184. package/dist/core/notification-templates.js +36 -2
  185. package/dist/core/pull-request-state-sync.js +2 -2
  186. package/dist/core/reconciler.d.ts +4 -3
  187. package/dist/core/reconciler.js +8 -1
  188. package/dist/core/related-pull-requests.d.ts +11 -3
  189. package/dist/core/related-pull-requests.js +49 -20
  190. package/dist/core/reply-parts.d.ts +21 -0
  191. package/dist/core/reply-parts.js +73 -0
  192. package/dist/core/review-fix.d.ts +1 -1
  193. package/dist/core/review-fix.js +4 -3
  194. package/dist/core/review-host-checks.d.ts +1 -1
  195. package/dist/core/review-host-tools.d.ts +3 -0
  196. package/dist/core/review-host-tools.js +102 -14
  197. package/dist/core/review-reads.d.ts +55 -0
  198. package/dist/core/review-reads.js +233 -0
  199. package/dist/core/run-status.d.ts +12 -0
  200. package/dist/core/run-status.js +12 -0
  201. package/dist/core/runner.d.ts +145 -49
  202. package/dist/core/runner.js +719 -216
  203. package/dist/core/schedule-start.d.ts +12 -0
  204. package/dist/core/schedule-start.js +14 -0
  205. package/dist/core/secret-broker-config.d.ts +12 -74
  206. package/dist/core/secret-broker-config.js +1 -1
  207. package/dist/core/secret-guard.d.ts +49 -0
  208. package/dist/core/secret-guard.js +119 -0
  209. package/dist/core/secret-guarded-stores.d.ts +12 -0
  210. package/dist/core/secret-guarded-stores.js +41 -0
  211. package/dist/core/secret-spans.d.ts +50 -0
  212. package/dist/core/secret-spans.js +94 -0
  213. package/dist/core/secrets.d.ts +11 -1
  214. package/dist/core/secrets.js +27 -1
  215. package/dist/core/serializable-retry.d.ts +18 -0
  216. package/dist/core/serializable-retry.js +43 -0
  217. package/dist/core/stop-run.d.ts +46 -0
  218. package/dist/core/stop-run.js +61 -0
  219. package/dist/core/tool-admin.d.ts +5 -1
  220. package/dist/core/tool-admin.js +7 -2
  221. package/dist/core/tool-names.d.ts +13 -0
  222. package/dist/core/tool-names.js +20 -0
  223. package/dist/core/webhooks.d.ts +4 -0
  224. package/dist/core/webhooks.js +68 -49
  225. package/dist/core/workflow-events.d.ts +14 -2
  226. package/dist/core/workflow-events.js +4 -0
  227. package/dist/core/workflow-run-events.d.ts +5 -3
  228. package/dist/core/workflow-run-events.js +45 -9
  229. package/dist/core/zod-json-schema.d.ts +4 -0
  230. package/dist/core/zod-json-schema.js +39 -0
  231. package/dist/core/zod3-window.d.ts +35 -0
  232. package/dist/core/zod3-window.js +124 -0
  233. package/dist/generated/prisma/browser.d.ts +65 -3
  234. package/dist/generated/prisma/client.d.ts +65 -3
  235. package/dist/generated/prisma/commonInputTypes.d.ts +266 -106
  236. package/dist/generated/prisma/enums.d.ts +10 -0
  237. package/dist/generated/prisma/enums.js +8 -0
  238. package/dist/generated/prisma/internal/class.d.ts +110 -0
  239. package/dist/generated/prisma/internal/class.js +4 -4
  240. package/dist/generated/prisma/internal/prismaNamespace.d.ts +957 -9
  241. package/dist/generated/prisma/internal/prismaNamespace.js +166 -2
  242. package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +174 -0
  243. package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +166 -2
  244. package/dist/generated/prisma/models/Agent.d.ts +377 -8
  245. package/dist/generated/prisma/models/AgentMcpServer.d.ts +1412 -0
  246. package/dist/generated/prisma/models/AgentMcpServer.js +1 -0
  247. package/dist/generated/prisma/models/AgentRepository.d.ts +81 -1
  248. package/dist/generated/prisma/models/AuthUser.d.ts +1 -1
  249. package/dist/generated/prisma/models/CodingAgentProfile.d.ts +228 -7
  250. package/dist/generated/prisma/models/CodingProxyRequest.d.ts +207 -3
  251. package/dist/generated/prisma/models/CodingProxySession.d.ts +232 -2
  252. package/dist/generated/prisma/models/CodingRun.d.ts +1712 -1
  253. package/dist/generated/prisma/models/DependencySnapshot.d.ts +1668 -0
  254. package/dist/generated/prisma/models/DependencySnapshot.js +1 -0
  255. package/dist/generated/prisma/models/HostProvider.d.ts +2176 -0
  256. package/dist/generated/prisma/models/HostProvider.js +1 -0
  257. package/dist/generated/prisma/models/HostProviderCredential.d.ts +1285 -0
  258. package/dist/generated/prisma/models/HostProviderCredential.js +1 -0
  259. package/dist/generated/prisma/models/HostProviderOperation.d.ts +1470 -0
  260. package/dist/generated/prisma/models/HostProviderOperation.js +1 -0
  261. package/dist/generated/prisma/models/HostProviderTrustedAccount.d.ts +1145 -0
  262. package/dist/generated/prisma/models/HostProviderTrustedAccount.js +1 -0
  263. package/dist/generated/prisma/models/IssuePullRequest.d.ts +6 -2
  264. package/dist/generated/prisma/models/LocalReview.d.ts +40 -1
  265. package/dist/generated/prisma/models/McpServer.d.ts +1500 -0
  266. package/dist/generated/prisma/models/McpServer.js +1 -0
  267. package/dist/generated/prisma/models/NativeGatewayCall.d.ts +77 -1
  268. package/dist/generated/prisma/models/NativeGatewaySession.d.ts +35 -1
  269. package/dist/generated/prisma/models/Principal.d.ts +167 -0
  270. package/dist/generated/prisma/models/RegistryAllowance.d.ts +41 -1
  271. package/dist/generated/prisma/models/RegistryApprovedVersion.d.ts +75 -1
  272. package/dist/generated/prisma/models/RegistryAuditRecord.d.ts +1364 -0
  273. package/dist/generated/prisma/models/RegistryAuditRecord.js +1 -0
  274. package/dist/generated/prisma/models/ResourceGrant.d.ts +1 -1
  275. package/dist/generated/prisma/models/Run.d.ts +738 -2
  276. package/dist/generated/prisma/models/RunBudgetEvent.d.ts +1211 -0
  277. package/dist/generated/prisma/models/RunBudgetEvent.js +1 -0
  278. package/dist/generated/prisma/models/RunTranscript.d.ts +1339 -0
  279. package/dist/generated/prisma/models/RunTranscript.js +1 -0
  280. package/dist/generated/prisma/models/Secret.d.ts +387 -0
  281. package/dist/generated/prisma/models/Tool.d.ts +223 -1
  282. package/dist/generated/prisma/models.d.ts +10 -0
  283. package/dist/help/search.js +12 -3
  284. package/dist/help-index.json +2033 -110
  285. package/dist/import/create.js +48 -4
  286. package/dist/import/neutral-schema.d.ts +51 -281
  287. package/dist/import/neutral-schema.js +7 -4
  288. package/dist/knowledge/check.d.ts +1 -1
  289. package/dist/knowledge/cli.d.ts +11 -1
  290. package/dist/knowledge/cli.js +37 -4
  291. package/dist/knowledge/concept.d.ts +3 -19
  292. package/dist/knowledge/location.d.ts +31 -0
  293. package/dist/knowledge/location.js +78 -0
  294. package/dist/mcp/auth/access.d.ts +10 -2
  295. package/dist/mcp/auth/access.js +15 -1
  296. package/dist/mcp/auth/grants-cli.d.ts +6 -4
  297. package/dist/mcp/auth/grants-cli.js +42 -3
  298. package/dist/mcp/auth/ownership.d.ts +7 -7
  299. package/dist/mcp/auth/resource-server.d.ts +3 -1
  300. package/dist/mcp/auth/resource-server.js +17 -2
  301. package/dist/mcp/auth/self-hosted/credentials.d.ts +3 -3
  302. package/dist/mcp/auth/self-hosted/session.d.ts +2 -2
  303. package/dist/mcp/context.d.ts +3 -0
  304. package/dist/mcp/host-events/github-ingress.d.ts +2 -0
  305. package/dist/mcp/host-events/github-ingress.js +2 -1
  306. package/dist/mcp/index.d.ts +6 -0
  307. package/dist/mcp/index.js +69 -10
  308. package/dist/mcp/server.d.ts +13 -0
  309. package/dist/mcp/server.js +33 -14
  310. package/dist/mcp/tools/agents.d.ts +4 -0
  311. package/dist/mcp/tools/agents.js +295 -28
  312. package/dist/mcp/tools/datastore.js +17 -8
  313. package/dist/mcp/tools/grants.js +73 -29
  314. package/dist/mcp/tools/host-providers.d.ts +2 -0
  315. package/dist/mcp/tools/host-providers.js +215 -0
  316. package/dist/mcp/tools/mcp-servers.d.ts +26 -0
  317. package/dist/mcp/tools/mcp-servers.js +481 -0
  318. package/dist/mcp/tools/memory.js +11 -1
  319. package/dist/mcp/tools/notification-channels.js +2 -2
  320. package/dist/mcp/tools/packages.d.ts +2 -0
  321. package/dist/mcp/tools/packages.js +195 -0
  322. package/dist/mcp/tools/repositories.js +65 -12
  323. package/dist/mcp/tools/run-access.d.ts +16 -0
  324. package/dist/mcp/tools/run-access.js +25 -0
  325. package/dist/mcp/tools/run-transcript-download.d.ts +30 -0
  326. package/dist/mcp/tools/run-transcript-download.js +129 -0
  327. package/dist/mcp/tools/run-transcript.d.ts +19 -0
  328. package/dist/mcp/tools/run-transcript.js +70 -0
  329. package/dist/mcp/tools/runs.js +209 -27
  330. package/dist/mcp/tools/scheduling.js +3 -1
  331. package/dist/mcp/tools/secret-elicitation-form.js +5 -0
  332. package/dist/mcp/tools/secret-elicitation-server.d.ts +6 -0
  333. package/dist/mcp/tools/secret-elicitation-server.js +10 -61
  334. package/dist/mcp/tools/secret-elicitation.d.ts +2 -0
  335. package/dist/mcp/tools/secret-elicitation.js +25 -2
  336. package/dist/mcp/tools/secrets.js +40 -6
  337. package/dist/mcp/tools/stop-run.d.ts +2 -0
  338. package/dist/mcp/tools/stop-run.js +82 -0
  339. package/dist/mcp/tools/subagents.js +2 -2
  340. package/dist/mcp/tools/tools.d.ts +7 -5
  341. package/dist/mcp/tools/tools.js +64 -16
  342. package/dist/mcp/tools/trigger.js +28 -6
  343. package/dist/mcp/transport/http-limits.d.ts +2 -0
  344. package/dist/mcp/transport/http-limits.js +6 -2
  345. package/dist/mcp/transport/stdio-link-host.d.ts +20 -0
  346. package/dist/mcp/transport/stdio-link-host.js +67 -0
  347. package/dist/mcp/transport/streamable-http.d.ts +13 -0
  348. package/dist/mcp/transport/streamable-http.js +41 -1
  349. package/dist/mcp/webhooks/ingress.js +10 -0
  350. package/dist/native-worker/docker-launcher.d.ts +38 -2
  351. package/dist/native-worker/docker-launcher.js +65 -5
  352. package/dist/native-worker/gateway-server.d.ts +55 -3
  353. package/dist/native-worker/gateway-server.js +152 -34
  354. package/dist/native-worker/gateway.d.ts +29 -1
  355. package/dist/native-worker/gateway.js +74 -4
  356. package/dist/native-worker/http-server.d.ts +7 -1
  357. package/dist/native-worker/http-server.js +62 -7
  358. package/dist/native-worker/http-transport.js +1 -1
  359. package/dist/native-worker/kubernetes-launcher.d.ts +7 -3
  360. package/dist/native-worker/kubernetes-launcher.js +43 -3
  361. package/dist/native-worker/launch.d.ts +18 -1
  362. package/dist/native-worker/launch.js +6 -1
  363. package/dist/native-worker/ledger.d.ts +24 -4
  364. package/dist/native-worker/ledger.js +62 -8
  365. package/dist/native-worker/loopback.js +3 -8
  366. package/dist/native-worker/main.d.ts +2 -1
  367. package/dist/native-worker/main.js +14 -3
  368. package/dist/native-worker/protocol.d.ts +130 -577
  369. package/dist/native-worker/protocol.js +51 -2
  370. package/dist/native-worker/sandbox-executor.d.ts +17 -2
  371. package/dist/native-worker/sandbox-executor.js +78 -4
  372. package/dist/native-worker/stderr-redaction.d.ts +77 -0
  373. package/dist/native-worker/stderr-redaction.js +237 -0
  374. package/dist/native-worker/stdio.d.ts +1 -1
  375. package/dist/native-worker/stdio.js +6 -5
  376. package/dist/native-worker/warm-pool.d.ts +2 -2
  377. package/dist/native-worker/warm-pool.js +4 -4
  378. package/dist/native-worker/worker.js +28 -2
  379. package/dist/observability/metrics.js +6 -1
  380. package/dist/providers/auth/self-hosted.d.ts +1 -1
  381. package/dist/providers/coding-proxy/capability-hash.d.ts +2 -0
  382. package/dist/providers/coding-proxy/capability-hash.js +5 -0
  383. package/dist/providers/coding-proxy/dependency-cache/eviction.d.ts +29 -0
  384. package/dist/providers/coding-proxy/dependency-cache/eviction.js +87 -0
  385. package/dist/providers/coding-proxy/dependency-cache/key.d.ts +33 -0
  386. package/dist/providers/coding-proxy/dependency-cache/key.js +86 -0
  387. package/dist/providers/coding-proxy/dependency-cache/model-request-seal.d.ts +18 -0
  388. package/dist/providers/coding-proxy/dependency-cache/model-request-seal.js +40 -0
  389. package/dist/providers/coding-proxy/dependency-cache/prisma-store.d.ts +25 -0
  390. package/dist/providers/coding-proxy/dependency-cache/prisma-store.js +131 -0
  391. package/dist/providers/coding-proxy/dependency-cache/service.d.ts +70 -0
  392. package/dist/providers/coding-proxy/dependency-cache/service.js +409 -0
  393. package/dist/providers/coding-proxy/dependency-cache/store.d.ts +85 -0
  394. package/dist/providers/coding-proxy/dependency-cache/store.js +95 -0
  395. package/dist/providers/coding-proxy/hold.d.ts +32 -0
  396. package/dist/providers/coding-proxy/hold.js +86 -0
  397. package/dist/providers/coding-proxy/interrupted.d.ts +70 -0
  398. package/dist/providers/coding-proxy/interrupted.js +104 -0
  399. package/dist/providers/coding-proxy/mcp-route.d.ts +34 -0
  400. package/dist/providers/coding-proxy/mcp-route.js +166 -0
  401. package/dist/providers/coding-proxy/memory-ledger.d.ts +17 -2
  402. package/dist/providers/coding-proxy/memory-ledger.js +99 -8
  403. package/dist/providers/coding-proxy/metering.d.ts +16 -0
  404. package/dist/providers/coding-proxy/metering.js +27 -4
  405. package/dist/providers/coding-proxy/prisma-ledger.d.ts +16 -2
  406. package/dist/providers/coding-proxy/prisma-ledger.js +209 -69
  407. package/dist/providers/coding-proxy/proxy.d.ts +21 -2
  408. package/dist/providers/coding-proxy/proxy.js +300 -48
  409. package/dist/providers/coding-proxy/registry/audit.d.ts +53 -10
  410. package/dist/providers/coding-proxy/registry/audit.js +94 -17
  411. package/dist/providers/coding-proxy/registry/lockfile-parse-worker.d.ts +36 -0
  412. package/dist/providers/coding-proxy/registry/lockfile-parse-worker.js +67 -0
  413. package/dist/providers/coding-proxy/registry/lockfile-parse.d.ts +16 -0
  414. package/dist/providers/coding-proxy/registry/lockfile-parse.js +110 -0
  415. package/dist/providers/coding-proxy/registry/plan.d.ts +9 -0
  416. package/dist/providers/coding-proxy/registry/plan.js +201 -48
  417. package/dist/providers/coding-proxy/registry/prisma-store.d.ts +11 -5
  418. package/dist/providers/coding-proxy/registry/prisma-store.js +120 -17
  419. package/dist/providers/coding-proxy/registry/service.d.ts +97 -16
  420. package/dist/providers/coding-proxy/registry/service.js +579 -112
  421. package/dist/providers/coding-proxy/registry/store.d.ts +84 -9
  422. package/dist/providers/coding-proxy/registry/store.js +54 -1
  423. package/dist/providers/coding-proxy/runtime.d.ts +10 -0
  424. package/dist/providers/coding-proxy/runtime.js +109 -16
  425. package/dist/providers/coding-proxy/server.d.ts +9 -1
  426. package/dist/providers/coding-proxy/server.js +55 -1
  427. package/dist/providers/coding-proxy/types.d.ts +78 -1
  428. package/dist/providers/datastore/types.d.ts +5 -0
  429. package/dist/providers/engine/types.d.ts +17 -2
  430. package/dist/providers/engine/types.js +17 -0
  431. package/dist/providers/executor/composition.d.ts +10 -3
  432. package/dist/providers/executor/composition.js +52 -7
  433. package/dist/providers/executor/container.d.ts +394 -9
  434. package/dist/providers/executor/container.js +1210 -96
  435. package/dist/providers/executor/dbos-status.d.ts +31 -0
  436. package/dist/providers/executor/dbos-status.js +64 -0
  437. package/dist/providers/executor/dbos.d.ts +50 -1
  438. package/dist/providers/executor/dbos.js +207 -20
  439. package/dist/providers/executor/deferred.d.ts +12 -24
  440. package/dist/providers/executor/deferred.js +10 -29
  441. package/dist/providers/executor/in-process.d.ts +9 -1
  442. package/dist/providers/executor/in-process.js +14 -4
  443. package/dist/providers/executor/linked-issue-reader.d.ts +16 -0
  444. package/dist/providers/executor/linked-issue-reader.js +30 -0
  445. package/dist/providers/executor/routing.d.ts +2 -0
  446. package/dist/providers/executor/routing.js +4 -0
  447. package/dist/providers/executor/types.d.ts +13 -0
  448. package/dist/providers/host-tools/invoke.d.ts +37 -0
  449. package/dist/providers/host-tools/invoke.js +117 -0
  450. package/dist/providers/host-tools/operations.d.ts +65 -0
  451. package/dist/providers/host-tools/operations.js +149 -0
  452. package/dist/providers/host-tools/registry.d.ts +79 -0
  453. package/dist/providers/host-tools/registry.js +362 -0
  454. package/dist/providers/host-tools/request-guard.d.ts +17 -0
  455. package/dist/providers/host-tools/request-guard.js +99 -0
  456. package/dist/providers/host-tools/self-test.d.ts +64 -0
  457. package/dist/providers/host-tools/self-test.js +142 -0
  458. package/dist/providers/index.d.ts +2 -1
  459. package/dist/providers/issue-tracker/types.d.ts +17 -0
  460. package/dist/providers/issue-tracker/types.js +39 -1
  461. package/dist/providers/jobs/claude-tool-setup.d.ts +4 -0
  462. package/dist/providers/jobs/claude-tool-setup.js +5 -2
  463. package/dist/providers/jobs/docker-isolation.d.ts +10 -2
  464. package/dist/providers/jobs/docker-isolation.js +47 -8
  465. package/dist/providers/jobs/docker.d.ts +9 -0
  466. package/dist/providers/jobs/docker.js +60 -11
  467. package/dist/providers/jobs/fake-kubernetes-api.d.ts +2 -0
  468. package/dist/providers/jobs/fake-kubernetes-api.js +3 -0
  469. package/dist/providers/jobs/kubernetes-api.d.ts +8 -0
  470. package/dist/providers/jobs/kubernetes-api.js +10 -0
  471. package/dist/providers/jobs/kubernetes-client.js +10 -1
  472. package/dist/providers/jobs/kubernetes-isolation.d.ts +5 -1
  473. package/dist/providers/jobs/kubernetes-isolation.js +32 -3
  474. package/dist/providers/jobs/kubernetes.d.ts +11 -1
  475. package/dist/providers/jobs/kubernetes.js +111 -17
  476. package/dist/providers/jobs/types.d.ts +39 -0
  477. package/dist/providers/jobs/types.js +13 -1
  478. package/dist/providers/llm/anthropic.js +5 -1
  479. package/dist/providers/llm/bedrock.d.ts +0 -12
  480. package/dist/providers/llm/bedrock.js +4 -0
  481. package/dist/providers/llm/claude-messages.d.ts +3 -1
  482. package/dist/providers/llm/claude-messages.js +4 -1
  483. package/dist/providers/llm/claude-provider.d.ts +2 -2
  484. package/dist/providers/llm/claude-provider.js +2 -2
  485. package/dist/providers/llm/openai.d.ts +2 -2
  486. package/dist/providers/llm/openai.js +6 -2
  487. package/dist/providers/llm/routing.d.ts +2 -2
  488. package/dist/providers/llm/routing.js +2 -2
  489. package/dist/providers/llm/types.d.ts +12 -2
  490. package/dist/providers/review-host/github-events.d.ts +9 -1
  491. package/dist/providers/review-host/github-events.js +34 -12
  492. package/dist/providers/review-host/github.d.ts +29 -2
  493. package/dist/providers/review-host/github.js +224 -29
  494. package/dist/providers/review-host/local.d.ts +8 -4
  495. package/dist/providers/review-host/local.js +49 -31
  496. package/dist/providers/review-host/patch-pages.d.ts +41 -0
  497. package/dist/providers/review-host/patch-pages.js +176 -0
  498. package/dist/providers/review-host/review-format.d.ts +19 -1
  499. package/dist/providers/review-host/review-format.js +38 -7
  500. package/dist/providers/review-host/types.d.ts +140 -6
  501. package/dist/providers/review-host/types.js +9 -1
  502. package/dist/providers/storage/gcs.d.ts +63 -0
  503. package/dist/providers/storage/gcs.js +69 -0
  504. package/dist/providers/storage/index.d.ts +15 -0
  505. package/dist/providers/storage/index.js +14 -0
  506. package/dist/providers/storage/local.d.ts +24 -0
  507. package/dist/providers/storage/local.js +92 -0
  508. package/dist/providers/storage/meter.d.ts +14 -0
  509. package/dist/providers/storage/meter.js +34 -0
  510. package/dist/providers/storage/s3.d.ts +41 -0
  511. package/dist/providers/storage/s3.js +107 -0
  512. package/dist/providers/storage/types.d.ts +37 -3
  513. package/dist/providers/storage/types.js +21 -4
  514. package/dist/providers/vcs/git.d.ts +39 -4
  515. package/dist/providers/vcs/git.js +339 -26
  516. package/dist/providers/vcs/github-remote.d.ts +26 -3
  517. package/dist/providers/vcs/github-remote.js +124 -14
  518. package/dist/providers/vcs/github.d.ts +183 -44
  519. package/dist/providers/vcs/github.js +455 -56
  520. package/dist/providers/vcs/index.d.ts +1 -1
  521. package/dist/providers/vcs/index.js +9 -2
  522. package/dist/providers/vcs/pr-description.d.ts +127 -0
  523. package/dist/providers/vcs/pr-description.js +270 -0
  524. package/dist/providers/vcs/remote.d.ts +37 -1
  525. package/dist/providers/vcs/remote.js +7 -1
  526. package/dist/providers/vcs/routing.d.ts +16 -8
  527. package/dist/providers/vcs/routing.js +27 -6
  528. package/dist/providers/vcs/types.d.ts +150 -5
  529. package/dist/quickstart/coding-seed.d.ts +14 -3
  530. package/dist/quickstart/coding-seed.js +213 -4
  531. package/dist/quickstart/index.d.ts +5 -0
  532. package/dist/quickstart/index.js +21 -0
  533. package/dist/quickstart/reviewer-prompt.d.ts +1 -1
  534. package/dist/quickstart/reviewer-prompt.js +6 -6
  535. package/dist/quickstart-images.json +1 -1
  536. package/dist/sandbox/eval-core.d.ts +12 -2
  537. package/dist/sandbox/eval-core.js +20 -4
  538. package/dist/sandbox/generated/zod.bundle.js +62 -1
  539. package/dist/sandbox/generated/zod3.bundle.js +5 -0
  540. package/dist/sandbox/host-functions.d.ts +5 -0
  541. package/dist/sandbox/host-functions.js +13 -13
  542. package/dist/sandbox/limits.d.ts +4 -1
  543. package/dist/sandbox/limits.js +4 -1
  544. package/dist/sandbox/run-in-sandbox.d.ts +6 -0
  545. package/dist/sandbox/run-in-sandbox.js +14 -2
  546. package/dist/sandbox/safe-fetch.d.ts +2 -0
  547. package/dist/sandbox/safe-fetch.js +1 -1
  548. package/dist/sandbox/secret-broker.d.ts +1 -0
  549. package/dist/sandbox/secret-broker.js +4 -5
  550. package/dist/sandbox/tool-capabilities.d.ts +10 -30
  551. package/dist/sandbox/tool-timeout.d.ts +32 -0
  552. package/dist/sandbox/tool-timeout.js +52 -0
  553. package/dist/sandbox/user-tool.d.ts +8 -1
  554. package/dist/sandbox/user-tool.js +9 -3
  555. package/dist/sandbox/zod-params.d.ts +37 -5
  556. package/dist/sandbox/zod-params.js +181 -26
  557. package/dist/serve.js +8 -1
  558. package/dist/viewer/api-schema.d.ts +349 -2627
  559. package/dist/viewer/api-schema.js +7 -0
  560. package/dist/viewer/build-schemas.js +6 -2
  561. package/dist/viewer/graph.js +2 -1
  562. package/dist/viewer/openapi.js +2 -4
  563. package/dist/wardby-bin.js +15 -0
  564. package/docs/README.md +11 -1
  565. package/docs/agent-recipes.md +95 -24
  566. package/docs/architecture-runtime.md +1 -1
  567. package/docs/claude-code-plugin.md +164 -0
  568. package/docs/code-review-agents.md +557 -41
  569. package/docs/coding-agent-setup.md +566 -8
  570. package/docs/coding-packages.md +1033 -90
  571. package/docs/coding-services.md +27 -12
  572. package/docs/coding-worker-byo-images.md +24 -2
  573. package/docs/coding-worker-isolation.md +183 -37
  574. package/docs/debugging-agent-runs.md +242 -0
  575. package/docs/getting-started-gke.md +129 -141
  576. package/docs/getting-started-identity-provider.md +53 -38
  577. package/docs/getting-started.md +17 -0
  578. package/docs/host-providers.md +294 -0
  579. package/docs/jira-agents.md +17 -8
  580. package/docs/knowledge/blob-not-found-semantics.md +41 -0
  581. package/docs/knowledge/bounded-file-descriptor.md +52 -0
  582. package/docs/knowledge/delegation-admission-slots.md +52 -0
  583. package/docs/knowledge/http-dispatcher-bootstrap.md +61 -0
  584. package/docs/knowledge/import-rename-target.md +52 -0
  585. package/docs/knowledge/index.md +57 -0
  586. package/docs/knowledge/log.md +9 -0
  587. package/docs/knowledge/mcp-cancelled-task-precedence.md +41 -0
  588. package/docs/knowledge/mcp-http-prompt-discovery.md +41 -0
  589. package/docs/knowledge/mcp-schema-module-boundary.md +41 -0
  590. package/docs/knowledge/nullable-tool-uniqueness.md +52 -0
  591. package/docs/knowledge/overview-cli.md +74 -0
  592. package/docs/knowledge/overview-coding-proxy.md +72 -0
  593. package/docs/knowledge/overview-coding.md +72 -0
  594. package/docs/knowledge/overview-config.md +60 -0
  595. package/docs/knowledge/overview-core.md +72 -0
  596. package/docs/knowledge/overview-deploy.md +83 -0
  597. package/docs/knowledge/overview-mcp.md +61 -0
  598. package/docs/knowledge/overview-prisma.md +72 -0
  599. package/docs/knowledge/overview-providers.md +89 -0
  600. package/docs/knowledge/overview-sandbox.md +83 -0
  601. package/docs/knowledge/overview-surfaces.md +83 -0
  602. package/docs/knowledge/private-datastore-shared-boundary.md +54 -0
  603. package/docs/knowledge/proxy-settlement-projections.md +41 -0
  604. package/docs/knowledge/run-pricing-first-writer.md +43 -0
  605. package/docs/knowledge/schedule-claim-transaction.md +41 -0
  606. package/docs/knowledge/secret-entry-replica-contract.md +52 -0
  607. package/docs/knowledge/terminal-run-first-writer.md +41 -0
  608. package/docs/knowledge/transactional-agent-authorization.md +52 -0
  609. package/docs/knowledge/viewer-notify-write-isolation.md +30 -0
  610. package/docs/knowledge/warm-input-publication.md +30 -0
  611. package/docs/knowledge/workspace-staging-failure.md +54 -0
  612. package/docs/knowledge.md +54 -14
  613. package/docs/mcp-servers.md +254 -0
  614. package/docs/native-sandbox.md +143 -31
  615. package/docs/observability.md +4 -0
  616. package/docs/security-deployment.md +139 -29
  617. package/docs/slack-notifications.md +35 -19
  618. package/docs/tool-secrets.md +45 -10
  619. package/docs/viewer-api.md +6 -0
  620. package/docs/viewer-api.openapi.yml +1 -1
  621. package/help/admin-viewer.md +28 -2
  622. package/help/agent-recipes.md +33 -2
  623. package/help/architecture-agent.md +11 -6
  624. package/help/brokered-secrets.md +3 -0
  625. package/help/build-claude-code-image.md +1 -1
  626. package/help/build-worker-image.md +3 -1
  627. package/help/builder-agent.md +19 -6
  628. package/help/claude-code-run-pane.md +40 -0
  629. package/help/code-review-agents.md +177 -6
  630. package/help/coding-packages.md +156 -6
  631. package/help/cost-attribution.md +9 -5
  632. package/help/creating-agents.md +14 -1
  633. package/help/dependency-cache.md +143 -0
  634. package/help/deploy-gke.md +15 -8
  635. package/help/errors/budget-exhausted.md +187 -0
  636. package/help/errors/budget-group-exhausted.md +5 -1
  637. package/help/errors/coding-mcp-pins-unavailable.md +35 -0
  638. package/help/errors/coding-stream-quota-exceeded.md +33 -0
  639. package/help/errors/coding-workspace-disk-exceeds-limit.md +39 -0
  640. package/help/errors/continuation-closed.md +9 -12
  641. package/help/errors/database-auth-invalid.md +1 -1
  642. package/help/errors/delegation-conflict.md +24 -0
  643. package/help/errors/file-list-truncated.md +45 -0
  644. package/help/errors/full-read-required.md +49 -0
  645. package/help/errors/github-account-not-allowed.md +4 -0
  646. package/help/errors/graph-incomplete.md +43 -0
  647. package/help/errors/graph-limit.md +43 -0
  648. package/help/errors/host-provider-error.md +40 -0
  649. package/help/errors/host-tool-failed.md +36 -0
  650. package/help/errors/mcp-call-limit.md +22 -0
  651. package/help/errors/mcp-call-timeout.md +22 -0
  652. package/help/errors/mcp-server-auth-failed.md +22 -0
  653. package/help/errors/mcp-server-credentials-unavailable.md +45 -0
  654. package/help/errors/mcp-server-error.md +28 -0
  655. package/help/errors/mcp-server-unreachable.md +22 -0
  656. package/help/errors/mcp-servers-off.md +21 -0
  657. package/help/errors/mcp-tool-not-allowed.md +26 -0
  658. package/help/errors/mcp-tool-removed.md +22 -0
  659. package/help/errors/mcp-unavailable.md +25 -0
  660. package/help/errors/merge-conflict.md +49 -0
  661. package/help/errors/native-sandbox-capacity.md +1 -1
  662. package/help/errors/native-sandbox-deadline-exceeded.md +1 -1
  663. package/help/errors/native-sandbox-docker-failed.md +1 -1
  664. package/help/errors/native-sandbox-gateway-error.md +20 -0
  665. package/help/errors/native-sandbox-gateway-unavailable.md +1 -1
  666. package/help/errors/native-sandbox-image-not-pinned.md +1 -1
  667. package/help/errors/native-sandbox-isolation-mismatch.md +1 -1
  668. package/help/errors/native-sandbox-launch-abandoned.md +21 -0
  669. package/help/errors/native-sandbox-network-unenforced.md +1 -1
  670. package/help/errors/native-sandbox-requires-catalog.md +1 -1
  671. package/help/errors/native-sandbox-unavailable.md +1 -1
  672. package/help/errors/native-sandbox-warm-delivery-failed.md +1 -1
  673. package/help/errors/native-sandbox-worker-exited.md +4 -3
  674. package/help/errors/native-sandbox-worker-lost.md +1 -1
  675. package/help/errors/native-sandbox-worker-unready.md +1 -1
  676. package/help/errors/package-not-allowed-pending.md +52 -0
  677. package/help/errors/package-not-allowed.md +51 -0
  678. package/help/errors/package-refusals.md +43 -0
  679. package/help/errors/patch-cursor-malformed.md +31 -0
  680. package/help/errors/repository-not-listed.md +36 -0
  681. package/help/errors/repository-required.md +36 -0
  682. package/help/errors/run-lost.md +39 -0
  683. package/help/errors/run-transcript-download.md +44 -0
  684. package/help/errors/secret-in-value.md +69 -0
  685. package/help/errors/target-merge.md +40 -0
  686. package/help/errors/tool-timeout.md +38 -0
  687. package/help/fix-merge-conflicts.md +73 -0
  688. package/help/github-app-setup.md +132 -0
  689. package/help/github.md +22 -0
  690. package/help/host-providers.md +40 -0
  691. package/help/identity-and-access.md +6 -1
  692. package/help/jira.md +23 -6
  693. package/help/knowledge.md +16 -7
  694. package/help/local-repositories.md +1 -1
  695. package/help/low-power-mode.md +7 -1
  696. package/help/mcp-servers.md +73 -0
  697. package/help/mcp.md +7 -2
  698. package/help/merge-order-check.md +5 -0
  699. package/help/native-capabilities.md +55 -1
  700. package/help/native-sandbox.md +16 -2
  701. package/help/operating-agents.md +21 -0
  702. package/help/package-audit-mode.md +91 -0
  703. package/help/related-pull-requests.md +17 -10
  704. package/help/repo-instructions-and-skills.md +3 -1
  705. package/help/resume-runs-locally.md +134 -0
  706. package/help/review-fix-rounds.md +33 -1
  707. package/help/sharing-agents.md +59 -0
  708. package/help/slack-notifications.md +19 -5
  709. package/help/status-comments.md +31 -0
  710. package/help/stop-run.md +58 -0
  711. package/help/troubleshooting/budgets.md +28 -0
  712. package/help/troubleshooting/coding-workers.md +86 -7
  713. package/help/troubleshooting/debugging-agent-runs.md +29 -0
  714. package/package.json +18 -10
  715. package/prisma/migrations/20261016000000_registry_approved_accepted_advisories/migration.sql +3 -0
  716. package/prisma/migrations/20261016000001_mark_ready_when_passing/migration.sql +3 -0
  717. package/prisma/migrations/20261017000000_debug_trace_max_mb/migration.sql +4 -0
  718. package/prisma/migrations/20261018000000_dependency_cache/migration.sql +53 -0
  719. package/prisma/migrations/20261019000000_claude_max_output_tokens/migration.sql +5 -0
  720. package/prisma/migrations/20261021000000_pr_description_hash/migration.sql +4 -0
  721. package/prisma/migrations/20261022000000_dependency_snapshot_validation_metadata/migration.sql +4 -0
  722. package/prisma/migrations/20261023000000_package_audit_mode/migration.sql +27 -0
  723. package/prisma/migrations/20261024000000_budget_events/migration.sql +26 -0
  724. package/prisma/migrations/20261025000000_cache_aware_holds/migration.sql +9 -0
  725. package/prisma/migrations/20261026000000_budget_overrun/migration.sql +4 -0
  726. package/prisma/migrations/20261027000000_coding_run_request/migration.sql +1 -0
  727. package/prisma/migrations/20261028000000_native_gateway_review_reads/migration.sql +6 -0
  728. package/prisma/migrations/20261029000000_lead_survives_deploy/migration.sql +6 -0
  729. package/prisma/migrations/20261030000000_local_review_covered_sha/migration.sql +2 -0
  730. package/prisma/migrations/20261031000000_coding_run_budget_limit/migration.sql +9 -0
  731. package/prisma/migrations/20261101000000_run_transcripts/migration.sql +22 -0
  732. package/prisma/migrations/20261102000000_host_providers/migration.sql +56 -0
  733. package/prisma/migrations/20261104000000_coding_agent_repository_list/migration.sql +5 -0
  734. package/prisma/migrations/20261106000000_tool_timeout/migration.sql +4 -0
  735. package/prisma/migrations/20261107000000_mcp_servers/migration.sql +33 -0
  736. package/prisma/migrations/20261108000000_coding_mcp/migration.sql +5 -0
  737. package/prisma/migrations/20261109000000_task_run_index/migration.sql +3 -0
  738. package/prisma/schema.prisma +468 -109
  739. package/scripts/git-askpass.sh +1 -1
  740. package/dist/sandbox/generated/zod-to-json-schema.bundle.js +0 -5
@@ -6,6 +6,7 @@
6
6
  * `npm run build:viewer-schemas`, and commit the regenerated files.
7
7
  */
8
8
  import { z } from "zod";
9
+ import { legacyJsonSchema } from "../core/zod-json-schema.js";
9
10
  export const RunStatusSchema = z.enum([
10
11
  "pending",
11
12
  "running",
@@ -210,3 +211,9 @@ export const VIEWER_SCHEMAS = {
210
211
  "viewer-event": ViewerEventSchema,
211
212
  "infra-info": InfraInfoSchema,
212
213
  };
214
+ /** A viewer schema's JSON Schema (draft-07 keywords, no `$schema`), as the published files spell it. */
215
+ export function viewerJsonSchema(schema) {
216
+ const json = legacyJsonSchema(z.toJSONSchema(schema, { target: "draft-07", io: "output" }));
217
+ delete json.$schema;
218
+ return json;
219
+ }
@@ -2,14 +2,18 @@
2
2
  import { mkdir, readFile, writeFile } from "node:fs/promises";
3
3
  import { dirname, join } from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
- import { zodToJsonSchema } from "zod-to-json-schema";
6
5
  import { VIEWER_SCHEMAS } from "./api-schema.js";
6
+ import { viewerJsonSchema } from "./api-schema.js";
7
7
  import { OPENAPI_PATH, renderViewerOpenApi } from "./openapi.js";
8
8
  export const SCHEMA_DIR = join(dirname(fileURLToPath(import.meta.url)), "schemas");
9
9
  export function renderSchemas() {
10
10
  return Object.fromEntries(Object.entries(VIEWER_SCHEMAS).map(([name, schema]) => [
11
11
  `${name}.schema.json`,
12
- `${JSON.stringify(zodToJsonSchema(schema, { name, $refStrategy: "none" }), null, 2)}\n`,
12
+ `${JSON.stringify({
13
+ $ref: `#/definitions/${name}`,
14
+ definitions: { [name]: viewerJsonSchema(schema) },
15
+ $schema: "http://json-schema.org/draft-07/schema#",
16
+ }, null, 2)}\n`,
13
17
  ]));
14
18
  }
15
19
  if (process.argv[1] === fileURLToPath(import.meta.url)) {
@@ -1,4 +1,5 @@
1
1
  import { periodStart } from "../core/budget-groups.js";
2
+ import { codeProviderOf } from "../coding/code-host.js";
2
3
  import { publicCodingRunResult } from "../coding/protocol.js";
3
4
  const DEFAULT_SINCE_MS = 60 * 60 * 1000;
4
5
  const RELATIVE_SINCE_MS = {
@@ -102,7 +103,7 @@ function outcomesFor(row, pullRequests, sites) {
102
103
  !pullRequests.some((pr) => pr.url === result.pullRequestUrl)) {
103
104
  outcomes.push({
104
105
  kind: "pull_request",
105
- provider: "github",
106
+ provider: codeProviderOf(result.repository),
106
107
  repository: result.repository,
107
108
  number: result.pullRequestNumber,
108
109
  url: result.pullRequestUrl,
@@ -6,8 +6,8 @@
6
6
  import { dirname, join } from "node:path";
7
7
  import { fileURLToPath } from "node:url";
8
8
  import { stringify } from "yaml";
9
- import { zodToJsonSchema } from "zod-to-json-schema";
10
9
  import { VIEWER_SCHEMAS } from "./api-schema.js";
10
+ import { viewerJsonSchema } from "./api-schema.js";
11
11
  import { DEFAULT_GRAPH_LIMIT, MAX_GRAPH_LIMIT, SSE_HEARTBEAT_MS } from "./limits.js";
12
12
  export const OPENAPI_PATH = join(dirname(fileURLToPath(import.meta.url)), "../../docs/viewer-api.openapi.yml");
13
13
  const AUTH_NOTE = "Requires a bearer token with the `admin:view` scope, held by a caller with the admin role.";
@@ -103,9 +103,7 @@ export const VIEWER_ROUTES = [
103
103
  function componentSchemas() {
104
104
  const schemas = {};
105
105
  for (const [name, schema] of Object.entries(VIEWER_SCHEMAS)) {
106
- const json = zodToJsonSchema(schema, { target: "jsonSchema2019-09", $refStrategy: "none" });
107
- delete json.$schema;
108
- schemas[name] = json;
106
+ schemas[name] = viewerJsonSchema(schema);
109
107
  }
110
108
  schemas.ViewerError = {
111
109
  type: "object",
@@ -42,6 +42,21 @@ async function main() {
42
42
  const { helpCommand } = await import("./help/cli.js");
43
43
  await helpCommand(process.argv.slice(3));
44
44
  }
45
+ else if (command === "resume") {
46
+ // Runs on a developer's machine: no environment, database, or server runtime.
47
+ const { resumeCommand } = await import("./coding/transcript/resume/command.js");
48
+ process.exitCode = await resumeCommand(process.argv.slice(3));
49
+ }
50
+ else if (command === "resume-tools") {
51
+ // Hidden: the stand-in tool server `wardby resume` configures Claude Code to start.
52
+ const { resumeToolsCommand } = await import("./coding/transcript/resume/stand-in.js");
53
+ await resumeToolsCommand(process.argv.slice(3));
54
+ }
55
+ else if (command === "claude-plugin") {
56
+ // Sets up the Claude Code plugin on this machine: no environment, database, or server runtime.
57
+ const { claudePluginCommand } = await import("./claude-plugin/command.js");
58
+ process.exitCode = await claudePluginCommand(process.argv.slice(3));
59
+ }
45
60
  else if (command === "knowledge") {
46
61
  // Offline bundle validation: no environment, database, or HTTP runtime.
47
62
  const { knowledgeCommand } = await import("./knowledge/cli.js");
package/docs/README.md CHANGED
@@ -13,16 +13,26 @@
13
13
  runs are billed.
14
14
  - [Agent recipes](agent-recipes.md) gives two copyable setups, an architecture
15
15
  keeper and a per-language builder, with the prerequisites each needs.
16
+ - [Debugging an agent run](debugging-agent-runs.md) triages a run that failed,
17
+ opened no pull request, or missed what you expected.
16
18
  - [Coding-agent setup](coding-agent-setup.md) configures the local trusted proxy
17
19
  and isolated Codex or Claude Code workers.
20
+ - [Claude Code plugin](claude-code-plugin.md) (0.8.0+) installs the `wardby-runs`
21
+ pane: your runs beside the chat, grouped by pull request, with run details and
22
+ Continue locally.
18
23
  - [Architecture knowledge bundles](knowledge.md) covers `docs/knowledge/`: the
19
24
  concept format, how coding runs and reviewers use it, `wardby knowledge check`,
20
25
  and the scheduled architecture agent.
21
- - [Native sandbox](native-sandbox.md) (0.5.4+) runs a native agent's turn loop and user
26
+ - [Native sandbox](native-sandbox.md) (0.6.0+) runs a native agent's turn loop and user
22
27
  tools in a single-use, credential-free container behind a native gateway.
23
28
  - [Secrets and tools](tool-secrets.md) covers readable and brokered secrets
24
29
  (brokered secrets require 0.6.0+):
25
30
  attaching secrets to tools, `set_secret_broker`, placements, and errors.
31
+ - [Remote MCP servers](mcp-servers.md) (0.8.0+) registers a remote MCP server and
32
+ attaches an allowlist of its tools to a native agent.
33
+ - [Host providers](host-providers.md) (0.8.0+) covers adding a code host with
34
+ your own custom tools: registering, approving, testing and removing a
35
+ provider.
26
36
  - [Coding-worker isolation](coding-worker-isolation.md) documents the threat
27
37
  model and enforced worker boundary.
28
38
  - [Bring-your-own worker images](coding-worker-byo-images.md) explains how to
@@ -231,22 +231,32 @@ to include secrets or internal details. See
231
231
  <details>
232
232
  <summary>Builder (coding agent) fields that matter</summary>
233
233
 
234
- | Field (`codingProfile`) | What to set |
235
- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
236
- | `model` (agent field) | A capable coding model the chosen provider supports, for example `gpt-5.6-terra` with `codex` or `claude-sonnet-5` with `claude-code`; a mismatch is refused |
237
- | `provider` | `codex` or `claude-code`; the agent's `model` must be one that provider supports |
238
- | `repository` | `your-org/your-repo`; your linked GitHub account needs write access |
239
- | `baseRef` | The branch runs start from, usually your default branch |
240
- | `toolchain` | `node` or `node-python` (per language below) |
241
- | `toolchainVersion` | `"3.12"` for `node-python`; omit for `node` |
242
- | `packageAllowlist` | Top-level packages per ecosystem (`npm`, `pypi`). Needs `packages:approve` or `agents:admin` |
243
- | `packagePolicy` | Optional `minReleaseAgeDays` (0 to 30) |
244
- | `services` | Catalog service names the agent may start, for example `["postgres"]`; see [Services](coding-services.md) |
245
- | `protectedPaths` | Globs a run may not change, for example `[".github/**", "CODEOWNERS"]`. `.wardby/**` is always protected except `.wardby/services.yaml` |
246
- | `timeoutSec` | 60 to 7200; for example `1800` |
247
- | `workerImageRef` | Digest-pinned custom image; needs `agents:admin` (see "Other languages") |
248
- | `defaultTask` | Needed only to schedule the agent |
249
- | Agent `budgetUsd` | Per-run budget, reserved at dispatch, for example `5` |
234
+ | Field (`codingProfile`) | What to set |
235
+ | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
236
+ | `model` (agent field) | A capable coding model the chosen provider supports, for example `gpt-5.6-terra` with `codex` or `claude-sonnet-5` with `claude-code`; a mismatch is refused |
237
+ | `provider` | `codex` or `claude-code`; the agent's `model` must be one that provider supports |
238
+ | `repository` | `your-org/your-repo`; your linked GitHub account needs write access |
239
+ | `baseRef` | The branch runs start from, usually your default branch |
240
+ | `toolchain` | `node` or `node-python` (per language below) |
241
+ | `toolchainVersion` | `"3.12"` for `node-python`; omit for `node` |
242
+ | `packageAllowlist` | Top-level packages per ecosystem (`npm`, `pypi`). Needs `packages:approve` or `agents:admin` |
243
+ | `packagePolicy` | Optional `minReleaseAgeDays` (0 to 30) |
244
+ | `services` | Catalog service names the agent may start, for example `["postgres"]`; see [Services](coding-services.md) |
245
+ | `protectedPaths` | Globs a run may not change, for example `[".github/**", "CODEOWNERS"]`. `.wardby/**` is always protected except `.wardby/services.yaml` |
246
+ | `timeoutSec` | 60 to 7200; for example `1800` |
247
+ | `workerImageRef` | Digest-pinned custom image; needs `agents:admin` (see "Other languages") |
248
+ | `defaultTask` | Needed only to schedule the agent |
249
+ | Agent `budgetUsd` | Per-run budget, reserved at dispatch, for example `5` |
250
+ | Agent `allowedOverrunPercent` | Optional whole percent (0 to 100, default 0) beyond `budgetUsd`, for example `10`. On a coding agent it raises each run's limit; on a lead agent that delegates, it raises its run tree's ceiling for coding sub-agents. It is never reserved: a run is topped up past its base only from room its budget group and run tree have when it needs it. Native runs' own model calls are not affected |
251
+
252
+ To allow a small overrun on an existing coding agent, call `update_agent`
253
+ (it needs the same permission as changing `budgetUsd`):
254
+
255
+ ```json
256
+ { "id": "<coding agent id>", "allowedOverrunPercent": 10 }
257
+ ```
258
+
259
+ See [Budgets](coding-agent-setup.md#budgets).
250
260
 
251
261
  The agent's `systemPrompt` is placed ahead of each request as standing
252
262
  instructions. The template below is generic.
@@ -373,8 +383,9 @@ the lead's `maxDelegationsPerRun` (1 to 20) with `create_agent` or
373
383
  { "id": "<lead agent id>", "maxDelegationsPerRun": 6 }
374
384
  ```
375
385
 
376
- - Each `delegate_to_<name>` call still goes to a different sub-agent; a second
377
- call to the same one in the same run is refused with `already_dispatched`.
386
+ - A run delegates to each sub-agent and repository at most once: a second call
387
+ to the same sub-agent in the same run (for a coding sub-agent with a list of
388
+ repositories, in the same repository) is refused with `already_dispatched`.
378
389
  A delegation waiting for budget (see below) also holds its place against
379
390
  `maxDelegationsPerRun`: a call beyond the limit is refused with
380
391
  `already_dispatched` and a message naming both counts, e.g. "This run
@@ -407,8 +418,10 @@ the lead's `maxDelegationsPerRun` (1 to 20) with `create_agent` or
407
418
  - Each coding sub-agent's result tells the lead its `status`, its summary
408
419
  (`finalText`), cost and tokens, and, when it opened or pushed to a pull
409
420
  request, `pullRequest` (`outcome` `opened` or `updated`, `repository`,
410
- `number`, `url`) taken from Wardby's own record of the run. A lead prompt can
411
- ask the agent to report those links.
421
+ `number`, `url`) taken from Wardby's own record of the run. A failed builder's
422
+ result also carries `errorCode`, the leading code of its error (such as
423
+ `coding_queue_timeout`); the full error stays on the run (`get_run`). A lead
424
+ prompt can ask the agent to report those links and codes.
412
425
  - The whole run tree shares one budget: give the lead a `budgetUsd` that
413
426
  covers every builder it may start, plus its own planning. Builders started
414
427
  together each reserve their own `budgetUsd` up front, so the ones admitted
@@ -424,8 +437,8 @@ the lead's `maxDelegationsPerRun` (1 to 20) with `create_agent` or
424
437
  boundary (routes, field names and types, error codes), word for word the same.
425
438
  - Wardby adds a **Related pull requests** section to each pull request the
426
439
  builders open, listing the others with links, states (open, draft, merged,
427
- closed) and the originating issue. With a Jira issue, the list covers every
428
- pull request recorded for that issue in any run. When no pull request in the
440
+ closed) and the originating issue. With a Jira or GitHub issue, the list
441
+ covers every pull request recorded for that issue in any run. When no pull request in the
429
442
  set carries a `mergeOrder` (see below), open ones are numbered as a
430
443
  **Suggested merge order** — the order the lead delegated in, not a
431
444
  guarantee. When any pull request in the set carries one (open, merged or
@@ -480,6 +493,14 @@ the lead's `maxDelegationsPerRun` (1 to 20) with `create_agent` or
480
493
  blocks a merge by itself: add `wardby merge order` as a required status
481
494
  check in branch protection to gate on it. See
482
495
  [The wardby merge order check](../help/merge-order-check.md).
496
+ - With Wardby 0.7.0 or later, set `markReadyWhenPassing: true` on the
497
+ lead's write link (`link_repository`) to have Wardby mark the draft pull
498
+ requests its builders open ready for review once they pass, instead of
499
+ leaving that to a person; the coding builders need no link of their own.
500
+ With a `mergeOrder` set, a later step only becomes ready this way once the
501
+ `wardby merge order` check above reports `success` on it — that is, once
502
+ the steps it depends on have merged. See [Mark ready
503
+ when passing](code-review-agents.md#mark-ready-when-passing-markreadywhenpassing).
483
504
  - The section, and the follow-up hints below, list every pull request in the
484
505
  set by repository name and number. A request that spans repositories of
485
506
  different visibility can therefore show a private repository's name in a
@@ -487,6 +508,37 @@ the lead's `maxDelegationsPerRun` (1 to 20) with `create_agent` or
487
508
  repositories, keep that work in separate requests (separate Jira issues, or
488
509
  separate lead agents).
489
510
 
511
+ #### One coding agent, several repositories
512
+
513
+ Instead of one builder per repository, give one coding builder a list: its default in
514
+ `codingProfile.repository`, and each other repository with `link_repository`
515
+ (`access: "write"`, no triggers). The lead then names the repository on each
516
+ call, and may delegate to the same builder once per repository:
517
+
518
+ ```json
519
+ { "task": "Add the /quotes endpoint the client will call.", "repository": "your-org/api", "mergeOrder": 1 }
520
+ ```
521
+
522
+ ```json
523
+ { "task": "Add the quotes page that calls /quotes.", "repository": "your-org/web", "mergeOrder": 2 }
524
+ ```
525
+
526
+ Set `maxDelegationsPerRun` (up to 20) for the number of calls, and use
527
+ `mergeOrder` where the pull requests must land in order. A call without
528
+ `repository` is refused with `repository_required` when the builder has extra
529
+ repositories (unless it continues a prior run with `continuePriorRun`), and a
530
+ repository not on the list with `repository_not_listed`. A native sub-agent
531
+ refuses `repository` with `repository_requires_coding_agent`. The lead sees the
532
+ list in the tool definition only when it has the same owner as the builder, or
533
+ another owner with execute access to a builder that sets
534
+ `allowWebhookTaskOverride`. All repositories share the builder's toolchain,
535
+ budget and prompt.
536
+
537
+ Being on the list lets a run work in a repository; it starts nothing there. Link
538
+ the lead and the reviewer on each listed GitHub repository with the triggers
539
+ they need, or a pull request opened there gets no review, mention follow-up, fix
540
+ round or mark-ready.
541
+
490
542
  #### Follow-ups across the set
491
543
 
492
544
  A human-triggered follow-up task (an `@<app-slug>` mention, or a Jira issue
@@ -500,8 +552,9 @@ too:
500
552
  repository that already has an open sibling for this request.
501
553
 
502
554
  The usual delegation rails still apply on top of this: `maxDelegationsPerRun`
503
- caps calls per run; a second `delegate_to_<name>` call to the same sub-agent
504
- in one run is refused with `already_dispatched`; dispatch re-checks every
555
+ caps calls per run; a run delegates to each sub-agent and repository at most
556
+ once, and a second such call is refused with `already_dispatched`; dispatch
557
+ re-checks every
505
558
  `continuePriorRun` id (refusing with `continuation_refused` when this
506
559
  deployment can't continue the run it names — for example it belongs to a
507
560
  different owner's agent); every push to a sibling pull request still gets its
@@ -512,6 +565,11 @@ fails with category `continuation_closed` and pushes nothing — see
512
565
 
513
566
  #### Limits
514
567
 
568
+ - If two executions of one delegation step overlap (for example a stalled
569
+ process and the process that took the run over) and the call id is already
570
+ held by a run of a different sub-agent, the call returns
571
+ `delegation_conflict` to the lead without starting a run or failing it; see
572
+ [Delegation conflict](../help/errors/delegation-conflict.md).
515
573
  - Cancelling the lead run does not stop a native sub-agent that is already
516
574
  running; it keeps running to completion. A coding sub-agent is stopped.
517
575
  - If Wardby restarts mid-batch, the batch's delegation calls replay and each
@@ -546,6 +604,19 @@ the run; the pull request description says which. A person
546
604
  reviews and merges; Wardby never merges for you. A later mention on that pull
547
605
  request continues the same branch.
548
606
 
607
+ When a mention run finishes without opening a pull request or failing a
608
+ sub-run and its reply is longer than about 2,000 characters (for example a
609
+ plan), the status comment does not cut the reply short. It says "✅ Finished
610
+ without opening a pull request. The full reply follows in the next
611
+ comment(s)." (in a review thread: "...follows in this pull request's
612
+ conversation."), and the reply is posted in up to four numbered comments
613
+ ("Reply, part i of n") of about 60,000 characters each, split at headings,
614
+ paragraphs or lines. Anything beyond four parts is cut with a note; the full
615
+ text stays on the run (`get_run`, `finalText`). `@`-mentions in the reply are
616
+ defused. Each part is posted once; if one cannot be posted, the rest are
617
+ skipped. Shorter replies, and runs that opened a pull request or had a failed
618
+ sub-run, keep the status comment that quotes up to 2,000 characters.
619
+
549
620
  ## Next steps
550
621
 
551
622
  - [Architecture knowledge bundles](knowledge.md)
@@ -95,7 +95,7 @@ and GKE Autopilot overlays.
95
95
 
96
96
  ### Native agents in a sandbox
97
97
 
98
- Native sandbox requires Wardby 0.5.4 or later.
98
+ Native sandbox requires Wardby 0.6.0 or later.
99
99
 
100
100
  Native agents run in the server process by default. A native agent set to
101
101
  `nativeExecutionMode=sandbox` instead runs its turn loop and user tools in a
@@ -0,0 +1,164 @@
1
+ # Claude Code plugin: the wardby runs pane
2
+
3
+ From Wardby 0.8.0, the `wardby-runs` Claude Code plugin shows your wardby agent
4
+ runs in a pane beside the chat. It lists runs grouped by pull request, shows a
5
+ run's request, outcomes, services, errors and final answer, and can continue a
6
+ finished Claude Code run in your own terminal.
7
+
8
+ The plugin lives in this repository under `plugins/claude-code/`, and the
9
+ repository is its marketplace (`.claude-plugin/marketplace.json`). It talks only
10
+ to the wardby MCP server your Claude Code session already has, through
11
+ `list_runs`, `list_agents`, `get_run` and `get_run_transcript`, so it shows
12
+ exactly what those tools show you and needs no token of its own.
13
+
14
+ ## Install
15
+
16
+ ### With the wardby CLI
17
+
18
+ ```sh
19
+ npx @wardby/cli@latest claude-plugin install
20
+ ```
21
+
22
+ This installs the plugin from `wardby/wardby` and offers to allow the pane's
23
+ read-only tools for auto mode (see [Permissions](#permissions)). Options:
24
+
25
+ | Option | What it does |
26
+ | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
27
+ | `--server-url <url>` | Registers the wardby MCP server at this `https` URL (for example `https://wardby.example.com/mcp`) when Claude Code has none named `wardby` |
28
+ | `--server-name <name>` | The MCP server the pane uses, as `/mcp` lists it (default `wardby`); the allow rules it adds follow the name, for example `mcp__wardby-prod__list_runs` |
29
+ | `--marketplace <src>` | Installs from another marketplace: an operator's own repository (`your-org/claude-plugins`) or a local folder |
30
+ | `--allow-tools` | Allows the pane's read-only tools without asking; `--no-allow-tools` leaves permission rules alone |
31
+ | `--fullscreen` | Also switches Claude Code's terminal to its fullscreen view (see [Terminal](#in-the-terminal)); it applies to every session |
32
+ | `--yes` | Answers yes to every question |
33
+
34
+ `wardby quickstart` offers the same install once it has connected Claude Code
35
+ (`--claude-plugin` installs it without asking, `--no-claude-plugin` skips it),
36
+ and `wardby doctor` lists the plugin, the MCP server and the allow rules
37
+ alongside its other checks, without failing when the optional pane is missing.
38
+
39
+ `wardby claude-plugin status` reports whether the plugin, the MCP server and
40
+ the allow rules are in place. `wardby claude-plugin uninstall` removes the
41
+ plugin and only the settings install added: the rules it added and the
42
+ fullscreen view if it switched it on. It leaves the MCP server in place.
43
+
44
+ The CLI writes to the settings file of the Claude Code it finds:
45
+ `$CLAUDE_CONFIG_DIR/settings.json`, else `~/.claude/settings.json`. It refuses a
46
+ settings file that isn't valid JSON instead of overwriting it.
47
+
48
+ ### In Claude Code
49
+
50
+ At the prompt of a terminal session:
51
+
52
+ ```
53
+ /plugin install wardby-runs --marketplace wardby/wardby
54
+ ```
55
+
56
+ In the desktop app, where `/plugin` doesn't run: click **+** next to the prompt
57
+ box, then **Plugins**, **Add marketplace** with `wardby/wardby`, then **Add
58
+ plugin**. A plugin installed from a terminal at user scope also loads in the
59
+ desktop app's local Code sessions that read the same Claude Code configuration.
60
+
61
+ Open the pane with `/wardby-runs`; `/wardby-runs close` closes it and
62
+ `/wardby-runs clear` clears its filters.
63
+
64
+ ### The MCP server
65
+
66
+ The pane needs an MCP server named `wardby` in Claude Code. `wardby quickstart`
67
+ registers one; for a deployed instance, add it with `--server-url` above or:
68
+
69
+ ```sh
70
+ claude mcp add --transport http --scope user wardby https://wardby.example.com/mcp
71
+ ```
72
+
73
+ then sign in with `/mcp`. Another name works too: set the plugin's **wardby MCP
74
+ server** option to it. A server added through the Claude apps' **Connectors**
75
+ settings is not a Claude Code MCP server and the pane doesn't use it. With another
76
+ name, install with `--server-name <name>` so the allow rules match it, and the
77
+ pane's own hints name it too.
78
+
79
+ ## Permissions
80
+
81
+ The pane reads only, with the caller's own access:
82
+
83
+ | Pane feature | MCP tool | Scope | What you see |
84
+ | -------------------- | -------------------- | ------------- | ------------------------------------------------------------------------------ |
85
+ | Run list | `list_runs` | `agents:read` | All runs of agents you own, and the runs you started on agents shared with you |
86
+ | Agent names, budgets | `list_agents` | `agents:read` | Agents you can see (the pane asks for `summary: true`) |
87
+ | Run detail | `get_run` | `agents:read` | Runs you started, or of agents you own |
88
+ | Continue locally | `get_run_transcript` | `agents:read` | Same as `get_run` |
89
+
90
+ Under Claude Code's auto mode, a plugin's MCP calls go through the same safety
91
+ check as any other, and calls the pane makes on its own timer are refused
92
+ unless allowed. Allow these in `/permissions` (or let `wardby claude-plugin
93
+ install` add them): `mcp__wardby__list_runs`, `mcp__wardby__list_agents`,
94
+ `mcp__wardby__get_run` and `mcp__wardby__get_run_transcript`. The pane never
95
+ calls `stop_run` or any other tool that changes something. When a call is
96
+ refused, the pane says which rules to add.
97
+
98
+ Plugins are not sandboxed: they run as you. **Continue locally** runs
99
+ `npx @wardby/cli@latest resume - --print` in the folder you give it, passing the
100
+ transcript's download link on standard input; the link is never drawn, stored
101
+ or logged. The import writes only under `~/.wardby/` and the new worktree.
102
+
103
+ ## Using the pane
104
+
105
+ - **Ledger** (desktop): runs grouped by pull request (or Jira issue), each group
106
+ one row with its state and total cost, folded once every run in it finished.
107
+ A pull request with one run is one line. Runs that touch no pull request are
108
+ under **Other**. Each line names its step (opened, review, fix 1, …), with
109
+ sub-agent runs under their lead.
110
+ - **Strips** (desktop): one card per pull request, its steps drawn as a row of
111
+ dots; click a step's name to see it.
112
+ - **Filters**: show all, active, failed or finished runs, or type to match an
113
+ agent, status, trigger or task.
114
+ - **Run detail**: what started the run and what it produced, its request and
115
+ final answer (as markdown; **Show full text** for all of it), services,
116
+ errors, the run tree, and **Continue locally** for finished Claude Code runs
117
+ with `sessionResume` on (see [Resume Claude Code runs locally](coding-agent-setup.md#resume-a-run-locally)).
118
+
119
+ The pane refreshes every 10 seconds while a run is active and every 60 seconds
120
+ otherwise (the plugin's **pollSeconds** and **idleSeconds** options), asks only
121
+ for what changed since its last refresh, backs off when the server fails, and
122
+ polls only while it is open.
123
+
124
+ ### In the terminal
125
+
126
+ Claude Code's classic terminal view draws a plugin pane as a band above the
127
+ prompt and doesn't pass mouse clicks to plugins: use the keyboard (ctrl+x tab
128
+ focuses the pane, then `1`–`9` open a run, `r` refreshes, `b` goes back, `x` or
129
+ Escape closes). In the fullscreen view the pane is a side bar beside the chat
130
+ and takes clicks. Turn it on with `"tui": "fullscreen"` in your Claude Code
131
+ settings (or `--fullscreen` above, or `CLAUDE_CODE_NO_FLICKER=1`), then restart
132
+ Claude Code. The desktop app needs none of this.
133
+
134
+ ## Add it to your own marketplace
135
+
136
+ The plugin keeps everything it needs in `plugins/claude-code/` and has no
137
+ instance-specific values, so an operator can list it in their organization's
138
+ marketplace. Point an entry at this repository's subfolder, pinned to a
139
+ release:
140
+
141
+ ```json
142
+ {
143
+ "name": "wardby-runs",
144
+ "source": {
145
+ "source": "git-subdir",
146
+ "url": "wardby/wardby",
147
+ "path": "plugins/claude-code",
148
+ "ref": "v0.8.0"
149
+ }
150
+ }
151
+ ```
152
+
153
+ Preset its options for your users in managed settings under
154
+ `pluginConfigs["wardby-runs@<your marketplace>"].options` (for example the MCP
155
+ server's name), and ship the allow rules above in the same managed settings.
156
+ When managed settings set `allowManagedHooksOnly`, a plugin a user installs
157
+ loads no hooks: install it through managed settings instead.
158
+
159
+ ## Limits
160
+
161
+ - Plugins draw in the Claude Code terminal, the desktop app's Code tab and VS
162
+ Code; not in claude.ai/code, `claude -p`, the Agent SDK or WSL.
163
+ - The pane polls; there is no push.
164
+ - A run's live steps and a readable transcript are not shown yet.