@serfab/cadre-host 0.7.1 → 0.8.1
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/README.md +296 -101
- package/dist/auth/trust-circle.d.ts +44 -6
- package/dist/auth/trust-circle.js +115 -58
- package/dist/auth/trust-circle.js.map +1 -1
- package/dist/auth/types.d.ts +4 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/authority/authority-node-client.d.ts +77 -0
- package/dist/authority/authority-node-client.js +143 -0
- package/dist/authority/authority-node-client.js.map +1 -0
- package/dist/authority/index.d.ts +11 -0
- package/dist/authority/index.js +11 -0
- package/dist/authority/index.js.map +1 -0
- package/dist/bin/host.js +210 -97
- package/dist/bin/host.js.map +1 -1
- package/dist/index.d.ts +10 -6
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/installer/browser.js +16 -17
- package/dist/installer/browser.js.map +1 -1
- package/dist/installer/config.d.ts +25 -0
- package/dist/installer/config.js +1 -1
- package/dist/installer/config.js.map +1 -1
- package/dist/installer/index.d.ts +5 -2
- package/dist/installer/index.js +14 -10
- package/dist/installer/index.js.map +1 -1
- package/dist/installer/service-host/launchd.js +1 -1
- package/dist/installer/service-host/launchd.js.map +1 -1
- package/dist/installer/service-host/systemd.js +1 -1
- package/dist/installer/service-host/systemd.js.map +1 -1
- package/dist/nat/index.d.ts +1 -1
- package/dist/nat/nat-service.d.ts +45 -3
- package/dist/nat/nat-service.js +116 -3
- package/dist/nat/nat-service.js.map +1 -1
- package/dist/nat/secrets/index.d.ts +7 -0
- package/dist/nat/secrets/index.js +28 -2
- package/dist/nat/secrets/index.js.map +1 -1
- package/dist/nat/types.d.ts +3 -1
- package/dist/nat/types.js.map +1 -1
- package/dist/orchestrator/host-process-orchestrator.d.ts +60 -1
- package/dist/orchestrator/host-process-orchestrator.js +246 -39
- package/dist/orchestrator/host-process-orchestrator.js.map +1 -1
- package/dist/orchestrator/index.d.ts +3 -2
- package/dist/orchestrator/index.js +1 -1
- package/dist/orchestrator/index.js.map +1 -1
- package/dist/orchestrator/state-store.d.ts +6 -5
- package/dist/orchestrator/state-store.js +10 -2
- package/dist/orchestrator/state-store.js.map +1 -1
- package/dist/orchestrator/types.d.ts +45 -10
- package/dist/orchestrator/types.js.map +1 -1
- package/dist/push/index.d.ts +67 -0
- package/dist/push/index.js +101 -0
- package/dist/push/index.js.map +1 -0
- package/dist/server/error-handler.d.ts +2 -0
- package/dist/server/error-handler.js +4 -0
- package/dist/server/error-handler.js.map +1 -1
- package/dist/server/routes/nodes.d.ts +4 -3
- package/dist/server/routes/nodes.js +38 -24
- package/dist/server/routes/nodes.js.map +1 -1
- package/dist/server/static.d.ts +12 -0
- package/dist/server/static.js +24 -7
- package/dist/server/static.js.map +1 -1
- package/dist/ui/assets/index-BlMXQPSw.js +14 -0
- package/dist/ui/assets/{index-C9uChk2P.js.map → index-BlMXQPSw.js.map} +1 -1
- package/dist/ui/index.html +1 -1
- package/dist/update/apply.d.ts +23 -1
- package/dist/update/apply.js +46 -4
- package/dist/update/apply.js.map +1 -1
- package/dist/update/index.d.ts +14 -3
- package/dist/update/index.js +35 -2
- package/dist/update/index.js.map +1 -1
- package/dist/update/manifest.d.ts +28 -9
- package/dist/update/manifest.js +56 -29
- package/dist/update/manifest.js.map +1 -1
- package/dist/update/release-key.d.ts +18 -7
- package/dist/update/release-key.js +28 -15
- package/dist/update/release-key.js.map +1 -1
- package/dist/update/sign.d.ts +46 -0
- package/dist/update/sign.js +53 -0
- package/dist/update/sign.js.map +1 -0
- package/package.json +9 -4
- package/service/README.md +95 -86
- package/src/__tests__/cli-invite.smoke.test.ts +6 -1
- package/src/__tests__/cli-nat.smoke.test.ts +6 -1
- package/src/__tests__/cli.smoke.test.ts +6 -1
- package/src/__tests__/host-authority.smoke.test.ts +123 -0
- package/src/__tests__/orchestrator-authority.test.ts +198 -0
- package/src/__tests__/orchestrator-push.test.ts +145 -0
- package/src/auth/__tests__/trust-circle-integration.test.ts +40 -21
- package/src/auth/__tests__/trust-circle.test.ts +90 -23
- package/src/auth/trust-circle.ts +363 -304
- package/src/auth/types.ts +4 -1
- package/src/authority/__tests__/authority-node-client.test.ts +166 -0
- package/src/authority/authority-node-client.ts +199 -0
- package/src/authority/index.ts +12 -0
- package/src/bin/host.ts +1038 -905
- package/src/index.ts +34 -3
- package/src/installer/__tests__/installer.smoke.test.ts +64 -0
- package/src/installer/browser.ts +40 -42
- package/src/installer/config.ts +27 -1
- package/src/installer/index.ts +18 -12
- package/src/installer/service-host/launchd.ts +1 -1
- package/src/installer/service-host/systemd.ts +1 -1
- package/src/nat/__tests__/ddns-updater.test.ts +1 -1
- package/src/nat/__tests__/nat-service.test.ts +192 -0
- package/src/nat/__tests__/port-mapper.test.ts +1 -1
- package/src/nat/__tests__/secrets.test.ts +23 -1
- package/src/nat/index.ts +1 -1
- package/src/nat/nat-service.ts +131 -5
- package/src/nat/secrets/index.ts +32 -2
- package/src/nat/types.ts +3 -1
- package/src/orchestrator/host-process-orchestrator.ts +294 -54
- package/src/orchestrator/index.ts +9 -2
- package/src/orchestrator/state-store.ts +21 -3
- package/src/orchestrator/types.ts +48 -2
- package/src/push/__tests__/push.test.ts +90 -0
- package/src/push/index.ts +146 -0
- package/src/server/__tests__/error-handler.test.ts +4 -4
- package/src/server/__tests__/nodes-route.test.ts +90 -10
- package/src/server/__tests__/publishers.test.ts +1 -1
- package/src/server/__tests__/static.test.ts +145 -0
- package/src/server/__tests__/status-route.test.ts +2 -2
- package/src/server/error-handler.ts +4 -0
- package/src/server/routes/nodes.ts +48 -26
- package/src/server/static.ts +24 -8
- package/src/update/__tests__/apply.test.ts +58 -1
- package/src/update/__tests__/manifest.test.ts +41 -6
- package/src/update/__tests__/release-key.test.ts +29 -0
- package/src/update/__tests__/sign.test.ts +78 -0
- package/src/update/__tests__/update-service.integration.test.ts +44 -9
- package/src/update/apply.ts +46 -4
- package/src/update/index.ts +41 -3
- package/src/update/manifest.ts +214 -172
- package/src/update/release-key.ts +30 -16
- package/src/update/sign.ts +74 -0
- package/dist/ui/assets/index-C9uChk2P.js +0 -14
package/dist/nat/nat-service.js
CHANGED
|
@@ -8,7 +8,16 @@ import { DdnsUpdater } from './ddns/updater.js';
|
|
|
8
8
|
import { getProvider, listProviders } from './ddns/index.js';
|
|
9
9
|
import { buildInviteAddresses, } from './address-resolver.js';
|
|
10
10
|
import { createSecretsStore, ddnsAccount } from './secrets/index.js';
|
|
11
|
+
import { AuthorityNodeUnavailableError } from '../authority/authority-node-client.js';
|
|
11
12
|
const log = debug('cadre:host:nat-service');
|
|
13
|
+
/** Sleep helper for the initial-push retry loop; unref'd so it never holds the process open. */
|
|
14
|
+
function sleep(ms) {
|
|
15
|
+
return new Promise((res) => {
|
|
16
|
+
const t = setTimeout(res, ms);
|
|
17
|
+
if (typeof t.unref === 'function')
|
|
18
|
+
t.unref();
|
|
19
|
+
});
|
|
20
|
+
}
|
|
12
21
|
/**
|
|
13
22
|
* NatService — orchestrates port mapping, external-IP detection, DDNS updates,
|
|
14
23
|
* and address resolution for invites.
|
|
@@ -32,6 +41,8 @@ export class NatService {
|
|
|
32
41
|
this.latestIp = null;
|
|
33
42
|
this.lastTestedAt = null;
|
|
34
43
|
this.started = false;
|
|
44
|
+
/** Listeners notified when the invite addresses may have changed. */
|
|
45
|
+
this.addressListeners = new Set();
|
|
35
46
|
this.cadreNode = opts.cadreNode;
|
|
36
47
|
this.store = opts.store ?? new NatStore(opts.rootDir);
|
|
37
48
|
this.nowFn = opts.now ?? (() => new Date());
|
|
@@ -40,6 +51,8 @@ export class NatService {
|
|
|
40
51
|
this.portMapper = opts.portMapper ?? null;
|
|
41
52
|
this.injectedDetector = opts.externalIpDetector ?? null;
|
|
42
53
|
this.secretsRootDir = opts.rootDir;
|
|
54
|
+
this.initialPushRetryMs = opts.initialPushRetryMs ?? 250;
|
|
55
|
+
this.initialPushTimeoutMs = opts.initialPushTimeoutMs ?? 15000;
|
|
43
56
|
this.currentSettings = this.store.load();
|
|
44
57
|
}
|
|
45
58
|
/** Initial start: port mapping → IP detect → DDNS. Idempotent. */
|
|
@@ -64,6 +77,9 @@ export class NatService {
|
|
|
64
77
|
now: this.nowFn,
|
|
65
78
|
});
|
|
66
79
|
await this.ddnsUpdater.start();
|
|
80
|
+
// Initial invite-address push. Retries on `node_unavailable` until the
|
|
81
|
+
// freshly spawned authority node accepts it (bounded; best-effort after).
|
|
82
|
+
await this.pushInitialAddresses();
|
|
67
83
|
}
|
|
68
84
|
/** Release the port mapping and clear timers. Idempotent. */
|
|
69
85
|
async stop() {
|
|
@@ -125,11 +141,34 @@ export class NatService {
|
|
|
125
141
|
if (this.ddnsUpdater) {
|
|
126
142
|
await this.ddnsUpdater.forceUpdate().catch((err) => log('ddns forceUpdate err: %s', err.message));
|
|
127
143
|
}
|
|
144
|
+
// Reachability/IP may have changed → invite addresses may have changed.
|
|
145
|
+
await this.fireAddressesChanged();
|
|
128
146
|
return this.getStatus();
|
|
129
147
|
}
|
|
130
|
-
/**
|
|
148
|
+
/**
|
|
149
|
+
* Build the multiaddrs to embed in invites. The peer ID and libp2p
|
|
150
|
+
* fallback addresses are fetched over the authority node's admin channel; a
|
|
151
|
+
* node-unavailable failure surfaces as `NatError('node_unavailable')`.
|
|
152
|
+
*/
|
|
131
153
|
async getInviteAddresses() {
|
|
132
|
-
|
|
154
|
+
let peerId;
|
|
155
|
+
let libp2pAddrs;
|
|
156
|
+
try {
|
|
157
|
+
peerId = await this.cadreNode.getPeerId();
|
|
158
|
+
libp2pAddrs = await this.cadreNode.getMultiaddrs();
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
if (err instanceof AuthorityNodeUnavailableError) {
|
|
162
|
+
throw new NatError('node_unavailable', `Authority node unavailable: ${err.message}`);
|
|
163
|
+
}
|
|
164
|
+
throw err;
|
|
165
|
+
}
|
|
166
|
+
// A reachable node that hasn't yet established its libp2p peer ID reports
|
|
167
|
+
// an empty peerId. Building addresses now would mint malformed `…/p2p/`
|
|
168
|
+
// suffixes (and push them to the node), so treat it as not-ready.
|
|
169
|
+
if (!peerId) {
|
|
170
|
+
throw new NatError('node_unavailable', 'Authority node has no peer ID yet (not ready)');
|
|
171
|
+
}
|
|
133
172
|
const status = this.getStatus();
|
|
134
173
|
const input = {
|
|
135
174
|
peerId,
|
|
@@ -137,10 +176,80 @@ export class NatService {
|
|
|
137
176
|
ddnsHostname: status.ddns.hostname,
|
|
138
177
|
externalIp: status.externalIp,
|
|
139
178
|
reachable: status.directReachability === 'reachable',
|
|
140
|
-
libp2pAddrs
|
|
179
|
+
libp2pAddrs,
|
|
141
180
|
};
|
|
142
181
|
return buildInviteAddresses(input);
|
|
143
182
|
}
|
|
183
|
+
/**
|
|
184
|
+
* Register a listener fired when the invite addresses may have changed
|
|
185
|
+
* (after `start`, `putSettings`, and `testReachability`). `cadre-host start`
|
|
186
|
+
* wires this to `AuthorityNodeClient.pushInviteAddresses`. Returns an
|
|
187
|
+
* unsubscribe fn.
|
|
188
|
+
*/
|
|
189
|
+
onAddressesChanged(listener) {
|
|
190
|
+
this.addressListeners.add(listener);
|
|
191
|
+
return () => { this.addressListeners.delete(listener); };
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Recompute invite addresses and notify listeners. Best-effort: when the
|
|
195
|
+
* authority node is unreachable (or the build fails), the notification is
|
|
196
|
+
* skipped — the push is retried on the next NAT event.
|
|
197
|
+
*/
|
|
198
|
+
async fireAddressesChanged() {
|
|
199
|
+
if (this.addressListeners.size === 0)
|
|
200
|
+
return;
|
|
201
|
+
let addresses;
|
|
202
|
+
try {
|
|
203
|
+
addresses = await this.getInviteAddresses();
|
|
204
|
+
}
|
|
205
|
+
catch (err) {
|
|
206
|
+
log('onAddressesChanged skipped: %s', err.message);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
await this.notifyAddressListeners(addresses);
|
|
210
|
+
}
|
|
211
|
+
/** Deliver an address set to every registered listener (errors are logged, not thrown). */
|
|
212
|
+
async notifyAddressListeners(addresses) {
|
|
213
|
+
for (const listener of this.addressListeners) {
|
|
214
|
+
try {
|
|
215
|
+
await listener(addresses);
|
|
216
|
+
}
|
|
217
|
+
catch (err) {
|
|
218
|
+
log('address listener threw: %s', err.message);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Initial invite-address push. The authority node's admin channel is a freshly
|
|
224
|
+
* spawned detached child that may not be bound yet (and may not have a libp2p
|
|
225
|
+
* peer ID yet), so a single attempt races readiness and silently drops the first
|
|
226
|
+
* NAT-resolved address set. Retry on `node_unavailable` until the node accepts it
|
|
227
|
+
* or the bounded budget elapses (best-effort thereafter). Awaited by start() so
|
|
228
|
+
* the management API — the invite-minting path — does not come up first.
|
|
229
|
+
*/
|
|
230
|
+
async pushInitialAddresses() {
|
|
231
|
+
if (this.addressListeners.size === 0)
|
|
232
|
+
return;
|
|
233
|
+
const deadline = this.nowFn().getTime() + this.initialPushTimeoutMs;
|
|
234
|
+
for (;;) {
|
|
235
|
+
if (!this.started)
|
|
236
|
+
return; // stop() ran during a retry
|
|
237
|
+
try {
|
|
238
|
+
const addresses = await this.getInviteAddresses();
|
|
239
|
+
await this.notifyAddressListeners(addresses);
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
catch (err) {
|
|
243
|
+
const code = err instanceof NatError ? err.code : undefined;
|
|
244
|
+
// Only retry transient not-ready; surface anything unexpected via log + give up.
|
|
245
|
+
if (code !== 'node_unavailable' || this.nowFn().getTime() >= deadline) {
|
|
246
|
+
log('initial invite-address push not delivered: %s', err.message);
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
await sleep(this.initialPushRetryMs);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
144
253
|
/** Current settings (cheap read; for handlers to surface to UI). */
|
|
145
254
|
getSettings() {
|
|
146
255
|
return this.currentSettings;
|
|
@@ -168,6 +277,10 @@ export class NatService {
|
|
|
168
277
|
if (ddnsChanged && this.ddnsUpdater) {
|
|
169
278
|
await this.ddnsUpdater.updateSettings(next.ddns);
|
|
170
279
|
}
|
|
280
|
+
if (upnpChanged || portChanged || ddnsChanged) {
|
|
281
|
+
// Port / DDNS changes alter the advertised invite addresses.
|
|
282
|
+
await this.fireAddressesChanged();
|
|
283
|
+
}
|
|
171
284
|
}
|
|
172
285
|
return this.getStatus();
|
|
173
286
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nat-service.js","sourceRoot":"","sources":["../../src/nat/nat-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACL,QAAQ,GAMT,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAyB,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GAGxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EACL,oBAAoB,GAErB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AAExF,MAAM,GAAG,GAAG,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAiC5C;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,UAAU;IAyBrB,YAAY,IAAuB;QAbnC,gCAAgC;QACxB,gBAAW,GAA6B,IAAI,CAAC;QAC7C,gBAAW,GAAuB,IAAI,CAAC;QAIvC,aAAQ,GAA4B,IAAI,CAAC;QACzC,iBAAY,GAAgB,IAAI,CAAC;QACjC,YAAO,GAAG,KAAK,CAAC;QAMtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;QAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;QAC1C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC;QACxD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,kEAAkE;IAClE,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,2CAA2C;QAC3C,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpE,CAAC;QAED,mBAAmB;QACnB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9B,4BAA4B;QAC5B,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEtB,mBAAmB;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC;YACjC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI;YACnC,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,IAAI;YAC/E,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,GAAG,EAAE,IAAI,CAAC,KAAK;SAChB,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC;YACH,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,sBAAsB,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,8BAA8B,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,0CAA0C;IAC1C,SAAS;QACP,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC;QAC9E,MAAM,IAAI,GAAkB,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI;YAC3D,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU;YAChD,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ;YAC5C,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB;YAC9D,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE,IAAI;SAChB,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU;YACxE,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;YAC5C,qBAAqB,EAAE,SAAS,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,IAAI;YACtE,UAAU;YACV,oBAAoB,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,WAAW,EAAE,IAAI,IAAI;YACrE,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,KAAK;YAC5C,kBAAkB,EAAE,oBAAoB,CAAC;gBACvC,QAAQ,EAAE,SAAS,CAAC,IAAI;gBACxB,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,KAAK;aAC7C,CAAC;YACF,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,IAAI;YACtD,IAAI;SACL,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,gBAAgB;QACpB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,iBAAiB,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAClG,CAAC;QACD,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACjC,kDAAkD;QAClD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,0BAA0B,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/G,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,kBAAkB;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,KAAK,GAA8B;YACvC,MAAM;YACN,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;YAClC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,SAAS,EAAE,MAAM,CAAC,kBAAkB,KAAK,WAAW;YACpD,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;SAC5C,CAAC;QACF,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,oEAAoE;IACpE,WAAW;QACT,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,WAAW,CAAC,KAAgD;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;QAC1E,MAAM,WAAW,GACf,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,eAAe,CAAC,YAAY;YACvD,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;QAC1D,MAAM,WAAW,GACf,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU;YAC7D,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ;YACzD,IAAI,CAAC,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB;YAC3E,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;QAChE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBAAC,MAAM,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBAC9D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAChC,CAAC;YACD,IAAI,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpC,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,IAKb;QACC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACtF,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,sCAAsC,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,QAAQ,CAAC,qBAAqB,EAAE,mDAAmD,CAAC,CAAC;QACjG,CAAC;QAED,mBAAmB;QACnB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,SAAS;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,QAAQ,CAChB,0BAA0B,EAC1B,4CAA4C,KAAK,CAAC,GAAG,kBAAkB,QAAQ,CAAC,EAAE,GAAG,CACtF,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1E,CAAC;QAED,mBAAmB;QACnB,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,KAAK,CAAC;QAC1D,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC;YAC5B,IAAI,EAAE;gBACJ,UAAU,EAAE,QAAQ,CAAC,EAAE;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,iBAAiB;gBACjB,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU;aACjD;SACF,CAAC,CAAC;IACL,CAAC;IAED,oEAAoE;IACpE,iBAAiB;QACf,OAAO,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,YAAY,EAAE,CAAC,CAAC,YAAY;SAC7B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,kBAAkB;IAEV,KAAK,CAAC,gBAAgB;QAC5B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;YACtC,GAAG,CAAC,kDAAkD,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,uBAAuB,EAAE,CAAC;gBACzC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;YAC3B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,qCAAqC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;gBACnE,OAAO;YACT,CAAC;QACH,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,iBAAiB,CAAC;YACvC,MAAM;YACN,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY;YAC/C,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY;YAC/C,GAAG,EAAE,IAAI,CAAC,KAAK;SAChB,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,4EAA4E;QAC5E,0EAA0E;QAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,IAAI,CACxC,IAAI,CAAC,UAAU;YACb,CAAC,CAAC,IAAI,kBAAkB,CAAC;gBACrB,KAAK,EAAE,IAAI,CAAC,SAAS;gBACrB,GAAG,EAAE,IAAI,CAAC,KAAK;gBACf,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,UAAW,CAAC,UAAU,EAAE;aACvD,CAAC;YACJ,CAAC,CAAC,IAAI,kBAAkB,CAAC;gBACrB,KAAK,EAAE,IAAI,CAAC,SAAS;gBACrB,GAAG,EAAE,IAAI,CAAC,KAAK;aAChB,CAAC,CACP,CAAC;QACF,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,qBAAqB,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAEO,iBAAiB;QACvB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;YAC9D,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY;YAC/C,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY;YAC/C,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,IAAI;YACpB,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAmB;IACnD,OAAO;QACL,KAAK,CAAC,SAAS,KAAK,OAAO,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACjD,KAAK,CAAC,gBAAgB,KAAK,OAAO,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,iBAAiB,KAAK,OAAO,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACjE,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3D,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,OAAO,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACpE,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"nat-service.js","sourceRoot":"","sources":["../../src/nat/nat-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,13 @@ export { KeytarSecretsStore, FileSecretsStore };
|
|
|
22
22
|
* (some Linux desktops have keytar installed but no DBus secret service).
|
|
23
23
|
*/
|
|
24
24
|
export declare function createSecretsStore(rootDir: string): Promise<SecretsStore>;
|
|
25
|
+
/**
|
|
26
|
+
* Return the first candidate in `[mod, mod.default]` that satisfies the
|
|
27
|
+
* `KeytarLike` shape — or `null` if neither does. Handles the CJS-via-ESM
|
|
28
|
+
* interop case where the dynamic import yields `{ default: keytar }` rather
|
|
29
|
+
* than the keytar surface directly.
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveKeytarLike(mod: unknown): KeytarLike | null;
|
|
25
32
|
/** Subset of keytar's surface that KeytarSecretsStore uses. */
|
|
26
33
|
export interface KeytarLike {
|
|
27
34
|
setPassword(service: string, account: string, password: string): Promise<void>;
|
|
@@ -24,8 +24,16 @@ export async function createSecretsStore(rootDir) {
|
|
|
24
24
|
log('keytar unavailable (%s); using file fallback', err.message);
|
|
25
25
|
return makeFileFallback(rootDir, `keytar not installed: ${err.message}`);
|
|
26
26
|
}
|
|
27
|
+
// `keytar` is a CJS package; under Node's ESM interop the dynamic import
|
|
28
|
+
// yields a Module Namespace whose `default` is the real `module.exports`.
|
|
29
|
+
// Unwrap before handing it to KeytarSecretsStore.
|
|
30
|
+
const keytar = resolveKeytarLike(keytarMod);
|
|
31
|
+
if (!keytar) {
|
|
32
|
+
log('keytar module loaded but API surface missing; using file fallback');
|
|
33
|
+
return makeFileFallback(rootDir, 'keytar module loaded but API surface missing');
|
|
34
|
+
}
|
|
27
35
|
// Probe with a sentinel write — some installs load but throw at runtime.
|
|
28
|
-
const ks = new KeytarSecretsStore(KEYTAR_SERVICE,
|
|
36
|
+
const ks = new KeytarSecretsStore(KEYTAR_SERVICE, keytar);
|
|
29
37
|
const probeAccount = '__cadre_host_probe__';
|
|
30
38
|
try {
|
|
31
39
|
await ks.set(probeAccount, '1');
|
|
@@ -38,9 +46,27 @@ export async function createSecretsStore(rootDir) {
|
|
|
38
46
|
return makeFileFallback(rootDir, `keytar runtime error: ${err.message}`);
|
|
39
47
|
}
|
|
40
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Return the first candidate in `[mod, mod.default]` that satisfies the
|
|
51
|
+
* `KeytarLike` shape — or `null` if neither does. Handles the CJS-via-ESM
|
|
52
|
+
* interop case where the dynamic import yields `{ default: keytar }` rather
|
|
53
|
+
* than the keytar surface directly.
|
|
54
|
+
*/
|
|
55
|
+
export function resolveKeytarLike(mod) {
|
|
56
|
+
const candidates = [mod, mod?.default];
|
|
57
|
+
for (const c of candidates) {
|
|
58
|
+
if (c &&
|
|
59
|
+
typeof c.setPassword === 'function' &&
|
|
60
|
+
typeof c.getPassword === 'function' &&
|
|
61
|
+
typeof c.deletePassword === 'function' &&
|
|
62
|
+
typeof c.findCredentials === 'function') {
|
|
63
|
+
return c;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
41
68
|
function makeFileFallback(rootDir, reason) {
|
|
42
69
|
const store = new FileSecretsStore(rootDir);
|
|
43
|
-
// eslint-disable-next-line no-console
|
|
44
70
|
console.warn(`[cadre-host] DDNS credentials will be stored UNENCRYPTED at ` +
|
|
45
71
|
`${store.filePath()} (${reason}). Install keytar's native dependencies ` +
|
|
46
72
|
`for OS keychain protection.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nat/secrets/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,GAAG,GAAG,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAE5C,kDAAkD;AAClD,MAAM,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAAC;AAalD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAe;IACtD,6BAA6B;IAC7B,IAAI,SAAkB,CAAC;IACvB,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,8CAA8C,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC5E,OAAO,gBAAgB,CAAC,OAAO,EAAE,yBAA0B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,yEAAyE;IACzE,MAAM,EAAE,GAAG,IAAI,kBAAkB,CAAC,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nat/secrets/index.ts"],"names":[],"mappings":"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"}
|
package/dist/nat/types.d.ts
CHANGED
|
@@ -78,7 +78,9 @@ export interface NatDdnsSettings {
|
|
|
78
78
|
intervalMs: number;
|
|
79
79
|
}
|
|
80
80
|
/** Typed error codes for NatError. */
|
|
81
|
-
export type NatErrorCode = 'mapping_failed' | 'router_unreachable' | 'ip_detection_failed' | 'ddns_provider_unknown' | 'ddns_credentials_missing' | 'ddns_update_failed' | 'secrets_unavailable' | 'storage_error' | 'invalid_config'
|
|
81
|
+
export type NatErrorCode = 'mapping_failed' | 'router_unreachable' | 'ip_detection_failed' | 'ddns_provider_unknown' | 'ddns_credentials_missing' | 'ddns_update_failed' | 'secrets_unavailable' | 'storage_error' | 'invalid_config'
|
|
82
|
+
/** The authority node's admin channel is unreachable / not ready. */
|
|
83
|
+
| 'node_unavailable';
|
|
82
84
|
/** Typed error carrying a stable `code` for HTTP mapping in the local-ui. */
|
|
83
85
|
export declare class NatError extends Error {
|
|
84
86
|
readonly code: NatErrorCode;
|
package/dist/nat/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/nat/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/nat/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAkGH,6EAA6E;AAC7E,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGjC,YAAY,IAAkB,EAAE,OAAe;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import type { Orchestrator, OrchestratorCreateRequest, OrchestratorCreateResult, OrchestratorStats } from '@serfab/cadre-provider';
|
|
2
2
|
import { type PersistedHandle } from './state-store.js';
|
|
3
|
-
import { type HostProcessConfig, type ManagedNodeInfo, type NodeStateListener } from './types.js';
|
|
3
|
+
import { type AuthoritySpawnConfig, type HostProcessConfig, type ManagedNodeInfo, type NodeStateListener } from './types.js';
|
|
4
|
+
/** Fixed friendly id for the admin's authority node. */
|
|
5
|
+
export declare const AUTHORITY_CONTAINER_ID = "authority";
|
|
6
|
+
/** Endpoint + bearer for the authority node's loopback admin channel (6.6). */
|
|
7
|
+
export interface AuthorityAdminEndpoint {
|
|
8
|
+
/** e.g. `http://127.0.0.1:<adminPort>`. */
|
|
9
|
+
baseUrl: string;
|
|
10
|
+
/** The child's `CADRE_STARTUP_TOKEN`, used as the admin bearer secret. */
|
|
11
|
+
token: string;
|
|
12
|
+
}
|
|
4
13
|
/**
|
|
5
14
|
* Runs cadre nodes as plain Node child processes on the host.
|
|
6
15
|
*
|
|
@@ -42,8 +51,12 @@ export declare class HostProcessOrchestrator implements Orchestrator {
|
|
|
42
51
|
private readonly defaultMemoryLimit?;
|
|
43
52
|
private readonly handles;
|
|
44
53
|
private readonly cliEntrypoint;
|
|
54
|
+
/** Resolves push credentials fresh on every spawn (see HostProcessConfig). */
|
|
55
|
+
private readonly pushResolver?;
|
|
45
56
|
/** State-change listeners — invoked when a handle's alive state changes. */
|
|
46
57
|
private readonly stateListeners;
|
|
58
|
+
/** Persisted spawn config for the authority node (re-spawn on demand). */
|
|
59
|
+
private authorityConfig?;
|
|
47
60
|
constructor(cfg: HostProcessConfig);
|
|
48
61
|
/**
|
|
49
62
|
* Read persisted state and re-attach to surviving children. Not part of
|
|
@@ -74,6 +87,46 @@ export declare class HostProcessOrchestrator implements Orchestrator {
|
|
|
74
87
|
/** Handles that init() found dead (PID gone or token mismatch). */
|
|
75
88
|
listDeadHandles(): PersistedHandle[];
|
|
76
89
|
createContainer(request: OrchestratorCreateRequest): Promise<OrchestratorCreateResult>;
|
|
90
|
+
/**
|
|
91
|
+
* Resolve the push credentials to inject into the node about to spawn. Called
|
|
92
|
+
* on every spawn so a re-spawn re-reads the secret store — raw private keys are
|
|
93
|
+
* never persisted. A resolver failure (e.g. a partial credential set) is
|
|
94
|
+
* logged and degrades to "no push" rather than failing the spawn: the node
|
|
95
|
+
* stays up and reachable, just without platform push-wake.
|
|
96
|
+
*/
|
|
97
|
+
private resolvePush;
|
|
98
|
+
/**
|
|
99
|
+
* Ensure the admin's authority node is running, spawning it if absent or
|
|
100
|
+
* dead. Idempotent: a second call with the node already alive returns the
|
|
101
|
+
* existing handle without launching a second child. The spawn parameters
|
|
102
|
+
* are persisted so a later `/api/nodes/:id/{start,restart}` (or an
|
|
103
|
+
* orchestrator restart) can re-spawn it without re-supplying them.
|
|
104
|
+
*
|
|
105
|
+
* The authority node is spawned as `cadre-cli start --authority
|
|
106
|
+
* --admin-port <p> --identity-protobuf <identityPath>` so it carries the
|
|
107
|
+
* host's libp2p identity, founds/joins the control network, and exposes the
|
|
108
|
+
* loopback admin channel the manager delegates to.
|
|
109
|
+
*/
|
|
110
|
+
ensureAuthorityNode(cfg?: AuthoritySpawnConfig): Promise<ManagedNodeInfo>;
|
|
111
|
+
/** Endpoint + bearer for the authority node's admin channel, if spawned. */
|
|
112
|
+
getAuthorityAdminEndpoint(): AuthorityAdminEndpoint | undefined;
|
|
113
|
+
/** Whether spawn parameters for the authority node are known (persisted). */
|
|
114
|
+
hasAuthorityConfig(): boolean;
|
|
115
|
+
/** Whether the given friendly/docker id refers to the authority node. */
|
|
116
|
+
isAuthorityNode(idOrDockerId: string): boolean;
|
|
117
|
+
/** Stop the authority node (if running). Used on graceful shutdown. */
|
|
118
|
+
stopAuthorityNode(): Promise<void>;
|
|
119
|
+
/** Stop the authority node (if running), then re-spawn it from saved config. */
|
|
120
|
+
restartAuthorityNode(): Promise<ManagedNodeInfo>;
|
|
121
|
+
/**
|
|
122
|
+
* Core spawn mechanics shared by `createContainer` and `ensureAuthorityNode`.
|
|
123
|
+
* The caller has already allocated `ports`. Releases the ports on a
|
|
124
|
+
* synchronous spawn failure.
|
|
125
|
+
*/
|
|
126
|
+
private launchChild;
|
|
127
|
+
/** Locate the authority node's handle, if one has been spawned. */
|
|
128
|
+
private findAuthorityHandle;
|
|
129
|
+
private releasePorts;
|
|
77
130
|
stopContainer(dockerId: string): Promise<void>;
|
|
78
131
|
removeContainer(dockerId: string): Promise<void>;
|
|
79
132
|
isRunning(dockerId: string): Promise<boolean>;
|
|
@@ -81,6 +134,12 @@ export declare class HostProcessOrchestrator implements Orchestrator {
|
|
|
81
134
|
getLogs(dockerId: string, tail?: number): Promise<string>;
|
|
82
135
|
private requireHandle;
|
|
83
136
|
private buildChildConfig;
|
|
137
|
+
/**
|
|
138
|
+
* Child config for the authority node. It founds/joins the control network
|
|
139
|
+
* for `partyId` (no bootstrap peers — it is the founding node), and carries
|
|
140
|
+
* the host identity via `--identity-protobuf` (passed as a spawn arg).
|
|
141
|
+
*/
|
|
142
|
+
private buildAuthorityChildConfig;
|
|
84
143
|
private persist;
|
|
85
144
|
private emitStateChange;
|
|
86
145
|
private toPersisted;
|