toolroll 0.5.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 (626) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1113 -0
  3. package/THIRD_PARTY_NOTICES.md +449 -0
  4. package/dist/accent-colors.d.ts +48 -0
  5. package/dist/accent-colors.js +122 -0
  6. package/dist/action-ledger.d.ts +26 -0
  7. package/dist/action-ledger.js +75 -0
  8. package/dist/agent-fence.d.ts +42 -0
  9. package/dist/agent-fence.js +183 -0
  10. package/dist/agentconfig.d.ts +216 -0
  11. package/dist/agentconfig.js +454 -0
  12. package/dist/api-tokens.d.ts +16 -0
  13. package/dist/api-tokens.js +27 -0
  14. package/dist/approval-policy.d.ts +69 -0
  15. package/dist/approval-policy.js +137 -0
  16. package/dist/approval-rules-ui.d.ts +25 -0
  17. package/dist/approval-rules-ui.js +39 -0
  18. package/dist/assignment-adapters.d.ts +180 -0
  19. package/dist/assignment-adapters.js +239 -0
  20. package/dist/assignment-brief.d.ts +71 -0
  21. package/dist/assignment-brief.js +129 -0
  22. package/dist/assignment-delivery.d.ts +56 -0
  23. package/dist/assignment-delivery.js +160 -0
  24. package/dist/assignment-presentation.d.ts +26 -0
  25. package/dist/assignment-presentation.js +80 -0
  26. package/dist/assignment-status.d.ts +62 -0
  27. package/dist/assignment-status.js +152 -0
  28. package/dist/assignment-ui.d.ts +71 -0
  29. package/dist/assignment-ui.js +103 -0
  30. package/dist/assignment.d.ts +222 -0
  31. package/dist/assignment.js +399 -0
  32. package/dist/attest.d.ts +56 -0
  33. package/dist/attest.js +153 -0
  34. package/dist/backend.d.ts +97 -0
  35. package/dist/backend.js +166 -0
  36. package/dist/backup-ui.d.ts +22 -0
  37. package/dist/backup-ui.js +59 -0
  38. package/dist/backup.d.ts +84 -0
  39. package/dist/backup.js +421 -0
  40. package/dist/beads.d.ts +34 -0
  41. package/dist/beads.js +135 -0
  42. package/dist/bin.d.ts +2 -0
  43. package/dist/bin.js +22 -0
  44. package/dist/board.d.ts +150 -0
  45. package/dist/board.js +210 -0
  46. package/dist/boot-identity.d.ts +63 -0
  47. package/dist/boot-identity.js +99 -0
  48. package/dist/browser/THIRD_PARTY_NOTICES.txt +2295 -0
  49. package/dist/browser/workspace.css +4 -0
  50. package/dist/browser/workspace.js +225 -0
  51. package/dist/browser-crew.d.ts +11 -0
  52. package/dist/browser-crew.js +50 -0
  53. package/dist/browser-shell.d.ts +8 -0
  54. package/dist/browser-shell.js +60 -0
  55. package/dist/browser-workspace.d.ts +780 -0
  56. package/dist/browser-workspace.js +47 -0
  57. package/dist/budget-alerts.d.ts +19 -0
  58. package/dist/budget-alerts.js +46 -0
  59. package/dist/builder.d.ts +370 -0
  60. package/dist/builder.js +3262 -0
  61. package/dist/capscan.d.ts +35 -0
  62. package/dist/capscan.js +113 -0
  63. package/dist/chat-acceptance.d.ts +71 -0
  64. package/dist/chat-acceptance.js +120 -0
  65. package/dist/chat-actions.d.ts +265 -0
  66. package/dist/chat-actions.js +1273 -0
  67. package/dist/chat-channel.d.ts +109 -0
  68. package/dist/chat-channel.js +652 -0
  69. package/dist/chat-continuity.d.ts +32 -0
  70. package/dist/chat-continuity.js +317 -0
  71. package/dist/chat-controls.d.ts +113 -0
  72. package/dist/chat-controls.js +53 -0
  73. package/dist/chat-delivery-state.d.ts +159 -0
  74. package/dist/chat-delivery-state.js +309 -0
  75. package/dist/chat-delivery.d.ts +38 -0
  76. package/dist/chat-delivery.js +693 -0
  77. package/dist/chat-display.d.ts +1 -0
  78. package/dist/chat-display.js +18 -0
  79. package/dist/chat-evidence.d.ts +123 -0
  80. package/dist/chat-evidence.js +207 -0
  81. package/dist/chat-flow.d.ts +44 -0
  82. package/dist/chat-flow.js +215 -0
  83. package/dist/chat-inbox.d.ts +57 -0
  84. package/dist/chat-inbox.js +123 -0
  85. package/dist/chat-polish.d.ts +16 -0
  86. package/dist/chat-polish.js +135 -0
  87. package/dist/chat-review.d.ts +46 -0
  88. package/dist/chat-review.js +98 -0
  89. package/dist/chat-rooms.d.ts +123 -0
  90. package/dist/chat-rooms.js +216 -0
  91. package/dist/chat-task-actions.d.ts +44 -0
  92. package/dist/chat-task-actions.js +79 -0
  93. package/dist/check-progress.d.ts +51 -0
  94. package/dist/check-progress.js +290 -0
  95. package/dist/child-database.d.ts +12 -0
  96. package/dist/child-database.js +30 -0
  97. package/dist/claim.d.ts +688 -0
  98. package/dist/claim.js +1740 -0
  99. package/dist/cli.d.ts +137 -0
  100. package/dist/cli.js +1461 -0
  101. package/dist/codex-limits.d.ts +15 -0
  102. package/dist/codex-limits.js +145 -0
  103. package/dist/coding-context.d.ts +55 -0
  104. package/dist/coding-context.js +92 -0
  105. package/dist/coding-handoff.d.ts +57 -0
  106. package/dist/coding-handoff.js +277 -0
  107. package/dist/coding-provider.d.ts +72 -0
  108. package/dist/coding-provider.js +424 -0
  109. package/dist/coding-shipping-ui.d.ts +4 -0
  110. package/dist/coding-shipping-ui.js +12 -0
  111. package/dist/coding-types.d.ts +62 -0
  112. package/dist/coding-types.js +1 -0
  113. package/dist/coding-ui.d.ts +17 -0
  114. package/dist/coding-ui.js +364 -0
  115. package/dist/coding-update.d.ts +15 -0
  116. package/dist/coding-update.js +149 -0
  117. package/dist/coding-workspace.d.ts +124 -0
  118. package/dist/coding-workspace.js +768 -0
  119. package/dist/container-state.d.ts +5 -0
  120. package/dist/container-state.js +62 -0
  121. package/dist/containment.d.ts +197 -0
  122. package/dist/containment.js +559 -0
  123. package/dist/contest.d.ts +318 -0
  124. package/dist/contest.js +753 -0
  125. package/dist/control-setup.d.ts +35 -0
  126. package/dist/control-setup.js +40 -0
  127. package/dist/control-ui.d.ts +29 -0
  128. package/dist/control-ui.js +53 -0
  129. package/dist/controller-service.d.ts +1 -0
  130. package/dist/controller-service.js +19 -0
  131. package/dist/controller-supervisor.d.ts +30 -0
  132. package/dist/controller-supervisor.js +104 -0
  133. package/dist/converse.d.ts +304 -0
  134. package/dist/converse.js +849 -0
  135. package/dist/coordinator-proposals.d.ts +29 -0
  136. package/dist/coordinator-proposals.js +137 -0
  137. package/dist/coordinator.d.ts +186 -0
  138. package/dist/coordinator.js +447 -0
  139. package/dist/credentials-ui.d.ts +25 -0
  140. package/dist/credentials-ui.js +48 -0
  141. package/dist/daemon.d.ts +209 -0
  142. package/dist/daemon.js +604 -0
  143. package/dist/decision.d.ts +120 -0
  144. package/dist/decision.js +388 -0
  145. package/dist/demo.d.ts +55 -0
  146. package/dist/demo.js +992 -0
  147. package/dist/desktop-access.d.ts +28 -0
  148. package/dist/desktop-access.js +88 -0
  149. package/dist/desktop-bundle.d.ts +16 -0
  150. package/dist/desktop-bundle.js +74 -0
  151. package/dist/desktop-host.d.ts +54 -0
  152. package/dist/desktop-host.js +508 -0
  153. package/dist/desktop-update-gate.d.ts +12 -0
  154. package/dist/desktop-update-gate.js +91 -0
  155. package/dist/desktop-update-recovery.d.ts +14 -0
  156. package/dist/desktop-update-recovery.js +243 -0
  157. package/dist/desktop-update.d.ts +110 -0
  158. package/dist/desktop-update.js +740 -0
  159. package/dist/discord-api.d.ts +20 -0
  160. package/dist/discord-api.js +138 -0
  161. package/dist/discord-chat.d.ts +16 -0
  162. package/dist/discord-chat.js +381 -0
  163. package/dist/discord-settings.d.ts +7 -0
  164. package/dist/discord-settings.js +75 -0
  165. package/dist/discord.d.ts +10 -0
  166. package/dist/discord.js +169 -0
  167. package/dist/discover.d.ts +75 -0
  168. package/dist/discover.js +150 -0
  169. package/dist/dispatch.d.ts +100 -0
  170. package/dist/dispatch.js +311 -0
  171. package/dist/dispose.d.ts +161 -0
  172. package/dist/dispose.js +803 -0
  173. package/dist/email-settings.d.ts +34 -0
  174. package/dist/email-settings.js +50 -0
  175. package/dist/envelope.d.ts +47 -0
  176. package/dist/envelope.js +105 -0
  177. package/dist/evidence-pack.d.ts +185 -0
  178. package/dist/evidence-pack.js +258 -0
  179. package/dist/evidence.d.ts +345 -0
  180. package/dist/evidence.js +782 -0
  181. package/dist/exec.d.ts +285 -0
  182. package/dist/exec.js +1841 -0
  183. package/dist/exhaustion.d.ts +85 -0
  184. package/dist/exhaustion.js +141 -0
  185. package/dist/export-ui.d.ts +4 -0
  186. package/dist/export-ui.js +17 -0
  187. package/dist/export.d.ts +48 -0
  188. package/dist/export.js +305 -0
  189. package/dist/flow-actions.d.ts +77 -0
  190. package/dist/flow-actions.js +203 -0
  191. package/dist/flow-code.d.ts +50 -0
  192. package/dist/flow-code.js +159 -0
  193. package/dist/flow-draft.d.ts +38 -0
  194. package/dist/flow-draft.js +80 -0
  195. package/dist/flow-engine.d.ts +66 -0
  196. package/dist/flow-engine.js +416 -0
  197. package/dist/flow-insights.d.ts +95 -0
  198. package/dist/flow-insights.js +149 -0
  199. package/dist/flow-live.d.ts +24 -0
  200. package/dist/flow-live.js +150 -0
  201. package/dist/flow-people.d.ts +24 -0
  202. package/dist/flow-people.js +91 -0
  203. package/dist/flow-replies.d.ts +48 -0
  204. package/dist/flow-replies.js +113 -0
  205. package/dist/flow-scripts.d.ts +38 -0
  206. package/dist/flow-scripts.js +73 -0
  207. package/dist/flow-secrets.d.ts +13 -0
  208. package/dist/flow-secrets.js +45 -0
  209. package/dist/flow-sort.d.ts +82 -0
  210. package/dist/flow-sort.js +153 -0
  211. package/dist/flow-steps.d.ts +40 -0
  212. package/dist/flow-steps.js +408 -0
  213. package/dist/flow-triggers.d.ts +244 -0
  214. package/dist/flow-triggers.js +959 -0
  215. package/dist/flows-ui.d.ts +20 -0
  216. package/dist/flows-ui.js +175 -0
  217. package/dist/flows.d.ts +229 -0
  218. package/dist/flows.js +968 -0
  219. package/dist/fonts.d.ts +19 -0
  220. package/dist/fonts.js +19 -0
  221. package/dist/gaps.d.ts +35 -0
  222. package/dist/gaps.js +101 -0
  223. package/dist/gate-failure.d.ts +40 -0
  224. package/dist/gate-failure.js +66 -0
  225. package/dist/git.d.ts +54 -0
  226. package/dist/git.js +94 -0
  227. package/dist/google-mail.d.ts +58 -0
  228. package/dist/google-mail.js +151 -0
  229. package/dist/grant.d.ts +136 -0
  230. package/dist/grant.js +238 -0
  231. package/dist/graph.d.ts +164 -0
  232. package/dist/graph.js +383 -0
  233. package/dist/guides.d.ts +22 -0
  234. package/dist/guides.js +363 -0
  235. package/dist/held.d.ts +150 -0
  236. package/dist/held.js +799 -0
  237. package/dist/invoke.d.ts +112 -0
  238. package/dist/invoke.js +780 -0
  239. package/dist/issues.d.ts +41 -0
  240. package/dist/issues.js +131 -0
  241. package/dist/job-object-helper.ps1 +252 -0
  242. package/dist/jsonl-discriminants.d.ts +11 -0
  243. package/dist/jsonl-discriminants.js +93 -0
  244. package/dist/keys.d.ts +104 -0
  245. package/dist/keys.js +229 -0
  246. package/dist/kits-ui.d.ts +17 -0
  247. package/dist/kits-ui.js +46 -0
  248. package/dist/kits.d.ts +86 -0
  249. package/dist/kits.js +215 -0
  250. package/dist/knowledge-cli.d.ts +101 -0
  251. package/dist/knowledge-cli.js +92 -0
  252. package/dist/knowledge-ui.d.ts +24 -0
  253. package/dist/knowledge-ui.js +40 -0
  254. package/dist/lead-context.d.ts +8 -0
  255. package/dist/lead-context.js +56 -0
  256. package/dist/lead-follow.d.ts +22 -0
  257. package/dist/lead-follow.js +167 -0
  258. package/dist/lead-status.d.ts +75 -0
  259. package/dist/lead-status.js +285 -0
  260. package/dist/ledger-chain.d.ts +46 -0
  261. package/dist/ledger-chain.js +187 -0
  262. package/dist/ledger-csv.d.ts +4 -0
  263. package/dist/ledger-csv.js +11 -0
  264. package/dist/ledger-view.d.ts +24 -0
  265. package/dist/ledger-view.js +58 -0
  266. package/dist/limits-ui.d.ts +26 -0
  267. package/dist/limits-ui.js +67 -0
  268. package/dist/link.d.ts +72 -0
  269. package/dist/link.js +217 -0
  270. package/dist/live.d.ts +96 -0
  271. package/dist/live.js +366 -0
  272. package/dist/liveness.d.ts +30 -0
  273. package/dist/liveness.js +42 -0
  274. package/dist/log.d.ts +7 -0
  275. package/dist/log.js +25 -0
  276. package/dist/mailbox.d.ts +57 -0
  277. package/dist/mailbox.js +150 -0
  278. package/dist/maintenance.d.ts +11 -0
  279. package/dist/maintenance.js +35 -0
  280. package/dist/mate-cli.d.ts +52 -0
  281. package/dist/mate-cli.js +345 -0
  282. package/dist/mate-contract.d.ts +10 -0
  283. package/dist/mate-contract.js +30 -0
  284. package/dist/mate-doors.d.ts +69 -0
  285. package/dist/mate-doors.js +548 -0
  286. package/dist/mate-progress.d.ts +29 -0
  287. package/dist/mate-progress.js +121 -0
  288. package/dist/mate-tools.d.ts +94 -0
  289. package/dist/mate-tools.js +1878 -0
  290. package/dist/mate.d.ts +92 -0
  291. package/dist/mate.js +435 -0
  292. package/dist/mcp-connect.d.ts +103 -0
  293. package/dist/mcp-connect.js +252 -0
  294. package/dist/mcp.d.ts +27 -0
  295. package/dist/mcp.js +651 -0
  296. package/dist/memory-cli.d.ts +466 -0
  297. package/dist/memory-cli.js +111 -0
  298. package/dist/memory-pass.d.ts +160 -0
  299. package/dist/memory-pass.js +409 -0
  300. package/dist/metrics.d.ts +3 -0
  301. package/dist/metrics.js +56 -0
  302. package/dist/mobile-viewport.d.ts +3 -0
  303. package/dist/mobile-viewport.js +37 -0
  304. package/dist/model-catalog.d.ts +118 -0
  305. package/dist/model-catalog.js +376 -0
  306. package/dist/models-cli.d.ts +102 -0
  307. package/dist/models-cli.js +66 -0
  308. package/dist/models-ui.d.ts +34 -0
  309. package/dist/models-ui.js +68 -0
  310. package/dist/modes.d.ts +80 -0
  311. package/dist/modes.js +182 -0
  312. package/dist/monitoring-settings.d.ts +44 -0
  313. package/dist/monitoring-settings.js +173 -0
  314. package/dist/monitoring-ui.d.ts +20 -0
  315. package/dist/monitoring-ui.js +51 -0
  316. package/dist/monitoring.d.ts +34 -0
  317. package/dist/monitoring.js +221 -0
  318. package/dist/names.d.ts +67 -0
  319. package/dist/names.js +102 -0
  320. package/dist/observations.d.ts +40 -0
  321. package/dist/observations.js +211 -0
  322. package/dist/oidc.d.ts +71 -0
  323. package/dist/oidc.js +182 -0
  324. package/dist/onboard.d.ts +108 -0
  325. package/dist/onboard.js +325 -0
  326. package/dist/openrouter-models.d.ts +30 -0
  327. package/dist/openrouter-models.js +120 -0
  328. package/dist/operate.d.ts +118 -0
  329. package/dist/operate.js +11321 -0
  330. package/dist/peek-cli.d.ts +97 -0
  331. package/dist/peek-cli.js +215 -0
  332. package/dist/peek.d.ts +134 -0
  333. package/dist/peek.js +578 -0
  334. package/dist/phase-routing.d.ts +307 -0
  335. package/dist/phase-routing.js +658 -0
  336. package/dist/plan-auto.d.ts +14 -0
  337. package/dist/plan-auto.js +92 -0
  338. package/dist/plan.d.ts +186 -0
  339. package/dist/plan.js +401 -0
  340. package/dist/planner-source.d.ts +251 -0
  341. package/dist/planner-source.js +460 -0
  342. package/dist/planner.d.ts +75 -0
  343. package/dist/planner.js +992 -0
  344. package/dist/policy-ui.d.ts +20 -0
  345. package/dist/policy-ui.js +41 -0
  346. package/dist/policy.d.ts +111 -0
  347. package/dist/policy.js +231 -0
  348. package/dist/prepared-evidence.d.ts +16 -0
  349. package/dist/prepared-evidence.js +96 -0
  350. package/dist/pricing.d.ts +45 -0
  351. package/dist/pricing.js +77 -0
  352. package/dist/principal.d.ts +42 -0
  353. package/dist/principal.js +82 -0
  354. package/dist/probe.d.ts +46 -0
  355. package/dist/probe.js +79 -0
  356. package/dist/process-custody.d.ts +17 -0
  357. package/dist/process-custody.js +91 -0
  358. package/dist/process-liveness.d.ts +10 -0
  359. package/dist/process-liveness.js +81 -0
  360. package/dist/process-recovery-anchor.d.ts +75 -0
  361. package/dist/process-recovery-anchor.js +188 -0
  362. package/dist/process-recovery-coalition.d.ts +25 -0
  363. package/dist/process-recovery-coalition.js +105 -0
  364. package/dist/process-recovery-eligibility.d.ts +178 -0
  365. package/dist/process-recovery-eligibility.js +170 -0
  366. package/dist/process-recovery-native.d.ts +172 -0
  367. package/dist/process-recovery-native.js +592 -0
  368. package/dist/process-recovery-provenance.d.ts +163 -0
  369. package/dist/process-recovery-provenance.js +292 -0
  370. package/dist/process-recovery-services.d.ts +56 -0
  371. package/dist/process-recovery-services.js +191 -0
  372. package/dist/process-recovery-settlement.d.ts +32 -0
  373. package/dist/process-recovery-settlement.js +132 -0
  374. package/dist/process-recovery.d.ts +41 -0
  375. package/dist/process-recovery.js +91 -0
  376. package/dist/process-tree.d.ts +41 -0
  377. package/dist/process-tree.js +264 -0
  378. package/dist/project-access.d.ts +14 -0
  379. package/dist/project-access.js +34 -0
  380. package/dist/project-cli.d.ts +18 -0
  381. package/dist/project-cli.js +104 -0
  382. package/dist/project-delete-ui.d.ts +22 -0
  383. package/dist/project-delete-ui.js +48 -0
  384. package/dist/project-delete.d.ts +55 -0
  385. package/dist/project-delete.js +413 -0
  386. package/dist/project-knowledge.d.ts +111 -0
  387. package/dist/project-knowledge.js +241 -0
  388. package/dist/project-learning.d.ts +100 -0
  389. package/dist/project-learning.js +438 -0
  390. package/dist/project-memory.d.ts +81 -0
  391. package/dist/project-memory.js +264 -0
  392. package/dist/project-skills.d.ts +152 -0
  393. package/dist/project-skills.js +660 -0
  394. package/dist/project-tools.d.ts +219 -0
  395. package/dist/project-tools.js +796 -0
  396. package/dist/project.d.ts +61 -0
  397. package/dist/project.js +125 -0
  398. package/dist/prompt.d.ts +22 -0
  399. package/dist/prompt.js +72 -0
  400. package/dist/proof.d.ts +513 -0
  401. package/dist/proof.js +1140 -0
  402. package/dist/proposal.d.ts +82 -0
  403. package/dist/proposal.js +210 -0
  404. package/dist/provider-connection.d.ts +22 -0
  405. package/dist/provider-connection.js +98 -0
  406. package/dist/provider-limits.d.ts +35 -0
  407. package/dist/provider-limits.js +95 -0
  408. package/dist/provider.d.ts +279 -0
  409. package/dist/provider.js +935 -0
  410. package/dist/publish.d.ts +107 -0
  411. package/dist/publish.js +650 -0
  412. package/dist/pulls.d.ts +118 -0
  413. package/dist/pulls.js +240 -0
  414. package/dist/push.d.ts +95 -0
  415. package/dist/push.js +353 -0
  416. package/dist/quality.d.ts +8 -0
  417. package/dist/quality.js +6 -0
  418. package/dist/recipe-ui.d.ts +18 -0
  419. package/dist/recipe-ui.js +152 -0
  420. package/dist/recipes.d.ts +81 -0
  421. package/dist/recipes.js +332 -0
  422. package/dist/remote.d.ts +67 -0
  423. package/dist/remote.js +122 -0
  424. package/dist/render.d.ts +64 -0
  425. package/dist/render.js +587 -0
  426. package/dist/report-summary.d.ts +13 -0
  427. package/dist/report-summary.js +15 -0
  428. package/dist/repos.d.ts +65 -0
  429. package/dist/repos.js +277 -0
  430. package/dist/repository-context-ui.d.ts +2 -0
  431. package/dist/repository-context-ui.js +10 -0
  432. package/dist/repository-context.d.ts +67 -0
  433. package/dist/repository-context.js +376 -0
  434. package/dist/restart-certification.d.ts +134 -0
  435. package/dist/restart-certification.js +226 -0
  436. package/dist/result-actions.d.ts +28 -0
  437. package/dist/result-actions.js +270 -0
  438. package/dist/result-completion.d.ts +18 -0
  439. package/dist/result-completion.js +66 -0
  440. package/dist/result-review.d.ts +213 -0
  441. package/dist/result-review.js +430 -0
  442. package/dist/retention-ui.d.ts +12 -0
  443. package/dist/retention-ui.js +39 -0
  444. package/dist/retention.d.ts +72 -0
  445. package/dist/retention.js +288 -0
  446. package/dist/review-context.d.ts +243 -0
  447. package/dist/review-context.js +1043 -0
  448. package/dist/review-evidence.d.ts +33 -0
  449. package/dist/review-evidence.js +56 -0
  450. package/dist/reviewer.d.ts +97 -0
  451. package/dist/reviewer.js +202 -0
  452. package/dist/routine.d.ts +228 -0
  453. package/dist/routine.js +764 -0
  454. package/dist/runner.d.ts +266 -0
  455. package/dist/runner.js +399 -0
  456. package/dist/scan.d.ts +32 -0
  457. package/dist/scan.js +92 -0
  458. package/dist/scope.d.ts +695 -0
  459. package/dist/scope.js +1176 -0
  460. package/dist/scout-report.d.ts +42 -0
  461. package/dist/scout-report.js +108 -0
  462. package/dist/scout.d.ts +69 -0
  463. package/dist/scout.js +351 -0
  464. package/dist/serve.d.ts +313 -0
  465. package/dist/serve.js +21776 -0
  466. package/dist/session-brief.d.ts +8 -0
  467. package/dist/session-brief.js +24 -0
  468. package/dist/session-cli.d.ts +13 -0
  469. package/dist/session-cli.js +284 -0
  470. package/dist/session-contract.d.ts +183 -0
  471. package/dist/session-contract.js +122 -0
  472. package/dist/session-http.d.ts +19 -0
  473. package/dist/session-http.js +154 -0
  474. package/dist/session-server.d.ts +12 -0
  475. package/dist/session-server.js +37 -0
  476. package/dist/session-service.d.ts +22 -0
  477. package/dist/session-service.js +157 -0
  478. package/dist/setup-guide.d.ts +39 -0
  479. package/dist/setup-guide.js +93 -0
  480. package/dist/sign-in-guard.d.ts +45 -0
  481. package/dist/sign-in-guard.js +74 -0
  482. package/dist/skills-ui.d.ts +11 -0
  483. package/dist/skills-ui.js +58 -0
  484. package/dist/skills.d.ts +97 -0
  485. package/dist/skills.js +276 -0
  486. package/dist/slack-api.d.ts +55 -0
  487. package/dist/slack-api.js +229 -0
  488. package/dist/slack-chat.d.ts +28 -0
  489. package/dist/slack-chat.js +413 -0
  490. package/dist/slack-settings.d.ts +7 -0
  491. package/dist/slack-settings.js +75 -0
  492. package/dist/slack-state.d.ts +13 -0
  493. package/dist/slack-state.js +9 -0
  494. package/dist/slack.d.ts +13 -0
  495. package/dist/slack.js +167 -0
  496. package/dist/spend-ui.d.ts +28 -0
  497. package/dist/spend-ui.js +95 -0
  498. package/dist/spend.d.ts +142 -0
  499. package/dist/spend.js +313 -0
  500. package/dist/sqlite-runtime.d.ts +3 -0
  501. package/dist/sqlite-runtime.js +6 -0
  502. package/dist/sso-settings.d.ts +33 -0
  503. package/dist/sso-settings.js +103 -0
  504. package/dist/sso-ui.d.ts +22 -0
  505. package/dist/sso-ui.js +39 -0
  506. package/dist/storage.d.ts +15 -0
  507. package/dist/storage.js +84 -0
  508. package/dist/store.d.ts +7754 -0
  509. package/dist/store.js +23279 -0
  510. package/dist/structured-output.d.ts +58 -0
  511. package/dist/structured-output.js +103 -0
  512. package/dist/style-asset.d.ts +7 -0
  513. package/dist/style-asset.js +41 -0
  514. package/dist/subscription-chat.d.ts +46 -0
  515. package/dist/subscription-chat.js +275 -0
  516. package/dist/summary.d.ts +33 -0
  517. package/dist/summary.js +71 -0
  518. package/dist/supervisor.mjs +297 -0
  519. package/dist/surface.d.ts +63 -0
  520. package/dist/surface.js +352 -0
  521. package/dist/sync.d.ts +94 -0
  522. package/dist/sync.js +279 -0
  523. package/dist/task-composer.d.ts +13 -0
  524. package/dist/task-composer.js +52 -0
  525. package/dist/task-control.d.ts +165 -0
  526. package/dist/task-control.js +214 -0
  527. package/dist/task-outcome-cli.d.ts +10 -0
  528. package/dist/task-outcome-cli.js +92 -0
  529. package/dist/task-text.d.ts +30 -0
  530. package/dist/task-text.js +41 -0
  531. package/dist/team-cli.d.ts +15 -0
  532. package/dist/team-cli.js +618 -0
  533. package/dist/team-contract.d.ts +92 -0
  534. package/dist/team-contract.js +1 -0
  535. package/dist/team-http.d.ts +17 -0
  536. package/dist/team-http.js +144 -0
  537. package/dist/team-leads.d.ts +81 -0
  538. package/dist/team-leads.js +565 -0
  539. package/dist/team-runtime.d.ts +27 -0
  540. package/dist/team-runtime.js +264 -0
  541. package/dist/team-ui.d.ts +3 -0
  542. package/dist/team-ui.js +9 -0
  543. package/dist/team-updates.d.ts +8 -0
  544. package/dist/team-updates.js +57 -0
  545. package/dist/teammate-admin.d.ts +53 -0
  546. package/dist/teammate-admin.js +111 -0
  547. package/dist/teammate-desk.d.ts +60 -0
  548. package/dist/teammate-desk.js +154 -0
  549. package/dist/teammate-memory.d.ts +64 -0
  550. package/dist/teammate-memory.js +196 -0
  551. package/dist/teammate-question.d.ts +59 -0
  552. package/dist/teammate-question.js +175 -0
  553. package/dist/teammate-tools.d.ts +108 -0
  554. package/dist/teammate-tools.js +271 -0
  555. package/dist/teammate-week.d.ts +68 -0
  556. package/dist/teammate-week.js +132 -0
  557. package/dist/teammate-work.d.ts +76 -0
  558. package/dist/teammate-work.js +280 -0
  559. package/dist/teammates-ui.d.ts +20 -0
  560. package/dist/teammates-ui.js +166 -0
  561. package/dist/teammates.d.ts +180 -0
  562. package/dist/teammates.js +253 -0
  563. package/dist/teams-api.d.ts +33 -0
  564. package/dist/teams-api.js +204 -0
  565. package/dist/teams-chat.d.ts +26 -0
  566. package/dist/teams-chat.js +215 -0
  567. package/dist/teams-settings.d.ts +12 -0
  568. package/dist/teams-settings.js +57 -0
  569. package/dist/teams.d.ts +21 -0
  570. package/dist/teams.js +124 -0
  571. package/dist/telegram-flow.d.ts +49 -0
  572. package/dist/telegram-flow.js +110 -0
  573. package/dist/telegram-mate.d.ts +137 -0
  574. package/dist/telegram-mate.js +707 -0
  575. package/dist/telegram-progress.d.ts +14 -0
  576. package/dist/telegram-progress.js +129 -0
  577. package/dist/telegram-settings.d.ts +9 -0
  578. package/dist/telegram-settings.js +36 -0
  579. package/dist/telegram-status.d.ts +75 -0
  580. package/dist/telegram-status.js +265 -0
  581. package/dist/telegram-team.d.ts +85 -0
  582. package/dist/telegram-team.js +359 -0
  583. package/dist/telegram.d.ts +230 -0
  584. package/dist/telegram.js +1931 -0
  585. package/dist/templates.d.ts +65 -0
  586. package/dist/templates.js +118 -0
  587. package/dist/tool-launcher.d.ts +1 -0
  588. package/dist/tool-launcher.js +101 -0
  589. package/dist/tools-ui.d.ts +30 -0
  590. package/dist/tools-ui.js +40 -0
  591. package/dist/transitions-recipes.d.ts +1 -0
  592. package/dist/transitions-recipes.js +203 -0
  593. package/dist/tree-proof.d.ts +34 -0
  594. package/dist/tree-proof.js +58 -0
  595. package/dist/verification-evidence.d.ts +44 -0
  596. package/dist/verification-evidence.js +238 -0
  597. package/dist/version.d.ts +2 -0
  598. package/dist/version.js +10 -0
  599. package/dist/webhooks.d.ts +91 -0
  600. package/dist/webhooks.js +283 -0
  601. package/dist/work-index.d.ts +68 -0
  602. package/dist/work-index.js +384 -0
  603. package/dist/work-summary.d.ts +57 -0
  604. package/dist/work-summary.js +116 -0
  605. package/dist/workspace-motion.d.ts +4 -0
  606. package/dist/workspace-motion.js +133 -0
  607. package/dist/workspace-revision.d.ts +19 -0
  608. package/dist/workspace-revision.js +92 -0
  609. package/dist/workspace-ui.d.ts +204 -0
  610. package/dist/workspace-ui.js +411 -0
  611. package/dist/worktree-notices.d.ts +13 -0
  612. package/dist/worktree-notices.js +17 -0
  613. package/dist/worktree.d.ts +249 -0
  614. package/dist/worktree.js +720 -0
  615. package/package.json +122 -0
  616. package/scripts/canary-assertions.mjs +42 -0
  617. package/scripts/crash-canary.mjs +253 -0
  618. package/scripts/fixtures/crash-process.mjs +74 -0
  619. package/scripts/fixtures/pilot-scenarios.mjs +85 -0
  620. package/scripts/fixtures/restart-service.mjs +27 -0
  621. package/scripts/launchd-certification.mjs +143 -0
  622. package/scripts/pilot.mjs +121 -0
  623. package/scripts/proof-preflight.mjs +140 -0
  624. package/scripts/provider-canary.mjs +379 -0
  625. package/scripts/recovery-canary.mjs +135 -0
  626. package/scripts/restart-certification.mjs +98 -0
@@ -0,0 +1,688 @@
1
+ /**
2
+ * The claim, and the fence around it.
3
+ *
4
+ * This is the record §4 calls the one that matters, and the reason is a
5
+ * specific 3am failure. A runner takes a task, starts work, and then stops
6
+ * being reachable — the machine sleeps, the process is OOM-killed, the network
7
+ * partitions. The scheduler cannot tell "dead" from "slow", so it waits for the
8
+ * lease to expire and gives the task to someone else. Then the first runner
9
+ * wakes up, finishes the work it was doing, and reports success for a task that
10
+ * another runner is now halfway through.
11
+ *
12
+ * Both runners are behaving correctly. Without a fence, the control plane
13
+ * believes the last one to speak.
14
+ *
15
+ * So a lease carries two things. `lease_id` is immutable and identifies one
16
+ * grant of one task to one runner. `lease_generation` counts how many times
17
+ * that task has been granted at all, and it only ever goes up. Acquiring is a
18
+ * compare-and-swap on the generation; every later call carries the lease it
19
+ * thinks it holds, and anything whose generation has been superseded is
20
+ * refused. The late completion above is refused not because we detected the
21
+ * crash — we never did — but because the world moved on without it.
22
+ *
23
+ * Losing a race here is ordinary, not an error. Several runners asking for the
24
+ * same task at the same moment is the system working; exactly one wins.
25
+ *
26
+ * Time is a parameter everywhere. Expiry decided by an implicit clock is
27
+ * untestable, and a lease is exactly the kind of thing that has to be provable
28
+ * rather than probable.
29
+ */
30
+ import { type Store, type Mutation, type TaskState } from "./store.js";
31
+ import type { ParsedDecision, Problem } from "./decision.js";
32
+ import type { ParsedPlan } from "./plan.js";
33
+ import { type PlannerSource } from "./planner-source.js";
34
+ import type { AuthorityChangeField } from "./plan.js";
35
+ import type { ParsedReport } from "./scout-report.js";
36
+ export type Claim = {
37
+ taskRef: number;
38
+ /** Immutable. Identifies this grant, and no other. */
39
+ leaseId: string;
40
+ /** Monotonic per task. The fencing token. */
41
+ generation: number;
42
+ runner: string;
43
+ acquiredAt: string;
44
+ expiresAt: string;
45
+ heartbeatAt: string;
46
+ };
47
+ export type AcquireResult = {
48
+ ok: true;
49
+ claim: Claim;
50
+ reclaimed: boolean;
51
+ replayed?: boolean;
52
+ } | {
53
+ ok: false;
54
+ reason: "held";
55
+ by: string;
56
+ until: string;
57
+ } | {
58
+ ok: false;
59
+ reason: "reserved";
60
+ reservedFor: string;
61
+ } | {
62
+ ok: false;
63
+ reason: "external";
64
+ detail: "stale-mirror" | "external-closed" | "dispatch-revoked" | "plane-blocked";
65
+ }
66
+ /** An attended authorization holds this task for its named runner (v25).
67
+ * Its OWN reason token — never the `reserved` tag, whose reservedFor field
68
+ * is a documented public contract meaning task_ref.assigned_runner. */
69
+ | {
70
+ ok: false;
71
+ reason: "attended-held";
72
+ runner: string;
73
+ }
74
+ /** The task's only authority is an attended authorization, and the
75
+ * operator is not watching (or the one attempt is spent). Expiry never
76
+ * converts attended work into unattended work. */
77
+ | {
78
+ ok: false;
79
+ reason: "attended-only";
80
+ }
81
+ /** A mode-sealed approval whose signature no longer stands (v29): the
82
+ * approval falls back to a person; nothing dispatches on a dead mode. */
83
+ | {
84
+ ok: false;
85
+ reason: "mode-ended";
86
+ message: string;
87
+ }
88
+ /** The credential presented with this acquisition did not verify against
89
+ * the runner row AT CLAIM TIME (MCP spec v6): stale incarnations never
90
+ * ride a successor's rotation. */
91
+ | {
92
+ ok: false;
93
+ reason: "unauthenticated";
94
+ detail: "unknown" | "bad-token" | "retired" | "expired";
95
+ }
96
+ /** The task is placed nowhere — a repo-scoped runner cannot be
97
+ * authorized for null. Place it, then dispatch. */
98
+ | {
99
+ ok: false;
100
+ reason: "unplaced";
101
+ }
102
+ /** The runner's bound repo list does not contain the task's repo.
103
+ * The refusal names the binding road. */
104
+ | {
105
+ ok: false;
106
+ reason: "unauthorized-repo";
107
+ repo: string;
108
+ }
109
+ /** A coordinator filed this and no password ceremony has sealed its
110
+ * scope yet — nothing claims, plans, or runs it until one does. */
111
+ | {
112
+ ok: false;
113
+ reason: "coordinator-filed";
114
+ };
115
+ /** `fenced` means the lease was superseded; `unknown` means it never existed. */
116
+ export type FenceResult = {
117
+ ok: true;
118
+ claim: Claim;
119
+ duplicate?: boolean;
120
+ } | {
121
+ ok: false;
122
+ reason: "fenced" | "unknown" | "stopped";
123
+ };
124
+ /**
125
+ * Completion's OWN result (external dispatch, finding 33): `completed` is
126
+ * today's world — the task is done/failed as asked; `disowned` means the
127
+ * tracker closed this mirror while it was being built — the task is
128
+ * cancelled, the branch is kept as evidence, and the caller must never
129
+ * publish. The arm is DURABLE (claim.released_by), so a retried completion
130
+ * returns its original answer forever.
131
+ */
132
+ export type CompleteResult = {
133
+ ok: true;
134
+ arm: "completed" | "disowned";
135
+ claim: Claim;
136
+ duplicate?: boolean;
137
+ } | {
138
+ ok: false;
139
+ reason: "fenced" | "unknown" | "stopped";
140
+ };
141
+ /** How stale a mirror's last complete sync may be before admission refuses. */
142
+ export declare const SYNC_MAX_AGE_MS: number;
143
+ export type AcquireOptions = {
144
+ now: Date;
145
+ /** The runner's minted credential, re-verified INSIDE the claim
146
+ * transaction (MCP gateway spec v6, Codex round-5 finding 1): a
147
+ * takeover that rotates the credential between the caller's own auth
148
+ * and this CAS must not let the stale process ride its successor's
149
+ * authority. */
150
+ token: string;
151
+ ttlMs?: number;
152
+ /** Injected in tests so a lease id can be asserted on. */
153
+ newLeaseId?: () => string;
154
+ /** The watch incarnation dispatching this claim, for crash recovery keyed to it. */
155
+ incarnation?: string;
156
+ mutation?: Mutation;
157
+ /** External-mirror freshness bound; defaults to SYNC_MAX_AGE_MS. */
158
+ syncMaxAgeMs?: number;
159
+ };
160
+ /**
161
+ * Long enough that an ordinary build does not lose its lease mid-thought,
162
+ * short enough that a dead runner's work is picked up the same night rather
163
+ * than at breakfast.
164
+ */
165
+ export declare const DEFAULT_LEASE_MS: number;
166
+ /**
167
+ * Take the task, if it is free.
168
+ *
169
+ * Free means no claim, or a claim whose lease expired, or one already released.
170
+ * A live lease belonging to somebody else is refused with who holds it and
171
+ * until when, because "no" without a reason is indistinguishable from a bug.
172
+ */
173
+ export declare function acquire(store: Store, taskRef: number, runner: string, options: AcquireOptions): AcquireResult;
174
+ /**
175
+ * Why `acquireIfReady` said no before the race was even run. `not-ready` is
176
+ * about the task's own state; `capability` is about the machine's — a gap a
177
+ * person can fill, named so the caller can say which.
178
+ */
179
+ export type NotReady = {
180
+ ok: false;
181
+ reason: "not-ready" | "capability" | "attention-budget" | "capacity" | "quota" | "provider-unavailable";
182
+ message: string;
183
+ };
184
+ /** DESIGN §8 gate 6: above this many open decisions, stop dispatching the parkers.
185
+ * `missingCapability` remains re-exported for callers of the old claim seam. */
186
+ export { DEFAULT_MAX_OPEN_DECISIONS, missingCapability } from "./dispatch.js";
187
+ /**
188
+ * Take the task, if it is free *and still worth taking*.
189
+ *
190
+ * `listReady` then `acquire` is two reads of a world that moves between them:
191
+ * a hold placed, a blocker reopened, the task cancelled — and the CAS admits
192
+ * the claim anyway, because the CAS only defends against other claimants. An
193
+ * unattended pass has nobody watching who would notice the stale dispatch, so
194
+ * the readiness conditions are re-proved inside the same transaction as the
195
+ * acquire, against rows the write lock has already pinned.
196
+ *
197
+ * "Not ready" is a different answer from "held": held means somebody else got
198
+ * it, which is a race being won; not-ready means nobody should have it, and
199
+ * says why.
200
+ */
201
+ export declare function acquireIfReady(store: Store, taskRef: number, runner: string, options: AcquireOptions & {
202
+ repo?: string;
203
+ maxOpenDecisions?: number;
204
+ /** The provider this dispatch resolved to — the quota key. */
205
+ provider?: string;
206
+ /** The model this dispatch would run — the quota scope. */
207
+ model?: string;
208
+ /** What this dispatch is FOR. Re-proved inside the transaction — the
209
+ * caller's survey is not trusted (Codex planning review, finding 2). */
210
+ dispatchRole?: "builder" | "planner" | "scout";
211
+ }): AcquireResult | NotReady;
212
+ /**
213
+ * The FALLBACK-ADMISSION claim (E3d, review finding 4): the one gate a
214
+ * pending-admission chain cycle dispatches through. It enforces everything
215
+ * `acquireIfReady` enforces — task state, holds, blockers, the approved
216
+ * scope + live-mode belt, capability, capacity, and quota — with EXACTLY
217
+ * ONE deliberate difference: a BACKOFF hold does not gate, because the
218
+ * pending admission IS the system's answer to the predecessor's failure
219
+ * (waiting out the exhausted entry's backoff to run a different credential
220
+ * would be waiting for nothing). Quota is keyed by the PINNED entry's
221
+ * provider, model, and auth mode — the credential that would actually
222
+ * spend — so an exhausted fallback credential refuses here, before any
223
+ * claim exists.
224
+ */
225
+ export declare function acquireFallback(store: Store, taskRef: number, runner: string, options: AcquireOptions & {
226
+ repo?: string;
227
+ provider: string;
228
+ model: string;
229
+ authMode: "subscription" | "api-key";
230
+ maxOpenDecisions?: number;
231
+ }): AcquireResult | NotReady;
232
+ /**
233
+ * "I am still here." Extends the lease, and tells a superseded runner that it
234
+ * has been superseded — which is the cheapest moment for it to find out, well
235
+ * before it has finished work nobody will accept.
236
+ */
237
+ export declare function heartbeat(store: Store, leaseId: string, now: Date, ttlMs?: number): FenceResult;
238
+ /**
239
+ * Hand the task back.
240
+ *
241
+ * Accepted only from the lease that currently holds it. A completion arriving
242
+ * on a superseded lease is the failure this whole module exists for, and it is
243
+ * rejected without touching anything — the work is not lost, it is simply not
244
+ * this runner's to report, and the record says so rather than overwriting a
245
+ * live claim with a dead runner's opinion.
246
+ */
247
+ export declare function release(store: Store, leaseId: string, now: Date): FenceResult;
248
+ /**
249
+ * Release the lease and write the task's terminal state, as one step.
250
+ *
251
+ * Release-then-mark is a window: between the two, the freed task is back in
252
+ * the ready set, and another pass can claim it before the terminal state
253
+ * lands — two builders for one task, the second dispatched by our own
254
+ * bookkeeping. Here the state is written inside the same transaction as the
255
+ * fenced release, so a task is never simultaneously free and unfinished.
256
+ *
257
+ * A fenced or unknown lease writes nothing: a runner the world moved past
258
+ * does not get to say how the task ended. A duplicate release reports
259
+ * `duplicate` and also writes nothing — the first completion already said,
260
+ * and a retry changing the answer would make "done" negotiable.
261
+ */
262
+ export declare function completeFenced(store: Store, leaseId: string, state: Extract<TaskState, "done" | "failed">, now: Date, mutation?: Mutation): CompleteResult;
263
+ /**
264
+ * Seal a park, fenced at the write (§7).
265
+ *
266
+ * The builder proved its lease after the agent ran; this transaction proves
267
+ * it again *in the same statement that releases it*, because everything a
268
+ * park creates — the decision, its hold, the outbox row — is only true if
269
+ * this lease still spoke for the task at the moment of sealing. A superseded
270
+ * lease creates none of it: no decision, no hold, no notification, and the
271
+ * run is finalized as the fenced refusal it was. A crash anywhere inside
272
+ * rolls all of it back together; there is no instant at which a decision
273
+ * exists without its hold.
274
+ *
275
+ * `released_by = 'parked'` so a late retry from this lease is answered with
276
+ * the fence, not "duplicate": a park hands the task to a person, and nothing
277
+ * the runner says afterwards is that person's answer.
278
+ */
279
+ /**
280
+ * Continuation admission (Phase 2E, A4 / v3 R7): the AUTHORIZATION is the
281
+ * claimable unit — the finished parent task is never re-queued, its state,
282
+ * strikes, holds, and dependents untouched. Every shared gate still runs
283
+ * (acquireLocked: reservation, external mirror, the attended gates, the
284
+ * lease CAS); the queued-state readiness gate alone is replaced by
285
+ * construction. Liveness, the named runner, and the unspent attempt are
286
+ * re-proved HERE at claim time and again at the final dispatch proof.
287
+ */
288
+ export declare function acquireContinuation(store: Store, authorization: import("./store.js").AttendedAuthorization, runner: string, options: AcquireOptions): AcquireResult | {
289
+ ok: false;
290
+ reason: "attended-only" | "contest-open" | "continuation-blocked";
291
+ message: string;
292
+ };
293
+ /**
294
+ * The HELD park (Phase 2E, v2 S1f): the decision is recorded, paged, and
295
+ * causally linked to the session turn that produced it — and NOTHING else
296
+ * ends. The lease stays; the run stays open; the process stays held. The
297
+ * conversation continues when the answer is injected as the next turn.
298
+ * The one-unresolved-per-run partial unique refuses a second open park.
299
+ */
300
+ export declare function finalizeParkHeld(store: Store, args: {
301
+ runId: number;
302
+ taskId: string;
303
+ decision: ParsedDecision;
304
+ artifactIds: readonly number[];
305
+ sessionTurn: number;
306
+ now: Date;
307
+ }): {
308
+ ok: true;
309
+ decisionId: number;
310
+ } | {
311
+ ok: false;
312
+ reason: "decision-open" | "not-held";
313
+ };
314
+ export declare function finalizeParkFenced(store: Store, args: {
315
+ leaseId: string;
316
+ runId: number;
317
+ taskId: string;
318
+ decision: ParsedDecision;
319
+ artifactIds: readonly number[];
320
+ /** Open planner correction that authored the accepted payload. It is
321
+ * settled in this same fence, never earlier. */
322
+ repairRunId?: number | null;
323
+ now: Date;
324
+ }): {
325
+ ok: true;
326
+ decisionId: number;
327
+ } | {
328
+ ok: false;
329
+ reason: "fenced" | "unknown" | "stopped";
330
+ };
331
+ /**
332
+ * Seal a park whose payload never became a decision (§6's bounded repair ran
333
+ * out). Same fence, same atomicity, different record: an incident that stays
334
+ * in every brief until a person resolves it, holding the task so the next
335
+ * pass does not spend the same tokens hitting the same wall nightly. The
336
+ * malformed payload is preserved as evidence — a person may still be able to
337
+ * read what the agent meant.
338
+ */
339
+ export declare function finalizeMalformedFenced(store: Store, args: {
340
+ leaseId: string;
341
+ runId: number;
342
+ taskId: string;
343
+ problems: readonly Problem[];
344
+ now: Date;
345
+ }): {
346
+ ok: true;
347
+ incidentId: number;
348
+ } | {
349
+ ok: false;
350
+ reason: "fenced" | "unknown" | "stopped";
351
+ };
352
+ /** How a failed attempt is classified, per gnhf. Decides retry, backoff, or stall. */
353
+ export type FailureClass = "agent-reported" | "retryable-infra" | "no-op" | "commit-failure" | "unknown";
354
+ export declare const MAX_STRIKES = 3;
355
+ export type FailureDisposition = {
356
+ ok: true;
357
+ disposition: "backoff";
358
+ strikes: number;
359
+ until: string;
360
+ } | {
361
+ ok: true;
362
+ disposition: "stalled";
363
+ strikes: number;
364
+ incidentId: number;
365
+ } | {
366
+ ok: true;
367
+ disposition: "commit-incident";
368
+ incidentId: number;
369
+ } | {
370
+ ok: false;
371
+ reason: "fenced" | "unknown" | "stopped";
372
+ };
373
+ export type InterruptSeal = {
374
+ ok: true;
375
+ stopRun: number;
376
+ requeued: boolean;
377
+ fenced: false;
378
+ } | {
379
+ ok: true;
380
+ stopRun: number;
381
+ requeued: false;
382
+ fenced: true;
383
+ };
384
+ /**
385
+ * Seal an operator-stopped attempt (v52): ONE fenced transaction for the
386
+ * claim's release as `interrupted`, the run's ending as `failed` /
387
+ * `interrupted` (the same words dead-runner recovery writes, so the
388
+ * recovered-draft road inherits the preserved work exactly as after a
389
+ * crash), every open run the attempt owns, the task's return to the
390
+ * queue under the stop's own hold, and the stop's settlement. Nothing
391
+ * here is a failure: no strike, no backoff, no incident, no automatic
392
+ * repair task, no notification page. A commit the attempt already made
393
+ * is kept as a reviewable artifact — `committed` records that it exists.
394
+ *
395
+ * A lease the world moved past (reaped, recovered, superseded) still
396
+ * ends the run as interrupted — that IS the honest ending — but touches
397
+ * no task state: the task belongs to whoever holds it now.
398
+ */
399
+ export declare function finalizeInterruptedFenced(store: Store, args: {
400
+ leaseId: string;
401
+ runId: number;
402
+ taskId: string;
403
+ stopRun: number;
404
+ message?: string;
405
+ committed?: boolean;
406
+ now: Date;
407
+ }): InterruptSeal;
408
+ /**
409
+ * THE STOP FENCE at settlement (v52): when a stop applies to the run —
410
+ * its own or an owning ancestor's — seal the attempt as interrupted and
411
+ * answer with the seal; otherwise null, and the caller's own ending
412
+ * proceeds. Every fenced finalizer asks this first, inside its own
413
+ * transaction, so a stop that commits before terminal settlement wins
414
+ * whatever the attempt was about to say.
415
+ */
416
+ export declare function interruptIfStopped(store: Store, args: {
417
+ leaseId: string;
418
+ runId: number;
419
+ taskId: string;
420
+ message?: string;
421
+ committed?: boolean;
422
+ now: Date;
423
+ }): InterruptSeal | null;
424
+ /**
425
+ * Seal a failed attempt: one fenced transaction for the release, the run,
426
+ * the strike, the hold, and the page (§6, gnhf adopted rather than
427
+ * reinvented).
428
+ *
429
+ * Strikes count only top-level builder attempts; built, no-change, and
430
+ * parked reset them elsewhere; refusals, fenced attempts, and repair
431
+ * children never reach this function. Under three strikes the task
432
+ * requeues behind a doubling backoff hold the failure owns; at three it
433
+ * stalls — an 'attempts-exhausted' incident, the task marked failed, held,
434
+ * and paged once — because a fourth identical attempt at 3am is a token
435
+ * bonfire, not persistence. A commit-stage failure takes neither road: the
436
+ * worktree holds unpreserved work, ordinary re-pooling would refuse it as
437
+ * dirty forever, so it is an immediate incident naming the checkout.
438
+ */
439
+ export declare function finalizeFailureFenced(store: Store, args: {
440
+ leaseId: string;
441
+ runId: number;
442
+ taskId: string;
443
+ failureClass: FailureClass;
444
+ message: string;
445
+ worktree: string;
446
+ now: Date;
447
+ }): FailureDisposition;
448
+ /** The live claim on a task, if there is one. */
449
+ export declare const MAX_PLAN_STRIKES = 3;
450
+ export type PlanFinalize = {
451
+ ok: true;
452
+ changes: number;
453
+ amendment: string | null;
454
+ } | {
455
+ ok: false;
456
+ reason: "fenced" | "unknown" | "stopped";
457
+ }
458
+ /** The filed request moved while the planner ran (contract handoff,
459
+ * task 1): the draft was planned against terms that no longer exist,
460
+ * so nothing of it is ingested — the newer source stands, the claim
461
+ * releases, and the task stays requested for a fresh attempt. */
462
+ | {
463
+ ok: false;
464
+ reason: "stale-source" | "source-invalid";
465
+ detail: string;
466
+ };
467
+ /**
468
+ * Seal a successful planning run: the proposed scope, the plan document
469
+ * artifact, the drafted state, the run outcome, and the page to the
470
+ * operator exist together or — if the lease was superseded — not at all.
471
+ * The scope proposal is authority-bearing (it is what the approve card
472
+ * will restate), which is why this is the park discipline, not the DONE
473
+ * one (Codex planning review, question 2).
474
+ */
475
+ export declare function finalizePlanFenced(store: Store, args: {
476
+ leaseId: string;
477
+ runId: number;
478
+ taskId: string;
479
+ plan: ParsedPlan;
480
+ /** The already-captured plan document file, described; null when the
481
+ * capture itself failed (the plan still lands as scope + handoff). */
482
+ artifact: {
483
+ key: string;
484
+ bytesOriginal: number;
485
+ bytesStored: number;
486
+ truncated: boolean;
487
+ sha256: string;
488
+ capture: string;
489
+ } | null;
490
+ /** Open planner correction that authored the accepted payload. */
491
+ repairRunId?: number | null;
492
+ /** The filed request this attempt planned for, and the recorded
493
+ * evidence of it (contract handoff, task 1). The source identity is
494
+ * re-derived from the store INSIDE this transaction and compared:
495
+ * a concurrent scope, authority, or term change refuses the draft
496
+ * atomically rather than letting an old plan overwrite the newer
497
+ * source. Optional only for the pre-source road (tests that seal a
498
+ * hand-built plan); every dispatch presents one. */
499
+ source?: PlannerSource;
500
+ sourceArtifact?: number | null;
501
+ /** Where the plan-contract ingestion record is written. */
502
+ evidenceRoot?: string;
503
+ now: Date;
504
+ }): PlanFinalize;
505
+ export type RevisionFinalize = {
506
+ ok: true;
507
+ revisionId: number;
508
+ authorityKind: "plan-only" | "authority-change";
509
+ } | {
510
+ ok: false;
511
+ reason: "fenced" | "unknown" | "stopped";
512
+ };
513
+ /**
514
+ * Seal a running build's plan-revision proposal (adaptive execution plans).
515
+ *
516
+ * A builder that finds repository evidence invalidating a named dependency,
517
+ * risk, or assumption in the plan it was given files ONE proposal and stops
518
+ * without committing — the park discipline, applied to the road rather than
519
+ * to a question. The ledger row, the hold when one is owed, the run's
520
+ * outcome, and the page exist together or, if the lease was superseded,
521
+ * not at all. Structurally `finalizePlanFenced`'s twin: the same
522
+ * open-attempt assertion, the same fenced release, the same all-or-nothing
523
+ * transaction.
524
+ *
525
+ * Two dispositions, decided by the caller's classification and recorded
526
+ * here:
527
+ *
528
+ * plan-only the signed scope and publication authority are
529
+ * byte-identical to what this build started under, so
530
+ * nothing authority-bearing moved and the revision is
531
+ * APPLIED. The claim releases plainly, the task returns
532
+ * to the ready set, and the next attempt reads the new
533
+ * plan — that is the "resume" the subject line promises.
534
+ *
535
+ * authority-change something else moved the signed scope or the
536
+ * publication authority WHILE this build ran. Whatever
537
+ * the revision proposes, it is never auto-applied: the
538
+ * row lands 'blocked', a `revision` hold keeps the task
539
+ * out of every ready set until a person accepts or
540
+ * rejects it, and the page names exactly which fields
541
+ * changed.
542
+ *
543
+ * The lease is released either way — the attempt is over — and the run is
544
+ * finished as `refused`, reusing the existing outcome vocabulary rather
545
+ * than growing it: no work was committed, and nothing failed.
546
+ */
547
+ export declare function finalizeRevisionFenced(store: Store, args: {
548
+ leaseId: string;
549
+ runId: number;
550
+ taskId: string;
551
+ taskRef: number;
552
+ /** Every content column of the row about to be appended. `status` is
553
+ * NOT the caller's to set: it follows from `authorityKind`, decided in
554
+ * exactly one place — here — so a caller can never file an
555
+ * authority-changing revision as already applied. */
556
+ revision: {
557
+ revision: number;
558
+ artifact: number;
559
+ parentHash: string | null;
560
+ reason: string;
561
+ evidenceLink: string | null;
562
+ author: string;
563
+ originRun: number | null;
564
+ authorityKind: "plan-only" | "authority-change";
565
+ authorityDigest: string;
566
+ changedFields: readonly AuthorityChangeField[];
567
+ };
568
+ now: Date;
569
+ }): RevisionFinalize;
570
+ export type PlanFailureDisposition = {
571
+ ok: true;
572
+ disposition: "malformed-incident";
573
+ incidentId: number;
574
+ } | {
575
+ ok: true;
576
+ disposition: "backoff";
577
+ strikes: number;
578
+ } | {
579
+ ok: true;
580
+ disposition: "exhausted";
581
+ incidentId: number;
582
+ strikes: number;
583
+ } | {
584
+ ok: false;
585
+ reason: "fenced" | "unknown" | "stopped";
586
+ };
587
+ /**
588
+ * The planner's own fenced failure finalizer (Codex planning review,
589
+ * finding 6): releases exactly the planner claim, finishes the run,
590
+ * counts a SEPARATE planning strike — a planner that cannot finish must
591
+ * never spend the builder's three attempts — and eventually leaves a
592
+ * durable incident + hold + page. It never marks the task done, never
593
+ * touches builder strikes, never commits, never publishes.
594
+ *
595
+ * A malformed payload goes straight to its incident with no strike: the
596
+ * protocol failed, not the weather, and retrying the same session buys
597
+ * nothing without the repair machinery (deliberately not wired for
598
+ * planners in v1).
599
+ */
600
+ export declare function finalizePlanFailureFenced(store: Store, args: {
601
+ leaseId: string;
602
+ runId: number;
603
+ taskId: string;
604
+ kind: "malformed" | "failure";
605
+ /** Which payload was malformed (v4 review, finding 12): the mailbox is a `malformed-decision`. */
606
+ malformed?: "decision" | "plan";
607
+ message: string;
608
+ now: Date;
609
+ }): PlanFailureDisposition;
610
+ export type ScoutFinalize = {
611
+ ok: true;
612
+ } | {
613
+ ok: false;
614
+ reason: "fenced" | "unknown" | "stopped";
615
+ };
616
+ /**
617
+ * Seal a successful scouting run (mate arc §10): the report artifact, the
618
+ * run outcome, the task's terminal state, and the page to the operator
619
+ * exist together or — if the lease was superseded — not at all. Nothing
620
+ * here touches a branch, a publication, or a scope: the deliverable is
621
+ * the artifact, and the task is done the moment it verifies.
622
+ */
623
+ export declare function finalizeScoutFenced(store: Store, args: {
624
+ leaseId: string;
625
+ runId: number;
626
+ taskId: string;
627
+ report: ParsedReport;
628
+ /** The already-captured report file, described. Required: a report
629
+ * that was not captured is a FAILED attempt, never a finished task
630
+ * (v4 review, finding 1). */
631
+ artifact: {
632
+ key: string;
633
+ bytesOriginal: number;
634
+ bytesStored: number;
635
+ truncated: boolean;
636
+ sha256: string;
637
+ capture: string;
638
+ redacted: boolean;
639
+ };
640
+ now: Date;
641
+ }): ScoutFinalize;
642
+ export type ScoutFailureDisposition = {
643
+ ok: true;
644
+ disposition: "malformed-incident";
645
+ incidentId: number;
646
+ } | {
647
+ ok: true;
648
+ disposition: "backoff";
649
+ strikes: number;
650
+ } | {
651
+ ok: true;
652
+ disposition: "stalled";
653
+ incidentId: number;
654
+ strikes: number;
655
+ } | {
656
+ ok: false;
657
+ reason: "fenced" | "unknown" | "stopped";
658
+ };
659
+ /**
660
+ * The scout's fenced failure finalizer: the BUILDER's discipline, not the
661
+ * planner's — a scout task has no builder attempts, so its strikes are the
662
+ * task's own (three stall it, `task requeue` clears them), and a malformed
663
+ * report is a straight incident with no strike. Never a branch, never a
664
+ * repair session, never a commit.
665
+ */
666
+ export declare function finalizeScoutFailureFenced(store: Store, args: {
667
+ leaseId: string;
668
+ runId: number;
669
+ taskId: string;
670
+ kind: "malformed" | "failure";
671
+ /** Which payload was malformed (v4 review, finding 12): the park
672
+ * mailbox is a `malformed-decision` incident, the handoff a
673
+ * `malformed-report` one — the taxonomy says what actually broke. */
674
+ malformed?: "decision" | "report";
675
+ message: string;
676
+ now: Date;
677
+ }): ScoutFailureDisposition;
678
+ export declare function currentClaim(store: Store, taskRef: number, now: Date): Claim | null;
679
+ /**
680
+ * Release every lease that has run out.
681
+ *
682
+ * Expiry alone already frees a task for acquisition, so this is not what makes
683
+ * reclaim work — it is what makes it *visible*. A daemon reaping on a tick
684
+ * turns "this lease is being ignored because its timestamp is in the past" into
685
+ * a released row somebody can read, which is the difference between a system
686
+ * that recovers and a system that appears to have lost the work.
687
+ */
688
+ export declare function reap(store: Store, now: Date): Claim[];