@cotal-ai/cli 0.6.0 → 0.7.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.
Files changed (55) hide show
  1. package/dist/commands/channels.d.ts +4 -2
  2. package/dist/commands/channels.d.ts.map +1 -1
  3. package/dist/commands/channels.js +17 -18
  4. package/dist/commands/channels.js.map +1 -1
  5. package/dist/commands/console.d.ts.map +1 -1
  6. package/dist/commands/console.js +13 -29
  7. package/dist/commands/console.js.map +1 -1
  8. package/dist/commands/down.d.ts.map +1 -1
  9. package/dist/commands/down.js +7 -0
  10. package/dist/commands/down.js.map +1 -1
  11. package/dist/commands/history.d.ts.map +1 -1
  12. package/dist/commands/history.js +6 -13
  13. package/dist/commands/history.js.map +1 -1
  14. package/dist/commands/join.d.ts.map +1 -1
  15. package/dist/commands/join.js +20 -7
  16. package/dist/commands/join.js.map +1 -1
  17. package/dist/commands/meshes.d.ts +5 -0
  18. package/dist/commands/meshes.d.ts.map +1 -0
  19. package/dist/commands/meshes.js +25 -0
  20. package/dist/commands/meshes.js.map +1 -0
  21. package/dist/commands/spawn.d.ts +4 -2
  22. package/dist/commands/spawn.d.ts.map +1 -1
  23. package/dist/commands/spawn.js +54 -22
  24. package/dist/commands/spawn.js.map +1 -1
  25. package/dist/commands/up.d.ts.map +1 -1
  26. package/dist/commands/up.js +112 -5
  27. package/dist/commands/up.js.map +1 -1
  28. package/dist/commands/use.d.ts +7 -0
  29. package/dist/commands/use.d.ts.map +1 -0
  30. package/dist/commands/use.js +27 -0
  31. package/dist/commands/use.js.map +1 -0
  32. package/dist/commands/web.d.ts.map +1 -1
  33. package/dist/commands/web.js +57 -27
  34. package/dist/commands/web.js.map +1 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +18 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/lib/connect.d.ts +72 -0
  39. package/dist/lib/connect.d.ts.map +1 -0
  40. package/dist/lib/connect.js +115 -0
  41. package/dist/lib/connect.js.map +1 -0
  42. package/dist/lib/meshes.d.ts +8 -0
  43. package/dist/lib/meshes.d.ts.map +1 -0
  44. package/dist/lib/meshes.js +15 -0
  45. package/dist/lib/meshes.js.map +1 -0
  46. package/dist/lib/onboard.js +6 -6
  47. package/dist/lib/onboard.js.map +1 -1
  48. package/dist/lib/transient.d.ts +7 -6
  49. package/dist/lib/transient.d.ts.map +1 -1
  50. package/dist/lib/transient.js +6 -25
  51. package/dist/lib/transient.js.map +1 -1
  52. package/dist/web/graph.html +204 -0
  53. package/dist/web/graph.js +453 -0
  54. package/dist/web/index.html +6 -0
  55. package/package.json +2 -2
@@ -1,7 +1,9 @@
1
1
  /**
2
2
  * `cotal channels` — inspect and mutate the per-space channel registry (replay policy,
3
- * description, instructions) while the mesh is up. Writes are privileged: in auth mode the
4
- * command mints ephemeral manager creds from `.cotal/auth`; in open mode it connects plainly.
3
+ * description, instructions) while the mesh is up. Writes are privileged: on an auth mesh the
4
+ * command mints ephemeral manager creds from the resolved mesh's `.cotal/auth`; on an open mesh it
5
+ * connects plainly. Works from any directory (resolves the running mesh); `--creds` is a raw
6
+ * off-registry connection.
5
7
  *
6
8
  * cotal channels list
7
9
  * cotal channels set <name> [--replay|--no-replay] [--desc <s>] [--instructions <s>]
@@ -1 +1 @@
1
- {"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../src/commands/channels.ts"],"names":[],"mappings":"AAkBA;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwD5D"}
1
+ {"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../src/commands/channels.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;GAUG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4D5D"}
@@ -1,12 +1,13 @@
1
1
  import { parseArgs } from "node:util";
2
- import { authDir, loadSpaceAuth, mintCreds, newIdentity, DEFAULT_SERVER, seedChannelRegistry, readChannelRegistry, effectiveReplay, } from "@cotal-ai/core";
3
- import { cotalRoot } from "../lib/paths.js";
4
- import { resolveSpace } from "../lib/status.js";
2
+ import { seedChannelRegistry, readChannelRegistry, effectiveReplay, } from "@cotal-ai/core";
3
+ import { connectOrExit } from "../lib/connect.js";
5
4
  import { c } from "../ui.js";
6
5
  /**
7
6
  * `cotal channels` — inspect and mutate the per-space channel registry (replay policy,
8
- * description, instructions) while the mesh is up. Writes are privileged: in auth mode the
9
- * command mints ephemeral manager creds from `.cotal/auth`; in open mode it connects plainly.
7
+ * description, instructions) while the mesh is up. Writes are privileged: on an auth mesh the
8
+ * command mints ephemeral manager creds from the resolved mesh's `.cotal/auth`; on an open mesh it
9
+ * connects plainly. Works from any directory (resolves the running mesh); `--creds` is a raw
10
+ * off-registry connection.
10
11
  *
11
12
  * cotal channels list
12
13
  * cotal channels set <name> [--replay|--no-replay] [--desc <s>] [--instructions <s>]
@@ -19,6 +20,7 @@ export async function channels(argv) {
19
20
  options: {
20
21
  server: { type: "string" },
21
22
  space: { type: "string" },
23
+ creds: { type: "string" },
22
24
  replay: { type: "boolean" },
23
25
  "no-replay": { type: "boolean" },
24
26
  window: { type: "string" }, // backfill window, e.g. 24h / 30m / 7d
@@ -26,12 +28,17 @@ export async function channels(argv) {
26
28
  instructions: { type: "string" },
27
29
  },
28
30
  });
29
- const server = values.server ?? DEFAULT_SERVER;
30
- const space = values.space ?? resolveSpace(process.cwd());
31
+ // Validate the subcommand BEFORE connecting, so a typo (or a bare `cotal channels`) prints usage,
32
+ // not "no mesh running" — the same validate-first order as `history`.
33
+ const sub = positionals[0];
34
+ if (sub !== "list" && sub !== "set" && sub !== "default")
35
+ return usage();
36
+ if (sub === "set" && !positionals[1])
37
+ return usage(); // need a channel name before touching the mesh
31
38
  // Tri-state replay: --replay → true, --no-replay → false, neither → leave unchanged.
32
39
  const replay = values["no-replay"] ? false : values.replay ? true : undefined;
33
- const creds = await managerCreds(); // undefined ⇒ open mode
34
- switch (positionals[0]) {
40
+ const { server, space, creds } = await connectOrExit(values, "manager"); // creds undefined ⇒ open mode
41
+ switch (sub) {
35
42
  case "list": {
36
43
  printRegistry(await readChannelRegistry({ servers: server, space, creds }));
37
44
  return;
@@ -75,14 +82,6 @@ export async function channels(argv) {
75
82
  return usage();
76
83
  }
77
84
  }
78
- /** Privileged creds for a registry write: mint ephemeral manager creds from the space auth
79
- * (auth mode), or undefined to connect open. Throws nothing — open mode is the no-auth dev mesh. */
80
- async function managerCreds() {
81
- const auth = loadSpaceAuth(authDir(cotalRoot()));
82
- if (!auth)
83
- return undefined;
84
- return mintCreds(auth, newIdentity(), "manager");
85
- }
86
85
  function printRegistry(reg) {
87
86
  const def = reg.defaults?.replay;
88
87
  const dw = reg.defaults?.replayWindow;
@@ -104,7 +103,7 @@ function printRegistry(reg) {
104
103
  }
105
104
  }
106
105
  function usage() {
107
- console.error(c.red("usage: cotal channels <list | set <name> [--replay|--no-replay] [--window <dur>] [--desc <s>] [--instructions <s>] | default [--replay|--no-replay] [--window <dur>]> [--space <s>] [--server <url>]"));
106
+ console.error(c.red("usage: cotal channels <list | set <name> [--replay|--no-replay] [--window <dur>] [--desc <s>] [--instructions <s>] | default [--replay|--no-replay] [--window <dur>]> [--space <s>] [--server <url>] [--creds <path>]"));
108
107
  process.exit(1);
109
108
  }
110
109
  //# sourceMappingURL=channels.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"channels.js","sourceRoot":"","sources":["../../src/commands/channels.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channels.js","sourceRoot":"","sources":["../../src/commands/channels.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../src/commands/console.ts"],"names":[],"mappings":"AAoBA;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6F5D"}
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../src/commands/console.ts"],"names":[],"mappings":"AAWA;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0E5D"}
@@ -1,11 +1,10 @@
1
1
  import { parseArgs } from "node:util";
2
- import { readFileSync, writeSync } from "node:fs";
2
+ import { writeSync } from "node:fs";
3
3
  import { userInfo } from "node:os";
4
4
  import { createElement } from "react";
5
5
  import { render } from "ink";
6
- import { isReachable, DEFAULT_SERVER, chatWildcard, authDir, loadSpaceAuth, mintCreds, newIdentity, } from "@cotal-ai/core";
7
- import { cotalRoot } from "../lib/paths.js";
8
- import { resolveSpace } from "../lib/status.js";
6
+ import { chatWildcard } from "@cotal-ai/core";
7
+ import { connectOrExit } from "../lib/connect.js";
9
8
  import { c } from "../ui.js";
10
9
  import { runLog } from "../render.js";
11
10
  import { Root, makeObserver } from "../console/root.js";
@@ -26,29 +25,14 @@ export async function console_(argv) {
26
25
  creds: { type: "string" },
27
26
  },
28
27
  });
29
- const server = values.server ?? DEFAULT_SERVER;
30
- let creds = values.creds ? readFileSync(values.creds, "utf8") : undefined;
31
- let space = values.space;
32
- // Auth mode (.cotal/auth present): self-mint an admin cred for the local space so the console
33
- // works without --creds — same god-view as `cotal web` (the console shows DMs/anycast, which the
34
- // narrower `observer` profile denies NATS Authorization Violation). An authed server hosts
35
- // exactly one space, so there's no overview we enter it directly. Open mode (no auth): connect
36
- // bare; with no --space, the TTY shows the space overview.
37
- if (!creds) {
38
- const auth = loadSpaceAuth(authDir(cotalRoot()));
39
- if (auth) {
40
- if (space && space !== auth.space) {
41
- console.error(c.red(`Auth here is for space "${auth.space}", not "${space}". Use --space ${auth.space} (or pass --creds).`));
42
- process.exit(1);
43
- }
44
- space = auth.space;
45
- creds = await mintCreds(auth, newIdentity(), "admin");
46
- }
47
- }
48
- if (!(await isReachable(server, { creds }))) {
49
- console.error(c.red(`Can't reach NATS at ${server}. Run: pnpm cotal up`));
50
- process.exit(1);
51
- }
28
+ // Resolve WHICH running mesh (server + trust material) from any directory — same as `spawn`/`web`.
29
+ // Auth mode self-mints an admin god-view cred (the console shows DMs/anycast, which the narrower
30
+ // `observer` profile denies → NATS Authorization Violation); an authed server hosts exactly one
31
+ // space, so we enter it directly. Open mode connects bare; with no --space, the TTY shows the
32
+ // space overview. An explicit --creds wins.
33
+ const { server, space: resolvedSpace, creds, auth } = await connectOrExit(values, "admin");
34
+ // Auth pins its one space; open mode keeps --space (undefined the overview picker).
35
+ const space = auth ? resolvedSpace : values.space;
52
36
  // Operator identity for sent messages (still off the roster). Open mode or an explicit --creds can
53
37
  // write; the self-minted observer cred (auth default) is read-only, so the palette/`D` are inert.
54
38
  const operator = (() => {
@@ -61,9 +45,9 @@ export async function console_(argv) {
61
45
  })();
62
46
  const canWrite = !creds || !!values.creds;
63
47
  // No TTY (piped/headless) or --plain → the passive line stream; Ink needs a real terminal, and a
64
- // stream can't host the picker, so it falls back to the default space.
48
+ // stream can't host the picker, so it falls back to the RESOLVED mesh's space (not the cwd's).
65
49
  if (values.plain || process.stdout.isTTY !== true) {
66
- const s = space ?? resolveSpace(process.cwd());
50
+ const s = space ?? resolvedSpace;
67
51
  await runLog(makeObserver(s, server, creds, operator), s, creds ? chatWildcard(s) : undefined);
68
52
  return;
69
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/commands/console.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/commands/console.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"AAIA;yEACyE;AACzE,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAqB1C"}
1
+ {"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"AAMA;yEACyE;AACzE,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAyB1C"}
@@ -1,6 +1,8 @@
1
1
  import { existsSync, readFileSync, rmSync } from "node:fs";
2
+ import { clearCurrent, getCurrent, removeMesh } from "@cotal-ai/core";
2
3
  import { c } from "../ui.js";
3
4
  import { cotalPath } from "../lib/paths.js";
5
+ import { resolveSpace } from "../lib/status.js";
4
6
  /** Stop the background processes started by `cotal up --detach` / `cotal setup`:
5
7
  * the manager, the delivery daemon, the web dashboard, and the mesh. */
6
8
  export async function down() {
@@ -22,6 +24,11 @@ export async function down() {
22
24
  // marker. Drop them with the processes so a stale creds file / marker never lingers.
23
25
  for (const f of ["delivery.creds", "manager.delivery-aware"])
24
26
  rmSync(cotalPath(f), { force: true });
27
+ // Drop this folder's mesh from the registry (and the `current` pointer if it was the default).
28
+ const space = resolveSpace(process.cwd());
29
+ removeMesh(space);
30
+ if (getCurrent() === space)
31
+ clearCurrent();
25
32
  if (!any) {
26
33
  console.error(c.red("Nothing running here (no .cotal/*.pid). Was it started with `cotal up` / `cotal setup`?"));
27
34
  process.exit(1);
@@ -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,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;yEACyE;AACzE,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,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;IACvB,CAAC;IACD,qGAAqG;IACrG,qFAAqF;IACrF,KAAK,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;QAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpG,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC,CAAC;QAChH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,IAAI,CAAC,OAAe,EAAE,KAAa;IAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,GAAG,oBAAoB,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,CAAC,OAAO,CAAC,CAAC;AAClB,CAAC"}
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,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD;yEACyE;AACzE,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,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;IACvB,CAAC;IACD,qGAAqG;IACrG,qFAAqF;IACrF,KAAK,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;QAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpG,+FAA+F;IAC/F,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1C,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,IAAI,UAAU,EAAE,KAAK,KAAK;QAAE,YAAY,EAAE,CAAC;IAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC,CAAC;QAChH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,IAAI,CAAC,OAAe,EAAE,KAAa;IAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,GAAG,oBAAoB,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,CAAC,OAAO,CAAC,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAcA;mFACmF;AACnF,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC3D"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAKA;mFACmF;AACnF,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC3D"}
@@ -1,8 +1,6 @@
1
- import { readFileSync } from "node:fs";
2
1
  import { parseArgs } from "node:util";
3
- import { authDir, clearSpaceHistory, DEFAULT_SERVER, loadSpaceAuth, mintCreds, newIdentity, } from "@cotal-ai/core";
4
- import { cotalRoot } from "../lib/paths.js";
5
- import { resolveSpace } from "../lib/status.js";
2
+ import { clearSpaceHistory } from "@cotal-ai/core";
3
+ import { connectOrExit } from "../lib/connect.js";
6
4
  import { c } from "../ui.js";
7
5
  /** Administrative history operations. Purges JetStream backlog only; live in-process
8
6
  * agent buffers may still contain messages already delivered before the purge. */
@@ -25,9 +23,10 @@ export async function history(argv) {
25
23
  console.error(c.dim("usage: cotal history clear --force [--dms] [--space <s>] [--server <url>]"));
26
24
  process.exit(1);
27
25
  }
28
- const space = values.space ?? resolveSpace(process.cwd());
29
- const server = values.server ?? DEFAULT_SERVER;
30
- const creds = values.creds ? readFileSync(values.creds, "utf8") : await managerCreds();
26
+ // Resolve the running mesh (from any dir) + manager creds — `--creds` is a raw off-registry connect.
27
+ // `history clear` is destructive, so targeting the RIGHT mesh matters: this no longer blindly hits
28
+ // DEFAULT_SERVER + the cwd space.
29
+ const { server, space, creds } = await connectOrExit(values, "manager");
31
30
  const result = await clearSpaceHistory({
32
31
  servers: server,
33
32
  space,
@@ -37,12 +36,6 @@ export async function history(argv) {
37
36
  const dm = result.dm === undefined ? "" : `, ${result.dm} DM message${result.dm === 1 ? "" : "s"}`;
38
37
  console.log(c.green(`✓ cleared ${result.chat} channel message${result.chat === 1 ? "" : "s"}${dm} from "${space}"`));
39
38
  }
40
- async function managerCreds() {
41
- const auth = loadSpaceAuth(authDir(cotalRoot()));
42
- if (!auth)
43
- return undefined;
44
- return mintCreds(auth, newIdentity(), "manager");
45
- }
46
39
  function usage() {
47
40
  console.error(c.red("usage: cotal history clear --force [--dms] [--space <s>] [--server <url>] [--creds <path>]"));
48
41
  process.exit(1);
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAE7B;mFACmF;AACnF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAc;IAC1C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;QACxC,IAAI,EAAE,IAAI;QACV,gBAAgB,EAAE,IAAI;QACtB,OAAO,EAAE;YACP,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACxB,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;SAC3B;KACF,CAAC,CAAC;IAEH,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,qGAAqG;IACrG,mGAAmG;IACnG,kCAAkC;IAClC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;QACrC,OAAO,EAAE,MAAM;QACf,KAAK;QACL,KAAK;QACL,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":"AAmBA,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwNxD"}
1
+ {"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"AAmBA,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiOxD"}
@@ -2,8 +2,9 @@ import { parseArgs } from "node:util";
2
2
  import { userInfo } from "node:os";
3
3
  import { readFileSync } from "node:fs";
4
4
  import * as readline from "node:readline";
5
- import { CotalEndpoint, isReachable, parseJoinLink, resolvePeer, AmbiguousPeerError, DEFAULT_SERVER, } from "@cotal-ai/core";
5
+ import { CotalEndpoint, parseJoinLink, resolvePeer, AmbiguousPeerError, DEFAULT_SERVER, } from "@cotal-ai/core";
6
6
  import { resolveSpace } from "../lib/status.js";
7
+ import { connectOrExit, reachableOrExit } from "../lib/connect.js";
7
8
  import { c, statusBadge } from "../ui.js";
8
9
  export async function join(argv) {
9
10
  const { values } = parseArgs({
@@ -24,9 +25,7 @@ export async function join(argv) {
24
25
  });
25
26
  // A join link carries server + auth + space; explicit flags still override it.
26
27
  const link = values.link ? parseJoinLink(values.link) : undefined;
27
- const space = values.space ?? link?.space ?? resolveSpace(process.cwd());
28
28
  const name = values.name ?? userInfo().username;
29
- const server = values.server ?? link?.servers ?? DEFAULT_SERVER;
30
29
  const channel = values.channel ?? link?.channels?.[0] ?? "general";
31
30
  const auth = {
32
31
  token: values.token ?? link?.token,
@@ -35,10 +34,24 @@ export async function join(argv) {
35
34
  creds: values.creds ? readFileSync(values.creds, "utf8") : undefined,
36
35
  tls: values.tls ?? link?.tls ?? false,
37
36
  };
38
- if (!(await isReachable(server, auth))) {
39
- console.error(c.red(`Can't reach NATS at ${server}.`));
40
- console.error(c.dim(link ? "Check the join link and that the host is up." : "Start it in another terminal: pnpm cotal up"));
41
- process.exit(1);
37
+ let space;
38
+ let server;
39
+ // An explicit connection (a join link, --token, or --creds) is taken at face value that's the
40
+ // escape hatch. Otherwise resolve the running mesh from any directory (server + trust material)
41
+ // and self-mint, so a bare `cotal join` works outside the project instead of crashing credless.
42
+ if (link || values.token || values.creds) {
43
+ space = values.space ?? link?.space ?? resolveSpace(process.cwd());
44
+ server = values.server ?? link?.servers ?? DEFAULT_SERVER;
45
+ // Preflight with the ACTUAL auth (probeConnect, not isReachable — which returns true on an auth
46
+ // REJECT, so a bad --creds/token/link would skip the check and crash raw at ep.start()). One
47
+ // sentence on unreachable vs credentials-rejected, then we connect with the same auth.
48
+ await reachableOrExit(server, auth);
49
+ }
50
+ else {
51
+ const conn = await connectOrExit(values, "manager");
52
+ space = conn.space;
53
+ server = conn.server;
54
+ auth.creds = conn.creds;
42
55
  }
43
56
  const ep = new CotalEndpoint({
44
57
  space,
@@ -1 +1 @@
1
- {"version":3,"file":"join.js","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"join.js","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** `cotal meshes` — list the running meshes (one `cotal up` each), with a `*` on the `current`
2
+ * default. The kubectl `get-contexts` analogue: how you see what a bare `cotal spawn` would join,
3
+ * and which `--space` names are available. Prunes dead entries first. */
4
+ export declare function meshes(): Promise<void>;
5
+ //# sourceMappingURL=meshes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meshes.d.ts","sourceRoot":"","sources":["../../src/commands/meshes.ts"],"names":[],"mappings":"AAIA;;0EAE0E;AAC1E,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAiB5C"}
@@ -0,0 +1,25 @@
1
+ import { getCurrent, loadMeshes } from "@cotal-ai/core";
2
+ import { c } from "../ui.js";
3
+ import { pruneStaleMeshes } from "../lib/meshes.js";
4
+ /** `cotal meshes` — list the running meshes (one `cotal up` each), with a `*` on the `current`
5
+ * default. The kubectl `get-contexts` analogue: how you see what a bare `cotal spawn` would join,
6
+ * and which `--space` names are available. Prunes dead entries first. */
7
+ export async function meshes() {
8
+ await pruneStaleMeshes();
9
+ const all = loadMeshes();
10
+ if (all.length === 0) {
11
+ console.log(c.dim("no meshes running — start one with `cotal up`"));
12
+ return;
13
+ }
14
+ const current = getCurrent();
15
+ const pad = Math.max(...all.map((m) => m.space.length));
16
+ for (const m of all) {
17
+ const marker = m.space === current ? c.green("*") : " ";
18
+ console.log(`${marker} ${m.space.padEnd(pad)} ${c.dim(`${m.server} ${m.mode} ${m.root}`)}`);
19
+ }
20
+ // A `current` that no longer matches any running mesh (its broker went down) shows no `*` — say
21
+ // why, so a bare `cotal spawn` still reporting "multiple meshes" isn't a mystery.
22
+ if (current && !all.some((m) => m.space === current))
23
+ console.log(c.dim(`\nnote: default "${current}" is not running — \`cotal use <name>\` to set a live one`));
24
+ }
25
+ //# sourceMappingURL=meshes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meshes.js","sourceRoot":"","sources":["../../src/commands/meshes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;0EAE0E;AAC1E,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,MAAM,gBAAgB,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,gGAAgG;IAChG,kFAAkF;IAClF,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,OAAO,2DAA2D,CAAC,CAAC,CAAC;AAC/G,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { type CompletionResult } from "@cotal-ai/core";
2
- /** Completion for `cotal spawn <name>` the first positional is a persona; the rest are flags
3
- * we leave to the shell. Filesystem-only (the persona catalog), so it never opens the mesh. */
2
+ /** Completion for `cotal spawn` — `--space <TAB>` lists the running meshes, and the first positional
3
+ * is a persona from the mesh this spawn would target. Resolved OFFLINE (registry + `current`, no
4
+ * probe — a <TAB> must stay cheap and never open the network), so it lists the *target* mesh's
5
+ * personas, not the cwd's. */
4
6
  export declare function spawnComplete(argv: string[]): CompletionResult;
5
7
  export declare function spawn(argv: string[]): Promise<void>;
6
8
  //# sourceMappingURL=spawn.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/commands/spawn.ts"],"names":[],"mappings":"AAIA,OAAO,EAiBL,KAAK,gBAAgB,EAGtB,MAAM,gBAAgB,CAAC;AAKxB;gGACgG;AAChG,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAI9D;AA8DD,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgJzD"}
1
+ {"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/commands/spawn.ts"],"names":[],"mappings":"AAIA,OAAO,EAiBL,KAAK,gBAAgB,EAGtB,MAAM,gBAAgB,CAAC;AAKxB;;;+BAG+B;AAC/B,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAe9D;AAmED,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiKzD"}
@@ -2,15 +2,29 @@ import { spawn as spawnProcess } from "node:child_process";
2
2
  import { mkdirSync, writeFileSync } from "node:fs";
3
3
  import { join, dirname } from "node:path";
4
4
  import { parseArgs } from "node:util";
5
- import { DEFAULT_SERVER, agentFilePath, authDir, connectorServers, firstFreeName, isReachable, loadAgentFile, loadCotalConfig, loadSpaceAuth, mintCreds, newIdentity, parseShareSelection, provisionAgent, registry, CotalEndpoint, } from "@cotal-ai/core";
6
- import { cotalRoot } from "../lib/paths.js";
7
- import { listPersonaNames } from "../lib/personas.js";
8
- import { resolveSpace } from "../lib/status.js";
9
- /** Completion for `cotal spawn <name>` the first positional is a persona; the rest are flags
10
- * we leave to the shell. Filesystem-only (the persona catalog), so it never opens the mesh. */
5
+ import { agentFilePath, authDir, connectorServers, firstFreeName, isReachable, loadAgentFile, loadCotalConfig, loadMeshes, mintCreds, newIdentity, parseShareSelection, provisionAgent, registry, resolveMeshTarget, CotalEndpoint, } from "@cotal-ai/core";
6
+ import { c } from "../ui.js";
7
+ import { preflightOrExit, resolveTargetOrExit } from "../lib/connect.js";
8
+ import { listPersonas } from "../lib/personas.js";
9
+ /** Completion for `cotal spawn` — `--space <TAB>` lists the running meshes, and the first positional
10
+ * is a persona from the mesh this spawn would target. Resolved OFFLINE (registry + `current`, no
11
+ * probe — a <TAB> must stay cheap and never open the network), so it lists the *target* mesh's
12
+ * personas, not the cwd's. */
11
13
  export function spawnComplete(argv) {
12
- if (argv.length <= 1)
13
- return { items: listPersonaNames().map((value) => ({ value })), directive: "nofiles" };
14
+ if (argv[argv.length - 2] === "--space")
15
+ return { items: loadMeshes().map((m) => ({ value: m.space })), directive: "nofiles" };
16
+ // Only the first word after `spawn` is the persona positional; once it's typed, defer to the shell.
17
+ if (argv.length <= 1) {
18
+ try {
19
+ const target = resolveMeshTarget(process.cwd());
20
+ return { items: listPersonas(target.root).map((p) => ({ value: p.name })), directive: "nofiles" };
21
+ }
22
+ catch {
23
+ // No single target (no mesh, or several with no `current`) — fail CLOSED: offer no personas
24
+ // rather than throw. `cotal spawn --space <TAB>` still lists the running meshes.
25
+ return { items: [], directive: "nofiles" };
26
+ }
27
+ }
14
28
  return { items: [], directive: "nofiles" };
15
29
  }
16
30
  /**
@@ -25,6 +39,10 @@ export function spawnComplete(argv) {
25
39
  * shared with the manager); only *how the spec runs* differs — foreground exec
26
40
  * here vs. a supervised runtime in the manager. The connector is resolved from
27
41
  * the registry by agent type, composed at the root.
42
+ *
43
+ * The mesh it joins — creds and personas together — is resolved by {@link resolveMeshTarget}, so a
44
+ * bare `cotal spawn <persona>` from any directory finds the running mesh (one up, or the `current`
45
+ * default) instead of mistaking `~/.cotal` for a space.
28
46
  */
29
47
  /**
30
48
  * Auto-number `requested` past any peer already present on the mesh (foo → foo-2 → foo-3) — the same
@@ -94,34 +112,48 @@ export async function spawn(argv) {
94
112
  // Transcript mirroring to `tr-<name>` is OFF by default; `--transcript` opts in
95
113
  // (`--no-transcript` is accepted too, to be explicit about the default).
96
114
  const transcript = values.transcript ? true : values["no-transcript"] ? false : false;
115
+ // Which mesh this spawn joins — creds + personas together, resolved from --server/--space, a local
116
+ // project, or the registry (the running mesh / the `current` default).
117
+ const target = await resolveTargetOrExit({ server: values.server, space: values.space });
118
+ const { space, server, auth } = target;
97
119
  // Where the config lives: --config, else the positional <name-or-path>, else --name
98
- // (.cotal/agents/<name>.md). With none of those, fall back to the seeded `default` persona:
99
- // `cotal spawn` with no args launches `.cotal/agents/default.md` (same flags as `cotal start`).
120
+ // (.cotal/agents/<name>.md under the TARGET mesh's root). With none, fall back to its `default`
121
+ // persona — `cotal spawn` with no args launches `<root>/.cotal/agents/default.md`.
100
122
  const ref = values.config ?? positionals[0] ?? values.name ?? "default";
101
- const path = agentFilePath(cotalRoot(), ref);
123
+ const path = agentFilePath(target.root, ref);
102
124
  let def;
103
125
  try {
104
126
  def = loadAgentFile(path);
105
127
  }
106
128
  catch (e) {
107
- const noDefault = ref === "default" && e.code === "ENOENT";
108
- console.error(noDefault
109
- ? "✗ no default persona yet — run `cotal setup` to seed one, or name a persona: `cotal spawn <name>`"
110
- : `✗ ${e.message}`);
129
+ const code = e.code;
130
+ if (code === "ENOENT") {
131
+ console.error(c.red(ref === "default"
132
+ ? "✗ no default persona yet — run `cotal setup` to seed one, or name a persona: `cotal spawn <name>`"
133
+ : `✗ no persona "${ref}" in ${target.space}'s ${target.personaRoot} — use \`--config <path>\` for a file elsewhere`));
134
+ }
135
+ else {
136
+ console.error(c.red(`✗ ${e.message}`));
137
+ }
111
138
  process.exit(1);
112
139
  }
113
140
  // --name / --role override the file (name defaults from the file's frontmatter).
114
141
  const requested = values.name ?? def.name;
115
142
  const role = values.role ?? def.role;
116
- const space = values.space ?? resolveSpace(process.cwd());
117
- const server = values.server ?? DEFAULT_SERVER;
118
- const auth = loadSpaceAuth(authDir(cotalRoot()));
143
+ // Preflight: fail with one sentence if the mesh is down or won't take our creds, instead of
144
+ // crashing mid-connect with a raw NATS Authorization Violation.
145
+ await preflightOrExit(target);
119
146
  // A second `cotal spawn` of the same agent would otherwise join under a duplicate mesh identity:
120
147
  // auto-number the name past anyone already present (best-effort — this path bypasses the manager's
121
148
  // race-free reservation; see uniqueMeshName). Everything below (creds path, launch) uses `name`.
122
149
  const name = await uniqueMeshName(requested, { space, server, auth });
123
150
  if (name !== requested)
124
151
  console.error(`"${requested}" is already on the mesh — spawning as ${name} instead`);
152
+ // When the target was auto-resolved (one mesh up, or the `current` default), say which mesh we
153
+ // picked — it isn't obvious from the cwd. An explicit --space/--server or a local project is
154
+ // self-evident, so stay quiet there.
155
+ if (target.source === "registry" || target.source === "current")
156
+ console.error(c.dim(`→ joining mesh ${space} (${server}) as ${name}`));
125
157
  // Auth mode (`.cotal/auth` present): mint a stable identity + scoped creds for this agent
126
158
  // and pre-create its bind-only durables, via a short-lived privileged provisioner — the
127
159
  // same onboarding the manager does, so the foreground launch joins the authed mesh too.
@@ -157,17 +189,17 @@ export async function spawn(argv) {
157
189
  durableMembership: false,
158
190
  });
159
191
  await prov.stop();
160
- credsPath = join(authDir(cotalRoot()), "creds", `${name}.creds`);
192
+ credsPath = join(authDir(target.root), "creds", `${name}.creds`);
161
193
  mkdirSync(dirname(credsPath), { recursive: true });
162
194
  writeFileSync(credsPath, creds, { mode: 0o600 });
163
195
  id = identity.id;
164
196
  console.error(`minted creds for ${name} (auth mode) → ${credsPath}`);
165
197
  }
166
198
  // Which of the operator's personal MCP servers to share with this agent: declared in the cotal
167
- // config (global ~/.config/cotal + space-local .cotal), narrowed by an optional --share-tools
168
- // selection. Default (no config) is none — the connector launches isolated.
199
+ // config (global ~/.config/cotal + the target mesh's .cotal), narrowed by an optional
200
+ // --share-tools selection. Default (no config) is none — the connector launches isolated.
169
201
  const agentType = values.agent ?? "claude";
170
- const mcpServers = connectorServers(loadCotalConfig(cotalRoot()), agentType, parseShareSelection(values["share-tools"]));
202
+ const mcpServers = connectorServers(loadCotalConfig(target.root), agentType, parseShareSelection(values["share-tools"]));
171
203
  const connector = registry.resolve("connector", agentType);
172
204
  const spec = connector.buildLaunch({
173
205
  space,