@cello-protocol/daemon 0.0.131 → 0.0.133
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.
- package/dist/content-park.d.ts.map +1 -1
- package/dist/content-park.js +29 -11
- package/dist/content-park.js.map +1 -1
- package/dist/daemon.d.ts +11 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +398 -18
- package/dist/daemon.js.map +1 -1
- package/dist/document-ack-inbound.d.ts +57 -0
- package/dist/document-ack-inbound.d.ts.map +1 -0
- package/dist/document-ack-inbound.js +174 -0
- package/dist/document-ack-inbound.js.map +1 -0
- package/dist/document-control-notifier.d.ts +61 -0
- package/dist/document-control-notifier.d.ts.map +1 -0
- package/dist/document-control-notifier.js +70 -0
- package/dist/document-control-notifier.js.map +1 -0
- package/dist/document-delivery-transport.d.ts +94 -0
- package/dist/document-delivery-transport.d.ts.map +1 -0
- package/dist/document-delivery-transport.js +179 -0
- package/dist/document-delivery-transport.js.map +1 -0
- package/dist/document-delivery.d.ts +181 -0
- package/dist/document-delivery.d.ts.map +1 -0
- package/dist/document-delivery.js +289 -0
- package/dist/document-delivery.js.map +1 -0
- package/dist/document-frame-router.d.ts +210 -0
- package/dist/document-frame-router.d.ts.map +1 -0
- package/dist/document-frame-router.js +396 -0
- package/dist/document-frame-router.js.map +1 -0
- package/dist/document-handlers.d.ts +47 -0
- package/dist/document-handlers.d.ts.map +1 -0
- package/dist/document-handlers.js +657 -0
- package/dist/document-handlers.js.map +1 -0
- package/dist/document-handshake.d.ts +156 -0
- package/dist/document-handshake.d.ts.map +1 -0
- package/dist/document-handshake.js +398 -0
- package/dist/document-handshake.js.map +1 -0
- package/dist/document-inbound.d.ts +91 -0
- package/dist/document-inbound.d.ts.map +1 -0
- package/dist/document-inbound.js +290 -0
- package/dist/document-inbound.js.map +1 -0
- package/dist/document-layer.d.ts +137 -0
- package/dist/document-layer.d.ts.map +1 -0
- package/dist/document-layer.js +255 -0
- package/dist/document-layer.js.map +1 -0
- package/dist/document-lifecycle.d.ts +125 -0
- package/dist/document-lifecycle.d.ts.map +1 -0
- package/dist/document-lifecycle.js +433 -0
- package/dist/document-lifecycle.js.map +1 -0
- package/dist/document-live-docs.d.ts +58 -0
- package/dist/document-live-docs.d.ts.map +1 -0
- package/dist/document-live-docs.js +126 -0
- package/dist/document-live-docs.js.map +1 -0
- package/dist/document-notify.d.ts +173 -0
- package/dist/document-notify.d.ts.map +1 -0
- package/dist/document-notify.js +438 -0
- package/dist/document-notify.js.map +1 -0
- package/dist/document-publish.d.ts +67 -0
- package/dist/document-publish.d.ts.map +1 -0
- package/dist/document-publish.js +149 -0
- package/dist/document-publish.js.map +1 -0
- package/dist/document-reachability.d.ts +42 -0
- package/dist/document-reachability.d.ts.map +1 -0
- package/dist/document-reachability.js +80 -0
- package/dist/document-reachability.js.map +1 -0
- package/dist/document-rejection.d.ts +240 -0
- package/dist/document-rejection.d.ts.map +1 -0
- package/dist/document-rejection.js +407 -0
- package/dist/document-rejection.js.map +1 -0
- package/dist/document-store.d.ts +154 -8
- package/dist/document-store.d.ts.map +1 -1
- package/dist/document-store.js +462 -4
- package/dist/document-store.js.map +1 -1
- package/dist/document-write-path.d.ts.map +1 -1
- package/dist/document-write-path.js +10 -43
- package/dist/document-write-path.js.map +1 -1
- package/dist/inbound-sessions.d.ts +25 -0
- package/dist/inbound-sessions.d.ts.map +1 -1
- package/dist/inbound-sessions.js +60 -0
- package/dist/inbound-sessions.js.map +1 -1
- package/dist/initiate-session-handler.d.ts +24 -1
- package/dist/initiate-session-handler.d.ts.map +1 -1
- package/dist/initiate-session-handler.js +35 -9
- package/dist/initiate-session-handler.js.map +1 -1
- package/dist/ipc-server.d.ts +11 -1
- package/dist/ipc-server.d.ts.map +1 -1
- package/dist/ipc-server.js +7 -1
- package/dist/ipc-server.js.map +1 -1
- package/dist/line-lcs.d.ts +51 -0
- package/dist/line-lcs.d.ts.map +1 -0
- package/dist/line-lcs.js +71 -0
- package/dist/line-lcs.js.map +1 -0
- package/dist/notification-handlers.d.ts +2 -1
- package/dist/notification-handlers.d.ts.map +1 -1
- package/dist/notification-handlers.js +11 -2
- package/dist/notification-handlers.js.map +1 -1
- package/dist/outbound-sessions.d.ts +2 -0
- package/dist/outbound-sessions.d.ts.map +1 -1
- package/dist/outbound-sessions.js +23 -2
- package/dist/outbound-sessions.js.map +1 -1
- package/dist/session-content-handlers.d.ts.map +1 -1
- package/dist/session-content-handlers.js +3 -2
- package/dist/session-content-handlers.js.map +1 -1
- package/dist/session-node-manager.d.ts +15 -0
- package/dist/session-node-manager.d.ts.map +1 -1
- package/dist/session-node-manager.js +188 -9
- package/dist/session-node-manager.js.map +1 -1
- package/dist/vocabulary.d.ts.map +1 -1
- package/dist/vocabulary.js +16 -0
- package/dist/vocabulary.js.map +1 -1
- package/dist/wire-content-hash.d.ts +27 -0
- package/dist/wire-content-hash.d.ts.map +1 -0
- package/dist/wire-content-hash.js +37 -0
- package/dist/wire-content-hash.js.map +1 -0
- package/package.json +5 -5
package/dist/document-store.js
CHANGED
|
@@ -65,9 +65,33 @@ const CREATE_ENVELOPES_SQL = `
|
|
|
65
65
|
state_vector BLOB NOT NULL,
|
|
66
66
|
payload BLOB,
|
|
67
67
|
kind TEXT NOT NULL CHECK (kind IN ('update', 'withdrawal', 'rejection')),
|
|
68
|
+
-- The Yjs clientID the sender SIGNED for (ENVELOPE-1 puts it inside the TBS). Recorded so the
|
|
69
|
+
-- gate's authorship rule has a binding derived from authenticated data rather than from a seam
|
|
70
|
+
-- somebody has to remember to implement. §14 forbids persisting a clientID for REUSE — this is
|
|
71
|
+
-- the opposite: a record of which ones a peer has actually signed for.
|
|
72
|
+
sender_client_id INTEGER,
|
|
68
73
|
references_hash TEXT,
|
|
69
74
|
created_at INTEGER NOT NULL,
|
|
70
75
|
log_index INTEGER NOT NULL,
|
|
76
|
+
-- DELIVERY-1. Pending outbound is DERIVED from these columns rather than held in a queue:
|
|
77
|
+
-- a queue in memory does not survive a restart, and a queue in its own table is a second
|
|
78
|
+
-- source of truth that can disagree with the log about what was sent. "Unacknowledged
|
|
79
|
+
-- envelopes I authored" is the whole definition, and it is a WHERE clause.
|
|
80
|
+
-- TWO facts, and they are genuinely different: delivered_at is when the envelope LEFT (or was
|
|
81
|
+
-- parked for an offline peer), acked_at is when the peer's daemon said it admitted or rejected
|
|
82
|
+
-- it. An earlier version had delivered_at with no real writer — its only assignment was a
|
|
83
|
+
-- COALESCE inside the ack, so it always equalled acked_at and the distinction was one the
|
|
84
|
+
-- schema could not express. It has a writer now (markDelivered), so the distinction is real:
|
|
85
|
+
-- "sent, awaiting confirmation" is exactly the state a store-and-forward transport leaves an
|
|
86
|
+
-- envelope in, and an operator asking why something has not landed needs to tell it from
|
|
87
|
+
-- "never sent".
|
|
88
|
+
delivered_at INTEGER,
|
|
89
|
+
acked_at INTEGER,
|
|
90
|
+
-- How many times delivery has been attempted, and when the next attempt is due. On the row,
|
|
91
|
+
-- because a backoff that resets on restart is not a backoff — a daemon restarting in a
|
|
92
|
+
-- reconnect loop would hammer an unreachable peer at full rate forever.
|
|
93
|
+
attempts INTEGER NOT NULL DEFAULT 0,
|
|
94
|
+
next_attempt_at INTEGER,
|
|
71
95
|
PRIMARY KEY (owner_agent_id, document_id, envelope_hash),
|
|
72
96
|
-- A duplicate index would make ORDER BY log_index non-deterministic, and this log's entire
|
|
73
97
|
-- value is deterministic replay. Two daemons on one DB file (the orphan-process case this
|
|
@@ -84,6 +108,79 @@ const CREATE_ENVELOPES_SQL = `
|
|
|
84
108
|
FOREIGN KEY (owner_agent_id, document_id) REFERENCES documents (owner_agent_id, document_id)
|
|
85
109
|
);
|
|
86
110
|
`;
|
|
111
|
+
/**
|
|
112
|
+
* Quarantined updates (DOD-DOC-REJECT-1). A separate table, deliberately:
|
|
113
|
+
*
|
|
114
|
+
* `document_envelopes` cannot hold them — its CHECK forbids a payload on a non-update row — and
|
|
115
|
+
* putting the refused bytes in as an `update` row would be worse, because `replay` applies every
|
|
116
|
+
* payload in order and does not honour references. The refused content would come back on every
|
|
117
|
+
* rebuild, which is the opposite of quarantine.
|
|
118
|
+
*
|
|
119
|
+
* So the log stays clean and replay is untouched, while the bytes a `0x05` leaf references
|
|
120
|
+
* actually survive a restart — which is the whole point of "held, never discarded" (§3.2).
|
|
121
|
+
*/
|
|
122
|
+
const CREATE_QUARANTINE_SQL = `
|
|
123
|
+
CREATE TABLE IF NOT EXISTS document_quarantine (
|
|
124
|
+
owner_agent_id TEXT NOT NULL,
|
|
125
|
+
document_id TEXT NOT NULL,
|
|
126
|
+
rejected_envelope_hash TEXT NOT NULL,
|
|
127
|
+
-- The 0x05 leaf THIS row belongs to. It is the PK because one refused envelope can be refused
|
|
128
|
+
-- MORE THAN ONCE, for different reasons, across retry rounds — the rejection protocol's normal
|
|
129
|
+
-- path. Keyed on the REFUSED envelope instead, the second round's bytes, reason, rule and limit
|
|
130
|
+
-- were dropped by ON CONFLICT DO NOTHING with no log line, and the stall message then told the
|
|
131
|
+
-- operator "the most recent reason was" and printed the OLDEST. One 0x05 leaf, one row.
|
|
132
|
+
rejection_envelope_hash TEXT NOT NULL,
|
|
133
|
+
-- The refused envelope's OWN chain link and author, so verifyChainLinkage can bridge across
|
|
134
|
+
-- it. The refused payload is deliberately never written to the log (see the header), which
|
|
135
|
+
-- would otherwise leave the peer's supersession chaining onto a hash that is nowhere.
|
|
136
|
+
rejected_sender_agent_id TEXT NOT NULL,
|
|
137
|
+
rejected_doc_prev_hash TEXT,
|
|
138
|
+
payload BLOB NOT NULL,
|
|
139
|
+
reason TEXT NOT NULL,
|
|
140
|
+
detail TEXT,
|
|
141
|
+
rule TEXT,
|
|
142
|
+
limit_name TEXT,
|
|
143
|
+
limit_value INTEGER,
|
|
144
|
+
limit_actual INTEGER,
|
|
145
|
+
created_at INTEGER NOT NULL,
|
|
146
|
+
PRIMARY KEY (owner_agent_id, document_id, rejection_envelope_hash),
|
|
147
|
+
FOREIGN KEY (owner_agent_id, document_id) REFERENCES documents (owner_agent_id, document_id)
|
|
148
|
+
);
|
|
149
|
+
`;
|
|
150
|
+
/**
|
|
151
|
+
* Rejections we RECEIVED (§3.2 "both sides"). A separate table from `document_quarantine` because
|
|
152
|
+
* the two hold different facts: quarantine holds bytes WE refused, this holds the peer's refusal of
|
|
153
|
+
* bytes we authored — we hold no payload of theirs to quarantine.
|
|
154
|
+
*
|
|
155
|
+
* It is durable rather than a log line because everything an operator needs on the publishing side
|
|
156
|
+
* depends on it surviving a restart: why their work was refused, and how many rounds remain before
|
|
157
|
+
* the document stalls. Without a row, the sending side counted its OWN rejections — which on a pure
|
|
158
|
+
* publisher is zero forever — so the retry bound existed only on the side that never loops.
|
|
159
|
+
*/
|
|
160
|
+
const CREATE_REJECTIONS_RECEIVED_SQL = `
|
|
161
|
+
CREATE TABLE IF NOT EXISTS document_rejections_received (
|
|
162
|
+
owner_agent_id TEXT NOT NULL,
|
|
163
|
+
document_id TEXT NOT NULL,
|
|
164
|
+
rejection_envelope_hash TEXT NOT NULL,
|
|
165
|
+
rejected_envelope_hash TEXT NOT NULL,
|
|
166
|
+
from_agent_id TEXT NOT NULL,
|
|
167
|
+
reason TEXT NOT NULL,
|
|
168
|
+
detail TEXT,
|
|
169
|
+
created_at INTEGER NOT NULL,
|
|
170
|
+
PRIMARY KEY (owner_agent_id, document_id, rejection_envelope_hash),
|
|
171
|
+
FOREIGN KEY (owner_agent_id, document_id) REFERENCES documents (owner_agent_id, document_id)
|
|
172
|
+
);
|
|
173
|
+
`;
|
|
174
|
+
/** Mirrors `DocumentLifecycle`'s definition exactly — see the note at the exec site. */
|
|
175
|
+
const CREATE_WITHDRAWALS_SQL = `
|
|
176
|
+
CREATE TABLE IF NOT EXISTS document_withdrawals (
|
|
177
|
+
owner_agent_id TEXT NOT NULL,
|
|
178
|
+
document_id TEXT NOT NULL,
|
|
179
|
+
envelope_hash TEXT NOT NULL,
|
|
180
|
+
created_at INTEGER NOT NULL,
|
|
181
|
+
PRIMARY KEY (owner_agent_id, document_id, envelope_hash)
|
|
182
|
+
);
|
|
183
|
+
`;
|
|
87
184
|
const CREATE_SNAPSHOTS_SQL = `
|
|
88
185
|
CREATE TABLE IF NOT EXISTS document_snapshots (
|
|
89
186
|
owner_agent_id TEXT NOT NULL,
|
|
@@ -98,11 +195,28 @@ const CREATE_SNAPSHOTS_SQL = `
|
|
|
98
195
|
export class DocumentStore {
|
|
99
196
|
#db;
|
|
100
197
|
#logger;
|
|
198
|
+
/**
|
|
199
|
+
* The underlying handle, for modules that own their OWN tables alongside this one
|
|
200
|
+
* (DocumentLifecycle). Deliberately not a licence to query this store's tables from outside —
|
|
201
|
+
* every one of them has a method here, and a second query path is a second set of rules about
|
|
202
|
+
* scoping that nobody remembers to keep in step.
|
|
203
|
+
*/
|
|
204
|
+
get rawDb() {
|
|
205
|
+
return this.#db;
|
|
206
|
+
}
|
|
101
207
|
constructor(db, logger) {
|
|
102
208
|
this.#db = db;
|
|
103
209
|
this.#logger = logger;
|
|
104
210
|
this.#db.exec(CREATE_DOCUMENTS_SQL);
|
|
105
211
|
this.#db.exec(CREATE_ENVELOPES_SQL);
|
|
212
|
+
this.#db.exec(CREATE_QUARANTINE_SQL);
|
|
213
|
+
this.#db.exec(CREATE_REJECTIONS_RECEIVED_SQL);
|
|
214
|
+
// Owned by DocumentLifecycle, created HERE too because `pendingDeliveries` references it and a
|
|
215
|
+
// store used without the lifecycle module is a legitimate configuration. Both statements are
|
|
216
|
+
// CREATE TABLE IF NOT EXISTS over the same definition, so whichever runs first wins and the
|
|
217
|
+
// other is a no-op — the alternative is a query that throws on a missing table and takes an
|
|
218
|
+
// entire delivery pass down with it.
|
|
219
|
+
this.#db.exec(CREATE_WITHDRAWALS_SQL);
|
|
106
220
|
this.#db.exec(CREATE_SNAPSHOTS_SQL);
|
|
107
221
|
// Reading the log in arrival order is the only access pattern that matters.
|
|
108
222
|
this.#db.exec("CREATE INDEX IF NOT EXISTS idx_document_envelopes_order ON document_envelopes (owner_agent_id, document_id, log_index)");
|
|
@@ -126,6 +240,16 @@ export class DocumentStore {
|
|
|
126
240
|
.get(ownerAgentId, documentId);
|
|
127
241
|
return r ? toDocumentRow(r) : null;
|
|
128
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Does this daemon hold ANY document, under any owner?
|
|
245
|
+
*
|
|
246
|
+
* Deliberately unscoped, and that is the point: it is the only question that can tell a delivery
|
|
247
|
+
* sweep visiting zero agents apart from a daemon that simply has no documents. Without it the two
|
|
248
|
+
* look identical in the log, which is what let an owner-key mismatch hide.
|
|
249
|
+
*/
|
|
250
|
+
anyDocumentExists() {
|
|
251
|
+
return this.#db.prepare("SELECT 1 FROM documents LIMIT 1").get() !== undefined;
|
|
252
|
+
}
|
|
129
253
|
listDocuments(ownerAgentId) {
|
|
130
254
|
const rows = this.#db
|
|
131
255
|
.prepare("SELECT * FROM documents WHERE owner_agent_id = ? ORDER BY created_at ASC")
|
|
@@ -163,12 +287,13 @@ export class DocumentStore {
|
|
|
163
287
|
info = this.#db
|
|
164
288
|
.prepare(`INSERT INTO document_envelopes
|
|
165
289
|
(owner_agent_id, document_id, envelope_hash, sender_agent_id, doc_prev_hash, epoch_id,
|
|
166
|
-
signature, state_vector, payload, kind, references_hash,
|
|
167
|
-
|
|
290
|
+
signature, state_vector, payload, kind, references_hash, sender_client_id,
|
|
291
|
+
created_at, log_index)
|
|
292
|
+
SELECT ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
|
|
168
293
|
COALESCE((SELECT MAX(log_index) + 1 FROM document_envelopes
|
|
169
294
|
WHERE owner_agent_id = ? AND document_id = ?), 0)
|
|
170
295
|
ON CONFLICT (owner_agent_id, document_id, envelope_hash) DO NOTHING`)
|
|
171
|
-
.run(ownerAgentId, envelope.documentId, envelope.envelopeHash, envelope.senderAgentId, envelope.docPrevHash, envelope.epochId, Buffer.from(envelope.signature), Buffer.from(envelope.stateVector), envelope.payload === null ? null : Buffer.from(envelope.payload), envelope.kind, envelope.referencesEnvelopeHash ?? null, envelope.createdAtMs, ownerAgentId, envelope.documentId);
|
|
296
|
+
.run(ownerAgentId, envelope.documentId, envelope.envelopeHash, envelope.senderAgentId, envelope.docPrevHash, envelope.epochId, Buffer.from(envelope.signature), Buffer.from(envelope.stateVector), envelope.payload === null ? null : Buffer.from(envelope.payload), envelope.kind, envelope.referencesEnvelopeHash ?? null, envelope.senderClientId ?? null, envelope.createdAtMs, ownerAgentId, envelope.documentId);
|
|
172
297
|
}
|
|
173
298
|
catch (err) {
|
|
174
299
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -220,7 +345,41 @@ export class DocumentStore {
|
|
|
220
345
|
*/
|
|
221
346
|
verifyChainLinkage(ownerAgentId, documentId) {
|
|
222
347
|
const log = this.getEnvelopeLog(ownerAgentId, documentId);
|
|
348
|
+
// BRIDGE THE REFUSED ENVELOPES. A refused update's payload is never written to the log — that
|
|
349
|
+
// is what makes the refusal real across a restart — but the peer does not know it was refused
|
|
350
|
+
// when it authors the next envelope, so its supersession chains onto a hash the log does not
|
|
351
|
+
// contain. Without the bridge that reads as `document_chain_broken`, the document refuses to
|
|
352
|
+
// rebuild, and the operator is sent to debug the chain layer for a rejection-protocol event.
|
|
353
|
+
//
|
|
354
|
+
// These stubs exist ONLY for verification. They carry no payload and are never returned by
|
|
355
|
+
// `getEnvelopeLog`, so replay cannot see them and the refused content cannot come back.
|
|
356
|
+
const stubs = this.listQuarantined(ownerAgentId, documentId).map((q) => ({
|
|
357
|
+
envelopeHash: q.rejectedEnvelopeHash,
|
|
358
|
+
documentId: q.documentId,
|
|
359
|
+
senderAgentId: q.rejectedSenderAgentId,
|
|
360
|
+
docPrevHash: q.rejectedDocPrevHash,
|
|
361
|
+
epochId: 0,
|
|
362
|
+
signature: new Uint8Array(0),
|
|
363
|
+
stateVector: new Uint8Array(0),
|
|
364
|
+
payload: null,
|
|
365
|
+
kind: "rejection",
|
|
366
|
+
referencesEnvelopeHash: null,
|
|
367
|
+
createdAtMs: q.createdAtMs,
|
|
368
|
+
}));
|
|
369
|
+
// One refused envelope can carry several quarantine rows (one per retry round), and the chain
|
|
370
|
+
// has exactly one node for it.
|
|
371
|
+
const seenStub = new Set();
|
|
223
372
|
const bySender = new Map();
|
|
373
|
+
for (const stub of stubs) {
|
|
374
|
+
if (seenStub.has(stub.envelopeHash))
|
|
375
|
+
continue;
|
|
376
|
+
seenStub.add(stub.envelopeHash);
|
|
377
|
+
const list = bySender.get(stub.senderAgentId);
|
|
378
|
+
if (list)
|
|
379
|
+
list.push(stub);
|
|
380
|
+
else
|
|
381
|
+
bySender.set(stub.senderAgentId, [stub]);
|
|
382
|
+
}
|
|
224
383
|
for (const e of log) {
|
|
225
384
|
const list = bySender.get(e.senderAgentId);
|
|
226
385
|
if (list)
|
|
@@ -247,7 +406,9 @@ export class DocumentStore {
|
|
|
247
406
|
ok: false,
|
|
248
407
|
reason: "document_chain_broken",
|
|
249
408
|
detail: `sender ${sender.slice(0, 16)}… envelope ${e.envelopeHash.slice(0, 16)}… links to ` +
|
|
250
|
-
`${e.docPrevHash.slice(0, 16)}…, which is absent from the log
|
|
409
|
+
`${e.docPrevHash.slice(0, 16)}…, which is absent from the log and is not among this ` +
|
|
410
|
+
`document's refused envelopes either — so this is a gap in the chain itself, not a ` +
|
|
411
|
+
`rejection`,
|
|
251
412
|
};
|
|
252
413
|
}
|
|
253
414
|
}
|
|
@@ -297,6 +458,298 @@ export class DocumentStore {
|
|
|
297
458
|
}
|
|
298
459
|
return { ok: true };
|
|
299
460
|
}
|
|
461
|
+
// ─── quarantine (held, never discarded) ───────────────────────────────────
|
|
462
|
+
/**
|
|
463
|
+
* Hold a refused update's bytes. Idempotent per REJECTION (per 0x05 leaf), not per refused
|
|
464
|
+
* envelope — one envelope may be refused across several retry rounds and each round's reason,
|
|
465
|
+
* rule and limit are distinct facts an operator needs.
|
|
466
|
+
*
|
|
467
|
+
* Returns whether a row was written, so a caller never has to infer it. The previous signature
|
|
468
|
+
* returned void and the conflict clause silently dropped every round after the first.
|
|
469
|
+
*/
|
|
470
|
+
holdQuarantined(ownerAgentId, row) {
|
|
471
|
+
const info = this.#db
|
|
472
|
+
.prepare(`INSERT INTO document_quarantine
|
|
473
|
+
(owner_agent_id, document_id, rejection_envelope_hash, rejected_envelope_hash,
|
|
474
|
+
rejected_sender_agent_id, rejected_doc_prev_hash, payload, reason, detail,
|
|
475
|
+
rule, limit_name, limit_value, limit_actual, created_at)
|
|
476
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
477
|
+
ON CONFLICT (owner_agent_id, document_id, rejection_envelope_hash) DO NOTHING`)
|
|
478
|
+
.run(ownerAgentId, row.documentId, row.rejectionEnvelopeHash, row.rejectedEnvelopeHash, row.rejectedSenderAgentId, row.rejectedDocPrevHash, Buffer.from(row.payload), row.reason, row.detail ?? null, row.rule ?? null, row.limitName ?? null, row.limitValue ?? null, row.limitActual ?? null, row.createdAtMs);
|
|
479
|
+
return Number(info.changes) > 0;
|
|
480
|
+
}
|
|
481
|
+
listQuarantined(ownerAgentId, documentId) {
|
|
482
|
+
const rows = this.#db
|
|
483
|
+
.prepare(
|
|
484
|
+
// rowid breaks the tie. Several rounds can land inside one millisecond, and `created_at`
|
|
485
|
+
// alone then leaves the order to SQLite — which is what an operator is shown as "the most
|
|
486
|
+
// recent reason". Insertion order is the real answer and rowid is it.
|
|
487
|
+
`SELECT * FROM document_quarantine
|
|
488
|
+
WHERE owner_agent_id = ? AND document_id = ?
|
|
489
|
+
ORDER BY created_at ASC, rowid ASC`)
|
|
490
|
+
.all(ownerAgentId, documentId);
|
|
491
|
+
return rows.map((r) => ({
|
|
492
|
+
documentId: r["document_id"],
|
|
493
|
+
rejectionEnvelopeHash: r["rejection_envelope_hash"],
|
|
494
|
+
rejectedEnvelopeHash: r["rejected_envelope_hash"],
|
|
495
|
+
rejectedSenderAgentId: r["rejected_sender_agent_id"],
|
|
496
|
+
rejectedDocPrevHash: r["rejected_doc_prev_hash"] ?? null,
|
|
497
|
+
payload: toU8(r["payload"]),
|
|
498
|
+
reason: r["reason"],
|
|
499
|
+
detail: r["detail"] ?? undefined,
|
|
500
|
+
rule: r["rule"] ?? undefined,
|
|
501
|
+
limitName: r["limit_name"] ?? undefined,
|
|
502
|
+
limitValue: r["limit_value"] ?? undefined,
|
|
503
|
+
limitActual: r["limit_actual"] ?? undefined,
|
|
504
|
+
createdAtMs: r["created_at"],
|
|
505
|
+
}));
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Release every entry for a refused envelope once its superseding update has been admitted.
|
|
509
|
+
* Returns whether anything was released. Keyed by the REFUSED envelope rather than the rejection
|
|
510
|
+
* leaf, because admitting the supersession resolves all of that envelope's rounds at once.
|
|
511
|
+
*/
|
|
512
|
+
releaseQuarantined(ownerAgentId, documentId, rejectedEnvelopeHash) {
|
|
513
|
+
const info = this.#db
|
|
514
|
+
.prepare(`DELETE FROM document_quarantine
|
|
515
|
+
WHERE owner_agent_id = ? AND document_id = ? AND rejected_envelope_hash = ?`)
|
|
516
|
+
.run(ownerAgentId, documentId, rejectedEnvelopeHash);
|
|
517
|
+
return Number(info.changes) > 0;
|
|
518
|
+
}
|
|
519
|
+
/**
|
|
520
|
+
* Every envelope hash we hold from one sender. Hash-only on purpose: the caller needs a set for a
|
|
521
|
+
* membership test, and `getEnvelopeLog` selects `*` — including every payload BLOB — so building
|
|
522
|
+
* that set from it materialized the whole document's content on every inbound update.
|
|
523
|
+
*/
|
|
524
|
+
knownEnvelopeHashesBySender(ownerAgentId, documentId, senderAgentId) {
|
|
525
|
+
const rows = this.#db
|
|
526
|
+
.prepare(
|
|
527
|
+
// THE QUARANTINE COUNTS AS KNOWN, and it has to.
|
|
528
|
+
//
|
|
529
|
+
// A refused envelope is deliberately never written to `document_envelopes` — that is the
|
|
530
|
+
// point of refusing it. But the sender's chain does not rewind: their next envelope links
|
|
531
|
+
// to the one we refused. Without the second half of this union that link resolves to
|
|
532
|
+
// nothing and the supersession is rejected as `document_chain_broken` — so ONE gate refusal
|
|
533
|
+
// permanently broke the document, and the supersede-then-converge protocol §3.2 describes
|
|
534
|
+
// could never run at all. Measured live.
|
|
535
|
+
//
|
|
536
|
+
// The bridge was already designed for exactly this: the quarantine records the refused
|
|
537
|
+
// envelope's own author and prev-hash so a later link can span it. It had only ever been
|
|
538
|
+
// applied to `verifyChainLinkage`, the LOCAL replay check — never to inbound admission,
|
|
539
|
+
// which is the path a peer's supersession actually arrives on.
|
|
540
|
+
//
|
|
541
|
+
// Scoped by the refused envelope's own sender, so one peer's quarantine can never make
|
|
542
|
+
// another peer's broken chain resolve.
|
|
543
|
+
`SELECT envelope_hash FROM document_envelopes
|
|
544
|
+
WHERE owner_agent_id = ? AND document_id = ? AND sender_agent_id = ?
|
|
545
|
+
UNION ALL
|
|
546
|
+
SELECT rejected_envelope_hash AS envelope_hash FROM document_quarantine
|
|
547
|
+
WHERE owner_agent_id = ? AND document_id = ? AND rejected_sender_agent_id = ?`)
|
|
548
|
+
.all(ownerAgentId, documentId, senderAgentId, ownerAgentId, documentId, senderAgentId);
|
|
549
|
+
return new Set(rows.map((r) => r.envelope_hash));
|
|
550
|
+
}
|
|
551
|
+
/** The clientIDs one sender has signed for on this document. Also hash-free — see above. */
|
|
552
|
+
senderClientIdsFor(ownerAgentId, documentId, senderAgentId) {
|
|
553
|
+
const rows = this.#db
|
|
554
|
+
.prepare(`SELECT DISTINCT sender_client_id FROM document_envelopes
|
|
555
|
+
WHERE owner_agent_id = ? AND document_id = ? AND sender_agent_id = ?
|
|
556
|
+
AND sender_client_id IS NOT NULL`)
|
|
557
|
+
.all(ownerAgentId, documentId, senderAgentId);
|
|
558
|
+
return rows.map((r) => r.sender_client_id);
|
|
559
|
+
}
|
|
560
|
+
/**
|
|
561
|
+
* The state vector the PEER last told us they had — from their most recent envelope.
|
|
562
|
+
*
|
|
563
|
+
* This is what a publish diffs against (§3.2 step 3, §7): an update computed against what they
|
|
564
|
+
* have already seen carries exactly the operations they lack. Diffing against OUR OWN snapshot
|
|
565
|
+
* instead publishes what we have not yet snapshotted, which is a different question with an
|
|
566
|
+
* answer that happens to look plausible.
|
|
567
|
+
*/
|
|
568
|
+
peerStateVector(ownerAgentId, documentId, peerAgentId) {
|
|
569
|
+
const r = this.#db
|
|
570
|
+
.prepare(`SELECT state_vector FROM document_envelopes
|
|
571
|
+
WHERE owner_agent_id = ? AND document_id = ? AND sender_agent_id = ? AND kind = 'update'
|
|
572
|
+
ORDER BY log_index DESC LIMIT 1`)
|
|
573
|
+
.get(ownerAgentId, documentId, peerAgentId);
|
|
574
|
+
return r?.state_vector === undefined ? null : toU8(r.state_vector);
|
|
575
|
+
}
|
|
576
|
+
/**
|
|
577
|
+
* The state vector OUR last published envelope carried — what we had when we last spoke.
|
|
578
|
+
*
|
|
579
|
+
* Distinct from `peerStateVector`, and the distinction is the point: that one answers "what does
|
|
580
|
+
* the peer lack" (what to send), this one answers "has anything changed since I last published"
|
|
581
|
+
* (whether to send at all). Conflating them meant a republish with no edits still produced a
|
|
582
|
+
* non-empty update, because before the peer has ever published the diff is the whole document.
|
|
583
|
+
*/
|
|
584
|
+
lastPublishedStateVector(ownerAgentId, documentId, senderAgentId) {
|
|
585
|
+
const r = this.#db
|
|
586
|
+
.prepare(`SELECT state_vector FROM document_envelopes
|
|
587
|
+
WHERE owner_agent_id = ? AND document_id = ? AND sender_agent_id = ? AND kind = 'update'
|
|
588
|
+
ORDER BY log_index DESC LIMIT 1`)
|
|
589
|
+
.get(ownerAgentId, documentId, senderAgentId);
|
|
590
|
+
return r?.state_vector === undefined ? null : toU8(r.state_vector);
|
|
591
|
+
}
|
|
592
|
+
/** The rejecting agent's most recent envelope for this document, for chain linkage. */
|
|
593
|
+
lastEnvelopeHashBySender(ownerAgentId, documentId, senderAgentId) {
|
|
594
|
+
const r = this.#db
|
|
595
|
+
.prepare(`SELECT envelope_hash FROM document_envelopes
|
|
596
|
+
WHERE owner_agent_id = ? AND document_id = ? AND sender_agent_id = ?
|
|
597
|
+
ORDER BY log_index DESC LIMIT 1`)
|
|
598
|
+
.get(ownerAgentId, documentId, senderAgentId);
|
|
599
|
+
return r?.envelope_hash ?? null;
|
|
600
|
+
}
|
|
601
|
+
// ─── delivery (DELIVERY-1) ────────────────────────────────────────────────
|
|
602
|
+
/**
|
|
603
|
+
* Envelopes this agent authored that the peer has not acknowledged, and whose next attempt is
|
|
604
|
+
* due. DERIVED — there is no queue. Survives a restart because the log does.
|
|
605
|
+
*
|
|
606
|
+
* Scoped to `senderAgentId = ownerAgentId`: an envelope we RECEIVED is not ours to deliver, and
|
|
607
|
+
* without the scope a receiver would helpfully re-send the sender's own updates back at it.
|
|
608
|
+
*/
|
|
609
|
+
pendingDeliveries(ownerAgentId, nowMs,
|
|
610
|
+
/**
|
|
611
|
+
* OUR OWN sender id on the wire — the author's pubkey hex (M14-D5).
|
|
612
|
+
*
|
|
613
|
+
* Kept as a separate parameter, and separately named, even though the daemon now scopes the
|
|
614
|
+
* store by that same pubkey hex so the two coincide. They are different FACTS: the owner key
|
|
615
|
+
* says whose local store this row is in, the sender id says who signed the envelope. An
|
|
616
|
+
* earlier version of the daemon scoped by agent name, and the mismatch returned nothing
|
|
617
|
+
* pending — every published update sitting in the log undelivered, with no error anywhere.
|
|
618
|
+
* Collapsing them into one argument makes that class of bug unrepresentable in the call and
|
|
619
|
+
* invisible in the query.
|
|
620
|
+
*/
|
|
621
|
+
senderAgentId = ownerAgentId, limit = 100) {
|
|
622
|
+
const rows = this.#db
|
|
623
|
+
.prepare(`SELECT * FROM document_envelopes
|
|
624
|
+
WHERE owner_agent_id = ? AND sender_agent_id = ? AND acked_at IS NULL
|
|
625
|
+
-- UPDATES only. A withdrawal record is local audit — the update it concerns was never
|
|
626
|
+
-- delivered, so there is nothing for the peer to act on — and a rejection reaches the
|
|
627
|
+
-- peer through the rejection protocol, not this worker. Without the scope the worker
|
|
628
|
+
-- would ship both, and the withdrawal would arrive as a reference to an envelope the
|
|
629
|
+
-- peer has never seen.
|
|
630
|
+
AND kind = 'update'
|
|
631
|
+
-- An ENDED document does not deliver. A killed or closed document that kept shipping
|
|
632
|
+
-- would contradict the verb the operator just used, and the peer would receive updates
|
|
633
|
+
-- on a collaboration they were told had stopped.
|
|
634
|
+
AND EXISTS (
|
|
635
|
+
SELECT 1 FROM documents d
|
|
636
|
+
WHERE d.owner_agent_id = document_envelopes.owner_agent_id
|
|
637
|
+
AND d.document_id = document_envelopes.document_id
|
|
638
|
+
AND d.status NOT IN ('killed', 'closed')
|
|
639
|
+
)
|
|
640
|
+
AND (next_attempt_at IS NULL OR next_attempt_at <= ?)
|
|
641
|
+
-- A WITHDRAWN update is not pending. Derived from the withdrawal record rather than a
|
|
642
|
+
-- flag on the row, so there is one fact in one place: without this the delivery worker
|
|
643
|
+
-- ships the very update the operator just withdrew.
|
|
644
|
+
--
|
|
645
|
+
-- The table is created by DocumentLifecycle, which may not have run — a store used
|
|
646
|
+
-- without it is a legitimate configuration — so the reference is guarded rather than
|
|
647
|
+
-- assumed. A missing table would otherwise throw here and take the whole delivery pass
|
|
648
|
+
-- down with it.
|
|
649
|
+
AND NOT EXISTS (
|
|
650
|
+
SELECT 1 FROM document_withdrawals w
|
|
651
|
+
WHERE w.owner_agent_id = document_envelopes.owner_agent_id
|
|
652
|
+
AND w.document_id = document_envelopes.document_id
|
|
653
|
+
AND w.envelope_hash = document_envelopes.envelope_hash
|
|
654
|
+
)
|
|
655
|
+
-- log_index is PER DOCUMENT, so it alone is not a total order across documents and the
|
|
656
|
+
-- bounded window could be filled by one document's backlog forever. The tiebreaks make
|
|
657
|
+
-- the window deterministic; the no-peer branch scheduling its rows is what stops one
|
|
658
|
+
-- document monopolising it.
|
|
659
|
+
ORDER BY log_index ASC, document_id ASC, envelope_hash ASC LIMIT ?`)
|
|
660
|
+
.all(ownerAgentId, senderAgentId, nowMs, limit);
|
|
661
|
+
return rows.map(toEnvelopeRow);
|
|
662
|
+
}
|
|
663
|
+
/** Mark an attempt: bumps the counter and schedules the next one. Returns the new count. */
|
|
664
|
+
recordDeliveryAttempt(ownerAgentId, documentId, envelopeHash, nextAttemptAtMs) {
|
|
665
|
+
this.#db
|
|
666
|
+
.prepare(`UPDATE document_envelopes
|
|
667
|
+
SET attempts = attempts + 1, next_attempt_at = ?
|
|
668
|
+
WHERE owner_agent_id = ? AND document_id = ? AND envelope_hash = ?`)
|
|
669
|
+
.run(nextAttemptAtMs, ownerAgentId, documentId, envelopeHash);
|
|
670
|
+
const r = this.#db
|
|
671
|
+
.prepare(`SELECT attempts FROM document_envelopes
|
|
672
|
+
WHERE owner_agent_id = ? AND document_id = ? AND envelope_hash = ?`)
|
|
673
|
+
.get(ownerAgentId, documentId, envelopeHash);
|
|
674
|
+
return r?.attempts ?? 0;
|
|
675
|
+
}
|
|
676
|
+
/** Record that the envelope left. Not an ack — the peer has not answered yet. */
|
|
677
|
+
markDelivered(ownerAgentId, documentId, envelopeHash, nowMs) {
|
|
678
|
+
const info = this.#db
|
|
679
|
+
.prepare(`UPDATE document_envelopes SET delivered_at = COALESCE(delivered_at, ?)
|
|
680
|
+
WHERE owner_agent_id = ? AND document_id = ? AND envelope_hash = ?`)
|
|
681
|
+
.run(nowMs, ownerAgentId, documentId, envelopeHash);
|
|
682
|
+
return Number(info.changes) > 0;
|
|
683
|
+
}
|
|
684
|
+
/** Record that the peer acknowledged. Idempotent — a redelivered ack must not move the clock. */
|
|
685
|
+
markAcked(ownerAgentId, documentId, envelopeHash, nowMs) {
|
|
686
|
+
const info = this.#db
|
|
687
|
+
.prepare(`UPDATE document_envelopes SET acked_at = ?, delivered_at = COALESCE(delivered_at, ?)
|
|
688
|
+
WHERE owner_agent_id = ? AND document_id = ? AND envelope_hash = ? AND acked_at IS NULL`)
|
|
689
|
+
.run(nowMs, nowMs, ownerAgentId, documentId, envelopeHash);
|
|
690
|
+
return Number(info.changes) > 0;
|
|
691
|
+
}
|
|
692
|
+
/** Record a rejection the PEER sent us. Returns whether a row was written (idempotent by leaf). */
|
|
693
|
+
recordRejectionReceived(ownerAgentId, row) {
|
|
694
|
+
const info = this.#db
|
|
695
|
+
.prepare(`INSERT INTO document_rejections_received
|
|
696
|
+
(owner_agent_id, document_id, rejection_envelope_hash, rejected_envelope_hash,
|
|
697
|
+
from_agent_id, reason, detail, created_at)
|
|
698
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
699
|
+
ON CONFLICT (owner_agent_id, document_id, rejection_envelope_hash) DO NOTHING`)
|
|
700
|
+
.run(ownerAgentId, row.documentId, row.rejectionEnvelopeHash, row.rejectedEnvelopeHash, row.fromAgentId, row.reason, row.detail ?? null, row.createdAtMs);
|
|
701
|
+
return Number(info.changes) > 0;
|
|
702
|
+
}
|
|
703
|
+
/** How many rejections this document has RECEIVED — the publishing side's retry round. */
|
|
704
|
+
countRejectionsReceived(ownerAgentId, documentId) {
|
|
705
|
+
const r = this.#db
|
|
706
|
+
.prepare(`SELECT COUNT(*) AS n FROM document_rejections_received
|
|
707
|
+
WHERE owner_agent_id = ? AND document_id = ?`)
|
|
708
|
+
.get(ownerAgentId, documentId);
|
|
709
|
+
return r?.n ?? 0;
|
|
710
|
+
}
|
|
711
|
+
/**
|
|
712
|
+
* Was a rejection received for THIS envelope? Envelope-scoped on purpose: the document-scoped
|
|
713
|
+
* reader below answers a different question, and using it to decide whether one envelope was
|
|
714
|
+
* refused makes a rejection of any OTHER envelope in the document look like a rejection of this
|
|
715
|
+
* one.
|
|
716
|
+
*/
|
|
717
|
+
rejectionReceivedFor(ownerAgentId, documentId, envelopeHash) {
|
|
718
|
+
const r = this.#db
|
|
719
|
+
.prepare(`SELECT 1 AS present FROM document_rejections_received
|
|
720
|
+
WHERE owner_agent_id = ? AND document_id = ? AND rejected_envelope_hash = ? LIMIT 1`)
|
|
721
|
+
.get(ownerAgentId, documentId, envelopeHash);
|
|
722
|
+
return r?.present === 1;
|
|
723
|
+
}
|
|
724
|
+
/** The most recently received rejection, for the reason an operator is shown on a stall. */
|
|
725
|
+
latestRejectionReceived(ownerAgentId, documentId) {
|
|
726
|
+
const r = this.#db
|
|
727
|
+
.prepare(`SELECT reason, detail, from_agent_id FROM document_rejections_received
|
|
728
|
+
WHERE owner_agent_id = ? AND document_id = ? ORDER BY created_at DESC, rowid DESC LIMIT 1`)
|
|
729
|
+
.get(ownerAgentId, documentId);
|
|
730
|
+
if (!r)
|
|
731
|
+
return null;
|
|
732
|
+
return {
|
|
733
|
+
reason: r["reason"],
|
|
734
|
+
detail: r["detail"] ?? undefined,
|
|
735
|
+
fromAgentId: r["from_agent_id"],
|
|
736
|
+
};
|
|
737
|
+
}
|
|
738
|
+
/**
|
|
739
|
+
* How many rejection records this document carries, PER REJECTING AGENT — the retry round.
|
|
740
|
+
*
|
|
741
|
+
* Scoped by author, because a mutual exchange puts both directions' 0x05 leaves in one document
|
|
742
|
+
* log. Counting across senders conflated them, so two peers each rejecting once read as round 2
|
|
743
|
+
* and the document stalled at half the intended rounds.
|
|
744
|
+
*/
|
|
745
|
+
countRejections(ownerAgentId, documentId, rejectingAgentId) {
|
|
746
|
+
const r = this.#db
|
|
747
|
+
.prepare(`SELECT COUNT(*) AS n FROM document_envelopes
|
|
748
|
+
WHERE owner_agent_id = ? AND document_id = ? AND kind = 'rejection'
|
|
749
|
+
AND sender_agent_id = ?`)
|
|
750
|
+
.get(ownerAgentId, documentId, rejectingAgentId);
|
|
751
|
+
return r?.n ?? 0;
|
|
752
|
+
}
|
|
300
753
|
// ─── the snapshot (disposable) ────────────────────────────────────────────
|
|
301
754
|
getSnapshot(ownerAgentId, documentId) {
|
|
302
755
|
const r = this.#db
|
|
@@ -383,9 +836,14 @@ function toEnvelopeRow(r) {
|
|
|
383
836
|
stateVector: toU8(r["state_vector"]),
|
|
384
837
|
payload: payload === null || payload === undefined ? null : toU8(payload),
|
|
385
838
|
kind: r["kind"],
|
|
839
|
+
senderClientId: r["sender_client_id"] ?? null,
|
|
386
840
|
referencesEnvelopeHash: r["references_hash"] ?? null,
|
|
387
841
|
createdAtMs: r["created_at"],
|
|
388
842
|
logIndex: r["log_index"],
|
|
843
|
+
deliveredAtMs: r["delivered_at"] ?? null,
|
|
844
|
+
ackedAtMs: r["acked_at"] ?? null,
|
|
845
|
+
attempts: r["attempts"] ?? 0,
|
|
846
|
+
nextAttemptAtMs: r["next_attempt_at"] ?? null,
|
|
389
847
|
};
|
|
390
848
|
}
|
|
391
849
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-store.js","sourceRoot":"","sources":["../src/document-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"document-store.js","sourceRoot":"","sources":["../src/document-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-write-path.d.ts","sourceRoot":"","sources":["../src/document-write-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"document-write-path.d.ts","sourceRoot":"","sources":["../src/document-write-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAazC,MAAM,MAAM,oBAAoB,GAC5B,uBAAuB,GACvB,2BAA2B,GAC3B,qBAAqB,GACrB,oCAAoC,GACpC,6BAA6B,GAC7B,0BAA0B,GAC1B,2BAA2B,GAC3B,qBAAqB,CAAC;AAE1B,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBACZ,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM;CAMzD;AAED,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,iBAAiB;;IAC5B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;gBAIpB,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMzE;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAO3E,kFAAkF;IAC5E,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAUzG;;;;;;OAMG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IA0ChH,+EAA+E;IACzE,KAAK,CACT,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,CAAC,CAAC,GAAG,EACV,QAAQ,EAAE,UAAU,GACnB,OAAO,CAAC,WAAW,CAAC;CAySxB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBrD"}
|