@wardby/cli 0.5.3 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (763) hide show
  1. package/.env.example +33 -0
  2. package/README.md +25 -14
  3. package/deploy/local/docker-compose.quickstart-coding.yml +13 -0
  4. package/dist/claude-coding-worker/context.d.ts +22 -0
  5. package/dist/claude-coding-worker/context.js +92 -0
  6. package/dist/claude-coding-worker/driver.d.ts +27 -3
  7. package/dist/claude-coding-worker/driver.js +161 -20
  8. package/dist/claude-coding-worker/main.js +34 -6
  9. package/dist/claude-coding-worker/sdk.js +25 -5
  10. package/dist/claude-coding-worker/tool-socket.d.ts +27 -0
  11. package/dist/claude-coding-worker/tool-socket.js +111 -0
  12. package/dist/claude-coding-worker/transcript.d.ts +18 -0
  13. package/dist/claude-coding-worker/transcript.js +77 -0
  14. package/dist/cli-help.d.ts +1 -1
  15. package/dist/cli-help.js +6 -2
  16. package/dist/cli-native-mode.d.ts +9 -0
  17. package/dist/cli-native-mode.js +20 -0
  18. package/dist/cli.d.ts +3 -1
  19. package/dist/cli.js +161 -11
  20. package/dist/coding/claude-context.d.ts +45 -0
  21. package/dist/coding/claude-context.js +434 -0
  22. package/dist/coding/continuation-wording.d.ts +35 -0
  23. package/dist/coding/continuation-wording.js +73 -0
  24. package/dist/coding/linked-issue-note.d.ts +23 -0
  25. package/dist/coding/linked-issue-note.js +47 -0
  26. package/dist/coding/merge-wording.d.ts +28 -0
  27. package/dist/coding/merge-wording.js +78 -0
  28. package/dist/coding/pr-description-note.d.ts +9 -0
  29. package/dist/coding/pr-description-note.js +32 -0
  30. package/dist/coding/profile.d.ts +50 -118
  31. package/dist/coding/profile.js +51 -4
  32. package/dist/coding/protected-path-wording.d.ts +8 -0
  33. package/dist/coding/protected-path-wording.js +1 -1
  34. package/dist/coding/protocol.d.ts +292 -270
  35. package/dist/coding/protocol.js +322 -15
  36. package/dist/coding/redact.d.ts +3 -0
  37. package/dist/coding/redact.js +12 -0
  38. package/dist/coding/registry/allowlist.d.ts +12 -0
  39. package/dist/coding/registry/allowlist.js +14 -1
  40. package/dist/coding/registry/audit-mode.d.ts +153 -0
  41. package/dist/coding/registry/audit-mode.js +304 -0
  42. package/dist/coding/registry/lockfile-shared.d.ts +36 -0
  43. package/dist/coding/registry/lockfile-shared.js +128 -0
  44. package/dist/coding/registry/lockfiles.js +1 -1
  45. package/dist/coding/registry/npm-lockfile-formats.d.ts +11 -0
  46. package/dist/coding/registry/npm-lockfile-formats.js +41 -0
  47. package/dist/coding/registry/npm-lockfile.d.ts +8 -4
  48. package/dist/coding/registry/npm-lockfile.js +4 -6
  49. package/dist/coding/registry/npm.js +78 -8
  50. package/dist/coding/registry/pnpm-lockfile.d.ts +17 -0
  51. package/dist/coding/registry/pnpm-lockfile.js +189 -0
  52. package/dist/coding/registry/pypi-plan.d.ts +50 -0
  53. package/dist/coding/registry/pypi-plan.js +406 -0
  54. package/dist/coding/registry/pypi-requirements.d.ts +58 -0
  55. package/dist/coding/registry/pypi-requirements.js +155 -0
  56. package/dist/coding/registry/pypi.d.ts +3 -27
  57. package/dist/coding/registry/pypi.js +40 -154
  58. package/dist/coding/registry/refusal-hints.d.ts +20 -0
  59. package/dist/coding/registry/refusal-hints.js +61 -0
  60. package/dist/coding/registry/refusal-wording.d.ts +11 -0
  61. package/dist/coding/registry/refusal-wording.js +56 -0
  62. package/dist/coding/registry/report.d.ts +70 -8
  63. package/dist/coding/registry/report.js +112 -5
  64. package/dist/coding/registry/types.d.ts +58 -8
  65. package/dist/coding/registry/yarn-lockfile.d.ts +30 -0
  66. package/dist/coding/registry/yarn-lockfile.js +367 -0
  67. package/dist/coding/services/catalog.d.ts +37 -351
  68. package/dist/coding/transcript/claude-code.d.ts +13 -0
  69. package/dist/coding/transcript/claude-code.js +273 -0
  70. package/dist/coding/transcript/download-protocol.d.ts +30 -0
  71. package/dist/coding/transcript/download-protocol.js +18 -0
  72. package/dist/coding/transcript/format.d.ts +20 -0
  73. package/dist/coding/transcript/format.js +32 -0
  74. package/dist/coding/transcript/recorder.d.ts +51 -0
  75. package/dist/coding/transcript/recorder.js +225 -0
  76. package/dist/coding/transcript/resume/checkout.d.ts +31 -0
  77. package/dist/coding/transcript/resume/checkout.js +203 -0
  78. package/dist/coding/transcript/resume/command.d.ts +17 -0
  79. package/dist/coding/transcript/resume/command.js +176 -0
  80. package/dist/coding/transcript/resume/download.d.ts +20 -0
  81. package/dist/coding/transcript/resume/download.js +153 -0
  82. package/dist/coding/transcript/resume/launch.d.ts +38 -0
  83. package/dist/coding/transcript/resume/launch.js +128 -0
  84. package/dist/coding/transcript/resume/session-file.d.ts +13 -0
  85. package/dist/coding/transcript/resume/session-file.js +79 -0
  86. package/dist/coding/transcript/resume/stand-in.d.ts +11 -0
  87. package/dist/coding/transcript/resume/stand-in.js +49 -0
  88. package/dist/coding-worker/artifact.d.ts +16 -3
  89. package/dist/coding-worker/artifact.js +5 -3
  90. package/dist/coding-worker/debug-trace.d.ts +6 -5
  91. package/dist/coding-worker/debug-trace.js +13 -18
  92. package/dist/coding-worker/dependency-cache.d.mts +229 -0
  93. package/dist/coding-worker/dependency-cache.mjs +2123 -0
  94. package/dist/coding-worker/driver.d.ts +4 -3
  95. package/dist/coding-worker/driver.js +118 -38
  96. package/dist/coding-worker/errors.d.ts +1 -0
  97. package/dist/coding-worker/errors.js +32 -0
  98. package/dist/coding-worker/sdk.d.ts +6 -0
  99. package/dist/coding-worker/sdk.js +1 -0
  100. package/dist/coding-worker/skills.d.ts +23 -0
  101. package/dist/coding-worker/skills.js +117 -0
  102. package/dist/coding-worker/task-note.d.ts +11 -0
  103. package/dist/coding-worker/task-note.js +13 -0
  104. package/dist/coding-worker/types.d.ts +13 -0
  105. package/dist/config/dependency-cache.d.ts +23 -0
  106. package/dist/config/dependency-cache.js +32 -0
  107. package/dist/config/github-allowed-accounts.d.ts +15 -0
  108. package/dist/config/github-allowed-accounts.js +36 -0
  109. package/dist/config/low-power.d.ts +12 -0
  110. package/dist/config/low-power.js +18 -0
  111. package/dist/config/mobile.d.ts +12 -0
  112. package/dist/config/mobile.js +18 -0
  113. package/dist/config/providers.d.ts +65 -3
  114. package/dist/config/providers.js +147 -11
  115. package/dist/config/test-simulators.d.ts +82 -0
  116. package/dist/config/test-simulators.js +305 -0
  117. package/dist/core/async-context.d.ts +2 -0
  118. package/dist/core/async-context.js +12 -0
  119. package/dist/core/budget-events.d.ts +108 -0
  120. package/dist/core/budget-events.js +346 -0
  121. package/dist/core/budget-groups.d.ts +50 -1
  122. package/dist/core/budget-groups.js +236 -27
  123. package/dist/core/budget-stopped-head.d.ts +46 -0
  124. package/dist/core/budget-stopped-head.js +81 -0
  125. package/dist/core/budget-topup.d.ts +51 -0
  126. package/dist/core/budget-topup.js +156 -0
  127. package/dist/core/budget-wording.d.ts +16 -2
  128. package/dist/core/budget-wording.js +40 -2
  129. package/dist/core/coding-queue.d.ts +2 -1
  130. package/dist/core/coding-queue.js +7 -0
  131. package/dist/core/cron.d.ts +19 -1
  132. package/dist/core/cron.js +17 -0
  133. package/dist/core/datastores.js +1 -1
  134. package/dist/core/db.d.ts +16 -6
  135. package/dist/core/db.js +12 -10
  136. package/dist/core/deferred-coding.d.ts +14 -0
  137. package/dist/core/deferred-coding.js +62 -0
  138. package/dist/core/delegation-child.d.ts +25 -0
  139. package/dist/core/delegation-child.js +37 -0
  140. package/dist/core/dispatch.d.ts +53 -0
  141. package/dist/core/dispatch.js +167 -57
  142. package/dist/core/engine-native.js +10 -6
  143. package/dist/core/error-code.d.ts +38 -0
  144. package/dist/core/error-code.js +168 -0
  145. package/dist/core/grants.d.ts +19 -6
  146. package/dist/core/grants.js +55 -6
  147. package/dist/core/host-events.d.ts +67 -5
  148. package/dist/core/host-events.js +571 -37
  149. package/dist/core/host-status.d.ts +85 -3
  150. package/dist/core/host-status.js +298 -20
  151. package/dist/core/issue-bridge.d.ts +50 -6
  152. package/dist/core/issue-bridge.js +151 -20
  153. package/dist/core/issue-events.d.ts +1 -1
  154. package/dist/core/issue-events.js +16 -11
  155. package/dist/core/issue-status.d.ts +1 -1
  156. package/dist/core/issue-status.js +68 -29
  157. package/dist/core/logger.d.ts +5 -0
  158. package/dist/core/logger.js +14 -1
  159. package/dist/core/lost-run-children.d.ts +6 -0
  160. package/dist/core/lost-run-children.js +32 -0
  161. package/dist/core/mark-ready.d.ts +34 -0
  162. package/dist/core/mark-ready.js +152 -0
  163. package/dist/core/markdown-code.d.ts +8 -0
  164. package/dist/core/markdown-code.js +107 -0
  165. package/dist/core/memory-tools.js +7 -0
  166. package/dist/core/merge-order-check.d.ts +130 -0
  167. package/dist/core/merge-order-check.js +343 -0
  168. package/dist/core/notification-dispatcher.d.ts +70 -0
  169. package/dist/core/notification-dispatcher.js +368 -0
  170. package/dist/core/notification-templates.d.ts +19 -0
  171. package/dist/core/notification-templates.js +139 -0
  172. package/dist/core/notifications.d.ts +10 -0
  173. package/dist/core/notifications.js +38 -0
  174. package/dist/core/pg-auth.d.ts +22 -0
  175. package/dist/core/pg-auth.js +152 -0
  176. package/dist/core/power-composition.d.ts +16 -0
  177. package/dist/core/power-composition.js +37 -0
  178. package/dist/core/power-idle.d.ts +14 -0
  179. package/dist/core/power-idle.js +30 -0
  180. package/dist/core/power.d.ts +71 -0
  181. package/dist/core/power.js +202 -0
  182. package/dist/core/pull-request-state-sync.js +2 -2
  183. package/dist/core/reconciler.d.ts +8 -5
  184. package/dist/core/reconciler.js +37 -6
  185. package/dist/core/related-pull-requests.d.ts +59 -7
  186. package/dist/core/related-pull-requests.js +140 -25
  187. package/dist/core/reply-parts.d.ts +21 -0
  188. package/dist/core/reply-parts.js +73 -0
  189. package/dist/core/repo-access.d.ts +15 -0
  190. package/dist/core/repo-access.js +66 -0
  191. package/dist/core/review-fix.d.ts +38 -1
  192. package/dist/core/review-fix.js +209 -7
  193. package/dist/core/review-host-checks.d.ts +1 -1
  194. package/dist/core/review-host-tools.d.ts +23 -0
  195. package/dist/core/review-host-tools.js +156 -14
  196. package/dist/core/review-reads.d.ts +55 -0
  197. package/dist/core/review-reads.js +233 -0
  198. package/dist/core/run-status.d.ts +12 -0
  199. package/dist/core/run-status.js +12 -0
  200. package/dist/core/runner.d.ts +384 -5
  201. package/dist/core/runner.js +1244 -372
  202. package/dist/core/schedule-start.d.ts +12 -0
  203. package/dist/core/schedule-start.js +14 -0
  204. package/dist/core/secret-broker-config.d.ts +39 -0
  205. package/dist/core/secret-broker-config.js +112 -0
  206. package/dist/core/secret-guard.d.ts +46 -0
  207. package/dist/core/secret-guard.js +104 -0
  208. package/dist/core/secret-guarded-stores.d.ts +12 -0
  209. package/dist/core/secret-guarded-stores.js +41 -0
  210. package/dist/core/secret-spans.d.ts +50 -0
  211. package/dist/core/secret-spans.js +94 -0
  212. package/dist/core/secrets.d.ts +39 -4
  213. package/dist/core/secrets.js +148 -40
  214. package/dist/core/stop-run.d.ts +46 -0
  215. package/dist/core/stop-run.js +61 -0
  216. package/dist/core/workflow-event-recorder.d.ts +14 -0
  217. package/dist/core/workflow-event-recorder.js +120 -0
  218. package/dist/core/workflow-events.d.ts +94 -0
  219. package/dist/core/workflow-events.js +48 -0
  220. package/dist/core/workflow-run-events.d.ts +18 -0
  221. package/dist/core/workflow-run-events.js +75 -0
  222. package/dist/core/zod-json-schema.d.ts +4 -0
  223. package/dist/core/zod-json-schema.js +39 -0
  224. package/dist/core/zod3-window.d.ts +35 -0
  225. package/dist/core/zod3-window.js +124 -0
  226. package/dist/generated/prisma/browser.d.ts +92 -3
  227. package/dist/generated/prisma/client.d.ts +92 -3
  228. package/dist/generated/prisma/commonInputTypes.d.ts +364 -54
  229. package/dist/generated/prisma/enums.d.ts +37 -0
  230. package/dist/generated/prisma/enums.js +31 -0
  231. package/dist/generated/prisma/internal/class.d.ts +132 -0
  232. package/dist/generated/prisma/internal/class.js +4 -4
  233. package/dist/generated/prisma/internal/prismaNamespace.d.ts +1332 -142
  234. package/dist/generated/prisma/internal/prismaNamespace.js +227 -5
  235. package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +234 -0
  236. package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +227 -5
  237. package/dist/generated/prisma/models/Agent.d.ts +464 -7
  238. package/dist/generated/prisma/models/AgentRepository.d.ts +42 -1
  239. package/dist/generated/prisma/models/CodingAgentProfile.d.ts +301 -1
  240. package/dist/generated/prisma/models/CodingProxyRequest.d.ts +207 -3
  241. package/dist/generated/prisma/models/CodingProxySession.d.ts +114 -1
  242. package/dist/generated/prisma/models/CodingRun.d.ts +1841 -1
  243. package/dist/generated/prisma/models/DeferredReview.d.ts +78 -1
  244. package/dist/generated/prisma/models/DependencySnapshot.d.ts +1668 -0
  245. package/dist/generated/prisma/models/DependencySnapshot.js +1 -0
  246. package/dist/generated/prisma/models/IssuePullRequest.d.ts +6 -2
  247. package/dist/generated/prisma/models/LocalReview.d.ts +40 -1
  248. package/dist/generated/prisma/models/NativeGatewayCall.d.ts +1713 -0
  249. package/dist/generated/prisma/models/NativeGatewayCall.js +1 -0
  250. package/dist/generated/prisma/models/NativeGatewaySession.d.ts +1551 -0
  251. package/dist/generated/prisma/models/NativeGatewaySession.js +1 -0
  252. package/dist/generated/prisma/models/NativeWarmWorker.d.ts +1296 -0
  253. package/dist/generated/prisma/models/NativeWarmWorker.js +1 -0
  254. package/dist/generated/prisma/models/NotificationChannel.d.ts +1543 -0
  255. package/dist/generated/prisma/models/NotificationChannel.js +1 -0
  256. package/dist/generated/prisma/models/NotificationDelivery.d.ts +1502 -0
  257. package/dist/generated/prisma/models/NotificationDelivery.js +1 -0
  258. package/dist/generated/prisma/models/NotificationThread.d.ts +1090 -0
  259. package/dist/generated/prisma/models/NotificationThread.js +1 -0
  260. package/dist/generated/prisma/models/RegistryAllowance.d.ts +41 -1
  261. package/dist/generated/prisma/models/RegistryApprovedVersion.d.ts +75 -1
  262. package/dist/generated/prisma/models/RegistryAuditRecord.d.ts +1364 -0
  263. package/dist/generated/prisma/models/RegistryAuditRecord.js +1 -0
  264. package/dist/generated/prisma/models/Run.d.ts +1619 -58
  265. package/dist/generated/prisma/models/RunBudgetEvent.d.ts +1211 -0
  266. package/dist/generated/prisma/models/RunBudgetEvent.js +1 -0
  267. package/dist/generated/prisma/models/RunHostCheck.d.ts +36 -1
  268. package/dist/generated/prisma/models/RunTranscript.d.ts +1339 -0
  269. package/dist/generated/prisma/models/RunTranscript.js +1 -0
  270. package/dist/generated/prisma/models/Secret.d.ts +37 -1
  271. package/dist/generated/prisma/models/SecretBrokerChange.d.ts +1101 -0
  272. package/dist/generated/prisma/models/SecretBrokerChange.js +1 -0
  273. package/dist/generated/prisma/models/WorkflowEvent.d.ts +1422 -0
  274. package/dist/generated/prisma/models/WorkflowEvent.js +1 -0
  275. package/dist/generated/prisma/models.d.ts +12 -0
  276. package/dist/help/build.js +4 -2
  277. package/dist/help/catalog.d.ts +1 -1
  278. package/dist/help/catalog.js +31 -6
  279. package/dist/help-index.json +2584 -146
  280. package/dist/import/create.js +49 -3
  281. package/dist/import/neutral-schema.d.ts +50 -277
  282. package/dist/import/neutral-schema.js +7 -4
  283. package/dist/knowledge/check.d.ts +1 -1
  284. package/dist/knowledge/cli.d.ts +11 -1
  285. package/dist/knowledge/cli.js +37 -4
  286. package/dist/knowledge/concept.d.ts +3 -19
  287. package/dist/knowledge/location.d.ts +31 -0
  288. package/dist/knowledge/location.js +78 -0
  289. package/dist/mcp/auth/access.d.ts +11 -2
  290. package/dist/mcp/auth/access.js +15 -1
  291. package/dist/mcp/auth/ownership.d.ts +7 -7
  292. package/dist/mcp/auth/repo-authorization.js +14 -0
  293. package/dist/mcp/auth/resource-server.d.ts +2 -1
  294. package/dist/mcp/auth/resource-server.js +7 -2
  295. package/dist/mcp/auth/self-hosted/browser.d.ts +1 -1
  296. package/dist/mcp/auth/self-hosted/browser.js +19 -6
  297. package/dist/mcp/auth/self-hosted/credentials.d.ts +3 -3
  298. package/dist/mcp/auth/self-hosted/session.d.ts +2 -2
  299. package/dist/mcp/context.d.ts +6 -0
  300. package/dist/mcp/host-events/github-ingress.d.ts +25 -1
  301. package/dist/mcp/host-events/github-ingress.js +70 -1
  302. package/dist/mcp/index.d.ts +19 -0
  303. package/dist/mcp/index.js +117 -20
  304. package/dist/mcp/server.d.ts +13 -0
  305. package/dist/mcp/server.js +33 -14
  306. package/dist/mcp/tools/agents.d.ts +4 -0
  307. package/dist/mcp/tools/agents.js +277 -24
  308. package/dist/mcp/tools/datastore.js +17 -8
  309. package/dist/mcp/tools/grants.js +9 -3
  310. package/dist/mcp/tools/memory.js +11 -1
  311. package/dist/mcp/tools/notification-channels.d.ts +2 -0
  312. package/dist/mcp/tools/notification-channels.js +293 -0
  313. package/dist/mcp/tools/packages.d.ts +2 -0
  314. package/dist/mcp/tools/packages.js +195 -0
  315. package/dist/mcp/tools/power.d.ts +2 -0
  316. package/dist/mcp/tools/power.js +77 -0
  317. package/dist/mcp/tools/repositories.js +18 -5
  318. package/dist/mcp/tools/run-access.d.ts +16 -0
  319. package/dist/mcp/tools/run-access.js +25 -0
  320. package/dist/mcp/tools/run-transcript-download.d.ts +30 -0
  321. package/dist/mcp/tools/run-transcript-download.js +129 -0
  322. package/dist/mcp/tools/run-transcript.d.ts +19 -0
  323. package/dist/mcp/tools/run-transcript.js +70 -0
  324. package/dist/mcp/tools/runs.d.ts +0 -6
  325. package/dist/mcp/tools/runs.js +41 -14
  326. package/dist/mcp/tools/scheduling.js +3 -1
  327. package/dist/mcp/tools/secret-broker-compat.d.ts +12 -0
  328. package/dist/mcp/tools/secret-broker-compat.js +23 -0
  329. package/dist/mcp/tools/secret-elicitation-form.d.ts +22 -2
  330. package/dist/mcp/tools/secret-elicitation-form.js +205 -10
  331. package/dist/mcp/tools/secret-elicitation-server.d.ts +6 -0
  332. package/dist/mcp/tools/secret-elicitation-server.js +10 -54
  333. package/dist/mcp/tools/secret-elicitation.d.ts +38 -3
  334. package/dist/mcp/tools/secret-elicitation.js +110 -12
  335. package/dist/mcp/tools/secrets.js +186 -9
  336. package/dist/mcp/tools/stop-run.d.ts +2 -0
  337. package/dist/mcp/tools/stop-run.js +82 -0
  338. package/dist/mcp/tools/subagents.js +2 -2
  339. package/dist/mcp/tools/tools.d.ts +2 -2
  340. package/dist/mcp/tools/tools.js +47 -11
  341. package/dist/mcp/transport/stdio-link-host.d.ts +20 -0
  342. package/dist/mcp/transport/stdio-link-host.js +67 -0
  343. package/dist/mcp/transport/streamable-http.d.ts +13 -0
  344. package/dist/mcp/transport/streamable-http.js +41 -1
  345. package/dist/native-worker/composition.d.ts +23 -0
  346. package/dist/native-worker/composition.js +77 -0
  347. package/dist/native-worker/docker-isolation.d.ts +65 -0
  348. package/dist/native-worker/docker-isolation.js +183 -0
  349. package/dist/native-worker/docker-launcher.d.ts +110 -0
  350. package/dist/native-worker/docker-launcher.js +297 -0
  351. package/dist/native-worker/gateway-server.d.ts +77 -0
  352. package/dist/native-worker/gateway-server.js +412 -0
  353. package/dist/native-worker/gateway.d.ts +70 -0
  354. package/dist/native-worker/gateway.js +263 -0
  355. package/dist/native-worker/http-server.d.ts +24 -0
  356. package/dist/native-worker/http-server.js +113 -0
  357. package/dist/native-worker/http-transport.d.ts +17 -0
  358. package/dist/native-worker/http-transport.js +88 -0
  359. package/dist/native-worker/kubernetes-isolation.d.ts +90 -0
  360. package/dist/native-worker/kubernetes-isolation.js +218 -0
  361. package/dist/native-worker/kubernetes-launcher.d.ts +106 -0
  362. package/dist/native-worker/kubernetes-launcher.js +375 -0
  363. package/dist/native-worker/launch.d.ts +62 -0
  364. package/dist/native-worker/launch.js +49 -0
  365. package/dist/native-worker/ledger.d.ts +125 -0
  366. package/dist/native-worker/ledger.js +245 -0
  367. package/dist/native-worker/loopback.d.ts +12 -0
  368. package/dist/native-worker/loopback.js +44 -0
  369. package/dist/native-worker/main.d.ts +8 -0
  370. package/dist/native-worker/main.js +85 -0
  371. package/dist/native-worker/protocol.d.ts +296 -0
  372. package/dist/native-worker/protocol.js +246 -0
  373. package/dist/native-worker/sandbox-executor.d.ts +83 -0
  374. package/dist/native-worker/sandbox-executor.js +284 -0
  375. package/dist/native-worker/stderr-redaction.d.ts +77 -0
  376. package/dist/native-worker/stderr-redaction.js +237 -0
  377. package/dist/native-worker/stdio.d.ts +29 -0
  378. package/dist/native-worker/stdio.js +189 -0
  379. package/dist/native-worker/warm-delivery.d.ts +16 -0
  380. package/dist/native-worker/warm-delivery.js +33 -0
  381. package/dist/native-worker/warm-pool-ledger.d.ts +39 -0
  382. package/dist/native-worker/warm-pool-ledger.js +73 -0
  383. package/dist/native-worker/warm-pool.d.ts +107 -0
  384. package/dist/native-worker/warm-pool.js +283 -0
  385. package/dist/native-worker/worker.d.ts +17 -0
  386. package/dist/native-worker/worker.js +141 -0
  387. package/dist/observability/metrics.js +6 -1
  388. package/dist/providers/auth/authorization-server.d.ts +3 -0
  389. package/dist/providers/auth/index.js +2 -0
  390. package/dist/providers/auth/self-hosted.d.ts +14 -2
  391. package/dist/providers/auth/self-hosted.js +54 -4
  392. package/dist/providers/chat/fake.d.ts +46 -0
  393. package/dist/providers/chat/fake.js +39 -0
  394. package/dist/providers/chat/index.d.ts +4 -0
  395. package/dist/providers/chat/index.js +8 -0
  396. package/dist/providers/chat/slack.d.ts +37 -0
  397. package/dist/providers/chat/slack.js +105 -0
  398. package/dist/providers/chat/types.d.ts +42 -0
  399. package/dist/providers/chat/types.js +19 -0
  400. package/dist/providers/coding-proxy/dependency-cache/eviction.d.ts +29 -0
  401. package/dist/providers/coding-proxy/dependency-cache/eviction.js +87 -0
  402. package/dist/providers/coding-proxy/dependency-cache/key.d.ts +33 -0
  403. package/dist/providers/coding-proxy/dependency-cache/key.js +86 -0
  404. package/dist/providers/coding-proxy/dependency-cache/model-request-seal.d.ts +18 -0
  405. package/dist/providers/coding-proxy/dependency-cache/model-request-seal.js +40 -0
  406. package/dist/providers/coding-proxy/dependency-cache/prisma-store.d.ts +25 -0
  407. package/dist/providers/coding-proxy/dependency-cache/prisma-store.js +131 -0
  408. package/dist/providers/coding-proxy/dependency-cache/service.d.ts +70 -0
  409. package/dist/providers/coding-proxy/dependency-cache/service.js +409 -0
  410. package/dist/providers/coding-proxy/dependency-cache/store.d.ts +85 -0
  411. package/dist/providers/coding-proxy/dependency-cache/store.js +95 -0
  412. package/dist/providers/coding-proxy/hold.d.ts +32 -0
  413. package/dist/providers/coding-proxy/hold.js +86 -0
  414. package/dist/providers/coding-proxy/interrupted.d.ts +70 -0
  415. package/dist/providers/coding-proxy/interrupted.js +104 -0
  416. package/dist/providers/coding-proxy/memory-ledger.d.ts +15 -2
  417. package/dist/providers/coding-proxy/memory-ledger.js +84 -8
  418. package/dist/providers/coding-proxy/metering.d.ts +16 -0
  419. package/dist/providers/coding-proxy/metering.js +27 -4
  420. package/dist/providers/coding-proxy/prisma-ledger.d.ts +15 -2
  421. package/dist/providers/coding-proxy/prisma-ledger.js +179 -67
  422. package/dist/providers/coding-proxy/proxy.d.ts +14 -1
  423. package/dist/providers/coding-proxy/proxy.js +166 -14
  424. package/dist/providers/coding-proxy/registry/audit.d.ts +53 -10
  425. package/dist/providers/coding-proxy/registry/audit.js +94 -17
  426. package/dist/providers/coding-proxy/registry/lockfile-parse-worker.d.ts +36 -0
  427. package/dist/providers/coding-proxy/registry/lockfile-parse-worker.js +67 -0
  428. package/dist/providers/coding-proxy/registry/lockfile-parse.d.ts +16 -0
  429. package/dist/providers/coding-proxy/registry/lockfile-parse.js +110 -0
  430. package/dist/providers/coding-proxy/registry/plan.d.ts +9 -0
  431. package/dist/providers/coding-proxy/registry/plan.js +201 -48
  432. package/dist/providers/coding-proxy/registry/prisma-store.d.ts +11 -5
  433. package/dist/providers/coding-proxy/registry/prisma-store.js +120 -17
  434. package/dist/providers/coding-proxy/registry/service.d.ts +97 -16
  435. package/dist/providers/coding-proxy/registry/service.js +579 -112
  436. package/dist/providers/coding-proxy/registry/store.d.ts +84 -9
  437. package/dist/providers/coding-proxy/registry/store.js +54 -1
  438. package/dist/providers/coding-proxy/runtime.d.ts +4 -0
  439. package/dist/providers/coding-proxy/runtime.js +78 -16
  440. package/dist/providers/coding-proxy/server.d.ts +6 -1
  441. package/dist/providers/coding-proxy/server.js +45 -1
  442. package/dist/providers/coding-proxy/types.d.ts +65 -1
  443. package/dist/providers/datastore/types.d.ts +5 -0
  444. package/dist/providers/engine/types.d.ts +36 -2
  445. package/dist/providers/engine/types.js +39 -0
  446. package/dist/providers/executor/composition.d.ts +31 -1
  447. package/dist/providers/executor/composition.js +81 -8
  448. package/dist/providers/executor/container.d.ts +385 -9
  449. package/dist/providers/executor/container.js +1234 -99
  450. package/dist/providers/executor/dbos-status.d.ts +31 -0
  451. package/dist/providers/executor/dbos-status.js +64 -0
  452. package/dist/providers/executor/dbos.d.ts +91 -0
  453. package/dist/providers/executor/dbos.js +319 -26
  454. package/dist/providers/executor/deferred.d.ts +44 -0
  455. package/dist/providers/executor/deferred.js +100 -0
  456. package/dist/providers/executor/in-process.d.ts +9 -1
  457. package/dist/providers/executor/in-process.js +14 -4
  458. package/dist/providers/executor/linked-issue-reader.d.ts +16 -0
  459. package/dist/providers/executor/linked-issue-reader.js +30 -0
  460. package/dist/providers/executor/routing.d.ts +39 -10
  461. package/dist/providers/executor/routing.js +77 -32
  462. package/dist/providers/executor/types.d.ts +25 -0
  463. package/dist/providers/index.d.ts +2 -1
  464. package/dist/providers/issue-tracker/types.d.ts +17 -0
  465. package/dist/providers/issue-tracker/types.js +39 -1
  466. package/dist/providers/jobs/claude-tool-setup.d.ts +4 -0
  467. package/dist/providers/jobs/claude-tool-setup.js +5 -2
  468. package/dist/providers/jobs/docker-isolation.d.ts +8 -0
  469. package/dist/providers/jobs/docker-isolation.js +17 -0
  470. package/dist/providers/jobs/docker.d.ts +1 -0
  471. package/dist/providers/jobs/docker.js +29 -4
  472. package/dist/providers/jobs/fake-kubernetes-api.d.ts +23 -2
  473. package/dist/providers/jobs/fake-kubernetes-api.js +45 -1
  474. package/dist/providers/jobs/kubernetes-api.d.ts +25 -1
  475. package/dist/providers/jobs/kubernetes-api.js +17 -0
  476. package/dist/providers/jobs/kubernetes-client.d.ts +10 -1
  477. package/dist/providers/jobs/kubernetes-client.js +61 -3
  478. package/dist/providers/jobs/kubernetes-dry-run-fixture.d.ts +6 -1
  479. package/dist/providers/jobs/kubernetes-dry-run-fixture.js +6 -3
  480. package/dist/providers/jobs/kubernetes-isolation.d.ts +5 -1
  481. package/dist/providers/jobs/kubernetes-isolation.js +23 -1
  482. package/dist/providers/jobs/kubernetes-platform.d.ts +4 -1
  483. package/dist/providers/jobs/kubernetes-platform.js +38 -1
  484. package/dist/providers/jobs/kubernetes-preflight.d.ts +2 -1
  485. package/dist/providers/jobs/kubernetes-preflight.js +4 -2
  486. package/dist/providers/jobs/kubernetes.d.ts +42 -2
  487. package/dist/providers/jobs/kubernetes.js +178 -19
  488. package/dist/providers/jobs/metadata-probes.d.ts +11 -0
  489. package/dist/providers/jobs/metadata-probes.js +13 -0
  490. package/dist/providers/jobs/types.d.ts +42 -0
  491. package/dist/providers/jobs/types.js +13 -1
  492. package/dist/providers/llm/anthropic.js +5 -1
  493. package/dist/providers/llm/bedrock.d.ts +0 -12
  494. package/dist/providers/llm/bedrock.js +4 -0
  495. package/dist/providers/llm/claude-messages.d.ts +3 -1
  496. package/dist/providers/llm/claude-messages.js +4 -1
  497. package/dist/providers/llm/claude-provider.d.ts +2 -2
  498. package/dist/providers/llm/claude-provider.js +2 -2
  499. package/dist/providers/llm/openai.d.ts +2 -2
  500. package/dist/providers/llm/openai.js +6 -2
  501. package/dist/providers/llm/routing.d.ts +2 -2
  502. package/dist/providers/llm/routing.js +2 -2
  503. package/dist/providers/llm/types.d.ts +12 -2
  504. package/dist/providers/review-host/github-events.d.ts +9 -1
  505. package/dist/providers/review-host/github-events.js +34 -12
  506. package/dist/providers/review-host/github.d.ts +39 -2
  507. package/dist/providers/review-host/github.js +274 -29
  508. package/dist/providers/review-host/local.d.ts +8 -4
  509. package/dist/providers/review-host/local.js +49 -31
  510. package/dist/providers/review-host/patch-pages.d.ts +41 -0
  511. package/dist/providers/review-host/patch-pages.js +176 -0
  512. package/dist/providers/review-host/review-format.d.ts +19 -1
  513. package/dist/providers/review-host/review-format.js +38 -7
  514. package/dist/providers/review-host/types.d.ts +157 -2
  515. package/dist/providers/review-host/types.js +8 -0
  516. package/dist/providers/storage/gcs.d.ts +63 -0
  517. package/dist/providers/storage/gcs.js +69 -0
  518. package/dist/providers/storage/index.d.ts +15 -0
  519. package/dist/providers/storage/index.js +14 -0
  520. package/dist/providers/storage/local.d.ts +24 -0
  521. package/dist/providers/storage/local.js +92 -0
  522. package/dist/providers/storage/meter.d.ts +14 -0
  523. package/dist/providers/storage/meter.js +34 -0
  524. package/dist/providers/storage/s3.d.ts +41 -0
  525. package/dist/providers/storage/s3.js +107 -0
  526. package/dist/providers/storage/types.d.ts +37 -3
  527. package/dist/providers/storage/types.js +21 -4
  528. package/dist/providers/vcs/git.d.ts +33 -2
  529. package/dist/providers/vcs/git.js +324 -22
  530. package/dist/providers/vcs/github-remote.d.ts +26 -3
  531. package/dist/providers/vcs/github-remote.js +124 -14
  532. package/dist/providers/vcs/github.d.ts +246 -12
  533. package/dist/providers/vcs/github.js +521 -61
  534. package/dist/providers/vcs/index.js +8 -1
  535. package/dist/providers/vcs/pr-description.d.ts +127 -0
  536. package/dist/providers/vcs/pr-description.js +270 -0
  537. package/dist/providers/vcs/remote.d.ts +33 -1
  538. package/dist/providers/vcs/routing.d.ts +4 -2
  539. package/dist/providers/vcs/routing.js +6 -0
  540. package/dist/providers/vcs/types.d.ts +80 -3
  541. package/dist/quickstart/coding-seed.d.ts +21 -3
  542. package/dist/quickstart/coding-seed.js +283 -3
  543. package/dist/quickstart/images.d.ts +2 -0
  544. package/dist/quickstart/images.js +7 -1
  545. package/dist/quickstart/reviewer-prompt.d.ts +1 -1
  546. package/dist/quickstart/reviewer-prompt.js +6 -6
  547. package/dist/quickstart-images.json +1 -1
  548. package/dist/sandbox/brokered-fetch.d.ts +23 -0
  549. package/dist/sandbox/brokered-fetch.js +37 -0
  550. package/dist/sandbox/generated/zod.bundle.js +62 -1
  551. package/dist/sandbox/generated/zod3.bundle.js +5 -0
  552. package/dist/sandbox/host-functions.d.ts +35 -0
  553. package/dist/sandbox/host-functions.js +150 -91
  554. package/dist/sandbox/prelude.js +7 -1
  555. package/dist/sandbox/run-in-sandbox.d.ts +19 -0
  556. package/dist/sandbox/run-in-sandbox.js +28 -10
  557. package/dist/sandbox/safe-fetch.d.ts +2 -0
  558. package/dist/sandbox/safe-fetch.js +3 -1
  559. package/dist/sandbox/secret-broker-sigv4.d.ts +2 -0
  560. package/dist/sandbox/secret-broker-sigv4.js +49 -0
  561. package/dist/sandbox/secret-broker.d.ts +34 -0
  562. package/dist/sandbox/secret-broker.js +161 -0
  563. package/dist/sandbox/tool-capabilities.d.ts +10 -30
  564. package/dist/sandbox/user-tool.d.ts +14 -0
  565. package/dist/sandbox/user-tool.js +32 -0
  566. package/dist/sandbox/zod-params.d.ts +37 -5
  567. package/dist/sandbox/zod-params.js +181 -26
  568. package/dist/serve.js +25 -0
  569. package/dist/viewer/api-schema.d.ts +372 -2454
  570. package/dist/viewer/api-schema.js +29 -0
  571. package/dist/viewer/build-schemas.js +10 -3
  572. package/dist/viewer/event-bus.d.ts +6 -0
  573. package/dist/viewer/event-bus.js +16 -7
  574. package/dist/viewer/graph.d.ts +5 -2
  575. package/dist/viewer/graph.js +7 -2
  576. package/dist/viewer/http.d.ts +0 -1
  577. package/dist/viewer/http.js +2 -2
  578. package/dist/viewer/infra.js +25 -2
  579. package/dist/viewer/limits.d.ts +4 -0
  580. package/dist/viewer/limits.js +4 -0
  581. package/dist/viewer/openapi.d.ts +15 -0
  582. package/dist/viewer/openapi.js +170 -0
  583. package/dist/wardby-bin.js +10 -0
  584. package/docs/README.md +7 -0
  585. package/docs/agent-recipes.md +114 -27
  586. package/docs/architecture-runtime.md +16 -1
  587. package/docs/code-review-agents.md +689 -45
  588. package/docs/coding-agent-setup.md +602 -12
  589. package/docs/coding-packages.md +1037 -92
  590. package/docs/coding-services.md +30 -13
  591. package/docs/coding-worker-byo-images.md +218 -6
  592. package/docs/coding-worker-isolation.md +173 -44
  593. package/docs/getting-started-gke.md +332 -129
  594. package/docs/getting-started-identity-provider.md +31 -11
  595. package/docs/getting-started.md +14 -4
  596. package/docs/jira-agents.md +22 -9
  597. package/docs/knowledge/blob-not-found-semantics.md +41 -0
  598. package/docs/knowledge/bounded-file-descriptor.md +52 -0
  599. package/docs/knowledge/delegation-admission-slots.md +52 -0
  600. package/docs/knowledge/http-dispatcher-bootstrap.md +61 -0
  601. package/docs/knowledge/import-rename-target.md +52 -0
  602. package/docs/knowledge/index.md +57 -0
  603. package/docs/knowledge/log.md +9 -0
  604. package/docs/knowledge/mcp-cancelled-task-precedence.md +41 -0
  605. package/docs/knowledge/mcp-http-prompt-discovery.md +41 -0
  606. package/docs/knowledge/mcp-schema-module-boundary.md +41 -0
  607. package/docs/knowledge/nullable-tool-uniqueness.md +52 -0
  608. package/docs/knowledge/overview-cli.md +74 -0
  609. package/docs/knowledge/overview-coding-proxy.md +72 -0
  610. package/docs/knowledge/overview-coding.md +72 -0
  611. package/docs/knowledge/overview-config.md +60 -0
  612. package/docs/knowledge/overview-core.md +72 -0
  613. package/docs/knowledge/overview-deploy.md +83 -0
  614. package/docs/knowledge/overview-mcp.md +61 -0
  615. package/docs/knowledge/overview-prisma.md +72 -0
  616. package/docs/knowledge/overview-providers.md +89 -0
  617. package/docs/knowledge/overview-sandbox.md +83 -0
  618. package/docs/knowledge/overview-surfaces.md +83 -0
  619. package/docs/knowledge/private-datastore-shared-boundary.md +54 -0
  620. package/docs/knowledge/proxy-settlement-projections.md +41 -0
  621. package/docs/knowledge/run-pricing-first-writer.md +43 -0
  622. package/docs/knowledge/schedule-claim-transaction.md +41 -0
  623. package/docs/knowledge/secret-entry-replica-contract.md +52 -0
  624. package/docs/knowledge/terminal-run-first-writer.md +41 -0
  625. package/docs/knowledge/transactional-agent-authorization.md +52 -0
  626. package/docs/knowledge/viewer-notify-write-isolation.md +30 -0
  627. package/docs/knowledge/warm-input-publication.md +30 -0
  628. package/docs/knowledge/workspace-staging-failure.md +54 -0
  629. package/docs/knowledge.md +54 -14
  630. package/docs/native-sandbox.md +731 -0
  631. package/docs/observability.md +4 -0
  632. package/docs/release-verification.md +9 -0
  633. package/docs/security-deployment.md +146 -14
  634. package/docs/slack-notifications.md +268 -0
  635. package/docs/tool-secrets.md +284 -0
  636. package/docs/viewer-api.md +46 -5
  637. package/docs/viewer-api.openapi.yml +1404 -0
  638. package/help/admin-viewer.md +29 -3
  639. package/help/agent-recipes.md +27 -0
  640. package/help/architecture-agent.md +11 -6
  641. package/help/brokered-secrets.md +79 -0
  642. package/help/build-claude-code-image.md +131 -0
  643. package/help/build-worker-image.md +6 -7
  644. package/help/builder-agent.md +19 -6
  645. package/help/code-review-agents.md +243 -10
  646. package/help/coding-packages.md +156 -6
  647. package/help/cost-attribution.md +9 -5
  648. package/help/creating-agents.md +14 -1
  649. package/help/dependency-cache.md +143 -0
  650. package/help/deploy-gke.md +23 -9
  651. package/help/deployment-targets.md +25 -14
  652. package/help/errors/budget-exhausted.md +187 -0
  653. package/help/errors/budget-group-exhausted.md +5 -1
  654. package/help/errors/coding-provider-not-configured.md +2 -2
  655. package/help/errors/coding-stream-quota-exceeded.md +33 -0
  656. package/help/errors/coding-workspace-disk-exceeds-limit.md +39 -0
  657. package/help/errors/continuation-closed.md +9 -12
  658. package/help/errors/database-auth-invalid.md +28 -0
  659. package/help/errors/delegation-conflict.md +24 -0
  660. package/help/errors/file-list-truncated.md +45 -0
  661. package/help/errors/full-read-required.md +49 -0
  662. package/help/errors/github-account-not-allowed.md +29 -0
  663. package/help/errors/graph-incomplete.md +43 -0
  664. package/help/errors/graph-limit.md +43 -0
  665. package/help/errors/low-power-disabled.md +29 -0
  666. package/help/errors/low-power-scale-forbidden.md +35 -0
  667. package/help/errors/low-power-wake-timeout.md +30 -0
  668. package/help/errors/merge-conflict.md +49 -0
  669. package/help/errors/mobile-disabled.md +31 -0
  670. package/help/errors/native-sandbox-capacity.md +22 -0
  671. package/help/errors/native-sandbox-deadline-exceeded.md +19 -0
  672. package/help/errors/native-sandbox-docker-failed.md +20 -0
  673. package/help/errors/native-sandbox-gateway-error.md +20 -0
  674. package/help/errors/native-sandbox-gateway-unavailable.md +21 -0
  675. package/help/errors/native-sandbox-image-not-pinned.md +19 -0
  676. package/help/errors/native-sandbox-isolation-mismatch.md +20 -0
  677. package/help/errors/native-sandbox-launch-abandoned.md +21 -0
  678. package/help/errors/native-sandbox-network-unenforced.md +22 -0
  679. package/help/errors/native-sandbox-requires-catalog.md +31 -0
  680. package/help/errors/native-sandbox-unavailable.md +19 -0
  681. package/help/errors/native-sandbox-warm-delivery-failed.md +21 -0
  682. package/help/errors/native-sandbox-worker-exited.md +21 -0
  683. package/help/errors/native-sandbox-worker-lost.md +20 -0
  684. package/help/errors/native-sandbox-worker-unready.md +22 -0
  685. package/help/errors/package-not-allowed-pending.md +52 -0
  686. package/help/errors/package-not-allowed.md +51 -0
  687. package/help/errors/package-refusals.md +43 -0
  688. package/help/errors/patch-cursor-malformed.md +31 -0
  689. package/help/errors/run-lost.md +39 -0
  690. package/help/errors/run-transcript-download.md +44 -0
  691. package/help/errors/secret-broker-body-invalid.md +26 -0
  692. package/help/errors/secret-broker-changed.md +20 -0
  693. package/help/errors/secret-broker-config-invalid.md +30 -0
  694. package/help/errors/secret-broker-conflict.md +27 -0
  695. package/help/errors/secret-broker-destination-denied.md +28 -0
  696. package/help/errors/secret-broker-value-invalid.md +28 -0
  697. package/help/errors/secret-brokered.md +24 -0
  698. package/help/errors/secret-in-value.md +69 -0
  699. package/help/errors/secret-not-brokered.md +25 -0
  700. package/help/errors/slack-auth-failed.md +48 -0
  701. package/help/errors/slack-channel-unreachable.md +39 -0
  702. package/help/errors/slack-not-configured.md +33 -0
  703. package/help/errors/target-merge.md +40 -0
  704. package/help/fix-merge-conflicts.md +73 -0
  705. package/help/getting-started.md +4 -5
  706. package/help/github-app-setup.md +132 -0
  707. package/help/github.md +40 -1
  708. package/help/identity-and-access.md +7 -1
  709. package/help/jira.md +23 -6
  710. package/help/knowledge.md +16 -7
  711. package/help/local-repositories.md +3 -4
  712. package/help/low-power-mode.md +131 -0
  713. package/help/merge-order-check.md +122 -0
  714. package/help/mobile-app.md +54 -0
  715. package/help/native-capabilities.md +29 -1
  716. package/help/native-sandbox.md +150 -0
  717. package/help/observability.md +8 -0
  718. package/help/operating-agents.md +5 -0
  719. package/help/package-audit-mode.md +91 -0
  720. package/help/related-pull-requests.md +80 -16
  721. package/help/repo-instructions-and-skills.md +91 -0
  722. package/help/resume-runs-locally.md +131 -0
  723. package/help/review-fix-rounds.md +43 -1
  724. package/help/sharing-agents.md +59 -0
  725. package/help/slack-notifications.md +76 -0
  726. package/help/status-comments.md +31 -0
  727. package/help/stop-run.md +58 -0
  728. package/help/troubleshooting/budgets.md +28 -0
  729. package/help/troubleshooting/coding-workers.md +99 -7
  730. package/package.json +27 -13
  731. package/prisma/migrations/20261009000003_native_execution_mode/migration.sql +12 -0
  732. package/prisma/migrations/20261009000004_native_gateway_ledger/migration.sql +65 -0
  733. package/prisma/migrations/20261009000005_native_gateway_call_child_agent/migration.sql +5 -0
  734. package/prisma/migrations/20261009000006_run_deferred_start_stop/migration.sql +14 -0
  735. package/prisma/migrations/20261009000007_native_gateway_network_ready/migration.sql +5 -0
  736. package/prisma/migrations/20261010000001_workflow_notifications/migration.sql +99 -0
  737. package/prisma/migrations/20261011000001_native_gateway_session_status_index/migration.sql +2 -0
  738. package/prisma/migrations/20261012000001_native_warm_worker/migration.sql +32 -0
  739. package/prisma/migrations/20261013000001_coding_run_merge_order/migration.sql +2 -0
  740. package/prisma/migrations/20261013000001_secret_broker/migration.sql +17 -0
  741. package/prisma/migrations/20261013000002_deferred_review_request/migration.sql +4 -0
  742. package/prisma/migrations/20261014000000_repo_skills/migration.sql +15 -0
  743. package/prisma/migrations/20261015000001_coding_run_merge_order_index/migration.sql +2 -0
  744. package/prisma/migrations/20261015000002_no_change_rereview/migration.sql +2 -0
  745. package/prisma/migrations/20261016000000_registry_approved_accepted_advisories/migration.sql +3 -0
  746. package/prisma/migrations/20261016000001_mark_ready_when_passing/migration.sql +3 -0
  747. package/prisma/migrations/20261017000000_debug_trace_max_mb/migration.sql +4 -0
  748. package/prisma/migrations/20261018000000_dependency_cache/migration.sql +53 -0
  749. package/prisma/migrations/20261019000000_claude_max_output_tokens/migration.sql +5 -0
  750. package/prisma/migrations/20261021000000_pr_description_hash/migration.sql +4 -0
  751. package/prisma/migrations/20261022000000_dependency_snapshot_validation_metadata/migration.sql +4 -0
  752. package/prisma/migrations/20261023000000_package_audit_mode/migration.sql +27 -0
  753. package/prisma/migrations/20261024000000_budget_events/migration.sql +26 -0
  754. package/prisma/migrations/20261025000000_cache_aware_holds/migration.sql +9 -0
  755. package/prisma/migrations/20261026000000_budget_overrun/migration.sql +4 -0
  756. package/prisma/migrations/20261027000000_coding_run_request/migration.sql +1 -0
  757. package/prisma/migrations/20261028000000_native_gateway_review_reads/migration.sql +6 -0
  758. package/prisma/migrations/20261029000000_lead_survives_deploy/migration.sql +6 -0
  759. package/prisma/migrations/20261030000000_local_review_covered_sha/migration.sql +2 -0
  760. package/prisma/migrations/20261031000000_coding_run_budget_limit/migration.sql +9 -0
  761. package/prisma/migrations/20261101000000_run_transcripts/migration.sql +22 -0
  762. package/prisma/schema.prisma +631 -146
  763. package/dist/sandbox/generated/zod-to-json-schema.bundle.js +0 -5
@@ -1,14 +1,32 @@
1
+ import { type PackageAuditEntry, type PackageAuditMode } from "../../coding/registry/audit-mode.js";
1
2
  import type { PrismaClient } from "#prisma";
3
+ import type { RunTranscriptRecorder } from "../../coding/transcript/recorder.js";
2
4
  import { type CodingProvider } from "../../coding/provider.js";
5
+ import { type TopUpOutcome } from "../../core/budget-topup.js";
3
6
  import type { IssueTrackerRegistry } from "../issue-tracker/types.js";
4
7
  import { type RepoAccessGate } from "../../core/repo-access.js";
5
8
  import { type CodingRunObserver } from "../../coding/observability.js";
6
- import { type CodingRunResult } from "../../coding/protocol.js";
9
+ import { type CodingRunResult, type DependencyCacheReport } from "../../coding/protocol.js";
7
10
  import type { ProxyModelTerms, ProxyProtocol } from "../coding-proxy/types.js";
8
- import type { JobHandle, JobResourceLimits, WorkspaceJobLauncher } from "../jobs/types.js";
9
- import type { VcsProvider } from "../vcs/types.js";
11
+ import { type BudgetEventView } from "../../core/budget-events.js";
12
+ import { type JobHandle, type JobResourceLimits, type WorkspaceJobLauncher } from "../jobs/types.js";
13
+ import type { DescriptionWriteOutcome, VcsProvider } from "../vcs/types.js";
10
14
  import type { CodingImageSelector, ExecutionRecoveryResult, Executor, PersistedExecutionHandle } from "./types.js";
11
- import type { RelatedPullRequestEntry } from "../vcs/github.js";
15
+ import { type DescriptionBaseline, type RelatedPullRequestEntry } from "../vcs/github.js";
16
+ /** The longest a no-change fix round's description refresh may hold up the run's terminal write. */
17
+ export declare const DESCRIPTION_REFRESH_TIMEOUT_MS = 60000;
18
+ /**
19
+ * After the cluster refuses a run's launch for capacity, how long this executor leaves the run
20
+ * waiting in the queue before trying it again (drainCodingQueue starts it every tick meanwhile).
21
+ */
22
+ export declare const CAPACITY_RETRY_BACKOFF_MS = 60000;
23
+ /**
24
+ * What requeueAfterCapacityRefusal did: "requeued" the run waits in the queue again; "not_owned"
25
+ * the attempt no longer owns the run (another took it, or it ended), and nothing changed;
26
+ * "spend_recorded" its proxy session has spend against it, so nothing changed and the caller
27
+ * fails the run instead.
28
+ */
29
+ export type CapacityRequeueOutcome = "requeued" | "not_owned" | "spend_recorded";
12
30
  /**
13
31
  * Claude Code's commands run in its tool runner, which never reports back through the agent, so the
14
32
  * host rewrites registry-proxy download URLs in collected lockfiles itself (the Codex driver does it
@@ -21,15 +39,77 @@ export interface CodingRunRecord {
21
39
  resultBranch?: string;
22
40
  /** The commit the run started from. */
23
41
  baseSha?: string;
42
+ /** The worker's dependency cache report (CodingWorkerOutput.dependencyCache), on a run that used it. */
43
+ dependencyCacheResult?: DependencyCacheReport;
44
+ /** This run's pull request description outcome (descriptionOutcomeLabel); absent = not attempted. */
45
+ prDescriptionOutcome?: string;
46
+ /** A fresh run that wrote its PR's description: the hash, on its own (root) row. */
47
+ prDescriptionSha256?: string;
48
+ /** With prDescriptionSha256: the run whose text the description carries (the fresh run itself). */
49
+ prDescriptionRunId?: string;
50
+ }
51
+ /** The stored form of a description outcome: written, replaced, refreshed:<reason>, unchanged, edited_by_hand, skipped:<reason>. */
52
+ export declare function descriptionOutcomeLabel(outcome: DescriptionWriteOutcome): string;
53
+ /**
54
+ * What the root run of a legacy pull request (no recorded description hash)
55
+ * stored, from which the description it wrote is rebuilt. Raw stored values:
56
+ * the executor validates them.
57
+ */
58
+ export interface LegacyDescriptionSource {
59
+ repository: string;
60
+ baseRef: string;
61
+ headRef: string;
62
+ /** The root run's final message (CodingRun.result.summary); absent = nothing to rebuild. */
63
+ summary?: string;
64
+ /** CodingRun.result.tests, as stored. */
65
+ tests?: unknown;
66
+ /** CodingRun.dependencyCacheResult, as stored. */
67
+ dependencyCache?: unknown;
68
+ issueProvider?: string | null;
69
+ issueKey?: string | null;
24
70
  }
71
+ /**
72
+ * Where a continuation's pull request came from, to find the issue it was
73
+ * opened for: the root run's tracker issue, and the mention status (issue or
74
+ * pull request number) of the nearest run above the root that has one.
75
+ */
76
+ export interface LinkedIssueSource {
77
+ issueProvider?: string | null;
78
+ issueKey?: string | null;
79
+ /** `issueMention`: that run was started by a mention on an issue (isIssueMentionTask), not on a pull request. */
80
+ hostStatus?: {
81
+ provider: string;
82
+ repository: string;
83
+ number: number;
84
+ issueMention?: boolean;
85
+ } | null;
86
+ }
87
+ /** An issue to read for a continuation's task. */
88
+ export type LinkedIssueRef = {
89
+ provider: "github";
90
+ repository: string;
91
+ number: number;
92
+ } | {
93
+ provider: "jira";
94
+ key: string;
95
+ };
96
+ /** The longest reading the linked issue may hold up a continuation's launch. */
97
+ export declare const LINKED_ISSUE_READ_TIMEOUT_MS = 15000;
98
+ /** The store's description baseline; `legacySource` only on a legacy pull request. */
99
+ export type StoredDescriptionBaseline = DescriptionBaseline & {
100
+ legacySource?: LegacyDescriptionSource;
101
+ };
25
102
  export interface ContainerRunSnapshot {
26
103
  runId: string;
104
+ agentId: string;
27
105
  status: string;
28
106
  agentKind: string;
29
107
  /** Human-readable agent name (e.g. "knock-knock-implement") -- surfaced in continuation status notifications. */
30
108
  agentName: string;
31
109
  ownerId: string | null;
32
110
  task: string;
111
+ /** The run's raw request (no standing instructions); absent on older runs. */
112
+ request?: string;
33
113
  repository: string;
34
114
  baseRef: string;
35
115
  headRef: string;
@@ -44,9 +124,18 @@ export interface ContainerRunSnapshot {
44
124
  /** The issue that triggered this run (CodingRun.issueProvider/issueKey); null when none. */
45
125
  issueProvider?: string | null;
46
126
  issueKey?: string | null;
127
+ /** Step in the delegating agent's declared merge order (CodingRun.mergeOrder); null = no order. */
128
+ mergeOrder?: number | null;
47
129
  budgetUsd: number;
48
130
  /** The agent's own per-run budget; `budgetUsd` is less when its budget group had less left. */
49
131
  agentBudgetUsd?: number;
132
+ /** The run's budget before the agent's allowed overrun (CodingRun.budgetBaseUsd); absent for older runs. */
133
+ budgetBaseUsd?: number;
134
+ /**
135
+ * The most the run may spend through overrun top-ups (CodingRun.budgetLimitUsd); `budgetUsd` is
136
+ * what it has been granted so far. Absent for older runs and runs without an allowed overrun.
137
+ */
138
+ budgetLimitUsd?: number;
50
139
  budgetGroupName?: string | null;
51
140
  tokensIn: number;
52
141
  tokensOut: number;
@@ -61,8 +150,20 @@ export interface ContainerRunSnapshot {
61
150
  workspaceDiskMb: number | null;
62
151
  /** Admin-requested debug trace, fixed at dispatch (CodingRun.debugTrace). */
63
152
  debugTrace?: boolean;
153
+ /** The traced run's trace cap in MiB, fixed at dispatch (CodingRun.debugTraceMaxMb); null = the worker default. */
154
+ debugTraceMaxMb?: number | null;
64
155
  /** Claude Code turn limit, fixed at dispatch (CodingRun.maxTurns); null = the worker default. */
65
156
  maxTurns?: number | null;
157
+ /** Claude Code output tokens per reply, fixed at dispatch (CodingRun.maxOutputTokens); null = the worker default. */
158
+ maxOutputTokens?: number | null;
159
+ /** Load the repo's agent skills, fixed at dispatch (CodingRun.repoSkills); absent on older snapshots = true. */
160
+ repoSkills?: boolean;
161
+ /** Claude Code loading mode, fixed at dispatch (CodingRun.claudeBareMode); absent on older snapshots = true. */
162
+ claudeBareMode?: boolean;
163
+ /** Dependency cache, fixed at dispatch (CodingRun.dependencyCache); absent on older snapshots = false. */
164
+ dependencyCache?: boolean;
165
+ /** Session resume, fixed at dispatch (CodingRun.sessionResume); absent on older snapshots = false. */
166
+ sessionResume?: boolean;
66
167
  /** Coding-run services resolved at dispatch (CodingRun.services); parsed with parseStoredServices. */
67
168
  services?: unknown;
68
169
  /** The terminal failure category, once the run has one (CodingRun.failureCategory). */
@@ -92,6 +193,18 @@ export interface ContainerExecutionStore {
92
193
  */
93
194
  markQueued?(runId: string): Promise<void>;
94
195
  persistHandle(runId: string, claimId: string, handle: JobHandle): Promise<void>;
196
+ /**
197
+ * Returns a run whose launch the backend refused for capacity (JobCapacityError) to the coding
198
+ * queue: pending, no job handle, no proxy session, and queuedAt the run's dispatch time, so it
199
+ * keeps its place and CODING_QUEUE_TIMEOUT_SEC still counts from when it first waited. Only while
200
+ * the caller still owns it (the provisioning claim, or the planned handle it persisted — all
201
+ * recovery has after a crash), and only when its session has no spend; otherwise it changes
202
+ * nothing and says why. Optional: without it the refused run fails.
203
+ */
204
+ requeueAfterCapacityRefusal?(runId: string, owned: {
205
+ claimId?: string;
206
+ planned?: JobHandle;
207
+ }): Promise<CapacityRequeueOutcome>;
95
208
  heartbeat(runId: string): Promise<void>;
96
209
  /**
97
210
  * The pull requests already opened for the same request as this run (same
@@ -99,8 +212,62 @@ export interface ContainerExecutionStore {
99
212
  * Related pull requests section. Optional: without it no section is written.
100
213
  */
101
214
  relatedPullRequests?(runId: string): Promise<RelatedPullRequestEntry[]>;
215
+ /**
216
+ * The root run's record of the PR description wardby last wrote, for a fix
217
+ * round's description update. Optional: without it fix rounds leave the
218
+ * description alone.
219
+ */
220
+ pullRequestDescriptionBaseline?(rootRunId: string): Promise<StoredDescriptionBaseline>;
221
+ /**
222
+ * The runs that pushed to the root run's pull request (the root, then its
223
+ * continuations whose result pushed, oldest first), for the cumulative
224
+ * Packages section. Optional: without it the section lists this run's only.
225
+ */
226
+ pullRequestRunIds?(rootRunId: string): Promise<string[]>;
227
+ /**
228
+ * Whether wardby marked the root run's pull request ready for review
229
+ * (CodingRun.markedReadyAt). Optional: the fallback when the host's draft
230
+ * state is unknown; without it the pull request counts as a draft.
231
+ */
232
+ pullRequestMarkedReady?(rootRunId: string): Promise<boolean>;
233
+ /**
234
+ * Where the root run's pull request came from (see LinkedIssueSource).
235
+ * Optional: without it continuations get no issue text.
236
+ */
237
+ linkedIssueSource?(rootRunId: string): Promise<LinkedIssueSource>;
238
+ /**
239
+ * Compare-and-set of the root run's description hash and author run: writes
240
+ * only while the root still records `expectedSha256` (null = none). False
241
+ * when another write got there first.
242
+ */
243
+ recordPullRequestDescription?(input: {
244
+ rootRunId: string;
245
+ expectedSha256: string | null;
246
+ sha256: string;
247
+ agentTextRunId: string;
248
+ }): Promise<boolean>;
102
249
  complete(runId: string, status: "succeeded" | "budget_exhausted", result: CodingRunResult, record?: CodingRunRecord): Promise<void>;
103
- terminate(runId: string, status: "failed" | "refused" | "lost" | "budget_exhausted" | "cancelled", error: string, audit?: CodingFailureAudit): Promise<void>;
250
+ terminate(runId: string, status: "failed" | "refused" | "lost" | "budget_exhausted" | "cancelled", error: string, audit?: CodingFailureAudit): Promise<boolean>;
251
+ /**
252
+ * Copies the proxy session's first budget refusal (CodingProxySession.budgetRefusal, written by the
253
+ * proxy, which has no access to RunBudgetEvent) into the run's budget events, once per run, whatever
254
+ * status the run ends with. A session that never recorded one adds nothing. Optional: without it no
255
+ * event is written.
256
+ */
257
+ recordBudgetRefusal?(runId: string, sessionId: string): Promise<void>;
258
+ /** The run's recorded budget refusal with names filled in, or null. Optional: without it no event is shown. */
259
+ budgetEvent?(runId: string): Promise<{
260
+ event: BudgetEventView;
261
+ agentName: string;
262
+ } | null>;
263
+ /**
264
+ * Grants a run with an overrun limit one top-up when it is close to its grant and its budget group
265
+ * and run tree have room (budget-topup.ts). Optional: without it a run stops at its base.
266
+ */
267
+ topUpBudget?(runId: string): Promise<{
268
+ outcome: TopUpOutcome;
269
+ near?: boolean;
270
+ }>;
104
271
  }
105
272
  export interface CodingFailureAudit {
106
273
  failureCategory: string;
@@ -120,12 +287,35 @@ export declare class PrismaContainerExecutionStore implements ContainerExecution
120
287
  private get hasTrackers();
121
288
  load(runId: string): Promise<ContainerRunSnapshot | null>;
122
289
  relatedPullRequests(runId: string): Promise<RelatedPullRequestEntry[]>;
290
+ pullRequestMarkedReady(rootRunId: string): Promise<boolean>;
291
+ pullRequestDescriptionBaseline(rootRunId: string): Promise<StoredDescriptionBaseline>;
292
+ linkedIssueSource(rootRunId: string): Promise<LinkedIssueSource>;
293
+ pullRequestRunIds(rootRunId: string): Promise<string[]>;
294
+ recordPullRequestDescription(input: {
295
+ rootRunId: string;
296
+ expectedSha256: string | null;
297
+ sha256: string;
298
+ agentTextRunId: string;
299
+ }): Promise<boolean>;
123
300
  claimProvisioning(runId: string, claimId: string): Promise<ProvisioningClaim>;
124
301
  markQueued(runId: string): Promise<void>;
302
+ requeueAfterCapacityRefusal(runId: string, owned: {
303
+ claimId?: string;
304
+ planned?: JobHandle;
305
+ }): Promise<CapacityRequeueOutcome>;
125
306
  persistHandle(runId: string, claimId: string, handle: JobHandle): Promise<void>;
126
307
  heartbeat(runId: string): Promise<void>;
127
308
  complete(runId: string, status: "succeeded" | "budget_exhausted", result: CodingRunResult, record?: CodingRunRecord): Promise<void>;
128
- terminate(runId: string, status: "failed" | "refused" | "lost" | "budget_exhausted" | "cancelled", error: string, audit?: CodingFailureAudit): Promise<void>;
309
+ recordBudgetRefusal(runId: string, sessionId: string): Promise<void>;
310
+ budgetEvent(runId: string): Promise<{
311
+ event: BudgetEventView;
312
+ agentName: string;
313
+ } | null>;
314
+ topUpBudget(runId: string): Promise<{
315
+ outcome: TopUpOutcome;
316
+ near?: boolean;
317
+ }>;
318
+ terminate(runId: string, status: "failed" | "refused" | "lost" | "budget_exhausted" | "cancelled", error: string, audit?: CodingFailureAudit): Promise<boolean>;
129
319
  }
130
320
  export interface CodingSessionController {
131
321
  createSession(input: {
@@ -155,6 +345,8 @@ export declare class RunCapabilityVault {
155
345
  delete(runId: string): void;
156
346
  }
157
347
  export interface ContainerExecutorOptions {
348
+ /** Session resume: stores a run's transcript before its job is removed. Absent = never captured. */
349
+ transcripts?: Pick<RunTranscriptRecorder, "record">;
158
350
  store: ContainerExecutionStore;
159
351
  jobs: WorkspaceJobLauncher;
160
352
  vcs: VcsProvider;
@@ -195,6 +387,15 @@ export interface ContainerExecutorOptions {
195
387
  * than on the next scheduler tick. Never called for a run that was queued.
196
388
  */
197
389
  onSlotReleased?: () => void;
390
+ /**
391
+ * Called with the run id at the end of each terminal finish of a collected
392
+ * job (succeeded, no change, budget, or failed), after the terminal write
393
+ * and cleanup. It may run more than once for one run (a replayed or
394
+ * duplicate finish), so it must be idempotent; a rejection or throw is
395
+ * logged and never reaches the terminal path. composition.ts wires the
396
+ * review-fix re-review here, so this executor imports no review logic.
397
+ */
398
+ onCodingRunTerminal?: (runId: string) => Promise<void> | void;
198
399
  /**
199
400
  * Loads this run's RegistryFetch ledger (composition.ts wires the Prisma
200
401
  * query) so finalizeChanges can surface installed/refused packages in the
@@ -203,6 +404,16 @@ export interface ContainerExecutorOptions {
203
404
  * reporting failure must never fail the run itself.
204
405
  */
205
406
  registryReport?: (runId: string) => Promise<RegistryReport>;
407
+ /**
408
+ * Reads an issue's title and body for a continuation's task (composition
409
+ * wires the review host's issue read and the issue tracker). Null when it
410
+ * isn't an issue (a pull request number) or can't be found. Optional:
411
+ * without it continuations get no issue text.
412
+ */
413
+ readLinkedIssue?: (ref: LinkedIssueRef) => Promise<{
414
+ title: string;
415
+ body: string;
416
+ } | null>;
206
417
  /** Browse URL for an issue of a tracker provider (composition wires the issue-tracker registry); undefined when unconfigured. */
207
418
  issueUrl?: (provider: string, key: string) => string | undefined;
208
419
  /**
@@ -212,18 +423,26 @@ export interface ContainerExecutorOptions {
212
423
  */
213
424
  repoAccess: RepoAccessGate;
214
425
  }
215
- /** A run's deduplicated served packages and refusals (see summarizeRegistryFetches). */
426
+ /** A run's deduplicated served packages and refusals (see summarizeRegistryFetches), and its package audit. */
427
+ /** The poll interval, at most, while a run with an overrun limit is near its grant. */
428
+ export declare const TOP_UP_NEAR_POLL_MS = 1000;
216
429
  export interface RegistryReport {
217
430
  packages: Array<{
218
431
  ecosystem: string;
219
432
  name: string;
220
433
  version: string;
434
+ acceptedAdvisories?: string[];
221
435
  }>;
222
436
  packageRefusals: Array<{
223
437
  ecosystem: string;
224
438
  name: string;
225
439
  reason: string;
440
+ listingOnly?: boolean;
226
441
  }>;
442
+ /** The run's package audit mode (CodingRun.packageAuditMode); absent when it was off. */
443
+ packageAuditMode?: PackageAuditMode;
444
+ /** What the registry served only because of it (summarizePackageAudit entries). */
445
+ packageAudit?: PackageAuditEntry[];
227
446
  }
228
447
  export declare class ContainerExecutor implements Executor {
229
448
  private readonly options;
@@ -233,6 +452,11 @@ export declare class ContainerExecutor implements Executor {
233
452
  private readonly now;
234
453
  private readonly observer;
235
454
  private readonly startedAt;
455
+ /**
456
+ * When the cluster last refused each queued run's launch for capacity (this.now() ms). Per
457
+ * process: another replica's drain may start the run again inside the backoff.
458
+ */
459
+ private readonly capacityRefusedAt;
236
460
  constructor(options: ContainerExecutorOptions);
237
461
  start(runId: string): Promise<void>;
238
462
  stop(runId: string, reason?: string): Promise<void>;
@@ -270,14 +494,120 @@ export declare class ContainerExecutor implements Executor {
270
494
  * access. Throws RepoAccessError (refused before anything is cloned).
271
495
  */
272
496
  private authorizeRepository;
273
- /** The originating issue for the PR title/body: control-plane data from the CodingRun row, key re-validated. */
497
+ /**
498
+ * The CodingRun's recorded issue as the Related section shows it (a Jira or
499
+ * GitHub issue): control-plane data from the CodingRun row, key re-validated.
500
+ */
501
+ private recordedIssue;
502
+ /**
503
+ * The originating tracker issue for the PR title/body. A GitHub issue is not
504
+ * one: its line comes from issueSourceFor (`From issue #N`).
505
+ */
274
506
  private issueFor;
507
+ /**
508
+ * The PR title/body's originating issue, whichever system it is in: the
509
+ * CodingRun's tracker issue (issueFor), else the GitHub issue in the same
510
+ * repository whose mention started the run tree (`From issue #N`). Read from
511
+ * the root run, so a continuation's rebuilt body keeps the root's line.
512
+ * Never throws: a failed lookup gives no issue line.
513
+ */
514
+ private issueSourceFor;
275
515
  /** The new PR's Related pull requests input: earlier PRs of the same request, then this one. Never throws. */
276
516
  private relatedFor;
277
517
  /** The run's stored model terms; a run from before the catalog resolves them from the current catalog. */
278
518
  private modelTerms;
519
+ /**
520
+ * `launched`: the run's job was already launched (it is running, or done and
521
+ * only its push is left). The cost check applies only before launch: one
522
+ * reply can cost more than its hold, so a launched run may already be past
523
+ * its limit, and its finished work is still delivered.
524
+ */
279
525
  private preflight;
280
526
  private finishTerminal;
527
+ /** Whether the run's workspace merged its pull request's target branch (PreparedWorkspace.targetMerge). */
528
+ private mergedTargetBranch;
529
+ /**
530
+ * Pushes a finished job's changes: copies the job's workspace into the run's,
531
+ * then, right before finalizeChanges pushes, checks again that the owner still
532
+ * has access and that the run was not stopped meanwhile. Shared by a finished
533
+ * run and one stopped at its budget; throws whatever stops the push.
534
+ */
535
+ private pushChanges;
536
+ /**
537
+ * A run stopped at its budget whose worker exited cleanly keeps its changes so
538
+ * far: they are pushed as the usual draft (or branch), with a summary that says
539
+ * the work is unfinished. A fresh pull request's description starts with that
540
+ * summary; a continuation leaves its pull request's description alone (the
541
+ * status comment says the run stopped), and pushes nothing onto a pull request
542
+ * that is no longer a draft. Null when there was nothing to push or the push
543
+ * failed or was skipped for any reason: the run then ends out of budget without
544
+ * them. Once pushed, the pushed outcome is always returned. Throws only when the
545
+ * run was stopped meanwhile (the stop wrote its terminal row).
546
+ */
547
+ private keepStoppedChanges;
548
+ /**
549
+ * The pull request description a continuation run is about to replace, for
550
+ * its task. Undefined for a fresh run or when it cannot be loaded: the run
551
+ * goes ahead without the note.
552
+ */
553
+ private currentDescriptionText;
554
+ /**
555
+ * The issue a continuation's pull request was opened for, read for its task
556
+ * the way the first run had it: the root run's Jira issue, else the GitHub
557
+ * issue whose mention started the work (same repository), else the issue the
558
+ * description wardby last wrote closes (same repository). Each candidate is
559
+ * read in turn until one is an issue. Undefined for a fresh or local run, or
560
+ * on any failure: the run goes ahead without it.
561
+ */
562
+ private linkedIssueFor;
563
+ private readLinkedIssue;
564
+ /**
565
+ * A fix round's description baseline (null: no description flow -- a fresh
566
+ * run, or a store without it). Never throws: a load failure is recorded as
567
+ * skipped:error and the push goes ahead without a description update.
568
+ */
569
+ /**
570
+ * Whether a continuation's pull request is still a draft: the host's answer
571
+ * when it has one, else the root run's record of wardby marking it ready.
572
+ * A failed record lookup counts as not a draft (nothing unfinished is pushed).
573
+ */
574
+ private continuationStillDraft;
575
+ private descriptionStateFor;
576
+ /**
577
+ * A legacy pull request's description as its root run wrote it, rebuilt from
578
+ * stored records (the final message, tests, packages, dependency cache line
579
+ * and issue line; the Related section is not hashed), and hashed. Undefined
580
+ * when the root stored no final message, or on any failure: the description
581
+ * then counts as edited, the safe direction. A lock file line the root's
582
+ * refusal warning may have carried is not stored, so such a description
583
+ * never matches.
584
+ */
585
+ private legacyDescriptionSha256;
586
+ /**
587
+ * The Packages section's input: on a continuation, every package installed
588
+ * by the runs that pushed to the pull request plus this run (merged in run
589
+ * order); refusals are this run's only, since they describe the current
590
+ * state. A fresh run, or a failed listing, reports this run's alone.
591
+ */
592
+ private pullRequestRegistryReport;
593
+ /**
594
+ * The run's description columns for store.complete. A fresh run that wrote
595
+ * its PR records the hash on its own (root) row; a fix round that wrote or
596
+ * kept wardby's text compare-and-sets the root's hash. Never throws.
597
+ */
598
+ private recordDescription;
599
+ /**
600
+ * refreshDescriptionWithoutPush, capped at DESCRIPTION_REFRESH_TIMEOUT_MS so a
601
+ * slow host cannot hold up store.complete; a timeout is skipped:error.
602
+ */
603
+ private refreshDescriptionInTime;
604
+ /**
605
+ * A fix round that changed nothing still re-derives its PR description (no
606
+ * push). Never throws: any failure is recorded as skipped:error.
607
+ */
608
+ private refreshDescriptionWithoutPush;
609
+ /** Runs the onCodingRunTerminal hook; nothing it does, throws, or rejects reaches the caller. */
610
+ private notifyTerminal;
281
611
  /** The package report is informational: any failure loading it (a
282
612
  * rejection, a synchronous throw, or a malformed result) yields no
283
613
  * package section rather than failing finalization. */
@@ -286,7 +616,11 @@ export declare class ContainerExecutor implements Executor {
286
616
  resolveCodingWorkerImage(selector: CodingImageSelector): string;
287
617
  /** Claude's tool-runner image for the agent's toolchain, at dispatch (Executor.resolveCodingToolImage); null for Codex. */
288
618
  resolveCodingToolImage(selector: CodingImageSelector): string | null;
289
- /** The tool runner is what runs a Claude agent's commands, so it is what the toolchain selects. */
619
+ /**
620
+ * The tool runner is what runs a Claude agent's commands, so it is what the toolchain selects —
621
+ * unless the agent has a BYO workerImageRef, which replaces the tool runner directly (never the
622
+ * agent image; see resolveCodingWorkerImage).
623
+ */
290
624
  private claudeToolImage;
291
625
  /** Coding-run services: the repository's declaration at its base ref (Executor.readCodingServiceDeclaration). */
292
626
  readCodingServiceDeclaration(input: {
@@ -302,7 +636,29 @@ export declare class ContainerExecutor implements Executor {
302
636
  }): Promise<string | null>;
303
637
  /** The job launcher decides (Kubernetes and Docker start services for both providers). */
304
638
  supportsCodingServices(provider: CodingProvider): boolean;
639
+ /** Delegates to the job launcher's own warm-up (Executor.warmUp); a no-op for a launcher without one. */
640
+ warmUp(): Promise<void>;
641
+ /**
642
+ * Throws coding_run_no_longer_active once something else made the run terminal (a stop's
643
+ * cancellation fence): nothing may then be pushed, opened, or rewritten on the host for it.
644
+ */
645
+ private requireActive;
305
646
  private requireCurrent;
647
+ /**
648
+ * Recovery's half of a capacity refusal: the launcher recorded it, but the process died before the
649
+ * store put the run back in the queue. The planned handle the attempt persisted is the ownership
650
+ * proof; the run waits in the queue again, never reported ended.
651
+ */
652
+ private finishCapacityRequeue;
653
+ /**
654
+ * After drainCodingQueue failed a queued run (coding_queue_timeout): releases what an earlier
655
+ * attempt the cluster refused left behind, as stop() does for a queued run. A refused
656
+ * continuation already marked its pull request as being worked on; that check is finished
657
+ * here. Best effort; the artifact is removed only where this process wrote it.
658
+ */
659
+ cleanupQueueTimeout(runId: string): Promise<void>;
660
+ private recordCapacityRefusal;
661
+ private inCapacityBackoff;
306
662
  /**
307
663
  * False when the launcher reports this run's job would not fit the cluster right now; the run
308
664
  * is then queued and drainCodingQueue retries it. Launchers and stores without the hooks, and
@@ -313,9 +669,27 @@ export declare class ContainerExecutor implements Executor {
313
669
  private credentialRef;
314
670
  private writeInput;
315
671
  private artifactPath;
672
+ /**
673
+ * A continuation's pull request from the run record alone, for the host-side
674
+ * finish signals when the workspace is gone (another control-plane process
675
+ * launched the run). Null for a fresh run: it has no pull request yet.
676
+ */
677
+ private continuationTargetOf;
678
+ /**
679
+ * Session resume: never throws, never changes the run's outcome. The recorder redacts; only a status
680
+ * code is logged. The run capability is already gone from the vault, so it is not passed (the recorder
681
+ * removes its fixed token shape).
682
+ */
683
+ private recordTranscript;
316
684
  private preflightForCleanup;
317
685
  private abandon;
318
686
  private cleanupTerminal;
687
+ /**
688
+ * Records the session's budget refusal on the run, at every ending: a run the proxy refused once may
689
+ * still finish, fail for another reason, or be stopped. A session with no refusal adds nothing.
690
+ * Best effort; never throws.
691
+ */
692
+ private recordRefusal;
319
693
  /** Whether the proxy refused this run's session for budget. Never throws. */
320
694
  private outOfBudget;
321
695
  /** The model-provider failure the proxy relayed for this run's session, classified. Never throws. */
@@ -327,6 +701,8 @@ export declare class ContainerExecutor implements Executor {
327
701
  * still logged under its diagnostic id.
328
702
  */
329
703
  private providerFailureOf;
704
+ /** The overrun sentence for a finished run that spent past its base budget, as status details. */
705
+ private overrunDetails;
330
706
  /** The host-safe sentence for a run that ran out of budget. */
331
707
  private budgetSentence;
332
708
  /**