@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,604 @@
1
+ import { MONIKER_RE, validateMoniker, buildAgentRevocationTbs } from "@cello-protocol/protocol-types";
2
+ import { DbIdentityStore, DbRegistrationPersistence } from "./db-identity-store.js";
3
+ import { generateKLocalSeed, InMemoryKeyProvider } from "@cello-protocol/crypto";
4
+ import { TrustSignalStore } from "./trust-signal-store.js";
5
+ import { countAttendance } from "./co-attendance.js";
6
+ import { noAgentsGuidance } from "./onboarding-guidance.js";
7
+ import { extractErrorMessage } from "./error-message.js";
8
+ export function registerAgentHandlers(deps) {
9
+ const { handlers, logger, sessionNodeManager, agents, onlineAgents, explicitlyOfflineAgents, getNotificationDispatcher, getConnState, perConnectionState, getAgentsForConnection, startAgentInternal, dropAgentSignaling, stopSweepTick, awayAckSent, keyProviders, loadedAgents, getAgentSignaling, waitForSignalingConnected, perAgentSignaling, } = deps;
10
+ // ─── MCP-001: cello_start_agent handler ───
11
+ // Bring a registered agent online WITHOUT claiming it as this connection's current agent.
12
+ handlers.set("cello_start_agent", async (params, _connectionId) => {
13
+ const name = params?.name;
14
+ if (!name) {
15
+ return { ok: false, reason: "missing_params", guidance: "Provide 'name' parameter with the agent name to start." };
16
+ }
17
+ return startAgentInternal(name);
18
+ });
19
+ // ─── PERSIST-002 (AC-004): cello_create_agent handler ───
20
+ // The explicit agent-creation path: generate a fresh K_local seed, write it as an `agents` row in
21
+ // the encrypted DB (NO key file), and wire the agent into the live daemon so it can be registered
22
+ // and used WITHOUT a restart. Creation is explicit — cello_start_agent never auto-creates on a typo.
23
+ handlers.set("cello_create_agent", async (params, _connectionId) => {
24
+ const name = validateMoniker(params?.name);
25
+ if (name === null) {
26
+ return { ok: false, reason: "invalid_agent_name", guidance: `Provide a 'name' (1-64 chars: letters, digits, '-' or '_'; regex ${MONIKER_RE.source}) for the new agent.` };
27
+ }
28
+ const store = new DbIdentityStore(sessionNodeManager.getDb(), logger);
29
+ if (store.hasActiveAgent(name) || agents.some((a) => a.name === name)) {
30
+ return { ok: false, reason: "agent_already_exists", guidance: `Agent '${name}' already exists. Choose a different name, or see cello_agents.` };
31
+ }
32
+ let pubkeyHex;
33
+ let agentId;
34
+ try {
35
+ const seed = generateKLocalSeed();
36
+ const keyProvider = new InMemoryKeyProvider(seed);
37
+ pubkeyHex = Buffer.from(await keyProvider.getPublicKey()).toString("hex");
38
+ // SI-001: createAgent stores the seed in the encrypted DB and logs only the pubkey + agent_id.
39
+ agentId = store.createAgent(name, seed, pubkeyHex);
40
+ // Runtime-add: make the agent immediately registrable/usable (the register handler resolves
41
+ // identity from keyProviders/loadedAgents; per-agent signaling is created lazily on register).
42
+ keyProviders.set(name, keyProvider);
43
+ const loaded = { name, pubkey: pubkeyHex, keyProvider };
44
+ loadedAgents.push(loaded);
45
+ // The LOAD outcome, not the operator-facing state — that is derived per call by
46
+ // resolveAgentState. This agent has just been created and has no FROST share, so it derives as
47
+ // `unregistered` until `cello register-agent` runs. It used to be recorded as "registered"
48
+ // here, which was false at the moment it was written: nobody could reach this agent yet.
49
+ agents.push({ name, state: "stopped", pubkey: pubkeyHex });
50
+ // CELLO-M7-CONN-001 (DOD-CONN-1, supersedes ONBOARD-001 keystone election): on a fresh install
51
+ // the daemon started with zero agents, so there were no directory connections. Bring up THIS
52
+ // agent's OWN directory connection now (production: getAgentSignaling creates + connects a
53
+ // dedicated manager authenticated as this agent; the directory door becomes active with no
54
+ // restart). There is no shared keystone to elect into. In the test path getAgentSignaling returns
55
+ // the already-present shared manager (no-op).
56
+ getAgentSignaling(name, keyProvider, pubkeyHex);
57
+ // "initiated" not "established": getAgentSignaling starts the connection but does not await it
58
+ // (the SignalingManager emits directory.signaling.connected on the state transition; the
59
+ // handshake itself is directory.signaling.authenticated — 058-LOGNAME).
60
+ logger.info("agent.directory.connection.initiated", { agentName: name, agentPubkey: pubkeyHex });
61
+ }
62
+ catch (err) {
63
+ logger.error("persist.identity.persist.failed", { agentName: name, error: extractErrorMessage(err) });
64
+ return { ok: false, reason: "agent_create_failed", guidance: "Could not create the agent. Check the daemon log and that the CELLO directory is writable, then retry." };
65
+ }
66
+ // Creation is not an online/offline transition — the agent appears (cello_list_agents) but is
67
+ // not online until cello_start_agent. Just record it.
68
+ logger.info("agent.created", { agentName: name, agentId, agentPubkey: pubkeyHex });
69
+ return { ok: true, name, pubkey: pubkeyHex, agentId };
70
+ });
71
+ // ─── CELLO-M7-REMOVE-001 (DOD-REMOVE-1): cello_remove_agent handler ───
72
+ // RETIRE-AND-KEEP: flip the agent's local row to state='retired' (its row, keys, and history are
73
+ // KEPT for accountability — never hard-deleted, SI-002) and FREE the human name for reuse. Purge the
74
+ // retired identity from the live runtime so it stops operating and the name is immediately available
75
+ // to a NEW `cello_create_agent`. One-way. (DEC-4: the signed DIRECTORY revocation is DOD-REMOVE-2 —
76
+ // not built here; this unit is the local record shape only.)
77
+ // CELLO-M7-REMOVE-001 (DOD-REMOVE-2): build + self-sign an agent revocation and submit it to the
78
+ // directory on the agent's K_local-authenticated signaling stream. Self-authorized — the directory
79
+ // verifies the signature against the agent's registered K_local before appending. Best-effort: returns
80
+ // { recorded:false, reason } if the directory is unreachable / rejects (DB-001 — the caller still
81
+ // applies the one-way local retire and surfaces a distinct status).
82
+ async function submitAgentRevocation(opts) {
83
+ const { agentName, signer, kLocalPubkeyHex, regAgentId } = opts;
84
+ const epochId = "";
85
+ const reason = "voluntary";
86
+ const revokedAt = Date.now();
87
+ const tbs = buildAgentRevocationTbs(regAgentId, kLocalPubkeyHex, epochId, reason, revokedAt);
88
+ const sigHex = Buffer.from(await signer.sign(tbs)).toString("hex");
89
+ // If the agent has no live signaling (e.g. a re-push of an already-retired agent), getAgentSignaling
90
+ // lazily creates a dedicated manager — drop it again afterwards so we don't leak a reconnect loop.
91
+ const hadSignaling = perAgentSignaling.has(agentName);
92
+ const { signaling } = getAgentSignaling(agentName, signer, kLocalPubkeyHex);
93
+ // createdSignaling is true only when this call lazily created a NEW per-agent manager (production);
94
+ // on the shared test path perAgentSignaling stays empty, so it is false and dropAgentSignaling no-ops.
95
+ const createdSignaling = !hadSignaling && perAgentSignaling.has(agentName);
96
+ try {
97
+ const connected = await waitForSignalingConnected(signaling, 10_000);
98
+ if (!connected)
99
+ return { recorded: false, reason: "directory_unreachable" };
100
+ let resolveFrame;
101
+ const pending = new Promise((r) => { resolveFrame = r; });
102
+ // Match the reply by agent_id so a revocation on a shared signaling stream is never cross-wired.
103
+ const unregister = signaling.registerInboundHandler((frame) => {
104
+ const t = frame["type"];
105
+ if ((t === "agent_revocation_ack" || t === "agent_revocation_error") && frame["agent_id"] === regAgentId)
106
+ resolveFrame(frame);
107
+ });
108
+ try {
109
+ const sent = await signaling.sendRaw({ type: "revoke_agent", agent_id: regAgentId, epoch_id: epochId, reason, revoked_at: revokedAt, signature: sigHex });
110
+ if (!sent.ok)
111
+ return { recorded: false, reason: sent.reason ?? "directory_unreachable" };
112
+ let timer;
113
+ const timeoutP = new Promise((r) => { timer = setTimeout(() => r({ type: "__timeout__" }), 15_000); });
114
+ const frame = await Promise.race([pending, timeoutP]);
115
+ clearTimeout(timer);
116
+ if (frame["type"] === "__timeout__")
117
+ return { recorded: false, reason: "timeout" };
118
+ if (frame["type"] === "agent_revocation_error")
119
+ return { recorded: false, reason: String(frame["reason"] ?? "rejected") };
120
+ logger.info("agent.revocation.submitted", { agentName, agentId: regAgentId });
121
+ return { recorded: true };
122
+ }
123
+ finally {
124
+ unregister();
125
+ }
126
+ }
127
+ finally {
128
+ if (createdSignaling) {
129
+ await dropAgentSignaling(agentName).catch((err) => {
130
+ logger.warn("agent.revocation.signaling_teardown_failed", { agentName, error: extractErrorMessage(err) });
131
+ });
132
+ }
133
+ }
134
+ }
135
+ handlers.set("cello_remove_agent", async (params, _connectionId) => {
136
+ const name = validateMoniker(params?.name);
137
+ if (name === null) {
138
+ return { ok: false, reason: "invalid_agent_name", guidance: `Provide the 'name' of the agent to remove (1-64 chars: letters, digits, '-' or '_'; regex ${MONIKER_RE.source}).` };
139
+ }
140
+ const store = new DbIdentityStore(sessionNodeManager.getDb(), logger);
141
+ // The active row (a fresh removal) OR the most-recent retired row (a DB-001 re-push). Captured BEFORE
142
+ // any retire — the active-only accessors filter retired rows out once state is flipped.
143
+ const target = store.getAgentForRevocation(name);
144
+ if (!target) {
145
+ return { ok: false, reason: "agent_not_found", guidance: `No agent named '${name}'. Check cello_agents.` };
146
+ }
147
+ const wasActive = target.state !== "retired";
148
+ const agentId = target.localAgentId;
149
+ // An already-retired agent that was never registered has nothing to do — no local retire (one-way,
150
+ // already done) and no directory revocation to push. Treat a repeat removal as agent_not_found (a
151
+ // tombstone is never re-retired). A retired agent WITH a directory id falls through to the DB-001
152
+ // re-push below.
153
+ if (!wasActive && !target.regAgentId) {
154
+ return { ok: false, reason: "agent_not_found", guidance: `No active agent named '${name}'. Removal is one-way; '${name}' is already retired.` };
155
+ }
156
+ // DOD-REMOVE-2: build + self-sign + submit the directory revocation. Done for a fresh removal AND a
157
+ // re-push of an already-retired agent (DB-001). Skipped only if the agent was never registered (no
158
+ // directory-known id to revoke). The signer is re-derived from the kept K_local seed, so it works
159
+ // even for an already-retired agent whose runtime keyProvider was purged.
160
+ let directoryRevocation = "skipped";
161
+ let revocationReason;
162
+ if (target.regAgentId) {
163
+ const signer = new InMemoryKeyProvider(target.kLocalSeed);
164
+ const kLocalPubkeyHex = Buffer.from(await signer.getPublicKey()).toString("hex");
165
+ const res = await submitAgentRevocation({ agentName: name, signer, kLocalPubkeyHex, regAgentId: target.regAgentId });
166
+ directoryRevocation = res.recorded ? "recorded" : "deferred";
167
+ revocationReason = res.reason;
168
+ if (!res.recorded) {
169
+ logger.error("agent.removal.failed", { agentName: name, error: res.reason ?? "directory_unreachable" });
170
+ }
171
+ else {
172
+ logger.info("agent.revocation.recorded", { agentId: target.regAgentId });
173
+ }
174
+ }
175
+ else if (target.state === "registered") {
176
+ // Anomaly (fallback-finder MEDIUM): the agent is locally marked registered but has no
177
+ // directory-known id, so the revocation cannot be pushed. Do NOT report the benign "never
178
+ // registered" — surface it loudly so a registered-but-unrevocable agent is visible.
179
+ revocationReason = "registered_without_directory_id";
180
+ logger.error("agent.removal.failed", { agentName: name, error: "registered_without_directory_id" });
181
+ }
182
+ // Local retire (one-way) + runtime purge — only for a fresh removal. An already-retired re-push does
183
+ // not re-retire (and has nothing loaded to purge).
184
+ if (wasActive) {
185
+ store.retireAgent(name);
186
+ // Tear down the retired identity's live runtime so it can no longer receive or re-authenticate.
187
+ // AWAITED + LOGGED on failure (review HIGH-1 / fallback-finder MEDIUM): a teardown that didn't
188
+ // happen must be visible.
189
+ if (onlineAgents.has(name)) {
190
+ onlineAgents.delete(name);
191
+ await sessionNodeManager.removeStandingReceiverForAgent(name).catch((err) => {
192
+ logger.warn("agent.removal.receiver_teardown_failed", { agentName: name, agentId, error: extractErrorMessage(err) });
193
+ });
194
+ }
195
+ // Stop+forget the retired agent's dedicated per-agent signaling manager (review HIGH-1).
196
+ await dropAgentSignaling(name).catch((err) => {
197
+ logger.warn("agent.removal.signaling_teardown_failed", { agentName: name, agentId, error: extractErrorMessage(err) });
198
+ });
199
+ // 048-SWEEPTICK: and its collection tick, which would otherwise outlive the agent for the life
200
+ // of the daemon — skipping every five minutes for a name that no longer exists.
201
+ stopSweepTick(name);
202
+ keyProviders.delete(name);
203
+ const li = loadedAgents.findIndex((a) => a.name === name);
204
+ if (li >= 0)
205
+ loadedAgents.splice(li, 1);
206
+ const ai = agents.findIndex((a) => a.name === name);
207
+ if (ai >= 0)
208
+ agents.splice(ai, 1);
209
+ // CELLO-M7-CONN-001 (DOD-CONN-1): no keystone to clear — the agent's OWN per-agent directory
210
+ // connection was already torn down above (dropAgentSignaling). Removing any agent disturbs only
211
+ // its own connection; no other agent's connection, and no shared "keystone", is affected. This is
212
+ // the fix for the Demo1 bug (the keystone lingered authenticated as the removed agent).
213
+ logger.info("agent.directory.connection.dropped", { agentName: name, agentId, reason: "agent_removed" });
214
+ // Drop the retired agent as any connection's current agent.
215
+ for (const [connId, state] of perConnectionState) {
216
+ if (state.currentAgent === name) {
217
+ state.currentAgent = null;
218
+ state.clearedAgent = name; // this connection HAD an intent; do not guess a replacement
219
+ getNotificationDispatcher().setCurrentAgent(connId, null);
220
+ getNotificationDispatcher().dispatchAgentCurrentChanged(connId, name, null);
221
+ }
222
+ }
223
+ // agent.removal.retired (observability): never log key material — only the name + agent_id.
224
+ logger.info("agent.removal.retired", { agentName: name, agentId });
225
+ getNotificationDispatcher().dispatchAgentStateChanged(name, "offline", "removed");
226
+ }
227
+ const baseLine = wasActive
228
+ ? "Agent retired. This is one-way: its identity and history are kept for accountability, but it can no longer connect. The name is now free to reuse with cello create-agent."
229
+ : "Agent was already retired locally.";
230
+ const dirLine = directoryRevocation === "recorded"
231
+ ? " A signed revocation was recorded at the directory — peers will see it as revoked."
232
+ : directoryRevocation === "deferred"
233
+ ? ` The directory could NOT be reached to record the revocation (${revocationReason ?? "directory_unreachable"}) — peers do not yet see it as revoked. Re-run 'cello remove-agent ${name}' when the directory is reachable to push it.`
234
+ : revocationReason === "registered_without_directory_id"
235
+ ? " WARNING: this agent appears registered but has no directory id recorded locally, so its revocation could NOT be pushed — peers may still see it as reachable. Check the daemon logs (agent.removal.failed)."
236
+ : " It was never registered with a directory, so there is no directory revocation to record.";
237
+ return { ok: true, name, agentId, oneWay: true, directoryRevocation, guidance: baseLine + dirLine };
238
+ });
239
+ // ─── MCP-001: cello_set_agent_offline — renamed on BOTH the tool and the wire ───
240
+ //
241
+ // NO LEGACY WIRE ALIAS, and no second name for this anywhere. One operator, no install base:
242
+ // an alias is permanent debt bought for nobody, and a verb that exists under two names is how
243
+ // both humans and AI coders end up calling the wrong one. connect and daemon are promoted and
244
+ // reinstalled together, and the version gate an alias would have complemented does not even
245
+ // exist — cello-mcp.ts checks `ipc.connect` for a `version_mismatch` reason NOTHING here
246
+ // returns.
247
+ //
248
+ // A genuinely mismatched shim now fails loudly and correctly: `Unknown method:
249
+ // cello_set_agent_offline`, whose guidance already names the cause (shim/daemon version skew) and
250
+ // the fix (`cello logout && cello login`). Loud and fixable beats silent and permanent.
251
+ //
252
+ // The TOOL was renamed because the old name described the wrong axis and cost real confusion.
253
+ // There are two independent things an operator does to an agent:
254
+ //
255
+ // lifecycle — cello_start_agent / cello_set_agent_offline (offline ⇄ online)
256
+ // attendance — cello_use_agent / cello_stop_using_agent (who this connection drives)
257
+ //
258
+ // "stop_agent" reads as the opposite of "use_agent" — stop using it — but it is the opposite of
259
+ // "start_agent". An operator wanting to step away from an agent so its AWAY path could fire ran
260
+ // it and took the agent fully offline instead, at which point inbound sessions were refused with
261
+ // `counterparty_did_not_accept` and the away reply could never be produced. The two states look
262
+ // alike from outside (nobody is answering) and behave nothing alike.
263
+ //
264
+ // The deselect half genuinely did not exist: `cello_use_agent` requires a name, so a connection
265
+ // could SWITCH agents but never LET GO of one. The only way to clear a selection was to shut the
266
+ // agent down, which is why the two verbs collapsed into each other.
267
+ handlers.set("cello_set_agent_offline", async (params, _connectionId) => {
268
+ const name = params?.name;
269
+ if (!name) {
270
+ return { ok: false, reason: "missing_params", guidance: "Provide 'name' parameter with the agent name to stop." };
271
+ }
272
+ const agent = agents.find((a) => a.name === name);
273
+ if (!agent || agent.state === "load_failed") {
274
+ return { ok: false, reason: "agent_not_found", guidance: `Agent '${name}' does not exist. Check agent names with cello_agents.` };
275
+ }
276
+ // M12-P16: record the OPERATOR'S INTENT first, before any bookkeeping check can short-circuit.
277
+ // The idempotent early-return below keys on `onlineAgents`, which answers "was this agent started
278
+ // through cello_start_agent" — not "is it reachable". An agent serving traffic without ever
279
+ // entering that set (a standing receiver built directly, an auto-start path) would take the
280
+ // early return, report `ok: true`, and keep answering: the switch pressed, nothing switched off.
281
+ // Intent is not conditional on internal state.
282
+ explicitlyOfflineAgents.add(name);
283
+ if (!onlineAgents.has(name)) {
284
+ // Idempotent — already registered/offline, no event
285
+ return { ok: true };
286
+ }
287
+ onlineAgents.delete(name);
288
+ /**
289
+ * DOD-M15-AWAYSCOPE-1 — say OFFLINE before the sessions are torn down, not after.
290
+ *
291
+ * ⚠️ THE ORDERING IS THE WHOLE POINT. The teardown below destroys every session node for this
292
+ * agent, and the relay client rides on the node — announce afterwards and there is nothing left
293
+ * to announce through. The counterparty would be left reading the last thing they were told,
294
+ * which is 'unattended': "nobody is watching, it will be read later". That is the opposite of
295
+ * what an operator reaching for a kill switch means, and 'offline' exists as a third value
296
+ * precisely so the two cannot be confused.
297
+ *
298
+ * Best-effort, like every attendance notice — the send is not awaited and may lose the race with
299
+ * the teardown. The failure mode is the counterparty reading 'gone' once the relay loses the
300
+ * connection, which is true and is the next-best thing to hear.
301
+ */
302
+ sessionNodeManager.announceAttendance(name, "offline");
303
+ // DOD-LOOP-1: tear down this agent's standing receiver. AWAITED and LOGGED, matching
304
+ // cello_remove_agent — a teardown that did not happen must be VISIBLE. Fire-and-forget with a
305
+ // swallowed catch reported the agent offline while its receiver could still be live and bound
306
+ // to it: a stopped agent that can still be handed an inbound session, with nothing in the log.
307
+ await sessionNodeManager.removeStandingReceiverForAgent(name).catch((err) => {
308
+ logger.warn("agent.stop.receiver_teardown_failed", { agentName: name, error: extractErrorMessage(err) });
309
+ });
310
+ // M12-P16: OFFLINE MEANS STOP TALKING.
311
+ //
312
+ // Tearing down the standing receiver only stops NEW inbound sessions. Direct delivery goes to
313
+ // the per-session node, so an agent reported `offline` kept accepting content on every session
314
+ // it already had, appending leaves, running its away logic and REPLYING. Measured live across
315
+ // two machines on 2026-08-05; the whole exchange is in the counterparty's transcript. The CLI's
316
+ // own help promises "It stops accepting anything until restarted", and an operator reaching for
317
+ // this is reaching for a kill switch — one that keeps answering while reporting success is worse
318
+ // than none at all.
319
+ //
320
+ // Scoped to THIS agent's sessions: another agent on the same daemon is still online and its
321
+ // conversations must not be collateral. `interrupted` is the honest status — this side stopped
322
+ // participating. Not `sealed` (nothing was agreed with the counterparty) and not `abandoned`
323
+ // (terminal, forfeits the receipt); an interrupted session can still be sealed later, which
324
+ // M12-P15 is what makes reliably possible.
325
+ const ownSessions = sessionNodeManager.getSessionsByStatus("active").filter((r) => r.agent_name === name);
326
+ for (const s of ownSessions) {
327
+ try {
328
+ await sessionNodeManager.destroySessionNode(name, s.session_id, "interrupted");
329
+ }
330
+ catch (err) {
331
+ // Never let one stuck session leave the agent half-offline: the others must still be torn
332
+ // down, and the failure must be visible rather than swallowed into a green `{ ok: true }`.
333
+ logger.error("agent.stop.session_teardown_failed", {
334
+ agentName: name, sessionId: s.session_id,
335
+ impact: "this session may still accept content from the counterparty while the agent reports offline",
336
+ error: extractErrorMessage(err),
337
+ });
338
+ }
339
+ }
340
+ if (ownSessions.length > 0) {
341
+ logger.info("agent.stop.sessions_interrupted", { agentName: name, count: ownSessions.length });
342
+ }
343
+ logger.info("agent.offline", { agentName: name, reason: "stopped" });
344
+ // MCP-002: Broadcast agent_state_changed to ALL connections
345
+ getNotificationDispatcher().dispatchAgentStateChanged(name, "offline", "stopped");
346
+ // Clear current agent for all connections that had this agent as current
347
+ for (const [connId, state] of perConnectionState) {
348
+ if (state.currentAgent === name) {
349
+ state.currentAgent = null;
350
+ state.clearedAgent = name; // this connection HAD an intent; do not guess a replacement
351
+ getNotificationDispatcher().setCurrentAgent(connId, null);
352
+ getNotificationDispatcher().dispatchAgentCurrentChanged(connId, name, null);
353
+ logger.info("agent.current.switched", { connectionId: connId, fromAgent: name, toAgent: null });
354
+ }
355
+ }
356
+ return { ok: true };
357
+ });
358
+ // ─── cello_stop_using_agent handler — the missing half of cello_use_agent ───
359
+ //
360
+ // `cello_use_agent` requires a name, so a connection could SWITCH agents but never LET GO of one.
361
+ // The only way to clear a selection was `cello_set_agent_offline`, which takes the agent OFFLINE —
362
+ // a different axis entirely, and the confusion that named this handler into existence.
363
+ //
364
+ // The gap was not cosmetic. An attended agent never sends its away reply (`isAttended` suppresses
365
+ // it), so an operator who wanted to step away had exactly two options: shut the agent down, which
366
+ // makes it unreachable and refuses inbound sessions outright, or select some OTHER agent — which
367
+ // is impossible if you only have one. A single-agent operator had no route to "away" at all.
368
+ //
369
+ // Releasing does NOT touch the agent's lifecycle: it stays online with its standing receiver, so
370
+ // it can still accept inbound sessions and answer them with its away message. That is the whole
371
+ // point — this is how an operator becomes reachable-but-absent rather than simply gone.
372
+ handlers.set("cello_stop_using_agent", async (_params, connectionId) => {
373
+ const connState = getConnState(connectionId);
374
+ if (!connState) {
375
+ return { ok: false, reason: "connection_not_registered", guidance: "Send ipc.connect frame before calling agent tools." };
376
+ }
377
+ const fromAgent = connState.currentAgent;
378
+ // CLEARED ON BOTH BRANCHES, including the one that releases nothing. `clearedAgent` means "this
379
+ // connection's choice was taken away from it, do not guess a replacement" — it is set when an
380
+ // agent is taken offline or removed UNDERNEATH a connection. A release is the opposite: the
381
+ // operator is deliberately choosing to hold nothing. Leaving the flag set would mean the one
382
+ // gesture that explicitly says "I hold nothing, on purpose" left the connection locked out of
383
+ // the sole-online fallback for the rest of the session, which only cello_use_agent could undo.
384
+ // (Review finding 6 — the original code cleared it on neither branch while its own comment
385
+ // argued it should.)
386
+ delete connState.clearedAgent;
387
+ if (!fromAgent) {
388
+ // Idempotent, and says so — releasing nothing is not an error worth failing a script over.
389
+ return { ok: true, released: null, guidance: "This connection was not attending any agent. Nothing to release." };
390
+ }
391
+ connState.currentAgent = null;
392
+ /**
393
+ * DOD-M15-AWAYSCOPE-1 — AND THE COUNTERPARTY IS TOLD. Review finding: this was the one gesture
394
+ * an operator makes ON PURPOSE to step away, and it announced nothing.
395
+ *
396
+ * The only other `unattended` producer is the socket closing. So an operator who finished a
397
+ * conversation, released the agent and left the terminal open left their counterparty reading
398
+ * `attended` — "a person is watching" — indefinitely. That is the exact false reassurance the
399
+ * three-value design exists to prevent, arriving from the most deliberate action of the three.
400
+ *
401
+ * Read AFTER the selection is cleared, for the same reason the disconnect path reads after
402
+ * `forgetConnection`: a co-attended agent is legitimate and permanent, and a count taken before
403
+ * would report an absence while a sibling connection is still reading.
404
+ */
405
+ if (countAttendance(perConnectionState, fromAgent) === 0) {
406
+ sessionNodeManager.announceAttendance(fromAgent, "unattended");
407
+ }
408
+ getNotificationDispatcher().setCurrentAgent(connectionId, null);
409
+ getNotificationDispatcher().dispatchAgentCurrentChanged(connectionId, fromAgent, null);
410
+ logger.info("agent.current.released", { connectionId, fromAgent });
411
+ return {
412
+ ok: true,
413
+ released: fromAgent,
414
+ // The fallback caveat is stated because omitting it is how this tool would mislead the very
415
+ // operator it was built for. "Step away" reads as "nothing I do now acts as that agent" — but
416
+ // if it is the ONLY agent online, agent-scoped calls with no explicit `agent` still resolve to
417
+ // it via the sole-online fallback, and cello_send would happily send as them, ok:true.
418
+ guidance: `No longer attending '${fromAgent}'. It stays ONLINE and reachable — inbound sessions now get ` +
419
+ `its away message instead of a live reply. NOTE: if it is the only agent online, agent-scoped ` +
420
+ `calls without an explicit 'agent' still resolve to it; pass 'agent' explicitly, or take it ` +
421
+ `offline with cello_set_agent_offline if you want those calls to refuse.`,
422
+ };
423
+ });
424
+ // ─── MCP-001: cello_use_agent handler ───
425
+ handlers.set("cello_use_agent", async (params, connectionId) => {
426
+ const name = params?.name;
427
+ if (!name) {
428
+ return { ok: false, reason: "missing_params", guidance: "Provide 'name' parameter with the agent name to use." };
429
+ }
430
+ const agent = agents.find((a) => a.name === name);
431
+ if (!agent || agent.state === "load_failed") {
432
+ return { ok: false, reason: "agent_not_found", guidance: `Agent '${name}' does not exist. Create it with 'cello create-agent ${name}', register it, then retry — or check names with cello_agents.` };
433
+ }
434
+ const connState = getConnState(connectionId);
435
+ if (!connState) {
436
+ return { ok: false, reason: "connection_not_registered", guidance: "Send ipc.connect frame before calling agent tools." };
437
+ }
438
+ // M8C-AUTOSTART-1 (A1): auto-start the agent if it is not online, so the incantation collapses
439
+ // to `login → use_agent` (no separate cello_start_agent). On a start failure, return a
440
+ // structured agent_start_failed and leave the current selection UNCHANGED — no half-selected
441
+ // state (A3). cello_start_agent stays available for bring-online-without-claiming.
442
+ if (!onlineAgents.has(name)) {
443
+ logger.info("agent.autostart.attempted", { connectionId, agentName: name });
444
+ const startRes = startAgentInternal(name);
445
+ if (!startRes.ok) {
446
+ // Structured failure envelope (D6). Today `startAgentInternal` is permissive (D12) and its
447
+ // only failure — agent_not_found — is already caught by the existence pre-check above, so
448
+ // this branch is currently unreachable. It is the RESERVED structured-failure surface for
449
+ // when auto-start gains a synchronous failure mode (e.g. D12's reverse: a bounded
450
+ // waitForSignalingConnected making `directory_unreachable` a real start failure). Kept so
451
+ // that extension surfaces the reason + guidance here with the selection left unchanged.
452
+ // See M8C-DECISIONS D12 + BUILD-JOURNAL Entry 8.
453
+ logger.warn("agent.autostart.failed", { connectionId, agentName: name, reason: startRes.reason });
454
+ return {
455
+ ok: false,
456
+ reason: "agent_start_failed",
457
+ start_reason: startRes.reason,
458
+ guidance: `Could not start agent '${name}' to select it: ${startRes.guidance} Your current agent is unchanged.`,
459
+ };
460
+ }
461
+ }
462
+ if (connState.currentAgent === name) {
463
+ return { ok: false, reason: "agent_already_current", guidance: `Agent '${name}' is already the current agent for this connection. No action needed — you can proceed with session operations.` };
464
+ }
465
+ const fromAgent = connState.currentAgent;
466
+ connState.currentAgent = name;
467
+ // A fresh choice supersedes any earlier one that was taken away. Without this a connection that
468
+ // ever had an agent stopped under it would be refused the sole-online fallback forever, even
469
+ // after the operator selected again.
470
+ delete connState.clearedAgent;
471
+ // M8C-AWAY-1: this agent just became attended — clear its away-ack dedup entries so the NEXT
472
+ // away period (after this attended stretch ends) gets a fresh ack instead of staying silent.
473
+ for (const key of Array.from(awayAckSent)) {
474
+ if (key.startsWith(`${name}:`))
475
+ awayAckSent.delete(key);
476
+ }
477
+ /**
478
+ * DOD-M15-AWAYSCOPE-1 — and the COUNTERPARTY is told, out of band, that somebody arrived.
479
+ *
480
+ * This is the half that replaced the away reply. An unattended agent used to announce itself by
481
+ * sending its greeting INTO the conversation, which took a hash-chain leaf and destroyed the
482
+ * receipt. Attendance is a fact about the session, so it travels on the liveness frame instead:
483
+ * no leaf, no transcript row, and the far agent never sees a message it has to answer.
484
+ *
485
+ * Fired on the TRANSITION rather than on a timer. A poll would tell the counterparty the same
486
+ * thing repeatedly and still be late; the moment an operator attaches is the moment worth
487
+ * reporting, and the relay holds it until asked.
488
+ */
489
+ sessionNodeManager.announceAttendance(name, "attended");
490
+ // MCP-002: Update dispatcher's routing table and send notification to this connection only
491
+ getNotificationDispatcher().setCurrentAgent(connectionId, name);
492
+ getNotificationDispatcher().dispatchAgentCurrentChanged(connectionId, fromAgent, name);
493
+ // DOD-AGENT-SELECTION-UNWARRANTED-1: WHO asked. The names were always logged; what was missing
494
+ // is that an operator's explicit selection and the shim's reconnect replay arrive here
495
+ // identically, so a switch nobody made could not be told apart from one they did. Two switches
496
+ // fired one second after a reconnect on 2026-08-09 and neither could be attributed.
497
+ //
498
+ // Whitelisted, not passed through: this is a caller-supplied string that lands in the log, and
499
+ // an unrecognised value is recorded as such rather than echoed.
500
+ const claimed = params?.trigger;
501
+ const trigger = claimed === undefined ? "explicit" : claimed === "replay" ? "replay" : "unrecognized";
502
+ logger.info("agent.current.switched", { connectionId, fromAgent, toAgent: name, trigger });
503
+ // ─── DOD-COATTEND-VISIBLE-1 AC4: you find out at ATTACH time that you are not alone ───
504
+ //
505
+ // Attach is NOT refused, and must never become refusable: exclusivity is rejected permanently
506
+ // (spec §3 — connections die constantly, so a refusal only relocates the hard part into a
507
+ // takeover protocol; it buys no cryptographic property; and it forecloses listener mode). The
508
+ // count is set AFTER the assignment above, so it includes this connection: joining a lone
509
+ // session reads 2, which is the number the operator can act on.
510
+ const attendance = countAttendance(perConnectionState, name);
511
+ if (attendance > 1) {
512
+ logger.info("agent.attend.coattended", { connectionId, agentName: name, attendance });
513
+ }
514
+ // M8C-AUTOSTART-1 (A3, D12): not_registered is a NON-BLOCKING warning — the agent is selected
515
+ // and usable locally, but it cannot establish directory sessions until registered. Surface the
516
+ // next step (ONBOARD-NEXTSTEP style) without stranding the selection. One-row read.
517
+ const result = { ok: true, attendance };
518
+ if (attendance > 1) {
519
+ // Says what is true and what to do about it, in that order — and does NOT tell the operator
520
+ // to go away, because co-attending is allowed. What they need to know is that a message can
521
+ // be delivered to the OTHER session, and where it will still be readable when it is.
522
+ // No separate `co_attendance: true` flag — `attendance > 1` already IS that boolean, and a
523
+ // second field carrying the same fact is one more thing that can drift out of agreement.
524
+ result["co_attendance_guidance"] =
525
+ `${attendance} sessions are attending '${name}' (including this one). That is allowed — but an ` +
526
+ `arriving message is delivered to whichever session reads it first, so cello_receive here may ` +
527
+ `return nothing while the other session gets it. Nothing is lost: cello_transcript shows every ` +
528
+ `message either session received. Use cello_stop_using_agent if you did not intend to share it.`;
529
+ }
530
+ try {
531
+ const reg = await new DbRegistrationPersistence({ db: sessionNodeManager.getDb(), agentName: name, logger }).loadRegistrationState();
532
+ if (!reg || reg.status !== "active") {
533
+ result["warning"] = "not_registered";
534
+ result["warning_guidance"] = `Agent '${name}' is now selected but is not registered with the directory — run 'cello register-agent ${name}' to enable sessions with peers. Run 'cello status' to watch registration complete.`;
535
+ }
536
+ }
537
+ catch (err) {
538
+ // A failed registration read must not break selection (the agent IS selected). Log the real
539
+ // reason, and surface a softer `registration_unknown` warning so the operator's surface is NOT
540
+ // falsely clean — we could not confirm registration, so don't imply it is fine (Finding 3).
541
+ logger.warn("agent.registration.read.failed", { agentName: name, reason: extractErrorMessage(err) });
542
+ result["warning"] = "registration_unknown";
543
+ result["warning_guidance"] = `Agent '${name}' is selected, but its registration status could not be read — run 'cello status' to check whether it is registered with the directory.`;
544
+ }
545
+ // ─── M10B / DOD-END-PENDING-1 — tell the operator a decision is waiting ────────────────────
546
+ // The clause: "on selecting an agent with pending items, the operator is told they are waiting."
547
+ //
548
+ // COUNT ONLY, and do NOT mark notified here. Marking on selection would mark them told about
549
+ // something they were never shown — the nudge says a number, the LIST is what shows the items,
550
+ // and `cello_attestation_consent_list` is what records that they saw it. The two lifetimes stay separate
551
+ // (M10B-D5): the notification goes quiet once seen, the ITEMS persist until decided.
552
+ //
553
+ // A failure here must NOT break selection, for the same reason the registration read above does
554
+ // not: the agent IS selected. But it must not read as "nothing pending" either — an unknown is
555
+ // surfaced as an unknown (§5a), because silence is exactly how an endorsement dies unnoticed.
556
+ try {
557
+ const rec = loadedAgents.find((a) => a.name === name);
558
+ if (rec) {
559
+ const pending = new TrustSignalStore(sessionNodeManager.getDb(), logger).countUnnotifiedConsent(rec.pubkey);
560
+ if (pending > 0) {
561
+ result["pending_consent"] = pending;
562
+ result["pending_consent_guidance"] =
563
+ `${pending} item${pending === 1 ? "" : "s"} awaiting your decision for '${name}'. ` +
564
+ `Run cello_attestation_consent_list to read ${pending === 1 ? "it" : "them"} and accept or refuse.`;
565
+ }
566
+ }
567
+ }
568
+ catch (err) {
569
+ logger.warn("signal.consent.count_failed", {
570
+ agentName: name, reason: extractErrorMessage(err),
571
+ });
572
+ result["pending_consent"] = "unknown";
573
+ result["pending_consent_guidance"] =
574
+ `Could not read pending consent items for '${name}' — run cello_attestation_consent_list to check directly.`;
575
+ }
576
+ return result;
577
+ });
578
+ // ─── MCP-001: cello_list_agents handler ───
579
+ handlers.set("cello_list_agents", async (_params, connectionId) => {
580
+ const agents = getAgentsForConnection(connectionId);
581
+ // An empty roster is the one answer that needs words rather than data. The CLI imports
582
+ // NO_AGENTS_GUIDANCE directly (cli depends on daemon), but `connect` depends on no
583
+ // @cello-protocol package at all — so the shim can only learn this over the wire, and an
584
+ // operator who never opens a terminal would otherwise get an empty list and no explanation
585
+ // of the cohort gate standing between them and a registration token.
586
+ if (agents.length === 0)
587
+ return { agents, onboarding: noAgentsGuidance() };
588
+ return { agents };
589
+ });
590
+ // ─── M7-REGISTRATION (Action 2): cello_register handler ───
591
+ // Registers a LOADED agent (one with a K_local `key` under ~/.cello/agents/<name>/)
592
+ // with the directory: ML-DSA keygen → register_request → FROST DKG → register_success,
593
+ // persisting the ML-DSA keypair, FROST share, registration state, and agent→user link.
594
+ // Always invoked with a pre-authorization ticket from the CELLO Operations Agent.
595
+ // Single-flight guard (M1): the directory's registration reply frames
596
+ // (dkg_ready / register_success / register_error) carry NO agent identifier, so
597
+ // two concurrent registrations over the one shared directory signaling stream
598
+ // would each arm a resolver and both receive the same reply — cross-wiring the
599
+ // ceremonies. Serialize registration daemon-wide (it is a rare, once-per-agent,
600
+ // human-initiated operation). This is the registration analogue of the
601
+ // sealInterruptedInProgress guard, but global rather than per-key because the
602
+ // frames are not agent-tagged.
603
+ }
604
+ //# sourceMappingURL=agent-handlers.js.map