@cotal-ai/cli 0.67.0 → 0.69.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/describe.d.ts.map +1 -1
- package/dist/commands/describe.js +2 -2
- package/dist/commands/describe.js.map +1 -1
- package/dist/commands/down.d.ts +0 -23
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +8 -207
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/endpoints.js +2 -2
- package/dist/commands/endpoints.js.map +1 -1
- package/dist/commands/meshes-add.d.ts +4 -1
- package/dist/commands/meshes-add.d.ts.map +1 -1
- package/dist/commands/meshes-add.js +10 -7
- package/dist/commands/meshes-add.js.map +1 -1
- package/dist/commands/meshes-wizard.js +2 -2
- package/dist/commands/meshes-wizard.js.map +1 -1
- package/dist/commands/meshes.d.ts.map +1 -1
- package/dist/commands/meshes.js +7 -5
- package/dist/commands/meshes.js.map +1 -1
- package/dist/commands/mint.d.ts.map +1 -1
- package/dist/commands/mint.js +8 -2
- package/dist/commands/mint.js.map +1 -1
- package/dist/commands/setup.d.ts +0 -6
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +29 -26
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/spawn.d.ts.map +1 -1
- package/dist/commands/spawn.js +101 -66
- package/dist/commands/spawn.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +17 -10
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +31 -25
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/up.d.ts +0 -2
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +149 -202
- package/dist/commands/up.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -17
- package/dist/index.js.map +1 -1
- package/dist/lib/control.d.ts +2 -20
- package/dist/lib/control.d.ts.map +1 -1
- package/dist/lib/control.js +1 -30
- package/dist/lib/control.js.map +1 -1
- package/dist/lib/delivery-proc.d.ts +8 -8
- package/dist/lib/delivery-proc.d.ts.map +1 -1
- package/dist/lib/delivery-proc.js +27 -101
- package/dist/lib/delivery-proc.js.map +1 -1
- package/dist/lib/local-process-stop.d.ts +29 -0
- package/dist/lib/local-process-stop.d.ts.map +1 -0
- package/dist/lib/local-process-stop.js +196 -0
- package/dist/lib/local-process-stop.js.map +1 -0
- package/dist/lib/manager-proc.d.ts +17 -17
- package/dist/lib/manager-proc.d.ts.map +1 -1
- package/dist/lib/manager-proc.js +57 -107
- package/dist/lib/manager-proc.js.map +1 -1
- package/dist/lib/manifest/ledger.js +1 -1
- package/dist/lib/manifest/prepare.d.ts.map +1 -1
- package/dist/lib/manifest/prepare.js +2 -2
- package/dist/lib/manifest/prepare.js.map +1 -1
- package/dist/lib/self-exec.d.ts +1 -1
- package/dist/lib/self-exec.js +1 -1
- package/dist/lib/status.d.ts +0 -1
- package/dist/lib/status.d.ts.map +1 -1
- package/dist/lib/status.js +2 -25
- package/dist/lib/status.js.map +1 -1
- package/dist/lib/teardown-spare.js +3 -3
- package/dist/lib/teardown-spare.js.map +1 -1
- package/dist/ui.d.ts +9 -9
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +16 -18
- package/dist/ui.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/** Stopping one recorded local process: the stop `cotal down` runs for every component, and the
|
|
2
|
+
* one every manager and delivery teardown shares through `stopManager` and `stopDelivery`. */
|
|
3
|
+
import { closeSync, existsSync, linkSync, openSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
4
|
+
import { randomBytes } from "node:crypto";
|
|
5
|
+
import { identityLegacyWarning, identityRefusal, identityUncertaintyRefusal, localProcessPath, parsePid, probeLiveness, readPidfile, readProcessCommand, removePidPair, stopReservationPath, verifyIdentityPin, } from "@cotal-ai/workspace";
|
|
6
|
+
import { c } from "../ui.js";
|
|
7
|
+
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
8
|
+
export function processRecorded(component, context) {
|
|
9
|
+
return existsSync(localProcessPath(component.pidFile, context)) || (component.artifacts ?? []).map((artifact) => localProcessPath(artifact, context)).some(existsSync);
|
|
10
|
+
}
|
|
11
|
+
/** Take a stop reservation at `marker` for this process, refusing while another live stop holds it.
|
|
12
|
+
* The caller removes `marker` when its stop is over. */
|
|
13
|
+
function reserveStop(name, marker) {
|
|
14
|
+
let markerFd;
|
|
15
|
+
for (;;) {
|
|
16
|
+
// ATOMIC publish (the pid-slot pattern): fill a private temp inode with our pid FIRST, then
|
|
17
|
+
// `link(2)` it as the marker - a no-overwrite atomic op. A contender therefore never observes an
|
|
18
|
+
// empty marker mid-publish; the old `openSync(marker,"wx")` then `writeFileSync` left exactly
|
|
19
|
+
// that window, and a reader in it saw owner=undefined and reclaimed a LIVE owner's reservation
|
|
20
|
+
// (mutual exclusion defeated). The published name and the held fd both keep the inode alive.
|
|
21
|
+
const temp = `${marker}.${process.pid}.${randomBytes(4).toString("hex")}`;
|
|
22
|
+
try {
|
|
23
|
+
markerFd = openSync(temp, "wx", 0o600);
|
|
24
|
+
writeFileSync(markerFd, String(process.pid));
|
|
25
|
+
linkSync(temp, marker); // EEXIST here = the marker is already held
|
|
26
|
+
rmSync(temp, { force: true });
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
if (markerFd !== undefined) {
|
|
31
|
+
closeSync(markerFd);
|
|
32
|
+
markerFd = undefined;
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
rmSync(temp, { force: true });
|
|
36
|
+
}
|
|
37
|
+
catch { /* never created, or already gone */ }
|
|
38
|
+
if (e.code !== "EEXIST")
|
|
39
|
+
throw e;
|
|
40
|
+
let owner;
|
|
41
|
+
try {
|
|
42
|
+
owner = parsePid(readFileSync(marker, "utf8"));
|
|
43
|
+
}
|
|
44
|
+
catch (readErr) {
|
|
45
|
+
if (readErr.code === "ENOENT")
|
|
46
|
+
continue; // holder released between publish-refusal and read
|
|
47
|
+
throw readErr;
|
|
48
|
+
}
|
|
49
|
+
// The atomic publish above is what closes the race: a LIVE `down` holding the marker always
|
|
50
|
+
// wrote its own POSITIVE pid into it (no empty/partial window), so a live holder is always a
|
|
51
|
+
// valid pid that is alive/EPERM/unknown - and THOSE we never reclaim (that is the mutual
|
|
52
|
+
// exclusion). An UNATTRIBUTABLE marker (empty / 0 / negative / garbled) therefore cannot
|
|
53
|
+
// represent a live holder; it is a stale or crashed reservation, and reclaiming it is both safe
|
|
54
|
+
// and required so a crashed `down` never wedges the next one. So: reclaim an unattributable
|
|
55
|
+
// owner or a valid pid PROVEN dead (ESRCH); refuse only a valid pid that is alive or whose
|
|
56
|
+
// liveness we cannot confirm.
|
|
57
|
+
if (owner !== undefined && probeLiveness(owner) !== "dead")
|
|
58
|
+
throw new Error(`${name} is already being stopped by another process (pid ${owner})`);
|
|
59
|
+
rmSync(marker, { force: true });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
closeSync(markerFd);
|
|
63
|
+
}
|
|
64
|
+
/** Stop one recorded process and await its actual exit before the next dependency is stopped. */
|
|
65
|
+
export async function stopLocalProcess(component, context, options = {}) {
|
|
66
|
+
const pidPath = localProcessPath(component.pidFile, context);
|
|
67
|
+
const found = processRecorded(component, context);
|
|
68
|
+
const rawPid = readPidfile(pidPath);
|
|
69
|
+
if (rawPid === undefined)
|
|
70
|
+
return found;
|
|
71
|
+
if (rawPid.startsWith("removing:")) {
|
|
72
|
+
const owner = parsePid(rawPid.slice("removing:".length));
|
|
73
|
+
throw new Error(owner && probeLiveness(owner) === "alive"
|
|
74
|
+
? `${component.name} extension removal is in progress (pid ${owner})`
|
|
75
|
+
: `${component.name} has a stale extension-removal reservation at ${pidPath} - remove that file and retry`);
|
|
76
|
+
}
|
|
77
|
+
const pid = parsePid(rawPid);
|
|
78
|
+
const marker = stopReservationPath(pidPath);
|
|
79
|
+
reserveStop(component.name, marker);
|
|
80
|
+
let stopped = false;
|
|
81
|
+
let authorized = false;
|
|
82
|
+
try {
|
|
83
|
+
if (pid === undefined) {
|
|
84
|
+
// An EMPTY pidfile is a pre-protocol husk (no process behind it) and is safe to clear. Any
|
|
85
|
+
// OTHER unattributable content (garbled, fractional, out-of-range - anything `parsePid`
|
|
86
|
+
// rejects) may still front a LIVE process we cannot identify or signal; removing it would
|
|
87
|
+
// orphan that process while reporting a clean stop (the signer-orphan this slice must not do).
|
|
88
|
+
// Refuse loud and preserve it.
|
|
89
|
+
if (rawPid === "") {
|
|
90
|
+
console.log(c.dim(`${component.label} had an empty pidfile.`));
|
|
91
|
+
stopped = true; // husk cleared in `finally`
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
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.`);
|
|
95
|
+
}
|
|
96
|
+
// Attribution before the pin (#1528): it also catches a reused pid behind a legacy record, which
|
|
97
|
+
// the pin would let through to the signal. A command that cannot be read proves nothing.
|
|
98
|
+
if (component.isOwnCommand) {
|
|
99
|
+
const command = readProcessCommand(pid);
|
|
100
|
+
if (command.kind === "command" && !component.isOwnCommand(command.command)) {
|
|
101
|
+
console.error(`! recorded ${component.label} pid ${pid} is alive but is running \`${command.command}\`, which is not a ${component.label} - not signalling it; removing the stale record instead.`);
|
|
102
|
+
stopped = true;
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// #969 OPEN-VERIFY-TERMINATE: identity before signal, the same rule the auth helper applies. This
|
|
107
|
+
// is the path every manager and delivery stop takes, and the one `cotal down` uses for the BROKER,
|
|
108
|
+
// the web dashboard and every extension component, so all of them share one identity rule.
|
|
109
|
+
const identity = verifyIdentityPin(pidPath);
|
|
110
|
+
if (identity.kind === "mismatch")
|
|
111
|
+
throw identityRefusal(component.label, pidPath, identity.record, identity.liveToken);
|
|
112
|
+
if (identity.kind === "legacy" && options.owns) {
|
|
113
|
+
// A readable command that is not this component's means the record outlived its process and
|
|
114
|
+
// the pid was reused. Signalling it would kill an unrelated process; the stale record goes.
|
|
115
|
+
const cmd = readProcessCommand(pid);
|
|
116
|
+
if (cmd.kind === "command" && !options.owns(cmd.command)) {
|
|
117
|
+
console.error(`! ${component.label} pid ${pid} is alive but is running \`${cmd.command}\`, which is not the ${component.label} - not signalling it; removing the stale record instead.`);
|
|
118
|
+
stopped = true;
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (identity.kind === "legacy")
|
|
123
|
+
console.error(identityLegacyWarning(component.label, pidPath));
|
|
124
|
+
else if (identity.kind !== "match" && identity.kind !== "gone")
|
|
125
|
+
throw identityUncertaintyRefusal(component.label, pidPath, identity);
|
|
126
|
+
// The beforeSignal hook authorizes an action against a LIVE exact process. A pinned record whose
|
|
127
|
+
// process is already ESRCH-gone needs no spare capability or destructive intent because no signal
|
|
128
|
+
// will be sent. Clear that stale record directly, preserving the hook's documented placement
|
|
129
|
+
// immediately before SIGTERM and avoiding a false "identity is not pinned" refusal on cleanup.
|
|
130
|
+
if (identity.kind === "gone") {
|
|
131
|
+
console.log(c.dim(`${component.label} (pid ${pid}) was not running.`));
|
|
132
|
+
stopped = true;
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
authorized = true;
|
|
136
|
+
options.beforeSignal?.({
|
|
137
|
+
target: identity.kind === "match" ? identity.record : { pid },
|
|
138
|
+
stopper: { pid: process.pid, marker },
|
|
139
|
+
});
|
|
140
|
+
try {
|
|
141
|
+
process.kill(pid, "SIGTERM");
|
|
142
|
+
}
|
|
143
|
+
catch (e) {
|
|
144
|
+
// ONLY an ESRCH proves the process is already gone (safe to clear). EPERM (exists, another
|
|
145
|
+
// user's) or any other errno (EIO, argument errors, unknown) means we could NOT confirm death
|
|
146
|
+
// - reporting it stopped and removing its record would orphan a live process. Fail loud, keep
|
|
147
|
+
// the record. A two-state "not alive => gone" is exactly the bug: `unknown` is not `dead`.
|
|
148
|
+
if (e.code === "ESRCH") {
|
|
149
|
+
console.log(c.dim(`${component.label} (pid ${pid}) was not running.`));
|
|
150
|
+
stopped = true;
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
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`);
|
|
154
|
+
}
|
|
155
|
+
// Wait for CONFIRMED death (ESRCH), escalating to SIGKILL; `unknown`/`alive` both keep us
|
|
156
|
+
// waiting, and if death is never confirmed the record is preserved (never deleted on a guess).
|
|
157
|
+
const graceDeadline = Date.now() + 15_000;
|
|
158
|
+
while (probeLiveness(pid) !== "dead" && Date.now() < graceDeadline)
|
|
159
|
+
await sleep(100);
|
|
160
|
+
if (probeLiveness(pid) !== "dead") {
|
|
161
|
+
try {
|
|
162
|
+
process.kill(pid, "SIGKILL");
|
|
163
|
+
}
|
|
164
|
+
catch { /* raced to exit */ }
|
|
165
|
+
const hardDeadline = Date.now() + 3_000;
|
|
166
|
+
while (probeLiveness(pid) !== "dead" && Date.now() < hardDeadline)
|
|
167
|
+
await sleep(100);
|
|
168
|
+
}
|
|
169
|
+
if (probeLiveness(pid) !== "dead")
|
|
170
|
+
throw new Error(`${component.label} (pid ${pid}) did not exit, or its death could not be confirmed; its pidfile was preserved`);
|
|
171
|
+
stopped = true;
|
|
172
|
+
console.log(c.green(`✓ stopped ${component.label} (pid ${pid})`));
|
|
173
|
+
return true;
|
|
174
|
+
}
|
|
175
|
+
finally {
|
|
176
|
+
// Remove the pidfile ONLY when we confirmed a clean stop: `stopped` is set exclusively on an
|
|
177
|
+
// ESRCH-proven death (already-gone, or a confirmed exit). Every other exit from the try above is
|
|
178
|
+
// a throw that must PRESERVE the record - an unattributable pidfile, a process we could not
|
|
179
|
+
// signal, or a death we could not confirm (`unknown`). The old `|| !isAlive(pid)` clause treated
|
|
180
|
+
// `unknown` as gone and deleted a live process's record; it is gone.
|
|
181
|
+
// The pin goes with the pidfile (#969), and only while the pidfile still names the stopped pid: a
|
|
182
|
+
// publish that committed a successor meanwhile is left whole (#1238).
|
|
183
|
+
try {
|
|
184
|
+
if (stopped)
|
|
185
|
+
removePidPair(pidPath, rawPid);
|
|
186
|
+
else if (authorized)
|
|
187
|
+
options.afterFailedSignal?.();
|
|
188
|
+
}
|
|
189
|
+
finally {
|
|
190
|
+
// A cleanup that throws still ends this stop: a reservation left behind refuses every other
|
|
191
|
+
// stop of this component for as long as this process lives.
|
|
192
|
+
rmSync(marker, { force: true });
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=local-process-stop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-process-stop.js","sourceRoot":"","sources":["../../src/lib/local-process-stop.ts"],"names":[],"mappings":"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"}
|
|
@@ -105,21 +105,21 @@ export declare function ensureManager(o?: ManagerStartOpts, probe?: LivenessProb
|
|
|
105
105
|
* another user's process or by kernel policy, so the branch that handles it is otherwise unreachable
|
|
106
106
|
* from a test. Production passes nothing. */
|
|
107
107
|
export type SignalFn = (pid: number, signal: NodeJS.Signals) => void;
|
|
108
|
-
/**
|
|
109
|
-
export
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
108
|
+
/** The manager as `cotal down` registers it: its pidfile, and the records that die with its process. */
|
|
109
|
+
export declare const MANAGER_PROCESS: {
|
|
110
|
+
kind: "local-process";
|
|
111
|
+
name: string;
|
|
112
|
+
label: string;
|
|
113
|
+
order: number;
|
|
114
|
+
pidFile: string;
|
|
115
|
+
artifacts: string[];
|
|
116
|
+
};
|
|
117
|
+
/** Stop the space's manager. This is the one manager stop: `cotal down`, every `cotal up` teardown and
|
|
118
|
+
* the delivery cutover preflight run it, so each holds the stop reservation, refuses a concurrent stop,
|
|
119
|
+
* and escalates a wedged manager to SIGKILL. A default stop signals only a manager that published the
|
|
120
|
+
* capability to spare its managed agents, and reports the agents it left; `withAgents` arms their reap
|
|
121
|
+
* instead. Throws, with the records kept, when the stop is refused or the death is not confirmed. */
|
|
122
|
+
export declare function stopManager(space?: string, { withAgents }?: {
|
|
123
|
+
withAgents?: boolean | undefined;
|
|
124
|
+
}): Promise<boolean>;
|
|
125
125
|
//# sourceMappingURL=manager-proc.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager-proc.d.ts","sourceRoot":"","sources":["../../src/lib/manager-proc.ts"],"names":[],"mappings":"AAOA,OAAO,
|
|
1
|
+
{"version":3,"file":"manager-proc.d.ts","sourceRoot":"","sources":["../../src/lib/manager-proc.ts"],"names":[],"mappings":"AAOA,OAAO,EAKL,KAAK,aAAa,EAAE,KAAK,aAAa,EAEvC,MAAM,qBAAqB,CAAC;AAI7B;;;;+EAI+E;AAC/E,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAehF;AAED;8FAC8F;AAC9F,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAGxG;AAWD;sFACsF;AACtF,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,OAAM,MAAoB,KAAG,MACd,CAAC;AAE9D,yFAAyF;AACzF,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,EAAE,OAAM,MAAoB,KAAG,MACrC,CAAC;AAE9C;;uFAEuF;AACvF,eAAO,MAAM,gBAAgB,GAAI,QAAO,MAAsB,KAAG,MAAuD,CAAC;AAWzH;;;;;;;;;;;;gGAYgG;AAChG,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAExG;4FAC4F;AAC5F,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,gDAAgD;IAChD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gGAAgG;IAChG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;qBAOqB;AACrB,wBAAgB,kBAAkB,CAChC,KAAK,GAAE,aAA6B,EACpC,WAAW,GAAE,aAAkC,EAC/C,KAAK,GAAE,MAAsB,GAC5B,aAAa,CAcf;AAED,0FAA0F;AAC1F,wBAAgB,eAAe,CAC7B,KAAK,GAAE,aAA6B,EACpC,WAAW,GAAE,aAAkC,EAC/C,KAAK,GAAE,MAAsB,GAC5B,kBAAkB,CAEpB;AAED,qGAAqG;AACrG,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAK9D;AAED;;;;0BAI0B;AAC1B,wBAAgB,SAAS,CAAC,KAAK,GAAE,MAAsB,GAAG,OAAO,CAEhE;AAID;;;;2CAI2C;AAC3C,wBAAgB,wBAAwB,CAAC,KAAK,GAAE,MAAsB,GAAG,OAAO,CAe/E;AAED;;;;0FAI0F;AAC1F,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,CAAC,GAAE,gBAAqB,GACvB,MAAM,CA6DR;AAED;;;;;;qGAMqG;AACrG,wBAAgB,8BAA8B,CAC5C,KAAK,GAAE,aAA6B,EACpC,WAAW,GAAE,aAAkC,EAC/C,KAAK,GAAE,MAAsB,GAC5B,IAAI,CA2BN;AAED;;;mBAGmB;AACnB,wBAAgB,aAAa,CAC3B,CAAC,GAAE,gBAAqB,EACxB,KAAK,GAAE,aAA6B,EACpC,WAAW,GAAE,aAAkC,GAC9C;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAOtD;AAED;;8CAE8C;AAC9C,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;AAErE,wGAAwG;AACxG,eAAO,MAAM,eAAe;;;;;;;CAOJ,CAAC;AAEzB;;;;sGAIsG;AACtG,wBAAsB,WAAW,CAAC,KAAK,GAAE,MAAsB,EAAE,EAAE,UAAkB,EAAE;;CAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAiC9G"}
|
package/dist/lib/manager-proc.js
CHANGED
|
@@ -5,7 +5,10 @@ import { DEFAULT_SERVER } from "@cotal-ai/core";
|
|
|
5
5
|
import { selfArgv } from "./self-exec.js";
|
|
6
6
|
import { resolveRuntimeSpace } from "./status.js";
|
|
7
7
|
import { cotalRoot } from "./paths.js";
|
|
8
|
-
import { canonicalLocalProcessPath, commandIsCotalSupervisor, localProcessPath, parsePid, probeLiveness, readPidfile, readProcessCommand, reclaimDeadPreUpgradeRecord, MANAGER_DELIVERY_AWARE_MARKER, MANAGER_LOGFILE, MANAGER_PIDFILE,
|
|
8
|
+
import { assertManagerCanSpare, armManagerShutdownIntent, disarmManagerShutdownIntent, canonicalLocalProcessPath, commandIsCotalSupervisor, localProcessPath, parsePid, probeLiveness, readPidfile, readProcessCommand, reclaimDeadPreUpgradeRecord, MANAGER_DELIVERY_AWARE_MARKER, MANAGER_LOGFILE, MANAGER_PIDFILE, MANAGER_SHUTDOWN_INTENT, MANAGER_SPARE_CAPABILITY, parsePositiveIntegerFlag, verifyIdentityPin, writePidPair, } from "@cotal-ai/workspace";
|
|
9
|
+
import { c } from "../ui.js";
|
|
10
|
+
import { stopLocalProcess } from "./local-process-stop.js";
|
|
11
|
+
import { listManagerSeatsForSpare, printLegacyManagerSpareUncertainty, printSparedAgents } from "./teardown-spare.js";
|
|
9
12
|
/** The `--max-sessions` value a live `cotal supervise` argv is actually serving.
|
|
10
13
|
*
|
|
11
14
|
* The manager reads that flag only at start. A refresh that records a different number while this
|
|
@@ -242,112 +245,59 @@ export function ensureManager(o = {}, probe = probeLiveness, readCommand = readP
|
|
|
242
245
|
const pid = startManagerDetached(o);
|
|
243
246
|
return { running: true, started: true, pid };
|
|
244
247
|
}
|
|
245
|
-
/**
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
*
|
|
256
|
-
*
|
|
257
|
-
*
|
|
258
|
-
*
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
// start does not inherit a pin for a process that no longer exists (#969), unless a successor was
|
|
271
|
-
// published meanwhile (#1238).
|
|
272
|
-
const clear = () => {
|
|
273
|
-
rmSync(marker, { force: true });
|
|
274
|
-
removePidPair(p, raw);
|
|
275
|
-
};
|
|
276
|
-
const pid = parsePid(raw);
|
|
277
|
-
if (pid === undefined) {
|
|
278
|
-
// An EMPTY pidfile is a pre-protocol husk with nothing behind it, and clearing it is safe. ANY
|
|
279
|
-
// OTHER unattributable content (garbled, fractional, out of range) may still front a LIVE
|
|
280
|
-
// process we cannot identify or signal, so removing it would orphan that process while
|
|
281
|
-
// reporting a clean stop. The contract at the top of pid.ts says such content is never a pid to
|
|
282
|
-
// delete a record against; this is that rule at the destructive end, matching down.ts:298-311
|
|
283
|
-
// and stopAuthService, which already refuse. My first version cleared it.
|
|
284
|
-
if (raw === "") {
|
|
285
|
-
clear();
|
|
286
|
-
return "already-gone";
|
|
287
|
-
}
|
|
288
|
-
throw new Error(`the manager pidfile at ${p} is unattributable (${JSON.stringify(raw)}): it may still front a running process nobody can identify.\n` +
|
|
289
|
-
`Refusing to remove it or report a clean stop; the delivery-aware marker is preserved with it.\n` +
|
|
290
|
-
`NEXT: find and stop that process, then remove the file by hand.`);
|
|
291
|
-
}
|
|
292
|
-
const before = probe(pid);
|
|
293
|
-
if (before === "dead") {
|
|
294
|
-
clear();
|
|
295
|
-
return "already-gone";
|
|
296
|
-
}
|
|
297
|
-
// A LIVE pid that is provably NOT a manager is never signalled. The record outlived its process
|
|
298
|
-
// and the number was reused, so SIGTERM here would kill an unrelated process — the exact
|
|
299
|
-
// destructive shape the rest of this function refuses on doubt, reached through certainty. The
|
|
300
|
-
// record is removed because it is provably stale, and what was found is printed: an operator who
|
|
301
|
-
// is told only "already gone" will not know their pidfile was pointing at a stranger.
|
|
302
|
-
if (before === "alive") {
|
|
303
|
-
const cmd = readCommand(pid);
|
|
304
|
-
if (cmd.kind === "command" && !commandIsCotalSupervisor(cmd.command)) {
|
|
305
|
-
console.error(`! recorded manager pid ${pid} is alive but is running \`${cmd.command}\`, which is not a manager - not signalling it; removing the stale record instead.`);
|
|
306
|
-
clear();
|
|
307
|
-
return "already-gone";
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
if (before === "unknown")
|
|
311
|
-
throw new Error(`refusing to stop manager pid ${pid}: its liveness cannot be determined (the kernel answered neither "running" nor "no such process"; a seccomp filter or LSM policy does this).\n` +
|
|
312
|
-
`The pidfile and delivery-aware marker are LEFT IN PLACE: deleting them would orphan a process that may still be bound to the control plane.\n` +
|
|
313
|
-
`NEXT: verify with \`ps -p ${pid}\`, then stop it yourself or remove \`${p}\` if it is gone.`);
|
|
314
|
-
// #969 OPEN-VERIFY-TERMINATE: establish target identity BEFORE any signal. A pinned record whose
|
|
315
|
-
// live process carries a DIFFERENT start means the pid was reused and fronts an unrelated process
|
|
316
|
-
// (attribution above cannot catch a reused pid that happens to run a supervisor-shaped command);
|
|
317
|
-
// a torn or unreadable pin cannot prove identity either. A legacy record warns and proceeds so an
|
|
318
|
-
// upgraded CLI can stop a manager launched before pins existed. A MATCH is fully verified.
|
|
319
|
-
const identity = verifyIdentityPin(p);
|
|
320
|
-
if (identity.kind === "mismatch")
|
|
321
|
-
throw identityRefusal("the manager", p, identity.record, identity.liveToken);
|
|
322
|
-
if (identity.kind === "legacy")
|
|
323
|
-
console.error(identityLegacyWarning("the manager", p));
|
|
324
|
-
else if (identity.kind !== "match" && identity.kind !== "gone")
|
|
325
|
-
throw identityUncertaintyRefusal("the manager", p, identity);
|
|
326
|
-
try {
|
|
327
|
-
send(pid, "SIGTERM");
|
|
328
|
-
}
|
|
329
|
-
catch (e) {
|
|
330
|
-
const code = e.code;
|
|
331
|
-
if (code === "ESRCH") {
|
|
332
|
-
clear(); // died between the probe and the signal, which is an ordinary race and genuinely gone
|
|
333
|
-
return "already-gone";
|
|
334
|
-
}
|
|
335
|
-
throw new Error(`refusing to stop manager pid ${pid}: the signal was rejected (${code ?? "unknown error"}).\n` +
|
|
336
|
-
`EPERM here means the process belongs to another user, so it is running and NOT ours to stop. The pidfile and marker are LEFT IN PLACE.\n` +
|
|
337
|
-
`NEXT: stop it as its owner, or remove \`${p}\` if you are certain it is gone.`);
|
|
248
|
+
/** The manager as `cotal down` registers it: its pidfile, and the records that die with its process. */
|
|
249
|
+
export const MANAGER_PROCESS = {
|
|
250
|
+
kind: "local-process",
|
|
251
|
+
name: "manager",
|
|
252
|
+
label: "manager",
|
|
253
|
+
order: 10,
|
|
254
|
+
pidFile: MANAGER_PIDFILE,
|
|
255
|
+
artifacts: [MANAGER_DELIVERY_AWARE_MARKER, MANAGER_SHUTDOWN_INTENT, MANAGER_SPARE_CAPABILITY],
|
|
256
|
+
};
|
|
257
|
+
/** Stop the space's manager. This is the one manager stop: `cotal down`, every `cotal up` teardown and
|
|
258
|
+
* the delivery cutover preflight run it, so each holds the stop reservation, refuses a concurrent stop,
|
|
259
|
+
* and escalates a wedged manager to SIGKILL. A default stop signals only a manager that published the
|
|
260
|
+
* capability to spare its managed agents, and reports the agents it left; `withAgents` arms their reap
|
|
261
|
+
* instead. Throws, with the records kept, when the stop is refused or the death is not confirmed. */
|
|
262
|
+
export async function stopManager(space = folderSpace(), { withAgents = false } = {}) {
|
|
263
|
+
const context = ctx(space);
|
|
264
|
+
let spared;
|
|
265
|
+
let spareSeats;
|
|
266
|
+
let legacyManagerSpareUnverified = false;
|
|
267
|
+
if (!withAgents && existsSync(PID_PATH(space))) {
|
|
268
|
+
const pin = verifyIdentityPin(PID_PATH(space));
|
|
269
|
+
if (pin.kind === "legacy")
|
|
270
|
+
legacyManagerSpareUnverified = true;
|
|
271
|
+
else if (pin.kind === "match")
|
|
272
|
+
spared = await listManagerSeatsForSpare(context);
|
|
338
273
|
}
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
274
|
+
const found = await stopLocalProcess(MANAGER_PROCESS, context, {
|
|
275
|
+
owns: commandIsCotalSupervisor,
|
|
276
|
+
beforeSignal: (attempt) => {
|
|
277
|
+
if (attempt.target.token === undefined) {
|
|
278
|
+
// Upgrade compatibility follows the shared identity contract: a live pre-pin record
|
|
279
|
+
// is signalled after the warning emitted by stopLocalProcess. A default stop cannot verify
|
|
280
|
+
// the newer spare capability. Destructive down uses the helper's reduced-guarantee
|
|
281
|
+
// pid + reservation-inode handoff. A present pin still takes the fully identity-bound
|
|
282
|
+
// paths below, and a mismatching pin was already refused before this hook.
|
|
283
|
+
if (!withAgents)
|
|
284
|
+
console.error(c.dim("could not verify that this legacy manager can spare its managed agents; signalling it for upgrade compatibility"));
|
|
285
|
+
}
|
|
286
|
+
if (withAgents)
|
|
287
|
+
armManagerShutdownIntent(context, attempt);
|
|
288
|
+
else if (attempt.target.token !== undefined)
|
|
289
|
+
spareSeats = assertManagerCanSpare(context, undefined, attempt.target);
|
|
290
|
+
},
|
|
291
|
+
// Disarmed by the attempt that armed it, inside its reservation: a stop refused the reservation
|
|
292
|
+
// never reaches this, so it cannot remove the intent of the stop that holds it.
|
|
293
|
+
afterFailedSignal: withAgents ? () => disarmManagerShutdownIntent(context) : undefined,
|
|
294
|
+
});
|
|
295
|
+
for (const artifact of MANAGER_PROCESS.artifacts)
|
|
296
|
+
rmSync(localProcessPath(artifact, context), { force: true });
|
|
297
|
+
if (legacyManagerSpareUnverified)
|
|
298
|
+
printLegacyManagerSpareUncertainty();
|
|
299
|
+
else if (spared)
|
|
300
|
+
printSparedAgents(spared, spareSeats);
|
|
301
|
+
return found;
|
|
352
302
|
}
|
|
353
303
|
//# sourceMappingURL=manager-proc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager-proc.js","sourceRoot":"","sources":["../../src/lib/manager-proc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1G,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EACL,yBAAyB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAC9F,WAAW,EAAE,kBAAkB,EAAE,2BAA2B,EAC5D,6BAA6B,EAAE,eAAe,EAAE,eAAe,EAE/D,qBAAqB,EAAE,eAAe,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,GAC7I,MAAM,qBAAqB,CAAC;AAC7B;;;;+EAI+E;AAC/E,MAAM,UAAU,4BAA4B,CAAC,OAAe;IAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACzB,IAAI,GAAuB,CAAC;QAC5B,IAAI,KAAK,KAAK,gBAAgB;YAAE,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;aAC/C,IAAI,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC;YAAE,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1F,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS;QAChC,IAAI,CAAC;YACH,OAAO,wBAAwB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;8FAC8F;AAC9F,MAAM,UAAU,gCAAgC,CAAC,OAA2B,EAAE,SAAiB;IAC7F,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,4BAA4B,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;AAC7D,CAAC;AAED;;;;;4DAK4D;AAC5D,MAAM,WAAW,GAAG,GAAW,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACrE,MAAM,GAAG,GAAG,CAAC,KAAa,EAAuB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAEnF;sFACsF;AACtF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,OAAe,SAAS,EAAE,EAAU,EAAE,CAClF,yBAAyB,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAE9D,yFAAyF;AACzF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAE,OAAe,SAAS,EAAE,EAAU,EAAE,CACzF,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAE9C;;uFAEuF;AACvF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAgB,WAAW,EAAE,EAAU,EAAE,CAAC,gBAAgB,CAAC,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACzH,MAAM,QAAQ,GAAG,gBAAgB,CAAC;AAClC;;;;;mEAKmE;AACnE,MAAM,qBAAqB,GAAG,CAAC,QAAgB,WAAW,EAAE,EAAU,EAAE,CACtE,gBAAgB,CAAC,6BAA6B,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AA2B9D;;;;;;;qBAOqB;AACrB,MAAM,UAAU,kBAAkB,CAChC,QAAuB,aAAa,EACpC,cAA6B,kBAAkB,EAC/C,QAAgB,WAAW,EAAE;IAE7B,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,0DAA0D;IAChG,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1B,6FAA6F;IAC7F,+FAA+F;IAC/F,6FAA6F;IAC7F,yFAAyF;IACzF,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1D,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC1D,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,uCAAuC;IACnG,OAAO,EAAE,KAAK,EAAE,wBAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;AAC3G,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,eAAe,CAC7B,QAAuB,aAAa,EACpC,cAA6B,kBAAkB,EAC/C,QAAgB,WAAW,EAAE;IAE7B,OAAO,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC;AAC7D,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,qBAAqB,CAAC,CAAgB;IACpD,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,yBAAyB,CAAC;IAC3D,IAAI,CAAC,CAAC,KAAK,KAAK,gBAAgB;QAAE,OAAO,qDAAqD,CAAC;IAC/F,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,OAAO,wBAAwB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC;AACrE,CAAC;AAED;;;;0BAI0B;AAC1B,MAAM,UAAU,SAAS,CAAC,QAAgB,WAAW,EAAE;IACrD,OAAO,eAAe,CAAC,aAAa,EAAE,kBAAkB,EAAE,KAAK,CAAC,KAAK,OAAO,CAAC;AAC/E,CAAC;AAID;;;;2CAI2C;AAC3C,MAAM,UAAU,wBAAwB,CAAC,QAAgB,WAAW,EAAE;IACpE,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,SAAiB,CAAC;IACtB,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,sGAAsG;QACtG,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,wFAAwF;QACxF,IAAK,CAA2B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACjE,MAAM,CAAC,CAAC;IACV,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,SAAS,KAAK,OAAO,CAAC;AACzF,CAAC;AAqBD,MAAM,UAAU,oBAAoB,CAClC,IAAsB,EAAE;IAExB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,WAAW,EAAE,CAAC;IACvC,iGAAiG;IACjG,sGAAsG;IACtG,qGAAqG;IACrG,mDAAmD;IACnD,EAAE;IACF,mGAAmG;IACnG,gGAAgG;IAChG,uFAAuF;IACvF,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC;IACnC,2BAA2B,CAAC,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,2BAA2B,CAAC,6BAA6B,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACtC,4FAA4F;IAC5F,iGAAiG;IACjG,gGAAgG;IAChG,qEAAqE;IACrE,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACzC,iGAAiG;IACjG,+FAA+F;IAC/F,8FAA8F;IAC9F,yCAAyC;IACzC,IAAI,CAAC;QAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,gDAAgD,CAAC,CAAC;IAC7F,MAAM,IAAI,GAAG;QACX,GAAG,IAAI;QACP,WAAW;QACX,SAAS;QACT,KAAK;QACL,UAAU;QACV,CAAC,CAAC,MAAM,IAAI,cAAc;QAC1B,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,0FAA0F;QAC1F,gGAAgG;QAChG,mGAAmG;QACnG,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,mGAAmG;QACnG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,4FAA4F;QAC5F,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAClF,CAAC;IACF,kGAAkG;IAClG,4FAA4F;IAC5F,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,yBAAyB,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACxI,SAAS,CAAC,EAAE,CAAC,CAAC;IACd,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,gGAAgG;IAChG,kDAAkD;IAClD,MAAM,OAAO,GAAG,yBAAyB,CAAC,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,IAAI,CAAC,KAAK,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC/D,+FAA+F;IAC/F,mGAAmG;IACnG,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,qGAAqG;IACrG,mGAAmG;IACnG,aAAa,CAAC,yBAAyB,CAAC,6BAA6B,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACvG,OAAO,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;qGAMqG;AACrG,MAAM,UAAU,8BAA8B,CAC5C,QAAuB,aAAa,EACpC,cAA6B,kBAAkB,EAC/C,QAAgB,WAAW,EAAE;IAE7B,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,iGAAiG;IACjG,gGAAgG;IAChG,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1B,kGAAkG;IAClG,8FAA8F;IAC9F,2FAA2F;IAC3F,8FAA8F;IAC9F,oEAAoE;IACpE,IAAI,KAAK,KAAK,SAAS;QACrB,OAAO,CAAC,KAAK,CACX,KAAK,qBAAqB,CAAC,MAAM,CAAC,6GAA6G,CAChJ,CAAC;IACJ,IAAI,KAAK,KAAK,gBAAgB;QAC5B,MAAM,IAAI,KAAK,CACb,0BAA0B,CAAC,qCAAqC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM;YAClH,uLAAuL;YACvL,mDAAmD,CAAC,aAAa,CACpE,CAAC;IACJ,IAAI,KAAK,KAAK,SAAS;QACrB,MAAM,IAAI,KAAK,CACb,6BAA6B,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,yJAAyJ;YAClN,gGAAgG;YAChG,8DAA8D,CAAC,gBAAgB,CAClF,CAAC;AACN,CAAC;AAED;;;mBAGmB;AACnB,MAAM,UAAU,aAAa,CAC3B,IAAsB,EAAE,EACxB,QAAuB,aAAa,EACpC,cAA6B,kBAAkB;IAE/C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,WAAW,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACzD,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAChE,8BAA8B,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,uDAAuD;IAClH,MAAM,GAAG,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAC/C,CAAC;AAUD;;iGAEiG;AACjG,kCAAkC;AAElC;;;;;;;;;;0FAU0F;AAC1F,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAuB,aAAa,EACpC,SAA+B,SAAS,EACxC,cAA6B,kBAAkB,EAC/C,QAAgB,WAAW,EAAE;IAE7B,MAAM,IAAI,GAAa,MAAM,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACxE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,uCAAuC;QACxE,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,8FAA8F;IAC9F,kGAAkG;IAClG,+BAA+B;IAC/B,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,+FAA+F;QAC/F,0FAA0F;QAC1F,uFAAuF;QACvF,gGAAgG;QAChG,8FAA8F;QAC9F,0EAA0E;QAC1E,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;YACf,KAAK,EAAE,CAAC;YACR,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,MAAM,IAAI,KAAK,CACb,0BAA0B,CAAC,uBAAuB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gEAAgE;YACnI,iGAAiG;YACjG,iEAAiE,CACpE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,KAAK,EAAE,CAAC;QACR,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,gGAAgG;IAChG,yFAAyF;IACzF,+FAA+F;IAC/F,iGAAiG;IACjG,sFAAsF;IACtF,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACrE,OAAO,CAAC,KAAK,CAAC,0BAA0B,GAAG,8BAA8B,GAAG,CAAC,OAAO,oFAAoF,CAAC,CAAC;YAC1K,KAAK,EAAE,CAAC;YACR,OAAO,cAAc,CAAC;QACxB,CAAC;IACH,CAAC;IACD,IAAI,MAAM,KAAK,SAAS;QACtB,MAAM,IAAI,KAAK,CACb,gCAAgC,GAAG,gJAAgJ;YACjL,+IAA+I;YAC/I,6BAA6B,GAAG,yCAAyC,CAAC,mBAAmB,CAChG,CAAC;IACJ,iGAAiG;IACjG,kGAAkG;IAClG,iGAAiG;IACjG,kGAAkG;IAClG,2FAA2F;IAC3F,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;QAAE,MAAM,eAAe,CAAC,aAAa,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/G,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;SAClF,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM;QAAE,MAAM,0BAA0B,CAAC,aAAa,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7H,IAAI,CAAC;QACH,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,GAAI,CAA2B,CAAC,IAAI,CAAC;QAC/C,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,KAAK,EAAE,CAAC,CAAC,sFAAsF;YAC/F,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,MAAM,IAAI,KAAK,CACb,gCAAgC,GAAG,8BAA8B,IAAI,IAAI,eAAe,MAAM;YAC5F,0IAA0I;YAC1I,2CAA2C,CAAC,mCAAmC,CAClF,CAAC;IACJ,CAAC;IACD,4FAA4F;IAC5F,gGAAgG;IAChG,8FAA8F;IAC9F,sFAAsF;IACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,EAAE;QAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACnG,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,KAAK,KAAK,MAAM;QAClB,MAAM,IAAI,KAAK,CACb,eAAe,GAAG,mCAAmC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,cAAc;YACjH,8FAA8F;YAC9F,uBAAuB,GAAG,0CAA0C,CACvE,CAAC;IACJ,KAAK,EAAE,CAAC;IACR,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"manager-proc.js","sourceRoot":"","sources":["../../src/lib/manager-proc.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@ const LedgerAgentSchema = z.strictObject({
|
|
|
28
28
|
/** The manifest agent key (`agents:` name) — display + the stable key a re-apply matches a declared
|
|
29
29
|
* agent against (the spawned name may collision-number, so it can't be that key). */
|
|
30
30
|
requested: z.string().regex(TOKEN, "requested name must be a path-safe token ([A-Za-z0-9_-])"),
|
|
31
|
-
/** The manager-reply SPAWNED name (collision-numbered, e.g. `
|
|
31
|
+
/** The manager-reply SPAWNED name (collision-numbered, e.g. `socrates_2`) — what creds are filed
|
|
32
32
|
* under; the cred path derives from THIS, never the manifest key. */
|
|
33
33
|
name: z.string().regex(TOKEN, "agent name must be a path-safe token ([A-Za-z0-9_-])"),
|
|
34
34
|
/** The spawned agent's nkey id — the immutable identity `down -f` matches before stopping. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../../src/lib/manifest/prepare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../../src/lib/manifest/prepare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAElF,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;2FAC2F;AAC3F,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;+DAC+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qGAAqG;IACrG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2FAA2F;IAC3F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qCAAqC;IACrC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IAClD,yFAAyF;IACzF,MAAM,EAAE,WAAW,CAAC;IACpB,+FAA+F;IAC/F,SAAS,EAAE,eAAe,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED;2EAC2E;AAC3E,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,GAAG,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,cAAc,CA6FvH"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* `include` a persona's own grants are inherited **only for channels the manifest does not declare**
|
|
9
9
|
* (one authority per channel), concrete-only (wildcards rejected), and surfaced loudly.
|
|
10
10
|
*/
|
|
11
|
-
import { isConcreteChannel } from "@cotal-ai/core";
|
|
11
|
+
import { isConcreteChannel, resolveReadAcl } from "@cotal-ai/core";
|
|
12
12
|
import { mergeLaunchOptions } from "@cotal-ai/workspace";
|
|
13
13
|
/** Merge one resolved agent with its (optional) loaded persona, given the set of channel names the
|
|
14
14
|
* manifest declares. Returns the launch form plus any errors/warnings. */
|
|
@@ -42,7 +42,7 @@ export function prepareAgent(agent, persona, declared) {
|
|
|
42
42
|
};
|
|
43
43
|
const inherited = { subscribe: [], allowSubscribe: [], allowPublish: [], capabilities: [] };
|
|
44
44
|
if (agent.personaPermissions === "include" && persona) {
|
|
45
|
-
const personaAllowSub = persona.
|
|
45
|
+
const personaAllowSub = resolveReadAcl(persona.subscribe ?? [], persona.allowSubscribe);
|
|
46
46
|
// Reject persona WILDCARD grants in v1 (they'd re-introduce wildcards via the persona file and
|
|
47
47
|
// break the per-channel partition).
|
|
48
48
|
for (const [field, list] of [["subscribe", persona.subscribe], ["allowSubscribe", personaAllowSub], ["allowPublish", persona.allowPublish]])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../../src/lib/manifest/prepare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,iBAAiB,EAAiB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../../src/lib/manifest/prepare.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/self-exec.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export declare function selfArgv(): string[];
|
|
|
20
20
|
/** True when launched via `npx` — the package is unpacked under `~/.npm/_npx/<hash>/…`. */
|
|
21
21
|
export declare function isNpx(): boolean;
|
|
22
22
|
/** Is a *durable* `cotal` executable resolvable on PATH? A pure PATH scan (no exec): `cotal
|
|
23
|
-
* --version` isn't a real command, so
|
|
23
|
+
* --version` isn't a real command, so an exec probe would always report cotal missing.
|
|
24
24
|
* Skips npx's transient shim: `npm exec` (npx) prepends the package's own
|
|
25
25
|
* `<cache>/_npx/<hash>/node_modules/.bin` to PATH, and since `cotal-ai` declares a `cotal` bin,
|
|
26
26
|
* that dir holds a throwaway `cotal`. Counting it would make a bare `npx cotal-ai setup` conclude
|
package/dist/lib/self-exec.js
CHANGED
|
@@ -67,7 +67,7 @@ export function isNpx() {
|
|
|
67
67
|
return /[/\\]_npx[/\\]/.test(process.argv[1] ?? "");
|
|
68
68
|
}
|
|
69
69
|
/** Is a *durable* `cotal` executable resolvable on PATH? A pure PATH scan (no exec): `cotal
|
|
70
|
-
* --version` isn't a real command, so
|
|
70
|
+
* --version` isn't a real command, so an exec probe would always report cotal missing.
|
|
71
71
|
* Skips npx's transient shim: `npm exec` (npx) prepends the package's own
|
|
72
72
|
* `<cache>/_npx/<hash>/node_modules/.bin` to PATH, and since `cotal-ai` declares a `cotal` bin,
|
|
73
73
|
* that dir holds a throwaway `cotal`. Counting it would make a bare `npx cotal-ai setup` conclude
|
package/dist/lib/status.d.ts
CHANGED
|
@@ -41,5 +41,4 @@ export declare function connectorHarnesses(): HarnessStatus[];
|
|
|
41
41
|
* connector itself. A declared provider that cannot be resolved renders as one red row naming the
|
|
42
42
|
* error, so the rest of status still prints. */
|
|
43
43
|
export declare function connectorStatusRows(harnesses: readonly HarnessStatus[]): Promise<ConnectorStatusRow[]>;
|
|
44
|
-
export declare function onPath(bin: string): boolean;
|
|
45
44
|
//# sourceMappingURL=status.d.ts.map
|