@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,153 @@
1
+ /**
2
+ * DOD-M15-MANIFEST-EXPIRY-LIVE-1 — a running daemon notices its own trust anchor expiring.
3
+ *
4
+ * ─── The gap ───────────────────────────────────────────────────────────────────────────────────
5
+ *
6
+ The consortium manifest's validity window is enforced at boot (`verifyStartupManifest`) and, after
7
+ * that, in exactly ONE consumer: `signal-submission.ts` re-checks the HELD manifest at request time
8
+ * and refuses. Nothing else does — not directory identity authentication, not the ceremony roster.
9
+ *
10
+ * (An earlier version of this header said nothing re-checked the held manifest at all. That was
11
+ * wrong — the third false claim I have shipped in three units — and the correction matters, because
12
+ * the real shape is not "unchecked" but INCONSISTENT: the daemon refuses the lowest-stakes consumer
13
+ * and permits the two highest-stakes ones, invisibly. See the decision note below.)
14
+ *
15
+ * There is also a check that reads like coverage and is not: `http-manifest-poll.ts` refuses to
16
+ * ADOPT an expired manifest. That checks the manifest being FETCHED, never the one already held — so
17
+ * a daemon whose anchor has lapsed keeps polling, keeps correctly refusing expired replacements, and
18
+ * keeps using the expired anchor it already has.
19
+ *
20
+ * On the PRODUCTION DEFAULT it is worse: the bundled-manifest path wires no poll scheduler at all
21
+ * ("the bundled roster is static"), so there is not even a fetch that might have noticed.
22
+ *
23
+ * ─── Why it matters, concretely ────────────────────────────────────────────────────────────────
24
+ *
25
+ The manifest is the trust anchor for directory identity authentication (step 6) and for the node
26
+ * roster a threshold ceremony draws from — both re-read `getCurrentManifest()` at request time, so
27
+ * both genuinely run on whatever is held.
28
+ *
29
+ * What expiry means precisely (review F10, correcting my own overstatement): it is the NOTICE that
30
+ * the anchor may be out of date, not the mechanism by which it becomes so. The daemon trusts the
31
+ * identical roster the day BEFORE expiry; what keeps a removed node trusted is never having adopted
32
+ * v+1. So the accurate statement is that past expiry there is NO ASSURANCE the enforced roster is
33
+ * current — a node removed since then would still be trusted, and nothing here can say whether one
34
+ * was.
35
+ *
36
+ * ─── Found the wrong way round ─────────────────────────────────────────────────────────────────
37
+ *
38
+ * `DOD-M15-STALEROSTER-1` shipped a guidance string blaming an expired manifest for a state an
39
+ * expired manifest cannot reach (that daemon refuses to start). Review corrected it and pointed at
40
+ * where the hazard actually lives — here. After that unit, a daemon in this state reports its roster
41
+ * reading as `stale: false`: a confidently fresh measurement taken against a dead anchor, which is
42
+ * worse than the stale reading that line existed to fix.
43
+ *
44
+ * ─── Decision: report, do not kill ─────────────────────────────────────────────────────────────
45
+ *
46
+ A daemon does NOT tear itself down at the expiry instant. §2b invariant 2 backs this explicitly —
47
+ * *"Loud does not mean blocking… treating every failure as fatal is its own defect."*
48
+ *
49
+ * But review corrected the FRAMING, and the correction is worth keeping: the availability argument I
50
+ * originally made does not survive. The fleet-wide stop I claimed to be avoiding happens anyway, at
51
+ * each operator's next restart, via ADV-002 — report-only DEFERS that outage, it does not prevent
52
+ * it. The honest reason to warn rather than kill is that a wall-clock boundary is a bad trigger for
53
+ * tearing down live conversations, not that it avoids the outage.
54
+ *
55
+ * The real question was never global report-vs-kill; it is PER CONSUMER, and the repo has already
56
+ * ruled on one of them inconsistently. `signal-submission.ts` refuses a trust-signal submission on
57
+ * expiry, while `register-handler.ts` deals a FROST share against a roster re-resolved from the same
58
+ * lapsed manifest with no gate, and the challenge verifier authenticates a directory against it with
59
+ * no gate. **The daemon refuses its lowest-stakes consumer and permits its two highest-stakes ones.**
60
+ * That is not defended anywhere; it is carried as `DOD-M15-EXPIRY-CONSUMER-POLICY-1` rather than
61
+ * settled inside a reporting unit.
62
+ */
63
+ import type { ConsortiumManifest } from "@cello-protocol/protocol-types";
64
+ /**
65
+ * How long before expiry the warning starts.
66
+ *
67
+ * Warning at the expiry instant is useless — the operator finds out once they are already running
68
+ * on a dead anchor. Seven days is chosen to cover a weekend plus the working days either side, which
69
+ * is the realistic floor for noticing an alert and rotating a threshold-signed artefact.
70
+ */
71
+ export declare const MANIFEST_EXPIRY_WARNING_MS: number;
72
+ export type ManifestValidity = {
73
+ state: "not_configured";
74
+ } | {
75
+ state: "not_yet_valid";
76
+ notBefore: string;
77
+ }
78
+ /**
79
+ * The window itself is unreadable — a `not_before` that does not parse.
80
+ *
81
+ * Its OWN state, deliberately not folded into `expired`: those need different words. "Expired"
82
+ * tells an operator to rotate a manifest that is stale; this tells them a field in the manifest is
83
+ * GARBAGE, which is a different problem with a different fix and is more likely to mean the
84
+ * artefact was hand-edited or produced by a broken generator.
85
+ */
86
+ | {
87
+ state: "unreadable_window";
88
+ notBefore: string;
89
+ } | {
90
+ state: "valid";
91
+ expires: string;
92
+ secondsRemaining: number;
93
+ } | {
94
+ state: "expiring_soon";
95
+ expires: string;
96
+ secondsRemaining: number;
97
+ } | {
98
+ state: "expired";
99
+ expires: string;
100
+ secondsSince: number;
101
+ };
102
+ /**
103
+ * Where does this manifest sit in its validity window, as of `nowMs`?
104
+ *
105
+ * Clock injected so the boundaries are tested exactly rather than approximately.
106
+ */
107
+ export declare function classifyManifestValidity(manifest: Pick<ConsortiumManifest, "not_before" | "expires"> | null | undefined, nowMs: number): ManifestValidity;
108
+ /**
109
+ * The operator-facing fields for `cello_status`, or `undefined` when there is nothing to say.
110
+ *
111
+ * A healthy manifest contributes NOTHING. A field that is present on every status read for the
112
+ * years a manifest is valid is not a warning — it is furniture, and it teaches the reader to skip
113
+ * the block that matters. This is the finding this milestone has produced more often than any other.
114
+ */
115
+ /**
116
+ * WHERE the manifest came from, because it decides what the remedy even IS — review F5.
117
+ *
118
+ * `bundled` is a compiled-in constant: there is no file to replace and no poll to adopt a
119
+ * replacement, so "rotate the manifest" is not an action that operator can take. Telling them to do
120
+ * it anyway is worse than unhelpful, because the workaround they will reach for — repointing
121
+ * `CELLO_DIRECTORY_URL` at something not byte-equal to a bundled endpoint — makes `buildManifestDeps`
122
+ * return nothing, which starts the daemon with directory identity authentication SILENTLY OFF.
123
+ * Guidance that routes a stuck operator toward disabling a security control is a defect in the
124
+ * guidance.
125
+ */
126
+ export type ManifestOrigin = "bundled" | "file";
127
+ /** What to actually DO about a manifest that needs replacing, given where it came from. */
128
+ export declare function remedyFor(origin: ManifestOrigin): string;
129
+ export declare function describeManifestValidity(v: ManifestValidity, origin?: ManifestOrigin): Record<string, unknown> | undefined;
130
+ /** Minimal structural logger — `domain.noun.verb` taxonomy, injected. */
131
+ export interface ManifestValidityLogger {
132
+ info(event: string, ctx?: Record<string, unknown>): void;
133
+ warn(event: string, ctx?: Record<string, unknown>): void;
134
+ error(event: string, ctx?: Record<string, unknown>): void;
135
+ }
136
+ /**
137
+ * A check to call periodically, which logs each TRANSITION once.
138
+ *
139
+ * Returns a function rather than owning a timer: the roster sweep already ticks every 90–180 s on
140
+ * exactly the path where a manifest provider exists, so this rides it. A second timer measuring the
141
+ * same subsystem would be two things to stop, two things to test, and two places for the interval
142
+ * to drift out of agreement with the freshness bound.
143
+ *
144
+ * The latch is keyed on the STATE PLUS the expiry string, so rotating the manifest re-arms it. A
145
+ * bare boolean would mean an operator who rotated once could never be warned again — the warning
146
+ * would have been spent on a manifest that is no longer installed.
147
+ */
148
+ export declare function startManifestValidityWatch(opts: {
149
+ getManifest: () => Pick<ConsortiumManifest, "not_before" | "expires"> | null | undefined;
150
+ logger: ManifestValidityLogger;
151
+ now?: () => number;
152
+ }): () => ManifestValidity;
153
+ //# sourceMappingURL=manifest-validity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-validity.d.ts","sourceRoot":"","sources":["../src/manifest-validity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEzE;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,QAAiB,CAAC;AAEzD,MAAM,MAAM,gBAAgB,GACxB;IAAE,KAAK,EAAE,gBAAgB,CAAA;CAAE,GAC3B;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AAC/C;;;;;;;GAOG;GACD;IAAE,KAAK,EAAE,mBAAmB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,YAAY,GAAG,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS,EAC/E,KAAK,EAAE,MAAM,GACZ,gBAAgB,CAgDlB;AAED;;;;;;GAMG;AACH;;;;;;;;;;GAUG;AACH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC;AAEhD,2FAA2F;AAC3F,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAQxD;AAED,wBAAgB,wBAAwB,CACtC,CAAC,EAAE,gBAAgB,EACnB,MAAM,GAAE,cAAuB,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CA+ErC;AAED,yEAAyE;AACzE,MAAM,WAAW,sBAAsB;IACrC,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;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,WAAW,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE,YAAY,GAAG,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACzF,MAAM,EAAE,sBAAsB,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,GAAG,MAAM,gBAAgB,CAqDzB"}
@@ -0,0 +1,268 @@
1
+ /**
2
+ * DOD-M15-MANIFEST-EXPIRY-LIVE-1 — a running daemon notices its own trust anchor expiring.
3
+ *
4
+ * ─── The gap ───────────────────────────────────────────────────────────────────────────────────
5
+ *
6
+ The consortium manifest's validity window is enforced at boot (`verifyStartupManifest`) and, after
7
+ * that, in exactly ONE consumer: `signal-submission.ts` re-checks the HELD manifest at request time
8
+ * and refuses. Nothing else does — not directory identity authentication, not the ceremony roster.
9
+ *
10
+ * (An earlier version of this header said nothing re-checked the held manifest at all. That was
11
+ * wrong — the third false claim I have shipped in three units — and the correction matters, because
12
+ * the real shape is not "unchecked" but INCONSISTENT: the daemon refuses the lowest-stakes consumer
13
+ * and permits the two highest-stakes ones, invisibly. See the decision note below.)
14
+ *
15
+ * There is also a check that reads like coverage and is not: `http-manifest-poll.ts` refuses to
16
+ * ADOPT an expired manifest. That checks the manifest being FETCHED, never the one already held — so
17
+ * a daemon whose anchor has lapsed keeps polling, keeps correctly refusing expired replacements, and
18
+ * keeps using the expired anchor it already has.
19
+ *
20
+ * On the PRODUCTION DEFAULT it is worse: the bundled-manifest path wires no poll scheduler at all
21
+ * ("the bundled roster is static"), so there is not even a fetch that might have noticed.
22
+ *
23
+ * ─── Why it matters, concretely ────────────────────────────────────────────────────────────────
24
+ *
25
+ The manifest is the trust anchor for directory identity authentication (step 6) and for the node
26
+ * roster a threshold ceremony draws from — both re-read `getCurrentManifest()` at request time, so
27
+ * both genuinely run on whatever is held.
28
+ *
29
+ * What expiry means precisely (review F10, correcting my own overstatement): it is the NOTICE that
30
+ * the anchor may be out of date, not the mechanism by which it becomes so. The daemon trusts the
31
+ * identical roster the day BEFORE expiry; what keeps a removed node trusted is never having adopted
32
+ * v+1. So the accurate statement is that past expiry there is NO ASSURANCE the enforced roster is
33
+ * current — a node removed since then would still be trusted, and nothing here can say whether one
34
+ * was.
35
+ *
36
+ * ─── Found the wrong way round ─────────────────────────────────────────────────────────────────
37
+ *
38
+ * `DOD-M15-STALEROSTER-1` shipped a guidance string blaming an expired manifest for a state an
39
+ * expired manifest cannot reach (that daemon refuses to start). Review corrected it and pointed at
40
+ * where the hazard actually lives — here. After that unit, a daemon in this state reports its roster
41
+ * reading as `stale: false`: a confidently fresh measurement taken against a dead anchor, which is
42
+ * worse than the stale reading that line existed to fix.
43
+ *
44
+ * ─── Decision: report, do not kill ─────────────────────────────────────────────────────────────
45
+ *
46
+ A daemon does NOT tear itself down at the expiry instant. §2b invariant 2 backs this explicitly —
47
+ * *"Loud does not mean blocking… treating every failure as fatal is its own defect."*
48
+ *
49
+ * But review corrected the FRAMING, and the correction is worth keeping: the availability argument I
50
+ * originally made does not survive. The fleet-wide stop I claimed to be avoiding happens anyway, at
51
+ * each operator's next restart, via ADV-002 — report-only DEFERS that outage, it does not prevent
52
+ * it. The honest reason to warn rather than kill is that a wall-clock boundary is a bad trigger for
53
+ * tearing down live conversations, not that it avoids the outage.
54
+ *
55
+ * The real question was never global report-vs-kill; it is PER CONSUMER, and the repo has already
56
+ * ruled on one of them inconsistently. `signal-submission.ts` refuses a trust-signal submission on
57
+ * expiry, while `register-handler.ts` deals a FROST share against a roster re-resolved from the same
58
+ * lapsed manifest with no gate, and the challenge verifier authenticates a directory against it with
59
+ * no gate. **The daemon refuses its lowest-stakes consumer and permits its two highest-stakes ones.**
60
+ * That is not defended anywhere; it is carried as `DOD-M15-EXPIRY-CONSUMER-POLICY-1` rather than
61
+ * settled inside a reporting unit.
62
+ */
63
+ /**
64
+ * How long before expiry the warning starts.
65
+ *
66
+ * Warning at the expiry instant is useless — the operator finds out once they are already running
67
+ * on a dead anchor. Seven days is chosen to cover a weekend plus the working days either side, which
68
+ * is the realistic floor for noticing an alert and rotating a threshold-signed artefact.
69
+ */
70
+ export const MANIFEST_EXPIRY_WARNING_MS = 7 * 86_400_000;
71
+ /**
72
+ * Where does this manifest sit in its validity window, as of `nowMs`?
73
+ *
74
+ * Clock injected so the boundaries are tested exactly rather than approximately.
75
+ */
76
+ export function classifyManifestValidity(manifest, nowMs) {
77
+ if (!manifest)
78
+ return { state: "not_configured" };
79
+ const expiresMs = Date.parse(manifest.expires);
80
+ /**
81
+ * AN UNREADABLE EXPIRY IS EXPIRED.
82
+ *
83
+ * `new Date("nonsense") <= now` is FALSE — every comparison against NaN is false — so the
84
+ * startup check's own shape waves a garbage timestamp through as though it were in-window. Valid
85
+ * is the answer that costs security here, so nothing unmeasurable may reach it.
86
+ */
87
+ if (Number.isNaN(expiresMs))
88
+ return { state: "expired", expires: manifest.expires, secondsSince: 0 };
89
+ /**
90
+ * AN UNREADABLE `not_before` FAILS CLOSED TOO — review F3, and it was my own defect sitting
91
+ * directly under the comment above claiming it could not happen.
92
+ *
93
+ * The first cut wrote `if (!Number.isNaN(notBeforeMs) && nowMs < notBeforeMs)`, which SKIPS the
94
+ * window-open check entirely when the field is garbage and falls through to a possible `valid`.
95
+ * So `not_before: "2026-13-01T00:00:00Z"` — month thirteen, the shape a hand-edited or
96
+ * generator-bugged artefact actually has — classified as valid, contributed nothing to the status
97
+ * surface, and logged nothing. I handled the same case correctly for `expires` eleven lines up and
98
+ * then wrote the inverted guard for `not_before`, under a comment asserting the property.
99
+ *
100
+ * `signal-submission.ts` already had this right (`!Number.isFinite(expiresAt) || expiresAt <= now`)
101
+ * and is the precedent.
102
+ */
103
+ const notBeforeMs = Date.parse(manifest.not_before);
104
+ if (Number.isNaN(notBeforeMs)) {
105
+ return { state: "unreadable_window", notBefore: manifest.not_before };
106
+ }
107
+ if (nowMs < notBeforeMs) {
108
+ return { state: "not_yet_valid", notBefore: manifest.not_before };
109
+ }
110
+ if (expiresMs <= nowMs) {
111
+ return { state: "expired", expires: manifest.expires, secondsSince: Math.floor((nowMs - expiresMs) / 1000) };
112
+ }
113
+ const remainingMs = expiresMs - nowMs;
114
+ const secondsRemaining = Math.floor(remainingMs / 1000);
115
+ // The constant directly, not an injectable parameter — review F9. A `warningMs` argument had no
116
+ // caller anywhere, and it was the ONE seam by which the two surfaces could ever disagree: the
117
+ // status path could not pass a custom window while the watch could. An unused knob whose only
118
+ // possible effect is drift between two readings of the same fact.
119
+ return remainingMs <= MANIFEST_EXPIRY_WARNING_MS
120
+ ? { state: "expiring_soon", expires: manifest.expires, secondsRemaining }
121
+ : { state: "valid", expires: manifest.expires, secondsRemaining };
122
+ }
123
+ /** What to actually DO about a manifest that needs replacing, given where it came from. */
124
+ export function remedyFor(origin) {
125
+ return origin === "bundled"
126
+ ? "This daemon uses the COMPILED-IN consortium manifest, so there is no file to replace: " +
127
+ "upgrade the @cello-protocol/connect package to get a newer one. Do NOT repoint " +
128
+ "CELLO_DIRECTORY_URL to get past this — an endpoint that is not byte-equal to a bundled one " +
129
+ "makes the daemon start with directory identity authentication switched off, which is a " +
130
+ "weaker client than the one you are trying to fix."
131
+ : "Replace the manifest file at CELLO_CONSORTIUM_MANIFEST with a current one.";
132
+ }
133
+ export function describeManifestValidity(v, origin = "file") {
134
+ /**
135
+ * `valid` contributes nothing — correct, and the rule this milestone repeats most.
136
+ *
137
+ * `not_configured` USED TO collapse into that silence, and it was the same defect one spread
138
+ * above: a daemon holding NO consortium manifest at all rendered byte-identically to one holding
139
+ * a fully valid, in-window trust anchor. Found by `DOD-M15-DIRAUTH-1`'s review, which noticed it
140
+ * is the exact condition that unit was writing 100+ lines to expose — same daemon, same boot.
141
+ *
142
+ * "Absent" and "healthy" must not look alike. That is `STALEROSTER-1`'s rule and it applies to the
143
+ * anchor as much as to the roster reading.
144
+ */
145
+ if (v.state === "valid")
146
+ return undefined;
147
+ if (v.state === "not_configured") {
148
+ return {
149
+ manifest_anchor: "none",
150
+ manifest_validity_guidance: "There is NO consortium manifest on this daemon, so there is no trust anchor to have a " +
151
+ "validity window at all — the absence of an expiry warning here is not evidence of a healthy " +
152
+ "one. Directory identity authentication is off for the same reason; see " +
153
+ "directory_authentication for what that costs and how to turn it on.",
154
+ };
155
+ }
156
+ if (v.state === "unreadable_window") {
157
+ return {
158
+ manifest_expired: false,
159
+ manifest_window_unreadable: true,
160
+ manifest_valid_from: v.notBefore,
161
+ manifest_validity_guidance: `The consortium manifest's not_before field cannot be parsed as a date (got ` +
162
+ `${JSON.stringify(v.notBefore)}), so this daemon cannot tell whether its trust anchor's ` +
163
+ "validity window has even opened. This is a MALFORMED manifest rather than a stale one — " +
164
+ "the usual causes are a hand-edited file or a broken generator. " + remedyFor(origin),
165
+ };
166
+ }
167
+ if (v.state === "not_yet_valid") {
168
+ return {
169
+ manifest_expired: false,
170
+ manifest_not_yet_valid: true,
171
+ manifest_valid_from: v.notBefore,
172
+ manifest_validity_guidance: `The consortium manifest does not become valid until ${v.notBefore}, and this daemon is ` +
173
+ "still running against it. Either this machine's clock is wrong — the common cause, and the " +
174
+ "one to check first — or a manifest was rotated in ahead of its window. " + remedyFor(origin),
175
+ };
176
+ }
177
+ if (v.state === "expiring_soon") {
178
+ const days = Math.floor(v.secondsRemaining / 86_400);
179
+ return {
180
+ manifest_expired: false,
181
+ manifest_expires_at: v.expires,
182
+ manifest_expires_in_days: days,
183
+ manifest_validity_guidance: `The consortium manifest expires in ${days} day(s), at ${v.expires}. Rotate it before then. ` +
184
+ "After expiry this daemon KEEPS RUNNING on the old manifest — it does not fail closed the " +
185
+ "way startup does — so nothing will stop working at the deadline and nothing will announce " +
186
+ "it except this field and one log line. A daemon RESTARTED after expiry will refuse to " +
187
+ "start, which is how this usually gets discovered, at the worst moment. " + remedyFor(origin),
188
+ };
189
+ }
190
+ const days = Math.floor(v.secondsSince / 86_400);
191
+ return {
192
+ manifest_expired: true,
193
+ manifest_expires_at: v.expires,
194
+ manifest_expired_days_ago: days,
195
+ manifest_validity_guidance: `The consortium manifest EXPIRED at ${v.expires} (${days} day(s) ago) and this daemon is ` +
196
+ "still running on it. Its signatures no longer warrant the current consortium, so directory " +
197
+ "identity authentication and the threshold-ceremony roster are both being drawn from an " +
198
+ "anchor that has lapsed, so this daemon has NO ASSURANCE that the roster it enforces is the " +
199
+ "current one. A node removed from the consortium since then would still be trusted here, and " +
200
+ "nothing in this daemon can tell you whether one was. " + remedyFor(origin) + " Do NOT simply " +
201
+ "restart to clear this — a restart will REFUSE to start (startup fails closed on an expired " +
202
+ "manifest), so restarting without a fresh manifest turns a degraded daemon into a dead one.",
203
+ };
204
+ }
205
+ /**
206
+ * A check to call periodically, which logs each TRANSITION once.
207
+ *
208
+ * Returns a function rather than owning a timer: the roster sweep already ticks every 90–180 s on
209
+ * exactly the path where a manifest provider exists, so this rides it. A second timer measuring the
210
+ * same subsystem would be two things to stop, two things to test, and two places for the interval
211
+ * to drift out of agreement with the freshness bound.
212
+ *
213
+ * The latch is keyed on the STATE PLUS the expiry string, so rotating the manifest re-arms it. A
214
+ * bare boolean would mean an operator who rotated once could never be warned again — the warning
215
+ * would have been spent on a manifest that is no longer installed.
216
+ */
217
+ export function startManifestValidityWatch(opts) {
218
+ const { getManifest, logger, now = Date.now } = opts;
219
+ let lastReported = null;
220
+ return () => {
221
+ const v = classifyManifestValidity(getManifest(), now());
222
+ const key = v.state === "not_configured" ? "not_configured"
223
+ : v.state === "not_yet_valid" || v.state === "unreadable_window" ? `${v.state}:${v.notBefore}`
224
+ : `${v.state}:${v.expires}`;
225
+ if (key === lastReported)
226
+ return v;
227
+ lastReported = key;
228
+ if (v.state === "expired") {
229
+ logger.error("directory.auth.manifest.expired.live", {
230
+ expiresAt: v.expires,
231
+ expiredDaysAgo: Math.floor(v.secondsSince / 86_400),
232
+ impact: "the daemon is STILL RUNNING on this manifest. Directory identity authentication and the " +
233
+ "threshold-ceremony roster are drawn from it at request time, so there is NO ASSURANCE " +
234
+ "the enforced roster is the current one — a node removed since then would still be " +
235
+ "trusted, and nothing here can say whether one was.",
236
+ guidance: "Replace the manifest (a file at CELLO_CONSORTIUM_MANIFEST, or an @cello-protocol/connect " +
237
+ "upgrade if this daemon uses the compiled-in one). Do not restart to clear it: startup " +
238
+ "fails closed on an expired manifest, so a restart without a fresh one turns a degraded " +
239
+ "daemon into a dead one.",
240
+ });
241
+ }
242
+ else if (v.state === "expiring_soon") {
243
+ logger.warn("directory.auth.manifest.expiring", {
244
+ expiresAt: v.expires,
245
+ daysRemaining: Math.floor(v.secondsRemaining / 86_400),
246
+ impact: "after this date the daemon keeps running on the expired manifest rather than failing closed.",
247
+ guidance: "Rotate before the date. A daemon RESTARTED after it will refuse to start.",
248
+ });
249
+ }
250
+ else if (v.state === "unreadable_window") {
251
+ logger.error("directory.auth.manifest.window.unreadable", {
252
+ notBefore: v.notBefore,
253
+ impact: "the manifest's not_before field does not parse as a date, so this daemon cannot tell " +
254
+ "whether its trust anchor's validity window has opened. It is running against it anyway.",
255
+ guidance: "The manifest is MALFORMED, not stale — a hand-edited file or a broken generator. Replace it.",
256
+ });
257
+ }
258
+ else if (v.state === "not_yet_valid") {
259
+ logger.error("directory.auth.manifest.not.yet.valid.live", {
260
+ notBefore: v.notBefore,
261
+ impact: "the daemon is running against a manifest whose validity window has not opened.",
262
+ guidance: "Check this machine's clock first — that is the common cause.",
263
+ });
264
+ }
265
+ return v;
266
+ };
267
+ }
268
+ //# sourceMappingURL=manifest-validity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-validity.js","sourceRoot":"","sources":["../src/manifest-validity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * CELLO-M7-PERSIST-002 (AC-008): DB-backed IManifestVersionStore.
3
+ *
4
+ * The last-seen manifest version (which backs the anti-rollback monotonicity invariant across daemon
5
+ * restarts) lives in the `manifest_state` singleton row of the SQLCipher-encrypted daemon DB — not a
6
+ * plaintext `manifest-version.json` file. Same interface as the old FileManifestVersionStore, so the
7
+ * SignalingManager that consumes it is unchanged.
8
+ *
9
+ * Crypto reference: RFC 8032 context — the version number is not itself cryptographic, but its
10
+ * correct, durable persistence is load-bearing for anti-rollback security (a reset enables a manifest
11
+ * downgrade attack). Whole-DB SQLCipher now protects it at rest along with all other client state.
12
+ */
13
+ import type { IManifestVersionStore } from "@cello-protocol/transport";
14
+ import type { DaemonDatabase } from "./sqlcipher-db.js";
15
+ import type { Logger } from "./types.js";
16
+ /** Idempotent schema for the singleton manifest-version row. */
17
+ export declare function ensureManifestSchema(db: DaemonDatabase): void;
18
+ export declare class DbManifestVersionStore implements IManifestVersionStore {
19
+ #private;
20
+ constructor(db: DaemonDatabase, logger: Logger);
21
+ getLastSeenVersion(): Promise<number | null>;
22
+ persistVersion(version: number): Promise<void>;
23
+ }
24
+ //# sourceMappingURL=manifest-version-store-db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-version-store-db.d.ts","sourceRoot":"","sources":["../src/manifest-version-store-db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC,gEAAgE;AAChE,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAQ7D;AAED,qBAAa,sBAAuB,YAAW,qBAAqB;;gBAItD,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM;IAMxC,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAO5C,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAoBrD"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * CELLO-M7-PERSIST-002 (AC-008): DB-backed IManifestVersionStore.
3
+ *
4
+ * The last-seen manifest version (which backs the anti-rollback monotonicity invariant across daemon
5
+ * restarts) lives in the `manifest_state` singleton row of the SQLCipher-encrypted daemon DB — not a
6
+ * plaintext `manifest-version.json` file. Same interface as the old FileManifestVersionStore, so the
7
+ * SignalingManager that consumes it is unchanged.
8
+ *
9
+ * Crypto reference: RFC 8032 context — the version number is not itself cryptographic, but its
10
+ * correct, durable persistence is load-bearing for anti-rollback security (a reset enables a manifest
11
+ * downgrade attack). Whole-DB SQLCipher now protects it at rest along with all other client state.
12
+ */
13
+ import { extractErrorMessage } from "./error-message.js";
14
+ /** Idempotent schema for the singleton manifest-version row. */
15
+ export function ensureManifestSchema(db) {
16
+ db.exec(`
17
+ CREATE TABLE IF NOT EXISTS manifest_state (
18
+ id INTEGER PRIMARY KEY CHECK (id = 1),
19
+ last_seen_version INTEGER,
20
+ updated_at INTEGER NOT NULL
21
+ )
22
+ `);
23
+ }
24
+ export class DbManifestVersionStore {
25
+ #db;
26
+ #logger;
27
+ constructor(db, logger) {
28
+ this.#db = db;
29
+ this.#logger = logger;
30
+ ensureManifestSchema(db);
31
+ }
32
+ async getLastSeenVersion() {
33
+ const row = this.#db
34
+ .prepare("SELECT last_seen_version FROM manifest_state WHERE id = 1")
35
+ .get();
36
+ return row && row.last_seen_version != null ? Number(row.last_seen_version) : null;
37
+ }
38
+ async persistVersion(version) {
39
+ // Upsert the singleton row. Atomic within the encrypted DB — no temp-file rename dance.
40
+ try {
41
+ this.#db
42
+ .prepare(`INSERT INTO manifest_state (id, last_seen_version, updated_at)
43
+ VALUES (1, ?, ?)
44
+ ON CONFLICT(id) DO UPDATE SET last_seen_version = excluded.last_seen_version, updated_at = excluded.updated_at`)
45
+ .run(version, Date.now());
46
+ }
47
+ catch (err) {
48
+ // AC-012: a distinct, actionable failure — never a silent no-op (a lost anti-rollback version
49
+ // would re-open a manifest-downgrade window).
50
+ this.#logger.error("persist.manifest.persist.failed", { version, error: extractErrorMessage(err) });
51
+ const e = new Error(`manifest_persist_failed: ${extractErrorMessage(err)}`);
52
+ e.code = "manifest_persist_failed";
53
+ throw e;
54
+ }
55
+ this.#logger.info("persist.manifest.version.persisted", { version });
56
+ }
57
+ }
58
+ //# sourceMappingURL=manifest-version-store-db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-version-store-db.js","sourceRoot":"","sources":["../src/manifest-version-store-db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,gEAAgE;AAChE,MAAM,UAAU,oBAAoB,CAAC,EAAkB;IACrD,EAAE,CAAC,IAAI,CAAC;;;;;;GAMP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,sBAAsB;IACxB,GAAG,CAAiB;IACpB,OAAO,CAAS;IAEzB,YAAY,EAAkB,EAAE,MAAc;QAC5C,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;aACjB,OAAO,CAAC,2DAA2D,CAAC;aACpE,GAAG,EAAsD,CAAC;QAC7D,OAAO,GAAG,IAAI,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAe;QAClC,wFAAwF;QACxF,IAAI,CAAC;YACH,IAAI,CAAC,GAAG;iBACL,OAAO,CACN;;0HAEgH,CACjH;iBACA,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,8FAA8F;YAC9F,8CAA8C;YAC9C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpG,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,4BAA4B,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3E,CAA+B,CAAC,IAAI,GAAG,yBAAyB,CAAC;YAClE,MAAM,CAAC,CAAC;QACV,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * M7-MANIFEST-002 — Manifest version store re-exports.
3
+ *
4
+ * IManifestVersionStore persists the last-seen manifest version number to enforce
5
+ * version monotonicity across daemon restarts. A manifest with a lower version
6
+ * number than the last-seen version is rejected as a potential rollback attack.
7
+ *
8
+ * InMemoryManifestVersionStore: stub for tests and initial deployments.
9
+ * DbManifestVersionStore (manifest-version-store-db.ts): the production store — the version lives in
10
+ * the SQLCipher-encrypted manifest_state table (PERSIST-002 AC-008). The old file-backed store was
11
+ * removed.
12
+ */
13
+ import type { IManifestVersionStore } from "@cello-protocol/transport";
14
+ export { InMemoryManifestVersionStore } from "@cello-protocol/transport";
15
+ export type { IManifestVersionStore };
16
+ //# sourceMappingURL=manifest-version-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-version-store.d.ts","sourceRoot":"","sources":["../src/manifest-version-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAEzE,YAAY,EAAE,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * M7-MANIFEST-002 — Manifest version store re-exports.
3
+ *
4
+ * IManifestVersionStore persists the last-seen manifest version number to enforce
5
+ * version monotonicity across daemon restarts. A manifest with a lower version
6
+ * number than the last-seen version is rejected as a potential rollback attack.
7
+ *
8
+ * InMemoryManifestVersionStore: stub for tests and initial deployments.
9
+ * DbManifestVersionStore (manifest-version-store-db.ts): the production store — the version lives in
10
+ * the SQLCipher-encrypted manifest_state table (PERSIST-002 AC-008). The old file-backed store was
11
+ * removed.
12
+ */
13
+ // Re-export from transport stubs for convenience
14
+ export { InMemoryManifestVersionStore } from "@cello-protocol/transport";
15
+ //# sourceMappingURL=manifest-version-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-version-store.js","sourceRoot":"","sources":["../src/manifest-version-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,iDAAiD;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC"}