@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
package/dist/document-layer.js
CHANGED
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
* would be a default answer to "is this authentic", and both inbound paths refuse rather than
|
|
22
22
|
* admit when it says no.
|
|
23
23
|
*/
|
|
24
|
+
import { createHash } from "node:crypto";
|
|
24
25
|
import { verify } from "@cello-protocol/crypto";
|
|
25
26
|
import { DocumentStore } from "./document-store.js";
|
|
26
27
|
import { DocumentEngine } from "./document-engine.js";
|
|
@@ -29,6 +30,8 @@ import { screeningRule, SCREEN_RULE_ID } from "./document-screen.js";
|
|
|
29
30
|
import { DocumentRejections } from "./document-rejection.js";
|
|
30
31
|
import { DocumentInbound } from "./document-inbound.js";
|
|
31
32
|
import { DocumentAckInbound } from "./document-ack-inbound.js";
|
|
33
|
+
import { DocumentAmendmentStore } from "./document-amendment-store.js";
|
|
34
|
+
import { DocumentJoinStore } from "./document-join-store.js";
|
|
32
35
|
import { DocumentFrameRouter } from "./document-frame-router.js";
|
|
33
36
|
import { LiveDocuments } from "./document-live-docs.js";
|
|
34
37
|
import { DocumentLifecycle } from "./document-lifecycle.js";
|
|
@@ -38,7 +41,7 @@ import { projectDocumentText } from "./document-json.js";
|
|
|
38
41
|
import { rootForDocumentType } from "./document-types.js";
|
|
39
42
|
import { DocumentHandshake } from "./document-handshake.js";
|
|
40
43
|
import { DocumentWritePath } from "./document-write-path.js";
|
|
41
|
-
import { decodeDocumentRejection, buildDocumentRejectionTbs, documentRejectionHash, decodeDocumentProposalAck, buildDocumentProposalAckTbs, decodeDocumentControl, buildDocumentControlTbs, decodeDocumentUpdateEnvelope, encodeDocumentAck, buildDocumentAckTbs, } from "@cello-protocol/protocol-types";
|
|
44
|
+
import { decodeDocumentRejection, buildDocumentRejectionTbs, documentRejectionHash, decodeDocumentProposalAck, buildDocumentProposalAckTbs, decodeDocumentControl, buildDocumentControlTbs, decodeDocumentUpdateEnvelope, buildDocumentUpdateTbs, documentEnvelopeHash, buildDocumentJoinAnswerTbs, encodeDocumentJoinAnswer, buildDocumentJoinOfferTbs, decodeDocumentJoinOffer, decodeDocumentAmendment, decodeDocumentProposal, encodeDocumentProposalAck, DOCUMENT_PROPOSAL_ACK_VERSION, MAX_PROPOSAL_REFUSAL_REASON_LENGTH, documentAmendmentHash, validateDocumentJoinOffer, documentGovernancePolicy, arrangementGenesisFromProposal, deriveArrangement, encodeDocumentAck, buildDocumentAckTbs, } from "@cello-protocol/protocol-types";
|
|
42
45
|
import { LEAF_KIND_REJECT } from "./session-relay-client.js";
|
|
43
46
|
/**
|
|
44
47
|
* The default `publicKeyFor`: a remote agent's id IS its K_local public key, hex-encoded (M14-D5).
|
|
@@ -81,7 +84,12 @@ export function createDocumentLayer(deps) {
|
|
|
81
84
|
const record = handshake.get(ownerAgentId, documentId);
|
|
82
85
|
return record?.envelope.starting_content ?? null;
|
|
83
86
|
});
|
|
84
|
-
const lifecycle = new DocumentLifecycle(store, logger, { notifyPeer: deps.notifyPeer }, deps.rollback
|
|
87
|
+
const lifecycle = new DocumentLifecycle(store, logger, { notifyPeer: deps.notifyPeer }, deps.rollback, undefined,
|
|
88
|
+
// DOD-MP-CONTROL-N-1 — the inbound gate. `holdersFor` is declared below and resolved lazily,
|
|
89
|
+
// the same shape `live` uses above; the gate is only ever called long after construction.
|
|
90
|
+
// Wired HERE rather than left to the daemon so every consumer of the layer — including the
|
|
91
|
+
// e2e fixture — gets the real derivation and cannot silently keep the bilateral gate.
|
|
92
|
+
(ownerAgentId, documentId) => holdersFor(ownerAgentId, documentId));
|
|
85
93
|
const notifications = new DocumentNotifications(store, logger);
|
|
86
94
|
// THE FILE SURFACE. Built, tested and instantiated NOWHERE until now — the same defect the tool
|
|
87
95
|
// surface had: a complete unit with no production caller reads exactly like a working feature.
|
|
@@ -115,20 +123,28 @@ export function createDocumentLayer(deps) {
|
|
|
115
123
|
logger,
|
|
116
124
|
verifySignature,
|
|
117
125
|
liveDocFor: (ownerAgentId, documentId) => live.get(ownerAgentId, documentId),
|
|
126
|
+
membershipOf: (ownerAgentId, documentId, agentId) => amendments.membershipOf(ownerAgentId, documentId, agentId),
|
|
127
|
+
currentHolders: (ownerAgentId, documentId) => holdersFor(ownerAgentId, documentId),
|
|
118
128
|
sign: deps.sign,
|
|
119
129
|
});
|
|
120
130
|
// WAITERS for `awaitAck`, keyed by owner + envelope. A Set per key because two callers may wait
|
|
121
131
|
// on the same envelope (a redelivery racing the original), and dropping one of them would leave a
|
|
122
132
|
// session held open for the full grace period with the answer already in hand.
|
|
133
|
+
// KEYED BY ACKER TOO (FANOUT-1 review H1): an envelope-keyed waiter let ANY holder's ack —
|
|
134
|
+
// including a redelivered one from an already-settled holder — resolve the grace wait for
|
|
135
|
+
// whichever holder was being dialed, and the worker then settled the DIALED holder's row for
|
|
136
|
+
// content that never reached them. §7-1's silent divergence, through the sender's own
|
|
137
|
+
// bookkeeping.
|
|
123
138
|
const ackWaiters = new Map();
|
|
124
|
-
const waiterKey = (ownerAgentId, envelopeHash) => `${ownerAgentId}\u0000${envelopeHash}`;
|
|
139
|
+
const waiterKey = (ownerAgentId, envelopeHash, ackerAgentId) => `${ownerAgentId}\u0000${envelopeHash}\u0000${ackerAgentId}`;
|
|
125
140
|
const ackInbound = new DocumentAckInbound({
|
|
126
141
|
store,
|
|
127
142
|
rejections,
|
|
128
143
|
logger,
|
|
129
144
|
verifySignature,
|
|
130
|
-
|
|
131
|
-
|
|
145
|
+
currentHolders: (o, d) => holdersFor(o, d),
|
|
146
|
+
onSettled: (ownerAgentId, envelopeHash, ackerAgentId, admitted) => {
|
|
147
|
+
const key = waiterKey(ownerAgentId, envelopeHash, ackerAgentId);
|
|
132
148
|
const waiting = ackWaiters.get(key);
|
|
133
149
|
if (!waiting)
|
|
134
150
|
return;
|
|
@@ -140,14 +156,14 @@ export function createDocumentLayer(deps) {
|
|
|
140
156
|
wake(admitted);
|
|
141
157
|
},
|
|
142
158
|
});
|
|
143
|
-
const awaitAck = async (ownerAgentId, envelopeHash, timeoutMs) => {
|
|
144
|
-
// ALREADY SETTLED WINS
|
|
145
|
-
//
|
|
146
|
-
|
|
147
|
-
|
|
159
|
+
const awaitAck = async (ownerAgentId, envelopeHash, expectedAckerAgentId, timeoutMs) => {
|
|
160
|
+
// ALREADY SETTLED WINS — by THE HOLDER BEING DIALED (H1): the per-acker read first, the
|
|
161
|
+
// envelope-level read only for the zero-row bilateral legacy.
|
|
162
|
+
const already = store.holderSettlement(ownerAgentId, envelopeHash, expectedAckerAgentId) ??
|
|
163
|
+
store.envelopeSettlement(ownerAgentId, envelopeHash);
|
|
148
164
|
if (already)
|
|
149
165
|
return already;
|
|
150
|
-
const key = waiterKey(ownerAgentId, envelopeHash);
|
|
166
|
+
const key = waiterKey(ownerAgentId, envelopeHash, expectedAckerAgentId);
|
|
151
167
|
return new Promise((resolve) => {
|
|
152
168
|
let timer;
|
|
153
169
|
const wake = (admitted) => {
|
|
@@ -173,6 +189,107 @@ export function createDocumentLayer(deps) {
|
|
|
173
189
|
// proposal is refused before it can occupy a document_id (ON CONFLICT DO NOTHING makes the first
|
|
174
190
|
// arrival's bytes permanent for that id).
|
|
175
191
|
const handshake = new DocumentHandshake(db, logger, verifySignature);
|
|
192
|
+
// M14B / DOD-MP-JOIN-1 — the amendment chain and the join-consent stores. The membership READ
|
|
193
|
+
// path (`currentDocumentEpoch`) has run through DocumentStore since AMEND-1; these are the
|
|
194
|
+
// WRITE path, and every append below validates first (the standing AMEND-1 condition).
|
|
195
|
+
const amendments = new DocumentAmendmentStore(db, logger);
|
|
196
|
+
const joins = new DocumentJoinStore(db, logger);
|
|
197
|
+
/**
|
|
198
|
+
* M14B / DOD-MP-FANOUT-1 — the CURRENT holders of a document, derived from genesis + the
|
|
199
|
+
* recorded chain. Null when the document is unknown or its chain does not derive — NOT an
|
|
200
|
+
* empty list, because "nobody holds this" and "this cannot be answered" are different facts
|
|
201
|
+
* and the worker schedules them differently.
|
|
202
|
+
*/
|
|
203
|
+
const holdersFor = (ownerAgentId, documentId) => {
|
|
204
|
+
const genesisRecord = handshake.get(ownerAgentId, documentId);
|
|
205
|
+
if (!genesisRecord) {
|
|
206
|
+
// The SAME event the publish refusal points at — an operator hunting
|
|
207
|
+
// document.holders.underivable must find it for BOTH null causes (review M6).
|
|
208
|
+
logger.error("document.holders.underivable", {
|
|
209
|
+
documentId,
|
|
210
|
+
reason: "no_genesis_record: the document has a row but no stored genesis proposal",
|
|
211
|
+
});
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
const derived = deriveArrangement(arrangementGenesisFromProposal(genesisRecord.envelope), amendments.chain(ownerAgentId, documentId), documentGovernancePolicy, verifySignature);
|
|
215
|
+
if (!derived.ok) {
|
|
216
|
+
logger.error("document.holders.underivable", {
|
|
217
|
+
documentId,
|
|
218
|
+
reason: derived.reason,
|
|
219
|
+
});
|
|
220
|
+
return null;
|
|
221
|
+
}
|
|
222
|
+
return [...derived.arrangement.participants];
|
|
223
|
+
};
|
|
224
|
+
/**
|
|
225
|
+
* Who a control frame (`close`, `kill`) must be addressed to — DOD-MP-CONTROL-N-1.
|
|
226
|
+
*
|
|
227
|
+
* THIS LIVES HERE, not as a closure in the composition root, for the reason
|
|
228
|
+
* `document-control-notifier.ts`'s own header records about itself: a closure in `daemon.ts` has
|
|
229
|
+
* no test, so every fixture hand-copies it, and a hand-copy cannot disagree with the original.
|
|
230
|
+
* The first draft of this WAS such a closure and had already drifted — it re-derived the
|
|
231
|
+
* arrangement itself and so never emitted `document.holders.underivable`, leaving the control
|
|
232
|
+
* path invisible to the exact log search meant to find it.
|
|
233
|
+
*
|
|
234
|
+
* Everyone EXCEPT the owner, because the owner is the one doing the ending. A chain that will
|
|
235
|
+
* not derive is refused by name rather than falling back to the genesis `peerAgentId` — that
|
|
236
|
+
* fallback is the original defect, and after a removal it aims the frame at precisely the
|
|
237
|
+
* removed holder.
|
|
238
|
+
*/
|
|
239
|
+
const controlHolders = (ownerAgentId, documentId) => {
|
|
240
|
+
let derivedHolders;
|
|
241
|
+
try {
|
|
242
|
+
derivedHolders = holdersFor(ownerAgentId, documentId);
|
|
243
|
+
}
|
|
244
|
+
catch (err) {
|
|
245
|
+
// CONTAINED for the same reason `cello_doc_list` contains it: a chain this build cannot
|
|
246
|
+
// decode THROWS, and an uncontained throw would take down the close/kill verb entirely
|
|
247
|
+
// rather than reporting why the frame could not be addressed.
|
|
248
|
+
return {
|
|
249
|
+
ok: false,
|
|
250
|
+
reason: `document_chain_undecodable: ${err instanceof Error ? err.message : String(err)}`,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
if (derivedHolders === null)
|
|
254
|
+
return { ok: false, reason: "document_holders_underivable" };
|
|
255
|
+
return { ok: true, holders: derivedHolders.filter((p) => p !== ownerAgentId).sort() };
|
|
256
|
+
};
|
|
257
|
+
/** Is this agent a CURRENT holder — the ack gate's membership question. */
|
|
258
|
+
const isCurrentHolder = (ownerAgentId, documentId, agentId) => {
|
|
259
|
+
const holders = holdersFor(ownerAgentId, documentId);
|
|
260
|
+
return holders !== null && holders.includes(agentId);
|
|
261
|
+
};
|
|
262
|
+
/** Sign and send a join answer — best-effort, never a veto over the local decision. */
|
|
263
|
+
const sendJoinAnswer = async (ownerAgentId, inviterAgentId, documentId, amendmentHash, accepted, reason) => {
|
|
264
|
+
try {
|
|
265
|
+
const answer = {
|
|
266
|
+
type: "document_join_answer",
|
|
267
|
+
document_id: documentId,
|
|
268
|
+
amendment_hash: amendmentHash,
|
|
269
|
+
invitee_agent_id: ownerAgentId,
|
|
270
|
+
accepted,
|
|
271
|
+
refusal_reason: accepted ? null : reason,
|
|
272
|
+
answered_at_ms: Date.now(),
|
|
273
|
+
signature: new Uint8Array(0),
|
|
274
|
+
};
|
|
275
|
+
answer.signature = await deps.sign(ownerAgentId, buildDocumentJoinAnswerTbs(answer));
|
|
276
|
+
await deps.sendFrame(ownerAgentId, inviterAgentId, encodeDocumentJoinAnswer(answer));
|
|
277
|
+
}
|
|
278
|
+
catch (err) {
|
|
279
|
+
logger.warn("document.join.answer_send_failed", {
|
|
280
|
+
documentId,
|
|
281
|
+
amendmentHash,
|
|
282
|
+
error: err instanceof Error ? err.message : String(err),
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
/** Re-send the STANDING decision for an already-decided offer a redelivery just matched. */
|
|
287
|
+
const resendJoinAnswer = async (ownerAgentId, amendmentHash, inviterAgentId) => {
|
|
288
|
+
const record = joins.get(ownerAgentId, amendmentHash);
|
|
289
|
+
if (!record || record.state === "pending")
|
|
290
|
+
return;
|
|
291
|
+
await sendJoinAnswer(ownerAgentId, inviterAgentId, record.documentId, amendmentHash, record.state === "accepted", record.reason);
|
|
292
|
+
};
|
|
176
293
|
const router = new DocumentFrameRouter({
|
|
177
294
|
inbound,
|
|
178
295
|
ackInbound,
|
|
@@ -181,7 +298,129 @@ export function createDocumentLayer(deps) {
|
|
|
181
298
|
recordProposal: (ownerAgentId, wire, nowMs) => {
|
|
182
299
|
// THROWS on a forged or misaddressed proposal, which the router contains and reports. That is
|
|
183
300
|
// right: those are refusals, and nothing should be recorded for them.
|
|
184
|
-
handshake.recordProposal(ownerAgentId, wire, nowMs);
|
|
301
|
+
const recorded = handshake.recordProposal(ownerAgentId, wire, nowMs);
|
|
302
|
+
// BOTH ENDS GET THE SENTENCE (TOPOLOGY-1 review F1, the join path's rule applied here):
|
|
303
|
+
// an arrival auto-refusal — seam violation, version mismatch — used to write its sentence
|
|
304
|
+
// to OUR database and answer the proposer with silence, a hang they diagnose as a network
|
|
305
|
+
// fault. The signed refusal ack now travels best-effort; the proposal verified against its
|
|
306
|
+
// named proposer at record time, so the answer goes to an authenticated party.
|
|
307
|
+
const refusalReason = recorded.reason;
|
|
308
|
+
if (recorded.state === "refused" && refusalReason !== undefined) {
|
|
309
|
+
const proposal = decodeDocumentProposal(wire);
|
|
310
|
+
void (async () => {
|
|
311
|
+
try {
|
|
312
|
+
const ack = {
|
|
313
|
+
type: "document_proposal_ack",
|
|
314
|
+
ack_version: DOCUMENT_PROPOSAL_ACK_VERSION,
|
|
315
|
+
document_id: recorded.documentId,
|
|
316
|
+
acker_agent_id: ownerAgentId,
|
|
317
|
+
accepted: false,
|
|
318
|
+
refusal_reason: refusalReason.slice(0, MAX_PROPOSAL_REFUSAL_REASON_LENGTH),
|
|
319
|
+
decided_at_ms: Date.now(),
|
|
320
|
+
signature: new Uint8Array(0),
|
|
321
|
+
};
|
|
322
|
+
ack.signature = await deps.sign(ownerAgentId, buildDocumentProposalAckTbs(ack));
|
|
323
|
+
await deps.sendFrame(ownerAgentId, proposal.proposer_agent_id, encodeDocumentProposalAck(ack));
|
|
324
|
+
}
|
|
325
|
+
catch (err) {
|
|
326
|
+
logger.warn("document.proposal.auto_refusal_ack_failed", {
|
|
327
|
+
documentId: recorded.documentId,
|
|
328
|
+
error: err instanceof Error ? err.message : String(err),
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
})();
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
recordJoinOffer: (ownerAgentId, wire, nowMs) => {
|
|
335
|
+
const offer = decodeDocumentJoinOffer(wire);
|
|
336
|
+
// ADDRESSED TO US — the same multi-agent-daemon rule recordProposal enforces: consent
|
|
337
|
+
// belongs to the agent the inviter named, and a throw here is contained by the router.
|
|
338
|
+
if (offer.invitee_agent_id !== ownerAgentId) {
|
|
339
|
+
throw new Error(`document_join_wrong_invitee: this offer is addressed to ${offer.invitee_agent_id}, ` +
|
|
340
|
+
`not to ${ownerAgentId}`);
|
|
341
|
+
}
|
|
342
|
+
const validation = validateDocumentJoinOffer(offer, documentGovernancePolicy, verifySignature);
|
|
343
|
+
if (validation.ok) {
|
|
344
|
+
const stored = joins.recordIncoming(ownerAgentId, wire, validation.pendingAmendmentHash, { state: "pending" }, nowMs);
|
|
345
|
+
// REDELIVERY OF A DECIDED OFFER RE-SENDS THE ANSWER. A lost answer was otherwise lost
|
|
346
|
+
// forever: the invitee's decision stood, the inviter's row sat pending, and the
|
|
347
|
+
// inviter's only lever — re-inviting, which redelivers this exact offer — reached a
|
|
348
|
+
// DO-NOTHING insert. Now that redelivery is the recovery: the standing decision is
|
|
349
|
+
// re-signed and travels again. Best-effort, like every answer.
|
|
350
|
+
if (stored.state !== "pending") {
|
|
351
|
+
void resendJoinAnswer(ownerAgentId, validation.pendingAmendmentHash, offer.inviter_agent_id);
|
|
352
|
+
}
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
// A REFUSAL IS RECORDED — AND ANSWERED — ONLY WHEN IT IS AUTHENTICATED. The first cut
|
|
356
|
+
// recorded every refusal under the admitting amendment's hash, and that was a standing
|
|
357
|
+
// veto: any party holding the amendment bytes (every holder gets them in the fan-out)
|
|
358
|
+
// could deliver a garbage offer FIRST, occupy the real settle key with a refused row, and
|
|
359
|
+
// the genuine offer would arrive to a DO-NOTHING insert — the admin's admission silently
|
|
360
|
+
// suppressed, both operators seeing nothing. So: an offer whose signature does not verify
|
|
361
|
+
// against its named inviter THROWS (contained + logged, nothing recorded — the forged-
|
|
362
|
+
// proposal treatment), and an authenticated refusal is recorded under the hash of ITS OWN
|
|
363
|
+
// BYTES — visible to the operator, never able to occupy a real join's settle key.
|
|
364
|
+
if (!verifySignature(offer.inviter_agent_id, buildDocumentJoinOfferTbs(offer), offer.signature)) {
|
|
365
|
+
throw new Error(validation.reason);
|
|
366
|
+
}
|
|
367
|
+
const refusalKey = createHash("sha256").update(wire).digest("hex");
|
|
368
|
+
joins.recordIncoming(ownerAgentId, wire, refusalKey, { state: "refused", reason: validation.reason }, nowMs);
|
|
369
|
+
// BOTH ENDS get the sentence: the refusal answer travels back to the authenticated
|
|
370
|
+
// inviter, settling their row with the reason — the version-mismatch sentence was written
|
|
371
|
+
// for a human and was reaching a database column. The settle key is the admitting
|
|
372
|
+
// amendment's hash when one is recoverable (the inviter's row lives under it).
|
|
373
|
+
const last = offer.amendments[offer.amendments.length - 1];
|
|
374
|
+
if (last !== undefined) {
|
|
375
|
+
try {
|
|
376
|
+
const settleKey = Buffer.from(documentAmendmentHash(decodeDocumentAmendment(last).body)).toString("hex");
|
|
377
|
+
void sendJoinAnswer(ownerAgentId, offer.inviter_agent_id, offer.document_id, settleKey, false, validation.reason);
|
|
378
|
+
}
|
|
379
|
+
catch {
|
|
380
|
+
// No recoverable settle key — the refusal stays visible locally and the inviter's
|
|
381
|
+
// re-invite (which redelivers) will meet the same recorded refusal.
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
},
|
|
385
|
+
recordJoinAnswer: (ownerAgentId, wire, nowMs) => {
|
|
386
|
+
const r = joins.recordAnswer(ownerAgentId, wire, verifySignature, nowMs);
|
|
387
|
+
// A refusal is a verdict the router contains and reports — never a silent drop.
|
|
388
|
+
if (!r.ok)
|
|
389
|
+
throw new Error(r.reason);
|
|
390
|
+
},
|
|
391
|
+
recordAmendment: (ownerAgentId, wire, nowMs) => {
|
|
392
|
+
// An amendment reaching an EXISTING holder. VALIDATE-BEFORE-APPEND (the AMEND-1 standing
|
|
393
|
+
// condition): the whole chain, including this arrival, must replay through the real policy
|
|
394
|
+
// before one byte lands in the table — a row in document_amendments is post-validation by
|
|
395
|
+
// invariant, and epoch stamping rests on that.
|
|
396
|
+
const env = decodeDocumentAmendment(wire);
|
|
397
|
+
const documentId = env.body.document_id;
|
|
398
|
+
if (!store.getDocument(ownerAgentId, documentId)) {
|
|
399
|
+
throw new Error(`document_unknown: no document ${documentId.slice(0, 16)}… for this agent`);
|
|
400
|
+
}
|
|
401
|
+
const record = handshake.get(ownerAgentId, documentId);
|
|
402
|
+
if (!record) {
|
|
403
|
+
throw new Error(`document_genesis_missing: ${documentId.slice(0, 16)}… has a row but no stored genesis ` +
|
|
404
|
+
`proposal to replay from`);
|
|
405
|
+
}
|
|
406
|
+
const derived = deriveArrangement(arrangementGenesisFromProposal(record.envelope), [...amendments.chain(ownerAgentId, documentId), env], documentGovernancePolicy, verifySignature);
|
|
407
|
+
if (!derived.ok)
|
|
408
|
+
throw new Error(derived.reason);
|
|
409
|
+
amendments.append(ownerAgentId, documentId, wire, nowMs);
|
|
410
|
+
// DOD-MP-REMOVE-1 — a removal NAMING THIS AGENT is applied and SURFACED, not just stored:
|
|
411
|
+
// the row flips to `removed` (publishes refuse locally, naming the condition; the copy,
|
|
412
|
+
// the file, the history all remain — forward-only by doctrine), and the event is the
|
|
413
|
+
// operator's notice. Everyone else's arrangement changes are visible through list/inbox
|
|
414
|
+
// derivation; being written out of one is the change an operator must not miss.
|
|
415
|
+
if (env.body.kind === "remove_holder" && env.body.subject_agent_id === ownerAgentId) {
|
|
416
|
+
// Applied by DERIVATION — the recorded chain IS the removal; publish gates and the list
|
|
417
|
+
// overlay read it. This warn is the operator's notice.
|
|
418
|
+
logger.warn("document.removed_from", {
|
|
419
|
+
documentId,
|
|
420
|
+
epochId: env.body.epoch_id,
|
|
421
|
+
removedBy: env.collection.required_signers.join(","),
|
|
422
|
+
});
|
|
423
|
+
}
|
|
185
424
|
},
|
|
186
425
|
// `_nowMs` unused: the received-rejection row takes its clock where it is written, and the
|
|
187
426
|
// rejection's own SIGNED timestamp is inside the envelope. A second clock read here would put a
|
|
@@ -357,7 +596,213 @@ export function createDocumentLayer(deps) {
|
|
|
357
596
|
});
|
|
358
597
|
},
|
|
359
598
|
});
|
|
599
|
+
/**
|
|
600
|
+
* M14B / DOD-MP-JOIN-1 — the invitee's ACCEPT: consent becomes a held document.
|
|
601
|
+
*
|
|
602
|
+
* VALIDATE EVERYTHING, THEN MUTATE. The stored offer is re-validated at the moment of
|
|
603
|
+
* consequence (validate-before-append, on the bytes that will be appended), and the whole
|
|
604
|
+
* envelope-log snapshot is verified — every signature, every document binding — before one row
|
|
605
|
+
* lands. A snapshot with one bad envelope refuses the accept naming it, because skipping it
|
|
606
|
+
* silently would hand the joiner a document that reads complete and diverges from every other
|
|
607
|
+
* holder (NO-SILENT-DROP).
|
|
608
|
+
*
|
|
609
|
+
* Historical log envelopes are accepted at the epoch their SIGNED bytes claim — the inbound
|
|
610
|
+
* epoch gate is for live arrivals; a snapshot legitimately spans epochs 0..N.
|
|
611
|
+
*/
|
|
612
|
+
const acceptJoin = async (ownerAgentId, amendmentHash, nowMs) => {
|
|
613
|
+
const record = joins.get(ownerAgentId, amendmentHash);
|
|
614
|
+
if (!record || record.role !== "invitee") {
|
|
615
|
+
return {
|
|
616
|
+
ok: false,
|
|
617
|
+
reason: "join_unknown_offer",
|
|
618
|
+
detail: `no join offer for this agent settles on ${amendmentHash.slice(0, 16)}…`,
|
|
619
|
+
};
|
|
620
|
+
}
|
|
621
|
+
if (record.state !== "pending") {
|
|
622
|
+
return {
|
|
623
|
+
ok: false,
|
|
624
|
+
reason: "join_already_decided",
|
|
625
|
+
detail: `this offer was already ${record.state} — a consent decision is made once`,
|
|
626
|
+
};
|
|
627
|
+
}
|
|
628
|
+
const validation = validateDocumentJoinOffer(record.offer, documentGovernancePolicy, verifySignature);
|
|
629
|
+
if (!validation.ok) {
|
|
630
|
+
// Recorded, not just returned: an offer that no longer validates is a settled fact.
|
|
631
|
+
joins.decide(ownerAgentId, amendmentHash, false, validation.reason, nowMs);
|
|
632
|
+
return { ok: false, reason: "join_offer_invalid", detail: validation.reason };
|
|
633
|
+
}
|
|
634
|
+
const documentId = record.documentId;
|
|
635
|
+
// WHO MAY APPEAR IN THE SNAPSHOT: anyone who held the document at ANY epoch of the carried
|
|
636
|
+
// chain — the genesis pair plus every add_holder subject (a removed holder's history stays
|
|
637
|
+
// legal). Without this, a malicious inviter plants envelopes signed by keys they control
|
|
638
|
+
// under identities that were never holders, and the joiner materializes content no
|
|
639
|
+
// legitimate holder ever saw — silent divergence the live path's sender-is-peer check
|
|
640
|
+
// would have refused.
|
|
641
|
+
const everHeld = new Set([
|
|
642
|
+
validation.genesis.proposer_agent_id,
|
|
643
|
+
validation.genesis.peer_agent_id,
|
|
644
|
+
]);
|
|
645
|
+
for (const amendment of validation.amendments) {
|
|
646
|
+
if (amendment.body.kind === "add_holder" && amendment.body.subject_agent_id !== null) {
|
|
647
|
+
everHeld.add(amendment.body.subject_agent_id);
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
// The WHOLE snapshot verified before any mutation.
|
|
651
|
+
const verified = [];
|
|
652
|
+
for (let i = 0; i < record.offer.envelope_log.length; i++) {
|
|
653
|
+
const bytes = record.offer.envelope_log[i];
|
|
654
|
+
let env;
|
|
655
|
+
try {
|
|
656
|
+
env = decodeDocumentUpdateEnvelope(bytes);
|
|
657
|
+
}
|
|
658
|
+
catch (err) {
|
|
659
|
+
return {
|
|
660
|
+
ok: false,
|
|
661
|
+
reason: "join_log_invalid",
|
|
662
|
+
detail: `snapshot envelope ${i} does not decode: ${err instanceof Error ? err.message : String(err)}`,
|
|
663
|
+
};
|
|
664
|
+
}
|
|
665
|
+
if (env.document_id !== documentId) {
|
|
666
|
+
return {
|
|
667
|
+
ok: false,
|
|
668
|
+
reason: "join_log_invalid",
|
|
669
|
+
detail: `snapshot envelope ${i} names document ${env.document_id.slice(0, 16)}…, not this one`,
|
|
670
|
+
};
|
|
671
|
+
}
|
|
672
|
+
if (!verifySignature(env.sender_agent_id, buildDocumentUpdateTbs(env), env.signature)) {
|
|
673
|
+
return {
|
|
674
|
+
ok: false,
|
|
675
|
+
reason: "join_log_invalid",
|
|
676
|
+
detail: `snapshot envelope ${i} does not verify against its sender ${env.sender_agent_id}`,
|
|
677
|
+
};
|
|
678
|
+
}
|
|
679
|
+
if (!everHeld.has(env.sender_agent_id)) {
|
|
680
|
+
return {
|
|
681
|
+
ok: false,
|
|
682
|
+
reason: "join_log_invalid",
|
|
683
|
+
detail: `snapshot envelope ${i} is signed by ${env.sender_agent_id}, who never held this ` +
|
|
684
|
+
`document at any epoch of the carried chain — refused before anything materializes`,
|
|
685
|
+
};
|
|
686
|
+
}
|
|
687
|
+
verified.push({
|
|
688
|
+
envelopeHash: documentEnvelopeHash(env),
|
|
689
|
+
documentId,
|
|
690
|
+
senderAgentId: env.sender_agent_id,
|
|
691
|
+
docPrevHash: env.doc_prev_hash,
|
|
692
|
+
epochId: env.epoch_id,
|
|
693
|
+
signature: env.signature,
|
|
694
|
+
stateVector: env.state_vector,
|
|
695
|
+
payload: env.update,
|
|
696
|
+
kind: "update",
|
|
697
|
+
referencesEnvelopeHash: null,
|
|
698
|
+
createdAtMs: nowMs,
|
|
699
|
+
});
|
|
700
|
+
}
|
|
701
|
+
// Mutations, in dependency order: genesis (LiveDocuments reads starting_content from it),
|
|
702
|
+
// the chain (idempotent on redelivery), the row, the log, the live rebuild, the file.
|
|
703
|
+
handshake.recordJoined(ownerAgentId, record.offer.genesis, nowMs);
|
|
704
|
+
try {
|
|
705
|
+
for (const bytes of record.offer.amendments) {
|
|
706
|
+
amendments.append(ownerAgentId, documentId, bytes, nowMs);
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
catch (err) {
|
|
710
|
+
// TWO ADMINS INVITED THE SAME AGENT INDEPENDENTLY: each offer's chain is self-consistent
|
|
711
|
+
// and both sat pending, but their admitting amendments rival at one epoch — the second
|
|
712
|
+
// accept hits the store's fork refusal mid-append. Settled as refused with the conflict's
|
|
713
|
+
// own reason rather than thrown: a raw exception left the row pending and every retry
|
|
714
|
+
// rethrowing, a wedge the operator could not see past.
|
|
715
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
716
|
+
joins.decide(ownerAgentId, amendmentHash, false, reason, nowMs);
|
|
717
|
+
return { ok: false, reason: "join_conflicting_admission", detail: reason };
|
|
718
|
+
}
|
|
719
|
+
if (!store.getDocument(ownerAgentId, documentId)) {
|
|
720
|
+
store.createDocument({
|
|
721
|
+
documentId,
|
|
722
|
+
ownerAgentId,
|
|
723
|
+
// The inviter is this holder's live counterpart until fan-out delivery (P2) — the
|
|
724
|
+
// participants that MATTER derive from the amendment chain (Entry 9's decision).
|
|
725
|
+
peerAgentId: record.inviterAgentId,
|
|
726
|
+
documentType: validation.genesis.document_type,
|
|
727
|
+
properties: validation.genesis.properties,
|
|
728
|
+
status: "active",
|
|
729
|
+
createdAtMs: nowMs,
|
|
730
|
+
});
|
|
731
|
+
}
|
|
732
|
+
for (const row of verified)
|
|
733
|
+
store.appendEnvelope(ownerAgentId, row);
|
|
734
|
+
const doc = live.get(ownerAgentId, documentId);
|
|
735
|
+
if (writePath) {
|
|
736
|
+
await writePath.materialize(ownerAgentId, documentId, validation.genesis.document_type, doc);
|
|
737
|
+
}
|
|
738
|
+
joins.decide(ownerAgentId, amendmentHash, true, null, nowMs);
|
|
739
|
+
const answer = {
|
|
740
|
+
type: "document_join_answer",
|
|
741
|
+
document_id: documentId,
|
|
742
|
+
amendment_hash: amendmentHash,
|
|
743
|
+
invitee_agent_id: ownerAgentId,
|
|
744
|
+
accepted: true,
|
|
745
|
+
refusal_reason: null,
|
|
746
|
+
answered_at_ms: nowMs,
|
|
747
|
+
signature: new Uint8Array(0),
|
|
748
|
+
};
|
|
749
|
+
answer.signature = await deps.sign(ownerAgentId, buildDocumentJoinAnswerTbs(answer));
|
|
750
|
+
logger.info("document.join.accepted", { documentId, amendmentHash, applied: verified.length });
|
|
751
|
+
return {
|
|
752
|
+
ok: true,
|
|
753
|
+
documentId,
|
|
754
|
+
inviterAgentId: record.inviterAgentId,
|
|
755
|
+
documentType: validation.genesis.document_type,
|
|
756
|
+
applied: verified.length,
|
|
757
|
+
answerBytes: encodeDocumentJoinAnswer(answer),
|
|
758
|
+
};
|
|
759
|
+
};
|
|
760
|
+
/** The invitee's REFUSE — local and final; the signed answer travels best-effort. */
|
|
761
|
+
const refuseJoin = async (ownerAgentId, amendmentHash, reason, nowMs) => {
|
|
762
|
+
const record = joins.get(ownerAgentId, amendmentHash);
|
|
763
|
+
if (!record || record.role !== "invitee") {
|
|
764
|
+
return {
|
|
765
|
+
ok: false,
|
|
766
|
+
reason: "join_unknown_offer",
|
|
767
|
+
detail: `no join offer for this agent settles on ${amendmentHash.slice(0, 16)}…`,
|
|
768
|
+
};
|
|
769
|
+
}
|
|
770
|
+
const decided = joins.decide(ownerAgentId, amendmentHash, false, reason, nowMs);
|
|
771
|
+
if (!decided.decided) {
|
|
772
|
+
return {
|
|
773
|
+
ok: false,
|
|
774
|
+
reason: "join_already_decided",
|
|
775
|
+
detail: `this offer was already ${decided.state} — a consent decision is made once`,
|
|
776
|
+
};
|
|
777
|
+
}
|
|
778
|
+
const answer = {
|
|
779
|
+
type: "document_join_answer",
|
|
780
|
+
document_id: record.documentId,
|
|
781
|
+
amendment_hash: amendmentHash,
|
|
782
|
+
invitee_agent_id: ownerAgentId,
|
|
783
|
+
accepted: false,
|
|
784
|
+
refusal_reason: reason,
|
|
785
|
+
answered_at_ms: nowMs,
|
|
786
|
+
signature: new Uint8Array(0),
|
|
787
|
+
};
|
|
788
|
+
answer.signature = await deps.sign(ownerAgentId, buildDocumentJoinAnswerTbs(answer));
|
|
789
|
+
logger.info("document.join.refused", { documentId: record.documentId, amendmentHash });
|
|
790
|
+
return {
|
|
791
|
+
ok: true,
|
|
792
|
+
documentId: record.documentId,
|
|
793
|
+
inviterAgentId: record.inviterAgentId,
|
|
794
|
+
answerBytes: encodeDocumentJoinAnswer(answer),
|
|
795
|
+
};
|
|
796
|
+
};
|
|
360
797
|
return {
|
|
798
|
+
amendments,
|
|
799
|
+
joins,
|
|
800
|
+
verifySignature,
|
|
801
|
+
holdersFor,
|
|
802
|
+
controlHolders,
|
|
803
|
+
isCurrentHolder,
|
|
804
|
+
acceptJoin,
|
|
805
|
+
refuseJoin,
|
|
361
806
|
store,
|
|
362
807
|
writePath,
|
|
363
808
|
handshake,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-layer.js","sourceRoot":"","sources":["../src/document-layer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"document-layer.js","sourceRoot":"","sources":["../src/document-layer.ts"],"names":[],"mappings":"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"}
|