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
@@ -0,0 +1,91 @@
1
+ /**
2
+ * A Toolroll card as it is kept and shown (docs/plans/toolroll-cards.md): what a card's spec became once Toolroll filled
3
+ * it from its own records. Every value here was written by Toolroll; the one exception is a `text` block, which a person
4
+ * reads as a plain paragraph labelled as the lead's note, never as data. A saved card is read back through this
5
+ * schema before any renderer sees it.
6
+ */
7
+ import { z } from "zod";
8
+ export declare const CARD_LIMITS: {
9
+ readonly blocks: 8;
10
+ readonly columns: 6;
11
+ readonly rows: 20;
12
+ readonly points: 12;
13
+ readonly facts: 10;
14
+ readonly buttons: 4;
15
+ readonly actions: 4;
16
+ readonly cell: 80;
17
+ readonly label: 40;
18
+ readonly heading: 80;
19
+ readonly text: 600;
20
+ readonly note: 400;
21
+ readonly notes: 12;
22
+ };
23
+ export declare const CARD_CHART_TYPES: readonly ["bar", "pie", "line", "area"];
24
+ export type CardChartType = (typeof CARD_CHART_TYPES)[number];
25
+ export declare const chatCardSchema: z.ZodObject<{
26
+ version: z.ZodLiteral<1>;
27
+ title: z.ZodString;
28
+ asOf: z.ZodString;
29
+ repos: z.ZodArray<z.ZodString>;
30
+ blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
31
+ kind: z.ZodLiteral<"text">;
32
+ text: z.ZodString;
33
+ }, z.core.$strict>, z.ZodObject<{
34
+ kind: z.ZodLiteral<"divider">;
35
+ }, z.core.$strict>, z.ZodObject<{
36
+ kind: z.ZodLiteral<"facts">;
37
+ heading: z.ZodString;
38
+ items: z.ZodArray<z.ZodObject<{
39
+ label: z.ZodString;
40
+ value: z.ZodString;
41
+ }, z.core.$strict>>;
42
+ }, z.core.$strict>, z.ZodObject<{
43
+ kind: z.ZodLiteral<"table">;
44
+ heading: z.ZodString;
45
+ origin: z.ZodEnum<{
46
+ records: "records";
47
+ report: "report";
48
+ }>;
49
+ columns: z.ZodArray<z.ZodObject<{
50
+ label: z.ZodString;
51
+ numeric: z.ZodBoolean;
52
+ }, z.core.$strict>>;
53
+ rows: z.ZodArray<z.ZodArray<z.ZodString>>;
54
+ more: z.ZodInt;
55
+ }, z.core.$strict>, z.ZodObject<{
56
+ kind: z.ZodLiteral<"notes">;
57
+ heading: z.ZodString;
58
+ origin: z.ZodEnum<{
59
+ records: "records";
60
+ report: "report";
61
+ }>;
62
+ items: z.ZodArray<z.ZodString>;
63
+ more: z.ZodInt;
64
+ }, z.core.$strict>, z.ZodObject<{
65
+ kind: z.ZodLiteral<"chart">;
66
+ heading: z.ZodString;
67
+ chart: z.ZodEnum<{
68
+ area: "area";
69
+ bar: "bar";
70
+ line: "line";
71
+ pie: "pie";
72
+ }>;
73
+ points: z.ZodArray<z.ZodObject<{
74
+ label: z.ZodString;
75
+ value: z.ZodNumber;
76
+ shown: z.ZodString;
77
+ }, z.core.$strict>>;
78
+ }, z.core.$strict>], "kind">>;
79
+ buttons: z.ZodArray<z.ZodObject<{
80
+ label: z.ZodString;
81
+ path: z.ZodString;
82
+ }, z.core.$strict>>;
83
+ actions: z.ZodArray<z.ZodObject<{
84
+ proposal: z.ZodInt;
85
+ label: z.ZodString;
86
+ }, z.core.$strict>>;
87
+ }, z.core.$strict>;
88
+ export type ChatCard = z.infer<typeof chatCardSchema>;
89
+ export type ChatCardBlock = ChatCard["blocks"][number];
90
+ /** A saved card, or null: it was changed, or a build that wrote it knew another shape. */
91
+ export declare function readChatCard(value: unknown): ChatCard | null;
@@ -0,0 +1,54 @@
1
+ /**
2
+ * A Toolroll card as it is kept and shown (docs/plans/toolroll-cards.md): what a card's spec became once Toolroll filled
3
+ * it from its own records. Every value here was written by Toolroll; the one exception is a `text` block, which a person
4
+ * reads as a plain paragraph labelled as the lead's note, never as data. A saved card is read back through this
5
+ * schema before any renderer sees it.
6
+ */
7
+ import { z } from "zod";
8
+ export const CARD_LIMITS = { blocks: 8, columns: 6, rows: 20, points: 12, facts: 10, buttons: 4, actions: 4, cell: 80, label: 40, heading: 80, text: 600, note: 400, notes: 12 };
9
+ const label = z.string().min(1).max(CARD_LIMITS.label);
10
+ const heading = z.string().min(1).max(CARD_LIMITS.heading);
11
+ const cell = z.string().max(CARD_LIMITS.cell);
12
+ export const CARD_CHART_TYPES = ["bar", "pie", "line", "area"];
13
+ const textBlock = z.strictObject({ kind: z.literal("text"), text: z.string().min(1).max(CARD_LIMITS.text) });
14
+ const dividerBlock = z.strictObject({ kind: z.literal("divider") });
15
+ const factsBlock = z.strictObject({ kind: z.literal("facts"), heading, items: z.array(z.strictObject({ label, value: cell })).min(1).max(CARD_LIMITS.facts) });
16
+ const tableBlock = z.strictObject({
17
+ kind: z.literal("table"), heading,
18
+ /** `report`: an agent's own report, shown as such; never a figure of Toolroll's. */
19
+ origin: z.enum(["records", "report"]),
20
+ columns: z.array(z.strictObject({ label, numeric: z.boolean() })).min(1).max(CARD_LIMITS.columns),
21
+ rows: z.array(z.array(cell).max(CARD_LIMITS.columns)).max(CARD_LIMITS.rows),
22
+ /** Rows the records hold beyond the ones shown. */
23
+ more: z.int().min(0),
24
+ });
25
+ /** Lines of saved words, whole: findings and a handover note. `report` as a table's: not Toolroll's figures. */
26
+ const notesBlock = z.strictObject({ kind: z.literal("notes"), heading, origin: z.enum(["records", "report"]), items: z.array(z.string().min(1).max(CARD_LIMITS.note)).min(1).max(CARD_LIMITS.notes), more: z.int().min(0) });
27
+ const chartBlock = z.strictObject({
28
+ kind: z.literal("chart"), heading, chart: z.enum(CARD_CHART_TYPES),
29
+ points: z.array(z.strictObject({ label, value: z.number().finite().min(0), shown: cell })).min(1).max(CARD_LIMITS.points),
30
+ });
31
+ export const chatCardSchema = z.strictObject({
32
+ version: z.literal(1),
33
+ title: heading,
34
+ /** When Toolroll read the records. */
35
+ asOf: z.string().regex(/^\d{4}-\d{2}-\d{2}T[\d:.]+Z$/),
36
+ /** The projects the values came from: a card goes only where all of them are reachable. */
37
+ repos: z.array(z.string()).max(200),
38
+ blocks: z.array(z.discriminatedUnion("kind", [textBlock, dividerBlock, factsBlock, tableBlock, notesBlock, chartBlock])).min(1).max(CARD_LIMITS.blocks),
39
+ /** Fixed destinations in Toolroll: a path made by chat-controls.ts, never a model's address. */
40
+ buttons: z.array(z.strictObject({ label, path: z.string().max(400).regex(/^\/(?![/\\])/) })).max(CARD_LIMITS.buttons),
41
+ /** Proposals this card leads to: each keeps its own Confirm message directly under the card. */
42
+ actions: z.array(z.strictObject({ proposal: z.int().min(1), label: z.string().min(1).max(CARD_LIMITS.heading) })).max(CARD_LIMITS.actions),
43
+ });
44
+ /** A saved card, or null: it was changed, or a build that wrote it knew another shape. */
45
+ export function readChatCard(value) {
46
+ const read = chatCardSchema.safeParse(value);
47
+ if (!read.success)
48
+ return null;
49
+ const card = read.data;
50
+ for (const block of card.blocks)
51
+ if (block.kind === "table" && block.rows.some(row => row.length !== block.columns.length))
52
+ return null;
53
+ return card;
54
+ }
@@ -114,6 +114,71 @@ export declare const chatContentShape: {
114
114
  }, z.core.$strict>;
115
115
  }, z.core.$strict>]>>>;
116
116
  }, z.core.$strict>>;
117
+ /** A Toolroll card (docs/plans/toolroll-cards.md): `text` stays its plain version, and `link`/`also` its buttons, so
118
+ * an app that can't show it, or refuses it, still has the whole message. */
119
+ rich: z.ZodOptional<z.ZodObject<{
120
+ version: z.ZodLiteral<1>;
121
+ title: z.ZodString;
122
+ asOf: z.ZodString;
123
+ repos: z.ZodArray<z.ZodString>;
124
+ blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
125
+ kind: z.ZodLiteral<"text">;
126
+ text: z.ZodString;
127
+ }, z.core.$strict>, z.ZodObject<{
128
+ kind: z.ZodLiteral<"divider">;
129
+ }, z.core.$strict>, z.ZodObject<{
130
+ kind: z.ZodLiteral<"facts">;
131
+ heading: z.ZodString;
132
+ items: z.ZodArray<z.ZodObject<{
133
+ label: z.ZodString;
134
+ value: z.ZodString;
135
+ }, z.core.$strict>>;
136
+ }, z.core.$strict>, z.ZodObject<{
137
+ kind: z.ZodLiteral<"table">;
138
+ heading: z.ZodString;
139
+ origin: z.ZodEnum<{
140
+ records: "records";
141
+ report: "report";
142
+ }>;
143
+ columns: z.ZodArray<z.ZodObject<{
144
+ label: z.ZodString;
145
+ numeric: z.ZodBoolean;
146
+ }, z.core.$strict>>;
147
+ rows: z.ZodArray<z.ZodArray<z.ZodString>>;
148
+ more: z.ZodInt;
149
+ }, z.core.$strict>, z.ZodObject<{
150
+ kind: z.ZodLiteral<"notes">;
151
+ heading: z.ZodString;
152
+ origin: z.ZodEnum<{
153
+ records: "records";
154
+ report: "report";
155
+ }>;
156
+ items: z.ZodArray<z.ZodString>;
157
+ more: z.ZodInt;
158
+ }, z.core.$strict>, z.ZodObject<{
159
+ kind: z.ZodLiteral<"chart">;
160
+ heading: z.ZodString;
161
+ chart: z.ZodEnum<{
162
+ area: "area";
163
+ bar: "bar";
164
+ line: "line";
165
+ pie: "pie";
166
+ }>;
167
+ points: z.ZodArray<z.ZodObject<{
168
+ label: z.ZodString;
169
+ value: z.ZodNumber;
170
+ shown: z.ZodString;
171
+ }, z.core.$strict>>;
172
+ }, z.core.$strict>], "kind">>;
173
+ buttons: z.ZodArray<z.ZodObject<{
174
+ label: z.ZodString;
175
+ path: z.ZodString;
176
+ }, z.core.$strict>>;
177
+ actions: z.ZodArray<z.ZodObject<{
178
+ proposal: z.ZodInt;
179
+ label: z.ZodString;
180
+ }, z.core.$strict>>;
181
+ }, z.core.$strict>>;
117
182
  /** The "What should change?" this part asks (chat-decide.ts): a reply to its message is the feedback. */
118
183
  prompt: z.ZodOptional<z.ZodInt>;
119
184
  };
@@ -199,6 +264,69 @@ export declare const chatContentSchema: z.ZodObject<{
199
264
  }, z.core.$strict>;
200
265
  }, z.core.$strict>]>>>;
201
266
  }, z.core.$strict>>;
267
+ rich: z.ZodOptional<z.ZodObject<{
268
+ version: z.ZodLiteral<1>;
269
+ title: z.ZodString;
270
+ asOf: z.ZodString;
271
+ repos: z.ZodArray<z.ZodString>;
272
+ blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
273
+ kind: z.ZodLiteral<"text">;
274
+ text: z.ZodString;
275
+ }, z.core.$strict>, z.ZodObject<{
276
+ kind: z.ZodLiteral<"divider">;
277
+ }, z.core.$strict>, z.ZodObject<{
278
+ kind: z.ZodLiteral<"facts">;
279
+ heading: z.ZodString;
280
+ items: z.ZodArray<z.ZodObject<{
281
+ label: z.ZodString;
282
+ value: z.ZodString;
283
+ }, z.core.$strict>>;
284
+ }, z.core.$strict>, z.ZodObject<{
285
+ kind: z.ZodLiteral<"table">;
286
+ heading: z.ZodString;
287
+ origin: z.ZodEnum<{
288
+ records: "records";
289
+ report: "report";
290
+ }>;
291
+ columns: z.ZodArray<z.ZodObject<{
292
+ label: z.ZodString;
293
+ numeric: z.ZodBoolean;
294
+ }, z.core.$strict>>;
295
+ rows: z.ZodArray<z.ZodArray<z.ZodString>>;
296
+ more: z.ZodInt;
297
+ }, z.core.$strict>, z.ZodObject<{
298
+ kind: z.ZodLiteral<"notes">;
299
+ heading: z.ZodString;
300
+ origin: z.ZodEnum<{
301
+ records: "records";
302
+ report: "report";
303
+ }>;
304
+ items: z.ZodArray<z.ZodString>;
305
+ more: z.ZodInt;
306
+ }, z.core.$strict>, z.ZodObject<{
307
+ kind: z.ZodLiteral<"chart">;
308
+ heading: z.ZodString;
309
+ chart: z.ZodEnum<{
310
+ area: "area";
311
+ bar: "bar";
312
+ line: "line";
313
+ pie: "pie";
314
+ }>;
315
+ points: z.ZodArray<z.ZodObject<{
316
+ label: z.ZodString;
317
+ value: z.ZodNumber;
318
+ shown: z.ZodString;
319
+ }, z.core.$strict>>;
320
+ }, z.core.$strict>], "kind">>;
321
+ buttons: z.ZodArray<z.ZodObject<{
322
+ label: z.ZodString;
323
+ path: z.ZodString;
324
+ }, z.core.$strict>>;
325
+ actions: z.ZodArray<z.ZodObject<{
326
+ proposal: z.ZodInt;
327
+ label: z.ZodString;
328
+ }, z.core.$strict>>;
329
+ }, z.core.$strict>>;
202
330
  prompt: z.ZodOptional<z.ZodInt>;
203
331
  }, z.core.$strict>;
204
332
  export type ChatContent = z.infer<typeof chatContentSchema>;
@@ -286,6 +414,69 @@ export declare const savedChatPartSchema: z.ZodObject<{
286
414
  }, z.core.$strict>;
287
415
  }, z.core.$strict>]>>>;
288
416
  }, z.core.$strict>>;
417
+ rich: z.ZodOptional<z.ZodObject<{
418
+ version: z.ZodLiteral<1>;
419
+ title: z.ZodString;
420
+ asOf: z.ZodString;
421
+ repos: z.ZodArray<z.ZodString>;
422
+ blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
423
+ kind: z.ZodLiteral<"text">;
424
+ text: z.ZodString;
425
+ }, z.core.$strict>, z.ZodObject<{
426
+ kind: z.ZodLiteral<"divider">;
427
+ }, z.core.$strict>, z.ZodObject<{
428
+ kind: z.ZodLiteral<"facts">;
429
+ heading: z.ZodString;
430
+ items: z.ZodArray<z.ZodObject<{
431
+ label: z.ZodString;
432
+ value: z.ZodString;
433
+ }, z.core.$strict>>;
434
+ }, z.core.$strict>, z.ZodObject<{
435
+ kind: z.ZodLiteral<"table">;
436
+ heading: z.ZodString;
437
+ origin: z.ZodEnum<{
438
+ records: "records";
439
+ report: "report";
440
+ }>;
441
+ columns: z.ZodArray<z.ZodObject<{
442
+ label: z.ZodString;
443
+ numeric: z.ZodBoolean;
444
+ }, z.core.$strict>>;
445
+ rows: z.ZodArray<z.ZodArray<z.ZodString>>;
446
+ more: z.ZodInt;
447
+ }, z.core.$strict>, z.ZodObject<{
448
+ kind: z.ZodLiteral<"notes">;
449
+ heading: z.ZodString;
450
+ origin: z.ZodEnum<{
451
+ records: "records";
452
+ report: "report";
453
+ }>;
454
+ items: z.ZodArray<z.ZodString>;
455
+ more: z.ZodInt;
456
+ }, z.core.$strict>, z.ZodObject<{
457
+ kind: z.ZodLiteral<"chart">;
458
+ heading: z.ZodString;
459
+ chart: z.ZodEnum<{
460
+ area: "area";
461
+ bar: "bar";
462
+ line: "line";
463
+ pie: "pie";
464
+ }>;
465
+ points: z.ZodArray<z.ZodObject<{
466
+ label: z.ZodString;
467
+ value: z.ZodNumber;
468
+ shown: z.ZodString;
469
+ }, z.core.$strict>>;
470
+ }, z.core.$strict>], "kind">>;
471
+ buttons: z.ZodArray<z.ZodObject<{
472
+ label: z.ZodString;
473
+ path: z.ZodString;
474
+ }, z.core.$strict>>;
475
+ actions: z.ZodArray<z.ZodObject<{
476
+ proposal: z.ZodInt;
477
+ label: z.ZodString;
478
+ }, z.core.$strict>>;
479
+ }, z.core.$strict>>;
289
480
  prompt: z.ZodOptional<z.ZodInt>;
290
481
  }, z.core.$strict>;
291
482
  /** A saved part's content (`version` is the saved form's, not the content's). */
@@ -9,6 +9,7 @@
9
9
  */
10
10
  import { z } from "zod";
11
11
  import { parseContract, readVersioned, versioned } from "./contract.js";
12
+ import { chatCardSchema } from "./chat-card.js";
12
13
  const id = z.int().min(1);
13
14
  const link = z.strictObject({ label: z.string(), path: z.string() });
14
15
  /** A Toolroll button's one-time token, as every chat app carries it: 32 hex, or `d:` and 24 hex for a decide button
@@ -58,6 +59,9 @@ export const chatContentShape = {
58
59
  /** A result's, plan's, failure's or pull request's own buttons (chat-decide.ts), minted with the part: each an act's
59
60
  * one-time token or a link. They ride the message once it is sent. */
60
61
  decide: z.strictObject({ rows: z.array(z.array(z.union([z.strictObject({ label: z.string(), token: z.string().regex(CHAT_BUTTON_TOKEN) }), z.strictObject({ label: z.string(), link })]))) }).optional(),
62
+ /** A Toolroll card (docs/plans/toolroll-cards.md): `text` stays its plain version, and `link`/`also` its buttons, so
63
+ * an app that can't show it, or refuses it, still has the whole message. */
64
+ rich: chatCardSchema.optional(),
61
65
  /** The "What should change?" this part asks (chat-decide.ts): a reply to its message is the feedback. */
62
66
  prompt: id.optional(),
63
67
  };
@@ -566,6 +566,58 @@ export declare const COMMAND_OUTPUTS: {
566
566
  reason: z.ZodString;
567
567
  message: z.ZodOptional<z.ZodString>;
568
568
  }, z.core.$loose>], "ok">;
569
+ readonly "task ready": z.ZodDiscriminatedUnion<[z.ZodObject<{
570
+ envelopeVersion: z.ZodLiteral<1>;
571
+ ok: z.ZodLiteral<true>;
572
+ command: z.ZodLiteral<"task ready">;
573
+ taskId: z.ZodString;
574
+ activeTaskId: z.ZodString;
575
+ run: z.ZodNullable<z.ZodNumber>;
576
+ head: z.ZodNullable<z.ZodString>;
577
+ answer: z.ZodEnum<{
578
+ merged: "merged";
579
+ no: "no";
580
+ "not-yet": "not-yet";
581
+ yes: "yes";
582
+ }>;
583
+ sentence: z.ZodString;
584
+ rows: z.ZodArray<z.ZodObject<{
585
+ key: z.ZodEnum<{
586
+ build: "build";
587
+ checks: "checks";
588
+ comments: "comments";
589
+ conflicts: "conflicts";
590
+ plan: "plan";
591
+ "pr-ci": "pr-ci";
592
+ "pull-request": "pull-request";
593
+ release: "release";
594
+ requirements: "requirements";
595
+ "up-to-date": "up-to-date";
596
+ }>;
597
+ label: z.ZodString;
598
+ mark: z.ZodEnum<{
599
+ no: "no";
600
+ skip: "skip";
601
+ unknown: "unknown";
602
+ waiting: "waiting";
603
+ yes: "yes";
604
+ }>;
605
+ say: z.ZodString;
606
+ act: z.ZodNullable<z.ZodObject<{
607
+ kind: z.ZodEnum<{
608
+ fix: "fix";
609
+ retry: "retry";
610
+ "run-checks": "run-checks";
611
+ }>;
612
+ }, z.core.$loose>>;
613
+ }, z.core.$loose>>;
614
+ }, z.core.$loose>, z.ZodObject<{
615
+ envelopeVersion: z.ZodLiteral<1>;
616
+ ok: z.ZodLiteral<false>;
617
+ command: z.ZodLiteral<"task ready">;
618
+ reason: z.ZodString;
619
+ message: z.ZodOptional<z.ZodString>;
620
+ }, z.core.$loose>], "ok">;
569
621
  readonly "task hold": z.ZodDiscriminatedUnion<[z.ZodObject<{
570
622
  envelopeVersion: z.ZodLiteral<1>;
571
623
  ok: z.ZodLiteral<true>;
@@ -183,6 +183,10 @@ export const COMMAND_OUTPUTS = {
183
183
  // `status` is the observation's own answer (the one merges read); the rows are each check's timing.
184
184
  "task ship": answers("task ship", { task: str, pullRequest: int, githubRepo: str, head: str, observedAt: str, status: z.enum(["passing", "failing", "running", "none"]),
185
185
  checks: rows({ name: str, workflow: nullable(str), state: z.enum(["queued", "running", "passed", "failed", "skipped", "cancelled", "neutral"]), startedAt: nullable(str), completedAt: nullable(str), url: nullable(str), kind: z.enum(["run", "status"]), seconds: nullable(int) }) }),
186
+ // "Can I merge?" (merge-checklist.ts): the answer, its sentence, and one row per fact, each blocker with its act.
187
+ "task ready": answers("task ready", { taskId: str, activeTaskId: str, run: nullable(int), head: nullable(str), answer: z.enum(["yes", "no", "not-yet", "merged"]), sentence: str,
188
+ rows: rows({ key: z.enum(["plan", "build", "checks", "requirements", "pull-request", "pr-ci", "up-to-date", "conflicts", "comments", "release"]), label: str,
189
+ mark: z.enum(["yes", "no", "waiting", "unknown", "skip"]), say: str, act: nullable(z.looseObject({ kind: z.enum(["run-checks", "retry", "fix"]) })) }) }),
186
190
  "task hold": answers("task hold", { id: str, reason: str, until: nullable(str) }),
187
191
  "task unhold": answers("task unhold", { id: str }),
188
192
  "task wait": answers("task wait", { task: str, outcome: str }),
@@ -87,6 +87,7 @@ export declare const CONSOLE_FORMS: {
87
87
  readonly projectConcurrency: FormContract<"concurrency" | "repo">;
88
88
  readonly projectLiveView: FormContract<"act" | "nonce" | "password" | "repo">;
89
89
  readonly projectNetwork: FormContract<"hosts" | "local" | "mode" | "password" | "repo">;
90
+ readonly projectFallback: FormContract<"agents" | "paid" | "password" | "repo">;
90
91
  readonly projectWrites: FormContract<"password" | "repo" | "writes">;
91
92
  readonly projectCheckAccess: FormContract<"confirm-open" | "level" | "password" | "repo">;
92
93
  readonly projectSandbox: FormContract<"mach" | "password" | "read-deny" | "repo">;
@@ -98,7 +99,7 @@ export declare const CONSOLE_FORMS: {
98
99
  readonly signIn: FormContract<"action" | "client-id" | "client-secret" | "groups-claim" | "issuer" | "label" | "password" | "passwords" | "scopes" | `group-${string}` | `projects-${string}` | `role-${string}`>;
99
100
  readonly updates: FormContract<"password" | "version" | "when">;
100
101
  readonly retention: FormContract<"chat" | "checkouts" | "evidence" | "notifications" | "password">;
101
- readonly storage: FormContract<"cleanup" | "password" | "path" | "preview">;
102
+ readonly storage: FormContract<"cleanup" | "idle" | "password" | "path" | "preview">;
102
103
  readonly pullRequests: FormContract<"act" | "base" | "github" | "method" | "password" | "repo" | "when-green">;
103
104
  readonly checks: FormContract<"act" | "command" | "level" | "on" | "password" | "repo" | "timeout">;
104
105
  readonly backups: FormContract<"every" | "folder" | "keep" | "live_every" | "live_folder" | "password">;
@@ -115,6 +116,8 @@ export declare const CONSOLE_FORMS: {
115
116
  readonly modelsRules: FormContract<"id" | "password" | "rule" | "scope">;
116
117
  readonly knowledgeRefresh: FormContract<"repo">;
117
118
  readonly knowledgeProposal: FormContract<"decision" | "proposal" | "repo">;
119
+ readonly knowledgeNote: FormContract<"claim" | "decision" | "proposal" | "repo">;
120
+ readonly knowledgeTidy: FormContract<"action" | "choice" | "claim" | "proposal" | "repo" | "revision" | "target" | "why">;
118
121
  readonly knowledgeDecision: FormContract<"action" | "claim" | "decision" | "reason" | "repo" | "why">;
119
122
  readonly knowledgeChange: FormContract<"action" | "content" | "id" | "identity" | "instructions" | "path" | "repo" | "restore" | "revision" | "title">;
120
123
  readonly learningChange: FormContract<"action" | "identity" | "lesson" | "repo" | "revision" | "sha" | "version">;
@@ -140,7 +143,13 @@ export declare const CONSOLE_FORMS: {
140
143
  readonly projectsSelect: FormContract<"path" | "return">;
141
144
  readonly projectsRemove: FormContract<"repo">;
142
145
  readonly projectsOpen: FormContract<"path" | "return">;
143
- readonly tasksAdd: FormContract<"acceptance" | "after" | "goal" | "id" | "not" | "permission-mode" | "plan-first" | "planning-policy" | "projectRevision" | "quality-mode" | "repo" | "scout" | "title" | "touches">;
146
+ readonly codeMap: FormContract<"on" | "repo">;
147
+ readonly codeMapRefresh: FormContract<never>;
148
+ readonly tasksFast: FormContract<"digest" | "preview">;
149
+ readonly keepGrown: FormContract<never>;
150
+ readonly followThrough: FormContract<"act" | "capture" | "file" | "finding" | "label" | "line" | "note" | "pointer" | "run">;
151
+ readonly releaseGoOn: FormContract<"password">;
152
+ readonly tasksAdd: FormContract<"acceptance" | "after" | "from" | "from-head" | "from-read" | "goal" | "id" | "not" | "permission-mode" | "plain" | "plan-first" | "planning-policy" | "projectRevision" | "quality-mode" | "repo" | "scout" | "title" | "touches">;
144
153
  readonly queue: FormContract<"before" | "column" | "from" | "note" | "projectRevision" | "queueRevision" | "respond" | "runner" | "task">;
145
154
  readonly runnerRegister: FormContract<"capacity" | "name" | "token">;
146
155
  readonly mode: FormContract<"auto-approve" | "chat-approve" | "days" | "digest" | "expiry" | "name" | "nonce" | "plan-auto" | "publication" | "repair-auto" | "review-auto" | "review-retry-auto" | "token">;
@@ -198,7 +207,7 @@ export declare const CONSOLE_FORMS: {
198
207
  readonly taskRevision: FormContract<"revision-id" | "token">;
199
208
  readonly taskCancel: FormContract<"reason">;
200
209
  readonly taskRoute: FormContract<"agent" | "clear-phase" | "model" | "phase" | "provider" | "return" | "risky" | "sawDigest" | "size">;
201
- readonly taskScope: FormContract<"acceptance" | "budget-microusd" | "budget-usd" | "goal" | "goal-brief" | "not" | "permission-mode" | "quality-mode" | "requirement" | "requirement-new" | "sawDigest" | "touches">;
210
+ readonly taskScope: FormContract<"acceptance" | "budget-microusd" | "budget-usd" | "goal" | "goal-brief" | "not" | "permission-mode" | "quality-mode" | "requirement" | "requirement-how" | "requirement-new" | "requirement-new-how" | "sawDigest" | "touches">;
202
211
  readonly taskApprove: FormContract<"digest" | "nonce" | "rebuild" | "return" | "sheet" | "token">;
203
212
  readonly taskAcceptProof: FormContract<"note" | "return" | "run">;
204
213
  readonly taskComplete: FormContract<"accept" | "note" | "publish" | "receipt" | "return" | "run">;
@@ -96,6 +96,7 @@ export const CONSOLE_FORMS = {
96
96
  projectConcurrency: formContract("POST /settings/project/concurrency", ["repo", "concurrency"]),
97
97
  projectLiveView: formContract("POST /settings/project/live-view", ["repo", "act", "password", "nonce"]),
98
98
  projectNetwork: formContract("POST /settings/project/network", ["repo", "mode", "local", "hosts", "password"]),
99
+ projectFallback: formContract("POST /settings/project/fallback", ["repo", "agents", "paid", "password"]),
99
100
  projectWrites: formContract("POST /settings/project/writes", ["repo", "writes", "password"]),
100
101
  projectCheckAccess: formContract("POST /settings/project/check-access", ["repo", "level", "confirm-open", "password"]),
101
102
  projectSandbox: formContract("POST /settings/project/sandbox", ["repo", "read-deny", "mach", "password"]),
@@ -107,7 +108,7 @@ export const CONSOLE_FORMS = {
107
108
  signIn: formContract("POST /settings/sign-in", ["action", "password", "issuer", "client-id", "client-secret", "label", "scopes", "groups-claim", "passwords"], { prefixes: ["group-", "role-", "projects-"] }),
108
109
  updates: formContract("POST /settings/updates, /settings/updates/seen, /settings/updates/cancel", ["password", "version", "when"]),
109
110
  retention: formContract("POST /settings/retention", ["password", "evidence", "checkouts", "chat", "notifications"]),
110
- storage: formContract("POST /settings/storage, /settings/storage/clean, /settings/storage/discard", ["password", "cleanup", "preview", "path"]),
111
+ storage: formContract("POST /settings/storage, /settings/storage/clean, /settings/storage/discard", ["password", "cleanup", "idle", "preview", "path"]),
111
112
  pullRequests: formContract("POST /settings/pull-requests", ["repo", "act", "password", "github", "base", "method", "when-green"]),
112
113
  checks: formContract("POST /settings/checks", ["repo", "password", "act", "on", "level", "command", "timeout"]),
113
114
  backups: formContract("POST /settings/backups", ["password", "every", "keep", "folder", "live_every", "live_folder"]),
@@ -129,6 +130,8 @@ export const CONSOLE_FORMS = {
129
130
  modelsRules: formContract("POST /settings/models/accept, /settings/models/keep, /settings/models/suggest-on, /settings/models/turn-off, /settings/models/not-now, /settings/models/suggest-off, /settings/models/try, /settings/models/stop", ["password", "scope", "id", "rule"]),
130
131
  knowledgeRefresh: formContract("POST /settings/knowledge/refresh", ["repo"]),
131
132
  knowledgeProposal: formContract("POST /settings/knowledge/proposal", ["repo", "decision", "proposal"]),
133
+ knowledgeNote: formContract("POST /settings/knowledge/note", ["repo", "decision", "proposal", "claim"]),
134
+ knowledgeTidy: formContract("POST /settings/knowledge/tidy", ["repo", "action", "proposal", "choice", "claim", "why", "target", "revision"]),
132
135
  knowledgeDecision: formContract("POST /settings/knowledge/decision", ["repo", "action", "claim", "why", "decision", "reason"]),
133
136
  knowledgeChange: formContract("POST /settings/knowledge/change", ["repo", "action", "identity", "revision", "instructions", "title", "content", "path", "id", "restore"]),
134
137
  learningChange: formContract("POST /settings/learning/change", ["repo", "action", "identity", "revision", "lesson", "version", "sha"]),
@@ -155,7 +158,13 @@ export const CONSOLE_FORMS = {
155
158
  projectsSelect: formContract("POST /projects/select", ["path", "return"]),
156
159
  projectsRemove: formContract("POST /projects/remove", ["repo"]),
157
160
  projectsOpen: formContract("POST /projects/open", ["path", "return"]),
158
- tasksAdd: formContract("POST /tasks/add", ["projectRevision", "id", "title", "repo", "goal", "not", "touches", "scout", "permission-mode", "quality-mode", "after", "acceptance", "planning-policy", "plan-first"]),
161
+ codeMap: formContract("POST /settings/project/code-map, /settings/project/code-map/holdout", ["repo", "on"]),
162
+ codeMapRefresh: formContract("POST /projects/<project>/map/refresh", []),
163
+ tasksFast: formContract("POST /tasks/fast", ["preview", "digest"]),
164
+ keepGrown: formContract("POST /t/<id>/keep-grown", []),
165
+ followThrough: formContract("POST /t/<id>/follow-through", ["act", "note", "file", "line", "finding", "run", "pointer", "capture", "label"]),
166
+ releaseGoOn: formContract("POST /t/<id>/release/go-on", ["password"]),
167
+ tasksAdd: formContract("POST /tasks/add", ["projectRevision", "plain", "from", "from-head", "from-read", "id", "title", "repo", "goal", "not", "touches", "scout", "permission-mode", "quality-mode", "after", "acceptance", "planning-policy", "plan-first"]),
159
168
  queue: formContract("POST /queue/move, /queue/note", ["runner", "note", "from", "projectRevision", "respond", "task", "column", "before", "queueRevision"]),
160
169
  runnerRegister: formContract("POST /fleet/runner/register", ["token", "name", "capacity"]),
161
170
  mode: formContract("POST /mode/confirm, /mode/sign", ["name", "days", "auto-approve", "plan-auto", "chat-approve", "publication", "expiry", "nonce", "digest", "token", "review-auto", "review-retry-auto", "repair-auto"]),
@@ -216,7 +225,7 @@ export const CONSOLE_FORMS = {
216
225
  taskRevision: formContract("POST /t/<task>/accept-revision|reject-revision", ["revision-id", "token"]),
217
226
  taskCancel: formContract("POST /t/<task>/cancel", ["reason"]),
218
227
  taskRoute: formContract("POST /t/<task>/route", ["size", "risky", "phase", "clear-phase", "agent", "provider", "model", "sawDigest", "return"]),
219
- taskScope: formContract("POST /t/<task>/scope", ["sawDigest", "permission-mode", "quality-mode", "budget-usd", "budget-microusd", "requirement", "requirement-new", "goal-brief", "goal", "not", "touches", "acceptance"]),
228
+ taskScope: formContract("POST /t/<task>/scope", ["sawDigest", "permission-mode", "quality-mode", "budget-usd", "budget-microusd", "requirement", "requirement-new", "requirement-how", "requirement-new-how", "goal-brief", "goal", "not", "touches", "acceptance"]),
220
229
  taskApprove: formContract("POST /t/<task>/approve", ["return", "digest", "token", "nonce", "rebuild", "sheet"]),
221
230
  taskAcceptProof: formContract("POST /t/<task>/accept-proof", ["run", "note", "return"]),
222
231
  taskComplete: formContract("POST /t/<task>/complete", ["receipt", "run", "accept", "note", "publish", "return"]),
@@ -4,13 +4,15 @@
4
4
  * (mate-tools.ts). The lead-tools contract (item 5) imports it from here rather than restating it.
5
5
  */
6
6
  import { z } from "zod";
7
- export declare const PROPOSE_FLOW_OPERATIONS: readonly ["create", "edit", "add_card", "move_card", "approve", "send_back", "choose", "cancel_card", "comment", "assign", "follow", "unfollow", "save_script", "add_trigger", "pause_trigger", "resume_trigger", "remove_trigger", "kit", "starter", "allow_browser", "turn_off_browser"];
7
+ export declare const PROPOSE_FLOW_OPERATIONS: readonly ["archive", "turn_off_unattended", "allow_unattended", "create", "edit", "add_card", "move_card", "approve", "send_back", "choose", "cancel_card", "comment", "assign", "follow", "unfollow", "save_script", "add_trigger", "pause_trigger", "resume_trigger", "remove_trigger", "kit", "starter", "allow_browser", "turn_off_browser"];
8
8
  export declare const proposeFlowInputSchema: z.ZodObject<{
9
9
  operation: z.ZodEnum<{
10
10
  add_card: "add_card";
11
11
  add_trigger: "add_trigger";
12
12
  allow_browser: "allow_browser";
13
+ allow_unattended: "allow_unattended";
13
14
  approve: "approve";
15
+ archive: "archive";
14
16
  assign: "assign";
15
17
  cancel_card: "cancel_card";
16
18
  choose: "choose";
@@ -27,11 +29,16 @@ export declare const proposeFlowInputSchema: z.ZodObject<{
27
29
  send_back: "send_back";
28
30
  starter: "starter";
29
31
  turn_off_browser: "turn_off_browser";
32
+ turn_off_unattended: "turn_off_unattended";
30
33
  unfollow: "unfollow";
31
34
  }>;
32
35
  repo: z.ZodOptional<z.ZodString>;
33
36
  flow: z.ZodOptional<z.ZodInt>;
34
37
  card: z.ZodOptional<z.ZodInt>;
38
+ days: z.ZodOptional<z.ZodInt>;
39
+ budget: z.ZodOptional<z.ZodString>;
40
+ runs: z.ZodOptional<z.ZodString>;
41
+ include: z.ZodOptional<z.ZodArray<z.ZodInt>>;
35
42
  kit: z.ZodOptional<z.ZodEnum<{
36
43
  [x: string]: string;
37
44
  }>>;
@@ -11,7 +11,7 @@ import { KITS } from "../kits.js";
11
11
  import { TEXT_LIMITS } from "../text-limits.js";
12
12
  import { toModelSchema } from "./contract.js";
13
13
  import { flowStepsSchema, leadTriggerSchema, SCRIPT_LANGUAGES, SCRIPT_NAME } from "./flow.js";
14
- export const PROPOSE_FLOW_OPERATIONS = ["create", "edit", "add_card", "move_card", "approve", "send_back", "choose", "cancel_card", "comment", "assign", "follow", "unfollow", "save_script", "add_trigger", "pause_trigger", "resume_trigger", "remove_trigger", "kit", "starter", "allow_browser", "turn_off_browser"];
14
+ export const PROPOSE_FLOW_OPERATIONS = ["archive", "turn_off_unattended", "allow_unattended", "create", "edit", "add_card", "move_card", "approve", "send_back", "choose", "cancel_card", "comment", "assign", "follow", "unfollow", "save_script", "add_trigger", "pause_trigger", "resume_trigger", "remove_trigger", "kit", "starter", "allow_browser", "turn_off_browser"];
15
15
  const id = z.int().min(1);
16
16
  const enumOf = (values) => z.enum(values);
17
17
  export const proposeFlowInputSchema = z.strictObject({
@@ -19,6 +19,8 @@ export const proposeFlowInputSchema = z.strictObject({
19
19
  /** A project as list_repos names it (r1, r2). */
20
20
  repo: z.string().regex(/^r[0-9]{1,3}$/, { error: "must be a project from list_repos, like r1" }).optional(),
21
21
  flow: id.optional(), card: id.optional(),
22
+ /** allow_unattended: how long it runs on its own, what it may spend, and the schedules chosen beyond the plain ones. */
23
+ days: z.int().min(1).optional(), budget: z.string().max(20).optional(), runs: z.string().max(20).optional(), include: z.array(id).max(50).optional(),
22
24
  kit: enumOf(KITS.map(one => one.id)).optional(),
23
25
  starter: z.enum(STARTER_IDS).optional(),
24
26
  name: z.string().max(TEXT_LIMITS.flowName).optional(),