@cello-protocol/daemon 0.0.181 → 0.0.183

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 (197) hide show
  1. package/dist/agent-id-migration.d.ts +9 -0
  2. package/dist/agent-id-migration.d.ts.map +1 -1
  3. package/dist/agent-id-migration.js +73 -1
  4. package/dist/agent-id-migration.js.map +1 -1
  5. package/dist/agent-selection.d.ts +73 -0
  6. package/dist/agent-selection.d.ts.map +1 -0
  7. package/dist/agent-selection.js +80 -0
  8. package/dist/agent-selection.js.map +1 -0
  9. package/dist/agent-settings-keys.d.ts.map +1 -1
  10. package/dist/agent-settings-keys.js +18 -0
  11. package/dist/agent-settings-keys.js.map +1 -1
  12. package/dist/assignment-verify.d.ts +62 -0
  13. package/dist/assignment-verify.d.ts.map +1 -0
  14. package/dist/assignment-verify.js +185 -0
  15. package/dist/assignment-verify.js.map +1 -0
  16. package/dist/backup-restore.d.ts +102 -0
  17. package/dist/backup-restore.d.ts.map +1 -0
  18. package/dist/backup-restore.js +340 -0
  19. package/dist/backup-restore.js.map +1 -0
  20. package/dist/bin/cello-daemon.js +91 -49
  21. package/dist/bin/cello-daemon.js.map +1 -1
  22. package/dist/close-commitment.d.ts +67 -0
  23. package/dist/close-commitment.d.ts.map +1 -0
  24. package/dist/close-commitment.js +78 -0
  25. package/dist/close-commitment.js.map +1 -0
  26. package/dist/close-session-handler.d.ts +20 -0
  27. package/dist/close-session-handler.d.ts.map +1 -1
  28. package/dist/close-session-handler.js +351 -58
  29. package/dist/close-session-handler.js.map +1 -1
  30. package/dist/consortium-bootstrap.d.ts +2 -0
  31. package/dist/consortium-bootstrap.d.ts.map +1 -1
  32. package/dist/consortium-bootstrap.js +182 -9
  33. package/dist/consortium-bootstrap.js.map +1 -1
  34. package/dist/content-encryption-status.d.ts +97 -0
  35. package/dist/content-encryption-status.d.ts.map +1 -0
  36. package/dist/content-encryption-status.js +122 -0
  37. package/dist/content-encryption-status.js.map +1 -0
  38. package/dist/content-park-client.d.ts +10 -0
  39. package/dist/content-park-client.d.ts.map +1 -1
  40. package/dist/content-park-client.js +84 -3
  41. package/dist/content-park-client.js.map +1 -1
  42. package/dist/content-park.d.ts.map +1 -1
  43. package/dist/content-park.js +323 -21
  44. package/dist/content-park.js.map +1 -1
  45. package/dist/daemon.d.ts +13 -1
  46. package/dist/daemon.d.ts.map +1 -1
  47. package/dist/daemon.js +1168 -141
  48. package/dist/daemon.js.map +1 -1
  49. package/dist/delivery-session-suspects.d.ts.map +1 -1
  50. package/dist/delivery-session-suspects.js +5 -0
  51. package/dist/delivery-session-suspects.js.map +1 -1
  52. package/dist/directory-auth-posture.d.ts +87 -0
  53. package/dist/directory-auth-posture.d.ts.map +1 -0
  54. package/dist/directory-auth-posture.js +134 -0
  55. package/dist/directory-auth-posture.js.map +1 -0
  56. package/dist/directory-bootstrap.d.ts +66 -3
  57. package/dist/directory-bootstrap.d.ts.map +1 -1
  58. package/dist/directory-bootstrap.js +133 -7
  59. package/dist/directory-bootstrap.js.map +1 -1
  60. package/dist/document-delivery-transport.d.ts +22 -2
  61. package/dist/document-delivery-transport.d.ts.map +1 -1
  62. package/dist/document-delivery-transport.js +11 -3
  63. package/dist/document-delivery-transport.js.map +1 -1
  64. package/dist/document-handlers.d.ts.map +1 -1
  65. package/dist/document-handlers.js +119 -0
  66. package/dist/document-handlers.js.map +1 -1
  67. package/dist/document-layer.d.ts +0 -2
  68. package/dist/document-layer.d.ts.map +1 -1
  69. package/dist/document-layer.js.map +1 -1
  70. package/dist/inbound-sessions.d.ts +31 -1
  71. package/dist/inbound-sessions.d.ts.map +1 -1
  72. package/dist/inbound-sessions.js +276 -16
  73. package/dist/inbound-sessions.js.map +1 -1
  74. package/dist/index.d.ts +2 -0
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +3 -0
  77. package/dist/index.js.map +1 -1
  78. package/dist/initiate-session-handler.d.ts.map +1 -1
  79. package/dist/initiate-session-handler.js +34 -3
  80. package/dist/initiate-session-handler.js.map +1 -1
  81. package/dist/ipc-server.d.ts +5 -1
  82. package/dist/ipc-server.d.ts.map +1 -1
  83. package/dist/ipc-server.js +19 -3
  84. package/dist/ipc-server.js.map +1 -1
  85. package/dist/manifest-deps.d.ts +0 -11
  86. package/dist/manifest-deps.d.ts.map +1 -1
  87. package/dist/manifest-deps.js +28 -2
  88. package/dist/manifest-deps.js.map +1 -1
  89. package/dist/manifest-validity.d.ts +153 -0
  90. package/dist/manifest-validity.d.ts.map +1 -0
  91. package/dist/manifest-validity.js +268 -0
  92. package/dist/manifest-validity.js.map +1 -0
  93. package/dist/notification-handlers.d.ts.map +1 -1
  94. package/dist/notification-handlers.js +15 -0
  95. package/dist/notification-handlers.js.map +1 -1
  96. package/dist/outbound-sessions.d.ts +31 -0
  97. package/dist/outbound-sessions.d.ts.map +1 -1
  98. package/dist/outbound-sessions.js +217 -17
  99. package/dist/outbound-sessions.js.map +1 -1
  100. package/dist/park-envelope.d.ts +95 -1
  101. package/dist/park-envelope.d.ts.map +1 -1
  102. package/dist/park-envelope.js +195 -4
  103. package/dist/park-envelope.js.map +1 -1
  104. package/dist/refusal-reasons.d.ts +72 -0
  105. package/dist/refusal-reasons.d.ts.map +1 -0
  106. package/dist/refusal-reasons.js +69 -0
  107. package/dist/refusal-reasons.js.map +1 -0
  108. package/dist/register-handler.d.ts.map +1 -1
  109. package/dist/register-handler.js +76 -0
  110. package/dist/register-handler.js.map +1 -1
  111. package/dist/registration-manager.d.ts.map +1 -1
  112. package/dist/registration-manager.js +20 -1
  113. package/dist/registration-manager.js.map +1 -1
  114. package/dist/relay-only.d.ts +133 -0
  115. package/dist/relay-only.d.ts.map +1 -0
  116. package/dist/relay-only.js +183 -0
  117. package/dist/relay-only.js.map +1 -0
  118. package/dist/restart-seal-resolver.d.ts.map +1 -1
  119. package/dist/restart-seal-resolver.js +6 -0
  120. package/dist/restart-seal-resolver.js.map +1 -1
  121. package/dist/retry-queue.d.ts +49 -2
  122. package/dist/retry-queue.d.ts.map +1 -1
  123. package/dist/retry-queue.js +55 -10
  124. package/dist/retry-queue.js.map +1 -1
  125. package/dist/roster-freshness.d.ts +169 -0
  126. package/dist/roster-freshness.d.ts.map +1 -0
  127. package/dist/roster-freshness.js +249 -0
  128. package/dist/roster-freshness.js.map +1 -0
  129. package/dist/seal-certificate-pull.d.ts +17 -1
  130. package/dist/seal-certificate-pull.d.ts.map +1 -1
  131. package/dist/seal-certificate-pull.js +37 -3
  132. package/dist/seal-certificate-pull.js.map +1 -1
  133. package/dist/seal-coordinator.d.ts +17 -1
  134. package/dist/seal-coordinator.d.ts.map +1 -1
  135. package/dist/seal-coordinator.js +71 -0
  136. package/dist/seal-coordinator.js.map +1 -1
  137. package/dist/seal-failure-store.d.ts +104 -0
  138. package/dist/seal-failure-store.d.ts.map +1 -0
  139. package/dist/seal-failure-store.js +126 -0
  140. package/dist/seal-failure-store.js.map +1 -0
  141. package/dist/seal-flows.d.ts.map +1 -1
  142. package/dist/seal-flows.js +35 -6
  143. package/dist/seal-flows.js.map +1 -1
  144. package/dist/seal-upgrade.d.ts +20 -5
  145. package/dist/seal-upgrade.d.ts.map +1 -1
  146. package/dist/seal-upgrade.js +28 -5
  147. package/dist/seal-upgrade.js.map +1 -1
  148. package/dist/session-assignment-parser.d.ts +41 -5
  149. package/dist/session-assignment-parser.d.ts.map +1 -1
  150. package/dist/session-assignment-parser.js +77 -14
  151. package/dist/session-assignment-parser.js.map +1 -1
  152. package/dist/session-ceremony.d.ts +35 -0
  153. package/dist/session-ceremony.d.ts.map +1 -1
  154. package/dist/session-ceremony.js +97 -0
  155. package/dist/session-ceremony.js.map +1 -1
  156. package/dist/session-connection-gater.d.ts +46 -7
  157. package/dist/session-connection-gater.d.ts.map +1 -1
  158. package/dist/session-connection-gater.js +163 -12
  159. package/dist/session-connection-gater.js.map +1 -1
  160. package/dist/session-content-handlers.d.ts +12 -0
  161. package/dist/session-content-handlers.d.ts.map +1 -1
  162. package/dist/session-content-handlers.js +149 -8
  163. package/dist/session-content-handlers.js.map +1 -1
  164. package/dist/session-node-manager.d.ts +653 -40
  165. package/dist/session-node-manager.d.ts.map +1 -1
  166. package/dist/session-node-manager.js +5938 -374
  167. package/dist/session-node-manager.js.map +1 -1
  168. package/dist/session-read-handlers.d.ts +27 -0
  169. package/dist/session-read-handlers.d.ts.map +1 -1
  170. package/dist/session-read-handlers.js +127 -6
  171. package/dist/session-read-handlers.js.map +1 -1
  172. package/dist/session-relay-client.d.ts +177 -2
  173. package/dist/session-relay-client.d.ts.map +1 -1
  174. package/dist/session-relay-client.js +564 -16
  175. package/dist/session-relay-client.js.map +1 -1
  176. package/dist/session-salt-agreement.d.ts +338 -0
  177. package/dist/session-salt-agreement.d.ts.map +1 -0
  178. package/dist/session-salt-agreement.js +478 -0
  179. package/dist/session-salt-agreement.js.map +1 -0
  180. package/dist/signal-submission.d.ts.map +1 -1
  181. package/dist/signal-submission.js +10 -1
  182. package/dist/signal-submission.js.map +1 -1
  183. package/dist/signaling-connect.d.ts +18 -1
  184. package/dist/signaling-connect.d.ts.map +1 -1
  185. package/dist/signaling-connect.js +206 -6
  186. package/dist/signaling-connect.js.map +1 -1
  187. package/dist/types.d.ts +75 -0
  188. package/dist/types.d.ts.map +1 -1
  189. package/dist/types.js.map +1 -1
  190. package/dist/vocabulary.d.ts.map +1 -1
  191. package/dist/vocabulary.js +10 -0
  192. package/dist/vocabulary.js.map +1 -1
  193. package/dist/wire-content-hash.d.ts +68 -0
  194. package/dist/wire-content-hash.d.ts.map +1 -1
  195. package/dist/wire-content-hash.js +83 -0
  196. package/dist/wire-content-hash.js.map +1 -1
  197. package/package.json +5 -5
@@ -0,0 +1,478 @@
1
+ /**
2
+ * THE SALT AGREEMENT STATE MACHINE — `DOD-M15-SEALWIRE-1` bullet 6, part A.
3
+ * Decisions Carried #8 (both sides contribute, one salt per session, persisted) and #10 (a mismatch
4
+ * must be loud).
5
+ *
6
+ * ⚠️ PART A OF THE SALT WORK, AND THE SPLIT IS DELIBERATE. This module and its caller AGREE a salt
7
+ * and store it.
8
+ *
9
+ * **NO SENDER SALTS YET**, which is what makes an unanswered agreement free: a peer on an older
10
+ * build that never replies costs nothing today. (An earlier revision of this line said
11
+ * `wire-content-hash.ts` is untouched — that is no longer true. Part B1 shipped the RECEIVE half:
12
+ * it reads a `content_hash_alg` off the frame and can verify a salted hash. The outbound half, part
13
+ * B2, is what moves the send sites onto `saltedContentHash` and holds the first send until the salt
14
+ * is agreed — and from that moment an unanswered agreement IS a session that cannot send.)
15
+ *
16
+ * ─── The frame, and why exactly one field is present ───────────────────────────────────────────
17
+ *
18
+ * One frame type carries the whole agreement, and WHICH FIELD IS PRESENT IS THE SENDER'S STATE:
19
+ *
20
+ * `contribution` (32 bytes) → "I hold no salt for this session. Here is my half."
21
+ * `fingerprint` (8 bytes) → "I already hold a salt. Here is a one-way digest of it."
22
+ *
23
+ * Never both, never neither. That is not tidiness: a peer that sends both is claiming to be in two
24
+ * states at once, and whichever field this machine read first would decide the outcome — a sender
25
+ * that can pick the branch is a sender that can steer the agreement. Both malformed shapes are
26
+ * refused rather than resolved.
27
+ *
28
+ * ─── The four combinations ─────────────────────────────────────────────────────────────────────
29
+ *
30
+ * peer sent CONTRIBUTION peer sent FINGERPRINT
31
+ * we hold NO salt derive, persist, announce ours REPAIR: re-offer our half
32
+ * we HOLD a salt REPAIR: re-offer our half compare → confirmed | ✗ MISMATCH
33
+ * (✗ DIVERGENT if our half is gone)
34
+ *
35
+ * ⚠️ THE OFF-DIAGONAL CELLS USED TO FREEZE THE SESSION, AND THAT WAS WRONG — review F1, and the
36
+ * justification written here for it was **false**.
37
+ *
38
+ * It said the salt "cannot be repaired by retrying… neither party keeps the inputs once it has the
39
+ * output." We DO keep our input: `#saltContributions` holds our half for the life of the session
40
+ * node, and `deriveSessionSalt` sorts its two arguments — so a side that holds a salt can simply
41
+ * re-send its own half and the peer derives **byte-identical** bytes.
42
+ *
43
+ * That mattered because the off-diagonal is not the exotic state the old text described. It is
44
+ * reached by ANY of:
45
+ * - one side's connect-time announce failing (`#sendSaltFrame` logs and gives up until the next
46
+ * connect) while the other's lands;
47
+ * - one side's persist failing, so it re-offers a contribution while the other has stored one;
48
+ * - a teardown between the two derives.
49
+ * **A single dropped frame therefore destroyed a live session** — a refusal that breaks availability
50
+ * to defend a value nothing has consumed yet. Repairing costs one frame and always converges.
51
+ *
52
+ * The cell is genuinely unrepairable in exactly one case, and the code now CHECKS it rather than
53
+ * assuming it: we hold a salt read back from the row, and our half is **gone** — evicted by a
54
+ * teardown, or never in this process at all after a restart. `ownContribution` is `null` there, and
55
+ * only there, because the caller never mints a fresh half for a session that already has a salt.
56
+ * Minting one would be worse than freezing: the peer would derive a DIFFERENT salt from it and both
57
+ * sides would believe they had agreed.
58
+ *
59
+ * ─── Why a refusal, and why it has to be loud ──────────────────────────────────────────────────
60
+ *
61
+ * Decision #10 exists because a salt disagreement is the least debuggable failure this system can
62
+ * produce, and `wire-content-hash.ts`'s own header says why: the send SUCCEEDS, the sender's log
63
+ * says the frame left, and the receiver discards before anything about it is logged. It cost two
64
+ * live daemons to find once. Every branch here therefore ends in a decision — converge or stop —
65
+ * and never in "keep going and see".
66
+ *
67
+ * ─── Where the named reasons live, and why NOT in `refusal-reasons.ts` ─────────────────────────
68
+ *
69
+ * An earlier acceptance criterion of mine said to add these to `REFUSAL_REASONS`. That was wrong,
70
+ * and following it would have put them somewhere no caller could raise them: `recordRefusal`
71
+ * refuses an inbound session REQUEST — the decision made *before* a session exists, whose audience
72
+ * is `cello_inbox` and whose guidance is written for someone deciding whether to accept a stranger.
73
+ * A salt disagreement happens on an ESTABLISHED session, mid-flight, and its response is to tear
74
+ * that session down. Different moment, different reader, different verb.
75
+ *
76
+ * The shape is copied on purpose, because the shape is the part that was right: a CLOSED set of
77
+ * reasons plus a TOTAL guidance map, so a reason cannot be added without something for the operator
78
+ * to do. `refusal-reasons.ts` records what a free-form `reason: string` permitted — a new code
79
+ * slipping past every test in the milestone's own guard file — and this file inherits that lesson
80
+ * without inheriting its union.
81
+ */
82
+ import { deriveSessionSalt, saltFingerprint, SALT_CONTRIBUTION_BYTES } from "@cello-protocol/crypto";
83
+ function isAllZero(b) {
84
+ let acc = 0;
85
+ for (const x of b)
86
+ acc |= x;
87
+ return acc === 0;
88
+ }
89
+ /**
90
+ * The state a peer announced that ends the agreement without a salt — Decision #8, review F1/F2.
91
+ *
92
+ * NOT a freeze. Both sides simply stay unsalted, which is exactly as verifiable as every session
93
+ * shipped before the salt existed. The point is that they agree on it.
94
+ */
95
+ export const SALT_ADOPTION_CLOSED = "adoption_closed";
96
+ /**
97
+ * WHY a side cannot adopt — a wire value, so it is a named constant rather than a literal typed out
98
+ * at each site. Two refusals reach the same terminal state and want different operator responses:
99
+ * `already_hashing` is the session working as designed and the fix is to start a new one;
100
+ * `frontier_unreadable` is local storage trouble and starting a new session will not fix it.
101
+ */
102
+ export const SALT_ADOPTION_LABELS = {
103
+ ALREADY_HASHING: "already_hashing",
104
+ FRONTIER_UNREADABLE: "frontier_unreadable",
105
+ PEER_CLOSED_FIRST: "peer_closed_first",
106
+ /**
107
+ * The two sides cannot converge and both must stop — 006-CRYPTO finding 1.
108
+ *
109
+ * We hold no salt, the peer holds one, and it has answered our half with its fingerprint twice.
110
+ * A latched salt-holder never re-offers its half, so we can never derive; without this the two
111
+ * sides repair at each other for the life of the session.
112
+ *
113
+ * Closing adoption rather than freezing, because nothing has been hashed under the salt and there
114
+ * are no sender salts yet: Decision #8's terminal state is that both sides stay unsalted and both
115
+ * KNOW, which is exactly as verifiable as every session shipped before the salt existed. Freezing
116
+ * a healthy conversation to defend a value nothing has consumed is the defect review F1 removed.
117
+ */
118
+ EXCHANGE_STALLED: "exchange_stalled",
119
+ };
120
+ /** The CLOSED set of reasons a salt disagreement stops a session. */
121
+ export const SALT_FREEZE_REASONS = {
122
+ /** Both sides hold a salt and the digests differ. */
123
+ FINGERPRINT_MISMATCH: "salt_fingerprint_mismatch",
124
+ /** We hold a salt and our own half is gone, so the peer cannot be brought back to it. */
125
+ STATE_DIVERGENT: "salt_state_divergent",
126
+ /** The peer's contribution was all-zero, the wrong length, or our own echoed back. */
127
+ CONTRIBUTION_DEGENERATE: "salt_contribution_degenerate",
128
+ /**
129
+ * OUR OWN half is degenerate — a broken or patched random source on THIS machine.
130
+ *
131
+ * Separate from `CONTRIBUTION_DEGENERATE` because the two send the operator to different places,
132
+ * and collapsing them undid a fix one layer down (review F3). `session-salt.ts` deliberately
133
+ * refuses our own all-zero half with *"this is a LOCAL defect… not something the peer did"*,
134
+ * precisely so the operator whose machine is broken is not told their counterparty did it — and
135
+ * mapping both throws to one peer-blaming reason handed that accusation straight back.
136
+ */
137
+ OWN_CONTRIBUTION_DEGENERATE: "salt_own_contribution_degenerate",
138
+ /** The frame carried both fields or neither, so the sender's state is unreadable. */
139
+ FRAME_MALFORMED: "salt_frame_malformed",
140
+ };
141
+ /**
142
+ * What the operator should DO, per reason. Typed as a TOTAL map, so a reason added without guidance
143
+ * fails to compile.
144
+ *
145
+ * ⚠️ EVERY VERB HERE MUST BE ONE THE READER CAN PERFORM. A frozen session is not retryable — that
146
+ * is what freezing means — so none of these may say "try again on this session". The move is always
147
+ * a NEW session, and for the divergent cases it is worth saying plainly that nothing is broken and
148
+ * nobody did anything wrong: one side's record simply did not survive.
149
+ */
150
+ export const SALT_FREEZE_GUIDANCE = {
151
+ [SALT_FREEZE_REASONS.FINGERPRINT_MISMATCH]: "STOPPED ON PURPOSE. You and your counterparty ended up with different values for this " +
152
+ "session's content salt, so from here every message either of you sent would be discarded by " +
153
+ "the other with nothing said about it. Nothing was lost and nothing was tampered with. Two " +
154
+ "things cause it: one of you is running an older build, or one side restarted midway through " +
155
+ "opening the session and came back without the half it had already sent. Check the log for " +
156
+ "session.salt.persist.failed or session.salt.announce.failed on either machine — if you see " +
157
+ "one, it was the restart and there is nothing to fix. Otherwise compare versions. Either way, " +
158
+ "start a new session.",
159
+ [SALT_FREEZE_REASONS.STATE_DIVERGENT]: "STOPPED ON PURPOSE. This side holds the session's content salt but no longer holds the random " +
160
+ "half it was built from, so your counterparty — who is starting the agreement over — cannot be " +
161
+ "brought back to the same value. This happens when a daemon restarts after the salt was stored " +
162
+ "but before both sides had confirmed it. Nothing is broken and neither of you did anything " +
163
+ "wrong. Start a new session; the transcript of this one is unaffected and still readable.",
164
+ [SALT_FREEZE_REASONS.OWN_CONTRIBUTION_DEGENERATE]: "STOPPED ON PURPOSE, AND THE PROBLEM IS ON THIS MACHINE — not your counterparty's. The random " +
165
+ "half this side generated for the session's content salt came out empty or the wrong size, " +
166
+ "which means the random source this daemon is using is broken or has been modified. Do not " +
167
+ "raise this with your counterparty; they did nothing. Check this machine's CELLO build and its " +
168
+ "system random source before opening another session, because every session it opens has the " +
169
+ "same defect.",
170
+ [SALT_FREEZE_REASONS.CONTRIBUTION_DEGENERATE]: "STOPPED ON PURPOSE. Your counterparty's half of this session's content salt was empty, the " +
171
+ "wrong size, or a copy of your own. Accepting it would have meant one side alone deciding a " +
172
+ "value whose entire purpose is that neither side can — and the effect would be that anyone " +
173
+ "relaying your messages could confirm guesses at what short ones said. This can be a broken or " +
174
+ "modified build on their side, so raise it with them OUT OF BAND before opening a new session.",
175
+ [SALT_FREEZE_REASONS.FRAME_MALFORMED]: "STOPPED ON PURPOSE. Your counterparty's salt-agreement message did not say which state they " +
176
+ "were in — it claimed both at once, or neither — so there was no way to answer it that was not " +
177
+ "a guess. Nothing was accepted. A build mismatch is the ordinary cause; confirm what they are " +
178
+ "running, then start a new session.",
179
+ };
180
+ /**
181
+ * The longest `adoptionClosed` label this build will read — 006-CRYPTO finding 6.
182
+ *
183
+ * Every label CELLO sends is under twenty characters. The cap is not about memory; it is about a
184
+ * peer-chosen string reaching an operator inside a sentence that reads as CELLO's own diagnosis.
185
+ */
186
+ export const SALT_ADOPTION_LABEL_MAX = 64;
187
+ const KNOWN_ADOPTION_LABELS = new Set(Object.values(SALT_ADOPTION_LABELS));
188
+ /** Space, the lowest printable code point. Anything below it is a control character. */
189
+ const FIRST_PRINTABLE = 0x20;
190
+ /** DEL, and the C1 control block that follows it. */
191
+ const DEL = 0x7f;
192
+ const LAST_C1 = 0x9f;
193
+ /**
194
+ * RENDER A PEER-SUPPLIED LABEL — 006-CRYPTO finding 6.
195
+ *
196
+ * The peer chooses these bytes, and they were interpolated straight into a `detail` the operator
197
+ * reads. Measured: a label containing newlines produced a detail carrying what looked like a second
198
+ * log line — `the counterparty cannot adopt a salt for this session (` then a blank line, then
199
+ * `session.salt.agreed reason=ok` — so a counterparty could write text that reads as CELLO
200
+ * reporting agreement at the exact moment it reported the opposite.
201
+ *
202
+ * A KNOWN label is rendered verbatim: it is our own vocabulary and the operator should see it. An
203
+ * unknown one is marked unrecognised and stripped of control characters, because the operator still
204
+ * needs to see WHAT was sent — `PEER_CLOSED_UNSPECIFIED`'s guidance sends them here to read it — but
205
+ * must not read it as our conclusion. Sanitising rather than dropping: a label we refuse to show at
206
+ * all is a diagnosis nobody can complete.
207
+ *
208
+ * Filtered by CODE POINT rather than by a regex character class, deliberately. Writing the class
209
+ * needs control characters in the source, and a raw NUL in a `.ts` file makes `grep` classify the
210
+ * whole file as binary and report no matches in it — which reads exactly like "this symbol is not
211
+ * used anywhere". This file paid for that lesson while the fix was being written.
212
+ */
213
+ export function renderPeerAdoptionLabel(label) {
214
+ if (KNOWN_ADOPTION_LABELS.has(label))
215
+ return label;
216
+ const printable = Array.from(label)
217
+ .map((ch) => {
218
+ const cp = ch.codePointAt(0) ?? 0;
219
+ return cp < FIRST_PRINTABLE || (cp >= DEL && cp <= LAST_C1) ? " " : ch;
220
+ })
221
+ .join("")
222
+ .slice(0, SALT_ADOPTION_LABEL_MAX);
223
+ return `unrecognised reason, as sent: "${printable}"`;
224
+ }
225
+ function digestsEqual(a, b) {
226
+ if (a.length !== b.length)
227
+ return false;
228
+ return Buffer.from(a).equals(Buffer.from(b));
229
+ }
230
+ /**
231
+ * The frame this side should send, given its own state. Called on every counterparty connect, so it
232
+ * must be a pure function of the state and NOT mint anything.
233
+ *
234
+ * ⚠️ `ownContribution` IS MINTED ONCE PER SESSION BY THE CALLER, and this is where that requirement
235
+ * is visible. A fresh contribution per reconnect would have both sides re-deriving against a moving
236
+ * value, the fingerprints would never settle, and the symptom — a session that reconnects and still
237
+ * disagrees — reads as a network fault rather than a bug here.
238
+ */
239
+ export function ownSaltFrame(state) {
240
+ if (state.ownSalt)
241
+ return { fingerprint: saltFingerprint(state.ownSalt) };
242
+ /**
243
+ * `null` — nothing to announce, and the caller must say so rather than invent a half.
244
+ *
245
+ * Review F15: `ownContribution` was typed non-null here, so the daemon satisfied it by calling
246
+ * the MINTING accessor — which minted for a session that already held a salt, on the one state
247
+ * `null` exists to name. Taking the nullable type is what forces the caller to pass `#saltState`
248
+ * and makes minting a decision rather than a side effect of a parameter list.
249
+ *
250
+ * Reaching here at all means we hold neither a salt nor a half, which `#saltState` does not
251
+ * produce; it is a real defect if seen, not a state to paper over with a fresh contribution.
252
+ */
253
+ if (!state.ownContribution)
254
+ return null;
255
+ return { contribution: state.ownContribution };
256
+ }
257
+ /**
258
+ * `isTimingSafeEqual` was the name; constant time is NOT required here and never was.
259
+ *
260
+ * Review F13: nothing pinned the constant-time property and nothing needs it — both operands are
261
+ * 8-byte one-way digests that the two sides have already exchanged in the clear, so there is no
262
+ * secret for a timing signal to leak. A name asserting a property nothing checks is the same defect
263
+ * as a comment asserting one, so the name says what the function does instead.
264
+ *
265
+ * The LENGTH check is the load-bearing half and is pinned by a test: a differing width IS a
266
+ * disagreement, and comparing a common prefix would let two sides that agree on half their digest
267
+ * call it a match.
268
+ */
269
+ /**
270
+ * OUR OWN half, checked before it is used — review F3.
271
+ *
272
+ * `deriveSessionSalt` refuses four conditions and TWO OF THEM ARE LOCAL: our own wrong length and
273
+ * our own all-zero. A single `catch` around it mapped all four to one peer-blaming reason, which
274
+ * handed the operator an out-of-band accusation of their counterparty for a broken RNG on their own
275
+ * machine — undoing, at the guidance layer, the exact fix `session-salt.ts` added for it.
276
+ *
277
+ * Checking here means the primitive's throw can only ever be about the PEER's half by the time it
278
+ * is caught. It also kills a mutant the tests could not see: swapping the two arguments in the
279
+ * derive call left every reason code and every message-regex passing while every degenerate refusal
280
+ * blamed the wrong party.
281
+ */
282
+ function ownHalfDefect(ownContribution) {
283
+ if (ownContribution.length !== SALT_CONTRIBUTION_BYTES) {
284
+ return `our own salt contribution is ${ownContribution.length} bytes rather than ${SALT_CONTRIBUTION_BYTES}. This is a LOCAL defect, not something the peer did.`;
285
+ }
286
+ if (isAllZero(ownContribution)) {
287
+ return "our own salt contribution is all zeros, so this side contributed nothing. This is a LOCAL defect — a broken or patched random source — not something the peer did.";
288
+ }
289
+ return null;
290
+ }
291
+ /**
292
+ * Decide what an inbound salt frame means. See the four-cell table in the header.
293
+ *
294
+ * `ownContribution` is `null` ONLY in the one state that cannot be repaired: we hold a salt read
295
+ * back from the row and the half it was built from is gone. The caller never mints a fresh half for
296
+ * a session that already has a salt — minting one would let us "repair" the peer onto a DIFFERENT
297
+ * salt, with both sides believing they had agreed.
298
+ */
299
+ export function onPeerSaltFrame(state) {
300
+ const hasContribution = state.frame.contribution instanceof Uint8Array;
301
+ const hasFingerprint = state.frame.fingerprint instanceof Uint8Array;
302
+ const hasClosed = typeof state.frame.adoptionClosed === "string";
303
+ /**
304
+ * THE PEER HAS CLOSED ADOPTION — terminal for both, and it takes precedence over every other
305
+ * branch, including the malformed-shape check below. A peer that can never adopt is not offering a
306
+ * contribution and not comparing a fingerprint; there is nothing left to agree.
307
+ *
308
+ * We answer once IFF we have not already closed ourselves, so the exchange ends rather than
309
+ * echoing. Both sides then hold no salt and both KNOW it, which is the whole point — the failure
310
+ * this replaces was two sides reaching opposite verdicts with nothing on the wire saying so.
311
+ */
312
+ if (hasClosed) {
313
+ return {
314
+ action: "adoption_closed",
315
+ // NOT "they have already hashed content" — that is only one of their two reasons, and the
316
+ // label they sent says which. Asserting the wrong one about a counterparty is how an operator
317
+ // ends up asking a peer to change something that was never the problem.
318
+ // RENDERED, not interpolated — 006-CRYPTO finding 6. The peer chooses this string, and it is
319
+ // landing inside a sentence the operator reads as ours.
320
+ detail: `the counterparty cannot adopt a salt for this session (${renderPeerAdoptionLabel(state.frame.adoptionClosed)}); neither side will use one`,
321
+ ...(state.ownAdoption?.closed ? {} : { announce: { adoptionClosed: SALT_ADOPTION_LABELS.PEER_CLOSED_FIRST } }),
322
+ };
323
+ }
324
+ /**
325
+ * WE have closed adoption. Say so instead of deriving, whatever the peer sent — otherwise we
326
+ * refuse silently, they adopt, and every message they send afterwards is unverifiable here.
327
+ *
328
+ * ⚠️ `&& !state.ownSalt` — `DOD-M15-SALTSPLIT-1` review pass 1, HIGH-1. WITHOUT IT THIS BRANCH
329
+ * ANNOUNCES THAT WE HOLD NO SALT WHILE WE ARE HOLDING ONE.
330
+ *
331
+ * "Adoption closed" means *"I cannot adopt a NEW salt"*. It was being tested before `ownSalt`, so
332
+ * a side that had agreed salt S and then leafed a message answered a matching `fingerprint(S)`
333
+ * with `adoption_closed: already_hashing` — a frame the receiver reads as *"the peer has none"*.
334
+ * Once `SALTSPLIT-1` taught the receiver to discard on that frame, the receiver erased **its own
335
+ * copy of the same salt**, and a working session became one where every message is refused. The
336
+ * fix made things worse than the defect on that path, which is why the correction is here at the
337
+ * producer and not as a new check at each receiver.
338
+ *
339
+ * The rule underneath it: **a side that already HOLDS a salt has nothing to adopt, so the adoption
340
+ * question does not apply to it at all.** It falls through to the `state.ownSalt` block below,
341
+ * which answers a contribution with a repair and a fingerprint with match-or-mismatch — the
342
+ * correct answers for a salt-holder, and the ones it could never reach before.
343
+ *
344
+ * Deliberately NOT moved above the malformed-frame guard: the `ownSalt` block reads
345
+ * `hasContribution`/`hasFingerprint` and relies on exactly one of them being set.
346
+ *
347
+ * A legacy peer on an older build can still send the misleading frame, and a fixed side would
348
+ * still discard on it. Accepted rather than defended against with a wire field: we are pre-launch
349
+ * with no external installs, and the standing rule here is to re-derive against an empty database
350
+ * rather than carry compatibility for a state nobody is in.
351
+ */
352
+ if (state.ownAdoption?.closed && !state.ownSalt) {
353
+ return {
354
+ action: "adoption_closed",
355
+ // The LABEL and the WHY, in that order: the label is the word an operator scans for, the why
356
+ // is the counts (or the error) behind it. A detail carrying only counts is unreadable, and one
357
+ // carrying only the label cannot be checked against the session it describes.
358
+ detail: `this side cannot adopt a salt for this session (${state.ownAdoption.label}: ${state.ownAdoption.why}), so no salt is adopted; telling the peer so they do not adopt one either`,
359
+ announce: { adoptionClosed: state.ownAdoption.label },
360
+ };
361
+ }
362
+ if (hasContribution === hasFingerprint) {
363
+ return {
364
+ action: "freeze",
365
+ reason: SALT_FREEZE_REASONS.FRAME_MALFORMED,
366
+ detail: hasContribution
367
+ ? "the peer's salt frame carried BOTH a contribution and a fingerprint, so it claims to hold a salt and to be starting fresh at the same time; whichever field we read first would decide the outcome"
368
+ : "the peer's salt frame carried neither a contribution nor a fingerprint, so it says nothing about which state the peer is in",
369
+ };
370
+ }
371
+ if (state.ownSalt) {
372
+ if (hasContribution) {
373
+ // THE REPAIR (review F1). The peer is starting over; ours is a one-way function of two halves
374
+ // and `deriveSessionSalt` SORTS them, so re-sending our half lands them on byte-identical
375
+ // bytes. Freezing here destroyed live sessions over a single dropped frame.
376
+ if (!state.ownContribution) {
377
+ return {
378
+ action: "freeze",
379
+ reason: SALT_FREEZE_REASONS.STATE_DIVERGENT,
380
+ detail: "we hold this session's salt but no longer hold the half it was built from — a teardown or a restart evicted it — so the peer, who is starting over, cannot be brought back to the same value. " +
381
+ "Offering a freshly minted half instead would put them on a DIFFERENT salt with both sides believing they had agreed.",
382
+ };
383
+ }
384
+ if (state.alreadyRepairedAgainstPeerHalf) {
385
+ // TERMINATION (review F14). We have already sent our half in answer to this exact one; the
386
+ // peer is not short of it. Answering with our fingerprint instead makes their next step
387
+ // terminal — `confirmed` or `FINGERPRINT_MISMATCH` — instead of another contribution.
388
+ return {
389
+ action: "repair",
390
+ frame: { fingerprint: saltFingerprint(state.ownSalt) },
391
+ detail: "we have already answered this exact peer half with ours, so a second identical repair would loop; sending our fingerprint instead moves the peer to a terminal answer",
392
+ };
393
+ }
394
+ return {
395
+ action: "repair",
396
+ frame: { contribution: state.ownContribution },
397
+ detail: "the peer is starting the agreement over; re-sending our half lands them on the salt we already hold",
398
+ };
399
+ }
400
+ if (digestsEqual(saltFingerprint(state.ownSalt), state.frame.fingerprint)) {
401
+ return { action: "confirmed" };
402
+ }
403
+ return {
404
+ action: "freeze",
405
+ reason: SALT_FREEZE_REASONS.FINGERPRINT_MISMATCH,
406
+ // BOTH DIGESTS IN HEX (review F5). This printed only lengths, so in the ordinary case — two
407
+ // 8-byte digests that differ — the operator was told "ours is 8 bytes, theirs was 8", which
408
+ // reads as an equality. Both values are one-way, public, and already crossed the wire.
409
+ detail: `the peer's salt fingerprint does not match ours: ours ${Buffer.from(saltFingerprint(state.ownSalt)).toString("hex")}, ` +
410
+ `theirs ${Buffer.from(state.frame.fingerprint).toString("hex")}. Every message from here would be discarded unread by one side or the other.`,
411
+ // The peer holds everything needed to run this same comparison and has not been given our
412
+ // side of it. Without this it learns nothing — the session simply stops answering.
413
+ notifyPeer: { fingerprint: saltFingerprint(state.ownSalt) },
414
+ };
415
+ }
416
+ // From here we hold no salt, so we are going to use our own half — check it before the primitive
417
+ // does, so a local defect cannot be reported as the peer's (review F3).
418
+ if (!state.ownContribution) {
419
+ return {
420
+ action: "freeze",
421
+ reason: SALT_FREEZE_REASONS.OWN_CONTRIBUTION_DEGENERATE,
422
+ detail: "this side holds neither a salt nor a contribution for the session, so it has nothing to agree with",
423
+ };
424
+ }
425
+ const localDefect = ownHalfDefect(state.ownContribution);
426
+ if (localDefect) {
427
+ return { action: "freeze", reason: SALT_FREEZE_REASONS.OWN_CONTRIBUTION_DEGENERATE, detail: localDefect };
428
+ }
429
+ if (hasFingerprint) {
430
+ /**
431
+ * TERMINATION FOR THE SALTLESS SIDE — 006-CRYPTO finding 1, and it is F14's missing mirror.
432
+ *
433
+ * We have already answered this exact fingerprint with our half. A salt-holder that has latched
434
+ * our half (F14) answers every further offer with its fingerprint and NEVER re-offers its own —
435
+ * so we can never derive, and repairing again just buys another round trip. Two healthy daemons
436
+ * reach this after one failed persist plus a reconnect, and then trade frames for the life of
437
+ * the session, one new stream and one INFO line each per iteration.
438
+ *
439
+ * Closing adoption rather than freezing: nothing has been hashed under a salt on this side, no
440
+ * send site consumes one yet, and Decision #8's terminal state for "a side that cannot adopt" is
441
+ * that BOTH stay unsalted and both KNOW. Freezing a working conversation to defend a value
442
+ * nothing has consumed is precisely the defect review F1 removed.
443
+ */
444
+ if (state.alreadyRepairedAgainstPeerFingerprint) {
445
+ return {
446
+ action: "adoption_closed",
447
+ detail: "we hold no salt and have already answered this exact peer fingerprint with our half; a peer that holds a salt does not re-offer its own, " +
448
+ "so this side can never derive it and repairing again would loop. Neither side will use a salt for this session.",
449
+ announce: { adoptionClosed: SALT_ADOPTION_LABELS.EXCHANGE_STALLED },
450
+ };
451
+ }
452
+ // THE MIRROR REPAIR. They hold a salt, we do not. Re-offering our half is what prompts them to
453
+ // send theirs back, and then we derive the value they already have. The FIRST one always
454
+ // happens — the latch above fires only on a repeat, or a saltless side would never ask at all.
455
+ return {
456
+ action: "repair",
457
+ frame: { contribution: state.ownContribution },
458
+ detail: "the peer already holds a salt and we do not; re-offering our half is what asks them for theirs",
459
+ };
460
+ }
461
+ try {
462
+ // The primitive owns every rule about the PEER's half — length, all-zero, reflection — and owns
463
+ // the WORDING too. Its refusals explain what a zero contribution means for both parties;
464
+ // replacing that with a code of our own would be exit-point substitution (Invariant 2),
465
+ // destroying the only explanation that exists at the only moment anyone will read it. Our own
466
+ // half was cleared above, so anything thrown here is about theirs.
467
+ const salt = deriveSessionSalt(state.ownContribution, state.frame.contribution);
468
+ return { action: "derive_and_announce", salt, fingerprint: saltFingerprint(salt) };
469
+ }
470
+ catch (err) {
471
+ return {
472
+ action: "freeze",
473
+ reason: SALT_FREEZE_REASONS.CONTRIBUTION_DEGENERATE,
474
+ detail: err instanceof Error ? err.message : String(err),
475
+ };
476
+ }
477
+ }
478
+ //# sourceMappingURL=session-salt-agreement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-salt-agreement.js","sourceRoot":"","sources":["../src/session-salt-agreement.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"signal-submission.d.ts","sourceRoot":"","sources":["../src/signal-submission.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signal-submission.d.ts","sourceRoot":"","sources":["../src/signal-submission.ts"],"names":[],"mappings":"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"}
@@ -80,7 +80,16 @@ export async function composeSealedSubmission(opts) {
80
80
  guidance: `The consortium manifest verified at daemon start (v${manifest.version}) expired at ` +
81
81
  `${manifest.expires}, so its portal intake key can no longer be trusted — sealing to a ` +
82
82
  "retired key produces a message the portal cannot open and cannot even attribute. " +
83
- "Restart the daemon to load and verify a current manifest, then retry.",
83
+ // DOD-M15-MANIFEST-EXPIRY-LIVE-1 review F4: this used to say "Restart the daemon to load and
84
+ // verify a current manifest, then retry." That is the one move that must NOT be made here.
85
+ // Startup fails closed on an expired manifest (ADV-002), so a restart without a REPLACEMENT
86
+ // does not reload anything — the daemon refuses to come back and every agent goes offline.
87
+ // The instruction turned a refused submission into a dead daemon, and it contradicted the
88
+ // guidance `cello_status` gives for the identical condition.
89
+ "Replace the manifest first — a new file at CELLO_CONSORTIUM_MANIFEST, or an " +
90
+ "@cello-protocol/connect upgrade if this daemon uses the compiled-in one — and then restart. " +
91
+ "Do NOT restart without one: startup refuses an expired manifest, so the daemon will not " +
92
+ "come back up. Run cello_status for the full picture.",
84
93
  };
85
94
  }
86
95
  const intakeKey = manifest.intake_key;
@@ -1 +1 @@
1
- {"version":3,"file":"signal-submission.js","sourceRoot":"","sources":["../src/signal-submission.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signal-submission.js","sourceRoot":"","sources":["../src/signal-submission.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,6 @@
27
27
  import { type CelloNode, type ConnectResult, type IDirectoryChallengeVerifier } from "@cello-protocol/transport";
28
28
  import type { KeyProvider } from "@cello-protocol/crypto";
29
29
  import type { Logger } from "./types.js";
30
- /** A directory node the daemon can dial, resolved from bootstrap config or a manifest. */
31
30
  export interface DirectoryEndpoint {
32
31
  peerId: string;
33
32
  /** A dialable multiaddr (e.g. /dns4/host/tcp/443/wss/p2p/<peerId>). Optional if already connected. */
@@ -88,6 +87,24 @@ export interface SignalingConnectDeps {
88
87
  peerId: string;
89
88
  addrs: string[];
90
89
  }>) => void;
90
+ /**
91
+ * DOD-M15-RELAYSLOTS-1: receives the directory's online token — the credential the relays above
92
+ * now require before they will let this agent hold a circuit reservation slot. Rides the same
93
+ * frame and the same cadence as `relay_endpoints`: every connect and every reconnect, which is
94
+ * what keeps a short-lived token current.
95
+ *
96
+ * Absent field → never called. That is the honest signal in two different situations, and the
97
+ * daemon cannot tell them apart from here: an older directory that does not issue tokens, or a
98
+ * key this directory does not know as a registered agent. Either way there is no slot.
99
+ */
100
+ onOnlineToken?: (token: Uint8Array) => void;
101
+ /**
102
+ * DOD-M15-RELAYSLOTS-1 review M1: fired instead of `onOnlineToken` when the directory issued
103
+ * none, carrying WHICH absence it was. `undefined` means the directory stated no reason, i.e. it
104
+ * predates the token — which is itself the third distinct answer and must not be folded into the
105
+ * other two.
106
+ */
107
+ onOnlineTokenAbsent?: (reason: "not_registered_here" | "issue_failed" | undefined) => void;
91
108
  }
92
109
  /**
93
110
  * Build a production `signalingConnect` for `DaemonConfig.signalingConnect`.
@@ -1 +1 @@
1
- {"version":3,"file":"signaling-connect.d.ts","sourceRoot":"","sources":["../src/signaling-connect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAOH,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,aAAa,EAElB,KAAK,2BAA2B,EACjC,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAkCzC,0FAA0F;AAC1F,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,sGAAsG;IACtG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,+EAA+E;AAC/E,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,oBAAoB,EAAE,MAAM,iBAAiB,GAAG,IAAI,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACzF,4FAA4F;IAC5F,eAAe,EAAE,MAAM,qBAAqB,GAAG,IAAI,CAAC;IACpD,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,iBAAiB,CAAC,EAAE,2BAA2B,CAAC;IAChD,oGAAoG;IACpG,kBAAkB,CAAC,EAAE,MAAM,MAAM,CAAC;IAClC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACvE;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;CACpF;AAuBD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,CAwK/F"}
1
+ {"version":3,"file":"signaling-connect.d.ts","sourceRoot":"","sources":["../src/signaling-connect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAOH,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,aAAa,EAElB,KAAK,2BAA2B,EACjC,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AA+CzC,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,sGAAsG;IACtG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,+EAA+E;AAC/E,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,oBAAoB,EAAE,MAAM,iBAAiB,GAAG,IAAI,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACzF,4FAA4F;IAC5F,eAAe,EAAE,MAAM,qBAAqB,GAAG,IAAI,CAAC;IACpD,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,iBAAiB,CAAC,EAAE,2BAA2B,CAAC;IAChD,oGAAoG;IACpG,kBAAkB,CAAC,EAAE,MAAM,MAAM,CAAC;IAClC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACvE;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;IACnF;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC5C;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,GAAG,cAAc,GAAG,SAAS,KAAK,IAAI,CAAC;CAC5F;AAuBD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,CAuW/F"}