@cello-protocol/daemon 0.0.53 → 0.0.54
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/agent-handlers.d.ts +57 -0
- package/dist/agent-handlers.d.ts.map +1 -0
- package/dist/agent-handlers.js +360 -0
- package/dist/agent-handlers.js.map +1 -0
- package/dist/agent-id-migration.d.ts.map +1 -1
- package/dist/agent-id-migration.js +1 -0
- package/dist/agent-id-migration.js.map +1 -1
- package/dist/agent-loader.d.ts +3 -4
- package/dist/agent-loader.d.ts.map +1 -1
- package/dist/agent-loader.js +3 -4
- package/dist/agent-loader.js.map +1 -1
- package/dist/cbor-blob-migration.d.ts +8 -0
- package/dist/cbor-blob-migration.d.ts.map +1 -0
- package/dist/cbor-blob-migration.js +115 -0
- package/dist/cbor-blob-migration.js.map +1 -0
- package/dist/close-session-handler.d.ts +41 -0
- package/dist/close-session-handler.d.ts.map +1 -0
- package/dist/close-session-handler.js +399 -0
- package/dist/close-session-handler.js.map +1 -0
- package/dist/consortium-bootstrap.d.ts +83 -0
- package/dist/consortium-bootstrap.d.ts.map +1 -0
- package/dist/consortium-bootstrap.js +120 -0
- package/dist/consortium-bootstrap.js.map +1 -0
- package/dist/contact-handlers.d.ts +56 -0
- package/dist/contact-handlers.d.ts.map +1 -0
- package/dist/contact-handlers.js +303 -0
- package/dist/contact-handlers.js.map +1 -0
- package/dist/content-park-client.d.ts.map +1 -1
- package/dist/content-park-client.js +7 -7
- package/dist/content-park-client.js.map +1 -1
- package/dist/content-park.d.ts +15 -0
- package/dist/content-park.d.ts.map +1 -0
- package/dist/content-park.js +227 -0
- package/dist/content-park.js.map +1 -0
- package/dist/daemon.d.ts +0 -11
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +407 -4552
- package/dist/daemon.js.map +1 -1
- package/dist/db-identity-store.d.ts +31 -35
- package/dist/db-identity-store.d.ts.map +1 -1
- package/dist/db-identity-store.js +62 -66
- package/dist/db-identity-store.js.map +1 -1
- package/dist/directory-bootstrap.d.ts +27 -31
- package/dist/directory-bootstrap.d.ts.map +1 -1
- package/dist/directory-bootstrap.js +18 -21
- package/dist/directory-bootstrap.js.map +1 -1
- package/dist/frame-values.d.ts +3 -0
- package/dist/frame-values.d.ts.map +1 -0
- package/dist/frame-values.js +73 -0
- package/dist/frame-values.js.map +1 -0
- package/dist/identity-migration.d.ts +8 -8
- package/dist/identity-migration.d.ts.map +1 -1
- package/dist/identity-migration.js +30 -31
- package/dist/identity-migration.js.map +1 -1
- package/dist/inbound-seal-request.d.ts +17 -0
- package/dist/inbound-seal-request.d.ts.map +1 -0
- package/dist/inbound-seal-request.js +155 -0
- package/dist/inbound-seal-request.js.map +1 -0
- package/dist/inbound-sessions.d.ts +54 -0
- package/dist/inbound-sessions.d.ts.map +1 -0
- package/dist/inbound-sessions.js +603 -0
- package/dist/inbound-sessions.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -10
- package/dist/index.js.map +1 -1
- package/dist/initiate-session-handler.d.ts +22 -0
- package/dist/initiate-session-handler.d.ts.map +1 -0
- package/dist/initiate-session-handler.js +150 -0
- package/dist/initiate-session-handler.js.map +1 -0
- package/dist/network-directory-node.d.ts +6 -6
- package/dist/network-directory-node.d.ts.map +1 -1
- package/dist/network-directory-node.js +29 -28
- package/dist/network-directory-node.js.map +1 -1
- package/dist/notification-handlers.d.ts +32 -0
- package/dist/notification-handlers.d.ts.map +1 -0
- package/dist/notification-handlers.js +73 -0
- package/dist/notification-handlers.js.map +1 -0
- package/dist/outbound-sessions.d.ts +54 -0
- package/dist/outbound-sessions.d.ts.map +1 -0
- package/dist/outbound-sessions.js +429 -0
- package/dist/outbound-sessions.js.map +1 -0
- package/dist/park-envelope.d.ts.map +1 -1
- package/dist/park-envelope.js +3 -2
- package/dist/park-envelope.js.map +1 -1
- package/dist/register-handler.d.ts +35 -0
- package/dist/register-handler.d.ts.map +1 -0
- package/dist/register-handler.js +179 -0
- package/dist/register-handler.js.map +1 -0
- package/dist/registration-manager.d.ts.map +1 -1
- package/dist/registration-manager.js +3 -6
- package/dist/registration-manager.js.map +1 -1
- package/dist/relay-receipt-store.d.ts.map +1 -1
- package/dist/relay-receipt-store.js +1 -2
- package/dist/relay-receipt-store.js.map +1 -1
- package/dist/retry-queue.d.ts +18 -60
- package/dist/retry-queue.d.ts.map +1 -1
- package/dist/retry-queue.js +46 -97
- package/dist/retry-queue.js.map +1 -1
- package/dist/seal-coordinator.d.ts +47 -0
- package/dist/seal-coordinator.d.ts.map +1 -0
- package/dist/seal-coordinator.js +551 -0
- package/dist/seal-coordinator.js.map +1 -0
- package/dist/seal-flows.d.ts +50 -0
- package/dist/seal-flows.d.ts.map +1 -0
- package/dist/seal-flows.js +454 -0
- package/dist/seal-flows.js.map +1 -0
- package/dist/seal-frontier-verify.d.ts +9 -9
- package/dist/seal-frontier-verify.d.ts.map +1 -1
- package/dist/seal-frontier-verify.js +11 -12
- package/dist/seal-frontier-verify.js.map +1 -1
- package/dist/seal-leaf.d.ts +58 -0
- package/dist/seal-leaf.d.ts.map +1 -0
- package/dist/seal-leaf.js +111 -0
- package/dist/seal-leaf.js.map +1 -0
- package/dist/seal-receipt-upgrade.d.ts +1 -1
- package/dist/seal-receipt-upgrade.js +1 -1
- package/dist/seal-upgrade.d.ts +10 -10
- package/dist/seal-upgrade.d.ts.map +1 -1
- package/dist/seal-upgrade.js +23 -24
- package/dist/seal-upgrade.js.map +1 -1
- package/dist/session-assignment-parser.d.ts +16 -19
- package/dist/session-assignment-parser.d.ts.map +1 -1
- package/dist/session-assignment-parser.js +30 -29
- package/dist/session-assignment-parser.js.map +1 -1
- package/dist/session-ceremony.d.ts +3 -6
- package/dist/session-ceremony.d.ts.map +1 -1
- package/dist/session-ceremony.js +7 -9
- package/dist/session-ceremony.js.map +1 -1
- package/dist/session-content-handlers.d.ts +25 -0
- package/dist/session-content-handlers.d.ts.map +1 -0
- package/dist/session-content-handlers.js +436 -0
- package/dist/session-content-handlers.js.map +1 -0
- package/dist/session-name.d.ts +35 -0
- package/dist/session-name.d.ts.map +1 -0
- package/dist/session-name.js +60 -0
- package/dist/session-name.js.map +1 -0
- package/dist/session-node-manager.d.ts +26 -62
- package/dist/session-node-manager.d.ts.map +1 -1
- package/dist/session-node-manager.js +115 -92
- package/dist/session-node-manager.js.map +1 -1
- package/dist/session-read-handlers.d.ts +38 -0
- package/dist/session-read-handlers.d.ts.map +1 -0
- package/dist/session-read-handlers.js +233 -0
- package/dist/session-read-handlers.js.map +1 -0
- package/dist/session-relay-client.d.ts +8 -8
- package/dist/session-relay-client.d.ts.map +1 -1
- package/dist/session-relay-client.js +44 -46
- package/dist/session-relay-client.js.map +1 -1
- package/dist/session-tree.d.ts +11 -23
- package/dist/session-tree.d.ts.map +1 -1
- package/dist/session-tree.js +14 -26
- package/dist/session-tree.js.map +1 -1
- package/dist/signaling-connect.d.ts +2 -5
- package/dist/signaling-connect.d.ts.map +1 -1
- package/dist/signaling-connect.js +7 -12
- package/dist/signaling-connect.js.map +1 -1
- package/dist/sqlcipher-db.d.ts +18 -19
- package/dist/sqlcipher-db.d.ts.map +1 -1
- package/dist/sqlcipher-db.js +30 -30
- package/dist/sqlcipher-db.js.map +1 -1
- package/dist/telegram-doorbell.d.ts +38 -0
- package/dist/telegram-doorbell.d.ts.map +1 -0
- package/dist/telegram-doorbell.js +139 -0
- package/dist/telegram-doorbell.js.map +1 -0
- package/dist/types.d.ts +86 -79
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -1
- package/dist/types.js.map +1 -1
- package/dist/vocabulary.d.ts +30 -30
- package/dist/vocabulary.d.ts.map +1 -1
- package/dist/vocabulary.js +41 -49
- package/dist/vocabulary.js.map +1 -1
- package/package.json +5 -5
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
* stranger cannot drain another recipient's mailbox (the recipient pubkey is public).
|
|
25
25
|
*/
|
|
26
26
|
import * as lp from "it-length-prefixed";
|
|
27
|
-
import {
|
|
27
|
+
import { decode } from "cbor-x";
|
|
28
|
+
import { encodeCbor } from "@cello-protocol/protocol-types";
|
|
28
29
|
import { CONTENT_PARK_PROTOCOL_ID, buildContentParkAuthMsg } from "@cello-protocol/protocol-types";
|
|
29
|
-
const CBOR_ENC = new Encoder({ tagUint8Array: false });
|
|
30
30
|
const FRAME_TIMEOUT_MS = 8_000;
|
|
31
31
|
function toU8(chunk) {
|
|
32
32
|
if (chunk instanceof Uint8Array)
|
|
@@ -61,7 +61,7 @@ export class ContentParkClient {
|
|
|
61
61
|
const stream = await this.#open(node);
|
|
62
62
|
try {
|
|
63
63
|
const iter = this.#iter(stream);
|
|
64
|
-
stream.send(lp.encode.single(
|
|
64
|
+
stream.send(lp.encode.single(encodeCbor({
|
|
65
65
|
type: "content_park_deposit",
|
|
66
66
|
recipient_pubkey: args.recipientPubkey,
|
|
67
67
|
content_hash: args.contentHash,
|
|
@@ -93,7 +93,7 @@ export class ContentParkClient {
|
|
|
93
93
|
const stream = await this.#open(node);
|
|
94
94
|
try {
|
|
95
95
|
const iter = this.#iter(stream);
|
|
96
|
-
stream.send(lp.encode.single(
|
|
96
|
+
stream.send(lp.encode.single(encodeCbor({ type: "content_park_pull_request", recipient_pubkey: recipientPubkey })));
|
|
97
97
|
// I1 auth challenge → response.
|
|
98
98
|
const challenge = await this.#read(iter);
|
|
99
99
|
if (!challenge || challenge["type"] !== "content_park_auth_challenge") {
|
|
@@ -104,7 +104,7 @@ export class ContentParkClient {
|
|
|
104
104
|
if (!nonce)
|
|
105
105
|
return [];
|
|
106
106
|
const signature = await signer.sign(buildContentParkAuthMsg(nonce, recipientPubkey));
|
|
107
|
-
stream.send(lp.encode.single(
|
|
107
|
+
stream.send(lp.encode.single(encodeCbor({ type: "content_park_auth_response", signature })));
|
|
108
108
|
// Count header, then N responses.
|
|
109
109
|
const countFrame = await this.#read(iter);
|
|
110
110
|
if (!countFrame || countFrame["type"] !== "content_park_pull_count") {
|
|
@@ -148,7 +148,7 @@ export class ContentParkClient {
|
|
|
148
148
|
const stream = await this.#open(node);
|
|
149
149
|
try {
|
|
150
150
|
const iter = this.#iter(stream);
|
|
151
|
-
stream.send(lp.encode.single(
|
|
151
|
+
stream.send(lp.encode.single(encodeCbor({ type: "content_park_confirm", recipient_pubkey: recipientPubkey, content_hash: contentHash })));
|
|
152
152
|
const challenge = await this.#read(iter);
|
|
153
153
|
if (!challenge || challenge["type"] !== "content_park_auth_challenge") {
|
|
154
154
|
this.#logger.warn("content.park.confirm.failed", { relayPeerId: this.#relayPeerId, reason: "no_auth_challenge" });
|
|
@@ -158,7 +158,7 @@ export class ContentParkClient {
|
|
|
158
158
|
if (!nonce)
|
|
159
159
|
return false;
|
|
160
160
|
const signature = await signer.sign(buildContentParkAuthMsg(nonce, recipientPubkey));
|
|
161
|
-
stream.send(lp.encode.single(
|
|
161
|
+
stream.send(lp.encode.single(encodeCbor({ type: "content_park_auth_response", signature })));
|
|
162
162
|
const ack = await this.#read(iter);
|
|
163
163
|
const ok = !!ack && ack["type"] === "content_park_confirm_ack" && ack["ok"] === true;
|
|
164
164
|
if (!ok)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-park-client.js","sourceRoot":"","sources":["../src/content-park-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"content-park-client.js","sourceRoot":"","sources":["../src/content-park-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { IpcHandler } from "./ipc-server.js";
|
|
2
|
+
import type { SessionNodeManager } from "./session-node-manager.js";
|
|
3
|
+
import type { AgentInfo, Logger } from "./types.js";
|
|
4
|
+
import type { KeyProvider } from "@cello-protocol/crypto";
|
|
5
|
+
export interface ContentParkDeps {
|
|
6
|
+
logger: Logger;
|
|
7
|
+
sessionNodeManager: SessionNodeManager;
|
|
8
|
+
agents: AgentInfo[];
|
|
9
|
+
getKeyProvider: (agentName: string) => KeyProvider | undefined;
|
|
10
|
+
}
|
|
11
|
+
export declare function createContentPark(deps: ContentParkDeps): {
|
|
12
|
+
autoRecoverForAgent: (agentName: string) => Promise<void>;
|
|
13
|
+
registerHandlers: (handlers: Map<string, IpcHandler>) => void;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=content-park.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-park.d.ts","sourceRoot":"","sources":["../src/content-park.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;CAChE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe;qCAoHP,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;iCA+BhC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,KAAG,IAAI;EAgEnE"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The content park: relay store-and-forward, and recovery from it.
|
|
3
|
+
*
|
|
4
|
+
* When a counterparty is offline, content is PARKED on the relay — encrypted, so the relay never
|
|
5
|
+
* sees plaintext — and pulled when they come back. autoRecoverForAgent is what runs on reconnect.
|
|
6
|
+
*
|
|
7
|
+
* TWO-PHASE ON PURPOSE, and this is the pattern that unblocks the rest of the daemon:
|
|
8
|
+
*
|
|
9
|
+
* createContentPark(deps) — constructed EARLY, because autoRecoverForAgent is called from
|
|
10
|
+
* BOOT-TIME paths (an agent's onConnected, and the seal upgrade's
|
|
11
|
+
* content gate) that run long before the IPC handler map exists.
|
|
12
|
+
* .registerHandlers(handlers) — called LATER, once that map does exist.
|
|
13
|
+
*
|
|
14
|
+
* Fusing the two would force construction after the handler map, which puts autoRecoverForAgent in
|
|
15
|
+
* the TEMPORAL DEAD ZONE for every boot-time caller — the daemon then dies at startup with "cannot
|
|
16
|
+
* access before initialization". Separating construction from registration is what makes a module's
|
|
17
|
+
* POSITION IN THE FILE stop mattering, which is the whole reason startDaemon could be taken apart.
|
|
18
|
+
*/
|
|
19
|
+
import { randomUUID } from "node:crypto";
|
|
20
|
+
import { ContentParkClient } from "./content-park-client.js";
|
|
21
|
+
export function createContentPark(deps) {
|
|
22
|
+
const { logger, sessionNodeManager, agents, getKeyProvider } = deps;
|
|
23
|
+
// MSG-001-3b: content-park deposit/pull IPC handlers. These drive the daemon's
|
|
24
|
+
// ContentParkClient directly so the daemon↔relay store-and-forward transport can be
|
|
25
|
+
// proven (J-CONTENT increment 1) before the send/receive-path integration. The relay
|
|
26
|
+
// multiaddr (with /p2p/<peerId>) comes from the session assignment's relay endpoint;
|
|
27
|
+
// dials run from the standing receiver (open-gater) node.
|
|
28
|
+
const parseRelayPeer = (multiaddr) => {
|
|
29
|
+
if (!multiaddr)
|
|
30
|
+
return null;
|
|
31
|
+
const peerId = multiaddr.split("/p2p/")[1];
|
|
32
|
+
return peerId ? { peerId, addr: multiaddr } : null;
|
|
33
|
+
};
|
|
34
|
+
// MSG-001-3b (increment 3): RECOVER parked content. Pulls the recipient's parked entries,
|
|
35
|
+
// decrypts each IN-DAEMON (openContentSeal — the relay never sees plaintext), and routes the
|
|
36
|
+
// plaintext through ingestReceivedContent — the SAME inbound chokepoint as a direct receive
|
|
37
|
+
// (M9 single-funnel AC). The content completes the recipient's transcript view of an already-
|
|
38
|
+
// witnessed message so it can be read (cello_receive) and the session bilaterally sealed
|
|
39
|
+
// (DOD-INT-2). This is content-completion, NOT a resumption — the session stays interrupted.
|
|
40
|
+
// DOD-MSG-4: pull a recipient agent's parked mailbox from ONE relay and recover each entry through
|
|
41
|
+
// the inbound funnel (decode envelope → verify+order the signed Structure2 → ingest). Shared by the
|
|
42
|
+
// explicit IPC handler and the auto-recover-on-reconnect trigger below.
|
|
43
|
+
async function recoverParkedFromRelay(recipientAgent, relayPeerId, relayAddrs) {
|
|
44
|
+
const kp = getKeyProvider(recipientAgent.name);
|
|
45
|
+
if (!kp)
|
|
46
|
+
return { ok: false, reason: "signing_key_unavailable" };
|
|
47
|
+
if (!kp.openContentSeal)
|
|
48
|
+
return { ok: false, reason: "cannot_unseal" };
|
|
49
|
+
const node = sessionNodeManager.getStandingReceiverNode();
|
|
50
|
+
if (!node)
|
|
51
|
+
return { ok: false, reason: "standing_receiver_unavailable" };
|
|
52
|
+
const recipientPubkey = recipientAgent.pubkey ?? "";
|
|
53
|
+
const client = new ContentParkClient({ relayPeerId, relayAddrs, logger });
|
|
54
|
+
const entries = await client.pull(node, Buffer.from(recipientPubkey, "hex"), kp);
|
|
55
|
+
let recovered = 0;
|
|
56
|
+
// SEC-1 / review M2: a REFUSED entry must not vanish behind `ok:true`. Report it — an operator
|
|
57
|
+
// seeing {ok:true, pulled:3, recovered:0} would otherwise have three messages evaporate with the
|
|
58
|
+
// only explanation buried in the daemon log. This is both the injection signal and, given the
|
|
59
|
+
// deliberate no-tolerant-window rollout, the lagging-peer signal.
|
|
60
|
+
const refusals = [];
|
|
61
|
+
// AC7: one correlationId per recover flow, threaded through every event it emits.
|
|
62
|
+
const correlationId = randomUUID();
|
|
63
|
+
for (const e of entries) {
|
|
64
|
+
const unsealed = await kp.openContentSeal(e.ciphertext);
|
|
65
|
+
if (!unsealed) {
|
|
66
|
+
logger.warn("content.recover.unseal_failed", { sessionId: e.sessionIdHex, contentHash: e.contentHashHex });
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
// SEC-1: authenticate THEN ingest — fused in recoverParkedEntry, which is now the ONLY way
|
|
70
|
+
// parked content can enter the transcript. It verifies the sender's signature over
|
|
71
|
+
// (session_id, recipient_pubkey, content_hash) and that the signer is this session's
|
|
72
|
+
// counterparty, and it still verifies + records the DOD-MSG-4 ordering record when present.
|
|
73
|
+
// Relay deposit is unauthenticated and the seal is anonymous, so WITHOUT this gate anyone
|
|
74
|
+
// holding the recipient's public key — the relay above all — could inject content that gets
|
|
75
|
+
// attributed to the honest counterparty and then notarized by the bilateral seal.
|
|
76
|
+
const contentHashBytes = Buffer.from(e.contentHashHex, "hex");
|
|
77
|
+
const ingest = await sessionNodeManager.recoverParkedEntry(recipientAgent.name, e.sessionIdHex, Buffer.from(recipientPubkey, "hex"), unsealed, contentHashBytes, correlationId);
|
|
78
|
+
if (ingest.ok && ingest.held) {
|
|
79
|
+
// DOD-MSG-4 (review finding #4): a held entry is NOT yet an appended leaf — its sequence is
|
|
80
|
+
// the FUTURE canonical index, not a completed recovery. Do not count it as recovered; log it
|
|
81
|
+
// distinctly so the tally reflects leaves actually written, not content still queued in memory.
|
|
82
|
+
logger.info("content.recover.held", { sessionId: e.sessionIdHex, contentHash: e.contentHashHex, canonicalSeq: ingest.sequenceNumber });
|
|
83
|
+
}
|
|
84
|
+
else if (ingest.ok && ingest.screenedOut) {
|
|
85
|
+
// M9 (code-review LOW-3): a terminal-screened recovered entry IS durably leafed (so it must be
|
|
86
|
+
// confirm-deleted, below) but was NEVER delivered to the agent — do not count it as a delivered
|
|
87
|
+
// recovery, and log it distinctly so observability separates "delivered" from "leafed-but-screened".
|
|
88
|
+
logger.info("content.recover.screened_out", { sessionId: e.sessionIdHex, contentHash: e.contentHashHex, sequenceNumber: ingest.sequenceNumber });
|
|
89
|
+
try {
|
|
90
|
+
await client.confirm(node, Buffer.from(recipientPubkey, "hex"), contentHashBytes, kp);
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
logger.warn("content.recover.confirm.failed", { sessionId: e.sessionIdHex, contentHash: e.contentHashHex, error: err instanceof Error ? err.message : String(err) });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else if (ingest.ok) {
|
|
97
|
+
// DOD-MSG-4 (review #3): count leaves ACTUALLY written — the directly-ingested leaf PLUS any
|
|
98
|
+
// held out-of-order entries this ingest unblocked (appendedCount), not just 1.
|
|
99
|
+
recovered += ingest.appendedCount ?? 1;
|
|
100
|
+
logger.info("content.recovered", { sessionId: e.sessionIdHex, contentHash: e.contentHashHex, sequenceNumber: ingest.sequenceNumber });
|
|
101
|
+
// Delete-on-confirm (review #1): the entry is now durably ingested (a fresh leaf, or a dedup
|
|
102
|
+
// of one already present), so confirm-delete it from the relay mailbox. The relay is
|
|
103
|
+
// delete-on-CONFIRM, not delete-on-pull — without this the queue never drains and every
|
|
104
|
+
// reconnect re-pulls the whole history. Held entries are deliberately NOT confirmed (not yet
|
|
105
|
+
// durable). Best-effort: a failed confirm leaves the entry to be re-pulled + deduped next time.
|
|
106
|
+
try {
|
|
107
|
+
await client.confirm(node, Buffer.from(recipientPubkey, "hex"), contentHashBytes, kp);
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
logger.warn("content.recover.confirm.failed", { sessionId: e.sessionIdHex, contentHash: e.contentHashHex, error: err instanceof Error ? err.message : String(err) });
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
// SEC-1 (M2): carry the refusal out to the caller, not just to the log. Deliberately still
|
|
115
|
+
// NOT confirm-deleted — a forgery must not be able to evict itself from the mailbox, and a
|
|
116
|
+
// genuine v1-peer message must not be destroyed by our refusing it.
|
|
117
|
+
refusals.push({ contentHash: e.contentHashHex, sessionId: e.sessionIdHex, reason: ingest.reason });
|
|
118
|
+
logger.warn("content.recover.ingest_failed", { sessionId: e.sessionIdHex, contentHash: e.contentHashHex, reason: ingest.reason, correlationId });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return { ok: true, recovered, pulled: entries.length, refused: refusals.length, refusals };
|
|
122
|
+
}
|
|
123
|
+
// DOD-MSG-4 (auto-recover-on-reconnect): when an agent comes online, drain its parked mailbox from
|
|
124
|
+
// every relay it has sessions on — symmetric to the SENDER's flushAwaitingContent. Without this,
|
|
125
|
+
// nothing in production pulls a recipient's store-and-forward mailbox and parked content is never
|
|
126
|
+
// delivered. Best-effort; a relay miss is retried on the next agent-online.
|
|
127
|
+
async function autoRecoverForAgent(agentName) {
|
|
128
|
+
const agent = agents.find((a) => a.name === agentName);
|
|
129
|
+
if (!agent?.pubkey)
|
|
130
|
+
return;
|
|
131
|
+
const relays = sessionNodeManager.getAgentRelayEndpoints(agentName);
|
|
132
|
+
if (relays.length === 0)
|
|
133
|
+
return;
|
|
134
|
+
let total = 0;
|
|
135
|
+
let failed = 0;
|
|
136
|
+
for (const r of relays) {
|
|
137
|
+
try {
|
|
138
|
+
const res = await recoverParkedFromRelay(agent, r.relayPeerId, r.relayAddrs);
|
|
139
|
+
if (res.ok) {
|
|
140
|
+
total += res.recovered;
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
// Review #2: a non-ok result (signing_key_unavailable / cannot_unseal /
|
|
144
|
+
// standing_receiver_unavailable) was previously silent — log the reason so a run where
|
|
145
|
+
// every relay failed is distinguishable from "nothing was parked".
|
|
146
|
+
failed++;
|
|
147
|
+
logger.warn("content.recover.auto.relay_failed", { agentName, relayPeerId: r.relayPeerId, reason: res.reason });
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
failed++;
|
|
152
|
+
logger.warn("content.recover.auto.failed", { agentName, relayPeerId: r.relayPeerId, error: err instanceof Error ? err.message : String(err) });
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Emit the completion event UNCONDITIONALLY — not only when total > 0 — so a clean "nothing
|
|
156
|
+
// parked" run is observable, and distinct from an all-failed run.
|
|
157
|
+
logger.info("content.recover.auto.completed", { agentName, recovered: total, relayCount: relays.length, failedRelays: failed });
|
|
158
|
+
}
|
|
159
|
+
/** Phase 2: register the IPC handlers, once the handler map exists. */
|
|
160
|
+
function registerHandlers(handlers) {
|
|
161
|
+
handlers.set("content_park_deposit", async (params, _connectionId) => {
|
|
162
|
+
const relay = parseRelayPeer(params?.relayMultiaddr);
|
|
163
|
+
const recipientPubkey = params?.recipientPubkey;
|
|
164
|
+
const contentHash = params?.contentHash;
|
|
165
|
+
const sessionId = params?.sessionId;
|
|
166
|
+
const ciphertext = params?.ciphertext;
|
|
167
|
+
if (!relay || !recipientPubkey || !contentHash || !sessionId || !ciphertext) {
|
|
168
|
+
return { ok: false, reason: "missing_params", guidance: "Provide relayMultiaddr (with /p2p/<peerId>), recipientPubkey, contentHash, sessionId, ciphertext — all hex." };
|
|
169
|
+
}
|
|
170
|
+
const node = sessionNodeManager.getStandingReceiverNode();
|
|
171
|
+
if (!node)
|
|
172
|
+
return { ok: false, reason: "standing_receiver_unavailable", guidance: "The daemon's standing receiver is not ready yet; retry after startup." };
|
|
173
|
+
const client = new ContentParkClient({ relayPeerId: relay.peerId, relayAddrs: [relay.addr], logger });
|
|
174
|
+
return await client.deposit(node, {
|
|
175
|
+
recipientPubkey: Buffer.from(recipientPubkey, "hex"),
|
|
176
|
+
contentHash: Buffer.from(contentHash, "hex"),
|
|
177
|
+
sessionId: Buffer.from(sessionId, "hex"),
|
|
178
|
+
ciphertext: Buffer.from(ciphertext, "hex"),
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
handlers.set("content_park_pull", async (params, _connectionId) => {
|
|
182
|
+
const relay = parseRelayPeer(params?.relayMultiaddr);
|
|
183
|
+
const recipientPubkey = params?.recipientPubkey;
|
|
184
|
+
if (!relay || !recipientPubkey) {
|
|
185
|
+
return { ok: false, reason: "missing_params", guidance: "Provide relayMultiaddr (with /p2p/<peerId>) and recipientPubkey (hex)." };
|
|
186
|
+
}
|
|
187
|
+
// The recipient must be a local agent — its K_local signs the relay's auth challenge.
|
|
188
|
+
const recipientAgent = agents.find((a) => a.pubkey === recipientPubkey);
|
|
189
|
+
if (!recipientAgent)
|
|
190
|
+
return { ok: false, reason: "agent_not_found", guidance: "No local agent matches recipientPubkey; only the recipient can pull its own parked content." };
|
|
191
|
+
const kp = getKeyProvider(recipientAgent.name);
|
|
192
|
+
if (!kp)
|
|
193
|
+
return { ok: false, reason: "signing_key_unavailable", guidance: `Signing key for '${recipientAgent.name}' is not loaded.` };
|
|
194
|
+
const node = sessionNodeManager.getStandingReceiverNode();
|
|
195
|
+
if (!node)
|
|
196
|
+
return { ok: false, reason: "standing_receiver_unavailable", guidance: "The daemon's standing receiver is not ready yet; retry after startup." };
|
|
197
|
+
const client = new ContentParkClient({ relayPeerId: relay.peerId, relayAddrs: [relay.addr], logger });
|
|
198
|
+
const entries = await client.pull(node, Buffer.from(recipientPubkey, "hex"), kp);
|
|
199
|
+
return {
|
|
200
|
+
ok: true,
|
|
201
|
+
entries: entries.map((e) => ({ contentHash: e.contentHashHex, sessionId: e.sessionIdHex, ciphertext: Buffer.from(e.ciphertext).toString("hex") })),
|
|
202
|
+
};
|
|
203
|
+
});
|
|
204
|
+
handlers.set("content_park_recover", async (params, _connectionId) => {
|
|
205
|
+
const relay = parseRelayPeer(params?.relayMultiaddr);
|
|
206
|
+
const recipientPubkey = params?.recipientPubkey;
|
|
207
|
+
if (!relay || !recipientPubkey) {
|
|
208
|
+
return { ok: false, reason: "missing_params", guidance: "Provide relayMultiaddr (with /p2p/<peerId>) and recipientPubkey (hex)." };
|
|
209
|
+
}
|
|
210
|
+
const recipientAgent = agents.find((a) => a.pubkey === recipientPubkey);
|
|
211
|
+
if (!recipientAgent)
|
|
212
|
+
return { ok: false, reason: "agent_not_found", guidance: "No local agent matches recipientPubkey." };
|
|
213
|
+
const res = await recoverParkedFromRelay(recipientAgent, relay.peerId, [relay.addr]);
|
|
214
|
+
if (!res.ok) {
|
|
215
|
+
const guidanceByReason = {
|
|
216
|
+
signing_key_unavailable: `Signing key for '${recipientAgent.name}' is not loaded.`,
|
|
217
|
+
cannot_unseal: `Agent '${recipientAgent.name}' key provider cannot open content seals.`,
|
|
218
|
+
standing_receiver_unavailable: "The daemon's standing receiver is not ready yet; retry after startup.",
|
|
219
|
+
};
|
|
220
|
+
return { ok: false, reason: res.reason, guidance: guidanceByReason[res.reason] ?? "Recover failed." };
|
|
221
|
+
}
|
|
222
|
+
return { ok: true, recovered: res.recovered, pulled: res.pulled };
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
return { autoRecoverForAgent, registerHandlers };
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=content-park.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-park.js","sourceRoot":"","sources":["../src/content-park.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon.d.ts
CHANGED
|
@@ -27,7 +27,6 @@
|
|
|
27
27
|
*/
|
|
28
28
|
import type { DaemonConfig, DaemonStatusResponse } from "./types.js";
|
|
29
29
|
import { SessionNodeManager } from "./session-node-manager.js";
|
|
30
|
-
import { type CelloNode } from "@cello-protocol/transport";
|
|
31
30
|
import type { ITransportSelector } from "./transport-selector.js";
|
|
32
31
|
import { type IAutoNatService } from "@cello-protocol/transport";
|
|
33
32
|
export interface DaemonHandle {
|
|
@@ -39,16 +38,6 @@ export interface DaemonHandle {
|
|
|
39
38
|
* Not part of the production API surface.
|
|
40
39
|
*/
|
|
41
40
|
getSessionNodeManager(): SessionNodeManager;
|
|
42
|
-
/**
|
|
43
|
-
* M7 Action 2: the live directory-facing libp2p node (or null when signaling is not
|
|
44
|
-
* connected). Registration's FROST DKG and future ceremonies open streams to the
|
|
45
|
-
* directory on this node. Consumers must gate use on signaling being connected AND
|
|
46
|
-
* always null-check the result: there is a brief window during stream death where the
|
|
47
|
-
* reference is already cleared (null) while signalingManager.status still reads
|
|
48
|
-
* "connected". Null is the safe direction (never a tearing-down node); do not assume
|
|
49
|
-
* non-null just because status is connected.
|
|
50
|
-
*/
|
|
51
|
-
getDirectoryNode(): CelloNode | null;
|
|
52
41
|
/**
|
|
53
42
|
* CELLO-M7-TRANSPORT-001 (AC-010): exposes the composition-root transport
|
|
54
43
|
* selector so integration tests can confirm the adapter is wired (not dead
|
package/dist/daemon.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EAKrB,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAqB/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAIlE,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAmBnF,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,SAAS,IAAI,oBAAoB,CAAC;IAClC;;;;OAIG;IACH,qBAAqB,IAAI,kBAAkB,CAAC;IAC5C;;;;OAIG;IACH,oBAAoB,IAAI,kBAAkB,CAAC;IAC3C;;;OAGG;IACH,iBAAiB,IAAI,eAAe,CAAC;CACtC;AA2CD,eAAO,MAAM,sBAAsB,QAAsB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAS7E"}
|