@cotal-ai/cli 0.3.2 → 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.
- package/README.md +11 -0
- package/dist/command.d.ts.map +1 -1
- package/dist/command.js +4 -2
- package/dist/command.js.map +1 -1
- package/dist/commands/completion.d.ts +8 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +146 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/join.d.ts.map +1 -1
- package/dist/commands/join.js +16 -9
- package/dist/commands/join.js.map +1 -1
- package/dist/commands/mint.d.ts.map +1 -1
- package/dist/commands/mint.js +20 -12
- package/dist/commands/mint.js.map +1 -1
- package/dist/commands/personas.d.ts +5 -0
- package/dist/commands/personas.d.ts.map +1 -0
- package/dist/commands/personas.js +240 -0
- package/dist/commands/personas.js.map +1 -0
- package/dist/commands/send.d.ts +10 -0
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +49 -53
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +35 -3
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/spawn.d.ts +4 -13
- package/dist/commands/spawn.d.ts.map +1 -1
- package/dist/commands/spawn.js +101 -14
- package/dist/commands/spawn.js.map +1 -1
- package/dist/commands/up.d.ts +1 -0
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +11 -7
- package/dist/commands/up.js.map +1 -1
- package/dist/console/commands.d.ts +1 -1
- package/dist/console/commands.d.ts.map +1 -1
- package/dist/console/commands.js +32 -6
- package/dist/console/commands.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/personas.d.ts +32 -0
- package/dist/lib/personas.d.ts.map +1 -0
- package/dist/lib/personas.js +66 -0
- package/dist/lib/personas.js.map +1 -0
- package/dist/lib/transient.d.ts +27 -0
- package/dist/lib/transient.d.ts.map +1 -0
- package/dist/lib/transient.js +48 -0
- package/dist/lib/transient.js.map +1 -0
- package/dist/web/app.js +144 -45
- package/dist/web/index.html +45 -1
- package/package.json +3 -2
package/dist/commands/spawn.d.ts
CHANGED
|
@@ -1,15 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
|
|
5
|
-
* Unlike `cotal start` (the manager spawns into a detached PTY you attach to),
|
|
6
|
-
* `cotal spawn` hands the terminal straight to the agent: run it in your shell,
|
|
7
|
-
* or inside a cmux/tmux pane, and the real Claude TUI takes over.
|
|
8
|
-
*
|
|
9
|
-
* The launch recipe is the connector's `buildLaunch` (the single source of truth,
|
|
10
|
-
* shared with the manager); only *how the spec runs* differs — foreground exec
|
|
11
|
-
* here vs. a supervised runtime in the manager. The connector is resolved from
|
|
12
|
-
* the registry by agent type, composed at the root.
|
|
13
|
-
*/
|
|
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. */
|
|
4
|
+
export declare function spawnComplete(argv: string[]): CompletionResult;
|
|
14
5
|
export declare function spawn(argv: string[]): Promise<void>;
|
|
15
6
|
//# sourceMappingURL=spawn.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/commands/spawn.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/commands/spawn.js
CHANGED
|
@@ -2,9 +2,17 @@ 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, loadAgentFile, loadSpaceAuth, mintCreds, newIdentity, provisionAgent, registry, CotalEndpoint, } from "@cotal-ai/core";
|
|
5
|
+
import { DEFAULT_SERVER, agentFilePath, authDir, connectorServers, firstFreeName, isReachable, loadAgentFile, loadCotalConfig, loadSpaceAuth, mintCreds, newIdentity, parseShareSelection, provisionAgent, registry, CotalEndpoint, } from "@cotal-ai/core";
|
|
6
6
|
import { cotalRoot } from "../lib/paths.js";
|
|
7
|
+
import { listPersonaNames } from "../lib/personas.js";
|
|
7
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. */
|
|
11
|
+
export function spawnComplete(argv) {
|
|
12
|
+
if (argv.length <= 1)
|
|
13
|
+
return { items: listPersonaNames().map((value) => ({ value })), directive: "nofiles" };
|
|
14
|
+
return { items: [], directive: "nofiles" };
|
|
15
|
+
}
|
|
8
16
|
/**
|
|
9
17
|
* `cotal spawn <name-or-path>` — launch an agent in the FOREGROUND of this
|
|
10
18
|
* terminal from a local agent file, joined to the mesh with its persona.
|
|
@@ -18,6 +26,50 @@ import { resolveSpace } from "../lib/status.js";
|
|
|
18
26
|
* here vs. a supervised runtime in the manager. The connector is resolved from
|
|
19
27
|
* the registry by agent type, composed at the root.
|
|
20
28
|
*/
|
|
29
|
+
/**
|
|
30
|
+
* Auto-number `requested` past any peer already present on the mesh (foo → foo-2 → foo-3) — the same
|
|
31
|
+
* series the manager's spawn funnel uses (firstFreeName). Foreground `cotal spawn` doesn't go through
|
|
32
|
+
* the manager, so it has no name reservation: this is a best-effort, advisory check. It connects a
|
|
33
|
+
* transient presence-watching endpoint, lets the roster settle, and snapshots the live names; two
|
|
34
|
+
* simultaneous `cotal spawn`s can still race onto the same number. If the mesh is unreachable the
|
|
35
|
+
* agent couldn't join it anyway, so dedup is skipped and the requested name stands.
|
|
36
|
+
*/
|
|
37
|
+
async function uniqueMeshName(requested, { space, server, auth }) {
|
|
38
|
+
// Reading presence in auth mode needs a credential (the bucket is OPEN-only for agents): a
|
|
39
|
+
// short-lived manager cred, the same throwaway `cotal dm` mints to resolve a name → id.
|
|
40
|
+
const creds = auth ? await mintCreds(auth, newIdentity(), "manager") : undefined;
|
|
41
|
+
if (!(await isReachable(server, { creds })))
|
|
42
|
+
return requested;
|
|
43
|
+
const ep = new CotalEndpoint({
|
|
44
|
+
space,
|
|
45
|
+
servers: server,
|
|
46
|
+
creds,
|
|
47
|
+
channels: [],
|
|
48
|
+
consume: false,
|
|
49
|
+
registerPresence: false, // an invisible probe — don't add ourselves to the roster we're reading
|
|
50
|
+
watchPresence: true,
|
|
51
|
+
card: { name: "spawn-probe", kind: "endpoint" },
|
|
52
|
+
});
|
|
53
|
+
ep.on("error", () => { }); // advisory: a presence-read hiccup must never block the spawn
|
|
54
|
+
await ep.start();
|
|
55
|
+
try {
|
|
56
|
+
// Presence replays from the KV bucket right after connect; settle until the roster count holds
|
|
57
|
+
// steady across two polls (≤1s), then snapshot the names of the peers that are actually live.
|
|
58
|
+
let prev = -1;
|
|
59
|
+
for (let i = 0; i < 10; i++) {
|
|
60
|
+
await new Promise((r) => setTimeout(r, 100));
|
|
61
|
+
const n = ep.getRoster().length;
|
|
62
|
+
if (n === prev)
|
|
63
|
+
break;
|
|
64
|
+
prev = n;
|
|
65
|
+
}
|
|
66
|
+
const taken = new Set(ep.getRoster().filter((p) => p.status !== "offline").map((p) => p.card.name));
|
|
67
|
+
return firstFreeName(requested, (n) => taken.has(n));
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
await ep.stop();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
21
73
|
export async function spawn(argv) {
|
|
22
74
|
const { values, positionals } = parseArgs({
|
|
23
75
|
args: argv,
|
|
@@ -30,36 +82,52 @@ export async function spawn(argv) {
|
|
|
30
82
|
agent: { type: "string" },
|
|
31
83
|
role: { type: "string" },
|
|
32
84
|
prompt: { type: "string" },
|
|
85
|
+
transcript: { type: "boolean" },
|
|
86
|
+
"no-transcript": { type: "boolean" },
|
|
87
|
+
"share-tools": { type: "string" },
|
|
88
|
+
subscribe: { type: "string" }, // read set override (comma-separated)
|
|
89
|
+
"allow-subscribe": { type: "string" }, // read ACL override
|
|
90
|
+
"allow-publish": { type: "string" }, // post ACL override
|
|
33
91
|
},
|
|
34
92
|
});
|
|
35
|
-
|
|
36
|
-
//
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
93
|
+
const splitFlag = (v) => (v ? v.split(",").map((s) => s.trim()).filter(Boolean) : undefined);
|
|
94
|
+
// Transcript mirroring to `tr-<name>` is OFF by default; `--transcript` opts in
|
|
95
|
+
// (`--no-transcript` is accepted too, to be explicit about the default).
|
|
96
|
+
const transcript = values.transcript ? true : values["no-transcript"] ? false : false;
|
|
97
|
+
// 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`).
|
|
100
|
+
const ref = values.config ?? positionals[0] ?? values.name ?? "default";
|
|
42
101
|
const path = agentFilePath(cotalRoot(), ref);
|
|
43
102
|
let def;
|
|
44
103
|
try {
|
|
45
104
|
def = loadAgentFile(path);
|
|
46
105
|
}
|
|
47
106
|
catch (e) {
|
|
48
|
-
|
|
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}`);
|
|
49
111
|
process.exit(1);
|
|
50
112
|
}
|
|
51
113
|
// --name / --role override the file (name defaults from the file's frontmatter).
|
|
52
|
-
const
|
|
114
|
+
const requested = values.name ?? def.name;
|
|
53
115
|
const role = values.role ?? def.role;
|
|
54
116
|
const space = values.space ?? resolveSpace(process.cwd());
|
|
55
117
|
const server = values.server ?? DEFAULT_SERVER;
|
|
118
|
+
const auth = loadSpaceAuth(authDir(cotalRoot()));
|
|
119
|
+
// A second `cotal spawn` of the same agent would otherwise join under a duplicate mesh identity:
|
|
120
|
+
// auto-number the name past anyone already present (best-effort — this path bypasses the manager's
|
|
121
|
+
// race-free reservation; see uniqueMeshName). Everything below (creds path, launch) uses `name`.
|
|
122
|
+
const name = await uniqueMeshName(requested, { space, server, auth });
|
|
123
|
+
if (name !== requested)
|
|
124
|
+
console.error(`"${requested}" is already on the mesh — spawning as ${name} instead`);
|
|
56
125
|
// Auth mode (`.cotal/auth` present): mint a stable identity + scoped creds for this agent
|
|
57
126
|
// and pre-create its bind-only durables, via a short-lived privileged provisioner — the
|
|
58
127
|
// same onboarding the manager does, so the foreground launch joins the authed mesh too.
|
|
59
128
|
// Open mode (no `.cotal/auth`): unchanged — the session connects without creds.
|
|
60
129
|
let id;
|
|
61
130
|
let credsPath;
|
|
62
|
-
const auth = loadSpaceAuth(authDir(cotalRoot()));
|
|
63
131
|
if (auth) {
|
|
64
132
|
const identity = newIdentity();
|
|
65
133
|
const prov = new CotalEndpoint({
|
|
@@ -74,9 +142,19 @@ export async function spawn(argv) {
|
|
|
74
142
|
});
|
|
75
143
|
prov.on("error", (e) => console.error(`! provisioner: ${e.message}`));
|
|
76
144
|
await prov.start();
|
|
145
|
+
const subscribe = splitFlag(values.subscribe) ?? def.subscribe;
|
|
146
|
+
// Direct foreground spawn is LIVE-ONLY: this short-lived provisioner is not a managing Plane-3 host,
|
|
147
|
+
// and no long-lived manager knows this agent (it's in no manager's `agents` ledger), so a durable
|
|
148
|
+
// boot membership could be neither authorized for reader delivery nor leaved via self-service. Skip
|
|
149
|
+
// it — the agent reads live via its core-sub; a durable backstop requires spawning under a manager
|
|
150
|
+
// (`cotal start` / `cotal up`).
|
|
77
151
|
const creds = await provisionAgent(prov, auth, identity, {
|
|
78
|
-
|
|
152
|
+
subscribe,
|
|
153
|
+
allowSubscribe: splitFlag(values["allow-subscribe"]) ?? def.allowSubscribe ?? subscribe,
|
|
154
|
+
allowPublish: splitFlag(values["allow-publish"]) ?? def.allowPublish,
|
|
79
155
|
role,
|
|
156
|
+
capabilities: def.capabilities,
|
|
157
|
+
durableMembership: false,
|
|
80
158
|
});
|
|
81
159
|
await prov.stop();
|
|
82
160
|
credsPath = join(authDir(cotalRoot()), "creds", `${name}.creds`);
|
|
@@ -85,7 +163,12 @@ export async function spawn(argv) {
|
|
|
85
163
|
id = identity.id;
|
|
86
164
|
console.error(`minted creds for ${name} (auth mode) → ${credsPath}`);
|
|
87
165
|
}
|
|
88
|
-
|
|
166
|
+
// 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.
|
|
169
|
+
const agentType = values.agent ?? "claude";
|
|
170
|
+
const mcpServers = connectorServers(loadCotalConfig(cotalRoot()), agentType, parseShareSelection(values["share-tools"]));
|
|
171
|
+
const connector = registry.resolve("connector", agentType);
|
|
89
172
|
const spec = connector.buildLaunch({
|
|
90
173
|
space,
|
|
91
174
|
name,
|
|
@@ -95,11 +178,15 @@ export async function spawn(argv) {
|
|
|
95
178
|
servers: server,
|
|
96
179
|
configPath: path,
|
|
97
180
|
prompt: values.prompt,
|
|
181
|
+
transcript,
|
|
182
|
+
mcpServers,
|
|
98
183
|
});
|
|
99
184
|
console.error(`spawning ${name}${role ? ` (${role})` : ""} on the mesh — press Enter at the dev-channels prompt`);
|
|
100
185
|
const child = spawnProcess(spec.command, spec.args, {
|
|
101
186
|
stdio: "inherit",
|
|
102
|
-
|
|
187
|
+
// P3: only the connector-declared env (OS allow-list + identity + named model key) — never
|
|
188
|
+
// `...process.env`, so the operator's unrelated secrets don't bleed into the foreground agent.
|
|
189
|
+
env: spec.env ?? {},
|
|
103
190
|
});
|
|
104
191
|
await new Promise((resolve) => {
|
|
105
192
|
child.on("error", (e) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/commands/spawn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,cAAc,EACd,aAAa,EACb,OAAO,EACP,aAAa,EACb,aAAa,EACb,SAAS,EACT,WAAW,EACX,cAAc,EACd,QAAQ,EACR,aAAa,
|
|
1
|
+
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/commands/spawn.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/up.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"up.d.ts","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"AAiCA,wBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"up.d.ts","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"AAiCA,wBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiEtD;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAgCvH"}
|
package/dist/commands/up.js
CHANGED
|
@@ -18,9 +18,11 @@ export async function up(argv) {
|
|
|
18
18
|
open: { type: "boolean" }, // disable auth — run an open dev mesh
|
|
19
19
|
channels: { type: "string" }, // seed the channel registry from this JSON file
|
|
20
20
|
detach: { type: "boolean" }, // run the server in the background (pid in .cotal/nats.pid)
|
|
21
|
+
host: { type: "string" }, // bind address (default 127.0.0.1 — loopback; 0.0.0.0 to expose with auth)
|
|
21
22
|
},
|
|
22
23
|
});
|
|
23
24
|
const server = values.server ?? DEFAULT_SERVER;
|
|
25
|
+
const host = values.host ?? "127.0.0.1";
|
|
24
26
|
if (await isReachable(server)) {
|
|
25
27
|
console.log(c.green(`✓ NATS already running at ${server}`));
|
|
26
28
|
return;
|
|
@@ -32,6 +34,7 @@ export async function up(argv) {
|
|
|
32
34
|
space: values.space,
|
|
33
35
|
open: values.open,
|
|
34
36
|
channels: values.channels,
|
|
37
|
+
host,
|
|
35
38
|
});
|
|
36
39
|
console.log(c.dim(`Started nats-server (${source}).`));
|
|
37
40
|
console.log(c.green(`✓ mesh running in the background (pid ${pid}) — stop with: cotal down`));
|
|
@@ -42,11 +45,11 @@ export async function up(argv) {
|
|
|
42
45
|
const useAuth = !values.open;
|
|
43
46
|
const space = values.space ?? resolveSpace(process.cwd());
|
|
44
47
|
const seedFile = loadChannelsFile(values.channels);
|
|
45
|
-
const setup = useAuth ? await authSetup(storeDir, server, space) : undefined;
|
|
48
|
+
const setup = useAuth ? await authSetup(storeDir, server, space, host) : undefined;
|
|
46
49
|
const port = Number(new URL(server).port) || 4222;
|
|
47
|
-
const args = setup ? ["-c", setup.confPath] : ["-js", "-sd", storeDir, "-p", String(port)];
|
|
50
|
+
const args = setup ? ["-c", setup.confPath] : ["-js", "-sd", storeDir, "-p", String(port), "-a", host];
|
|
48
51
|
const { bin, source } = await resolveNatsServer();
|
|
49
|
-
console.log(c.dim(`Starting nats-server (JetStream, ${useAuth ? "JWT auth" : "OPEN/no-auth"}, ${source}) — store: ${storeDir}`));
|
|
52
|
+
console.log(c.dim(`Starting nats-server (JetStream, ${useAuth ? "JWT auth" : "OPEN/no-auth"}, ${source}) — store: ${storeDir}, bind: ${host}`));
|
|
50
53
|
console.log(c.dim("Press Ctrl-C to stop.\n"));
|
|
51
54
|
const child = spawn(bin, args, { stdio: "inherit" });
|
|
52
55
|
child.on("error", (err) => {
|
|
@@ -76,9 +79,10 @@ export async function startMeshDetached(opts = {}) {
|
|
|
76
79
|
const useAuth = !opts.open;
|
|
77
80
|
const space = opts.space ?? resolveSpace(process.cwd());
|
|
78
81
|
const seedFile = loadChannelsFile(opts.channels);
|
|
79
|
-
const
|
|
82
|
+
const host = opts.host ?? "127.0.0.1";
|
|
83
|
+
const setup = useAuth ? await authSetup(storeDir, server, space, host) : undefined;
|
|
80
84
|
const port = Number(new URL(server).port) || 4222;
|
|
81
|
-
const args = setup ? ["-c", setup.confPath] : ["-js", "-sd", storeDir, "-p", String(port)];
|
|
85
|
+
const args = setup ? ["-c", setup.confPath] : ["-js", "-sd", storeDir, "-p", String(port), "-a", host];
|
|
82
86
|
const { bin, source } = await resolveNatsServer();
|
|
83
87
|
const logPath = cotalPath("nats.log");
|
|
84
88
|
const startOffset = existsSync(logPath) ? statSync(logPath).size : 0;
|
|
@@ -162,7 +166,7 @@ function loadChannelsFile(explicit) {
|
|
|
162
166
|
/** Ensure the space's trust material exists, render a server config, and mint a privileged
|
|
163
167
|
* setup creds (used to pre-create streams once the server is up). The account signing key
|
|
164
168
|
* in `.cotal/auth` is what `cotal mint` and the manager later use to issue per-agent creds. */
|
|
165
|
-
async function authSetup(storeDir, server, space) {
|
|
169
|
+
async function authSetup(storeDir, server, space, host = "127.0.0.1") {
|
|
166
170
|
const dir = authDir(cotalRoot());
|
|
167
171
|
let auth = loadSpaceAuth(dir);
|
|
168
172
|
if (!auth) {
|
|
@@ -171,7 +175,7 @@ async function authSetup(storeDir, server, space) {
|
|
|
171
175
|
}
|
|
172
176
|
const port = Number(new URL(server).port) || 4222;
|
|
173
177
|
const confPath = resolve(dir, "server.conf");
|
|
174
|
-
writeFileSync(confPath, serverConfig(auth, { port, storeDir }));
|
|
178
|
+
writeFileSync(confPath, serverConfig(auth, { port, storeDir, host }));
|
|
175
179
|
const creds = await mintCreds(auth, newIdentity(), "manager"); // privileged, ephemeral
|
|
176
180
|
return { confPath, creds };
|
|
177
181
|
}
|
package/dist/commands/up.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EACL,SAAS,EACT,aAAa,EACb,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,WAAW,EACX,cAAc,EACd,OAAO,EACP,eAAe,EACf,aAAa,EACb,aAAa,EACb,YAAY,EACZ,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,mBAAmB,GAGpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAc;IACrC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,IAAI;QACV,gBAAgB,EAAE,IAAI;QACtB,OAAO,EAAE;YACP,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC/B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,sCAAsC;YACjE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,gDAAgD;YAC9E,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,4DAA4D;
|
|
1
|
+
{"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/console/commands.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/console/commands.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuD,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACzG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,aAAa,CAAC;IAClB,QAAQ,EAAE,YAAY,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC;IAC/C,gBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC1D;AAcD,eAAO,MAAM,QAAQ,EAAE,cAAc,EA2FpC,CAAC;AAEF,oGAAoG;AACpG,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CASjF"}
|
package/dist/console/commands.js
CHANGED
|
@@ -1,8 +1,18 @@
|
|
|
1
|
+
// The console's `:` command catalog — the operator's send/control verbs. A small local list (NOT
|
|
2
|
+
// the CLI `Command` registry, which is argv/process-exit shaped). The catalog drives both execution
|
|
3
|
+
// and the palette's autocomplete. Write commands publish over the mesh via the observer endpoint;
|
|
4
|
+
// they are gated on `canWrite` (open mode, or a privileged --creds).
|
|
5
|
+
import { CONTROL_PRIVILEGED, resolvePeer, AmbiguousPeerError } from "@cotal-ai/core";
|
|
1
6
|
import { mentionsIn } from "../lib/mentions.js";
|
|
2
|
-
/** Resolve an agent/endpoint name (with or without a leading @) to its instance id.
|
|
7
|
+
/** Resolve an agent/endpoint name (with or without a leading @) to its instance id. Fail-loud:
|
|
8
|
+
* an exact id or a unique name resolves; a same-name collision throws `AmbiguousPeerError`
|
|
9
|
+
* (the caller renders {@link ambiguityNote}). */
|
|
3
10
|
function idOf(snap, name) {
|
|
4
|
-
|
|
5
|
-
|
|
11
|
+
return resolvePeer([...snap.agents, ...snap.endpoints], name.replace(/^@/, ""))?.card.id;
|
|
12
|
+
}
|
|
13
|
+
/** One-line note for the transient status bar when a name matched several peers. */
|
|
14
|
+
function ambiguityNote(e) {
|
|
15
|
+
return `"${e.target}" is ambiguous — dm by id: ${e.candidates.map((c) => `${c.name} ${c.id}`).join(", ")}`;
|
|
6
16
|
}
|
|
7
17
|
export const COMMANDS = [
|
|
8
18
|
{
|
|
@@ -33,7 +43,15 @@ export const COMMANDS = [
|
|
|
33
43
|
const m = rest.match(/^@?(\S+)\s+([\s\S]+)/);
|
|
34
44
|
if (!m)
|
|
35
45
|
return ctx.notify("usage: dm <@agent> <text>");
|
|
36
|
-
|
|
46
|
+
let id;
|
|
47
|
+
try {
|
|
48
|
+
id = idOf(ctx.snapshot, m[1]);
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
if (e instanceof AmbiguousPeerError)
|
|
52
|
+
return ctx.notify(ambiguityNote(e));
|
|
53
|
+
throw e;
|
|
54
|
+
}
|
|
37
55
|
if (!id)
|
|
38
56
|
return ctx.notify(`no agent "${m[1]}"`);
|
|
39
57
|
await ctx.ep.unicast(id, m[2]);
|
|
@@ -47,7 +65,15 @@ export const COMMANDS = [
|
|
|
47
65
|
write: true,
|
|
48
66
|
run: async (ctx, rest) => {
|
|
49
67
|
const name = rest.replace(/^@/, "").trim().split(/\s+/)[0] ?? "";
|
|
50
|
-
|
|
68
|
+
let id;
|
|
69
|
+
try {
|
|
70
|
+
id = idOf(ctx.snapshot, name);
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
if (e instanceof AmbiguousPeerError)
|
|
74
|
+
return ctx.notify(ambiguityNote(e));
|
|
75
|
+
throw e;
|
|
76
|
+
}
|
|
51
77
|
if (!id)
|
|
52
78
|
return ctx.notify(`no agent "${name}"`);
|
|
53
79
|
await ctx.ep.unicast(id, "👋 ping");
|
|
@@ -73,7 +99,7 @@ export const COMMANDS = [
|
|
|
73
99
|
summary: "list manager-spawned agents",
|
|
74
100
|
run: async (ctx) => {
|
|
75
101
|
try {
|
|
76
|
-
const r = await ctx.ep.requestControl(
|
|
102
|
+
const r = await ctx.ep.requestControl(CONTROL_PRIVILEGED, { op: "ps" });
|
|
77
103
|
if (!r.ok)
|
|
78
104
|
return ctx.notify("ps: " + (r.error ?? "failed"));
|
|
79
105
|
const list = r.data ?? [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/console/commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/console/commands.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4LA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,13 +7,15 @@ import { watch } from "./commands/watch.js";
|
|
|
7
7
|
import { console_ } from "./commands/console.js";
|
|
8
8
|
import { demo } from "./commands/demo.js";
|
|
9
9
|
import { web } from "./commands/web.js";
|
|
10
|
-
import { spawn } from "./commands/spawn.js";
|
|
10
|
+
import { spawn, spawnComplete } from "./commands/spawn.js";
|
|
11
|
+
import { personas, personasComplete } from "./commands/personas.js";
|
|
12
|
+
import { completion, completionComplete, complete } from "./commands/completion.js";
|
|
11
13
|
import { mint } from "./commands/mint.js";
|
|
12
14
|
import { signer } from "./commands/signer.js";
|
|
13
15
|
import { channels } from "./commands/channels.js";
|
|
14
16
|
import { history } from "./commands/history.js";
|
|
15
17
|
import { feedback } from "./commands/feedback.js";
|
|
16
|
-
import { dm, msg, ask } from "./commands/send.js";
|
|
18
|
+
import { dm, msg, ask, msgComplete, askComplete } from "./commands/send.js";
|
|
17
19
|
/** The minimal mesh CLI: thin NATS clients (up/join/watch), plus `spawn` — a
|
|
18
20
|
* foreground agent launch that reuses the connector's launch recipe. Self-registers
|
|
19
21
|
* on import; heavier surfaces (the manager's control plane) register the same way
|
|
@@ -76,6 +78,7 @@ const baseCommands = [
|
|
|
76
78
|
summary: "broadcast a message to a channel",
|
|
77
79
|
usage: 'msg <channel> "<text>" [--space <s>] [--server <url>] [--creds <path>]',
|
|
78
80
|
run: msg,
|
|
81
|
+
complete: msgComplete,
|
|
79
82
|
},
|
|
80
83
|
{
|
|
81
84
|
kind: "command",
|
|
@@ -84,6 +87,7 @@ const baseCommands = [
|
|
|
84
87
|
summary: "anycast a message to a role (one instance answers)",
|
|
85
88
|
usage: 'ask <role> "<text>" [--space <s>] [--server <url>] [--creds <path>]',
|
|
86
89
|
run: ask,
|
|
90
|
+
complete: askComplete,
|
|
87
91
|
},
|
|
88
92
|
{
|
|
89
93
|
kind: "command",
|
|
@@ -110,8 +114,32 @@ const baseCommands = [
|
|
|
110
114
|
kind: "command",
|
|
111
115
|
name: "spawn",
|
|
112
116
|
group: "Agents",
|
|
113
|
-
summary: "launch an agent in this terminal from a file — spawn <name-or-path> | --name <n> --config <path> [--agent <a>] [--role <r>]",
|
|
117
|
+
summary: "launch an agent in this terminal from a file — spawn [<name-or-path>] (defaults to the `default` persona) | --name <n> --config <path> [--agent <a>] [--role <r>]",
|
|
114
118
|
run: spawn,
|
|
119
|
+
complete: spawnComplete,
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
kind: "command",
|
|
123
|
+
name: "personas",
|
|
124
|
+
group: "Agents",
|
|
125
|
+
summary: "list/manage local personas (.cotal/agents) — personas <list [-v] [--running] | show <name> | edit <name> | new <name> (--prompt <t>|--from <f>) [--role <r>] [--model <m>] | rm <name> --force>",
|
|
126
|
+
run: personas,
|
|
127
|
+
complete: personasComplete,
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
kind: "command",
|
|
131
|
+
name: "completion",
|
|
132
|
+
group: "Agents",
|
|
133
|
+
summary: "shell completion — completion <bash|zsh|fish|powershell | install [shell]>",
|
|
134
|
+
run: completion,
|
|
135
|
+
complete: completionComplete,
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
kind: "command",
|
|
139
|
+
name: "__complete",
|
|
140
|
+
group: "Agents",
|
|
141
|
+
summary: "(internal) emit completion candidates for the current command line",
|
|
142
|
+
run: complete,
|
|
115
143
|
},
|
|
116
144
|
{
|
|
117
145
|
kind: "command",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAgB,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type AgentDef } from "@cotal-ai/core";
|
|
2
|
+
/**
|
|
3
|
+
* The persona catalog: the local `.cotal/agents/*.md` files an operator manages with
|
|
4
|
+
* `cotal personas` and spawns by name. Filesystem-only and side-effect-free — it never
|
|
5
|
+
* touches the mesh — so it is safe to call from a <TAB> completion as well as from `list`.
|
|
6
|
+
* The single source of truth for "what personas exist", shared by both surfaces.
|
|
7
|
+
*/
|
|
8
|
+
export interface PersonaEntry {
|
|
9
|
+
/** The filename stem (`.cotal/agents/<name>.md`), which is also the spawn name. */
|
|
10
|
+
name: string;
|
|
11
|
+
path: string;
|
|
12
|
+
/** Parsed definition, or undefined when the file failed to parse (see `error`). */
|
|
13
|
+
def?: AgentDef;
|
|
14
|
+
/** Parse error message, if the file is malformed — surfaced rather than crashing the list. */
|
|
15
|
+
error?: string;
|
|
16
|
+
}
|
|
17
|
+
/** The directory persona files live in: `<root>/.cotal/agents`. */
|
|
18
|
+
export declare function personasDir(root?: string): string;
|
|
19
|
+
/** List the persona files, each parsed (a malformed file becomes an entry with `error`, not a
|
|
20
|
+
* throw). Returns `[]` when the directory is absent. Filesystem-only — no mesh, no network. */
|
|
21
|
+
export declare function listPersonas(root?: string): PersonaEntry[];
|
|
22
|
+
/** Just the persona names — the completion source for `cotal spawn` and `personas show/rm`. */
|
|
23
|
+
export declare function listPersonaNames(root?: string): string[];
|
|
24
|
+
/** Channels the persona files declare (`subscribe` ∪ `allowSubscribe` ∪ `allowPublish`), as the
|
|
25
|
+
* completion source for `cotal msg`/`send`. Wildcard ACL scopes (`team.>`, `*`) are excluded —
|
|
26
|
+
* they're read/post patterns, not concrete send targets. Authoritative-for-intent, not a claim the
|
|
27
|
+
* channel exists on the broker. Fail-closed via {@link declaredValues}. Filesystem-only — no mesh. */
|
|
28
|
+
export declare function listDeclaredChannels(root?: string): string[];
|
|
29
|
+
/** Roles the persona files declare (the `role:` field), as the completion source for
|
|
30
|
+
* `cotal ask`/`anycast`. Fail-closed via {@link declaredValues}. Filesystem-only — no mesh. */
|
|
31
|
+
export declare function listDeclaredRoles(root?: string): string[];
|
|
32
|
+
//# sourceMappingURL=personas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personas.d.ts","sourceRoot":"","sources":["../../src/lib/personas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG9D;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,8FAA8F;IAC9F,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,IAAI,SAAc,GAAG,MAAM,CAEtD;AAED;gGACgG;AAChG,wBAAgB,YAAY,CAAC,IAAI,SAAc,GAAG,YAAY,EAAE,CAiB/D;AAED,+FAA+F;AAC/F,wBAAgB,gBAAgB,CAAC,IAAI,SAAc,GAAG,MAAM,EAAE,CAE7D;AAeD;;;uGAGuG;AACvG,wBAAgB,oBAAoB,CAAC,IAAI,SAAc,GAAG,MAAM,EAAE,CAMjE;AAED;gGACgG;AAChG,wBAAgB,iBAAiB,CAAC,IAAI,SAAc,GAAG,MAAM,EAAE,CAE9D"}
|