@cotal-ai/cli 0.4.0 → 0.5.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.
@@ -3,6 +3,6 @@ import { type CompletionResult } from "@cotal-ai/core";
3
3
  * including the (possibly empty) word being completed. */
4
4
  export declare function complete(argv: string[]): Promise<void>;
5
5
  export declare function completion(argv: string[]): Promise<void>;
6
- /** Argument completion for `cotal completion` itself: the supported shells. */
6
+ /** Argument completion for `cotal completion` itself: the supported shells, plus `install`. */
7
7
  export declare function completionComplete(argv: string[]): CompletionResult;
8
8
  //# sourceMappingURL=completion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AA2BxB;2DAC2D;AAC3D,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB5D;AAmED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAW9D;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAInE"}
1
+ {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AA+BxB;2DAC2D;AAC3D,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB5D;AAmED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAa9D;AAqDD,+FAA+F;AAC/F,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CASnE"}
@@ -1,3 +1,6 @@
1
+ import { appendFileSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { basename, join } from "node:path";
1
4
  import { registry, } from "@cotal-ai/core";
2
5
  import { c } from "../ui.js";
3
6
  /**
@@ -10,10 +13,14 @@ import { c } from "../ui.js";
10
13
  * tolerant (unknown lines are ignored), so it can grow without anyone re-installing the stub.
11
14
  *
12
15
  * cotal completion bash|zsh|fish|powershell # print the stub to stdout
16
+ * cotal completion install [shell] # install it persistently (auto-detects $SHELL)
13
17
  * cotal __complete <words…> # internal: emit candidates for the cursor
14
18
  *
15
- * `__complete` is import-light and side-effect-free by contract — persona completion is a
16
- * filesystem read, never a mesh connection — so a keystroke never blocks on the network.
19
+ * `__complete` is import-light and side-effect-free by contract — completion reads only local
20
+ * files (your personas and their declared channels/roles), never the mesh — so a keystroke never
21
+ * blocks on the network. And there is no fallback: a completer that can't produce its authoritative
22
+ * answer (e.g. a malformed agent file) fails the process — nothing on stdout, non-zero exit — so a
23
+ * partial set is never mistaken for a complete one. Set COTAL_COMPLETE_DEBUG to see why on stderr.
17
24
  */
18
25
  /** Wire format: one `value\tdescription` (or bare `value`) per line, then a `:directive`
19
26
  * trailer the stub reads (`:nofiles` / `:nospace` / `:default`). */
@@ -40,8 +47,13 @@ export async function complete(argv) {
40
47
  const res = await cmd.complete(argv.slice(1));
41
48
  emit(res.items, res.directive ?? "nofiles");
42
49
  }
43
- catch {
44
- emit([], "default"); // a throwing completer yields nothing never noisy on stderr/stdout
50
+ catch (e) {
51
+ // No fallback: a completer that can't produce its authoritative set (e.g. a malformed agent
52
+ // file) fails the process — nothing on stdout, non-zero exit — so the shell offers nothing and
53
+ // never mistakes a failure for a successful empty result. Silent unless explicitly debugging.
54
+ if (process.env.COTAL_COMPLETE_DEBUG)
55
+ process.stderr.write(`cotal __complete: ${e.message}\n`);
56
+ process.exit(1);
45
57
  }
46
58
  }
47
59
  const SCRIPTS = {
@@ -51,21 +63,81 @@ const SCRIPTS = {
51
63
  powershell: lines("# cotal PowerShell completion — forwards each <TAB> to `cotal __complete` (dynamic).", "Register-ArgumentCompleter -Native -CommandName cotal -ScriptBlock {", " param($wordToComplete, $commandAst, $cursorPosition)", ' $elements = @($commandAst.CommandElements | Select-Object -Skip 1 | ForEach-Object { "$_" })', " if (-not $wordToComplete) { $elements += '' }", " $out = & cotal __complete @elements 2>$null", " foreach ($line in $out) {", " if ([string]::IsNullOrEmpty($line) -or $line.StartsWith(':')) { continue }", ' $parts = $line -split "`t", 2', " $val = $parts[0]", ' if ($val -notlike "$wordToComplete*") { continue }', " $desc = if ($parts.Length -gt 1) { $parts[1] } else { $val }", " [System.Management.Automation.CompletionResult]::new($val, $val, 'ParameterValue', $desc)", " }", "}"),
52
64
  };
53
65
  export async function completion(argv) {
66
+ if (argv[0] === "install")
67
+ return install(argv[1]);
54
68
  const script = argv[0] ? SCRIPTS[argv[0]] : undefined;
55
69
  if (!script) {
56
- console.error(c.red("usage: cotal completion <bash|zsh|fish|powershell>"));
70
+ console.error(c.red("usage: cotal completion <bash|zsh|fish|powershell | install [shell]>"));
57
71
  console.error(c.dim(" enable it now (this shell):"));
58
72
  console.error(c.dim(" bash/zsh: source <(cotal completion bash)"));
59
73
  console.error(c.dim(" fish: cotal completion fish | source"));
60
74
  console.error(c.dim(" pwsh: cotal completion powershell | Out-String | Invoke-Expression"));
75
+ console.error(c.dim(" or install it persistently: cotal completion install"));
61
76
  process.exit(1);
62
77
  }
63
78
  process.stdout.write(script);
64
79
  }
65
- /** Argument completion for `cotal completion` itself: the supported shells. */
80
+ /** `cotal completion install [shell]` wire the stub into your shell persistently. Opt-in (never
81
+ * run by `setup`). Auto-detects the shell from $SHELL when omitted; fails loud on an unknown or
82
+ * unsupported one (no silent guess). Idempotent — re-running once installed is a no-op. */
83
+ function install(shell) {
84
+ const sh = shell ?? basename(process.env.SHELL ?? "");
85
+ if (!SCRIPTS[sh]) {
86
+ console.error(c.red(`can't install for "${sh || "unknown shell"}" — pass one of: bash, zsh, fish`));
87
+ process.exit(1);
88
+ }
89
+ if (sh === "fish") {
90
+ // Fish auto-loads files from its completions dir — drop the stub straight in (no rc edit).
91
+ const dir = join(process.env.XDG_CONFIG_HOME || join(homedir(), ".config"), "fish", "completions");
92
+ const file = join(dir, "cotal.fish");
93
+ mkdirSync(dir, { recursive: true });
94
+ writeFileSync(file, SCRIPTS.fish);
95
+ console.log(c.green("✓ installed fish completion"));
96
+ console.log(c.dim(` ${file}\n open a new shell (or: source ${file})`));
97
+ return;
98
+ }
99
+ if (sh === "bash" || sh === "zsh") {
100
+ // Write the stub to a cached file and source THAT from the rc — deterministic (process
101
+ // substitution is slower and empirically flaky on macOS bash) and fast (no `cotal` spawn on
102
+ // every shell start). Re-running regenerates the stub; the rc line is added at most once.
103
+ const dir = join(process.env.XDG_CONFIG_HOME || join(homedir(), ".config"), "cotal");
104
+ const stub = join(dir, `completion.${sh}`);
105
+ mkdirSync(dir, { recursive: true });
106
+ writeFileSync(stub, SCRIPTS[sh]);
107
+ const rc = sh === "zsh" ? join(process.env.ZDOTDIR || homedir(), ".zshrc") : join(homedir(), ".bashrc");
108
+ const line = `source "${stub}"`;
109
+ let current = "";
110
+ try {
111
+ current = readFileSync(rc, "utf8");
112
+ }
113
+ catch {
114
+ /* rc doesn't exist yet — appendFileSync creates it */
115
+ }
116
+ if (current.includes(line)) {
117
+ console.log(c.dim(`already installed in ${rc}`));
118
+ console.log(c.dim(` refreshed ${stub}`));
119
+ return;
120
+ }
121
+ appendFileSync(rc, `${current && !current.endsWith("\n") ? "\n" : ""}# cotal shell completion\n${line}\n`);
122
+ console.log(c.green(`✓ installed ${sh} completion`));
123
+ console.log(c.dim(` ${stub}\n appended to ${rc}\n open a new shell (or: source ${stub})`));
124
+ return;
125
+ }
126
+ // powershell: $PROFILE isn't resolvable from here, so print the exact line rather than guess.
127
+ console.error(c.red("auto-install isn't supported for powershell."));
128
+ console.error(c.dim(" add to your $PROFILE: cotal completion powershell | Out-String | Invoke-Expression"));
129
+ process.exit(1);
130
+ }
131
+ /** Argument completion for `cotal completion` itself: the supported shells, plus `install`. */
66
132
  export function completionComplete(argv) {
133
+ const shells = Object.keys(SCRIPTS).map((value) => ({ value }));
67
134
  if (argv.length <= 1)
68
- return { items: Object.keys(SCRIPTS).map((value) => ({ value })), directive: "nofiles" };
135
+ return {
136
+ items: [...shells, { value: "install", description: "install for your shell" }],
137
+ directive: "nofiles",
138
+ };
139
+ if (argv[0] === "install")
140
+ return { items: shells, directive: "nofiles" };
69
141
  return { items: [], directive: "nofiles" };
70
142
  }
71
143
  function lines(...l) {
@@ -1 +1 @@
1
- {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"personas.d.ts","sourceRoot":"","sources":["../../src/commands/personas.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AAoBxB,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B5D;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAcjE"}
1
+ {"version":3,"file":"personas.d.ts","sourceRoot":"","sources":["../../src/commands/personas.ts"],"names":[],"mappings":"AAIA,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AAsBxB,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC5D;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAejE"}
@@ -1,9 +1,11 @@
1
+ import { spawnSync } from "node:child_process";
1
2
  import { existsSync, readFileSync, renameSync, rmSync } from "node:fs";
2
3
  import { dirname, join } from "node:path";
3
4
  import { parseArgs } from "node:util";
4
- import { agentFilePath, assertValidName, saveAgentFile, } from "@cotal-ai/core";
5
+ import { agentFilePath, assertValidName, loadAgentFile, saveAgentFile, } from "@cotal-ai/core";
5
6
  import { cotalRoot } from "../lib/paths.js";
6
7
  import { listPersonas, listPersonaNames, personasDir } from "../lib/personas.js";
8
+ import { openTransient } from "../lib/transient.js";
7
9
  import { c } from "../ui.js";
8
10
  /**
9
11
  * `cotal personas` — list and manage the local persona catalog (`.cotal/agents/*.md`),
@@ -11,8 +13,9 @@ import { c } from "../ui.js";
11
13
  * and writes the files directly (instant, works offline). The privileged, ownership-checked
12
14
  * path stays in the manager's `definePersona` for *agents* defining personas over the wire.
13
15
  *
14
- * cotal personas [list] [--verbose]
16
+ * cotal personas [list] [--verbose] [--running]
15
17
  * cotal personas show <name>
18
+ * cotal personas edit <name>
16
19
  * cotal personas new <name> (--prompt <text> | --from <file|->) [--role <r>] [--model <m>] [--force]
17
20
  * cotal personas rm <name> --force
18
21
  */
@@ -29,13 +32,19 @@ export async function personas(argv) {
29
32
  from: { type: "string" },
30
33
  verbose: { type: "boolean", short: "v" },
31
34
  force: { type: "boolean" },
35
+ running: { type: "boolean" },
36
+ space: { type: "string" },
37
+ server: { type: "string" },
38
+ creds: { type: "string" },
32
39
  },
33
40
  });
34
41
  switch (positionals[0] ?? "list") {
35
42
  case "list":
36
- return list(values.verbose === true);
43
+ return list(values.verbose === true, values.running === true, values);
37
44
  case "show":
38
45
  return show(positionals[1]);
46
+ case "edit":
47
+ return edit(positionals[1]);
39
48
  case "new":
40
49
  return create(positionals[1], values);
41
50
  case "rm":
@@ -50,6 +59,7 @@ export function personasComplete(argv) {
50
59
  items: [
51
60
  { value: "list", description: "list the persona catalog" },
52
61
  { value: "show", description: "print a persona's card" },
62
+ { value: "edit", description: "open a persona in $EDITOR" },
53
63
  { value: "new", description: "create a persona" },
54
64
  { value: "rm", description: "delete a persona" },
55
65
  ],
@@ -57,17 +67,20 @@ export function personasComplete(argv) {
57
67
  };
58
68
  if (argv.length <= 1)
59
69
  return subs; // completing the subcommand
60
- if (argv[0] === "show" || argv[0] === "rm")
70
+ if (argv[0] === "show" || argv[0] === "edit" || argv[0] === "rm")
61
71
  return { items: listPersonaNames().map((value) => ({ value })), directive: "nofiles" };
62
72
  return { items: [], directive: "nofiles" };
63
73
  }
64
- function list(verbose) {
74
+ async function list(verbose, running, values) {
65
75
  const entries = listPersonas();
66
76
  if (!entries.length) {
67
77
  console.log(c.dim(`no personas in ${personasDir()}\n`) +
68
78
  c.dim('create one: cotal personas new <name> --prompt "<who they are>"'));
69
79
  return;
70
80
  }
81
+ // `--running` is an explicit live overlay: connect, snapshot who's present, and mark each persona.
82
+ // Fails loud if the mesh is unreachable (presentNames exits) — never a silent best-effort.
83
+ const present = running ? await presentNames(values) : undefined;
71
84
  const pad = Math.max(...entries.map((e) => e.name.length));
72
85
  for (const e of entries) {
73
86
  if (e.error) {
@@ -75,7 +88,8 @@ function list(verbose) {
75
88
  continue;
76
89
  }
77
90
  const d = e.def;
78
- const meta = [d.role && c.cyan(d.role), d.model && c.dim(`model=${d.model}`), d.owner && c.dim(`owner=${d.owner}`)]
91
+ const live = present ? (present.has(e.name) ? c.green("● running") : c.dim("○")) : undefined;
92
+ const meta = [d.role && c.cyan(d.role), d.model && c.dim(`model=${d.model}`), d.owner && c.dim(`owner=${d.owner}`), live]
79
93
  .filter(Boolean)
80
94
  .join(" ");
81
95
  console.log(`${c.bold(e.name.padEnd(pad))} ${meta}`.trimEnd());
@@ -86,6 +100,27 @@ function list(verbose) {
86
100
  console.log(d.persona.replace(/^/gm, " ") + "\n");
87
101
  }
88
102
  }
103
+ /** Snapshot the names currently present on the mesh — the live overlay behind `personas list
104
+ * --running`. Presence is a KV watch that replays asynchronously after connect (no synced signal),
105
+ * so let the roster settle (snapshot once its size holds steady) under a hard deadline so it never
106
+ * hangs. A name is "running" when an agent of exactly that name is present and not offline. */
107
+ async function presentNames(values) {
108
+ const { ep } = await openTransient(values, "personas");
109
+ try {
110
+ let last = -1;
111
+ let stable = 0;
112
+ for (let i = 0; i < 20 && stable < 3; i++) {
113
+ const n = ep.getRoster().length;
114
+ stable = n === last ? stable + 1 : 0;
115
+ last = n;
116
+ await new Promise((r) => setTimeout(r, 75));
117
+ }
118
+ return new Set(ep.getRoster().filter((p) => p.status !== "offline").map((p) => p.card.name));
119
+ }
120
+ finally {
121
+ await ep.stop();
122
+ }
123
+ }
89
124
  function show(name) {
90
125
  if (!name)
91
126
  return usage();
@@ -96,6 +131,41 @@ function show(name) {
96
131
  console.log(c.dim(path));
97
132
  process.stdout.write(readFileSync(path, "utf8"));
98
133
  }
134
+ /** `cotal personas edit <name>` — open the card in $EDITOR (or $VISUAL), then re-validate on exit
135
+ * so a save that breaks the frontmatter fails loud instead of silently shipping a bad card. */
136
+ function edit(name) {
137
+ if (!name)
138
+ return usage();
139
+ const path = agentFilePath(cotalRoot(), name);
140
+ if (!existsSync(path))
141
+ return notFound(name, path);
142
+ const editor = process.env.VISUAL || process.env.EDITOR;
143
+ if (!editor) {
144
+ console.error(c.red("no editor set — export EDITOR (or VISUAL), e.g. export EDITOR=vim"));
145
+ process.exit(1);
146
+ }
147
+ // Hand the terminal to the editor (inherit stdio so it draws). $EDITOR may carry flags
148
+ // (e.g. "code --wait"), so go through the shell.
149
+ const res = spawnSync(`${editor} "${path}"`, { stdio: "inherit", shell: true });
150
+ if (res.error) {
151
+ console.error(c.red(`couldn't launch editor "${editor}": ${res.error.message}`));
152
+ process.exit(1);
153
+ }
154
+ if (res.status !== 0) {
155
+ console.error(c.red(`editor exited ${res.signal ? `on ${res.signal}` : `with status ${res.status}`} — not saved`));
156
+ process.exit(1);
157
+ }
158
+ // Re-validate: a save that breaks the frontmatter must fail loud, not ship a broken card.
159
+ try {
160
+ loadAgentFile(path);
161
+ }
162
+ catch (e) {
163
+ console.error(c.red(`⨯ "${name}" is now unparseable — fix it:`));
164
+ console.error(c.dim(` ${e.message}`));
165
+ process.exit(1);
166
+ }
167
+ console.log(c.green(`✓ saved "${name}"`));
168
+ }
99
169
  function create(name, v) {
100
170
  if (!name)
101
171
  return usage();
@@ -163,7 +233,7 @@ function notFound(name, path) {
163
233
  process.exit(1);
164
234
  }
165
235
  function usage() {
166
- console.error(c.red("usage: cotal personas <list [--verbose] | show <name> | " +
236
+ console.error(c.red("usage: cotal personas <list [--verbose] [--running] | show <name> | edit <name> | " +
167
237
  'new <name> (--prompt <text> | --from <file|->) [--role <r>] [--model <m>] [--force] | rm <name> --force>'));
168
238
  process.exit(1);
169
239
  }
@@ -1 +1 @@
1
- {"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/commands/personas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/commands/personas.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,17 @@
1
+ import { type CompletionResult } from "@cotal-ai/core";
1
2
  /** `cotal dm <agent> "<text>"` — one unicast to a peer by name, then exit. */
2
3
  export declare function dm(argv: string[]): Promise<void>;
3
4
  /** `cotal msg <channel> "<text>"` — one broadcast to a channel, then exit. */
4
5
  export declare function msg(argv: string[]): Promise<void>;
5
6
  /** `cotal ask <role> "<text>"` — one anycast to a role/service (exactly one instance), then exit. */
6
7
  export declare function ask(argv: string[]): Promise<void>;
8
+ /** Complete `cotal msg <channel>` from the channels the local persona files *declare* — never the
9
+ * live broker (a <TAB> stays offline by contract). The label says "declared" because these are
10
+ * workspace intent, not a claim about what exists on the mesh. Only the channel position
11
+ * completes; the message text offers nothing. Fail-closed: a malformed agent file throws, so the
12
+ * completer declines rather than offering a silently-partial set (see {@link listDeclaredChannels}). */
13
+ export declare function msgComplete(argv: string[]): CompletionResult;
14
+ /** Complete `cotal ask <role>` from the roles the local persona files declare — same local-only,
15
+ * fail-closed contract as {@link msgComplete}. */
16
+ export declare function askComplete(argv: string[]): CompletionResult;
7
17
  //# sourceMappingURL=send.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AA+EA,8EAA8E;AAC9E,wBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCtD;AAED,8EAA8E;AAC9E,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAWvD;AAED,qGAAqG;AACrG,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAWvD"}
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AAyBxB,8EAA8E;AAC9E,wBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCtD;AAED,8EAA8E;AAC9E,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAWvD;AAED,qGAAqG;AACrG,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAWvD;AAED;;;;yGAIyG;AACzG,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAO5D;AAED;mDACmD;AACnD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAO5D"}
@@ -1,8 +1,8 @@
1
1
  import { parseArgs } from "node:util";
2
- import { readFileSync } from "node:fs";
3
- import { CotalEndpoint, isReachable, resolvePeer, AmbiguousPeerError, DEFAULT_SERVER, DEFAULT_SPACE, authDir, loadSpaceAuth, mintCreds, newIdentity, } from "@cotal-ai/core";
2
+ import { resolvePeer, AmbiguousPeerError, } from "@cotal-ai/core";
4
3
  import { c } from "../ui.js";
5
- import { cotalRoot } from "../lib/paths.js";
4
+ import { openTransient } from "../lib/transient.js";
5
+ import { listDeclaredChannels, listDeclaredRoles } from "../lib/personas.js";
6
6
  import { mentionsIn } from "../lib/mentions.js";
7
7
  /**
8
8
  * One-shot send commands — `cotal dm` / `cotal msg` / `cotal ask` — the headless equivalents of the
@@ -14,44 +14,6 @@ const SEND_OPTS = {
14
14
  server: { type: "string" },
15
15
  creds: { type: "string" },
16
16
  };
17
- /** Resolve space/server/creds and open a transient, write-capable sender, the way `cotal web` does:
18
- * an explicit `--creds` wins; else self-mint from `.cotal/auth` so the send is allowed; else
19
- * connect bare on an open mesh. The endpoint never registers on the roster and binds no inbox; it
20
- * watches presence so name→id resolution works (`dm`). The caller stops it. */
21
- async function connectSender(values) {
22
- const server = values.server ?? DEFAULT_SERVER;
23
- let creds = values.creds ? readFileSync(values.creds, "utf8") : undefined;
24
- let space = values.space;
25
- if (!creds) {
26
- const auth = loadSpaceAuth(authDir(cotalRoot()));
27
- if (auth) {
28
- if (space && space !== auth.space) {
29
- console.error(c.red(`Auth here is for space "${auth.space}", not "${space}". Use --space ${auth.space} (or pass --creds).`));
30
- process.exit(1);
31
- }
32
- space = auth.space;
33
- creds = await mintCreds(auth, newIdentity(), "manager");
34
- }
35
- }
36
- space = space ?? DEFAULT_SPACE;
37
- if (!(await isReachable(server, { creds }))) {
38
- console.error(c.red(`Can't reach NATS at ${server}. Run: cotal up`));
39
- process.exit(1);
40
- }
41
- const ep = new CotalEndpoint({
42
- space,
43
- servers: server,
44
- creds,
45
- channels: [],
46
- consume: false,
47
- registerPresence: false,
48
- watchPresence: true,
49
- card: { name: "send", kind: "endpoint" },
50
- });
51
- ep.on("error", (e) => console.error(c.red("! " + e.message)));
52
- await ep.start();
53
- return { ep, space };
54
- }
55
17
  /** Split `<target> <text…>` positionals, stripping a leading `@`/`#` from the target. */
56
18
  function targetAndText(positionals, strip) {
57
19
  return { target: positionals[0]?.replace(strip, ""), text: positionals.slice(1).join(" ").trim() };
@@ -64,7 +26,7 @@ export async function dm(argv) {
64
26
  console.error('usage: cotal dm <agent> "<text>" [--space <s>] [--server <url>] [--creds <path>]');
65
27
  process.exit(1);
66
28
  }
67
- const { ep, space } = await connectSender(values);
29
+ const { ep, space } = await openTransient(values, "send");
68
30
  // Presence arrives asynchronously after connect; poll briefly (≤2s) for the target to appear.
69
31
  // resolvePeer is fail-loud: an exact id or a unique name resolves, a same-name collision throws.
70
32
  let peer;
@@ -101,7 +63,7 @@ export async function msg(argv) {
101
63
  console.error('usage: cotal msg <channel> "<text>" [--space <s>] [--server <url>] [--creds <path>]');
102
64
  process.exit(1);
103
65
  }
104
- const { ep } = await connectSender(values);
66
+ const { ep } = await openTransient(values, "send");
105
67
  await ep.multicast(text, { channel, mentions: mentionsIn(text) });
106
68
  console.log(c.green(`→ #${channel}`) + c.dim(` ${text}`));
107
69
  await ep.stop();
@@ -114,9 +76,32 @@ export async function ask(argv) {
114
76
  console.error('usage: cotal ask <role> "<text>" [--space <s>] [--server <url>] [--creds <path>]');
115
77
  process.exit(1);
116
78
  }
117
- const { ep } = await connectSender(values);
79
+ const { ep } = await openTransient(values, "send");
118
80
  await ep.anycast(role, text);
119
81
  console.log(c.green(`→ @${role}`) + c.dim(` ${text}`));
120
82
  await ep.stop();
121
83
  }
84
+ /** Complete `cotal msg <channel>` from the channels the local persona files *declare* — never the
85
+ * live broker (a <TAB> stays offline by contract). The label says "declared" because these are
86
+ * workspace intent, not a claim about what exists on the mesh. Only the channel position
87
+ * completes; the message text offers nothing. Fail-closed: a malformed agent file throws, so the
88
+ * completer declines rather than offering a silently-partial set (see {@link listDeclaredChannels}). */
89
+ export function msgComplete(argv) {
90
+ if (argv.length <= 1)
91
+ return {
92
+ items: listDeclaredChannels().map((value) => ({ value, description: "declared channel" })),
93
+ directive: "nofiles",
94
+ };
95
+ return { items: [], directive: "nofiles" };
96
+ }
97
+ /** Complete `cotal ask <role>` from the roles the local persona files declare — same local-only,
98
+ * fail-closed contract as {@link msgComplete}. */
99
+ export function askComplete(argv) {
100
+ if (argv.length <= 1)
101
+ return {
102
+ items: listDeclaredRoles().map((value) => ({ value, description: "declared role" })),
103
+ directive: "nofiles",
104
+ };
105
+ return { items: [], directive: "nofiles" };
106
+ }
122
107
  //# sourceMappingURL=send.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,WAAW,EACX,kBAAkB,GAGnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;;;GAIG;AAEH,MAAM,SAAS,GAAG;IAChB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACzB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CACjB,CAAC;AAIX,yFAAyF;AACzF,SAAS,aAAa,CAAC,WAAqB,EAAE,KAAa;IACzD,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACrG,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAc;IACrC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IACtG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,mFAAmF,CAAC,CAAC;QACnG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,8FAA8F;IAC9F,iGAAiG;IACjG,IAAI,IAA0B,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,CAAC,CAAC,YAAY,kBAAkB,CAAC;gBAAE,MAAM,CAAC,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,6CAA6C,CAAC,CAAC,CAAC;YAC9E,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,UAAU;gBAC7B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACtE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,MAAM,sBAAsB,KAAK,EAAE,CAAC,CAAC,CAAC;QACvE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IACjE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAc;IACtC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IACtG,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACnE,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,sFAAsF,CAAC,CAAC;QACtG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;AAClB,CAAC;AAED,qGAAqG;AACrG,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAc;IACtC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IACtG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAChE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,mFAAmF,CAAC,CAAC;QACnG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IACxD,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;AAClB,CAAC;AAED;;;;yGAIyG;AACzG,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;QAClB,OAAO;YACL,KAAK,EAAE,oBAAoB,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC1F,SAAS,EAAE,SAAS;SACrB,CAAC;IACJ,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC7C,CAAC;AAED;mDACmD;AACnD,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;QAClB,OAAO;YACL,KAAK,EAAE,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;YACpF,SAAS,EAAE,SAAS;SACrB,CAAC;IACJ,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC7C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAuCA;;4FAE4F;AAC5F,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAczD;AAED;;0EAE0E;AAC1E,wBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtD;AAqID;;;gGAGgG;AAChG,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BpE"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAuCA;;4FAE4F;AAC5F,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAczD;AAED;;0EAE0E;AAC1E,wBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtD;AAsID;;;gGAGgG;AAChG,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BpE"}
@@ -140,6 +140,7 @@ async function runFirstRun(yes, open) {
140
140
  for (const [name, body] of Object.entries(DEMO_AGENTS)) {
141
141
  writeDemoAgent(cotalPath("agents", `${name}.md`), body);
142
142
  }
143
+ seedDefaultAgent(); // the generic persona `cotal spawn` (no name) launches
143
144
  p.log.success("Added david (the engineer), sven (the guide), and your session (me); they join when you spawn them or open the demo");
144
145
  log.line("demo-agents: wrote david + sven + me");
145
146
  await offerGlobalInstall(yes);
@@ -370,6 +371,7 @@ function closeStaleTabs(term, name) {
370
371
  }
371
372
  /** The compact repeat-run: quietly ensure the mesh + web are up here, then a one-glance card. */
372
373
  async function runEnsure() {
374
+ seedDefaultAgent(); // ensure `cotal spawn` (no name) always has a default to launch
373
375
  let mesh = await meshStatus(process.cwd());
374
376
  if (!mesh.reachable) {
375
377
  const s = p.spinner();
@@ -485,6 +487,32 @@ function writeDemoAgent(path, body) {
485
487
  }
486
488
  writeFileSync(path, body);
487
489
  }
490
+ /** The default persona `cotal spawn` (no name) launches: a generic mesh agent, seeded once and
491
+ * then the user's to shape. Unlike the demo team it's never refreshed (seed-if-absent), so any
492
+ * edits stand; deleting it just means the next `cotal setup`/`go` writes a fresh copy. */
493
+ const DEFAULT_AGENT = `---
494
+ name: default_agent
495
+ role: default
496
+ description: An agent on the mesh
497
+ tags: []
498
+ subscribe: [">"]
499
+ allowPublish: [">"]
500
+ capabilities: [spawn]
501
+ ---
502
+
503
+ You are an agent on the Cotal mesh — a shared space where agents join, see who's around, and
504
+ coordinate as peers rather than working in silos. Use the Cotal tools available to you to find
505
+ your peers and work with them. Edit this file to give yourself a name, role, and purpose.
506
+ `;
507
+ /** Seed the default persona if it's missing (idempotent, seed-if-absent). Called from both the
508
+ * first-run and repeat-run paths so `cotal spawn` always has a default on hand. */
509
+ function seedDefaultAgent() {
510
+ const path = cotalPath("agents", "default.md");
511
+ if (existsSync(path))
512
+ return;
513
+ mkdirSync(cotalPath("agents"), { recursive: true });
514
+ writeFileSync(path, DEFAULT_AGENT);
515
+ }
488
516
  const DEMO_AGENTS = {
489
517
  david: `---
490
518
  ${MANAGED_MARKER} — edit DEMO_AGENTS in the cotal CLI; delete this line to keep local changes