@cotal-ai/manager 0.9.0 → 0.10.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.d.ts +0 -25
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +24 -282
- package/dist/commands.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/manager.d.ts +79 -2
- package/dist/manager.d.ts.map +1 -1
- package/dist/manager.js +260 -17
- package/dist/manager.js.map +1 -1
- package/package.json +7 -5
- package/dist/attach-client.d.ts +0 -7
- package/dist/attach-client.d.ts.map +0 -1
- package/dist/attach-client.js +0 -172
- package/dist/attach-client.js.map +0 -1
package/dist/commands.d.ts
CHANGED
|
@@ -1,27 +1,2 @@
|
|
|
1
|
-
import { type Profile } from "@cotal-ai/core";
|
|
2
|
-
type Values = Record<string, string | undefined>;
|
|
3
|
-
/** Resolve which running mesh a control command (`ps`/`start`/`stop`/`attach`) targets, with the
|
|
4
|
-
* same precedence + preflight as the rest of the CLI ({@link resolveMeshTarget} / `connectOrExit`):
|
|
5
|
-
* 1. explicit `--creds` → a raw off-registry connection (plain reachability, no prune). Space
|
|
6
|
-
* defaults to this folder's auth-space via {@link spaceFor} (a deliberate manager-command
|
|
7
|
-
* choice — more correct than `DEFAULT_SPACE` for a non-default-space project, and what these
|
|
8
|
-
* commands did before — NOT `connectOrExit`'s `DEFAULT_SPACE`).
|
|
9
|
-
* 2. `--server` + an UNregistered `--space` → a raw OPEN off-registry connection, no creds (the
|
|
10
|
-
* same escape hatch `connectOrExit` has; plain reachability, no prune).
|
|
11
|
-
* 3. otherwise the registry/`current` resolver, with the same stale-prune + friendly preflight —
|
|
12
|
-
* so `cotal ps --space <name>` reaches that mesh's RECORDED broker instead of silently assuming
|
|
13
|
-
* `DEFAULT_SERVER` (:4222); `--server` overrides. The tier-scoped caller cred (`profile`) is minted
|
|
14
|
-
* from the RESOLVED mesh's own recorded root (so `--space other` loads other's auth, guarded by
|
|
15
|
-
* `targetFromEntry`'s `auth.space === m.space` check), or none for an open mesh.
|
|
16
|
-
* Shares `@cotal-ai/workspace`'s `preflightTarget`/`pruneStaleMeshes` with the CLI, so a dead/mismatched entry gets
|
|
17
|
-
* the same one-sentence message + stale-prune the rest of the CLI gives — not a raw NATS trace. The
|
|
18
|
-
* pre-resolution sweep runs only for bare / `--server`-only resolution; an explicit `--space` is
|
|
19
|
-
* resolved + preflighted directly (so a `--server` override can recover a dead-recorded mesh).
|
|
20
|
-
* `ask()` can therefore trust the target is reachable + auth-valid. */
|
|
21
|
-
export declare function resolveManagerTarget(v: Values, profile: Profile): Promise<{
|
|
22
|
-
space: string;
|
|
23
|
-
server: string;
|
|
24
|
-
creds?: string;
|
|
25
|
-
}>;
|
|
26
1
|
export {};
|
|
27
2
|
//# sourceMappingURL=commands.d.ts.map
|
package/dist/commands.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":""}
|
package/dist/commands.js
CHANGED
|
@@ -1,266 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
import { CotalEndpoint, isReachable, DEFAULT_SERVER, DEFAULT_SPACE, mintCreds, newIdentity, registry, probeConnect, CONTROL_PRIVILEGED, CONTROL_ADMIN, } from "@cotal-ai/core";
|
|
5
|
-
import { authDir, findCotalRoot, loadSpaceAuth, findMesh, isWorkspaceTargetError, resolveMeshTarget, preflightTarget, pruneStaleMeshes, removeMesh, renderWorkspaceError, } from "@cotal-ai/workspace";
|
|
1
|
+
import { isReachable, DEFAULT_SERVER, DEFAULT_SPACE, registry, } from "@cotal-ai/core";
|
|
2
|
+
import { authDir, findCotalRoot, loadSpaceAuth } from "@cotal-ai/workspace";
|
|
6
3
|
import { Manager } from "./manager.js";
|
|
7
4
|
import { loadRoster } from "./roster.js";
|
|
8
5
|
import { loadLaunchSpec, materializePersona, launchAgentToStartOpts } from "./launch.js";
|
|
9
6
|
import {} from "./runtime/index.js";
|
|
10
|
-
import { attachClient } from "./attach-client.js";
|
|
11
7
|
import { c } from "./ui.js";
|
|
12
8
|
/** The space to operate on: explicit `--space`, else this folder's `.cotal/auth` space, else the
|
|
13
9
|
* default — so a manually-run manager matches the folder's mesh instead of assuming the default. */
|
|
14
10
|
function spaceFor(v) {
|
|
15
11
|
return v.space ?? loadSpaceAuth(authDir(findCotalRoot()))?.space ?? DEFAULT_SPACE;
|
|
16
12
|
}
|
|
17
|
-
/** Raw off-registry reachability — one plain sentence, never a registry/stale-entry message and
|
|
18
|
-
* never a prune. Used by the `--creds` and `--server`+unregistered-`--space` escape hatches, which
|
|
19
|
-
* connect to a broker the operator named, not the registry. The manager's copy of the CLI's
|
|
20
|
-
* `reachableOrExit` (an implementation can't import another); the wording lives in `@cotal-ai/workspace`. */
|
|
21
|
-
async function reachableOrExit(server, auth = {}) {
|
|
22
|
-
const probe = await probeConnect(server, auth);
|
|
23
|
-
if (probe.ok)
|
|
24
|
-
return;
|
|
25
|
-
console.error(c.red(renderWorkspaceError({ kind: "reachable", reason: probe.reason, server })));
|
|
26
|
-
process.exit(1);
|
|
27
|
-
}
|
|
28
|
-
/** Confirm a registry-resolved mesh is up + accepts these creds — replacing the raw NATS auth trace
|
|
29
|
-
* with one sentence and pruning a stale entry. The manager's copy of the CLI's `preflightOrExit`:
|
|
30
|
-
* the probe/classify/render/prune-decision live in `@cotal-ai/workspace` (`preflightTarget`); this owns
|
|
31
|
-
* the I/O — it acts on the prune decision, colours, and exits. */
|
|
32
|
-
async function preflightOrExit(target, probeCreds) {
|
|
33
|
-
const r = await preflightTarget(target, probeCreds);
|
|
34
|
-
if (r.ok)
|
|
35
|
-
return;
|
|
36
|
-
if (r.prune)
|
|
37
|
-
removeMesh(target.space);
|
|
38
|
-
console.error(c.red(renderWorkspaceError({ kind: "preflight", failure: r.kind, target, pruned: r.prune })));
|
|
39
|
-
process.exit(1);
|
|
40
|
-
}
|
|
41
|
-
/** Resolve which running mesh a control command (`ps`/`start`/`stop`/`attach`) targets, with the
|
|
42
|
-
* same precedence + preflight as the rest of the CLI ({@link resolveMeshTarget} / `connectOrExit`):
|
|
43
|
-
* 1. explicit `--creds` → a raw off-registry connection (plain reachability, no prune). Space
|
|
44
|
-
* defaults to this folder's auth-space via {@link spaceFor} (a deliberate manager-command
|
|
45
|
-
* choice — more correct than `DEFAULT_SPACE` for a non-default-space project, and what these
|
|
46
|
-
* commands did before — NOT `connectOrExit`'s `DEFAULT_SPACE`).
|
|
47
|
-
* 2. `--server` + an UNregistered `--space` → a raw OPEN off-registry connection, no creds (the
|
|
48
|
-
* same escape hatch `connectOrExit` has; plain reachability, no prune).
|
|
49
|
-
* 3. otherwise the registry/`current` resolver, with the same stale-prune + friendly preflight —
|
|
50
|
-
* so `cotal ps --space <name>` reaches that mesh's RECORDED broker instead of silently assuming
|
|
51
|
-
* `DEFAULT_SERVER` (:4222); `--server` overrides. The tier-scoped caller cred (`profile`) is minted
|
|
52
|
-
* from the RESOLVED mesh's own recorded root (so `--space other` loads other's auth, guarded by
|
|
53
|
-
* `targetFromEntry`'s `auth.space === m.space` check), or none for an open mesh.
|
|
54
|
-
* Shares `@cotal-ai/workspace`'s `preflightTarget`/`pruneStaleMeshes` with the CLI, so a dead/mismatched entry gets
|
|
55
|
-
* the same one-sentence message + stale-prune the rest of the CLI gives — not a raw NATS trace. The
|
|
56
|
-
* pre-resolution sweep runs only for bare / `--server`-only resolution; an explicit `--space` is
|
|
57
|
-
* resolved + preflighted directly (so a `--server` override can recover a dead-recorded mesh).
|
|
58
|
-
* `ask()` can therefore trust the target is reachable + auth-valid. */
|
|
59
|
-
export async function resolveManagerTarget(v, profile) {
|
|
60
|
-
if (v.creds) {
|
|
61
|
-
const server = v.server ?? DEFAULT_SERVER;
|
|
62
|
-
const creds = readFileSync(v.creds, "utf8");
|
|
63
|
-
await reachableOrExit(server, { creds });
|
|
64
|
-
return { space: spaceFor(v), server, creds };
|
|
65
|
-
}
|
|
66
|
-
// A raw OPEN off-registry mesh: explicit `--server` + a `--space` that isn't registered. Naming
|
|
67
|
-
// both is as deliberate as `--creds`, but an open broker has no creds to pass — connect bare,
|
|
68
|
-
// off-registry (no registry lookup, no prune). Mirrors `connectOrExit`'s same-shaped escape hatch;
|
|
69
|
-
// a registered `--space` still goes through the resolver below (which honors `--server` as override).
|
|
70
|
-
if (v.server && v.space && !findMesh(v.space)) {
|
|
71
|
-
await reachableOrExit(v.server, {});
|
|
72
|
-
return { space: v.space, server: v.server, creds: undefined };
|
|
73
|
-
}
|
|
74
|
-
// Sweep dead entries before resolving ONLY when we must CHOOSE one (bare / `--server`-only). An
|
|
75
|
-
// explicit `--space` names its target, so pre-pruning would erase a dead-recorded mesh that the
|
|
76
|
-
// operator is recovering with a live `--server` override — resolve it and let preflight verify +
|
|
77
|
-
// prune-on-dead (with the friendly message), honoring the override. Without `--space`, a dead
|
|
78
|
-
// entry must not be offered, so the sweep stays.
|
|
79
|
-
if (!v.space)
|
|
80
|
-
await pruneStaleMeshes();
|
|
81
|
-
let target;
|
|
82
|
-
try {
|
|
83
|
-
target = resolveMeshTarget(process.cwd(), { server: v.server, space: v.space });
|
|
84
|
-
}
|
|
85
|
-
catch (e) {
|
|
86
|
-
if (isWorkspaceTargetError(e)) {
|
|
87
|
-
console.error(c.red(renderWorkspaceError({ kind: "target", error: e })));
|
|
88
|
-
process.exit(1);
|
|
89
|
-
}
|
|
90
|
-
throw e;
|
|
91
|
-
}
|
|
92
|
-
const creds = target.auth ? await mintCreds(target.auth, newIdentity(), profile) : undefined;
|
|
93
|
-
await preflightOrExit(target, creds);
|
|
94
|
-
return { space: target.space, server: target.server, creds };
|
|
95
|
-
}
|
|
96
|
-
function parse(argv) {
|
|
97
|
-
const { values, positionals } = parseArgs({
|
|
98
|
-
args: argv,
|
|
99
|
-
allowPositionals: true,
|
|
100
|
-
options: {
|
|
101
|
-
space: { type: "string" },
|
|
102
|
-
server: { type: "string" },
|
|
103
|
-
name: { type: "string" },
|
|
104
|
-
role: { type: "string" },
|
|
105
|
-
agent: { type: "string" },
|
|
106
|
-
config: { type: "string" },
|
|
107
|
-
model: { type: "string" }, // start: model override, wins over the agent file's `model:`
|
|
108
|
-
resume: { type: "string" }, // start: fork an existing session id into the mesh (host-local; claude only)
|
|
109
|
-
roster: { type: "string" },
|
|
110
|
-
creds: { type: "string" },
|
|
111
|
-
runtime: { type: "string" }, // supervise: force pty | tmux | cmux (default pty)
|
|
112
|
-
"console-port": { type: "string" },
|
|
113
|
-
drive: { type: "boolean" },
|
|
114
|
-
transcript: { type: "boolean" },
|
|
115
|
-
"no-transcript": { type: "boolean" },
|
|
116
|
-
spawn: { type: "string" }, // comma-separated agent names to pre-spawn at startup
|
|
117
|
-
launch: { type: "string" }, // supervise: a resolved mesh-manifest launch spec (cotal up -f / spawn -f)
|
|
118
|
-
cwd: { type: "string" }, // working directory to root the spawned agent at
|
|
119
|
-
},
|
|
120
|
-
});
|
|
121
|
-
// These commands are flags-only — reject stray positionals instead of silently ignoring them
|
|
122
|
-
// (e.g. `cotal supervise up`, fat-fingering `cotal up`).
|
|
123
|
-
if (positionals.length) {
|
|
124
|
-
const x = positionals[0];
|
|
125
|
-
const hint = x === "up" ? " — did you mean `cotal up`?" : x === "go" ? " — did you mean `cotal go`?" : "";
|
|
126
|
-
console.error(c.red(`✗ unexpected argument: ${x}${hint}`));
|
|
127
|
-
process.exit(1);
|
|
128
|
-
}
|
|
129
|
-
return values;
|
|
130
|
-
}
|
|
131
|
-
/** Connect a short-lived client with the resolved creds, send one control request to the manager,
|
|
132
|
-
* disconnect. The target is already reachability- + auth-preflighted by {@link resolveManagerTarget}
|
|
133
|
-
* (which prints the friendly message + prunes on failure), so this connects straight through. `tier`
|
|
134
|
-
* picks the control subject: privileged for start/ps; admin for the operator's cross-agent ops
|
|
135
|
-
* (stop/attach/purge), which the manager refuses on the privileged subject for a non-owner. `creds`
|
|
136
|
-
* is the tier-scoped caller cred resolved by {@link resolveManagerTarget} (`control-caller-privileged`
|
|
137
|
-
* for start/ps, `control-caller-admin` for stop/attach — each holds ONLY its own tier's pub grant, so
|
|
138
|
-
* `tier` here matches the cred the caller minted), or undefined on an open mesh. */
|
|
139
|
-
async function ask(space, server, op, args, creds, tier = CONTROL_PRIVILEGED) {
|
|
140
|
-
const ep = new CotalEndpoint({
|
|
141
|
-
space,
|
|
142
|
-
servers: server,
|
|
143
|
-
creds,
|
|
144
|
-
channels: [],
|
|
145
|
-
consume: false, // request/reply only — binds no consumers (and under auth has no pre-created DM durable)
|
|
146
|
-
registerPresence: false,
|
|
147
|
-
watchPresence: false,
|
|
148
|
-
card: { name: "cli", kind: "endpoint" },
|
|
149
|
-
});
|
|
150
|
-
ep.on("error", (e) => console.error(c.red("! " + e.message)));
|
|
151
|
-
await ep.start();
|
|
152
|
-
try {
|
|
153
|
-
return await ep.requestControl(tier, { op, args });
|
|
154
|
-
}
|
|
155
|
-
catch (e) {
|
|
156
|
-
return { ok: false, error: `no manager reachable (${e.message})` };
|
|
157
|
-
}
|
|
158
|
-
finally {
|
|
159
|
-
await ep.stop();
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
function failIfNotOk(reply) {
|
|
163
|
-
if (!reply.ok) {
|
|
164
|
-
console.error(c.red(`✗ ${reply.error ?? "error"}`));
|
|
165
|
-
process.exit(1);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
async function start(argv) {
|
|
169
|
-
const v = parse(argv);
|
|
170
|
-
if (!v.name) {
|
|
171
|
-
console.error(c.red("--name is required"));
|
|
172
|
-
process.exit(1);
|
|
173
|
-
}
|
|
174
|
-
// `--resume ""` asked to resume but named no session — fail loud, don't silently start fresh.
|
|
175
|
-
if (v.resume !== undefined && !v.resume.trim()) {
|
|
176
|
-
console.error(c.red("--resume needs a session id (got an empty value)"));
|
|
177
|
-
process.exit(1);
|
|
178
|
-
}
|
|
179
|
-
const t = await resolveManagerTarget(v, "control-caller-privileged");
|
|
180
|
-
const reply = await ask(t.space, t.server, "start", {
|
|
181
|
-
name: v.name,
|
|
182
|
-
role: v.role,
|
|
183
|
-
agent: v.agent,
|
|
184
|
-
config: v.config,
|
|
185
|
-
model: v.model,
|
|
186
|
-
resume: v.resume, // fork an existing session into the mesh (host-local id; caveated for detached start — see docs)
|
|
187
|
-
// Opt-in: only sent when `--transcript` is given; absent => the daemon's default (mirror off).
|
|
188
|
-
transcript: v.transcript ? true : undefined,
|
|
189
|
-
cwd: v.cwd,
|
|
190
|
-
}, t.creds);
|
|
191
|
-
failIfNotOk(reply);
|
|
192
|
-
const d = reply.data;
|
|
193
|
-
console.log(c.green(`✓ started ${c.bold(d.name)}`) +
|
|
194
|
-
c.dim(` (${d.role ?? "no role"} · ${d.agent} · ${d.mode})`));
|
|
195
|
-
}
|
|
196
|
-
async function stop(argv) {
|
|
197
|
-
const v = parse(argv);
|
|
198
|
-
if (!v.name) {
|
|
199
|
-
console.error(c.red("--name is required"));
|
|
200
|
-
process.exit(1);
|
|
201
|
-
}
|
|
202
|
-
// Operator stop is a cross-agent (admin) op — the CLI operator isn't the agent's spawner, so the
|
|
203
|
-
// privileged subject would reject it; the admin tier reaches any agent. The scoped `control-caller-admin`
|
|
204
|
-
// cred holds ONLY `ctl.<admin>.<id>` (that IS the cross-agent authority — the manager doesn't re-check
|
|
205
|
-
// the caller), so it reaches this op and nothing else.
|
|
206
|
-
const t = await resolveManagerTarget(v, "control-caller-admin");
|
|
207
|
-
const reply = await ask(t.space, t.server, "stop", {
|
|
208
|
-
name: v.name,
|
|
209
|
-
}, t.creds, CONTROL_ADMIN);
|
|
210
|
-
failIfNotOk(reply);
|
|
211
|
-
console.log(c.dim(`✓ stopped ${v.name}`));
|
|
212
|
-
}
|
|
213
|
-
async function ps(argv) {
|
|
214
|
-
const v = parse(argv);
|
|
215
|
-
const t = await resolveManagerTarget(v, "control-caller-privileged");
|
|
216
|
-
const reply = await ask(t.space, t.server, "ps", undefined, t.creds);
|
|
217
|
-
failIfNotOk(reply);
|
|
218
|
-
const rows = reply.data ?? [];
|
|
219
|
-
if (!rows.length) {
|
|
220
|
-
console.log(c.dim("(no managed agents)"));
|
|
221
|
-
return;
|
|
222
|
-
}
|
|
223
|
-
for (const r of rows) {
|
|
224
|
-
const status = r.mesh === "absent"
|
|
225
|
-
? c.yellow("starting…")
|
|
226
|
-
: r.mesh === "offline"
|
|
227
|
-
? c.dim("offline")
|
|
228
|
-
: r.mesh === "working"
|
|
229
|
-
? c.green("working")
|
|
230
|
-
: r.mesh === "waiting"
|
|
231
|
-
? c.yellow("waiting")
|
|
232
|
-
: c.cyan(r.mesh);
|
|
233
|
-
console.log(`${c.bold(r.name)}${r.role ? c.dim("/" + r.role) : ""} ${c.dim(r.agent + " · " + r.mode)} ${status}`);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
async function attach(argv) {
|
|
237
|
-
const v = parse(argv);
|
|
238
|
-
if (!v.name) {
|
|
239
|
-
console.error(c.red("--name is required"));
|
|
240
|
-
process.exit(1);
|
|
241
|
-
}
|
|
242
|
-
// Operator attach is a cross-agent (admin) op — same reasoning as stop (the operator isn't the
|
|
243
|
-
// spawner; admin reaches any agent). Scoped `control-caller-admin`: ctl.<admin> only.
|
|
244
|
-
const t = await resolveManagerTarget(v, "control-caller-admin");
|
|
245
|
-
const reply = await ask(t.space, t.server, "attach", {
|
|
246
|
-
name: v.name,
|
|
247
|
-
}, t.creds, CONTROL_ADMIN);
|
|
248
|
-
failIfNotOk(reply);
|
|
249
|
-
const { ws } = reply.data;
|
|
250
|
-
console.error(c.dim(`attached to ${v.name} — Ctrl-] to detach`));
|
|
251
|
-
await attachClient(ws);
|
|
252
|
-
console.error(c.dim(`\ndetached from ${v.name}`));
|
|
253
|
-
}
|
|
254
13
|
/** Run a manager daemon in this process (the long-lived supervisor), then block.
|
|
255
14
|
* `pty` ships with the manager; `tmux` and `cmux` need their integration imported by
|
|
256
|
-
* the composition root (the `cotal` binary does). Stays alive until SIGINT/SIGTERM.
|
|
15
|
+
* the composition root (the `cotal` binary does). Stays alive until SIGINT/SIGTERM.
|
|
16
|
+
*
|
|
17
|
+
* The operator CLIENTS of this daemon — detached launch (`cotal spawn --detach`), `stop`, `ps`,
|
|
18
|
+
* `attach` — live in `@cotal-ai/cli` since stage 2a of the CLI rework: they are thin control-plane
|
|
19
|
+
* request/reply commands, not daemon code. This package registers only the daemon runner. */
|
|
257
20
|
// `--runtime` forces the manager runtime; honored only on the `supervise` path (default
|
|
258
21
|
// pty). `cmux` gives each teammate its own cmux tab — `cotal supervise --runtime cmux` is
|
|
259
|
-
// the cmux-tab manager.
|
|
260
|
-
// contiguous, which is what `cmuxManagerRunning` pgreps for.
|
|
22
|
+
// the cmux-tab manager.
|
|
261
23
|
const RUNTIME_OVERRIDES = ["pty", "tmux", "cmux"];
|
|
262
|
-
async function runManager(
|
|
263
|
-
const v =
|
|
24
|
+
async function runManager(args, defaultRuntime) {
|
|
25
|
+
const v = args.values;
|
|
264
26
|
let runtime = defaultRuntime;
|
|
265
27
|
if (defaultRuntime === "auto" && v.runtime) {
|
|
266
28
|
if (!RUNTIME_OVERRIDES.includes(v.runtime)) {
|
|
@@ -295,13 +57,13 @@ async function runManager(argv, defaultRuntime) {
|
|
|
295
57
|
console.log(c.green("✓ manager up") +
|
|
296
58
|
c.dim(` (space ${space} · ${mgr.runtimeKind})`) +
|
|
297
59
|
`\n console: ${mgr.consoleUrl}` +
|
|
298
|
-
c.dim("\n spawn: cotal
|
|
60
|
+
c.dim("\n spawn: cotal spawn --detach <persona> · stop: cotal stop --name <n> (Ctrl-C to shut down)"));
|
|
299
61
|
// Register shutdown handlers before any spawning, so a Ctrl-C during the (possibly slow,
|
|
300
62
|
// staggered) boot tears the manager and its spawned teammates down rather than orphaning them.
|
|
301
63
|
const shutdown = () => void mgr.stop().then(() => process.exit(0));
|
|
302
64
|
process.on("SIGINT", shutdown);
|
|
303
65
|
process.on("SIGTERM", shutdown);
|
|
304
|
-
// Declarative boot: bring up each rostered agent through the same spawn path as
|
|
66
|
+
// Declarative boot: bring up each rostered agent through the same spawn path as a detached spawn.
|
|
305
67
|
// A failed entry is logged but non-fatal — healthy agents stay up and the operator can
|
|
306
68
|
// fix the roster without the supervisor crash-looping.
|
|
307
69
|
for (const entry of roster) {
|
|
@@ -366,44 +128,24 @@ async function runManager(argv, defaultRuntime) {
|
|
|
366
128
|
}
|
|
367
129
|
await new Promise(() => { });
|
|
368
130
|
}
|
|
369
|
-
/** The manager's
|
|
370
|
-
*
|
|
371
|
-
* binary resolves them from the registry. */
|
|
131
|
+
/** The manager's one command: the `supervise` daemon runner. Self-registered on import; the
|
|
132
|
+
* `cotal` binary resolves it from the registry. */
|
|
372
133
|
const managerCommands = [
|
|
373
134
|
{
|
|
374
135
|
kind: "command",
|
|
375
136
|
name: "supervise",
|
|
376
137
|
group: "Manager",
|
|
377
138
|
summary: "run a manager — [--runtime <pty|tmux|cmux>] (default pty; tmux/cmux are explicit-only, each teammate in its own window/tab) [--space <s>] [--server <url>] [--console-port <n>] [--roster <file>] [--launch <spec>]",
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
kind: "command",
|
|
389
|
-
name: "stop",
|
|
390
|
-
group: "Control plane",
|
|
391
|
-
summary: "ask the manager to stop an agent — --name <n>",
|
|
392
|
-
run: stop,
|
|
393
|
-
},
|
|
394
|
-
{
|
|
395
|
-
kind: "command",
|
|
396
|
-
name: "ps",
|
|
397
|
-
group: "Control plane",
|
|
398
|
-
summary: "list managed agents + their mesh status",
|
|
399
|
-
run: ps,
|
|
400
|
-
},
|
|
401
|
-
{
|
|
402
|
-
kind: "command",
|
|
403
|
-
name: "attach",
|
|
404
|
-
group: "Control plane",
|
|
405
|
-
summary: "stream + drive an agent's terminal (pty runtime) — --name <n>",
|
|
406
|
-
run: attach,
|
|
139
|
+
flags: [
|
|
140
|
+
{ name: "space", type: "string", value: "<s>", description: "space to supervise (default: this folder's auth space)" },
|
|
141
|
+
{ name: "server", type: "string", value: "<url>", description: "broker URL (default: the local mesh)" },
|
|
142
|
+
{ name: "runtime", type: "string", value: "<pty|tmux|cmux>", description: "agent runtime (default pty; tmux/cmux are explicit-only)" },
|
|
143
|
+
{ name: "console-port", type: "string", value: "<n>", description: "protocol-console port" },
|
|
144
|
+
{ name: "roster", type: "string", value: "<file>", description: "declarative roster to boot at startup" },
|
|
145
|
+
{ name: "launch", type: "string", value: "<spec>", description: "resolved mesh-manifest launch spec (cotal up -f / spawn -f)" },
|
|
146
|
+
{ name: "spawn", type: "string", value: "<names>", description: "comma-separated personas to pre-spawn at startup" },
|
|
147
|
+
],
|
|
148
|
+
run: (args) => runManager(args, "auto"),
|
|
407
149
|
},
|
|
408
150
|
];
|
|
409
151
|
registry.register(...managerCommands);
|
package/dist/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./commands.js";
|
|
2
|
-
export { Manager, type ManagerOptions } from "./manager.js";
|
|
2
|
+
export { Manager, READINESS_TIMEOUT_MS, type ManagerOptions } from "./manager.js";
|
|
3
3
|
export { createRuntime } from "./runtime/index.js";
|
|
4
4
|
export type { Runtime, AgentHandle, AttachSession, RuntimeKind, RuntimeMode } from "./runtime/index.js";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAEvB,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAEvB,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import "./commands.js"; // self-registers the control-plane commands on import
|
|
2
|
-
export { Manager } from "./manager.js";
|
|
2
|
+
export { Manager, READINESS_TIMEOUT_MS } from "./manager.js";
|
|
3
3
|
export { createRuntime } from "./runtime/index.js";
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC,CAAC,sDAAsD;AAE9E,OAAO,EAAE,OAAO,EAAuB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC,CAAC,sDAAsD;AAE9E,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAuB,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/manager.d.ts
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import type { ControlReply, MeshLaunchAgent } from "@cotal-ai/core";
|
|
2
2
|
import { type RuntimeMode } from "./runtime/index.js";
|
|
3
|
+
/** Backstop for the detached-launch readiness race (#159 B1). `startAgent` waits on two REAL outcomes —
|
|
4
|
+
* the assigned id joining the mesh (presence) = started, the child process exiting = failed — NOT a
|
|
5
|
+
* liveness-inferring timer. This is only the last-resort bound for "neither happened in time": the launch
|
|
6
|
+
* is then reported UNCERTAIN (a non-success reply that does NOT deprovision — it may still be booting, or
|
|
7
|
+
* stuck before connector startup). Generous, since a real cold agent join can take several seconds. Held
|
|
8
|
+
* as an instance field ({@link Manager.readinessTimeoutMs}) so a test can shorten it. Exported so the
|
|
9
|
+
* launch-parity smoke can assert every launch client's request timeout OUTLIVES this window — the tier
|
|
10
|
+
* rule forbids the clients importing it directly. */
|
|
11
|
+
export declare const READINESS_TIMEOUT_MS = 30000;
|
|
3
12
|
export interface ManagerOptions {
|
|
4
13
|
space: string;
|
|
5
14
|
servers?: string;
|
|
@@ -17,12 +26,16 @@ export interface StartAgentOpts {
|
|
|
17
26
|
* `.cotal/agents/<name>.md`. NOT the mesh identity: the spawned peer presents under the file's
|
|
18
27
|
* own `name:` (auto-numbered on collision). The file must exist (no silent default-ACL fallback). */
|
|
19
28
|
name: string;
|
|
20
|
-
/** Connector / agent type — resolved from the registry. Defaults to `"cotal"`. */
|
|
29
|
+
/** Connector / agent type — resolved from the registry. Defaults to `COTAL_DEFAULT_AGENT`, else `"cotal"`. */
|
|
21
30
|
agent?: string;
|
|
22
31
|
role?: string;
|
|
23
32
|
/** Explicit agent-file path that overrides the `name` ref for *which file to load* (identity still
|
|
24
33
|
* comes from that file's `name:`). The file must exist. */
|
|
25
34
|
config?: string;
|
|
35
|
+
/** Presence-identity OVERRIDE (the `--name` flag with a positional/`--config` naming the file):
|
|
36
|
+
* wins over the persona file's `name:`, exactly as in foreground `cotal spawn`. Imperative-only —
|
|
37
|
+
* a manifest launch (`resolved`) is the identity authority and rejects it. */
|
|
38
|
+
identity?: string;
|
|
26
39
|
/** Model override (the `--model` flag). Takes precedence over the agent file's `model:`. */
|
|
27
40
|
model?: string;
|
|
28
41
|
/** Opaque host-local session id to FORK into the mesh (the `--resume` flag), forwarded verbatim to
|
|
@@ -32,6 +45,19 @@ export interface StartAgentOpts {
|
|
|
32
45
|
/** Mirror the session's transcript to `tr-<name>`. Defaults to off; `true` (the
|
|
33
46
|
* `--transcript` flag) opts in. */
|
|
34
47
|
transcript?: boolean;
|
|
48
|
+
/** Initial prompt auto-submitted at session start (the `--prompt` flag), forwarded verbatim to
|
|
49
|
+
* the connector. Imperative-only: never set from `resolved` (a manifest carries no prompt). */
|
|
50
|
+
prompt?: string;
|
|
51
|
+
/** Access-policy overrides (the `--subscribe` / `--allow-subscribe` / `--allow-publish` flags):
|
|
52
|
+
* win over the persona file exactly as in foreground `cotal spawn`, and are minted into the
|
|
53
|
+
* creds AND forwarded to the connector from ONE source. Imperative-only — a manifest launch
|
|
54
|
+
* (`resolved`) is the access authority and rejects these. */
|
|
55
|
+
subscribe?: string[];
|
|
56
|
+
allowSubscribe?: string[];
|
|
57
|
+
allowPublish?: string[];
|
|
58
|
+
/** `--share-tools` selection narrowing which of the operator's configured MCP servers this
|
|
59
|
+
* agent gets (absent → all declared for the connector — the pre-merge manager behavior). */
|
|
60
|
+
shareTools?: string;
|
|
35
61
|
/** A fully-resolved launch profile (from a mesh manifest via `supervise --launch`). When present,
|
|
36
62
|
* `startAgent` takes identity/role/ACLs/capabilities/model from here — NOT from a persona file —
|
|
37
63
|
* and `config` points at the materialized transient persona the connector reads. The persona file
|
|
@@ -66,6 +92,10 @@ export declare class Manager {
|
|
|
66
92
|
/** Space trust material when the mesh runs in auth mode (`.cotal/auth` present);
|
|
67
93
|
* the manager mints per-agent creds from it at spawn. Undefined when the mesh is open. */
|
|
68
94
|
private auth?;
|
|
95
|
+
/** Readiness-race backstop (#159 B1) — the {@link READINESS_TIMEOUT_MS} constant, held as an instance
|
|
96
|
+
* field so a test can shorten it (the join/exit signals are event-driven; only the backstop is timed).
|
|
97
|
+
* Production leaves it at the constant. */
|
|
98
|
+
private readinessTimeoutMs;
|
|
69
99
|
private leaseInfo?;
|
|
70
100
|
private leaseRevision?;
|
|
71
101
|
private leaseTimer?;
|
|
@@ -74,6 +104,16 @@ export declare class Manager {
|
|
|
74
104
|
/** The console page URL (manager-hosted, loopback). */
|
|
75
105
|
get consoleUrl(): string;
|
|
76
106
|
start(): Promise<void>;
|
|
107
|
+
/** Tear down every managed agent's footprint — the shared teardown for EVERY manager-exit path (#159
|
|
108
|
+
* B2): graceful {@link stop} AND the fail-closed lease-loss exit ({@link renewLease}). A manager exit is
|
|
109
|
+
* a mass agent-exit, and without this its agents' footprints (creds files + `dm_`/`dlv_` durables + ACL
|
|
110
|
+
* rows) would orphan exactly as the per-agent exit path prevents. Hard-stop each child (an exit has no
|
|
111
|
+
* time for the graceful grace window) and AWAIT its deprovision — bounded per agent (`withTimeout`) and
|
|
112
|
+
* best-effort (`allSettled` + a loud log), so one slow/failed teardown can neither hang nor abort exit.
|
|
113
|
+
* The creds file is dropped even if the broker teardown fails (see {@link deprovision}). Deliberately
|
|
114
|
+
* touches NEITHER the lease NOR the endpoints — the caller owns those (and lease loss must NOT release
|
|
115
|
+
* the key, which may now belong to a replacement holder). */
|
|
116
|
+
private teardownManagedAgents;
|
|
77
117
|
stop(): Promise<void>;
|
|
78
118
|
/** Refresh the singleton lease before the bucket TTL expires it. On loss (missed the TTL, or another
|
|
79
119
|
* manager took over after a gap) FAIL CLOSED: stop serving control at once so we can't double-process
|
|
@@ -98,7 +138,13 @@ export declare class Manager {
|
|
|
98
138
|
* exit handlers / leaves the mesh), so first send a cooperative `{op:"shutdown"}` over its authed
|
|
99
139
|
* control endpoint; the agent exits cleanly and the runtime hard-kills as a fallback after its
|
|
100
140
|
* grace window. POSIX delivers SIGTERM→SIGKILL natively, so it keeps the signal path. A hard stop
|
|
101
|
-
* (`graceful:false`, e.g. emergency reap) skips the cooperative step on every platform.
|
|
141
|
+
* (`graceful:false`, e.g. emergency reap) skips the cooperative step on every platform.
|
|
142
|
+
*
|
|
143
|
+
* BEST-EFFORT / never throws (#159 B2): a runtime hard-stop CAN throw (tmux `closeWindow` / cmux
|
|
144
|
+
* `closeWorkspace` are direct calls), and every caller (despawn / self-stop / reap / shutdown) frees the
|
|
145
|
+
* slot + deprovisions RIGHT AFTER — so a throwing stop must not abort that cleanup and leak the agent's
|
|
146
|
+
* footprint, nor (in `reapChildrenOf`) abort the reap of later siblings. The failure is logged loudly,
|
|
147
|
+
* never swallowed silently. Being the single stop chokepoint, guarding here covers all callers at once. */
|
|
102
148
|
private stopHandle;
|
|
103
149
|
/** Drop a live agent's slot. When `floor` is set and the agent died young (lived less than
|
|
104
150
|
* MIN_LIFETIME), push a cooling stamp so the freed slot still counts toward the ceiling until it
|
|
@@ -106,6 +152,19 @@ export declare class Manager {
|
|
|
106
152
|
* covered (P4c). Floor self + own-child despawn and natural exit; NEVER admin despawn (operator
|
|
107
153
|
* emergency-kill stays unthrottled) and NEVER the reserved-rollback path (no cold-start paid). */
|
|
108
154
|
private freeSlot;
|
|
155
|
+
/** Tear down a departed agent's minted footprint (#159 B2, auth mode): its id-keyed durables
|
|
156
|
+
* (`dm_<id>`, `dlv_<id>`), its read-ACL row, and its creds file — everything the spawn's
|
|
157
|
+
* `provisionAgent` + creds-write left behind. Mints an EPHEMERAL, TARGET-PINNED `deprovisioner` cred
|
|
158
|
+
* (mirrors the ephemeral `provisioner`/`purger`): it can delete only THIS agent's id-keyed footprint,
|
|
159
|
+
* never a peer's and never the role-shared `svc_<role>` (which its siblings still bind). Open mesh →
|
|
160
|
+
* no-op (nothing was minted). Idempotent at the broker (missing consumer / ACL row = no-op) and on
|
|
161
|
+
* disk (`force` tolerates an absent creds file, e.g. a ledgered deploy that wrote none).
|
|
162
|
+
*
|
|
163
|
+
* Removing the creds file is footprint REDUCTION, not revocation: a JWT copied off disk before exit
|
|
164
|
+
* keeps its inline publish/live-sub/control grants until key rotation or JWT expiry — cred revocation
|
|
165
|
+
* is the separate per-user-auth work, not this. Tearing down the durables + ACL row still shrinks the
|
|
166
|
+
* delivery surface a stale copy could use. */
|
|
167
|
+
private deprovision;
|
|
109
168
|
/** Reap a parent's children on its exit (P4b): stop + free every agent whose `spawner` is the
|
|
110
169
|
* exited agent's id, so orphans don't ratchet the ceiling shut. Recursive — a reaped child's
|
|
111
170
|
* own children are reaped too. Exit-driven, so each freed slot is rate-floored like a despawn. */
|
|
@@ -149,6 +208,24 @@ export declare class Manager {
|
|
|
149
208
|
* defaulting to the manager's own id for roster/pre-spawn — recorded for the spawner
|
|
150
209
|
* ledger (own-children despawn + reap-on-parent-exit). */
|
|
151
210
|
startAgent(opts: StartAgentOpts, spawner?: string): Promise<ControlReply>;
|
|
211
|
+
/** #159 B1: wait for a detached launch to reach a REAL outcome before replying — never a liveness-
|
|
212
|
+
* inferring timer. Races three:
|
|
213
|
+
* • the assigned id joins presence (live) → **started** — the honest signal (the manager owns mesh
|
|
214
|
+
* lifecycle, not app health, so `ok:true` means "it joined the mesh", not "fully healthy");
|
|
215
|
+
* • the child process exits → **failed** — surface its last output and reap the slot;
|
|
216
|
+
* • neither within {@link readinessTimeoutMs} → **uncertain** — a non-success diagnostic that does NOT
|
|
217
|
+
* deprovision (it may still be booting; the caller keeps {@link watchExit} wired so a later death is
|
|
218
|
+
* still reaped).
|
|
219
|
+
* Presence is keyed on the EXACT freshly-minted id, never the name — a fresh id has no prior record, so
|
|
220
|
+
* any live presence for it is from THIS launch (stale/same-name records can't false-start it). The
|
|
221
|
+
* `"presence"` event is only a wake; the roster is re-read as the source of truth (subscribe-then-check
|
|
222
|
+
* catches a join/exit that landed before we subscribed). Runtimes that stream no exit signal (tmux/cmux,
|
|
223
|
+
* whose `attach()` throws) race presence-vs-backstop only — better than the old "assume up". */
|
|
224
|
+
private awaitReadiness;
|
|
225
|
+
/** Last non-empty line of terminal output as a single trimmed, control-char-stripped snippet
|
|
226
|
+
* (≤160 chars) — a readable one-line cause for an early-exit diagnostic, never the raw ANSI
|
|
227
|
+
* scrollback. */
|
|
228
|
+
private tail;
|
|
152
229
|
/** Subscribe to a managed agent's process-exit so a self-driven exit frees its slot and reaps
|
|
153
230
|
* its children (P4b/P4c). Only pty streams exit (via the attach session's `onExit`); tmux/cmux
|
|
154
231
|
* attach() throws, so this is a no-op there — a self-EXITED agent under those runtimes is reaped
|
package/dist/manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
|