toolroll 0.9.93 → 0.9.95

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 (436) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/dist/activity-line.d.ts +7 -4
  3. package/dist/activity-line.js +9 -7
  4. package/dist/agent-fence.d.ts +10 -0
  5. package/dist/agent-fence.js +6 -3
  6. package/dist/approval-authority.d.ts +7 -1
  7. package/dist/approval-authority.js +11 -2
  8. package/dist/approval-password.d.ts +31 -0
  9. package/dist/approval-password.js +26 -0
  10. package/dist/assignment-status.d.ts +1 -1
  11. package/dist/assignment-ui.js +3 -1
  12. package/dist/assignment.js +5 -0
  13. package/dist/attest.d.ts +3 -0
  14. package/dist/attest.js +10 -0
  15. package/dist/boot-identity.d.ts +2 -1
  16. package/dist/boot-identity.js +6 -4
  17. package/dist/bounded-spawn.d.ts +57 -0
  18. package/dist/bounded-spawn.js +220 -0
  19. package/dist/browser/terminal.js +42 -42
  20. package/dist/browser/workspace.css +1 -1
  21. package/dist/browser/workspace.js +32 -32
  22. package/dist/browser-crew.js +2 -0
  23. package/dist/browser-shell.d.ts +1 -1
  24. package/dist/browser-shell.js +2 -2
  25. package/dist/browser-workspace.d.ts +50 -2
  26. package/dist/browser-workspace.js +3 -3
  27. package/dist/build-review.js +2 -0
  28. package/dist/builder-restart.d.ts +21 -0
  29. package/dist/builder-restart.js +50 -0
  30. package/dist/builder.d.ts +11 -2
  31. package/dist/builder.js +234 -101
  32. package/dist/card-catalog.d.ts +209 -0
  33. package/dist/card-catalog.js +133 -0
  34. package/dist/card-cli.d.ts +43 -0
  35. package/dist/card-cli.js +44 -0
  36. package/dist/card-render.d.ts +26 -0
  37. package/dist/card-render.js +223 -0
  38. package/dist/card-sources.d.ts +68 -0
  39. package/dist/card-sources.js +234 -0
  40. package/dist/chat-acceptance.js +1 -1
  41. package/dist/chat-actions.d.ts +106 -9
  42. package/dist/chat-actions.js +473 -46
  43. package/dist/chat-approval.d.ts +13 -0
  44. package/dist/chat-approval.js +39 -9
  45. package/dist/chat-card-part.d.ts +11 -0
  46. package/dist/chat-card-part.js +18 -0
  47. package/dist/chat-card.d.ts +46 -0
  48. package/dist/chat-card.js +99 -0
  49. package/dist/chat-channel.d.ts +2 -0
  50. package/dist/chat-channel.js +37 -14
  51. package/dist/chat-controls.d.ts +4 -0
  52. package/dist/chat-controls.js +4 -0
  53. package/dist/chat-decide.d.ts +10 -16
  54. package/dist/chat-decide.js +79 -62
  55. package/dist/chat-delivery.js +13 -4
  56. package/dist/chat-flow.d.ts +0 -27
  57. package/dist/chat-flow.js +31 -2
  58. package/dist/chat-quiet.js +4 -4
  59. package/dist/chat-task-actions.d.ts +3 -2
  60. package/dist/chat-task-actions.js +19 -5
  61. package/dist/chat-terms.d.ts +14 -2
  62. package/dist/chat-terms.js +35 -0
  63. package/dist/chat-voice.d.ts +1 -1
  64. package/dist/chat-voice.js +2 -2
  65. package/dist/check-facts.d.ts +3 -1
  66. package/dist/check-facts.js +57 -11
  67. package/dist/check-failure.d.ts +24 -3
  68. package/dist/check-failure.js +89 -13
  69. package/dist/check-levels-ui.d.ts +4 -0
  70. package/dist/check-levels-ui.js +10 -1
  71. package/dist/check-load.d.ts +85 -0
  72. package/dist/check-load.js +147 -0
  73. package/dist/check-only-standing.d.ts +36 -0
  74. package/dist/check-only-standing.js +39 -0
  75. package/dist/check-only.d.ts +15 -0
  76. package/dist/check-only.js +99 -0
  77. package/dist/check-repair.d.ts +47 -0
  78. package/dist/check-repair.js +240 -0
  79. package/dist/check-report.d.ts +2 -0
  80. package/dist/check-report.js +1 -1
  81. package/dist/check-stamp.d.ts +46 -0
  82. package/dist/check-stamp.js +93 -0
  83. package/dist/checkout-cleanup.d.ts +36 -5
  84. package/dist/checkout-cleanup.js +166 -14
  85. package/dist/claim.d.ts +6 -0
  86. package/dist/claim.js +13 -2
  87. package/dist/cli-help.d.ts +4 -1
  88. package/dist/cli-help.js +49 -30
  89. package/dist/cli.js +15 -1
  90. package/dist/code-extract.d.ts +44 -0
  91. package/dist/code-extract.js +88 -0
  92. package/dist/code-map-acts.d.ts +24 -0
  93. package/dist/code-map-acts.js +53 -0
  94. package/dist/code-map-admission.d.ts +52 -0
  95. package/dist/code-map-admission.js +295 -0
  96. package/dist/code-map-build.d.ts +63 -0
  97. package/dist/code-map-build.js +415 -0
  98. package/dist/code-map-cli.d.ts +153 -0
  99. package/dist/code-map-cli.js +103 -0
  100. package/dist/code-map-main.d.ts +1 -0
  101. package/dist/code-map-main.js +48 -0
  102. package/dist/code-map-read.d.ts +106 -0
  103. package/dist/code-map-read.js +171 -0
  104. package/dist/code-map-report.d.ts +37 -0
  105. package/dist/code-map-report.js +95 -0
  106. package/dist/code-map-shape.d.ts +172 -0
  107. package/dist/code-map-shape.js +327 -0
  108. package/dist/code-map-store.d.ts +136 -0
  109. package/dist/code-map-store.js +233 -0
  110. package/dist/coding-provider.d.ts +3 -1
  111. package/dist/coding-provider.js +12 -7
  112. package/dist/coding-update.js +3 -2
  113. package/dist/coding-workspace.d.ts +1 -1
  114. package/dist/coding-workspace.js +8 -8
  115. package/dist/console-chrome.js +2 -2
  116. package/dist/containment.d.ts +5 -0
  117. package/dist/containment.js +14 -1
  118. package/dist/contracts/chat-actions.d.ts +92 -0
  119. package/dist/contracts/chat-actions.js +20 -0
  120. package/dist/contracts/chat-card.d.ts +91 -0
  121. package/dist/contracts/chat-card.js +54 -0
  122. package/dist/contracts/chat-content.d.ts +191 -0
  123. package/dist/contracts/chat-content.js +4 -0
  124. package/dist/contracts/cli.d.ts +52 -0
  125. package/dist/contracts/cli.js +4 -0
  126. package/dist/contracts/console-api.d.ts +12 -3
  127. package/dist/contracts/console-api.js +12 -3
  128. package/dist/contracts/flow-propose.d.ts +8 -1
  129. package/dist/contracts/flow-propose.js +3 -1
  130. package/dist/contracts/flow-send.d.ts +126 -0
  131. package/dist/contracts/flow-send.js +3 -0
  132. package/dist/contracts/gateway-tools.d.ts +17 -0
  133. package/dist/contracts/gateway-tools.js +3 -1
  134. package/dist/contracts/lead-tools.d.ts +234 -0
  135. package/dist/contracts/lead-tools.js +25 -1
  136. package/dist/contracts/project-knowledge.d.ts +38 -5
  137. package/dist/contracts/project-knowledge.js +11 -5
  138. package/dist/contracts/project-memory.d.ts +3 -1
  139. package/dist/contracts/project-memory.js +3 -2
  140. package/dist/contracts/storage.d.ts +14 -0
  141. package/dist/contracts/storage.js +3 -1
  142. package/dist/contracts/store-json.d.ts +18 -0
  143. package/dist/contracts/youiyoux-request.d.ts +1 -1
  144. package/dist/contracts/youiyoux-request.js +1 -1
  145. package/dist/desktop-access.js +6 -2
  146. package/dist/discord-chat.js +14 -0
  147. package/dist/dispatch.d.ts +1 -1
  148. package/dist/dispatch.js +25 -16
  149. package/dist/dispose.d.ts +19 -0
  150. package/dist/dispose.js +55 -9
  151. package/dist/easy-start.js +2 -3
  152. package/dist/eval-oracle.js +4 -1
  153. package/dist/evals.js +2 -1
  154. package/dist/evidence-pair.d.ts +53 -0
  155. package/dist/evidence-pair.js +128 -0
  156. package/dist/exhaustion.d.ts +17 -4
  157. package/dist/exhaustion.js +44 -4
  158. package/dist/export.js +1 -1
  159. package/dist/failing-first.d.ts +31 -0
  160. package/dist/failing-first.js +44 -0
  161. package/dist/fallback-schema.d.ts +8 -0
  162. package/dist/fallback-schema.js +40 -0
  163. package/dist/fallback.d.ts +138 -0
  164. package/dist/fallback.js +605 -0
  165. package/dist/fast-start.d.ts +136 -0
  166. package/dist/fast-start.js +431 -0
  167. package/dist/fast-terms.d.ts +9 -0
  168. package/dist/fast-terms.js +23 -0
  169. package/dist/fenced-check-coverage.d.ts +62 -0
  170. package/dist/fenced-check-coverage.js +54 -0
  171. package/dist/findings.d.ts +224 -0
  172. package/dist/findings.js +449 -0
  173. package/dist/first-run.js +1 -1
  174. package/dist/flaky-ci.d.ts +31 -0
  175. package/dist/flaky-ci.js +149 -0
  176. package/dist/flaky-cli.d.ts +60 -0
  177. package/dist/flaky-cli.js +60 -0
  178. package/dist/flaky.d.ts +75 -9
  179. package/dist/flaky.js +255 -0
  180. package/dist/fleet-schema.d.ts +17 -0
  181. package/dist/fleet-schema.js +135 -0
  182. package/dist/flow-browser.js +2 -2
  183. package/dist/flow-card-task.js +3 -0
  184. package/dist/flow-code.d.ts +2 -2
  185. package/dist/flow-code.js +9 -5
  186. package/dist/flow-result-card.d.ts +22 -0
  187. package/dist/flow-result-card.js +55 -0
  188. package/dist/flow-send.js +12 -9
  189. package/dist/flow-steps.js +1 -1
  190. package/dist/flow-triggers.d.ts +1 -1
  191. package/dist/flow-triggers.js +2 -2
  192. package/dist/flow-unattended.d.ts +26 -0
  193. package/dist/flow-unattended.js +12 -3
  194. package/dist/flows-ui.js +10 -2
  195. package/dist/follow-through-brief.d.ts +12 -0
  196. package/dist/follow-through-brief.js +31 -0
  197. package/dist/follow-through-cli.d.ts +23 -0
  198. package/dist/follow-through-cli.js +153 -0
  199. package/dist/git-incident.d.ts +16 -0
  200. package/dist/git-incident.js +69 -6
  201. package/dist/github-import.d.ts +62 -0
  202. package/dist/github-import.js +146 -0
  203. package/dist/guides.js +15 -10
  204. package/dist/handover-note.d.ts +33 -0
  205. package/dist/handover-note.js +106 -0
  206. package/dist/invoke.d.ts +25 -2
  207. package/dist/invoke.js +157 -58
  208. package/dist/job-object-helper.ps1 +10 -3
  209. package/dist/keymap.d.ts +41 -0
  210. package/dist/keymap.js +51 -0
  211. package/dist/knowledge-cli.js +1 -1
  212. package/dist/knowledge-ui.d.ts +21 -4
  213. package/dist/knowledge-ui.js +75 -7
  214. package/dist/laptop-background.d.ts +16 -0
  215. package/dist/laptop-background.js +108 -2
  216. package/dist/lead-cli.js +26 -24
  217. package/dist/lead-context.js +1 -1
  218. package/dist/lead-contract.d.ts +1 -1
  219. package/dist/lead-contract.js +3 -2
  220. package/dist/lead-doors.d.ts +4 -0
  221. package/dist/lead-doors.js +2 -2
  222. package/dist/lead-progress.js +5 -0
  223. package/dist/lead-status.d.ts +2 -0
  224. package/dist/lead-status.js +6 -2
  225. package/dist/lead-tools.js +162 -34
  226. package/dist/lead.js +2 -2
  227. package/dist/lesson-notes.d.ts +81 -0
  228. package/dist/lesson-notes.js +336 -0
  229. package/dist/limits-ui.js +1 -1
  230. package/dist/local-owner.d.ts +1 -1
  231. package/dist/local-owner.js +16 -0
  232. package/dist/machine-check.d.ts +16 -0
  233. package/dist/machine-check.js +26 -0
  234. package/dist/machine-identity.d.ts +75 -0
  235. package/dist/machine-identity.js +170 -0
  236. package/dist/mcp-core.js +11 -1
  237. package/dist/memory-cli.d.ts +300 -1
  238. package/dist/memory-cli.js +62 -9
  239. package/dist/memory-pass.d.ts +16 -0
  240. package/dist/memory-pass.js +67 -3
  241. package/dist/memory-tidy.d.ts +181 -0
  242. package/dist/memory-tidy.js +523 -0
  243. package/dist/memory-use.d.ts +35 -0
  244. package/dist/memory-use.js +109 -0
  245. package/dist/merge-checklist.d.ts +55 -0
  246. package/dist/merge-checklist.js +182 -0
  247. package/dist/modes.d.ts +6 -6
  248. package/dist/modes.js +3 -1
  249. package/dist/needs-you.d.ts +31 -9
  250. package/dist/needs-you.js +110 -41
  251. package/dist/nightly-github.d.ts +2 -0
  252. package/dist/nightly-github.js +4 -4
  253. package/dist/operate-remote-arguments.js +7 -1
  254. package/dist/operate-remote.js +3 -1
  255. package/dist/operate.d.ts +6 -1
  256. package/dist/operate.js +565 -64
  257. package/dist/phase-routing.js +2 -2
  258. package/dist/plain-schema.d.ts +23 -0
  259. package/dist/plain-schema.js +94 -0
  260. package/dist/plain-words.d.ts +20 -0
  261. package/dist/plain-words.js +66 -0
  262. package/dist/plan-login.d.ts +14 -0
  263. package/dist/plan-login.js +58 -0
  264. package/dist/planner.d.ts +1 -1
  265. package/dist/planner.js +4 -2
  266. package/dist/process-liveness.d.ts +2 -0
  267. package/dist/process-liveness.js +61 -17
  268. package/dist/project-delete-ui.d.ts +19 -2
  269. package/dist/project-delete-ui.js +29 -1
  270. package/dist/project-delete.js +14 -1
  271. package/dist/project-knowledge.d.ts +18 -11
  272. package/dist/project-knowledge.js +39 -9
  273. package/dist/project-learning.d.ts +2 -1
  274. package/dist/project-learning.js +15 -45
  275. package/dist/project-memory.d.ts +5 -0
  276. package/dist/project-memory.js +22 -2
  277. package/dist/project-tools.d.ts +4 -4
  278. package/dist/project-tools.js +23 -7
  279. package/dist/proof.js +30 -5
  280. package/dist/protected-storage-look.d.ts +1 -0
  281. package/dist/protected-storage-look.js +13 -0
  282. package/dist/protected-storage.d.ts +70 -39
  283. package/dist/protected-storage.js +196 -147
  284. package/dist/provider-auth.js +1 -1
  285. package/dist/provider-capture.d.ts +34 -0
  286. package/dist/provider-capture.js +53 -0
  287. package/dist/publish.js +9 -1
  288. package/dist/pull-request-flow.js +5 -0
  289. package/dist/push.d.ts +18 -2
  290. package/dist/push.js +40 -16
  291. package/dist/release-adapters.d.ts +9 -0
  292. package/dist/release-adapters.js +76 -0
  293. package/dist/release-auto.js +13 -13
  294. package/dist/release-card.d.ts +1 -2
  295. package/dist/release-card.js +11 -0
  296. package/dist/release-carry.d.ts +7 -2
  297. package/dist/release-carry.js +49 -10
  298. package/dist/release-cli.d.ts +4 -0
  299. package/dist/release-cli.js +29 -22
  300. package/dist/release-coverage.js +1 -1
  301. package/dist/release-next.d.ts +48 -0
  302. package/dist/release-next.js +161 -0
  303. package/dist/release.d.ts +20 -1
  304. package/dist/release.js +85 -9
  305. package/dist/remote-destination.d.ts +36 -0
  306. package/dist/remote-destination.js +217 -0
  307. package/dist/remote-main.d.ts +48 -0
  308. package/dist/remote-main.js +84 -5
  309. package/dist/repository-context.d.ts +3 -2
  310. package/dist/repository-context.js +112 -70
  311. package/dist/restart-certification.d.ts +1 -0
  312. package/dist/restart-certification.js +8 -6
  313. package/dist/result-acts.d.ts +27 -19
  314. package/dist/result-acts.js +36 -25
  315. package/dist/result-follow-ups.d.ts +2 -2
  316. package/dist/result-follow-ups.js +18 -4
  317. package/dist/result-review.d.ts +1 -1
  318. package/dist/route-change-check.d.ts +4 -0
  319. package/dist/route-change-check.js +13 -0
  320. package/dist/route-change.d.ts +22 -0
  321. package/dist/route-change.js +89 -0
  322. package/dist/route-hooks.js +3 -2
  323. package/dist/route-results.d.ts +6 -1
  324. package/dist/route-results.js +14 -5
  325. package/dist/run-closeout.d.ts +1 -1
  326. package/dist/run-closeout.js +7 -5
  327. package/dist/runner-process.js +3 -2
  328. package/dist/runner.js +2 -1
  329. package/dist/scope.d.ts +28 -4
  330. package/dist/scope.js +92 -28
  331. package/dist/scout.d.ts +1 -1
  332. package/dist/scout.js +2 -1
  333. package/dist/serve.d.ts +1 -1
  334. package/dist/serve.js +26 -18
  335. package/dist/server/chat.js +16 -14
  336. package/dist/server/chrome.d.ts +1 -1
  337. package/dist/server/chrome.js +26 -35
  338. package/dist/server/console.css +73 -0
  339. package/dist/server/guards.js +3 -0
  340. package/dist/server/home.d.ts +6 -0
  341. package/dist/server/home.js +21 -13
  342. package/dist/server/http.js +1 -1
  343. package/dist/server/kit.js +1 -1
  344. package/dist/server/merge-ready-view.d.ts +10 -0
  345. package/dist/server/merge-ready-view.js +30 -0
  346. package/dist/server/pages-assets.d.ts +1 -0
  347. package/dist/server/pages-assets.js +8 -5
  348. package/dist/server/pages.js +103 -82
  349. package/dist/server/render-chat.js +16 -3
  350. package/dist/server/render-code-map.d.ts +30 -0
  351. package/dist/server/render-code-map.js +137 -0
  352. package/dist/server/render-flaky.d.ts +20 -0
  353. package/dist/server/render-flaky.js +59 -0
  354. package/dist/server/render-follow-through.d.ts +11 -0
  355. package/dist/server/render-follow-through.js +68 -0
  356. package/dist/server/render-history.js +1 -1
  357. package/dist/server/render-new-task.d.ts +26 -1
  358. package/dist/server/render-new-task.js +30 -5
  359. package/dist/server/render-pages.d.ts +1 -175
  360. package/dist/server/render-pages.js +38 -313
  361. package/dist/server/render-projects.d.ts +2 -1
  362. package/dist/server/render-projects.js +9 -7
  363. package/dist/server/render-release.d.ts +2 -0
  364. package/dist/server/render-release.js +3 -3
  365. package/dist/server/render-results.d.ts +2 -0
  366. package/dist/server/render-results.js +68 -68
  367. package/dist/server/render-tasks.d.ts +16 -2
  368. package/dist/server/render-tasks.js +177 -141
  369. package/dist/server/retired-routes.d.ts +17 -0
  370. package/dist/server/retired-routes.js +53 -0
  371. package/dist/server/route-table.d.ts +3 -0
  372. package/dist/server/route-table.js +48 -12
  373. package/dist/server/settings.js +166 -34
  374. package/dist/server/task-views.js +66 -26
  375. package/dist/server/tasks.d.ts +2 -6
  376. package/dist/server/tasks.js +250 -321
  377. package/dist/server/welcome.js +1 -1
  378. package/dist/settings-groups-ui.d.ts +1 -0
  379. package/dist/settings-groups-ui.js +4 -2
  380. package/dist/settings-kit.js +3 -2
  381. package/dist/settings-proofs.js +3 -1
  382. package/dist/slack-chat.js +14 -1
  383. package/dist/steer-mailbox.d.ts +8 -1
  384. package/dist/steer-mailbox.js +164 -6
  385. package/dist/stop-proof.js +6 -4
  386. package/dist/storage-sweep-process.js +1 -1
  387. package/dist/storage-sweep.d.ts +5 -3
  388. package/dist/storage-sweep.js +30 -9
  389. package/dist/storage-ui.js +28 -17
  390. package/dist/storage.d.ts +27 -2
  391. package/dist/storage.js +39 -2
  392. package/dist/store.d.ts +89 -7
  393. package/dist/store.js +386 -114
  394. package/dist/surface.js +67 -6
  395. package/dist/sweep-quarantine.d.ts +1 -0
  396. package/dist/sweep-quarantine.js +6 -4
  397. package/dist/tamper-scan.d.ts +4 -0
  398. package/dist/tamper-scan.js +90 -0
  399. package/dist/task-aliases.d.ts +5 -0
  400. package/dist/task-aliases.js +9 -0
  401. package/dist/task-control.d.ts +2 -1
  402. package/dist/task-control.js +4 -1
  403. package/dist/task-outcome-cli.d.ts +2 -0
  404. package/dist/task-outcome-cli.js +17 -17
  405. package/dist/task-sizing.d.ts +5 -0
  406. package/dist/task-sizing.js +2 -0
  407. package/dist/task-source.d.ts +7 -0
  408. package/dist/task-source.js +14 -0
  409. package/dist/task-status.d.ts +9 -0
  410. package/dist/task-status.js +45 -49
  411. package/dist/teardown-git.d.ts +18 -0
  412. package/dist/teardown-git.js +105 -21
  413. package/dist/telegram-lead.js +23 -6
  414. package/dist/telegram-progress.js +5 -3
  415. package/dist/telegram-status.js +6 -4
  416. package/dist/telegram.js +12 -1
  417. package/dist/test-infra.d.ts +8 -0
  418. package/dist/test-infra.js +18 -0
  419. package/dist/tidy.js +1 -1
  420. package/dist/toolroll-update.js +19 -5
  421. package/dist/tui-contract.d.ts +24 -0
  422. package/dist/tui-source.js +67 -8
  423. package/dist/tui.js +51 -51
  424. package/dist/vanished-retry.d.ts +30 -0
  425. package/dist/vanished-retry.js +174 -0
  426. package/dist/work-index.d.ts +2 -0
  427. package/dist/work-index.js +95 -66
  428. package/dist/work-summary.d.ts +1 -1
  429. package/dist/work-summary.js +7 -2
  430. package/dist/workspace-ui.d.ts +7 -3
  431. package/dist/workspace-ui.js +38 -23
  432. package/dist/worktree.d.ts +12 -3
  433. package/dist/worktree.js +91 -14
  434. package/package.json +2 -1
  435. package/dist/server/render-next.d.ts +0 -63
  436. package/dist/server/render-next.js +0 -109
@@ -7,6 +7,8 @@ export function browserWorkActionHref(item) {
7
7
  if (action === null)
8
8
  return null;
9
9
  const { taskId, runId, decisionId } = action.target;
10
+ if (action.code === 'inspect-findings')
11
+ return `/t/${encodeURIComponent(taskId)}#findings`;
10
12
  if (decisionId !== null)
11
13
  return `/d/${decisionId}`;
12
14
  if (action.code === 'inspect-decisions')
@@ -6,4 +6,4 @@ export declare function serveBrowserAsset(request: IncomingMessage, response: Se
6
6
  /** Retain the complete native document as the no-JavaScript/unloaded-bundle
7
7
  * fallback. React replaces its root only once the local module has loaded.
8
8
  * The data script is escaped for HTML parsing, not merely valid JSON. */
9
- export declare function browserWorkspaceDocument(document: Html, workspace: BrowserWorkspace, nonce: string, functionalScript: string): Html;
9
+ export declare function browserWorkspaceDocument(document: Html, workspace: BrowserWorkspace, nonce: string, functionalScript: string, beside?: Html): Html;
@@ -51,7 +51,7 @@ export function serveBrowserAsset(request, response, path) {
51
51
  /** Retain the complete native document as the no-JavaScript/unloaded-bundle
52
52
  * fallback. React replaces its root only once the local module has loaded.
53
53
  * The data script is escaped for HTML parsing, not merely valid JSON. */
54
- export function browserWorkspaceDocument(document, workspace, nonce, functionalScript) {
54
+ export function browserWorkspaceDocument(document, workspace, nonce, functionalScript, beside = html ``) {
55
55
  const initialize = `window.addEventListener('standing-orders:workspace-rendered',function initializeWorkspace(){window.removeEventListener('standing-orders:workspace-rendered',initializeWorkspace);${functionalScript}});`;
56
56
  // A cross-page fade the browser gives up on rejects its promises; settle them from the head, before the
57
57
  // first frame (the app's own listener arrives too late when a page is revealed before the bundle runs).
@@ -61,5 +61,5 @@ export function browserWorkspaceDocument(document, workspace, nonce, functionalS
61
61
  // A page showing a password keeps to its one script (the sensitivity contract), so it goes without.
62
62
  html `<link rel="stylesheet" href="/assets/workspace.css">${workspace.sensitive ? "" : scriptElement(settleFades, { nonce })}</head>`);
63
63
  out = replaceMarkup(out, /<body>/, () => html `<body><div id="standing-orders-workspace">`);
64
- return replaceMarkup(out, /<\/body>/, () => html `</div>${jsonScript(workspace, { id: "standing-orders-workspace-data", nonce })}${scriptElement(initialize, { nonce })}<script type="module" src="/assets/workspace.js" nonce="${nonce}"></script></body>`);
64
+ return replaceMarkup(out, /<\/body>/, () => html `</div>${beside}${jsonScript(workspace, { id: "standing-orders-workspace-data", nonce })}${scriptElement(initialize, { nonce })}<script type="module" src="/assets/workspace.js" nonce="${nonce}"></script></body>`);
65
65
  }
@@ -139,6 +139,8 @@ export type BrowserActionCard = {
139
139
  } | null;
140
140
  dismissable: boolean;
141
141
  note: string | null;
142
+ /** A Toolroll card: `body` is its data, and it confirms nothing. */
143
+ data?: true;
142
144
  };
143
145
  export type BrowserConversation = {
144
146
  sessionId: number;
@@ -259,7 +261,7 @@ export type BrowserTaskRow = {
259
261
  /** Put away, or Restore in Archived (task-tidy.md): a POST to the task's own route; null for a viewer or live work. */
260
262
  tidy?: {
261
263
  action: string;
262
- label: 'Put away' | 'Restore';
264
+ label: 'Archive' | 'Restore';
263
265
  returnTo: string;
264
266
  } | null;
265
267
  };
@@ -528,6 +530,8 @@ export type BrowserTaskView = {
528
530
  summary: string;
529
531
  observedAt: string;
530
532
  } | null;
533
+ /** "Can I merge?" (merge-checklist.ts; `toolroll task ready` is its twin): each row and its blocker's form. Null: no result yet. */
534
+ mergeReady?: MergeReadyView | null;
531
535
  /** A release's own steps (release status's twin). Null: this task is no release, or nothing recorded. */
532
536
  release?: {
533
537
  tag: string;
@@ -542,6 +546,13 @@ export type BrowserTaskView = {
542
546
  at: string;
543
547
  } | null;
544
548
  startedAt: string;
549
+ /** The step it is on now, and where that is in its steps. */
550
+ at?: {
551
+ step: string;
552
+ name: string;
553
+ index: number;
554
+ of: number;
555
+ } | null;
545
556
  } | null;
546
557
  /** How the plan was approved: by whom and how, or the rule that approved it automatically. */
547
558
  approved?: {
@@ -554,6 +565,11 @@ export type BrowserTaskView = {
554
565
  } | null;
555
566
  /** ⋯ More actions: the task's secondary acts, the same order on the task and agent pages, destructive last. */
556
567
  more?: BrowserTaskMore[];
568
+ /** The task's full audit record (its link in the header); it moved out of More (docs/plans/plain-toolroll.md P1.3). */
569
+ audit?: {
570
+ label: string;
571
+ href: string;
572
+ } | null;
557
573
  };
558
574
  export type BrowserTaskTab = "activity" | "result" | "plan" | "attempts";
559
575
  /** One ⋯ item: a plain link, a copy of this page's address, a one-click POST (never a ceremony), or a go-to that switches
@@ -1088,7 +1104,10 @@ export type BrowserFlowCard = {
1088
1104
  items?: BrowserFlowSentItem[];
1089
1105
  person: string;
1090
1106
  at: string;
1107
+ cardHtml?: string;
1091
1108
  } | null;
1109
+ /** A finished card's steps as a Toolroll card (flow-result-card.ts), when no "Send to me" already showed them. */
1110
+ resultHtml?: string;
1092
1111
  /** v94: every tool call subagents made or asked to make on this card, oldest first: the receipts. */
1093
1112
  calls?: {
1094
1113
  id: number;
@@ -1659,7 +1678,7 @@ export type BrowserHomeView = {
1659
1678
  href: string;
1660
1679
  }[];
1661
1680
  groups: {
1662
- key: 'decide' | 'review' | 'unblock' | 'running';
1681
+ key: 'decide' | 'review' | 'unblock' | 'running' | 'waiting';
1663
1682
  label: string;
1664
1683
  rows: BrowserHomeRow[];
1665
1684
  }[];
@@ -1853,3 +1872,32 @@ export declare function browserProjectsOf(projects: readonly {
1853
1872
  path: string;
1854
1873
  }[]): BrowserProject[];
1855
1874
  export declare function browserNavigationOf(path: string, project?: string | null, needsYou?: number, tasksProject?: string | null, needsYouLabel?: string): BrowserNavigationItem[];
1875
+ /** One "Can I merge?" act, as the task page's form for it (server/merge-ready-view.ts builds it). */
1876
+ export type MergeReadyAct = {
1877
+ kind: "run-checks";
1878
+ action: string;
1879
+ level: "quick" | "full";
1880
+ returnTo: string;
1881
+ } | {
1882
+ kind: "retry";
1883
+ } | {
1884
+ kind: "fix";
1885
+ action: string;
1886
+ note: string;
1887
+ batch: string;
1888
+ source: string;
1889
+ request: string;
1890
+ returnTo: string;
1891
+ };
1892
+ /** The task page's "Can I merge?" panel. */
1893
+ export type MergeReadyView = {
1894
+ answer: "yes" | "no" | "not-yet" | "merged";
1895
+ sentence: string;
1896
+ rows: {
1897
+ key: string;
1898
+ label: string;
1899
+ mark: "yes" | "no" | "waiting" | "unknown" | "skip";
1900
+ say: string;
1901
+ act: MergeReadyAct | null;
1902
+ }[];
1903
+ };
@@ -90,7 +90,7 @@ export function browserProjectsOf(projects) {
90
90
  if (seen.has(project.path))
91
91
  return [];
92
92
  seen.add(project.path);
93
- return [{ name: project.name, path: project.path, href: `/work?project=${encodeURIComponent(project.path)}`,
93
+ return [{ name: project.name, path: project.path, href: `/tasks?project=${encodeURIComponent(project.path)}`,
94
94
  knowledgeHref: `/settings/knowledge?repo=${encodeURIComponent(project.path)}` }];
95
95
  });
96
96
  }
@@ -102,8 +102,8 @@ export function browserNavigationOf(path, project = null, needsYou = 0, tasksPro
102
102
  return [
103
103
  { label: 'Home', href: '/', active: pathname === '/' || pathname === '/chat' || under('/d', '/activity', '/morning'),
104
104
  ...(needsYou > 0 ? { count: needsYou, ...(needsYouLabel === undefined ? {} : { countLabel: needsYouLabel }) } : {}) },
105
- { label: 'Tasks', href: `/work${tasksProject === null ? '' : `?project=${encodeURIComponent(tasksProject)}`}`,
106
- active: under('/work', '/tasks', '/t', '/r', '/done', '/board', '/queue', '/inbox', '/review') },
105
+ { label: 'Tasks', href: `/tasks${tasksProject === null ? '' : `?project=${encodeURIComponent(tasksProject)}`}`,
106
+ active: under('/tasks', '/t', '/r', '/review') },
107
107
  { label: 'Flows', href: '/flows', active: under('/flows', '/recipes', '/kits', '/routines') },
108
108
  { label: 'Agents', href: '/agents', active: under('/agents', '/peek', '/term', '/fleet', '/system', '/runs') },
109
109
  { label: 'Projects', href: '/projects', active: under('/projects') },
@@ -26,6 +26,7 @@ import { invokeAgent } from "./invoke.js";
26
26
  import { readVerifiedArtifact } from "./evidence.js";
27
27
  import { verificationEvidence } from "./verification-evidence.js";
28
28
  import { runCheckLevel } from "./check-levels.js";
29
+ import { recordReviewFindings } from "./findings.js";
29
30
  import { requestResultChanges } from "./result-actions.js";
30
31
  import { revisionSourceOf } from "./result-review.js";
31
32
  import { parseBuildFindings, REVIEW_PATCH_NAME } from "./reviewer.js";
@@ -310,6 +311,7 @@ export async function buildReviewPass(store, options) {
310
311
  const sent = high.length > 0 && mayResend(store, request.taskId) ? sendBack(store, options.root, request.run, request.taskId, repo, high, clock()) : null;
311
312
  const problem = sent !== null && !sent.ok ? `it could not be sent back (${sent.problem})` : null;
312
313
  settle(store, request.run, "reviewed", { findings, sentBackAs: sent?.ok ? sent.id : null, ...(problem === null ? {} : { reason: problem }) }, clock());
314
+ recordReviewFindings(store, { run: request.run, taskId: request.taskId, sentBackAs: sent?.ok ? sent.id : null, high }, clock());
313
315
  return { sentBackAs: sent?.ok ? sent.id : null, problem };
314
316
  });
315
317
  const counted = `${findings.length} finding${findings.length === 1 ? "" : "s"}, ${high.length} high`;
@@ -0,0 +1,21 @@
1
+ import { type Store } from "./store.js";
2
+ /** At most this many automatic restarts in this window (tried, whatever came of them). */
3
+ export declare const RESTART_LIMIT = 3;
4
+ export declare const RESTART_WINDOW_MS: number;
5
+ export type BuilderWish = {
6
+ desired: "running" | "stopped";
7
+ build: string;
8
+ schema: number;
9
+ setBy: string;
10
+ setAt: string;
11
+ };
12
+ export declare function builderWish(store: Store): BuilderWish | null;
13
+ export declare function databaseFormat(store: Store): number | null;
14
+ /** Record what a person asked for. A `stopped` keeps the last known build. */
15
+ export declare function recordBuilderWish(store: Store, desired: "running" | "stopped", by: string, build: string, now: Date): void;
16
+ /** An update, a deploy's drain or a stop in progress: this is someone else's restart to make. */
17
+ export declare function restartPaused(store: Store, now: Date): boolean;
18
+ export type RestartAdmission = "admitted" | "not-wanted" | "paused" | "attempts";
19
+ /** The wish, the pause and the count, read again and the attempt written in one transaction: two callers can't both
20
+ * take the last attempt, and a crash after this still counted. */
21
+ export declare function admitBuilderRestart(store: Store, now: Date): RestartAdmission;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Restarting this computer's own builder (docs/plans/plain-toolroll.md P2.3): the record of what a person wants, and the
3
+ * one transaction that admits an automatic restart. The supervisor work is laptop-background.ts restartOwnBuilder.
4
+ *
5
+ * `background on` and `up` record that the builder should run, with the build and database format they ran; `background
6
+ * off` and `stop` record that it should not, before they stop it. Nothing else writes that wish, and only a recorded
7
+ * wish to run is ever acted on.
8
+ */
9
+ import { updateAdmissionPaused } from "./desktop-update-gate.js";
10
+ import { drainOf } from "./runner.js";
11
+ import { readSchemaVersion } from "./store.js";
12
+ /** At most this many automatic restarts in this window (tried, whatever came of them). */
13
+ export const RESTART_LIMIT = 3;
14
+ export const RESTART_WINDOW_MS = 30 * 60_000;
15
+ export function builderWish(store) {
16
+ const row = store.handle.prepare("SELECT desired, build, schema_version, set_by, set_at FROM builder_service WHERE id = 1").get();
17
+ return row === undefined ? null : { desired: row["desired"] === "running" ? "running" : "stopped", build: String(row["build"]), schema: Number(row["schema_version"]), setBy: String(row["set_by"]), setAt: String(row["set_at"]) };
18
+ }
19
+ export function databaseFormat(store) {
20
+ const read = readSchemaVersion(store.handle);
21
+ return read.ok ? read.version : null;
22
+ }
23
+ /** Record what a person asked for. A `stopped` keeps the last known build. */
24
+ export function recordBuilderWish(store, desired, by, build, now) {
25
+ store.handle.prepare(`INSERT INTO builder_service (id, desired, build, schema_version, set_by, set_at) VALUES (1, ?, ?, ?, ?, ?)
26
+ ON CONFLICT (id) DO UPDATE SET desired = excluded.desired, build = excluded.build, schema_version = excluded.schema_version, set_by = excluded.set_by, set_at = excluded.set_at`)
27
+ .run(desired, build, databaseFormat(store) ?? 0, by, now.toISOString());
28
+ }
29
+ /** An update, a deploy's drain or a stop in progress: this is someone else's restart to make. */
30
+ export function restartPaused(store, now) {
31
+ if (updateAdmissionPaused(store.raw()))
32
+ return true;
33
+ return store.listRunners().some(runner => drainOf(store, runner, now) !== null);
34
+ }
35
+ /** The wish, the pause and the count, read again and the attempt written in one transaction: two callers can't both
36
+ * take the last attempt, and a crash after this still counted. */
37
+ export function admitBuilderRestart(store, now) {
38
+ return store.transact(() => {
39
+ if (builderWish(store)?.desired !== "running")
40
+ return "not-wanted";
41
+ if (restartPaused(store, now))
42
+ return "paused";
43
+ const since = new Date(now.getTime() - RESTART_WINDOW_MS).toISOString();
44
+ const tried = Number(store.handle.prepare("SELECT COUNT(*) AS n FROM builder_restart WHERE at > ?").get(since)?.["n"] ?? 0);
45
+ if (tried >= RESTART_LIMIT)
46
+ return "attempts";
47
+ store.handle.prepare("INSERT INTO builder_restart (at) VALUES (?)").run(now.toISOString());
48
+ return "admitted";
49
+ });
50
+ }
package/dist/builder.d.ts CHANGED
@@ -3,6 +3,7 @@ import { type CheckAccess } from "./check-access.js";
3
3
  import type { WritesMode } from "./writes-mode.js";
4
4
  import type { LaunchNetwork } from "./invoke.js";
5
5
  import type { ProviderId } from "./contracts/provider.js";
6
+ import { type MachineSample } from "./check-load.js";
6
7
  import { type PreparedEvidence } from "./prepared-evidence.js";
7
8
  import { type ExecResult, type RunOptions } from "./exec.js";
8
9
  import type { Decision, Store } from "./store.js";
@@ -121,6 +122,9 @@ export type BuildRequest = {
121
122
  /** Runs the repository's approved verification command (Priority 2), after
122
123
  * commit. Tests inject; production uses exec. */
123
124
  verify?: Runner;
125
+ /** Reads the machine's cores and load for a release check's limit and load record (check-load.ts). Tests inject;
126
+ * production reads the operating system. */
127
+ machine?: () => MachineSample;
124
128
  /**
125
129
  * The stop fence (audit IV-1, completed): re-proved AFTER the agent and
126
130
  * BEFORE the commit. A stop that lands while the agent runs preserves
@@ -159,7 +163,7 @@ export type BuildRefusal = "skills-unavailable"
159
163
  /** Sprint 8: the organisation policy stops this provider, model or permission level. */
160
164
  | "policy" | "unapproved" | "scope-changed" | "stale-approval" | "mode-ended" | "capability" | "no-claim" | "not-yours" | "not-leased" | "protected-branch" | "wrong-branch" | "moved-branch" | "fenced" | "agent" | "agent-reported" | "no-op"
161
165
  /** Run 2085: the agent stopped before its handoff; its work was kept for the retry. */
162
- | "no-handoff" | "moved-head" | "timeout" | "git" | "commit-failure" | "malformed-decision" | "provider-init" | "setup" | "revision-brief" | "external" | "stopped" | "plan-revised" | "plan-revision-blocked" | "provider-unattested" | "provider-protocol" | "runner-custody" | "auth-mode" | "route-authority" | "containment";
166
+ | "no-handoff" | "moved-head" | "timeout" | "git" | "commit-failure" | "malformed-decision" | "provider-init" | "setup" | "revision-brief" | "external" | "stopped" | "plan-revised" | "plan-revision-blocked" | "provider-unattested" | "provider-protocol" | "runner-custody" | "auth-mode" | "route-authority" | "containment" | "protected-storage";
163
167
  /** Long enough for real work; short enough that a stuck build ends the same night. */
164
168
  export declare const DEFAULT_BUILD_TIMEOUT_MS: number;
165
169
  export declare const DEFAULT_MAX_TURNS = 40;
@@ -198,6 +202,9 @@ export declare const SETUP_ENV_DENYLIST: readonly string[];
198
202
  * over-redacting a diagnostic costs a glance at the real log; under-
199
203
  * redacting costs a secret.
200
204
  */
205
+ /** Why a git command failed, in words, for a refusal: the hardened runner's own reason, or git's first line. Keeping it
206
+ * is the point: runs 3316–3324 and run 3332 lost theirs, and only a person guessing was left. */
207
+ export declare function gitFailureWords(result: ExecResult): string;
201
208
  export declare function redactSecretText(text: string): string;
202
209
  /** The same blanking with no length cap, for a log that keeps its length (a flow script's output). */
203
210
  export declare function redactSecretAssignments(text: string): string;
@@ -220,7 +227,9 @@ export declare function proveApprovedProfile(scope: Scope | null, given: {
220
227
  maxTurns: number | undefined;
221
228
  timeoutMs: number | undefined;
222
229
  skipPermissions: boolean;
223
- }): {
230
+ },
231
+ /** The fallback entry a chain run is bound to, proved by its walk: what must run instead of the base. */
232
+ pinned?: ExecutionProfile | null): {
224
233
  ok: true;
225
234
  effective: {
226
235
  model: string;