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,47 @@
1
+ import { browserCrewFromIndex } from './browser-crew.js';
2
+ export { browserCrewFromIndex, browserWorkActionHref } from './browser-crew.js';
3
+ import { workIndexPage } from './work-index.js';
4
+ /** Safe inside a script[type=application/json] element. JSON escaping alone
5
+ * does not stop the HTML parser from closing that element at </script>. */
6
+ export function serializeBrowserWorkspace(workspace) {
7
+ return JSON.stringify(workspace).replace(/</g, '\\u003c').replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029');
8
+ }
9
+ export const BROWSER_CREW_LIMIT = 40;
10
+ /** A bounded recent family list. The caller supplies its already admitted
11
+ * access; an optional project can only narrow it. Admission and family grouping
12
+ * happen before the SQL limit and before reading questions or saved evidence. */
13
+ export function browserCrewOf(store, now, access, options = {}) {
14
+ const project = options.project ?? null;
15
+ if (project !== null && access.repos !== null && !access.repos.includes(project))
16
+ return { crew: [], crewTruncated: false };
17
+ const limit = Number.isFinite(options.limit)
18
+ ? Math.max(1, Math.min(BROWSER_CREW_LIMIT, Math.floor(options.limit))) : BROWSER_CREW_LIMIT;
19
+ const page = workIndexPage(store, now, access, { limit, project });
20
+ return browserCrewFromIndex(page);
21
+ }
22
+ /** Navigation input must already be admitted by the caller. No extra project
23
+ * discovery belongs in a browser projection. Keep exact paths in every link. */
24
+ export function browserProjectsOf(projects) {
25
+ const seen = new Set();
26
+ return projects.flatMap(project => {
27
+ if (seen.has(project.path))
28
+ return [];
29
+ seen.add(project.path);
30
+ return [{ name: project.name, path: project.path, href: `/work?project=${encodeURIComponent(project.path)}`,
31
+ knowledgeHref: `/settings/knowledge?repo=${encodeURIComponent(project.path)}` }];
32
+ });
33
+ }
34
+ export function browserNavigationOf(path, project = null, needsYou = 0) {
35
+ const pathname = path.split('?')[0].split('#')[0];
36
+ const knowledge = pathname === '/settings/knowledge' || pathname.startsWith('/settings/knowledge/');
37
+ return [
38
+ { label: 'Chat', href: '/chat', active: pathname === '/chat' },
39
+ { label: 'Tasks', href: `/work${project === null ? '' : `?project=${encodeURIComponent(project)}`}`,
40
+ active: pathname === '/work' || pathname === '/tasks' || pathname.startsWith('/t/') || pathname.startsWith('/r/'),
41
+ ...(needsYou > 0 ? { count: needsYou } : {}) },
42
+ { label: 'Flows', href: '/flows', active: pathname === '/flows' || pathname.startsWith('/flows/') },
43
+ { label: 'Projects', href: '/projects', active: pathname === '/projects' },
44
+ { label: 'Knowledge', href: `/settings/knowledge${project === null ? '' : `?repo=${encodeURIComponent(project)}`}`, active: knowledge },
45
+ { label: 'Settings', href: '/settings', active: !knowledge && (pathname === '/settings' || pathname.startsWith('/settings/')) },
46
+ ];
47
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Budget alerts (v105): at 50, 80 and 100 % of a monthly budget, once each a
3
+ * month, a notification goes out (to everyone's usual places; a person's
4
+ * budget to that person) and the ledger keeps it. Only the highest mark newly
5
+ * reached is sent: a budget that jumps past three marks at once says so once.
6
+ * Budgets are dollars: only work billed to an API key counts (a subscription
7
+ * costs nothing extra).
8
+ */
9
+ import type { Store } from "./store.js";
10
+ import { type BudgetState } from "./spend.js";
11
+ export declare function budgetAlertPass(store: Store, now: Date): {
12
+ sent: {
13
+ budget: number;
14
+ mark: number;
15
+ }[];
16
+ };
17
+ /** The loop beside the console: a pass a minute. */
18
+ export declare function startBudgetAlerts(store: Store, everyMs?: number): () => void;
19
+ export type { BudgetState };
@@ -0,0 +1,46 @@
1
+ import { budgetLabel, teammateNames, usd } from "./spend.js";
2
+ const MARKS = [100, 80, 50];
3
+ export function budgetAlertPass(store, now) {
4
+ const { month, budgets } = store.monthSpend(now);
5
+ const sent = [];
6
+ const names = teammateNames(store.handle);
7
+ for (const budget of budgets) {
8
+ const mark = MARKS.find(one => budget.percent >= one);
9
+ if (mark === undefined)
10
+ continue;
11
+ // Keyed by the limit too: a budget raised (or lowered) this month alerts afresh at its new marks.
12
+ const key = (one) => `budget:${budget.id}:${budget.limitMicrousd}:${month}:${one}`;
13
+ // A higher mark already sent this month covers this one.
14
+ if (MARKS.filter(one => one >= mark).some(one => store.handle.prepare("SELECT 1 AS hit FROM notification WHERE dedupe_key = ?").get(key(one)) !== undefined))
15
+ continue;
16
+ const label = budgetLabel(budget, budget.scope === "teammate" ? names.get(Number(budget.key)) : undefined);
17
+ const fresh = store.enqueueNotification({
18
+ dedupeKey: key(mark), kind: "budget-alert", pushClass: "attention", link: `/spend?month=${month}`,
19
+ subject: `${label} budget: ${mark}% used`,
20
+ body: `${usd(budget.spentMicrousd)} of ${usd(budget.limitMicrousd)} in ${month}.${mark >= 100 ? budget.hardStop ? " New API work waits until next month or a higher budget." : " It only alerts; work carries on." : ""}`,
21
+ source: budget.scope === "project" ? { project: budget.key } : { installation: true },
22
+ ...(budget.scope === "person" ? { recipient: budget.key } : {}),
23
+ }, now);
24
+ if (!fresh)
25
+ continue;
26
+ store.recordAction({ at: now.toISOString(), actor: "system", repo: budget.scope === "project" ? budget.key : null, taskId: null, runId: null,
27
+ action: `budget ${mark}% used: ${label.replace(/'s$/, "")}`, outcome: mark >= 100 && budget.hardStop ? "stopped" : "alerted", source: "policy",
28
+ detail: `${usd(budget.spentMicrousd)} of ${usd(budget.limitMicrousd)} in ${month}` });
29
+ sent.push({ budget: budget.id, mark });
30
+ }
31
+ return { sent };
32
+ }
33
+ /** The loop beside the console: a pass a minute. */
34
+ export function startBudgetAlerts(store, everyMs = 60_000) {
35
+ let stopped = false;
36
+ const tick = () => { if (stopped)
37
+ return; try {
38
+ budgetAlertPass(store, new Date());
39
+ }
40
+ catch { /* the next pass tries again */ } };
41
+ const timer = setInterval(tick, everyMs);
42
+ timer.unref?.();
43
+ const first = setTimeout(tick, 5_000);
44
+ first.unref?.();
45
+ return () => { stopped = true; clearInterval(timer); clearTimeout(first); };
46
+ }
@@ -0,0 +1,370 @@
1
+ import { type PreparedEvidence } from "./prepared-evidence.js";
2
+ import { type ExecResult, type RunOptions } from "./exec.js";
3
+ import type { Decision, Store } from "./store.js";
4
+ import { type ExecutionProfile, type Scope } from "./scope.js";
5
+ import { type ParsedDecision, type Problem } from "./decision.js";
6
+ import { type AgentOutcome } from "./invoke.js";
7
+ import { type DiffStatFacts } from "./proof.js";
8
+ import { type AuthoritySnapshot, type MilestoneState } from "./plan.js";
9
+ export type Runner = (file: string, args: readonly string[], options?: RunOptions) => Promise<ExecResult>;
10
+ /**
11
+ * The native shell for an operator-approved repository command. There are
12
+ * exactly two consumers: dependency setup before an agent starts, and the
13
+ * verification command after it commits. Keeping the choice here prevents a
14
+ * Windows worker from trying to spawn `/bin/sh` while leaving the approved
15
+ * command itself byte-for-byte unchanged.
16
+ */
17
+ export declare function approvedCommandShell(command: string, platform?: NodeJS.Platform, windowsShell?: string): {
18
+ file: string;
19
+ args: string[];
20
+ display: string;
21
+ };
22
+ /**
23
+ * Whether an approved project check failed at its launch boundary because a
24
+ * local executable was unavailable. The numeric shell codes are the primary
25
+ * signal. Windows `cmd.exe` can instead return 1 with one exact diagnostic,
26
+ * so that spelling is admitted only on Windows. Free-form test output such as
27
+ * `MODULE_NOT_FOUND` is deliberately not enough: assertions are untrusted and
28
+ * must not turn an ordinary product failure into environment recovery.
29
+ */
30
+ export declare function verificationExecutableMissing(result: ExecResult, platform?: NodeJS.Platform): boolean;
31
+ /** The attended dispatch (Parity II Phase 2): the authorization is the
32
+ * authority, the coordinator takes ownership at the spawn point, and the
33
+ * builder returns `held` without settling. */
34
+ export type AttendedDispatch = {
35
+ authorization: import("./store.js").AttendedAuthorization;
36
+ coordinator: import("./held.js").HeldSessionCoordinator;
37
+ upIncarnation: string;
38
+ socketDir: string;
39
+ releaseWorktree: (path: string) => Promise<unknown>;
40
+ dispose: {
41
+ repo: string;
42
+ origin: string;
43
+ provider: string;
44
+ model: string | null;
45
+ policy?: import("./dispose.js").DisposePolicy;
46
+ };
47
+ starter?: import("./exec.js").HeldSessionStart extends never ? never : typeof import("./exec.js").startClaudeHeldSession;
48
+ graceMs?: number;
49
+ /** v28: the operator's session cap, enforced in the custody transaction. */
50
+ maxHeldSessions?: number;
51
+ onDisposed?: import("./held.js").HeldLaunchArgs["onDisposed"];
52
+ };
53
+ export type BuildRequest = {
54
+ attended?: AttendedDispatch;
55
+ taskId: string;
56
+ taskRef: number;
57
+ runner: string;
58
+ /**
59
+ * The exact lease this attempt was dispatched under. Optional for a person
60
+ * driving `build` by hand; an unattended pass always sets it, because the
61
+ * runner-name check alone cannot tell a live attempt from a superseded one
62
+ * the same runner started earlier.
63
+ */
64
+ leaseId?: string;
65
+ /**
66
+ * The runner's own credential, for the CREDENTIALED pulse (arc 2 finding
67
+ * 33): with it, every mid-build beat re-proves the token against the
68
+ * current hash, and a takeover's rotation fences this attempt at its
69
+ * next beat. Absent (a person driving `build` by hand), the beat falls
70
+ * back to the unauthenticated touch, exactly as before.
71
+ */
72
+ runnerToken?: string;
73
+ /** A tournament contestant's OWN approved profile (v24): under the joint
74
+ * race approval, this — not the scope's single snapshot — is what the
75
+ * dispatch proof holds the invocation to. */
76
+ contestProfile?: ExecutionProfile;
77
+ /**
78
+ * Real time, read repeatedly. `now` is one instant and a build is not: a
79
+ * lease heartbeated with the timestamp the build started at is a lease that
80
+ * stopped being extended the moment it began.
81
+ */
82
+ clock?: () => Date;
83
+ /** How often the pulse beats while the agent runs. 0 disables it. */
84
+ pulseMs?: number;
85
+ worktree: string;
86
+ branch: string;
87
+ now: Date;
88
+ /**
89
+ * The open run record this attempt writes its facts to. Required: nothing
90
+ * spends without a record that will outlive it, and the invocation
91
+ * gateway refuses a paid call whose run is missing or already finished.
92
+ */
93
+ runId: number;
94
+ /** Claude's native dollar cap for this attempt (tournaments): the
95
+ * harness stops itself at this figure. Absent = uncapped, as today. */
96
+ maxBudgetUsd?: number;
97
+ /** Fires with the provider's process-group id the moment it exists —
98
+ * the worker-process ledger records it (v14). */
99
+ onProviderSpawn?: (pid: number) => void;
100
+ /** Where evidence files live. Defaults to ~/.toolroll/evidence (or an older ~/.standing-orders/evidence). */
101
+ evidenceRoot?: string;
102
+ /** A draft preserved from an interrupted predecessor. The fresh attempt
103
+ * still reviews it and writes its own nonce-bound handoff. */
104
+ recoveredDraftRun?: number;
105
+ recoveredDraftKind?: "completed" | "partial";
106
+ /** Defaults to the safe one; see the note on permissions above. */
107
+ permissionMode?: "acceptEdits" | "auto" | "plan";
108
+ /** Named honestly, never the default, and only ever set by a person. */
109
+ skipPermissions?: boolean;
110
+ /** The harness this build runs on. Repair ALWAYS inherits it — a session
111
+ * resumed across providers is not a session (Codex provider review, Q3). */
112
+ provider?: "claude" | "codex" | "openrouter" | "gemini";
113
+ model?: string;
114
+ /**
115
+ * The model repair turns run on. Repair is a few-k, one-job resumption —
116
+ * the §9 economics argument in miniature — so it may run cheaper than the
117
+ * builder. Defaults to the builder's model.
118
+ */
119
+ repairModel?: string;
120
+ maxTurns?: number;
121
+ timeoutMs?: number;
122
+ agent?: Runner;
123
+ git?: Runner;
124
+ /** Runs the approved worktree setup command (M5.7). Tests inject; production uses exec. */
125
+ setup?: Runner;
126
+ /** Runs the repository's approved verification command (Priority 2), after
127
+ * commit. Tests inject; production uses exec. */
128
+ verify?: Runner;
129
+ /**
130
+ * The stop fence (audit IV-1, completed): re-proved AFTER the agent and
131
+ * BEFORE the commit. A stop that lands while the agent runs preserves
132
+ * the work uncommitted for the successor — late output cannot commit.
133
+ */
134
+ shouldStop?: () => boolean;
135
+ };
136
+ /**
137
+ * What the agent handed over when it parked: the validated decision and the
138
+ * evidence rows already written for it. The caller seals it with
139
+ * `finalizeParkFenced` — nothing here has touched the claim or the task.
140
+ */
141
+ export type ParkPackage = {
142
+ decision: ParsedDecision;
143
+ artifactIds: number[];
144
+ };
145
+ export type BuildResult = {
146
+ ok: true;
147
+ parked?: undefined;
148
+ committed: boolean;
149
+ /** The agent said no-change and the tree proves it: done, nothing to publish. */
150
+ noChange?: boolean;
151
+ /** The session is HELD (attended road): the coordinator owns run,
152
+ * lease, and worktree from here — the caller settles NOTHING. */
153
+ held?: true;
154
+ branch: string;
155
+ summary: string;
156
+ } | {
157
+ ok: true;
158
+ parked: ParkPackage;
159
+ branch: string;
160
+ } | {
161
+ ok: false;
162
+ reason: BuildRefusal;
163
+ message: string;
164
+ problems?: Problem[];
165
+ };
166
+ export type BuildRefusal = "skills-unavailable"
167
+ /** Sprint 8: the organisation policy stops this provider, model or permission level. */
168
+ | "policy" | "unapproved" | "scope-changed" | "stale-approval" | "mode-ended" | "stale-authorization" | "attended-only" | "session-cap" | "attended-held" | "attended-unsupported" | "run-held" | "spawn-failed" | "capability" | "no-claim" | "not-yours" | "not-leased" | "protected-branch" | "wrong-branch" | "moved-branch" | "fenced" | "agent" | "agent-reported" | "no-op" | "moved-head" | "timeout" | "git" | "commit-failure" | "malformed-decision" | "provider-init" | "setup" | "revision-brief" | "external" | "stopped" | "plan-revised" | "plan-revision-blocked" | "provider-unattested" | "provider-protocol" | "chain-credential" | "chain-custody" | "runner-custody" | "auth-mode" | "route-authority" | "containment";
169
+ /** Long enough for real work; short enough that a stuck build ends the same night. */
170
+ export declare const DEFAULT_BUILD_TIMEOUT_MS: number;
171
+ export declare const DEFAULT_MAX_TURNS = 40;
172
+ /**
173
+ * Bounded repair (§6): a malformed park gets the same session back, twice,
174
+ * with a compact error naming exactly what failed — then it is an incident.
175
+ * The turns are short and narrow because the job is narrow: re-emit one
176
+ * file. Sandcastle's mechanism, sized to sandcastle's numbers.
177
+ */
178
+ export declare const REPAIR_TURNS = 2;
179
+ export declare const REPAIR_MAX_TURNS = 4;
180
+ export declare const REPAIR_TIMEOUT_MS: number;
181
+ /**
182
+ * How often a running build says "still here" — extending its lease and its
183
+ * runner's liveness in one beat. A minute against a three-minute liveness
184
+ * window means two beats can be lost to load before anything looks dead.
185
+ */
186
+ export declare const DEFAULT_PULSE_MS = 60000;
187
+ /** Branches an unattended agent may never commit to, whatever it was asked. */
188
+ export declare const PROTECTED: Set<string>;
189
+ /**
190
+ * Setup shells run under an ALLOWLIST, not the operator's shell minus two
191
+ * names (audit IV-5, completed): the deterministic basics a package
192
+ * manager needs and nothing that could carry a credential. A setup that
193
+ * needs more exports it inside its own approved command text — visibly,
194
+ * on the approval screen.
195
+ */
196
+ export declare const SETUP_ENV_ALLOWLIST: readonly string[];
197
+ /** Belt over the allowlist's suspenders: even if these ever appear in `env`, they die here. */
198
+ export declare const SETUP_ENV_DENYLIST: readonly string[];
199
+ /**
200
+ * A bounded, redacted diagnostic from untrusted tool output (audit IV-5):
201
+ * assignments and URL userinfo that look credential-shaped are blanked
202
+ * before a byte reaches SQLite, a page, or a webhook. Coarse on purpose —
203
+ * over-redacting a diagnostic costs a glance at the real log; under-
204
+ * redacting costs a secret.
205
+ */
206
+ export declare function redactSecretText(text: string): string;
207
+ /** The same blanking with no length cap, for a log that keeps its length (a flow script's output). */
208
+ export declare function redactSecretAssignments(text: string): string;
209
+ export declare function proveApprovedProfile(scope: Scope | null, contestProfile: ExecutionProfile | null, given: {
210
+ provider: string;
211
+ model: string | undefined;
212
+ maxTurns: number | undefined;
213
+ timeoutMs: number | undefined;
214
+ skipPermissions: boolean;
215
+ }): {
216
+ ok: true;
217
+ effective: {
218
+ model: string;
219
+ maxTurns: number | undefined;
220
+ timeoutMs: number;
221
+ skipPermissions: boolean;
222
+ profile: ExecutionProfile;
223
+ };
224
+ } | {
225
+ ok: false;
226
+ message: string;
227
+ };
228
+ /**
229
+ * Build one task, if everything says it may.
230
+ *
231
+ * The gates are re-checked here rather than assumed from the caller, because
232
+ * this is the last point before somebody's repository changes, and a caller
233
+ * that forgot one is exactly the caller this is protecting against.
234
+ */
235
+ export declare function build(store: Store, request: BuildRequest): Promise<BuildResult>;
236
+ /**
237
+ * Everything the post-provider settlement closes over (Parity II Phase 2,
238
+ * v4 Q2 / v6 W8): an explicit record, so the held road's coordinator can
239
+ * run THE SAME settlement the one-shot road runs — one state machine,
240
+ * never a paraphrase. `fenced()` reads the pulse's live flag: settlement
241
+ * decisions are about NOW, not about the moment of capture.
242
+ */
243
+ /** The prepared candidate must be a commit this repository holds and must
244
+ * descend from the task's base (the first attempt's base once one exists,
245
+ * otherwise the current HEAD). Plain words on refusal, nothing touched. */
246
+ export declare function proveCandidate(git: Runner, worktree: string, candidate: string, pinnedBase: string | null): Promise<string | null>;
247
+ /** Make the worktree's tracked tree EXACTLY the candidate commit's tree —
248
+ * renames, deletions and additions included — without moving HEAD, so the
249
+ * result is uncommitted work on the task branch, as an agent would leave it.
250
+ * Untracked files (the protocol mailbox among them) are not touched. */
251
+ export declare function bringWorktreeTo(git: Runner, worktree: string, candidate: string): Promise<{
252
+ ok: true;
253
+ } | {
254
+ ok: false;
255
+ message: string;
256
+ }>;
257
+ export type CapturedBuild = {
258
+ store: Store;
259
+ request: BuildRequest;
260
+ agent: BuildRequest["agent"];
261
+ git: Runner;
262
+ worktree: string;
263
+ branch: string;
264
+ baseRevision: string;
265
+ taskId: string;
266
+ taskRef: number;
267
+ runner: string;
268
+ provider: string;
269
+ scope: Scope | null;
270
+ effective: {
271
+ model: string;
272
+ maxTurns: number | undefined;
273
+ timeoutMs: number;
274
+ skipPermissions: boolean;
275
+ profile: ExecutionProfile;
276
+ };
277
+ answers: {
278
+ decision: Decision & {
279
+ taskId: string;
280
+ };
281
+ choice: string;
282
+ note: string | null;
283
+ }[];
284
+ timeoutMs: number;
285
+ root: string;
286
+ mailbox: string;
287
+ done: string;
288
+ /** The proof manifest's nonce-bound filename (Priority 2) — optional for
289
+ * the agent to write, read the same way as the handoff once it finishes. */
290
+ proof: string;
291
+ preparedEvidence?: PreparedEvidence;
292
+ rubric?: string;
293
+ clock: () => Date;
294
+ fenced: () => boolean;
295
+ /** The adaptive-execution-plan binding, when this attempt received a plan
296
+ * with milestones. Optional: a build with no plan (or an older free-form
297
+ * one) settles exactly as it always has, and a caller assembling a
298
+ * capture by hand need not know this protocol exists. */
299
+ plan?: PlanBinding;
300
+ };
301
+ /** What settlement needs to know about the plan this attempt built against. */
302
+ export type PlanBinding = {
303
+ /** This attempt's terminal revision-proposal file, worktree-relative. */
304
+ proposal: string;
305
+ /** The revision number the brief named — what a page and a page's
306
+ * notification say out loud. */
307
+ revision: number;
308
+ /** The signed scope and publication authority as they stood when the
309
+ * build STARTED. A revision auto-applies only if both still match. */
310
+ authority: AuthoritySnapshot;
311
+ /** The checkpoint reader's live state, shared with the pulse: settlement
312
+ * makes one more pass with it, so a final checkpoint that raced the last
313
+ * beat is not lost, and one the beat already ingested is not doubled. */
314
+ progress: ProgressIngestState;
315
+ };
316
+ /**
317
+ * Everything the milestone-checkpoint reader carries between passes. Two
318
+ * callers share one instance — the pulse's `beat()` and the single
319
+ * settlement pass — which is exactly why the dedupe state lives here rather
320
+ * than in either of them: the last beat and the final read routinely see
321
+ * the same bytes, and a checkpoint written twice would read as progress
322
+ * twice.
323
+ */
324
+ export type ProgressIngestState = {
325
+ runId: number;
326
+ taskRef: number;
327
+ /** Null when this task has no ledger row to attach a checkpoint to —
328
+ * `run_checkpoint.plan_revision` is NOT NULL, so nothing is recorded. */
329
+ planRevisionId: number | null;
330
+ expectedRevisionHash: string | null;
331
+ knownIds: readonly string[];
332
+ progressPath: string;
333
+ /** The exact bytes last ingested — a cheap `Buffer.equals` against the
334
+ * file skips the parse entirely on an unchanged checkpoint. */
335
+ lastRaw: Buffer | null;
336
+ /** The furthest state each milestone has reached, for the regression
337
+ * check. Not a full snapshot: only the states matter. */
338
+ lastStates: Map<string, MilestoneState>;
339
+ };
340
+ export declare function settleProviderOutcome(captured: CapturedBuild, result: AgentOutcome): Promise<BuildResult>;
341
+ /**
342
+ * Read the agent's optional proof, re-run the repository's approved
343
+ * verification command if one is configured, and save the machine's one
344
+ * verdict — computed once, here, and never re-inferred at render. Runs
345
+ * strictly after commit and terminal-diff capture; every branch below
346
+ * ends in `store.saveProofVerdict`, never in a thrown error that could
347
+ * reach the caller and be mistaken for a build failure.
348
+ */
349
+ /** The sealed diff-stat artifact restated as facts: whether it captured
350
+ * and verified, whether its file list was cut, the paths it names, and the
351
+ * old name of every rename git paired (provenance, never a path). Anything
352
+ * missing, failed, tampered or unparseable reads as not captured. */
353
+ export declare function sealedDiffStatFacts(store: Store, root: string, statArtifactId: number): DiffStatFacts | null;
354
+ /**
355
+ * What a non-zero agent exit means, in words a person can act on: the
356
+ * harness's own result line names the ending (a turn ceiling, an error
357
+ * during execution) and how many turns it took; only when it said nothing
358
+ * do stderr or the bare exit code stand in. Two attempts died at exactly
359
+ * the ceiling on 2026-09-04 and the ledger said "unknown" — the fact was
360
+ * in the stream all along.
361
+ */
362
+ export declare function agentExitWords(outcome: {
363
+ code: number;
364
+ stderr: string;
365
+ finalMessage: string | null;
366
+ ending?: {
367
+ subtype: string | null;
368
+ turns: number | null;
369
+ } | null;
370
+ }): string;