@cotal-ai/cli 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/channels.d.ts.map +1 -1
- package/dist/commands/channels.js +4 -2
- package/dist/commands/channels.js.map +1 -1
- package/dist/commands/console.d.ts.map +1 -1
- package/dist/commands/console.js +11 -8
- package/dist/commands/console.js.map +1 -1
- package/dist/commands/demo.js +3 -2
- package/dist/commands/demo.js.map +1 -1
- package/dist/commands/down.d.ts +4 -0
- package/dist/commands/down.d.ts.map +1 -0
- package/dist/commands/down.js +36 -0
- package/dist/commands/down.js.map +1 -0
- package/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +5 -3
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/join.js +3 -2
- package/dist/commands/join.js.map +1 -1
- package/dist/commands/mint.d.ts.map +1 -1
- package/dist/commands/mint.js +3 -2
- package/dist/commands/mint.js.map +1 -1
- package/dist/commands/setup.d.ts +13 -6
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +542 -61
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/signer.d.ts +6 -0
- package/dist/commands/signer.d.ts.map +1 -0
- package/dist/commands/signer.js +30 -0
- package/dist/commands/signer.js.map +1 -0
- package/dist/commands/spawn.d.ts.map +1 -1
- package/dist/commands/spawn.js +9 -5
- package/dist/commands/spawn.js.map +1 -1
- package/dist/commands/up.d.ts +21 -0
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +108 -38
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/web.d.ts +27 -0
- package/dist/commands/web.d.ts.map +1 -1
- package/dist/commands/web.js +101 -14
- package/dist/commands/web.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -8
- package/dist/index.js.map +1 -1
- package/dist/lib/assist.d.ts +16 -0
- package/dist/lib/assist.d.ts.map +1 -0
- package/dist/lib/assist.js +52 -0
- package/dist/lib/assist.js.map +1 -0
- package/dist/lib/cancel.d.ts +5 -0
- package/dist/lib/cancel.d.ts.map +1 -0
- package/dist/lib/cancel.js +12 -0
- package/dist/lib/cancel.js.map +1 -0
- package/dist/lib/live-window.d.ts +22 -0
- package/dist/lib/live-window.d.ts.map +1 -0
- package/dist/lib/live-window.js +71 -0
- package/dist/lib/live-window.js.map +1 -0
- package/dist/lib/manager-proc.d.ts +32 -0
- package/dist/lib/manager-proc.d.ts.map +1 -0
- package/dist/lib/manager-proc.js +84 -0
- package/dist/lib/manager-proc.js.map +1 -0
- package/dist/lib/nats-bin.d.ts +7 -0
- package/dist/lib/nats-bin.d.ts.map +1 -0
- package/dist/lib/nats-bin.js +21 -0
- package/dist/lib/nats-bin.js.map +1 -0
- package/dist/lib/onboard.d.ts +3 -0
- package/dist/lib/onboard.d.ts.map +1 -0
- package/dist/lib/onboard.js +15 -0
- package/dist/lib/onboard.js.map +1 -0
- package/dist/lib/paths.d.ts +7 -0
- package/dist/lib/paths.d.ts.map +1 -0
- package/dist/lib/paths.js +13 -0
- package/dist/lib/paths.js.map +1 -0
- package/dist/lib/self-exec.d.ts +18 -0
- package/dist/lib/self-exec.d.ts.map +1 -0
- package/dist/lib/self-exec.js +50 -0
- package/dist/lib/self-exec.js.map +1 -0
- package/dist/lib/setup-log.d.ts +8 -0
- package/dist/lib/setup-log.d.ts.map +1 -0
- package/dist/lib/setup-log.js +17 -0
- package/dist/lib/setup-log.js.map +1 -0
- package/dist/lib/status.d.ts +27 -0
- package/dist/lib/status.d.ts.map +1 -0
- package/dist/lib/status.js +57 -0
- package/dist/lib/status.js.map +1 -0
- package/dist/lib/steps.d.ts +31 -0
- package/dist/lib/steps.d.ts.map +1 -0
- package/dist/lib/steps.js +91 -0
- package/dist/lib/steps.js.map +1 -0
- package/dist/lib/theme.d.ts +18 -0
- package/dist/lib/theme.d.ts.map +1 -0
- package/dist/lib/theme.js +61 -0
- package/dist/lib/theme.js.map +1 -0
- package/dist/web/app.js +28 -0
- package/dist/web/index.html +2 -0
- package/package.json +11 -2
package/dist/commands/web.js
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import { parseArgs } from "node:util";
|
|
2
2
|
import { spawn } from "node:child_process";
|
|
3
3
|
import { createServer } from "node:http";
|
|
4
|
-
import {
|
|
4
|
+
import { connect } from "node:net";
|
|
5
|
+
import { readFileSync, writeFileSync, openSync, closeSync } from "node:fs";
|
|
5
6
|
import { fileURLToPath } from "node:url";
|
|
6
7
|
import { dirname, join } from "node:path";
|
|
7
|
-
import { CotalEndpoint, isReachable, DEFAULT_SERVER,
|
|
8
|
+
import { CotalEndpoint, isReachable, DEFAULT_SERVER, deliveryOf, parseSubject, spaceWildcard, authDir, loadSpaceAuth, mintCreds, newIdentity, clearChannel, } from "@cotal-ai/core";
|
|
9
|
+
import { resolveSpace } from "../lib/status.js";
|
|
10
|
+
import { cotalPath, cotalRoot } from "../lib/paths.js";
|
|
8
11
|
import { c } from "../ui.js";
|
|
12
|
+
import { selfArgv } from "../lib/self-exec.js";
|
|
9
13
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
14
|
+
/** The dashboard's default port and its branded address. The server binds loopback
|
|
15
|
+
* (127.0.0.1) but serves any Host, so `cotal.localhost` — which Chrome/Firefox/Edge
|
|
16
|
+
* resolve to loopback with no DNS setup — just works. (Safari may not resolve
|
|
17
|
+
* `*.localhost`; plain http://127.0.0.1:7799 always does.) */
|
|
18
|
+
export const WEB_PORT = 7799;
|
|
19
|
+
export const WEB_URL = `http://cotal.localhost:${WEB_PORT}/`;
|
|
10
20
|
const PAGE = {
|
|
11
21
|
"/": { path: join(here, "../web/index.html"), type: "text/html; charset=utf-8" },
|
|
12
22
|
"/app.js": { path: join(here, "../web/app.js"), type: "text/javascript; charset=utf-8" },
|
|
@@ -26,23 +36,23 @@ export async function web(argv) {
|
|
|
26
36
|
creds: { type: "string" },
|
|
27
37
|
},
|
|
28
38
|
});
|
|
29
|
-
const space = values.space ??
|
|
39
|
+
const space = values.space ?? resolveSpace(process.cwd());
|
|
30
40
|
const server = values.server ?? DEFAULT_SERVER;
|
|
31
|
-
const port = values.port ? Number(values.port) :
|
|
41
|
+
const port = values.port ? Number(values.port) : WEB_PORT;
|
|
32
42
|
// The dashboard is always an admin god-view (no read-only viewer mode) so it can show DMs
|
|
33
43
|
// and anycast. Auth mode (`.cotal/auth` present): self-mint an `admin` cred so it joins the
|
|
34
44
|
// authed mesh with no manual --creds — like `cotal spawn`, it holds the space signing key.
|
|
35
45
|
// An explicit --creds still wins. Open mode (no auth): connect bare.
|
|
46
|
+
// Loaded once at function scope: the observer connects with a read-only `admin` cred, but
|
|
47
|
+
// the channel-delete write path mints an ephemeral `manager` cred from this same material.
|
|
48
|
+
const auth = loadSpaceAuth(authDir(cotalRoot()));
|
|
36
49
|
let creds = values.creds ? readFileSync(values.creds, "utf8") : undefined;
|
|
37
|
-
if (!creds) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
creds = await mintCreds(auth, newIdentity(), "admin");
|
|
50
|
+
if (!creds && auth) {
|
|
51
|
+
if (auth.space !== space) {
|
|
52
|
+
console.error(c.red(`Auth here is for space "${auth.space}", not "${space}". Use --space ${auth.space} (or pass --creds).`));
|
|
53
|
+
process.exit(1);
|
|
45
54
|
}
|
|
55
|
+
creds = await mintCreds(auth, newIdentity(), "admin");
|
|
46
56
|
}
|
|
47
57
|
if (!(await isReachable(server, { creds }))) {
|
|
48
58
|
console.error(c.red(`Can't reach NATS at ${server}. Run: pnpm cotal up`));
|
|
@@ -125,6 +135,29 @@ export async function web(argv) {
|
|
|
125
135
|
const limit = query.get("limit") ? Number(query.get("limit")) : 200;
|
|
126
136
|
return json(res, await ep.channelHistory(name, { limit }));
|
|
127
137
|
}
|
|
138
|
+
// Delete a channel and its content. The only write path on this otherwise read-only
|
|
139
|
+
// dashboard, so it's POST-gated and guarded by a confirm in the UI. The observer's admin
|
|
140
|
+
// cred can't purge; mint an ephemeral manager cred (auth mode) for the op, else connect
|
|
141
|
+
// bare (open mode has full rights). A wildcard / missing channel is a 400.
|
|
142
|
+
if (path === "/api/channel/delete" && req.method === "POST") {
|
|
143
|
+
const body = await readBody(req).catch(() => ({}));
|
|
144
|
+
const channel = typeof body.channel === "string" ? body.channel : "";
|
|
145
|
+
if (!channel) {
|
|
146
|
+
res.writeHead(400, { "content-type": "application/json" });
|
|
147
|
+
res.end(JSON.stringify({ error: "channel required" }));
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
try {
|
|
151
|
+
const purgeCreds = auth ? await mintCreds(auth, newIdentity(), "manager") : creds;
|
|
152
|
+
const result = await clearChannel({ servers: server, space, channel, creds: purgeCreds });
|
|
153
|
+
return json(res, { ok: true, ...result });
|
|
154
|
+
}
|
|
155
|
+
catch (e) {
|
|
156
|
+
res.writeHead(400, { "content-type": "application/json" });
|
|
157
|
+
res.end(JSON.stringify({ error: e.message }));
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
128
161
|
const file = PAGE[path];
|
|
129
162
|
if (file) {
|
|
130
163
|
res.writeHead(200, { "content-type": file.type });
|
|
@@ -146,8 +179,9 @@ export async function web(argv) {
|
|
|
146
179
|
console.error(c.red("! " + e.message));
|
|
147
180
|
process.exit(1);
|
|
148
181
|
});
|
|
149
|
-
await new Promise((
|
|
150
|
-
|
|
182
|
+
await new Promise((ready) => httpServer.listen(port, "127.0.0.1", ready));
|
|
183
|
+
// Branded URL only when on the default port; a custom --port keeps the plain loopback address.
|
|
184
|
+
const url = port === WEB_PORT ? WEB_URL : `http://127.0.0.1:${port}/`;
|
|
151
185
|
console.log(`${c.bold("Cotal web")} — observing space ${c.bold(space)}`);
|
|
152
186
|
console.log(c.dim(" god-view — DMs + anycast visible"));
|
|
153
187
|
console.log(` ${c.cyan(url)} ${c.dim("(Ctrl-C to stop)")}`);
|
|
@@ -169,6 +203,59 @@ function json(res, data) {
|
|
|
169
203
|
res.writeHead(200, { "content-type": "application/json" });
|
|
170
204
|
res.end(JSON.stringify(data));
|
|
171
205
|
}
|
|
206
|
+
/** True if something is already listening on the dashboard port (loopback). */
|
|
207
|
+
export function webUp(port = WEB_PORT) {
|
|
208
|
+
return new Promise((res) => {
|
|
209
|
+
const sock = connect(port, "127.0.0.1");
|
|
210
|
+
sock.setTimeout(400);
|
|
211
|
+
const done = (up) => {
|
|
212
|
+
sock.destroy();
|
|
213
|
+
res(up);
|
|
214
|
+
};
|
|
215
|
+
sock.once("connect", () => done(true));
|
|
216
|
+
sock.once("timeout", () => done(false));
|
|
217
|
+
sock.once("error", () => done(false));
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
/** Start the dashboard in the background (pid in `.cotal/web.pid`, output to `.cotal/web.log`),
|
|
221
|
+
* stopped by `cotal down`. Re-execs this same CLI — `process.execArgv` carries the tsx loader in
|
|
222
|
+
* dev, and is empty in prod where `node <entry.js> web …` runs the compiled binary. */
|
|
223
|
+
export function startWebDetached(o = {}) {
|
|
224
|
+
const fd = openSync(cotalPath("web.log"), "a");
|
|
225
|
+
const [node, ...self] = selfArgv();
|
|
226
|
+
const args = [
|
|
227
|
+
...self,
|
|
228
|
+
"web",
|
|
229
|
+
"--no-open",
|
|
230
|
+
"--port",
|
|
231
|
+
String(WEB_PORT),
|
|
232
|
+
"--space",
|
|
233
|
+
o.space ?? resolveSpace(process.cwd()),
|
|
234
|
+
...(o.server ? ["--server", o.server] : []),
|
|
235
|
+
];
|
|
236
|
+
const child = spawn(node, args, { detached: true, stdio: ["ignore", fd, fd] });
|
|
237
|
+
closeSync(fd);
|
|
238
|
+
child.unref();
|
|
239
|
+
writeFileSync(cotalPath("web.pid"), String(child.pid));
|
|
240
|
+
return { pid: child.pid ?? 0, url: WEB_URL };
|
|
241
|
+
}
|
|
242
|
+
/** Make the dashboard available: reuse one already listening, else start it detached and wait
|
|
243
|
+
* briefly for it to come up. Best-effort — callers treat a non-running result as non-fatal. */
|
|
244
|
+
export async function ensureWeb(o = {}) {
|
|
245
|
+
if (await webUp())
|
|
246
|
+
return { url: WEB_URL, running: true };
|
|
247
|
+
startWebDetached(o);
|
|
248
|
+
for (let i = 0; i < 20 && !(await webUp()); i++)
|
|
249
|
+
await new Promise((r) => setTimeout(r, 150));
|
|
250
|
+
return { url: WEB_URL, running: await webUp() };
|
|
251
|
+
}
|
|
252
|
+
async function readBody(req) {
|
|
253
|
+
const chunks = [];
|
|
254
|
+
for await (const chunk of req)
|
|
255
|
+
chunks.push(chunk);
|
|
256
|
+
const raw = Buffer.concat(chunks).toString("utf8");
|
|
257
|
+
return raw ? JSON.parse(raw) : {};
|
|
258
|
+
}
|
|
172
259
|
/** Best-effort open of the dashboard in the default browser. The URL is already
|
|
173
260
|
* printed, so a failure here is harmless — never block startup on it. */
|
|
174
261
|
function openBrowser(url) {
|
package/dist/commands/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/commands/web.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/commands/web.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":"AAsIA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { registry } from "@cotal-ai/core";
|
|
2
2
|
import { up } from "./commands/up.js";
|
|
3
|
+
import { down } from "./commands/down.js";
|
|
4
|
+
import { setup, go } from "./commands/setup.js";
|
|
3
5
|
import { join } from "./commands/join.js";
|
|
4
6
|
import { watch } from "./commands/watch.js";
|
|
5
7
|
import { console_ } from "./commands/console.js";
|
|
@@ -7,7 +9,7 @@ import { demo } from "./commands/demo.js";
|
|
|
7
9
|
import { web } from "./commands/web.js";
|
|
8
10
|
import { spawn } from "./commands/spawn.js";
|
|
9
11
|
import { mint } from "./commands/mint.js";
|
|
10
|
-
import {
|
|
12
|
+
import { signer } from "./commands/signer.js";
|
|
11
13
|
import { channels } from "./commands/channels.js";
|
|
12
14
|
import { history } from "./commands/history.js";
|
|
13
15
|
import { feedback } from "./commands/feedback.js";
|
|
@@ -16,6 +18,20 @@ import { feedback } from "./commands/feedback.js";
|
|
|
16
18
|
* on import; heavier surfaces (the manager's control plane) register the same way
|
|
17
19
|
* and are composed at a root. */
|
|
18
20
|
const baseCommands = [
|
|
21
|
+
{
|
|
22
|
+
kind: "command",
|
|
23
|
+
name: "setup",
|
|
24
|
+
group: "Setup",
|
|
25
|
+
summary: "guided setup — first run walks you through it; --yes for non-interactive (agents/CI), --full to redo",
|
|
26
|
+
run: setup,
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
kind: "command",
|
|
30
|
+
name: "go",
|
|
31
|
+
group: "Setup",
|
|
32
|
+
summary: "open or resume your session (mesh + web + manager + your cmux tabs); first run installs",
|
|
33
|
+
run: go,
|
|
34
|
+
},
|
|
19
35
|
{
|
|
20
36
|
kind: "command",
|
|
21
37
|
name: "up",
|
|
@@ -23,6 +39,13 @@ const baseCommands = [
|
|
|
23
39
|
summary: "start a local nats-server (JetStream, JWT auth by default; --open for an unauthenticated dev mesh)",
|
|
24
40
|
run: up,
|
|
25
41
|
},
|
|
42
|
+
{
|
|
43
|
+
kind: "command",
|
|
44
|
+
name: "down",
|
|
45
|
+
group: "Mesh",
|
|
46
|
+
summary: "stop a background mesh started with `up --detach`",
|
|
47
|
+
run: down,
|
|
48
|
+
},
|
|
26
49
|
{
|
|
27
50
|
kind: "command",
|
|
28
51
|
name: "join",
|
|
@@ -58,13 +81,6 @@ const baseCommands = [
|
|
|
58
81
|
summary: "browser observability dashboard — presence, channels, live feed — --space <s> [--port <n>] [--no-open]",
|
|
59
82
|
run: web,
|
|
60
83
|
},
|
|
61
|
-
{
|
|
62
|
-
kind: "command",
|
|
63
|
-
name: "setup",
|
|
64
|
-
group: "Agents",
|
|
65
|
-
summary: "install the cotal plugin into Claude Code so this repo's sessions get the cotal tools (idempotent)",
|
|
66
|
-
run: setup,
|
|
67
|
-
},
|
|
68
84
|
{
|
|
69
85
|
kind: "command",
|
|
70
86
|
name: "spawn",
|
|
@@ -79,6 +95,13 @@ const baseCommands = [
|
|
|
79
95
|
summary: "mint a creds file for a space (auth mode) — mint <name> --profile <agent|observer> [--out <path>]",
|
|
80
96
|
run: mint,
|
|
81
97
|
},
|
|
98
|
+
{
|
|
99
|
+
kind: "command",
|
|
100
|
+
name: "signer",
|
|
101
|
+
group: "Mesh",
|
|
102
|
+
summary: "emit a stripped signer file (account signing material only, no operator key) for a containerized manager — [--out <path>] [--force]",
|
|
103
|
+
run: signer,
|
|
104
|
+
},
|
|
82
105
|
{
|
|
83
106
|
kind: "command",
|
|
84
107
|
name: "channels",
|
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,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;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface AssistContext {
|
|
2
|
+
/** Failed step slug (as shown to the user and written to the log). */
|
|
3
|
+
step: string;
|
|
4
|
+
error: Error;
|
|
5
|
+
/** Local paths and doc URLs Claude should read for context: referenced in the
|
|
6
|
+
* prompt, never inlined, so it works without a repo clone. */
|
|
7
|
+
context: string[];
|
|
8
|
+
logPath: string;
|
|
9
|
+
}
|
|
10
|
+
/** Interactive Claude is offered only when it can actually run: a TTY, the
|
|
11
|
+
* `claude` binary on PATH, and not opted out via COTAL_SKIP_ASSIST=1 (CI). */
|
|
12
|
+
export declare function assistAvailable(): boolean;
|
|
13
|
+
/** Hand the terminal to an interactive Claude session primed with the failure
|
|
14
|
+
* context. Resolves when the user exits Claude (/exit) and setup resumes. */
|
|
15
|
+
export declare function runHandoff(ctx: AssistContext): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=assist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assist.d.ts","sourceRoot":"","sources":["../../src/lib/assist.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb;mEAC+D;IAC/D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;+EAC+E;AAC/E,wBAAgB,eAAe,IAAI,OAAO,CAKzC;AAQD;8EAC8E;AAC9E,wBAAsB,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBlE"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { spawn, spawnSync } from "node:child_process";
|
|
2
|
+
import { randomUUID } from "node:crypto";
|
|
3
|
+
import * as p from "@clack/prompts";
|
|
4
|
+
import { dim } from "./theme.js";
|
|
5
|
+
/** Interactive Claude is offered only when it can actually run: a TTY, the
|
|
6
|
+
* `claude` binary on PATH, and not opted out via COTAL_SKIP_ASSIST=1 (CI). */
|
|
7
|
+
export function assistAvailable() {
|
|
8
|
+
if (process.env.COTAL_SKIP_ASSIST === "1")
|
|
9
|
+
return false;
|
|
10
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY)
|
|
11
|
+
return false;
|
|
12
|
+
const probe = spawnSync("claude", ["--version"], { stdio: "ignore" });
|
|
13
|
+
return !probe.error && probe.status === 0;
|
|
14
|
+
}
|
|
15
|
+
// All handoffs in one setup run share a single Claude session: the first spawn pins
|
|
16
|
+
// a generated UUID (--session-id), later spawns --resume it, so Claude keeps the
|
|
17
|
+
// context of earlier failures. stdio is inherited, so pinning our own id is the only
|
|
18
|
+
// way to find the session again.
|
|
19
|
+
let sessionId;
|
|
20
|
+
/** Hand the terminal to an interactive Claude session primed with the failure
|
|
21
|
+
* context. Resolves when the user exits Claude (/exit) and setup resumes. */
|
|
22
|
+
export async function runHandoff(ctx) {
|
|
23
|
+
const sessionArgs = sessionId ? ["--resume", sessionId] : ["--session-id", (sessionId = randomUUID())];
|
|
24
|
+
p.note(`Failed step: ${ctx.step}\n${ctx.error.message}\n\nType ${dim("/exit")} when you're done; setup resumes here.`, "Handing off to Claude");
|
|
25
|
+
const child = spawn("claude", [buildPrompt(ctx), "--permission-mode", "auto", ...sessionArgs], {
|
|
26
|
+
stdio: "inherit",
|
|
27
|
+
});
|
|
28
|
+
await new Promise((resolve) => {
|
|
29
|
+
child.on("exit", () => resolve());
|
|
30
|
+
child.on("error", () => {
|
|
31
|
+
p.log.error("Couldn't launch Claude; continuing without it.");
|
|
32
|
+
resolve();
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
p.log.info("Back from Claude.");
|
|
36
|
+
}
|
|
37
|
+
function buildPrompt(ctx) {
|
|
38
|
+
return [
|
|
39
|
+
"I'm running `cotal setup` (Cotal: a mesh where AI agents coordinate as lateral",
|
|
40
|
+
"peers over NATS/JetStream) and a setup step failed. Help me diagnose and fix it.",
|
|
41
|
+
"",
|
|
42
|
+
`Failed step: ${ctx.step}`,
|
|
43
|
+
`Error: ${ctx.error.message}`,
|
|
44
|
+
"",
|
|
45
|
+
"Read these for context as needed (don't assume their contents):",
|
|
46
|
+
...[ctx.logPath, ...ctx.context].map((f) => ` - ${f}`),
|
|
47
|
+
"",
|
|
48
|
+
"Be concise. When the issue is fixed, remind me to type /exit, and I'll land back",
|
|
49
|
+
"in the setup flow, which will offer to retry the failed step.",
|
|
50
|
+
].join("\n");
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=assist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assist.js","sourceRoot":"","sources":["../../src/lib/assist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAYjC;+EAC+E;AAC/E,MAAM,UAAU,eAAe;IAC7B,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAChE,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,oFAAoF;AACpF,iFAAiF;AACjF,qFAAqF;AACrF,iCAAiC;AACjC,IAAI,SAA6B,CAAC;AAElC;8EAC8E;AAC9E,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAkB;IACjD,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,SAAS,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;IACvG,CAAC,CAAC,IAAI,CACJ,gBAAgB,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,YAAY,GAAG,CAAC,OAAO,CAAC,wCAAwC,EAC9G,uBAAuB,CACxB,CAAC;IACF,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE;QAC7F,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAClC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACrB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAC9D,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,WAAW,CAAC,GAAkB;IACrC,OAAO;QACL,gFAAgF;QAChF,kFAAkF;QAClF,EAAE;QACF,gBAAgB,GAAG,CAAC,IAAI,EAAE;QAC1B,UAAU,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE;QAC7B,EAAE;QACF,iEAAiE;QACjE,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,EAAE;QACF,kFAAkF;QAClF,+DAA+D;KAChE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Treat a clack cancel (Ctrl-C / Esc) as quitting setup, cleanly. clack traps SIGINT
|
|
2
|
+
* inside a prompt and returns its cancel symbol instead of exiting; route those here so
|
|
3
|
+
* Ctrl-C aborts setup rather than falling through to a default. */
|
|
4
|
+
export declare function abortIfCancel<T>(value: T): Exclude<T, symbol>;
|
|
5
|
+
//# sourceMappingURL=cancel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancel.d.ts","sourceRoot":"","sources":["../../src/lib/cancel.ts"],"names":[],"mappings":"AAEA;;oEAEoE;AACpE,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAM7D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as p from "@clack/prompts";
|
|
2
|
+
/** Treat a clack cancel (Ctrl-C / Esc) as quitting setup, cleanly. clack traps SIGINT
|
|
3
|
+
* inside a prompt and returns its cancel symbol instead of exiting; route those here so
|
|
4
|
+
* Ctrl-C aborts setup rather than falling through to a default. */
|
|
5
|
+
export function abortIfCancel(value) {
|
|
6
|
+
if (p.isCancel(value)) {
|
|
7
|
+
p.cancel("Setup cancelled.");
|
|
8
|
+
process.exit(130);
|
|
9
|
+
}
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=cancel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancel.js","sourceRoot":"","sources":["../../src/lib/cancel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAEpC;;oEAEoE;AACpE,MAAM,UAAU,aAAa,CAAI,KAAQ;IACvC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,KAA2B,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A fixed-height rolling tail under a spinner header, so a slow step shows live
|
|
3
|
+
* progress instead of a frozen spinner. Modeled on nanoclaw's windowed-runner.
|
|
4
|
+
*
|
|
5
|
+
* Purely transient: `start` opens the pane, `push` feeds it lines, `clear` wipes it
|
|
6
|
+
* and restores the cursor. The caller (the step runner) emits the permanent ✓/✗ line,
|
|
7
|
+
* so the pane never competes with clack's log output. On a non-TTY (CI/piped) every
|
|
8
|
+
* method is a no-op and lines are dropped; the runner's plain status line is enough.
|
|
9
|
+
*/
|
|
10
|
+
export declare class LivePane {
|
|
11
|
+
private readonly tty;
|
|
12
|
+
private readonly lines;
|
|
13
|
+
private label;
|
|
14
|
+
private start0;
|
|
15
|
+
private frame;
|
|
16
|
+
private ticker?;
|
|
17
|
+
start(label: string): void;
|
|
18
|
+
push(chunk: string): void;
|
|
19
|
+
clear(): void;
|
|
20
|
+
private redraw;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=live-window.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-window.d.ts","sourceRoot":"","sources":["../../src/lib/live-window.ts"],"names":[],"mappings":"AAOA;;;;;;;;GAQG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAiC;IACrD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,MAAM,CAAC,CAAiC;IAEhD,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAe1B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAUzB,KAAK,IAAI,IAAI;IASb,OAAO,CAAC,MAAM;CAUf"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { brand, dim, fit, fmtDuration } from "./theme.js";
|
|
2
|
+
const WINDOW = 3; // lines of rolling tail under the spinner header
|
|
3
|
+
const FRAMES = ["◒", "◐", "◓", "◑"];
|
|
4
|
+
const HIDE = "\x1b[?25l";
|
|
5
|
+
const SHOW = "\x1b[?25h";
|
|
6
|
+
/**
|
|
7
|
+
* A fixed-height rolling tail under a spinner header, so a slow step shows live
|
|
8
|
+
* progress instead of a frozen spinner. Modeled on nanoclaw's windowed-runner.
|
|
9
|
+
*
|
|
10
|
+
* Purely transient: `start` opens the pane, `push` feeds it lines, `clear` wipes it
|
|
11
|
+
* and restores the cursor. The caller (the step runner) emits the permanent ✓/✗ line,
|
|
12
|
+
* so the pane never competes with clack's log output. On a non-TTY (CI/piped) every
|
|
13
|
+
* method is a no-op and lines are dropped; the runner's plain status line is enough.
|
|
14
|
+
*/
|
|
15
|
+
export class LivePane {
|
|
16
|
+
tty = Boolean(process.stdout.isTTY);
|
|
17
|
+
lines = [];
|
|
18
|
+
label = "";
|
|
19
|
+
start0 = 0;
|
|
20
|
+
frame = 0;
|
|
21
|
+
ticker;
|
|
22
|
+
start(label) {
|
|
23
|
+
if (!this.tty)
|
|
24
|
+
return;
|
|
25
|
+
this.label = label;
|
|
26
|
+
this.start0 = Date.now();
|
|
27
|
+
const out = process.stdout;
|
|
28
|
+
out.write(HIDE);
|
|
29
|
+
for (let i = 0; i < WINDOW + 1; i++)
|
|
30
|
+
out.write("\n");
|
|
31
|
+
this.redraw();
|
|
32
|
+
process.once("exit", () => out.write(SHOW));
|
|
33
|
+
this.ticker = setInterval(() => {
|
|
34
|
+
this.frame++;
|
|
35
|
+
this.redraw();
|
|
36
|
+
}, 200);
|
|
37
|
+
}
|
|
38
|
+
push(chunk) {
|
|
39
|
+
if (!this.tty)
|
|
40
|
+
return;
|
|
41
|
+
for (const raw of chunk.split("\n")) {
|
|
42
|
+
// eslint-disable-next-line no-control-regex
|
|
43
|
+
const clean = raw.replace(/\x1b\[[0-9;?]*[A-Za-z]/g, "").trim();
|
|
44
|
+
if (clean)
|
|
45
|
+
this.lines.push(clean);
|
|
46
|
+
}
|
|
47
|
+
this.redraw();
|
|
48
|
+
}
|
|
49
|
+
clear() {
|
|
50
|
+
if (!this.tty)
|
|
51
|
+
return;
|
|
52
|
+
if (this.ticker)
|
|
53
|
+
clearInterval(this.ticker);
|
|
54
|
+
const out = process.stdout;
|
|
55
|
+
out.write(`\x1b[${WINDOW + 1}A`);
|
|
56
|
+
for (let i = 0; i < WINDOW + 1; i++)
|
|
57
|
+
out.write("\x1b[2K\n");
|
|
58
|
+
out.write(`\x1b[${WINDOW + 1}A${SHOW}`);
|
|
59
|
+
}
|
|
60
|
+
redraw() {
|
|
61
|
+
const out = process.stdout;
|
|
62
|
+
out.write(`\x1b[${WINDOW + 1}A`);
|
|
63
|
+
const suffix = ` (${fmtDuration(Date.now() - this.start0)})`;
|
|
64
|
+
out.write(`\x1b[2K${brand(FRAMES[this.frame % FRAMES.length])} ${this.label}${dim(suffix)}\n`);
|
|
65
|
+
for (let i = 0; i < WINDOW; i++) {
|
|
66
|
+
const line = this.lines[this.lines.length - WINDOW + i] ?? "";
|
|
67
|
+
out.write(`\x1b[2K${line ? `${dim("│")} ${dim(fit(line))}` : dim("│")}\n`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=live-window.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-window.js","sourceRoot":"","sources":["../../src/lib/live-window.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** True if the manager we started for this folder is still running (pid file + liveness). */
|
|
2
|
+
export declare function managerUp(): boolean;
|
|
3
|
+
/** True if any process's full command line matches `pattern` (`pgrep -f`). Detects processes that
|
|
4
|
+
* have no pid file — the cmux-tab manager and the driving session — which live in cmux tabs. */
|
|
5
|
+
export declare function pgrepMatches(pattern: string): boolean;
|
|
6
|
+
/** True if a cmux-runtime manager is live for this space. Its cmux tab persists after the process
|
|
7
|
+
* exits, so a workspace listing isn't proof — the process is. Matches prod `cotal.js` and dev
|
|
8
|
+
* `cotal.ts` (both carry `cmux --space <space>`). */
|
|
9
|
+
export declare function cmuxManagerRunning(space: string): boolean;
|
|
10
|
+
/** Start the control-plane manager detached (pid in `.cotal/manager.pid`, output to
|
|
11
|
+
* `.cotal/manager.log`), stopped by `cotal down`. Re-execs this same CLI's `supervise` — the
|
|
12
|
+
* composed `cotal` binary registers it; `process.execArgv` carries the tsx loader in dev and is
|
|
13
|
+
* empty in prod. `supervise`'s auto runtime resolves to pty when detached, which answers the
|
|
14
|
+
* control plane (`cotal_spawn`/`despawn`/`purge`/`persona`) with no tmux/cmux needed. */
|
|
15
|
+
export declare function startManagerDetached(o?: {
|
|
16
|
+
space?: string;
|
|
17
|
+
server?: string;
|
|
18
|
+
spawn?: string[];
|
|
19
|
+
}): number;
|
|
20
|
+
/** Make the control plane available: reuse a manager already running for this folder, else start
|
|
21
|
+
* one detached. Best-effort — callers treat it as non-fatal. */
|
|
22
|
+
export declare function ensureManager(o?: {
|
|
23
|
+
space?: string;
|
|
24
|
+
server?: string;
|
|
25
|
+
spawn?: string[];
|
|
26
|
+
}): {
|
|
27
|
+
running: boolean;
|
|
28
|
+
};
|
|
29
|
+
/** Stop the detached (pty) manager if we started one. Used when switching to the cmux-tab manager
|
|
30
|
+
* so the two don't both answer the control plane (queue-grouped requests would split between them). */
|
|
31
|
+
export declare function stopManager(): void;
|
|
32
|
+
//# sourceMappingURL=manager-proc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager-proc.d.ts","sourceRoot":"","sources":["../../src/lib/manager-proc.ts"],"names":[],"mappings":"AAkBA,6FAA6F;AAC7F,wBAAgB,SAAS,IAAI,OAAO,CAKnC;AAED;iGACiG;AACjG,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;sDAEsD;AACtD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;0FAI0F;AAC1F,wBAAgB,oBAAoB,CAAC,CAAC,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GAAG,MAAM,CAiB1G;AAED;iEACiE;AACjE,wBAAgB,aAAa,CAAC,CAAC,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAIjH;AAED;wGACwG;AACxG,wBAAgB,WAAW,IAAI,IAAI,CAYlC"}
|