@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.
Files changed (135) hide show
  1. package/README.md +296 -101
  2. package/dist/auth/trust-circle.d.ts +44 -6
  3. package/dist/auth/trust-circle.js +115 -58
  4. package/dist/auth/trust-circle.js.map +1 -1
  5. package/dist/auth/types.d.ts +4 -1
  6. package/dist/auth/types.js.map +1 -1
  7. package/dist/authority/authority-node-client.d.ts +77 -0
  8. package/dist/authority/authority-node-client.js +143 -0
  9. package/dist/authority/authority-node-client.js.map +1 -0
  10. package/dist/authority/index.d.ts +11 -0
  11. package/dist/authority/index.js +11 -0
  12. package/dist/authority/index.js.map +1 -0
  13. package/dist/bin/host.js +210 -97
  14. package/dist/bin/host.js.map +1 -1
  15. package/dist/index.d.ts +10 -6
  16. package/dist/index.js +6 -3
  17. package/dist/index.js.map +1 -1
  18. package/dist/installer/browser.js +16 -17
  19. package/dist/installer/browser.js.map +1 -1
  20. package/dist/installer/config.d.ts +25 -0
  21. package/dist/installer/config.js +1 -1
  22. package/dist/installer/config.js.map +1 -1
  23. package/dist/installer/index.d.ts +5 -2
  24. package/dist/installer/index.js +14 -10
  25. package/dist/installer/index.js.map +1 -1
  26. package/dist/installer/service-host/launchd.js +1 -1
  27. package/dist/installer/service-host/launchd.js.map +1 -1
  28. package/dist/installer/service-host/systemd.js +1 -1
  29. package/dist/installer/service-host/systemd.js.map +1 -1
  30. package/dist/nat/index.d.ts +1 -1
  31. package/dist/nat/nat-service.d.ts +45 -3
  32. package/dist/nat/nat-service.js +116 -3
  33. package/dist/nat/nat-service.js.map +1 -1
  34. package/dist/nat/secrets/index.d.ts +7 -0
  35. package/dist/nat/secrets/index.js +28 -2
  36. package/dist/nat/secrets/index.js.map +1 -1
  37. package/dist/nat/types.d.ts +3 -1
  38. package/dist/nat/types.js.map +1 -1
  39. package/dist/orchestrator/host-process-orchestrator.d.ts +60 -1
  40. package/dist/orchestrator/host-process-orchestrator.js +246 -39
  41. package/dist/orchestrator/host-process-orchestrator.js.map +1 -1
  42. package/dist/orchestrator/index.d.ts +3 -2
  43. package/dist/orchestrator/index.js +1 -1
  44. package/dist/orchestrator/index.js.map +1 -1
  45. package/dist/orchestrator/state-store.d.ts +6 -5
  46. package/dist/orchestrator/state-store.js +10 -2
  47. package/dist/orchestrator/state-store.js.map +1 -1
  48. package/dist/orchestrator/types.d.ts +45 -10
  49. package/dist/orchestrator/types.js.map +1 -1
  50. package/dist/push/index.d.ts +67 -0
  51. package/dist/push/index.js +101 -0
  52. package/dist/push/index.js.map +1 -0
  53. package/dist/server/error-handler.d.ts +2 -0
  54. package/dist/server/error-handler.js +4 -0
  55. package/dist/server/error-handler.js.map +1 -1
  56. package/dist/server/routes/nodes.d.ts +4 -3
  57. package/dist/server/routes/nodes.js +38 -24
  58. package/dist/server/routes/nodes.js.map +1 -1
  59. package/dist/server/static.d.ts +12 -0
  60. package/dist/server/static.js +24 -7
  61. package/dist/server/static.js.map +1 -1
  62. package/dist/ui/assets/index-BlMXQPSw.js +14 -0
  63. package/dist/ui/assets/{index-C9uChk2P.js.map → index-BlMXQPSw.js.map} +1 -1
  64. package/dist/ui/index.html +1 -1
  65. package/dist/update/apply.d.ts +23 -1
  66. package/dist/update/apply.js +46 -4
  67. package/dist/update/apply.js.map +1 -1
  68. package/dist/update/index.d.ts +14 -3
  69. package/dist/update/index.js +35 -2
  70. package/dist/update/index.js.map +1 -1
  71. package/dist/update/manifest.d.ts +28 -9
  72. package/dist/update/manifest.js +56 -29
  73. package/dist/update/manifest.js.map +1 -1
  74. package/dist/update/release-key.d.ts +18 -7
  75. package/dist/update/release-key.js +28 -15
  76. package/dist/update/release-key.js.map +1 -1
  77. package/dist/update/sign.d.ts +46 -0
  78. package/dist/update/sign.js +53 -0
  79. package/dist/update/sign.js.map +1 -0
  80. package/package.json +9 -4
  81. package/service/README.md +95 -86
  82. package/src/__tests__/cli-invite.smoke.test.ts +6 -1
  83. package/src/__tests__/cli-nat.smoke.test.ts +6 -1
  84. package/src/__tests__/cli.smoke.test.ts +6 -1
  85. package/src/__tests__/host-authority.smoke.test.ts +123 -0
  86. package/src/__tests__/orchestrator-authority.test.ts +198 -0
  87. package/src/__tests__/orchestrator-push.test.ts +145 -0
  88. package/src/auth/__tests__/trust-circle-integration.test.ts +40 -21
  89. package/src/auth/__tests__/trust-circle.test.ts +90 -23
  90. package/src/auth/trust-circle.ts +363 -304
  91. package/src/auth/types.ts +4 -1
  92. package/src/authority/__tests__/authority-node-client.test.ts +166 -0
  93. package/src/authority/authority-node-client.ts +199 -0
  94. package/src/authority/index.ts +12 -0
  95. package/src/bin/host.ts +1038 -905
  96. package/src/index.ts +34 -3
  97. package/src/installer/__tests__/installer.smoke.test.ts +64 -0
  98. package/src/installer/browser.ts +40 -42
  99. package/src/installer/config.ts +27 -1
  100. package/src/installer/index.ts +18 -12
  101. package/src/installer/service-host/launchd.ts +1 -1
  102. package/src/installer/service-host/systemd.ts +1 -1
  103. package/src/nat/__tests__/ddns-updater.test.ts +1 -1
  104. package/src/nat/__tests__/nat-service.test.ts +192 -0
  105. package/src/nat/__tests__/port-mapper.test.ts +1 -1
  106. package/src/nat/__tests__/secrets.test.ts +23 -1
  107. package/src/nat/index.ts +1 -1
  108. package/src/nat/nat-service.ts +131 -5
  109. package/src/nat/secrets/index.ts +32 -2
  110. package/src/nat/types.ts +3 -1
  111. package/src/orchestrator/host-process-orchestrator.ts +294 -54
  112. package/src/orchestrator/index.ts +9 -2
  113. package/src/orchestrator/state-store.ts +21 -3
  114. package/src/orchestrator/types.ts +48 -2
  115. package/src/push/__tests__/push.test.ts +90 -0
  116. package/src/push/index.ts +146 -0
  117. package/src/server/__tests__/error-handler.test.ts +4 -4
  118. package/src/server/__tests__/nodes-route.test.ts +90 -10
  119. package/src/server/__tests__/publishers.test.ts +1 -1
  120. package/src/server/__tests__/static.test.ts +145 -0
  121. package/src/server/__tests__/status-route.test.ts +2 -2
  122. package/src/server/error-handler.ts +4 -0
  123. package/src/server/routes/nodes.ts +48 -26
  124. package/src/server/static.ts +24 -8
  125. package/src/update/__tests__/apply.test.ts +58 -1
  126. package/src/update/__tests__/manifest.test.ts +41 -6
  127. package/src/update/__tests__/release-key.test.ts +29 -0
  128. package/src/update/__tests__/sign.test.ts +78 -0
  129. package/src/update/__tests__/update-service.integration.test.ts +44 -9
  130. package/src/update/apply.ts +46 -4
  131. package/src/update/index.ts +41 -3
  132. package/src/update/manifest.ts +214 -172
  133. package/src/update/release-key.ts +30 -16
  134. package/src/update/sign.ts +74 -0
  135. package/dist/ui/assets/index-C9uChk2P.js +0 -14
@@ -21,6 +21,8 @@ const DEFAULTS = {
21
21
  const STARTUP_TOKEN_FILE = '.startup-token';
22
22
  const CONFIG_FILE = 'cadre.json';
23
23
  const LIVENESS_POLL_MS = 100;
24
+ /** Fixed friendly id for the admin's authority node. */
25
+ export const AUTHORITY_CONTAINER_ID = 'authority';
24
26
  /**
25
27
  * Runs cadre nodes as plain Node child processes on the host.
26
28
  *
@@ -66,6 +68,7 @@ export class HostProcessOrchestrator {
66
68
  this.logMaxFiles = cfg.logMaxFiles ?? DEFAULTS.logMaxFiles;
67
69
  this.defaultMemoryLimit = cfg.defaultResources?.memoryLimit;
68
70
  this.cliEntrypoint = cfg.spawn?.entrypoint ?? resolveCadreCliBin();
71
+ this.pushResolver = cfg.pushResolver;
69
72
  log('HostProcessOrchestrator rootDir=%s cli=%s', this.rootDir, this.cliEntrypoint);
70
73
  }
71
74
  /**
@@ -75,6 +78,7 @@ export class HostProcessOrchestrator {
75
78
  */
76
79
  async init() {
77
80
  const state = this.stateStore.load();
81
+ this.authorityConfig = state.authorityConfig;
78
82
  for (const persisted of state.handles) {
79
83
  const alive = isPidAlive(persisted.pid) && tokenMatches(persisted.workdir, persisted.startupToken);
80
84
  const handle = {
@@ -87,6 +91,7 @@ export class HostProcessOrchestrator {
87
91
  spawnedAt: persisted.spawnedAt,
88
92
  partyId: persisted.partyId,
89
93
  profile: persisted.profile,
94
+ ...(persisted.authority ? { authority: true } : {}),
90
95
  alive,
91
96
  };
92
97
  this.handles.set(handle.dockerId, handle);
@@ -94,6 +99,10 @@ export class HostProcessOrchestrator {
94
99
  this.portAllocator.markUsed(persisted.ports.health);
95
100
  this.portAllocator.markUsed(persisted.ports.metrics);
96
101
  this.portAllocator.markUsed(persisted.ports.p2p);
102
+ // `admin` is absent on handles persisted before this build.
103
+ if (typeof persisted.ports.admin === 'number') {
104
+ this.portAllocator.markUsed(persisted.ports.admin);
105
+ }
97
106
  }
98
107
  log('init: re-attached %d handles', state.handles.length);
99
108
  }
@@ -150,13 +159,163 @@ export class HostProcessOrchestrator {
150
159
  return dead;
151
160
  }
152
161
  async createContainer(request) {
153
- const healthPort = this.portAllocator.allocate();
154
- const metricsPort = this.portAllocator.allocate();
155
- const p2pPort = this.portAllocator.allocate();
156
- const workdir = join(this.rootDir, request.containerId);
162
+ const ports = {
163
+ health: this.portAllocator.allocate(),
164
+ metrics: this.portAllocator.allocate(),
165
+ p2p: this.portAllocator.allocate(),
166
+ admin: this.portAllocator.allocate(),
167
+ };
168
+ // Only storage-profile nodes participate in strands and thus fan out push
169
+ // wakes — a transaction-only node need not carry credentials.
170
+ const push = request.profile === 'storage' ? await this.resolvePush() : undefined;
171
+ return this.launchChild({
172
+ containerId: request.containerId,
173
+ partyId: request.partyId,
174
+ profile: request.profile,
175
+ ports,
176
+ authority: false,
177
+ buildConfig: (workdir) => this.buildChildConfig(request, workdir, push),
178
+ extraArgs: [],
179
+ ...(request.resources?.memoryLimit ? { memoryLimit: request.resources.memoryLimit } : {}),
180
+ });
181
+ }
182
+ /**
183
+ * Resolve the push credentials to inject into the node about to spawn. Called
184
+ * on every spawn so a re-spawn re-reads the secret store — raw private keys are
185
+ * never persisted. A resolver failure (e.g. a partial credential set) is
186
+ * logged and degrades to "no push" rather than failing the spawn: the node
187
+ * stays up and reachable, just without platform push-wake.
188
+ */
189
+ async resolvePush() {
190
+ if (!this.pushResolver)
191
+ return undefined;
192
+ try {
193
+ const push = await this.pushResolver();
194
+ if (push) {
195
+ log('resolved push credentials: fcm=%s apns=%s cooldownMs=%s', !!push.fcm, !!push.apns, push.cooldownMs);
196
+ }
197
+ return push;
198
+ }
199
+ catch (err) {
200
+ log('push resolver failed; spawning node without push: %s', err.message);
201
+ return undefined;
202
+ }
203
+ }
204
+ /**
205
+ * Ensure the admin's authority node is running, spawning it if absent or
206
+ * dead. Idempotent: a second call with the node already alive returns the
207
+ * existing handle without launching a second child. The spawn parameters
208
+ * are persisted so a later `/api/nodes/:id/{start,restart}` (or an
209
+ * orchestrator restart) can re-spawn it without re-supplying them.
210
+ *
211
+ * The authority node is spawned as `cadre-cli start --authority
212
+ * --admin-port <p> --identity-protobuf <identityPath>` so it carries the
213
+ * host's libp2p identity, founds/joins the control network, and exposes the
214
+ * loopback admin channel the manager delegates to.
215
+ */
216
+ async ensureAuthorityNode(cfg) {
217
+ const config = cfg ?? this.authorityConfig;
218
+ if (!config) {
219
+ throw new Error('ensureAuthorityNode: no authority config supplied and none persisted');
220
+ }
221
+ this.authorityConfig = config;
222
+ const existing = this.findAuthorityHandle();
223
+ if (existing && isPidAlive(existing.pid) && tokenMatches(existing.workdir, existing.startupToken)) {
224
+ this.persist();
225
+ return toNodeInfo(existing);
226
+ }
227
+ if (existing) {
228
+ // Drop the stale handle and release its ports — but DO NOT delete the
229
+ // workdir: the authority node's control-DB storage lives there and must
230
+ // survive a restart. launchChild reuses the same workdir.
231
+ this.releasePorts(existing.ports);
232
+ this.handles.delete(existing.dockerId);
233
+ }
234
+ const profile = config.profile ?? 'storage';
235
+ // Re-resolve push credentials from the secret store on every (re-)spawn so a
236
+ // restart picks up rotated keys and nothing raw is replayed from state.json.
237
+ const push = await this.resolvePush();
238
+ const ports = {
239
+ health: this.portAllocator.allocate(),
240
+ metrics: this.portAllocator.allocate(),
241
+ admin: this.portAllocator.allocate(),
242
+ // The authority node must listen on the configured libp2p port so the
243
+ // NAT mapping (external → internal) lands on it. That port is outside
244
+ // the managed range, so markUsed is a harmless no-op.
245
+ p2p: config.libp2pPort,
246
+ };
247
+ this.portAllocator.markUsed(config.libp2pPort);
248
+ const result = this.launchChild({
249
+ containerId: AUTHORITY_CONTAINER_ID,
250
+ partyId: config.partyId,
251
+ profile,
252
+ ports,
253
+ authority: true,
254
+ buildConfig: (workdir) => this.buildAuthorityChildConfig(config, profile, workdir, push),
255
+ extraArgs: ['--authority', '--admin-port', String(ports.admin), '--identity-protobuf', config.identityPath],
256
+ });
257
+ const handle = this.handles.get(result.dockerId);
258
+ return toNodeInfo(handle);
259
+ }
260
+ /** Endpoint + bearer for the authority node's admin channel, if spawned. */
261
+ getAuthorityAdminEndpoint() {
262
+ const handle = this.findAuthorityHandle();
263
+ if (!handle)
264
+ return undefined;
265
+ return {
266
+ baseUrl: `http://127.0.0.1:${handle.ports.admin}`,
267
+ token: handle.startupToken,
268
+ };
269
+ }
270
+ /** Whether spawn parameters for the authority node are known (persisted). */
271
+ hasAuthorityConfig() {
272
+ return this.authorityConfig !== undefined;
273
+ }
274
+ /** Whether the given friendly/docker id refers to the authority node. */
275
+ isAuthorityNode(idOrDockerId) {
276
+ if (idOrDockerId === AUTHORITY_CONTAINER_ID)
277
+ return true;
278
+ const direct = this.handles.get(idOrDockerId);
279
+ if (direct?.authority)
280
+ return true;
281
+ for (const h of this.handles.values()) {
282
+ if (h.authority && h.containerId === idOrDockerId)
283
+ return true;
284
+ }
285
+ return false;
286
+ }
287
+ /** Stop the authority node (if running). Used on graceful shutdown. */
288
+ async stopAuthorityNode() {
289
+ const handle = this.findAuthorityHandle();
290
+ if (handle && isPidAlive(handle.pid)) {
291
+ await this.stopContainer(handle.dockerId);
292
+ }
293
+ }
294
+ /** Stop the authority node (if running), then re-spawn it from saved config. */
295
+ async restartAuthorityNode() {
296
+ const handle = this.findAuthorityHandle();
297
+ if (handle && isPidAlive(handle.pid)) {
298
+ await this.stopContainer(handle.dockerId);
299
+ }
300
+ return this.ensureAuthorityNode();
301
+ }
302
+ /**
303
+ * Core spawn mechanics shared by `createContainer` and `ensureAuthorityNode`.
304
+ * The caller has already allocated `ports`. Releases the ports on a
305
+ * synchronous spawn failure.
306
+ */
307
+ launchChild(opts) {
308
+ const { containerId, ports } = opts;
309
+ const workdir = join(this.rootDir, containerId);
157
310
  mkdirSync(workdir, { recursive: true });
158
311
  mkdirSync(join(workdir, 'storage'), { recursive: true });
159
312
  const token = randomBytes(16).toString('hex');
313
+ // Per-container secret gating the node's `POST /seed` route. The node
314
+ // refuses seed delivery unless the caller presents this as a bearer token
315
+ // (and unregisters the route entirely when the env var is empty), so we
316
+ // mint a fresh high-entropy value per child and hand it back on the result
317
+ // for `ContainerService.applySeed` to send.
318
+ const seedToken = randomBytes(32).toString('base64url');
160
319
  const tokenPath = join(workdir, STARTUP_TOKEN_FILE);
161
320
  // Ensure stale token from a previous container with the same id is cleared.
162
321
  if (existsSync(tokenPath)) {
@@ -166,16 +325,17 @@ export class HostProcessOrchestrator {
166
325
  catch { /* ignore */ }
167
326
  }
168
327
  const configPath = join(workdir, CONFIG_FILE);
169
- writeFileSync(configPath, JSON.stringify(this.buildChildConfig(request, workdir), null, 2), 'utf8');
170
- const memoryLimit = request.resources?.memoryLimit ?? this.defaultMemoryLimit;
328
+ writeFileSync(configPath, JSON.stringify(opts.buildConfig(workdir), null, 2), 'utf8');
329
+ const memoryLimit = opts.memoryLimit ?? this.defaultMemoryLimit;
171
330
  const heapBytes = parseMemoryLimit(memoryLimit);
172
331
  const heapMB = heapBytes !== undefined ? Math.max(64, Math.floor(heapBytes / (1024 * 1024))) : undefined;
173
332
  const env = {
174
333
  ...process.env,
175
334
  CADRE_STARTUP_TOKEN: token,
176
- CADRE_HEALTH_PORT: String(healthPort),
177
- CADRE_METRICS_PORT: String(metricsPort),
178
- CADRE_LISTEN_ADDRS: `/ip4/0.0.0.0/tcp/${p2pPort}`,
335
+ CADRE_HEALTH_PORT: String(ports.health),
336
+ CADRE_METRICS_PORT: String(ports.metrics),
337
+ CADRE_LISTEN_ADDRS: `/ip4/0.0.0.0/tcp/${ports.p2p}`,
338
+ CADRE_SEED_TOKEN: seedToken,
179
339
  };
180
340
  if (heapMB !== undefined) {
181
341
  env.NODE_OPTIONS = `${process.env.NODE_OPTIONS ?? ''} --max-old-space-size=${heapMB}`.trim();
@@ -186,16 +346,18 @@ export class HostProcessOrchestrator {
186
346
  const logPath = defaultLogPath(workdir);
187
347
  maybeRotateAtSpawn(logPath, this.logMaxBytes, this.logMaxFiles);
188
348
  const logFd = openSync(logPath, 'a');
349
+ const args = [
350
+ this.cliEntrypoint,
351
+ 'start',
352
+ '-c', configPath,
353
+ '--health-port', String(ports.health),
354
+ '--metrics-port', String(ports.metrics),
355
+ '--startup-token-file', tokenPath,
356
+ ...opts.extraArgs,
357
+ ];
189
358
  let child;
190
359
  try {
191
- child = spawn(process.execPath, [
192
- this.cliEntrypoint,
193
- 'start',
194
- '-c', configPath,
195
- '--health-port', String(healthPort),
196
- '--metrics-port', String(metricsPort),
197
- '--startup-token-file', tokenPath,
198
- ], {
360
+ child = spawn(process.execPath, args, {
199
361
  cwd: workdir,
200
362
  detached: true,
201
363
  // Inherit the log fd directly. OS duplicates it into the child;
@@ -209,32 +371,29 @@ export class HostProcessOrchestrator {
209
371
  // Synchronous spawn failure — release the fd and the reserved ports
210
372
  // before propagating, so a bad-args bug doesn't leak resources.
211
373
  closeSync(logFd);
212
- this.portAllocator.release(healthPort);
213
- this.portAllocator.release(metricsPort);
214
- this.portAllocator.release(p2pPort);
374
+ this.releasePorts(ports);
215
375
  throw err;
216
376
  }
217
377
  // Always release the parent's copy of the fd — the child has its own.
218
378
  closeSync(logFd);
219
379
  if (!child.pid) {
220
380
  // Spawn returned without a pid — release reservations and report.
221
- this.portAllocator.release(healthPort);
222
- this.portAllocator.release(metricsPort);
223
- this.portAllocator.release(p2pPort);
224
- throw new Error(`Failed to spawn child for container ${request.containerId}`);
381
+ this.releasePorts(ports);
382
+ throw new Error(`Failed to spawn child for container ${containerId}`);
225
383
  }
226
384
  child.unref();
227
385
  const dockerId = encodeDockerId(child.pid, token);
228
386
  const handle = {
229
- containerId: request.containerId,
387
+ containerId,
230
388
  dockerId,
231
389
  pid: child.pid,
232
390
  startupToken: token,
233
391
  workdir,
234
- ports: { health: healthPort, metrics: metricsPort, p2p: p2pPort },
392
+ ports,
235
393
  spawnedAt: new Date().toISOString(),
236
- partyId: request.partyId,
237
- profile: request.profile,
394
+ partyId: opts.partyId,
395
+ profile: opts.profile,
396
+ ...(opts.authority ? { authority: true } : {}),
238
397
  child,
239
398
  alive: true,
240
399
  };
@@ -248,14 +407,31 @@ export class HostProcessOrchestrator {
248
407
  this.handles.set(dockerId, handle);
249
408
  this.persist();
250
409
  this.emitStateChange(handle);
251
- log('created container %s -> pid %d ports=%j', request.containerId, child.pid, handle.ports);
410
+ log('created container %s -> pid %d ports=%j', containerId, child.pid, handle.ports);
252
411
  return {
253
412
  dockerId,
254
- healthEndpoint: `http://localhost:${healthPort}/health`,
255
- metricsEndpoint: `http://localhost:${metricsPort}/metrics`,
256
- p2pPort,
413
+ healthEndpoint: `http://localhost:${ports.health}/health`,
414
+ metricsEndpoint: `http://localhost:${ports.metrics}/metrics`,
415
+ // The node's seed API (`POST /seed`) is bound to the same server/port as `/health`.
416
+ seedEndpoint: `http://localhost:${ports.health}/seed`,
417
+ seedToken,
418
+ p2pPort: ports.p2p,
257
419
  };
258
420
  }
421
+ /** Locate the authority node's handle, if one has been spawned. */
422
+ findAuthorityHandle() {
423
+ for (const h of this.handles.values()) {
424
+ if (h.authority || h.containerId === AUTHORITY_CONTAINER_ID)
425
+ return h;
426
+ }
427
+ return undefined;
428
+ }
429
+ releasePorts(ports) {
430
+ this.portAllocator.release(ports.health);
431
+ this.portAllocator.release(ports.metrics);
432
+ this.portAllocator.release(ports.p2p);
433
+ this.portAllocator.release(ports.admin);
434
+ }
259
435
  async stopContainer(dockerId) {
260
436
  const handle = this.requireHandle(dockerId);
261
437
  if (!isPidAlive(handle.pid)) {
@@ -313,9 +489,7 @@ export class HostProcessOrchestrator {
313
489
  if (isPidAlive(handle.pid)) {
314
490
  await this.stopContainer(dockerId);
315
491
  }
316
- this.portAllocator.release(handle.ports.health);
317
- this.portAllocator.release(handle.ports.metrics);
318
- this.portAllocator.release(handle.ports.p2p);
492
+ this.releasePorts(handle.ports);
319
493
  // On Windows the OS releases the child's cwd handle asynchronously, so
320
494
  // retry rmSync to give the kernel a chance to drop it.
321
495
  try {
@@ -328,7 +502,7 @@ export class HostProcessOrchestrator {
328
502
  this.persist();
329
503
  }
330
504
  async isRunning(dockerId) {
331
- let handle = this.handles.get(dockerId);
505
+ const handle = this.handles.get(dockerId);
332
506
  let pid;
333
507
  let token;
334
508
  let workdir;
@@ -390,7 +564,7 @@ export class HostProcessOrchestrator {
390
564
  }
391
565
  return handle;
392
566
  }
393
- buildChildConfig(req, workdir) {
567
+ buildChildConfig(req, workdir, push) {
394
568
  const cfg = {
395
569
  controlNetwork: {
396
570
  partyId: req.partyId,
@@ -409,12 +583,43 @@ export class HostProcessOrchestrator {
409
583
  }
410
584
  cfg.storage = storage;
411
585
  }
586
+ // Push credentials land in the child's cadre.json on the host filesystem —
587
+ // the same trust boundary as the control-DB storage in this workdir. The
588
+ // private keys are NOT logged (the resolver redacts; we log only presence).
589
+ if (push)
590
+ cfg.push = push;
412
591
  return cfg;
413
592
  }
593
+ /**
594
+ * Child config for the authority node. It founds/joins the control network
595
+ * for `partyId` (no bootstrap peers — it is the founding node), and carries
596
+ * the host identity via `--identity-protobuf` (passed as a spawn arg).
597
+ */
598
+ buildAuthorityChildConfig(cfg, profile, workdir, push) {
599
+ const config = {
600
+ controlNetwork: {
601
+ partyId: cfg.partyId,
602
+ bootstrapNodes: [],
603
+ },
604
+ profile,
605
+ strandFilter: 'all',
606
+ };
607
+ if (profile === 'storage') {
608
+ config.storage = { type: 'file', path: join(workdir, 'storage') };
609
+ }
610
+ // The always-on authority/storage node participates in strands, so it owns
611
+ // the push-wake fan-out when credentials are configured. Written into
612
+ // cadre.json (same host trust boundary as the workdir's control-DB); keys
613
+ // are never logged — only the redacted presence line in resolvePush.
614
+ if (push)
615
+ config.push = push;
616
+ return config;
617
+ }
414
618
  persist() {
415
619
  const state = {
416
620
  version: 1,
417
621
  handles: [...this.handles.values()].map((h) => this.toPersisted(h)),
622
+ ...(this.authorityConfig ? { authorityConfig: this.authorityConfig } : {}),
418
623
  };
419
624
  this.stateStore.save(state);
420
625
  }
@@ -442,6 +647,7 @@ export class HostProcessOrchestrator {
442
647
  spawnedAt: h.spawnedAt,
443
648
  partyId: h.partyId,
444
649
  profile: h.profile,
650
+ ...(h.authority ? { authority: true } : {}),
445
651
  };
446
652
  }
447
653
  }
@@ -455,6 +661,7 @@ function toNodeInfo(h) {
455
661
  spawnedAt: h.spawnedAt,
456
662
  workdir: h.workdir,
457
663
  ports: { ...h.ports },
664
+ ...(h.authority ? { authority: true } : {}),
458
665
  };
459
666
  }
460
667
  /**
@@ -469,7 +676,7 @@ function resolveCadreCliBin() {
469
676
  catch (err) {
470
677
  throw new Error(`Unable to resolve @serfab/cadre-cli bin from cadre-host. ` +
471
678
  `Ensure cadre-cli is built (yarn workspace @serfab/cadre-cli build) ` +
472
- `and listed as a dependency. Underlying error: ${err.message}`);
679
+ `and listed as a dependency. Underlying error: ${err.message}`, { cause: err });
473
680
  }
474
681
  }
475
682
  function tokenMatches(workdir, expected) {
@@ -491,7 +698,7 @@ function tokenMatches(workdir, expected) {
491
698
  function maybeRotateAtSpawn(logPath, maxBytes, maxFiles) {
492
699
  if (maxBytes <= 0 || maxFiles < 1)
493
700
  return;
494
- let size = 0;
701
+ let size;
495
702
  try {
496
703
  size = statSync(logPath).size;
497
704
  }
@@ -1 +1 @@
1
- {"version":3,"file":"host-process-orchestrator.js","sourceRoot":"","sources":["../../src/orchestrator/host-process-orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host-process-orchestrator.js","sourceRoot":"","sources":["../../src/orchestrator/host-process-orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,UAAU,EACV,YAAY,EACZ,MAAM,EACN,aAAa,EACb,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAQhC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAA6C,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EACL,cAAc,EACd,cAAc,GAQf,MAAM,YAAY,CAAC;AAEpB,MAAM,GAAG,GAAG,KAAK,CAAC,yBAAyB,CAAC,CAAC;AAE7C,MAAM,QAAQ,GAAG;IACf,cAAc,EAAE,KAAK;IACrB,YAAY,EAAE,KAAK;IACnB,aAAa,EAAE,KAAK;IACpB,WAAW,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IAC7B,WAAW,EAAE,CAAC;CACf,CAAC;AAEF,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAC5C,MAAM,WAAW,GAAG,YAAY,CAAC;AACjC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,wDAAwD;AACxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAUlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,OAAO,uBAAuB;IAiBlC,YAA6B,GAAsB;QAAtB,QAAG,GAAH,GAAG,CAAmB;QATlC,YAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAIrD,4EAA4E;QAC3D,mBAAc,GAAG,IAAI,GAAG,EAAqB,CAAC;QAK7D,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CACpC,GAAG,CAAC,SAAS,EAAE,KAAK,IAAI,QAAQ,CAAC,cAAc,EAC/C,GAAG,CAAC,SAAS,EAAE,GAAG,IAAI,QAAQ,CAAC,YAAY,CAC5C,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,CAAC;QACjE,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC;QAC3D,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC;QAC3D,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,gBAAgB,EAAE,WAAW,CAAC;QAC5D,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,KAAK,EAAE,UAAU,IAAI,kBAAkB,EAAE,CAAC;QACnE,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;QACrC,GAAG,CAAC,2CAA2C,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACrF,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAC7C,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;YACnG,MAAM,MAAM,GAAW;gBACrB,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,GAAG,EAAE,SAAS,CAAC,GAAG;gBAClB,YAAY,EAAE,SAAS,CAAC,YAAY;gBACpC,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,KAAK;aACN,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC1C,gFAAgF;YAChF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACrD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjD,4DAA4D;YAC5D,IAAI,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QACD,GAAG,CAAC,8BAA8B,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,YAAoB;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,MAAM;YAAE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;QACtC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,CAAC,WAAW,KAAK,YAAY;gBAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,YAAoB;QAClC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;YAAE,OAAO,YAAY,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,CAAC,WAAW,KAAK,YAAY;gBAAE,OAAO,CAAC,CAAC,QAAQ,CAAC;QACxD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,QAA2B;QACvC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,mEAAmE;IACnE,eAAe;QACb,MAAM,IAAI,GAAsB,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAkC;QACtD,MAAM,KAAK,GAAc;YACvB,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YACrC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YACtC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YAClC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;SACrC,CAAC;QACF,0EAA0E;QAC1E,8DAA8D;QAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,OAAO,IAAI,CAAC,WAAW,CAAC;YACtB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK;YACL,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;YACvE,SAAS,EAAE,EAAE;YACb,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1F,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,SAAS,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YACvC,IAAI,IAAI,EAAE,CAAC;gBACT,GAAG,CAAC,yDAAyD,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3G,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,sDAAsD,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YACpF,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,mBAAmB,CAAC,GAA0B;QAClD,MAAM,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC1F,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;QAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5C,IAAI,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAClG,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,sEAAsE;YACtE,wEAAwE;YACxE,0DAA0D;YAC1D,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;QAC5C,6EAA6E;QAC7E,6EAA6E;QAC7E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,KAAK,GAAc;YACvB,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YACrC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YACtC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YACpC,sEAAsE;YACtE,sEAAsE;YACtE,sDAAsD;YACtD,GAAG,EAAE,MAAM,CAAC,UAAU;SACvB,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE/C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;YAC9B,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO;YACP,KAAK;YACL,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;YACxF,SAAS,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,qBAAqB,EAAE,MAAM,CAAC,YAAY,CAAC;SAC5G,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAE,CAAC;QAClD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,4EAA4E;IAC5E,yBAAyB;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,oBAAoB,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;YACjD,KAAK,EAAE,MAAM,CAAC,YAAY;SAC3B,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC;IAC5C,CAAC;IAED,yEAAyE;IACzE,eAAe,CAAC,YAAoB;QAClC,IAAI,YAAY,KAAK,sBAAsB;YAAE,OAAO,IAAI,CAAC;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,MAAM,EAAE,SAAS;YAAE,OAAO,IAAI,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,WAAW,KAAK,YAAY;gBAAE,OAAO,IAAI,CAAC;QACjE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,iBAAiB;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC1C,IAAI,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,KAAK,CAAC,oBAAoB;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC1C,IAAI,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACK,WAAW,CAAC,IASnB;QACC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAChD,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzD,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9C,sEAAsE;QACtE,0EAA0E;QAC1E,wEAAwE;QACxE,2EAA2E;QAC3E,4CAA4C;QAC5C,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACpD,4EAA4E;QAC5E,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC;gBAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC9C,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAEtF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,kBAAkB,CAAC;QAChE,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEzG,MAAM,GAAG,GAAsB;YAC7B,GAAG,OAAO,CAAC,GAAG;YACd,mBAAmB,EAAE,KAAK;YAC1B,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YACvC,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;YACzC,kBAAkB,EAAE,oBAAoB,KAAK,CAAC,GAAG,EAAE;YACnD,gBAAgB,EAAE,SAAS;SAC5B,CAAC;QACF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,GAAG,CAAC,YAAY,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,yBAAyB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAC/F,CAAC;QAED,sEAAsE;QACtE,sEAAsE;QACtE,uDAAuD;QACvD,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACxC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAErC,MAAM,IAAI,GAAG;YACX,IAAI,CAAC,aAAa;YAClB,OAAO;YACP,IAAI,EAAE,UAAU;YAChB,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YACrC,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;YACvC,sBAAsB,EAAE,SAAS;YACjC,GAAG,IAAI,CAAC,SAAS;SAClB,CAAC;QAEF,IAAI,KAAmB,CAAC;QACxB,IAAI,CAAC;YACH,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE;gBACpC,GAAG,EAAE,OAAO;gBACZ,QAAQ,EAAE,IAAI;gBACd,gEAAgE;gBAChE,8DAA8D;gBAC9D,iCAAiC;gBACjC,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC;gBAC/B,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,oEAAoE;YACpE,gEAAgE;YAChE,SAAS,CAAC,KAAK,CAAC,CAAC;YACjB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACzB,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,sEAAsE;QACtE,SAAS,CAAC,KAAK,CAAC,CAAC;QAEjB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACf,kEAAkE;YAClE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uCAAuC,WAAW,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,MAAM,GAAW;YACrB,WAAW;YACX,QAAQ;YACR,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,YAAY,EAAE,KAAK;YACnB,OAAO;YACP,KAAK;YACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,KAAK;YACL,KAAK,EAAE,IAAI;SACZ,CAAC;QAEF,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;YACtB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBACjB,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;gBAChB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAE7B,GAAG,CAAC,yCAAyC,EAAE,WAAW,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAErF,OAAO;YACL,QAAQ;YACR,cAAc,EAAE,oBAAoB,KAAK,CAAC,MAAM,SAAS;YACzD,eAAe,EAAE,oBAAoB,KAAK,CAAC,OAAO,UAAU;YAC5D,oFAAoF;YACpF,YAAY,EAAE,oBAAoB,KAAK,CAAC,MAAM,OAAO;YACrD,SAAS;YACT,OAAO,EAAE,KAAK,CAAC,GAAG;SACnB,CAAC;IACJ,CAAC;IAED,mEAAmE;IAC3D,mBAAmB;QACzB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,WAAW,KAAK,sBAAsB;gBAAE,OAAO,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,YAAY,CAAC,KAAgB;QACnC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,qEAAqE;QACrE,oEAAoE;QACpE,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK;YAC9B,CAAC,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,KAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7E,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAEtB,GAAG,CAAC,+BAA+B,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QACrE,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;YACjD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrB,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;QACjD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC;gBAAE,MAAM;YACnC,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,+BAA+B,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YACrE,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;gBACjD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;oBACrB,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YACvC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3D,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE/C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;QAC9B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,QAAQ;YAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAgB;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEhC,uEAAuE;QACvE,uDAAuD;QACvD,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB;QAC9B,MAAM,MAAM,GAAuB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,GAAW,CAAC;QAChB,IAAI,KAAa,CAAC;QAClB,IAAI,OAA2B,CAAC;QAEhC,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;YACjB,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;YAC5B,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACzC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;gBAClB,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,MAAM;gBAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,mEAAmE;YACnE,wDAAwD;YACxD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;QACjF,CAAC;QACD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzC,OAAO;gBACL,UAAU,EAAE,KAAK,CAAC,GAAG;gBACrB,WAAW,EAAE,KAAK,CAAC,MAAM;gBACzB,cAAc,EAAE,CAAC;gBACjB,cAAc,EAAE,CAAC;aAClB,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACnD,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;QACjF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,IAAI,GAAG,GAAG;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAEO,aAAa,CAAC,QAAgB;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,gBAAgB,CACtB,GAA8B,EAC9B,OAAe,EACf,IAAsB;QAEtB,MAAM,GAAG,GAA4B;YACnC,cAAc,EAAE;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,cAAc,EAAE,GAAG,CAAC,cAAc;aACnC;YACD,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,KAAK;SACxC,CAAC;QACF,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,OAAO,GAA4B;gBACvC,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;aAC/B,CAAC;YACF,IAAI,GAAG,CAAC,SAAS,EAAE,iBAAiB,KAAK,SAAS,EAAE,CAAC;gBACnD,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC;YACvD,CAAC;YACD,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,CAAC;QACD,2EAA2E;QAC3E,yEAAyE;QACzE,4EAA4E;QAC5E,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAC1B,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;OAIG;IACK,yBAAyB,CAC/B,GAAyB,EACzB,OAAkC,EAClC,OAAe,EACf,IAAsB;QAEtB,MAAM,MAAM,GAA4B;YACtC,cAAc,EAAE;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,cAAc,EAAE,EAAE;aACnB;YACD,OAAO;YACP,YAAY,EAAE,KAAK;SACpB,CAAC;QACF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;QACpE,CAAC;QACD,2EAA2E;QAC3E,sEAAsE;QACtE,0EAA0E;QAC1E,qEAAqE;QACrE,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,OAAO;QACb,MAAM,KAAK,GAAmB;YAC5B,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACnE,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3E,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAEO,eAAe,CAAC,MAAc;QACpC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAChC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,iCAAiC,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,CAAS;QAC3B,OAAO;YACL,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,CAAC;IACJ,CAAC;CACF;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,WAAW;QACjB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACvC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE;QACrB,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB;IACzB,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,OAAO,GAAG,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,2DAA2D;YAC3D,qEAAqE;YACrE,iDAAkD,GAAa,CAAC,OAAO,EAAE,EACzE,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,OAAe,EAAE,QAAgB;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACxD,OAAO,QAAQ,KAAK,QAAQ,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,OAAe,EAAE,QAAgB,EAAE,QAAgB;IAC7E,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO;IAC1C,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;QACrB,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACzB,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC9B,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU;YAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,QAAQ,CAAC,IAAY,EAAE,CAAS;IACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC;QACvB,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,OAAO,GAAG,GAAG,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACzC,GAAG,IAAI,OAAO,CAAC;YACf,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAClC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YACnC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI;oBAAE,YAAY,EAAE,CAAC;YACtC,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,2EAA2E;QAC3E,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC5E,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC/D,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;IAC5B,MAAM,WAAW,GAA2B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;IACxG,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvF,CAAC"}
@@ -1,3 +1,4 @@
1
- export { HostProcessOrchestrator } from './host-process-orchestrator.js';
2
- export type { HostProcessConfig, ManagedNodeInfo, NodeStateListener } from './types.js';
1
+ export { HostProcessOrchestrator, AUTHORITY_CONTAINER_ID } from './host-process-orchestrator.js';
2
+ export type { AuthorityAdminEndpoint } from './host-process-orchestrator.js';
3
+ export type { HostProcessConfig, ManagedNodeInfo, NodeStateListener, NodePorts, AuthoritySpawnConfig, } from './types.js';
3
4
  export type { PersistedHandle } from './state-store.js';
@@ -1,2 +1,2 @@
1
- export { HostProcessOrchestrator } from './host-process-orchestrator.js';
1
+ export { HostProcessOrchestrator, AUTHORITY_CONTAINER_ID } from './host-process-orchestrator.js';
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { AuthoritySpawnConfig, NodePorts } from './types.js';
1
2
  /**
2
3
  * Persisted record for a single managed child. The orchestrator mirrors its
3
4
  * in-memory map to disk so that cadre-host can re-attach to surviving
@@ -9,18 +10,18 @@ export interface PersistedHandle {
9
10
  pid: number;
10
11
  startupToken: string;
11
12
  workdir: string;
12
- ports: {
13
- health: number;
14
- metrics: number;
15
- p2p: number;
16
- };
13
+ ports: NodePorts;
17
14
  spawnedAt: string;
18
15
  partyId: string;
19
16
  profile: 'storage' | 'transaction';
17
+ /** True for the admin's authority node. */
18
+ authority?: boolean;
20
19
  }
21
20
  export interface PersistedState {
22
21
  version: 1;
23
22
  handles: PersistedHandle[];
23
+ /** Spawn parameters for the authority node, so it can be re-spawned on demand. */
24
+ authorityConfig?: AuthoritySpawnConfig;
24
25
  }
25
26
  /** JSON state file at `<rootDir>/state.json`, written atomically. */
26
27
  export declare class StateStore {
@@ -20,7 +20,11 @@ export class StateStore {
20
20
  log('state file at %s has unexpected shape; treating as empty', this.path);
21
21
  return { version: STATE_VERSION, handles: [] };
22
22
  }
23
- return { version: STATE_VERSION, handles: parsed.handles };
23
+ return {
24
+ version: STATE_VERSION,
25
+ handles: parsed.handles,
26
+ ...(parsed.authorityConfig ? { authorityConfig: parsed.authorityConfig } : {}),
27
+ };
24
28
  }
25
29
  catch (err) {
26
30
  // A corrupt state file is operationally significant — surviving children
@@ -32,7 +36,11 @@ export class StateStore {
32
36
  }
33
37
  save(state) {
34
38
  mkdirSync(dirname(this.path), { recursive: true });
35
- const payload = JSON.stringify({ version: STATE_VERSION, handles: state.handles }, null, 2);
39
+ const payload = JSON.stringify({
40
+ version: STATE_VERSION,
41
+ handles: state.handles,
42
+ ...(state.authorityConfig ? { authorityConfig: state.authorityConfig } : {}),
43
+ }, null, 2);
36
44
  const tmp = `${this.path}.tmp`;
37
45
  writeFileSync(tmp, payload, { encoding: 'utf8' });
38
46
  renameSync(tmp, this.path);
@@ -1 +1 @@
1
- {"version":3,"file":"state-store.js","sourceRoot":"","sources":["../../src/orchestrator/state-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,GAAG,GAAG,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAwB5C,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB,qEAAqE;AACrE,MAAM,OAAO,UAAU;IAGrB,YAAY,OAAe;QACzB,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACjD,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;YACjD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5E,GAAG,CAAC,0DAA0D,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3E,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACjD,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QAC7D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,yEAAyE;YACzE,oEAAoE;YACpE,wDAAwD;YACxD,GAAG,CAAC,qCAAqC,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC3D,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACjD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAqB;QACxB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5F,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC;QAC/B,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAClD,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF"}
1
+ {"version":3,"file":"state-store.js","sourceRoot":"","sources":["../../src/orchestrator/state-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,GAAG,GAAG,KAAK,CAAC,wBAAwB,CAAC,CAAC;AA4B5C,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB,qEAAqE;AACrE,MAAM,OAAO,UAAU;IAGrB,YAAY,OAAe;QACzB,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACjD,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;YACjD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5E,GAAG,CAAC,0DAA0D,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3E,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACjD,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/E,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,yEAAyE;YACzE,oEAAoE;YACpE,wDAAwD;YACxD,GAAG,CAAC,qCAAqC,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC3D,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACjD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAqB;QACxB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAC5B;YACE,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7E,EACD,IAAI,EACJ,CAAC,CACF,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC;QAC/B,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAClD,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF"}