@cello-protocol/daemon 0.0.227 → 0.0.229

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 (895) hide show
  1. package/dist/agent-admin-handlers.d.ts +56 -0
  2. package/dist/agent-admin-handlers.d.ts.map +1 -0
  3. package/dist/agent-admin-handlers.js +73 -0
  4. package/dist/agent-admin-handlers.js.map +1 -0
  5. package/dist/agent-handlers.d.ts +72 -0
  6. package/dist/agent-handlers.d.ts.map +1 -0
  7. package/dist/agent-handlers.js +604 -0
  8. package/dist/agent-handlers.js.map +1 -0
  9. package/dist/agent-id-migration.d.ts +70 -0
  10. package/dist/agent-id-migration.d.ts.map +1 -0
  11. package/dist/agent-id-migration.js +468 -0
  12. package/dist/agent-id-migration.js.map +1 -0
  13. package/dist/agent-loader.d.ts +37 -0
  14. package/dist/agent-loader.d.ts.map +1 -0
  15. package/dist/agent-loader.js +37 -0
  16. package/dist/agent-loader.js.map +1 -0
  17. package/dist/agent-selection-root.d.ts +29 -0
  18. package/dist/agent-selection-root.d.ts.map +1 -0
  19. package/dist/agent-selection-root.js +126 -0
  20. package/dist/agent-selection-root.js.map +1 -0
  21. package/dist/agent-selection.d.ts +73 -0
  22. package/dist/agent-selection.d.ts.map +1 -0
  23. package/dist/agent-selection.js +80 -0
  24. package/dist/agent-selection.js.map +1 -0
  25. package/dist/agent-settings-keys.d.ts +52 -0
  26. package/dist/agent-settings-keys.d.ts.map +1 -0
  27. package/dist/agent-settings-keys.js +114 -0
  28. package/dist/agent-settings-keys.js.map +1 -0
  29. package/dist/agent-state.d.ts +67 -0
  30. package/dist/agent-state.d.ts.map +1 -0
  31. package/dist/agent-state.js +66 -0
  32. package/dist/agent-state.js.map +1 -0
  33. package/dist/assignment-verify.d.ts +90 -0
  34. package/dist/assignment-verify.d.ts.map +1 -0
  35. package/dist/assignment-verify.js +301 -0
  36. package/dist/assignment-verify.js.map +1 -0
  37. package/dist/attendance-wiring.d.ts +23 -0
  38. package/dist/attendance-wiring.d.ts.map +1 -0
  39. package/dist/attendance-wiring.js +248 -0
  40. package/dist/attendance-wiring.js.map +1 -0
  41. package/dist/attestation-body.d.ts +47 -0
  42. package/dist/attestation-body.d.ts.map +1 -0
  43. package/dist/attestation-body.js +71 -0
  44. package/dist/attestation-body.js.map +1 -0
  45. package/dist/authorship-verification.d.ts +91 -0
  46. package/dist/authorship-verification.d.ts.map +1 -0
  47. package/dist/authorship-verification.js +532 -0
  48. package/dist/authorship-verification.js.map +1 -0
  49. package/dist/away-detection.d.ts +139 -0
  50. package/dist/away-detection.d.ts.map +1 -0
  51. package/dist/away-detection.js +186 -0
  52. package/dist/away-detection.js.map +1 -0
  53. package/dist/away-inbox-oneshot.d.ts +40 -0
  54. package/dist/away-inbox-oneshot.d.ts.map +1 -0
  55. package/dist/away-inbox-oneshot.js +311 -0
  56. package/dist/away-inbox-oneshot.js.map +1 -0
  57. package/dist/backup-restore-handlers.d.ts +10 -0
  58. package/dist/backup-restore-handlers.d.ts.map +1 -0
  59. package/dist/backup-restore-handlers.js +82 -0
  60. package/dist/backup-restore-handlers.js.map +1 -0
  61. package/dist/backup-restore.d.ts +102 -0
  62. package/dist/backup-restore.d.ts.map +1 -0
  63. package/dist/backup-restore.js +341 -0
  64. package/dist/backup-restore.js.map +1 -0
  65. package/dist/bin/cello-daemon.d.ts +13 -0
  66. package/dist/bin/cello-daemon.d.ts.map +1 -0
  67. package/dist/bin/cello-daemon.js.map +1 -0
  68. package/dist/boot-agents.d.ts +64 -0
  69. package/dist/boot-agents.d.ts.map +1 -0
  70. package/dist/boot-agents.js +241 -0
  71. package/dist/boot-agents.js.map +1 -0
  72. package/dist/boot-connection-state.d.ts +38 -0
  73. package/dist/boot-connection-state.d.ts.map +1 -0
  74. package/dist/boot-connection-state.js +95 -0
  75. package/dist/boot-connection-state.js.map +1 -0
  76. package/dist/boot-core.d.ts +36 -0
  77. package/dist/boot-core.d.ts.map +1 -0
  78. package/dist/boot-core.js +293 -0
  79. package/dist/boot-core.js.map +1 -0
  80. package/dist/boot-parked-content.d.ts +34 -0
  81. package/dist/boot-parked-content.d.ts.map +1 -0
  82. package/dist/boot-parked-content.js +528 -0
  83. package/dist/boot-parked-content.js.map +1 -0
  84. package/dist/boot-sweeps.d.ts +22 -0
  85. package/dist/boot-sweeps.d.ts.map +1 -0
  86. package/dist/boot-sweeps.js +51 -0
  87. package/dist/boot-sweeps.js.map +1 -0
  88. package/dist/bundled-consortium-manifest.d.ts +47 -0
  89. package/dist/bundled-consortium-manifest.d.ts.map +1 -0
  90. package/dist/bundled-consortium-manifest.js +116 -0
  91. package/dist/bundled-consortium-manifest.js.map +1 -0
  92. package/dist/cbor-blob-migration.d.ts +8 -0
  93. package/dist/cbor-blob-migration.d.ts.map +1 -0
  94. package/dist/cbor-blob-migration.js +116 -0
  95. package/dist/cbor-blob-migration.js.map +1 -0
  96. package/dist/challenge-verifier.d.ts +12 -0
  97. package/dist/challenge-verifier.d.ts.map +1 -0
  98. package/dist/challenge-verifier.js +11 -0
  99. package/dist/challenge-verifier.js.map +1 -0
  100. package/dist/channel-log-store.d.ts +80 -0
  101. package/dist/channel-log-store.d.ts.map +1 -0
  102. package/dist/channel-log-store.js +290 -0
  103. package/dist/channel-log-store.js.map +1 -0
  104. package/dist/close-commitment.d.ts +67 -0
  105. package/dist/close-commitment.d.ts.map +1 -0
  106. package/dist/close-commitment.js +78 -0
  107. package/dist/close-commitment.js.map +1 -0
  108. package/dist/close-session-handler.d.ts +94 -0
  109. package/dist/close-session-handler.d.ts.map +1 -0
  110. package/dist/close-session-handler.js +1418 -0
  111. package/dist/close-session-handler.js.map +1 -0
  112. package/dist/co-attendance.d.ts +29 -0
  113. package/dist/co-attendance.d.ts.map +1 -0
  114. package/dist/co-attendance.js +32 -0
  115. package/dist/co-attendance.js.map +1 -0
  116. package/dist/column-birth.d.ts +40 -0
  117. package/dist/column-birth.d.ts.map +1 -0
  118. package/dist/column-birth.js +61 -0
  119. package/dist/column-birth.js.map +1 -0
  120. package/dist/connect-or-start.d.ts +25 -0
  121. package/dist/connect-or-start.d.ts.map +1 -0
  122. package/dist/connect-or-start.js +175 -0
  123. package/dist/connect-or-start.js.map +1 -0
  124. package/dist/connection-agents.d.ts +16 -0
  125. package/dist/connection-agents.d.ts.map +1 -0
  126. package/dist/connection-agents.js +68 -0
  127. package/dist/connection-agents.js.map +1 -0
  128. package/dist/consent-migration.d.ts +49 -0
  129. package/dist/consent-migration.d.ts.map +1 -0
  130. package/dist/consent-migration.js +128 -0
  131. package/dist/consent-migration.js.map +1 -0
  132. package/dist/consortium-bootstrap.d.ts +138 -0
  133. package/dist/consortium-bootstrap.d.ts.map +1 -0
  134. package/dist/consortium-bootstrap.js +339 -0
  135. package/dist/consortium-bootstrap.js.map +1 -0
  136. package/dist/consortium-fingerprint.d.ts +115 -0
  137. package/dist/consortium-fingerprint.d.ts.map +1 -0
  138. package/dist/consortium-fingerprint.js +175 -0
  139. package/dist/consortium-fingerprint.js.map +1 -0
  140. package/dist/contact-handlers.d.ts +59 -0
  141. package/dist/contact-handlers.d.ts.map +1 -0
  142. package/dist/contact-handlers.js +343 -0
  143. package/dist/contact-handlers.js.map +1 -0
  144. package/dist/contact-pubkey-case.d.ts +65 -0
  145. package/dist/contact-pubkey-case.d.ts.map +1 -0
  146. package/dist/contact-pubkey-case.js +136 -0
  147. package/dist/contact-pubkey-case.js.map +1 -0
  148. package/dist/contacts-tier-migration.d.ts +90 -0
  149. package/dist/contacts-tier-migration.d.ts.map +1 -0
  150. package/dist/contacts-tier-migration.js +150 -0
  151. package/dist/contacts-tier-migration.js.map +1 -0
  152. package/dist/content-encryption-status.d.ts +111 -0
  153. package/dist/content-encryption-status.d.ts.map +1 -0
  154. package/dist/content-encryption-status.js +158 -0
  155. package/dist/content-encryption-status.js.map +1 -0
  156. package/dist/content-park-client.d.ts +90 -0
  157. package/dist/content-park-client.d.ts.map +1 -0
  158. package/dist/content-park-client.js +362 -0
  159. package/dist/content-park-client.js.map +1 -0
  160. package/dist/content-park.d.ts +52 -0
  161. package/dist/content-park.d.ts.map +1 -0
  162. package/dist/content-park.js +1309 -0
  163. package/dist/content-park.js.map +1 -0
  164. package/dist/cross-node-negotiation.d.ts +44 -0
  165. package/dist/cross-node-negotiation.d.ts.map +1 -0
  166. package/dist/cross-node-negotiation.js +34 -0
  167. package/dist/cross-node-negotiation.js.map +1 -0
  168. package/dist/daemon-handle.d.ts +57 -0
  169. package/dist/daemon-handle.d.ts.map +1 -0
  170. package/dist/daemon-handle.js +2 -0
  171. package/dist/daemon-handle.js.map +1 -0
  172. package/dist/daemon-status-report.d.ts +50 -0
  173. package/dist/daemon-status-report.d.ts.map +1 -0
  174. package/dist/daemon-status-report.js +81 -0
  175. package/dist/daemon-status-report.js.map +1 -0
  176. package/dist/daemon.d.ts +45 -0
  177. package/dist/daemon.d.ts.map +1 -0
  178. package/dist/daemon.js +1177 -0
  179. package/dist/daemon.js.map +1 -0
  180. package/dist/db-identity-store.d.ts +159 -0
  181. package/dist/db-identity-store.d.ts.map +1 -0
  182. package/dist/db-identity-store.js +502 -0
  183. package/dist/db-identity-store.js.map +1 -0
  184. package/dist/delivery-open-registry.d.ts +92 -0
  185. package/dist/delivery-open-registry.d.ts.map +1 -0
  186. package/dist/delivery-open-registry.js +121 -0
  187. package/dist/delivery-open-registry.js.map +1 -0
  188. package/dist/delivery-session-suspects.d.ts +56 -0
  189. package/dist/delivery-session-suspects.d.ts.map +1 -0
  190. package/dist/delivery-session-suspects.js +94 -0
  191. package/dist/delivery-session-suspects.js.map +1 -0
  192. package/dist/directory-auth-posture.d.ts +87 -0
  193. package/dist/directory-auth-posture.d.ts.map +1 -0
  194. package/dist/directory-auth-posture.js +134 -0
  195. package/dist/directory-auth-posture.js.map +1 -0
  196. package/dist/directory-bootstrap.d.ts +310 -0
  197. package/dist/directory-bootstrap.d.ts.map +1 -0
  198. package/dist/directory-bootstrap.js +557 -0
  199. package/dist/directory-bootstrap.js.map +1 -0
  200. package/dist/directory-connect.d.ts +27 -0
  201. package/dist/directory-connect.d.ts.map +1 -0
  202. package/dist/directory-connect.js +106 -0
  203. package/dist/directory-connect.js.map +1 -0
  204. package/dist/disconnect-cleanup.d.ts +51 -0
  205. package/dist/disconnect-cleanup.d.ts.map +1 -0
  206. package/dist/disconnect-cleanup.js +72 -0
  207. package/dist/disconnect-cleanup.js.map +1 -0
  208. package/dist/document-amendment-store.d.ts +120 -0
  209. package/dist/document-amendment-store.d.ts.map +1 -0
  210. package/dist/document-amendment-store.js +266 -0
  211. package/dist/document-amendment-store.js.map +1 -0
  212. package/dist/document-delivery-transport.d.ts +168 -0
  213. package/dist/document-delivery-transport.d.ts.map +1 -0
  214. package/dist/document-delivery-transport.js +206 -0
  215. package/dist/document-delivery-transport.js.map +1 -0
  216. package/dist/document-engine.d.ts +134 -0
  217. package/dist/document-engine.d.ts.map +1 -0
  218. package/dist/document-engine.js +282 -0
  219. package/dist/document-engine.js.map +1 -0
  220. package/dist/document-flag.d.ts +58 -0
  221. package/dist/document-flag.d.ts.map +1 -0
  222. package/dist/document-flag.js +70 -0
  223. package/dist/document-flag.js.map +1 -0
  224. package/dist/document-frame-router.d.ts +245 -0
  225. package/dist/document-frame-router.d.ts.map +1 -0
  226. package/dist/document-frame-router.js +397 -0
  227. package/dist/document-frame-router.js.map +1 -0
  228. package/dist/document-gate-wiring.d.ts +61 -0
  229. package/dist/document-gate-wiring.d.ts.map +1 -0
  230. package/dist/document-gate-wiring.js +125 -0
  231. package/dist/document-gate-wiring.js.map +1 -0
  232. package/dist/document-gate.d.ts +149 -0
  233. package/dist/document-gate.d.ts.map +1 -0
  234. package/dist/document-gate.js +509 -0
  235. package/dist/document-gate.js.map +1 -0
  236. package/dist/document-handlers.d.ts +47 -0
  237. package/dist/document-handlers.d.ts.map +1 -0
  238. package/dist/document-handlers.js +2203 -0
  239. package/dist/document-handlers.js.map +1 -0
  240. package/dist/document-handshake.d.ts +176 -0
  241. package/dist/document-handshake.d.ts.map +1 -0
  242. package/dist/document-handshake.js +452 -0
  243. package/dist/document-handshake.js.map +1 -0
  244. package/dist/document-inbound.d.ts +162 -0
  245. package/dist/document-inbound.d.ts.map +1 -0
  246. package/dist/document-inbound.js +530 -0
  247. package/dist/document-inbound.js.map +1 -0
  248. package/dist/document-json.d.ts +120 -0
  249. package/dist/document-json.d.ts.map +1 -0
  250. package/dist/document-json.js +191 -0
  251. package/dist/document-json.js.map +1 -0
  252. package/dist/document-layer.d.ts +215 -0
  253. package/dist/document-layer.d.ts.map +1 -0
  254. package/dist/document-layer.js +1025 -0
  255. package/dist/document-layer.js.map +1 -0
  256. package/dist/document-lifecycle.d.ts +52 -0
  257. package/dist/document-lifecycle.d.ts.map +1 -0
  258. package/dist/document-lifecycle.js +134 -0
  259. package/dist/document-lifecycle.js.map +1 -0
  260. package/dist/document-live-docs.d.ts +58 -0
  261. package/dist/document-live-docs.d.ts.map +1 -0
  262. package/dist/document-live-docs.js +126 -0
  263. package/dist/document-live-docs.js.map +1 -0
  264. package/dist/document-notify.d.ts +228 -0
  265. package/dist/document-notify.d.ts.map +1 -0
  266. package/dist/document-notify.js +580 -0
  267. package/dist/document-notify.js.map +1 -0
  268. package/dist/document-profile.d.ts +61 -0
  269. package/dist/document-profile.d.ts.map +1 -0
  270. package/dist/document-profile.js +112 -0
  271. package/dist/document-profile.js.map +1 -0
  272. package/dist/document-publish.d.ts +87 -0
  273. package/dist/document-publish.d.ts.map +1 -0
  274. package/dist/document-publish.js +173 -0
  275. package/dist/document-publish.js.map +1 -0
  276. package/dist/document-reachability.d.ts +42 -0
  277. package/dist/document-reachability.d.ts.map +1 -0
  278. package/dist/document-reachability.js +80 -0
  279. package/dist/document-reachability.js.map +1 -0
  280. package/dist/document-reconcile-engine.d.ts +66 -0
  281. package/dist/document-reconcile-engine.d.ts.map +1 -0
  282. package/dist/document-reconcile-engine.js +225 -0
  283. package/dist/document-reconcile-engine.js.map +1 -0
  284. package/dist/document-reconcile-scheduler.d.ts +163 -0
  285. package/dist/document-reconcile-scheduler.d.ts.map +1 -0
  286. package/dist/document-reconcile-scheduler.js +303 -0
  287. package/dist/document-reconcile-scheduler.js.map +1 -0
  288. package/dist/document-rejection.d.ts +251 -0
  289. package/dist/document-rejection.d.ts.map +1 -0
  290. package/dist/document-rejection.js +435 -0
  291. package/dist/document-rejection.js.map +1 -0
  292. package/dist/document-screen.d.ts +114 -0
  293. package/dist/document-screen.d.ts.map +1 -0
  294. package/dist/document-screen.js +223 -0
  295. package/dist/document-screen.js.map +1 -0
  296. package/dist/document-store.d.ts +372 -0
  297. package/dist/document-store.d.ts.map +1 -0
  298. package/dist/document-store.js +931 -0
  299. package/dist/document-store.js.map +1 -0
  300. package/dist/document-surface.d.ts +32 -0
  301. package/dist/document-surface.d.ts.map +1 -0
  302. package/dist/document-surface.js +151 -0
  303. package/dist/document-surface.js.map +1 -0
  304. package/dist/document-types.d.ts +94 -0
  305. package/dist/document-types.d.ts.map +1 -0
  306. package/dist/document-types.js +90 -0
  307. package/dist/document-types.js.map +1 -0
  308. package/dist/document-watch.d.ts +69 -0
  309. package/dist/document-watch.d.ts.map +1 -0
  310. package/dist/document-watch.js +108 -0
  311. package/dist/document-watch.js.map +1 -0
  312. package/dist/document-wiring.d.ts +53 -0
  313. package/dist/document-wiring.d.ts.map +1 -0
  314. package/dist/document-wiring.js +323 -0
  315. package/dist/document-wiring.js.map +1 -0
  316. package/dist/document-write-guard.d.ts +66 -0
  317. package/dist/document-write-guard.d.ts.map +1 -0
  318. package/dist/document-write-guard.js +98 -0
  319. package/dist/document-write-guard.js.map +1 -0
  320. package/dist/document-write-path.d.ts +94 -0
  321. package/dist/document-write-path.d.ts.map +1 -0
  322. package/dist/document-write-path.js +530 -0
  323. package/dist/document-write-path.js.map +1 -0
  324. package/dist/error-message.d.ts +7 -0
  325. package/dist/error-message.d.ts.map +1 -0
  326. package/dist/error-message.js +19 -0
  327. package/dist/error-message.js.map +1 -0
  328. package/dist/file-manifest-provider.d.ts +37 -0
  329. package/dist/file-manifest-provider.d.ts.map +1 -0
  330. package/dist/file-manifest-provider.js +105 -0
  331. package/dist/file-manifest-provider.js.map +1 -0
  332. package/dist/frame-values.d.ts +3 -0
  333. package/dist/frame-values.d.ts.map +1 -0
  334. package/dist/frame-values.js +84 -0
  335. package/dist/frame-values.js.map +1 -0
  336. package/dist/frontier-mismatch.d.ts +73 -0
  337. package/dist/frontier-mismatch.d.ts.map +1 -0
  338. package/dist/frontier-mismatch.js +89 -0
  339. package/dist/frontier-mismatch.js.map +1 -0
  340. package/dist/gateway-config-handlers.d.ts +26 -0
  341. package/dist/gateway-config-handlers.d.ts.map +1 -0
  342. package/dist/gateway-config-handlers.js +454 -0
  343. package/dist/gateway-config-handlers.js.map +1 -0
  344. package/dist/held-content.d.ts +145 -0
  345. package/dist/held-content.d.ts.map +1 -0
  346. package/dist/held-content.js +389 -0
  347. package/dist/held-content.js.map +1 -0
  348. package/dist/http-manifest-poll.d.ts +67 -0
  349. package/dist/http-manifest-poll.d.ts.map +1 -0
  350. package/dist/http-manifest-poll.js +150 -0
  351. package/dist/http-manifest-poll.js.map +1 -0
  352. package/dist/identity-migration.d.ts +40 -0
  353. package/dist/identity-migration.d.ts.map +1 -0
  354. package/dist/identity-migration.js +461 -0
  355. package/dist/identity-migration.js.map +1 -0
  356. package/dist/inbound-refusals.d.ts +283 -0
  357. package/dist/inbound-refusals.d.ts.map +1 -0
  358. package/dist/inbound-refusals.js +919 -0
  359. package/dist/inbound-refusals.js.map +1 -0
  360. package/dist/inbound-seal-request.d.ts +32 -0
  361. package/dist/inbound-seal-request.d.ts.map +1 -0
  362. package/dist/inbound-seal-request.js +228 -0
  363. package/dist/inbound-seal-request.js.map +1 -0
  364. package/dist/inbound-sessions.d.ts +291 -0
  365. package/dist/inbound-sessions.d.ts.map +1 -0
  366. package/dist/inbound-sessions.js +1609 -0
  367. package/dist/inbound-sessions.js.map +1 -0
  368. package/dist/inclusion-proof-handlers.d.ts +43 -0
  369. package/dist/inclusion-proof-handlers.d.ts.map +1 -0
  370. package/dist/inclusion-proof-handlers.js +565 -0
  371. package/dist/inclusion-proof-handlers.js.map +1 -0
  372. package/dist/inclusion-proof.d.ts +151 -0
  373. package/dist/inclusion-proof.d.ts.map +1 -0
  374. package/dist/inclusion-proof.js +228 -0
  375. package/dist/inclusion-proof.js.map +1 -0
  376. package/dist/index.d.ts +32 -0
  377. package/dist/index.d.ts.map +1 -0
  378. package/dist/index.js.map +1 -0
  379. package/dist/initiate-session-handler.d.ts +55 -0
  380. package/dist/initiate-session-handler.d.ts.map +1 -0
  381. package/dist/initiate-session-handler.js +310 -0
  382. package/dist/initiate-session-handler.js.map +1 -0
  383. package/dist/ipc-client.d.ts +31 -0
  384. package/dist/ipc-client.d.ts.map +1 -0
  385. package/dist/ipc-client.js +113 -0
  386. package/dist/ipc-client.js.map +1 -0
  387. package/dist/ipc-server.d.ts +63 -0
  388. package/dist/ipc-server.d.ts.map +1 -0
  389. package/dist/ipc-server.js +429 -0
  390. package/dist/ipc-server.js.map +1 -0
  391. package/dist/ipc-surface.d.ts +44 -0
  392. package/dist/ipc-surface.d.ts.map +1 -0
  393. package/dist/ipc-surface.js +107 -0
  394. package/dist/ipc-surface.js.map +1 -0
  395. package/dist/line-lcs.d.ts +51 -0
  396. package/dist/line-lcs.d.ts.map +1 -0
  397. package/dist/line-lcs.js +71 -0
  398. package/dist/line-lcs.js.map +1 -0
  399. package/dist/lock-file.d.ts +39 -0
  400. package/dist/lock-file.d.ts.map +1 -0
  401. package/dist/lock-file.js +120 -0
  402. package/dist/lock-file.js.map +1 -0
  403. package/dist/log-collapse.d.ts +66 -0
  404. package/dist/log-collapse.d.ts.map +1 -0
  405. package/dist/log-collapse.js +244 -0
  406. package/dist/log-collapse.js.map +1 -0
  407. package/dist/log-rotate.d.ts +67 -0
  408. package/dist/log-rotate.d.ts.map +1 -0
  409. package/dist/log-rotate.js +134 -0
  410. package/dist/log-rotate.js.map +1 -0
  411. package/dist/manifest-deps.d.ts +25 -0
  412. package/dist/manifest-deps.d.ts.map +1 -0
  413. package/dist/manifest-deps.js +151 -0
  414. package/dist/manifest-deps.js.map +1 -0
  415. package/dist/manifest-poll-scheduler.d.ts +31 -0
  416. package/dist/manifest-poll-scheduler.d.ts.map +1 -0
  417. package/dist/manifest-poll-scheduler.js +59 -0
  418. package/dist/manifest-poll-scheduler.js.map +1 -0
  419. package/dist/manifest-validity.d.ts +153 -0
  420. package/dist/manifest-validity.d.ts.map +1 -0
  421. package/dist/manifest-validity.js +268 -0
  422. package/dist/manifest-validity.js.map +1 -0
  423. package/dist/manifest-version-store-db.d.ts +24 -0
  424. package/dist/manifest-version-store-db.d.ts.map +1 -0
  425. package/dist/manifest-version-store-db.js +58 -0
  426. package/dist/manifest-version-store-db.js.map +1 -0
  427. package/dist/manifest-version-store.d.ts +16 -0
  428. package/dist/manifest-version-store.d.ts.map +1 -0
  429. package/dist/manifest-version-store.js +15 -0
  430. package/dist/manifest-version-store.js.map +1 -0
  431. package/dist/network-directory-node.d.ts +136 -0
  432. package/dist/network-directory-node.d.ts.map +1 -0
  433. package/dist/network-directory-node.js +810 -0
  434. package/dist/network-directory-node.js.map +1 -0
  435. package/dist/nonce-dedup.d.ts +68 -0
  436. package/dist/nonce-dedup.d.ts.map +1 -0
  437. package/dist/nonce-dedup.js +205 -0
  438. package/dist/nonce-dedup.js.map +1 -0
  439. package/dist/notification-dispatcher.d.ts +92 -0
  440. package/dist/notification-dispatcher.d.ts.map +1 -0
  441. package/dist/notification-dispatcher.js +210 -0
  442. package/dist/notification-dispatcher.js.map +1 -0
  443. package/dist/notification-handlers.d.ts +53 -0
  444. package/dist/notification-handlers.d.ts.map +1 -0
  445. package/dist/notification-handlers.js +461 -0
  446. package/dist/notification-handlers.js.map +1 -0
  447. package/dist/onboarding-guidance.d.ts +79 -0
  448. package/dist/onboarding-guidance.d.ts.map +1 -0
  449. package/dist/onboarding-guidance.js +95 -0
  450. package/dist/onboarding-guidance.js.map +1 -0
  451. package/dist/operator-guidance.d.ts +25 -0
  452. package/dist/operator-guidance.d.ts.map +1 -0
  453. package/dist/operator-guidance.js +50 -0
  454. package/dist/operator-guidance.js.map +1 -0
  455. package/dist/orphan-triage.d.ts +130 -0
  456. package/dist/orphan-triage.d.ts.map +1 -0
  457. package/dist/orphan-triage.js +207 -0
  458. package/dist/orphan-triage.js.map +1 -0
  459. package/dist/outbound-sessions.d.ts +126 -0
  460. package/dist/outbound-sessions.d.ts.map +1 -0
  461. package/dist/outbound-sessions.js +1052 -0
  462. package/dist/outbound-sessions.js.map +1 -0
  463. package/dist/park-envelope.d.ts +329 -0
  464. package/dist/park-envelope.d.ts.map +1 -0
  465. package/dist/park-envelope.js +509 -0
  466. package/dist/park-envelope.js.map +1 -0
  467. package/dist/park-recovery.d.ts +273 -0
  468. package/dist/park-recovery.d.ts.map +1 -0
  469. package/dist/park-recovery.js +717 -0
  470. package/dist/park-recovery.js.map +1 -0
  471. package/dist/park-refusals.d.ts +147 -0
  472. package/dist/park-refusals.d.ts.map +1 -0
  473. package/dist/park-refusals.js +331 -0
  474. package/dist/park-refusals.js.map +1 -0
  475. package/dist/quarantine-framing.d.ts +92 -0
  476. package/dist/quarantine-framing.d.ts.map +1 -0
  477. package/dist/quarantine-framing.js +111 -0
  478. package/dist/quarantine-framing.js.map +1 -0
  479. package/dist/reconnect-drain.d.ts +22 -0
  480. package/dist/reconnect-drain.d.ts.map +1 -0
  481. package/dist/reconnect-drain.js +65 -0
  482. package/dist/reconnect-drain.js.map +1 -0
  483. package/dist/recovered-position.d.ts +14 -0
  484. package/dist/recovered-position.d.ts.map +1 -0
  485. package/dist/recovered-position.js +59 -0
  486. package/dist/recovered-position.js.map +1 -0
  487. package/dist/refusal-notices.d.ts +196 -0
  488. package/dist/refusal-notices.d.ts.map +1 -0
  489. package/dist/refusal-notices.js +516 -0
  490. package/dist/refusal-notices.js.map +1 -0
  491. package/dist/refusal-reasons.d.ts +245 -0
  492. package/dist/refusal-reasons.d.ts.map +1 -0
  493. package/dist/refusal-reasons.js +363 -0
  494. package/dist/refusal-reasons.js.map +1 -0
  495. package/dist/register-handler.d.ts +36 -0
  496. package/dist/register-handler.d.ts.map +1 -0
  497. package/dist/register-handler.js +285 -0
  498. package/dist/register-handler.js.map +1 -0
  499. package/dist/registration-context.d.ts +72 -0
  500. package/dist/registration-context.d.ts.map +1 -0
  501. package/dist/registration-context.js +126 -0
  502. package/dist/registration-context.js.map +1 -0
  503. package/dist/registration-manager.d.ts +94 -0
  504. package/dist/registration-manager.d.ts.map +1 -0
  505. package/dist/registration-manager.js +585 -0
  506. package/dist/registration-manager.js.map +1 -0
  507. package/dist/registration-persistence.d.ts +183 -0
  508. package/dist/registration-persistence.d.ts.map +1 -0
  509. package/dist/registration-persistence.js +263 -0
  510. package/dist/registration-persistence.js.map +1 -0
  511. package/dist/registry-poll.d.ts +52 -0
  512. package/dist/registry-poll.d.ts.map +1 -0
  513. package/dist/registry-poll.js +140 -0
  514. package/dist/registry-poll.js.map +1 -0
  515. package/dist/registry-version-store-db.d.ts +22 -0
  516. package/dist/registry-version-store-db.d.ts.map +1 -0
  517. package/dist/registry-version-store-db.js +50 -0
  518. package/dist/registry-version-store-db.js.map +1 -0
  519. package/dist/relay-endpoints.d.ts +18 -0
  520. package/dist/relay-endpoints.d.ts.map +1 -0
  521. package/dist/relay-endpoints.js +9 -0
  522. package/dist/relay-endpoints.js.map +1 -0
  523. package/dist/relay-only.d.ts +140 -0
  524. package/dist/relay-only.d.ts.map +1 -0
  525. package/dist/relay-only.js +193 -0
  526. package/dist/relay-only.js.map +1 -0
  527. package/dist/relay-receipt-store.d.ts +155 -0
  528. package/dist/relay-receipt-store.d.ts.map +1 -0
  529. package/dist/relay-receipt-store.js +284 -0
  530. package/dist/relay-receipt-store.js.map +1 -0
  531. package/dist/relay-reconnect.d.ts +32 -0
  532. package/dist/relay-reconnect.d.ts.map +1 -0
  533. package/dist/relay-reconnect.js +29 -0
  534. package/dist/relay-reconnect.js.map +1 -0
  535. package/dist/reply-lag.d.ts +11 -0
  536. package/dist/reply-lag.d.ts.map +1 -0
  537. package/dist/reply-lag.js +46 -0
  538. package/dist/reply-lag.js.map +1 -0
  539. package/dist/resolve-named-agent.d.ts +49 -0
  540. package/dist/resolve-named-agent.d.ts.map +1 -0
  541. package/dist/resolve-named-agent.js +77 -0
  542. package/dist/resolve-named-agent.js.map +1 -0
  543. package/dist/restart-seal-resolver.d.ts +110 -0
  544. package/dist/restart-seal-resolver.d.ts.map +1 -0
  545. package/dist/restart-seal-resolver.js +353 -0
  546. package/dist/restart-seal-resolver.js.map +1 -0
  547. package/dist/resume-last-seen.d.ts +15 -0
  548. package/dist/resume-last-seen.d.ts.map +1 -0
  549. package/dist/resume-last-seen.js +44 -0
  550. package/dist/resume-last-seen.js.map +1 -0
  551. package/dist/retry-queue.d.ts +203 -0
  552. package/dist/retry-queue.d.ts.map +1 -0
  553. package/dist/retry-queue.js +701 -0
  554. package/dist/retry-queue.js.map +1 -0
  555. package/dist/roster-freshness.d.ts +160 -0
  556. package/dist/roster-freshness.d.ts.map +1 -0
  557. package/dist/roster-freshness.js +250 -0
  558. package/dist/roster-freshness.js.map +1 -0
  559. package/dist/screening-status.d.ts +15 -0
  560. package/dist/screening-status.d.ts.map +1 -0
  561. package/dist/screening-status.js +65 -0
  562. package/dist/screening-status.js.map +1 -0
  563. package/dist/seal-carried-close.d.ts +37 -0
  564. package/dist/seal-carried-close.d.ts.map +1 -0
  565. package/dist/seal-carried-close.js +179 -0
  566. package/dist/seal-carried-close.js.map +1 -0
  567. package/dist/seal-certificate-pull.d.ts +79 -0
  568. package/dist/seal-certificate-pull.d.ts.map +1 -0
  569. package/dist/seal-certificate-pull.js +186 -0
  570. package/dist/seal-certificate-pull.js.map +1 -0
  571. package/dist/seal-certified-root-check.d.ts +37 -0
  572. package/dist/seal-certified-root-check.d.ts.map +1 -0
  573. package/dist/seal-certified-root-check.js +127 -0
  574. package/dist/seal-certified-root-check.js.map +1 -0
  575. package/dist/seal-coordinator.d.ts +118 -0
  576. package/dist/seal-coordinator.d.ts.map +1 -0
  577. package/dist/seal-coordinator.js +927 -0
  578. package/dist/seal-coordinator.js.map +1 -0
  579. package/dist/seal-escalation.d.ts +80 -0
  580. package/dist/seal-escalation.d.ts.map +1 -0
  581. package/dist/seal-escalation.js +283 -0
  582. package/dist/seal-escalation.js.map +1 -0
  583. package/dist/seal-evidence-root-check.d.ts +70 -0
  584. package/dist/seal-evidence-root-check.d.ts.map +1 -0
  585. package/dist/seal-evidence-root-check.js +199 -0
  586. package/dist/seal-evidence-root-check.js.map +1 -0
  587. package/dist/seal-failure-store.d.ts +139 -0
  588. package/dist/seal-failure-store.d.ts.map +1 -0
  589. package/dist/seal-failure-store.js +207 -0
  590. package/dist/seal-failure-store.js.map +1 -0
  591. package/dist/seal-flows.d.ts +107 -0
  592. package/dist/seal-flows.d.ts.map +1 -0
  593. package/dist/seal-flows.js +638 -0
  594. package/dist/seal-flows.js.map +1 -0
  595. package/dist/seal-frontier-verify.d.ts +103 -0
  596. package/dist/seal-frontier-verify.d.ts.map +1 -0
  597. package/dist/seal-frontier-verify.js +143 -0
  598. package/dist/seal-frontier-verify.js.map +1 -0
  599. package/dist/seal-leaf.d.ts +58 -0
  600. package/dist/seal-leaf.d.ts.map +1 -0
  601. package/dist/seal-leaf.js +112 -0
  602. package/dist/seal-leaf.js.map +1 -0
  603. package/dist/seal-legibility-tbs.d.ts +25 -0
  604. package/dist/seal-legibility-tbs.d.ts.map +1 -0
  605. package/dist/seal-legibility-tbs.js +77 -0
  606. package/dist/seal-legibility-tbs.js.map +1 -0
  607. package/dist/seal-local-terminus.d.ts +41 -0
  608. package/dist/seal-local-terminus.d.ts.map +1 -0
  609. package/dist/seal-local-terminus.js +170 -0
  610. package/dist/seal-local-terminus.js.map +1 -0
  611. package/dist/seal-receipt-upgrade.d.ts +30 -0
  612. package/dist/seal-receipt-upgrade.d.ts.map +1 -0
  613. package/dist/seal-receipt-upgrade.js +49 -0
  614. package/dist/seal-receipt-upgrade.js.map +1 -0
  615. package/dist/seal-relay-silence.d.ts +51 -0
  616. package/dist/seal-relay-silence.d.ts.map +1 -0
  617. package/dist/seal-relay-silence.js +76 -0
  618. package/dist/seal-relay-silence.js.map +1 -0
  619. package/dist/seal-settle.d.ts +38 -0
  620. package/dist/seal-settle.d.ts.map +1 -0
  621. package/dist/seal-settle.js +33 -0
  622. package/dist/seal-settle.js.map +1 -0
  623. package/dist/seal-upgrade.d.ts +107 -0
  624. package/dist/seal-upgrade.d.ts.map +1 -0
  625. package/dist/seal-upgrade.js +200 -0
  626. package/dist/seal-upgrade.js.map +1 -0
  627. package/dist/sealed-conversation.d.ts +36 -0
  628. package/dist/sealed-conversation.d.ts.map +1 -0
  629. package/dist/sealed-conversation.js +171 -0
  630. package/dist/sealed-conversation.js.map +1 -0
  631. package/dist/sealed-leaf-set.d.ts +92 -0
  632. package/dist/sealed-leaf-set.d.ts.map +1 -0
  633. package/dist/sealed-leaf-set.js +122 -0
  634. package/dist/sealed-leaf-set.js.map +1 -0
  635. package/dist/send-claims.d.ts +56 -0
  636. package/dist/send-claims.d.ts.map +1 -0
  637. package/dist/send-claims.js +50 -0
  638. package/dist/send-claims.js.map +1 -0
  639. package/dist/session-assignment-parser.d.ts +104 -0
  640. package/dist/session-assignment-parser.d.ts.map +1 -0
  641. package/dist/session-assignment-parser.js +345 -0
  642. package/dist/session-assignment-parser.js.map +1 -0
  643. package/dist/session-category.d.ts +19 -0
  644. package/dist/session-category.d.ts.map +1 -0
  645. package/dist/session-category.js +14 -0
  646. package/dist/session-category.js.map +1 -0
  647. package/dist/session-ceremony.d.ts +297 -0
  648. package/dist/session-ceremony.d.ts.map +1 -0
  649. package/dist/session-ceremony.js +964 -0
  650. package/dist/session-ceremony.js.map +1 -0
  651. package/dist/session-closed.d.ts +79 -0
  652. package/dist/session-closed.d.ts.map +1 -0
  653. package/dist/session-closed.js +189 -0
  654. package/dist/session-closed.js.map +1 -0
  655. package/dist/session-connection-gater.d.ts +148 -0
  656. package/dist/session-connection-gater.d.ts.map +1 -0
  657. package/dist/session-connection-gater.js +332 -0
  658. package/dist/session-connection-gater.js.map +1 -0
  659. package/dist/session-content-context.d.ts +162 -0
  660. package/dist/session-content-context.d.ts.map +1 -0
  661. package/dist/session-content-context.js +2 -0
  662. package/dist/session-content-context.js.map +1 -0
  663. package/dist/session-content-handlers.d.ts +82 -0
  664. package/dist/session-content-handlers.d.ts.map +1 -0
  665. package/dist/session-content-handlers.js +1382 -0
  666. package/dist/session-content-handlers.js.map +1 -0
  667. package/dist/session-content-ingest.d.ts +206 -0
  668. package/dist/session-content-ingest.d.ts.map +1 -0
  669. package/dist/session-content-ingest.js +2167 -0
  670. package/dist/session-content-ingest.js.map +1 -0
  671. package/dist/session-content-send.d.ts +191 -0
  672. package/dist/session-content-send.d.ts.map +1 -0
  673. package/dist/session-content-send.js +1360 -0
  674. package/dist/session-content-send.js.map +1 -0
  675. package/dist/session-delivery-acks.d.ts +169 -0
  676. package/dist/session-delivery-acks.d.ts.map +1 -0
  677. package/dist/session-delivery-acks.js +569 -0
  678. package/dist/session-delivery-acks.js.map +1 -0
  679. package/dist/session-ephemerals.d.ts +279 -0
  680. package/dist/session-ephemerals.d.ts.map +1 -0
  681. package/dist/session-ephemerals.js +591 -0
  682. package/dist/session-ephemerals.js.map +1 -0
  683. package/dist/session-leaf-records.d.ts +159 -0
  684. package/dist/session-leaf-records.d.ts.map +1 -0
  685. package/dist/session-leaf-records.js +408 -0
  686. package/dist/session-leaf-records.js.map +1 -0
  687. package/dist/session-lifecycle.d.ts +303 -0
  688. package/dist/session-lifecycle.d.ts.map +1 -0
  689. package/dist/session-lifecycle.js +1679 -0
  690. package/dist/session-lifecycle.js.map +1 -0
  691. package/dist/session-liveness.d.ts +135 -0
  692. package/dist/session-liveness.d.ts.map +1 -0
  693. package/dist/session-liveness.js +347 -0
  694. package/dist/session-liveness.js.map +1 -0
  695. package/dist/session-name.d.ts +35 -0
  696. package/dist/session-name.d.ts.map +1 -0
  697. package/dist/session-name.js +60 -0
  698. package/dist/session-name.js.map +1 -0
  699. package/dist/session-node-factory.d.ts +18 -0
  700. package/dist/session-node-factory.d.ts.map +1 -0
  701. package/dist/session-node-factory.js +182 -0
  702. package/dist/session-node-factory.js.map +1 -0
  703. package/dist/session-node-manager.d.ts +877 -0
  704. package/dist/session-node-manager.d.ts.map +1 -0
  705. package/dist/session-node-manager.js +2998 -0
  706. package/dist/session-node-manager.js.map +1 -0
  707. package/dist/session-node-types.d.ts +1057 -0
  708. package/dist/session-node-types.d.ts.map +1 -0
  709. package/dist/session-node-types.js +657 -0
  710. package/dist/session-node-types.js.map +1 -0
  711. package/dist/session-notify.d.ts +46 -0
  712. package/dist/session-notify.d.ts.map +1 -0
  713. package/dist/session-notify.js +116 -0
  714. package/dist/session-notify.js.map +1 -0
  715. package/dist/session-own-chain-store.d.ts +65 -0
  716. package/dist/session-own-chain-store.d.ts.map +1 -0
  717. package/dist/session-own-chain-store.js +75 -0
  718. package/dist/session-own-chain-store.js.map +1 -0
  719. package/dist/session-queries.d.ts +476 -0
  720. package/dist/session-queries.d.ts.map +1 -0
  721. package/dist/session-queries.js +1007 -0
  722. package/dist/session-queries.js.map +1 -0
  723. package/dist/session-read-handlers.d.ts +87 -0
  724. package/dist/session-read-handlers.d.ts.map +1 -0
  725. package/dist/session-read-handlers.js +689 -0
  726. package/dist/session-read-handlers.js.map +1 -0
  727. package/dist/session-records.d.ts +341 -0
  728. package/dist/session-records.d.ts.map +1 -0
  729. package/dist/session-records.js +858 -0
  730. package/dist/session-records.js.map +1 -0
  731. package/dist/session-relay-client.d.ts +659 -0
  732. package/dist/session-relay-client.d.ts.map +1 -0
  733. package/dist/session-relay-client.js +2876 -0
  734. package/dist/session-relay-client.js.map +1 -0
  735. package/dist/session-relay.d.ts +397 -0
  736. package/dist/session-relay.d.ts.map +1 -0
  737. package/dist/session-relay.js +1636 -0
  738. package/dist/session-relay.js.map +1 -0
  739. package/dist/session-salt-agreement.d.ts +331 -0
  740. package/dist/session-salt-agreement.d.ts.map +1 -0
  741. package/dist/session-salt-agreement.js +472 -0
  742. package/dist/session-salt-agreement.js.map +1 -0
  743. package/dist/session-salts.d.ts +432 -0
  744. package/dist/session-salts.d.ts.map +1 -0
  745. package/dist/session-salts.js +1540 -0
  746. package/dist/session-salts.js.map +1 -0
  747. package/dist/session-schema.d.ts +30 -0
  748. package/dist/session-schema.d.ts.map +1 -0
  749. package/dist/session-schema.js +877 -0
  750. package/dist/session-schema.js.map +1 -0
  751. package/dist/session-seal-leaf-store.d.ts +70 -0
  752. package/dist/session-seal-leaf-store.d.ts.map +1 -0
  753. package/dist/session-seal-leaf-store.js +105 -0
  754. package/dist/session-seal-leaf-store.js.map +1 -0
  755. package/dist/session-seal.d.ts +334 -0
  756. package/dist/session-seal.d.ts.map +1 -0
  757. package/dist/session-seal.js +1017 -0
  758. package/dist/session-seal.js.map +1 -0
  759. package/dist/session-terminal-refusal.d.ts +65 -0
  760. package/dist/session-terminal-refusal.d.ts.map +1 -0
  761. package/dist/session-terminal-refusal.js +87 -0
  762. package/dist/session-terminal-refusal.js.map +1 -0
  763. package/dist/session-tree.d.ts +110 -0
  764. package/dist/session-tree.d.ts.map +1 -0
  765. package/dist/session-tree.js +144 -0
  766. package/dist/session-tree.js.map +1 -0
  767. package/dist/session-views.d.ts +47 -0
  768. package/dist/session-views.d.ts.map +1 -0
  769. package/dist/session-views.js +278 -0
  770. package/dist/session-views.js.map +1 -0
  771. package/dist/signal-handlers.d.ts +63 -0
  772. package/dist/signal-handlers.d.ts.map +1 -0
  773. package/dist/signal-handlers.js +980 -0
  774. package/dist/signal-handlers.js.map +1 -0
  775. package/dist/signal-requirement-policy.d.ts +51 -0
  776. package/dist/signal-requirement-policy.d.ts.map +1 -0
  777. package/dist/signal-requirement-policy.js +89 -0
  778. package/dist/signal-requirement-policy.js.map +1 -0
  779. package/dist/signal-revocability.d.ts +49 -0
  780. package/dist/signal-revocability.d.ts.map +1 -0
  781. package/dist/signal-revocability.js +93 -0
  782. package/dist/signal-revocability.js.map +1 -0
  783. package/dist/signal-submission.d.ts +181 -0
  784. package/dist/signal-submission.d.ts.map +1 -0
  785. package/dist/signal-submission.js +368 -0
  786. package/dist/signal-submission.js.map +1 -0
  787. package/dist/signaling-connect.d.ts +118 -0
  788. package/dist/signaling-connect.d.ts.map +1 -0
  789. package/dist/signaling-connect.js +538 -0
  790. package/dist/signaling-connect.js.map +1 -0
  791. package/dist/signaling-wiring.d.ts +105 -0
  792. package/dist/signaling-wiring.d.ts.map +1 -0
  793. package/dist/signaling-wiring.js +393 -0
  794. package/dist/signaling-wiring.js.map +1 -0
  795. package/dist/singleton-lock.d.ts +85 -0
  796. package/dist/singleton-lock.d.ts.map +1 -0
  797. package/dist/singleton-lock.js +219 -0
  798. package/dist/singleton-lock.js.map +1 -0
  799. package/dist/sqlcipher-db.d.ts +139 -0
  800. package/dist/sqlcipher-db.d.ts.map +1 -0
  801. package/dist/sqlcipher-db.js +357 -0
  802. package/dist/sqlcipher-db.js.map +1 -0
  803. package/dist/standing-receivers.d.ts +319 -0
  804. package/dist/standing-receivers.d.ts.map +1 -0
  805. package/dist/standing-receivers.js +1295 -0
  806. package/dist/standing-receivers.js.map +1 -0
  807. package/dist/start-agent.d.ts +64 -0
  808. package/dist/start-agent.d.ts.map +1 -0
  809. package/dist/start-agent.js +136 -0
  810. package/dist/start-agent.js.map +1 -0
  811. package/dist/status-handler.d.ts +54 -0
  812. package/dist/status-handler.d.ts.map +1 -0
  813. package/dist/status-handler.js +61 -0
  814. package/dist/status-handler.js.map +1 -0
  815. package/dist/submission-retry.d.ts +208 -0
  816. package/dist/submission-retry.d.ts.map +1 -0
  817. package/dist/submission-retry.js +506 -0
  818. package/dist/submission-retry.js.map +1 -0
  819. package/dist/telegram-bot-client.d.ts +34 -0
  820. package/dist/telegram-bot-client.d.ts.map +1 -0
  821. package/dist/telegram-bot-client.js +36 -0
  822. package/dist/telegram-bot-client.js.map +1 -0
  823. package/dist/telegram-doorbell.d.ts +38 -0
  824. package/dist/telegram-doorbell.d.ts.map +1 -0
  825. package/dist/telegram-doorbell.js +140 -0
  826. package/dist/telegram-doorbell.js.map +1 -0
  827. package/dist/test-handlers.d.ts +62 -0
  828. package/dist/test-handlers.d.ts.map +1 -0
  829. package/dist/test-handlers.js +240 -0
  830. package/dist/test-handlers.js.map +1 -0
  831. package/dist/testing.d.ts +10 -0
  832. package/dist/testing.d.ts.map +1 -0
  833. package/dist/testing.js +10 -0
  834. package/dist/testing.js.map +1 -0
  835. package/dist/transport-composition.d.ts +31 -0
  836. package/dist/transport-composition.d.ts.map +1 -0
  837. package/dist/transport-composition.js +55 -0
  838. package/dist/transport-composition.js.map +1 -0
  839. package/dist/transport-selector.d.ts +202 -0
  840. package/dist/transport-selector.d.ts.map +1 -0
  841. package/dist/transport-selector.js +196 -0
  842. package/dist/transport-selector.js.map +1 -0
  843. package/dist/trust-signal-pickup-listener.d.ts +43 -0
  844. package/dist/trust-signal-pickup-listener.d.ts.map +1 -0
  845. package/dist/trust-signal-pickup-listener.js +48 -0
  846. package/dist/trust-signal-pickup-listener.js.map +1 -0
  847. package/dist/trust-signal-store.d.ts +406 -0
  848. package/dist/trust-signal-store.d.ts.map +1 -0
  849. package/dist/trust-signal-store.js +939 -0
  850. package/dist/trust-signal-store.js.map +1 -0
  851. package/dist/trust-signal-sweep-tick.d.ts +60 -0
  852. package/dist/trust-signal-sweep-tick.d.ts.map +1 -0
  853. package/dist/trust-signal-sweep-tick.js +101 -0
  854. package/dist/trust-signal-sweep-tick.js.map +1 -0
  855. package/dist/trust-signal-sweep.d.ts +94 -0
  856. package/dist/trust-signal-sweep.d.ts.map +1 -0
  857. package/dist/trust-signal-sweep.js +147 -0
  858. package/dist/trust-signal-sweep.js.map +1 -0
  859. package/dist/type-registry.d.ts +42 -0
  860. package/dist/type-registry.d.ts.map +1 -0
  861. package/dist/type-registry.js +37 -0
  862. package/dist/type-registry.js.map +1 -0
  863. package/dist/types.d.ts +746 -0
  864. package/dist/types.d.ts.map +1 -0
  865. package/dist/types.js +20 -0
  866. package/dist/types.js.map +1 -0
  867. package/dist/unresolved-nodes-report.d.ts +14 -0
  868. package/dist/unresolved-nodes-report.d.ts.map +1 -0
  869. package/dist/unresolved-nodes-report.js +96 -0
  870. package/dist/unresolved-nodes-report.js.map +1 -0
  871. package/dist/vocabulary.d.ts +150 -0
  872. package/dist/vocabulary.d.ts.map +1 -0
  873. package/dist/vocabulary.js +386 -0
  874. package/dist/vocabulary.js.map +1 -0
  875. package/dist/who-label.d.ts +28 -0
  876. package/dist/who-label.d.ts.map +1 -0
  877. package/dist/who-label.js +31 -0
  878. package/dist/who-label.js.map +1 -0
  879. package/dist/who-resolver.d.ts +15 -0
  880. package/dist/who-resolver.d.ts.map +1 -0
  881. package/dist/who-resolver.js +47 -0
  882. package/dist/who-resolver.js.map +1 -0
  883. package/dist/wire-content-hash.d.ts +93 -0
  884. package/dist/wire-content-hash.d.ts.map +1 -0
  885. package/dist/wire-content-hash.js +116 -0
  886. package/dist/wire-content-hash.js.map +1 -0
  887. package/dist/withheld-content.d.ts +13 -0
  888. package/dist/withheld-content.d.ts.map +1 -0
  889. package/dist/withheld-content.js +46 -0
  890. package/dist/withheld-content.js.map +1 -0
  891. package/dist/witness-alerts.d.ts +40 -0
  892. package/dist/witness-alerts.d.ts.map +1 -0
  893. package/dist/witness-alerts.js +102 -0
  894. package/dist/witness-alerts.js.map +1 -0
  895. package/package.json +5 -5
@@ -0,0 +1,110 @@
1
+ /**
2
+ * DOD-M12B-RESTART-SEAL-1 — resolve the sessions our own stop orphaned, with a receipt.
3
+ *
4
+ * A daemon shutdown flips every open session to `interrupted` on the way out, and nothing has ever
5
+ * moved them again: their transport keypairs died with the process, so they cannot be resumed, and
6
+ * the only exit is `cello_close_session {force:true}`, which forfeits the notarized receipt.
7
+ *
8
+ * This walks them on startup and SEALS them instead — bilateral if the counterparty answers,
9
+ * unilateral once the directory's delivery grace has elapsed. When the directory refuses
10
+ * `seal_unilateral_too_early` it hands back exactly how long is left; that number becomes a
11
+ * scheduled retry rather than a sentence asking a human to come back.
12
+ *
13
+ * SCOPE IS THE WHOLE SAFETY ARGUMENT, and after DOD-M12B-PENDING-RESOLVE-1 it has TWO branches.
14
+ *
15
+ * 1. `interrupted` with `interrupted_by = 'local'` — OURS. Our own boot sweep, shutdown sweep or
16
+ * kill switch ended it; nobody else did, and it cannot be resumed because the keypairs died
17
+ * with the process.
18
+ * 2. `seal_interrupted_pending` — a seal commitment that nobody ever asked the directory to
19
+ * notarize. **This population includes sessions the COUNTERPARTY asked to end**, which is why
20
+ * the SI-001 boundary in `close-session-handler.ts` had to be restated rather than left as
21
+ * "nothing the counterparty caused is auto-sealed". SI-001 forbids notarizing a conversation
22
+ * NOBODY chose to end; here somebody always did — an initiator row carries the counterparty's
23
+ * signed leaf, and a responder row exists because the counterparty sent a request to seal.
24
+ *
25
+ * Serial and staggered on purpose: a seal is a directory ceremony, and a machine holding hundreds of
26
+ * orphans must not answer a restart with hundreds of simultaneous ceremonies.
27
+ */
28
+ import type { Logger } from "./types.js";
29
+ /** A session our own stop left behind. */
30
+ export interface RestartOrphan {
31
+ agentName: string;
32
+ sessionId: string;
33
+ messageCount: number;
34
+ /**
35
+ * DOD-M12B-PENDING-RESOLVE-1: which population this is. Two statuses now reach this queue and
36
+ * they need different words in a give-up: an `interrupted` session may legitimately be
37
+ * force-abandoned, and a `seal_interrupted_pending` one must not be, because forcing forfeits a
38
+ * signed commitment and the relay-witnessed leaves that are one request away from a receipt.
39
+ */
40
+ status: "interrupted" | "seal_interrupted_pending";
41
+ }
42
+ /**
43
+ * The result of one seal attempt. `retryAfterSeconds` is the directory's own countdown from
44
+ * `seal_unilateral_too_early` — the delivery grace that has to elapse before a unilateral seal is
45
+ * allowed. It is a WAIT the directory named, not a guess.
46
+ */
47
+ export type SealOutcome = {
48
+ ok: true;
49
+ } | {
50
+ ok: false;
51
+ reason: string;
52
+ retryAfterSeconds?: number;
53
+ /** The close path's own guidance. Carried, never replaced — see the give-up log. */
54
+ guidance?: string;
55
+ /** Everything the close computed about WHY, so `reason` stops being the only fact. */
56
+ detail?: Record<string, unknown>;
57
+ };
58
+ export interface ScheduledTask {
59
+ cancel: () => void;
60
+ }
61
+ export interface RestartSealResolverDeps {
62
+ logger: Logger;
63
+ /**
64
+ * DOD-M12B-PENDING-RESOLVE-1 — TWO populations, each with its own safety argument:
65
+ * - `interrupted` AND `interrupted_by = 'local'` — our own stop ended it, so we may describe it.
66
+ * - `seal_interrupted_pending` — a seal commitment nobody asked the directory to notarize.
67
+ * Nothing else is eligible.
68
+ */
69
+ listRestartOrphans: () => RestartOrphan[];
70
+ sealSession: (agentName: string, sessionId: string) => Promise<SealOutcome>;
71
+ /**
72
+ * Record DURABLY that this session was given up on, so the next boot does not start over.
73
+ * Without it a machine restarting ~6 times a day re-attempts a hopeless session forever.
74
+ *
75
+ * REQUIRED, not optional. There is exactly one composition root, so optionality buys nothing and
76
+ * costs the compiler's ability to catch a wiring that was never done — and the whole
77
+ * justification for the two new columns is that this call happens.
78
+ */
79
+ markGaveUp: (agentName: string, sessionId: string, reason: string) => void;
80
+ now?: () => number;
81
+ schedule?: (fn: () => void, ms: number) => ScheduledTask;
82
+ /** Gap between two seal attempts. */
83
+ staggerMs?: number;
84
+ /**
85
+ * How long to wait after boot before the first attempt. A seal needs the directory, and at the
86
+ * instant the daemon finishes starting, signaling is still being established — firing
87
+ * immediately would spend an attempt on a connection that does not exist yet.
88
+ */
89
+ initialDelayMs?: number;
90
+ /** Hard ceiling on attempts for one session before it is reported as needing a manual decision. */
91
+ maxAttemptsPerSession?: number;
92
+ /**
93
+ * Ceiling on ONE seal attempt. A close that never settles would otherwise leave `#running` true
94
+ * with no timer armed and no log line — the resolver stalls, holding a full queue, silently.
95
+ */
96
+ attemptTimeoutMs?: number;
97
+ }
98
+ export declare class RestartSealResolver {
99
+ #private;
100
+ constructor(deps: RestartSealResolverDeps);
101
+ /** Enqueue every restart orphan and begin working through them. Idempotent. */
102
+ start(): void;
103
+ /**
104
+ * Stop, and start nothing further. A shutdown that keeps opening directory ceremonies is not
105
+ * draining (DOD-M12B-SHUTDOWN-1) — and the flag, not the cancelled timer, is what an attempt
106
+ * already in flight checks when it lands.
107
+ */
108
+ stop(): Promise<void>;
109
+ }
110
+ //# sourceMappingURL=restart-seal-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restart-seal-resolver.d.ts","sourceRoot":"","sources":["../src/restart-seal-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC,0CAA0C;AAC1C,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,MAAM,EAAE,aAAa,GAAG,0BAA0B,CAAC;CACpD;AAED;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IACE,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAEN,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,kBAAkB,EAAE,MAAM,aAAa,EAAE,CAAC;IAC1C,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5E;;;;;;;OAOG;IACH,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3E,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK,aAAa,CAAC;IACzD,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mGAAmG;IACnG,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAoHD,qBAAa,mBAAmB;;gBAkBlB,IAAI,EAAE,uBAAuB;IAUzC,+EAA+E;IAC/E,KAAK,IAAI,IAAI;IA+Bb;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CA8LtB"}
@@ -0,0 +1,353 @@
1
+ import { extractErrorMessage } from "./error-message.js";
2
+ /**
3
+ * Refusals no retry can ever help, so they cost ONE attempt and not fifteen minutes.
4
+ *
5
+ * Measured 2026-08-17 across 443 submitted seal leaves and 183 completed seals — 59% of seals that
6
+ * start never finish, and these are the reasons where trying again is not persistence:
7
+ *
8
+ * session_abandoned 10× — terminal by definition; the receipt is gone.
9
+ * leaf_count_mismatch 4× — the two trees genuinely disagree.
10
+ * seal_interrupted_rejected_by_counterparty 18× — they said NO. Asking again is worse than
11
+ * noise: it is a machine badgering a peer who
12
+ * already declined.
13
+ *
14
+ * `seal_carry_bilateral_in_progress` is deliberately NOT here either: it means the relay has what
15
+ * it needs to seal BILATERALLY, so the right move is to come back and find the session already
16
+ * sealed — which then answers `session_already_sealed`, which IS terminal.
17
+ *
18
+ * `session_incomplete` and `seal_unilateral_timeout` are deliberately NOT here. The first can be
19
+ * fixed by a relay pull filling the gap — the close's own guidance says so — and the second is a
20
+ * directory that did not answer in time, which the next attempt may well get.
21
+ */
22
+ /**
23
+ * DOD-M12B-PENDING-RESOLVE-1 (review F2) — refusals that mean "WE were not ready", not "this session
24
+ * is hopeless".
25
+ *
26
+ * Every one of these is a local precondition of OURS. The close handler says so itself:
27
+ * *"`standing_receiver_unavailable` is simply 'the agent is not started yet', which a freshly booted
28
+ * daemon reports for every session."* And a freshly booted daemon is the only time this resolver
29
+ * runs — the receiver is created when `cello_start_agent` reaches the daemon, which on a boot where
30
+ * no client has attached yet has not happened for any agent.
31
+ *
32
+ * Left in the ordinary budget they cost five attempts in ~15 minutes and then a DURABLE
33
+ * `restart_seal_gave_up_at`, which removes the session from the only queue that would ever look at
34
+ * it again. For the `seal_interrupted_pending` population that is materially worse than doing
35
+ * nothing: those rows hold signed commitments and relay-witnessed leaves that are ready to notarize,
36
+ * and the give-up reaches no operator surface at all — it is a warn line in `daemon.log`.
37
+ *
38
+ * So these retry on the same backoff but do NOT consume the attempt budget and can never be the
39
+ * reason for a permanent give-up. They are bounded instead by wall-clock (`#localPreconditionCap`),
40
+ * so a genuinely dead daemon still stops eventually rather than retrying forever.
41
+ */
42
+ const LOCAL_PRECONDITION_REFUSALS = new Set([
43
+ "standing_receiver_unavailable",
44
+ "no_persisted_relay_endpoint",
45
+ "relay_unavailable",
46
+ "directory_unreachable",
47
+ "transport_unavailable",
48
+ /**
49
+ * `DOD-M15-TOKENSTALE-1` review F2 — the textbook member of this set, and it only started arriving
50
+ * under its own name when that unit split the submit boundary. Before, it was `relay_unavailable`
51
+ * and was already covered.
52
+ *
53
+ * It clears on a relogin, so it is exactly the "local precondition that will pass later" this set
54
+ * is for. Left out, it consumes the attempt budget and then writes a DURABLE give-up — removing
55
+ * sessions holding signed commitments from the only queue that would ever enumerate them again,
56
+ * which is the 28-session outcome the comment above records.
57
+ */
58
+ "online_token_expired",
59
+ "online_token_required",
60
+ "online_token_pubkey_mismatch",
61
+ ]);
62
+ const TERMINAL_SEAL_REFUSALS = new Set([
63
+ "session_abandoned",
64
+ "seal_interrupted_rejected_by_counterparty",
65
+ "session_already_sealed",
66
+ // OUR OWN verification finding a genuine divergence between the two trees. Distinct from the
67
+ // counterparty's `leaf_count_mismatch`, which never reaches here as a top-level reason — it
68
+ // arrives as `detail.rejection_reason` under the rejection above. Naming the bare string here
69
+ // was inert: the close cannot produce it.
70
+ "seal_interrupted_leaf_count_mismatch",
71
+ // DOD-M15-DIVERGE-1: this side's tree parted from the relay's ordering. Nothing backfills or
72
+ // re-numbers a leaf, so the refusal is identical on every attempt — spending the retry budget on
73
+ // it only delays the durable `restart_seal_gave_up_at` it was always going to reach. The operator
74
+ // decides between comparing counts with the counterparty and force-abandoning; a resolver cannot
75
+ // do either.
76
+ "session_record_diverged",
77
+ "session_not_found",
78
+ // The relay released the session (it drops one 24 h after the last message), so there is nothing
79
+ // left for any directory to rebuild the record from. No amount of retrying brings it back.
80
+ "seal_carry_empty",
81
+ // Two of our SEAL ctrl leaves in one durable carry. No directory can ever notarize it, and no
82
+ // retry changes the carry.
83
+ "seal_carry_duplicate_own_ctrl_leaf",
84
+ // The lookup that answers "is a ctrl leaf already posted?" failed. Refusing is correct — a second
85
+ // leaf is permanent — but retrying it five times cannot make the database readable.
86
+ "seal_leaf_recovery_unavailable",
87
+ // Not protocol outcomes — a wiring or caller fault. Retrying re-runs the same bug.
88
+ "session_not_closeable",
89
+ "close_handler_missing",
90
+ "missing_params",
91
+ ]);
92
+ const DEFAULT_STAGGER_MS = 5_000;
93
+ /** Long enough for the directory handshake started moments earlier to have landed. */
94
+ const DEFAULT_INITIAL_DELAY_MS = 30_000;
95
+ const DEFAULT_MAX_ATTEMPTS = 5;
96
+ /** Backoff for a failure the directory gave no deadline for. Doubles, so a bounded run spans ~1 h. */
97
+ const BASE_BACKOFF_MS = 60_000;
98
+ /** Generous: a close does discovery, a broker dial, a relay submit and a directory round. */
99
+ const DEFAULT_ATTEMPT_TIMEOUT_MS = 120_000;
100
+ function defaultSchedule(fn, ms) {
101
+ const t = setTimeout(fn, ms);
102
+ // A background resolver must never be the reason a daemon will not exit.
103
+ t.unref?.();
104
+ return { cancel: () => clearTimeout(t) };
105
+ }
106
+ export class RestartSealResolver {
107
+ #deps;
108
+ #now;
109
+ #schedule;
110
+ #staggerMs;
111
+ #maxAttempts;
112
+ #initialDelayMs;
113
+ #attemptTimeoutMs;
114
+ /** Resolves when no attempt is in flight — awaited by stop() so a shutdown does not cut a
115
+ * ceremony in half and leave the two sides permanently divergent. */
116
+ #inFlight = null;
117
+ #queue = new Map();
118
+ #timer = null;
119
+ #started = false;
120
+ #stopped = false;
121
+ #running = false;
122
+ constructor(deps) {
123
+ this.#deps = deps;
124
+ this.#now = deps.now ?? (() => Date.now());
125
+ this.#schedule = deps.schedule ?? defaultSchedule;
126
+ this.#staggerMs = deps.staggerMs ?? DEFAULT_STAGGER_MS;
127
+ this.#maxAttempts = deps.maxAttemptsPerSession ?? DEFAULT_MAX_ATTEMPTS;
128
+ this.#initialDelayMs = deps.initialDelayMs ?? DEFAULT_INITIAL_DELAY_MS;
129
+ this.#attemptTimeoutMs = deps.attemptTimeoutMs ?? DEFAULT_ATTEMPT_TIMEOUT_MS;
130
+ }
131
+ /** Enqueue every restart orphan and begin working through them. Idempotent. */
132
+ start() {
133
+ if (this.#started || this.#stopped)
134
+ return;
135
+ this.#started = true;
136
+ let orphans;
137
+ try {
138
+ orphans = this.#deps.listRestartOrphans();
139
+ }
140
+ catch (err) {
141
+ // ABSENT IS NOT FINE. If we cannot read the list, say so — silence here reads exactly like
142
+ // "there was nothing to resolve", which is the state this unit exists to end.
143
+ this.#deps.logger.error("session.restart_seal.enumerate.failed", {
144
+ error: extractErrorMessage(err),
145
+ impact: "sessions the last shutdown orphaned will stay interrupted and unsealed",
146
+ });
147
+ return;
148
+ }
149
+ if (orphans.length === 0)
150
+ return;
151
+ const now = this.#now();
152
+ const firstAt = now + this.#initialDelayMs;
153
+ for (const orphan of orphans) {
154
+ this.#queue.set(`${orphan.agentName}:${orphan.sessionId}`, { orphan, attempts: 0, nextAt: firstAt });
155
+ }
156
+ this.#deps.logger.info("session.restart_seal.enqueued", {
157
+ count: orphans.length,
158
+ impact: "sessions the last shutdown left open will be sealed rather than left for a force-abandon",
159
+ });
160
+ this.#arm(this.#initialDelayMs);
161
+ }
162
+ /**
163
+ * Stop, and start nothing further. A shutdown that keeps opening directory ceremonies is not
164
+ * draining (DOD-M12B-SHUTDOWN-1) — and the flag, not the cancelled timer, is what an attempt
165
+ * already in flight checks when it lands.
166
+ */
167
+ stop() {
168
+ this.#stopped = true;
169
+ this.#timer?.cancel();
170
+ this.#timer = null;
171
+ this.#queue.clear();
172
+ // AWAIT what is already in flight. Severing signaling under a half-finished seal-interrupted
173
+ // exchange leaves the counterparty holding a commitment we never acknowledged: their session
174
+ // advances to `seal_interrupted_pending` and ours stays `interrupted`, permanently divergent
175
+ // and produced automatically on every shutdown.
176
+ //
177
+ // WHAT IS AWAITED IS THE BOUNDED RACE, NOT THE CLOSE. Returning the raw `sealSession` promise
178
+ // would hang shutdown forever on a close that never settles — and shutdown holds the SQLCipher
179
+ // write lock, so "forever" means a daemon that cannot be restarted. `attemptTimeoutMs` bounds
180
+ // this wait because the raced promise is what is stored.
181
+ //
182
+ // THE RESIDUAL WINDOW IS ACCEPTED, NOT CLOSED, and it is stated here rather than implied.
183
+ // Once the timeout wins the race, `#inFlight` is cleared while the underlying close may still
184
+ // be running — so a `stop()` arriving after that point returns immediately and can still sever
185
+ // signaling under a half-finished exchange. That is the deliberate trade: a bounded shutdown is
186
+ // worth more than a guaranteed-clean one, because an unbounded wait here wedges the daemon
187
+ // permanently while the divergence it prevents is repairable by the next close. An attempt
188
+ // taking longer than `attemptTimeoutMs` is not pathological — the interrupted path can spend
189
+ // 30 s in the seal flow, 30 s in a retry after discovery, and 30 s in the escalation.
190
+ return this.#inFlight ? this.#inFlight.then(() => undefined, () => undefined) : Promise.resolve();
191
+ }
192
+ /** Arm the next pass only while there is still work. An empty queue must leave NO timer behind —
193
+ * a resolver that keeps a dead timer alive is a resolver that shows up in a shutdown trace. */
194
+ #armIfWork() {
195
+ if (this.#queue.size === 0)
196
+ return;
197
+ this.#arm(this.#staggerMs);
198
+ }
199
+ #arm(delayMs) {
200
+ if (this.#stopped)
201
+ return;
202
+ this.#timer?.cancel();
203
+ this.#timer = this.#schedule(() => {
204
+ this.#timer = null;
205
+ void this.#pump();
206
+ }, delayMs);
207
+ }
208
+ async #pump() {
209
+ if (this.#stopped || this.#running)
210
+ return;
211
+ if (this.#queue.size === 0)
212
+ return;
213
+ const now = this.#now();
214
+ let due = null;
215
+ for (const item of this.#queue.values()) {
216
+ if (item.nextAt <= now && (due === null || item.nextAt < due.nextAt))
217
+ due = item;
218
+ }
219
+ if (due === null) {
220
+ // Nothing is due yet — sleep until the earliest deadline rather than polling.
221
+ let earliest = Infinity;
222
+ for (const item of this.#queue.values())
223
+ earliest = Math.min(earliest, item.nextAt);
224
+ if (earliest !== Infinity)
225
+ this.#arm(Math.max(0, earliest - now));
226
+ return;
227
+ }
228
+ const item = due;
229
+ const key = `${item.orphan.agentName}:${item.orphan.sessionId}`;
230
+ item.attempts += 1;
231
+ this.#running = true;
232
+ let outcome;
233
+ let attemptTimer = null;
234
+ try {
235
+ const attempt = this.#deps.sealSession(item.orphan.agentName, item.orphan.sessionId);
236
+ // A close that never settles must not wedge the queue silently.
237
+ const timeout = new Promise((resolve) => {
238
+ attemptTimer = this.#schedule(() => resolve({ ok: false, reason: "restart_seal_attempt_timeout" }), this.#attemptTimeoutMs);
239
+ });
240
+ // The RACE is what stop() awaits — see stop(). Storing the raw attempt here would make a
241
+ // hung close a hung shutdown; storing the race makes the wait bounded by attemptTimeoutMs.
242
+ const raced = Promise.race([attempt, timeout]);
243
+ this.#inFlight = raced;
244
+ // A rejected `attempt` still settles the race, and #inFlight is only ever awaited with both
245
+ // handlers attached (stop()), so this cannot surface as an unhandled rejection.
246
+ attempt.catch(() => { });
247
+ outcome = await raced;
248
+ }
249
+ catch (err) {
250
+ outcome = { ok: false, reason: extractErrorMessage(err) };
251
+ }
252
+ finally {
253
+ attemptTimer?.cancel();
254
+ this.#inFlight = null;
255
+ this.#running = false;
256
+ }
257
+ // Re-checked AFTER the await: stop() can land while a ceremony is in flight, and the queue it
258
+ // cleared must not be repopulated by this attempt's bookkeeping.
259
+ if (this.#stopped)
260
+ return;
261
+ if (outcome.ok) {
262
+ this.#queue.delete(key);
263
+ this.#deps.logger.info("session.restart_seal.resolved", {
264
+ agentName: item.orphan.agentName,
265
+ sessionId: item.orphan.sessionId,
266
+ attempts: item.attempts,
267
+ messageCount: item.orphan.messageCount,
268
+ });
269
+ this.#armIfWork();
270
+ return;
271
+ }
272
+ const terminal = TERMINAL_SEAL_REFUSALS.has(outcome.reason);
273
+ /**
274
+ * review F2 — a local precondition is not a verdict on the session.
275
+ *
276
+ * `attempts` is decremented back so this pass costs nothing from the budget: the session is
277
+ * retried on the same backoff, and only a refusal that says something about the SESSION can
278
+ * exhaust it. Without this, all 28 pending sessions were durably given up on ~15 minutes after
279
+ * every boot, and no future boot would ever enumerate them again.
280
+ */
281
+ const localPrecondition = !terminal && LOCAL_PRECONDITION_REFUSALS.has(outcome.reason);
282
+ if (localPrecondition) {
283
+ item.attempts = Math.max(0, item.attempts - 1);
284
+ this.#deps.logger.info("session.restart_seal.not_ready", {
285
+ agentName: item.orphan.agentName,
286
+ sessionId: item.orphan.sessionId,
287
+ reason: outcome.reason,
288
+ impact: "a local precondition, not a verdict on the session — retried without spending an attempt",
289
+ });
290
+ }
291
+ if (terminal || (!localPrecondition && item.attempts >= this.#maxAttempts)) {
292
+ this.#queue.delete(key);
293
+ // DURABLE, so the next boot does not start the same five attempts over. A machine restarting
294
+ // ~6 times a day would otherwise re-try a hopeless session forever, which is the burst the
295
+ // stagger exists to prevent, merely spread out.
296
+ try {
297
+ this.#deps.markGaveUp(item.orphan.agentName, item.orphan.sessionId, outcome.reason);
298
+ }
299
+ catch (err) {
300
+ this.#deps.logger.warn("session.restart_seal.mark_gave_up.failed", {
301
+ sessionId: item.orphan.sessionId,
302
+ error: extractErrorMessage(err),
303
+ impact: "this session will be re-attempted on every future boot",
304
+ });
305
+ }
306
+ this.#deps.logger.warn("session.restart_seal.gave_up", {
307
+ agentName: item.orphan.agentName,
308
+ sessionId: item.orphan.sessionId,
309
+ attempts: item.attempts,
310
+ reason: outcome.reason,
311
+ // WHY it stopped, not just that it did. "We stopped because they refused" and "we stopped
312
+ // because we ran out of tries" are different facts and lead to different operator actions.
313
+ stoppedBecause: terminal ? "refusal_is_terminal" : "attempts_exhausted",
314
+ // The detail the close COMPUTED and used to drop one function later: which of the six
315
+ // causes behind `seal_interrupted_rejected_by_counterparty` this was, and the leaf counts
316
+ // that identify a frontier strand.
317
+ ...(outcome.detail ? { detail: outcome.detail } : {}),
318
+ // THE CLOSE'S OWN GUIDANCE WINS. A fixed string here told the operator to force-abandon —
319
+ // and for `session_already_sealed` the close handler says in capitals NOT to, because
320
+ // forcing there permanently forfeits a half that is still recoverable.
321
+ // review F4: the fallback must not tell a `seal_interrupted_pending` session it is
322
+ // "interrupted", nor point at force-abandon — forcing there forfeits a signed commitment and
323
+ // the relay-witnessed leaves that are ready to notarize.
324
+ guidance: outcome.guidance ??
325
+ (item.orphan.status === "seal_interrupted_pending"
326
+ ? ("This session holds a seal commitment and could not be notarized automatically. The " +
327
+ "commitment and the full transcript are intact — retry cello_close_session once the " +
328
+ "agent is started and the daemon reports healthy. Do NOT force-abandon it: that ends " +
329
+ "it WITHOUT the receipt it is one request away from having.")
330
+ : ("This session could not be sealed automatically and is still interrupted. Close it with " +
331
+ "cello_close_session, or force-abandon it — which ends it WITHOUT a notarized receipt.")),
332
+ });
333
+ this.#armIfWork();
334
+ return;
335
+ }
336
+ // The directory named a deadline: wait exactly that long. Anything else either batters it with
337
+ // refusals or leaves the session sitting after the grace has elapsed.
338
+ const waitMs = typeof outcome.retryAfterSeconds === "number" && outcome.retryAfterSeconds >= 0
339
+ ? outcome.retryAfterSeconds * 1_000
340
+ : BASE_BACKOFF_MS * 2 ** (item.attempts - 1);
341
+ item.nextAt = this.#now() + waitMs;
342
+ this.#deps.logger.info("session.restart_seal.waiting", {
343
+ agentName: item.orphan.agentName,
344
+ sessionId: item.orphan.sessionId,
345
+ attempts: item.attempts,
346
+ reason: outcome.reason,
347
+ ...(typeof outcome.retryAfterSeconds === "number" ? { retryAfterSeconds: outcome.retryAfterSeconds } : {}),
348
+ retryInMs: waitMs,
349
+ });
350
+ this.#arm(Math.min(this.#staggerMs, waitMs));
351
+ }
352
+ }
353
+ //# sourceMappingURL=restart-seal-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restart-seal-resolver.js","sourceRoot":"","sources":["../src/restart-seal-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { SessionSealLeafStore } from "./session-seal-leaf-store.js";
2
+ import type { DaemonDatabase } from "./sqlcipher-db.js";
3
+ import type { Logger } from "./types.js";
4
+ /** Record an acknowledgement the live path just made. Forward-only: an earlier position is ignored. */
5
+ export declare function recordLastAck(db: DaemonDatabase, a: {
6
+ agentId: string;
7
+ sessionId: string;
8
+ seq: number;
9
+ hash: Uint8Array;
10
+ }): void;
11
+ export declare function lastSeenFromRecord(store: SessionSealLeafStore, logger: Logger, ownPubkey: Uint8Array, sessionIdHex: string): {
12
+ seq: number;
13
+ hash: Uint8Array;
14
+ } | undefined;
15
+ //# sourceMappingURL=resume-last-seen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume-last-seen.d.ts","sourceRoot":"","sources":["../src/resume-last-seen.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,uGAAuG;AACvG,wBAAgB,aAAa,CAC3B,EAAE,EAAE,cAAc,EAClB,CAAC,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GACvE,IAAI,CAMN;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,oBAAoB,EAC3B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,UAAU,EACrB,YAAY,EAAE,MAAM,GACnB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAAG,SAAS,CAgB/C"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Where a resumed session's acknowledgement starts — from the durable record, not from nothing.
3
+ *
4
+ * The relay client keeps "the last position I saw from you" in memory. A session interrupted after
5
+ * messages (Ctrl-C, a restart) came back at position 0, so every close claimed "I have seen nothing
6
+ * from you". The relay refuses that as stale, because the other side's messages are filed after 0,
7
+ * and the re-sign waits for a new message that never comes: the session could never seal (live,
8
+ * 2026-09-14).
9
+ *
10
+ * Two durable sources, both holding RELAY positions — never a position guessed from the local leaf
11
+ * index, which can drift one ahead of the relay:
12
+ * - `session_last_ack`: what the live path acknowledged, written at the moment it did, for every
13
+ * route a message can arrive by (relay, direct, recovered park, screened-out);
14
+ * - the seal leaf store: every leaf the other side authored that the relay delivered, with the
15
+ * Structure 1 they signed.
16
+ * The higher of the two is where the live path would have been.
17
+ */
18
+ import { decodeStructure1 } from "@cello-protocol/protocol-types";
19
+ /** Record an acknowledgement the live path just made. Forward-only: an earlier position is ignored. */
20
+ export function recordLastAck(db, a) {
21
+ db.prepare(`INSERT INTO session_last_ack (agent_id, session_id, relay_seq, hash_hex) VALUES (?, ?, ?, ?)
22
+ ON CONFLICT (agent_id, session_id) DO UPDATE SET relay_seq = excluded.relay_seq, hash_hex = excluded.hash_hex
23
+ WHERE excluded.relay_seq > session_last_ack.relay_seq`).run(a.agentId, a.sessionId, a.seq, Buffer.from(a.hash).toString("hex"));
24
+ }
25
+ export function lastSeenFromRecord(store, logger, ownPubkey, sessionIdHex) {
26
+ const own = Buffer.from(ownPubkey);
27
+ let best = store.recordedAcknowledgement(own.toString("hex"), sessionIdHex);
28
+ for (const leaf of store.getCarry(own.toString("hex"), sessionIdHex)) {
29
+ const s1 = decodeStructure1(leaf.structure1Cbor);
30
+ if (!s1.ok) {
31
+ logger.warn("session.relay.last_seen.resume_leaf_unreadable", {
32
+ sessionId: sessionIdHex, sequenceNumber: leaf.sequenceNumber, reason: s1.reason,
33
+ impact: "this stored leaf is skipped when resuming, so a close may claim an earlier position and be refused as stale",
34
+ });
35
+ continue;
36
+ }
37
+ if (Buffer.from(s1.fields.senderPubkey).equals(own))
38
+ continue;
39
+ if (!best || leaf.sequenceNumber > best.seq)
40
+ best = { seq: leaf.sequenceNumber, hash: s1.fields.contentHash };
41
+ }
42
+ return best;
43
+ }
44
+ //# sourceMappingURL=resume-last-seen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume-last-seen.js","sourceRoot":"","sources":["../src/resume-last-seen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAKlE,uGAAuG;AACvG,MAAM,UAAU,aAAa,CAC3B,EAAkB,EAClB,CAAwE;IAExE,EAAE,CAAC,OAAO,CACR;;2DAEuD,CACxD,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAA2B,EAC3B,MAAc,EACd,SAAqB,EACrB,YAAoB;IAEpB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,IAAI,IAAI,GAAG,KAAK,CAAC,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC;IAC5E,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC;QACrE,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,gDAAgD,EAAE;gBAC5D,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM;gBAC/E,MAAM,EAAE,6GAA6G;aACtH,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YAAE,SAAS;QAC9D,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG;YAAE,IAAI,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAChH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}