@cello-protocol/daemon 0.0.227 → 0.0.228

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 +429 -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,701 @@
1
+ /**
2
+ * CELLO Daemon — RetryQueue
3
+ *
4
+ * Per-session FIFO queue of messages awaiting delivery. When a send over a
5
+ * session node stream fails, the message envelope is added to the queue. When
6
+ * the peer reconnects, the daemon drains the queue in FIFO order.
7
+ *
8
+ * Persistence: SQLCipher table `retry_queue`.
9
+ * Cap: 1,000 messages per session. On overflow the OLDEST is evicted.
10
+ *
11
+ * FIFO invariant: a drain HALTS on the first failure. M3 must never arrive before M2.
12
+ */
13
+ import { extractErrorMessage } from "./error-message.js";
14
+ /** Per-session cap. On overflow the OLDEST entry is evicted. */
15
+ export const RETRY_QUEUE_CAP = 1000;
16
+ /**
17
+ * Park failures from which the entry can NEVER recover, so keeping it only re-attempts it at every
18
+ * boot forever. An ALLOWLIST, and deliberately a short one: everything not named here is kept,
19
+ * because the cost of keeping a deliverable row is one WARN per boot while the cost of dropping one
20
+ * is a message the sender believes was delivered.
21
+ *
22
+ * `owning_agent_not_found` qualifies on evidence, not judgement: it means `agentNameForId` found no
23
+ * `agents` row for the entry's agent_id, and `remove-agent` is permanent and frees the name. The
24
+ * owner cannot come back, so no future boot can park this.
25
+ *
26
+ * The other four are all recoverable on a later boot and MUST NOT be added:
27
+ * no_persisted_relay_endpoint — the endpoint is learned when the session next reconnects
28
+ * no_counterparty — the sessions row can still gain one
29
+ * standing_receiver_unavailable— the receiver is rebuilt on the next agent start
30
+ * signing_key_unavailable — the key provider may simply not be loaded yet
31
+ */
32
+ const PERMANENT_PARK_FAILURES = new Set(["owning_agent_not_found"]);
33
+ export class RetryQueue {
34
+ #db;
35
+ #logger;
36
+ /** Per-session FIFO arrays of DIRECT-resend entries, ordered by position ascending. */
37
+ #queues = new Map();
38
+ /** Per-session position counter for monotonic increment. */
39
+ #positionCounters = new Map();
40
+ /** Per-(agent,session) FIFO arrays of awaiting-ACK content (park target). */
41
+ #awaiting = new Map();
42
+ constructor(db, logger) {
43
+ this.#db = db;
44
+ this.#logger = logger;
45
+ // Create table + index if not exists (inline migration — not Flyway).
46
+ // ORDERING CONSTRAINT: migrateSessionTablesToAgentId (run by SessionNodeManager.initialize) MUST
47
+ // execute BEFORE this constructor, so the table here either does not exist (fresh DB, created
48
+ // below) or already carries agent_id. Do not reorder.
49
+ this.#db.exec(`
50
+ CREATE TABLE IF NOT EXISTS retry_queue (
51
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
52
+ session_id TEXT NOT NULL,
53
+ agent_id TEXT,
54
+ nonce_hex TEXT NOT NULL,
55
+ content_blob BLOB NOT NULL,
56
+ queued_at INTEGER NOT NULL,
57
+ attempts INTEGER NOT NULL DEFAULT 1,
58
+ position INTEGER NOT NULL,
59
+ awaiting_ack INTEGER NOT NULL DEFAULT 0,
60
+ content_hash_hex TEXT,
61
+ structure1_cbor BLOB,
62
+ structure2_cbor BLOB,
63
+ -- 034-CARRYLEAF: the AUTHOR's signature over structure1_cbor, and the leaf DOMAIN. Without
64
+ -- both, a message re-parked after a restart cannot be witnessed by its recipient, and the
65
+ -- withholding attack stays open on exactly the path a crash creates.
66
+ structure1_sig BLOB,
67
+ leaf_kind INTEGER,
68
+ content_hash_alg TEXT
69
+ )
70
+ `);
71
+ // Idempotent add for databases created before M12-P12. SQLite has no ADD COLUMN IF NOT EXISTS,
72
+ // so the duplicate-column error is the expected no-op on an already-migrated DB; any OTHER
73
+ // error is a real failure and must not be swallowed.
74
+ /**
75
+ * 🚨 A COLUMN ADDED HERE NEEDS A SECOND ENTRY, in `agent-id-migration.ts`'s `retry_queue`
76
+ * `createSql`. That rebuild copies the INTERSECTION of the old and new column lists, so a column
77
+ * this loop adds and that DDL omits is DROPPED on the one boot where a legacy database migrates
78
+ * — and then re-added EMPTY by this very loop, which is what makes it silent.
79
+ *
80
+ * It has happened: `structure1_cbor` and `structure2_cbor` were missing from that DDL from the
81
+ * day they were added until `DOD-M15-SEALWIRE-1` part B2b found it.
82
+ */
83
+ for (const col of [
84
+ { name: "structure1_cbor", type: "BLOB" },
85
+ { name: "structure2_cbor", type: "BLOB" },
86
+ { name: "structure1_sig", type: "BLOB" },
87
+ { name: "leaf_kind", type: "INTEGER" },
88
+ // DOD-M15-SEALWIRE-1 part B2b: which content-hash algorithm this queued message was hashed
89
+ // under. The crash-backstop park producer has no other source for it — the frame is gone by
90
+ // the time it runs — and re-parking under the wrong one gets the message refused.
91
+ { name: "content_hash_alg", type: "TEXT" },
92
+ ]) {
93
+ try {
94
+ this.#db.exec(`ALTER TABLE retry_queue ADD COLUMN ${col.name} ${col.type}`);
95
+ }
96
+ catch (err) {
97
+ const msg = extractErrorMessage(err);
98
+ if (!/duplicate column name/i.test(msg))
99
+ throw err;
100
+ }
101
+ }
102
+ this.#db.exec(`
103
+ CREATE INDEX IF NOT EXISTS retry_queue_by_session_position
104
+ ON retry_queue(session_id, position ASC)
105
+ `);
106
+ // Uniqueness MUST include the agent. For an awaiting row nonce_hex IS the content hash, so
107
+ // without the agent in the key two local agents parking identical content in one session collide.
108
+ //
109
+ // It is expressed over COALESCE(agent_id, '') rather than as a bare UNIQUE(agent_id, ...) because
110
+ // SQLite treats NULLs as DISTINCT in a UNIQUE constraint, which would silently REMOVE the
111
+ // (session_id, nonce_hex) dedup that agent-less direct-retry rows (agent_id NULL) rely on.
112
+ // COALESCE folds every agent-less row into one bucket while giving each agent its own.
113
+ this.#db.exec(`
114
+ CREATE UNIQUE INDEX IF NOT EXISTS retry_queue_agent_session_nonce
115
+ ON retry_queue(COALESCE(agent_id, ''), session_id, nonce_hex)
116
+ `);
117
+ }
118
+ /** Composite key for the awaiting-ACK map — (agentId, sessionId). */
119
+ #ak(agentId, sessionId) {
120
+ return `${agentId}\x1f${sessionId}`;
121
+ }
122
+ /**
123
+ * Load all retry queue entries from SQLCipher into memory.
124
+ * Must complete BEFORE the IPC socket opens.
125
+ */
126
+ loadFromDb() {
127
+ const rows = this.#db
128
+ .prepare("SELECT session_id, agent_id, nonce_hex, content_blob, queued_at, attempts, position, awaiting_ack, content_hash_hex, structure1_cbor, structure2_cbor, structure1_sig, leaf_kind, content_hash_alg FROM retry_queue ORDER BY session_id, position ASC")
129
+ .all();
130
+ this.#queues.clear();
131
+ this.#positionCounters.clear();
132
+ this.#awaiting.clear();
133
+ for (const row of rows) {
134
+ if (row.awaiting_ack === 1) {
135
+ // Un-acked content to re-park at startup, keyed by the OWNING agent. An awaiting row ALWAYS
136
+ // carries an agent_id (enqueueAwaitingContent requires one); an agent-less row here is a
137
+ // corrupt row, not a single-agent default, so it is reported and skipped rather than silently
138
+ // re-parked under an empty-string agent — which would merge two agents' content into one queue.
139
+ if (row.agent_id === null) {
140
+ this.#logger.error("message.retry.awaiting.orphaned", {
141
+ sessionId: row.session_id,
142
+ nonce: row.content_hash_hex ?? row.nonce_hex,
143
+ impact: "awaiting-ACK row has no owning agent_id; not re-parked",
144
+ });
145
+ continue;
146
+ }
147
+ const entry = {
148
+ agentId: row.agent_id,
149
+ sessionId: row.session_id,
150
+ contentHashHex: row.content_hash_hex ?? row.nonce_hex,
151
+ contentBlob: this.#openBlob(Uint8Array.from(row.content_blob)),
152
+ // M12-P12 (F2): the ordering record is NOT sealed — it is the relay's own signed record,
153
+ // already public to the relay, and it must be readable to re-seal the park envelope.
154
+ contentHashAlg: row.content_hash_alg ?? undefined,
155
+ structure1Cbor: row.structure1_cbor ? Uint8Array.from(row.structure1_cbor) : undefined,
156
+ structure2Cbor: row.structure2_cbor ? Uint8Array.from(row.structure2_cbor) : undefined,
157
+ structure1Signature: row.structure1_sig ? Uint8Array.from(row.structure1_sig) : undefined,
158
+ leafKind: row.leaf_kind ?? undefined,
159
+ queuedAt: row.queued_at,
160
+ position: row.position,
161
+ };
162
+ const ak = this.#ak(row.agent_id, entry.sessionId);
163
+ // The awaiting position counter MUST be keyed by (agentId, sessionId) — the same key
164
+ // enqueueAwaitingContent uses. Bumping it under the bare session_id here restarts every
165
+ // awaiting position at 1 after a reload, colliding with the rows just loaded.
166
+ const awaitingMax = this.#positionCounters.get(ak) ?? 0;
167
+ if (row.position > awaitingMax)
168
+ this.#positionCounters.set(ak, row.position);
169
+ let q = this.#awaiting.get(ak);
170
+ if (!q) {
171
+ q = [];
172
+ this.#awaiting.set(ak, q);
173
+ }
174
+ q.push(entry);
175
+ continue;
176
+ }
177
+ // Direct-retry entries are session-scoped (no owning agent), so their counter is too.
178
+ const currentMax = this.#positionCounters.get(row.session_id) ?? 0;
179
+ if (row.position > currentMax)
180
+ this.#positionCounters.set(row.session_id, row.position);
181
+ const entry = {
182
+ sessionId: row.session_id,
183
+ nonceHex: row.nonce_hex,
184
+ contentBlob: this.#openBlob(Uint8Array.from(row.content_blob)),
185
+ queuedAt: row.queued_at,
186
+ attempts: row.attempts,
187
+ position: row.position,
188
+ };
189
+ let sessionQueue = this.#queues.get(entry.sessionId);
190
+ if (!sessionQueue) {
191
+ sessionQueue = [];
192
+ this.#queues.set(entry.sessionId, sessionQueue);
193
+ }
194
+ sessionQueue.push(entry);
195
+ }
196
+ }
197
+ /**
198
+ * Enqueue a failed message for later retry.
199
+ * Evicts the oldest entry if cap is reached.
200
+ */
201
+ /**
202
+ * The content blob is stored as plaintext bytes — the whole DB is SQLCipher-encrypted at rest, so
203
+ * there is no per-column cipher. These pass-throughs keep the call sites stable.
204
+ */
205
+ #sealBlob(b) {
206
+ return b;
207
+ }
208
+ #openBlob(b) {
209
+ return b;
210
+ }
211
+ enqueue(sessionId, nonce, contentBlob) {
212
+ const nonceHex = Buffer.from(nonce).toString("hex");
213
+ let sessionQueue = this.#queues.get(sessionId);
214
+ if (!sessionQueue) {
215
+ sessionQueue = [];
216
+ this.#queues.set(sessionId, sessionQueue);
217
+ }
218
+ // Cap enforcement: evict oldest if at limit
219
+ if (sessionQueue.length >= RETRY_QUEUE_CAP) {
220
+ const oldest = sessionQueue[0];
221
+ // Delete from DB
222
+ try {
223
+ this.#db
224
+ .prepare("DELETE FROM retry_queue WHERE session_id = ? AND position = ?")
225
+ .run(sessionId, oldest.position);
226
+ }
227
+ catch (err) {
228
+ this.#logger.error("message.retry.persist.failed", {
229
+ sessionId,
230
+ nonce: oldest.nonceHex,
231
+ error: extractErrorMessage(err),
232
+ });
233
+ }
234
+ // Log eviction BEFORE the new entry is logged.
235
+ this.#logger.warn("message.retry.evicted", {
236
+ sessionId,
237
+ nonce: oldest.nonceHex,
238
+ queueDepth: RETRY_QUEUE_CAP,
239
+ });
240
+ // Remove from in-memory
241
+ sessionQueue.shift();
242
+ }
243
+ // Compute next position
244
+ const currentMax = this.#positionCounters.get(sessionId) ?? 0;
245
+ const nextPosition = currentMax + 1;
246
+ this.#positionCounters.set(sessionId, nextPosition);
247
+ const queuedAt = Date.now();
248
+ const entry = {
249
+ sessionId,
250
+ nonceHex,
251
+ contentBlob,
252
+ queuedAt,
253
+ attempts: 1,
254
+ position: nextPosition,
255
+ };
256
+ // Persist to SQLCipher
257
+ try {
258
+ this.#db
259
+ .prepare(`INSERT INTO retry_queue (session_id, nonce_hex, content_blob, queued_at, attempts, position)
260
+ VALUES (?, ?, ?, ?, ?, ?)`)
261
+ .run(sessionId, nonceHex, Buffer.from(this.#sealBlob(contentBlob)), queuedAt, 1, nextPosition);
262
+ }
263
+ catch (err) {
264
+ this.#logger.error("message.retry.persist.failed", {
265
+ sessionId,
266
+ nonce: nonceHex,
267
+ error: extractErrorMessage(err),
268
+ });
269
+ // Message stays in memory only — it is not durable across a restart.
270
+ }
271
+ sessionQueue.push(entry);
272
+ this.#logger.info("message.retry.queued", {
273
+ sessionId,
274
+ nonce: nonceHex,
275
+ queueDepth: sessionQueue.length,
276
+ });
277
+ }
278
+ /**
279
+ * Drain the session's retry queue in FIFO order.
280
+ * Halts immediately on first failure (FIFO invariant: no out-of-order delivery).
281
+ * Returns the number of successfully delivered messages.
282
+ */
283
+ async drainSession(sessionId, sendFn) {
284
+ const sessionQueue = this.#queues.get(sessionId);
285
+ if (!sessionQueue || sessionQueue.length === 0) {
286
+ return 0;
287
+ }
288
+ let delivered = 0;
289
+ // Drain in FIFO order (array is already sorted by position ascending)
290
+ while (sessionQueue.length > 0) {
291
+ const entry = sessionQueue[0];
292
+ const result = await sendFn(entry.contentBlob);
293
+ if (!result.delivered) {
294
+ // Increment attempts on failure so attemptsTotal reflects actual tries
295
+ entry.attempts++;
296
+ try {
297
+ this.#db
298
+ .prepare("UPDATE retry_queue SET attempts = ? WHERE session_id = ? AND nonce_hex = ?")
299
+ .run(entry.attempts, sessionId, entry.nonceHex);
300
+ }
301
+ catch (err) {
302
+ this.#logger.error("message.retry.persist.failed", {
303
+ sessionId,
304
+ nonce: entry.nonceHex,
305
+ error: extractErrorMessage(err),
306
+ });
307
+ }
308
+ // Halt immediately — FIFO invariant: no out-of-order delivery.
309
+ break;
310
+ }
311
+ // Success: delete from DB
312
+ try {
313
+ this.#db
314
+ .prepare("DELETE FROM retry_queue WHERE session_id = ? AND nonce_hex = ?")
315
+ .run(sessionId, entry.nonceHex);
316
+ }
317
+ catch (err) {
318
+ this.#logger.error("message.retry.persist.failed", {
319
+ sessionId,
320
+ nonce: entry.nonceHex,
321
+ error: extractErrorMessage(err),
322
+ });
323
+ }
324
+ // Remove from memory
325
+ sessionQueue.shift();
326
+ // Increment attempts for logging
327
+ const attemptsTotal = entry.attempts + 1;
328
+ this.#logger.info("message.retry.delivered", {
329
+ sessionId,
330
+ nonce: entry.nonceHex,
331
+ attemptsTotal,
332
+ });
333
+ delivered++;
334
+ }
335
+ // Clean up empty queue entry
336
+ if (sessionQueue.length === 0) {
337
+ this.#queues.delete(sessionId);
338
+ }
339
+ return delivered;
340
+ }
341
+ /**
342
+ * Remove the DIRECT-resend entries (awaiting_ack = 0) of a session that can never drain again.
343
+ *
344
+ * Removal is authorised by ONE thing: the session reached a status from which no resend can
345
+ * succeed. Never by age — "old" is not "undeliverable", and an age sweep discards live content
346
+ * on a slow link (the DOD-SESSION-REAP-1 rule).
347
+ *
348
+ * Awaiting-ACK rows are deliberately left alone. They drain through `drainAwaitingToPark`, which
349
+ * the startup flush really calls, so they are not stranded; their terminal disposition is a
350
+ * separate concern. Deleting them here would discard content that path still owes delivery on.
351
+ *
352
+ * @returns how many entries were removed — 0 is the normal case and is silent.
353
+ */
354
+ reapTerminalSession(sessionId, terminalStatus) {
355
+ // The in-memory queue is NOT the authority, and must not be the source for either half of this.
356
+ // A row written by an earlier daemon exists only in the DB until loadFromDb runs — the live
357
+ // strand was exactly that shape — so the rows to announce are read from the DB, and the same
358
+ // set is then deleted. Announcing from memory while deleting from disk would silently discard
359
+ // any row the map does not happen to hold, which is the precise failure AC3 names as the worse
360
+ // one.
361
+ let doomed;
362
+ try {
363
+ doomed = this.#db
364
+ .prepare("SELECT nonce_hex FROM retry_queue WHERE session_id = ? AND awaiting_ack = 0")
365
+ .all(sessionId);
366
+ }
367
+ catch (err) {
368
+ this.#logger.error("message.retry.persist.failed", {
369
+ sessionId,
370
+ operation: "terminal_reap_select",
371
+ error: extractErrorMessage(err),
372
+ impact: "could not read the rows to reap; nothing was deleted and retryQueueDepth stays pinned",
373
+ });
374
+ return 0;
375
+ }
376
+ if (doomed.length === 0) {
377
+ // Still drop any memory-only residue so depth cannot disagree with the DB, then stay silent:
378
+ // the overwhelming majority of terminal sessions have nothing queued, and an event on every
379
+ // one of them buries the occurrence that means content was actually lost.
380
+ this.#queues.delete(sessionId);
381
+ this.#positionCounters.delete(sessionId);
382
+ return 0;
383
+ }
384
+ let removed;
385
+ try {
386
+ const result = this.#db
387
+ .prepare("DELETE FROM retry_queue WHERE session_id = ? AND awaiting_ack = 0")
388
+ .run(sessionId);
389
+ // Both drivers in use (node:sqlite in tests, SQLCipher in production) report `changes`. Its
390
+ // absence is a driver contract violation, not a case to paper over with a memory count — the
391
+ // whole point of this method is that memory is not authoritative.
392
+ if (result?.changes === undefined) {
393
+ this.#logger.error("message.retry.persist.failed", {
394
+ sessionId,
395
+ operation: "terminal_reap_delete",
396
+ error: "driver returned no `changes` from DELETE",
397
+ impact: "rows may or may not have been removed; the reported count cannot be trusted",
398
+ });
399
+ }
400
+ removed = Number(result?.changes ?? doomed.length);
401
+ }
402
+ catch (err) {
403
+ // A failed DELETE must not leave memory claiming the rows are gone — the next loadFromDb
404
+ // would resurrect them and the depth would silently disagree with the DB.
405
+ this.#logger.error("message.retry.persist.failed", {
406
+ sessionId,
407
+ operation: "terminal_reap_delete",
408
+ error: extractErrorMessage(err),
409
+ impact: "terminal-session reap did not remove the rows; retryQueueDepth stays pinned",
410
+ });
411
+ return 0;
412
+ }
413
+ // Each dropped entry is content the sender believes it sent. Say so per entry, with the nonce,
414
+ // so the loss is nameable rather than a bare count.
415
+ for (const row of doomed) {
416
+ this.#logger.warn("session.retryqueue.content.dropped", {
417
+ sessionId,
418
+ nonce: row.nonce_hex,
419
+ reason: terminalStatus,
420
+ impact: "queued content was never delivered and is now discarded — the session can no longer drain",
421
+ });
422
+ }
423
+ this.#queues.delete(sessionId);
424
+ this.#positionCounters.delete(sessionId);
425
+ this.#logger.info("session.retryqueue.reaped", {
426
+ sessionId,
427
+ entryCount: removed,
428
+ reason: terminalStatus,
429
+ });
430
+ return removed;
431
+ }
432
+ /**
433
+ * DOD-RETRYQ-STRAND-1: reconcile at startup. The terminal-transition hook only covers sessions
434
+ * that go terminal while THIS daemon is running. A session that was already sealed/abandoned
435
+ * before boot never transitions again — `cello_close_session` returns `already_abandoned`
436
+ * without reaching `abandonSession` — so its rows would strand forever with no path that could
437
+ * ever clear them. That is the shape of the row found on the live daemon.
438
+ *
439
+ * Still evidence-gated: the session's terminal status is the evidence, read from the DB. Nothing
440
+ * here consults age.
441
+ *
442
+ * @returns total entries reaped across all already-terminal sessions.
443
+ */
444
+ reapAlreadyTerminalSessions() {
445
+ let rows;
446
+ try {
447
+ rows = this.#db
448
+ .prepare(`SELECT DISTINCT rq.session_id AS session_id, s.status AS status
449
+ FROM retry_queue rq
450
+ JOIN sessions s ON s.session_id = rq.session_id
451
+ WHERE rq.awaiting_ack = 0
452
+ AND s.status IN ('sealed', 'abandoned')`)
453
+ .all();
454
+ }
455
+ catch (err) {
456
+ this.#logger.error("message.retry.persist.failed", {
457
+ operation: "startup_terminal_reconcile",
458
+ error: extractErrorMessage(err),
459
+ impact: "already-terminal sessions were not reconciled; retryQueueDepth may stay pinned",
460
+ });
461
+ return 0;
462
+ }
463
+ let total = 0;
464
+ for (const row of rows) {
465
+ total += this.reapTerminalSession(row.session_id, row.status === "sealed" ? "sealed" : "abandoned");
466
+ }
467
+ if (total > 0) {
468
+ this.#logger.info("session.retryqueue.startup.reconciled", {
469
+ sessionCount: rows.length,
470
+ entryCount: total,
471
+ });
472
+ }
473
+ return total;
474
+ }
475
+ /** Total retry queue depth across all sessions. */
476
+ getTotalDepth() {
477
+ let total = 0;
478
+ for (const queue of this.#queues.values()) {
479
+ total += queue.length;
480
+ }
481
+ return total;
482
+ }
483
+ /** Retry queue depth for a specific session. */
484
+ getSessionDepth(sessionId) {
485
+ return this.#queues.get(sessionId)?.length ?? 0;
486
+ }
487
+ /** Get all entries for a session (FIFO ordered, defensive copy). Used by drain_session IPC. */
488
+ getSessionEntries(sessionId) {
489
+ const queue = this.#queues.get(sessionId);
490
+ return queue ? [...queue] : [];
491
+ }
492
+ // ─── Awaiting-ACK content (park target) ──
493
+ /**
494
+ * Record un-acked content awaiting a `persisted` delivery ACK. Persisted to the SAME
495
+ * retry_queue table (awaiting_ack = 1) so a crash before the relay park confirms is
496
+ * recoverable at startup. Idempotent on (agentId, sessionId, contentHash).
497
+ */
498
+ /**
499
+ * Returns TRUE only when this copy is actually queued. M12-P13 (review HIGH-1): the dedupe branch
500
+ * below DROPS the content, and the caller now commits a hash-chain leaf on the strength of this
501
+ * answer — so "I dropped it" must be reportable, not merely logged. A void return made the drop
502
+ * indistinguishable from a successful enqueue at the call site, which is how a leaf could be
503
+ * committed for content that no longer existed anywhere.
504
+ */
505
+ /**
506
+ * `contentHashAlg` — `DOD-M15-SEALWIRE-1` part B2b. WHICH algorithm `contentHash` was produced
507
+ * under, carried because the crash-backstop park producer has NO OTHER SOURCE for it: it runs at
508
+ * the next boot, long after the frame is gone, and re-parking under the wrong algorithm gets the
509
+ * message refused by the recipient and re-pulled forever.
510
+ *
511
+ * Optional and stored as NULL when absent, never defaulted to the literal `"sha256"` — absent is
512
+ * what `resolveContentHashAlg` reads as "predates the field", and that distinction is the one B1
513
+ * and B2a each had to restore after it was collapsed.
514
+ */
515
+ enqueueAwaitingContent(agentId, sessionId, contentHash, contentBlob, structure1Cbor, structure2Cbor, contentHashAlg, structure1Signature, leafKind) {
516
+ if (!agentId)
517
+ throw new Error("enqueueAwaitingContent: an owning agentId is required");
518
+ const contentHashHex = Buffer.from(contentHash).toString("hex");
519
+ const ak = this.#ak(agentId, sessionId);
520
+ let q = this.#awaiting.get(ak);
521
+ if (!q) {
522
+ q = [];
523
+ this.#awaiting.set(ak, q);
524
+ }
525
+ if (q.some((e) => e.contentHashHex === contentHashHex)) {
526
+ // M12-P12 (review F7): the key is SHA-256(0x00 ‖ content) — content-derived, with no sequence
527
+ // and no nonce. Two identical messages in one session ("ok" at seq 3 and seq 7) collide, and
528
+ // the second is DROPPED here. Silently, until now: the drop looked like a successful enqueue
529
+ // and reproduced the very symptom this class of fix exists to remove. Logged so it is at
530
+ // least visible; keying on (sessionId, canonicalSeq, contentHash) is the real fix.
531
+ this.#logger.warn("message.retry.enqueue.deduped", {
532
+ agentId, sessionId, contentHash: contentHashHex,
533
+ impact: "identical content already queued for this session — this copy is NOT separately queued",
534
+ });
535
+ return false;
536
+ }
537
+ const currentMax = this.#positionCounters.get(ak) ?? 0;
538
+ const position = currentMax + 1;
539
+ const queuedAt = Date.now();
540
+ // FAILS LOUD: a failed persist of awaiting content is DATA LOSS and MUST throw. Do not "recover"
541
+ // by pushing to memory anyway — the content would vanish at the next restart while the caller was
542
+ // told it was parked. Nothing is added to memory, the position counter is not advanced, and the
543
+ // caller learns its content is not durable. Reaching this branch means a real DB failure (disk
544
+ // full, corruption, SQLITE_LOCKED); the agent-scoped unique index rules out a benign collision.
545
+ try {
546
+ this.#db
547
+ .prepare(`INSERT INTO retry_queue (session_id, agent_id, nonce_hex, content_blob, queued_at, attempts, position, awaiting_ack, content_hash_hex, structure1_cbor, structure2_cbor, structure1_sig, leaf_kind, content_hash_alg)
548
+ VALUES (?, ?, ?, ?, ?, ?, ?, 1, ?, ?, ?, ?, ?, ?)`)
549
+ .run(sessionId, agentId, contentHashHex, Buffer.from(this.#sealBlob(contentBlob)), queuedAt, 1, position, contentHashHex, structure1Cbor ? Buffer.from(structure1Cbor) : null, structure2Cbor ? Buffer.from(structure2Cbor) : null, structure1Signature ? Buffer.from(structure1Signature) : null, leafKind ?? null, contentHashAlg ?? null);
550
+ }
551
+ catch (err) {
552
+ const reason = extractErrorMessage(err);
553
+ this.#logger.error("message.retry.persist.failed", {
554
+ agentId,
555
+ sessionId,
556
+ nonce: contentHashHex,
557
+ error: reason,
558
+ impact: "awaiting-ACK content NOT durable — it will be lost if the daemon restarts",
559
+ });
560
+ throw new Error(`awaiting_content_persist_failed: ${reason}`);
561
+ }
562
+ this.#positionCounters.set(ak, position);
563
+ q.push({ agentId, sessionId, contentHashHex, contentBlob, structure1Cbor, structure2Cbor, contentHashAlg, queuedAt, position });
564
+ return true;
565
+ }
566
+ /** Remove an awaiting-ACK entry once its `persisted` ACK arrives. */
567
+ markContentAcked(agentId, sessionId, contentHash) {
568
+ const contentHashHex = Buffer.from(contentHash).toString("hex");
569
+ const ak = this.#ak(agentId, sessionId);
570
+ const q = this.#awaiting.get(ak);
571
+ if (q) {
572
+ const idx = q.findIndex((e) => e.contentHashHex === contentHashHex);
573
+ if (idx !== -1)
574
+ q.splice(idx, 1);
575
+ if (q.length === 0)
576
+ this.#awaiting.delete(ak);
577
+ }
578
+ try {
579
+ this.#db
580
+ .prepare("DELETE FROM retry_queue WHERE agent_id = ? AND session_id = ? AND content_hash_hex = ? AND awaiting_ack = 1")
581
+ .run(agentId, sessionId, contentHashHex);
582
+ }
583
+ catch (err) {
584
+ this.#logger.error("message.retry.persist.failed", {
585
+ sessionId, nonce: contentHashHex, error: extractErrorMessage(err),
586
+ });
587
+ }
588
+ }
589
+ /** Awaiting-ACK depth for a session (un-acked content count). */
590
+ getAwaitingDepth(agentId, sessionId) {
591
+ return this.#awaiting.get(this.#ak(agentId, sessionId))?.length ?? 0;
592
+ }
593
+ /** All (agent, session) pairs that currently hold awaiting-ACK content (for the startup flush). */
594
+ getAwaitingSessions() {
595
+ const out = [];
596
+ for (const q of this.#awaiting.values()) {
597
+ if (q.length > 0)
598
+ out.push({ agentId: q[0].agentId, sessionId: q[0].sessionId });
599
+ }
600
+ return out;
601
+ }
602
+ /**
603
+ * Drain a session's awaiting-ACK content to the relay park target. Each item is
604
+ * independent — unlike the direct FIFO resend, a park failure does NOT halt the rest;
605
+ * the failed item stays queued for the next reconnect / startup flush. Returns the
606
+ * number of entries successfully parked.
607
+ */
608
+ async drainAwaitingToPark(agentId, sessionId, parkFn,
609
+ /**
610
+ * DOD-M15-RELAYABUSE-1 review HIGH-2: called ONCE per pass with the largest retry delay any
611
+ * refusal in that pass reported, or never if none did.
612
+ *
613
+ * ⚠️ Per PASS, not per item, and that is the whole point. A backlog larger than one rate-limit
614
+ * window produces a refusal per remaining item, each carrying its own delay; scheduling on each
615
+ * would be one timer per message — the flood the limiter exists to prevent, generated by the
616
+ * code that respects it. The largest delay is the one that is actually true for the window.
617
+ */
618
+ onRetryAfter) {
619
+ const ak = this.#ak(agentId, sessionId);
620
+ const q = this.#awaiting.get(ak);
621
+ if (!q || q.length === 0)
622
+ return 0;
623
+ let parked = 0;
624
+ let maxRetryAfterMs = 0;
625
+ for (const entry of [...q]) {
626
+ let result;
627
+ try {
628
+ result = await parkFn(entry);
629
+ }
630
+ catch (err) {
631
+ result = { parked: false, error: extractErrorMessage(err) };
632
+ }
633
+ if (!result.parked) {
634
+ if (result.retryAfterMs !== undefined && result.retryAfterMs > 0) {
635
+ maxRetryAfterMs = Math.max(maxRetryAfterMs, result.retryAfterMs);
636
+ }
637
+ // `result.error` MUST be logged. Every failure branch of the park target
638
+ // (owning_agent_not_found, no_persisted_relay_endpoint, no_counterparty,
639
+ // standing_receiver_unavailable, signing_key_unavailable) is otherwise invisible — the only
640
+ // trace would be `parkedCount: 0`, a number with no reason. The entry is still KEPT for the
641
+ // next flush.
642
+ if (PERMANENT_PARK_FAILURES.has(result.error)) {
643
+ // Nothing a later boot can change, so keeping it just re-attempts it forever. ERROR, not
644
+ // WARN: this is the terminal loss of content the sender believes it delivered, and it is
645
+ // the one occurrence in this path that an operator must actually see.
646
+ this.#logger.error("content.park.abandoned", {
647
+ agentId,
648
+ sessionId,
649
+ contentHash: entry.contentHashHex,
650
+ error: result.error,
651
+ impact: "the owning agent no longer exists, so this content can never be parked or delivered; it is discarded rather than retried at every boot",
652
+ });
653
+ const gone = q.indexOf(entry);
654
+ if (gone !== -1)
655
+ q.splice(gone, 1);
656
+ try {
657
+ this.#db
658
+ .prepare("DELETE FROM retry_queue WHERE agent_id = ? AND session_id = ? AND content_hash_hex = ? AND awaiting_ack = 1")
659
+ .run(agentId, sessionId, entry.contentHashHex);
660
+ }
661
+ catch (err) {
662
+ this.#logger.error("message.retry.persist.failed", {
663
+ agentId, sessionId, nonce: entry.contentHashHex, operation: "park_abandon_delete",
664
+ error: extractErrorMessage(err),
665
+ impact: "the unparkable row was not removed and will be re-attempted at every boot",
666
+ });
667
+ }
668
+ continue;
669
+ }
670
+ this.#logger.warn("content.park.failed", {
671
+ agentId,
672
+ sessionId,
673
+ contentHash: entry.contentHashHex,
674
+ error: result.error,
675
+ });
676
+ continue; // keep for next reconnect / startup flush
677
+ }
678
+ const idx = q.indexOf(entry);
679
+ if (idx !== -1)
680
+ q.splice(idx, 1);
681
+ try {
682
+ this.#db
683
+ .prepare("DELETE FROM retry_queue WHERE agent_id = ? AND session_id = ? AND content_hash_hex = ? AND awaiting_ack = 1")
684
+ .run(agentId, sessionId, entry.contentHashHex);
685
+ }
686
+ catch (err) {
687
+ this.#logger.error("message.retry.persist.failed", {
688
+ sessionId, nonce: entry.contentHashHex, error: extractErrorMessage(err),
689
+ });
690
+ }
691
+ parked += 1;
692
+ }
693
+ if (q.length === 0)
694
+ this.#awaiting.delete(ak);
695
+ // ONCE per pass — see the parameter's note on why this is not per item.
696
+ if (maxRetryAfterMs > 0)
697
+ onRetryAfter?.(maxRetryAfterMs);
698
+ return parked;
699
+ }
700
+ }
701
+ //# sourceMappingURL=retry-queue.js.map