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,118 @@
1
+ /**
2
+ * What is waiting on a person.
3
+ *
4
+ * A pull request is where agent work stops being reversible, so it is where the
5
+ * operator's attention actually has to land. The question this module answers is
6
+ * not "what pull requests exist" but "which of these is waiting on me, and for
7
+ * how long has it been waiting" — the case that motivated it was two finished,
8
+ * green, unflagged pull requests that sat open for two months because nothing
9
+ * ever said so.
10
+ *
11
+ * Three rules shape the classification.
12
+ *
13
+ * Absence of a verdict is not a negative verdict. GitHub computes mergeability
14
+ * lazily, so `UNKNOWN` means not yet computed and must never be reported as a
15
+ * conflict. Likewise an empty check rollup means no checks are configured, not
16
+ * that checks passed.
17
+ *
18
+ * A failure outranks work still in progress. If one check has failed while
19
+ * others are queued, the failure is already actionable and saying "running"
20
+ * would defer a decision that can be made now.
21
+ *
22
+ * Nothing here reaches the network or the filesystem except `readPulls`, so the
23
+ * part worth testing needs no fixture repository and no GitHub account.
24
+ */
25
+ import { type ExecResult, type RunOptions } from "./exec.js";
26
+ /** Whose move it is. `none` means nobody is blocked — the author is still writing. */
27
+ export type Attention = "human" | "agent" | "machine" | "none";
28
+ export type ChecksState = "passing" | "failing" | "running" | "none";
29
+ export type Mergeable = "MERGEABLE" | "CONFLICTING" | "UNKNOWN";
30
+ export type Pull = {
31
+ number: number;
32
+ title: string;
33
+ branch: string;
34
+ url: string;
35
+ isDraft: boolean;
36
+ /** UNKNOWN means GitHub has not computed it yet, not that it conflicts. */
37
+ mergeable: Mergeable;
38
+ checks: ChecksState;
39
+ createdAt: string;
40
+ updatedAt: string;
41
+ };
42
+ export type PullsRead = {
43
+ pulls: Pull[];
44
+ /** What could not be read, in words. Never silently dropped. */
45
+ problems: string[];
46
+ };
47
+ export type Runner = (file: string, args: readonly string[], options?: RunOptions) => Promise<ExecResult>;
48
+ export type ReadPullsOptions = {
49
+ runner?: Runner;
50
+ limit?: number;
51
+ /** Overridden when a caller is spending a shared budget; see `remote.ts`. */
52
+ timeoutMs?: number;
53
+ };
54
+ /** A pull request read crosses the network, so it gets a network-sized bound. */
55
+ export declare const PULL_TIMEOUT_MS = 20000;
56
+ /**
57
+ * Enough to cover a backlog without paginating. A repository with more open
58
+ * pull requests than this has a problem no report is going to solve.
59
+ */
60
+ export declare const DEFAULT_PULL_LIMIT = 50;
61
+ /**
62
+ * Long enough that a busy person is not nagged about this morning's work, short
63
+ * enough to catch the case above. A four-day content routine clears this only
64
+ * when nobody looked at the previous run.
65
+ */
66
+ export declare const DEFAULT_STALE_DAYS = 3;
67
+ /**
68
+ * The convention this repository's reviewers already use to send a draft back.
69
+ * Callers override it; it is a default, not a rule imposed on anyone.
70
+ */
71
+ export declare const DEFAULT_REVISION_MARKERS: readonly ["[NEEDS REVISION]"];
72
+ /**
73
+ * Open pull requests for the repository at `path`.
74
+ *
75
+ * Failure comes back as a problem rather than an exception, for the same reason
76
+ * discovery never throws: a repository with no GitHub remote, or an operator who
77
+ * has not logged in, must not end a report covering everything else.
78
+ */
79
+ export declare function readPulls(path: string, options?: ReadPullsOptions): Promise<PullsRead>;
80
+ /**
81
+ * Parse `gh pr list --json`. Returns null when the payload is not the array it
82
+ * should be; individual records of the wrong shape are dropped rather than
83
+ * trusted, because this is another program's output and not our own.
84
+ */
85
+ export declare function parsePulls(json: string): Pull[] | null;
86
+ /**
87
+ * Collapse the check rollup to one state.
88
+ *
89
+ * An empty rollup is `none`, not `passing`: a repository with no CI has not
90
+ * told us anything, and treating silence as approval is how a broken change
91
+ * gets reported as ready. SKIPPED is likewise not a failure — a job whose `if`
92
+ * guard excluded it did exactly what it was written to do.
93
+ */
94
+ export declare function summarizeChecks(rollup: unknown): ChecksState;
95
+ /**
96
+ * Whose move it is.
97
+ *
98
+ * Note the two that look alike and are not. A pull request sent back with a
99
+ * revision marker is waiting on the agent, because a person already looked and
100
+ * said what they wanted. One that is simply green and open is waiting on a
101
+ * person, because nobody has looked at all.
102
+ */
103
+ export declare function classify(pull: Pull, markers?: readonly string[]): Attention;
104
+ export declare function isFlagged(pull: Pull, markers?: readonly string[]): boolean;
105
+ /**
106
+ * Why it is waiting, in the words the operator would use. Kept beside
107
+ * `classify` so a new state cannot be added to one without the other.
108
+ */
109
+ export declare function describe(pull: Pull, markers?: readonly string[]): string;
110
+ /**
111
+ * Idle days, measured from the last time anything happened rather than from
112
+ * opening. A pull request being actively discussed is not stalled however old
113
+ * it is. Null when the timestamp could not be read, which is absence of data
114
+ * and not evidence of freshness.
115
+ */
116
+ export declare function idleDays(pull: Pull, now: Date): number | null;
117
+ /** Waiting on someone, and has been for longer than they would have chosen. */
118
+ export declare function isStalled(pull: Pull, now: Date, staleDays?: number, markers?: readonly string[]): boolean;
package/dist/pulls.js ADDED
@@ -0,0 +1,240 @@
1
+ /**
2
+ * What is waiting on a person.
3
+ *
4
+ * A pull request is where agent work stops being reversible, so it is where the
5
+ * operator's attention actually has to land. The question this module answers is
6
+ * not "what pull requests exist" but "which of these is waiting on me, and for
7
+ * how long has it been waiting" — the case that motivated it was two finished,
8
+ * green, unflagged pull requests that sat open for two months because nothing
9
+ * ever said so.
10
+ *
11
+ * Three rules shape the classification.
12
+ *
13
+ * Absence of a verdict is not a negative verdict. GitHub computes mergeability
14
+ * lazily, so `UNKNOWN` means not yet computed and must never be reported as a
15
+ * conflict. Likewise an empty check rollup means no checks are configured, not
16
+ * that checks passed.
17
+ *
18
+ * A failure outranks work still in progress. If one check has failed while
19
+ * others are queued, the failure is already actionable and saying "running"
20
+ * would defer a decision that can be made now.
21
+ *
22
+ * Nothing here reaches the network or the filesystem except `readPulls`, so the
23
+ * part worth testing needs no fixture repository and no GitHub account.
24
+ */
25
+ import { run } from "./exec.js";
26
+ const GH = "gh";
27
+ /** A pull request read crosses the network, so it gets a network-sized bound. */
28
+ export const PULL_TIMEOUT_MS = 20_000;
29
+ /**
30
+ * Enough to cover a backlog without paginating. A repository with more open
31
+ * pull requests than this has a problem no report is going to solve.
32
+ */
33
+ export const DEFAULT_PULL_LIMIT = 50;
34
+ /**
35
+ * Long enough that a busy person is not nagged about this morning's work, short
36
+ * enough to catch the case above. A four-day content routine clears this only
37
+ * when nobody looked at the previous run.
38
+ */
39
+ export const DEFAULT_STALE_DAYS = 3;
40
+ /**
41
+ * The convention this repository's reviewers already use to send a draft back.
42
+ * Callers override it; it is a default, not a rule imposed on anyone.
43
+ */
44
+ export const DEFAULT_REVISION_MARKERS = ["[NEEDS REVISION]"];
45
+ const FIELDS = [
46
+ "number",
47
+ "title",
48
+ "headRefName",
49
+ "url",
50
+ "isDraft",
51
+ "mergeable",
52
+ "createdAt",
53
+ "updatedAt",
54
+ "statusCheckRollup",
55
+ ].join(",");
56
+ /** Conclusions that mean the check finished and did not succeed. */
57
+ const FAILED = new Set([
58
+ "FAILURE",
59
+ "ERROR",
60
+ "TIMED_OUT",
61
+ "ACTION_REQUIRED",
62
+ "STARTUP_FAILURE",
63
+ "CANCELLED",
64
+ ]);
65
+ /** Not-yet-finished states, spelled differently by check runs and status contexts. */
66
+ const PENDING = new Set(["QUEUED", "IN_PROGRESS", "WAITING", "PENDING", "REQUESTED"]);
67
+ const MS_PER_DAY = 86_400_000;
68
+ /**
69
+ * Open pull requests for the repository at `path`.
70
+ *
71
+ * Failure comes back as a problem rather than an exception, for the same reason
72
+ * discovery never throws: a repository with no GitHub remote, or an operator who
73
+ * has not logged in, must not end a report covering everything else.
74
+ */
75
+ export async function readPulls(path, options = {}) {
76
+ const { runner = run, limit = DEFAULT_PULL_LIMIT, timeoutMs = PULL_TIMEOUT_MS } = options;
77
+ const result = await runner(GH, ["pr", "list", "--state", "open", "--limit", String(limit), "--json", FIELDS], { cwd: path, timeoutMs });
78
+ if (result.notFound) {
79
+ return { pulls: [], problems: ["gh is not installed — pull requests were not read"] };
80
+ }
81
+ if (result.timedOut) {
82
+ return { pulls: [], problems: ["could not read pull requests: timed out"] };
83
+ }
84
+ if (result.code !== 0) {
85
+ return { pulls: [], problems: [`could not read pull requests: ${firstLine(result.stderr)}`] };
86
+ }
87
+ const parsed = parsePulls(result.stdout);
88
+ if (parsed === null) {
89
+ return {
90
+ pulls: [],
91
+ problems: ["could not read pull requests: gh returned something unreadable"],
92
+ };
93
+ }
94
+ return { pulls: parsed, problems: [] };
95
+ }
96
+ /**
97
+ * Parse `gh pr list --json`. Returns null when the payload is not the array it
98
+ * should be; individual records of the wrong shape are dropped rather than
99
+ * trusted, because this is another program's output and not our own.
100
+ */
101
+ export function parsePulls(json) {
102
+ let parsed;
103
+ try {
104
+ parsed = JSON.parse(json);
105
+ }
106
+ catch {
107
+ return null;
108
+ }
109
+ if (!Array.isArray(parsed))
110
+ return null;
111
+ return parsed.map(readPull).filter((pull) => pull !== null);
112
+ }
113
+ function readPull(record) {
114
+ if (typeof record !== "object" || record === null)
115
+ return null;
116
+ const raw = record;
117
+ const number = raw["number"];
118
+ if (typeof number !== "number")
119
+ return null;
120
+ return {
121
+ number,
122
+ title: readString(raw["title"]),
123
+ branch: readString(raw["headRefName"]),
124
+ url: readString(raw["url"]),
125
+ isDraft: raw["isDraft"] === true,
126
+ mergeable: readMergeable(raw["mergeable"]),
127
+ checks: summarizeChecks(raw["statusCheckRollup"]),
128
+ createdAt: readString(raw["createdAt"]),
129
+ updatedAt: readString(raw["updatedAt"]),
130
+ };
131
+ }
132
+ function readString(value) {
133
+ return typeof value === "string" ? value : "";
134
+ }
135
+ function readMergeable(value) {
136
+ if (value === "MERGEABLE" || value === "CONFLICTING")
137
+ return value;
138
+ return "UNKNOWN";
139
+ }
140
+ /**
141
+ * Collapse the check rollup to one state.
142
+ *
143
+ * An empty rollup is `none`, not `passing`: a repository with no CI has not
144
+ * told us anything, and treating silence as approval is how a broken change
145
+ * gets reported as ready. SKIPPED is likewise not a failure — a job whose `if`
146
+ * guard excluded it did exactly what it was written to do.
147
+ */
148
+ export function summarizeChecks(rollup) {
149
+ if (!Array.isArray(rollup) || rollup.length === 0)
150
+ return "none";
151
+ const states = rollup.map(readCheckState);
152
+ if (states.includes("failing"))
153
+ return "failing";
154
+ if (states.includes("running"))
155
+ return "running";
156
+ return "passing";
157
+ }
158
+ function readCheckState(entry) {
159
+ if (typeof entry !== "object" || entry === null)
160
+ return "none";
161
+ const raw = entry;
162
+ // Check runs report `status` then `conclusion`; status contexts report `state`.
163
+ const status = readString(raw["status"]);
164
+ const conclusion = readString(raw["conclusion"]);
165
+ const state = readString(raw["state"]);
166
+ if (PENDING.has(status) || PENDING.has(state))
167
+ return "running";
168
+ if (FAILED.has(conclusion) || FAILED.has(state))
169
+ return "failing";
170
+ return "passing";
171
+ }
172
+ /**
173
+ * Whose move it is.
174
+ *
175
+ * Note the two that look alike and are not. A pull request sent back with a
176
+ * revision marker is waiting on the agent, because a person already looked and
177
+ * said what they wanted. One that is simply green and open is waiting on a
178
+ * person, because nobody has looked at all.
179
+ */
180
+ export function classify(pull, markers = DEFAULT_REVISION_MARKERS) {
181
+ if (pull.isDraft)
182
+ return "none";
183
+ if (isFlagged(pull, markers))
184
+ return "agent";
185
+ if (pull.mergeable === "CONFLICTING")
186
+ return "agent";
187
+ if (pull.checks === "failing")
188
+ return "agent";
189
+ if (pull.checks === "running")
190
+ return "machine";
191
+ return "human";
192
+ }
193
+ export function isFlagged(pull, markers = DEFAULT_REVISION_MARKERS) {
194
+ const title = pull.title.toUpperCase();
195
+ return markers.some(marker => title.includes(marker.toUpperCase()));
196
+ }
197
+ /**
198
+ * Why it is waiting, in the words the operator would use. Kept beside
199
+ * `classify` so a new state cannot be added to one without the other.
200
+ */
201
+ export function describe(pull, markers = DEFAULT_REVISION_MARKERS) {
202
+ if (pull.isDraft)
203
+ return "still a draft";
204
+ if (isFlagged(pull, markers))
205
+ return "sent back for revision";
206
+ if (pull.mergeable === "CONFLICTING")
207
+ return "conflicts with the base branch";
208
+ if (pull.checks === "failing")
209
+ return "checks failing";
210
+ if (pull.checks === "running")
211
+ return "checks still running";
212
+ if (pull.checks === "none")
213
+ return "ready, no checks configured";
214
+ return "ready to merge";
215
+ }
216
+ /**
217
+ * Idle days, measured from the last time anything happened rather than from
218
+ * opening. A pull request being actively discussed is not stalled however old
219
+ * it is. Null when the timestamp could not be read, which is absence of data
220
+ * and not evidence of freshness.
221
+ */
222
+ export function idleDays(pull, now) {
223
+ const updated = Date.parse(pull.updatedAt);
224
+ if (Number.isNaN(updated))
225
+ return null;
226
+ return Math.max(0, (now.getTime() - updated) / MS_PER_DAY);
227
+ }
228
+ /** Waiting on someone, and has been for longer than they would have chosen. */
229
+ export function isStalled(pull, now, staleDays = DEFAULT_STALE_DAYS, markers = DEFAULT_REVISION_MARKERS) {
230
+ const attention = classify(pull, markers);
231
+ // Nobody is blocked on a draft, and a machine that is still working is not late.
232
+ if (attention === "none" || attention === "machine")
233
+ return false;
234
+ const idle = idleDays(pull, now);
235
+ return idle !== null && idle >= staleDays;
236
+ }
237
+ function firstLine(text) {
238
+ const [line = ""] = text.trim().split("\n");
239
+ return line;
240
+ }
package/dist/push.d.ts ADDED
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Web push, zero-dependency (arc 3).
3
+ *
4
+ * Three layers, kept apart: CRYPTO (RFC 8291 aes128gcm message encryption
5
+ * and RFC 8292 VAPID authorization, byte-exact, node:crypto only),
6
+ * TRANSPORT (one hardened fetch to an allow-listed push service), and the
7
+ * PASS (claim pairs from the store's ledger, fence, send, settle by the
8
+ * full outcome table). The payload that transits Apple's and Google's
9
+ * servers is a fixed phrase keyed on the notification's CLASS plus a
10
+ * machine-minted console path. Check progress may also send one validated
11
+ * suite/count line; task titles, branches and repository names stay local.
12
+ *
13
+ * 'accepted' means the push service took the message (RFC 8030). Nothing
14
+ * here ever claims a phone displayed anything, and delivery is
15
+ * AT-LEAST-ONCE: a crash between acceptance and settlement re-sends after
16
+ * the pair's lease expires (the payload's tag collapses the duplicate on
17
+ * the lock screen).
18
+ */
19
+ import { createECDH } from "node:crypto";
20
+ import type { Notification, Store } from "./store.js";
21
+ export declare const VAPID_FILE = "vapid-keys.json";
22
+ /** The plaintext ceiling that keeps one record inside rs (RFC 8291 §4). */
23
+ export declare const PLAINTEXT_CEILING = 3993;
24
+ /** The pair lease strictly exceeds the request timeout (finding 12). */
25
+ export declare const PUSH_CLAIM_TTL_MS = 30000;
26
+ export type VapidKeys = {
27
+ /** 65-byte uncompressed P-256 point, base64url. */
28
+ publicKey: string;
29
+ /** 32-byte scalar, base64url. */
30
+ privateKey: string;
31
+ fingerprint: string;
32
+ };
33
+ export declare function vapidFingerprint(publicKey: string): string;
34
+ /**
35
+ * Mint-or-load, atomically across processes (finding 29): exclusive
36
+ * creation; the loser of a race re-reads the winner's file; and a loaded
37
+ * pair is VALIDATED — the stored public key must derive from the stored
38
+ * private key, or the file is refused rather than trusted.
39
+ */
40
+ export declare function loadOrCreateVapidKeys(dir: string): VapidKeys;
41
+ /**
42
+ * The deterministic core, exported for the Appendix A vector test: given
43
+ * the subscriber's materials, an application-server ECDH object, and a
44
+ * salt, produce the complete aes128gcm body — header || ciphertext.
45
+ */
46
+ export declare function encryptWithMaterials(uaPublic: Buffer, authSecret: Buffer, asKeys: ReturnType<typeof createECDH>, salt: Buffer, plaintext: Buffer): Buffer;
47
+ /** The production wrapper: fresh ephemeral keys and a fresh salt per message. */
48
+ export declare function encryptPushPayload(p256dh: string, auth: string, plaintext: string): Buffer;
49
+ /**
50
+ * The VAPID authorization header: an ES256 JWT over { aud, exp, sub? },
51
+ * signed with the STABLE server key (distinct from every message's
52
+ * ephemeral key), in JWS P1363 form — never DER (finding 4).
53
+ */
54
+ export declare function vapidAuthorization(endpoint: string, keys: VapidKeys, now: Date, contact?: string): string;
55
+ export declare function validatePushEndpoint(raw: string): {
56
+ ok: true;
57
+ url: URL;
58
+ } | {
59
+ ok: false;
60
+ problem: string;
61
+ };
62
+ /** Fixed words, except for one validated machine-only suite/count line. */
63
+ export declare const PUSH_WORDS: Record<NonNullable<Notification["pushClass"]>, {
64
+ title: string;
65
+ body: string;
66
+ }>;
67
+ /** Static words and machine-minted numbers only — re-proved at send time. */
68
+ export declare function safePushLink(pushClass: NonNullable<Notification["pushClass"]>, link: string | null): string;
69
+ export declare function buildPushPayload(notification: Notification, waiting?: number | null): string;
70
+ export type PushFetch = (url: string, init: Record<string, unknown>) => Promise<{
71
+ status: number;
72
+ headers: {
73
+ get(name: string): string | null;
74
+ };
75
+ }>;
76
+ export type PushPassReport = {
77
+ seeded: number;
78
+ accepted: number;
79
+ rescheduled: number;
80
+ rejected: number;
81
+ retired: number;
82
+ credentialProblem: boolean;
83
+ };
84
+ /**
85
+ * One pass: seed, claim, and for each pair — renew, fence, encrypt, send,
86
+ * settle by the outcome table. Every settle is conditional on the claim's
87
+ * owner AND generation; a lapsed claim writes nothing.
88
+ */
89
+ export declare function pushPass(store: Store, options: {
90
+ configDir: string;
91
+ fetchImpl?: PushFetch;
92
+ clock?: () => Date;
93
+ owner?: string;
94
+ contact?: string;
95
+ }): Promise<PushPassReport>;