@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,311 @@
1
+ /**
2
+ * `DOD-INBOX-ONESHOT-1` — an away agent's inbox accepts ONE message, then closes itself.
3
+ *
4
+ * ─── What this restores, and why it was missing ────────────────────────────────────────────────
5
+ *
6
+ * The away reply tells the caller, in its own words, that this inbox "accepts one message per
7
+ * visit — please close the session now". Nothing enforced that. A caller who kept talking was
8
+ * talking into an empty room, and the session stayed open indefinitely with no operator anywhere
9
+ * near it.
10
+ *
11
+ * It was enforced once. `DOD-M15-AWAYSCOPE-1` (2026-09-12) deleted the branch that answered
12
+ * mid-conversation messages with the away GREETING — correctly: that greeting took a hash-chain
13
+ * leaf in a live exchange and made the receipt unobtainable. But the one-shot rejection and the
14
+ * seal it initiated lived in the same branch and went with it, and that half was not the defect.
15
+ * Its own commit said so: "deleting the wrong one of the two mechanisms is the whole risk here".
16
+ *
17
+ * So the termination is back, on its own, in its own file, where it cannot be confused with the
18
+ * greeting. It NEVER sends the away text. It sends one closing line and seals.
19
+ *
20
+ * ─── Why the close is a real message and a real seal ───────────────────────────────────────────
21
+ *
22
+ * Because an inbound message is an attack surface, and an away agent's record of it must obey the
23
+ * same rules as everything else: the rejection is signed, ordered by the relay, and takes its leaf.
24
+ * A "quiet" close that left no record would be the one conversation in the system with no evidence.
25
+ *
26
+ * ⚠️ IT PLACES ITS OWN LEAVES, so this file belongs in the seal call-site enforcer's CALLERS list.
27
+ *
28
+ * ─── The rule that stops two machines sealing a conversation nobody had ────────────────────────
29
+ *
30
+ * When both agents are away, each side's auto-reply lands on the other as an inbound message. Left
31
+ * alone, the one-shot fires on BOTH sides, each posts a SEAL ctrl leaf, and two distinct-sender
32
+ * ctrl leaves is exactly what notarizes a session. Measured from the relay's own log 2026-08-09: a
33
+ * session sealed THREE SECONDS after opening, its entire content two machines telling each other
34
+ * nobody was home, while both operators went on believing it was live.
35
+ *
36
+ * So a message carrying the auto-reply marker is never answered and never counted. The narrow rule
37
+ * — suppress a machine answering a machine — is the correct one. The broad rule ("never notarize a
38
+ * session where we only sent away traffic") was tried and reverted: it also disabled closing the
39
+ * inbox on a real caller who ignores the instruction, which is the behaviour this file exists for.
40
+ *
41
+ * ⚠️ `isOwnAwayAutoReply`, NOT the marker alone. The marker only catches a marker-aware peer; the
42
+ * recogniser's LEGACY branch also catches this daemon's older default wording, which is what an
43
+ * un-upgraded CELLO agent still sends. Two away agents on mixed versions sealing a conversation
44
+ * nobody had is `DOD-AWAY-MUTUAL-SEAL-1`, and it became reachable again the moment this file could
45
+ * seal. Its documented limit stands: an old peer with a CONFIGURED away message is unmatched.
46
+ *
47
+ * ⚠️ THE MARKER IS TEXT, SO IT IS ADVISORY — say it rather than imply a rule. It is a token at the
48
+ * front of the message body, not a signed frame field, so any caller who types it is never counted
49
+ * and never closed on. What that buys them is the PRE-FIX behaviour: the session stays open until
50
+ * the operator returns. It buys them no leaf, no seal, no reply and nothing this side would not
51
+ * otherwise have given them. Closing that off means carrying the flag in the frame beside the text,
52
+ * which is a wire change on both sides and is not worth it for an opt-out into waiting longer.
53
+ */
54
+ import { randomUUID } from "node:crypto";
55
+ import { markAsAutoReply, isOwnAwayAutoReply } from "./away-detection.js";
56
+ import { isLocalCredentialRefusal, LEAF_KIND_MSG } from "./session-relay-client.js";
57
+ import { sentAuthorship } from "./session-content-handlers.js";
58
+ import { escalateToUnilateralSeal as runUnilateralEscalation, UNILATERAL_SEAL_TIMEOUT_MS } from "./seal-escalation.js";
59
+ /** The one line this file ever sends. Marked as machine-generated; [[WRAP]] stays at the END. */
60
+ const ONESHOT_REJECT_TEXT = "This inbox only accepts one message per visit. Closing. [[WRAP]]";
61
+ export function createAwayInboxOneshot(deps) {
62
+ const { logger, sessionNodeManager, sendClaims, awayAckSent, keyProviders, sealKey, sealInterruptedInProgress, pendingSealWaiters, pendingUnilateralWaiters, sendOver, handleActiveSealFlow, } = deps;
63
+ /**
64
+ * Their messages, counted from the DURABLE transcript rather than an arrival buffer.
65
+ *
66
+ * The in-memory buffer this used to peek at is deliberately gone (see the note in
67
+ * session-node-manager.ts): it held the plaintext of every live conversation in daemon memory for
68
+ * nobody. The transcript is what production serves and what the operator reads, so counting there
69
+ * also means a restart mid-visit does not reset the caller's allowance.
70
+ *
71
+ * Auto-replies are excluded from the count AND cannot be the trigger — see the header.
72
+ */
73
+ function readSession(agentName, sessionId) {
74
+ const { messages } = sessionNodeManager.readTranscript(agentName, sessionId);
75
+ let theirCount = 0;
76
+ let latest = null;
77
+ let weSpoke = false;
78
+ for (const m of messages) {
79
+ if (m.direction === "sent") {
80
+ // ANYTHING of ours that is not the greeting means a human spoke here. See `weSpoke` at the
81
+ // call site: it is the line between an answering machine and a conversation.
82
+ if (!isOwnAwayAutoReply(m.text))
83
+ weSpoke = true;
84
+ continue;
85
+ }
86
+ if (m.direction !== "received")
87
+ continue;
88
+ // `latest` is the last thing they sent WHATEVER it was, because the auto-reply case is a
89
+ // decision this makes (never answer a machine), not one it can make by never seeing it.
90
+ latest = m.text;
91
+ if (isOwnAwayAutoReply(m.text))
92
+ continue;
93
+ theirCount += 1;
94
+ }
95
+ return { theirCount, latest, weSpoke };
96
+ }
97
+ async function closeInboxIfIgnored(agentName, sessionId) {
98
+ /**
99
+ * THIS IS THE AWAY CASE AND ONLY THE AWAY CASE — the session was answered by the machine at the
100
+ * door, because nobody was at the desk OR because this caller's tier says do not engage (a
101
+ * private agent, which IS attended and still away). The greeting having REACHED the caller is
102
+ * what says so, and it is why attendance is not consulted here: the tier case would fail an
103
+ * attendance test while being exactly the case this exists for.
104
+ *
105
+ * ⚠️ `:greeted`, NEVER `:request`. The latter is set before the send and stays set when the
106
+ * outbound screen blocks the greeting — so keying on it would close a visit on a caller who was
107
+ * never told the rule they are being held to.
108
+ *
109
+ * A conversation that was under way when someone dropped is a DIFFERENT case with its own
110
+ * machinery (recovery and the relay mailbox). Nothing here may reach it — see `weSpoke`.
111
+ */
112
+ if (!awayAckSent.has(`${agentName}:${sessionId}:greeted`))
113
+ return;
114
+ const rejectedKey = `${agentName}:${sessionId}:rejected`;
115
+ if (awayAckSent.has(rejectedKey))
116
+ return;
117
+ const { theirCount, latest, weSpoke } = readSession(agentName, sessionId);
118
+ if (latest === null)
119
+ return;
120
+ /**
121
+ * ⚠️ THE LINE PRINCIPLE 4 DRAWS, AND THE WHOLE REASON THIS IS SAFE TO SHIP.
122
+ *
123
+ * "A session with nobody live must not be terminal" was ruled on 2026-09-11 after a machine
124
+ * greeting took a leaf MID-CONVERSATION and cost a completed exchange its receipt. That ruling
125
+ * is about a conversation. If this side has said anything of its own, a human was here, and the
126
+ * machine does not get to end it — the party who comes back closes, per principle 8.
127
+ *
128
+ * A session whose only outbound line is the greeting is not a conversation. Nobody had it, and
129
+ * closing it destroys nothing.
130
+ */
131
+ if (weSpoke)
132
+ return;
133
+ // A send whose transcript row failed is a message this side made that the transcript cannot
134
+ // show. "Cannot tell" is not "nobody spoke", and only one of those may end a session.
135
+ if (sendClaims.rowMissing(agentName, sessionId)) {
136
+ logger.warn("session.away.inbox.oneshot.skipped_unreadable_record", {
137
+ agentName, sessionId,
138
+ impact: "this side sent something the transcript does not hold, so whether a human spoke here cannot be decided — the visit is left open",
139
+ });
140
+ return;
141
+ }
142
+ // AND the same question for a reply that is on the wire but not yet on disk. Without this, the
143
+ // window between `sendContent` resolving and its transcript row being written reads as silence.
144
+ if (sendClaims.held(agentName, sessionId)) {
145
+ logger.info("session.away.inbox.oneshot.skipped_send_in_flight", {
146
+ agentName, sessionId,
147
+ impact: "a reply from this side is on the wire, so this is a conversation — the visit is not closed",
148
+ });
149
+ return;
150
+ }
151
+ // THE ARRIVAL ITSELF IS A MACHINE'S: never answered, never counted, and checked before the
152
+ // count so two away agents cannot reach the seal below by trading greetings.
153
+ if (isOwnAwayAutoReply(latest)) {
154
+ logger.info("session.away.mutual.skipped", {
155
+ agentName, sessionId,
156
+ impact: "no one-shot close — two away agents must not notarize a conversation nobody had",
157
+ });
158
+ return;
159
+ }
160
+ // Their one message has arrived, so the visit is over. Waiting for a SECOND would be a shop that
161
+ // locks up only when someone tries the handle after closing time.
162
+ if (theirCount < 1)
163
+ return;
164
+ // They are closing of their own accord — let the ordinary seal proceed, and do not spend the
165
+ // one-shot on it. Matched at the END, because DOD-SIGNAL-TOKEN-1 appends the real token there
166
+ // and a substring match would read a mere mention of the token as a close.
167
+ if (latest.trimEnd().endsWith("[[WRAP]]")) {
168
+ logger.info("session.away.inbox.oneshot.skipped_wrap", { agentName, sessionId });
169
+ return;
170
+ }
171
+ awayAckSent.add(rejectedKey); // guard BEFORE async work — concurrent arrivals must not re-enter
172
+ const record = sessionNodeManager.getSessionRecord(agentName, sessionId);
173
+ if (!record || record.status !== "active")
174
+ return;
175
+ const rejectText = markAsAutoReply(ONESHOT_REJECT_TEXT);
176
+ const rejectBytes = new TextEncoder().encode(rejectText);
177
+ // One decision point for the hash AND its algorithm — see `contentHashForSession`.
178
+ const reject = await sessionNodeManager.contentHashForSession(agentName, sessionId, rejectBytes);
179
+ // Best-effort: a send failure still triggers the seal — we are closing regardless.
180
+ const sendResult = await sessionNodeManager.sendContent(agentName, sessionId, rejectBytes, new Uint8Array(reject.hash), randomUUID(), LEAF_KIND_MSG, reject.alg);
181
+ if (sendResult.ok || sendResult.durable) {
182
+ // At the RELAY's position, not the tail, and committed when the send went out OR was durably
183
+ // queued — either way the relay already witnessed its sequence. This is the sharpest case of
184
+ // that rule in the codebase: the seal is initiated a few lines below, so a leaf at the wrong
185
+ // index seals a tree the counterparty can never agree with.
186
+ const placed = sessionNodeManager.placeOwnLeaf(agentName, sessionId, Buffer.from(reject.hash).toString("hex"), rejectBytes, sendResult.sequenceNumber, randomUUID(), "msg", sentAuthorship(sendResult));
187
+ if (placed.placed) {
188
+ sessionNodeManager.recordTranscriptMessage(agentName, sessionId, placed.leafIndex, "sent", rejectBytes, randomUUID(), sentAuthorship(sendResult));
189
+ }
190
+ logger.info("session.away.inbox.oneshot.rejected", {
191
+ agentName, sessionId, sequenceNumber: placed.placed ? placed.leafIndex : placed.heldAt,
192
+ committed: placed.placed, queued: !sendResult.ok,
193
+ });
194
+ }
195
+ else {
196
+ // Not queued anywhere — the rejection is gone. We still seal (we are closing regardless), and
197
+ // the counterparty simply never learns why, so say that plainly.
198
+ logger.error("session.away.inbox.oneshot.reject_send_failed", {
199
+ agentName, sessionId, reason: sendResult.reason, cause: sendResult.cause,
200
+ impact: "the rejection is lost and was NOT queued — the session seals with no explanation to the counterparty",
201
+ });
202
+ }
203
+ /**
204
+ * The divergence gate has to hold on the path with no operator. `cello_close_session` refuses a
205
+ * diverged record; this autonomous path must too, and the LOG is its whole surface because
206
+ * there is no caller awaiting an answer.
207
+ */
208
+ /**
209
+ * ASKED AGAIN, BECAUSE THE SEND ABOVE TOOK A ROUND TRIP. The checks at entry were true when the
210
+ * caller's message arrived; an operator who started replying during our own send would not have
211
+ * been visible then. Sealing is the irreversible half, so the last thing before it is the same
212
+ * question, freshly asked.
213
+ */
214
+ if (sendClaims.held(agentName, sessionId) || readSession(agentName, sessionId).weSpoke) {
215
+ logger.info("session.away.inbox.oneshot.seal_skipped_operator_returned", {
216
+ agentName, sessionId,
217
+ impact: "the operator spoke while this was closing, so the session is NOT sealed — it is theirs to close",
218
+ });
219
+ return;
220
+ }
221
+ const readiness = sessionNodeManager.sealReadiness(agentName, sessionId);
222
+ if (readiness.diverged) {
223
+ logger.warn("session.away.inbox.oneshot.seal_skipped_diverged", {
224
+ agentName, sessionId, treeSize: readiness.treeSize, highWaterSeq: readiness.highWaterSeq,
225
+ impact: "this side's tree parted from the relay's ordering, so the seal was NOT initiated — the session stays closeable by hand, where the operator can compare counts with the counterparty first",
226
+ });
227
+ return;
228
+ }
229
+ await initiateSeal(agentName, sessionId, record);
230
+ }
231
+ /**
232
+ * Seal via the RELAY-mediated path, not the signaling one.
233
+ *
234
+ * The signaling path compares leaf counts, and this party's tree includes the rejection sent
235
+ * milliseconds ago while the counterparty's may not have ingested it yet — a race that fails the
236
+ * seal for a reason that is not real. The relay path posts a SEAL ctrl leaf and waits for the
237
+ * counterparty to co-seal independently, so no count comparison happens at all.
238
+ */
239
+ async function initiateSeal(agentName, sessionId, record) {
240
+ const correlationId = randomUUID();
241
+ const sk = sealKey(agentName, sessionId);
242
+ if (sealInterruptedInProgress.has(sk))
243
+ return;
244
+ sealInterruptedInProgress.add(sk);
245
+ try {
246
+ let resolveSeal;
247
+ const sealedP = new Promise((r) => { resolveSeal = r; });
248
+ pendingSealWaiters.set(sk, resolveSeal);
249
+ const submit = await sessionNodeManager.submitSealLeaf(agentName, sessionId, correlationId);
250
+ if (!submit.ok && submit.reason !== "responder_seal_already_submitted") {
251
+ pendingSealWaiters.delete(sk);
252
+ if (submit.reason === "relay_unavailable" || isLocalCredentialRefusal(submit.reason)) {
253
+ const fallback = await handleActiveSealFlow(sessionId, record, correlationId);
254
+ if (fallback.ok)
255
+ logger.info("session.away.inbox.oneshot.seal_initiated", { agentName, sessionId, path: "signaling_fallback" });
256
+ else
257
+ logger.warn("session.away.inbox.oneshot.seal_initiate_failed", { agentName, sessionId, reason: fallback.reason, path: "signaling_fallback" });
258
+ }
259
+ else {
260
+ logger.warn("session.away.inbox.oneshot.seal_initiate_failed", { agentName, sessionId, reason: submit.reason });
261
+ }
262
+ return;
263
+ }
264
+ logger.info("session.away.inbox.oneshot.seal_initiated", { agentName, sessionId, path: "relay" });
265
+ const bilateralTimeoutMs = Number(process.env["CELLO_SEAL_BILATERAL_TIMEOUT_MS"]) || 660_000;
266
+ let timer;
267
+ const timeoutP = new Promise((r) => { timer = setTimeout(() => r(null), bilateralTimeoutMs); });
268
+ const completion = await Promise.race([sealedP, timeoutP]);
269
+ clearTimeout(timer);
270
+ pendingSealWaiters.delete(sk);
271
+ if (completion !== null) {
272
+ // A REFUSED certificate resolves the waiter rather than being dropped, so the two must be
273
+ // told apart — logging a refusal as "sealed" is the silent acceptance to avoid.
274
+ if ("refused" in completion) {
275
+ logger.error("session.away.inbox.oneshot.seal_refused", {
276
+ agentName, sessionId, reason: completion.reason, detail: completion.detail,
277
+ impact: "the away auto-seal was REFUSED: the directory returned a validly signed root that does not describe this conversation. The session is NOT sealed and nothing was signed with this agent's key.",
278
+ });
279
+ return;
280
+ }
281
+ logger.info("session.away.inbox.oneshot.sealed", { agentName, sessionId, sealedRoot: completion.rootHex });
282
+ return;
283
+ }
284
+ const escalation = submit.ok
285
+ ? { reportedRootHex: submit.reportedRootHex, sequenceNumber: submit.sequenceNumber }
286
+ : submit.reason === "responder_seal_already_submitted" && typeof submit.reportedRootHex === "string" && typeof submit.sequenceNumber === "number"
287
+ ? { reportedRootHex: submit.reportedRootHex, sequenceNumber: submit.sequenceNumber }
288
+ : null;
289
+ if (!escalation) {
290
+ logger.warn("session.away.inbox.oneshot.seal_pending", { agentName, sessionId });
291
+ return;
292
+ }
293
+ // THE SHARED ESCALATION, not a second copy — a duplicate drifted once and missed every
294
+ // refusal the shared one gained (empty carry, gappy chain, two of our own ctrl leaves).
295
+ const uni = await runUnilateralEscalation({ logger, sessionNodeManager, sendOver, pendingUnilateralWaiters, sealKey, getKeyProvider: (a) => keyProviders.get(a), timeoutMs: UNILATERAL_SEAL_TIMEOUT_MS }, agentName, sessionId, escalation, correlationId, { refuseOnUnusableCarry: true });
296
+ if (uni.ok) {
297
+ logger.info("session.away.inbox.oneshot.sealed", { agentName, sessionId, sealedRoot: uni.sealed_root, sealType: "unilateral" });
298
+ }
299
+ else {
300
+ // CARRY THE GUIDANCE: it is the sentence telling an operator whether to retry or
301
+ // force-abandon, and this log is the path's only surface.
302
+ logger.warn("session.away.inbox.oneshot.seal_unilateral_failed", { agentName, sessionId, reason: uni.reason, guidance: uni.guidance });
303
+ }
304
+ }
305
+ finally {
306
+ sealInterruptedInProgress.delete(sealKey(agentName, sessionId));
307
+ }
308
+ }
309
+ return { closeInboxIfIgnored };
310
+ }
311
+ //# sourceMappingURL=away-inbox-oneshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"away-inbox-oneshot.js","sourceRoot":"","sources":["../src/away-inbox-oneshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { IpcHandler } from "./ipc-server.js";
2
+ import type { Logger } from "./types.js";
3
+ export interface BackupRestoreDeps {
4
+ handlers: Map<string, IpcHandler>;
5
+ logger: Logger;
6
+ /** Where the daemon keeps its data — the database this writes out and reads back sits under it. */
7
+ celloDir: string;
8
+ }
9
+ export declare function registerBackupRestoreHandlers(deps: BackupRestoreDeps): void;
10
+ //# sourceMappingURL=backup-restore-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-restore-handlers.d.ts","sourceRoot":"","sources":["../src/backup-restore-handlers.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,mGAAmG;IACnG,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAuE3E"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Backup and restore: write this machine's agent to a file, and put one back.
3
+ *
4
+ * Three dependencies — the handler map, a logger, and where the daemon keeps its data. That is the
5
+ * whole reason this is its own module rather than sitting with the other admin verbs: it touches
6
+ * files and nothing else, so it needs none of the signaling, consortium or ceremony machinery they
7
+ * do, and merging them would push one context over the bound to save one call site.
8
+ *
9
+ * The backup file is as sensitive as a private key. `VACUUM INTO` takes a consistent snapshot with
10
+ * the database still open, which is what makes this safe to run against the daemon serving the call.
11
+ */
12
+ import { join } from "node:path";
13
+ import { createBackup, inspectBackup } from "./backup-restore.js";
14
+ export function registerBackupRestoreHandlers(deps) {
15
+ const { handlers, logger, celloDir } = deps;
16
+ /**
17
+ * DOD-M15-BACKUP-1 — export the agent, so losing the machine does not lose the identity.
18
+ *
19
+ * `VACUUM INTO` takes a consistent snapshot with the database still open, so this is safe to call
20
+ * on a running daemon — which matters, because the daemon is what serves the tool.
21
+ */
22
+ handlers.set("cello_backup", async (params, _connectionId) => {
23
+ const outPath = typeof params?.["path"] === "string" ? params["path"] : "";
24
+ if (!outPath) {
25
+ return {
26
+ ok: false,
27
+ reason: "missing_path",
28
+ guidance: "Give an absolute path to write the backup to, e.g. { path: \"/Users/you/cello-agent.cello-backup\" }. " +
29
+ "It is not written to a default location on purpose: the file contains the key to your agent, " +
30
+ "so where it lands is a decision you should make deliberately.",
31
+ };
32
+ }
33
+ const res = await createBackup({
34
+ dbPath: join(celloDir, "sessions.db"),
35
+ outPath,
36
+ logger,
37
+ ...(params?.["overwrite"] === true ? { overwrite: true } : {}),
38
+ });
39
+ return res.ok
40
+ ? { ok: true, path: res.path, bytes: res.bytes, guidance: res.guidance }
41
+ : { ok: false, reason: res.reason, guidance: res.guidance };
42
+ });
43
+ /**
44
+ * RESTORE IS REFUSED WHILE THIS DAEMON IS RUNNING, and that is not a limitation to apologise for.
45
+ *
46
+ * The daemon holds the database open with a write lock. Overwriting the file underneath an open
47
+ * SQLite handle risks the handle flushing its own pages back over the restored ones — the restore
48
+ * appears to succeed and the database is a hybrid of two identities, which is worse than either
49
+ * failing cleanly.
50
+ *
51
+ * The capability itself lives in `backup-restore.ts` (a daemon module, per the DoD), and the CLI
52
+ * calls it with the daemon stopped. So the honest answer here is the exact sequence, not an
53
+ * attempt.
54
+ */
55
+ handlers.set("cello_restore", async (params, _connectionId) => {
56
+ const archivePath = typeof params?.["path"] === "string" ? params["path"] : "";
57
+ const inspected = archivePath ? await inspectBackup(archivePath) : null;
58
+ return {
59
+ ok: false,
60
+ reason: "daemon_running",
61
+ ...(inspected?.ok
62
+ ? { archive_verified: true, backup_created_at: new Date(inspected.createdAt).toISOString() }
63
+ : inspected
64
+ ? { archive_verified: false, archive_problem: inspected.reason }
65
+ : {}),
66
+ guidance: (inspected?.ok
67
+ ? `That archive is valid (taken ${new Date(inspected.createdAt).toISOString()}). `
68
+ : inspected
69
+ ? `WARNING: that archive did not validate (${inspected.reason}) — fix that before going further. `
70
+ : "") +
71
+ "Restoring REPLACES this machine's agent database, and it cannot be done while the daemon " +
72
+ "is holding it open — the running daemon could flush its own pages back over the restored " +
73
+ "ones and leave a database that is half one identity and half another. Stop the daemon " +
74
+ "first:\n\n cello logout\n cello restore " +
75
+ (archivePath || "<archive>") +
76
+ "\n cello login\n\n" +
77
+ "Anything that happened on this machine since the backup was taken will be gone — restore " +
78
+ "replaces, it does not merge.",
79
+ };
80
+ });
81
+ }
82
+ //# sourceMappingURL=backup-restore-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-restore-handlers.js","sourceRoot":"","sources":["../src/backup-restore-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * DOD-M15-BACKUP-1 — export an agent's identity, and put it back on another machine.
3
+ *
4
+ * ─── What a backup has to contain, and why the obvious answer is wrong ─────────────────────────
5
+ *
6
+ * The DoD line says *"Backup = exporting the SQLCipher database for transport."* Exporting the
7
+ * database alone produces a file nobody can ever open.
8
+ *
9
+ * The database is encrypted and its key is a separate 32-byte file at `<db>.key` — `sqlcipher-db.ts`
10
+ * calls it "the ONE plaintext key file on disk". A fresh daemon on a new machine mints its own key,
11
+ * which cannot open a database encrypted under a different one. An operator restoring a
12
+ * database-only archive would be told it worked, and find out on the day they needed it that the
13
+ * contents are unreadable forever.
14
+ *
15
+ * So the archive carries BOTH, and the round-trip test restores into a directory holding a
16
+ * different key precisely to prove it.
17
+ *
18
+ * ─── The consequence of that, which the tool must say out loud ─────────────────────────────────
19
+ *
20
+ * A file containing that key IS the agent. Whoever holds it can sign as them, read every
21
+ * transcript, and use their identity. Nothing about the word "backup" suggests a file this
22
+ * dangerous, so the response says it at the moment one is written. `DOD-M15-CLAIM-SCREEN-1`'s rule
23
+ * applies to affordances as much as claims: silence is not an option.
24
+ *
25
+ * ─── Why `VACUUM INTO` rather than copying the file ────────────────────────────────────────────
26
+ *
27
+ * The daemon holds the database open with a write lock. Copying the file byte-for-byte while it is
28
+ * open can capture a torn page or miss a WAL frame, producing an archive that restores into a
29
+ * corrupt database — the worst outcome available here, because it looks like a successful backup.
30
+ * `VACUUM INTO` asks SQLite for a consistent snapshot, and on SQLCipher the target inherits the
31
+ * source's cipher settings, so the snapshot is encrypted under the same key.
32
+ *
33
+ * ─── Restore is validated in full BEFORE anything is touched ───────────────────────────────────
34
+ *
35
+ * Restore OVERWRITES. A truncated or wrong file that is accepted destroys the working agent the
36
+ * operator still had — the backup tool becomes the thing that loses the identity. So the container
37
+ * is parsed, its checksum verified and its payloads decompressed entirely in memory first; only
38
+ * then does anything reach the disk.
39
+ *
40
+ * ─── V1 scope, per the DoD ─────────────────────────────────────────────────────────────────────
41
+ *
42
+ * Export plus overwrite-restore. MERGE — restoring onto a device that has its own live state — is
43
+ * explicitly deferred, and this module does not pretend otherwise: restore replaces, and says so.
44
+ */
45
+ import type { Logger } from "./types.js";
46
+ export type BackupResult = {
47
+ ok: true;
48
+ path: string;
49
+ bytes: number;
50
+ guidance: string;
51
+ } | {
52
+ ok: false;
53
+ reason: string;
54
+ guidance: string;
55
+ };
56
+ export type RestoreResult = {
57
+ ok: true;
58
+ dbPath: string;
59
+ guidance: string;
60
+ } | {
61
+ ok: false;
62
+ reason: string;
63
+ guidance: string;
64
+ };
65
+ /**
66
+ * Take a consistent snapshot of the live database and write a portable archive.
67
+ *
68
+ * `dbPath` is the live database. It may be open in this process; `VACUUM INTO` is safe against that
69
+ * and is why the snapshot goes through SQLite rather than a file copy.
70
+ */
71
+ export declare function createBackup(opts: {
72
+ dbPath: string;
73
+ outPath: string;
74
+ logger: Logger;
75
+ keyPath?: string;
76
+ /** A backup is not a scratch file: replacing one is deliberate, never incidental. */
77
+ overwrite?: boolean;
78
+ }): Promise<BackupResult>;
79
+ /** Read an archive's metadata without restoring it. */
80
+ export declare function inspectBackup(archivePath: string): Promise<{
81
+ ok: true;
82
+ createdAt: number;
83
+ hasKey: boolean;
84
+ dbBytes: number;
85
+ } | {
86
+ ok: false;
87
+ reason: string;
88
+ }>;
89
+ /**
90
+ * Replace this machine's database and key with the archive's.
91
+ *
92
+ * OVERWRITE, not merge — merge is explicitly deferred, and pretending otherwise would silently pick
93
+ * a winner between two divergent histories. The caller is responsible for the daemon not holding
94
+ * the database open; the handler enforces that.
95
+ */
96
+ export declare function restoreBackup(opts: {
97
+ archivePath: string;
98
+ dbPath: string;
99
+ logger: Logger;
100
+ keyPath?: string;
101
+ }): Promise<RestoreResult>;
102
+ //# sourceMappingURL=backup-restore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-restore.d.ts","sourceRoot":"","sources":["../src/backup-restore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAQH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAqCzC,MAAM,MAAM,YAAY,GACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAYpD;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qFAAqF;IACrF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,YAAY,CAAC,CA0FxB;AAED,uDAAuD;AACvD,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAS5G;AA0DD;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,aAAa,CAAC,CA6FzB"}