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,243 @@
1
+ /** Supervision of one approved app update, independent of the app being swapped.
2
+ * No task scheduling, credentials or provider calls belong in this process. */
3
+ import { spawn } from "node:child_process";
4
+ import { existsSync, lstatSync, readFileSync, unlinkSync } from "node:fs";
5
+ import { homedir } from "node:os";
6
+ import { dirname, join } from "node:path";
7
+ import { bundleHash } from "./desktop-bundle.js";
8
+ import { installLaunchdService, launchdPlist } from "./daemon.js";
9
+ import { run } from "./exec.js";
10
+ import { desktopUpdateStatus, durableJson, installationLock, pauseUpdateRecovery, readUpdateJournal, requestUpdateRestore, sqliteLock, updateTerminal } from "./desktop-update.js";
11
+ const recordFile = (j) => join(j.workDir, "recovery.json");
12
+ const app = (j) => join(j.workDir, "Updater.app");
13
+ const sleep = (ms) => new Promise(done => setTimeout(done, ms));
14
+ function readRecovery(j) {
15
+ const file = recordFile(j);
16
+ if (!existsSync(file))
17
+ return null;
18
+ const stat = lstatSync(file);
19
+ if (!stat.isFile() || stat.isSymbolicLink() || (process.platform !== "win32" && (stat.uid !== process.getuid?.() || (stat.mode & 0o077) !== 0)))
20
+ throw Error("The automatic-recovery record is not a private regular file.");
21
+ const record = JSON.parse(readFileSync(file, "utf8"));
22
+ if (record.version !== 1 || record.id !== j.id || !["armed", "running", "backoff", "attention", "done"].includes(record.state) || ![record.attempts, record.repairs].every(n => Number.isSafeInteger(n) && n >= 0))
23
+ throw Error("The automatic-recovery record is invalid; no work was restarted.");
24
+ return record;
25
+ }
26
+ function writeRecovery(j, record, state, detail) {
27
+ record.state = state;
28
+ record.detail = detail;
29
+ record.updatedAt = new Date().toISOString();
30
+ durableJson(recordFile(j), record);
31
+ }
32
+ export function updateRecoveryDefinition(j, home = homedir()) {
33
+ const resources = join(app(j), "Contents", "Resources"), bin = join(resources, "runtime", "node"), entry = join(resources, "dist", "desktop-host.js");
34
+ const label = `${j.label}.update`, logPath = join(j.workDir, "update.log");
35
+ return { platform: "darwin", label, bin, entry, logPath, unitPath: join(home, "Library", "LaunchAgents", `${label}.plist`),
36
+ unitContent: launchdPlist({ label, command: [bin, entry, "update-supervise", "--state", j.stateDir, "--update-id", j.id], workingDirectory: j.workDir, logPath,
37
+ pathEnv: [dirname(bin), "/usr/bin", "/bin", "/usr/sbin", "/sbin"].join(":"), associatedBundleId: j.next.bundleId,
38
+ // A timer is a fallback even when macOS defers a non-demand KeepAlive
39
+ // restart. It is an updater wakeup, never a task execution time limit.
40
+ keepAlive: false, startInterval: 15 }) };
41
+ }
42
+ export async function armUpdateRecovery(stateDir, retry = false, supervise = run, home = homedir()) {
43
+ if (process.platform !== "darwin")
44
+ throw Error("Automatic native app recovery currently supports macOS only.");
45
+ const j = readUpdateJournal(stateDir);
46
+ if (!j || updateTerminal(j.phase))
47
+ throw Error("No pending update is available.");
48
+ if (j.next.recoveryProtocol !== 1)
49
+ throw Error("This candidate cannot supervise its own recovery. Use a current build.");
50
+ if (bundleHash(app(j)) !== j.next.hash)
51
+ throw Error("The staged updater changed. Nothing was launched.");
52
+ const lock = sqliteLock(join(j.workDir, "guardian.sqlite"), 1000);
53
+ if (!lock)
54
+ return; // An existing guardian owns the job; never restart it.
55
+ try {
56
+ let record = readRecovery(j);
57
+ if (record?.state === "attention" && !retry)
58
+ throw Error(record.detail);
59
+ record = record && !retry ? record : { version: 1, id: j.id, state: "armed", attempts: 0, repairs: 0, guardianPid: null, workerPid: null, updatedAt: new Date().toISOString(), detail: "", manualRetry: retry };
60
+ writeRecovery(j, record, "armed", "Automatic update recovery is starting. You can close the app window.");
61
+ }
62
+ finally {
63
+ lock.close();
64
+ }
65
+ try {
66
+ const definition = updateRecoveryDefinition(j, home);
67
+ const result = await installLaunchdService(definition, supervise);
68
+ if (!result.ok)
69
+ throw Error(result.message);
70
+ }
71
+ catch (error) {
72
+ const lock = sqliteLock(join(j.workDir, "guardian.sqlite"));
73
+ if (lock) {
74
+ try {
75
+ const record = readRecovery(j);
76
+ writeRecovery(j, record, "attention", `Automatic recovery could not start: ${error instanceof Error ? error.message : String(error)}. Retry from Update status. No permission was bypassed.`);
77
+ }
78
+ finally {
79
+ lock.close();
80
+ }
81
+ }
82
+ throw error;
83
+ }
84
+ }
85
+ export async function runUpdateAttempt(j, signal, onPid, hooks = {}) {
86
+ const resources = join(app(j), "Contents", "Resources");
87
+ const child = spawn(join(resources, "runtime", "node"), [join(resources, "dist", "desktop-host.js"), "update-run", "--state", j.stateDir, "--update-id", j.id], { cwd: j.workDir, stdio: "inherit" });
88
+ let ended = false, fault = null;
89
+ const startedAt = Date.now();
90
+ // Only this ChildProcess handle may be signalled. A PID in a receipt is
91
+ // diagnostic, never authority to kill something after a restart.
92
+ const stop = () => { if (!ended)
93
+ child.kill("SIGKILL"); };
94
+ signal.addEventListener("abort", stop, { once: true });
95
+ child.once("spawn", () => { onPid(child.pid ?? null); if (signal.aborted)
96
+ stop(); });
97
+ child.once("error", () => { });
98
+ const timer = setInterval(() => {
99
+ try {
100
+ const current = readUpdateJournal(j.stateDir);
101
+ if (!current || current.id !== j.id) {
102
+ fault = "The update record changed; the owned updater was stopped.";
103
+ stop();
104
+ return;
105
+ }
106
+ if (Date.now() - Math.max(startedAt, Date.parse(current.updatedAt)) > (hooks.staleMs ?? 180_000)) {
107
+ fault = "The updater stopped reporting progress. Its owned process was restarted safely.";
108
+ stop();
109
+ }
110
+ }
111
+ catch {
112
+ fault = "The update record could not be checked; the owned updater was stopped.";
113
+ stop();
114
+ }
115
+ }, hooks.pollMs ?? 1000);
116
+ try {
117
+ const result = await new Promise(done => child.once("close", (code, signal) => { ended = true; done({ code, signal }); }));
118
+ if (fault)
119
+ throw Error(fault);
120
+ if (result.code !== 0)
121
+ throw Error(`Updater exited unexpectedly (${result.signal ?? result.code ?? "spawn failed"}).`);
122
+ }
123
+ finally {
124
+ clearInterval(timer);
125
+ signal.removeEventListener("abort", stop);
126
+ onPid(null);
127
+ }
128
+ }
129
+ /** Remove only the immutable job definition for this completed operation.
130
+ * Receipts/backups remain. A crash during cleanup gets another no-op wake. */
131
+ async function cleanup(j) {
132
+ // Prevent a new update's registration racing this old job's bootout.
133
+ const lock = installationLock(j);
134
+ if (!lock)
135
+ return;
136
+ try {
137
+ const definition = updateRecoveryDefinition(j);
138
+ if (existsSync(definition.unitPath)) {
139
+ if (lstatSync(definition.unitPath).isSymbolicLink() || readFileSync(definition.unitPath, "utf8") !== definition.unitContent)
140
+ throw Error("The updater service definition changed; it was not removed.");
141
+ unlinkSync(definition.unitPath);
142
+ }
143
+ await run("/bin/launchctl", ["bootout", `gui/${process.getuid?.()}/${definition.label}`], { timeoutMs: 5000 });
144
+ }
145
+ finally {
146
+ lock.close();
147
+ }
148
+ }
149
+ export async function superviseDesktopUpdate(stateDir, id, signal, hooks = {}) {
150
+ let initial;
151
+ try {
152
+ initial = readUpdateJournal(stateDir);
153
+ }
154
+ catch (error) {
155
+ // The OS job's pinned working directory has an independently validated
156
+ // receipt. Use it only to suspend this exact job, never to overwrite a
157
+ // damaged/newer main record or infer permission to continue the update.
158
+ const retained = readUpdateJournal(stateDir, join(hooks.receiptDir ?? process.cwd(), "receipt.json"));
159
+ if (!retained || retained.id !== id)
160
+ throw error;
161
+ durableJson(join(retained.workDir, "recovery-failure.json"), { id, detail: "The main update record cannot be read. Automatic recovery is suspended; preserve both receipts and open Update status.", error: error instanceof Error ? error.message : String(error) });
162
+ await (hooks.cleanup ?? cleanup)(retained);
163
+ return;
164
+ }
165
+ // A retained old login job cannot act on a newer update in the same state.
166
+ if (!initial || initial.id !== id)
167
+ return;
168
+ const lock = sqliteLock(join(initial.workDir, "guardian.sqlite"), 1000);
169
+ if (!lock)
170
+ return;
171
+ let record = null, finished = false;
172
+ const pause = (j, detail) => {
173
+ pauseUpdateRecovery(stateDir, id, detail);
174
+ writeRecovery(j, record, "attention", detail);
175
+ finished = true;
176
+ };
177
+ try {
178
+ record = readRecovery(initial);
179
+ if (!record)
180
+ throw Error("Automatic recovery was not armed for this operation.");
181
+ record.guardianPid = process.pid;
182
+ while (!signal.aborted) {
183
+ const j = readUpdateJournal(stateDir);
184
+ if (!j || j.id !== id)
185
+ return;
186
+ if (updateTerminal(j.phase)) {
187
+ writeRecovery(j, record, "done", j.detail);
188
+ finished = true;
189
+ return;
190
+ }
191
+ if (record.state === "attention" || (j.phase === "needs-attention" && !j.retryableRecovery && !record.manualRetry)) {
192
+ pause(j, j.detail);
193
+ return;
194
+ }
195
+ if (bundleHash(app(j)) !== j.next.hash) {
196
+ pause(j, "The staged updater changed. Automatic recovery stopped; keep the app and backups and open Update status.");
197
+ return;
198
+ }
199
+ // launchd may be settling the previous process group. Do not consume a
200
+ // retry or spawn over an updater that still owns the database lock.
201
+ if (desktopUpdateStatus(stateDir).running) {
202
+ await (hooks.sleep ?? sleep)(500);
203
+ continue;
204
+ }
205
+ let restoring = j.intended === "restore";
206
+ if (!restoring && record.attempts >= 3) {
207
+ requestUpdateRestore(stateDir);
208
+ restoring = true;
209
+ writeRecovery(j, record, "backoff", "The update has been interrupted repeatedly. Returning to the previous app automatically.");
210
+ }
211
+ if (restoring && record.repairs >= 3) {
212
+ pause(j, "Automatic recovery could not finish after three attempts. Your app and current task data were kept. Open Update status to resolve the reported error, then retry safely.");
213
+ return;
214
+ }
215
+ if (restoring)
216
+ record.repairs++;
217
+ else
218
+ record.attempts++;
219
+ record.manualRetry = false;
220
+ writeRecovery(j, record, "running", restoring ? "Restoring the previous app automatically. Your current task data will be kept." : record.attempts > 1 ? "Recovering the interrupted update automatically. No action is needed." : "Updating in the background. You can close the app window.");
221
+ try {
222
+ await (hooks.attempt ?? ((j, signal, onPid) => runUpdateAttempt(j, signal, onPid, hooks)))(j, signal, pid => { record.workerPid = pid; writeRecovery(j, record, "running", record.detail); });
223
+ }
224
+ catch (error) {
225
+ writeRecovery(j, record, "backoff", `${error instanceof Error ? error.message : String(error)} Automatic recovery will retry from the saved state.`);
226
+ }
227
+ if (!signal.aborted)
228
+ await (hooks.sleep ?? sleep)(Math.min(10_000, 1000 * 2 ** Math.max(0, record.attempts + record.repairs - 1)));
229
+ }
230
+ }
231
+ catch (error) {
232
+ // If the receipt itself cannot be trusted, do not invent state or launch
233
+ // anything. Preserve it and suspend this OS job instead of looping.
234
+ if (record)
235
+ writeRecovery(initial, record, "attention", `Automatic recovery stopped: ${error instanceof Error ? error.message : String(error)}. Open Update status; saved work was kept.`);
236
+ finished = true;
237
+ }
238
+ finally {
239
+ lock.close();
240
+ if (finished)
241
+ await (hooks.cleanup ?? cleanup)(initial);
242
+ }
243
+ }
@@ -0,0 +1,110 @@
1
+ import { DatabaseSync } from "node:sqlite";
2
+ import { type DesktopBundle } from "./desktop-bundle.js";
3
+ type Phase = "prepared" | "draining" | "backing-up" | "stopping" | "installing" | "verifying" | "rolling-back" | "releasing" | "complete" | "restored" | "cancelled" | "needs-attention";
4
+ export type UpdateJournal = {
5
+ version: 1;
6
+ id: string;
7
+ stateDir: string;
8
+ workDir: string;
9
+ label: string;
10
+ databaseFile: string;
11
+ configHash: string;
12
+ old: DesktopBundle;
13
+ next: DesktopBundle;
14
+ phase: Phase;
15
+ intended: "install" | "restore";
16
+ startedAt: string;
17
+ updatedAt: string;
18
+ wasRunning: boolean;
19
+ backupHash?: string;
20
+ backupPath?: string;
21
+ codingBackupPath?: string;
22
+ codingBackupHash?: string;
23
+ codingCatalogExpected?: boolean;
24
+ detail: string;
25
+ error?: string;
26
+ checkedAt?: string;
27
+ serviceInterrupted?: boolean;
28
+ replacementOccurred?: boolean;
29
+ retryableRecovery?: boolean;
30
+ };
31
+ type ServiceState = {
32
+ state: string;
33
+ stale?: boolean;
34
+ };
35
+ export type UpdateHooks = {
36
+ verify?: (old: DesktopBundle, next: DesktopBundle) => Promise<void>;
37
+ serviceStatus?: (bundle: DesktopBundle, journal: Pick<UpdateJournal, "stateDir" | "label">) => Promise<ServiceState>;
38
+ service?: (action: "start" | "stop", bundle: DesktopBundle, journal: UpdateJournal) => Promise<void>;
39
+ healthy?: (bundle: DesktopBundle, journal: UpdateJournal, since: string) => Promise<boolean>;
40
+ swap?: (journal: UpdateJournal) => Promise<void>;
41
+ sleep?: (ms: number) => Promise<void>;
42
+ healthTimeoutMs?: number;
43
+ /** Fault injection for state-machine tests, never selectable by a CLI flag. */
44
+ checkpoint?: (phase: Phase) => void;
45
+ otherControllers?: (bundle: DesktopBundle, stateDir: string) => Promise<boolean>;
46
+ };
47
+ export declare const updateTerminal: (phase: string) => boolean;
48
+ /** Durable receipts are private and independent of the app being replaced. */
49
+ export declare function durableJson(file: string, value: unknown): void;
50
+ export declare function readUpdateJournal(stateDir: string, retainedReceipt?: string): UpdateJournal | null;
51
+ export declare function previewDesktopUpdate(stateDir: string, installed: string, candidate: string, label: string, hooks?: UpdateHooks): Promise<{
52
+ old: DesktopBundle;
53
+ next: DesktopBundle;
54
+ configHash: string;
55
+ label: string;
56
+ stateDir: string;
57
+ databaseFile: string;
58
+ codingCatalogExpected: boolean;
59
+ wasRunning: boolean;
60
+ digest: string;
61
+ active: Record<string, number>;
62
+ message: string;
63
+ }>;
64
+ export declare function prepareDesktopUpdate(stateDir: string, installed: string, candidate: string, label: string, expected: string, hooks?: UpdateHooks): Promise<UpdateJournal>;
65
+ export declare function sqliteLock(file: string, busyTimeoutMs?: number): DatabaseSync | null;
66
+ export declare const installationLock: (j: UpdateJournal) => DatabaseSync | null;
67
+ export declare function desktopUpdateStatus(stateDir: string): {
68
+ active: boolean;
69
+ phase: string;
70
+ detail: string;
71
+ running: boolean;
72
+ canResume: boolean;
73
+ canCancel: boolean;
74
+ error?: never;
75
+ automaticRecovery?: never;
76
+ recoveryAttempts?: never;
77
+ recoveryRepairs?: never;
78
+ wasRunning?: never;
79
+ backupPath?: never;
80
+ updateId?: never;
81
+ version?: never;
82
+ buildId?: never;
83
+ workDir?: never;
84
+ } | {
85
+ active: boolean;
86
+ phase: Phase;
87
+ detail: string;
88
+ error: string | null;
89
+ running: boolean;
90
+ automaticRecovery: boolean;
91
+ recoveryAttempts: number;
92
+ recoveryRepairs: number;
93
+ canResume: boolean;
94
+ canCancel: boolean;
95
+ wasRunning: boolean;
96
+ backupPath: string | null;
97
+ updateId: string;
98
+ version: string;
99
+ buildId: string;
100
+ workDir: string;
101
+ };
102
+ export declare function updateStopRequested(j: UpdateJournal): boolean;
103
+ export declare function requestUpdateStop(stateDir: string): void;
104
+ export declare function requestUpdateRestore(stateDir: string): void;
105
+ export declare function launchDesktopUpdate(stateDir: string, retry?: boolean): Promise<void>;
106
+ export declare function pauseUpdateRecovery(stateDir: string, id: string, detail: string): void;
107
+ /** A SQLite OS lock releases on updater death. Each irreversible step has a
108
+ * preceding durable intent; recovery determines the actual side by hashes. */
109
+ export declare function runDesktopUpdate(stateDir: string, hooks?: UpdateHooks): Promise<void>;
110
+ export {};