@cotal-ai/cli 0.13.1 → 0.14.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/cotal-skills/.claude-plugin/plugin.json +6 -0
- package/cotal-skills/skills/team-topology/SKILL.md +96 -0
- package/dist/command.d.ts.map +1 -1
- package/dist/command.js +4 -0
- package/dist/command.js.map +1 -1
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +6 -2
- package/dist/commands/backup.js.map +1 -1
- package/dist/commands/clean.d.ts.map +1 -1
- package/dist/commands/clean.js +53 -19
- package/dist/commands/clean.js.map +1 -1
- package/dist/commands/doctor.d.ts +4 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +57 -14
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/down-manifest.js +2 -2
- package/dist/commands/down-manifest.js.map +1 -1
- package/dist/commands/down.d.ts +9 -0
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +113 -46
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/ext.d.ts +3 -0
- package/dist/commands/ext.d.ts.map +1 -1
- package/dist/commands/ext.js +95 -30
- package/dist/commands/ext.js.map +1 -1
- package/dist/commands/mint.d.ts.map +1 -1
- package/dist/commands/mint.js +5 -4
- package/dist/commands/mint.js.map +1 -1
- package/dist/commands/setup.d.ts +4 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +226 -63
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/spawn.d.ts.map +1 -1
- package/dist/commands/spawn.js +3 -3
- package/dist/commands/spawn.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +101 -7
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +23 -16
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/update.d.ts +36 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +348 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-skills.d.ts +61 -0
- package/dist/lib/agent-skills.d.ts.map +1 -0
- package/dist/lib/agent-skills.js +240 -0
- package/dist/lib/agent-skills.js.map +1 -0
- package/dist/lib/auth-proc.d.ts +19 -1
- package/dist/lib/auth-proc.d.ts.map +1 -1
- package/dist/lib/auth-proc.js +102 -27
- package/dist/lib/auth-proc.js.map +1 -1
- package/dist/lib/control.js +2 -2
- package/dist/lib/control.js.map +1 -1
- package/dist/lib/delivery-proc.js +3 -3
- package/dist/lib/delivery-proc.js.map +1 -1
- package/dist/lib/ext-mutation.d.ts +9 -7
- package/dist/lib/ext-mutation.d.ts.map +1 -1
- package/dist/lib/ext-mutation.js +11 -12
- package/dist/lib/ext-mutation.js.map +1 -1
- package/dist/lib/maintenance-files.d.ts.map +1 -1
- package/dist/lib/maintenance-files.js +25 -6
- package/dist/lib/maintenance-files.js.map +1 -1
- package/dist/lib/pid.d.ts +23 -0
- package/dist/lib/pid.d.ts.map +1 -0
- package/dist/lib/pid.js +39 -0
- package/dist/lib/pid.js.map +1 -0
- package/dist/lib/restore.js +2 -2
- package/dist/lib/restore.js.map +1 -1
- package/dist/lib/status.d.ts +1 -2
- package/dist/lib/status.d.ts.map +1 -1
- package/dist/lib/status.js +34 -8
- package/dist/lib/status.js.map +1 -1
- package/dist/seed/paths.d.ts +2 -1
- package/dist/seed/paths.d.ts.map +1 -1
- package/dist/seed/paths.js +9 -8
- package/dist/seed/paths.js.map +1 -1
- package/dist/seed/reconcile.d.ts +1 -0
- package/dist/seed/reconcile.d.ts.map +1 -1
- package/dist/seed/reconcile.js +20 -15
- package/dist/seed/reconcile.js.map +1 -1
- package/package.json +5 -4
package/dist/commands/doctor.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
2
2
|
import { basename, join } from "node:path";
|
|
3
3
|
import { credentialLifetime, inspectCredHealth, } from "@cotal-ai/core";
|
|
4
|
-
import { authDir, findCotalRoot,
|
|
4
|
+
import { authDir, findCotalRoot, getSoleSpaceAuth, getSpaceAuth, hasUserAuthState, readRenewalRecord, remintDaemonCreds, spaceAccountPath, workspaceSecretStore, writeRenewalRecord, } from "@cotal-ai/workspace";
|
|
5
5
|
import { displayCmd } from "../lib/self-exec.js";
|
|
6
6
|
import { c } from "../ui.js";
|
|
7
7
|
export const doctorFlags = [
|
|
8
8
|
{ name: "fix", type: "boolean", description: "execute the safe repairs (re-sign the manager-remintable daemon creds; needs the local signer)" },
|
|
9
|
+
{ name: "space", type: "string", description: "target space on a multi-space root (default: the sole space)" },
|
|
9
10
|
];
|
|
10
11
|
/** `cotal doctor auth` — the ONE stale-credential repair surface (D5 slice 6). Read-only diagnosis
|
|
11
12
|
* of every managed credential file in this folder against the credential-lifetime matrix, rendered
|
|
@@ -16,34 +17,55 @@ export const doctorFlags = [
|
|
|
16
17
|
export async function doctor(args) {
|
|
17
18
|
const sub = args.positionals[0];
|
|
18
19
|
if (sub !== "auth") {
|
|
19
|
-
console.error(`usage: ${displayCmd()} doctor auth [--fix] - credential-health diagnosis + repair for this folder's mesh`);
|
|
20
|
+
console.error(`usage: ${displayCmd()} doctor auth [--fix] [--space <s>] - credential-health diagnosis + repair for this folder's mesh`);
|
|
20
21
|
process.exitCode = 1;
|
|
21
22
|
return;
|
|
22
23
|
}
|
|
23
24
|
const values = args.values;
|
|
24
25
|
const root = findCotalRoot(process.cwd());
|
|
25
|
-
const auth =
|
|
26
|
+
const auth = values.space ? await getSpaceAuth(workspaceSecretStore(root), values.space) : await getSoleSpaceAuth(workspaceSecretStore(root), authDir(root));
|
|
26
27
|
console.log(c.bold("cotal doctor auth"));
|
|
27
28
|
console.log(` root ${root}`);
|
|
28
29
|
if (!auth) {
|
|
30
|
+
// An explicitly named space that has no record is a selection error, never "healthy" —
|
|
31
|
+
// falling through to the open-mesh answer would turn a typo into a green diagnosis.
|
|
32
|
+
if (values.space) {
|
|
33
|
+
console.error(c.red(`\n✗ no account record for space "${values.space}" under ${authDir(root)} (expected ${spaceAccountPath(authDir(root), values.space)})`));
|
|
34
|
+
process.exitCode = 1;
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
29
37
|
// An open mesh has no minted credentials at all — nothing to diagnose is a healthy answer,
|
|
30
38
|
// not a silent one.
|
|
31
39
|
console.log(c.green("\nauth: healthy - open mesh (no credential material in this folder)"));
|
|
32
40
|
return;
|
|
33
41
|
}
|
|
34
|
-
const userMode =
|
|
35
|
-
|
|
42
|
+
const userMode = hasUserAuthState(root, auth.space);
|
|
43
|
+
// A legacy monolith root genuinely holds the signer in auth.json until a write splits it.
|
|
44
|
+
const acctPath = spaceAccountPath(authDir(root), auth.space);
|
|
45
|
+
const signerPath = existsSync(acctPath) ? acctPath : join(authDir(root), "auth.json");
|
|
46
|
+
console.log(` space ${auth.space}${userMode ? " · user-auth" : ""} · signer ${c.green("present")} (${signerPath})`);
|
|
36
47
|
let reports = inventory(root);
|
|
37
48
|
let problems = reports.filter((r) => r.problem);
|
|
38
49
|
// --fix: the one safe local repair — re-sign the remintable daemon files (same nkeys), exactly
|
|
39
50
|
// what the manager's renewal pass does, and record the pass so the audit trail stays honest
|
|
40
51
|
// (adoption is the DAEMON's explicit reload, which only the running manager requests — a doctor
|
|
41
|
-
// fix without a live manager is adopted by the daemon's 75%
|
|
52
|
+
// fix without a live manager is adopted by the daemon's own 75% renewal timer). Then re-diagnose:
|
|
42
53
|
// the doctor reports what IS, never what it hopes the fix did.
|
|
43
54
|
if (values.fix && problems.some((r) => isRemintable(r.kind))) {
|
|
44
55
|
console.log(c.dim("\n--fix: re-signing the remintable daemon creds…"));
|
|
45
|
-
const
|
|
46
|
-
|
|
56
|
+
const prior = readRenewalRecord(root);
|
|
57
|
+
const results = await remintDaemonCreds(root, auth.space); // validate the signer against THIS folder's space
|
|
58
|
+
// A local re-sign is NOT a broker proof: `--fix` has no live admin rail to adopt through, it
|
|
59
|
+
// relies on the daemon's 75% renewal timer. So it must NEVER erase a KNOWN broker refusal to
|
|
60
|
+
// green — if the last renewal was refused (e.g. the signer the broker rejects), the re-signed
|
|
61
|
+
// generation is still unproven and may be broker-dead. Carry the refusal forward as an explicit
|
|
62
|
+
// unproven state until a REAL proof (the manager's/daemon's reloadCreds) supersedes it, so the
|
|
63
|
+
// verdict below stays exit 1 with an actionable next step. A prior non-refusal is left absent
|
|
64
|
+
// (the "backstop will adopt" state), unchanged from before.
|
|
65
|
+
const adoption = prior?.adoption?.ok === false
|
|
66
|
+
? { ok: false, error: "re-signed locally by `doctor auth --fix`, but the previous renewal was refused by the broker and the re-signed generation is not yet broker-proven - start the mesh's manager (the renewal owner) so it proves and adopts it" }
|
|
67
|
+
: undefined;
|
|
68
|
+
writeRenewalRecord(root, { ts: new Date().toISOString(), owner: "doctor --fix", results, adoption });
|
|
47
69
|
for (const r of results.filter((x) => !x.ok && !x.skipped))
|
|
48
70
|
console.error(c.red(` ✗ ${r.file}: ${r.error}`));
|
|
49
71
|
reports = inventory(root);
|
|
@@ -53,13 +75,25 @@ export async function doctor(args) {
|
|
|
53
75
|
renderRenewalRecord(root);
|
|
54
76
|
render("$SYS creds (rotation-renewed - never remintable from disk)", reports.filter((r) => r.kind === "membership-observer" || r.kind === "connection-evictor"));
|
|
55
77
|
render("Agent creds (static, pre-flip)", reports.filter((r) => r.kind === "agent"));
|
|
56
|
-
|
|
78
|
+
// A broker-REFUSED renewal is a first-class problem for the final verdict + exit status, not just a
|
|
79
|
+
// warning line. Cred-file health alone is not enough: a structurally-valid JWT the broker rejected
|
|
80
|
+
// must never let `auth: healthy` / exit 0 stand (the whole point of the renewal-honesty slice).
|
|
81
|
+
const rec = readRenewalRecord(root);
|
|
82
|
+
const adoptionRefused = rec?.adoption?.ok === false;
|
|
83
|
+
if (!problems.length && !adoptionRefused) {
|
|
57
84
|
console.log(c.green("\nauth: healthy"));
|
|
58
85
|
return;
|
|
59
86
|
}
|
|
60
|
-
|
|
87
|
+
const parts = [];
|
|
88
|
+
if (problems.length)
|
|
89
|
+
parts.push(`${problems.length} cred problem${problems.length === 1 ? "" : "s"}`);
|
|
90
|
+
if (adoptionRefused)
|
|
91
|
+
parts.push("last renewal not broker-accepted");
|
|
92
|
+
console.log(c.red(`\nauth: ${parts.join(", ")}`));
|
|
61
93
|
for (const p of problems)
|
|
62
94
|
console.log(` ${c.red("✗")} ${p.label}: ${p.problem}\n next: ${p.repair}`);
|
|
95
|
+
if (adoptionRefused)
|
|
96
|
+
console.log(` ${c.red("✗")} the last renewal pass was refused by the broker: ${rec?.adoption?.error ?? "unknown"}\n next: start or repair the mesh's manager (the renewal owner) so it re-signs and re-proves the daemon creds`);
|
|
63
97
|
process.exitCode = 1;
|
|
64
98
|
}
|
|
65
99
|
function isRemintable(kind) {
|
|
@@ -154,13 +188,22 @@ function renderRenewalRecord(root) {
|
|
|
154
188
|
}
|
|
155
189
|
const resigned = rec.results.filter((r) => r.ok).map((r) => r.file);
|
|
156
190
|
const failed = rec.results.filter((r) => !r.ok && !r.skipped);
|
|
191
|
+
// Per-component result from the daemon's structured reply detail (persisted on ok AND failed
|
|
192
|
+
// passes): "accepted" = the broker accepted this generation (the proof); "rejected" (ok:false);
|
|
193
|
+
// "n/a" (absent/skipped). NOT "adopted" — the resident wire swap is best-effort/self-healing, not
|
|
194
|
+
// witnessed. Empty for an older record.
|
|
195
|
+
const detail = rec.adoption?.detail;
|
|
196
|
+
const compStatus = (comp) => comp === undefined ? "n/a" : comp.ok === false ? "rejected" : comp.skipped ? "n/a" : comp.brokerAccepted ? "accepted" : "n/a";
|
|
197
|
+
const perComponent = detail && typeof detail === "object" && (detail.delivery !== undefined || detail.membership !== undefined)
|
|
198
|
+
? ` (delivery: ${compStatus(detail.delivery)}, membership: ${compStatus(detail.membership)})`
|
|
199
|
+
: "";
|
|
157
200
|
const adoption = rec.adoption === undefined
|
|
158
201
|
? resigned.length
|
|
159
|
-
? c.yellow("daemon
|
|
160
|
-
: c.dim("
|
|
202
|
+
? c.yellow("daemon reload not requested by this pass - daemons pick up the re-sign via the 75% re-read backstop or the next renewal pass")
|
|
203
|
+
: c.dim("renewal: n/a (nothing re-signed)")
|
|
161
204
|
: rec.adoption.ok
|
|
162
|
-
? c.green(
|
|
163
|
-
: c.yellow(`
|
|
205
|
+
? c.green(`broker-accepted ✓${perComponent}`)
|
|
206
|
+
: c.yellow(`renewal not accepted - ${rec.adoption.error ?? "unknown"}${perComponent}`);
|
|
164
207
|
console.log(` ${c.dim(`last renewal pass ${rec.ts} by ${rec.owner}`)} - re-signed [${resigned.join(", ") || "none"}] · ${adoption}`);
|
|
165
208
|
for (const f of failed)
|
|
166
209
|
console.log(` ${c.red("✗")} last pass failed on ${f.file}: ${f.error}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
import { lstatSync, readFileSync, rmSync } from "node:fs";
|
|
18
18
|
import { join, resolve } from "node:path";
|
|
19
19
|
import { CONTROL_ADMIN, deleteChannels, isReachable, mintCreds, newIdentity, parsePrincipalKey, realDirNoSymlink, resolveAuthProvider, subjectMatches, unlinkFileNoFollow, } from "@cotal-ai/core";
|
|
20
|
-
import { agentActorTokenKey, agentCredsKey, agentSecretFilePaths, agentSentinelCredsKey,
|
|
20
|
+
import { agentActorTokenKey, agentCredsKey, agentSecretFilePaths, agentSentinelCredsKey, getSpaceAuth, userAuthStateDir, workspaceSecretStore } from "@cotal-ai/workspace";
|
|
21
21
|
import { c } from "../ui.js";
|
|
22
22
|
import { cotalRoot } from "../lib/paths.js";
|
|
23
23
|
import { connectProbe } from "../lib/manifest/live.js";
|
|
@@ -342,7 +342,7 @@ function credSubject(raw) {
|
|
|
342
342
|
* an open mesh / mismatched checkout (then we connect bare and do local cleanup). `teardown` is the SOLE
|
|
343
343
|
* cred that keeps `STREAM.DELETE` (deleteSpace + clearChannel) — no read, no forge, no other stream. */
|
|
344
344
|
async function mintIfAuth(root, space) {
|
|
345
|
-
const auth =
|
|
345
|
+
const auth = await getSpaceAuth(workspaceSecretStore(root), space);
|
|
346
346
|
if (!auth || auth.space !== space)
|
|
347
347
|
return undefined;
|
|
348
348
|
return mintCreds(auth, newIdentity(), "teardown");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"down-manifest.js","sourceRoot":"","sources":["../../src/commands/down-manifest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"down-manifest.js","sourceRoot":"","sources":["../../src/commands/down-manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/down.d.ts
CHANGED
|
@@ -8,6 +8,15 @@ export declare function down(args: ParsedArgs): Promise<void>;
|
|
|
8
8
|
export declare const isAlive: (pid: number) => boolean;
|
|
9
9
|
export declare function processRecorded(component: LocalProcess, context: LocalProcessContext): boolean;
|
|
10
10
|
export declare function processAlive(component: LocalProcess, context: LocalProcessContext): boolean;
|
|
11
|
+
/** Whether a component MIGHT still be running - the question the pre-stop `stopLast` guard must ask,
|
|
12
|
+
* and it fails CLOSED on uncertainty. A component with NO pidfile, an EMPTY husk, or a valid pid
|
|
13
|
+
* PROVEN dead (ESRCH) is not running. ANY other state - an unparsable/unattributable record, or a
|
|
14
|
+
* valid pid that is alive or whose liveness cannot be confirmed (`unknown`) - MIGHT be running, so
|
|
15
|
+
* it must BLOCK a stop-last (broker) shutdown. `processAlive` collapses unparsable and `unknown` to
|
|
16
|
+
* "not alive", which is fine for "is it worth stopping" but WRONG for "is it safe to stop the broker
|
|
17
|
+
* out from under this": that read would let `cotal down nats` orphan a live auth signer behind a
|
|
18
|
+
* torn pidfile. Only an ESRCH-confirmed death (or no record) clears a dependant. */
|
|
19
|
+
export declare function mayBeRunning(component: LocalProcess, context: LocalProcessContext): boolean;
|
|
11
20
|
/** Stop one recorded process and await its actual exit before the next dependency is stopped. */
|
|
12
21
|
export declare function stopLocalProcess(component: LocalProcess, context: LocalProcessContext): Promise<boolean>;
|
|
13
22
|
/** Compatibility inventory for `clean`; lifecycle commands use the registered descriptors above. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAuBL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAIzB,MAAM,qBAAqB,CAAC;AA6B7B,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAS7D;AAED;kGACkG;AAClG,wBAAsB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA4F1D;AAQD,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,KAAG,OAAyC,CAAC;AAEhF,wBAAgB,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAE9F;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAK3F;AAED;;;;;;;qFAOqF;AACrF,wBAAgB,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAQ3F;AAED,iGAAiG;AACjG,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAiH9G;AA6WD,oGAAoG;AACpG,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAQlF;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,6FAA6F;AAC7F,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAOvD"}
|
package/dist/commands/down.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { closeSync, existsSync, openSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
1
|
+
import { closeSync, existsSync, linkSync, openSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { randomBytes } from "node:crypto";
|
|
2
3
|
import { join } from "node:path";
|
|
3
4
|
import {} from "@cotal-ai/core";
|
|
4
|
-
import { abortMaintenanceCut, acquireMaintenanceLock, beginMaintenanceCut, clearPreservationCommitIntent, clearPreservationPrepareIntent, completeMaintenanceCut, loadMeshes, localProcessPath, readMaintenanceJournal, readMaintenanceResumeDocument, readPreservationCommitIntent, readPreservationPrepareIntent, readStoreIdentity, recordPreservationManagerCommit, releaseMaintenanceLock, removeMeshesByRoot, sameStoreIdentity, writePreservationCommitIntent, writePreservationPrepareIntent, MAINTENANCE_RESUME_DOCUMENT_VERSION, writeMaintenanceResumeDocument, } from "@cotal-ai/workspace";
|
|
5
|
+
import { abortMaintenanceCut, acquireMaintenanceLock, assertSingleSpaceBroker, authDir, beginMaintenanceCut, clearPreservationCommitIntent, clearPreservationPrepareIntent, completeMaintenanceCut, loadMeshes, localProcessPath, readMaintenanceJournal, readMaintenanceResumeDocument, readPreservationCommitIntent, readPreservationPrepareIntent, readStoreIdentity, recordPreservationManagerCommit, releaseMaintenanceLock, removeMeshesByRoot, sameStoreIdentity, writePreservationCommitIntent, writePreservationPrepareIntent, spaceKey, MAINTENANCE_RESUME_DOCUMENT_VERSION, writeMaintenanceResumeDocument, } from "@cotal-ai/workspace";
|
|
5
6
|
import { jetstreamManager } from "@nats-io/jetstream";
|
|
6
7
|
import { connect } from "@nats-io/transport-node";
|
|
7
8
|
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";
|
|
8
9
|
import { extensionNames, localProcessSurface } from "../ext-loader.js";
|
|
9
10
|
import { c } from "../ui.js";
|
|
10
11
|
import { cotalRoot } from "../lib/paths.js";
|
|
12
|
+
import { parsePid, probeLiveness } from "../lib/pid.js";
|
|
11
13
|
import { resolveSpace } from "../lib/status.js";
|
|
12
14
|
import { downManifest } from "./down-manifest.js";
|
|
13
15
|
import { askManager, resolveControlTarget } from "../lib/control.js";
|
|
@@ -30,6 +32,11 @@ export function downComplete(argv) {
|
|
|
30
32
|
export async function down(args) {
|
|
31
33
|
const values = args.values;
|
|
32
34
|
const requested = [...new Set(args.positionals)];
|
|
35
|
+
// Every non-manifest `down` stops the shared broker and its per-space daemons; none of them can
|
|
36
|
+
// address one space, so a multi-space root is refused up front rather than at the space-blind
|
|
37
|
+
// pidfile lookup below. A manifest teardown (`-f`/`--run`) names its own space and is exempt.
|
|
38
|
+
if (!values.file && !values.run)
|
|
39
|
+
assertSingleSpaceBroker(authDir(cotalRoot()), "cotal down");
|
|
33
40
|
if (values["preserve-state"]) {
|
|
34
41
|
if (requested.length || values.file || values.run || values["dry-run"])
|
|
35
42
|
throw new Error("--preserve-state is bare-whole-stack only and cannot be combined with components, --file, --run, or --dry-run");
|
|
@@ -55,9 +62,13 @@ export async function down(args) {
|
|
|
55
62
|
const context = { root: cotalRoot(), space: resolveSpace(process.cwd()) };
|
|
56
63
|
if (selected.some((component) => component.stopLast)) {
|
|
57
64
|
const selectedNames = new Set(selected.map((component) => component.name));
|
|
58
|
-
|
|
65
|
+
// Fail CLOSED: an unselected dependant that MIGHT be running (including one behind an
|
|
66
|
+
// unattributable/unknown pidfile) blocks a stop-last shutdown - stopping the broker out from
|
|
67
|
+
// under a live dependant we could not confirm gone is exactly the signer-orphan the contract
|
|
68
|
+
// forbids. `mayBeRunning`, not `processAlive` (which reads uncertainty as "not running").
|
|
69
|
+
const dependants = all.filter((component) => !selectedNames.has(component.name) && mayBeRunning(component, context));
|
|
59
70
|
if (dependants.length) {
|
|
60
|
-
throw new Error(`cannot stop ${selected.filter((component) => component.stopLast).map((component) => component.name).join(", ")} while ${dependants.map((component) => component.name).join(", ")} ${dependants.length === 1 ? "is" : "are"} still running - name them too, or run bare \`cotal down\``);
|
|
71
|
+
throw new Error(`cannot stop ${selected.filter((component) => component.stopLast).map((component) => component.name).join(", ")} while ${dependants.map((component) => component.name).join(", ")} ${dependants.length === 1 ? "is" : "are"} still running (or its liveness cannot be confirmed) - name them too, or run bare \`cotal down\``);
|
|
61
72
|
}
|
|
62
73
|
}
|
|
63
74
|
if (values["dry-run"]) {
|
|
@@ -110,19 +121,12 @@ export async function down(args) {
|
|
|
110
121
|
}
|
|
111
122
|
}
|
|
112
123
|
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
process.kill(pid, 0);
|
|
120
|
-
return true;
|
|
121
|
-
}
|
|
122
|
-
catch (e) {
|
|
123
|
-
return e.code === "EPERM";
|
|
124
|
-
}
|
|
125
|
-
};
|
|
124
|
+
// The pid parser + liveness probe are the SHARED pid-attribution contract (`lib/pid.ts`), the same
|
|
125
|
+
// one `auth-proc` uses - so `cotal down`'s stop of the auth-service (a callout SIGNER) attributes a
|
|
126
|
+
// torn pidfile exactly as the direct helper does, instead of the old unbounded parser + two-state
|
|
127
|
+
// probe that mapped a kernel-unsignalable value to "dead" and orphaned the process under a clean
|
|
128
|
+
// stop. `isAlive` = the probe says the process EXISTS; every caller below feeds it a parsed pid.
|
|
129
|
+
export const isAlive = (pid) => probeLiveness(pid) === "alive";
|
|
126
130
|
export function processRecorded(component, context) {
|
|
127
131
|
return existsSync(localProcessPath(component.pidFile, context)) || (component.artifacts ?? []).map((artifact) => localProcessPath(artifact, context)).some(existsSync);
|
|
128
132
|
}
|
|
@@ -133,6 +137,26 @@ export function processAlive(component, context) {
|
|
|
133
137
|
const pid = parsePid(readFileSync(pidPath, "utf8"));
|
|
134
138
|
return pid !== undefined && isAlive(pid);
|
|
135
139
|
}
|
|
140
|
+
/** Whether a component MIGHT still be running - the question the pre-stop `stopLast` guard must ask,
|
|
141
|
+
* and it fails CLOSED on uncertainty. A component with NO pidfile, an EMPTY husk, or a valid pid
|
|
142
|
+
* PROVEN dead (ESRCH) is not running. ANY other state - an unparsable/unattributable record, or a
|
|
143
|
+
* valid pid that is alive or whose liveness cannot be confirmed (`unknown`) - MIGHT be running, so
|
|
144
|
+
* it must BLOCK a stop-last (broker) shutdown. `processAlive` collapses unparsable and `unknown` to
|
|
145
|
+
* "not alive", which is fine for "is it worth stopping" but WRONG for "is it safe to stop the broker
|
|
146
|
+
* out from under this": that read would let `cotal down nats` orphan a live auth signer behind a
|
|
147
|
+
* torn pidfile. Only an ESRCH-confirmed death (or no record) clears a dependant. */
|
|
148
|
+
export function mayBeRunning(component, context) {
|
|
149
|
+
const pidPath = localProcessPath(component.pidFile, context);
|
|
150
|
+
if (!existsSync(pidPath))
|
|
151
|
+
return false;
|
|
152
|
+
const raw = readFileSync(pidPath, "utf8");
|
|
153
|
+
if (raw.trim() === "")
|
|
154
|
+
return false; // empty pre-protocol husk: no process behind it
|
|
155
|
+
const pid = parsePid(raw);
|
|
156
|
+
if (pid === undefined)
|
|
157
|
+
return true; // unattributable content: cannot prove it gone → may be running
|
|
158
|
+
return probeLiveness(pid) !== "dead"; // alive OR unknown → may be running; only ESRCH clears it
|
|
159
|
+
}
|
|
136
160
|
/** Stop one recorded process and await its actual exit before the next dependency is stopped. */
|
|
137
161
|
export async function stopLocalProcess(component, context) {
|
|
138
162
|
const pidPath = localProcessPath(component.pidFile, context);
|
|
@@ -150,17 +174,28 @@ export async function stopLocalProcess(component, context) {
|
|
|
150
174
|
const marker = `${pidPath}.stopping`;
|
|
151
175
|
let markerFd;
|
|
152
176
|
for (;;) {
|
|
177
|
+
// ATOMIC publish (the pid-slot pattern): fill a private temp inode with our pid FIRST, then
|
|
178
|
+
// `link(2)` it as the marker - a no-overwrite atomic op. A contender therefore never observes an
|
|
179
|
+
// empty marker mid-publish; the old `openSync(marker,"wx")` then `writeFileSync` left exactly
|
|
180
|
+
// that window, and a reader in it saw owner=undefined and reclaimed a LIVE owner's reservation
|
|
181
|
+
// (mutual exclusion defeated). The published name and the held fd both keep the inode alive.
|
|
182
|
+
const temp = `${marker}.${process.pid}.${randomBytes(4).toString("hex")}`;
|
|
153
183
|
try {
|
|
154
|
-
markerFd = openSync(
|
|
184
|
+
markerFd = openSync(temp, "wx", 0o600);
|
|
155
185
|
writeFileSync(markerFd, String(process.pid));
|
|
186
|
+
linkSync(temp, marker); // EEXIST here = the marker is already held
|
|
187
|
+
rmSync(temp, { force: true });
|
|
156
188
|
break;
|
|
157
189
|
}
|
|
158
190
|
catch (e) {
|
|
159
191
|
if (markerFd !== undefined) {
|
|
160
192
|
closeSync(markerFd);
|
|
161
|
-
rmSync(marker, { force: true });
|
|
162
193
|
markerFd = undefined;
|
|
163
194
|
}
|
|
195
|
+
try {
|
|
196
|
+
rmSync(temp, { force: true });
|
|
197
|
+
}
|
|
198
|
+
catch { /* never created, or already gone */ }
|
|
164
199
|
if (e.code !== "EEXIST")
|
|
165
200
|
throw e;
|
|
166
201
|
let owner;
|
|
@@ -169,12 +204,19 @@ export async function stopLocalProcess(component, context) {
|
|
|
169
204
|
}
|
|
170
205
|
catch (readErr) {
|
|
171
206
|
if (readErr.code === "ENOENT")
|
|
172
|
-
continue;
|
|
207
|
+
continue; // holder released between publish-refusal and read
|
|
173
208
|
throw readErr;
|
|
174
209
|
}
|
|
175
|
-
|
|
210
|
+
// The atomic publish above is what closes the race: a LIVE `down` holding the marker always
|
|
211
|
+
// wrote its own POSITIVE pid into it (no empty/partial window), so a live holder is always a
|
|
212
|
+
// valid pid that is alive/EPERM/unknown - and THOSE we never reclaim (that is the mutual
|
|
213
|
+
// exclusion). An UNATTRIBUTABLE marker (empty / 0 / negative / garbled) therefore cannot
|
|
214
|
+
// represent a live holder; it is a stale or crashed reservation, and reclaiming it is both safe
|
|
215
|
+
// and required so a crashed `down` never wedges the next one. So: reclaim an unattributable
|
|
216
|
+
// owner or a valid pid PROVEN dead (ESRCH); refuse only a valid pid that is alive or whose
|
|
217
|
+
// liveness we cannot confirm.
|
|
218
|
+
if (owner !== undefined && probeLiveness(owner) !== "dead")
|
|
176
219
|
throw new Error(`${component.name} is already being stopped by another \`cotal down\` (pid ${owner})`);
|
|
177
|
-
// A dead owner cannot finish cleanup. Reclaim its marker and retry the exclusive create.
|
|
178
220
|
rmSync(marker, { force: true });
|
|
179
221
|
}
|
|
180
222
|
}
|
|
@@ -182,42 +224,61 @@ export async function stopLocalProcess(component, context) {
|
|
|
182
224
|
let stopped = false;
|
|
183
225
|
try {
|
|
184
226
|
if (pid === undefined) {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
227
|
+
// An EMPTY pidfile is a pre-protocol husk (no process behind it) and is safe to clear. Any
|
|
228
|
+
// OTHER unattributable content (garbled, fractional, out-of-range - anything `parsePid`
|
|
229
|
+
// rejects) may still front a LIVE process we cannot identify or signal; removing it would
|
|
230
|
+
// orphan that process while reporting a clean stop (the signer-orphan this slice must not do).
|
|
231
|
+
// Refuse loud and preserve it.
|
|
232
|
+
if (rawPid === "") {
|
|
233
|
+
console.log(c.dim(`${component.label} had an empty pidfile.`));
|
|
234
|
+
stopped = true; // husk cleared in `finally`
|
|
235
|
+
return true;
|
|
236
|
+
}
|
|
237
|
+
throw new Error(`${component.label} has an unattributable pidfile at ${pidPath} (${JSON.stringify(rawPid)}) - it may still front a running process; refusing to remove it or report a clean stop. Stop that process and remove the file manually.`);
|
|
188
238
|
}
|
|
189
239
|
try {
|
|
190
240
|
process.kill(pid, "SIGTERM");
|
|
191
241
|
}
|
|
192
|
-
catch {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
242
|
+
catch (e) {
|
|
243
|
+
// ONLY an ESRCH proves the process is already gone (safe to clear). EPERM (exists, another
|
|
244
|
+
// user's) or any other errno (EIO, argument errors, unknown) means we could NOT confirm death
|
|
245
|
+
// - reporting it stopped and removing its record would orphan a live process. Fail loud, keep
|
|
246
|
+
// the record. A two-state "not alive => gone" is exactly the bug: `unknown` is not `dead`.
|
|
247
|
+
if (e.code === "ESRCH") {
|
|
248
|
+
console.log(c.dim(`${component.label} (pid ${pid}) was not running.`));
|
|
249
|
+
stopped = true;
|
|
250
|
+
return true;
|
|
251
|
+
}
|
|
252
|
+
throw new Error(`could not signal ${component.label} (pid ${pid}) (${e.code ?? "unknown error"}) - refusing to report it stopped or remove its record; stop it manually`);
|
|
198
253
|
}
|
|
254
|
+
// Wait for CONFIRMED death (ESRCH), escalating to SIGKILL; `unknown`/`alive` both keep us
|
|
255
|
+
// waiting, and if death is never confirmed the record is preserved (never deleted on a guess).
|
|
199
256
|
const graceDeadline = Date.now() + 15_000;
|
|
200
|
-
while (
|
|
257
|
+
while (probeLiveness(pid) !== "dead" && Date.now() < graceDeadline)
|
|
201
258
|
await sleep(100);
|
|
202
|
-
if (
|
|
259
|
+
if (probeLiveness(pid) !== "dead") {
|
|
203
260
|
try {
|
|
204
261
|
process.kill(pid, "SIGKILL");
|
|
205
262
|
}
|
|
206
263
|
catch { /* raced to exit */ }
|
|
207
264
|
const hardDeadline = Date.now() + 3_000;
|
|
208
|
-
while (
|
|
265
|
+
while (probeLiveness(pid) !== "dead" && Date.now() < hardDeadline)
|
|
209
266
|
await sleep(100);
|
|
210
267
|
}
|
|
211
|
-
if (
|
|
212
|
-
throw new Error(`${component.label} (pid ${pid}) did not exit; its pidfile was preserved`);
|
|
268
|
+
if (probeLiveness(pid) !== "dead")
|
|
269
|
+
throw new Error(`${component.label} (pid ${pid}) did not exit, or its death could not be confirmed; its pidfile was preserved`);
|
|
213
270
|
stopped = true;
|
|
214
271
|
console.log(c.green(`✓ stopped ${component.label} (pid ${pid})`));
|
|
215
272
|
return true;
|
|
216
273
|
}
|
|
217
274
|
finally {
|
|
218
|
-
|
|
275
|
+
// Remove the pidfile ONLY when we confirmed a clean stop: `stopped` is set exclusively on an
|
|
276
|
+
// ESRCH-proven death (already-gone, or a confirmed exit). Every other exit from the try above is
|
|
277
|
+
// a throw that must PRESERVE the record - an unattributable pidfile, a process we could not
|
|
278
|
+
// signal, or a death we could not confirm (`unknown`). The old `|| !isAlive(pid)` clause treated
|
|
279
|
+
// `unknown` as gone and deleted a live process's record; it is gone.
|
|
280
|
+
if (stopped)
|
|
219
281
|
rmSync(pidPath, { force: true });
|
|
220
|
-
}
|
|
221
282
|
rmSync(marker, { force: true });
|
|
222
283
|
}
|
|
223
284
|
}
|
|
@@ -270,7 +331,7 @@ async function preserveStateDown(storeOverride) {
|
|
|
270
331
|
const manager = all.find((component) => component.name === "manager");
|
|
271
332
|
if (!manager)
|
|
272
333
|
throw new Error("local process registry has no manager descriptor");
|
|
273
|
-
if (!
|
|
334
|
+
if (!mayBeRunning(manager, context)) { // fail-closed: an uncertain manager is treated as alive, not dead
|
|
274
335
|
const committing = readPreservationCommitIntent(root);
|
|
275
336
|
if (!committing || committing.attemptId !== attemptId) {
|
|
276
337
|
// No commit intent recorded: the child-stopping RPC was never invoked, so nothing was
|
|
@@ -302,8 +363,8 @@ async function preserveStateDown(storeOverride) {
|
|
|
302
363
|
const retryTarget = await resolveControlTarget({ space: mesh.space, server: mesh.server }, "control-caller-admin");
|
|
303
364
|
// Plane-3 fence precedes the re-prepared inventory, exactly as on the fresh path.
|
|
304
365
|
const retryDelivery = all.find((component) => component.name === "delivery");
|
|
305
|
-
if (retryDelivery &&
|
|
306
|
-
await stopLocalProcess(retryDelivery, context);
|
|
366
|
+
if (retryDelivery && mayBeRunning(retryDelivery, context))
|
|
367
|
+
await stopLocalProcess(retryDelivery, context); // fence an uncertain delivery too (stopLocalProcess throws loud on unattributable → abort)
|
|
307
368
|
const reprepared = await askManager(retryTarget.space, retryTarget.server, "preparePreservation", { attemptId }, retryTarget.auth, CONTROL_ADMIN, 60_000);
|
|
308
369
|
const replan = reprepared.ok ? reprepared.data : undefined;
|
|
309
370
|
if (!replan?.inventory || (replan.failures?.length ?? 0) !== 0 || (replan.state !== "prepared" && replan.state !== "preserved"))
|
|
@@ -348,8 +409,8 @@ async function preserveStateDown(storeOverride) {
|
|
|
348
409
|
// Fence Plane 3 BEFORE any inventory work: with the delivery daemon stopped, no durable
|
|
349
410
|
// join/leave can mutate MEMBERS at or after the moment the inventory is taken.
|
|
350
411
|
const delivery = all.find((component) => component.name === "delivery");
|
|
351
|
-
if (delivery &&
|
|
352
|
-
await stopLocalProcess(delivery, context);
|
|
412
|
+
if (delivery && mayBeRunning(delivery, context))
|
|
413
|
+
await stopLocalProcess(delivery, context); // fence an uncertain delivery: no MEMBERS mutation may race the inventory
|
|
353
414
|
const prepared = await askManager(target.space, target.server, "preparePreservation", { attemptId }, target.auth, CONTROL_ADMIN, 60_000);
|
|
354
415
|
if (!prepared.ok)
|
|
355
416
|
throw new Error(prepared.error ?? "manager preservation prepare failed");
|
|
@@ -397,6 +458,10 @@ async function preserveStateDown(storeOverride) {
|
|
|
397
458
|
const manager = all.find((component) => component.name === "manager");
|
|
398
459
|
if (!manager)
|
|
399
460
|
throw new Error("local process registry has no manager descriptor");
|
|
461
|
+
// This one DELIBERATELY keeps `processAlive` (provably alive), not `mayBeRunning`: here we must
|
|
462
|
+
// USE the manager to prove every retained child stopped, so anything short of provably-alive -
|
|
463
|
+
// dead OR uncertain - must fail closed and preserve the cut. `processAlive` already returns
|
|
464
|
+
// false on `unknown`, so an uncertain manager throws here rather than being trusted to attest.
|
|
400
465
|
if (!processAlive(manager, context))
|
|
401
466
|
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");
|
|
402
467
|
// Fault window: cut-intent journaled but the child-stopping RPC not yet invoked (no commit
|
|
@@ -450,9 +515,11 @@ async function preserveStateDown(storeOverride) {
|
|
|
450
515
|
// rank() keeps auth (40) ahead of the broker (stopLast, 100) within this phase.
|
|
451
516
|
for (const component of ranked.filter(afterQuiescence))
|
|
452
517
|
await stopLocalProcess(component, context);
|
|
453
|
-
|
|
518
|
+
// Fail-closed: a component we cannot PROVE stopped (unattributable/unknown pidfile) leaves the
|
|
519
|
+
// cut partial - it must not be silently counted as gone, or `unknown` becomes a "successful cut".
|
|
520
|
+
const stillRunning = all.filter((component) => mayBeRunning(component, context));
|
|
454
521
|
if (stillRunning.length)
|
|
455
|
-
throw new Error(`preservation cut is partial; still running: ${stillRunning.map((component) => component.name).join(", ")}`);
|
|
522
|
+
throw new Error(`preservation cut is partial; still running (or liveness unconfirmed): ${stillRunning.map((component) => component.name).join(", ")}`);
|
|
456
523
|
await waitForEndpointUnreachable(mesh.server);
|
|
457
524
|
completeMaintenanceCut(lock, {
|
|
458
525
|
attemptId,
|
|
@@ -574,7 +641,7 @@ export function pidfileTargets(space) {
|
|
|
574
641
|
return [
|
|
575
642
|
["manager.pid", "manager"],
|
|
576
643
|
["delivery.pid", "delivery daemon"],
|
|
577
|
-
[`auth-service.${
|
|
644
|
+
[`auth-service.${spaceKey(space)}.pid`, "user-auth service"],
|
|
578
645
|
["web.pid", "web dashboard"],
|
|
579
646
|
["nats.pid", "nats-server"],
|
|
580
647
|
];
|