@cello-protocol/daemon 0.0.161 → 0.0.163
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/daemon.js +15 -5
- package/dist/daemon.js.map +1 -1
- package/dist/document-ack-inbound.d.ts +8 -1
- package/dist/document-ack-inbound.d.ts.map +1 -1
- package/dist/document-ack-inbound.js +31 -8
- package/dist/document-ack-inbound.js.map +1 -1
- package/dist/document-amendment-store.d.ts +72 -0
- package/dist/document-amendment-store.d.ts.map +1 -0
- package/dist/document-amendment-store.js +151 -0
- package/dist/document-amendment-store.js.map +1 -0
- package/dist/document-control-notifier.d.ts +29 -0
- package/dist/document-control-notifier.d.ts.map +1 -1
- package/dist/document-control-notifier.js +62 -6
- package/dist/document-control-notifier.js.map +1 -1
- package/dist/document-delivery-transport.d.ts +2 -1
- package/dist/document-delivery-transport.d.ts.map +1 -1
- package/dist/document-delivery-transport.js +1 -1
- package/dist/document-delivery-transport.js.map +1 -1
- package/dist/document-delivery.d.ts +6 -1
- package/dist/document-delivery.d.ts.map +1 -1
- package/dist/document-delivery.js +167 -201
- package/dist/document-delivery.js.map +1 -1
- package/dist/document-frame-router.d.ts +15 -1
- package/dist/document-frame-router.d.ts.map +1 -1
- package/dist/document-frame-router.js +22 -1
- package/dist/document-frame-router.js.map +1 -1
- package/dist/document-gate.js +1 -1
- package/dist/document-gate.js.map +1 -1
- package/dist/document-handlers.d.ts.map +1 -1
- package/dist/document-handlers.js +649 -5
- package/dist/document-handlers.js.map +1 -1
- package/dist/document-handshake.d.ts +13 -0
- package/dist/document-handshake.d.ts.map +1 -1
- package/dist/document-handshake.js +24 -0
- package/dist/document-handshake.js.map +1 -1
- package/dist/document-inbound.d.ts +12 -0
- package/dist/document-inbound.d.ts.map +1 -1
- package/dist/document-inbound.js +141 -10
- package/dist/document-inbound.js.map +1 -1
- package/dist/document-join-store.d.ts +80 -0
- package/dist/document-join-store.d.ts.map +1 -0
- package/dist/document-join-store.js +197 -0
- package/dist/document-join-store.js.map +1 -0
- package/dist/document-layer.d.ts +52 -2
- package/dist/document-layer.d.ts.map +1 -1
- package/dist/document-layer.js +457 -12
- package/dist/document-layer.js.map +1 -1
- package/dist/document-lifecycle.d.ts +32 -1
- package/dist/document-lifecycle.d.ts.map +1 -1
- package/dist/document-lifecycle.js +88 -20
- package/dist/document-lifecycle.js.map +1 -1
- package/dist/document-publish.d.ts +7 -0
- package/dist/document-publish.d.ts.map +1 -1
- package/dist/document-publish.js +20 -4
- package/dist/document-publish.js.map +1 -1
- package/dist/document-rejection.js +1 -1
- package/dist/document-rejection.js.map +1 -1
- package/dist/document-store.d.ts +97 -4
- package/dist/document-store.d.ts.map +1 -1
- package/dist/document-store.js +335 -21
- package/dist/document-store.js.map +1 -1
- package/dist/vocabulary.d.ts.map +1 -1
- package/dist/vocabulary.js +2 -0
- package/dist/vocabulary.js.map +1 -1
- package/package.json +5 -5
|
@@ -26,10 +26,31 @@
|
|
|
26
26
|
*/
|
|
27
27
|
import type { DocumentStore } from "./document-store.js";
|
|
28
28
|
import type { Logger } from "./types.js";
|
|
29
|
+
/**
|
|
30
|
+
* Who currently holds this document, derived from the chain — the INBOUND authorization gate.
|
|
31
|
+
*
|
|
32
|
+
* DOD-MP-CONTROL-N-1 fixed the outbound half first and that was only half the defect: the
|
|
33
|
+
* receiving side still authorized a `close`/`kill` by `sender === doc.peerAgentId`, the same
|
|
34
|
+
* genesis column. Two ordinary-command consequences, no rewritten daemon required:
|
|
35
|
+
*
|
|
36
|
+
* - **A REMOVED holder could still end the creator's document.** A created with B, invited C,
|
|
37
|
+
* removed B. A's `peerAgentId` is still B, so B's kill was accepted by A and refused by C —
|
|
38
|
+
* the two operators left in different states by a party who holds no rights at all.
|
|
39
|
+
* - **A JOINER's end reached nobody.** With {A, B, C}, C's close is now correctly addressed to
|
|
40
|
+
* both, and BOTH refused it, because C is neither one's `peerAgentId`. The sender was told
|
|
41
|
+
* everyone heard them while nothing was recorded anywhere.
|
|
42
|
+
*
|
|
43
|
+
* Returns null when the chain cannot answer, which is NOT an empty list: "nobody holds this" and
|
|
44
|
+
* "this cannot be answered" are different facts. On null the row's peer column stands in, exactly
|
|
45
|
+
* as `document-inbound.ts` does for update envelopes — that is the bilateral-legacy path, not a
|
|
46
|
+
* fallback for convenience.
|
|
47
|
+
*/
|
|
48
|
+
export type CurrentHolders = (ownerAgentId: string, documentId: string) => readonly string[] | null;
|
|
29
49
|
/** How the peer is told about a unilateral end. Injected — the transport is not this unit's. */
|
|
30
50
|
export interface LifecycleNotifier {
|
|
31
51
|
notifyPeer(documentId: string, verb: "kill" | "close"): Promise<{
|
|
32
52
|
ok: true;
|
|
53
|
+
holdersNotified: Record<string, boolean>;
|
|
33
54
|
} | {
|
|
34
55
|
ok: false;
|
|
35
56
|
reason: string;
|
|
@@ -82,12 +103,21 @@ export declare class DocumentLifecycle {
|
|
|
82
103
|
} | {
|
|
83
104
|
ok: false;
|
|
84
105
|
reason: string;
|
|
85
|
-
}, senderAgentId?: (ownerAgentId: string) => string
|
|
106
|
+
}, senderAgentId?: (ownerAgentId: string) => string,
|
|
107
|
+
/**
|
|
108
|
+
* The inbound authorization gate (DOD-MP-CONTROL-N-1). Defaults to "cannot answer", which
|
|
109
|
+
* routes to the `peerAgentId` check — the pre-multiplayer behaviour — so a caller that has not
|
|
110
|
+
* been wired yet is bilateral-correct rather than open. It is NOT defaulted to a permissive
|
|
111
|
+
* answer: a membership gate whose default admits everyone is worse than no gate, because it
|
|
112
|
+
* reads as one.
|
|
113
|
+
*/
|
|
114
|
+
currentHolders?: CurrentHolders);
|
|
86
115
|
list(ownerAgentId: string, nowMs: number): DocumentListRow[];
|
|
87
116
|
/** Our half of a bilateral close. Completes only when the peer's half is also on record. */
|
|
88
117
|
close(ownerAgentId: string, documentId: string, nowMs: number): Promise<(Verdict & {
|
|
89
118
|
ok: true;
|
|
90
119
|
peerNotified: boolean;
|
|
120
|
+
holdersNotified: Record<string, boolean>;
|
|
91
121
|
notifyReason?: string;
|
|
92
122
|
notifyDetail?: string;
|
|
93
123
|
}) | (Verdict & {
|
|
@@ -114,6 +144,7 @@ export declare class DocumentLifecycle {
|
|
|
114
144
|
kill(ownerAgentId: string, documentId: string, nowMs: number): Promise<{
|
|
115
145
|
ok: true;
|
|
116
146
|
peerNotified: boolean;
|
|
147
|
+
holdersNotified: Record<string, boolean>;
|
|
117
148
|
note: string;
|
|
118
149
|
notifyReason?: string;
|
|
119
150
|
notifyDetail?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-lifecycle.d.ts","sourceRoot":"","sources":["../src/document-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"document-lifecycle.d.ts","sourceRoot":"","sources":["../src/document-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,18 @@
|
|
|
24
24
|
* their doing; refusing outbound silently would leave the operator writing into a document that is
|
|
25
25
|
* going nowhere, with their work piling up locally and no sign anything is wrong.
|
|
26
26
|
*/
|
|
27
|
+
/**
|
|
28
|
+
* "Did every holder hear it?" — and NO on an empty map.
|
|
29
|
+
*
|
|
30
|
+
* `[].every(…)` is `true`, so folding an empty fan-out with `every` alone reports that everybody
|
|
31
|
+
* was notified precisely when nobody was. The notifier refuses a holder-less document by name, so
|
|
32
|
+
* this is the second line rather than the first, but the vacuous-truth reading is the one that
|
|
33
|
+
* would surface to an operator as a clean close that told no one.
|
|
34
|
+
*/
|
|
35
|
+
function everyHolderNotified(ok, holders) {
|
|
36
|
+
const told = Object.values(holders ?? {});
|
|
37
|
+
return ok && told.length > 0 && told.every((v) => v);
|
|
38
|
+
}
|
|
27
39
|
const CREATE_LIFECYCLE_SQL = `
|
|
28
40
|
CREATE TABLE IF NOT EXISTS document_closes (
|
|
29
41
|
owner_agent_id TEXT NOT NULL,
|
|
@@ -78,18 +90,39 @@ export class DocumentLifecycle {
|
|
|
78
90
|
*/
|
|
79
91
|
#senderAgentId;
|
|
80
92
|
#rollback;
|
|
93
|
+
#currentHolders;
|
|
94
|
+
/**
|
|
95
|
+
* May this sender end this document? Derived membership is the WHOLE gate when the chain
|
|
96
|
+
* derives — a joined third holder's close is as admissible as the genesis peer's, and a removed
|
|
97
|
+
* holder's is not admissible at all. The peer column stands in only when the chain cannot
|
|
98
|
+
* answer. Mirrors `document-inbound.ts`'s sender gate deliberately; two different answers to
|
|
99
|
+
* "is this agent a party to this document" is how the two paths drift apart.
|
|
100
|
+
*/
|
|
101
|
+
#senderMayEnd(ownerAgentId, documentId, senderAgentId, peerAgentId) {
|
|
102
|
+
const holders = this.#currentHolders(ownerAgentId, documentId);
|
|
103
|
+
return holders === null ? senderAgentId === peerAgentId : holders.includes(senderAgentId);
|
|
104
|
+
}
|
|
81
105
|
constructor(store, logger, notifier,
|
|
82
106
|
/**
|
|
83
107
|
* Undo one envelope's operations on the LIVE document, as inverses. Injected because the live
|
|
84
108
|
* `Y.Doc` and its UndoManager belong to the engine, not here — and REQUIRED, because a default
|
|
85
109
|
* that quietly did nothing would restore exactly the defect this argument exists to fix.
|
|
86
110
|
*/
|
|
87
|
-
rollback, senderAgentId = (id) => id
|
|
111
|
+
rollback, senderAgentId = (id) => id,
|
|
112
|
+
/**
|
|
113
|
+
* The inbound authorization gate (DOD-MP-CONTROL-N-1). Defaults to "cannot answer", which
|
|
114
|
+
* routes to the `peerAgentId` check — the pre-multiplayer behaviour — so a caller that has not
|
|
115
|
+
* been wired yet is bilateral-correct rather than open. It is NOT defaulted to a permissive
|
|
116
|
+
* answer: a membership gate whose default admits everyone is worse than no gate, because it
|
|
117
|
+
* reads as one.
|
|
118
|
+
*/
|
|
119
|
+
currentHolders = () => null) {
|
|
88
120
|
this.#store = store;
|
|
89
121
|
this.#logger = logger;
|
|
90
122
|
this.#notifier = notifier;
|
|
91
123
|
this.#rollback = rollback;
|
|
92
124
|
this.#senderAgentId = senderAgentId;
|
|
125
|
+
this.#currentHolders = currentHolders;
|
|
93
126
|
this.#store.rawDb.exec(CREATE_LIFECYCLE_SQL);
|
|
94
127
|
}
|
|
95
128
|
list(ownerAgentId, nowMs) {
|
|
@@ -101,9 +134,9 @@ export class DocumentLifecycle {
|
|
|
101
134
|
const c = pendingByDocument.get(e.documentId) ?? { total: 0, sent: 0 };
|
|
102
135
|
c.total += 1;
|
|
103
136
|
// SPLIT, because "sent, awaiting confirmation" and "never left this machine" are different
|
|
104
|
-
// things to tell an operator asking why their work has not landed
|
|
105
|
-
//
|
|
106
|
-
if (e.deliveredAtMs != null)
|
|
137
|
+
// things to tell an operator asking why their work has not landed. FANOUT-1: the fact
|
|
138
|
+
// moved to the per-holder rows — "sent" means it reached AT LEAST ONE holder's wire.
|
|
139
|
+
if (e.deliveredAtMs != null || this.#store.envelopeEverSent(ownerAgentId, e.envelopeHash))
|
|
107
140
|
c.sent += 1;
|
|
108
141
|
pendingByDocument.set(e.documentId, c);
|
|
109
142
|
}
|
|
@@ -112,8 +145,14 @@ export class DocumentLifecycle {
|
|
|
112
145
|
documentId: d.documentId,
|
|
113
146
|
peerAgentId: d.peerAgentId,
|
|
114
147
|
documentType: d.documentType,
|
|
148
|
+
// DOD-MP-REMOVE-1 — display overlay, derived: a removed holder's row still says active in
|
|
149
|
+
// the table (removal is a chain fact, not a stored flag), and a list that said "active"
|
|
150
|
+
// would be the surface claiming more than forward-only allows.
|
|
151
|
+
...(this.#store.removedFromArrangement(ownerAgentId, d.documentId).removed
|
|
152
|
+
? { removed: true }
|
|
153
|
+
: {}),
|
|
115
154
|
assuranceTier: "authenticated",
|
|
116
|
-
epochId:
|
|
155
|
+
epochId: this.#store.currentDocumentEpoch(ownerAgentId, d.documentId),
|
|
117
156
|
status: d.status,
|
|
118
157
|
pendingDeliveries: pendingByDocument.get(d.documentId)?.total ?? 0,
|
|
119
158
|
pendingSent: pendingByDocument.get(d.documentId)?.sent ?? 0,
|
|
@@ -145,13 +184,19 @@ export class DocumentLifecycle {
|
|
|
145
184
|
});
|
|
146
185
|
}
|
|
147
186
|
this.#settleClose(ownerAgentId, documentId, doc.peerAgentId);
|
|
148
|
-
|
|
187
|
+
const holdersNotified = notified.ok ? notified.holdersNotified : {};
|
|
188
|
+
// EVERY current holder, not "the send returned ok" — with N holders a partial fan-out is the
|
|
189
|
+
// normal failure and one boolean cannot describe it. The map is the precise answer; this stays
|
|
190
|
+
// as the summary a caller can branch on.
|
|
191
|
+
const allNotified = everyHolderNotified(notified.ok, holdersNotified);
|
|
192
|
+
this.#logger.info("document.close.requested", { documentId, peerNotified: allNotified, holdersNotified });
|
|
149
193
|
// THE REASON TRAVELS. It used to stop here, so one guidance string covered a transport failure,
|
|
150
194
|
// a missing signing key and a wiring fault — and it told the operator to wait for their peer,
|
|
151
195
|
// which only helps for the first of the three.
|
|
152
196
|
return {
|
|
153
197
|
ok: true,
|
|
154
|
-
peerNotified:
|
|
198
|
+
peerNotified: allNotified,
|
|
199
|
+
holdersNotified,
|
|
155
200
|
...(notified.ok ? {} : { notifyReason: notified.reason, notifyDetail: notified.detail }),
|
|
156
201
|
};
|
|
157
202
|
}
|
|
@@ -167,12 +212,15 @@ export class DocumentLifecycle {
|
|
|
167
212
|
detail: `no document ${documentId.slice(0, 16)}… for this agent`,
|
|
168
213
|
};
|
|
169
214
|
}
|
|
170
|
-
if (peerAgentId
|
|
171
|
-
// THE
|
|
215
|
+
if (!this.#senderMayEnd(ownerAgentId, documentId, peerAgentId, doc.peerAgentId)) {
|
|
216
|
+
// THE PARTY GUARANTEE. The closer id came from the caller and was written as `closed_by`
|
|
172
217
|
// and settled against ITSELF, so any second distinct string — a stale contact id, a
|
|
173
218
|
// pubkey-vs-name mismatch, a hostile session — plus our own close flipped the document to
|
|
174
219
|
// closed. The whole point of recording WHO closed is defeated if who is never checked.
|
|
175
|
-
|
|
220
|
+
//
|
|
221
|
+
// The check is now MEMBERSHIP, not identity-with-one-peer: a joiner is a party and their
|
|
222
|
+
// close must count, a removed holder is not and theirs must not.
|
|
223
|
+
this.#logger.warn("document.close.not_holder", {
|
|
176
224
|
documentId,
|
|
177
225
|
claimedBy: peerAgentId,
|
|
178
226
|
peerAgentId: doc.peerAgentId,
|
|
@@ -180,13 +228,16 @@ export class DocumentLifecycle {
|
|
|
180
228
|
return {
|
|
181
229
|
ok: false,
|
|
182
230
|
reason: "document_close_not_peer",
|
|
183
|
-
detail: `${peerAgentId}
|
|
184
|
-
`
|
|
231
|
+
detail: `${peerAgentId} does not currently hold this document, so their close is not one of the ` +
|
|
232
|
+
`halves that can settle it`,
|
|
185
233
|
};
|
|
186
234
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
235
|
+
// RECORDED AGAINST THE SENDER, not against `doc.peerAgentId`. Writing the peer column here
|
|
236
|
+
// credited a joiner's close to the genesis peer — the wrong name on the record, and with two
|
|
237
|
+
// joiners closing it would settle twice against one identity.
|
|
238
|
+
this.#recordClose(ownerAgentId, documentId, peerAgentId, nowMs);
|
|
239
|
+
this.#settleClose(ownerAgentId, documentId, peerAgentId);
|
|
240
|
+
this.#logger.info("document.close.peer_requested", { documentId, peerAgentId });
|
|
190
241
|
return { ok: true };
|
|
191
242
|
}
|
|
192
243
|
/**
|
|
@@ -209,8 +260,8 @@ export class DocumentLifecycle {
|
|
|
209
260
|
detail: `no document ${documentId.slice(0, 16)}… for this agent`,
|
|
210
261
|
};
|
|
211
262
|
}
|
|
212
|
-
if (peerAgentId
|
|
213
|
-
this.#logger.warn("document.kill.
|
|
263
|
+
if (!this.#senderMayEnd(ownerAgentId, documentId, peerAgentId, doc.peerAgentId)) {
|
|
264
|
+
this.#logger.warn("document.kill.not_holder", {
|
|
214
265
|
documentId,
|
|
215
266
|
claimedBy: peerAgentId,
|
|
216
267
|
peerAgentId: doc.peerAgentId,
|
|
@@ -218,7 +269,7 @@ export class DocumentLifecycle {
|
|
|
218
269
|
return {
|
|
219
270
|
ok: false,
|
|
220
271
|
reason: "document_kill_not_peer",
|
|
221
|
-
detail: `${peerAgentId}
|
|
272
|
+
detail: `${peerAgentId} does not currently hold this document, so their kill is not theirs to make`,
|
|
222
273
|
};
|
|
223
274
|
}
|
|
224
275
|
void nowMs;
|
|
@@ -259,10 +310,13 @@ export class DocumentLifecycle {
|
|
|
259
310
|
detail: notified.detail ?? "",
|
|
260
311
|
});
|
|
261
312
|
}
|
|
262
|
-
|
|
313
|
+
const holdersNotified = notified.ok ? notified.holdersNotified : {};
|
|
314
|
+
const allNotified = everyHolderNotified(notified.ok, holdersNotified);
|
|
315
|
+
this.#logger.info("document.killed", { documentId, peerNotified: allNotified, holdersNotified });
|
|
263
316
|
return {
|
|
264
317
|
ok: true,
|
|
265
|
-
peerNotified:
|
|
318
|
+
peerNotified: allNotified,
|
|
319
|
+
holdersNotified,
|
|
266
320
|
note: "this document no longer accepts or publishes updates, and your local copy and log are " +
|
|
267
321
|
"retained. Your peer keeps what it holds — a kill stops the collaboration, it does not " +
|
|
268
322
|
"retract content they already have.",
|
|
@@ -381,6 +435,20 @@ export class DocumentLifecycle {
|
|
|
381
435
|
if (doc.status === "killed") {
|
|
382
436
|
return { ok: false, reason: "document_killed", detail: "this document was ended locally" };
|
|
383
437
|
}
|
|
438
|
+
// DOD-MP-REMOVE-1, forward-only — DERIVED from the amendment chain, never a stored flag:
|
|
439
|
+
// the copy is theirs (reading, the file, the history all remain), but publishing into an
|
|
440
|
+
// arrangement that no longer includes them would only be refused by every holder, so it is
|
|
441
|
+
// refused here first, naming the actual condition and the epoch it happened at.
|
|
442
|
+
const membership = this.#store.removedFromArrangement(ownerAgentId, documentId);
|
|
443
|
+
if (membership.removed) {
|
|
444
|
+
return {
|
|
445
|
+
ok: false,
|
|
446
|
+
reason: "document_removed",
|
|
447
|
+
detail: `you were removed from this document's arrangement at epoch ${membership.epochId} — ` +
|
|
448
|
+
`your copy and its history remain yours, but new edits no longer publish to the ` +
|
|
449
|
+
`other holders`,
|
|
450
|
+
};
|
|
451
|
+
}
|
|
384
452
|
if (doc.status === "stalled") {
|
|
385
453
|
// REJECT-1 stalls a document after its retry rounds. A stalled document has stopped
|
|
386
454
|
// converging, so publishing into it is the same lie as publishing into a killed one — and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-lifecycle.js","sourceRoot":"","sources":["../src/document-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"document-lifecycle.js","sourceRoot":"","sources":["../src/document-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,6 +52,13 @@ export interface DocumentPublishDeps {
|
|
|
52
52
|
reason: string;
|
|
53
53
|
detail: string;
|
|
54
54
|
};
|
|
55
|
+
/**
|
|
56
|
+
* M14B / FANOUT-1 — the CURRENT derived holders. Null means the chain does not derive, and a
|
|
57
|
+
* publish that cannot name its targets REFUSES rather than appending an envelope nothing will
|
|
58
|
+
* ever deliver (an un-seeded envelope is invisible work — the exact silent failure the
|
|
59
|
+
* envelope-first rule exists to prevent, arriving through the other door).
|
|
60
|
+
*/
|
|
61
|
+
holdersFor(ownerAgentId: string, documentId: string): string[] | null;
|
|
55
62
|
}
|
|
56
63
|
export declare class DocumentPublish {
|
|
57
64
|
#private;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-publish.d.ts","sourceRoot":"","sources":["../src/document-publish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"document-publish.d.ts","sourceRoot":"","sources":["../src/document-publish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC;AAO9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACjE,gGAAgG;IAChG,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACjD,wFAAwF;IACxF,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACnH;;;;;OAKG;IACH,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;CACvE;AAQD,qBAAa,eAAe;;gBAGd,IAAI,EAAE,mBAAmB;IAIrC;;;;;OAKG;IACG,OAAO,CACX,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,CAAC,CAAC,GAAG,EACV,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,CAAC;CA8H1B"}
|
package/dist/document-publish.js
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* wrong link is not a soft failure: the peer refuses it and, if it is ever replayed locally, the
|
|
24
24
|
* document stops rebuilding.
|
|
25
25
|
*/
|
|
26
|
-
import { buildDocumentUpdateTbs, documentEnvelopeHash,
|
|
26
|
+
import { buildDocumentUpdateTbs, documentEnvelopeHash, DOCUMENT_UPDATE_ENCODING_V1, } from "@cello-protocol/protocol-types";
|
|
27
27
|
function equalBytes(a, b) {
|
|
28
28
|
if (a.length !== b.length)
|
|
29
29
|
return false;
|
|
@@ -96,7 +96,9 @@ export class DocumentPublish {
|
|
|
96
96
|
const envelope = {
|
|
97
97
|
type: "document_update",
|
|
98
98
|
document_id: documentId,
|
|
99
|
-
|
|
99
|
+
// The CURRENT epoch from the recorded amendment chain (M14B / DOD-MP-AMEND-1) — the
|
|
100
|
+
// constant-0 era ends the moment a document's first amendment lands.
|
|
101
|
+
epoch_id: this.#d.store.currentDocumentEpoch(ownerAgentId, documentId),
|
|
100
102
|
// READ, never cached. Anything else appended since — a rejection, a withdrawal — moves this,
|
|
101
103
|
// and a wrong link is refused by the peer and stops the document rebuilding locally.
|
|
102
104
|
doc_prev_hash: this.#d.store.lastEnvelopeHashBySender(ownerAgentId, documentId, senderId),
|
|
@@ -107,9 +109,23 @@ export class DocumentPublish {
|
|
|
107
109
|
update,
|
|
108
110
|
signature: new Uint8Array(0),
|
|
109
111
|
};
|
|
112
|
+
// TARGETS BEFORE THE ENVELOPE: a publish that cannot name its holders refuses before it
|
|
113
|
+
// writes, because an appended-but-unseeded envelope is invisible work nothing will deliver.
|
|
114
|
+
const holders = this.#d.holdersFor(ownerAgentId, documentId);
|
|
115
|
+
if (holders === null) {
|
|
116
|
+
return {
|
|
117
|
+
ok: false,
|
|
118
|
+
reason: "document_chain_invalid",
|
|
119
|
+
detail: "this document's arrangement does not derive from its recorded chain — nothing can be " +
|
|
120
|
+
"published until it does; see document.holders.underivable in the log",
|
|
121
|
+
};
|
|
122
|
+
}
|
|
110
123
|
envelope.signature = await this.#d.sign(ownerAgentId, buildDocumentUpdateTbs(envelope));
|
|
111
124
|
const envelopeHash = documentEnvelopeHash(envelope);
|
|
112
|
-
|
|
125
|
+
// ONE TRANSACTION (review M5): a crash between the append and the seed left an envelope
|
|
126
|
+
// in the log with zero delivery rows, and the bilateral backfill would re-seed only the
|
|
127
|
+
// genesis peer — every other holder silently never receiving it, forever.
|
|
128
|
+
const appended = this.#d.store.appendEnvelopeWithDeliveries(ownerAgentId, {
|
|
113
129
|
envelopeHash,
|
|
114
130
|
documentId,
|
|
115
131
|
senderAgentId: senderId,
|
|
@@ -124,7 +140,7 @@ export class DocumentPublish {
|
|
|
124
140
|
// inbound path stores for their envelopes.
|
|
125
141
|
senderClientId: doc.clientID,
|
|
126
142
|
createdAtMs: nowMs,
|
|
127
|
-
});
|
|
143
|
+
}, holders.filter((h) => h !== senderId), nowMs);
|
|
128
144
|
if (!appended) {
|
|
129
145
|
// The same content published twice hashes the same, so this is a genuine no-op rather than a
|
|
130
146
|
// fault — but it is reported, because a caller that believes it published something new and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-publish.js","sourceRoot":"","sources":["../src/document-publish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"document-publish.js","sourceRoot":"","sources":["../src/document-publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -142,7 +142,7 @@ export class DocumentRejections {
|
|
|
142
142
|
documentId,
|
|
143
143
|
senderAgentId: agentId, // WE authored the rejection, whoever authored the update
|
|
144
144
|
docPrevHash: this.#store.lastEnvelopeHashBySender(agentId, documentId, agentId),
|
|
145
|
-
epochId:
|
|
145
|
+
epochId: this.#store.currentDocumentEpoch(agentId, documentId),
|
|
146
146
|
signature: envelope.signature,
|
|
147
147
|
// A ONE-BYTE PLACEHOLDER, and it has to be — an empty blob here THREW on the real driver.
|
|
148
148
|
//
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-rejection.js","sourceRoot":"","sources":["../src/document-rejection.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"document-rejection.js","sourceRoot":"","sources":["../src/document-rejection.ts"],"names":[],"mappings":"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"}
|
package/dist/document-store.d.ts
CHANGED
|
@@ -280,6 +280,103 @@ export declare class DocumentStore {
|
|
|
280
280
|
* Scoped to `senderAgentId = ownerAgentId`: an envelope we RECEIVED is not ours to deliver, and
|
|
281
281
|
* without the scope a receiver would helpfully re-send the sender's own updates back at it.
|
|
282
282
|
*/
|
|
283
|
+
/**
|
|
284
|
+
* The document's CURRENT epoch: the head of its recorded amendment chain, 0 at genesis.
|
|
285
|
+
* Trustworthy for stamping because every append site validates (deriveArrangement) before
|
|
286
|
+
* recording — a row in document_amendments is post-validation by invariant (M14B Entry 5).
|
|
287
|
+
*/
|
|
288
|
+
/**
|
|
289
|
+
* DOD-MP-REMOVE-1 — was THIS OWNER written out of the arrangement? DERIVED from the recorded
|
|
290
|
+
* chain, never stored: a status column would need a CHECK-constraint rebuild on every operator
|
|
291
|
+
* DB, and a stored flag can drift from the chain that actually governs. Forward-only by
|
|
292
|
+
* construction — nothing here touches content.
|
|
293
|
+
*/
|
|
294
|
+
removedFromArrangement(ownerAgentId: string, documentId: string): {
|
|
295
|
+
removed: boolean;
|
|
296
|
+
epochId: number | null;
|
|
297
|
+
};
|
|
298
|
+
/** The same walk for ANY agent — the delivery worker asks it about the TARGET (F1). */
|
|
299
|
+
memberRemoved(ownerAgentId: string, documentId: string, agentId: string): {
|
|
300
|
+
removed: boolean;
|
|
301
|
+
epochId: number | null;
|
|
302
|
+
};
|
|
303
|
+
currentDocumentEpoch(ownerAgentId: string, documentId: string): number;
|
|
304
|
+
/**
|
|
305
|
+
* Append an envelope AND seed its per-holder delivery rows in ONE transaction (review M5):
|
|
306
|
+
* a crash between the two left an envelope in the log with zero rows, and the bilateral
|
|
307
|
+
* backfill would re-seed only the genesis peer — the fan-out holders silently starved.
|
|
308
|
+
* Returns the append verdict unchanged.
|
|
309
|
+
*/
|
|
310
|
+
appendEnvelopeWithDeliveries(ownerAgentId: string, envelope: DocumentEnvelopeRow, holderAgentIds: readonly string[], nowMs: number): boolean;
|
|
311
|
+
/** DOD-MP-FANOUT-1 — one pending row per CURRENT holder for a freshly published envelope. */
|
|
312
|
+
seedDeliveries(ownerAgentId: string, documentId: string, envelopeHash: string, holderAgentIds: readonly string[], nowMs: number): void;
|
|
313
|
+
/**
|
|
314
|
+
* Everything due for delivery, PER HOLDER, joined to its envelope. The window is bounded PER
|
|
315
|
+
* HOLDER (`ROW_NUMBER` over holder partitions) — one holder's backlog must never evict
|
|
316
|
+
* another's rows from the pass, which is the no_peer starvation shape multiplied by N.
|
|
317
|
+
*/
|
|
318
|
+
pendingHolderDeliveries(ownerAgentId: string, nowMs: number, opts?: {
|
|
319
|
+
perHolderLimit?: number;
|
|
320
|
+
}): Array<{
|
|
321
|
+
holderAgentId: string;
|
|
322
|
+
documentId: string;
|
|
323
|
+
attempts: number;
|
|
324
|
+
envelope: DocumentEnvelopeRow;
|
|
325
|
+
}>;
|
|
326
|
+
/** Record one holder's attempt; returns THEIR attempt count. */
|
|
327
|
+
recordHolderAttempt(ownerAgentId: string, documentId: string, envelopeHash: string, holderAgentId: string, nextAttemptAtMs: number): number;
|
|
328
|
+
/** Settle one holder's confirmation. True exactly when THIS call settled it. */
|
|
329
|
+
ackHolderDelivery(ownerAgentId: string, documentId: string, envelopeHash: string, holderAgentId: string, nowMs: number): boolean;
|
|
330
|
+
/**
|
|
331
|
+
* Retire EVERY outstanding row for one holder — our decision, announced by the caller.
|
|
332
|
+
* Returns the affected envelope hashes so the caller can reconcile the envelope-level record
|
|
333
|
+
* (an envelope whose every holder-row is settled-with-abandonment is itself abandoned).
|
|
334
|
+
*/
|
|
335
|
+
abandonHolderDeliveries(ownerAgentId: string, documentId: string, holderAgentId: string, nowMs: number): string[];
|
|
336
|
+
/** Count one REAL send (content left us — live or parked) toward this holder's ceiling. */
|
|
337
|
+
recordHolderSend(ownerAgentId: string, documentId: string, envelopeHash: string, holderAgentId: string): number;
|
|
338
|
+
/** One holder's copy LEFT the machine — the sent-vs-never-left fact, per holder. */
|
|
339
|
+
markHolderDelivered(ownerAgentId: string, documentId: string, envelopeHash: string, holderAgentId: string, nowMs: number): void;
|
|
340
|
+
/** Has ANY holder's copy of this envelope left the machine? */
|
|
341
|
+
envelopeEverSent(ownerAgentId: string, envelopeHash: string): boolean;
|
|
342
|
+
/** Reschedule one holder's retry WITHOUT counting an attempt — waiting is not sending. */
|
|
343
|
+
scheduleHolderRetry(ownerAgentId: string, documentId: string, envelopeHash: string, holderAgentId: string, nextAttemptAtMs: number): void;
|
|
344
|
+
/** Retire ONE (envelope, holder) row — the per-holder unacked ceiling's teeth. */
|
|
345
|
+
abandonSingleHolderDelivery(ownerAgentId: string, documentId: string, envelopeHash: string, holderAgentId: string, nowMs: number): void;
|
|
346
|
+
/**
|
|
347
|
+
* No holder still owes a confirmation on this envelope. TRUE with zero rows — the bilateral
|
|
348
|
+
* legacy case, where the envelope-row columns remain the record and this table has nothing to
|
|
349
|
+
* say.
|
|
350
|
+
*/
|
|
351
|
+
envelopeFullySettled(ownerAgentId: string, envelopeHash: string): boolean;
|
|
352
|
+
/**
|
|
353
|
+
* Seed per-holder rows for LEGACY bilateral envelopes: anything this agent authored that is
|
|
354
|
+
* still unacknowledged on the envelope row and has no per-holder rows yet gets one for the
|
|
355
|
+
* genesis peer. Idempotent (the PK refuses duplicates); run per pass, cheap, and journaled —
|
|
356
|
+
* pre-fan-out backlogs are near-empty at alpha, this is insurance not migration.
|
|
357
|
+
*/
|
|
358
|
+
backfillBilateralDeliveries(ownerAgentId: string, senderAgentId: string, nowMs: number): void;
|
|
359
|
+
/**
|
|
360
|
+
* THIS holder's settlement of THIS envelope — the per-acker twin of `envelopeSettlement`,
|
|
361
|
+
* with rejection attribution taken from the rejections-received rows' `from_agent_id`.
|
|
362
|
+
* Null when the holder has not answered (or has no row — the bilateral-legacy case, where the
|
|
363
|
+
* envelope-level read is the record).
|
|
364
|
+
*/
|
|
365
|
+
holderSettlement(ownerAgentId: string, envelopeHash: string, holderAgentId: string): {
|
|
366
|
+
admitted: boolean;
|
|
367
|
+
} | null;
|
|
368
|
+
/** Was a rejection of this envelope received FROM this specific holder? */
|
|
369
|
+
rejectionReceivedFromFor(ownerAgentId: string, documentId: string, envelopeHash: string, fromAgentId: string): boolean;
|
|
370
|
+
/**
|
|
371
|
+
* ONE deterministic envelope-level terminal rule (FANOUT-1 review M3), applied by every
|
|
372
|
+
* reconciliation site: once no holder is outstanding, the envelope is ACKED if at least one
|
|
373
|
+
* holder acked, ABANDONED only when nobody ever answered. Without one rule, identical final
|
|
374
|
+
* holder states landed as opposite envelope-level facts depending on event order — and
|
|
375
|
+
* `withdraw`'s "your peer holds it" answered differently for the same reality.
|
|
376
|
+
*/
|
|
377
|
+
reconcileEnvelopeSettlement(ownerAgentId: string, documentId: string, envelopeHash: string, nowMs: number): void;
|
|
378
|
+
/** Does this holder still owe any confirmation on this document? */
|
|
379
|
+
holderHasPending(ownerAgentId: string, documentId: string, holderAgentId: string): boolean;
|
|
283
380
|
pendingDeliveries(ownerAgentId: string, nowMs: number,
|
|
284
381
|
/**
|
|
285
382
|
* OUR OWN sender id on the wire — the author's pubkey hex (M14-D5).
|
|
@@ -293,10 +390,6 @@ export declare class DocumentStore {
|
|
|
293
390
|
* invisible in the query.
|
|
294
391
|
*/
|
|
295
392
|
senderAgentId?: string, limit?: number): DocumentEnvelopeRow[];
|
|
296
|
-
/** Mark an attempt: bumps the counter and schedules the next one. Returns the new count. */
|
|
297
|
-
recordDeliveryAttempt(ownerAgentId: string, documentId: string, envelopeHash: string, nextAttemptAtMs: number): number;
|
|
298
|
-
/** Record that the envelope left. Not an ack — the peer has not answered yet. */
|
|
299
|
-
markDelivered(ownerAgentId: string, documentId: string, envelopeHash: string, nowMs: number): boolean;
|
|
300
393
|
/** Record that the peer acknowledged. Idempotent — a redelivered ack must not move the clock. */
|
|
301
394
|
/**
|
|
302
395
|
* How many of our envelopes for this document were ABANDONED — the unacked ceiling fired and they
|