@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,717 @@
1
+ import { LEAF_KIND_CTRL } from "./session-relay-client.js";
2
+ import { decodeStructure1 } from "@cello-protocol/protocol-types";
3
+ import { decodeParkEnvelope, authenticateParkedEntry, decodeParkedDeliveryAck } from "./park-envelope.js";
4
+ import { MAX_REFUSED_PARKED_ENTRIES } from "./session-node-types.js";
5
+ import { ParkEnvelopeError } from "./park-envelope.js";
6
+ import { extractErrorMessage } from "./error-message.js";
7
+ export class ParkRecovery {
8
+ #ctx;
9
+ constructor(ctx, parkedDrainBackstopMs) {
10
+ this.#ctx = ctx;
11
+ this.#parkedDrainBackstopMs = parkedDrainBackstopMs;
12
+ }
13
+ /**
14
+ * Arm the backstop clock from the START of watching, not from the epoch — otherwise the first
15
+ * tick always fires a sweep on top of the install drain that just ran.
16
+ */
17
+ armBackstopClock(now) {
18
+ this.#parkedDrainLastBackstopAt = now;
19
+ }
20
+ #parkFaultRemaining = 0;
21
+ #parkFaultCause = "standing_receiver_creating";
22
+ #contentParkHook = null;
23
+ /** DOD-PARK-DRAIN-1: the composition root's parked-mailbox drain — see setParkedDrainHook. */
24
+ #parkedDrainHook = null;
25
+ #parkedDrainHookAbsenceLogged = false;
26
+ /**
27
+ * MSG-001-3b (2b): the live content-park deposit. The manager resolves the recipient + relay
28
+ * endpoint from the session entry and calls this when a send is NOT confirmed delivered
29
+ * (direct-fail or TTF expiry). The daemon's hook seals (sealToRecipient) + deposits via
30
+ * ContentParkClient. Best-effort.
31
+ */
32
+ /**
33
+ * SEC-1 / review M4: parked entries already refused by the authentication gate, keyed
34
+ * `${agent}:${session}:${contentHash}` → the refusal reason. Bounded (see
35
+ * #rememberRefusedParkedEntry) because its keys come from a REMOTE mailbox.
36
+ */
37
+ #refusedParkedEntries = new Map();
38
+ #parkedDrainLastBackstopAt = 0;
39
+ /** DOD-PARK-DRAIN-1: how often the backstop drain rides the watchdog grid — see #parkedDrainBackstopTick. */
40
+ #parkedDrainBackstopMs;
41
+ /** Arm the park-deposit fault. Returns the count now armed. */
42
+ injectParkFault(count, cause) {
43
+ this.#parkFaultRemaining = Math.max(0, count);
44
+ if (cause)
45
+ this.#parkFaultCause = cause;
46
+ return this.#parkFaultRemaining;
47
+ }
48
+ /** Remaining armed park faults — so a test can assert the fault was actually consumed. */
49
+ getParkFaultRemaining() {
50
+ return this.#parkFaultRemaining;
51
+ }
52
+ /**
53
+ * MSG-001-3b (2b): inject the live content-park deposit (seal + ContentParkClient.deposit).
54
+ * Injected by the composition root (daemon.ts). When absent, a not-confirmed send still records
55
+ * the durable awaiting entry (crash backstop) but does not deposit live.
56
+ * DOD-LEAVEMSG-1 (cello-unit-reviewer HIGH fix): the hook returns a TYPED result — `{ok:true}` or
57
+ * `{ok:false, reason}` — mirroring RetryQueue's ParkFn contract. It must NEVER resolve `{ok:true}`
58
+ * merely because it didn't throw: the production hook's own failure branches (standing receiver
59
+ * unavailable, relay explicitly rejects the deposit) log-and-return without throwing, and a
60
+ * throw-only contract would silently report those as success — the exact "system lies about its
61
+ * own health" bug the reviewer caught (a park that never happened reported to the operator as
62
+ * "dispatched to relay," with the durable retry_queue backstop skipped because sendContent's own
63
+ * caller only enqueues on an honest {ok:false}).
64
+ */
65
+ setContentParkHook(fn) {
66
+ this.#contentParkHook = fn;
67
+ }
68
+ /**
69
+ * DOD-PARK-DRAIN-1: inject the parked-mailbox drain (daemon.ts → contentPark.autoRecoverForAgent).
70
+ *
71
+ * The manager owns the two events that mean "content may be waiting for this agent on a relay":
72
+ * a standing receiver was (re)built, and the slow backstop sweep. It does not own the drain
73
+ * itself — that needs the agent's key provider and the inbound ingest funnel. So it calls out.
74
+ *
75
+ * Injected by the composition root, not passed to the constructor: the manager is built long
76
+ * before the content park exists (content-park.ts documents why that ordering is load-bearing).
77
+ */
78
+ setParkedDrainHook(fn) {
79
+ this.#parkedDrainHook = fn;
80
+ }
81
+ /** Ask for a drain. Never throws — a broken drain must never cost the caller its receiver. */
82
+ fireParkedDrain(agentName, reason) {
83
+ const hook = this.#parkedDrainHook;
84
+ if (this.#ctx.shuttingDown())
85
+ return;
86
+ if (!hook) {
87
+ // DOD-PARK-DRAIN-1 (review F4): an unwired hook silently reverts this entire unit, and the
88
+ // defect it fixes was itself a trigger that silently was not there. Say so — once, because
89
+ // the fire points are on a timer grid. Not an error: a SessionNodeManager built by a test
90
+ // that does not exercise the drain is legitimate.
91
+ if (!this.#parkedDrainHookAbsenceLogged) {
92
+ this.#parkedDrainHookAbsenceLogged = true;
93
+ this.#ctx.logger.warn("content.recover.drain.hook.absent", { agentName, reason });
94
+ }
95
+ return;
96
+ }
97
+ // The success-side trail. Without it, a live run cannot say WHICH trigger delivered the
98
+ // content — which is exactly the claim the outstanding acceptance clause has to evidence.
99
+ this.#ctx.logger.info("content.recover.drain.triggered", { agentName, reason });
100
+ try {
101
+ hook(agentName, reason);
102
+ }
103
+ catch (err) {
104
+ this.#ctx.logger.warn("content.recover.drain.hook.failed", {
105
+ agentName,
106
+ reason,
107
+ error: extractErrorMessage(err),
108
+ });
109
+ }
110
+ }
111
+ /**
112
+ * MSG-001-3b (2b): deposit un-confirmed content to the relay store-and-forward backstop — keyed
113
+ * to the recipient, on the SAME relay this session is witnessed by — so an offline recipient
114
+ * recovers it (at the sequence the witness already assigned, R1). Best-effort, never throws.
115
+ * DOD-LEAVEMSG-1: returns whether the deposit actually succeeded (false if no hook/relay is
116
+ * configured, or the hook rejects) so a caller with a live response to shape (sendContent) can
117
+ * distinguish "genuinely parked" from "nothing recoverable" instead of guessing. Callers that
118
+ * fire this from an async backstop with no live caller (the TTF-expiry path) may ignore the
119
+ * result — the deposit itself and its logging are unchanged either way.
120
+ */
121
+ /**
122
+ * `contentHashAlg` is `string | undefined`, NOT optional — B2b-1 review F4's shape, applied to the
123
+ * last place it was missing.
124
+ *
125
+ * Optional, dropping it at a call site was neither a typecheck error nor a test failure, because
126
+ * absent silently means `sha256` and that is the only value in play today. Measured: the
127
+ * direct-dial-fail route's mutant SURVIVED the whole daemon suite. Requiring the argument — even
128
+ * when its value is `undefined` — forces each of the three callers to state what this message was
129
+ * hashed under, so a new fourth caller cannot omit it by accident.
130
+ */
131
+ async parkContent(agentName, sessionId, contentHashHex, content, structure1Cbor, structure2Cbor, contentHashAlg, structure1Signature, parkLeafKind) {
132
+ // Fault injection FIRST, so it reproduces the real shape: the refusal happens at the same point
133
+ // the live hook refuses (before any deposit), with the same event and the same `cause`.
134
+ if (this.#parkFaultRemaining > 0) {
135
+ this.#parkFaultRemaining -= 1;
136
+ this.#ctx.logger.warn("content.park.deposit.failed", {
137
+ sessionId,
138
+ contentHash: contentHashHex,
139
+ reason: "standing_receiver_unavailable",
140
+ cause: this.#parkFaultCause,
141
+ injected: true,
142
+ });
143
+ return { outcome: "refused", cause: this.#parkFaultCause };
144
+ }
145
+ const hook = this.#contentParkHook;
146
+ const entry = this.#ctx.activeEntry(this.#ctx.sessionKey(agentName, sessionId));
147
+ // M12-P12 (review F6): "no park target configured" is NOT a refused deposit. Content in a
148
+ // session with no relay was never recoverable through the park, so queuing it for re-park would
149
+ // be a lie that grows the DB forever — every boot and every agent start would retry a row whose
150
+ // only possible outcome is no_persisted_relay_endpoint. Reported as unconfigured, not refused.
151
+ if (!hook || !entry || !entry.relayPeerId || !entry.relayAddrs)
152
+ return { outcome: "unconfigured" };
153
+ try {
154
+ const result = await hook({
155
+ // SEC-1: the hook must sign as the SENDING agent — it needs to know who that is.
156
+ agentName,
157
+ sessionId,
158
+ recipientPubkeyHex: entry.counterpartyPubkey,
159
+ relayPeerId: entry.relayPeerId,
160
+ relayAddrs: entry.relayAddrs,
161
+ contentHashHex,
162
+ content,
163
+ // DOD-MSG-4 (2b): carry the relay's signed ordering record so the parked entry is self-ordering
164
+ // on recover too (sealed INTO the ciphertext envelope — INV-3: the relay still sees only ciphertext).
165
+ structure1Cbor,
166
+ structure2Cbor,
167
+ // 034-CARRYLEAF: the author's signature over `structure1Cbor`, so the RECIPIENT can witness
168
+ // this leaf if its author never does. Without it the mailbox route stays truncatable.
169
+ structure1Signature,
170
+ // 034-CARRYLEAF: the leaf DOMAIN, so a recovered leaf is never witnessed under a guess.
171
+ leafKind: parkLeafKind,
172
+ // B2b: the park route must name the same algorithm the direct frame did, or the recipient
173
+ // verifies the same message two different ways depending on which route it took.
174
+ contentHashAlg,
175
+ });
176
+ // DOD-LEAVEMSG-1 (reviewer HIGH fix): check the TYPED result, not just "didn't throw" — the
177
+ // production hook's own failure branches (standing receiver unavailable, relay explicitly
178
+ // rejects) resolve normally after logging, they never throw. A throw-only check would report
179
+ // those as success.
180
+ if (!result.ok) {
181
+ this.#ctx.logger.warn("content.park.deposit.failed", {
182
+ sessionId,
183
+ contentHash: contentHashHex,
184
+ reason: result.reason,
185
+ cause: result.cause,
186
+ });
187
+ return {
188
+ outcome: "refused",
189
+ cause: result.cause ?? result.reason,
190
+ ...(result.retryAfterMs !== undefined ? { retryAfterMs: result.retryAfterMs } : {}),
191
+ };
192
+ }
193
+ return { outcome: "parked" };
194
+ }
195
+ catch (err) {
196
+ /**
197
+ * THE CODE GOES IN `cause`, THE PARAGRAPH GOES IN THE LOG — B2b-2 constraint 6.
198
+ *
199
+ * `cause` is documented as the machine-readable half and is handed to callers that branch on
200
+ * it. Putting `err.message` there meant a producer-side refusal — this build cannot seal that
201
+ * algorithm — was indistinguishable from a relay outage, so it inherited the relay's guidance:
202
+ * *"queued, and will be re-sent when the relay link is back."* The relay was never asked, and
203
+ * every re-park throws in the same place, so that sends the operator to the wrong subsystem
204
+ * and then tells them to wait for a recovery that cannot happen.
205
+ *
206
+ * `instanceof`, not a string test: an untyped failure keeps the old behaviour exactly, so this
207
+ * narrows what the caller can distinguish without changing anything it could not.
208
+ */
209
+ const coded = err instanceof ParkEnvelopeError ? err : null;
210
+ this.#ctx.logger.warn("content.park.deposit.failed", {
211
+ sessionId,
212
+ contentHash: contentHashHex,
213
+ ...(coded === null ? {} : { reason: coded.reason, detail: coded.detail }),
214
+ error: extractErrorMessage(err),
215
+ });
216
+ return {
217
+ outcome: "refused",
218
+ cause: coded?.reason ?? (extractErrorMessage(err)),
219
+ };
220
+ }
221
+ }
222
+ /**
223
+ * DOD-M15-DELIVERYACK-1 unit 1 — DEPOSIT OUT-OF-BAND MACHINE TRAFFIC WITH NO LIVE SESSION NODE.
224
+ *
225
+ * `parkContent` resolves the recipient and the relay from the in-memory session entry, which is
226
+ * exactly what does not exist in the case this is for: the counterparty's daemon is down, so there
227
+ * is no live node, and an acknowledgement produced by the mailbox-recovery path had nowhere to go.
228
+ * Measured, not assumed — the live journey showed `content.delivery.ack.skipped
229
+ * / session_node_gone` at precisely this point.
230
+ *
231
+ * So the endpoint is taken from the PERSISTED session row, the same source the crash-backstop
232
+ * flush uses for the same reason. Everything else is `parkContent`'s path unchanged: the payload
233
+ * is sealed to the recipient and the relay holds ciphertext it cannot read.
234
+ *
235
+ * ⚠️ NOT FOR CONTENT. Content parked with no ordering record and no signature over one is a
236
+ * message that is readable and permanently unnotarizable, which is the withholding attack's whole
237
+ * shape — `parkContent`'s own comment says so. Out-of-band traffic takes no leaf and enters no
238
+ * receipt, so it has nothing to be truncated out of.
239
+ */
240
+ async parkOutOfBand(agentName, sessionId, slotHashHex, payload) {
241
+ const hook = this.#contentParkHook;
242
+ if (!hook)
243
+ return { outcome: "unconfigured" };
244
+ const entry = this.#ctx.activeEntry(this.#ctx.sessionKey(agentName, sessionId));
245
+ const record = this.#ctx.getSessionRecord(agentName, sessionId);
246
+ const recipientPubkeyHex = entry?.counterpartyPubkey ?? record?.counterparty_pubkey;
247
+ const relay = entry?.relayPeerId && entry?.relayAddrs
248
+ ? { relayPeerId: entry.relayPeerId, relayAddrs: entry.relayAddrs }
249
+ : this.#ctx.persistedRelayEndpoint(agentName, sessionId);
250
+ /**
251
+ * TWO CAUSES, TWO ANSWERS — review F5. One label for both sent an operator to the relay when the
252
+ * real problem was a session row with no counterparty recorded, which is a local fault and has a
253
+ * completely different remedy.
254
+ */
255
+ if (!recipientPubkeyHex)
256
+ return { outcome: "refused", cause: "no_counterparty_recorded" };
257
+ if (!relay)
258
+ return { outcome: "unconfigured" };
259
+ try {
260
+ const result = await hook({
261
+ agentName,
262
+ sessionId,
263
+ recipientPubkeyHex,
264
+ relayPeerId: relay.relayPeerId,
265
+ relayAddrs: relay.relayAddrs,
266
+ contentHashHex: slotHashHex,
267
+ content: payload,
268
+ contentHashAlg: undefined,
269
+ });
270
+ if (!result.ok)
271
+ return { outcome: "refused", cause: result.cause ?? result.reason };
272
+ return { outcome: "parked" };
273
+ }
274
+ catch (err) {
275
+ return { outcome: "refused", cause: extractErrorMessage(err) };
276
+ }
277
+ }
278
+ /** DOD-M12B-INDEX-1 — this agent's own K_local pubkey, for attributing its own held content.
279
+ * Null when it cannot be resolved: an UNATTRIBUTED annex row is true, a falsely attributed one
280
+ * is not, and this is the record that outlives the session. */
281
+ /**
282
+ * Test seam for `#recoverOwnSealCtrlLeaf` (documented on the method itself, below). The
283
+ * distinction it draws — "there is none" versus "I could not tell" — is the whole safety
284
+ * property, and it had no coverage at any level.
285
+ */
286
+ recoverOwnSealCtrlLeafForTest(agentName, sessionId) {
287
+ return this.recoverOwnSealCtrlLeaf(agentName, sessionId);
288
+ }
289
+ /**
290
+ * DOD-M12B-INTERRUPTED-ESCALATE-1 — our own SEAL ctrl leaf, if a previous run already posted one.
291
+ *
292
+ * Returns the two values a unilateral escalation runs on, rebuilt from durable state:
293
+ * the ctrl leaf's relay-assigned sequence, and the root the tree WOULD have with that leaf
294
+ * appended. The content hash cannot be recomputed — the seal payload embeds a `close_timestamp`
295
+ * — so it is read out of the signed Structure 1 the store already holds.
296
+ *
297
+ * Null when there is no own ctrl leaf, which is the ordinary first-close case.
298
+ */
299
+ recoverOwnSealCtrlLeaf(agentName, sessionId) {
300
+ const ownPubkey = this.#ctx.ownPubkeyHex(agentName);
301
+ // "I CANNOT TELL" IS NOT "THERE IS NONE". Returning the absent answer here would let the caller
302
+ // submit a second SEAL ctrl leaf — the exact permanent loss this method exists to prevent — on
303
+ // the strength of a lookup that failed. Every path that could not determine the answer says so.
304
+ if (!ownPubkey) {
305
+ this.#ctx.logger.warn("session.seal.leaf.recover.failed", {
306
+ sessionId, agentName, reason: "own_pubkey_unresolved",
307
+ impact: "cannot tell whether a SEAL ctrl leaf was already posted, so the close refuses rather than risk a second one",
308
+ });
309
+ return "unknown";
310
+ }
311
+ let own;
312
+ try {
313
+ own = this.#ctx.getSealCarry(ownPubkey, sessionId)
314
+ .find((l) => l.leafKind === LEAF_KIND_CTRL && l.senderPubkeyHex === ownPubkey);
315
+ }
316
+ catch (err) {
317
+ this.#ctx.logger.warn("session.seal.leaf.recover.failed", {
318
+ sessionId, agentName, reason: "carry_read_failed",
319
+ error: extractErrorMessage(err),
320
+ impact: "cannot tell whether a SEAL ctrl leaf was already posted, so the close refuses rather than risk a second one",
321
+ });
322
+ return "unknown";
323
+ }
324
+ if (!own)
325
+ return "none";
326
+ try {
327
+ // Canonical Structure 1 is [version, content_hash, sender_pubkey, session_id, last_seen_seq,
328
+ // timestamp], plus last_seen_hash at index 6 on a v2 claim (020-ACKHASH). content_hash is
329
+ // index 1 in both.
330
+ const s1 = decodeStructure1(own.structure1Cbor);
331
+ if (!s1.ok) {
332
+ this.#ctx.logger.warn("session.seal.leaf.recover.failed", {
333
+ // NAMED AT ITS CAUSE — review F2. This read `structure1_content_hash_missing`, which was
334
+ // accurate when the only check was `contentHash instanceof Uint8Array`. It now fires for an
335
+ // unknown layout, undecodable CBOR and a malformed field too, and sends an operator to
336
+ // audit a content hash when the layout is what disagreed. `structure1Reason` carries which.
337
+ sessionId, agentName, reason: "structure1_decode_failed", structure1Reason: s1.reason,
338
+ impact: "cannot tell whether a SEAL ctrl leaf was already posted, so the close refuses rather than risk a second one",
339
+ });
340
+ return "unknown";
341
+ }
342
+ const contentHashHex = Buffer.from(s1.fields.contentHash).toString("hex");
343
+ return {
344
+ reportedRootHex: this.#ctx.getSessionTree(agentName, sessionId).rootWithAppendedHex(contentHashHex),
345
+ sequenceNumber: own.sequenceNumber,
346
+ };
347
+ }
348
+ catch (err) {
349
+ // NOT a decode failure — review F3. `decodeStructure1` never throws, so the only thrower left
350
+ // inside this try is the tree derivation below it. Calling this `structure1_decode_failed`
351
+ // pointed at CBOR for a fault in `rootWithAppendedHex`, and made one reason string mean two
352
+ // unrelated things in the same log event.
353
+ this.#ctx.logger.warn("session.seal.leaf.recover.failed", {
354
+ sessionId, agentName, reason: "seal_root_derivation_threw",
355
+ error: extractErrorMessage(err),
356
+ impact: "cannot tell whether a SEAL ctrl leaf was already posted, so the close refuses rather than risk a second one",
357
+ });
358
+ return "unknown";
359
+ }
360
+ }
361
+ /**
362
+ * SEC-1 — THE ONLY WAY PARKED CONTENT ENTERS THE TRANSCRIPT.
363
+ *
364
+ * Authentication and ingest are FUSED here on purpose, and must stay fused. A caller cannot ingest
365
+ * parked content without passing the signature gate, because this is the only entry point. Exposing
366
+ * a separate `decode → ingest` path — with the signature check as its own optional step — is a
367
+ * downgrade attack: an attacker omits the thing that triggers the check, and the check never runs.
368
+ * A gate the caller can skip by leaving a field out is not a gate.
369
+ *
370
+ * FAILS CLOSED. No signature / bad signature / signer is not this session's counterparty / no
371
+ * session at all → REFUSED, nothing is appended, nothing is written, and the caller MUST NOT
372
+ * confirm-delete the entry from the relay (a forgery must not be able to evict itself, and a
373
+ * genuine bug must not silently eat mail).
374
+ */
375
+ async recoverParkedEntry(agentName, sessionId, recipientPubkey, unsealed, contentHash, correlationId) {
376
+ const contentHashHex = Buffer.from(contentHash).toString("hex");
377
+ // Review M4: a refused entry is deliberately NOT confirm-deleted (a forgery must not be able to
378
+ // evict itself), which means an adversary could otherwise make us unseal + Ed25519-verify the
379
+ // same forged entries on EVERY reconnect, forever — turning the mailbox into an amplification
380
+ // vector against our own recover path. Remember what we already refused and skip the crypto on
381
+ // re-pull. Still never confirmed, so nothing is destroyed. In-memory and BOUNDED: the cost of
382
+ // forgetting across a restart is one more verify, which is exactly the pre-existing behavior.
383
+ const refusalKey = `${this.#ctx.sessionKey(agentName, sessionId)}:${contentHashHex}`;
384
+ const remembered = this.#refusedParkedEntries.get(refusalKey);
385
+ if (remembered) {
386
+ this.#ctx.logger.warn("content.recover.unauthenticated", {
387
+ agentName,
388
+ sessionId,
389
+ contentHash: contentHashHex,
390
+ reason: remembered,
391
+ repeat: true,
392
+ correlationId,
393
+ });
394
+ return { ok: false, reason: remembered };
395
+ }
396
+ const env = decodeParkEnvelope(unsealed);
397
+ const verdict = authenticateParkedEntry({
398
+ env,
399
+ sessionIdHex: sessionId,
400
+ recipientPubkey,
401
+ contentHash,
402
+ counterpartyPubkeyHex: this.#ctx.getSessionRecord(agentName, sessionId)?.counterparty_pubkey,
403
+ });
404
+ if (!verdict.ok) {
405
+ // SEC-1: loud, and specific about WHICH gate refused — a silent drop here would look
406
+ // identical to "no mail", which is how an injection attempt would go unnoticed.
407
+ this.rememberRefusedParkedEntry(refusalKey, verdict.reason);
408
+ this.#ctx.logger.warn("content.recover.unauthenticated", {
409
+ agentName,
410
+ sessionId,
411
+ contentHash: contentHashHex,
412
+ reason: verdict.reason,
413
+ envelopeVersion: env.version,
414
+ correlationId,
415
+ });
416
+ return { ok: false, reason: verdict.reason };
417
+ }
418
+ /**
419
+ * DOD-M15-DELIVERYACK-1 unit 1 — IS THIS A MESSAGE, OR AN ACKNOWLEDGEMENT OF ONE?
420
+ *
421
+ * Placed HERE and not one line earlier, deliberately: the envelope gate above has just proved
422
+ * the depositor is this session's counterparty, so nothing a stranger or the relay put in the
423
+ * mailbox reaches this branch. Placed here and not LATER, because the next thing that happens to
424
+ * a recovered entry is ingest — and an acknowledgement ingested as a message would be appended
425
+ * to the transcript, take a leaf, and enter the notarized record, which is the one thing machine
426
+ * traffic must never do.
427
+ *
428
+ * The decision does not touch the relay: the tag lives inside the seal, so the relay can neither
429
+ * read it, strip it to make an acknowledgement be ingested as content, nor add one to make a
430
+ * message disappear into the evidence store.
431
+ *
432
+ * The ACCEPTANCE is not done here. This function's caller holds the database handle, and putting
433
+ * the verify-bind-store here would need this module to reach a store it has no business holding;
434
+ * the caller hands the payload to the one function both routes share.
435
+ */
436
+ const parkedAck = decodeParkedDeliveryAck(env.content);
437
+ if (parkedAck) {
438
+ this.#ctx.logger.debug("content.recover.delivery_ack", {
439
+ agentName, sessionId, correlationId,
440
+ contentHash: Buffer.from(parkedAck.contentHash).toString("hex"),
441
+ mailboxSlot: contentHashHex,
442
+ });
443
+ return { ok: true, deliveryAck: parkedAck };
444
+ }
445
+ // Authenticated. The ordering record (when present) is still verified independently by
446
+ // #recordFrameOrdering — it answers a different question (WHERE this message sits in the
447
+ // canonical sequence, per the relay) and is still best-effort: a bad record must not block a
448
+ // message whose AUTHORSHIP we have now proven.
449
+ // DOD-FRONTIER-STRAND-1 AC1: keep the VERIFIED position and hand it to ingest, so dedup can
450
+ // tell a redelivery (same position) from a genuinely new identical message (new position).
451
+ let recoveredSeq = null;
452
+ if (env.structure1Cbor && env.structure2Cbor) {
453
+ recoveredSeq = this.#ctx.recordOrderingRecord(agentName, sessionId, env.structure1Cbor, env.structure2Cbor, contentHash, correlationId);
454
+ }
455
+ this.#ctx.logger.info("content.recover.verified", {
456
+ agentName,
457
+ sessionId,
458
+ contentHash: contentHashHex,
459
+ correlationId,
460
+ });
461
+ /**
462
+ * DOD-M15-SEALWIRE-1 part B1 — RECOVERED-FROM-PARK CONTENT CARRIES NO ALGORITHM NAME, and that
463
+ * is correct today rather than an oversight.
464
+ *
465
+ * The park envelope has no field for one, so this passes `undefined`, which resolves to
466
+ * `sha256`. In part B1 that was exactly right and provably so: no sender salted, so every parked
467
+ * entry in existence had been hashed unsalted.
468
+ *
469
+ * ✅ FIXED IN PART B2a, at BOTH sites: here, and the independent verifier in `content-park.ts`.
470
+ * The envelope carries the algorithm from v3 onward, and a v2 envelope's absent field resolves to
471
+ * `sha256` — which is what a peer predating the field actually used.
472
+ *
473
+ * > **⛔ THE LAST SENTENCE HERE READ "Every envelope this build emits is still v2, because
474
+ * > nothing salts yet." THAT IS FALSE NOW.** B2b-2 turned salting on: a session holding an
475
+ * > agreed salt hashes under `hmac-sha256-salt-v1`, so this build DOES emit v3 envelopes.
476
+ * > Rewritten rather than deleted, per `DOD-M15-CLAIM-COMMENTS-1` — the sentence is why the
477
+ * > staleness survived, and an absence would read as deliberate.
478
+ * >
479
+ * > The consequence is not theoretical: a v2 envelope carrying a SALTED hash recomputes unsalted
480
+ * > at the far end and reports `content_hash_mismatch` — a false tamper claim on honest content,
481
+ * > which also blocks auto-co-sign at seal. Measured on 2026-08-24.
482
+ *
483
+ * ─── AND THE REFUSAL DOES NOT HOLD — review F2 ────────────────────────────────────────────
484
+ *
485
+ * A direct-path refusal sends no delivery ACK, so the sender's TTF backstop parks the message
486
+ * and it arrives here seconds later, where `undefined` means `sha256` and it may well succeed.
487
+ * A frame refused BY NAME on one path is then accepted on the other, with nothing tying the two
488
+ * together in the log — an operator sees an ERROR and, ten seconds on, a healthy delivery.
489
+ *
490
+ * That is not repaired by refusing here as well: today's park entry genuinely IS `sha256`, and
491
+ * refusing it would drop good mail. What is wrong is the SILENCE, so the reconciliation is
492
+ * logged instead — the two events become one story, and B2 removes the ambiguity for real by
493
+ * putting the name in the envelope.
494
+ */
495
+ /**
496
+ * ⚠️ LOGGED AFTER THE INGEST, NOT BEFORE IT — review B2a F1, and the previous version of this
497
+ * block ANNOUNCED A DELIVERY THAT DOES NOT HAPPEN.
498
+ *
499
+ * It fired on a memo hit and said *"the message is being delivered by the other route"*, which
500
+ * was true-by-construction only while the park path passed `undefined` for the algorithm. Part
501
+ * B2a made the park path carry `env.contentHashAlg` — so a peer that names an unreadable
502
+ * algorithm on the direct path AND parks the same content as v3 with the same name is refused
503
+ * AGAIN here, re-arms the memo, is never confirm-deleted, and repeats on every drain. An
504
+ * unbounded stream of warnings asserting a delivery that never occurs, drowning the real
505
+ * reconciliation when the sender eventually re-parks as v2.
506
+ *
507
+ * The claim is only sound once the ingest has actually succeeded, so it is made there.
508
+ */
509
+ const priorDeclaredAlg = this.#ctx.refusals.priorUnreadableAlg(agentName, sessionId, contentHashHex);
510
+ /**
511
+ * `DOD-M15-AUTHORSHIP-ABSENT-1` review H1 — READ BEFORE THE INGEST, reported after it.
512
+ *
513
+ * Same reasoning as `priorDeclaredAlg` directly above: the memo says what THIS side did to this
514
+ * content on the direct path, and the ingest below is what decides whether the other route
515
+ * succeeded. Reading it after would race the clear.
516
+ */
517
+ /**
518
+ * ⚠️ **REFUSING AN UNNOTARIZABLE MAILBOX MESSAGE WAS TRIED HERE AND REVERTED — recorded so the
519
+ * next attempt starts from what actually blocks it, not from the compatibility argument that
520
+ * does not.**
521
+ *
522
+ * The mailbox is the remaining route for the withholding attack: a counterparty who parks a
523
+ * message with no ordering record AND no signature over its ordering claim delivers something
524
+ * readable that can never enter a receipt. The obvious fix is to refuse it here.
525
+ *
526
+ * **It cannot ship yet, and the reason is our OWN path, not an older peer's.** `SEC-1` AC5 is
527
+ * explicit: the crash-backstop shape — signed by the sender, no ordering record — is legal and
528
+ * must be accepted. That envelope is produced when content is queued before anything witnessed
529
+ * it, and from the recipient's side it is INDISTINGUISHABLE from an attacker's stripped one. So
530
+ * this refusal rejects our own crash recovery along with the attack.
531
+ *
532
+ * **What closes it:** make the crash backstop sign an ordering claim at enqueue time, the way
533
+ * the live park path now does (`#signOwnContentClaim` already produces exactly this artifact).
534
+ * Then "no ordering record and no signed claim" is a shape only a modified client emits, and
535
+ * refusing it costs nothing real. The retry queue already carries the two columns for it —
536
+ * `structure1_sig` and `leaf_kind` — which were added for this and are populated on the live
537
+ * path today.
538
+ */
539
+ const refusedForAuthorship = this.#ctx.refusals.wasRefusedOnDirectPath(agentName, sessionId, contentHashHex);
540
+ const result = await this.#ctx.ingestReceivedContent(agentName, sessionId, env.content, contentHash, correlationId, recoveredSeq ?? undefined,
541
+ // The envelope's own claim, verbatim — `undefined` on a v2 envelope, which resolves to
542
+ // `sha256` and is exactly right for a peer that predates the field.
543
+ env.contentHashAlg);
544
+ /**
545
+ * `ok` IS NOT "DELIVERED" — review B2a pass-2 F1, and this is the same class the F1 fix was
546
+ * raised for, one predicate over.
547
+ *
548
+ * `ingestReceivedContent` returns `ok` in three shapes and only one is a delivery:
549
+ * `{ok, held: true}` — buffered behind an ordering gap; not appended, not shown YET.
550
+ * `{ok, screenedOut: true}` — leafed and PERMANENTLY never shown to the agent.
551
+ * Announcing *"the message was delivered by the other route"* for either is a false all-clear on
552
+ * the operator's one line about this message, and the memo is deleted in the same breath, so
553
+ * nothing ever re-raises it.
554
+ *
555
+ * Leaving the memo ARMED on `held` is deliberate: the release path re-enters ingest, which is
556
+ * when delivery actually happens, and the claim becomes true there.
557
+ *
558
+ * ⚠️ THE `screenedOut` CLAUSE IS UNREACHABLE TODAY and is kept anyway — said out loud so nobody
559
+ * reads it as covered. A terminal inbound block needs a detector the shipping security gateway
560
+ * does not wire, so it returns only `allow` and a fail-closed non-terminal `block`. Measured: a
561
+ * mutant dropping just that clause SURVIVES the suite. It stays because the day a detector is
562
+ * wired, this line is the difference between an all-clear and a permanent silent discard — and
563
+ * finding that then costs more than the clause costs now.
564
+ */
565
+ /**
566
+ * ─── WITNESS A RECOVERED MESSAGE ITS SENDER NEVER WITNESSED — 034-CARRYLEAF review F1 ────────
567
+ *
568
+ * The mailbox route's half of the withholding fix. `recoveredSeq` absent means no relay ordering
569
+ * record came with it, which is the same shape the direct path treats as "their submit never
570
+ * happened" — and it is reached the same two ways: their relay was briefly unreachable, or they
571
+ * are withholding on purpose.
572
+ *
573
+ * ⚠️ THE SIGNATURE COMES FROM THE ENVELOPE, AND ONLY A v4 ENVELOPE HAS ONE. `parkSig`
574
+ * authenticates the DEPOSIT — it signs `(session_id, recipient_pubkey, content_hash)` — and the
575
+ * relay will not accept it, because a counter-submit is admissible only against the author's own
576
+ * signature over their own ordering claim. A v2 or v3 envelope therefore cannot be witnessed on
577
+ * its author's behalf, and is left alone rather than guessed at.
578
+ *
579
+ * **So this route is closed against a peer running a stock client, and open to one that
580
+ * deliberately emits an older envelope.** Requiring v4 is the step that closes it completely,
581
+ * and it waits on nothing in the field emitting v2 or v3 — the same tolerate-then-enforce
582
+ * sequence every bilateral wire change in this milestone follows.
583
+ */
584
+ if (result.ok && result.held !== true && result.screenedOut !== true &&
585
+ recoveredSeq === null && env.structure1Cbor && env.structure1Signature) {
586
+ const kind = env.leafKind;
587
+ if (typeof kind === "number") {
588
+ this.#ctx.witnessReceivedLeaf(agentName, sessionId, contentHash, env.structure1Cbor, env.structure1Signature, kind, correlationId);
589
+ }
590
+ }
591
+ if (priorDeclaredAlg !== undefined && result.ok && result.held !== true && result.screenedOut !== true) {
592
+ // Cleared ONLY on a real reconciliation. Clearing on the lookup (as this did) forgets the
593
+ // refusal even when the recovery fails, so the next genuine reconciliation says nothing.
594
+ this.#ctx.refusals.clearUnreadableAlg(agentName, sessionId, contentHashHex);
595
+ this.#ctx.logger.warn("content.recover.alg_refusal_reconciled", {
596
+ agentName, sessionId, correlationId,
597
+ contentHash: contentHashHex,
598
+ priorDeclaredAlg,
599
+ recoveredAlg: env.contentHashAlg ?? "(absent → sha256)",
600
+ impact: "THIS EXACT MESSAGE was refused on the direct path because it named an algorithm this build cannot read, and the same content has now been accepted via the relay park under an algorithm this build CAN read. The refusal did not hold: the message was delivered by the other route.",
601
+ });
602
+ }
603
+ /**
604
+ * ⚠️ **THE AUTHORSHIP REFUSAL DOES NOT HOLD EITHER, AND THIS IS WHERE IT SAYS SO** — review H1.
605
+ *
606
+ * `DOD-M15-AUTHORSHIP-ABSENT-1` refuses a direct-path frame with no usable proof of who wrote
607
+ * it. Refusing sends no delivery ACK, so the sender's TTF backstop parks the message and it
608
+ * arrives here — where the ENVELOPE's signature over (session_id, recipient_pubkey,
609
+ * content_hash) is what authenticates it, and `authenticateParkedEntry` above has already
610
+ * accepted it. That is correct and it is deliberately NOT changed here: gating mail retrieval
611
+ * on a per-message record the relay-degraded path is allowed to omit is the false-positive shape
612
+ * this whole unit is careful to avoid, and the order that added the refusal scopes the park
613
+ * envelope out explicitly.
614
+ *
615
+ * What must not stand is the SILENCE. Without this line the operator reads "refused" and then
616
+ * watches the message appear, with nothing connecting the two — the same reconciliation gap the
617
+ * algorithm refusal above already pays for. What they need to know is the part that is really
618
+ * lost: the message arrived, and its INDIVIDUAL author is attested by the mailbox envelope
619
+ * rather than by a signature over that message's own bytes.
620
+ *
621
+ * Same `ok && !held && !screenedOut` predicate as above, and for the same reason: `ok` is not
622
+ * "delivered".
623
+ */
624
+ if (refusedForAuthorship && result.ok && result.held !== true && result.screenedOut !== true) {
625
+ this.#ctx.refusals.clearRefusedOnDirectPath(agentName, sessionId, contentHashHex);
626
+ /**
627
+ * ⚠️ RENAMED FROM `…authorship_refusal_reconciled` by `029c` review F4, because the memo it
628
+ * reads now covers EVERY direct-path refusal and not only the authorship one. Keeping the old
629
+ * name would have put "no usable proof of who wrote it" on a message that was actually
630
+ * refused for not decrypting — a wrong cause is worse than a general one.
631
+ *
632
+ * The specific reason is already on the operator's notice; what this event adds is that the
633
+ * refusal did not hold.
634
+ */
635
+ this.#ctx.logger.warn("content.recover.refusal_reconciled", {
636
+ agentName, sessionId, correlationId,
637
+ contentHash: contentHashHex,
638
+ impact: "THIS EXACT MESSAGE was refused on the direct path and the same content has now been accepted from the relay mailbox, where the sealed envelope proves the sender. The refusal did not hold: the message WAS delivered by the other route. What the direct path could not confirm is still unconfirmed — the mailbox proves WHO sent it and nothing about the check that refused it — so the receipt can show this message arrived without showing everything a directly-delivered one would.",
639
+ guidance: "Nothing to do about this message. The fix named on the original refusal still stands: until the cause clears, every message on this session takes the slower route and lands with less attached to it.",
640
+ });
641
+ }
642
+ /**
643
+ * DOD-M15-DELIVERYACK-1 unit 1 — SIGN FOR IT, exactly as the direct path does.
644
+ *
645
+ * ⚠️ NOT ON `held` OR `screenedOut`. The acknowledgement says *this machine took delivery of
646
+ * these bytes*, and neither of those is delivery yet: a held frame is buffered behind an
647
+ * ordering gap and is acknowledged when the release path re-enters ingest, and a screened-out
648
+ * one is leafed but never shown. Acknowledging either would tell the sender something that is
649
+ * not true, on the one signal this whole unit exists to make trustworthy.
650
+ *
651
+ * Fire-and-forget: the acknowledgement's own path handles its own failure (it parks), and a
652
+ * message that WAS recovered must never be reported as a failed recovery because signing for it
653
+ * did not work out.
654
+ */
655
+ if (result.ok && result.held !== true && result.screenedOut !== true) {
656
+ this.#ctx.sendDeliveryAck(agentName, sessionId, contentHash, correlationId);
657
+ }
658
+ /**
659
+ * Move the acknowledgement a CLOSE will sign, exactly as the live content-frame path does.
660
+ *
661
+ * This was declared on the context and never called, so a message recovered from the mailbox
662
+ * was placed in the tree while the acknowledgement stayed at the last message the relay had
663
+ * delivered directly. The relay refuses a close that acknowledges less than the other side filed
664
+ * (`seal_stale`), and the close's retry waits for an advance nothing on this path makes. Live
665
+ * 2026-09-17, session 4d0aaa41: back from 7 minutes offline, the agent read the message and could
666
+ * not close, twice.
667
+ *
668
+ * Gated on `held` but NOT on `screenedOut`: a screened-out message is still a leaf in the root
669
+ * the close signs, so its position is one this side has to acknowledge. `recoveredSeq` null means
670
+ * no verified ordering record, and there is no position to claim.
671
+ */
672
+ if (result.ok && result.held !== true && recoveredSeq !== null) {
673
+ this.#ctx.noteAcknowledgeable(agentName, sessionId, recoveredSeq, contentHash);
674
+ }
675
+ return result;
676
+ }
677
+ /**
678
+ * Review M4: bounded memo of parked entries we have already refused, so a mailbox stuffed with
679
+ * forgeries cannot force an unbounded unseal+verify on every reconnect. FIFO-capped — the cap
680
+ * matters more than the retention: forgetting an entry only costs one extra verification, whereas
681
+ * an unbounded map would be a memory leak fed by a remote party (the exact class the DOD-MSG-4
682
+ * review already caught once in the offered-moniker map).
683
+ */
684
+ rememberRefusedParkedEntry(key, reason) {
685
+ if (this.#refusedParkedEntries.size >= MAX_REFUSED_PARKED_ENTRIES) {
686
+ const oldest = this.#refusedParkedEntries.keys().next();
687
+ if (!oldest.done)
688
+ this.#refusedParkedEntries.delete(oldest.value);
689
+ }
690
+ this.#refusedParkedEntries.set(key, reason);
691
+ }
692
+ /**
693
+ * DOD-PARK-DRAIN-1: the backstop sweep — every agent holding a standing receiver gets a drain
694
+ * every #parkedDrainBackstopMs, whether or not anything happened.
695
+ *
696
+ * The trigger-driven drains (agent start, receiver install, a reservation lost or regained,
697
+ * signaling reconnect) are what actually deliver. 056-SLOTDEAD: "receiver rebuild" was one of
698
+ * them and there is no rebuild any more. This exists because the incident was a MISSING trigger, and a missing
699
+ * trigger is invisible: the daemon looked healthy, the content was intact on the relay, and the
700
+ * only thing that ever moved it was a human restarting the daemon. With the sweep, the worst a
701
+ * future gap in trigger coverage can cost is one interval of latency. Safe by construction —
702
+ * ingest is deduped and the relay is delete-on-confirm, so a redundant drain pulls nothing.
703
+ */
704
+ parkedDrainBackstopTick(now) {
705
+ if (this.#parkedDrainHook === null)
706
+ return;
707
+ if (now - this.#parkedDrainLastBackstopAt < this.#parkedDrainBackstopMs)
708
+ return;
709
+ this.#parkedDrainLastBackstopAt = now;
710
+ for (const agentName of this.#ctx.agentsWithLiveReceiver()) {
711
+ if (!this.#ctx.agentWantsReceiver(agentName))
712
+ continue; // agent went offline
713
+ this.fireParkedDrain(agentName, "periodic_backstop");
714
+ }
715
+ }
716
+ }
717
+ //# sourceMappingURL=park-recovery.js.map