@cotal-ai/cli 0.11.6 → 0.12.0
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/commands/backup.d.ts +13 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/backup.js +443 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/channels.d.ts +10 -0
- package/dist/commands/channels.d.ts.map +1 -1
- package/dist/commands/channels.js.map +1 -1
- package/dist/commands/clean.d.ts +12 -2
- package/dist/commands/clean.d.ts.map +1 -1
- package/dist/commands/clean.js +161 -28
- package/dist/commands/clean.js.map +1 -1
- package/dist/commands/down.d.ts +5 -0
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +323 -5
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/spawn.d.ts +4 -0
- package/dist/commands/spawn.d.ts.map +1 -1
- package/dist/commands/spawn.js +43 -23
- package/dist/commands/spawn.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +3 -2
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/up.d.ts +12 -0
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +1149 -193
- package/dist/commands/up.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -4
- package/dist/index.js.map +1 -1
- package/dist/lib/backup-artifact.d.ts +50 -0
- package/dist/lib/backup-artifact.d.ts.map +1 -0
- package/dist/lib/backup-artifact.js +290 -0
- package/dist/lib/backup-artifact.js.map +1 -0
- package/dist/lib/delivery-proc.d.ts +7 -2
- package/dist/lib/delivery-proc.d.ts.map +1 -1
- package/dist/lib/delivery-proc.js +29 -19
- package/dist/lib/delivery-proc.js.map +1 -1
- package/dist/lib/endpoint-cut.d.ts +5 -0
- package/dist/lib/endpoint-cut.d.ts.map +1 -0
- package/dist/lib/endpoint-cut.js +53 -0
- package/dist/lib/endpoint-cut.js.map +1 -0
- package/dist/lib/isolated-broker.d.ts +70 -0
- package/dist/lib/isolated-broker.d.ts.map +1 -0
- package/dist/lib/isolated-broker.js +427 -0
- package/dist/lib/isolated-broker.js.map +1 -0
- package/dist/lib/maintenance-files.d.ts +10 -0
- package/dist/lib/maintenance-files.d.ts.map +1 -0
- package/dist/lib/maintenance-files.js +60 -0
- package/dist/lib/maintenance-files.js.map +1 -0
- package/dist/lib/manager-proc.d.ts +4 -0
- package/dist/lib/manager-proc.d.ts.map +1 -1
- package/dist/lib/manager-proc.js +2 -0
- package/dist/lib/manager-proc.js.map +1 -1
- package/dist/lib/restore.d.ts +52 -0
- package/dist/lib/restore.d.ts.map +1 -0
- package/dist/lib/restore.js +797 -0
- package/dist/lib/restore.js.map +1 -0
- package/package.json +7 -4
package/dist/commands/down.js
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import { closeSync, existsSync, openSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import {} from "@cotal-ai/core";
|
|
4
|
-
import { localProcessPath, removeMeshesByRoot, } from "@cotal-ai/workspace";
|
|
4
|
+
import { abortMaintenanceCut, acquireMaintenanceLock, beginMaintenanceCut, clearPreservationPrepareIntent, completeMaintenanceCut, loadMeshes, localProcessPath, readMaintenanceJournal, readPreservationPrepareIntent, readStoreIdentity, recordPreservationManagerCommit, releaseMaintenanceLock, removeMeshesByRoot, sameStoreIdentity, writePreservationPrepareIntent, MAINTENANCE_RESUME_DOCUMENT_VERSION, writeMaintenanceResumeDocument, } from "@cotal-ai/workspace";
|
|
5
|
+
import { jetstreamManager } from "@nats-io/jetstream";
|
|
6
|
+
import { connect } from "@nats-io/transport-node";
|
|
7
|
+
import { CONTROL_ADMIN, DEV_OWNER, isReachable, LEASE_TTL_MS, MANAGER_LEASE_KEY, MANAGER_LEASE_TTL_MS, deliveryBucket, managerBucket, presenceBucket, parsePrincipalKey, principalKey, standaloneConnectOpts, } from "@cotal-ai/core";
|
|
5
8
|
import { extensionNames, localProcessSurface } from "../ext-loader.js";
|
|
6
9
|
import { c } from "../ui.js";
|
|
7
10
|
import { cotalRoot } from "../lib/paths.js";
|
|
8
11
|
import { resolveSpace } from "../lib/status.js";
|
|
9
12
|
import { downManifest } from "./down-manifest.js";
|
|
13
|
+
import { askManager, resolveControlTarget } from "../lib/control.js";
|
|
14
|
+
import { connectOrExit, userViewAuthOrExit } from "../lib/connect.js";
|
|
15
|
+
import { waitForEndpointUnreachable } from "../lib/endpoint-cut.js";
|
|
10
16
|
/** Complete selective component names without importing installed packages. */
|
|
11
17
|
export function downComplete(argv) {
|
|
12
18
|
if (argv.some((word) => word === "-f" || word === "--file" || word === "--run"))
|
|
@@ -24,6 +30,14 @@ export function downComplete(argv) {
|
|
|
24
30
|
export async function down(args) {
|
|
25
31
|
const values = args.values;
|
|
26
32
|
const requested = [...new Set(args.positionals)];
|
|
33
|
+
if (values["preserve-state"]) {
|
|
34
|
+
if (requested.length || values.file || values.run || values["dry-run"])
|
|
35
|
+
throw new Error("--preserve-state is bare-whole-stack only and cannot be combined with components, --file, --run, or --dry-run");
|
|
36
|
+
await preserveStateDown(values["store-dir"]);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (values["store-dir"])
|
|
40
|
+
throw new Error("--store-dir is only valid with down --preserve-state");
|
|
27
41
|
if ((values.file || values.run) && requested.length) {
|
|
28
42
|
throw new Error("component names cannot be combined with --file or --run");
|
|
29
43
|
}
|
|
@@ -67,7 +81,7 @@ export async function down(args) {
|
|
|
67
81
|
continue;
|
|
68
82
|
}
|
|
69
83
|
try {
|
|
70
|
-
await
|
|
84
|
+
await stopLocalProcess(component, context);
|
|
71
85
|
}
|
|
72
86
|
catch (e) {
|
|
73
87
|
allStopped = false;
|
|
@@ -109,10 +123,10 @@ export const isAlive = (pid) => {
|
|
|
109
123
|
return e.code === "EPERM";
|
|
110
124
|
}
|
|
111
125
|
};
|
|
112
|
-
function processRecorded(component, context) {
|
|
126
|
+
export function processRecorded(component, context) {
|
|
113
127
|
return existsSync(localProcessPath(component.pidFile, context)) || (component.artifacts ?? []).map((artifact) => localProcessPath(artifact, context)).some(existsSync);
|
|
114
128
|
}
|
|
115
|
-
function processAlive(component, context) {
|
|
129
|
+
export function processAlive(component, context) {
|
|
116
130
|
const pidPath = localProcessPath(component.pidFile, context);
|
|
117
131
|
if (!existsSync(pidPath))
|
|
118
132
|
return false;
|
|
@@ -120,7 +134,7 @@ function processAlive(component, context) {
|
|
|
120
134
|
return pid !== undefined && isAlive(pid);
|
|
121
135
|
}
|
|
122
136
|
/** Stop one recorded process and await its actual exit before the next dependency is stopped. */
|
|
123
|
-
async function
|
|
137
|
+
export async function stopLocalProcess(component, context) {
|
|
124
138
|
const pidPath = localProcessPath(component.pidFile, context);
|
|
125
139
|
const found = processRecorded(component, context);
|
|
126
140
|
if (!existsSync(pidPath))
|
|
@@ -207,6 +221,310 @@ async function stop(component, context) {
|
|
|
207
221
|
rmSync(marker, { force: true });
|
|
208
222
|
}
|
|
209
223
|
}
|
|
224
|
+
async function preserveStateDown(storeOverride) {
|
|
225
|
+
const root = cotalRoot();
|
|
226
|
+
const matching = loadMeshes().filter((mesh) => mesh.root === root);
|
|
227
|
+
if (matching.length !== 1)
|
|
228
|
+
throw new Error(`down --preserve-state requires exactly one recorded mesh for this root; found ${matching.length}`);
|
|
229
|
+
const mesh = matching[0];
|
|
230
|
+
const storeDir = storeOverride ? resolveStore(storeOverride) : join(root, ".cotal", "nats");
|
|
231
|
+
const lock = acquireMaintenanceLock(root);
|
|
232
|
+
try {
|
|
233
|
+
const all = localProcessSurface();
|
|
234
|
+
const context = { root, space: mesh.space };
|
|
235
|
+
const existing = readMaintenanceJournal(root);
|
|
236
|
+
if (existing && existing.state !== "cut-intent" && existing.state !== "cut-committed" && existing.state !== "ready")
|
|
237
|
+
throw new Error(`cannot preserve while maintenance state is ${existing.state}`);
|
|
238
|
+
if (existing && (existing.space !== mesh.space || existing.mode !== mesh.mode ||
|
|
239
|
+
!sameStoreIdentity(existing.source, readStoreIdentity(storeDir)) || existing.cut.launch.server !== mesh.server))
|
|
240
|
+
throw new Error(`preservation retry ${existing.cut.attemptId} does not match the current mesh launch`);
|
|
241
|
+
if (existing?.state === "ready") {
|
|
242
|
+
await waitForEndpointUnreachable(mesh.server);
|
|
243
|
+
console.log(c.dim(`state for "${mesh.space}" is already preserved and offline`));
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
let attemptId;
|
|
247
|
+
let resume;
|
|
248
|
+
if (existing?.state === "cut-intent" || existing?.state === "cut-committed") {
|
|
249
|
+
attemptId = existing.cut.attemptId;
|
|
250
|
+
resume = existing.resume;
|
|
251
|
+
if (existing.state === "cut-intent") {
|
|
252
|
+
// A cut-intent retry must not depend on volatile manager memory: re-prepare the SAME
|
|
253
|
+
// attempt (idempotent on the fenced manager, a fresh fence on a restarted one) and prove
|
|
254
|
+
// the re-prepared inventory is byte-identical to the journaled resume document.
|
|
255
|
+
const manager = all.find((component) => component.name === "manager");
|
|
256
|
+
if (!manager)
|
|
257
|
+
throw new Error("local process registry has no manager descriptor");
|
|
258
|
+
if (!processAlive(manager, context)) {
|
|
259
|
+
// Pre-commit, nothing was stopped with suppression: abandon instead of wedging.
|
|
260
|
+
abortMaintenanceCut(lock);
|
|
261
|
+
clearPreservationPrepareIntent(lock);
|
|
262
|
+
throw new Error(`preservation attempt ${attemptId} lost its manager before commit; the cut intent was aborted - heal the stack with \`cotal up\` if needed, then rerun \`cotal down --preserve-state\``);
|
|
263
|
+
}
|
|
264
|
+
const retryTarget = await resolveControlTarget({ space: mesh.space, server: mesh.server }, "control-caller-admin");
|
|
265
|
+
// Plane-3 fence precedes the re-prepared inventory, exactly as on the fresh path.
|
|
266
|
+
const retryDelivery = all.find((component) => component.name === "delivery");
|
|
267
|
+
if (retryDelivery && processAlive(retryDelivery, context))
|
|
268
|
+
await stopLocalProcess(retryDelivery, context);
|
|
269
|
+
const reprepared = await askManager(retryTarget.space, retryTarget.server, "preparePreservation", { attemptId }, retryTarget.auth, CONTROL_ADMIN, 60_000);
|
|
270
|
+
const replan = reprepared.ok ? reprepared.data : undefined;
|
|
271
|
+
if (!replan?.inventory || (replan.failures?.length ?? 0) !== 0 || (replan.state !== "prepared" && replan.state !== "preserved"))
|
|
272
|
+
throw new Error(reprepared.error ?? "manager could not re-prepare the recorded preservation attempt");
|
|
273
|
+
try {
|
|
274
|
+
writeMaintenanceResumeDocument(lock, {
|
|
275
|
+
version: MAINTENANCE_RESUME_DOCUMENT_VERSION,
|
|
276
|
+
inventory: replan.inventory,
|
|
277
|
+
launch: { attemptId, space: mesh.space, server: mesh.server, storeDir, mode: mesh.mode },
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
catch (cause) {
|
|
281
|
+
// A restarted manager prepared a DIFFERENT inventory: the journaled cut no longer
|
|
282
|
+
// matches reality. Release its fence and abandon the stale intent; a rerun cuts fresh.
|
|
283
|
+
try {
|
|
284
|
+
await askManager(retryTarget.space, retryTarget.server, "abortPreservation", { attemptId }, retryTarget.auth, CONTROL_ADMIN, 30_000);
|
|
285
|
+
}
|
|
286
|
+
catch { /* best effort - the fence dies with the manager */ }
|
|
287
|
+
abortMaintenanceCut(lock);
|
|
288
|
+
clearPreservationPrepareIntent(lock);
|
|
289
|
+
throw new Error(`preservation attempt ${attemptId} no longer matches its manager's inventory (${cause.message}); the stale cut intent was aborted - rerun \`cotal down --preserve-state\``);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
// The attempt binding is durable BEFORE the manager is fenced: a crash between manager
|
|
295
|
+
// preparation and the cut-intent journal retries with the exact attempt the manager holds.
|
|
296
|
+
const intent = readPreservationPrepareIntent(root);
|
|
297
|
+
if (intent) {
|
|
298
|
+
if (intent.space !== mesh.space || intent.mode !== mesh.mode || intent.server !== mesh.server || intent.storeDir !== storeDir)
|
|
299
|
+
throw new Error(`preservation prepare intent ${intent.attemptId} does not match the current mesh launch; inspect .cotal/maintenance before retrying`);
|
|
300
|
+
attemptId = intent.attemptId;
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
attemptId = `preserve-${Date.now()}-${process.pid}`;
|
|
304
|
+
writePreservationPrepareIntent(lock, {
|
|
305
|
+
attemptId, space: mesh.space, mode: mesh.mode, server: mesh.server, storeDir,
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
const target = await resolveControlTarget({ space: mesh.space, server: mesh.server }, "control-caller-admin");
|
|
309
|
+
// Fence Plane 3 BEFORE any inventory work: with the delivery daemon stopped, no durable
|
|
310
|
+
// join/leave can mutate MEMBERS at or after the moment the inventory is taken.
|
|
311
|
+
const delivery = all.find((component) => component.name === "delivery");
|
|
312
|
+
if (delivery && processAlive(delivery, context))
|
|
313
|
+
await stopLocalProcess(delivery, context);
|
|
314
|
+
const prepared = await askManager(target.space, target.server, "preparePreservation", { attemptId }, target.auth, CONTROL_ADMIN, 60_000);
|
|
315
|
+
if (!prepared.ok)
|
|
316
|
+
throw new Error(prepared.error ?? "manager preservation prepare failed");
|
|
317
|
+
const plan = prepared.data;
|
|
318
|
+
if (!plan?.inventory || (plan.failures?.length ?? 0) !== 0 || (plan.state !== "prepared" && plan.state !== "preserved"))
|
|
319
|
+
throw new Error("manager returned an invalid or incomplete preservation plan");
|
|
320
|
+
const inventoryAgents = (plan.inventory.agents ?? []);
|
|
321
|
+
const retainedPrincipals = new Set(inventoryAgents.map((agent) => {
|
|
322
|
+
if (agent.identity?.mode === "user" && agent.identity.owner && agent.identity.actor)
|
|
323
|
+
return principalKey(agent.identity.owner, agent.identity.actor).key;
|
|
324
|
+
if (agent.identity?.id)
|
|
325
|
+
return principalKey(DEV_OWNER, agent.identity.id).key;
|
|
326
|
+
return undefined;
|
|
327
|
+
}).filter((id) => Boolean(id)));
|
|
328
|
+
let observed = await readPresenceWithoutConsumer(mesh.space, mesh.server);
|
|
329
|
+
retainedPrincipals.add(observed.managerId);
|
|
330
|
+
let unmanaged = observed.roster.filter((presence) => !retainedPrincipals.has(presence.card.id));
|
|
331
|
+
if (unmanaged.length) {
|
|
332
|
+
await sleep(11_000); // Let stopped predecessor presence and manager leases expire before refusing.
|
|
333
|
+
observed = await readPresenceWithoutConsumer(mesh.space, mesh.server);
|
|
334
|
+
retainedPrincipals.add(observed.managerId);
|
|
335
|
+
unmanaged = observed.roster.filter((presence) => !retainedPrincipals.has(presence.card.id));
|
|
336
|
+
}
|
|
337
|
+
if (unmanaged.length)
|
|
338
|
+
throw new Error(`cannot preserve while unmanaged endpoints are live: ${unmanaged.map((presence) => `${presence.card.name} (${presence.card.id})`).join(", ")} (manager lease holder: ${observed.managerId})`);
|
|
339
|
+
resume = writeMaintenanceResumeDocument(lock, {
|
|
340
|
+
version: MAINTENANCE_RESUME_DOCUMENT_VERSION,
|
|
341
|
+
inventory: plan.inventory,
|
|
342
|
+
launch: {
|
|
343
|
+
attemptId,
|
|
344
|
+
space: mesh.space,
|
|
345
|
+
server: mesh.server,
|
|
346
|
+
storeDir,
|
|
347
|
+
mode: mesh.mode,
|
|
348
|
+
},
|
|
349
|
+
});
|
|
350
|
+
beginMaintenanceCut(lock, {
|
|
351
|
+
attemptId,
|
|
352
|
+
space: mesh.space,
|
|
353
|
+
mode: mesh.mode,
|
|
354
|
+
sourcePath: storeDir,
|
|
355
|
+
resume,
|
|
356
|
+
launch: { server: mesh.server, storeDir },
|
|
357
|
+
});
|
|
358
|
+
clearPreservationPrepareIntent(lock);
|
|
359
|
+
}
|
|
360
|
+
// The manager's preservation commitment is journaled BEFORE any process stops: from
|
|
361
|
+
// cut-committed onward, retries finish the remaining stopped/unreachable checks idempotently
|
|
362
|
+
// without requiring the (by then intentionally dead) manager.
|
|
363
|
+
if (existing?.state !== "cut-committed") {
|
|
364
|
+
const manager = all.find((component) => component.name === "manager");
|
|
365
|
+
if (!manager)
|
|
366
|
+
throw new Error("local process registry has no manager descriptor");
|
|
367
|
+
if (!processAlive(manager, context))
|
|
368
|
+
throw new Error("cannot complete preservation because the attempt-bound manager is not alive to prove every retained child stopped; recovery must preserve the cut-intent journal for inspection");
|
|
369
|
+
const target = await resolveControlTarget({ space: mesh.space, server: mesh.server }, "control-caller-admin");
|
|
370
|
+
const commit = await askManager(target.space, target.server, "commitPreservation", { attemptId }, target.auth, CONTROL_ADMIN, 120_000);
|
|
371
|
+
if (!commit.ok)
|
|
372
|
+
throw new Error(commit.error ?? "manager preservation commit was incomplete");
|
|
373
|
+
const result = commit.data;
|
|
374
|
+
if (result?.state !== "preserved" || (result.failures?.length ?? 0) !== 0)
|
|
375
|
+
throw new Error("manager could not prove every retained child stopped");
|
|
376
|
+
recordPreservationManagerCommit(lock, { operation: "commitPreservation", attemptId, state: "preserved" });
|
|
377
|
+
if (process.env.COTAL_SMOKE_EXIT_AFTER_PRESERVATION_MANAGER_COMMIT === "1")
|
|
378
|
+
process.exit(90);
|
|
379
|
+
}
|
|
380
|
+
const rank = (component) => {
|
|
381
|
+
if (component.name === "delivery")
|
|
382
|
+
return 20;
|
|
383
|
+
if (component.name === "manager")
|
|
384
|
+
return 30;
|
|
385
|
+
if (component.name === "auth")
|
|
386
|
+
return 40;
|
|
387
|
+
if (component.stopLast)
|
|
388
|
+
return 100;
|
|
389
|
+
return 10;
|
|
390
|
+
};
|
|
391
|
+
const ranked = [...all].sort((a, b) => rank(a) - rank(b) || (a.order ?? 50) - (b.order ?? 50));
|
|
392
|
+
// The quiescence proof runs BETWEEN two stop phases. Everything it proves dead — the
|
|
393
|
+
// lease-holding daemons, delivery and manager — stops before it. The user-auth service holds no
|
|
394
|
+
// lease, so the proof does not cover it, and on a USER mesh the proof's own broker connect
|
|
395
|
+
// exchanges through that service: stop it first and the cut can no longer prove itself, ending
|
|
396
|
+
// at cut-committed with the broker still up. It stops after the proof, still before the broker.
|
|
397
|
+
const afterQuiescence = (component) => component.stopLast || component.name === "auth";
|
|
398
|
+
for (const component of ranked.filter((component) => !afterQuiescence(component)))
|
|
399
|
+
await stopLocalProcess(component, context);
|
|
400
|
+
// Wire-truth quiescence while the broker still answers: every control-plane daemon must be
|
|
401
|
+
// provably lease-dead, not merely pidfile-absent, before the broker stops and ready publishes.
|
|
402
|
+
// An already-unreachable broker is itself the proof - nothing can mutate broker-resident state
|
|
403
|
+
// through a dead endpoint, and the final unreachable check below re-verifies it.
|
|
404
|
+
if (await isReachable(mesh.server))
|
|
405
|
+
await assertControlPlaneQuiesced(mesh.space, mesh.server);
|
|
406
|
+
// rank() keeps auth (40) ahead of the broker (stopLast, 100) within this phase.
|
|
407
|
+
for (const component of ranked.filter(afterQuiescence))
|
|
408
|
+
await stopLocalProcess(component, context);
|
|
409
|
+
const stillRunning = all.filter((component) => processAlive(component, context));
|
|
410
|
+
if (stillRunning.length)
|
|
411
|
+
throw new Error(`preservation cut is partial; still running: ${stillRunning.map((component) => component.name).join(", ")}`);
|
|
412
|
+
await waitForEndpointUnreachable(mesh.server);
|
|
413
|
+
completeMaintenanceCut(lock, {
|
|
414
|
+
attemptId,
|
|
415
|
+
observedAt: new Date().toISOString(),
|
|
416
|
+
managerCommit: { operation: "commitPreservation", attemptId, state: "preserved" },
|
|
417
|
+
stopped: { manager: true, broker: true, localProcesses: true },
|
|
418
|
+
listener: { endpoint: mesh.server, unreachable: true },
|
|
419
|
+
});
|
|
420
|
+
console.log(c.green(`✓ preserved state for "${mesh.space}"`));
|
|
421
|
+
console.log(c.dim(` source: ${storeDir}`));
|
|
422
|
+
console.log(c.dim(` resume inventory: ${join(root, ".cotal", "maintenance", "v1", resume.file)}`));
|
|
423
|
+
console.log(c.dim(" stack remains stopped; create a backup or deliberately resume with `cotal up`"));
|
|
424
|
+
}
|
|
425
|
+
finally {
|
|
426
|
+
releaseMaintenanceLock(lock);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
function resolveStore(path) {
|
|
430
|
+
const resolved = path.startsWith("/") ? path : join(process.cwd(), path);
|
|
431
|
+
return resolved;
|
|
432
|
+
}
|
|
433
|
+
/** Direct Get one KV subject's last value without creating any consumer. `allowEmpty` treats a
|
|
434
|
+
* DEL/PURGE tombstone as absence instead of an error. */
|
|
435
|
+
async function directKvValue(nc, stream, subject, allowEmpty = false) {
|
|
436
|
+
const response = await nc.request(`$JS.API.STREAM.MSG.GET.${stream}`, JSON.stringify({ last_by_subj: subject }), { timeout: 5_000 });
|
|
437
|
+
const body = JSON.parse(new TextDecoder().decode(response.data));
|
|
438
|
+
if (body.error)
|
|
439
|
+
throw new Error(`maintenance inventory read failed: ${body.error.description ?? "JetStream error"}`);
|
|
440
|
+
if (!body.message?.data) {
|
|
441
|
+
const headers = body.message?.hdrs ? Buffer.from(body.message.hdrs, "base64").toString("utf8") : "";
|
|
442
|
+
if (allowEmpty && /^KV-Operation:\s*(?:DEL|PURGE)\s*$/im.test(headers))
|
|
443
|
+
return undefined;
|
|
444
|
+
throw new Error(`maintenance inventory is missing ${subject}`);
|
|
445
|
+
}
|
|
446
|
+
return JSON.parse(Buffer.from(body.message.data, "base64").toString("utf8"));
|
|
447
|
+
}
|
|
448
|
+
/** Wire-truth control-plane quiescence: a live manager/delivery daemon renews its lease
|
|
449
|
+
* continuously, so the cut publishes `ready` only once BOTH lease buckets hold no live value —
|
|
450
|
+
* a dead daemon's lease expires by TTL, a pidless live one keeps renewing and is refused here.
|
|
451
|
+
* Pidfiles are hints; leases are proof. */
|
|
452
|
+
async function assertControlPlaneQuiesced(space, server) {
|
|
453
|
+
const resolved = await connectOrExit({ space, server }, "deployer");
|
|
454
|
+
const user = resolved.bearer ? await userViewAuthOrExit(resolved, "deployer") : undefined;
|
|
455
|
+
const nc = await connect({
|
|
456
|
+
servers: server,
|
|
457
|
+
...standaloneConnectOpts(user ?? { creds: resolved.creds }),
|
|
458
|
+
maxReconnectAttempts: 0,
|
|
459
|
+
});
|
|
460
|
+
try {
|
|
461
|
+
const jsm = await jetstreamManager(nc);
|
|
462
|
+
const liveKeys = async (bucket) => {
|
|
463
|
+
let subjects;
|
|
464
|
+
try {
|
|
465
|
+
const info = await jsm.streams.info(`KV_${bucket}`, { subjects_filter: `$KV.${bucket}.>` });
|
|
466
|
+
subjects = Object.keys(info.state.subjects ?? {});
|
|
467
|
+
}
|
|
468
|
+
catch (error) {
|
|
469
|
+
if (/stream not found/i.test(error.message))
|
|
470
|
+
return [];
|
|
471
|
+
throw error;
|
|
472
|
+
}
|
|
473
|
+
const live = [];
|
|
474
|
+
for (const subject of subjects) {
|
|
475
|
+
if (await directKvValue(nc, `KV_${bucket}`, subject, true) !== undefined)
|
|
476
|
+
live.push(subject);
|
|
477
|
+
}
|
|
478
|
+
return live;
|
|
479
|
+
};
|
|
480
|
+
const deadline = Date.now() + Math.max(LEASE_TTL_MS, MANAGER_LEASE_TTL_MS) + 5_000;
|
|
481
|
+
for (;;) {
|
|
482
|
+
const deliveryLive = await liveKeys(deliveryBucket(space));
|
|
483
|
+
const managerLive = await liveKeys(managerBucket(space));
|
|
484
|
+
if (deliveryLive.length === 0 && managerLive.length === 0)
|
|
485
|
+
return;
|
|
486
|
+
if (Date.now() >= deadline)
|
|
487
|
+
throw new Error(`control-plane leases are still live past their TTL (delivery: ${deliveryLive.length}, manager: ${managerLive.length}); a pidless daemon may still be running - the cut refuses to publish ready`);
|
|
488
|
+
await sleep(500);
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
finally {
|
|
492
|
+
await nc.drain().catch(() => { });
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
/** Read current KV subjects by Direct Get so the cut check leaves no ephemeral/native consumer. */
|
|
496
|
+
async function readPresenceWithoutConsumer(space, server) {
|
|
497
|
+
const resolved = await connectOrExit({ space, server }, "deployer");
|
|
498
|
+
const user = resolved.bearer ? await userViewAuthOrExit(resolved, "deployer") : undefined;
|
|
499
|
+
const nc = await connect({
|
|
500
|
+
servers: server,
|
|
501
|
+
...standaloneConnectOpts(user ?? { creds: resolved.creds }),
|
|
502
|
+
maxReconnectAttempts: 0,
|
|
503
|
+
});
|
|
504
|
+
try {
|
|
505
|
+
const directValue = async (stream, subject, allowEmpty = false) => directKvValue(nc, stream, subject, allowEmpty);
|
|
506
|
+
const bucket = presenceBucket(space);
|
|
507
|
+
const stream = `KV_${bucket}`;
|
|
508
|
+
const info = await (await jetstreamManager(nc)).streams.info(stream, { subjects_filter: `$KV.${bucket}.>` });
|
|
509
|
+
const roster = [];
|
|
510
|
+
for (const subject of Object.keys(info.state.subjects ?? {})) {
|
|
511
|
+
const presence = await directValue(stream, subject, true);
|
|
512
|
+
if (!presence)
|
|
513
|
+
continue; // A positively identified KV tombstone has no value bytes.
|
|
514
|
+
if (!presence.card?.id)
|
|
515
|
+
throw new Error(`presence record ${subject} is malformed`);
|
|
516
|
+
roster.push(presence);
|
|
517
|
+
}
|
|
518
|
+
const leaseBucket = managerBucket(space);
|
|
519
|
+
const lease = await directValue(`KV_${leaseBucket}`, `$KV.${leaseBucket}.${MANAGER_LEASE_KEY}`);
|
|
520
|
+
if (!lease?.holder)
|
|
521
|
+
throw new Error("manager lease has no authoritative holder principal");
|
|
522
|
+
return { roster, managerId: parsePrincipalKey(lease.holder) ? lease.holder : principalKey(DEV_OWNER, lease.holder).key };
|
|
523
|
+
}
|
|
524
|
+
finally {
|
|
525
|
+
await nc.drain().catch(() => { });
|
|
526
|
+
}
|
|
527
|
+
}
|
|
210
528
|
/** Compatibility inventory for `clean`; lifecycle commands use the registered descriptors above. */
|
|
211
529
|
export function pidfileTargets(space) {
|
|
212
530
|
return [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"down.js","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"down.js","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/spawn.d.ts
CHANGED
|
@@ -109,6 +109,10 @@ export declare const spawnFlags: readonly [{
|
|
|
109
109
|
readonly type: "boolean";
|
|
110
110
|
readonly short: "d";
|
|
111
111
|
readonly description: "launch via the manager into a detached PTY (reattach with `cotal attach`)";
|
|
112
|
+
}, {
|
|
113
|
+
readonly name: "live-only";
|
|
114
|
+
readonly type: "boolean";
|
|
115
|
+
readonly description: "foreground only: skip the durable backstop (no read-ACL row; messages missed while disconnected are not replayed)";
|
|
112
116
|
}, {
|
|
113
117
|
readonly name: "file";
|
|
114
118
|
readonly type: "string";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/commands/spawn.ts"],"names":[],"mappings":"AAGA,OAAO,EAoBL,KAAK,gBAAgB,EAErB,KAAK,YAAY,EAKjB,KAAK,UAAU,EAGhB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/commands/spawn.ts"],"names":[],"mappings":"AAGA,OAAO,EAoBL,KAAK,gBAAgB,EAErB,KAAK,YAAY,EAKjB,KAAK,UAAU,EAGhB,MAAM,gBAAgB,CAAC;AA6BxB;;;+BAG+B;AAC/B,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAmC9D;AAUD,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE5I;AAqED;;;6EAG6E;AAC7E,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWiB,CAAC;AAEzC;;;;iDAIiD;AACjD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,YAAY,EAAE,CAIjF;AAwDD,wBAAsB,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkT3D"}
|