@cotal-ai/cli 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/command.d.ts +12 -3
- package/dist/command.d.ts.map +1 -1
- package/dist/command.js +58 -11
- package/dist/command.js.map +1 -1
- package/dist/commands/agents.d.ts +64 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +83 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/channels.d.ts +2 -1
- package/dist/commands/channels.d.ts.map +1 -1
- package/dist/commands/channels.js +3 -16
- package/dist/commands/channels.js.map +1 -1
- package/dist/commands/completion.d.ts +6 -5
- package/dist/commands/completion.d.ts.map +1 -1
- package/dist/commands/completion.js +37 -14
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/console.d.ts +2 -1
- package/dist/commands/console.d.ts.map +1 -1
- package/dist/commands/console.js +2 -12
- package/dist/commands/console.js.map +1 -1
- package/dist/commands/down.d.ts +3 -2
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +4 -12
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/ext.d.ts +18 -0
- package/dist/commands/ext.d.ts.map +1 -0
- package/dist/commands/ext.js +220 -0
- package/dist/commands/ext.js.map +1 -0
- package/dist/commands/feedback.d.ts +2 -2
- package/dist/commands/feedback.d.ts.map +1 -1
- package/dist/commands/feedback.js +4 -283
- package/dist/commands/feedback.js.map +1 -1
- package/dist/commands/history.d.ts +2 -1
- package/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +3 -13
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/join.d.ts +2 -1
- package/dist/commands/join.d.ts.map +1 -1
- package/dist/commands/join.js +2 -18
- package/dist/commands/join.js.map +1 -1
- package/dist/commands/meshes.d.ts +2 -1
- package/dist/commands/meshes.d.ts.map +1 -1
- package/dist/commands/meshes.js +1 -1
- package/dist/commands/meshes.js.map +1 -1
- package/dist/commands/mint.d.ts +2 -1
- package/dist/commands/mint.d.ts.map +1 -1
- package/dist/commands/mint.js +3 -14
- package/dist/commands/mint.js.map +1 -1
- package/dist/commands/personas.d.ts +2 -2
- package/dist/commands/personas.d.ts.map +1 -1
- package/dist/commands/personas.js +23 -20
- package/dist/commands/personas.js.map +1 -1
- package/dist/commands/send.d.ts +2 -2
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +21 -24
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/setup.d.ts +30 -8
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +151 -316
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/spawn.d.ts +117 -2
- package/dist/commands/spawn.d.ts.map +1 -1
- package/dist/commands/spawn.js +137 -48
- package/dist/commands/spawn.js.map +1 -1
- package/dist/commands/topology.d.ts +2 -1
- package/dist/commands/topology.d.ts.map +1 -1
- package/dist/commands/topology.js +4 -8
- package/dist/commands/topology.js.map +1 -1
- package/dist/commands/up.d.ts +9 -4
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +96 -56
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/use.d.ts +2 -2
- package/dist/commands/use.d.ts.map +1 -1
- package/dist/commands/use.js +2 -2
- package/dist/commands/use.js.map +1 -1
- package/dist/ext-loader.d.ts +13 -0
- package/dist/ext-loader.d.ts.map +1 -0
- package/dist/ext-loader.js +121 -0
- package/dist/ext-loader.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +203 -70
- package/dist/index.js.map +1 -1
- package/dist/lib/attach-client.d.ts +20 -0
- package/dist/lib/attach-client.d.ts.map +1 -0
- package/dist/lib/attach-client.js +218 -0
- package/dist/lib/attach-client.js.map +1 -0
- package/dist/lib/completion.d.ts +8 -0
- package/dist/lib/completion.d.ts.map +1 -0
- package/dist/lib/completion.js +66 -0
- package/dist/lib/completion.js.map +1 -0
- package/dist/lib/connect.d.ts +1 -73
- package/dist/lib/connect.d.ts.map +1 -1
- package/dist/lib/connect.js +4 -90
- package/dist/lib/connect.js.map +1 -1
- package/dist/lib/control.d.ts +34 -0
- package/dist/lib/control.d.ts.map +1 -0
- package/dist/lib/control.js +65 -0
- package/dist/lib/control.js.map +1 -0
- package/dist/lib/delivery-proc.d.ts +2 -0
- package/dist/lib/delivery-proc.d.ts.map +1 -1
- package/dist/lib/manager-proc.d.ts +5 -13
- package/dist/lib/manager-proc.d.ts.map +1 -1
- package/dist/lib/manager-proc.js +3 -42
- package/dist/lib/manager-proc.js.map +1 -1
- package/dist/lib/manifest/live.d.ts.map +1 -1
- package/dist/lib/manifest/live.js +4 -1
- package/dist/lib/manifest/live.js.map +1 -1
- package/dist/lib/status.d.ts +8 -4
- package/dist/lib/status.d.ts.map +1 -1
- package/dist/lib/status.js +21 -5
- package/dist/lib/status.js.map +1 -1
- package/dist/ui.d.ts +1 -12
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +4 -12
- package/dist/ui.js.map +1 -1
- package/package.json +8 -6
- package/dist/commands/demo.d.ts +0 -2
- package/dist/commands/demo.d.ts.map +0 -1
- package/dist/commands/demo.js +0 -163
- package/dist/commands/demo.js.map +0 -1
- package/dist/commands/web.d.ts +0 -32
- package/dist/commands/web.d.ts.map +0 -1
- package/dist/commands/web.js +0 -307
- package/dist/commands/web.js.map +0 -1
- package/dist/web/app.js +0 -823
- package/dist/web/graph.html +0 -207
- package/dist/web/graph.js +0 -512
- package/dist/web/index.html +0 -350
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-proc.d.ts","sourceRoot":"","sources":["../../src/lib/delivery-proc.ts"],"names":[],"mappings":"AAmBA,KAAK,IAAI,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"delivery-proc.d.ts","sourceRoot":"","sources":["../../src/lib/delivery-proc.ts"],"names":[],"mappings":"AAmBA,KAAK,IAAI,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAWrG,qGAAqG;AACrG,wBAAgB,UAAU,IAAI,OAAO,CAKpC;AAeD;;0GAE0G;AAC1G,wBAAgB,8BAA8B,IAAI,IAAI,CAKrD;AAED;;8FAE8F;AAC9F,wBAAgB,qBAAqB,CAAC,CAAC,GAAE,IAAS,GAAG,MAAM,CAgB1D;AAED;;;;sFAIsF;AACtF,wBAAsB,cAAc,CAAC,CAAC,GAAE,IAAS,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA8BhF;AAED,oFAAoF;AACpF,wBAAgB,YAAY,IAAI,IAAI,CAanC;AAED;;;;+FAI+F;AAC/F,wBAAsB,kBAAkB,CAAC,CAAC,GAAE,IAAS,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAIpF"}
|
|
@@ -6,18 +6,6 @@ export declare function managerUp(): boolean;
|
|
|
6
6
|
* all read as NOT delivery-aware, so a live old hosting `manager.pid` can't be mistaken for non-hosting
|
|
7
7
|
* and the delivery preflight stops it. */
|
|
8
8
|
export declare function managerHasDeliveryMarker(): boolean;
|
|
9
|
-
/** True if any process's full command line matches `pattern` (`pgrep -f`). Detects processes that
|
|
10
|
-
* have no pid file — the cmux-tab manager and the driving session — which live in cmux tabs. */
|
|
11
|
-
export declare function pgrepMatches(pattern: string): boolean;
|
|
12
|
-
/** True if a cmux-runtime manager is live for this space. Its cmux tab persists after the process
|
|
13
|
-
* exits, so a workspace listing isn't proof — the process is. A cmux manager runs `… supervise
|
|
14
|
-
* --runtime cmux … --space <space> …`; match order-independently (the session launcher emits the
|
|
15
|
-
* two flags adjacent, but a hand-typed launch may reorder them) by narrowing to `--runtime cmux`
|
|
16
|
-
* processes, then confirming the exact `--space <space>` token in each one's argv. Works for prod
|
|
17
|
-
* `cotal.js` and dev `cotal.ts` alike. */
|
|
18
|
-
export declare function cmuxManagerRunning(space: string): boolean;
|
|
19
|
-
/** True if a tmux-runtime manager is live for this space. Same matching logic as cmuxManagerRunning. */
|
|
20
|
-
export declare function tmuxManagerRunning(space: string): boolean;
|
|
21
9
|
/** Start the control-plane manager detached (pid in `.cotal/manager.pid`, output to
|
|
22
10
|
* `.cotal/manager.log`), stopped by `cotal down`. Re-execs this same CLI's `supervise` — the
|
|
23
11
|
* composed `cotal` binary registers it; `process.execArgv` carries the tsx loader in dev and is
|
|
@@ -31,11 +19,15 @@ export declare function startManagerDetached(o?: {
|
|
|
31
19
|
runtime?: string;
|
|
32
20
|
}): number;
|
|
33
21
|
/** Make the control plane available: reuse a manager already running for this folder, else start
|
|
34
|
-
* one detached. Best-effort — callers treat it as non-fatal.
|
|
22
|
+
* one detached. Best-effort — callers treat it as non-fatal. A caller that needs THE manager to
|
|
23
|
+
* carry a runtime/launch spec (`up -f`) must stop any leftover manager first — a reused one is
|
|
24
|
+
* taken as-is. */
|
|
35
25
|
export declare function ensureManager(o?: {
|
|
36
26
|
space?: string;
|
|
37
27
|
server?: string;
|
|
38
28
|
spawn?: string[];
|
|
29
|
+
runtime?: string;
|
|
30
|
+
launch?: string;
|
|
39
31
|
}): {
|
|
40
32
|
running: boolean;
|
|
41
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager-proc.d.ts","sourceRoot":"","sources":["../../src/lib/manager-proc.ts"],"names":[],"mappings":"AAwBA,6FAA6F;AAC7F,wBAAgB,SAAS,IAAI,OAAO,CAKnC;AAED;;;;2CAI2C;AAC3C,wBAAgB,wBAAwB,IAAI,OAAO,CAOlD;AAED
|
|
1
|
+
{"version":3,"file":"manager-proc.d.ts","sourceRoot":"","sources":["../../src/lib/manager-proc.ts"],"names":[],"mappings":"AAwBA,6FAA6F;AAC7F,wBAAgB,SAAS,IAAI,OAAO,CAKnC;AAED;;;;2CAI2C;AAC3C,wBAAgB,wBAAwB,IAAI,OAAO,CAOlD;AAED;;;;0FAI0F;AAC1F,wBAAgB,oBAAoB,CAClC,CAAC,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/F,MAAM,CAuBR;AAED;;;mBAGmB;AACnB,wBAAgB,aAAa,CAC3B,CAAC,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/F;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAItB;AAED;wGACwG;AACxG,wBAAgB,WAAW,IAAI,IAAI,CAalC"}
|
package/dist/lib/manager-proc.js
CHANGED
|
@@ -42,47 +42,6 @@ export function managerHasDeliveryMarker() {
|
|
|
42
42
|
const livePid = Number(readFileSync(pidPath, "utf8").trim());
|
|
43
43
|
return Number.isFinite(markerPid) && Number.isFinite(livePid) && markerPid === livePid;
|
|
44
44
|
}
|
|
45
|
-
/** True if any process's full command line matches `pattern` (`pgrep -f`). Detects processes that
|
|
46
|
-
* have no pid file — the cmux-tab manager and the driving session — which live in cmux tabs. */
|
|
47
|
-
export function pgrepMatches(pattern) {
|
|
48
|
-
return spawnSync("pgrep", ["-f", pattern], { stdio: "ignore" }).status === 0;
|
|
49
|
-
}
|
|
50
|
-
/** True if a cmux-runtime manager is live for this space. Its cmux tab persists after the process
|
|
51
|
-
* exits, so a workspace listing isn't proof — the process is. A cmux manager runs `… supervise
|
|
52
|
-
* --runtime cmux … --space <space> …`; match order-independently (the session launcher emits the
|
|
53
|
-
* two flags adjacent, but a hand-typed launch may reorder them) by narrowing to `--runtime cmux`
|
|
54
|
-
* processes, then confirming the exact `--space <space>` token in each one's argv. Works for prod
|
|
55
|
-
* `cotal.js` and dev `cotal.ts` alike. */
|
|
56
|
-
export function cmuxManagerRunning(space) {
|
|
57
|
-
// `--` so pgrep doesn't read the leading `--runtime` as one of its own options.
|
|
58
|
-
const r = spawnSync("pgrep", ["-f", "--", "--runtime cmux"], { encoding: "utf8" });
|
|
59
|
-
if (r.status !== 0)
|
|
60
|
-
return false;
|
|
61
|
-
// Match the `--space` value as a whole token (space names can't contain whitespace), so `demo`
|
|
62
|
-
// never matches a process serving `demo2`. Both `--space <space>` and `--space=<space>` forms.
|
|
63
|
-
const servesSpace = (args) => {
|
|
64
|
-
const tokens = args.split(/\s+/);
|
|
65
|
-
return tokens.some((t, i) => (t === "--space" && tokens[i + 1] === space) || t === `--space=${space}`);
|
|
66
|
-
};
|
|
67
|
-
return r.stdout
|
|
68
|
-
.split("\n")
|
|
69
|
-
.filter(Boolean)
|
|
70
|
-
.some((pid) => servesSpace(spawnSync("ps", ["-p", pid, "-o", "args="], { encoding: "utf8" }).stdout));
|
|
71
|
-
}
|
|
72
|
-
/** True if a tmux-runtime manager is live for this space. Same matching logic as cmuxManagerRunning. */
|
|
73
|
-
export function tmuxManagerRunning(space) {
|
|
74
|
-
const r = spawnSync("pgrep", ["-f", "--", "--runtime tmux"], { encoding: "utf8" });
|
|
75
|
-
if (r.status !== 0)
|
|
76
|
-
return false;
|
|
77
|
-
const servesSpace = (args) => {
|
|
78
|
-
const tokens = args.split(/\s+/);
|
|
79
|
-
return tokens.some((t, i) => (t === "--space" && tokens[i + 1] === space) || t === `--space=${space}`);
|
|
80
|
-
};
|
|
81
|
-
return r.stdout
|
|
82
|
-
.split("\n")
|
|
83
|
-
.filter(Boolean)
|
|
84
|
-
.some((pid) => servesSpace(spawnSync("ps", ["-p", pid, "-o", "args="], { encoding: "utf8" }).stdout));
|
|
85
|
-
}
|
|
86
45
|
/** Start the control-plane manager detached (pid in `.cotal/manager.pid`, output to
|
|
87
46
|
* `.cotal/manager.log`), stopped by `cotal down`. Re-execs this same CLI's `supervise` — the
|
|
88
47
|
* composed `cotal` binary registers it; `process.execArgv` carries the tsx loader in dev and is
|
|
@@ -113,7 +72,9 @@ export function startManagerDetached(o = {}) {
|
|
|
113
72
|
return child.pid ?? 0;
|
|
114
73
|
}
|
|
115
74
|
/** Make the control plane available: reuse a manager already running for this folder, else start
|
|
116
|
-
* one detached. Best-effort — callers treat it as non-fatal.
|
|
75
|
+
* one detached. Best-effort — callers treat it as non-fatal. A caller that needs THE manager to
|
|
76
|
+
* carry a runtime/launch spec (`up -f`) must stop any leftover manager first — a reused one is
|
|
77
|
+
* taken as-is. */
|
|
117
78
|
export function ensureManager(o = {}) {
|
|
118
79
|
if (managerUp())
|
|
119
80
|
return { running: true };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager-proc.js","sourceRoot":"","sources":["../../src/lib/manager-proc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AAChD;;;;uFAIuF;AACvF,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;AAExE,SAAS,KAAK,CAAC,GAAW;IACxB,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,oDAAoD;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,SAAS;IACvB,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;IACrB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACjC,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED;;;;2CAI2C;AAC3C,MAAM,UAAU,wBAAwB;IACtC,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;IAC3B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAClE,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,SAAS,KAAK,OAAO,CAAC;AACzF,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"manager-proc.js","sourceRoot":"","sources":["../../src/lib/manager-proc.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../../src/lib/manifest/live.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,aAAa,EAAiB,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../../src/lib/manifest/live.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,aAAa,EAAiB,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAGhG,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID;4EAC4E;AAC5E,wBAAsB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAczE;AAED;6DAC6D;AAC7D,wBAAsB,YAAY,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CASzE;AAED;2EAC2E;AAC3E,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,aAAa,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAY9F;AAED;;6FAE6F;AAC7F,wBAAsB,aAAa,CAAC,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO1F;AAED;;yEAEyE;AACzE,wBAAsB,WAAW,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAIvG"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* manager's `launch` op. (Channel-registry reads use `readChannelRegistry`, which connects itself.)
|
|
5
5
|
*/
|
|
6
6
|
import { CotalEndpoint, CONTROL_ADMIN } from "@cotal-ai/core";
|
|
7
|
+
import { START_TIMEOUT_MS } from "../control.js";
|
|
7
8
|
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
8
9
|
/** Connect a transient, presence-invisible endpoint (it watches the roster but doesn't register
|
|
9
10
|
* itself) used to read live state + drive control. The caller stops it. */
|
|
@@ -68,6 +69,8 @@ export async function waitLeaseGone(ep, timeoutMs) {
|
|
|
68
69
|
* `launch` op is operator-only — a spawn-capable agent must not reach it). The manager derives
|
|
69
70
|
* `.cotal/run/<runId>.json` itself; we pass the runId, never a path. */
|
|
70
71
|
export async function launchAgent(ep, runId, name) {
|
|
71
|
-
|
|
72
|
+
// #159 B1: `launch` funnels into the same startAgent readiness wait as `start` — the manager
|
|
73
|
+
// replies only on a real outcome (join / exit / ~30s backstop), so the request must outlive it.
|
|
74
|
+
return ep.requestControl(CONTROL_ADMIN, { op: "launch", args: { runId, name } }, START_TIMEOUT_MS);
|
|
72
75
|
}
|
|
73
76
|
//# sourceMappingURL=live.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.js","sourceRoot":"","sources":["../../../src/lib/manifest/live.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAoC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"live.js","sourceRoot":"","sources":["../../../src/lib/manifest/live.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAoC,MAAM,gBAAgB,CAAC;AAChG,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAQjD,MAAM,KAAK,GAAG,CAAC,EAAU,EAAiB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAEnF;4EAC4E;AAC5E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,MAAM,EAAE,GAAG,IAAI,aAAa,CAAC;QAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,MAAM;QACpB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,KAAK;QACd,gBAAgB,EAAE,KAAK,EAAE,iEAAiE;QAC1F,aAAa,EAAE,IAAI;QACnB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE;KAC5C,CAAC,CAAC;IACH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,wDAAwD;IAClF,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACjB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;6DAC6D;AAC7D,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAiB;IAClD,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,KAAK,IAAI;YAAE,MAAM;QACtB,IAAI,GAAG,CAAC,CAAC;IACX,CAAC;IACD,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC;AACxB,CAAC;AAED;2EAC2E;AAC3E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EAAiB,EAAE,SAAS,GAAG,MAAM;IAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,cAAc,CAAC,aAAa,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;QACD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;6FAE6F;AAC7F,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAiB,EAAE,SAAiB;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QAChD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACxC,CAAC;AAED;;yEAEyE;AACzE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAiB,EAAE,KAAa,EAAE,IAAY;IAC9E,6FAA6F;IAC7F,gGAAgG;IAChG,OAAO,EAAE,CAAC,cAAc,CAAC,aAAa,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACrG,CAAC"}
|
package/dist/lib/status.d.ts
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
|
+
export { resolveSpace } from "@cotal-ai/workspace";
|
|
1
2
|
export interface MeshStatus {
|
|
2
3
|
reachable: boolean;
|
|
3
4
|
server: string;
|
|
4
5
|
space: string;
|
|
5
6
|
auth: boolean;
|
|
6
7
|
}
|
|
7
|
-
/** The
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
export declare
|
|
8
|
+
/** The dashboard's default port + branded URL. The `web` command moved out to the `cotal-web`
|
|
9
|
+
* extension (stage 4); the CLI keeps these constants and the port probe so the setup ready-card
|
|
10
|
+
* can report the dashboard without importing it. */
|
|
11
|
+
export declare const WEB_PORT = 7799;
|
|
12
|
+
export declare const WEB_URL = "http://cotal.localhost:7799/";
|
|
13
|
+
/** True if something is already listening on the dashboard port (loopback). */
|
|
14
|
+
export declare function webUp(port?: number): Promise<boolean>;
|
|
11
15
|
/** Cheap, connectionless-ish snapshot of the mesh for this folder: is a server up,
|
|
12
16
|
* and what space/auth does the local `.cotal/` describe (found by walking up from `cwd`). */
|
|
13
17
|
export declare function meshStatus(cwd: string): Promise<MeshStatus>;
|
package/dist/lib/status.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/lib/status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/lib/status.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;qDAEqD;AACrD,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,OAAO,iCAAwC,CAAC;AAE7D,+EAA+E;AAC/E,wBAAgB,KAAK,CAAC,IAAI,GAAE,MAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAY/D;AAED;8FAC8F;AAC9F,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CASjE;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACrC,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;CAChD;AAED,kEAAkE;AAClE,wBAAsB,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,CAe5D;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAG3C;AAQD,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGjD"}
|
package/dist/lib/status.js
CHANGED
|
@@ -1,14 +1,30 @@
|
|
|
1
1
|
import { spawnSync } from "node:child_process";
|
|
2
2
|
import { existsSync } from "node:fs";
|
|
3
|
+
import { connect } from "node:net";
|
|
3
4
|
import { join } from "node:path";
|
|
4
5
|
import { DEFAULT_SERVER, DEFAULT_SPACE, isReachable } from "@cotal-ai/core";
|
|
5
6
|
import { authDir, findCotalRoot, loadSpaceAuth } from "@cotal-ai/workspace";
|
|
6
7
|
import { resolveNatsServer } from "./nats-bin.js";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
// Moved into `@cotal-ai/workspace` (stage 4); re-exported for the CLI's many importers.
|
|
9
|
+
export { resolveSpace } from "@cotal-ai/workspace";
|
|
10
|
+
/** The dashboard's default port + branded URL. The `web` command moved out to the `cotal-web`
|
|
11
|
+
* extension (stage 4); the CLI keeps these constants and the port probe so the setup ready-card
|
|
12
|
+
* can report the dashboard without importing it. */
|
|
13
|
+
export const WEB_PORT = 7799;
|
|
14
|
+
export const WEB_URL = `http://cotal.localhost:${WEB_PORT}/`;
|
|
15
|
+
/** True if something is already listening on the dashboard port (loopback). */
|
|
16
|
+
export function webUp(port = WEB_PORT) {
|
|
17
|
+
return new Promise((res) => {
|
|
18
|
+
const sock = connect(port, "127.0.0.1");
|
|
19
|
+
sock.setTimeout(400);
|
|
20
|
+
const done = (up) => {
|
|
21
|
+
sock.destroy();
|
|
22
|
+
res(up);
|
|
23
|
+
};
|
|
24
|
+
sock.once("connect", () => done(true));
|
|
25
|
+
sock.once("timeout", () => done(false));
|
|
26
|
+
sock.once("error", () => done(false));
|
|
27
|
+
});
|
|
12
28
|
}
|
|
13
29
|
/** Cheap, connectionless-ish snapshot of the mesh for this folder: is a server up,
|
|
14
30
|
* and what space/auth does the local `.cotal/` describe (found by walking up from `cwd`). */
|
package/dist/lib/status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/lib/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/lib/status.ts"],"names":[],"mappings":"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"}
|
package/dist/ui.d.ts
CHANGED
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
import type { PresenceStatus } from "@cotal-ai/core";
|
|
2
|
-
export
|
|
3
|
-
dim: (s: string) => string;
|
|
4
|
-
bold: (s: string) => string;
|
|
5
|
-
green: (s: string) => string;
|
|
6
|
-
cyan: (s: string) => string;
|
|
7
|
-
yellow: (s: string) => string;
|
|
8
|
-
red: (s: string) => string;
|
|
9
|
-
magenta: (s: string) => string;
|
|
10
|
-
gray: (s: string) => string;
|
|
11
|
-
};
|
|
12
|
-
/** 256-color foreground wrapper (xterm color index 0-255). */
|
|
13
|
-
export declare const color256: (n: number) => (s: string) => string;
|
|
2
|
+
export { c, color256 } from "@cotal-ai/workspace";
|
|
14
3
|
export declare function statusBadge(status: PresenceStatus): string;
|
|
15
4
|
//# sourceMappingURL=ui.d.ts.map
|
package/dist/ui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKrD,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAElD,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAW1D"}
|
package/dist/ui.js
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
cyan: (s) => `\x1b[36m${s}\x1b[0m`,
|
|
6
|
-
yellow: (s) => `\x1b[33m${s}\x1b[0m`,
|
|
7
|
-
red: (s) => `\x1b[31m${s}\x1b[0m`,
|
|
8
|
-
magenta: (s) => `\x1b[35m${s}\x1b[0m`,
|
|
9
|
-
gray: (s) => `\x1b[90m${s}\x1b[0m`,
|
|
10
|
-
};
|
|
11
|
-
/** 256-color foreground wrapper (xterm color index 0-255). */
|
|
12
|
-
export const color256 = (n) => (s) => `\x1b[38;5;${n}m${s}\x1b[0m`;
|
|
1
|
+
import { c } from "@cotal-ai/workspace";
|
|
2
|
+
// The ANSI helpers moved into `@cotal-ai/workspace` (stage 4), shared with cotal-web.
|
|
3
|
+
// Re-exported so the CLI's many importers keep resolving them from here.
|
|
4
|
+
export { c, color256 } from "@cotal-ai/workspace";
|
|
13
5
|
export function statusBadge(status) {
|
|
14
6
|
switch (status) {
|
|
15
7
|
case "working":
|
package/dist/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;AAExC,sFAAsF;AACtF,yEAAyE;AACzE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,UAAU,WAAW,CAAC,MAAsB;IAChD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9B,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/B,KAAK,MAAM;YACT,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cotal-ai/cli",
|
|
3
|
-
"description": "Cotal mesh CLI: up, join, watch, console,
|
|
4
|
-
"version": "0.
|
|
3
|
+
"description": "Cotal mesh CLI: up, join, watch, console, spawn, mint, channels, history, ext.",
|
|
4
|
+
"version": "0.10.0",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -23,8 +23,9 @@
|
|
|
23
23
|
"react": "^19.0.0",
|
|
24
24
|
"yaml": "^2.9.0",
|
|
25
25
|
"zod": "^4.4.3",
|
|
26
|
-
"
|
|
27
|
-
"@cotal-ai/workspace": "0.
|
|
26
|
+
"ws": "^8.21.0",
|
|
27
|
+
"@cotal-ai/workspace": "0.10.0",
|
|
28
|
+
"@cotal-ai/core": "0.10.0"
|
|
28
29
|
},
|
|
29
30
|
"optionalDependencies": {
|
|
30
31
|
"@eplightning/nats-server-darwin-arm64": "^2.14.0",
|
|
@@ -35,7 +36,8 @@
|
|
|
35
36
|
"@eplightning/nats-server-win32-x64": "^2.14.0"
|
|
36
37
|
},
|
|
37
38
|
"devDependencies": {
|
|
38
|
-
"@types/react": "^19.0.0"
|
|
39
|
+
"@types/react": "^19.0.0",
|
|
40
|
+
"@types/ws": "^8.18.1"
|
|
39
41
|
},
|
|
40
42
|
"files": [
|
|
41
43
|
"dist"
|
|
@@ -46,6 +48,6 @@
|
|
|
46
48
|
"scripts": {
|
|
47
49
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
48
50
|
"test": "tsx smoke/manifest.smoke.ts",
|
|
49
|
-
"build": "tsc -p tsconfig.json
|
|
51
|
+
"build": "tsc -p tsconfig.json"
|
|
50
52
|
}
|
|
51
53
|
}
|
package/dist/commands/demo.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../../src/commands/demo.ts"],"names":[],"mappings":"AAoEA,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0GxD"}
|
package/dist/commands/demo.js
DELETED
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import { parseArgs } from "node:util";
|
|
2
|
-
import { readFileSync } from "node:fs";
|
|
3
|
-
import { CotalEndpoint, isReachable, DEFAULT_SERVER, } from "@cotal-ai/core";
|
|
4
|
-
import { resolveSpace } from "../lib/status.js";
|
|
5
|
-
import { c } from "../ui.js";
|
|
6
|
-
/**
|
|
7
|
-
* `cotal demo` — spin up a handful of mock agents and replay a scripted trace that exercises
|
|
8
|
-
* EVERY protocol-view feature: all four presence states, all three delivery modes (multicast to
|
|
9
|
-
* several channels incl. mentions, peer DMs, an unclaimed anycast), a coalesced burst, and a
|
|
10
|
-
* late-joining agent. Point `cotal console` / `cotal web` at the same space to watch it.
|
|
11
|
-
*
|
|
12
|
-
* pnpm cotal up --open
|
|
13
|
-
* pnpm cotal demo --space demo
|
|
14
|
-
* pnpm cotal console --space demo # in a real terminal
|
|
15
|
-
*/
|
|
16
|
-
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
17
|
-
// The core cast (started up front); `scout` joins mid-trace to show a late join.
|
|
18
|
-
const AGENTS = [
|
|
19
|
-
{ name: "alice", role: "planner" },
|
|
20
|
-
{ name: "bob", role: "builder" },
|
|
21
|
-
{ name: "dave", role: "builder" },
|
|
22
|
-
{ name: "maya", role: "researcher" },
|
|
23
|
-
{ name: "linus", role: "reviewer" },
|
|
24
|
-
];
|
|
25
|
-
const SCRIPT = [
|
|
26
|
-
{ t: "status", who: "alice", status: "working", activity: "drafting the auth outline" },
|
|
27
|
-
{ t: "status", who: "bob", status: "working", activity: "writing tests · channels.ts" },
|
|
28
|
-
{ t: "chat", who: "dave", channel: "general", text: "anyone else hit the flaky CI test on channels.ts?" },
|
|
29
|
-
{ t: "status", who: "dave", status: "working", activity: "refactoring endpoint.ts" },
|
|
30
|
-
{ t: "chat", who: "bob", channel: "team.backend", text: "pushed channels.ts tests — 12 green ✓" },
|
|
31
|
-
{ t: "chat", who: "maya", channel: "planning", text: "NATS v3 splits transports cleanly — notes in #planning" },
|
|
32
|
-
{ t: "dm", who: "alice", to: "bob", text: "can you take the API-key wiring while I'm blocked?" },
|
|
33
|
-
{ t: "dm", who: "bob", to: "alice", text: "on it — grabbing the OPENAI_API_KEY wiring now" },
|
|
34
|
-
{ t: "status", who: "alice", status: "waiting", activity: "blocked — needs OPENAI_API_KEY" },
|
|
35
|
-
{ t: "join", who: "scout", role: "observer" },
|
|
36
|
-
{ t: "chat", who: "scout", channel: "general", text: "scout here — watching #team.>" },
|
|
37
|
-
{ t: "anycast", who: "alice", service: "reviewer", text: "review needed on PR #51 (channels hierarchy)" },
|
|
38
|
-
{ t: "status", who: "linus", status: "working", activity: "reviewing PR #42 · auth guards" },
|
|
39
|
-
{ t: "chat", who: "linus", channel: "team.review", text: "left 2 comments on PR #42 — small nits" },
|
|
40
|
-
{ t: "dm", who: "alice", to: "dave", text: "want me to stub the key so you can keep planning?" },
|
|
41
|
-
{ t: "dm", who: "dave", to: "alice", text: "yes — a no-op stub is perfect for now" },
|
|
42
|
-
{ t: "burst", who: "linus", to: ["bob", "dave", "maya"], text: "ship it 🚀" },
|
|
43
|
-
{ t: "chat", who: "bob", channel: "general", text: "@alice key wired — you're unblocked", mentions: ["alice"] },
|
|
44
|
-
{ t: "status", who: "alice", status: "working", activity: "back on the auth module" },
|
|
45
|
-
{ t: "status", who: "maya", status: "offline" },
|
|
46
|
-
{ t: "chat", who: "dave", channel: "incidents", text: "CI flake traced to a race in channels.ts — fix incoming" },
|
|
47
|
-
{ t: "status", who: "maya", status: "idle", activity: "reading the NATS v3 notes" },
|
|
48
|
-
{ t: "dm", who: "maya", to: "linus", text: "sent the NATS v3 notes your way" },
|
|
49
|
-
{ t: "chat", who: "linus", channel: "team.frontend", text: "frontend review queue is clear ✓" },
|
|
50
|
-
];
|
|
51
|
-
export async function demo(argv) {
|
|
52
|
-
const { values } = parseArgs({
|
|
53
|
-
args: argv,
|
|
54
|
-
allowPositionals: true,
|
|
55
|
-
options: {
|
|
56
|
-
space: { type: "string" },
|
|
57
|
-
server: { type: "string" },
|
|
58
|
-
interval: { type: "string" },
|
|
59
|
-
once: { type: "boolean" },
|
|
60
|
-
creds: { type: "string" },
|
|
61
|
-
},
|
|
62
|
-
});
|
|
63
|
-
const space = values.space ?? resolveSpace(process.cwd());
|
|
64
|
-
const server = values.server ?? DEFAULT_SERVER;
|
|
65
|
-
const interval = values.interval ? Number(values.interval) : 1200;
|
|
66
|
-
const creds = values.creds ? readFileSync(values.creds, "utf8") : undefined;
|
|
67
|
-
if (!(await isReachable(server, { creds }))) {
|
|
68
|
-
console.error(c.red(`Can't reach NATS at ${server}. Run: pnpm cotal up`));
|
|
69
|
-
process.exit(1);
|
|
70
|
-
}
|
|
71
|
-
const eps = new Map();
|
|
72
|
-
// consume:true so each agent's inbox/streams exist — otherwise peer DMs (unicast) have no
|
|
73
|
-
// backing stream. registerPresence:true puts them in the roster; watchPresence:false (the
|
|
74
|
-
// console is the watcher). channels:["general"] just ensures the chat stream is bound; we
|
|
75
|
-
// publish to every channel explicitly regardless of subscription.
|
|
76
|
-
const make = async (name, role) => {
|
|
77
|
-
const ep = new CotalEndpoint({
|
|
78
|
-
space,
|
|
79
|
-
servers: server,
|
|
80
|
-
creds,
|
|
81
|
-
card: { name, role, kind: "agent" },
|
|
82
|
-
channels: ["general"],
|
|
83
|
-
consume: true,
|
|
84
|
-
registerPresence: true,
|
|
85
|
-
watchPresence: false,
|
|
86
|
-
});
|
|
87
|
-
ep.on("error", () => { });
|
|
88
|
-
await ep.start();
|
|
89
|
-
eps.set(name, ep);
|
|
90
|
-
};
|
|
91
|
-
for (const a of AGENTS)
|
|
92
|
-
await make(a.name, a.role);
|
|
93
|
-
console.log(`${c.bold("cotal demo")} — ${eps.size} agents live in space ${c.bold(space)}`);
|
|
94
|
-
console.log(c.dim(` ${[...eps.keys()].join(", ")} (+ scout joins mid-trace)`));
|
|
95
|
-
console.log(` watch it: ${c.cyan(`cotal console --space ${space}`)} ${c.dim("or")} ${c.cyan(`cotal web --space ${space}`)}`);
|
|
96
|
-
console.log(c.dim(` ${values.once ? "single pass" : "looping"} · ~${interval}ms/step · Ctrl-C to stop\n`));
|
|
97
|
-
const idOf = (n) => eps.get(n)?.card.id;
|
|
98
|
-
const run = async (a) => {
|
|
99
|
-
const ep = "who" in a ? eps.get(a.who) : undefined;
|
|
100
|
-
switch (a.t) {
|
|
101
|
-
case "status":
|
|
102
|
-
if (!ep)
|
|
103
|
-
return;
|
|
104
|
-
if (a.activity !== undefined)
|
|
105
|
-
await ep.setActivity(a.activity);
|
|
106
|
-
await ep.setStatus(a.status);
|
|
107
|
-
return;
|
|
108
|
-
case "chat":
|
|
109
|
-
await ep?.multicast(a.text, { channel: a.channel, mentions: a.mentions });
|
|
110
|
-
return;
|
|
111
|
-
case "dm": {
|
|
112
|
-
const tid = idOf(a.to);
|
|
113
|
-
if (ep && tid)
|
|
114
|
-
await ep.unicast(tid, a.text);
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
case "burst":
|
|
118
|
-
for (const to of a.to) {
|
|
119
|
-
const tid = idOf(to);
|
|
120
|
-
if (ep && tid)
|
|
121
|
-
await ep.unicast(tid, a.text); // back-to-back → inside the coalesce window
|
|
122
|
-
}
|
|
123
|
-
return;
|
|
124
|
-
case "anycast":
|
|
125
|
-
await ep?.anycast(a.service, a.text);
|
|
126
|
-
return;
|
|
127
|
-
case "join":
|
|
128
|
-
if (!eps.has(a.who))
|
|
129
|
-
await make(a.who, a.role);
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
let stopping = false;
|
|
134
|
-
const shutdown = async () => {
|
|
135
|
-
if (stopping)
|
|
136
|
-
return;
|
|
137
|
-
stopping = true;
|
|
138
|
-
console.log(c.dim("\nstopping — agents going offline…"));
|
|
139
|
-
for (const ep of eps.values())
|
|
140
|
-
await ep.stop().catch(() => { });
|
|
141
|
-
process.exit(0);
|
|
142
|
-
};
|
|
143
|
-
process.on("SIGINT", () => void shutdown());
|
|
144
|
-
process.on("SIGTERM", () => void shutdown());
|
|
145
|
-
do {
|
|
146
|
-
for (const a of SCRIPT) {
|
|
147
|
-
if (stopping)
|
|
148
|
-
break;
|
|
149
|
-
try {
|
|
150
|
-
await run(a);
|
|
151
|
-
}
|
|
152
|
-
catch (e) {
|
|
153
|
-
console.error(c.dim(` (skipped ${a.t} from ${"who" in a ? a.who : "?"}: ${e.message})`));
|
|
154
|
-
}
|
|
155
|
-
await sleep(interval);
|
|
156
|
-
}
|
|
157
|
-
if (!values.once && !stopping)
|
|
158
|
-
await sleep(interval * 2);
|
|
159
|
-
} while (!values.once && !stopping);
|
|
160
|
-
if (values.once)
|
|
161
|
-
await shutdown();
|
|
162
|
-
}
|
|
163
|
-
//# sourceMappingURL=demo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/commands/demo.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/web.d.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/** The dashboard's default port and its branded address. The server binds loopback
|
|
2
|
-
* (127.0.0.1) but serves any Host, so `cotal.localhost` — which Chrome/Firefox/Edge
|
|
3
|
-
* resolve to loopback with no DNS setup — just works. (Safari may not resolve
|
|
4
|
-
* `*.localhost`; plain http://127.0.0.1:7799 always does.) */
|
|
5
|
-
export declare const WEB_PORT = 7799;
|
|
6
|
-
export declare const WEB_URL = "http://cotal.localhost:7799/";
|
|
7
|
-
/** A live observability dashboard for a space, served over HTTP + SSE. A read-only
|
|
8
|
-
* observer endpoint (invisible to peers) feeds the page presence, channel history,
|
|
9
|
-
* and a live message stream — no manager required. Bound to loopback. */
|
|
10
|
-
export declare function web(argv: string[]): Promise<void>;
|
|
11
|
-
/** True if something is already listening on the dashboard port (loopback). */
|
|
12
|
-
export declare function webUp(port?: number): Promise<boolean>;
|
|
13
|
-
/** Start the dashboard in the background (pid in `.cotal/web.pid`, output to `.cotal/web.log`),
|
|
14
|
-
* stopped by `cotal down`. Re-execs this same CLI — `process.execArgv` carries the tsx loader in
|
|
15
|
-
* dev, and is empty in prod where `node <entry.js> web …` runs the compiled binary. */
|
|
16
|
-
export declare function startWebDetached(o?: {
|
|
17
|
-
space?: string;
|
|
18
|
-
server?: string;
|
|
19
|
-
}): {
|
|
20
|
-
pid: number;
|
|
21
|
-
url: string;
|
|
22
|
-
};
|
|
23
|
-
/** Make the dashboard available: reuse one already listening, else start it detached and wait
|
|
24
|
-
* briefly for it to come up. Best-effort — callers treat a non-running result as non-fatal. */
|
|
25
|
-
export declare function ensureWeb(o?: {
|
|
26
|
-
space?: string;
|
|
27
|
-
server?: string;
|
|
28
|
-
}): Promise<{
|
|
29
|
-
url: string;
|
|
30
|
-
running: boolean;
|
|
31
|
-
}>;
|
|
32
|
-
//# sourceMappingURL=web.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/commands/web.ts"],"names":[],"mappings":"AAwBA;;;+DAG+D;AAC/D,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,OAAO,iCAAwC,CAAC;AAS7D;;0EAE0E;AAC1E,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8LvD;AAgBD,+EAA+E;AAC/E,wBAAgB,KAAK,CAAC,IAAI,GAAE,MAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAY/D;AAED;;wFAEwF;AACxF,wBAAgB,gBAAgB,CAAC,CAAC,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAkB1G;AAED;gGACgG;AAChG,wBAAsB,SAAS,CAAC,CAAC,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAKvH"}
|