@cello-protocol/daemon 0.0.52 → 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
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Directory endpoint bootstrap for the daemon.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* client going forward. The daemon must not depend on the adapter (the adapter
|
|
7
|
-
* sits ABOVE the daemon as a thin IPC proxy), so the logic lives here.
|
|
4
|
+
* The logic lives here, not in the adapter: the daemon must not depend on the
|
|
5
|
+
* adapter, which sits ABOVE it as a thin IPC proxy.
|
|
8
6
|
*
|
|
9
|
-
* Mechanism
|
|
7
|
+
* Mechanism:
|
|
10
8
|
* 1. resolveDirectoryUrl(env): CELLO_DIRECTORY_URL or the production ALB URL.
|
|
11
9
|
* 2. GET ${url}/bootstrap → { multiaddr } containing "/p2p/<peerId>".
|
|
12
10
|
* 3. The peer ID is the segment after the final "/p2p/" in the multiaddr.
|
|
@@ -23,7 +21,7 @@ import type { Logger } from "./types.js";
|
|
|
23
21
|
export declare const PRODUCTION_DIRECTORY_URL = "http://directory-us1.cello.mygentic.ai";
|
|
24
22
|
/**
|
|
25
23
|
* Resolve the directory URL from the environment, falling back to the production
|
|
26
|
-
* endpoint when CELLO_DIRECTORY_URL is not set.
|
|
24
|
+
* endpoint when CELLO_DIRECTORY_URL is not set.
|
|
27
25
|
*/
|
|
28
26
|
export declare function resolveDirectoryUrl(env?: Record<string, string | undefined>): string;
|
|
29
27
|
/**
|
|
@@ -51,12 +49,12 @@ export interface ConsortiumEndpoint {
|
|
|
51
49
|
* Validate + normalise a manifest node `endpoint` to the HTTP(S) base used for its
|
|
52
50
|
* `/bootstrap` probe, or return `null` if it is not a usable bootstrap base.
|
|
53
51
|
*
|
|
54
|
-
* CONTRACT
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
52
|
+
* CONTRACT: a manifest `endpoint` is the node's HTTP(S) `/bootstrap` base — production
|
|
53
|
+
* directories serve `/bootstrap` over plaintext HTTP behind the ALB (matching
|
|
54
|
+
* PRODUCTION_DIRECTORY_URL, which is `http://…:80`). The wss libp2p DIAL address is
|
|
55
|
+
* returned BY `/bootstrap`; it is NOT the endpoint. Do NOT accept (or port-guess) a
|
|
56
|
+
* `wss://host:443` value — mapping that to `http://host:443` speaks plaintext to the
|
|
57
|
+
* TLS port and silently fails. Anything
|
|
60
58
|
* that is not `http(s)://` (a bare multiaddr, a wss dial address, a typo) is a config
|
|
61
59
|
* error in officer-SIGNED data: return null so the caller logs it DISTINCTLY from a
|
|
62
60
|
* transient outage and never dials a wrong port. A single trailing slash is stripped
|
|
@@ -72,7 +70,7 @@ export interface ManifestResolveOptions {
|
|
|
72
70
|
* Resolve every consortium node in the manifest's node set to a live directory
|
|
73
71
|
* endpoint by probing each node's `/bootstrap` (in parallel, order preserved).
|
|
74
72
|
*
|
|
75
|
-
* AVAILABILITY-AWARE (
|
|
73
|
+
* AVAILABILITY-AWARE (the sovereign-node redundancy invariant): a node whose bootstrap is
|
|
76
74
|
* unreachable is SKIPPED with a warning — one node down must never strand the others,
|
|
77
75
|
* because a T-of-N ceremony only needs T of the N. Returns the resolved subset
|
|
78
76
|
* (possibly empty). The CALLER decides whether the resolved count meets the threshold;
|
|
@@ -89,12 +87,11 @@ export interface DirectoryEndpointResolverOptions {
|
|
|
89
87
|
/**
|
|
90
88
|
* Whether a fresh /bootstrap failure falls back to the last known-good endpoint (default true).
|
|
91
89
|
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
* (true) preserves the M6/single-node backward-compat behavior for callers that are NOT wrapped.
|
|
90
|
+
* MUST be FALSE when this resolver is the PRIMARY probe inside createRosterAwareEndpointResolver.
|
|
91
|
+
* There, the stale-last-known-good fallback is HARMFUL — it masks a dead primary (a fresh failure
|
|
92
|
+
* returns the cached dead endpoint, so the wrapper never observes the primary as "down" and never
|
|
93
|
+
* fails over to the roster). With staleFallback:false a fresh failure returns null, and the roster
|
|
94
|
+
* becomes the real (and only) fallback. The default (true) is for unwrapped single-node callers.
|
|
98
95
|
*/
|
|
99
96
|
staleFallback?: boolean;
|
|
100
97
|
}
|
|
@@ -117,15 +114,15 @@ export interface RosterAwareResolverOptions {
|
|
|
117
114
|
/**
|
|
118
115
|
* Resolve the CURRENTLY-REACHABLE consortium roster. Each member returned has already
|
|
119
116
|
* had its /bootstrap probed (manifestNodesToEndpoints skips unreachable nodes), so a
|
|
120
|
-
* member's presence in the returned array IS its reachability. NULL
|
|
121
|
-
*
|
|
117
|
+
* member's presence in the returned array IS its reachability. NULL when no consortium
|
|
118
|
+
* manifest is configured → no failover, primary-only.
|
|
122
119
|
*/
|
|
123
120
|
getConsortiumRoster: () => Promise<ConsortiumEndpoint[] | null>;
|
|
124
121
|
logger: Logger;
|
|
125
122
|
/**
|
|
126
123
|
* Test seam: order the fallback candidates. Production defaults to a Fisher-Yates
|
|
127
|
-
* shuffle so clients don't stampede one node when the primary goes down (
|
|
128
|
-
*
|
|
124
|
+
* shuffle so clients don't stampede one node when the primary goes down (the redundancy
|
|
125
|
+
* invariant). Tests inject an identity shuffle for deterministic ordering.
|
|
129
126
|
*/
|
|
130
127
|
shuffle?: <T>(items: T[]) => T[];
|
|
131
128
|
}
|
|
@@ -133,7 +130,7 @@ export interface RosterAwareResolverOptions {
|
|
|
133
130
|
* Wrap a single-node primary resolver with the consortium roster so the signaling
|
|
134
131
|
* dialer (and the ceremony endpoint that shares this instance) route AROUND a down
|
|
135
132
|
* primary directory node instead of retrying the single primary URL forever — the
|
|
136
|
-
*
|
|
133
|
+
* sovereign-node REDUNDANCY invariant.
|
|
137
134
|
*
|
|
138
135
|
* Selection policy, per getDirectoryEndpoint() call:
|
|
139
136
|
* 1. Sticky-until-fail — while riding a non-primary fallback, KEEP it as long as it's
|
|
@@ -154,12 +151,11 @@ export interface RosterAwareResolverOptions {
|
|
|
154
151
|
* getDirectoryEndpoint so signaling + ceremonies stay on the SAME directory node and
|
|
155
152
|
* fail over together (a coherent per-daemon directory selection).
|
|
156
153
|
*
|
|
157
|
-
* Scope note
|
|
158
|
-
*
|
|
159
|
-
*
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
* assignment, and the FROST ceremony all work against a non-home directory.
|
|
154
|
+
* Scope note: stickiness here is by ROSTER REACHABILITY, not by observed connect success
|
|
155
|
+
* — the resolver is not told whether a dial/auth against the returned endpoint actually
|
|
156
|
+
* succeeded. A node whose /bootstrap resolves is served by that same node, so resolvable ≈
|
|
157
|
+
* connectable in practice; only a live kill-primary failover test proves that presence
|
|
158
|
+
* resolution, relay assignment, and the FROST ceremony all work against a non-home directory.
|
|
163
159
|
*/
|
|
164
160
|
export declare function createRosterAwareEndpointResolver(opts: RosterAwareResolverOptions): () => Promise<DirectoryEndpoint | null>;
|
|
165
161
|
//# sourceMappingURL=directory-bootstrap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directory-bootstrap.d.ts","sourceRoot":"","sources":["../src/directory-bootstrap.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"directory-bootstrap.d.ts","sourceRoot":"","sources":["../src/directory-bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,8FAA8F;AAC9F,eAAO,MAAM,wBAAwB,2CAA2C,CAAC;AAEjF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GAAG,MAAM,CAEjG;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBxB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKzE;AAID,0FAA0F;AAC1F,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI1E;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAgC/B;AAED,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,gCAAgC,GACrC,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA+BzC;AAID,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,eAAe,EAAE,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACzD;;;;;OAKG;IACH,mBAAmB,EAAE,MAAM,OAAO,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,CAAC;IAChE,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;CAClC;AAYD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,0BAA0B,GAC/B,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA8DzC"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Directory endpoint bootstrap for the daemon.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* client going forward. The daemon must not depend on the adapter (the adapter
|
|
7
|
-
* sits ABOVE the daemon as a thin IPC proxy), so the logic lives here.
|
|
4
|
+
* The logic lives here, not in the adapter: the daemon must not depend on the
|
|
5
|
+
* adapter, which sits ABOVE it as a thin IPC proxy.
|
|
8
6
|
*
|
|
9
|
-
* Mechanism
|
|
7
|
+
* Mechanism:
|
|
10
8
|
* 1. resolveDirectoryUrl(env): CELLO_DIRECTORY_URL or the production ALB URL.
|
|
11
9
|
* 2. GET ${url}/bootstrap → { multiaddr } containing "/p2p/<peerId>".
|
|
12
10
|
* 3. The peer ID is the segment after the final "/p2p/" in the multiaddr.
|
|
@@ -20,7 +18,7 @@
|
|
|
20
18
|
export const PRODUCTION_DIRECTORY_URL = "http://directory-us1.cello.mygentic.ai";
|
|
21
19
|
/**
|
|
22
20
|
* Resolve the directory URL from the environment, falling back to the production
|
|
23
|
-
* endpoint when CELLO_DIRECTORY_URL is not set.
|
|
21
|
+
* endpoint when CELLO_DIRECTORY_URL is not set.
|
|
24
22
|
*/
|
|
25
23
|
export function resolveDirectoryUrl(env = process.env) {
|
|
26
24
|
return env["CELLO_DIRECTORY_URL"] ?? PRODUCTION_DIRECTORY_URL;
|
|
@@ -65,12 +63,12 @@ export function parsePeerIdFromMultiaddr(multiaddr) {
|
|
|
65
63
|
* Validate + normalise a manifest node `endpoint` to the HTTP(S) base used for its
|
|
66
64
|
* `/bootstrap` probe, or return `null` if it is not a usable bootstrap base.
|
|
67
65
|
*
|
|
68
|
-
* CONTRACT
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
66
|
+
* CONTRACT: a manifest `endpoint` is the node's HTTP(S) `/bootstrap` base — production
|
|
67
|
+
* directories serve `/bootstrap` over plaintext HTTP behind the ALB (matching
|
|
68
|
+
* PRODUCTION_DIRECTORY_URL, which is `http://…:80`). The wss libp2p DIAL address is
|
|
69
|
+
* returned BY `/bootstrap`; it is NOT the endpoint. Do NOT accept (or port-guess) a
|
|
70
|
+
* `wss://host:443` value — mapping that to `http://host:443` speaks plaintext to the
|
|
71
|
+
* TLS port and silently fails. Anything
|
|
74
72
|
* that is not `http(s)://` (a bare multiaddr, a wss dial address, a typo) is a config
|
|
75
73
|
* error in officer-SIGNED data: return null so the caller logs it DISTINCTLY from a
|
|
76
74
|
* transient outage and never dials a wrong port. A single trailing slash is stripped
|
|
@@ -86,7 +84,7 @@ export function mapEndpointToBootstrapBase(endpoint) {
|
|
|
86
84
|
* Resolve every consortium node in the manifest's node set to a live directory
|
|
87
85
|
* endpoint by probing each node's `/bootstrap` (in parallel, order preserved).
|
|
88
86
|
*
|
|
89
|
-
* AVAILABILITY-AWARE (
|
|
87
|
+
* AVAILABILITY-AWARE (the sovereign-node redundancy invariant): a node whose bootstrap is
|
|
90
88
|
* unreachable is SKIPPED with a warning — one node down must never strand the others,
|
|
91
89
|
* because a T-of-N ceremony only needs T of the N. Returns the resolved subset
|
|
92
90
|
* (possibly empty). The CALLER decides whether the resolved count meets the threshold;
|
|
@@ -178,7 +176,7 @@ function fisherYatesShuffle(items) {
|
|
|
178
176
|
* Wrap a single-node primary resolver with the consortium roster so the signaling
|
|
179
177
|
* dialer (and the ceremony endpoint that shares this instance) route AROUND a down
|
|
180
178
|
* primary directory node instead of retrying the single primary URL forever — the
|
|
181
|
-
*
|
|
179
|
+
* sovereign-node REDUNDANCY invariant.
|
|
182
180
|
*
|
|
183
181
|
* Selection policy, per getDirectoryEndpoint() call:
|
|
184
182
|
* 1. Sticky-until-fail — while riding a non-primary fallback, KEEP it as long as it's
|
|
@@ -199,12 +197,11 @@ function fisherYatesShuffle(items) {
|
|
|
199
197
|
* getDirectoryEndpoint so signaling + ceremonies stay on the SAME directory node and
|
|
200
198
|
* fail over together (a coherent per-daemon directory selection).
|
|
201
199
|
*
|
|
202
|
-
* Scope note
|
|
203
|
-
*
|
|
204
|
-
*
|
|
205
|
-
*
|
|
206
|
-
*
|
|
207
|
-
* assignment, and the FROST ceremony all work against a non-home directory.
|
|
200
|
+
* Scope note: stickiness here is by ROSTER REACHABILITY, not by observed connect success
|
|
201
|
+
* — the resolver is not told whether a dial/auth against the returned endpoint actually
|
|
202
|
+
* succeeded. A node whose /bootstrap resolves is served by that same node, so resolvable ≈
|
|
203
|
+
* connectable in practice; only a live kill-primary failover test proves that presence
|
|
204
|
+
* resolution, relay assignment, and the FROST ceremony all work against a non-home directory.
|
|
208
205
|
*/
|
|
209
206
|
export function createRosterAwareEndpointResolver(opts) {
|
|
210
207
|
const shuffle = opts.shuffle ?? fisherYatesShuffle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directory-bootstrap.js","sourceRoot":"","sources":["../src/directory-bootstrap.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"directory-bootstrap.js","sourceRoot":"","sources":["../src/directory-bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-values.d.ts","sourceRoot":"","sources":["../src/frame-values.ts"],"names":[],"mappings":"AAUA,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAKzD;AAQD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CA2CrE"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire-frame value helpers, shared by the seal coordinator and the session-event handlers.
|
|
3
|
+
*
|
|
4
|
+
* Pure: no daemon state, no closure. They lived inside startDaemon only because everything did.
|
|
5
|
+
*/
|
|
6
|
+
import { Buffer } from "node:buffer";
|
|
7
|
+
// CBOR-decoded byte fields arrive as Uint8Array or Buffer; a field may also already be
|
|
8
|
+
// a hex string. Hex strings are lowercased so the case-sensitive agent-pubkey match
|
|
9
|
+
// (agents store lowercase hex) cannot silently miss (review L2).
|
|
10
|
+
export function frameValueToHex(v) {
|
|
11
|
+
if (v instanceof Uint8Array)
|
|
12
|
+
return Buffer.from(v).toString("hex");
|
|
13
|
+
if (Buffer.isBuffer(v))
|
|
14
|
+
return Buffer.from(v).toString("hex");
|
|
15
|
+
if (typeof v === "string")
|
|
16
|
+
return v.toLowerCase();
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
// M7-SESSION-004 (AC-005): normalise the wire `legibility` object — CBOR-decoded, so pubkeys
|
|
20
|
+
// arrive as Uint8Array/Buffer — into a JSON-safe certificate with hex-encoded pubkeys. Returns
|
|
21
|
+
// undefined for an absent or structurally-implausible object (pre-M7 frame, or a malformed
|
|
22
|
+
// field), in which case nothing is persisted and the seal still completes. The receipt-not-
|
|
23
|
+
// assent constants (attests/implies_assent/disclaimer) and the integers/booleans are carried
|
|
24
|
+
// verbatim; only the byte fields are re-encoded. The daemon never invents or alters the
|
|
25
|
+
// certificate's meaning — it is the directory's derivation, surfaced.
|
|
26
|
+
export function normalizeLegibility(raw) {
|
|
27
|
+
if (!raw || typeof raw !== "object")
|
|
28
|
+
return undefined;
|
|
29
|
+
const o = raw;
|
|
30
|
+
if (o["attests"] !== "receipt")
|
|
31
|
+
return undefined;
|
|
32
|
+
const participantsRaw = o["participants"];
|
|
33
|
+
const finalRaw = o["final_message"];
|
|
34
|
+
if (!Array.isArray(participantsRaw) || !finalRaw || typeof finalRaw !== "object")
|
|
35
|
+
return undefined;
|
|
36
|
+
// Review finding (low): the disclaimer is the human-readable half of the receipt-not-assent
|
|
37
|
+
// property; a non-string value means a malformed/tampered frame, so REJECT the whole cert
|
|
38
|
+
// rather than surfacing an empty disclaimer (implies_assent:false alone is the machine-readable
|
|
39
|
+
// half, but we do not surface a half-formed certificate).
|
|
40
|
+
if (typeof o["disclaimer"] !== "string" || o["disclaimer"].length === 0)
|
|
41
|
+
return undefined;
|
|
42
|
+
// Review finding (low): validate attestation_mode against the closed enum — never surface an
|
|
43
|
+
// arbitrary string from a malformed frame on the cert read surface (defensive parity with the
|
|
44
|
+
// coerced fields). An out-of-enum value rejects the whole cert.
|
|
45
|
+
const VALID_MODES = new Set(["live", "recovered", "absent"]);
|
|
46
|
+
const participants = [];
|
|
47
|
+
for (const p of participantsRaw) {
|
|
48
|
+
const pp = p;
|
|
49
|
+
const mode = pp["attestation_mode"];
|
|
50
|
+
if (typeof mode !== "string" || !VALID_MODES.has(mode))
|
|
51
|
+
return undefined;
|
|
52
|
+
participants.push({
|
|
53
|
+
pubkey: frameValueToHex(pp["pubkey"]),
|
|
54
|
+
content_frontier_seq: typeof pp["content_frontier_seq"] === "number" ? pp["content_frontier_seq"] : null,
|
|
55
|
+
last_authored_seq: typeof pp["last_authored_seq"] === "number" ? pp["last_authored_seq"] : null,
|
|
56
|
+
attestation_mode: mode,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
const fm = finalRaw;
|
|
60
|
+
const final_message = {
|
|
61
|
+
sender_pubkey: frameValueToHex(fm["sender_pubkey"]),
|
|
62
|
+
seq: typeof fm["seq"] === "number" ? fm["seq"] : null,
|
|
63
|
+
answered: fm["answered"] === true,
|
|
64
|
+
};
|
|
65
|
+
return {
|
|
66
|
+
attests: "receipt",
|
|
67
|
+
implies_assent: false,
|
|
68
|
+
disclaimer: o["disclaimer"],
|
|
69
|
+
participants,
|
|
70
|
+
final_message,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=frame-values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-values.js","sourceRoot":"","sources":["../src/frame-values.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* One-time migration of legacy flat-file state and a plaintext node:sqlite DB into the single
|
|
3
|
+
* SQLCipher-encrypted daemon DB.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* The legacy on-disk layouts this reads:
|
|
6
6
|
* - identity as plaintext flat files: `agents/<name>/key` (37-byte CELLO seed), `frost-share.json`,
|
|
7
|
-
* `ml-dsa-keypair.json`, `registration-state.json`, `agent-user-link.json`, and the
|
|
8
|
-
*
|
|
7
|
+
* `ml-dsa-keypair.json`, `registration-state.json`, `agent-user-link.json`, and the single-file
|
|
8
|
+
* `~/.cello/key` (loaded as agent "default");
|
|
9
9
|
* - sessions/transcript/etc. in a PLAINTEXT `sessions.db` (node:sqlite), with two columns
|
|
10
10
|
* (transcript.blob, retry_queue.content_blob) envelope-encrypted by a sibling
|
|
11
11
|
* `sessions.db.transcript-key`.
|
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
* up the old plaintext DB to `<dbPath>.pre-sqlcipher.bak` and deleting the flat files. It is
|
|
18
18
|
* idempotent: once the DB is encrypted and the flat files are gone, it is a no-op.
|
|
19
19
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* FAILS CLOSED: on ANY error it aborts cleanly — the original flat files / plaintext DB are left in
|
|
21
|
+
* place, the partial `.migrating` DB is discarded, and the caller surfaces `identity_migration_failed`.
|
|
22
|
+
* No identity is lost and no plaintext is left half-migrated.
|
|
23
23
|
*/
|
|
24
24
|
import type { Logger } from "./types.js";
|
|
25
25
|
export interface MigrationResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-migration.d.ts","sourceRoot":"","sources":["../src/identity-migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAuBH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAG,2BAA2B,CAAU;IACrD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBACd,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAK9C;
|
|
1
|
+
{"version":3,"file":"identity-migration.d.ts","sourceRoot":"","sources":["../src/identity-migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAuBH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAG,2BAA2B,CAAU;IACrD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBACd,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAK9C;AA8ED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAqJ1F"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* One-time migration of legacy flat-file state and a plaintext node:sqlite DB into the single
|
|
3
|
+
* SQLCipher-encrypted daemon DB.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* The legacy on-disk layouts this reads:
|
|
6
6
|
* - identity as plaintext flat files: `agents/<name>/key` (37-byte CELLO seed), `frost-share.json`,
|
|
7
|
-
* `ml-dsa-keypair.json`, `registration-state.json`, `agent-user-link.json`, and the
|
|
8
|
-
*
|
|
7
|
+
* `ml-dsa-keypair.json`, `registration-state.json`, `agent-user-link.json`, and the single-file
|
|
8
|
+
* `~/.cello/key` (loaded as agent "default");
|
|
9
9
|
* - sessions/transcript/etc. in a PLAINTEXT `sessions.db` (node:sqlite), with two columns
|
|
10
10
|
* (transcript.blob, retry_queue.content_blob) envelope-encrypted by a sibling
|
|
11
11
|
* `sessions.db.transcript-key`.
|
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
* up the old plaintext DB to `<dbPath>.pre-sqlcipher.bak` and deleting the flat files. It is
|
|
18
18
|
* idempotent: once the DB is encrypted and the flat files are gone, it is a no-op.
|
|
19
19
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* FAILS CLOSED: on ANY error it aborts cleanly — the original flat files / plaintext DB are left in
|
|
21
|
+
* place, the partial `.migrating` DB is discarded, and the caller surfaces `identity_migration_failed`.
|
|
22
|
+
* No identity is lost and no plaintext is left half-migrated.
|
|
23
23
|
*/
|
|
24
24
|
import { existsSync, readFileSync, readdirSync, statSync, renameSync, unlinkSync, } from "node:fs";
|
|
25
25
|
import { join, dirname } from "node:path";
|
|
@@ -68,7 +68,7 @@ function readJson(path) {
|
|
|
68
68
|
return null;
|
|
69
69
|
return JSON.parse(readFileSync(path, "utf8"));
|
|
70
70
|
}
|
|
71
|
-
/** Enumerate
|
|
71
|
+
/** Enumerate legacy agent directories that hold a `key` file. */
|
|
72
72
|
function discoverFlatAgents(celloDir) {
|
|
73
73
|
const out = [];
|
|
74
74
|
const agentsDir = join(celloDir, "agents");
|
|
@@ -82,24 +82,23 @@ function discoverFlatAgents(celloDir) {
|
|
|
82
82
|
out.push({ name: entry.name, dir, keyPath });
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
-
//
|
|
85
|
+
// Single-file ~/.cello/key → agent "default" (only when there's no agents/default already).
|
|
86
86
|
const legacyKey = join(celloDir, "key");
|
|
87
87
|
if (existsSync(legacyKey) && !out.some((a) => a.name === "default")) {
|
|
88
88
|
out.push({ name: "default", dir: celloDir, keyPath: legacyKey });
|
|
89
89
|
}
|
|
90
90
|
return out;
|
|
91
91
|
}
|
|
92
|
-
/** True if there is any
|
|
92
|
+
/** True if there is any flat-file identity to migrate. */
|
|
93
93
|
function hasFlatIdentity(celloDir) {
|
|
94
94
|
return discoverFlatAgents(celloDir).length > 0;
|
|
95
95
|
}
|
|
96
96
|
const MANIFEST_FILE = "manifest-version.json";
|
|
97
97
|
/**
|
|
98
98
|
* Carry the legacy anti-rollback floor (`manifest-version.json`) into the encrypted `manifest_state`
|
|
99
|
-
* table. CRITICAL
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
* value was imported.
|
|
99
|
+
* table. CRITICAL: without this, an upgraded operator's last-seen manifest version resets to null on
|
|
100
|
+
* first start, re-opening a manifest-DOWNGRADE window for one cycle. The upsert keeps the MAX of any
|
|
101
|
+
* existing floor, so it can never LOWER the floor. Returns true if a value was imported.
|
|
103
102
|
*/
|
|
104
103
|
function importManifestVersion(celloDir, db, logger) {
|
|
105
104
|
const obj = readJson(join(celloDir, MANIFEST_FILE));
|
|
@@ -120,9 +119,9 @@ export function migrateToEncryptedIfNeeded(dbPath, logger) {
|
|
|
120
119
|
const keyPath = dbKeyPathFor(dbPath);
|
|
121
120
|
const migratingPath = `${dbPath}.migrating`;
|
|
122
121
|
// Resume a crash in the tiny window between the backup-rename and the swap-rename: a COMPLETED
|
|
123
|
-
// `.migrating` exists but `dbPath` is gone.
|
|
124
|
-
// fresh EMPTY DB and
|
|
125
|
-
// decrypts with the key; otherwise discard the partial and let the originals drive a
|
|
122
|
+
// `.migrating` exists but `dbPath` is gone. It MUST be promoted here — otherwise the in-place branch
|
|
123
|
+
// below rebuilds a fresh EMPTY DB and orphans the migrated session/transcript history. Promote only
|
|
124
|
+
// if it decrypts with the key; otherwise discard the partial and let the originals drive a retry.
|
|
126
125
|
if (!existsSync(dbPath) && existsSync(migratingPath) && existsSync(keyPath)) {
|
|
127
126
|
try {
|
|
128
127
|
const k = new Uint8Array(readFileSync(keyPath));
|
|
@@ -171,7 +170,7 @@ export function migrateToEncryptedIfNeeded(dbPath, logger) {
|
|
|
171
170
|
db = openEncryptedDatabase(dbPath, key, logger);
|
|
172
171
|
ensureIdentitySchema(db);
|
|
173
172
|
agentsMigrated = importFlatIdentity(celloDir, db, logger);
|
|
174
|
-
importManifestVersion(celloDir, db, logger); // carry the anti-rollback floor
|
|
173
|
+
importManifestVersion(celloDir, db, logger); // carry the anti-rollback floor
|
|
175
174
|
db.close();
|
|
176
175
|
db = null;
|
|
177
176
|
}
|
|
@@ -276,9 +275,9 @@ export function migrateToEncryptedIfNeeded(dbPath, logger) {
|
|
|
276
275
|
* Copy every table + row from the old plaintext DB into the encrypted DB, decrypting the two
|
|
277
276
|
* column-ciphered blobs to plaintext. A row whose transcript/retry blob CANNOT be decrypted (the old
|
|
278
277
|
* transcript-key is missing or the blob fails GCM) is SKIPPED with a loud error — it is NEVER stored
|
|
279
|
-
* as ciphertext-masquerading-as-plaintext
|
|
280
|
-
*
|
|
281
|
-
*
|
|
278
|
+
* as ciphertext-masquerading-as-plaintext, which the rest of the daemon would TextDecode into garbage.
|
|
279
|
+
* After each table, the copied count is VERIFIED against (old count − skipped); a mismatch means
|
|
280
|
+
* INSERT OR IGNORE silently dropped a row → abort.
|
|
282
281
|
*/
|
|
283
282
|
function copyPlaintextDb(dbPath, encDb, _celloDir, logger) {
|
|
284
283
|
const old = new DatabaseSync(dbPath);
|
|
@@ -340,7 +339,7 @@ function copyPlaintextDb(dbPath, encDb, _celloDir, logger) {
|
|
|
340
339
|
old.close();
|
|
341
340
|
}
|
|
342
341
|
}
|
|
343
|
-
/** Quarantine an agent's flat files (key + sibling secrets) to `*.corrupt`. */
|
|
342
|
+
/** Quarantine an agent's flat files (key + sibling secrets) by renaming them to `*.corrupt`. */
|
|
344
343
|
function quarantineFlatAgent(a, logger) {
|
|
345
344
|
for (const f of [a.keyPath, ...Object.values(REG_FILES).map((n) => join(a.dir, n))]) {
|
|
346
345
|
if (existsSync(f)) {
|
|
@@ -352,17 +351,17 @@ function quarantineFlatAgent(a, logger) {
|
|
|
352
351
|
}
|
|
353
352
|
logger.warn("persist.identity.migrate.agent.quarantined", { agentName: a.name });
|
|
354
353
|
}
|
|
355
|
-
/** Import each
|
|
354
|
+
/** Import each legacy agent's flat files into one `agents` row. Returns the count imported. */
|
|
356
355
|
function importFlatIdentity(celloDir, encDb, logger) {
|
|
357
356
|
const agents = discoverFlatAgents(celloDir);
|
|
358
357
|
let count = 0;
|
|
359
358
|
for (const a of agents) {
|
|
360
359
|
// Skip an agent whose name is held by an ACTIVE row in the encrypted DB (e.g. a prior in-place run
|
|
361
360
|
// imported it but a cleanup unlink failed) — never overwrite live DB identity with stale flat-file
|
|
362
|
-
// values
|
|
363
|
-
// name
|
|
364
|
-
//
|
|
365
|
-
//
|
|
361
|
+
// values. The check MUST be active-only (matching hasActiveAgent everywhere else): a RETIRED
|
|
362
|
+
// tombstone does NOT occupy the name — it was freed for reuse — so counting it would silently skip
|
|
363
|
+
// a genuinely different flat identity restored under a freed name, and then delete it.
|
|
364
|
+
// deleteFlatIdentity will remove the redundant files.
|
|
366
365
|
const exists = encDb
|
|
367
366
|
.prepare("SELECT 1 AS one FROM agents WHERE agent_name = ? AND state != 'retired'")
|
|
368
367
|
.get(a.name);
|
|
@@ -370,8 +369,8 @@ function importFlatIdentity(celloDir, encDb, logger) {
|
|
|
370
369
|
continue;
|
|
371
370
|
// K_local seed from the 37-byte CELLO key file. A corrupt key SKIPS the WHOLE agent — its key AND
|
|
372
371
|
// its sibling plaintext secrets (frost-share/ml-dsa/link) are quarantined to `*.corrupt` so no
|
|
373
|
-
// plaintext secret is left on disk
|
|
374
|
-
//
|
|
372
|
+
// plaintext secret is left on disk. One unreadable agent must not down the daemon (availability);
|
|
373
|
+
// its identity is unrecoverable anyway, so the daemon starts without it.
|
|
375
374
|
let seed;
|
|
376
375
|
try {
|
|
377
376
|
seed = decodeKeyFileSeed(new Uint8Array(readFileSync(a.keyPath)));
|
|
@@ -391,7 +390,7 @@ function importFlatIdentity(celloDir, encDb, logger) {
|
|
|
391
390
|
const link = readJson(join(a.dir, REG_FILES.link));
|
|
392
391
|
const state = reg ? "registered" : "created";
|
|
393
392
|
const now = Date.now();
|
|
394
|
-
//
|
|
393
|
+
// The store is keyed by a stable agent_id — mint one for each imported flat agent.
|
|
395
394
|
encDb
|
|
396
395
|
.prepare(`INSERT OR IGNORE INTO agents (agent_id, agent_name, k_local_seed, k_local_pubkey, state, created_at, updated_at)
|
|
397
396
|
VALUES (?, ?, ?, ?, ?, ?, ?)`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-migration.js","sourceRoot":"","sources":["../src/identity-migration.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"identity-migration.js","sourceRoot":"","sources":["../src/identity-migration.ts"],"names":[],"mappings":"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"}
|