@cello-protocol/daemon 0.0.214 → 0.0.216
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/attendance-wiring.d.ts +0 -2
- package/dist/attendance-wiring.d.ts.map +1 -1
- package/dist/attendance-wiring.js +2 -6
- package/dist/attendance-wiring.js.map +1 -1
- package/dist/boot-connection-state.d.ts +0 -2
- package/dist/boot-connection-state.d.ts.map +1 -1
- package/dist/boot-connection-state.js +5 -46
- package/dist/boot-connection-state.js.map +1 -1
- package/dist/close-session-handler.d.ts.map +1 -1
- package/dist/close-session-handler.js +34 -9
- package/dist/close-session-handler.js.map +1 -1
- package/dist/co-attendance.d.ts +8 -72
- package/dist/co-attendance.d.ts.map +1 -1
- package/dist/co-attendance.js +8 -116
- package/dist/co-attendance.js.map +1 -1
- package/dist/daemon.js +2 -7
- package/dist/daemon.js.map +1 -1
- package/dist/disconnect-cleanup.d.ts +0 -1
- package/dist/disconnect-cleanup.d.ts.map +1 -1
- package/dist/disconnect-cleanup.js +1 -9
- package/dist/disconnect-cleanup.js.map +1 -1
- package/dist/frame-values.d.ts.map +1 -1
- package/dist/frame-values.js +4 -7
- package/dist/frame-values.js.map +1 -1
- package/dist/reply-lag.d.ts +11 -0
- package/dist/reply-lag.d.ts.map +1 -0
- package/dist/reply-lag.js +46 -0
- package/dist/reply-lag.js.map +1 -0
- package/dist/resume-last-seen.d.ts +15 -0
- package/dist/resume-last-seen.d.ts.map +1 -0
- package/dist/resume-last-seen.js +44 -0
- package/dist/resume-last-seen.js.map +1 -0
- package/dist/seal-coordinator.js +2 -2
- package/dist/seal-coordinator.js.map +1 -1
- package/dist/seal-legibility-tbs.d.ts.map +1 -1
- package/dist/seal-legibility-tbs.js +2 -3
- package/dist/seal-legibility-tbs.js.map +1 -1
- package/dist/sealed-conversation.d.ts +36 -0
- package/dist/sealed-conversation.d.ts.map +1 -0
- package/dist/sealed-conversation.js +142 -0
- package/dist/sealed-conversation.js.map +1 -0
- package/dist/session-content-handlers.d.ts +0 -17
- package/dist/session-content-handlers.d.ts.map +1 -1
- package/dist/session-content-handlers.js +122 -288
- package/dist/session-content-handlers.js.map +1 -1
- package/dist/session-content-ingest.d.ts.map +1 -1
- package/dist/session-content-ingest.js +9 -3
- package/dist/session-content-ingest.js.map +1 -1
- package/dist/session-content-send.js +1 -1
- package/dist/session-content-send.js.map +1 -1
- package/dist/session-delivery-acks.d.ts +15 -41
- package/dist/session-delivery-acks.d.ts.map +1 -1
- package/dist/session-delivery-acks.js +26 -131
- package/dist/session-delivery-acks.js.map +1 -1
- package/dist/session-notify.js +1 -1
- package/dist/session-notify.js.map +1 -1
- package/dist/session-queries.d.ts +1 -1
- package/dist/session-queries.js +1 -1
- package/dist/session-read-handlers.d.ts.map +1 -1
- package/dist/session-read-handlers.js +58 -96
- package/dist/session-read-handlers.js.map +1 -1
- package/dist/session-records.d.ts +4 -0
- package/dist/session-records.d.ts.map +1 -1
- package/dist/session-records.js +34 -1
- package/dist/session-records.js.map +1 -1
- package/dist/session-relay-client.d.ts +2 -0
- package/dist/session-relay-client.d.ts.map +1 -1
- package/dist/session-relay-client.js +15 -14
- package/dist/session-relay-client.js.map +1 -1
- package/dist/session-relay.d.ts.map +1 -1
- package/dist/session-relay.js +3 -2
- package/dist/session-relay.js.map +1 -1
- package/dist/session-schema.d.ts.map +1 -1
- package/dist/session-schema.js +31 -0
- package/dist/session-schema.js.map +1 -1
- package/dist/session-seal-leaf-store.d.ts +10 -0
- package/dist/session-seal-leaf-store.d.ts.map +1 -1
- package/dist/session-seal-leaf-store.js +18 -0
- package/dist/session-seal-leaf-store.js.map +1 -1
- package/dist/session-seal.d.ts.map +1 -1
- package/dist/session-seal.js +46 -11
- package/dist/session-seal.js.map +1 -1
- package/dist/session-terminal-refusal.d.ts +3 -0
- package/dist/session-terminal-refusal.d.ts.map +1 -1
- package/dist/session-terminal-refusal.js +21 -0
- package/dist/session-terminal-refusal.js.map +1 -1
- package/dist/telegram-doorbell.js +1 -1
- package/dist/telegram-doorbell.js.map +1 -1
- package/dist/withheld-content.d.ts +13 -0
- package/dist/withheld-content.d.ts.map +1 -0
- package/dist/withheld-content.js +46 -0
- package/dist/withheld-content.js.map +1 -0
- package/package.json +5 -5
|
@@ -82,6 +82,21 @@ export declare function storeDeliveryAck(db: DaemonDatabase, logger: Logger, a:
|
|
|
82
82
|
signature: Uint8Array;
|
|
83
83
|
correlationId?: string;
|
|
84
84
|
}): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Keep a copy of the acknowledgement THIS side signed for a message it received, so the seal
|
|
87
|
+
* answer can show it. Without it the only copy left with the sender, and a received message read
|
|
88
|
+
* as unacknowledged from this side forever. A write failure is logged and not fatal: the
|
|
89
|
+
* acknowledgement still goes out.
|
|
90
|
+
*/
|
|
91
|
+
export declare function storeGivenDeliveryAck(db: DaemonDatabase, logger: Logger, a: {
|
|
92
|
+
agentId: string;
|
|
93
|
+
agentName: string;
|
|
94
|
+
sessionId: string;
|
|
95
|
+
contentHashHex: string;
|
|
96
|
+
signerPubkeyHex: string;
|
|
97
|
+
signature: Uint8Array;
|
|
98
|
+
correlationId?: string;
|
|
99
|
+
}): void;
|
|
85
100
|
/**
|
|
86
101
|
* DOD-M15-DELIVERYACK-1 rule 2, at the database — did this side put these exact bytes on the wire in
|
|
87
102
|
* this session?
|
|
@@ -151,45 +166,4 @@ export declare function acceptParkedDeliveryAck(a: {
|
|
|
151
166
|
ok: false;
|
|
152
167
|
reason: string;
|
|
153
168
|
};
|
|
154
|
-
/**
|
|
155
|
-
* DOD-M15-DELIVERYACK-1 — the three facts, per message this side SENT, each standing alone.
|
|
156
|
-
*
|
|
157
|
-
* ⚠️ READ THE ASYMMETRY BEFORE USING THIS. Each fact is present or absent on its own and a
|
|
158
|
-
* missing one is reported as missing and NOTHING MORE. There is deliberately no combined status,
|
|
159
|
-
* no derived verdict, and no count — a message can be delivered, read and acted on with no
|
|
160
|
-
* acknowledgement recorded here, because the acknowledgement can be lost exactly as the message
|
|
161
|
-
* can. Anything that renders absence as fault is a defect, not a display choice.
|
|
162
|
-
*
|
|
163
|
-
* ordered — the RELAY assigned it a position. Read from `relay_ack_receipts`, which holds
|
|
164
|
-
* the relay's own countersignature, scoped to THIS agent's pubkey so a loopback
|
|
165
|
-
* session's two ends never read each other's.
|
|
166
|
-
* delivered — the RELAY handed the bytes over. **This side holds no such evidence for any
|
|
167
|
-
* message today, on either path**: the relay answers the RECIPIENT on pickup and
|
|
168
|
-
* never tells the depositor. It is reported absent with that reason named rather
|
|
169
|
-
* than fabricated from "our own send succeeded", which would be this machine
|
|
170
|
-
* asserting a relay fact about itself. `069-ORDERPROOF` plus a pickup notice to
|
|
171
|
-
* the depositor is what fills it.
|
|
172
|
-
* acknowledged — the RECIPIENT's own signature, from `delivery_acks`.
|
|
173
|
-
*/
|
|
174
|
-
export declare function readDeliveryFacts(db: DaemonDatabase, logger: Logger, agentId: string, sessionId: string): Array<{
|
|
175
|
-
seq: number | null;
|
|
176
|
-
content_hash: string;
|
|
177
|
-
ordered: {
|
|
178
|
-
asserted_by: "relay";
|
|
179
|
-
relay_id: string;
|
|
180
|
-
relay_timestamp: number;
|
|
181
|
-
signature: string;
|
|
182
|
-
} | null;
|
|
183
|
-
delivered: {
|
|
184
|
-
asserted_by: "relay";
|
|
185
|
-
held: false;
|
|
186
|
-
why_absent: string;
|
|
187
|
-
};
|
|
188
|
-
acknowledged: {
|
|
189
|
-
asserted_by: "recipient";
|
|
190
|
-
signer_pubkey: string;
|
|
191
|
-
signature: string;
|
|
192
|
-
recorded_at: number;
|
|
193
|
-
} | null;
|
|
194
|
-
}>;
|
|
195
169
|
//# sourceMappingURL=session-delivery-acks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-delivery-acks.d.ts","sourceRoot":"","sources":["../src/session-delivery-acks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAyD,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGnH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAkCzC;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,6BAA6B,EAClC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,UAAU,EACvB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"session-delivery-acks.d.ts","sourceRoot":"","sources":["../src/session-delivery-acks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAyD,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGnH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAkCzC;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,6BAA6B,EAClC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,UAAU,EACvB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CA6If;AAoED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,6BAA6B,EAClC,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,KAAK,IAAI,EAC3F,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,UAAU,EACvB,MAAM,EAAE,OAAO,EACf,aAAa,CAAC,EAAE,MAAM,GACrB,IAAI,CAyFN;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,MAAM,EACd,CAAC,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,UAAU,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GACA,OAAO,CAsCT;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,MAAM,EACd,CAAC,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,UAAU,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GACA,IAAI,CAiBN;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACrB,OAAO,CAYT;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EAAE;IACzC,EAAE,EAAE,cAAc,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,cAAc,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,GAAG,EAAE,iBAAiB,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA6F/C"}
|
|
@@ -148,6 +148,9 @@ export async function sendDeliveryAck(ctx, agentName, sessionId, contentHash, co
|
|
|
148
148
|
// this log claimed the ACK went out while the sender's TTF fired and parked, and the abort in
|
|
149
149
|
// the catch below (the thing that frees the stream slot) became unreachable.
|
|
150
150
|
await stream.close();
|
|
151
|
+
// Our own copy, kept only once it went out, so the seal answer never shows an acknowledgement
|
|
152
|
+
// the sender does not hold. The parked route keeps its copy when the mailbox accepts it.
|
|
153
|
+
ctx.records.recordGivenDeliveryAck(agentName, sessionId, Buffer.from(contentHash).toString("hex"), ackSig, correlationId);
|
|
151
154
|
// AFTER the close, because that is when it is true. The receiver-side counterpart to the
|
|
152
155
|
// sender's content.delivery.acked: B has acknowledged this content `persisted`, so the sender
|
|
153
156
|
// stops retrying/parking. Emitted for BOTH a normally delivered message AND a terminal-screen
|
|
@@ -219,6 +222,7 @@ why) {
|
|
|
219
222
|
const slotHex = Buffer.from(parkedDeliveryAckMailboxHash(sessionId, contentHash)).toString("hex");
|
|
220
223
|
const attempt = await ctx.park.parkOutOfBand(agentName, sessionId, slotHex, payload);
|
|
221
224
|
if (attempt.outcome === "parked") {
|
|
225
|
+
ctx.records.recordGivenDeliveryAck(agentName, sessionId, hashHex, ackSig, correlationId);
|
|
222
226
|
ctx.logger.info("content.delivery.ack.parked", {
|
|
223
227
|
agentName, sessionId, contentHash: hashHex, correlationId, why,
|
|
224
228
|
impact: "the sender could not be reached directly, so the acknowledgement is waiting in the " +
|
|
@@ -401,6 +405,28 @@ export function storeDeliveryAck(db, logger, a) {
|
|
|
401
405
|
return false;
|
|
402
406
|
}
|
|
403
407
|
}
|
|
408
|
+
/**
|
|
409
|
+
* Keep a copy of the acknowledgement THIS side signed for a message it received, so the seal
|
|
410
|
+
* answer can show it. Without it the only copy left with the sender, and a received message read
|
|
411
|
+
* as unacknowledged from this side forever. A write failure is logged and not fatal: the
|
|
412
|
+
* acknowledgement still goes out.
|
|
413
|
+
*/
|
|
414
|
+
export function storeGivenDeliveryAck(db, logger, a) {
|
|
415
|
+
try {
|
|
416
|
+
db.prepare(`INSERT OR IGNORE INTO delivery_acks_given
|
|
417
|
+
(agent_id, session_id, content_hash_hex, signer_pubkey, signature, recorded_at)
|
|
418
|
+
VALUES (?, ?, ?, ?, ?, ?)`).run(a.agentId, a.sessionId, a.contentHashHex, a.signerPubkeyHex, Buffer.from(a.signature), Date.now());
|
|
419
|
+
}
|
|
420
|
+
catch (err) {
|
|
421
|
+
logger.error("content.delivery.ack.given.record.failed", {
|
|
422
|
+
agentName: a.agentName, sessionId: a.sessionId, contentHash: a.contentHashHex, correlationId: a.correlationId,
|
|
423
|
+
reason: extractErrorMessage(err),
|
|
424
|
+
impact: "the acknowledgement was signed and sent, but this side kept no copy, so its seal answer " +
|
|
425
|
+
"will show this received message without a delivery signature",
|
|
426
|
+
guidance: "This is a LOCAL storage fault. Check free disk space and that the agent's database is writable.",
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
}
|
|
404
430
|
/**
|
|
405
431
|
* DOD-M15-DELIVERYACK-1 rule 2, at the database — did this side put these exact bytes on the wire in
|
|
406
432
|
* this session?
|
|
@@ -540,135 +566,4 @@ export function acceptParkedDeliveryAck(a) {
|
|
|
540
566
|
}
|
|
541
567
|
return { ok: true };
|
|
542
568
|
}
|
|
543
|
-
/**
|
|
544
|
-
* DOD-M15-DELIVERYACK-1 — the three facts, per message this side SENT, each standing alone.
|
|
545
|
-
*
|
|
546
|
-
* ⚠️ READ THE ASYMMETRY BEFORE USING THIS. Each fact is present or absent on its own and a
|
|
547
|
-
* missing one is reported as missing and NOTHING MORE. There is deliberately no combined status,
|
|
548
|
-
* no derived verdict, and no count — a message can be delivered, read and acted on with no
|
|
549
|
-
* acknowledgement recorded here, because the acknowledgement can be lost exactly as the message
|
|
550
|
-
* can. Anything that renders absence as fault is a defect, not a display choice.
|
|
551
|
-
*
|
|
552
|
-
* ordered — the RELAY assigned it a position. Read from `relay_ack_receipts`, which holds
|
|
553
|
-
* the relay's own countersignature, scoped to THIS agent's pubkey so a loopback
|
|
554
|
-
* session's two ends never read each other's.
|
|
555
|
-
* delivered — the RELAY handed the bytes over. **This side holds no such evidence for any
|
|
556
|
-
* message today, on either path**: the relay answers the RECIPIENT on pickup and
|
|
557
|
-
* never tells the depositor. It is reported absent with that reason named rather
|
|
558
|
-
* than fabricated from "our own send succeeded", which would be this machine
|
|
559
|
-
* asserting a relay fact about itself. `069-ORDERPROOF` plus a pickup notice to
|
|
560
|
-
* the depositor is what fills it.
|
|
561
|
-
* acknowledged — the RECIPIENT's own signature, from `delivery_acks`.
|
|
562
|
-
*/
|
|
563
|
-
export function readDeliveryFacts(db, logger, agentId, sessionId) {
|
|
564
|
-
/**
|
|
565
|
-
* ⚠️ AN EMPTY PUBKEY HERE WOULD BLANK EVERY `ordered` FACT IN THE RECEIPT, and silently.
|
|
566
|
-
*
|
|
567
|
-
* The relay receipts are scoped by this agent's own key, so `?? ""` would match no rows and every
|
|
568
|
-
* message would report `ordered: null` — indistinguishable from a relay that never countersigned
|
|
569
|
-
* anything. The caller has already resolved the agent id, so the row must exist; an empty value
|
|
570
|
-
* is a LOCAL fault and it says so rather than answering with a plausible emptiness.
|
|
571
|
-
*/
|
|
572
|
-
const agentPubkey = db.prepare("SELECT k_local_pubkey FROM agents WHERE agent_id = ?").get(agentId)?.k_local_pubkey ?? "";
|
|
573
|
-
if (!agentPubkey) {
|
|
574
|
-
logger.error("session.delivery.facts.agent_pubkey_missing", {
|
|
575
|
-
agentId,
|
|
576
|
-
sessionId,
|
|
577
|
-
impact: "this receipt will report every message as NOT ordered by the relay, although the relay " +
|
|
578
|
-
"may well have ordered them — the relay's records are keyed by this agent's own public " +
|
|
579
|
-
"key and this machine could not find it. Read the absence of `ordered` here as unknown, " +
|
|
580
|
-
"not as a fact about the relay",
|
|
581
|
-
guidance: "This is a LOCAL fault: the agent row exists but carries no identity key. Check " +
|
|
582
|
-
"cello_status for this agent and restart it; nothing about the conversation is affected.",
|
|
583
|
-
});
|
|
584
|
-
}
|
|
585
|
-
/**
|
|
586
|
-
* ⚠️ THE ROW KEY IS THE CONTENT HASH, NOT THE SEQUENCE, AND IT HAD TO BE.
|
|
587
|
-
*
|
|
588
|
-
* The first version drove this list from `transcript WHERE direction = 'sent'` and joined out
|
|
589
|
-
* to the leaf for its hash. That reports nothing at all for a message whose leaf never landed —
|
|
590
|
-
* which is exactly the message a reader most needs to see, because a send that never got a
|
|
591
|
-
* position is one of the blameless ways a message goes missing. Keying on the hash means every
|
|
592
|
-
* message this side has ANY evidence about appears, and each of the three facts is then
|
|
593
|
-
* independently present or absent on it. `seq` joins in when this side holds a leaf and is null
|
|
594
|
-
* when it does not; a null there is the ordinary shape, not a fault.
|
|
595
|
-
*/
|
|
596
|
-
const seqByHash = new Map();
|
|
597
|
-
for (const l of db
|
|
598
|
-
.prepare(`SELECT l.leaf_index AS seq, l.leaf_hash_hex AS hash_hex
|
|
599
|
-
FROM session_tree_leaves l
|
|
600
|
-
JOIN transcript t
|
|
601
|
-
ON t.agent_id = l.agent_id AND t.session_id = l.session_id AND t.sequence = l.leaf_index
|
|
602
|
-
WHERE l.agent_id = ? AND l.session_id = ? AND t.direction = 'sent'`)
|
|
603
|
-
.all(agentId, sessionId)) {
|
|
604
|
-
seqByHash.set(l.hash_hex, l.seq);
|
|
605
|
-
}
|
|
606
|
-
const receipts = new Map();
|
|
607
|
-
/**
|
|
608
|
-
* `relay_ack_receipts` is created by `RelayReceiptStore`'s constructor, not by the session
|
|
609
|
-
* schema, so on a daemon that has never opened a relay-witnessed session the table is simply
|
|
610
|
-
* absent. That is not a degraded read and nothing is substituted for it: no table means no
|
|
611
|
-
* relay ever countersigned a position here, which is the same fact as an empty table. The
|
|
612
|
-
* existence check is explicit rather than a swallowed `catch`, so a genuine SQL fault still
|
|
613
|
-
* throws instead of arriving as "nothing was ordered".
|
|
614
|
-
*/
|
|
615
|
-
const relayTablePresent = db
|
|
616
|
-
.prepare("SELECT 1 AS present FROM sqlite_master WHERE type = 'table' AND name = 'relay_ack_receipts'")
|
|
617
|
-
.get() !== undefined;
|
|
618
|
-
if (relayTablePresent) {
|
|
619
|
-
for (const r of db
|
|
620
|
-
.prepare(`SELECT hash_hex, relay_id, relay_timestamp, signature_hex
|
|
621
|
-
FROM relay_ack_receipts WHERE agent_pubkey = ? AND session_id = ?`)
|
|
622
|
-
.all(agentPubkey, sessionId)) {
|
|
623
|
-
receipts.set(r.hash_hex, r);
|
|
624
|
-
}
|
|
625
|
-
}
|
|
626
|
-
const acks = new Map();
|
|
627
|
-
for (const a of db
|
|
628
|
-
.prepare(`SELECT content_hash_hex, signer_pubkey, signature, recorded_at
|
|
629
|
-
FROM delivery_acks WHERE agent_id = ? AND session_id = ?`)
|
|
630
|
-
.all(agentId, sessionId)) {
|
|
631
|
-
acks.set(a.content_hash_hex, a);
|
|
632
|
-
}
|
|
633
|
-
const hashes = [...new Set([...seqByHash.keys(), ...receipts.keys(), ...acks.keys()])];
|
|
634
|
-
hashes.sort((x, y) => (seqByHash.get(x) ?? Number.MAX_SAFE_INTEGER) - (seqByHash.get(y) ?? Number.MAX_SAFE_INTEGER));
|
|
635
|
-
return hashes.map((hash) => {
|
|
636
|
-
const receipt = receipts.get(hash);
|
|
637
|
-
const ack = acks.get(hash);
|
|
638
|
-
return {
|
|
639
|
-
seq: seqByHash.get(hash) ?? null,
|
|
640
|
-
content_hash: hash,
|
|
641
|
-
ordered: receipt
|
|
642
|
-
? {
|
|
643
|
-
asserted_by: "relay",
|
|
644
|
-
relay_id: receipt.relay_id,
|
|
645
|
-
relay_timestamp: receipt.relay_timestamp,
|
|
646
|
-
signature: receipt.signature_hex,
|
|
647
|
-
}
|
|
648
|
-
: null,
|
|
649
|
-
/**
|
|
650
|
-
* PRESENT IN SHAPE, ABSENT IN FACT — and it names who would assert it, exactly as the other
|
|
651
|
-
* two do. A reader mapping over this array can then tell "nobody holds this" from "the relay
|
|
652
|
-
* said no", which a bare `null` cannot. It is not inference: `held: false` is a statement
|
|
653
|
-
* about what THIS side has, never about the counterparty.
|
|
654
|
-
*/
|
|
655
|
-
delivered: {
|
|
656
|
-
asserted_by: "relay",
|
|
657
|
-
held: false,
|
|
658
|
-
why_absent: "a relay tells the RECIPIENT when it hands content over and never tells the sender, so " +
|
|
659
|
-
"this side holds no relay-asserted delivery evidence for any message. It is left absent " +
|
|
660
|
-
"rather than filled in from this machine's own send having succeeded, which would be " +
|
|
661
|
-
"this machine asserting a relay's fact about itself",
|
|
662
|
-
},
|
|
663
|
-
acknowledged: ack
|
|
664
|
-
? {
|
|
665
|
-
asserted_by: "recipient",
|
|
666
|
-
signer_pubkey: ack.signer_pubkey,
|
|
667
|
-
signature: Buffer.from(ack.signature).toString("hex"),
|
|
668
|
-
recorded_at: ack.recorded_at,
|
|
669
|
-
}
|
|
670
|
-
: null,
|
|
671
|
-
};
|
|
672
|
-
});
|
|
673
|
-
}
|
|
674
569
|
//# sourceMappingURL=session-delivery-acks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-delivery-acks.js","sourceRoot":"","sources":["../src/session-delivery-acks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-delivery-acks.js","sourceRoot":"","sources":["../src/session-delivery-acks.ts"],"names":[],"mappings":"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"}
|
package/dist/session-notify.js
CHANGED
|
@@ -93,7 +93,7 @@ export function createSessionNotify(deps) {
|
|
|
93
93
|
getNotificationDispatcher().dispatchSessionStateChanged(agentName, sessionId, state, counterpartyPubkey, who);
|
|
94
94
|
void sendTelegramDoorbell(agentName, sessionId, "state_change", `Session ${state}`);
|
|
95
95
|
// Reviewer HIGH fix (a60d68ed): telegramRungUnread had NO cleanup at all — a session that
|
|
96
|
-
// rings once and is never read via cello_receive
|
|
96
|
+
// rings once and is never read via cello_receive (e.g. the operator only ever uses
|
|
97
97
|
// cello_get_transcript, which does not advance the read watermark) left a permanent entry for
|
|
98
98
|
// the life of the daemon process. Every state change is a natural point to drop it — the
|
|
99
99
|
// worst case if the session is still genuinely active is one possible extra ring later, far
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-notify.js","sourceRoot":"","sources":["../src/session-notify.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"session-notify.js","sourceRoot":"","sources":["../src/session-notify.ts"],"names":[],"mappings":"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"}
|
|
@@ -299,7 +299,7 @@ export declare class SessionQueries {
|
|
|
299
299
|
* Returns the sealed root and the parsed legibility object (JSON-safe, hex pubkeys), or
|
|
300
300
|
* null if the session is unknown or not yet sealed. This is the cert-read surface a
|
|
301
301
|
* reader (operator, agent, arbitrator) — possibly in a DIFFERENT process than the one
|
|
302
|
-
* that built the certificate — uses to determine
|
|
302
|
+
* that built the certificate — uses to determine per-party frontiers,
|
|
303
303
|
* attestation modes, and whether the final message was answered.
|
|
304
304
|
*/
|
|
305
305
|
getSealCertificate(agentName: string, sessionId: string): {
|
package/dist/session-queries.js
CHANGED
|
@@ -551,7 +551,7 @@ export class SessionQueries {
|
|
|
551
551
|
* Returns the sealed root and the parsed legibility object (JSON-safe, hex pubkeys), or
|
|
552
552
|
* null if the session is unknown or not yet sealed. This is the cert-read surface a
|
|
553
553
|
* reader (operator, agent, arbitrator) — possibly in a DIFFERENT process than the one
|
|
554
|
-
* that built the certificate — uses to determine
|
|
554
|
+
* that built the certificate — uses to determine per-party frontiers,
|
|
555
555
|
* attestation modes, and whether the final message was answered.
|
|
556
556
|
*/
|
|
557
557
|
getSealCertificate(agentName, sessionId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-read-handlers.d.ts","sourceRoot":"","sources":["../src/session-read-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAwD,MAAM,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAA0B,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC5F,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAW/E,MAAM,WAAW,eAAe;IAC9B,uGAAuG;IACvG,kBAAkB,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,YAAY,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,CAAC;IAC9D,mBAAmB,EAAE,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,EAAE,aAAa,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjG,yBAAyB,EAAE,OAAO,CAAC;IACnC,6FAA6F;IAC7F,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAC/G;;;;;;;;;;;OAWG;IACH,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7D;;;;;OAKG;IACH;;;;OAIG;IACH,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;IAClF,6EAA6E;IAC7E,iBAAiB,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACzG,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACzG;;;;;OAKG;IACH,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,wBAAwB,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,CACpB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACpE;
|
|
1
|
+
{"version":3,"file":"session-read-handlers.d.ts","sourceRoot":"","sources":["../src/session-read-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAwD,MAAM,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAA0B,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC5F,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAW/E,MAAM,WAAW,eAAe;IAC9B,uGAAuG;IACvG,kBAAkB,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,YAAY,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,CAAC;IAC9D,mBAAmB,EAAE,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,EAAE,aAAa,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjG,yBAAyB,EAAE,OAAO,CAAC;IACnC,6FAA6F;IAC7F,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAC/G;;;;;;;;;;;OAWG;IACH,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7D;;;;;OAKG;IACH;;;;OAIG;IACH,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;IAClF,6EAA6E;IAC7E,iBAAiB,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACzG,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACzG;;;;;OAKG;IACH,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,wBAAwB,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,CACpB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACpE;AAmDD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CA6pBvE"}
|
|
@@ -4,73 +4,56 @@ import { renderFrontierMismatch } from "./frontier-mismatch.js";
|
|
|
4
4
|
import { describeSealFailed } from "./seal-failure-store.js";
|
|
5
5
|
import { contentEncryptionGuidanceFor } from "./content-encryption-status.js";
|
|
6
6
|
import { frameQuarantinedPayload } from "./quarantine-framing.js";
|
|
7
|
-
import {
|
|
7
|
+
import { readSealedConversation } from "./sealed-conversation.js";
|
|
8
8
|
/**
|
|
9
9
|
* DOD-M15-AWAYSCOPE-1: one budget for ALL the attendance probes a list fires, not one each. Set by
|
|
10
10
|
* what a person will sit through at a terminal, not by what a slow relay might need.
|
|
11
11
|
*/
|
|
12
12
|
const ATTENDANCE_PROBE_BUDGET_MS = 1_500;
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* The seal answer: the conversation the seal covers, one line per leaf, in the relay's numbering.
|
|
15
15
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* recipient's own signature). Each is present or absent on its own.
|
|
16
|
+
* Each leaf carries the two signatures that prove it — `relay_ack` (the relay numbered it) and, on
|
|
17
|
+
* messages, `delivery_ack` (the recipient's machine received it). A null signature is an absence
|
|
18
|
+
* of evidence and nothing more: an acknowledgement can be lost with a connection.
|
|
20
19
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* many blameless reasons a fact is absent: the relay parked the content and never delivered it, the
|
|
24
|
-
* recipient's daemon died between ordering and pull, their per-recipient queue hit its bound and
|
|
25
|
-
* dropped the oldest frame, the screener refused it, or it was quarantined on arrival. `note` says
|
|
26
|
-
* so in the payload rather than in prose a caller may never surface.
|
|
27
|
-
*
|
|
28
|
-
* 🚨 AND THIS IS NOT ASSENT. An acknowledgement says a machine received bytes, signed on ingest,
|
|
29
|
-
* before any human read them. `legibility.implies_assent` stays the literal `false` and this
|
|
30
|
-
* section adds nothing to it.
|
|
31
|
-
*
|
|
32
|
-
* ⚠️ IT IS NOT PART OF THE DIRECTORY-SIGNED `legibility`, DELIBERATELY. The legibility object's
|
|
33
|
-
* canonical bytes are folded into the FROST-signed seal, and the directory never sees an
|
|
34
|
-
* acknowledgement — putting these there would have the directory signing a per-message claim
|
|
35
|
-
* supplied by one of the two parties, which proves nothing about it. `asserted_by` names who stands
|
|
36
|
-
* behind each fact instead, and the acknowledgement carries the signature itself so a reader can
|
|
37
|
-
* check it against the counterparty's key rather than taking this daemon's word.
|
|
20
|
+
* The answer states what the seal attests and stays silent on what it does not. It never says the
|
|
21
|
+
* conversation is or is not an agreement: seals may later be offered as evidence of one.
|
|
38
22
|
*/
|
|
39
|
-
function
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
23
|
+
function sealedAnswer(sessionNodeManager, logger, resolveWho, agentName, sessionId, sealedRoot) {
|
|
24
|
+
const db = sessionNodeManager.getDb();
|
|
25
|
+
const agentId = sessionNodeManager.resolveAgentId(agentName);
|
|
26
|
+
const agentPubkey = db.prepare("SELECT k_local_pubkey FROM agents WHERE agent_id = ?").get(agentId)?.k_local_pubkey;
|
|
27
|
+
if (!agentPubkey) {
|
|
28
|
+
// The agent was resolved a step earlier, so a row with no key is a corrupt local database. An
|
|
29
|
+
// empty key would match no relay record and read as a conversation with nothing numbered.
|
|
30
|
+
throw new Error(`agent_pubkey_unresolved: agent '${agentName}' has no identity key in this database`);
|
|
31
|
+
}
|
|
32
|
+
const texts = new Map();
|
|
33
|
+
for (const m of sessionNodeManager.readTranscript(agentName, sessionId).messages)
|
|
34
|
+
texts.set(m.sequence, m.text);
|
|
35
|
+
const conversation = readSealedConversation(db, logger, {
|
|
36
|
+
agentId, agentPubkey, sessionId, sealedRoot, texts,
|
|
37
|
+
nameFor: (pk) => (pk === agentPubkey ? agentName : resolveWho(agentName, pk, sessionId).who),
|
|
38
|
+
});
|
|
44
39
|
return {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
"with no acknowledgement may well have been delivered and read, and the acknowledgement " +
|
|
54
|
-
"lost with the connection. Nothing here implies agreement to anything.\n\n" +
|
|
55
|
-
"`acknowledged` is NOT `legibility.final_message.answered` and neither can stand in for the " +
|
|
56
|
-
"other. `answered` says the other party AUTHORED something after your last message. " +
|
|
57
|
-
"`acknowledged` says their MACHINE took delivery of it, signed before any human read it. " +
|
|
58
|
-
"The combination that carries the most meaning is the one they cannot express separately: " +
|
|
59
|
-
"answered false AND acknowledged present — it reached them and they did not reply. Neither " +
|
|
60
|
-
"is agreement.",
|
|
61
|
-
},
|
|
40
|
+
session_id: sessionId,
|
|
41
|
+
sealed: true,
|
|
42
|
+
sealed_root: sealedRoot,
|
|
43
|
+
root_matches_my_transcript: conversation.root_matches_my_transcript,
|
|
44
|
+
...(conversation.root_mismatch_reason ? { root_mismatch_reason: conversation.root_mismatch_reason } : {}),
|
|
45
|
+
leaves: conversation.leaves,
|
|
46
|
+
closed_by: conversation.closed_by,
|
|
47
|
+
note: SEAL_NOTE,
|
|
62
48
|
};
|
|
63
49
|
}
|
|
50
|
+
/** Settled wording (2026-09-14). Neutral on agreement: seals may later back commercial agreements. */
|
|
51
|
+
const SEAL_NOTE = "Attests that this conversation took place between these two agents, in this order, unaltered.";
|
|
64
52
|
export function registerSessionReadHandlers(deps) {
|
|
65
53
|
const { handlers, logger, sessionNodeManager, loadedAgents, getConnState, resolveCurrentAgent, NO_CURRENT_AGENT_RESPONSE, resolveWho, safeCursorAdvance, safeWatermarkAdvance, attendanceCount, reapDeadHalfOpenSessions, frontierMismatches, isSealing, getSealFailure, } = deps;
|
|
66
|
-
// ───
|
|
67
|
-
// The cert-read surface: returns the receipt-not-assent certificate for a sealed session —
|
|
68
|
-
// per-party content frontiers, attestation modes, and whether the final message was answered.
|
|
54
|
+
// ─── The sealed-receipt read surface ───
|
|
69
55
|
// Reads the PERSISTED record, so it works after a daemon restart and from a DIFFERENT process
|
|
70
|
-
// than the one that built the certificate (an arbitrator reading the receiving side).
|
|
71
|
-
// legibility states, as a first-class machine-readable property, that a signature attests
|
|
72
|
-
// receipt — never assent (implies_assent: false); a malicious unanswered tail reads as
|
|
73
|
-
// delivered-but-unanswered (final_message.answered: false), never agreed.
|
|
56
|
+
// than the one that built the certificate (an arbitrator reading the receiving side).
|
|
74
57
|
handlers.set("cello_get_sealed_receipt", async (params, connectionId) => {
|
|
75
58
|
// cello-mcp forwards this as { session_id } (snake_case, matching the other session tools).
|
|
76
59
|
const sessionId = params?.["session_id"];
|
|
@@ -92,46 +75,16 @@ export function registerSessionReadHandlers(deps) {
|
|
|
92
75
|
// hold the id, so the name is free context. It is display only: nothing in the certificate,
|
|
93
76
|
// the sealed root, or the legibility object is derived from it.
|
|
94
77
|
const sessionName = sessionNodeManager.getSessionRecord(agentName, sessionId)?.session_name ?? null;
|
|
95
|
-
// DOD-FIRSTMSG-WITNESS-1 AC8: say HOW MUCH the certificate covers
|
|
96
|
-
//
|
|
97
|
-
//
|
|
98
|
-
//
|
|
99
|
-
//
|
|
100
|
-
//
|
|
101
|
-
// never the measure; coverage is, and coverage was not reported anywhere.
|
|
102
|
-
//
|
|
103
|
-
// Both counts, because they answer different questions. `leaf_count` is the whole sealed tree
|
|
104
|
-
// (content AND the control leaves the seal itself appends). `content_leaf_count` is the
|
|
105
|
-
// messages, and it is the one comparable to a transcript length — conflating them would make
|
|
106
|
-
// the check drift by the number of ctrl leaves and read as a defect when nothing is wrong.
|
|
107
|
-
const tree = sessionNodeManager.getSessionTree(agentName, sessionId);
|
|
108
|
-
const leaves = tree.leaves();
|
|
78
|
+
// DOD-FIRSTMSG-WITNESS-1 AC8: say HOW MUCH the certificate covers — a certificate once sealed a
|
|
79
|
+
// record short its opening message and every surface still said "sealed". The leaves list is
|
|
80
|
+
// the coverage now, and a message the relay never numbered is listed, unnumbered.
|
|
81
|
+
// `root_matches_my_transcript` is this side's own check, recomputed from the relay's numbered
|
|
82
|
+
// leaves and tied to the local transcript — never copied from the certificate, which both
|
|
83
|
+
// sides read identically and so could not show a certificate over the wrong leaf set.
|
|
109
84
|
return {
|
|
110
85
|
ok: true,
|
|
111
|
-
|
|
86
|
+
...sealedAnswer(sessionNodeManager, logger, resolveWho, agentName, sessionId, cert.sealed_root),
|
|
112
87
|
session_name: sessionName,
|
|
113
|
-
sealed_root: cert.sealed_root,
|
|
114
|
-
/**
|
|
115
|
-
* DOD-M15-SEALWIRE-1 bullet 8: THIS SIDE'S OWN ROOT, computed from its own leaves — never
|
|
116
|
-
* copied from the certificate.
|
|
117
|
-
*
|
|
118
|
-
* `sealed_root` above is the CERTIFICATE's root. Every spine journey asserted that both
|
|
119
|
-
* parties' `sealed_root` matched, and that assertion is hollow: both sides read the same
|
|
120
|
-
* field out of the same certificate, so it stays green **even if the directory certified a
|
|
121
|
-
* root over a completely different leaf set than the one either party actually holds**. It
|
|
122
|
-
* proves the two clients received identical bytes, which was never the question.
|
|
123
|
-
*
|
|
124
|
-
* The question is whether the certificate covers THIS party's conversation. Only a root
|
|
125
|
-
* derived locally can answer that, and until now nothing exposed one — so no test could
|
|
126
|
-
* make the assertion, which is why ten of them made the weaker one instead.
|
|
127
|
-
*
|
|
128
|
-
* Read-only and derived: `rootHex()` recomputes from the stored leaves.
|
|
129
|
-
*/
|
|
130
|
-
local_tree_root: tree.rootHex(),
|
|
131
|
-
leaf_count: leaves.length,
|
|
132
|
-
content_leaf_count: leaves.filter((l) => l.kind === "msg").length,
|
|
133
|
-
legibility: cert.legibility,
|
|
134
|
-
...deliverySection(sessionNodeManager, logger, agentName, sessionId),
|
|
135
88
|
};
|
|
136
89
|
}
|
|
137
90
|
// M8C-INBOX-1 (F4): the single `sealed_receipt_not_found` conflated four distinct causes, so a
|
|
@@ -162,20 +115,14 @@ export function registerSessionReadHandlers(deps) {
|
|
|
162
115
|
const recovered = sessionNodeManager.getSealCertificate(agentName, sessionId);
|
|
163
116
|
if (recovered) {
|
|
164
117
|
const recoveredName = sessionNodeManager.getSessionRecord(agentName, sessionId)?.session_name ?? null;
|
|
165
|
-
const recoveredLeaves = sessionNodeManager.getSessionTree(agentName, sessionId).leaves();
|
|
166
118
|
logger.info("seal.certificate.recovered_on_read", {
|
|
167
119
|
agentName, sessionId,
|
|
168
120
|
impact: "the seal existed and this side had never been told; the receipt is now local",
|
|
169
121
|
});
|
|
170
122
|
return {
|
|
171
123
|
ok: true,
|
|
172
|
-
|
|
124
|
+
...sealedAnswer(sessionNodeManager, logger, resolveWho, agentName, sessionId, recovered.sealed_root),
|
|
173
125
|
session_name: recoveredName,
|
|
174
|
-
sealed_root: recovered.sealed_root,
|
|
175
|
-
leaf_count: recoveredLeaves.length,
|
|
176
|
-
content_leaf_count: recoveredLeaves.filter((l) => l.kind === "msg").length,
|
|
177
|
-
legibility: recovered.legibility,
|
|
178
|
-
...deliverySection(sessionNodeManager, logger, agentName, sessionId),
|
|
179
126
|
verified: pulled.verified === true,
|
|
180
127
|
...(pulled.verified === true
|
|
181
128
|
? {}
|
|
@@ -264,6 +211,21 @@ export function registerSessionReadHandlers(deps) {
|
|
|
264
211
|
guidance: "No session with this id belongs to the current agent. Run cello_sessions to see the full ids of this agent's sessions.",
|
|
265
212
|
};
|
|
266
213
|
});
|
|
214
|
+
// The stored seal certificate, as the directory signed it — per-side frontiers, attestation modes,
|
|
215
|
+
// whether the last message was answered. The seal ANSWER no longer carries it, so journeys and
|
|
216
|
+
// auditors read it here. IPC only, deliberately not a tool: an operator reads the conversation.
|
|
217
|
+
handlers.set("seal_certificate", async (params, connectionId) => {
|
|
218
|
+
const sessionId = params?.["session_id"];
|
|
219
|
+
if (typeof sessionId !== "string" || !sessionId)
|
|
220
|
+
return { ok: false, reason: "missing_session_id" };
|
|
221
|
+
const agentName = resolveCurrentAgent(getConnState(connectionId), params?.agent);
|
|
222
|
+
if (!agentName)
|
|
223
|
+
return NO_CURRENT_AGENT_RESPONSE;
|
|
224
|
+
const cert = sessionNodeManager.getSealCertificate(agentName, sessionId);
|
|
225
|
+
return cert
|
|
226
|
+
? { ok: true, session_id: sessionId, sealed_root: cert.sealed_root, legibility: cert.legibility }
|
|
227
|
+
: { ok: false, reason: "not_sealed" };
|
|
228
|
+
});
|
|
267
229
|
// DOD-LOG-1 (PERSIST-LOG-001): read the durable, decrypted conversation transcript for a session —
|
|
268
230
|
// the readable sent+received messages in canonical-sequence order, recovered AFTER a daemon restart
|
|
269
231
|
// (not just the opaque hash chain). The plaintext is decrypted from the encrypted-at-rest store here,
|