@cotal-ai/cli 0.141.6 → 0.141.7
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/lib/auth-proc.d.ts +0 -13
- package/dist/lib/auth-proc.d.ts.map +1 -1
- package/dist/lib/auth-proc.js +11 -72
- package/dist/lib/auth-proc.js.map +1 -1
- package/package.json +4 -4
package/dist/lib/auth-proc.d.ts
CHANGED
|
@@ -1,19 +1,6 @@
|
|
|
1
1
|
import { type AuthPrepared } from "@cotal-ai/core";
|
|
2
2
|
import { type LocalProcess } from "@cotal-ai/workspace";
|
|
3
3
|
export { resolveAuthProvider } from "@cotal-ai/core";
|
|
4
|
-
/** Reclaim a DEAD pre-hex pidfile before a fresh start claims the canonical (hex) slot. A crash on
|
|
5
|
-
* a pre-upgrade build leaves `auth-service.<encoded>.pid`; the new start claims
|
|
6
|
-
* `auth-service.<hex>.pid` and, without this, BOTH would then exist - which `readPidPath` correctly
|
|
7
|
-
* refuses as ambiguous, wedging every later status/down.
|
|
8
|
-
*
|
|
9
|
-
* It reclaims ONLY what the canonical claim ({@link claimAuthPidSlot}) would: an empty slot (a
|
|
10
|
-
* pre-protocol crash) or a positive finite PID proven DEAD. It NEVER deletes an unattributable
|
|
11
|
-
* record - garbled/non-numeric/non-positive content, or a still-LIVE legacy holder - because that
|
|
12
|
-
* is exactly the live pre-hex signer this whole path exists not to orphan (a torn or tampered
|
|
13
|
-
* pidfile of a running service reads as garbled). Those cases THROW so the start aborts loud rather
|
|
14
|
-
* than delete the record and launch a competing service. Byte-exact match, no case-fold. Exported
|
|
15
|
-
* for the boundary smoke, which must exercise the real reclaim, not a stand-in. */
|
|
16
|
-
export declare function reclaimDeadLegacyPid(space: string): void;
|
|
17
4
|
/** True if the auth service we started for THIS space is still running (pid file + liveness). */
|
|
18
5
|
export declare function authServiceUp(space: string): boolean;
|
|
19
6
|
/** EXCLUSIVE pidfile claim (#29 HIGH 3 belt): the slot is published ATOMICALLY and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-proc.d.ts","sourceRoot":"","sources":["../../src/lib/auth-proc.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth-proc.d.ts","sourceRoot":"","sources":["../../src/lib/auth-proc.ts"],"names":[],"mappings":"AAWA,OAAO,EAAsC,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEvF,OAAO,EAAgI,KAAK,YAAY,EAA4B,MAAM,qBAAqB,CAAC;AAgBhN,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,iGAAiG;AACjG,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKpD;AAED;;;;;;;;;;;;;;;6DAe6D;AAC7D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAmChG;AAwDD;;;;;;;8EAO8E;AAC9E,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB;;sGAEkG;IAClG,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAiBnC;AAED;4FAC4F;AAC5F,eAAO,MAAM,YAAY,EAAE,YAO1B,CAAC;AAEF;;6CAE6C;AAC7C,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE"}
|
package/dist/lib/auth-proc.js
CHANGED
|
@@ -8,86 +8,25 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { spawn } from "node:child_process";
|
|
10
10
|
import { randomBytes } from "node:crypto";
|
|
11
|
-
import { closeSync, linkSync, openSync,
|
|
12
|
-
import { basename, dirname } from "node:path";
|
|
11
|
+
import { closeSync, linkSync, openSync, readFileSync, rmSync, writeSync } from "node:fs";
|
|
13
12
|
import { EpEnvelopeError, openPrivateAppend } from "@cotal-ai/core";
|
|
14
13
|
import { AUTH_PIDFILE, spaceKey } from "@cotal-ai/workspace";
|
|
15
|
-
import { parsePid, probeLiveness, readPidfile, writePidPair } from "@cotal-ai/workspace";
|
|
14
|
+
import { canonicalLocalProcessPath, localProcessPath, parsePid, probeLiveness, readPidfile, reclaimDeadPreUpgradeRecord, writePidPair } from "@cotal-ai/workspace";
|
|
16
15
|
import { stopLocalProcess } from "./local-process-stop.js";
|
|
17
16
|
import { daemonArgv } from "./self-exec.js";
|
|
18
17
|
import { cotalPath, cotalRoot } from "./paths.js";
|
|
19
18
|
import { seedBeforeLaunch } from "../seed/launch.js";
|
|
20
|
-
|
|
19
|
+
// Reads, writes and reclaim use the registered process template, as status and teardown do.
|
|
20
|
+
const ctx = (space) => ({ root: cotalRoot(), space });
|
|
21
21
|
const LOG_PATH = (space) => cotalPath(`auth-service.${spaceKey(space)}.log`);
|
|
22
|
-
/** The pidfile to READ for a space's auth service: the canonical hex name, or the pre-hex
|
|
23
|
-
* `auth-service.<encoded>.pid` a build before the re-key wrote. `up`'s restart reads this so an
|
|
24
|
-
* upgrade never orphans the live callout SIGNER of a pre-upgrade auth-service. Byte-
|
|
25
|
-
* exact (a bare `existsSync` case-folds a sibling space's file on macOS/Windows); both present is
|
|
26
|
-
* ambiguous and fails loud. Starts always WRITE the canonical PID_PATH. */
|
|
27
|
-
function readPidPath(space) {
|
|
28
|
-
const canonical = PID_PATH(space);
|
|
29
|
-
const legacy = cotalPath(`auth-service.${encodeURIComponent(space)}.pid`);
|
|
30
|
-
if (legacy === canonical)
|
|
31
|
-
return canonical;
|
|
32
|
-
const exact = (p) => { try {
|
|
33
|
-
return readdirSync(dirname(p)).includes(basename(p));
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
return false;
|
|
37
|
-
} };
|
|
38
|
-
const c = exact(canonical), l = exact(legacy);
|
|
39
|
-
if (c && l)
|
|
40
|
-
throw new Error(`both ${canonical} and the pre-hex ${legacy} exist for space "${space}" - ambiguous auth-service record; remove the stale one`);
|
|
41
|
-
return l && !c ? legacy : canonical;
|
|
42
|
-
}
|
|
43
22
|
// parsePid + probeLiveness (the pid-attribution contract) live in @cotal-ai/workspace, shared so
|
|
44
23
|
// there is exactly ONE parser + ONE tri-state probe across the pidfile subsystem.
|
|
45
24
|
// Provider resolution now lives in core (the manager needs the identical resolution); re-exported
|
|
46
25
|
// so existing CLI imports keep working.
|
|
47
26
|
export { resolveAuthProvider } from "@cotal-ai/core";
|
|
48
|
-
/** Reclaim a DEAD pre-hex pidfile before a fresh start claims the canonical (hex) slot. A crash on
|
|
49
|
-
* a pre-upgrade build leaves `auth-service.<encoded>.pid`; the new start claims
|
|
50
|
-
* `auth-service.<hex>.pid` and, without this, BOTH would then exist - which `readPidPath` correctly
|
|
51
|
-
* refuses as ambiguous, wedging every later status/down.
|
|
52
|
-
*
|
|
53
|
-
* It reclaims ONLY what the canonical claim ({@link claimAuthPidSlot}) would: an empty slot (a
|
|
54
|
-
* pre-protocol crash) or a positive finite PID proven DEAD. It NEVER deletes an unattributable
|
|
55
|
-
* record - garbled/non-numeric/non-positive content, or a still-LIVE legacy holder - because that
|
|
56
|
-
* is exactly the live pre-hex signer this whole path exists not to orphan (a torn or tampered
|
|
57
|
-
* pidfile of a running service reads as garbled). Those cases THROW so the start aborts loud rather
|
|
58
|
-
* than delete the record and launch a competing service. Byte-exact match, no case-fold. Exported
|
|
59
|
-
* for the boundary smoke, which must exercise the real reclaim, not a stand-in. */
|
|
60
|
-
export function reclaimDeadLegacyPid(space) {
|
|
61
|
-
const legacy = cotalPath(`auth-service.${encodeURIComponent(space)}.pid`);
|
|
62
|
-
if (legacy === PID_PATH(space))
|
|
63
|
-
return;
|
|
64
|
-
try {
|
|
65
|
-
if (!readdirSync(dirname(legacy)).includes(basename(legacy)))
|
|
66
|
-
return; // byte-exact absent
|
|
67
|
-
}
|
|
68
|
-
catch {
|
|
69
|
-
return; // parent dir gone → nothing to reclaim
|
|
70
|
-
}
|
|
71
|
-
const trimmed = readPidfile(legacy);
|
|
72
|
-
if (trimmed === undefined)
|
|
73
|
-
return; // removed since the listing → nothing to reclaim
|
|
74
|
-
if (trimmed === "") {
|
|
75
|
-
rmSync(legacy, { force: true }); // empty = pre-protocol husk, safe to reclaim (as the canonical claim does)
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
const pid = parsePid(trimmed);
|
|
79
|
-
if (pid === undefined)
|
|
80
|
-
throw new Error(`pre-hex auth-service pidfile ${legacy} holds unattributable content ${JSON.stringify(trimmed)} - refusing to reclaim it or start a competing service; inspect or remove it manually`);
|
|
81
|
-
const state = probeLiveness(pid);
|
|
82
|
-
if (state === "alive")
|
|
83
|
-
throw new Error(`a pre-hex auth-service is already running (pid ${pid}) at ${legacy} - refusing to start a second; run \`cotal down\` to stop it, then retry`);
|
|
84
|
-
if (state === "unknown")
|
|
85
|
-
throw new Error(`cannot determine whether pid ${pid} in ${legacy} is alive - refusing to reclaim an unattributable record or start a competing service; inspect or remove it manually`);
|
|
86
|
-
rmSync(legacy, { force: true }); // ESRCH-proven dead - reclaim it
|
|
87
|
-
}
|
|
88
27
|
/** True if the auth service we started for THIS space is still running (pid file + liveness). */
|
|
89
28
|
export function authServiceUp(space) {
|
|
90
|
-
const raw = readPidfile(
|
|
29
|
+
const raw = readPidfile(localProcessPath(AUTH_PROCESS.pidFile, ctx(space)));
|
|
91
30
|
if (raw === undefined)
|
|
92
31
|
return false;
|
|
93
32
|
const pid = parsePid(raw); // strict positive safe integer, or undefined
|
|
@@ -110,7 +49,7 @@ export function authServiceUp(space) {
|
|
|
110
49
|
* makes impossible to produce except by a pre-protocol crash — is removed and the claim retried
|
|
111
50
|
* ONCE, so a crash can never wedge the slot permanently. */
|
|
112
51
|
export function claimAuthPidSlot(space) {
|
|
113
|
-
const target =
|
|
52
|
+
const target = canonicalLocalProcessPath(AUTH_PROCESS.pidFile, ctx(space));
|
|
114
53
|
for (let attempt = 0; attempt < 2; attempt++) {
|
|
115
54
|
const temp = `${target}.claim.${process.pid}.${randomBytes(4).toString("hex")}`;
|
|
116
55
|
let fd;
|
|
@@ -166,9 +105,9 @@ function startAuthServiceDetached(space, server, command, extraArgs = []) {
|
|
|
166
105
|
// teardown signalled whichever process held the launcher's pid.
|
|
167
106
|
//
|
|
168
107
|
// Then: a pre-hex crash leaves a dead legacy pidfile; clear it or the canonical claim produces the
|
|
169
|
-
// both-present wedge
|
|
108
|
+
// both-present wedge localProcessPath refuses.
|
|
170
109
|
const [node, ...self] = daemonArgv();
|
|
171
|
-
|
|
110
|
+
reclaimDeadPreUpgradeRecord(AUTH_PROCESS.pidFile, ctx(space));
|
|
172
111
|
const slot = claimAuthPidSlot(space);
|
|
173
112
|
if (slot === undefined)
|
|
174
113
|
return 0;
|
|
@@ -190,7 +129,7 @@ function startAuthServiceDetached(space, server, command, extraArgs = []) {
|
|
|
190
129
|
// refuses a torn pairing loud regardless.
|
|
191
130
|
if (!child.pid)
|
|
192
131
|
throw new Error("auth service spawned with no pid");
|
|
193
|
-
writePidPair(
|
|
132
|
+
writePidPair(canonicalLocalProcessPath(AUTH_PROCESS.pidFile, ctx(space)), child.pid);
|
|
194
133
|
return child.pid;
|
|
195
134
|
}
|
|
196
135
|
finally {
|
|
@@ -205,8 +144,8 @@ function startAuthServiceDetached(space, server, command, extraArgs = []) {
|
|
|
205
144
|
* failure names the file the wait was bound to (#3715). */
|
|
206
145
|
function authServiceWaitPid(space, launched) {
|
|
207
146
|
if (launched !== undefined && launched > 0)
|
|
208
|
-
return { pid: launched, record:
|
|
209
|
-
const record =
|
|
147
|
+
return { pid: launched, record: canonicalLocalProcessPath(AUTH_PROCESS.pidFile, ctx(space)) };
|
|
148
|
+
const record = localProcessPath(AUTH_PROCESS.pidFile, ctx(space));
|
|
210
149
|
const raw = readPidfile(record);
|
|
211
150
|
if (raw === undefined)
|
|
212
151
|
return { pid: undefined, record };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-proc.js","sourceRoot":"","sources":["../../src/lib/auth-proc.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"auth-proc.js","sourceRoot":"","sources":["../../src/lib/auth-proc.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cotal-ai/cli",
|
|
3
3
|
"description": "Cotal mesh CLI: up, join, watch, console, spawn, mint, channels, history, ext.",
|
|
4
|
-
"version": "0.141.
|
|
4
|
+
"version": "0.141.7",
|
|
5
5
|
"homepage": "https://cotal.ai",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"repository": {
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@cotal-ai/core": "0.141.
|
|
31
|
-
"@cotal-ai/workspace": "0.141.
|
|
30
|
+
"@cotal-ai/core": "0.141.7",
|
|
31
|
+
"@cotal-ai/workspace": "0.141.7",
|
|
32
32
|
"@nats-io/jetstream": "^3.4.0",
|
|
33
33
|
"@nats-io/kv": "^3.4.0",
|
|
34
34
|
"@nats-io/obj": "^3.4.0",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"@eplightning/nats-server-win32-x64": "^2.14.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@cotal-ai/auth": "0.141.
|
|
52
|
+
"@cotal-ai/auth": "0.141.7",
|
|
53
53
|
"@cotal-ai/smoke-kit": "0.0.0",
|
|
54
54
|
"@types/react": "^19.0.0",
|
|
55
55
|
"@types/ws": "^8.18.1"
|