@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,389 @@
1
+ import { extractErrorMessage } from "./error-message.js";
2
+ export class HeldContent {
3
+ #ctx;
4
+ constructor(ctx) {
5
+ this.#ctx = ctx;
6
+ }
7
+ /** A getter so the moved queries still read `this.#db` and narrow exactly as they did. */
8
+ get #db() {
9
+ return this.#ctx.db();
10
+ }
11
+ #heldRestored = new Set();
12
+ #heldReleased = new Set();
13
+ /** M8C-ABUSE-1 (reviewer HIGH fix, D18): bytes currently sitting in the out-of-order hold
14
+ * buffer for this session — NOT yet committed leaves, but real bytes in memory that would
15
+ * otherwise let multiple held chunks each individually pass the size gate while cumulatively
16
+ * exceeding it once #releaseHeld drains them. */
17
+ getHeldBytesTotal(agentName, sessionId) {
18
+ // DOD-M12B-STRAND-1: hydrate first. Reading the Map before the durable holds are back
19
+ // under-counts, and this gate exists to stop several held chunks each passing the size cap
20
+ // individually while cumulatively exceeding it — an under-count is the bypass.
21
+ this.ensureHeldRestored(agentName, sessionId);
22
+ const held = this.#ctx.heldContent.get(this.#ctx.sessionKey(agentName, sessionId));
23
+ if (!held)
24
+ return 0;
25
+ let total = 0;
26
+ for (const entry of held.values())
27
+ total += entry.content.length;
28
+ return total;
29
+ }
30
+ /**
31
+ * DOD-M12B-STRAND-1 — restore this session's held frames into memory.
32
+ *
33
+ * Called when a session node is (re)created, which is the moment the session becomes able to
34
+ * append again. Loading at daemon boot instead would be wrong for the same reason the old code
35
+ * was wrong: a frame is only releasable against a tree, and the tree is loaded per session.
36
+ *
37
+ * A frame whose content the tree ALREADY HOLDS at that position is dropped — re-appending it
38
+ * would change the root a seal signs over. That test is `hashAt`, not `canonical_seq < frontier`:
39
+ * the two counters are different spaces and this file documents them drifting, so the index
40
+ * comparison alone would destroy a frame the tree never held. See the drift branch below.
41
+ */
42
+ ensureHeldRestored(agentName, sessionId, opts) {
43
+ const key = this.#ctx.sessionKey(agentName, sessionId);
44
+ if (!this.#heldRestored.has(key)) {
45
+ // Set BEFORE restoring, so the #ensureHeldRestored inside #releaseHeld below returns straight
46
+ // away instead of recursing.
47
+ this.#heldRestored.add(key);
48
+ this.restoreHeldContent(agentName, sessionId);
49
+ }
50
+ // A RESTORED FRAME MAY ALREADY BE IN ORDER, and nothing else would ever notice.
51
+ //
52
+ // #releaseHeld has one caller: the tail of a successful inbound ingest. Every other way the tree
53
+ // grows — an outbound send leaf, a queued or rejected leaf — advances the frontier without
54
+ // draining. While holds died with the session node that cost seconds; now the hold is durable,
55
+ // so the stall is durable too: the counterparty's message sits on disk at exactly the next slot,
56
+ // is never delivered, and `sealReadiness` counts it, so the session cannot close either.
57
+ // Undeliverable AND unsealable, forever, from one restart.
58
+ //
59
+ // TRACKED SEPARATELY FROM THE HYDRATION. A read-only caller (the status surface) hydrates and
60
+ // must NOT release — otherwise `cello status` appends leaves, advances the session root, writes
61
+ // transcript rows and rings the doorbell, which makes a diagnostic command the thing that
62
+ // delivers messages. One shared flag would also let that read CONSUME the release the next real
63
+ // ingest was going to perform, which is the stall above, reintroduced.
64
+ if (opts?.release === false)
65
+ return;
66
+ if (this.#heldReleased.has(key))
67
+ return;
68
+ this.#heldReleased.add(key);
69
+ if (this.#ctx.heldContent.get(key)?.size) {
70
+ const counterparty = this.#ctx.queries.getSessionRecord(agentName, sessionId)?.counterparty_pubkey;
71
+ if (counterparty)
72
+ this.releaseHeld(agentName, sessionId, counterparty);
73
+ }
74
+ }
75
+ restoreHeldContent(agentName, sessionId) {
76
+ if (!this.#db)
77
+ return;
78
+ let rows;
79
+ try {
80
+ rows = this.#db.prepare(`SELECT canonical_seq, content_blob, original_blob, content_hash_hex, screened_out, correlation_id, origin, leaf_kind
81
+ FROM held_content WHERE agent_id = ? AND session_id = ? ORDER BY canonical_seq ASC`).all(this.#ctx.requireAgentId(agentName), sessionId);
82
+ }
83
+ catch (err) {
84
+ this.#ctx.logger.error("session.content.held.restore.failed", {
85
+ agentName, sessionId,
86
+ impact: "verified content held before the restart is not in memory and cannot be released",
87
+ error: extractErrorMessage(err),
88
+ });
89
+ return;
90
+ }
91
+ if (rows.length === 0)
92
+ return;
93
+ const key = this.#ctx.sessionKey(agentName, sessionId);
94
+ let held = this.#ctx.heldContent.get(key);
95
+ if (!held) {
96
+ held = new Map();
97
+ this.#ctx.heldContent.set(key, held);
98
+ }
99
+ const tree = this.#ctx.getSessionTree(agentName, sessionId);
100
+ const frontier = tree.size();
101
+ let restored = 0;
102
+ let superseded = 0;
103
+ let drifted = 0;
104
+ for (const row of rows) {
105
+ // ASK THE TREE WHAT IS AT THAT POSITION — do not infer it from the index.
106
+ //
107
+ // `canonical_seq` is the RELAY's sequence space; `frontier` is this tree's msg-leaf count.
108
+ // The two drift, on purpose and by documented cases: the relay counts CTRL leaves the tree
109
+ // never appends, and a first message whose relay submit failed leaves the tree one ahead.
110
+ // Under drift `canonical_seq < frontier` is TRUE for a frame the tree has never held, and
111
+ // deleting on that comparison destroys verified content while reporting it as tidy-up —
112
+ // the exact failure this unit exists to end, reintroduced on the recovery path.
113
+ const occupant = tree.hashAt(row.canonical_seq);
114
+ if (occupant === row.content_hash_hex) {
115
+ this.#ctx.queries.deleteHeldContent(agentName, sessionId, row.canonical_seq);
116
+ superseded++;
117
+ continue;
118
+ }
119
+ if (row.canonical_seq < frontier) {
120
+ // The position is taken by DIFFERENT content. The frame cannot be appended (that would
121
+ // rewrite a committed leaf) and must not be deleted (it is verified content nobody else
122
+ // holds), so it goes to the annex that exists for exactly this — content that arrived for
123
+ // a chain that can no longer carry it — and only then does the row go.
124
+ const annexed = this.#ctx.queries.recordSealedAnnex(agentName, sessionId, row.content_hash_hex, new Uint8Array(row.content_blob),
125
+ // DOD-M12B-INDEX-1: our own held send is attributed to US, never to the counterparty.
126
+ row.origin === "sent"
127
+ ? this.#ctx.queries.ownPubkeyHex(agentName)
128
+ : this.#ctx.queries.getSessionRecord(agentName, sessionId)?.counterparty_pubkey ?? null);
129
+ this.#ctx.logger.error("session.content.held.position_drifted", {
130
+ agentName, sessionId, canonicalSeq: row.canonical_seq, frontier,
131
+ contentHash: row.content_hash_hex, occupant, annexed,
132
+ correlationId: row.correlation_id ?? undefined,
133
+ impact: annexed
134
+ ? "the relay's position for this frame is occupied by different content — it cannot join the chain and is readable only from the annex"
135
+ : "the relay's position for this frame is occupied by different content AND the annex write failed — the durable row is kept rather than destroyed",
136
+ });
137
+ if (annexed)
138
+ this.#ctx.queries.deleteHeldContent(agentName, sessionId, row.canonical_seq);
139
+ drifted++;
140
+ continue;
141
+ }
142
+ held.set(row.canonical_seq, {
143
+ content: new Uint8Array(row.content_blob),
144
+ ...(row.original_blob ? { originalContent: new Uint8Array(row.original_blob) } : {}),
145
+ contentHashHex: row.content_hash_hex,
146
+ ...(row.correlation_id ? { correlationId: row.correlation_id } : {}),
147
+ ...(row.screened_out ? { screenedOut: true } : {}),
148
+ ...(row.origin === "sent" ? { origin: "sent" } : {}),
149
+ ...(row.leaf_kind === "doc" ? { kind: "doc" } : {}),
150
+ /**
151
+ * ⚠️ `restoredAcrossRestart` EXISTS TO NAME A LOSS, NOT TO CHANGE BEHAVIOUR — review pass 2, H1.
152
+ *
153
+ * `held_content` has no authorship columns, so a SENT message held behind a gap and released
154
+ * after a daemon restart comes back with **no signature** — its transcript row records
155
+ * `self_authored` with no proof, indistinguishable from an unwitnessed send. That is the
156
+ * defect bullet 5 exists to end, reappearing on the recovery path, and it was silent.
157
+ *
158
+ * The proof cannot be reconstructed here: it was made over Structure-1 bytes this process no
159
+ * longer holds. **So the honest move is to say so, not to fabricate one** — a proof that
160
+ * cannot be checked, presented as one that can, is worse than the absence.
161
+ *
162
+ * Two BLOB columns would close it properly (this table already carries two `ALTER TABLE …
163
+ * ADD COLUMN` migrations, so the pattern exists). Under a frozen gate a log is additive and
164
+ * tightenable where a schema change is neither, so this announces the loss now and
165
+ * `DOD-M15-HELD-AUTHORSHIP-1` carries the column.
166
+ */
167
+ restoredAcrossRestart: true,
168
+ });
169
+ restored++;
170
+ }
171
+ if (held.size === 0)
172
+ this.#ctx.heldContent.delete(key);
173
+ this.#ctx.logger.info("session.content.held.restored", {
174
+ agentName, sessionId, restored, superseded, drifted, frontier,
175
+ canonicalSeqs: [...held.keys()].sort((a, b) => a - b),
176
+ // The flow ids of the frames that came back, so a restored message ties to the
177
+ // `session.content.held` that opened its flow before the restart.
178
+ correlationIds: rows.map((r) => r.correlation_id).filter((c) => c !== null),
179
+ });
180
+ }
181
+ /**
182
+ * DOD-MSG-4: drain held out-of-order content in canonical order. After a leaf is appended, any
183
+ * held entry whose canonical sequence equals the new next-expected index is now in order — append
184
+ * it, then check again (a single fill can release a run of consecutive held messages).
185
+ */
186
+ releaseHeld(agentName, sessionId, senderPubkey) {
187
+ const key = this.#ctx.sessionKey(agentName, sessionId);
188
+ // DOD-M12B-STRAND-1: hydrate before scanning. Restoring eagerly at session-node creation put
189
+ // it behind writes that can fail — one failed `sessions` row upsert and the frames stayed on
190
+ // disk, invisible, which is the same outcome as losing them.
191
+ this.ensureHeldRestored(agentName, sessionId);
192
+ const held = this.#ctx.heldContent.get(key);
193
+ if (!held)
194
+ return 0;
195
+ let released = 0;
196
+ for (;;) {
197
+ const nextExpected = this.#ctx.getSessionTree(agentName, sessionId).size();
198
+ const entry = held.get(nextExpected);
199
+ if (!entry)
200
+ break;
201
+ held.delete(nextExpected);
202
+ // DOD-M12B-STRAND-1: released content leaves the durable store in the same breath. A row
203
+ // that outlives its release would re-append the same content on the next boot — growing the
204
+ // tree and changing a root that has already been signed.
205
+ this.#ctx.queries.deleteHeldContent(agentName, sessionId, nextExpected);
206
+ // DOD-M12B-INDEX-1: OUR OWN held message. It leafs at its canonical index and is transcribed
207
+ // as SENT — never routed down the received path, which would attribute our words to the
208
+ // counterparty in the sealed record and hand them back to our own agent as inbound.
209
+ if (entry.origin === "sent") {
210
+ // The KIND the leaf was placed with, not a hardcoded "msg" — a document leaf that had to
211
+ // wait for its position must come back as a document leaf, or the two sides disagree about
212
+ // what the chain contains.
213
+ this.#ctx.appendSessionLeaf(agentName, sessionId, entry.kind ?? "msg", entry.contentHashHex, entry.correlationId);
214
+ // A DOCUMENT frame takes a leaf and NO transcript row — matching what the immediate-append
215
+ // path does for one. Writing one would put raw CBOR into the operator's transcript as
216
+ // something they said, which is the same attribution failure as releasing it inbound.
217
+ if (entry.kind === "doc") {
218
+ released++;
219
+ this.#ctx.logger.info("session.content.released", {
220
+ sessionId, sequenceNumber: nextExpected, leafKind: "doc", correlationId: entry.correlationId,
221
+ });
222
+ if (held.size === 0) {
223
+ this.#ctx.heldContent.delete(key);
224
+ break;
225
+ }
226
+ continue;
227
+ }
228
+ // OBSERVED, not assumed — the received path already does this. The leaf commits either way,
229
+ // so a dropped transcript write means the operator's OWN message is missing from their own
230
+ // transcript with the chain saying it is there, and nothing anywhere said so.
231
+ // bullet 5: the proof was captured at submit time and rides the held entry — see #heldContent.
232
+ /**
233
+ * THE RESTART LOSS, ANNOUNCED — review pass 2, H1. Only for an entry that actually crossed a
234
+ * restart: an in-memory held entry carries its proof, and an unwitnessed send legitimately
235
+ * has none, so warning on every absent proof would fire on a designed benign state and bury
236
+ * the one occurrence that means something.
237
+ */
238
+ if (entry.restoredAcrossRestart === true && entry.authorship === undefined) {
239
+ this.#ctx.logger.warn("session.content.released.authorship.lost", {
240
+ agentName, sessionId, sequenceNumber: nextExpected, correlationId: entry.correlationId,
241
+ impact: "this message was held behind a gap, survived a daemon restart, and is now committed with " +
242
+ "attribution 'self_authored' and NO signature. Its transcript row asserts its author rather " +
243
+ "than proving one, and is indistinguishable from a send the relay never witnessed.",
244
+ guidance: "Not recoverable after the fact — the signature covered Structure-1 bytes this process no longer " +
245
+ "holds, and fabricating one would be worse than the absence. Tracked as DOD-M15-HELD-AUTHORSHIP-1: " +
246
+ "held_content needs the two proof columns so a restart carries them.",
247
+ });
248
+ }
249
+ if (!this.#ctx.records.recordTranscriptMessage(agentName, sessionId, nextExpected, "sent", entry.content, entry.correlationId, entry.authorship)) {
250
+ this.#ctx.logger.error("session.content.released.transcript.failed", {
251
+ agentName, sessionId, sequenceNumber: nextExpected, correlationId: entry.correlationId,
252
+ impact: "this side's own message is committed to the chain but missing from its transcript",
253
+ });
254
+ }
255
+ }
256
+ else if (entry.screenedOut) {
257
+ this.#ctx.appendSessionLeaf(agentName, sessionId, "msg", entry.contentHashHex, entry.correlationId);
258
+ // The SAME witness leak as the immediate-append terminal-block branch (see the block comment
259
+ // at the `if (terminalBlock)` append in `ingestReceivedContent`), on the held path. This
260
+ // branch also bypasses `#appendVerifiedContent`, where the drop lives — so a blocked message
261
+ // that arrived out of order left `missingLeaves` stuck at 1 and the session unsealable.
262
+ this.#ctx.witnessedSeq.get(key)?.delete(entry.contentHashHex);
263
+ }
264
+ else {
265
+ this.#ctx.appendVerifiedContent(agentName, sessionId, entry.content, entry.contentHashHex, senderPubkey, entry.correlationId, entry.originalContent);
266
+ }
267
+ released++;
268
+ this.#ctx.logger.info("session.content.released", {
269
+ sessionId,
270
+ sequenceNumber: nextExpected,
271
+ screenedOut: entry.screenedOut === true,
272
+ correlationId: entry.correlationId,
273
+ });
274
+ if (held.size === 0) {
275
+ this.#ctx.heldContent.delete(key);
276
+ break;
277
+ }
278
+ }
279
+ return released;
280
+ }
281
+ /**
282
+ * Test seam: put an own leaf in the HELD state instead of the tree — 033-ACKEMIT.
283
+ *
284
+ * The state `placeOwnLeaf` produces when the relay assigns a position ahead of our tail: the leaf
285
+ * exists on this side and is not in the tree, while the counterparty already has it from the relay
286
+ * and can acknowledge it. Reproducing it through the real hold map rather than by asserting the
287
+ * tree is short is what makes the acknowledgement test measure the case instead of a neighbour of
288
+ * it.
289
+ */
290
+ holdOwnLeafForTest(agentName, sessionId, canonicalSeq, contentHashHex) {
291
+ const key = this.#ctx.sessionKey(agentName, sessionId);
292
+ let held = this.#ctx.heldContent.get(key);
293
+ if (!held) {
294
+ held = new Map();
295
+ this.#ctx.heldContent.set(key, held);
296
+ }
297
+ held.set(canonicalSeq, { content: new Uint8Array(), contentHashHex, origin: "sent", kind: "msg" });
298
+ }
299
+ /**
300
+ * ⚠️ **ORPHANED COMMENT, OWNER UNKNOWN — do not attach it to the method below.** It reads
301
+ * *"@returns true iff the UPDATE was executed without error (a failed write is logged, never
302
+ * thrown)"*, and `annexHeldContentOnTerminal` returns `void` and runs no such UPDATE. It was
303
+ * already stranded in `session-node-manager.ts` before 037 moved this code, and Rule C carried it
304
+ * verbatim rather than dropping a sentence that is true of SOMETHING.
305
+ *
306
+ * Kept, marked, and NOT reattached: the nearest candidate by behaviour is
307
+ * `SessionQueries.markCounterpartyAbandoned`, which already has its own doc — so attaching it
308
+ * there on a guess is the same defect this marker exists to stop. Delete it only once its owner is
309
+ * identified, or reattach it then.
310
+ */
311
+ /**
312
+ * DOD-M12B-STRAND-1 — move a terminal session's held frames to the annex.
313
+ *
314
+ * A held frame is content this agent RECEIVED and VERIFIED. When its session ends it can never
315
+ * join that chain (appending behind a committed root is not an option, and ingest refuses a
316
+ * terminal session outright), but it is still the operator's mail and no other copy exists —
317
+ * the sender was never acknowledged for it. `sealed_session_annex` is where M12-P17 already puts
318
+ * content that arrives for an ended session; this is the same content arriving slightly earlier.
319
+ *
320
+ * ANNEX FIRST, DELETE SECOND, per row. A crash between them costs a duplicate the annex's
321
+ * INSERT OR IGNORE absorbs; the other order costs the message. A row whose annex write fails is
322
+ * KEPT — the retention sweep will find it again, and a leftover row is cheaper than a lost one.
323
+ */
324
+ annexHeldContentOnTerminal(agentName, sessionId, status) {
325
+ if (!this.#db)
326
+ return;
327
+ let rows;
328
+ try {
329
+ rows = this.#db.prepare(`SELECT canonical_seq, content_blob, content_hash_hex, held_at, origin
330
+ FROM held_content WHERE agent_id = ? AND session_id = ? ORDER BY canonical_seq ASC`).all(this.#ctx.requireAgentId(agentName), sessionId);
331
+ }
332
+ catch (err) {
333
+ this.#ctx.logger.error("session.content.held.annex.scan.failed", {
334
+ agentName, sessionId, status,
335
+ impact: "held frames for a terminal session were not moved to the annex and remain unreadable",
336
+ error: extractErrorMessage(err),
337
+ });
338
+ return;
339
+ }
340
+ if (rows.length === 0)
341
+ return;
342
+ const counterparty = this.#ctx.queries.getSessionRecord(agentName, sessionId)?.counterparty_pubkey ?? null;
343
+ let annexed = 0;
344
+ let kept = 0;
345
+ for (const row of rows) {
346
+ // DOD-M12B-INDEX-1: ATTRIBUTION. A `sent` row is our own message. Stamping the counterparty's
347
+ // pubkey on it would put our words in their mouth in the one record that survives the
348
+ // session — the same failure the release path was changed to avoid, on the drain it did not
349
+ // touch. `#ownPubkeyHex` is null only when the identity cannot be resolved, and a null sender
350
+ // reads as "unattributed", which is true, rather than as a false attribution.
351
+ const sender = row.origin === "sent" ? this.#ctx.queries.ownPubkeyHex(agentName) : counterparty;
352
+ if (this.#ctx.queries.recordSealedAnnex(agentName, sessionId, row.content_hash_hex, new Uint8Array(row.content_blob), sender)) {
353
+ this.#ctx.queries.deleteHeldContent(agentName, sessionId, row.canonical_seq);
354
+ // AND OUT OF THE IN-MEMORY MAP. Measured live 2026-08-17 on daemon 0.0.170: this frame is
355
+ // now safe in the annex and its durable row is gone — but teardown still found it in the
356
+ // map, counted `held_content` for the session, got 0, and fired
357
+ // `session.content.held.lost`: "verified content was destroyed". Ten frames were annexed
358
+ // and the same ten were reported destroyed, in the same second. A false alarm on the most
359
+ // serious event in the system is worse than no alarm, because the next investigation goes
360
+ // looking for content that was never lost.
361
+ this.#ctx.heldContent.get(this.#ctx.sessionKey(agentName, sessionId))?.delete(row.canonical_seq);
362
+ annexed++;
363
+ }
364
+ else {
365
+ kept++;
366
+ }
367
+ }
368
+ this.#ctx.logger.warn("session.content.held.annexed", {
369
+ agentName, sessionId, status, annexed, kept,
370
+ // The consumer of `held_at`: how long the oldest frame waited before its session ended.
371
+ oldestHeldMs: Date.now() - Math.min(...rows.map((r) => r.held_at)),
372
+ impact: "these messages arrived and verified but never joined the chain — they are readable from the annex, not the transcript",
373
+ });
374
+ }
375
+ /**
376
+ * Forget the restore/release bookkeeping for a torn-down session.
377
+ *
378
+ * The held CONTENT itself is not dropped here — the map is shared and the manager's eviction still
379
+ * owns that line. What goes is this module's memory of whether a session was already hydrated from
380
+ * disk and already released, which must not survive a teardown: a revived session has to re-read
381
+ * from durable state rather than trust a flag about a process that is gone.
382
+ */
383
+ evictSession(agentName, sessionId) {
384
+ const key = this.#ctx.sessionKey(agentName, sessionId);
385
+ this.#heldRestored.delete(key);
386
+ this.#heldReleased.delete(key);
387
+ }
388
+ }
389
+ //# sourceMappingURL=held-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"held-content.js","sourceRoot":"","sources":["../src/held-content.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * CELLO-M7-CONN-001 (DOD-CONN-3) — HTTP consortium-manifest poll.
3
+ *
4
+ * The manifest poll is the ONE daemon-level directory operation. With the keystone
5
+ * deleted there is no shared authenticated signaling stream to carry it, so it moves
6
+ * to unauthenticated HTTP: GET ${directoryUrl}/manifest. The manifest is PUBLIC,
7
+ * self-authenticating data — threshold-signed by officer root keys that the daemon has
8
+ * pinned LOCALLY (CELLO_CONSORTIUM_ROOT_KEYS). The directory is ONLY a transport, never
9
+ * a trust anchor: a rogue/compromised directory cannot make us adopt a forged, expired,
10
+ * not-yet-valid, or rolled-back manifest. The verify-before-adopt policy here is the
11
+ * SAME TUF policy the deleted keystone signaling path enforced (SignalingManager
12
+ * .handleManifestPollResponse), preserved unchanged across the transport move.
13
+ *
14
+ * Runs daemon-level — even with ZERO agents (the property the keystone, which borrowed
15
+ * the primary agent's identity to authenticate, could never provide).
16
+ *
17
+ * Crypto reference: RFC 8032 (Ed25519 threshold verification via verifyManifest).
18
+ */
19
+ import type { IManifestProvider, IManifestVersionStore, IManifestPollScheduler } from "@cello-protocol/transport";
20
+ /** Minimal structural logger — events use the `domain.noun.verb` taxonomy. */
21
+ export interface ManifestPollLogger {
22
+ info(event: string, ctx?: Record<string, unknown>): void;
23
+ warn(event: string, ctx?: Record<string, unknown>): void;
24
+ error(event: string, ctx?: Record<string, unknown>): void;
25
+ }
26
+ export interface ManifestAdoptDeps {
27
+ manifestProvider: IManifestProvider;
28
+ manifestVersionStore: IManifestVersionStore;
29
+ /** Locally-pinned officer root keys (CELLO_CONSORTIUM_ROOT_KEYS). */
30
+ rootKeys: readonly string[];
31
+ threshold: number;
32
+ logger: ManifestPollLogger;
33
+ }
34
+ export type ManifestPollFailureReason = "manifest_http_unreachable" | "manifest_malformed" | "manifest_threshold_invalid" | "manifest_signature_invalid" | "manifest_not_yet_valid" | "manifest_expired" | "manifest_version_rollback" | "manifest_store_error";
35
+ export type ManifestPollOutcome = {
36
+ ok: true;
37
+ adopted: boolean;
38
+ oldVersion: number | null;
39
+ newVersion: number;
40
+ } | {
41
+ ok: false;
42
+ reason: ManifestPollFailureReason;
43
+ };
44
+ /**
45
+ * Fetch the consortium manifest over HTTP, verify it (TUF), and adopt it if it is a
46
+ * newer, validly-signed, unexpired manifest. Never throws — a poll failure returns a
47
+ * distinct reason and leaves the cached manifest + trusted version untouched (DB-001).
48
+ */
49
+ export declare function pollManifestOverHttp(opts: {
50
+ directoryUrl: string;
51
+ fetchFn?: typeof fetch;
52
+ now?: Date;
53
+ correlationId?: string;
54
+ } & ManifestAdoptDeps): Promise<ManifestPollOutcome>;
55
+ /**
56
+ * Wire the daemon-level HTTP manifest poll onto a scheduler. Self-rearming: each tick
57
+ * polls then schedules the next. Returns a stop function. The poll runs regardless of
58
+ * how many agents exist (including zero) — it has no agent identity and opens no
59
+ * signaling connection.
60
+ */
61
+ export declare function startHttpManifestPoll(opts: {
62
+ scheduler: IManifestPollScheduler;
63
+ directoryUrl: string;
64
+ fetchFn?: typeof fetch;
65
+ mintCorrelationId?: () => string;
66
+ } & ManifestAdoptDeps): () => void;
67
+ //# sourceMappingURL=http-manifest-poll.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-manifest-poll.d.ts","sourceRoot":"","sources":["../src/http-manifest-poll.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGlH,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzD,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3D;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,iBAAiB,CAAC;IACpC,oBAAoB,EAAE,qBAAqB,CAAC;IAC5C,qEAAqE;IACrE,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED,MAAM,MAAM,yBAAyB,GACjC,2BAA2B,GAC3B,oBAAoB,GACpB,4BAA4B,GAC5B,4BAA4B,GAC5B,wBAAwB,GACxB,kBAAkB,GAClB,2BAA2B,GAC3B,sBAAsB,CAAC;AAE3B,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,yBAAyB,CAAA;CAAE,CAAC;AAIrD;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE;IACJ,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,iBAAiB,GACpB,OAAO,CAAC,mBAAmB,CAAC,CAsG9B;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE;IACJ,SAAS,EAAE,sBAAsB,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,MAAM,CAAC;CAClC,GAAG,iBAAiB,GACpB,MAAM,IAAI,CA6BZ"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * CELLO-M7-CONN-001 (DOD-CONN-3) — HTTP consortium-manifest poll.
3
+ *
4
+ * The manifest poll is the ONE daemon-level directory operation. With the keystone
5
+ * deleted there is no shared authenticated signaling stream to carry it, so it moves
6
+ * to unauthenticated HTTP: GET ${directoryUrl}/manifest. The manifest is PUBLIC,
7
+ * self-authenticating data — threshold-signed by officer root keys that the daemon has
8
+ * pinned LOCALLY (CELLO_CONSORTIUM_ROOT_KEYS). The directory is ONLY a transport, never
9
+ * a trust anchor: a rogue/compromised directory cannot make us adopt a forged, expired,
10
+ * not-yet-valid, or rolled-back manifest. The verify-before-adopt policy here is the
11
+ * SAME TUF policy the deleted keystone signaling path enforced (SignalingManager
12
+ * .handleManifestPollResponse), preserved unchanged across the transport move.
13
+ *
14
+ * Runs daemon-level — even with ZERO agents (the property the keystone, which borrowed
15
+ * the primary agent's identity to authenticate, could never provide).
16
+ *
17
+ * Crypto reference: RFC 8032 (Ed25519 threshold verification via verifyManifest).
18
+ */
19
+ import { verifyManifest } from "@cello-protocol/crypto";
20
+ import { extractErrorMessage } from "./error-message.js";
21
+ const FETCH_TIMEOUT_MS = 10_000;
22
+ /**
23
+ * Fetch the consortium manifest over HTTP, verify it (TUF), and adopt it if it is a
24
+ * newer, validly-signed, unexpired manifest. Never throws — a poll failure returns a
25
+ * distinct reason and leaves the cached manifest + trusted version untouched (DB-001).
26
+ */
27
+ export async function pollManifestOverHttp(opts) {
28
+ const { directoryUrl, fetchFn = fetch, now = new Date(), correlationId, manifestProvider, manifestVersionStore, rootKeys, threshold, logger, } = opts;
29
+ const manifestUrl = `${directoryUrl.replace(/\/$/, "")}/manifest`;
30
+ // DOD-AUTH-2 observability: announce each poll dispatch (domain.noun.verb taxonomy, matching the
31
+ // manifest LOAD events `directory.auth.manifest.*`). Lets an operator/alarm see the daemon is
32
+ // actively polling even when every poll is a no-op (already-current) or a transient failure.
33
+ logger.info("directory.auth.manifest.poll.dispatched", { directoryUrl, correlationId });
34
+ // 1. Fetch. Any network error / non-200 / timeout → unreachable. DB-001: the caller
35
+ // keeps the cached manifest; a poll failure never disturbs agent connections.
36
+ let raw;
37
+ try {
38
+ const ac = new AbortController();
39
+ const timer = setTimeout(() => ac.abort(), FETCH_TIMEOUT_MS);
40
+ let resp;
41
+ try {
42
+ resp = await fetchFn(manifestUrl, { signal: ac.signal });
43
+ }
44
+ finally {
45
+ clearTimeout(timer);
46
+ }
47
+ if (!resp.ok) {
48
+ logger.warn("directory.auth.manifest.poll.failed", { reason: "manifest_http_unreachable", status: resp.status, directoryUrl, correlationId });
49
+ return { ok: false, reason: "manifest_http_unreachable" };
50
+ }
51
+ raw = await resp.json();
52
+ }
53
+ catch (err) {
54
+ logger.warn("directory.auth.manifest.poll.failed", { reason: "manifest_http_unreachable", directoryUrl, correlationId, error: extractErrorMessage(err) });
55
+ return { ok: false, reason: "manifest_http_unreachable" };
56
+ }
57
+ // 2. Structural check before verify — a junk body must fail loudly, not be cached.
58
+ const manifest = raw;
59
+ if (typeof manifest?.version !== "number" ||
60
+ !Array.isArray(manifest?.nodes) ||
61
+ !Array.isArray(manifest?.signatures)) {
62
+ logger.warn("directory.auth.manifest.poll.failed", { reason: "manifest_malformed", directoryUrl, correlationId });
63
+ return { ok: false, reason: "manifest_malformed" };
64
+ }
65
+ // 3. Defense-in-depth: never adopt against a 0/missing threshold (verifyManifest would
66
+ // accept an unsigned manifest at threshold 0). The composition root rejects
67
+ // threshold < 1 before wiring, but guard the policy directly too.
68
+ if (threshold < 1) {
69
+ logger.error("directory.auth.manifest.poll.failed", { reason: "manifest_threshold_invalid", threshold, correlationId });
70
+ return { ok: false, reason: "manifest_threshold_invalid" };
71
+ }
72
+ // 4. Threshold signature (RFC 8032) against locally-pinned root keys.
73
+ const verifyResult = verifyManifest(manifest, rootKeys, threshold);
74
+ if (!verifyResult.ok) {
75
+ // Distinct security event (a rogue/compromised directory served a forged manifest) — kept as its
76
+ // own name so alarms can key on it separately from ordinary poll failures. DOD-AUTH-2.
77
+ logger.warn("directory.auth.manifest.signature.invalid", { reason: "manifest_signature_invalid", manifestVersion: manifest.version, detail: verifyResult.reason, correlationId });
78
+ return { ok: false, reason: "manifest_signature_invalid" };
79
+ }
80
+ // 5. Validity window.
81
+ if (now < new Date(manifest.not_before)) {
82
+ logger.warn("directory.auth.manifest.poll.failed", { reason: "manifest_not_yet_valid", manifestVersion: manifest.version, notBefore: manifest.not_before, correlationId });
83
+ return { ok: false, reason: "manifest_not_yet_valid" };
84
+ }
85
+ if (new Date(manifest.expires) <= now) {
86
+ logger.error("directory.auth.manifest.poll.failed", { reason: "manifest_expired", manifestVersion: manifest.version, expiresAt: manifest.expires, correlationId });
87
+ return { ok: false, reason: "manifest_expired" };
88
+ }
89
+ // 6-7. Anti-rollback + adopt. The version store / provider are I/O (the version store is
90
+ // DB-backed in production), so they can THROW — wrap them so a store error becomes a distinct,
91
+ // LOGGED failure (manifest_store_error) instead of an invisible throw that silently disables
92
+ // manifest adoption forever (fallback-finder MED).
93
+ try {
94
+ const lastSeen = await manifestVersionStore.getLastSeenVersion();
95
+ if (lastSeen !== null && manifest.version < lastSeen) {
96
+ logger.warn("directory.auth.manifest.poll.failed", { reason: "manifest_version_rollback", manifestVersion: manifest.version, lastSeenVersion: lastSeen, correlationId });
97
+ return { ok: false, reason: "manifest_version_rollback" };
98
+ }
99
+ if (lastSeen !== null && manifest.version === lastSeen) {
100
+ // Already current — nothing to adopt.
101
+ return { ok: true, adopted: false, oldVersion: lastSeen, newVersion: manifest.version };
102
+ }
103
+ const oldVersion = manifestProvider.getCurrentManifest()?.version ?? null;
104
+ manifestProvider.updateManifest(manifest);
105
+ await manifestVersionStore.persistVersion(manifest.version);
106
+ logger.info("directory.auth.manifest.poll.success", { oldVersion, newVersion: manifest.version, directoryUrl, correlationId });
107
+ return { ok: true, adopted: true, oldVersion, newVersion: manifest.version };
108
+ }
109
+ catch (err) {
110
+ logger.error("directory.auth.manifest.poll.failed", { reason: "manifest_store_error", manifestVersion: manifest.version, directoryUrl, correlationId, error: extractErrorMessage(err) });
111
+ return { ok: false, reason: "manifest_store_error" };
112
+ }
113
+ }
114
+ /**
115
+ * Wire the daemon-level HTTP manifest poll onto a scheduler. Self-rearming: each tick
116
+ * polls then schedules the next. Returns a stop function. The poll runs regardless of
117
+ * how many agents exist (including zero) — it has no agent identity and opens no
118
+ * signaling connection.
119
+ */
120
+ export function startHttpManifestPoll(opts) {
121
+ const { scheduler, directoryUrl, fetchFn, mintCorrelationId, manifestProvider, manifestVersionStore, rootKeys, threshold, logger } = opts;
122
+ let stopped = false;
123
+ const tick = async () => {
124
+ if (stopped)
125
+ return;
126
+ await pollManifestOverHttp({
127
+ directoryUrl,
128
+ fetchFn,
129
+ correlationId: mintCorrelationId?.(),
130
+ manifestProvider,
131
+ manifestVersionStore,
132
+ rootKeys,
133
+ threshold,
134
+ logger,
135
+ }).catch((err) => {
136
+ // pollManifestOverHttp is designed never to throw (all failures return a reason). If it ever
137
+ // does, LOG it (never swallow silently — that would hide a permanently-disabled poll) and let
138
+ // the loop self-heal by re-arming below.
139
+ logger.error("directory.auth.manifest.poll.failed", { reason: "manifest_poll_unexpected_error", directoryUrl, error: extractErrorMessage(err) });
140
+ });
141
+ if (!stopped)
142
+ scheduler.scheduleNext(tick);
143
+ };
144
+ scheduler.scheduleNext(tick);
145
+ return () => {
146
+ stopped = true;
147
+ scheduler.cancel();
148
+ };
149
+ }
150
+ //# sourceMappingURL=http-manifest-poll.js.map