@cotal-ai/cli 0.20.0 → 0.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +35 -7
- package/dist/commands/agents.js.map +1 -1
- package/dist/lib/control.d.ts +61 -4
- package/dist/lib/control.d.ts.map +1 -1
- package/dist/lib/control.js +240 -35
- package/dist/lib/control.js.map +1 -1
- package/dist/lib/manager-proc.d.ts +40 -11
- package/dist/lib/manager-proc.d.ts.map +1 -1
- package/dist/lib/manager-proc.js +67 -25
- package/dist/lib/manager-proc.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiD,KAAK,gBAAgB,EAAkC,KAAK,UAAU,EAAqB,MAAM,gBAAgB,CAAC;AAuB1K,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;EAAgH,CAAC;AACvI,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;EAAkE,CAAC;AACvF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;EAAqH,CAAC;AAE9I,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAQrE;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB1D;
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiD,KAAK,gBAAgB,EAAkC,KAAK,UAAU,EAAqB,MAAM,gBAAgB,CAAC;AAuB1K,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;EAAgH,CAAC;AACvI,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;EAAkE,CAAC;AACvF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;EAAqH,CAAC;AAE9I,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAQrE;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB1D;AA8JD,wBAAsB,EAAE,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA2FxD;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC5D"}
|
package/dist/commands/agents.js
CHANGED
|
@@ -78,7 +78,7 @@ async function locateSeat(v, name) {
|
|
|
78
78
|
const probe = await resolveControlTarget(v, "control-caller-privileged");
|
|
79
79
|
if (probe.auth.bearer)
|
|
80
80
|
return { kind: "unpinned" };
|
|
81
|
-
const scatter = await scatterManager(probe.space, probe.server, "ps", probe.auth);
|
|
81
|
+
const scatter = await scatterManager(probe.space, probe.server, "ps", probe.auth, probe.spaceAuth);
|
|
82
82
|
if (!scatter.ok)
|
|
83
83
|
return { kind: "unpinned" }; // cannot locate ⇒ behave exactly as before, never worse
|
|
84
84
|
const reachable = scatter.instances.filter((i) => i.reachable);
|
|
@@ -112,6 +112,35 @@ async function pinForTarget(v, verb) {
|
|
|
112
112
|
console.error(c.red(`✗ no managed agent "${v.name}" on any of the ${loc.checked} reachable manager instance(s) in this space.${missed}`));
|
|
113
113
|
process.exit(1);
|
|
114
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* What one SILENT manager instance's row says. The wording lives here, in the CLI, and not in the
|
|
117
|
+
* scatter that produced the fact: core reports a frozen slot that did not answer, and turning that
|
|
118
|
+
* into a sentence for an operator is a rendering decision.
|
|
119
|
+
*
|
|
120
|
+
* "unreachable" was the old word for all four of these, and it was a network verdict this client
|
|
121
|
+
* never held. What it actually knows is narrower and more useful — whether it ASKED the broker
|
|
122
|
+
* about the instance, and what the broker said:
|
|
123
|
+
*
|
|
124
|
+
* - `gone`: the broker itself reports nothing subscribed on that instance's rail. The registration
|
|
125
|
+
* outlived its host, which never happens on its own and never heals on its own, so the row names
|
|
126
|
+
* the verb that removes it.
|
|
127
|
+
* - `unknown`: asked, nothing came back. "Alive but slow" and "wedged" are the same observation,
|
|
128
|
+
* and neither is death — so this row still says only what happened.
|
|
129
|
+
* - `not-probed` / `probe-refused`: this command could not ask. That is a fact about the command,
|
|
130
|
+
* not the instance, and saying so is what keeps a local gap from reading as a remote fault.
|
|
131
|
+
*/
|
|
132
|
+
function silentManagerRow(liveness, instanceId) {
|
|
133
|
+
if (liveness === "gone")
|
|
134
|
+
return (c.red("registration is stale") +
|
|
135
|
+
c.dim(` (the broker reports nothing subscribed on its rail; its host is gone and never deregistered)`) +
|
|
136
|
+
c.dim(`\n ↳ remove the record: cotal deregister-instance --instance ${instanceId}`));
|
|
137
|
+
const why = liveness === "probe-refused"
|
|
138
|
+
? " (its liveness could not be probed: the broker refused this command's probe, named above)"
|
|
139
|
+
: liveness === "not-probed"
|
|
140
|
+
? " (its liveness was not probed: this command holds no probe grant for it)"
|
|
141
|
+
: " (either the host is alive and slow, or it died and its registration was never removed)";
|
|
142
|
+
return c.red("registered, no answer within the deadline") + c.dim(why);
|
|
143
|
+
}
|
|
115
144
|
/** Render one managed-agent row (process fact, mesh fact, optional auth-health line), indented for
|
|
116
145
|
* the per-manager grouping a class scatter prints.
|
|
117
146
|
*
|
|
@@ -193,7 +222,7 @@ export async function ps(args) {
|
|
|
193
222
|
printAgentRow(r);
|
|
194
223
|
return;
|
|
195
224
|
}
|
|
196
|
-
const scatter = await scatterManager(t.space, t.server, "ps", t.auth);
|
|
225
|
+
const scatter = await scatterManager(t.space, t.server, "ps", t.auth, t.spaceAuth);
|
|
197
226
|
if (!scatter.ok) {
|
|
198
227
|
console.error(c.red(`✗ ${scatter.error}`));
|
|
199
228
|
process.exit(1);
|
|
@@ -222,11 +251,10 @@ export async function ps(args) {
|
|
|
222
251
|
for (const inst of instances) {
|
|
223
252
|
const label = `manager ${inst.instanceId}`;
|
|
224
253
|
if (!inst.reachable) {
|
|
225
|
-
// Not "unreachable": the client holds no network verdict. What it knows is
|
|
226
|
-
//
|
|
227
|
-
//
|
|
228
|
-
|
|
229
|
-
console.log(`${c.bold(label)} ${c.red("registered, no answer within the deadline")}${c.dim(" (a dead host never deregisters itself; if this instance is gone, deregister it)")}`);
|
|
254
|
+
// Not "unreachable": the client holds no network verdict. What it knows is which question it
|
|
255
|
+
// asked about this instance and what came back, which is narrower and more useful. The four
|
|
256
|
+
// cases and their wording are `silentManagerRow`.
|
|
257
|
+
console.log(`${c.bold(label)} ${silentManagerRow(inst.liveness, inst.instanceId)}`);
|
|
230
258
|
continue;
|
|
231
259
|
}
|
|
232
260
|
if (inst.error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/control.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { type ControlReply, type EpCaller, type Profile } from "@cotal-ai/core";
|
|
1
|
+
import { type ControlReply, type EpCaller, type EpInstanceLiveness, type Profile, type SpaceAuth } from "@cotal-ai/core";
|
|
2
|
+
import { type NatsConnection } from "@nats-io/transport-node";
|
|
2
3
|
import { type ConnectFlags } from "./connect.js";
|
|
3
4
|
/** Endpoint auth material for one control call — a static/raw cred OR user-mode bearer+sentinel
|
|
4
5
|
* (spread into the endpoint verbatim), plus the minted instrument's v0.4 caller triple when the
|
|
@@ -36,6 +37,7 @@ instanceId?: string): Promise<{
|
|
|
36
37
|
space: string;
|
|
37
38
|
server: string;
|
|
38
39
|
auth: ControlAuth;
|
|
40
|
+
spaceAuth?: SpaceAuth;
|
|
39
41
|
}>;
|
|
40
42
|
/** Operator reach for one targeted control call: `owner` rides the caller's own-domain verb rows
|
|
41
43
|
* (the spawn capability's standing mint), `any` the admin instrument's cross-agent rows (§13.2
|
|
@@ -94,14 +96,32 @@ export declare function epRailFailure(e: unknown, pin?: ManagerPin): ManagerRepl
|
|
|
94
96
|
* enforces nothing). A raw `--creds` file from an older generation carries no ep rows and is
|
|
95
97
|
* refused loud (no silent ctl fallback exists anymore). */
|
|
96
98
|
export declare function askManager(space: string, server: string, op: string, args?: Record<string, unknown>, auth?: ControlAuth, reach?: ControlReach, timeoutMs?: number, pin?: ManagerPin): Promise<ManagerReply>;
|
|
99
|
+
/** What this CLI established about a silent instance's LIVENESS, as opposed to its answer. Kept
|
|
100
|
+
* separate from `reachable` because they are different questions and folding them is what let a
|
|
101
|
+
* registration outlive its host unnoticed:
|
|
102
|
+
* - `gone` — the BROKER answered no-responders on that instance's own rail. Affirmative: the
|
|
103
|
+
* record claims a live instance and there is nothing behind it, so the row can say so and name
|
|
104
|
+
* the deregistration.
|
|
105
|
+
* - `unknown` — a probe went out and nothing came back. A live-but-slow host and a wedged one are
|
|
106
|
+
* the same observation from here, so nothing is claimed.
|
|
107
|
+
* - `not-probed` — no probe was PUBLISHED for it: it is outside this credential's pinned set (it
|
|
108
|
+
* registered after the freeze this instrument was minted against), or this command had no
|
|
109
|
+
* probe path at all (user mode holds no instance rails).
|
|
110
|
+
* - `probe-refused` — the broker refused the probe publish. The grant is missing, which is a
|
|
111
|
+
* local misconfiguration and NOT a statement about the instance; it is named on stderr rather
|
|
112
|
+
* than left to expire into `unknown`. */
|
|
113
|
+
export type ScatterInstanceLiveness = "gone" | "unknown" | "not-probed" | "probe-refused";
|
|
97
114
|
/** One instance's slot in a class scatter (P2 item 3): a REACHABLE instance carries its attributed
|
|
98
115
|
* reply (`data` on ok, `error` on a per-instance failure); an UNREACHABLE one (a frozen slot that
|
|
99
|
-
* produced no on-time reply — a severed/stalled manager) is reported, NEVER omitted (SPEC §13.5 pin 3)
|
|
116
|
+
* produced no on-time reply — a severed/stalled manager) is reported, NEVER omitted (SPEC §13.5 pin 3),
|
|
117
|
+
* and carries what the liveness probe established about it ({@link ScatterInstanceLiveness}). */
|
|
100
118
|
export interface ScatterInstanceReply {
|
|
101
119
|
instanceId: string;
|
|
102
120
|
reachable: boolean;
|
|
103
121
|
data?: unknown;
|
|
104
122
|
error?: string;
|
|
123
|
+
/** Set on unreachable slots only: a slot that ANSWERED needs no liveness verdict. */
|
|
124
|
+
liveness?: ScatterInstanceLiveness;
|
|
105
125
|
}
|
|
106
126
|
export type ScatterReply = {
|
|
107
127
|
ok: true;
|
|
@@ -110,11 +130,48 @@ export type ScatterReply = {
|
|
|
110
130
|
ok: false;
|
|
111
131
|
error: string;
|
|
112
132
|
};
|
|
133
|
+
/**
|
|
134
|
+
* THE §13.5 LIVENESS HOOK this CLI hands to a scatter, and the record of what it established.
|
|
135
|
+
*
|
|
136
|
+
* It is built HERE and not in core because it is entirely a statement about this caller's
|
|
137
|
+
* CREDENTIAL. A probe publishes on an instance's own rail, and only the layer that minted the
|
|
138
|
+
* credential knows which instance rails it carries; core cannot know, and a core that guessed would
|
|
139
|
+
* publish requests the broker must refuse — invisibly, since a refused publish looks exactly like a
|
|
140
|
+
* slow instance from the caller's side.
|
|
141
|
+
*
|
|
142
|
+
* TWO RULES, and both are about not asking questions this credential cannot ask:
|
|
143
|
+
* - an id OUTSIDE the pinned set gets `unknown` WITHOUT PUBLISHING. The scatter re-freezes the
|
|
144
|
+
* class on its own connection, so it can name an instance that registered after the freeze this
|
|
145
|
+
* credential was minted against. That instance is NEW, not dead, and the right answer for it is
|
|
146
|
+
* the deadline — reached without sending a request that would be refused.
|
|
147
|
+
* - an id INSIDE the set that the broker refuses anyway settles IMMEDIATELY on the violation
|
|
148
|
+
* rather than expiring into `unknown` at the budget, and is reported by name.
|
|
149
|
+
*
|
|
150
|
+
* Only `gone` ever licenses anything downstream, so every mistake this can make is a slower and
|
|
151
|
+
* more truthful answer, never a faster wrong one.
|
|
152
|
+
*/
|
|
153
|
+
export declare function pinnedLivenessProbe(nc: NatsConnection, opts: {
|
|
154
|
+
space: string;
|
|
155
|
+
endpoint: string;
|
|
156
|
+
caller: EpCaller;
|
|
157
|
+
/** The exact ids this connection's credential holds `inst` rails for. */
|
|
158
|
+
pinned: ReadonlySet<string>;
|
|
159
|
+
probeDeadlineMs?: number;
|
|
160
|
+
/** Where a refusal is announced. Defaults to stderr; the suite captures it. */
|
|
161
|
+
report?: (line: string) => void;
|
|
162
|
+
}): {
|
|
163
|
+
probeLiveness: (instanceId: string) => Promise<EpInstanceLiveness>;
|
|
164
|
+
/** What was established about one silent slot, for the row that will describe it. */
|
|
165
|
+
livenessOf: (instanceId: string) => ScatterInstanceLiveness;
|
|
166
|
+
};
|
|
113
167
|
/** SCATTER one untargeted read (`ps`) across EVERY registered manager instance in the space and merge
|
|
114
168
|
* the attributed results — the `cotal ps` default in a multi-manager space (P2 item 3). Auth shapes
|
|
115
169
|
* match {@link askManager}: a minted instrument or user bearer rides its own caller triple; a raw
|
|
116
170
|
* pre-1c `--creds` file is refused loud; an OPEN mesh synthesizes a DEV_OWNER triple and connects
|
|
117
|
-
* bare (the broker enforces nothing, so the records freeze reads freely).
|
|
118
|
-
|
|
171
|
+
* bare (the broker enforces nothing, so the records freeze reads freely). `spaceAuth` is the
|
|
172
|
+
* resolved mesh's trust material from {@link resolveControlTarget}: present ⇒ the scatter re-mints
|
|
173
|
+
* its instrument pinned to the frozen instance ids and can probe their liveness; absent ⇒ it runs
|
|
174
|
+
* exactly as it did before and every silent slot is reported `not-probed`. */
|
|
175
|
+
export declare function scatterManager(space: string, server: string, op: string, auth?: ControlAuth, spaceAuth?: SpaceAuth, timeoutMs?: number): Promise<ScatterReply>;
|
|
119
176
|
export declare function failIfNotOk(reply: ControlReply): void;
|
|
120
177
|
//# sourceMappingURL=control.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control.d.ts","sourceRoot":"","sources":["../../src/lib/control.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"control.d.ts","sourceRoot":"","sources":["../../src/lib/control.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/control.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { DEFAULT_SPACE, DEV_OWNER, BASELINE_LIFECYCLE_ENDPOINT, EpEnvelopeError, GOAL_BEARING_COMMANDS, invokeCommand, respondedButUnbound, unansweredRequest, registryReadFailed, submitAndFollowGoal, scatterCommand, mintLifecycleUid, newIdentity, resolveService, standaloneConnectOpts, } from "@cotal-ai/core";
|
|
2
|
-
import { connect } from "@nats-io/transport-node";
|
|
1
|
+
import { DEFAULT_SPACE, DEV_OWNER, BASELINE_LIFECYCLE_ENDPOINT, EpEnvelopeError, GOAL_BEARING_COMMANDS, epProbeInstanceInterest, freezeExpectedSet, instancePinnedInstrumentCapabilities, invokeCommand, mintCreds, parseEpSubject, respondedButUnbound, unansweredRequest, registryReadFailed, submitAndFollowGoal, scatterCommand, mintLifecycleUid, newIdentity, resolveService, standaloneConnectOpts, } from "@cotal-ai/core";
|
|
2
|
+
import { PermissionViolationError, connect } from "@nats-io/transport-node";
|
|
3
|
+
import { jetstreamManager } from "@nats-io/jetstream";
|
|
3
4
|
import { authDir, endpointAuth, findCotalRoot, isWorkspaceTargetError, loadSpaceAuth, resolveMeshTarget, pruneStaleMeshes, renderWorkspaceError, soleSpaceOf, } from "@cotal-ai/workspace";
|
|
4
5
|
import { c, staleStoreHint } from "../ui.js";
|
|
5
6
|
import { connectOrExit, connectUserControlOrExit } from "./connect.js";
|
|
@@ -100,6 +101,12 @@ instanceId) {
|
|
|
100
101
|
space: conn.space,
|
|
101
102
|
server: conn.server,
|
|
102
103
|
auth: { ...endpointAuth(conn), ...(conn.epCaller ? { epCaller: conn.epCaller } : {}) },
|
|
104
|
+
// The resolved mesh's trust material, carried FORWARD rather than re-loaded from disk by
|
|
105
|
+
// whoever needs it: {@link scatterManager} re-mints its one-shot instrument against the frozen
|
|
106
|
+
// instance ids, and a second `loadSpaceAuth` there would be a second answer to "which space's
|
|
107
|
+
// seed" for one command. Absent for an open mesh (no credential system) and for raw
|
|
108
|
+
// off-registry creds (no seed to mint from) — both of which simply do not re-mint.
|
|
109
|
+
...(conn.auth ? { spaceAuth: conn.auth } : {}),
|
|
103
110
|
};
|
|
104
111
|
}
|
|
105
112
|
/** v0.3 ctl op → v0.4 typed command (P2 item 1, 1c.2b): the wire names the manager REGISTERS
|
|
@@ -288,61 +295,259 @@ export async function askManager(space, server, op, args, auth = {}, reach = "ow
|
|
|
288
295
|
const openAuth = { epCaller: { owner: DEV_OWNER, actor: newIdentity().id, uid: mintLifecycleUid() } };
|
|
289
296
|
return askManagerEp(space, server, op, args, openAuth, reach, timeoutMs, pin);
|
|
290
297
|
}
|
|
291
|
-
/**
|
|
292
|
-
*
|
|
293
|
-
*
|
|
294
|
-
*
|
|
295
|
-
|
|
296
|
-
async function askManagerScatterEp(space, server, op, auth, timeoutMs) {
|
|
297
|
-
const mapped = EP_COMMANDS[op];
|
|
298
|
-
if (!mapped)
|
|
299
|
-
return { ok: false, error: `unknown manager op "${op}" (no v0.4 command mapping)` };
|
|
300
|
-
if (mapped.targeted)
|
|
301
|
-
return { ok: false, error: `${op} is targeted and cannot be scattered across instances` };
|
|
302
|
-
const caller = auth.epCaller;
|
|
298
|
+
/** Open one short-lived control connection under whichever of the three auth shapes this command
|
|
299
|
+
* holds (static creds / user bearer + sentinel / bare open mesh) and hand it to `fn`. Extracted so
|
|
300
|
+
* the scatter's TWO connections cannot drift in their connect options: they differ in credential
|
|
301
|
+
* and in nothing else. */
|
|
302
|
+
async function withControlConnection(server, auth, fn) {
|
|
303
303
|
const nc = await connect({
|
|
304
304
|
servers: server,
|
|
305
305
|
...standaloneConnectOpts(auth.creds ? { creds: auth.creds, tls: auth.tls === true } : auth.bearer ? { bearer: auth.bearer, sentinelCreds: auth.sentinelCreds, tls: auth.tls === true } : { tls: auth.tls === true }),
|
|
306
306
|
maxReconnectAttempts: 0,
|
|
307
307
|
});
|
|
308
308
|
try {
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
309
|
+
return await fn(nc);
|
|
310
|
+
}
|
|
311
|
+
finally {
|
|
312
|
+
await nc.drain().catch(() => nc.close());
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
/** The instance a REFUSED SUBJECT names, or `undefined` when that subject is not one of this
|
|
316
|
+
* probe's requests at all.
|
|
317
|
+
*
|
|
318
|
+
* The id is read as a whole subject TOKEN, through the same §13.9 grammar parser that built the
|
|
319
|
+
* subject, and never matched inside the text. Lifecycle tokens are `[a-z0-9]{26,32}`, so one
|
|
320
|
+
* frozen id can be a PREFIX of another (26 chars and the same 26 plus a suffix are both legal),
|
|
321
|
+
* and a substring test then attributes one broker refusal to two instances: the operator is told
|
|
322
|
+
* the CLI could not ask about a manager it never published for, and that instance's probe settles
|
|
323
|
+
* as `probe-refused` on evidence that belongs to a different rail. Parsing removes the class of
|
|
324
|
+
* mistake rather than one instance of it: the endpoint and the route mode must match too, so a
|
|
325
|
+
* violation on any other plane, endpoint, or route is not this probe's and is not attributed. */
|
|
326
|
+
function probedInstanceOf(subject, endpoint) {
|
|
327
|
+
const parsed = parseEpSubject(subject);
|
|
328
|
+
if (parsed === null || parsed.plane !== "request" || parsed.route !== "inst")
|
|
329
|
+
return undefined;
|
|
330
|
+
return parsed.endpoint === endpoint ? parsed.instanceId : undefined;
|
|
331
|
+
}
|
|
332
|
+
/** Watch a connection's status stream for the broker's own PERMISSION VIOLATIONS and attribute each
|
|
333
|
+
* to the instance whose rail it names.
|
|
334
|
+
*
|
|
335
|
+
* A refused publish is invisible where it matters. The violation is delivered on the CONNECTION,
|
|
336
|
+
* asynchronously, while the publish itself returns normally — so a liveness probe with no grant
|
|
337
|
+
* does not fail, it goes quiet, and quiet is exactly what a live-but-slow instance looks like. The
|
|
338
|
+
* whole probe would then read as `unknown`, the deadline would be paid in full, and the operator
|
|
339
|
+
* would be told the manager was slow when the truth was that this CLI never asked. So the
|
|
340
|
+
* violation is caught, attributed to the instance its subject names, reported on stderr once, and
|
|
341
|
+
* used to settle that probe immediately instead of letting it expire.
|
|
342
|
+
*
|
|
343
|
+
* ATTRIBUTION IS STRUCTURAL, not textual. The client types a permission violation as
|
|
344
|
+
* `PermissionViolationError` and carries the refused SUBJECT as a field, so nothing here parses
|
|
345
|
+
* the broker's prose: the subject goes through {@link probedInstanceOf} and yields one exact id or
|
|
346
|
+
* none. NAMED RESIDUAL: a connection error the client does not type as a permission violation is
|
|
347
|
+
* not attributed, and that probe expires into `unknown` at its budget — the behaviour that existed
|
|
348
|
+
* before this watch, which is slower and never wrong. */
|
|
349
|
+
function watchProbeRefusals(nc, what, report) {
|
|
350
|
+
const ids = new Set(what.ids);
|
|
351
|
+
const settle = new Map();
|
|
352
|
+
const already = new Set();
|
|
353
|
+
const pending = new Map();
|
|
354
|
+
const refused = (id) => {
|
|
355
|
+
if (already.has(id))
|
|
356
|
+
return Promise.resolve();
|
|
357
|
+
let p = pending.get(id);
|
|
358
|
+
if (!p) {
|
|
359
|
+
p = new Promise((resolve) => settle.set(id, resolve));
|
|
360
|
+
pending.set(id, p);
|
|
361
|
+
}
|
|
362
|
+
return p;
|
|
363
|
+
};
|
|
364
|
+
void (async () => {
|
|
365
|
+
try {
|
|
366
|
+
for await (const s of nc.status()) {
|
|
367
|
+
if (s.type !== "error")
|
|
368
|
+
continue;
|
|
369
|
+
const err = s.error;
|
|
370
|
+
if (!(err instanceof PermissionViolationError))
|
|
371
|
+
continue;
|
|
372
|
+
const id = probedInstanceOf(err.subject, what.endpoint);
|
|
373
|
+
if (id === undefined || !ids.has(id) || already.has(id))
|
|
374
|
+
continue;
|
|
375
|
+
already.add(id);
|
|
376
|
+
report(`! the broker refused this command's liveness probe for manager instance ${id}: ${err.message}`);
|
|
377
|
+
settle.get(id)?.();
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
catch {
|
|
381
|
+
/* the connection closed; the scatter is over and there is nothing left to attribute */
|
|
320
382
|
}
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
383
|
+
})();
|
|
384
|
+
return { refused, wasRefused: (id) => already.has(id) };
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* THE §13.5 LIVENESS HOOK this CLI hands to a scatter, and the record of what it established.
|
|
388
|
+
*
|
|
389
|
+
* It is built HERE and not in core because it is entirely a statement about this caller's
|
|
390
|
+
* CREDENTIAL. A probe publishes on an instance's own rail, and only the layer that minted the
|
|
391
|
+
* credential knows which instance rails it carries; core cannot know, and a core that guessed would
|
|
392
|
+
* publish requests the broker must refuse — invisibly, since a refused publish looks exactly like a
|
|
393
|
+
* slow instance from the caller's side.
|
|
394
|
+
*
|
|
395
|
+
* TWO RULES, and both are about not asking questions this credential cannot ask:
|
|
396
|
+
* - an id OUTSIDE the pinned set gets `unknown` WITHOUT PUBLISHING. The scatter re-freezes the
|
|
397
|
+
* class on its own connection, so it can name an instance that registered after the freeze this
|
|
398
|
+
* credential was minted against. That instance is NEW, not dead, and the right answer for it is
|
|
399
|
+
* the deadline — reached without sending a request that would be refused.
|
|
400
|
+
* - an id INSIDE the set that the broker refuses anyway settles IMMEDIATELY on the violation
|
|
401
|
+
* rather than expiring into `unknown` at the budget, and is reported by name.
|
|
402
|
+
*
|
|
403
|
+
* Only `gone` ever licenses anything downstream, so every mistake this can make is a slower and
|
|
404
|
+
* more truthful answer, never a faster wrong one.
|
|
405
|
+
*/
|
|
406
|
+
export function pinnedLivenessProbe(nc, opts) {
|
|
407
|
+
const deadlineMs = opts.probeDeadlineMs ?? PROBE_DEADLINE_MS;
|
|
408
|
+
const report = opts.report ?? ((line) => console.error(c.dim(line)));
|
|
409
|
+
const refusals = watchProbeRefusals(nc, { endpoint: opts.endpoint, ids: [...opts.pinned] }, report);
|
|
410
|
+
const verdicts = new Map();
|
|
411
|
+
return {
|
|
412
|
+
probeLiveness: async (instanceId) => {
|
|
413
|
+
if (!opts.pinned.has(instanceId)) {
|
|
414
|
+
verdicts.set(instanceId, "not-probed");
|
|
415
|
+
return "unknown";
|
|
416
|
+
}
|
|
417
|
+
const verdict = await Promise.race([
|
|
418
|
+
epProbeInstanceInterest(nc, opts.space, opts.endpoint, instanceId, opts.caller, { deadlineMs }),
|
|
419
|
+
refusals.refused(instanceId).then(() => "unknown"),
|
|
420
|
+
]);
|
|
421
|
+
verdicts.set(instanceId, verdict === "gone" ? "gone" : refusals.wasRefused(instanceId) ? "probe-refused" : "unknown");
|
|
422
|
+
return verdict;
|
|
423
|
+
},
|
|
424
|
+
// A slot with no recorded verdict was never handed to the hook at all, which is a different fact
|
|
425
|
+
// from "probed and silent" and prints as one.
|
|
426
|
+
livenessOf: (instanceId) => verdicts.get(instanceId) ?? (opts.pinned.has(instanceId) ? "unknown" : "not-probed"),
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
/** The tier a scatter re-mints at. Only ONE tier can scatter — the freeze read is a privileged row
|
|
430
|
+
* and the admin tier is denied it deliberately — so this is a constant rather than a parameter, and
|
|
431
|
+
* it is named here so the re-mint below can never silently widen: it reproduces the credential the
|
|
432
|
+
* caller already resolved with, pinned, never a higher one. */
|
|
433
|
+
const SCATTER_PROFILE = "control-caller-privileged";
|
|
434
|
+
/** How long a single liveness probe waits for the broker's no-responders answer. It is NOT a tuning
|
|
435
|
+
* knob and cannot make the command wrong: the only verdict that changes anything is `gone`, and
|
|
436
|
+
* giving up early yields `unknown`, which leaves the full gather deadline standing exactly as it
|
|
437
|
+
* did before the probe existed. Sized to be generous against a busy broker while still expiring
|
|
438
|
+
* well inside the gather. */
|
|
439
|
+
const PROBE_DEADLINE_MS = 5_000;
|
|
440
|
+
/** The ep-rail CLASS SCATTER (P2 item 3, `cotal ps` default).
|
|
441
|
+
*
|
|
442
|
+
* TWO connections, because a connection's permissions are fixed at authentication and this command
|
|
443
|
+
* cannot know which instance rails it needs until it has read the registry:
|
|
444
|
+
*
|
|
445
|
+
* 0. FREEZE the live class from the records registry (the same §13.9 read the scatter itself
|
|
446
|
+
* does), then close. This yields the exact instance ids this invocation will address.
|
|
447
|
+
* 1. RE-MINT the one-shot instrument LOCALLY, pinned to exactly those ids, and run the
|
|
448
|
+
* unpinned {@link resolveService} + {@link scatterCommand} on it — now the §13.5 liveness probe
|
|
449
|
+
* can publish on each frozen instance's own rail and the gather can end as soon as every slot
|
|
450
|
+
* has either answered or been affirmed gone by the broker.
|
|
451
|
+
*
|
|
452
|
+
* THE COST IS THE MINT, NOT A ROUND TRIP. `mintCreds` is a local JWT signature against the space
|
|
453
|
+
* seed already in hand (measured at 22-45ms here); the extra connection is the only wire cost. The
|
|
454
|
+
* earlier attempt at this measured 3.2s because it re-ran the whole target resolve (registry read,
|
|
455
|
+
* preflight, stale-prune) to get a pinned credential, and shipped a regression to fix a hypothesis.
|
|
456
|
+
* This re-mints and nothing else.
|
|
457
|
+
*
|
|
458
|
+
* NO WILDCARD INSTANCE ROW is minted, which is the invariant the whole two-connection shape exists
|
|
459
|
+
* to preserve: the pin is a list of exact ids known before the mint, the same precondition `--on`
|
|
460
|
+
* satisfies with one id.
|
|
461
|
+
*
|
|
462
|
+
* WHERE THERE IS NO SEED THERE IS NO PROBE, and the deadline stands. A user-mode bearer and a raw
|
|
463
|
+
* off-registry cred cannot re-mint, so their frozen slots are `not-probed` and say so. This is not
|
|
464
|
+
* a silent degrade: it is the pre-existing behaviour, and the row prints which of the two it is.
|
|
465
|
+
*/
|
|
466
|
+
async function askManagerScatterEp(space, server, op, auth, spaceAuth, timeoutMs) {
|
|
467
|
+
const mapped = EP_COMMANDS[op];
|
|
468
|
+
if (!mapped)
|
|
469
|
+
return { ok: false, error: `unknown manager op "${op}" (no v0.4 command mapping)` };
|
|
470
|
+
if (mapped.targeted)
|
|
471
|
+
return { ok: false, error: `${op} is targeted and cannot be scattered across instances` };
|
|
472
|
+
// ---- connection 0: freeze the class. A registry read that fails here fails the command with the
|
|
473
|
+
// registry's own verdict (never the managers'), which `epRailFailure` already words.
|
|
474
|
+
let pinnedIds;
|
|
475
|
+
try {
|
|
476
|
+
pinnedIds = await withControlConnection(server, auth, async (nc) => {
|
|
477
|
+
// `checkAPI: false` for the same reason `scatterCommand` uses it: the freeze rides the scoped
|
|
478
|
+
// §13.9 records rows, never an account-level JetStream probe.
|
|
479
|
+
const jsm = await jetstreamManager(nc, { checkAPI: false });
|
|
480
|
+
return (await freezeExpectedSet(jsm, space, BASELINE_LIFECYCLE_ENDPOINT)).map((f) => f.instanceId);
|
|
481
|
+
});
|
|
325
482
|
}
|
|
326
483
|
catch (e) {
|
|
327
484
|
const { error } = epRailFailure(e);
|
|
328
485
|
return { ok: false, error: error ?? "error" };
|
|
329
486
|
}
|
|
330
|
-
|
|
331
|
-
|
|
487
|
+
// ---- the LOCAL pinned re-mint. An OPEN mesh has no credential system, so its bare connection can
|
|
488
|
+
// already publish anywhere and needs no mint to probe; an auth mesh with the space seed re-mints;
|
|
489
|
+
// anything else keeps the credential it arrived with and does not probe.
|
|
490
|
+
const openMesh = !auth.creds && !auth.bearer;
|
|
491
|
+
let probeAuth = auth;
|
|
492
|
+
let caller = auth.epCaller;
|
|
493
|
+
let probed = openMesh ? new Set(pinnedIds) : new Set();
|
|
494
|
+
if (spaceAuth && auth.creds) {
|
|
495
|
+
const identity = newIdentity();
|
|
496
|
+
const uid = mintLifecycleUid();
|
|
497
|
+
probeAuth = {
|
|
498
|
+
...auth,
|
|
499
|
+
creds: await mintCreds(spaceAuth, identity, SCATTER_PROFILE, {
|
|
500
|
+
lifecycleUid: uid,
|
|
501
|
+
endpointCapabilities: instancePinnedInstrumentCapabilities("privileged", pinnedIds),
|
|
502
|
+
}),
|
|
503
|
+
};
|
|
504
|
+
caller = { owner: DEV_OWNER, actor: identity.id, uid };
|
|
505
|
+
probed = new Set(pinnedIds);
|
|
506
|
+
}
|
|
507
|
+
// ---- connection 1: resolve + scatter, with the probe closure this credential can actually back.
|
|
508
|
+
try {
|
|
509
|
+
return await withControlConnection(server, probeAuth, async (nc) => {
|
|
510
|
+
const { probeLiveness, livenessOf } = pinnedLivenessProbe(nc, { space, endpoint: BASELINE_LIFECYCLE_ENDPOINT, caller, pinned: probed });
|
|
511
|
+
const service = await resolveService(nc, space, BASELINE_LIFECYCLE_ENDPOINT, caller, { deadlineMs: 10_000 });
|
|
512
|
+
const result = await scatterCommand(nc, space, service, mapped.command, undefined, {
|
|
513
|
+
deadlineMs: timeoutMs ?? 8_000,
|
|
514
|
+
reconcileDeadlineMs: 3_000,
|
|
515
|
+
probeLiveness,
|
|
516
|
+
});
|
|
517
|
+
const instances = [];
|
|
518
|
+
for (const [instanceId, ar] of result.replies) {
|
|
519
|
+
if (ar.reply.ok === true)
|
|
520
|
+
instances.push({ instanceId, reachable: true, data: ar.reply.data });
|
|
521
|
+
else
|
|
522
|
+
instances.push({ instanceId, reachable: true, error: ar.reply.error?.message ?? ar.reply.error?.code ?? "error" });
|
|
523
|
+
}
|
|
524
|
+
// A frozen instance that never answered is UNREACHABLE — surfaced, never silently dropped
|
|
525
|
+
// (pin 3) — and now carries WHY it is silent, as far as this command could establish it.
|
|
526
|
+
for (const instanceId of result.missing)
|
|
527
|
+
instances.push({ instanceId, reachable: false, liveness: livenessOf(instanceId) });
|
|
528
|
+
return { ok: true, instances };
|
|
529
|
+
});
|
|
530
|
+
}
|
|
531
|
+
catch (e) {
|
|
532
|
+
const { error } = epRailFailure(e);
|
|
533
|
+
return { ok: false, error: error ?? "error" };
|
|
332
534
|
}
|
|
333
535
|
}
|
|
334
536
|
/** SCATTER one untargeted read (`ps`) across EVERY registered manager instance in the space and merge
|
|
335
537
|
* the attributed results — the `cotal ps` default in a multi-manager space (P2 item 3). Auth shapes
|
|
336
538
|
* match {@link askManager}: a minted instrument or user bearer rides its own caller triple; a raw
|
|
337
539
|
* pre-1c `--creds` file is refused loud; an OPEN mesh synthesizes a DEV_OWNER triple and connects
|
|
338
|
-
* bare (the broker enforces nothing, so the records freeze reads freely).
|
|
339
|
-
|
|
540
|
+
* bare (the broker enforces nothing, so the records freeze reads freely). `spaceAuth` is the
|
|
541
|
+
* resolved mesh's trust material from {@link resolveControlTarget}: present ⇒ the scatter re-mints
|
|
542
|
+
* its instrument pinned to the frozen instance ids and can probe their liveness; absent ⇒ it runs
|
|
543
|
+
* exactly as it did before and every silent slot is reported `not-probed`. */
|
|
544
|
+
export async function scatterManager(space, server, op, auth = {}, spaceAuth, timeoutMs) {
|
|
340
545
|
if (auth.epCaller && (auth.creds || (auth.bearer && auth.sentinelCreds)))
|
|
341
|
-
return askManagerScatterEp(space, server, op, auth, timeoutMs);
|
|
546
|
+
return askManagerScatterEp(space, server, op, auth, spaceAuth, timeoutMs);
|
|
342
547
|
if (auth.creds)
|
|
343
548
|
return { ok: false, error: `this --creds file predates the v0.4 control surface (no endpoint-serve rows); re-mint it with a current cotal, or drive the manager from its project folder (\`cotal ps\`) which mints the instrument for you` };
|
|
344
549
|
const openAuth = { epCaller: { owner: DEV_OWNER, actor: newIdentity().id, uid: mintLifecycleUid() } };
|
|
345
|
-
return askManagerScatterEp(space, server, op, openAuth, timeoutMs);
|
|
550
|
+
return askManagerScatterEp(space, server, op, openAuth, spaceAuth, timeoutMs);
|
|
346
551
|
}
|
|
347
552
|
export function failIfNotOk(reply) {
|
|
348
553
|
if (!reply.ok) {
|
package/dist/lib/control.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control.js","sourceRoot":"","sources":["../../src/lib/control.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,SAAS,EACT,2BAA2B,EAC3B,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,qBAAqB,GAKtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EACL,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,sBAAsB,EAAE,aAAa,EAAE,iBAAiB,EAC9F,gBAAgB,EAAE,oBAAoB,EAAE,WAAW,GACpD,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAqB,MAAM,cAAc,CAAC;AAO1F;;;;;;;;sDAQsD;AACtD,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAsB,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC;AAE9G;;;;;wBAKwB;AACxB,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAmB,EACnB,OAAgB;AAChB;;;0FAG0F;AAC1F,UAAmB;IAEnB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK;QAC3B,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,aAAa,EAAE;QAC5F,CAAC,CAAC,KAAK,CAAC;IACV,uFAAuF;IACvF,gGAAgG;IAChG,+FAA+F;IAC/F,+FAA+F;IAC/F,8FAA8F;IAC9F,iBAAiB;IACjB,EAAE;IACF,4FAA4F;IAC5F,2FAA2F;IAC3F,iFAAiF;IACjF,EAAE;IACF,+FAA+F;IAC/F,8FAA8F;IAC9F,8FAA8F;IAC9F,gGAAgG;IAChG,4FAA4F;IAC5F,6DAA6D;IAC7D,EAAE;IACF,8EAA8E;IAC9E,gEAAgE;IAChE,0FAA0F;IAC1F,wFAAwF;IACxF,2FAA2F;IAC3F,6FAA6F;IAC7F,4FAA4F;IAC5F,iFAAiF;IACjF,iEAAiE;IACjE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACrB,uFAAuF;QACvF,sFAAsF;QACtF,uFAAuF;QACvF,0FAA0F;QAC1F,IAAI,CAAC,SAAS,CAAC,KAAK;YAAE,MAAM,gBAAgB,EAAE,CAAC;QAC/C,IAAI,IAAoC,CAAC;QACzC,IAAI,CAAC;YACH,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;QACrG,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,8FAA8F;YAC9F,sFAAsF;YACtF,6FAA6F;YAC7F,8FAA8F;YAC9F,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,MAAM,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,MAAM,wBAAwB,CAAC,SAAS,CAAC,CAAC;YACvD,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;aACvF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,mFAAmF;IACnF,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrH,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;KACvF,CAAC;AACJ,CAAC;AAED;;;;;;8FAM8F;AAC9F,MAAM,WAAW,GAA4D;IAC3E,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;IAC3B,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC5C,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC7C,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;IAC9B,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IACrB,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC7B,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC7B,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;IAC3B,eAAe,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;IAChD,YAAY,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE;IAC1C,cAAc,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE;IAC9C,mBAAmB,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE;IACxD,kBAAkB,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE;IACtD,iBAAiB,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE;CACrD,CAAC;AAOF;;;;;qBAKqB;AACrB,KAAK,UAAU,YAAY,CACzB,KAAa,EACb,MAAc,EACd,EAAU,EACV,IAAyC,EACzC,IAAiB,EACjB,KAAmB,EACnB,SAAkB,EAClB,GAAgB;IAEhB,MAAM,UAAU,GAAG,GAAG,EAAE,UAAU,CAAC;IACnC,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,CAAC;IACjG,MAAM,MAAM,GAAG,IAAI,CAAC,QAAS,CAAC;IAC9B,gGAAgG;IAChG,4FAA4F;IAC5F,4DAA4D;IAC5D,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC;QACvB,OAAO,EAAE,MAAM;QACf,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QACpN,oBAAoB,EAAE,CAAC;KACxB,CAAC,CAAC;IACH,IAAI,CAAC;QACH,iGAAiG;QACjG,8FAA8F;QAC9F,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAClK,IAAI,MAAgC,CAAC;QACrC,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,kBAAkB,EAAE,CAAC;YAChE,0FAA0F;YAC1F,0FAA0F;YAC1F,2FAA2F;YAC3F,6FAA6F;YAC7F,2FAA2F;YAC3F,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;YAClG,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI;gBACxB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,gBAAgB,EAAE,EAAE,CAAC;YACzI,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAA4C,CAAC;YACpE,6FAA6F;YAC7F,2FAA2F;YAC3F,6FAA6F;YAC7F,2EAA2E;YAC3E,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1G,8FAA8F;YAC9F,8FAA8F;YAC9F,4FAA4F;YAC5F,yFAAyF;YACzF,4FAA4F;YAC5F,qFAAqF;YACrF,oFAAoF;YACpF,MAAM,IAAI,GAAG,KAAK,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1E,MAAM,GAAG;gBACP,IAAI;gBACJ,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,MAAM;gBACb,YAAY,EAAE,GAAG,CAAC,YAAY;aAC/B,CAAC;YACF,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;YAC/C,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACzD,CAAC;QACD,MAAM,UAAU,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,IAAI,MAAM,EAAE,CAAC;QACtF,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC7F,2FAA2F;QAC3F,iGAAiG;QACjG,2EAA2E;QAC3E,MAAM,CAAC,GAAI,qBAA2C,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;YAC7E,CAAC,CAAC,MAAM,mBAAmB,CAAC,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,CAAC;YAClH,CAAC,CAAC,MAAM,MAAM,EAAE,CAAC;QACnB,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,OAAO,EAAE,CAAC;QAC/G,iGAAiG;QACjG,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,KAAK,CAAC,IAA8B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QAC3G,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC/D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAkBD;;;;;4EAK4E;AAC5E,MAAM,UAAU,gBAAgB,CAAC,EAAsB,EAAE,IAAY;IACnE,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,sFAAsF,IAAI,4DAA4D,CAAC,CAAC,CAAC;QAC7K,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;;;;;;;;;;;yDAiByD;AACzD,MAAM,UAAU,aAAa,CAAC,CAAU,EAAE,GAAgB;IACxD,MAAM,UAAU,GAAG,GAAG,EAAE,UAAU,CAAC;IACnC,IAAI,CAAC,CAAC,CAAC,YAAY,eAAe,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAChI,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IACzC,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI;YAC3B,KAAK,EAAE,UAAU,KAAK,SAAS;gBAC7B,CAAC,CAAC,oBAAoB,UAAU,oBAAoB,MAAM,GAAG;gBAC7D,CAAC,CAAC,yCAAyC,MAAM,GAAG;SACvD,CAAC;IACJ,CAAC;IACD,IAAI,kBAAkB,CAAC,CAAC,CAAC;QACvB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,iLAAiL,MAAM,GAAG,EAAE,CAAC;IAC7O,8FAA8F;IAC9F,iGAAiG;IACjG,gGAAgG;IAChG,iGAAiG;IACjG,gGAAgG;IAChG,6CAA6C;IAC7C,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,KAAK,qBAAqB,IAAI,mBAAmB,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,CAAC;IAClI,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,sGAAsG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;AAC5L,CAAC;AAED;;;;;;;;;4DAS4D;AAC5D,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAa,EACb,MAAc,EACd,EAAU,EACV,IAA8B,EAC9B,OAAoB,EAAE,EACtB,QAAsB,OAAO,EAC7B,SAAkB,EAClB,GAAgB;IAEhB,yFAAyF;IACzF,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;QACtE,OAAO,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAC5E,iGAAiG;IACjG,wFAAwF;IACxF,IAAI,IAAI,CAAC,KAAK;QACZ,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,8NAA8N,EAAE,CAAC;IAC9P,8FAA8F;IAC9F,2FAA2F;IAC3F,MAAM,QAAQ,GAAgB,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;IACnH,OAAO,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;AAChF,CAAC;AAaD;;;;qGAIqG;AACrG,KAAK,UAAU,mBAAmB,CAChC,KAAa,EACb,MAAc,EACd,EAAU,EACV,IAAiB,EACjB,SAAkB;IAElB,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,CAAC;IACjG,IAAI,MAAM,CAAC,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,uDAAuD,EAAE,CAAC;IAC/G,MAAM,MAAM,GAAG,IAAI,CAAC,QAAS,CAAC;IAC9B,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC;QACvB,OAAO,EAAE,MAAM;QACf,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QACpN,oBAAoB,EAAE,CAAC;KACxB,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7G,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE;YACjF,UAAU,EAAE,SAAS,IAAI,KAAK;YAC9B,mBAAmB,EAAE,KAAK;SAC3B,CAAC,CAAC;QACH,MAAM,SAAS,GAA2B,EAAE,CAAC;QAC7C,KAAK,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9C,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI;gBAAE,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;;gBAC1F,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;QAC1H,CAAC;QACD,mGAAmG;QACnG,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,OAAO;YAAE,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1F,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACjC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACnC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,OAAO,EAAE,CAAC;IAChD,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED;;;;8EAI8E;AAC9E,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,MAAc,EACd,EAAU,EACV,OAAoB,EAAE,EACtB,SAAkB;IAElB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;QACtE,OAAO,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACjE,IAAI,IAAI,CAAC,KAAK;QACZ,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,+MAA+M,EAAE,CAAC;IAC/O,MAAM,QAAQ,GAAgB,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;IACnH,OAAO,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAmB;IAC7C,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;QACjC,6FAA6F;QAC7F,+EAA+E;QAC/E,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,IAAI;YAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"control.js","sourceRoot":"","sources":["../../src/lib/control.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,48 @@
|
|
|
1
|
-
import { type LivenessProbe } from "@cotal-ai/workspace";
|
|
1
|
+
import { type CommandReader, type LivenessProbe } from "@cotal-ai/workspace";
|
|
2
2
|
/** Exported so the delivery cutover preflight can NAME the pid it refused on: an error that says
|
|
3
3
|
* "cannot be attributed" without saying which pid is not actionable. */
|
|
4
4
|
export declare const MANAGER_PID_PATH: () => string;
|
|
5
|
-
/** The recorded manager's
|
|
6
|
-
* what made this dangerous. Both collapses are silent and both are wrong:
|
|
5
|
+
/** The recorded manager's state. THREE-VALUED liveness plus absent, because collapsing it to a
|
|
6
|
+
* boolean is what made this dangerous. Both collapses are silent and both are wrong:
|
|
7
7
|
* `!== "dead"` -> an `unknown` reports UP forever; no retry clears it and nothing starts.
|
|
8
8
|
* `=== "alive"` -> an `unknown` reports DOWN and a second manager launches onto a possibly-live one.
|
|
9
9
|
* `unknown` is REACHABLE on a real kernel, not just under a test shim: a Linux seccomp filter
|
|
10
10
|
* (`SECCOMP_RET_ERRNO`) or an LSM policy can return an arbitrary errno for `kill(pid, 0)` without
|
|
11
11
|
* executing it at all, and libuv preserves it. Proven with a live seccomp BPF filter, not by
|
|
12
|
-
* interposition. So the caller has to SEE the third state and refuse.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
*
|
|
16
|
-
*
|
|
12
|
+
* interposition. So the caller has to SEE the third state and refuse.
|
|
13
|
+
*
|
|
14
|
+
* `foreign` is the fifth: the recorded pid is ALIVE and is provably NOT a manager. A record
|
|
15
|
+
* outliving its process is the same class of defect one layer down from a service registration
|
|
16
|
+
* outliving its host, and it resolves the same way — the number is eventually reused by an
|
|
17
|
+
* unrelated process, and from `kill(pid, 0)` alone that reads as a healthy manager forever. */
|
|
18
|
+
export type ManagerRecordState = "alive" | "dead" | "unknown" | "absent" | "unattributable" | "foreign";
|
|
19
|
+
/** The recorded manager, with the evidence behind the verdict — callers that must EXPLAIN a refusal
|
|
20
|
+
* need the pid and the command line that earned it, and a bare state cannot carry them. */
|
|
21
|
+
export interface ManagerRecord {
|
|
22
|
+
state: ManagerRecordState;
|
|
23
|
+
/** The recorded pid, when the file held one. */
|
|
24
|
+
pid?: number;
|
|
25
|
+
/** The live process's command line, when it was readable (present on `alive` and `foreign`). */
|
|
26
|
+
command?: string;
|
|
27
|
+
}
|
|
28
|
+
/** Read + attribute the manager record in one place, so every caller decides on the same evidence.
|
|
29
|
+
*
|
|
30
|
+
* ATTRIBUTION MAY ONLY DOWNGRADE ON PROOF. A live pid is demoted to `foreign` when its command line
|
|
31
|
+
* was READ and does not name the manager daemon — never when the read failed, never on a platform
|
|
32
|
+
* that cannot look, never on a process that died during the read. The asymmetry is the safety
|
|
33
|
+
* argument, and it is the same one the liveness probe makes: absence of evidence must fail toward
|
|
34
|
+
* the old behaviour (trust the record), because the opposite error starts a second manager on top
|
|
35
|
+
* of a live one. */
|
|
36
|
+
export declare function managerRecordState(probe?: LivenessProbe, readCommand?: CommandReader): ManagerRecord;
|
|
37
|
+
/** {@link managerRecordState}'s verdict alone, for the callers that only branch on it. */
|
|
38
|
+
export declare function managerLiveness(probe?: LivenessProbe, readCommand?: CommandReader): ManagerRecordState;
|
|
39
|
+
/** One line describing what was found behind the record, for a caller that has to explain itself. */
|
|
40
|
+
export declare function describeManagerRecord(r: ManagerRecord): string;
|
|
41
|
+
/** True only if the manager is PROVABLY running. `unknown` is not up, and neither is `foreign` — a
|
|
42
|
+
* live process that is not a manager answers no control plane. Callers that would ACT on that
|
|
43
|
+
* answer must use {@link managerRecordState} instead: this boolean cannot express the difference
|
|
44
|
+
* between "not running", "cannot tell" and "someone else's process", and acting on the difference
|
|
45
|
+
* is the whole point. */
|
|
17
46
|
export declare function managerUp(): boolean;
|
|
18
47
|
/** True if the live manager carries a delivery-aware marker BOUND to its current pid (i.e. it's THIS
|
|
19
48
|
* build, non-hosting). Fail-closed: the marker stores the pid it was written for, and this requires it
|
|
@@ -48,7 +77,7 @@ export declare function startManagerDetached(o?: {
|
|
|
48
77
|
* says nobody is ANSWERING; it does not say the recorded pid is dead. Overwriting an unknown or
|
|
49
78
|
* unattributable record is the same defect as deleting it, reached through a different verb, which
|
|
50
79
|
* is the third time that shape has appeared in this change. Any future starter calls this first. */
|
|
51
|
-
export declare function assertManagerRecordReplaceable(probe?: LivenessProbe): void;
|
|
80
|
+
export declare function assertManagerRecordReplaceable(probe?: LivenessProbe, readCommand?: CommandReader): void;
|
|
52
81
|
export declare function ensureManager(o?: {
|
|
53
82
|
space?: string;
|
|
54
83
|
server?: string;
|
|
@@ -59,7 +88,7 @@ export declare function ensureManager(o?: {
|
|
|
59
88
|
resumeAttempt?: string;
|
|
60
89
|
resumeCommitToken?: string;
|
|
61
90
|
wsPort?: number;
|
|
62
|
-
}, probe?: LivenessProbe): {
|
|
91
|
+
}, probe?: LivenessProbe, readCommand?: CommandReader): {
|
|
63
92
|
running: boolean;
|
|
64
93
|
};
|
|
65
94
|
/** A signal, injectable for the same reason the probe is: `EPERM` from `kill` is producible only by
|
|
@@ -82,5 +111,5 @@ export type StopVerdict = "stopped" | "already-gone";
|
|
|
82
111
|
* A correct fix upstream reaching a latent destructive bug downstream is the worst shape available,
|
|
83
112
|
* so this refuses instead: records are removed only on proven death, never on a signal we could not
|
|
84
113
|
* send or a death we could not confirm. Found by review, with a kernel seccomp proof. */
|
|
85
|
-
export declare function stopManager(probe?: LivenessProbe, signal?: SignalFn | undefined): Promise<StopVerdict>;
|
|
114
|
+
export declare function stopManager(probe?: LivenessProbe, signal?: SignalFn | undefined, readCommand?: CommandReader): Promise<StopVerdict>;
|
|
86
115
|
//# 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":"AAMA,OAAO,
|
|
1
|
+
{"version":3,"file":"manager-proc.d.ts","sourceRoot":"","sources":["../../src/lib/manager-proc.ts"],"names":[],"mappings":"AAMA,OAAO,EAE2C,KAAK,aAAa,EAAE,KAAK,aAAa,EACvF,MAAM,qBAAqB,CAAC;AAE7B;yEACyE;AACzE,eAAO,MAAM,gBAAgB,QAAO,MAAoC,CAAC;AASzE;;;;;;;;;;;;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,CAAC,KAAK,GAAE,aAA6B,EAAE,WAAW,GAAE,aAAkC,GAAG,aAAa,CAgBvI;AAED,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,KAAK,GAAE,aAA6B,EAAE,WAAW,GAAE,aAAkC,GAAG,kBAAkB,CAEzI;AAED,qGAAqG;AACrG,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAK9D;AAED;;;;0BAI0B;AAC1B,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAID;;;;2CAI2C;AAC3C,wBAAgB,wBAAwB,IAAI,OAAO,CAOlD;AAED;;;;0FAI0F;AAC1F,wBAAgB,oBAAoB,CAClC,CAAC,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GACzL,MAAM,CA0CR;AAED;;;mBAGmB;AACnB;;;;;;qGAMqG;AACrG,wBAAgB,8BAA8B,CAAC,KAAK,GAAE,aAA6B,EAAE,WAAW,GAAE,aAAkC,GAAG,IAAI,CAwB1I;AAED,wBAAgB,aAAa,CAC3B,CAAC,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,EAC1L,KAAK,GAAE,aAA6B,EACpC,WAAW,GAAE,aAAkC,GAC9C;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAMtB;AAED;;8CAE8C;AAC9C,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;AAErE,uGAAuG;AACvG,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,cAAc,CAAC;AAErD;;iGAEiG;AAGjG;;;;;;;;;;0FAU0F;AAC1F,wBAAsB,WAAW,CAC/B,KAAK,GAAE,aAA6B,EACpC,MAAM,GAAE,QAAQ,GAAG,SAAqB,EACxC,WAAW,GAAE,aAAkC,GAC9C,OAAO,CAAC,WAAW,CAAC,CAmFtB"}
|
package/dist/lib/manager-proc.js
CHANGED
|
@@ -4,44 +4,65 @@ import { DEFAULT_SERVER } from "@cotal-ai/core";
|
|
|
4
4
|
import { selfArgv } from "./self-exec.js";
|
|
5
5
|
import { resolveSpace } from "./status.js";
|
|
6
6
|
import { cotalPath } from "./paths.js";
|
|
7
|
-
import { parsePid, probeLiveness } from "@cotal-ai/workspace";
|
|
7
|
+
import { commandIsCotalSupervisor, parsePid, probeLiveness, readProcessCommand, MANAGER_DELIVERY_AWARE_MARKER, MANAGER_PIDFILE, } from "@cotal-ai/workspace";
|
|
8
8
|
/** Exported so the delivery cutover preflight can NAME the pid it refused on: an error that says
|
|
9
9
|
* "cannot be attributed" without saying which pid is not actionable. */
|
|
10
|
-
export const MANAGER_PID_PATH = () => cotalPath(
|
|
10
|
+
export const MANAGER_PID_PATH = () => cotalPath(MANAGER_PIDFILE);
|
|
11
11
|
const PID_PATH = MANAGER_PID_PATH;
|
|
12
12
|
/** Sibling marker of `manager.pid`: written by THIS build's manager (which no longer hosts Plane-3 —
|
|
13
13
|
* the server-side delivery daemon does). Its presence beside a live `manager.pid` proves the manager is
|
|
14
14
|
* "delivery-aware" / non-hosting. A live `manager.pid` WITHOUT this marker is an OLD (pre-delivery-daemon)
|
|
15
15
|
* manager that still calls `startPlane3` — the delivery preflight stops it before the daemon binds, so an
|
|
16
16
|
* old hosting manager never double-binds `fanout`/`reader` against the new daemon. */
|
|
17
|
-
const DELIVERY_AWARE_MARKER = () => cotalPath(
|
|
18
|
-
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
export function
|
|
17
|
+
const DELIVERY_AWARE_MARKER = () => cotalPath(MANAGER_DELIVERY_AWARE_MARKER);
|
|
18
|
+
/** Read + attribute the manager record in one place, so every caller decides on the same evidence.
|
|
19
|
+
*
|
|
20
|
+
* ATTRIBUTION MAY ONLY DOWNGRADE ON PROOF. A live pid is demoted to `foreign` when its command line
|
|
21
|
+
* was READ and does not name the manager daemon — never when the read failed, never on a platform
|
|
22
|
+
* that cannot look, never on a process that died during the read. The asymmetry is the safety
|
|
23
|
+
* argument, and it is the same one the liveness probe makes: absence of evidence must fail toward
|
|
24
|
+
* the old behaviour (trust the record), because the opposite error starts a second manager on top
|
|
25
|
+
* of a live one. */
|
|
26
|
+
export function managerRecordState(probe = probeLiveness, readCommand = readProcessCommand) {
|
|
27
27
|
const p = PID_PATH();
|
|
28
28
|
if (!existsSync(p))
|
|
29
|
-
return "absent";
|
|
29
|
+
return { state: "absent" };
|
|
30
30
|
const raw = readFileSync(p, "utf8").trim();
|
|
31
31
|
if (raw === "")
|
|
32
|
-
return "absent"; // a pre-protocol husk: nothing is behind it
|
|
32
|
+
return { state: "absent" }; // a pre-protocol husk: nothing is behind it
|
|
33
33
|
const pid = parsePid(raw);
|
|
34
34
|
// NOT `absent`. Folding non-empty corrupt content into "no manager recorded" is what let the
|
|
35
35
|
// ensure paths OVERWRITE it and launch a replacement, which is the same defect as deleting it:
|
|
36
36
|
// that record may front a live process nobody can identify. `absent` means no pidfile (or an
|
|
37
37
|
// empty husk); corrupt content is its own state and every action path must refuse on it.
|
|
38
38
|
if (pid === undefined)
|
|
39
|
-
return "unattributable";
|
|
40
|
-
|
|
39
|
+
return { state: "unattributable" };
|
|
40
|
+
const liveness = probe(pid);
|
|
41
|
+
if (liveness !== "alive")
|
|
42
|
+
return { state: liveness, pid };
|
|
43
|
+
const cmd = readCommand(pid);
|
|
44
|
+
if (cmd.kind !== "command")
|
|
45
|
+
return { state: "alive", pid }; // gone/unreadable: established nothing
|
|
46
|
+
return { state: commandIsCotalSupervisor(cmd.command) ? "alive" : "foreign", pid, command: cmd.command };
|
|
47
|
+
}
|
|
48
|
+
/** {@link managerRecordState}'s verdict alone, for the callers that only branch on it. */
|
|
49
|
+
export function managerLiveness(probe = probeLiveness, readCommand = readProcessCommand) {
|
|
50
|
+
return managerRecordState(probe, readCommand).state;
|
|
41
51
|
}
|
|
42
|
-
/**
|
|
43
|
-
|
|
44
|
-
|
|
52
|
+
/** One line describing what was found behind the record, for a caller that has to explain itself. */
|
|
53
|
+
export function describeManagerRecord(r) {
|
|
54
|
+
if (r.state === "absent")
|
|
55
|
+
return "no manager pid recorded";
|
|
56
|
+
if (r.state === "unattributable")
|
|
57
|
+
return `the manager pidfile holds content that is not a pid`;
|
|
58
|
+
const who = r.command !== undefined ? ` running \`${r.command}\`` : "";
|
|
59
|
+
return `recorded manager pid ${String(r.pid)} is ${r.state}${who}`;
|
|
60
|
+
}
|
|
61
|
+
/** True only if the manager is PROVABLY running. `unknown` is not up, and neither is `foreign` — a
|
|
62
|
+
* live process that is not a manager answers no control plane. Callers that would ACT on that
|
|
63
|
+
* answer must use {@link managerRecordState} instead: this boolean cannot express the difference
|
|
64
|
+
* between "not running", "cannot tell" and "someone else's process", and acting on the difference
|
|
65
|
+
* is the whole point. */
|
|
45
66
|
export function managerUp() {
|
|
46
67
|
return managerLiveness() === "alive";
|
|
47
68
|
}
|
|
@@ -121,8 +142,16 @@ export function startManagerDetached(o = {}) {
|
|
|
121
142
|
* says nobody is ANSWERING; it does not say the recorded pid is dead. Overwriting an unknown or
|
|
122
143
|
* unattributable record is the same defect as deleting it, reached through a different verb, which
|
|
123
144
|
* is the third time that shape has appeared in this change. Any future starter calls this first. */
|
|
124
|
-
export function assertManagerRecordReplaceable(probe = probeLiveness) {
|
|
125
|
-
const
|
|
145
|
+
export function assertManagerRecordReplaceable(probe = probeLiveness, readCommand = readProcessCommand) {
|
|
146
|
+
const record = managerRecordState(probe, readCommand);
|
|
147
|
+
const state = record.state;
|
|
148
|
+
// A FOREIGN record is replaceable, and saying what was found is the point of allowing it. The pid
|
|
149
|
+
// is alive, so `probeLiveness` alone would have called this a healthy manager and every start
|
|
150
|
+
// path would have skipped forever; it is provably not a manager, so nothing is orphaned by
|
|
151
|
+
// writing over it. Announced rather than silent: a recycled pid means the record outlived its
|
|
152
|
+
// process, and an operator who never hears that will meet it again.
|
|
153
|
+
if (state === "foreign")
|
|
154
|
+
console.error(`! ${describeManagerRecord(record)} - that is not a manager, so the record is stale (its process exited and the pid was reused). Replacing it.`);
|
|
126
155
|
if (state === "unattributable")
|
|
127
156
|
throw new Error(`the manager pidfile at ${PID_PATH()} holds content that is not a pid (${JSON.stringify(readFileSync(PID_PATH(), "utf8").trim())}).\n` +
|
|
128
157
|
`Refusing to start a manager over it: that record may front a live process nobody can identify, and overwriting it would orphan the process while reporting a healthy control plane.\n` +
|
|
@@ -132,11 +161,11 @@ export function assertManagerRecordReplaceable(probe = probeLiveness) {
|
|
|
132
161
|
`Refusing to start a manager over it: it may still be running and bound to the control plane.\n` +
|
|
133
162
|
`NEXT: verify with \`ps -p <pid>\`. If it is gone, remove \`.cotal/manager.pid\` and re-run.`);
|
|
134
163
|
}
|
|
135
|
-
export function ensureManager(o = {}, probe = probeLiveness) {
|
|
136
|
-
const state = managerLiveness(probe);
|
|
164
|
+
export function ensureManager(o = {}, probe = probeLiveness, readCommand = readProcessCommand) {
|
|
165
|
+
const state = managerLiveness(probe, readCommand);
|
|
137
166
|
if (state === "alive")
|
|
138
167
|
return { running: true };
|
|
139
|
-
assertManagerRecordReplaceable(probe); // refuses on unknown / unattributable
|
|
168
|
+
assertManagerRecordReplaceable(probe, readCommand); // refuses on unknown / unattributable, reports foreign
|
|
140
169
|
startManagerDetached(o);
|
|
141
170
|
return { running: true };
|
|
142
171
|
}
|
|
@@ -155,7 +184,7 @@ export function ensureManager(o = {}, probe = probeLiveness) {
|
|
|
155
184
|
* A correct fix upstream reaching a latent destructive bug downstream is the worst shape available,
|
|
156
185
|
* so this refuses instead: records are removed only on proven death, never on a signal we could not
|
|
157
186
|
* send or a death we could not confirm. Found by review, with a kernel seccomp proof. */
|
|
158
|
-
export async function stopManager(probe = probeLiveness, signal = undefined) {
|
|
187
|
+
export async function stopManager(probe = probeLiveness, signal = undefined, readCommand = readProcessCommand) {
|
|
159
188
|
const send = signal ?? ((pid, sig) => process.kill(pid, sig));
|
|
160
189
|
const p = PID_PATH();
|
|
161
190
|
const marker = DELIVERY_AWARE_MARKER();
|
|
@@ -189,6 +218,19 @@ export async function stopManager(probe = probeLiveness, signal = undefined) {
|
|
|
189
218
|
clear();
|
|
190
219
|
return "already-gone";
|
|
191
220
|
}
|
|
221
|
+
// A LIVE pid that is provably NOT a manager is never signalled. The record outlived its process
|
|
222
|
+
// and the number was reused, so SIGTERM here would kill an unrelated process — the exact
|
|
223
|
+
// destructive shape the rest of this function refuses on doubt, reached through certainty. The
|
|
224
|
+
// record is removed because it is provably stale, and what was found is printed: an operator who
|
|
225
|
+
// is told only "already gone" will not know their pidfile was pointing at a stranger.
|
|
226
|
+
if (before === "alive") {
|
|
227
|
+
const cmd = readCommand(pid);
|
|
228
|
+
if (cmd.kind === "command" && !commandIsCotalSupervisor(cmd.command)) {
|
|
229
|
+
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.`);
|
|
230
|
+
clear();
|
|
231
|
+
return "already-gone";
|
|
232
|
+
}
|
|
233
|
+
}
|
|
192
234
|
if (before === "unknown")
|
|
193
235
|
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` +
|
|
194
236
|
`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` +
|
|
@@ -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,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"manager-proc.js","sourceRoot":"","sources":["../../src/lib/manager-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.20.
|
|
4
|
+
"version": "0.20.1",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"yaml": "^2.9.0",
|
|
29
29
|
"zod": "^4.4.3",
|
|
30
30
|
"ws": "^8.21.0",
|
|
31
|
-
"@cotal-ai/core": "0.20.
|
|
32
|
-
"@cotal-ai/workspace": "0.20.
|
|
31
|
+
"@cotal-ai/core": "0.20.1",
|
|
32
|
+
"@cotal-ai/workspace": "0.20.1"
|
|
33
33
|
},
|
|
34
34
|
"optionalDependencies": {
|
|
35
35
|
"@eplightning/nats-server-darwin-arm64": "^2.14.0",
|