@cotal-ai/cli 0.10.0 → 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 +42 -5
- 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.d.ts +29 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +54 -0
- package/dist/commands/models.js.map +1 -0
- 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 +11 -0
- package/dist/commands/spawn.d.ts.map +1 -1
- package/dist/commands/spawn.js +276 -47
- package/dist/commands/spawn.js.map +1 -1
- package/dist/commands/status.d.ts +15 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +237 -0
- package/dist/commands/status.js.map +1 -0
- 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 +48 -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 +12 -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 +6 -1
- package/dist/lib/manifest/model.d.ts.map +1 -1
- package/dist/lib/manifest/prepare.d.ts +4 -1
- package/dist/lib/manifest/prepare.d.ts.map +1 -1
- package/dist/lib/manifest/prepare.js +8 -3
- 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 +20 -6
- package/dist/lib/manifest/resolve.js.map +1 -1
- package/dist/lib/manifest/schema.d.ts +6 -1
- package/dist/lib/manifest/schema.d.ts.map +1 -1
- package/dist/lib/manifest/schema.js +12 -3
- package/dist/lib/manifest/schema.js.map +1 -1
- package/dist/lib/self-exec.d.ts +7 -2
- package/dist/lib/self-exec.d.ts.map +1 -1
- package/dist/lib/self-exec.js +14 -3
- package/dist/lib/self-exec.js.map +1 -1
- package/dist/lib/setup-log.js +1 -1
- package/dist/lib/status.d.ts +1 -1
- package/dist/lib/status.d.ts.map +1 -1
- package/dist/lib/status.js +22 -5
- package/dist/lib/status.js.map +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
|
@@ -55,17 +55,17 @@ export async function downManifest(file, flags) {
|
|
|
55
55
|
specPath = join(runParent ?? join(root, ".cotal", "run"), `${ledger.runId}.json`);
|
|
56
56
|
}
|
|
57
57
|
catch (e) {
|
|
58
|
-
console.error(c.red(`✗ refusing teardown
|
|
58
|
+
console.error(c.red(`✗ refusing teardown - unsafe owned resource: ${e.message}`));
|
|
59
59
|
process.exit(1);
|
|
60
60
|
}
|
|
61
61
|
if (flags.dryRun) {
|
|
62
62
|
console.log(c.bold("\nWould remove (dry run):"));
|
|
63
63
|
for (const a of credPaths)
|
|
64
|
-
console.log(` ${c.red("-")} agent ${a.name} ${c.dim(`(id ${a.id.slice(0, 8)}, creds ${a.path})
|
|
64
|
+
console.log(` ${c.red("-")} agent ${a.name} ${c.dim(`(id ${a.id.slice(0, 8)}, creds ${a.path}) - stopped only if name+id match live`)}`);
|
|
65
65
|
for (const ch of ledger.created.channels)
|
|
66
66
|
console.log(` ${c.red("-")} channel ${c.cyan("#" + ch)} ${c.dim("(auth mesh: only if no members remain · open mesh: metadata cleanup, no membership audit)")}`);
|
|
67
67
|
console.log(` ${c.red("-")} run dir ${runDir ?? "(none)"} + ledger ${ledgerPath} ${c.dim("(only if every owned resource is removed/proven gone; else the ledger is kept)")}`);
|
|
68
|
-
console.log(c.dim("\nDry run
|
|
68
|
+
console.log(c.dim("\nDry run - nothing was changed. The live membership check + actual disposition happen at apply."));
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
71
|
// 4) Best-effort live teardown: stop owned agents (name AND id match) + remove childless owned
|
|
@@ -97,7 +97,7 @@ export async function downManifest(file, flags) {
|
|
|
97
97
|
if (!l) {
|
|
98
98
|
const sameName = live.find((r) => r.name === a.name);
|
|
99
99
|
if (sameName)
|
|
100
|
-
console.log(c.yellow(` ~ ${a.name}: a different agent (id ${sameName.id.slice(0, 8)}) holds this name
|
|
100
|
+
console.log(c.yellow(` ~ ${a.name}: a different agent (id ${sameName.id.slice(0, 8)}) holds this name - NOT ours, left running`));
|
|
101
101
|
else
|
|
102
102
|
console.log(c.dim(` • ${a.name}: not running`));
|
|
103
103
|
continue;
|
|
@@ -108,7 +108,7 @@ export async function downManifest(file, flags) {
|
|
|
108
108
|
console.log(c.green(` ✓ stopped ${l.name}`));
|
|
109
109
|
}
|
|
110
110
|
else {
|
|
111
|
-
console.log(c.yellow(` ! ${l.name}: stop failed
|
|
111
|
+
console.log(c.yellow(` ! ${l.name}: stop failed - ${stop.error ?? "unknown"}`));
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
// Channel removal: skip on ANY uncertainty (best-effort, racy — said so in output). The
|
|
@@ -152,11 +152,11 @@ export async function downManifest(file, flags) {
|
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
catch (e) {
|
|
155
|
-
console.log(c.yellow(` ! ${ledger.server}: control plane unavailable (${e.message})
|
|
155
|
+
console.log(c.yellow(` ! ${ledger.server}: control plane unavailable (${e.message}) - nothing torn down remotely; the ledger is RETAINED for a later \`down -f --run ${ledger.runId}\``));
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
158
|
else {
|
|
159
|
-
console.log(c.yellow(` ! ${ledger.server} unreachable
|
|
159
|
+
console.log(c.yellow(` ! ${ledger.server} unreachable - can't stop processes or remove channels; the ledger is RETAINED for a later \`down -f --run ${ledger.runId}\``));
|
|
160
160
|
}
|
|
161
161
|
// 5) Remote resolution: which owned REMOTE resources are NOT proven handled. An agent is unresolved
|
|
162
162
|
// if the broker was unreachable, or it's still live under our recorded id and its stop failed (an
|
|
@@ -186,11 +186,11 @@ export async function downManifest(file, flags) {
|
|
|
186
186
|
if (sub === undefined)
|
|
187
187
|
continue; // no cred file — proven absent
|
|
188
188
|
if (sub === null) {
|
|
189
|
-
console.error(c.yellow(` ! ${cp.name} creds: unreadable/unverifiable
|
|
189
|
+
console.error(c.yellow(` ! ${cp.name} creds: unreadable/unverifiable - left in place (resolve by hand if it's a stale cred)`));
|
|
190
190
|
continue;
|
|
191
191
|
}
|
|
192
192
|
if (sub !== cp.id) {
|
|
193
|
-
console.error(c.yellow(` ~ ${cp.name} creds belong to a different agent (id ${sub.slice(0, 8)} ≠ ${cp.id.slice(0, 8)})
|
|
193
|
+
console.error(c.yellow(` ~ ${cp.name} creds belong to a different agent (id ${sub.slice(0, 8)} ≠ ${cp.id.slice(0, 8)}) - ours is gone, left in place`));
|
|
194
194
|
continue;
|
|
195
195
|
}
|
|
196
196
|
try {
|
|
@@ -198,7 +198,7 @@ export async function downManifest(file, flags) {
|
|
|
198
198
|
console.log(c.dim(` • removed creds for ${cp.name}`));
|
|
199
199
|
}
|
|
200
200
|
catch (e) {
|
|
201
|
-
console.error(c.yellow(` ! ${cp.name} creds: ${e.message}
|
|
201
|
+
console.error(c.yellow(` ! ${cp.name} creds: ${e.message} - retained for retry`));
|
|
202
202
|
unresolvedCredIds.add(cp.id); // OUR id-verified cred, unlink failed (recoverable) → keep the record
|
|
203
203
|
}
|
|
204
204
|
}
|
|
@@ -209,9 +209,9 @@ export async function downManifest(file, flags) {
|
|
|
209
209
|
const retainIds = new Set([...unresolvedIds, ...unresolvedCredIds]);
|
|
210
210
|
const complete = retainIds.size === 0 && unresolvedChannels.length === 0;
|
|
211
211
|
for (const s of skipped)
|
|
212
|
-
console.log(c.yellow(` ~ left ${c.cyan("#" + s.channel)}: ${s.why}`) + c.dim(" (best-effort membership check
|
|
212
|
+
console.log(c.yellow(` ~ left ${c.cyan("#" + s.channel)}: ${s.why}`) + c.dim(" (best-effort membership check - racy)"));
|
|
213
213
|
if (openNoFeed.length)
|
|
214
|
-
console.log(c.dim(` note: removed ${openNoFeed.length} channel(s) on an OPEN mesh with no membership feed
|
|
214
|
+
console.log(c.dim(` note: removed ${openNoFeed.length} channel(s) on an OPEN mesh with no membership feed - no ACL isolation to protect, no membership proof: ${openNoFeed.map((n) => "#" + n).join(", ")}`));
|
|
215
215
|
if (complete) {
|
|
216
216
|
// Everything owned is removed/proven gone — safe to delete the run dir + launch spec + ledger.
|
|
217
217
|
try {
|
|
@@ -228,7 +228,7 @@ export async function downManifest(file, flags) {
|
|
|
228
228
|
catch (e) {
|
|
229
229
|
console.error(c.yellow(` ! ledger: ${e.message}`));
|
|
230
230
|
}
|
|
231
|
-
console.log(c.green(`✓ torn down run ${ledger.runId}`) + (removed.length ? c.dim(`
|
|
231
|
+
console.log(c.green(`✓ torn down run ${ledger.runId}`) + (removed.length ? c.dim(` - removed ${removed.length} channel(s): ${removed.map((n) => "#" + n).join(", ")}`) : ""));
|
|
232
232
|
}
|
|
233
233
|
else {
|
|
234
234
|
// Partial: rewrite the ledger DOWN to the unresolved resources so a later `down -f --run` finishes.
|
|
@@ -236,9 +236,9 @@ export async function downManifest(file, flags) {
|
|
|
236
236
|
const remaining = { ...ledger, created: { channels: unresolvedChannels, agents: remainAgents } };
|
|
237
237
|
writeLedger(root, remaining, { update: true });
|
|
238
238
|
console.log(c.yellow(`! partial teardown of run ${ledger.runId}`) +
|
|
239
|
-
c.dim(`
|
|
239
|
+
c.dim(` - ${remainAgents.length} agent(s) + ${unresolvedChannels.length} channel(s) still owned; ledger kept`));
|
|
240
240
|
if (unresolvedCredIds.size)
|
|
241
|
-
console.log(c.dim(` local credential cleanup incomplete for ${unresolvedCredIds.size} agent(s)
|
|
241
|
+
console.log(c.dim(` local credential cleanup incomplete for ${unresolvedCredIds.size} agent(s) - ledger kept for retry`));
|
|
242
242
|
console.log(c.dim(` finish later (broker up / members gone): cotal down -f ${ledger.manifestPath} --run ${ledger.runId}`));
|
|
243
243
|
process.exitCode = 1; // not a full success
|
|
244
244
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAOjD;;;0FAG0F;AAC1F,wBAAsB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAOjD;;;0FAG0F;AAC1F,wBAAsB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC1D"}
|
package/dist/commands/down.js
CHANGED
|
@@ -15,19 +15,25 @@ export async function down(args) {
|
|
|
15
15
|
await downManifest(values.file ?? "<run>", { run: values.run, dryRun: Boolean(values["dry-run"]) });
|
|
16
16
|
return;
|
|
17
17
|
}
|
|
18
|
+
// The auth service's pid file is SPACE-scoped (auth-service.<space>.pid) — resolve the space
|
|
19
|
+
// first, so `down` can only ever stop THIS folder's space's daemon, never another space's.
|
|
20
|
+
const space = resolveSpace(process.cwd());
|
|
18
21
|
const targets = [
|
|
19
22
|
["manager.pid", "manager"],
|
|
20
23
|
["delivery.pid", "delivery daemon"],
|
|
24
|
+
[`auth-service.${encodeURIComponent(space)}.pid`, "user-auth service"],
|
|
21
25
|
["web.pid", "web dashboard"],
|
|
22
26
|
["nats.pid", "nats-server"],
|
|
23
27
|
];
|
|
24
28
|
let any = false;
|
|
29
|
+
// Sequential, in declared order (manager → delivery → web → nats): the manager's graceful shutdown
|
|
30
|
+
// releases its lease OVER nats, so nats must outlive it. Each stop awaits the real exit.
|
|
25
31
|
for (const [file, label] of targets) {
|
|
26
32
|
const pidPath = cotalPath(file);
|
|
27
33
|
if (!existsSync(pidPath))
|
|
28
34
|
continue;
|
|
29
35
|
any = true;
|
|
30
|
-
stop(pidPath, label);
|
|
36
|
+
await stop(pidPath, label);
|
|
31
37
|
}
|
|
32
38
|
// Non-pid control-plane artifacts: the delivery daemon's scoped creds + the manager's delivery-aware
|
|
33
39
|
// marker. Drop them with the processes so a stale creds file / marker never lingers.
|
|
@@ -37,7 +43,6 @@ export async function down(args) {
|
|
|
37
43
|
// owns the whole mesh, so tearing it down clears all run dirs — they're never authoritative source.
|
|
38
44
|
rmSync(cotalPath("run"), { recursive: true, force: true });
|
|
39
45
|
// Drop this folder's mesh from the registry (and the `current` pointer if it was the default).
|
|
40
|
-
const space = resolveSpace(process.cwd());
|
|
41
46
|
removeMesh(space);
|
|
42
47
|
if (getCurrent() === space)
|
|
43
48
|
clearCurrent();
|
|
@@ -46,15 +51,47 @@ export async function down(args) {
|
|
|
46
51
|
process.exit(1);
|
|
47
52
|
}
|
|
48
53
|
}
|
|
49
|
-
|
|
54
|
+
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
55
|
+
const isAlive = (pid) => {
|
|
56
|
+
try {
|
|
57
|
+
process.kill(pid, 0);
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
/** Stop one recorded process and AWAIT its actual exit — SIGTERM starts a graceful shutdown (a
|
|
65
|
+
* manager reaps its agents and releases its JetStream lease over NATS, which isn't instant), so
|
|
66
|
+
* returning before the process is really gone would let callers (and `up`-style smokes) race a
|
|
67
|
+
* still-dying manager. Poll the pid, escalate to SIGKILL if it overstays, then confirm it's gone. */
|
|
68
|
+
async function stop(pidPath, label) {
|
|
50
69
|
const pid = Number(readFileSync(pidPath, "utf8").trim());
|
|
70
|
+
// Drop the pidfile up front so a concurrent `down` can't double-signal a reused pid.
|
|
71
|
+
rmSync(pidPath, { force: true });
|
|
72
|
+
if (!Number.isFinite(pid))
|
|
73
|
+
return;
|
|
51
74
|
try {
|
|
52
75
|
process.kill(pid, "SIGTERM");
|
|
53
|
-
console.log(c.green(`✓ stopped ${label} (pid ${pid})`));
|
|
54
76
|
}
|
|
55
77
|
catch {
|
|
56
78
|
console.log(c.dim(`${label} (pid ${pid}) was not running.`));
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const graceDeadline = Date.now() + 15_000;
|
|
82
|
+
while (isAlive(pid) && Date.now() < graceDeadline)
|
|
83
|
+
await sleep(100);
|
|
84
|
+
if (isAlive(pid)) {
|
|
85
|
+
try {
|
|
86
|
+
process.kill(pid, "SIGKILL");
|
|
87
|
+
}
|
|
88
|
+
catch { /* raced to exit */ }
|
|
89
|
+
const hardDeadline = Date.now() + 3_000;
|
|
90
|
+
while (isAlive(pid) && Date.now() < hardDeadline)
|
|
91
|
+
await sleep(100);
|
|
57
92
|
}
|
|
58
|
-
|
|
93
|
+
console.log(isAlive(pid)
|
|
94
|
+
? c.red(`✗ ${label} (pid ${pid}) did not exit`)
|
|
95
|
+
: c.green(`✓ stopped ${label} (pid ${pid})`));
|
|
59
96
|
}
|
|
60
97
|
//# sourceMappingURL=down.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"down.js","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAmB,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;0FAG0F;AAC1F,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAgB;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,MAA8D,CAAC;IACnF,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;QACpG,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAA4B;QACvC,CAAC,aAAa,EAAE,SAAS,CAAC;QAC1B,CAAC,cAAc,EAAE,iBAAiB,CAAC;QACnC,CAAC,SAAS,EAAE,eAAe,CAAC;QAC5B,CAAC,UAAU,EAAE,aAAa,CAAC;KAC5B,CAAC;IACF,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,SAAS;QACnC,GAAG,GAAG,IAAI,CAAC;QACX,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"down.js","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/ext.js
CHANGED
|
@@ -99,7 +99,7 @@ async function add(spec) {
|
|
|
99
99
|
// The spec's package must now be a prefix dependency — anything else is a failed install.
|
|
100
100
|
const deps = JSON.parse(readFileSync(join(dir, "package.json"), "utf8")).dependencies ?? {};
|
|
101
101
|
if (!deps[pkg]) {
|
|
102
|
-
console.error(c.red(`✗ npm install succeeded but "${pkg}" is not among the prefix dependencies
|
|
102
|
+
console.error(c.red(`✗ npm install succeeded but "${pkg}" is not among the prefix dependencies - remove and retry`));
|
|
103
103
|
process.exit(1);
|
|
104
104
|
}
|
|
105
105
|
const pkgDir = extensionPackageDir(pkg);
|
|
@@ -109,10 +109,10 @@ async function add(spec) {
|
|
|
109
109
|
// any other shared package would silently drift from the binary's. Fail with the exact reason.
|
|
110
110
|
const vendored = Object.keys(pkgMeta.dependencies ?? {}).filter((d) => d.startsWith("@cotal-ai/"));
|
|
111
111
|
if (vendored.length) {
|
|
112
|
-
fail(pkg, `declares ${vendored.join(", ")} as a regular dependency
|
|
112
|
+
fail(pkg, `declares ${vendored.join(", ")} as a regular dependency - shared @cotal-ai/* packages must be peerDependencies, or the extension runs its own copy (core's would swallow its command registrations; any other's drifts from this CLI's)`);
|
|
113
113
|
}
|
|
114
114
|
if (!pkgMeta.peerDependencies?.["@cotal-ai/core"]) {
|
|
115
|
-
fail(pkg, `does not declare @cotal-ai/core as a peerDependency
|
|
115
|
+
fail(pkg, `does not declare @cotal-ai/core as a peerDependency - a cotal CLI extension must (its extension objects register into core's registry)`);
|
|
116
116
|
}
|
|
117
117
|
// Link every shared @cotal-ai/* peer to the RUNNING binary's copy, so the extension's imports
|
|
118
118
|
// land on our singletons — core's registry above all. npm ignored the peers at install
|
|
@@ -124,7 +124,7 @@ async function add(spec) {
|
|
|
124
124
|
src = ourPackageDir(peer);
|
|
125
125
|
}
|
|
126
126
|
catch {
|
|
127
|
-
fail(pkg, `peer-depends on ${peer}, which this cotal binary does not carry
|
|
127
|
+
fail(pkg, `peer-depends on ${peer}, which this cotal binary does not carry - the peer can't be linked, so the extension could never resolve it`);
|
|
128
128
|
}
|
|
129
129
|
const dest = join(dir, "node_modules", ...peer.split("/"));
|
|
130
130
|
rmSync(dest, { recursive: true, force: true });
|
|
@@ -142,7 +142,7 @@ async function add(spec) {
|
|
|
142
142
|
}
|
|
143
143
|
const contributed = registry.all("command").filter((cm) => !before.has(cm.name));
|
|
144
144
|
if (!contributed.length) {
|
|
145
|
-
fail(pkg, `imported cleanly but registered no commands in THIS CLI's registry
|
|
145
|
+
fail(pkg, `imported cleanly but registered no commands in THIS CLI's registry - if it bundles its own @cotal-ai/core, make core a peerDependency`);
|
|
146
146
|
}
|
|
147
147
|
// Builtin collisions can't happen here (registry.register throws on a duplicate, surfacing as
|
|
148
148
|
// failed-to-import above, naming the extension). OTHER installed extensions are invisible to the
|
|
@@ -152,14 +152,14 @@ async function add(spec) {
|
|
|
152
152
|
for (const cm of contributed) {
|
|
153
153
|
const other = manifest.extensions.find((e) => e.pkg !== pkg && e.commands.some((oc) => oc.name === cm.name));
|
|
154
154
|
if (other) {
|
|
155
|
-
fail(pkg, `contributes "${cm.name}", already provided by installed extension ${other.pkg}@${other.version}
|
|
155
|
+
fail(pkg, `contributes "${cm.name}", already provided by installed extension ${other.pkg}@${other.version} - two extensions cannot claim one command; \`cotal ext remove ${other.pkg}\` first if you want this one`);
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
158
|
const version = pkgMeta.version ?? "0.0.0";
|
|
159
159
|
const entry = { pkg, version, spec: resolved, commands: contributed.map(cacheCommand) };
|
|
160
160
|
saveExtensionsManifest({ extensions: [...manifest.extensions.filter((e) => e.pkg !== pkg), entry] });
|
|
161
161
|
provenance.wrote(`extensions manifest (+${pkg}@${version})`, extensionsManifestPath());
|
|
162
|
-
console.log(c.green(`✓ added ${pkg}@${version}`) + c.dim(`
|
|
162
|
+
console.log(c.green(`✓ added ${pkg}@${version}`) + c.dim(` - commands: ${contributed.map((cm) => cm.name).join(", ")}`));
|
|
163
163
|
function fail(p, why) {
|
|
164
164
|
npm(["remove", "--no-audit", "--no-fund", p], dir); // roll the prefix back
|
|
165
165
|
console.error(c.red(`✗ ${p} ${why}`));
|
|
@@ -188,14 +188,14 @@ function packageNameFromSpec(resolved, isPath) {
|
|
|
188
188
|
const m = /^(@[^/@]+\/[^/@]+|[^/@]+)(@.*)?$/.exec(resolved);
|
|
189
189
|
if (m)
|
|
190
190
|
return m[1];
|
|
191
|
-
console.error(c.red(`✗ unsupported extension spec "${resolved}"
|
|
191
|
+
console.error(c.red(`✗ unsupported extension spec "${resolved}" - use a local path or a registry name[@version]`));
|
|
192
192
|
process.exit(1);
|
|
193
193
|
}
|
|
194
194
|
async function remove(pkg) {
|
|
195
195
|
const manifest = loadExtensionsManifest();
|
|
196
196
|
const entry = manifest.extensions.find((e) => e.pkg === pkg);
|
|
197
197
|
if (!entry) {
|
|
198
|
-
console.error(c.red(`✗ no installed extension "${pkg}"
|
|
198
|
+
console.error(c.red(`✗ no installed extension "${pkg}" - see \`cotal ext list\``));
|
|
199
199
|
process.exit(1);
|
|
200
200
|
}
|
|
201
201
|
const r = npm(["remove", "--no-audit", "--no-fund", pkg], extensionsDir());
|
|
@@ -205,12 +205,12 @@ async function remove(pkg) {
|
|
|
205
205
|
}
|
|
206
206
|
saveExtensionsManifest({ extensions: manifest.extensions.filter((e) => e.pkg !== pkg) });
|
|
207
207
|
provenance.wrote(`extensions manifest (−${pkg})`, extensionsManifestPath());
|
|
208
|
-
console.log(c.green(`✓ removed ${pkg}`) + c.dim(`
|
|
208
|
+
console.log(c.green(`✓ removed ${pkg}`) + c.dim(` - commands gone: ${entry.commands.map((cm) => cm.name).join(", ")}`));
|
|
209
209
|
}
|
|
210
210
|
function list() {
|
|
211
211
|
const { extensions } = loadExtensionsManifest();
|
|
212
212
|
if (!extensions.length) {
|
|
213
|
-
console.log(c.dim("(no extensions installed
|
|
213
|
+
console.log(c.dim("(no extensions installed - add one with `cotal ext add <npm-package>`)"));
|
|
214
214
|
return;
|
|
215
215
|
}
|
|
216
216
|
for (const e of extensions) {
|
|
@@ -43,7 +43,7 @@ export async function feedback(args) {
|
|
|
43
43
|
else {
|
|
44
44
|
const email = values.email ?? process.env.COTAL_FEEDBACK_EMAIL?.trim() ?? gitEmail();
|
|
45
45
|
if (!email) {
|
|
46
|
-
console.error(c.red("The public feedback intake needs a traceable contact email
|
|
46
|
+
console.error(c.red("The public feedback intake needs a traceable contact email - pass --email or set COTAL_FEEDBACK_EMAIL."));
|
|
47
47
|
process.exit(1);
|
|
48
48
|
}
|
|
49
49
|
body.email = email;
|
|
@@ -61,7 +61,7 @@ export async function feedback(args) {
|
|
|
61
61
|
console.error(c.red(`Feedback rejected (${res.status}${reply.error ? `: ${reply.error}` : ""}).`));
|
|
62
62
|
process.exit(1);
|
|
63
63
|
}
|
|
64
|
-
console.log(`Feedback sent${reply.id ? `
|
|
64
|
+
console.log(`Feedback sent${reply.id ? ` - id ${c.cyan(reply.id)}` : ""}. Thanks!`);
|
|
65
65
|
}
|
|
66
66
|
function gitEmail() {
|
|
67
67
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIpE;mFACmF;AACnF,wBAAsB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIpE;mFACmF;AACnF,wBAAsB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B7D"}
|
package/dist/commands/history.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { clearSpaceHistory } from "@cotal-ai/core";
|
|
2
|
-
import { connectOrExit } from "../lib/connect.js";
|
|
2
|
+
import { connectOrExit, userViewAuthOrExit } from "../lib/connect.js";
|
|
3
3
|
import { c } from "../ui.js";
|
|
4
4
|
/** Administrative history operations. Purges JetStream backlog only; live in-process
|
|
5
5
|
* agent buffers may still contain messages already delivered before the purge. */
|
|
@@ -17,11 +17,15 @@ export async function history(args) {
|
|
|
17
17
|
// off-registry connect. `history clear` is purge-only and destructive, so it mints exactly the purge
|
|
18
18
|
// grant (STREAM.PURGE on CHAT + DM), not the broad operator cred; targeting the RIGHT mesh matters, so
|
|
19
19
|
// this no longer blindly hits DEFAULT_SERVER + the cwd space.
|
|
20
|
-
const
|
|
20
|
+
const conn = await connectOrExit(values, "purger");
|
|
21
|
+
// USER MODE: the destructive purge rides a one-shot "purger" VIEW bearer, exchange-gated on
|
|
22
|
+
// ledger scope "admin" (the refusal names the exact re-grant).
|
|
23
|
+
const user = conn.bearer ? await userViewAuthOrExit(conn, "purger") : undefined;
|
|
24
|
+
const { server, space, creds } = conn;
|
|
21
25
|
const result = await clearSpaceHistory({
|
|
22
26
|
servers: server,
|
|
23
27
|
space,
|
|
24
|
-
creds,
|
|
28
|
+
...(user ? { bearer: user.bearer, sentinelCreds: user.sentinelCreds } : { creds }),
|
|
25
29
|
includeDms: values.dms,
|
|
26
30
|
});
|
|
27
31
|
const dm = result.dm === undefined ? "" : `, ${result.dm} DM message${result.dm === 1 ? "" : "s"}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAE7B;mFACmF;AACnF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAgB;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAA6F,CAAC;IAElH,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO;QAAE,OAAO,KAAK,EAAE,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC,CAAC;QAClG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,+FAA+F;IAC/F,qGAAqG;IACrG,uGAAuG;IACvG,8DAA8D;IAC9D,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACnD,4FAA4F;IAC5F,+DAA+D;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;QACrC,OAAO,EAAE,MAAM;QACf,KAAK;QACL,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QAClF,UAAU,EAAE,MAAM,CAAC,GAAG;KACvB,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,cAAc,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACnG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,IAAI,mBAAmB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC;AACvH,CAAC;AAED,SAAS,KAAK;IACZ,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,4FAA4F,CAAC,CAAC,CAAC;IACnH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"AAGA,OAAO,EAaL,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AA4BxB,wBAAsB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"AAGA,OAAO,EAaL,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AA4BxB,wBAAsB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA+Q1D"}
|
package/dist/commands/join.js
CHANGED
|
@@ -3,7 +3,7 @@ import { readFileSync } from "node:fs";
|
|
|
3
3
|
import * as readline from "node:readline";
|
|
4
4
|
import { CotalEndpoint, parseJoinLink, resolvePeer, AmbiguousPeerError, DEFAULT_SERVER, mintCreds, newIdentity, provisionAgent, } from "@cotal-ai/core";
|
|
5
5
|
import { resolveSpace } from "../lib/status.js";
|
|
6
|
-
import { reachableOrExit, resolveTargetOrExit, preflightOrExit } from "../lib/connect.js";
|
|
6
|
+
import { reachableOrExit, refuseStaticCredsForKnownUserAuthOrExit, resolveTargetOrExit, preflightOrExit } from "../lib/connect.js";
|
|
7
7
|
import { c, statusBadge } from "../ui.js";
|
|
8
8
|
// The plan's stale-cred fail-fast gate: render an unprovisioned / auth-rejected join as ONE human
|
|
9
9
|
// sentence instead of a raw NATS stack. Shared by the self-mint provisioning step (which runs
|
|
@@ -12,13 +12,13 @@ import { c, statusBadge } from "../ui.js";
|
|
|
12
12
|
function renderJoinAuthError(e, space) {
|
|
13
13
|
const msg = e?.message ?? String(e);
|
|
14
14
|
if (/consumer not found|no responders|not provisioned/i.test(msg)) {
|
|
15
|
-
console.error(c.red(`${space} isn't provisioned for a console session yet
|
|
15
|
+
console.error(c.red(`${space} isn't provisioned for a console session yet - run `) +
|
|
16
16
|
c.bold("cotal up") +
|
|
17
17
|
c.red(` first, or join with --creds/--token.`));
|
|
18
18
|
return true;
|
|
19
19
|
}
|
|
20
20
|
if (/authoriz|permission|not authorized/i.test(msg)) {
|
|
21
|
-
console.error(c.red(`not authorized to join ${space}'s channels
|
|
21
|
+
console.error(c.red(`not authorized to join ${space}'s channels - pass --creds/--token, or ask the mesh operator for a join link.`));
|
|
22
22
|
return true;
|
|
23
23
|
}
|
|
24
24
|
return false;
|
|
@@ -44,6 +44,7 @@ export async function join(args) {
|
|
|
44
44
|
if (link || values.token || values.creds) {
|
|
45
45
|
space = values.space ?? link?.space ?? resolveSpace(process.cwd());
|
|
46
46
|
server = values.server ?? link?.servers ?? DEFAULT_SERVER;
|
|
47
|
+
refuseStaticCredsForKnownUserAuthOrExit(space, server, "interactive join");
|
|
47
48
|
// Preflight with the ACTUAL auth (probeConnect, not isReachable — which returns true on an auth
|
|
48
49
|
// REJECT, so a bad --creds/token/link would skip the check and crash raw at ep.start()). One
|
|
49
50
|
// sentence on unreachable vs credentials-rejected, then we connect with the same auth.
|
|
@@ -61,6 +62,12 @@ export async function join(args) {
|
|
|
61
62
|
const target = await resolveTargetOrExit({ server: values.server, space: values.space });
|
|
62
63
|
space = target.space;
|
|
63
64
|
server = target.server;
|
|
65
|
+
// USER-auth mesh: interactive join self-provisions a STATIC agent identity, which is the wrong
|
|
66
|
+
// identity plane for a user space — refuse with the user path rather than half-joining (U10).
|
|
67
|
+
if (target.mode === "user") {
|
|
68
|
+
console.error(c.red(`✗ interactive join is not yet supported on user-auth space "${space}" - sign in (\`cotal login --idp ${target.userAuth?.idp.url ?? "<url>"}\`) and use \`cotal send\`, or run agents properly: \`cotal spawn <persona>\` (they get their own managed identity under you)`));
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
64
71
|
await preflightOrExit(target); // one sentence if the mesh is down / won't auth, + stale-prune
|
|
65
72
|
if (target.auth) {
|
|
66
73
|
const identity = newIdentity();
|
|
@@ -158,7 +165,7 @@ export async function join(args) {
|
|
|
158
165
|
else if (ev.type === "offline")
|
|
159
166
|
print(c.dim(`← ${who(ev.presence.card)} went offline`));
|
|
160
167
|
else
|
|
161
|
-
print(`${c.dim("•")} ${who(ev.presence.card)} ${statusBadge(ev.presence.status)}${ev.presence.activity ? c.dim("
|
|
168
|
+
print(`${c.dim("•")} ${who(ev.presence.card)} ${statusBadge(ev.presence.status)}${ev.presence.activity ? c.dim(" - " + ev.presence.activity) : ""}`);
|
|
162
169
|
});
|
|
163
170
|
ep.on("error", (e) => print(c.red(`! ${e.message}`)));
|
|
164
171
|
try {
|
|
@@ -180,7 +187,7 @@ export async function join(args) {
|
|
|
180
187
|
process.on("SIGINT", () => void shutdown());
|
|
181
188
|
process.on("SIGTERM", () => void shutdown());
|
|
182
189
|
if (!interactive || !rl) {
|
|
183
|
-
console.log(c.dim(`${name} (${values.role ?? "no role"}) holding presence in ${space}
|
|
190
|
+
console.log(c.dim(`${name} (${values.role ?? "no role"}) holding presence in ${space} - headless`));
|
|
184
191
|
await new Promise(() => { }); // park; event handlers do the work
|
|
185
192
|
return;
|
|
186
193
|
}
|
|
@@ -215,7 +222,7 @@ export async function join(args) {
|
|
|
215
222
|
who(p.card) +
|
|
216
223
|
" " +
|
|
217
224
|
statusBadge(p.status) +
|
|
218
|
-
(p.activity ? c.dim("
|
|
225
|
+
(p.activity ? c.dim(" - " + p.activity) : "") +
|
|
219
226
|
(p.card.id === me ? c.dim(" (you)") : ""));
|
|
220
227
|
}
|
|
221
228
|
else if (line === "/idle")
|
|
@@ -246,7 +253,7 @@ export async function join(args) {
|
|
|
246
253
|
catch (e) {
|
|
247
254
|
if (!(e instanceof AmbiguousPeerError))
|
|
248
255
|
throw e;
|
|
249
|
-
print(c.red(`"${target}" is ambiguous
|
|
256
|
+
print(c.red(`"${target}" is ambiguous - DM by instance id:`));
|
|
250
257
|
for (const cand of e.candidates)
|
|
251
258
|
print(c.dim(` ${cand.name} (${cand.status}) ${cand.id}`));
|
|
252
259
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"join.js","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EACL,aAAa,EACb,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,SAAS,EACT,WAAW,EACX,cAAc,GAMf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE1C,kGAAkG;AAClG,8FAA8F;AAC9F,4FAA4F;AAC5F,+FAA+F;AAC/F,SAAS,mBAAmB,CAAC,CAAU,EAAE,KAAa;IACpD,MAAM,GAAG,GAAI,CAAW,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,mDAAmD,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,OAAO,CAAC,KAAK,CACX,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,qDAAqD,CAAC;YAClE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;YAClB,CAAC,CAAC,GAAG,CAAC,uCAAuC,CAAC,CACjD,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,qCAAqC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,KAAK,CACX,CAAC,CAAC,GAAG,CAAC,0BAA0B,KAAK,+EAA+E,CAAC,CACtH,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAgB;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,MAA0K,CAAC;IAE/L,+EAA+E;IAC/E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC,QAAQ,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;IACnE,MAAM,IAAI,GAAG;QACX,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK;QAClC,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QACpE,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,KAAK;KACtC,CAAC;IAEF,IAAI,KAAa,CAAC;IAClB,IAAI,MAAc,CAAC;IACnB,gGAAgG;IAChG,gGAAgG;IAChG,gGAAgG;IAChG,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACzC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACnE,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,OAAO,IAAI,cAAc,CAAC;QAC1D,gGAAgG;QAChG,6FAA6F;QAC7F,uFAAuF;QACvF,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,wGAAwG;QACxG,uGAAuG;QACvG,sGAAsG;QACtG,mGAAmG;QACnG,qGAAqG;QACrG,4FAA4F;QAC5F,sGAAsG;QACtG,kGAAkG;QAClG,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACzF,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QACrB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACvB,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,+DAA+D;QAC9F,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC;gBAC7B,KAAK;gBACL,OAAO,EAAE,MAAM;gBACf,KAAK,EAAE,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,aAAa,CAAC;gBACjE,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,KAAK;gBACd,gBAAgB,EAAE,KAAK;gBACvB,aAAa,EAAE,KAAK;gBACpB,aAAa,EAAE,KAAK;gBACpB,IAAI,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE;aAC1E,CAAC,CAAC;YACH,+FAA+F;YAC/F,4EAA4E;YAC5E,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;gBACnB,+EAA+E;gBAC/E,qGAAqG;gBACrG,IAAI,CAAC,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE;oBAC7D,SAAS,EAAE,CAAC,OAAO,CAAC;oBACpB,cAAc,EAAE,CAAC,OAAO,CAAC;oBACzB,YAAY,EAAE,CAAC,OAAO,CAAC;oBACvB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,iBAAiB,EAAE,KAAK;iBACzB,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,0FAA0F;gBAC1F,+FAA+F;gBAC/F,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC;oBAAE,MAAM,CAAC,CAAC;gBAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,aAAa,CAAC;QAC3B,KAAK;QACL,OAAO,EAAE,MAAM;QACf,GAAG,IAAI;QACP,QAAQ,EAAE,CAAC,OAAO,CAAC;QACnB,IAAI,EAAE;YACJ,IAAI;YACJ,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAG,MAAM,CAAC,IAAqB,IAAI,OAAO;SAC/C;KACF,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;IAEtB,2EAA2E;IAC3E,uEAAuE;IACvE,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;IACjD,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,EAAE,GAAG,WAAW;QACpB,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;YACvB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC;SAC3B,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IACd,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE;QAC7B,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpB,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACrC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,IAAqC,EAAE,EAAE,CACpD,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAEnE,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAe,EAAE,CAAW,EAAE,EAAE;QAChD,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK;aACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;aACjE,IAAI,CAAC,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE;YACb,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;aACrE,IAAI,CAAC,CAAC,SAAS;YAClB,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;;YACpE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,qBAAqB;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE;QACvB,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE;YAAE,OAAO,CAAC,cAAc;QACtD,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM;YACpB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;aACpF,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS;YAC5B,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;;YAExD,KAAK,CACH,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9I,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAE7D,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6FAA6F;QAC7F,iFAAiF;QACjF,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC;YAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QACzB,EAAE,EAAE,KAAK,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAE7C,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,SAAS,yBAAyB,KAAK,aAAa,CAAC,CACvF,CAAC;QACF,MAAM,IAAI,OAAO,CAAO,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,mCAAmC;QACtE,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,OAAO,GAAG,CAAC,CACxF,CAAC;IACF,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,GAAG,CACH,iIAAiI,CAClI,CACF,CAAC;IACF,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,MAAM;YACf,KAAK,CACH,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;gBAChB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CACjF,CAAC;IACN,CAAC,EAAE,GAAG,CAAC,CAAC;IACR,EAAE,CAAC,MAAM,EAAE,CAAC;IAEZ,MAAM,SAAS,GAAG,KAAK,EAAE,MAAsB,EAAE,QAAiB,EAAE,EAAE;QACpE,IAAI,QAAQ;YAAE,MAAM,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3B,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC;IAEF,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,EAAE,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO;gBAAE,OAAO,KAAK,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC;iBACpE,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACzB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxB,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE;oBAC5B,KAAK,CACH,IAAI;wBACF,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;wBACX,GAAG;wBACH,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;wBACrB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC7C,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAC5C,CAAC;YACN,CAAC;iBAAM,IAAI,IAAI,KAAK,OAAO;gBAAE,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;iBAChD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;gBAClC,MAAM,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC;iBAC3D,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;gBAClC,MAAM,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC;iBAC3D,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBAC9B,MAAM,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;iBACvF,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAClC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,EAAE,GAAG,CAAC;oBAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC;qBACnD,CAAC;oBACJ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBAChC,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;wBACjE,IAAI,CAAC,IAAI;4BAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,MAAM,WAAW,CAAC,CAAC,CAAC;6BACxD,CAAC;4BACJ,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;4BACrC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;wBACrF,CAAC;oBACH,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,IAAI,CAAC,CAAC,CAAC,YAAY,kBAAkB,CAAC;4BAAE,MAAM,CAAC,CAAC;wBAChD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,qCAAqC,CAAC,CAAC,CAAC;wBAC9D,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,UAAU;4BAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC/F,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAClC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,EAAE,GAAG,CAAC;oBAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAC;qBACxD,CAAC;oBACJ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBAChC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAChC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBACtC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,EAAE,CAAC,MAAM,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"join.js","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/meshes.js
CHANGED
|
@@ -8,7 +8,7 @@ export async function meshes(args) {
|
|
|
8
8
|
await pruneStaleMeshes();
|
|
9
9
|
const all = loadMeshes();
|
|
10
10
|
if (all.length === 0) {
|
|
11
|
-
console.log(c.dim("no meshes running
|
|
11
|
+
console.log(c.dim("no meshes running - start one with `cotal up`"));
|
|
12
12
|
return;
|
|
13
13
|
}
|
|
14
14
|
const current = getCurrent();
|
|
@@ -20,6 +20,6 @@ export async function meshes(args) {
|
|
|
20
20
|
// A `current` that no longer matches any running mesh (its broker went down) shows no `*` — say
|
|
21
21
|
// why, so a bare `cotal spawn` still reporting "multiple meshes" isn't a mystery.
|
|
22
22
|
if (current && !all.some((m) => m.space === current))
|
|
23
|
-
console.log(c.dim(`\nnote: default "${current}" is not running
|
|
23
|
+
console.log(c.dim(`\nnote: default "${current}" is not running - \`cotal use <name>\` to set a live one`));
|
|
24
24
|
}
|
|
25
25
|
//# sourceMappingURL=meshes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mint.d.ts","sourceRoot":"","sources":["../../src/commands/mint.ts"],"names":[],"mappings":"AAEA,OAAO,EAQL,KAAK,UAAU,EAEhB,MAAM,gBAAgB,CAAC;AAKxB;;;;oGAIoG;AACpG,wBAAsB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"mint.d.ts","sourceRoot":"","sources":["../../src/commands/mint.ts"],"names":[],"mappings":"AAEA,OAAO,EAQL,KAAK,UAAU,EAEhB,MAAM,gBAAgB,CAAC;AAKxB;;;;oGAIoG;AACpG,wBAAsB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA8E1D"}
|
package/dist/commands/mint.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
2
|
import { resolve, join, dirname } from "node:path";
|
|
3
3
|
import { agentFilePath, loadAgentFile, mintCreds, mkSecretDir, newIdentity, stripSpaceAuth, writeSecretFile, } from "@cotal-ai/core";
|
|
4
|
-
import { authDir, loadSpaceAuth } from "@cotal-ai/workspace";
|
|
4
|
+
import { authDir, loadSpaceAuth, userAuthStateDir } from "@cotal-ai/workspace";
|
|
5
5
|
import { cotalRoot } from "../lib/paths.js";
|
|
6
6
|
import { c } from "../ui.js";
|
|
7
7
|
/** Out-of-band cred minting: generate an identity, sign a profile-scoped user JWT with the
|
|
@@ -17,12 +17,12 @@ export async function mint(args) {
|
|
|
17
17
|
if (values.signer) {
|
|
18
18
|
const auth = loadSpaceAuth(dir);
|
|
19
19
|
if (!auth) {
|
|
20
|
-
console.error(c.red("no space auth found here
|
|
20
|
+
console.error(c.red("no space auth found here - run `cotal up` first"));
|
|
21
21
|
process.exit(1);
|
|
22
22
|
}
|
|
23
23
|
const out = resolve(values.out ?? "signer.json");
|
|
24
24
|
if (existsSync(out) && !values.force) {
|
|
25
|
-
console.error(c.red(`${out} already exists
|
|
25
|
+
console.error(c.red(`${out} already exists - pass --force to overwrite`));
|
|
26
26
|
process.exit(1);
|
|
27
27
|
}
|
|
28
28
|
writeSecretFile(out, JSON.stringify(stripSpaceAuth(auth), null, 2));
|
|
@@ -39,12 +39,23 @@ export async function mint(args) {
|
|
|
39
39
|
const splitList = (v) => (v ? v.split(",").map((s) => s.trim()).filter(Boolean) : undefined);
|
|
40
40
|
const profile = (values.profile ?? "agent");
|
|
41
41
|
if (profile !== "agent" && profile !== "observer" && profile !== "admin") {
|
|
42
|
-
console.error(c.red(`unknown profile "${profile}"
|
|
42
|
+
console.error(c.red(`unknown profile "${profile}" - expected agent, observer, or admin`));
|
|
43
43
|
process.exit(1);
|
|
44
44
|
}
|
|
45
45
|
const auth = loadSpaceAuth(dir);
|
|
46
46
|
if (!auth) {
|
|
47
|
-
console.error(c.red("no space auth found here
|
|
47
|
+
console.error(c.red("no space auth found here - run `cotal up` first"));
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
// THE FLIP (per-user-auth): static agent/observer/admin creds are RETIRED on user-auth spaces.
|
|
51
|
+
// A static mint here would be a fully-working `local.<nkey>` identity that user-mode readers
|
|
52
|
+
// trust — exactly the "no compatibility window may allow old credentials to publish data new
|
|
53
|
+
// owner+actor readers can trust or misattribute" invariant. Fail-closed on the on-disk marker
|
|
54
|
+
// alone (refusing is the safe direction; the manager's stricter marker×registry check guards the
|
|
55
|
+
// PERMISSIVE branch, not this one). `--signer` stays available above: infrastructure creds
|
|
56
|
+
// (supervisor/delivery/…) are pre-flip trust material, not agent identities.
|
|
57
|
+
if (existsSync(userAuthStateDir(cotalRoot(), auth.space))) {
|
|
58
|
+
console.error(c.red(`✗ space "${auth.space}" is a per-user-auth mesh - static ${profile} creds are retired here. Use user-mode commands (\`cotal login\`; agents: \`cotal spawn\`); static dashboard/audit creds are not supported on user-auth meshes. Static minting remains available on static-auth meshes.`));
|
|
48
59
|
process.exit(1);
|
|
49
60
|
}
|
|
50
61
|
// For agents, derive the read/post ACLs AND role from the agent file if one exists (flags
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mint.js","sourceRoot":"","sources":["../../src/commands/mint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EACL,aAAa,EACb,aAAa,EACb,SAAS,EACT,WAAW,EACX,WAAW,EACX,cAAc,EACd,eAAe,GAGhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"mint.js","sourceRoot":"","sources":["../../src/commands/mint.ts"],"names":[],"mappings":"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"}
|