@cotal-ai/cli 0.10.1 → 0.11.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/command.d.ts.map +1 -1
- package/dist/command.js +11 -3
- package/dist/command.js.map +1 -1
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +30 -13
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/channels.d.ts.map +1 -1
- package/dist/commands/channels.js +16 -6
- package/dist/commands/channels.js.map +1 -1
- package/dist/commands/completion.js +5 -5
- package/dist/commands/console.d.ts +1 -1
- package/dist/commands/console.d.ts.map +1 -1
- package/dist/commands/console.js +17 -11
- package/dist/commands/console.js.map +1 -1
- package/dist/commands/doctor.d.ts +14 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +171 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/down-manifest.js +15 -15
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +4 -1
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/ext.js +11 -11
- package/dist/commands/feedback.js +2 -2
- package/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +7 -3
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/join.d.ts.map +1 -1
- package/dist/commands/join.js +14 -7
- package/dist/commands/join.js.map +1 -1
- package/dist/commands/meshes.js +2 -2
- package/dist/commands/mint.d.ts.map +1 -1
- package/dist/commands/mint.js +16 -5
- package/dist/commands/mint.js.map +1 -1
- package/dist/commands/models.js +1 -1
- package/dist/commands/models.js.map +1 -1
- package/dist/commands/personas.js +4 -4
- package/dist/commands/send.js +1 -1
- package/dist/commands/setup.js +25 -25
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/spawn-manifest.d.ts.map +1 -1
- package/dist/commands/spawn-manifest.js +47 -25
- package/dist/commands/spawn-manifest.js.map +1 -1
- package/dist/commands/spawn.d.ts +6 -0
- package/dist/commands/spawn.d.ts.map +1 -1
- package/dist/commands/spawn.js +257 -46
- package/dist/commands/spawn.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +71 -6
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/topology.js +2 -2
- package/dist/commands/up.d.ts +5 -0
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +269 -48
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/use.js +1 -1
- package/dist/console/commands.js +2 -2
- package/dist/console/mesh.js +1 -1
- package/dist/console/mesh.js.map +1 -1
- package/dist/console/root.d.ts +15 -3
- package/dist/console/root.d.ts.map +1 -1
- package/dist/console/root.js +12 -7
- package/dist/console/root.js.map +1 -1
- package/dist/console/ui/Confirm.js +1 -1
- package/dist/console/ui/Confirm.js.map +1 -1
- package/dist/console/ui/Feed.js +1 -1
- package/dist/console/ui/Feed.js.map +1 -1
- package/dist/console/ui/Help.js +2 -2
- package/dist/console/ui/Help.js.map +1 -1
- package/dist/console/ui/NeedsYou.js +1 -1
- package/dist/console/ui/NeedsYou.js.map +1 -1
- package/dist/console/ui/SpacePicker.js +1 -1
- package/dist/console/ui/SpacePicker.js.map +1 -1
- package/dist/console/ui/Tiles.js +1 -1
- package/dist/console/ui/topo/Map.js +1 -1
- package/dist/console/ui/topo/Map.js.map +1 -1
- package/dist/console/ui/topo/Matrix.js +2 -2
- package/dist/console/ui/topo/Matrix.js.map +1 -1
- package/dist/console/ui/topo/Sequence.js +1 -1
- package/dist/console/ui/topo/Sequence.js.map +1 -1
- package/dist/ext-loader.js +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -17
- package/dist/index.js.map +1 -1
- package/dist/lib/attach-client.js +1 -1
- package/dist/lib/auth-proc.d.ts +19 -0
- package/dist/lib/auth-proc.d.ts.map +1 -0
- package/dist/lib/auth-proc.js +81 -0
- package/dist/lib/auth-proc.js.map +1 -0
- package/dist/lib/connect.d.ts +1 -1
- package/dist/lib/connect.d.ts.map +1 -1
- package/dist/lib/connect.js +2 -2
- package/dist/lib/connect.js.map +1 -1
- package/dist/lib/control.d.ts +14 -6
- package/dist/lib/control.d.ts.map +1 -1
- package/dist/lib/control.js +23 -11
- package/dist/lib/control.js.map +1 -1
- package/dist/lib/delivery-proc.js +2 -2
- package/dist/lib/manifest/apply.d.ts +3 -2
- package/dist/lib/manifest/apply.d.ts.map +1 -1
- package/dist/lib/manifest/apply.js +7 -2
- package/dist/lib/manifest/apply.js.map +1 -1
- package/dist/lib/manifest/ledger.js +4 -4
- package/dist/lib/manifest/live.d.ts +23 -9
- package/dist/lib/manifest/live.d.ts.map +1 -1
- package/dist/lib/manifest/live.js +22 -12
- package/dist/lib/manifest/live.js.map +1 -1
- package/dist/lib/manifest/model.d.ts +4 -1
- package/dist/lib/manifest/model.d.ts.map +1 -1
- package/dist/lib/manifest/prepare.d.ts +2 -0
- package/dist/lib/manifest/prepare.d.ts.map +1 -1
- package/dist/lib/manifest/prepare.js +5 -2
- package/dist/lib/manifest/prepare.js.map +1 -1
- package/dist/lib/manifest/render.d.ts.map +1 -1
- package/dist/lib/manifest/render.js +14 -13
- package/dist/lib/manifest/render.js.map +1 -1
- package/dist/lib/manifest/resolve.js +19 -6
- package/dist/lib/manifest/resolve.js.map +1 -1
- package/dist/lib/manifest/schema.d.ts +4 -1
- package/dist/lib/manifest/schema.d.ts.map +1 -1
- package/dist/lib/manifest/schema.js +10 -2
- package/dist/lib/manifest/schema.js.map +1 -1
- package/dist/lib/setup-log.js +1 -1
- package/dist/lib/status.d.ts +1 -1
- package/dist/lib/status.js +1 -1
- package/dist/lib/transient.d.ts +8 -10
- package/dist/lib/transient.d.ts.map +1 -1
- package/dist/lib/transient.js +11 -11
- package/dist/lib/transient.js.map +1 -1
- package/dist/render.js +2 -2
- package/dist/ui.js +1 -1
- package/dist/ui.js.map +1 -1
- package/package.json +3 -3
package/dist/commands/spawn.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { spawn as spawnProcess } from "node:child_process";
|
|
1
|
+
import { spawn as spawnProcess, execFile } from "node:child_process";
|
|
2
|
+
import { rmSync } from "node:fs";
|
|
2
3
|
import { join, dirname, resolve as resolvePath } from "node:path";
|
|
3
|
-
import { agentFilePath, connectorServers, firstFreeName, isReachable, loadAgentFile, loadCotalConfig, mintCreds, mkSecretDir, newIdentity, parseShareSelection, provisionAgent, registry, writeSecretFile, CotalEndpoint, CONTROL_PRIVILEGED, } from "@cotal-ai/core";
|
|
4
|
-
import { authDir, credsFlag, defaultAgentOverride, defaultAgentType, defaultPersonaOverride, defaultPersonaRef, launchFlags, loadMeshes, provenance, resolveMeshTarget, serverFlag, spaceFlag, } from "@cotal-ai/workspace";
|
|
4
|
+
import { agentFilePath, connectorServers, deprovisionAgent, firstFreeName, isReachable, loadAgentFile, loadCotalConfig, mintCreds, mkSecretDir, newIdentity, parseShareSelection, principalKey, provisionAgent, provisionAgentDurables, registry, resolveAuthProvider, writeSecretFile, CotalEndpoint, CONTROL_PRIVILEGED, } from "@cotal-ai/core";
|
|
5
|
+
import { authDir, credsFlag, defaultAgentOverride, defaultAgentType, defaultPersonaOverride, defaultPersonaRef, launchFlags, loadMeshes, loadSpaceAuth, mergeLaunchOptions, parseLaunchOptions, provenance, resolveMeshTarget, serverFlag, spaceFlag, userAuthStateDir, } from "@cotal-ai/workspace";
|
|
5
6
|
import { c } from "../ui.js";
|
|
6
7
|
import { completedFlagValue, completingFlagValue, hasCompletedFlagValue, positionalsForCompletion } from "../lib/completion.js";
|
|
7
8
|
import { preflightOrExit, resolveTargetOrExit } from "../lib/connect.js";
|
|
@@ -145,7 +146,7 @@ const splitFlag = (v) => (v ? v.split(",").map((s) => s.trim()).filter(Boolean)
|
|
|
145
146
|
/** The `--detach` mode: hand the launch to the running manager over the control plane. One grammar
|
|
146
147
|
* with the foreground path; the persona file is resolved (and is the access default) manager-side,
|
|
147
148
|
* overridden by the same flags, which ride the `start` op. Replaces the removed `cotal start`. */
|
|
148
|
-
async function spawnDetached(values, positionals, transcript) {
|
|
149
|
+
async function spawnDetached(values, positionals, transcript, launchOptions) {
|
|
149
150
|
// WHICH file the manager loads — the exact foreground precedence (`--config` > positional >
|
|
150
151
|
// `COTAL_DEFAULT_PERSONA` > `default`). Identity is separate:
|
|
151
152
|
// when `--name` is given it OVERRIDES the file's `name:` (foreground's `requested`), threaded
|
|
@@ -155,7 +156,7 @@ async function spawnDetached(values, positionals, transcript) {
|
|
|
155
156
|
const managerConfigRef = values.config ?? (!positionals[0] && defaultPersona ? ref : undefined);
|
|
156
157
|
const t = await resolveControlTarget({ space: values.space, server: values.server, creds: values.creds }, "control-caller-privileged");
|
|
157
158
|
provenance.read("mesh", `${t.space} (${t.server})`);
|
|
158
|
-
console.error(c.dim("waiting for it to join the mesh (the manager replies on a real outcome
|
|
159
|
+
console.error(c.dim("waiting for it to join the mesh (the manager replies on a real outcome - join, exit, or ~30s) …"));
|
|
159
160
|
const reply = await askManager(t.space, t.server, "start", {
|
|
160
161
|
name: ref,
|
|
161
162
|
identity: values.name,
|
|
@@ -164,6 +165,7 @@ async function spawnDetached(values, positionals, transcript) {
|
|
|
164
165
|
config: managerConfigRef,
|
|
165
166
|
model: values.model,
|
|
166
167
|
variant: values.variant,
|
|
168
|
+
launchOptions,
|
|
167
169
|
cwd: values.cwd,
|
|
168
170
|
resume: values.resume, // host-local session id; the manager preflights connector resume support
|
|
169
171
|
prompt: values.prompt,
|
|
@@ -175,11 +177,11 @@ async function spawnDetached(values, positionals, transcript) {
|
|
|
175
177
|
transcript,
|
|
176
178
|
// #159 B1: the manager replies only on a REAL outcome (presence join / process exit / ~30s
|
|
177
179
|
// readiness backstop) — the start request must outlive that window, not the 5s op default.
|
|
178
|
-
}, t.
|
|
180
|
+
}, t.auth, CONTROL_PRIVILEGED, START_TIMEOUT_MS);
|
|
179
181
|
failIfNotOk(reply);
|
|
180
182
|
const d = reply.data;
|
|
181
183
|
console.log(c.green(`✓ spawned ${c.bold(d.name)} (detached)`) +
|
|
182
|
-
c.dim(` (${d.role ?? "no role"} · ${d.agent} · ${d.mode})
|
|
184
|
+
c.dim(` (${d.role ?? "no role"} · ${d.agent} · ${d.mode}) - attach with: cotal attach --name ${d.name}`));
|
|
183
185
|
}
|
|
184
186
|
export async function spawn(args) {
|
|
185
187
|
const positionals = args.positionals;
|
|
@@ -206,6 +208,22 @@ export async function spawn(args) {
|
|
|
206
208
|
console.error("--variant needs a variant name (got an empty value)");
|
|
207
209
|
process.exit(1);
|
|
208
210
|
}
|
|
211
|
+
// `--dry-run` is a manifest-only flag (`-f`): on an imperative spawn it would have to be ignored
|
|
212
|
+
// (and once WAS, silently spawning a real agent) — refuse instead.
|
|
213
|
+
if (values["dry-run"]) {
|
|
214
|
+
console.error(c.red("✗ --dry-run only applies to a manifest deploy (`cotal spawn -f <manifest> --dry-run`)"));
|
|
215
|
+
process.exit(1);
|
|
216
|
+
}
|
|
217
|
+
// Parse `--opt k=v` pairs once, up front — a malformed pair fails loud before either launch path
|
|
218
|
+
// (foreground or detached) does any work. The opaque map is core-agnostic; the connector validates.
|
|
219
|
+
let cliLaunchOptions;
|
|
220
|
+
try {
|
|
221
|
+
cliLaunchOptions = parseLaunchOptions(values.opt);
|
|
222
|
+
}
|
|
223
|
+
catch (e) {
|
|
224
|
+
console.error(e.message);
|
|
225
|
+
process.exit(1);
|
|
226
|
+
}
|
|
209
227
|
// Transcript mirroring to `tr-<name>` is OFF by default. Tri-state: true (--transcript),
|
|
210
228
|
// false (--no-transcript, explicit), undefined (absent). Foreground treats absent as off;
|
|
211
229
|
// detached forwards the tri-state so absent defers to the manager's default.
|
|
@@ -214,7 +232,7 @@ export async function spawn(args) {
|
|
|
214
232
|
// resolved manager-side (its workspace root owns `.cotal/agents`); flags ride the control
|
|
215
233
|
// request and override the file exactly as the foreground path does.
|
|
216
234
|
if (values.detach) {
|
|
217
|
-
return spawnDetached(values, positionals, transcript);
|
|
235
|
+
return spawnDetached(values, positionals, transcript, cliLaunchOptions);
|
|
218
236
|
}
|
|
219
237
|
// `--creds` names a CONTROL-CALLER credential (reach an off-registry manager) — meaningless for
|
|
220
238
|
// a foreground launch, which provisions the agent's own creds. Fail loud, never ignore.
|
|
@@ -240,8 +258,8 @@ export async function spawn(args) {
|
|
|
240
258
|
const code = e.code;
|
|
241
259
|
if (code === "ENOENT") {
|
|
242
260
|
console.error(c.red(ref === "default" && !defaultPersona
|
|
243
|
-
? "✗ no default persona yet
|
|
244
|
-
: `✗ no persona "${ref}"${!values.config && !positionals[0] && defaultPersona ? " from COTAL_DEFAULT_PERSONA" : ""} in ${target.space}'s ${target.personaRoot}
|
|
261
|
+
? "✗ no default persona yet - run `cotal setup` to seed one, or name a persona: `cotal spawn <name>`"
|
|
262
|
+
: `✗ no persona "${ref}"${!values.config && !positionals[0] && defaultPersona ? " from COTAL_DEFAULT_PERSONA" : ""} in ${target.space}'s ${target.personaRoot} - pass a catalog name, or use \`--config <path>\` for a file elsewhere`));
|
|
245
263
|
}
|
|
246
264
|
else {
|
|
247
265
|
console.error(c.red(`✗ ${e.message}`));
|
|
@@ -260,9 +278,13 @@ export async function spawn(args) {
|
|
|
260
278
|
// A second `cotal spawn` of the same agent would otherwise join under a duplicate mesh identity:
|
|
261
279
|
// auto-number the name past anyone already present (best-effort — this path bypasses the manager's
|
|
262
280
|
// race-free reservation; see uniqueMeshName). Everything below (creds path, launch) uses `name`.
|
|
263
|
-
|
|
281
|
+
// USER mesh: the advisory presence read has no credential to ride (no static mint — U10), so the
|
|
282
|
+
// requested name stands; a same-name respawn ROTATES that actor's grant (upsert), which kills the
|
|
283
|
+
// previous holder's next bearer refresh with the "secret is stale — respawn" health state rather
|
|
284
|
+
// than aliasing it silently.
|
|
285
|
+
const name = target.mode === "user" ? requested : await uniqueMeshName(requested, { space, server, auth });
|
|
264
286
|
if (name !== requested)
|
|
265
|
-
console.error(`"${requested}" is already on the mesh
|
|
287
|
+
console.error(`"${requested}" is already on the mesh - spawning as ${name} instead`);
|
|
266
288
|
// When the target was auto-resolved (one mesh up, or the `current` default), say which mesh we
|
|
267
289
|
// picked — it isn't obvious from the cwd. An explicit --space/--server or a local project is
|
|
268
290
|
// self-evident, so stay quiet there.
|
|
@@ -288,6 +310,8 @@ export async function spawn(args) {
|
|
|
288
310
|
// Open mode (no `.cotal/auth`): unchanged — the session connects without creds.
|
|
289
311
|
let id;
|
|
290
312
|
let credsPath;
|
|
313
|
+
let userAuth;
|
|
314
|
+
let userCleanup;
|
|
291
315
|
// The agent's access policy (flags > persona file) — minted into the creds AND forwarded to the
|
|
292
316
|
// connector (COTAL_SUBSCRIBE / COTAL_ALLOW_*) so the session's runtime read/post set matches its
|
|
293
317
|
// credentials. One source, so a `--subscribe` override can't land in the creds yet be lost at
|
|
@@ -295,7 +319,20 @@ export async function spawn(args) {
|
|
|
295
319
|
const subscribe = splitFlag(values.subscribe) ?? def.subscribe;
|
|
296
320
|
const allowSubscribe = splitFlag(values["allow-subscribe"]) ?? def.allowSubscribe ?? subscribe;
|
|
297
321
|
const allowPublish = splitFlag(values["allow-publish"]) ?? def.allowPublish;
|
|
298
|
-
if (
|
|
322
|
+
if (target.mode === "user") {
|
|
323
|
+
// USER mesh: the agent runs as a ledger-granted (owner, actor) principal under the LOGGED-IN
|
|
324
|
+
// operator's owner — never a static identity (U10). Provisioning + grant + a one-shot bearer
|
|
325
|
+
// preflight all happen BEFORE launch, so the spawned agent is never the first to discover a
|
|
326
|
+
// dead auth plane.
|
|
327
|
+
({ userAuth, cleanup: userCleanup } = await provisionUserForeground(target, name, ref, {
|
|
328
|
+
subscribe,
|
|
329
|
+
allowSubscribe,
|
|
330
|
+
allowPublish,
|
|
331
|
+
role,
|
|
332
|
+
capabilities: def.capabilities,
|
|
333
|
+
}));
|
|
334
|
+
}
|
|
335
|
+
else if (auth) {
|
|
299
336
|
const identity = newIdentity();
|
|
300
337
|
const prov = new CotalEndpoint({
|
|
301
338
|
space,
|
|
@@ -334,47 +371,221 @@ export async function spawn(args) {
|
|
|
334
371
|
// config (global ~/.config/cotal + the target mesh's .cotal), narrowed by an optional
|
|
335
372
|
// --share-tools selection. Default (no config) is none — the connector launches isolated.
|
|
336
373
|
const mcpServers = connectorServers(loadCotalConfig(target.root), agentType, parseShareSelection(values["share-tools"]));
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
374
|
+
// Auth mode provisions the identity + writes its creds to disk BEFORE the connector validates the
|
|
375
|
+
// launch (e.g. `buildLaunch` throws on a rejected `--opt`) and before the child execs. If either
|
|
376
|
+
// fails the agent never joins the mesh, so roll the provision back — mirror the manager's
|
|
377
|
+
// `deprovision`: drop the creds file and tear down the broker footprint (durables + ACL) with an
|
|
378
|
+
// ephemeral, target-pinned deprovisioner cred. A no-op in open mode (nothing was minted).
|
|
379
|
+
const rollbackProvision = async (why) => {
|
|
380
|
+
if (!auth || !id || !credsPath)
|
|
381
|
+
return;
|
|
382
|
+
rmSync(credsPath, { force: true });
|
|
383
|
+
console.error(` ↩ rolled back creds for ${name} (${why})`);
|
|
384
|
+
try {
|
|
385
|
+
const dc = await mintCreds(auth, newIdentity(), "deprovisioner", { deprovisionTarget: id });
|
|
386
|
+
await deprovisionAgent({ servers: server, space, targetId: id, creds: dc });
|
|
387
|
+
}
|
|
388
|
+
catch (e) {
|
|
389
|
+
console.error(`! rollback: broker teardown for ${name} failed: ${e.message}`);
|
|
390
|
+
}
|
|
391
|
+
};
|
|
392
|
+
// From here through a successful child launch, a THROW must undo whatever this spawn provisioned —
|
|
393
|
+
// the user-mode actor grant (userCleanup) OR the static-auth creds + broker footprint
|
|
394
|
+
// (rollbackProvision) — otherwise a buildLaunch/spawn rejection (unsupported resume/model/`--opt`,
|
|
395
|
+
// a bad connector) leaves the just-granted identity standing. The planes are exclusive, so each
|
|
396
|
+
// cleanup is a no-op in the other's mode.
|
|
397
|
+
let child;
|
|
398
|
+
let spec;
|
|
399
|
+
try {
|
|
400
|
+
spec = connector.buildLaunch({
|
|
401
|
+
space,
|
|
402
|
+
name,
|
|
403
|
+
role,
|
|
404
|
+
id,
|
|
405
|
+
creds: credsPath,
|
|
406
|
+
userAuth,
|
|
407
|
+
servers: server,
|
|
408
|
+
configPath: path,
|
|
409
|
+
// Model override (wins over the agent file's `model:`) — launch-grammar parity with --detach.
|
|
410
|
+
model: values.model,
|
|
411
|
+
variant,
|
|
412
|
+
// Opaque connector options: `--opt` flags win per key over the persona's `launchOptions:`.
|
|
413
|
+
launchOptions: mergeLaunchOptions(def.launchOptions, cliLaunchOptions),
|
|
414
|
+
subscribe,
|
|
415
|
+
allowSubscribe,
|
|
416
|
+
allowPublish,
|
|
417
|
+
prompt: values.prompt,
|
|
418
|
+
// Fork an existing session into the mesh. `prompt + resume` is a supported combo (claude accepts
|
|
419
|
+
// the positional prompt alongside `--resume … --fork-session`); an unsupported connector throws.
|
|
420
|
+
resume: values.resume,
|
|
421
|
+
transcript,
|
|
422
|
+
mcpServers,
|
|
423
|
+
});
|
|
424
|
+
console.error(`spawning ${name}${role ? ` (${role})` : ""} on the mesh - press Enter at the dev-channels prompt`);
|
|
425
|
+
if (userAuth)
|
|
426
|
+
console.error(c.dim(` running as you: ${userAuth.owner}.${name} (actor granted; revoked automatically when this process exits)`));
|
|
427
|
+
child = spawnProcess(spec.command, spec.args, {
|
|
428
|
+
stdio: "inherit",
|
|
429
|
+
// P3: only the connector-declared env (OS allow-list + identity + named model key) — never
|
|
430
|
+
// `...process.env`, so the operator's unrelated secrets don't bleed into the foreground agent.
|
|
431
|
+
env: spec.env ?? {},
|
|
432
|
+
// `--cwd` roots the agent at another folder/repo (launch-grammar parity with --detach); a
|
|
433
|
+
// relative path resolves against the invoking shell's cwd. Omitted → inherit this cwd.
|
|
434
|
+
cwd: values.cwd ? resolvePath(values.cwd) : undefined,
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
catch (e) {
|
|
438
|
+
// Launch construction / spawn threw AFTER provisioning — undo BOTH planes (each a no-op in the
|
|
439
|
+
// other's mode): revoke the user-mode actor grant AND roll back the static-auth creds + footprint,
|
|
440
|
+
// before rethrowing, so no standing grant survives a spawn that never started.
|
|
441
|
+
if (userCleanup)
|
|
442
|
+
await userCleanup().catch((err) => console.error(c.red(`✗ revoking ${name}'s actor grant: ${err.message}`)));
|
|
443
|
+
await rollbackProvision("launch build failed");
|
|
444
|
+
throw e;
|
|
445
|
+
}
|
|
368
446
|
await new Promise((resolve) => {
|
|
369
447
|
child.on("error", (e) => {
|
|
448
|
+
// The exec never started, so the just-provisioned static-auth identity is orphaned — roll it
|
|
449
|
+
// back. (User-mode revoke runs unconditionally once this promise settles, below.)
|
|
370
450
|
console.error(`✗ failed to launch ${spec.command}: ${e.message}`);
|
|
371
|
-
|
|
372
|
-
|
|
451
|
+
void rollbackProvision("exec failed").finally(() => {
|
|
452
|
+
process.exitCode = 1;
|
|
453
|
+
resolve();
|
|
454
|
+
});
|
|
373
455
|
});
|
|
374
456
|
child.on("exit", (code) => {
|
|
375
457
|
process.exitCode = code ?? 0;
|
|
376
458
|
resolve();
|
|
377
459
|
});
|
|
378
460
|
});
|
|
461
|
+
// USER MODE: the runtime-grant invariant applies to the foreground departure too — the agent is
|
|
462
|
+
// gone, so its standing mint authority (ledger row + secret files) goes with it. Best-effort
|
|
463
|
+
// (a SIGKILLed CLI can't run this; the next same-name spawn's rotation is the backstop), loud
|
|
464
|
+
// on failure, never blocking the exit code already set above.
|
|
465
|
+
if (userCleanup)
|
|
466
|
+
await userCleanup().catch((e) => console.error(c.red(`✗ revoking ${name}'s actor grant: ${e.message}`)));
|
|
467
|
+
}
|
|
468
|
+
/** Foreground USER-MODE onboarding — the CLI-side twin of the manager's user spawn provisioning:
|
|
469
|
+
* owner = the logged-in operator (offline, from the login cache + local user-auth material);
|
|
470
|
+
* principal-keyed durables on an ephemeral provisioner (LIVE-ONLY, like static foreground);
|
|
471
|
+
* ledger grant with a fresh per-agent secret (upsert rotates); 0600 secret/sentinel files; and a
|
|
472
|
+
* one-shot bearer preflight whose operator-exact sentence is the refusal. Exits on any failure —
|
|
473
|
+
* the agent process is never launched into a broken auth chain. */
|
|
474
|
+
async function provisionUserForeground(target, name, ref, opts) {
|
|
475
|
+
const { space, server } = target;
|
|
476
|
+
const dir = userAuthStateDir(target.root, space);
|
|
477
|
+
const fail = (msg) => {
|
|
478
|
+
console.error(c.red(`✗ ${msg}`));
|
|
479
|
+
process.exit(1);
|
|
480
|
+
};
|
|
481
|
+
let provider;
|
|
482
|
+
let owner;
|
|
483
|
+
try {
|
|
484
|
+
provider = resolveAuthProvider();
|
|
485
|
+
owner = await provider.ownerForLogin({ dir, space });
|
|
486
|
+
}
|
|
487
|
+
catch (e) {
|
|
488
|
+
return fail(e.message);
|
|
489
|
+
}
|
|
490
|
+
// The provisioner cred is INFRA (pre-flip static coexistence, like the manager's own creds) —
|
|
491
|
+
// loaded explicitly here for durable pre-creation only, never for the agent's identity.
|
|
492
|
+
const infra = loadSpaceAuth(authDir(target.root));
|
|
493
|
+
if (!infra)
|
|
494
|
+
return fail(`space "${space}" has user-auth state but no auth.json under ${authDir(target.root)} - re-run \`cotal up --user-auth\` here`);
|
|
495
|
+
const credsDir = join(authDir(target.root), "creds");
|
|
496
|
+
const tokenPath = join(credsDir, `${name}.actor-token`);
|
|
497
|
+
const sentinelPath = join(credsDir, `${name}.sentinel.creds`);
|
|
498
|
+
const healthPath = join(credsDir, `${name}.auth-health.json`);
|
|
499
|
+
try {
|
|
500
|
+
// The GRANT first — it is the envelope-rule enforcement point (a delegation must sit within
|
|
501
|
+
// the spawner's own grant), so a refused delegation exits here with zero broker footprint —
|
|
502
|
+
// the same ordering as Manager.provisionUserAgent, for the same reason.
|
|
503
|
+
const grant = await provider.grantAgent({
|
|
504
|
+
dir,
|
|
505
|
+
space,
|
|
506
|
+
owner,
|
|
507
|
+
actor: name,
|
|
508
|
+
scope: (opts.capabilities ?? []).filter((s) => s === "spawn" || s === "admin" || /^role:[A-Za-z0-9_-]+$/.test(s)),
|
|
509
|
+
allowSubscribe: opts.allowSubscribe?.length ? opts.allowSubscribe : (opts.subscribe?.length ? opts.subscribe : ["general"]),
|
|
510
|
+
allowPublish: opts.allowPublish ?? [],
|
|
511
|
+
role: opts.role,
|
|
512
|
+
parent: `${owner}.cli`,
|
|
513
|
+
label: ref,
|
|
514
|
+
});
|
|
515
|
+
const prov = new CotalEndpoint({
|
|
516
|
+
space,
|
|
517
|
+
servers: server,
|
|
518
|
+
creds: await mintCreds(infra, newIdentity(), "provisioner"),
|
|
519
|
+
channels: [],
|
|
520
|
+
consume: false,
|
|
521
|
+
registerPresence: false,
|
|
522
|
+
watchPresence: false,
|
|
523
|
+
watchChannels: false,
|
|
524
|
+
card: { name: "spawn-provisioner", role: "provisioner", kind: "endpoint" },
|
|
525
|
+
});
|
|
526
|
+
prov.on("error", (e) => console.error(`! provisioner: ${e.message}`));
|
|
527
|
+
await prov.start();
|
|
528
|
+
try {
|
|
529
|
+
// Live-only, like static foreground spawn: no ACL row → no durable backstop (that requires a
|
|
530
|
+
// managing daemon; use `cotal spawn --detach` / `cotal up` for one).
|
|
531
|
+
await provisionAgentDurables(prov, { owner, actor: name }, {
|
|
532
|
+
subscribe: opts.subscribe,
|
|
533
|
+
allowSubscribe: opts.allowSubscribe,
|
|
534
|
+
role: opts.role,
|
|
535
|
+
durableMembership: false,
|
|
536
|
+
});
|
|
537
|
+
}
|
|
538
|
+
finally {
|
|
539
|
+
await prov.stop();
|
|
540
|
+
}
|
|
541
|
+
mkSecretDir(credsDir);
|
|
542
|
+
writeSecretFile(tokenPath, grant.actorToken);
|
|
543
|
+
writeSecretFile(sentinelPath, grant.sentinelCreds);
|
|
544
|
+
rmSync(healthPath, { force: true });
|
|
545
|
+
provenance.wrote(`actor grant ${owner}.${name} (user mode)`, tokenPath);
|
|
546
|
+
const bearerCmd = [
|
|
547
|
+
process.execPath,
|
|
548
|
+
...process.execArgv,
|
|
549
|
+
process.argv[1],
|
|
550
|
+
provider.agentBearerCommand,
|
|
551
|
+
"--dir", dir,
|
|
552
|
+
"--space", space,
|
|
553
|
+
"--owner", owner,
|
|
554
|
+
"--actor", name,
|
|
555
|
+
"--token-file", tokenPath,
|
|
556
|
+
"--health-file", healthPath,
|
|
557
|
+
];
|
|
558
|
+
await new Promise((res, rej) => {
|
|
559
|
+
execFile(bearerCmd[0], bearerCmd.slice(1), { timeout: 30_000, maxBuffer: 64 * 1024 }, (err, _stdout, stderr) => {
|
|
560
|
+
if (err)
|
|
561
|
+
return rej(new Error(stderr.trim() || err.message));
|
|
562
|
+
res();
|
|
563
|
+
});
|
|
564
|
+
});
|
|
565
|
+
return {
|
|
566
|
+
userAuth: { owner, actor: name, sentinelCredsPath: sentinelPath, bearerCmd },
|
|
567
|
+
// The foreground departure's half of the runtime-grant invariant: the caller runs this when
|
|
568
|
+
// the agent process exits — revoke the row, shred the secret material.
|
|
569
|
+
cleanup: async () => {
|
|
570
|
+
await provider.revokeAgent({ dir, owner, actor: name });
|
|
571
|
+
rmSync(tokenPath, { force: true });
|
|
572
|
+
rmSync(sentinelPath, { force: true });
|
|
573
|
+
rmSync(healthPath, { force: true });
|
|
574
|
+
},
|
|
575
|
+
};
|
|
576
|
+
}
|
|
577
|
+
catch (e) {
|
|
578
|
+
// Roll back EVERYTHING this attempt materialized, including the broker footprint the durable
|
|
579
|
+
// provisioning above created — a refused spawn leaves no row, no secret, no orphaned durables.
|
|
580
|
+
await provider.revokeAgent({ dir, owner, actor: name }).catch(() => { });
|
|
581
|
+
rmSync(tokenPath, { force: true });
|
|
582
|
+
rmSync(sentinelPath, { force: true });
|
|
583
|
+
rmSync(healthPath, { force: true });
|
|
584
|
+
const targetId = principalKey(owner, name).key;
|
|
585
|
+
await mintCreds(infra, newIdentity(), "deprovisioner", { deprovisionTarget: targetId })
|
|
586
|
+
.then((creds) => deprovisionAgent({ servers: server, space, targetId, creds }))
|
|
587
|
+
.catch((err) => console.error(c.red(`✗ rollback deprovision ${name}: ${err.message}`)));
|
|
588
|
+
return fail(`agent auth preflight failed for "${name}": ${e.message}`);
|
|
589
|
+
}
|
|
379
590
|
}
|
|
380
591
|
//# sourceMappingURL=spawn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/commands/spawn.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/commands/spawn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,UAAU,EAEhB,MAAM,gBAAgB,CAAC;AAqBxB,eAAO,MAAM,WAAW;;;;;;;;;;EAAmC,CAAC;AAI5D,8FAA8F;AAC9F,wBAAsB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAW5D"}
|
package/dist/commands/status.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import { CotalEndpoint, isReachable, mintCreds, newIdentity, } from "@cotal-ai/core";
|
|
4
|
-
import { authDir, findCotalRoot, getCurrent, isWorkspaceTargetError, loadExtensionsManifest, loadMeshes, loadSpaceAuth, preflightTarget, resolveMeshTarget, serverFlag, spaceFlag, } from "@cotal-ai/workspace";
|
|
3
|
+
import { CotalEndpoint, isReachable, mintCreds, newIdentity, resolveAuthProvider, } from "@cotal-ai/core";
|
|
4
|
+
import { authDir, CLI_USER_ACTOR, findCotalRoot, getCurrent, isWorkspaceTargetError, loadExtensionsManifest, loadMeshes, loadSpaceAuth, preflightTarget, resolveMeshTarget, serverFlag, spaceFlag, userAuthStateDir, } from "@cotal-ai/workspace";
|
|
5
5
|
import { managerHasDeliveryMarker } from "../lib/manager-proc.js";
|
|
6
6
|
import { machineStatus, webUp, WEB_URL } from "../lib/status.js";
|
|
7
7
|
import { displayCmd } from "../lib/self-exec.js";
|
|
@@ -33,11 +33,14 @@ async function printMachine() {
|
|
|
33
33
|
}
|
|
34
34
|
function printProject(root) {
|
|
35
35
|
const auth = loadSpaceAuth(authDir(root));
|
|
36
|
+
const userDisk = auth && existsSync(userAuthStateDir(root, auth.space));
|
|
36
37
|
section("This Folder");
|
|
37
38
|
row("root", root);
|
|
38
|
-
row("auth", auth ? c.green(`space ${auth.space}`) : c.dim("none (open/local only)"));
|
|
39
|
+
row("auth", auth ? c.green(`space ${auth.space}${userDisk ? " · user-auth" : ""}`) : c.dim("none (open/local only)"));
|
|
39
40
|
row("personas", personaSummary(root));
|
|
40
41
|
row("nats", formatProc(proc(root, "nats.pid")));
|
|
42
|
+
if (userDisk)
|
|
43
|
+
row("auth-service", formatProc(proc(root, `auth-service.${encodeURIComponent(auth.space)}.pid`)));
|
|
41
44
|
row("delivery", formatProc(proc(root, "delivery.pid")));
|
|
42
45
|
const mgr = proc(root, "manager.pid");
|
|
43
46
|
row("manager", `${formatProc(mgr)}${mgr.live ? c.dim(managerHasDeliveryMarker() ? " · delivery-aware" : " · old/unknown build") : ""}`);
|
|
@@ -48,7 +51,7 @@ async function printRegistry() {
|
|
|
48
51
|
const current = getCurrent();
|
|
49
52
|
section("Recorded Meshes");
|
|
50
53
|
if (!meshes.length) {
|
|
51
|
-
console.log(c.dim(" none
|
|
54
|
+
console.log(c.dim(" none - start one with `cotal up --detach`"));
|
|
52
55
|
return;
|
|
53
56
|
}
|
|
54
57
|
const pad = Math.max(...meshes.map((m) => m.space.length));
|
|
@@ -76,9 +79,46 @@ async function printTarget(cwd, values, cmd) {
|
|
|
76
79
|
}
|
|
77
80
|
row("space", target.space);
|
|
78
81
|
row("server", target.server);
|
|
79
|
-
row("mode", target.
|
|
82
|
+
row("mode", target.mode);
|
|
83
|
+
if (target.userAuth)
|
|
84
|
+
row("idp", target.userAuth.idp.url);
|
|
80
85
|
row("source", target.source);
|
|
81
86
|
row("root", target.root);
|
|
87
|
+
if (target.mode === "user") {
|
|
88
|
+
// Status never static-mints on a user-auth mesh (the flip). Everything here is offline
|
|
89
|
+
// introspection — the login cache + the locally-readable ledger — plus, only when this
|
|
90
|
+
// machine holds a signed-in AND granted login, a real user-mode connect for the snapshot.
|
|
91
|
+
const live = await isReachable(target.server);
|
|
92
|
+
row("connection", live ? c.green("reachable") : c.red("unreachable"));
|
|
93
|
+
const stateDir = userAuthStateDir(target.root, target.space);
|
|
94
|
+
let st;
|
|
95
|
+
try {
|
|
96
|
+
st = await resolveAuthProvider().userStatus({ dir: stateDir, space: target.space, actor: CLI_USER_ACTOR });
|
|
97
|
+
}
|
|
98
|
+
catch (e) {
|
|
99
|
+
row("login", c.dim(e.message));
|
|
100
|
+
}
|
|
101
|
+
if (st && !st.login)
|
|
102
|
+
row("login", c.yellow(`not signed in - ${cmd} login --idp ${st.idpUrl}`));
|
|
103
|
+
if (st?.login) {
|
|
104
|
+
row("login", c.green(st.login.sub) + c.dim(` · session until ${new Date(st.login.expiresAt * 1000).toISOString()}`));
|
|
105
|
+
if (st.grant === "not-granted")
|
|
106
|
+
row("actor", c.yellow(`"${CLI_USER_ACTOR}" not granted - ${cmd} actor grant ${CLI_USER_ACTOR} --sub ${st.login.sub}`));
|
|
107
|
+
else if (st.grant)
|
|
108
|
+
row("actor", c.green(`"${CLI_USER_ACTOR}" granted${st.grant.label ? ` (${st.grant.label})` : ""}`) +
|
|
109
|
+
c.dim(` - read [${st.grant.allowSubscribe.join(", ")}], post [${st.grant.allowPublish.join(", ")}]${st.grant.scope.length ? `, scope [${st.grant.scope.join(", ")}]` : ""}`));
|
|
110
|
+
else
|
|
111
|
+
row("actor", c.dim("grant not checkable on this machine (no local ledger)"));
|
|
112
|
+
}
|
|
113
|
+
const granted = Boolean(st?.login && st.grant && st.grant !== "not-granted");
|
|
114
|
+
if (live && granted) {
|
|
115
|
+
await userLiveSnapshot(target, stateDir).catch((e) => row("live snapshot", c.dim(`unavailable (${e.message})`)));
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
row("live snapshot", c.dim(live ? "needs a signed-in, granted login (see above)" : "broker unreachable"));
|
|
119
|
+
}
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
82
122
|
const preflight = await preflightTarget(target);
|
|
83
123
|
if (!preflight.ok) {
|
|
84
124
|
row("connection", c.red(`${preflight.kind}${preflight.prune ? " (stale registry entry)" : ""}`));
|
|
@@ -103,6 +143,31 @@ async function liveSnapshot(target) {
|
|
|
103
143
|
watchChannels: watchBrokerState,
|
|
104
144
|
card: { id: id.id, name: "status", kind: "endpoint" },
|
|
105
145
|
});
|
|
146
|
+
await renderSnapshot(ep, watchBrokerState);
|
|
147
|
+
}
|
|
148
|
+
/** The user-auth live snapshot: the same read-only roster/channels view, connected as THIS
|
|
149
|
+
* machine's signed-in, ledger-granted login (bearer + sentinel — the flip forbids a status mint). */
|
|
150
|
+
async function userLiveSnapshot(target, stateDir) {
|
|
151
|
+
const { bearer, sentinelCreds } = await resolveAuthProvider().userCredentials({
|
|
152
|
+
dir: stateDir,
|
|
153
|
+
space: target.space,
|
|
154
|
+
actor: CLI_USER_ACTOR,
|
|
155
|
+
});
|
|
156
|
+
const ep = new CotalEndpoint({
|
|
157
|
+
space: target.space,
|
|
158
|
+
servers: target.server,
|
|
159
|
+
bearer,
|
|
160
|
+
sentinelCreds,
|
|
161
|
+
channels: [],
|
|
162
|
+
consume: false,
|
|
163
|
+
registerPresence: false,
|
|
164
|
+
watchPresence: true,
|
|
165
|
+
watchChannels: true,
|
|
166
|
+
card: { name: "status", kind: "endpoint" }, // card.id derives from the bearer principal
|
|
167
|
+
});
|
|
168
|
+
await renderSnapshot(ep, true);
|
|
169
|
+
}
|
|
170
|
+
async function renderSnapshot(ep, watchBrokerState) {
|
|
106
171
|
ep.on("error", () => { });
|
|
107
172
|
await ep.start();
|
|
108
173
|
try {
|
|
@@ -114,7 +179,7 @@ async function liveSnapshot(target) {
|
|
|
114
179
|
: c.dim("skipped in open mode (read-only)"));
|
|
115
180
|
for (const p of roster.slice(0, 8)) {
|
|
116
181
|
const label = p.card.role ? `${p.card.name}/${p.card.role}` : p.card.name;
|
|
117
|
-
console.log(` ${statusBadge(p.status)} ${label}${p.activity ? c.dim(`
|
|
182
|
+
console.log(` ${statusBadge(p.status)} ${label}${p.activity ? c.dim(` - ${p.activity}`) : ""}`);
|
|
118
183
|
}
|
|
119
184
|
if (roster.length > 8)
|
|
120
185
|
console.log(c.dim(` +${roster.length - 8} more`));
|