@cotal-ai/manager 0.3.1 → 0.4.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 +14 -0
- package/dist/commands.js +32 -7
- package/dist/commands.js.map +1 -1
- package/dist/manager.d.ts +73 -4
- package/dist/manager.d.ts.map +1 -1
- package/dist/manager.js +337 -87
- package/dist/manager.js.map +1 -1
- package/dist/runtime/pty.d.ts.map +1 -1
- package/dist/runtime/pty.js +31 -28
- package/dist/runtime/pty.js.map +1 -1
- package/dist/runtime/tmux.d.ts.map +1 -1
- package/dist/runtime/tmux.js +6 -2
- package/dist/runtime/tmux.js.map +1 -1
- package/package.json +5 -3
package/README.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# @cotal-ai/manager
|
|
2
|
+
|
|
3
|
+
The agent supervisor: a mesh endpoint that spawns and manages nodes via a pluggable `Runtime`
|
|
4
|
+
(`pty` default, `tmux`, or `cmux`), plus its own control-plane commands
|
|
5
|
+
(`start`/`stop`/`ps`/`attach`) and a WebSocket attach endpoint.
|
|
6
|
+
|
|
7
|
+
It owns process lifecycle and config, not the agents' work; agents still coordinate laterally
|
|
8
|
+
over the mesh.
|
|
9
|
+
|
|
10
|
+
**Tier:** `implementations/` (a self-contained surface over core). Implementations never import
|
|
11
|
+
each other; they meet at runtime over NATS.
|
|
12
|
+
|
|
13
|
+
See [docs/architecture.md](../../docs/architecture.md) (*Manager*) and the
|
|
14
|
+
[root AGENTS.md](../../AGENTS.md) for the tier rules.
|
package/dist/commands.js
CHANGED
|
@@ -2,7 +2,7 @@ import { parseArgs } from "node:util";
|
|
|
2
2
|
import { readFileSync, existsSync, rmSync } from "node:fs";
|
|
3
3
|
import { execFileSync, spawn } from "node:child_process";
|
|
4
4
|
import { join } from "node:path";
|
|
5
|
-
import { CotalEndpoint, isReachable, DEFAULT_SERVER, DEFAULT_SPACE, authDir, findCotalRoot, loadSpaceAuth, registry, } from "@cotal-ai/core";
|
|
5
|
+
import { CotalEndpoint, isReachable, DEFAULT_SERVER, DEFAULT_SPACE, authDir, findCotalRoot, loadSpaceAuth, mintCreds, newIdentity, registry, CONTROL_PRIVILEGED, CONTROL_ADMIN, } from "@cotal-ai/core";
|
|
6
6
|
import { Manager } from "./manager.js";
|
|
7
7
|
import { loadRoster } from "./roster.js";
|
|
8
8
|
import { findWorkspaceRoot } from "./runtime/index.js";
|
|
@@ -28,6 +28,8 @@ function parse(argv) {
|
|
|
28
28
|
creds: { type: "string" },
|
|
29
29
|
"console-port": { type: "string" },
|
|
30
30
|
drive: { type: "boolean" },
|
|
31
|
+
transcript: { type: "boolean" },
|
|
32
|
+
"no-transcript": { type: "boolean" },
|
|
31
33
|
spawn: { type: "string" }, // comma-separated agent names to pre-spawn at startup
|
|
32
34
|
},
|
|
33
35
|
});
|
|
@@ -42,9 +44,26 @@ function parse(argv) {
|
|
|
42
44
|
}
|
|
43
45
|
return values;
|
|
44
46
|
}
|
|
45
|
-
/** Connect a short-lived client, send one control request to the manager, disconnect.
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
/** Connect a short-lived client, send one control request to the manager, disconnect. `tier` picks
|
|
48
|
+
* the control subject: privileged for spawn/ps; admin for the operator's cross-agent ops
|
|
49
|
+
* (stop/attach/purge), which the manager refuses on the privileged subject for a non-owner. The
|
|
50
|
+
* CLI mints a "manager" cred (allow-all), so it can reach either subject. */
|
|
51
|
+
async function ask(space, server, op, args, credsPath, tier = CONTROL_PRIVILEGED) {
|
|
52
|
+
// An explicit --creds wins; else self-mint a privileged "manager" cred from .cotal/auth so the
|
|
53
|
+
// operator's start/stop/ps reach the privileged control subject (P5: only spawn-capable/admin/
|
|
54
|
+
// manager creds may publish there — an agent cred no longer works); else connect bare on an open
|
|
55
|
+
// mesh. Mirrors `cotal send`/`spawn`/`history`.
|
|
56
|
+
let creds = credsPath ? readFileSync(credsPath, "utf8") : undefined;
|
|
57
|
+
if (!creds) {
|
|
58
|
+
const auth = loadSpaceAuth(authDir(findCotalRoot()));
|
|
59
|
+
if (auth) {
|
|
60
|
+
if (space && space !== auth.space) {
|
|
61
|
+
console.error(c.red(`Auth here is for space "${auth.space}", not "${space}". Use --space ${auth.space} (or pass --creds).`));
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
creds = await mintCreds(auth, newIdentity(), "manager");
|
|
65
|
+
}
|
|
66
|
+
}
|
|
48
67
|
if (!(await isReachable(server, { creds }))) {
|
|
49
68
|
console.error(c.red(`Can't reach NATS at ${server}. Run: cotal up`));
|
|
50
69
|
process.exit(1);
|
|
@@ -62,7 +81,7 @@ async function ask(space, server, op, args, credsPath) {
|
|
|
62
81
|
ep.on("error", (e) => console.error(c.red("! " + e.message)));
|
|
63
82
|
await ep.start();
|
|
64
83
|
try {
|
|
65
|
-
return await ep.requestControl(
|
|
84
|
+
return await ep.requestControl(tier, { op, args });
|
|
66
85
|
}
|
|
67
86
|
catch (e) {
|
|
68
87
|
return { ok: false, error: `no manager reachable (${e.message})` };
|
|
@@ -88,6 +107,8 @@ async function start(argv) {
|
|
|
88
107
|
role: v.role,
|
|
89
108
|
agent: v.agent,
|
|
90
109
|
config: v.config,
|
|
110
|
+
// Opt-in: only sent when `--transcript` is given; absent => the daemon's default (mirror off).
|
|
111
|
+
transcript: v.transcript ? true : undefined,
|
|
91
112
|
}, v.creds);
|
|
92
113
|
failIfNotOk(reply);
|
|
93
114
|
const d = reply.data;
|
|
@@ -100,9 +121,11 @@ async function stop(argv) {
|
|
|
100
121
|
console.error(c.red("--name is required"));
|
|
101
122
|
process.exit(1);
|
|
102
123
|
}
|
|
124
|
+
// Operator stop is a cross-agent (admin) op — the CLI operator isn't the agent's spawner, so the
|
|
125
|
+
// privileged subject would reject it; admin (its allow-all "manager" cred reaches it) is correct.
|
|
103
126
|
const reply = await ask(spaceFor(v), v.server ?? DEFAULT_SERVER, "stop", {
|
|
104
127
|
name: v.name,
|
|
105
|
-
}, v.creds);
|
|
128
|
+
}, v.creds, CONTROL_ADMIN);
|
|
106
129
|
failIfNotOk(reply);
|
|
107
130
|
console.log(c.dim(`✓ stopped ${v.name}`));
|
|
108
131
|
}
|
|
@@ -134,9 +157,11 @@ async function attach(argv) {
|
|
|
134
157
|
console.error(c.red("--name is required"));
|
|
135
158
|
process.exit(1);
|
|
136
159
|
}
|
|
160
|
+
// Operator attach is a cross-agent (admin) op — same reasoning as stop (the operator isn't the
|
|
161
|
+
// spawner; admin reaches any agent).
|
|
137
162
|
const reply = await ask(spaceFor(v), v.server ?? DEFAULT_SERVER, "attach", {
|
|
138
163
|
name: v.name,
|
|
139
|
-
}, v.creds);
|
|
164
|
+
}, v.creds, CONTROL_ADMIN);
|
|
140
165
|
failIfNotOk(reply);
|
|
141
166
|
const { ws } = reply.data;
|
|
142
167
|
console.error(c.dim(`attached to ${v.name} — Ctrl-] to detach`));
|
package/dist/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|
package/dist/manager.d.ts
CHANGED
|
@@ -19,6 +19,9 @@ export interface StartAgentOpts {
|
|
|
19
19
|
role?: string;
|
|
20
20
|
/** Explicit agent-file name-or-path; otherwise `.cotal/agents/<name>.md` is discovered if present. */
|
|
21
21
|
config?: string;
|
|
22
|
+
/** Mirror the session's transcript to `tr-<name>`. Defaults to off; `true` (the
|
|
23
|
+
* `--transcript` flag) opts in. */
|
|
24
|
+
transcript?: boolean;
|
|
22
25
|
}
|
|
23
26
|
/**
|
|
24
27
|
* The agent supervisor: a long-lived mesh node that owns agent process lifecycle.
|
|
@@ -33,6 +36,12 @@ export declare class Manager {
|
|
|
33
36
|
private readonly workspaceRoot;
|
|
34
37
|
private readonly runtime;
|
|
35
38
|
private readonly agents;
|
|
39
|
+
/** Names whose spawn is in flight (reserved synchronously before the provision await) — counted
|
|
40
|
+
* toward the ceiling so two concurrent same-name spawns can't both pass the gate (P4a). */
|
|
41
|
+
private readonly reserved;
|
|
42
|
+
/** Expiry stamps (`startedAt + MIN_LIFETIME`) for slots that freed while still young — a
|
|
43
|
+
* count-only, lazily-pruned recycle floor (P4c). Pruned + summed into the ceiling gate. */
|
|
44
|
+
private cooling;
|
|
36
45
|
private readonly attach;
|
|
37
46
|
private ep;
|
|
38
47
|
/** Space trust material when the mesh runs in auth mode (`.cotal/auth` present);
|
|
@@ -45,28 +54,88 @@ export declare class Manager {
|
|
|
45
54
|
start(): Promise<void>;
|
|
46
55
|
stop(): Promise<void>;
|
|
47
56
|
private handle;
|
|
57
|
+
/** Collapsed despawn/attach authorization (P4b). The caller already reached the privileged or
|
|
58
|
+
* admin tier (cred-gated). On the admin tier any named target is allowed (operator). On the
|
|
59
|
+
* privileged tier a named target is allowed ONLY if it's the caller's OWN child
|
|
60
|
+
* (`spawner == caller`) — so a spawn-capable peer can tear down what it spawned, never a peer's.
|
|
61
|
+
* Returns an error string when denied, `undefined` when allowed. */
|
|
62
|
+
private authorizeNamed;
|
|
63
|
+
/** Self-despawn (P2b): stop the managed agent whose id == the authenticated caller. The
|
|
64
|
+
* no-name self-op can only ever resolve to the caller's OWN managed entry (ids are unique
|
|
65
|
+
* per spawn + non-forgeable in auth mode), never a peer — so it's structurally incapable of
|
|
66
|
+
* hitting another agent. Non-managed callers (human CLI, the manager itself, observers) find
|
|
67
|
+
* no match and get a loud error, not a silent no-op. */
|
|
68
|
+
private opStopSelf;
|
|
69
|
+
/** Mediated join/leave (P-read-ACL): move the caller's OWN bind-only chat durable to a new channel
|
|
70
|
+
* set, validated against its `allowSubscribe`. The caller is the authenticated id (non-forgeable
|
|
71
|
+
* in auth mode), so this can only ever resolve to its own managed entry — and the durable filter
|
|
72
|
+
* is moved with the manager's privileged creds, the only path that can (the agent has no UPDATE
|
|
73
|
+
* grant). An unmanaged caller (a `cotal spawn` standalone agent, or any peer this manager didn't
|
|
74
|
+
* start) gets a loud error, not a silent no-op — its read stays at its boot subscribe set. */
|
|
75
|
+
private opSetChannels;
|
|
76
|
+
/** Drop a live agent's slot. When `floor` is set and the agent died young (lived less than
|
|
77
|
+
* MIN_LIFETIME), push a cooling stamp so the freed slot still counts toward the ceiling until it
|
|
78
|
+
* expires — flooring the RECYCLE, not the call, so both free paths (despawn + exit/reap) are
|
|
79
|
+
* covered (P4c). Floor self + own-child despawn and natural exit; NEVER admin despawn (operator
|
|
80
|
+
* emergency-kill stays unthrottled) and NEVER the reserved-rollback path (no cold-start paid). */
|
|
81
|
+
private freeSlot;
|
|
82
|
+
/** Reap a parent's children on its exit (P4b): stop + free every agent whose `spawner` is the
|
|
83
|
+
* exited agent's id, so orphans don't ratchet the ceiling shut. Recursive — a reaped child's
|
|
84
|
+
* own children are reaped too. Exit-driven, so each freed slot is rate-floored like a despawn. */
|
|
85
|
+
private reapChildrenOf;
|
|
86
|
+
/** A managed agent's process exited on its own (crash, /exit, finished). Free its slot
|
|
87
|
+
* (rate-floored — exit-driven churn counts) and reap any children it spawned. Idempotent via
|
|
88
|
+
* freeSlot's identity guard, so a later graceful-stop SIGKILL firing exit again is a no-op. */
|
|
89
|
+
private onAgentExit;
|
|
48
90
|
/** Agent names become `.cotal/agents/<name>.md` paths and mesh identities, so they must be bare
|
|
49
91
|
* tokens, never a path — blocks traversal / arbitrary writes from a model-supplied name. */
|
|
50
92
|
private nameError;
|
|
93
|
+
/** First free name in the series `base`, `base-2`, `base-3`, … — checked against both live and
|
|
94
|
+
* in-flight (reserved) slots. Lets a colliding spawn auto-number instead of being rejected, so
|
|
95
|
+
* callers never have to invent a unique name. */
|
|
96
|
+
private uniqueName;
|
|
51
97
|
/** Spawn a teammate by name (loads `.cotal/agents/<name>.md`), as if a peer asked via the
|
|
52
98
|
* control plane. Used to pre-spawn the demo's experts at startup so the manager owns them. */
|
|
53
99
|
startByName(name: string): Promise<ControlReply>;
|
|
54
100
|
/** Resolve once `name` shows up on the mesh roster (presence registered), or after `timeoutMs`.
|
|
55
|
-
* Lets the pre-spawn loop stagger heavy agent cold-starts so they don't all boot at once.
|
|
101
|
+
* Lets the pre-spawn loop stagger heavy agent cold-starts so they don't all boot at once.
|
|
102
|
+
* Best-effort, keyed on the manager-owned (auto-numbered, unique) spawn name — NOT identity
|
|
103
|
+
* resolution: a same-named *unmanaged* peer already present could satisfy this early. That's
|
|
104
|
+
* acceptable for cold-start staggering; it never routes anything. */
|
|
56
105
|
waitForPresence(name: string, timeoutMs?: number): Promise<boolean>;
|
|
57
106
|
/** Parse an untyped control-plane `start` request into {@link StartAgentOpts}. */
|
|
58
107
|
private opStart;
|
|
59
108
|
/** Spawn and supervise one agent. The single spawn path: both the control-plane
|
|
60
109
|
* `start` op and declarative roster boot call this. Mints scoped creds in auth mode,
|
|
61
|
-
* resolves the agent file, launches via the connector + runtime, and records the handle.
|
|
62
|
-
|
|
110
|
+
* resolves the agent file, launches via the connector + runtime, and records the handle.
|
|
111
|
+
* `spawner` is the authenticated id of the peer that requested the spawn (`req.from.id`),
|
|
112
|
+
* defaulting to the manager's own id for roster/pre-spawn — recorded for the spawner
|
|
113
|
+
* ledger (own-children despawn + reap-on-parent-exit). */
|
|
114
|
+
startAgent(opts: StartAgentOpts, spawner?: string): Promise<ControlReply>;
|
|
115
|
+
/** Subscribe to a managed agent's process-exit so a self-driven exit frees its slot and reaps
|
|
116
|
+
* its children (P4b/P4c). Only pty streams exit (via the attach session's `onExit`); tmux/cmux
|
|
117
|
+
* attach() throws, so this is a no-op there — a self-EXITED agent under those runtimes is reaped
|
|
118
|
+
* by nothing until it's explicitly despawned (graceful-stop runs on despawn, not self-exit). The
|
|
119
|
+
* cap still holds (a lingering corpse counts toward it); runtime-agnostic exit-reaping (a real
|
|
120
|
+
* per-runtime `status()` → exited-sweep at the availability gate) is a tracked follow-up. */
|
|
121
|
+
private watchExit;
|
|
122
|
+
/** Prune expired cooling stamps (drop those at/before now) and return the live count — the
|
|
123
|
+
* recycle floor's contribution to the ceiling (P4c). Lazy: pruned only when the gate consults it. */
|
|
124
|
+
private coolingCount;
|
|
63
125
|
private opStop;
|
|
64
126
|
/** Purge the space's retained message backlog (chat, optionally DMs). Privileged — the
|
|
65
127
|
* manager mints its own "manager" creds (same as `cotal history clear`); regular agents are
|
|
66
128
|
* denied STREAM.PURGE under auth. Cleanup only: leaves live agents and the TASK queue alone. */
|
|
67
129
|
private opPurge;
|
|
68
130
|
/** Persist a peer-defined persona as config. After this, `start name` auto-discovers
|
|
69
|
-
* .cotal/agents/<name>.md and the connector applies its persona/model at spawn.
|
|
131
|
+
* .cotal/agents/<name>.md and the connector applies its persona/model at spawn.
|
|
132
|
+
*
|
|
133
|
+
* CONTENT vs POLICY (P6): the write path accepts ONLY content from args — {name, model,
|
|
134
|
+
* persona}. role/publish/capabilities/owner are POLICY and have no slot here, so a peer can
|
|
135
|
+
* never grant itself a capability or claim ownership by redefining. A fresh name is created with
|
|
136
|
+
* owner = caller (the creator). Redefining an EXISTING file overwrites ONLY model + persona and
|
|
137
|
+
* preserves everything else — and is allowed on the privileged tier only if `file.owner == caller`,
|
|
138
|
+
* else admin is required. Fail-closed: an ownerless file (legacy / operator-written) is admin-only. */
|
|
70
139
|
private opDefinePersona;
|
|
71
140
|
private opAttach;
|
|
72
141
|
/** Managed agents cross-referenced with live presence (the manager sees the roster). */
|
package/dist/manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAuB,YAAY,EAA0C,MAAM,gBAAgB,CAAC;AAChH,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AAW5B,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;0GAC0G;AAC1G,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sGAAsG;IACtG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;wCACoC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAqBD;;;;;GAKG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D;gGAC4F;IAC5F,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C;gGAC4F;IAC5F,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,EAAE,CAAiB;IAC3B;+FAC2F;IAC3F,OAAO,CAAC,IAAI,CAAC,CAAY;gBAEb,IAAI,EAAE,cAAc;IAehC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,uDAAuD;IACvD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0CtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAKb,MAAM;IAmDpB;;;;yEAIqE;IACrE,OAAO,CAAC,cAAc;IAMtB;;;;6DAIyD;IACzD,OAAO,CAAC,UAAU;IASlB;;;;;mGAK+F;YACjF,aAAa;IA6B3B;;;;uGAImG;IACnG,OAAO,CAAC,QAAQ;IAMhB;;uGAEmG;IACnG,OAAO,CAAC,cAAc;IAStB;;oGAEgG;IAChG,OAAO,CAAC,WAAW;IAKnB;iGAC6F;IAC7F,OAAO,CAAC,SAAS;IAMjB;;sDAEkD;IAClD,OAAO,CAAC,UAAU;IAIlB;mGAC+F;IACzF,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAItD;;;;0EAIsE;IAChE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IASzE,kFAAkF;IAClF,OAAO,CAAC,OAAO;IAaf;;;;;+DAK2D;IACrD,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA0G/E;;;;;kGAK8F;IAC9F,OAAO,CAAC,SAAS;IAQjB;0GACsG;IACtG,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,MAAM;IAYd;;qGAEiG;YACnF,OAAO;IAgBrB;;;;;;;;4GAQwG;IACxG,OAAO,CAAC,eAAe;IAqCvB,OAAO,CAAC,QAAQ;IAqBhB,wFAAwF;IACxF,OAAO,CAAC,IAAI;CAab"}
|
package/dist/manager.js
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { join, dirname } from "node:path";
|
|
3
|
-
import { CotalEndpoint, DEFAULT_SERVER, agentFilePath, authDir, clearSpaceHistory, findCotalRoot, loadAgentFile, loadSpaceAuth, mintCreds, newIdentity, provisionAgent, registry, saveAgentFile, } from "@cotal-ai/core";
|
|
3
|
+
import { CotalEndpoint, DEFAULT_SERVER, agentFilePath, assertValidChannel, authDir, channelInAllow, clearSpaceHistory, connectorServers, findCotalRoot, firstFreeName, loadAgentFile, loadCotalConfig, loadSpaceAuth, mintCreds, newIdentity, provisionAgent, registry, saveAgentFile, CONTROL_PRIVILEGED, CONTROL_SELF_SERVICE, CONTROL_ADMIN, } from "@cotal-ai/core";
|
|
4
4
|
import { createRuntime, } from "./runtime/index.js";
|
|
5
5
|
import { AttachEndpoint } from "./attach-endpoint.js";
|
|
6
|
+
/** Concurrency ceiling — the manager refuses to hold more than this many live + in-flight +
|
|
7
|
+
* cooling slots at once (P4a). Bounds a fork-bomb: spawn is a full agent process per call. */
|
|
8
|
+
const MAX_AGENTS = 50;
|
|
9
|
+
/** Minimum slot lifetime for rate-flooring (P4c). A slot freed (by despawn OR natural exit/reap)
|
|
10
|
+
* before living this long leaves a cooling stamp that still counts toward the ceiling until it
|
|
11
|
+
* expires — so churn (spawn↔despawn or spawn↔fast-exit) can't outrun the concurrency bound. */
|
|
12
|
+
const MIN_LIFETIME = 10_000;
|
|
6
13
|
/**
|
|
7
14
|
* The agent supervisor: a long-lived mesh node that owns agent process lifecycle.
|
|
8
15
|
* It serves control requests on the "manager" service and spawns/kills agents
|
|
@@ -16,6 +23,12 @@ export class Manager {
|
|
|
16
23
|
workspaceRoot;
|
|
17
24
|
runtime;
|
|
18
25
|
agents = new Map();
|
|
26
|
+
/** Names whose spawn is in flight (reserved synchronously before the provision await) — counted
|
|
27
|
+
* toward the ceiling so two concurrent same-name spawns can't both pass the gate (P4a). */
|
|
28
|
+
reserved = new Set();
|
|
29
|
+
/** Expiry stamps (`startedAt + MIN_LIFETIME`) for slots that freed while still young — a
|
|
30
|
+
* count-only, lazily-pruned recycle floor (P4c). Pruned + summed into the ceiling gate. */
|
|
31
|
+
cooling = [];
|
|
19
32
|
attach;
|
|
20
33
|
ep;
|
|
21
34
|
/** Space trust material when the mesh runs in auth mode (`.cotal/auth` present);
|
|
@@ -69,29 +82,68 @@ export class Manager {
|
|
|
69
82
|
this.ep.on("error", (e) => console.error(`! manager endpoint: ${e.message}`));
|
|
70
83
|
await this.ep.start();
|
|
71
84
|
await this.ep.setActivity(`supervisor (${this.runtime.kind})`);
|
|
72
|
-
|
|
85
|
+
// Serve all three control tiers (P2a): self-service (no-name self stop/despawn), privileged
|
|
86
|
+
// (start / own-child stop-despawn-attach / own definePersona), and admin (purge / cross-agent
|
|
87
|
+
// stop-despawn-attach / cross-agent definePersona). The cred layer grants self-service to every
|
|
88
|
+
// agent, privileged only to spawn-capable ones, and admin only to the manager's own profile
|
|
89
|
+
// (no agent ever reaches it); the handler then routes by op↔tier (fail-closed on mismatch) so a
|
|
90
|
+
// misrouted op is rejected before anything acts.
|
|
91
|
+
this.ep.serveControl(CONTROL_PRIVILEGED, (req) => this.handle(req, CONTROL_PRIVILEGED));
|
|
92
|
+
this.ep.serveControl(CONTROL_SELF_SERVICE, (req) => this.handle(req, CONTROL_SELF_SERVICE));
|
|
93
|
+
this.ep.serveControl(CONTROL_ADMIN, (req) => this.handle(req, CONTROL_ADMIN));
|
|
73
94
|
}
|
|
74
95
|
async stop() {
|
|
75
96
|
await this.ep.stop();
|
|
76
97
|
await this.attach.stop();
|
|
77
98
|
}
|
|
78
|
-
async handle(req) {
|
|
99
|
+
async handle(req, tier) {
|
|
79
100
|
const args = req.args ?? {};
|
|
101
|
+
// `req.from.id` is non-forgeable in auth mode: serveControl rejects any request whose payload
|
|
102
|
+
// `from.id` doesn't match the subject sender (endpoint.ts). In open mode there are no creds, so
|
|
103
|
+
// from.id is self-asserted — the spawner ledger + this routing are auth-mode guarantees,
|
|
104
|
+
// advisory in open mode (consistent with "open = single-trusted-host"). Thread it to every op
|
|
105
|
+
// so authz (P2c) and the spawner ledger (P4b) can act on it.
|
|
106
|
+
const caller = req.from.id;
|
|
107
|
+
const name = String(args.name ?? "").trim();
|
|
108
|
+
// Op↔tier binding — the real enforcement per the split. The cred gates WHO can reach each
|
|
109
|
+
// subject; this gates WHAT each subject will honor, fail-closed. A privileged op arriving on
|
|
110
|
+
// the self-service subject (publishable by all) must be rejected or the split does nothing.
|
|
111
|
+
if (tier === CONTROL_SELF_SERVICE) {
|
|
112
|
+
// Self-service honors self-ops only: a no-name stop (self-despawn) and setChannels (mediated
|
|
113
|
+
// join/leave — the caller moving its OWN chat read within its allowSubscribe). Anything else —
|
|
114
|
+
// including a named stop (belongs on privileged/admin) — is a misroute and rejected.
|
|
115
|
+
if (req.op === "setChannels")
|
|
116
|
+
return this.opSetChannels(caller, args);
|
|
117
|
+
if (req.op !== "stop")
|
|
118
|
+
return { ok: false, error: `op "${req.op}" not allowed on self-service control subject` };
|
|
119
|
+
if (name)
|
|
120
|
+
return { ok: false, error: "named stop not allowed on self-service subject; send it on the privileged subject" };
|
|
121
|
+
return this.opStopSelf(caller, args);
|
|
122
|
+
}
|
|
123
|
+
const admin = tier === CONTROL_ADMIN;
|
|
124
|
+
// Privileged + admin tiers. A no-name stop is a self-op and belongs on the self-service subject.
|
|
80
125
|
switch (req.op) {
|
|
81
126
|
case "start":
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
127
|
+
// Spawn is a privileged-tier op; reaching it via admin is fine (admin ⊇ privileged powers).
|
|
128
|
+
return this.opStart(args, caller);
|
|
129
|
+
case "stop": {
|
|
130
|
+
if (!name)
|
|
131
|
+
return { ok: false, error: "self-stop not allowed on privileged subject; send it on the self-service subject" };
|
|
132
|
+
return this.opStop(args, caller, admin);
|
|
133
|
+
}
|
|
85
134
|
case "definePersona":
|
|
86
|
-
return this.opDefinePersona(args);
|
|
135
|
+
return this.opDefinePersona(args, caller, admin);
|
|
87
136
|
case "purge":
|
|
88
|
-
|
|
137
|
+
// SECURITY: purge clears space history incl. DMs — admin-only. On the privileged tier any
|
|
138
|
+
// spawn-capable agent could wipe the space, so it must not be honored there.
|
|
139
|
+
if (!admin)
|
|
140
|
+
return { ok: false, error: "purge is admin-only; not allowed on the privileged subject" };
|
|
141
|
+
return this.opPurge(args, caller);
|
|
89
142
|
case "attach":
|
|
90
|
-
return this.opAttach(args);
|
|
143
|
+
return this.opAttach(args, caller, admin);
|
|
91
144
|
case "ps":
|
|
92
145
|
return { ok: true, data: this.list() };
|
|
93
146
|
case "status": {
|
|
94
|
-
const name = String(args.name ?? "");
|
|
95
147
|
const a = this.list().find((x) => x.name === name);
|
|
96
148
|
return a ? { ok: true, data: a } : { ok: false, error: `no agent "${name}"` };
|
|
97
149
|
}
|
|
@@ -99,6 +151,100 @@ export class Manager {
|
|
|
99
151
|
return { ok: false, error: `unknown op: ${req.op}` };
|
|
100
152
|
}
|
|
101
153
|
}
|
|
154
|
+
/** Collapsed despawn/attach authorization (P4b). The caller already reached the privileged or
|
|
155
|
+
* admin tier (cred-gated). On the admin tier any named target is allowed (operator). On the
|
|
156
|
+
* privileged tier a named target is allowed ONLY if it's the caller's OWN child
|
|
157
|
+
* (`spawner == caller`) — so a spawn-capable peer can tear down what it spawned, never a peer's.
|
|
158
|
+
* Returns an error string when denied, `undefined` when allowed. */
|
|
159
|
+
authorizeNamed(target, caller, admin) {
|
|
160
|
+
if (admin)
|
|
161
|
+
return undefined;
|
|
162
|
+
if (target.spawner === caller)
|
|
163
|
+
return undefined;
|
|
164
|
+
return `not authorized: ${target.name} was not spawned by ${caller} (admin tier required)`;
|
|
165
|
+
}
|
|
166
|
+
/** Self-despawn (P2b): stop the managed agent whose id == the authenticated caller. The
|
|
167
|
+
* no-name self-op can only ever resolve to the caller's OWN managed entry (ids are unique
|
|
168
|
+
* per spawn + non-forgeable in auth mode), never a peer — so it's structurally incapable of
|
|
169
|
+
* hitting another agent. Non-managed callers (human CLI, the manager itself, observers) find
|
|
170
|
+
* no match and get a loud error, not a silent no-op. */
|
|
171
|
+
opStopSelf(callerId, args) {
|
|
172
|
+
const target = [...this.agents.values()].find((a) => a.id === callerId);
|
|
173
|
+
if (!target)
|
|
174
|
+
return { ok: false, error: `self-stop: caller ${callerId} is not a managed agent` };
|
|
175
|
+
const graceful = args.graceful !== false;
|
|
176
|
+
target.handle.stop({ graceful });
|
|
177
|
+
this.freeSlot(target, true); // self-despawn is rate-floored (recycle churn)
|
|
178
|
+
return { ok: true, data: { name: target.name, stopped: true, graceful } };
|
|
179
|
+
}
|
|
180
|
+
/** Mediated join/leave (P-read-ACL): move the caller's OWN bind-only chat durable to a new channel
|
|
181
|
+
* set, validated against its `allowSubscribe`. The caller is the authenticated id (non-forgeable
|
|
182
|
+
* in auth mode), so this can only ever resolve to its own managed entry — and the durable filter
|
|
183
|
+
* is moved with the manager's privileged creds, the only path that can (the agent has no UPDATE
|
|
184
|
+
* grant). An unmanaged caller (a `cotal spawn` standalone agent, or any peer this manager didn't
|
|
185
|
+
* start) gets a loud error, not a silent no-op — its read stays at its boot subscribe set. */
|
|
186
|
+
async opSetChannels(callerId, args) {
|
|
187
|
+
const target = [...this.agents.values()].find((a) => a.id === callerId);
|
|
188
|
+
if (!target)
|
|
189
|
+
return { ok: false, error: `setChannels: caller ${callerId} is not an agent this manager spawned` };
|
|
190
|
+
// Normalize defensively — this is a security boundary: accept only real strings, trimmed and
|
|
191
|
+
// non-empty, reject anything coerced or blank, and cap the list so a request can't bloat the
|
|
192
|
+
// control plane or the durable filter.
|
|
193
|
+
const raw = Array.isArray(args.channels) ? args.channels : [];
|
|
194
|
+
const channels = raw.filter((c) => typeof c === "string").map((c) => c.trim()).filter(Boolean);
|
|
195
|
+
if (!channels.length || channels.length !== raw.length)
|
|
196
|
+
return { ok: false, error: "setChannels: channels must be a non-empty list of non-blank strings" };
|
|
197
|
+
if (channels.length > 64)
|
|
198
|
+
return { ok: false, error: "setChannels: too many channels (max 64)" };
|
|
199
|
+
for (const ch of channels) {
|
|
200
|
+
try {
|
|
201
|
+
assertValidChannel(ch); // reject names the wire layer would rewrite, before any ACL check
|
|
202
|
+
}
|
|
203
|
+
catch (e) {
|
|
204
|
+
return { ok: false, error: e.message };
|
|
205
|
+
}
|
|
206
|
+
if (!channelInAllow(target.allowSubscribe, ch))
|
|
207
|
+
return { ok: false, error: `channel "${ch}" is not within allowSubscribe [${target.allowSubscribe.join(", ")}]` };
|
|
208
|
+
}
|
|
209
|
+
try {
|
|
210
|
+
await this.ep.setChatFilterFor(callerId, channels);
|
|
211
|
+
}
|
|
212
|
+
catch (e) {
|
|
213
|
+
return { ok: false, error: e.message };
|
|
214
|
+
}
|
|
215
|
+
return { ok: true, data: { channels } };
|
|
216
|
+
}
|
|
217
|
+
/** Drop a live agent's slot. When `floor` is set and the agent died young (lived less than
|
|
218
|
+
* MIN_LIFETIME), push a cooling stamp so the freed slot still counts toward the ceiling until it
|
|
219
|
+
* expires — flooring the RECYCLE, not the call, so both free paths (despawn + exit/reap) are
|
|
220
|
+
* covered (P4c). Floor self + own-child despawn and natural exit; NEVER admin despawn (operator
|
|
221
|
+
* emergency-kill stays unthrottled) and NEVER the reserved-rollback path (no cold-start paid). */
|
|
222
|
+
freeSlot(a, floor) {
|
|
223
|
+
if (this.agents.get(a.name) !== a)
|
|
224
|
+
return; // already freed (exit raced despawn, etc.)
|
|
225
|
+
this.agents.delete(a.name);
|
|
226
|
+
if (floor && Date.now() - a.startedAt < MIN_LIFETIME)
|
|
227
|
+
this.cooling.push(a.startedAt + MIN_LIFETIME);
|
|
228
|
+
}
|
|
229
|
+
/** Reap a parent's children on its exit (P4b): stop + free every agent whose `spawner` is the
|
|
230
|
+
* exited agent's id, so orphans don't ratchet the ceiling shut. Recursive — a reaped child's
|
|
231
|
+
* own children are reaped too. Exit-driven, so each freed slot is rate-floored like a despawn. */
|
|
232
|
+
reapChildrenOf(parentId) {
|
|
233
|
+
for (const child of [...this.agents.values()]) {
|
|
234
|
+
if (child.spawner !== parentId)
|
|
235
|
+
continue;
|
|
236
|
+
child.handle.stop({ graceful: false });
|
|
237
|
+
this.freeSlot(child, true);
|
|
238
|
+
this.reapChildrenOf(child.id);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/** A managed agent's process exited on its own (crash, /exit, finished). Free its slot
|
|
242
|
+
* (rate-floored — exit-driven churn counts) and reap any children it spawned. Idempotent via
|
|
243
|
+
* freeSlot's identity guard, so a later graceful-stop SIGKILL firing exit again is a no-op. */
|
|
244
|
+
onAgentExit(a) {
|
|
245
|
+
this.freeSlot(a, true);
|
|
246
|
+
this.reapChildrenOf(a.id);
|
|
247
|
+
}
|
|
102
248
|
/** Agent names become `.cotal/agents/<name>.md` paths and mesh identities, so they must be bare
|
|
103
249
|
* tokens, never a path — blocks traversal / arbitrary writes from a model-supplied name. */
|
|
104
250
|
nameError(name) {
|
|
@@ -106,13 +252,22 @@ export class Manager {
|
|
|
106
252
|
? undefined
|
|
107
253
|
: `unsafe name ${JSON.stringify(name)} (allowed: letters, digits, _ -)`;
|
|
108
254
|
}
|
|
255
|
+
/** First free name in the series `base`, `base-2`, `base-3`, … — checked against both live and
|
|
256
|
+
* in-flight (reserved) slots. Lets a colliding spawn auto-number instead of being rejected, so
|
|
257
|
+
* callers never have to invent a unique name. */
|
|
258
|
+
uniqueName(base) {
|
|
259
|
+
return firstFreeName(base, (n) => this.agents.has(n) || this.reserved.has(n));
|
|
260
|
+
}
|
|
109
261
|
/** Spawn a teammate by name (loads `.cotal/agents/<name>.md`), as if a peer asked via the
|
|
110
262
|
* control plane. Used to pre-spawn the demo's experts at startup so the manager owns them. */
|
|
111
263
|
async startByName(name) {
|
|
112
264
|
return this.startAgent({ name });
|
|
113
265
|
}
|
|
114
266
|
/** Resolve once `name` shows up on the mesh roster (presence registered), or after `timeoutMs`.
|
|
115
|
-
* Lets the pre-spawn loop stagger heavy agent cold-starts so they don't all boot at once.
|
|
267
|
+
* Lets the pre-spawn loop stagger heavy agent cold-starts so they don't all boot at once.
|
|
268
|
+
* Best-effort, keyed on the manager-owned (auto-numbered, unique) spawn name — NOT identity
|
|
269
|
+
* resolution: a same-named *unmanaged* peer already present could satisfy this early. That's
|
|
270
|
+
* acceptable for cold-start staggering; it never routes anything. */
|
|
116
271
|
async waitForPresence(name, timeoutMs = 30_000) {
|
|
117
272
|
const deadline = Date.now() + timeoutMs;
|
|
118
273
|
while (Date.now() < deadline) {
|
|
@@ -123,106 +278,171 @@ export class Manager {
|
|
|
123
278
|
return false;
|
|
124
279
|
}
|
|
125
280
|
/** Parse an untyped control-plane `start` request into {@link StartAgentOpts}. */
|
|
126
|
-
opStart(args) {
|
|
281
|
+
opStart(args, caller) {
|
|
127
282
|
return this.startAgent({
|
|
128
283
|
name: String(args.name ?? "").trim(),
|
|
129
284
|
agent: args.agent ? String(args.agent) : undefined,
|
|
130
285
|
role: args.role ? String(args.role) : undefined,
|
|
131
286
|
config: args.config ? String(args.config) : undefined,
|
|
132
|
-
|
|
287
|
+
transcript: typeof args.transcript === "boolean" ? args.transcript : undefined,
|
|
288
|
+
}, caller);
|
|
133
289
|
}
|
|
134
290
|
/** Spawn and supervise one agent. The single spawn path: both the control-plane
|
|
135
291
|
* `start` op and declarative roster boot call this. Mints scoped creds in auth mode,
|
|
136
|
-
* resolves the agent file, launches via the connector + runtime, and records the handle.
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
292
|
+
* resolves the agent file, launches via the connector + runtime, and records the handle.
|
|
293
|
+
* `spawner` is the authenticated id of the peer that requested the spawn (`req.from.id`),
|
|
294
|
+
* defaulting to the manager's own id for roster/pre-spawn — recorded for the spawner
|
|
295
|
+
* ledger (own-children despawn + reap-on-parent-exit). */
|
|
296
|
+
async startAgent(opts, spawner) {
|
|
297
|
+
const base = opts.name.trim();
|
|
298
|
+
if (!base)
|
|
140
299
|
return { ok: false, error: "name required" };
|
|
141
|
-
const nameErr = this.nameError(
|
|
300
|
+
const nameErr = this.nameError(base);
|
|
142
301
|
if (nameErr)
|
|
143
302
|
return { ok: false, error: nameErr };
|
|
144
|
-
if (this.agents.has(name))
|
|
145
|
-
return { ok: false, error: `agent "${name}" already running` };
|
|
146
303
|
const agent = opts.agent ?? "cotal";
|
|
147
|
-
//
|
|
148
|
-
//
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
let role = opts.role;
|
|
162
|
-
// A stable nkey identity assigned at spawn: the public key is the agent's card.id
|
|
163
|
-
// (threaded via COTAL_ID); the seed is retained to mint matching creds later.
|
|
164
|
-
const identity = newIdentity();
|
|
165
|
-
let handle;
|
|
304
|
+
// Synchronous availability gate (P4a/P4c) — the free-name pick and the reserve run in one tick
|
|
305
|
+
// BEFORE any await, so two concurrent spawns can't land on the same name (no TOCTOU between the
|
|
306
|
+
// pick and the reserve), and the ceiling can't be overshot by fan-out racing the provision await.
|
|
307
|
+
const cooling = this.coolingCount(); // prune expired stamps, then count live cooling slots
|
|
308
|
+
if (this.agents.size + this.reserved.size + cooling >= MAX_AGENTS)
|
|
309
|
+
return { ok: false, error: `at capacity (${MAX_AGENTS} agents incl. in-flight + cooling); despawn one or wait` };
|
|
310
|
+
// A taken name auto-numbers (reviewer → reviewer-2 → reviewer-3…) so callers never collide; the
|
|
311
|
+
// persona file is still discovered from the requested base name below, so reviewer-2 wears it.
|
|
312
|
+
// Deliberate semantics: this is create-new, not ensure-exists — a retried/redelivered identical
|
|
313
|
+
// spawn from the same caller yields a fresh numbered agent, not a no-op. Accepted (MAX_AGENTS
|
|
314
|
+
// bounds the blast radius). Follow-up: add a short per-(spawner,base,role) idempotency window if
|
|
315
|
+
// autonomous orchestration ever produces phantom spawns.
|
|
316
|
+
const name = this.uniqueName(base);
|
|
317
|
+
this.reserved.add(name);
|
|
166
318
|
try {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
319
|
+
// Resolve an agent file from the manager's own workspace — an explicit
|
|
320
|
+
// --config must exist; otherwise discover .cotal/agents/<name>.md if present.
|
|
321
|
+
let configPath;
|
|
322
|
+
if (opts.config) {
|
|
323
|
+
configPath = agentFilePath(this.workspaceRoot, opts.config);
|
|
324
|
+
if (!existsSync(configPath))
|
|
325
|
+
return { ok: false, error: `agent file not found: ${configPath}` };
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
const f = agentFilePath(this.workspaceRoot, base);
|
|
329
|
+
if (existsSync(f))
|
|
330
|
+
configPath = f;
|
|
331
|
+
}
|
|
332
|
+
// --role overrides the file; the file fills it in for bookkeeping otherwise.
|
|
333
|
+
let role = opts.role;
|
|
334
|
+
// A stable nkey identity assigned at spawn: the public key is the agent's card.id
|
|
335
|
+
// (threaded via COTAL_ID); the seed is retained to mint matching creds later.
|
|
336
|
+
const identity = newIdentity();
|
|
337
|
+
// The agent's read ACL, defaulted the same way the loader/provisioner do — retained on the
|
|
338
|
+
// managed record so the mediated join/leave op can validate channels ⊆ allowSubscribe.
|
|
339
|
+
let allowSubscribe = ["general"];
|
|
340
|
+
let handle;
|
|
341
|
+
try {
|
|
342
|
+
const connector = registry.resolve("connector", agent);
|
|
343
|
+
const def = configPath ? loadAgentFile(configPath) : undefined;
|
|
344
|
+
if (!role)
|
|
345
|
+
role = def?.role;
|
|
346
|
+
allowSubscribe = def?.allowSubscribe ?? def?.subscribe ?? ["general"];
|
|
347
|
+
// In auth mode, mint the agent's creds from the space signing key and write them where the
|
|
348
|
+
// spawned session reads them (COTAL_CREDS path). Open mesh → no creds. Read scope = the
|
|
349
|
+
// file's subscribe/allowSubscribe; post scope = its allowPublish (default-deny).
|
|
350
|
+
let credsPath;
|
|
351
|
+
if (this.auth) {
|
|
352
|
+
// Pre-create the agent's bind-only chat (+ DM + role TASK) durables and mint its scoped
|
|
353
|
+
// creds — the shared onboarding step (provisionAgent), the manager just supplies its
|
|
354
|
+
// own connected endpoint as the privileged provisioner.
|
|
355
|
+
const creds = await provisionAgent(this.ep, this.auth, identity, {
|
|
356
|
+
subscribe: def?.subscribe,
|
|
357
|
+
allowSubscribe,
|
|
358
|
+
allowPublish: def?.allowPublish,
|
|
359
|
+
role,
|
|
360
|
+
capabilities: def?.capabilities,
|
|
361
|
+
});
|
|
362
|
+
credsPath = join(authDir(this.workspaceRoot), "creds", `${name}.creds`);
|
|
363
|
+
mkdirSync(dirname(credsPath), { recursive: true });
|
|
364
|
+
writeFileSync(credsPath, creds, { mode: 0o600 });
|
|
365
|
+
}
|
|
366
|
+
// Personal MCP servers the operator opted to share with manager-spawned agents of this
|
|
367
|
+
// type (cotal config; default none → isolated, the memory-safe default this guards).
|
|
368
|
+
const mcpServers = connectorServers(loadCotalConfig(this.workspaceRoot), agent);
|
|
369
|
+
const spec = connector.buildLaunch({
|
|
370
|
+
space: this.space,
|
|
371
|
+
name,
|
|
181
372
|
role,
|
|
373
|
+
id: identity.id,
|
|
374
|
+
creds: credsPath,
|
|
375
|
+
servers: this.servers,
|
|
376
|
+
configPath,
|
|
377
|
+
transcript: opts.transcript,
|
|
378
|
+
mcpServers,
|
|
182
379
|
});
|
|
183
|
-
|
|
184
|
-
mkdirSync(dirname(credsPath), { recursive: true });
|
|
185
|
-
writeFileSync(credsPath, creds, { mode: 0o600 });
|
|
380
|
+
handle = this.runtime.spawn(name, spec, this.workspaceRoot);
|
|
186
381
|
}
|
|
187
|
-
|
|
188
|
-
|
|
382
|
+
catch (e) {
|
|
383
|
+
// Pre-set failure: the slot was never live, so no cold-start was paid — the reserved
|
|
384
|
+
// rollback (finally) is enough, no cooling stamp.
|
|
385
|
+
return { ok: false, error: e.message };
|
|
386
|
+
}
|
|
387
|
+
const managed = {
|
|
189
388
|
name,
|
|
190
389
|
role,
|
|
390
|
+
agent,
|
|
191
391
|
id: identity.id,
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
392
|
+
seed: identity.seed,
|
|
393
|
+
spawner: spawner ?? this.ep.ref().id,
|
|
394
|
+
startedAt: Date.now(),
|
|
395
|
+
handle,
|
|
396
|
+
allowSubscribe,
|
|
397
|
+
};
|
|
398
|
+
this.agents.set(name, managed);
|
|
399
|
+
// Wire the runtime exit signal so a natural exit (crash / /exit / finished) frees the slot
|
|
400
|
+
// (rate-floored) and reaps any children — keeps the ceiling from ratcheting shut with orphans.
|
|
401
|
+
this.watchExit(managed);
|
|
402
|
+
return { ok: true, data: { name, role, agent, id: identity.id, mode: handle.kind } };
|
|
197
403
|
}
|
|
198
|
-
|
|
199
|
-
|
|
404
|
+
finally {
|
|
405
|
+
this.reserved.delete(name);
|
|
200
406
|
}
|
|
201
|
-
this.agents.set(name, {
|
|
202
|
-
name,
|
|
203
|
-
role,
|
|
204
|
-
agent,
|
|
205
|
-
id: identity.id,
|
|
206
|
-
seed: identity.seed,
|
|
207
|
-
startedAt: Date.now(),
|
|
208
|
-
handle,
|
|
209
|
-
});
|
|
210
|
-
return { ok: true, data: { name, role, agent, id: identity.id, mode: handle.kind } };
|
|
211
407
|
}
|
|
212
|
-
|
|
408
|
+
/** Subscribe to a managed agent's process-exit so a self-driven exit frees its slot and reaps
|
|
409
|
+
* its children (P4b/P4c). Only pty streams exit (via the attach session's `onExit`); tmux/cmux
|
|
410
|
+
* attach() throws, so this is a no-op there — a self-EXITED agent under those runtimes is reaped
|
|
411
|
+
* by nothing until it's explicitly despawned (graceful-stop runs on despawn, not self-exit). The
|
|
412
|
+
* cap still holds (a lingering corpse counts toward it); runtime-agnostic exit-reaping (a real
|
|
413
|
+
* per-runtime `status()` → exited-sweep at the availability gate) is a tracked follow-up. */
|
|
414
|
+
watchExit(a) {
|
|
415
|
+
try {
|
|
416
|
+
a.handle.attach().onExit(() => this.onAgentExit(a));
|
|
417
|
+
}
|
|
418
|
+
catch {
|
|
419
|
+
/* runtime doesn't stream an exit signal (tmux/cmux) — nothing to wire */
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
/** Prune expired cooling stamps (drop those at/before now) and return the live count — the
|
|
423
|
+
* recycle floor's contribution to the ceiling (P4c). Lazy: pruned only when the gate consults it. */
|
|
424
|
+
coolingCount() {
|
|
425
|
+
const now = Date.now();
|
|
426
|
+
this.cooling = this.cooling.filter((stamp) => stamp > now);
|
|
427
|
+
return this.cooling.length;
|
|
428
|
+
}
|
|
429
|
+
opStop(args, caller, admin) {
|
|
213
430
|
const name = String(args.name ?? "").trim();
|
|
214
431
|
const a = this.agents.get(name);
|
|
215
432
|
if (!a)
|
|
216
433
|
return { ok: false, error: `no agent "${name}"` };
|
|
434
|
+
const denied = this.authorizeNamed(a, caller, admin);
|
|
435
|
+
if (denied)
|
|
436
|
+
return { ok: false, error: denied };
|
|
217
437
|
const graceful = args.graceful !== false;
|
|
218
438
|
a.handle.stop({ graceful });
|
|
219
|
-
this.
|
|
439
|
+
this.freeSlot(a, !admin); // own-child despawn is rate-floored; admin emergency-kill is not
|
|
220
440
|
return { ok: true, data: { name, stopped: true, graceful } };
|
|
221
441
|
}
|
|
222
442
|
/** Purge the space's retained message backlog (chat, optionally DMs). Privileged — the
|
|
223
443
|
* manager mints its own "manager" creds (same as `cotal history clear`); regular agents are
|
|
224
444
|
* denied STREAM.PURGE under auth. Cleanup only: leaves live agents and the TASK queue alone. */
|
|
225
|
-
async opPurge(args) {
|
|
445
|
+
async opPurge(args, _caller) {
|
|
226
446
|
const includeDms = args.includeDms === true;
|
|
227
447
|
try {
|
|
228
448
|
const creds = this.auth ? await mintCreds(this.auth, newIdentity(), "manager") : undefined;
|
|
@@ -239,8 +459,15 @@ export class Manager {
|
|
|
239
459
|
}
|
|
240
460
|
}
|
|
241
461
|
/** Persist a peer-defined persona as config. After this, `start name` auto-discovers
|
|
242
|
-
* .cotal/agents/<name>.md and the connector applies its persona/model at spawn.
|
|
243
|
-
|
|
462
|
+
* .cotal/agents/<name>.md and the connector applies its persona/model at spawn.
|
|
463
|
+
*
|
|
464
|
+
* CONTENT vs POLICY (P6): the write path accepts ONLY content from args — {name, model,
|
|
465
|
+
* persona}. role/publish/capabilities/owner are POLICY and have no slot here, so a peer can
|
|
466
|
+
* never grant itself a capability or claim ownership by redefining. A fresh name is created with
|
|
467
|
+
* owner = caller (the creator). Redefining an EXISTING file overwrites ONLY model + persona and
|
|
468
|
+
* preserves everything else — and is allowed on the privileged tier only if `file.owner == caller`,
|
|
469
|
+
* else admin is required. Fail-closed: an ownerless file (legacy / operator-written) is admin-only. */
|
|
470
|
+
opDefinePersona(args, caller, admin) {
|
|
244
471
|
const name = String(args.name ?? "").trim();
|
|
245
472
|
if (!name)
|
|
246
473
|
return { ok: false, error: "name required" };
|
|
@@ -250,13 +477,31 @@ export class Manager {
|
|
|
250
477
|
const persona = String(args.persona ?? "").trim();
|
|
251
478
|
if (!persona)
|
|
252
479
|
return { ok: false, error: "persona required" };
|
|
253
|
-
const
|
|
254
|
-
name,
|
|
255
|
-
role: args.role ? String(args.role) : undefined,
|
|
256
|
-
model: args.model ? String(args.model) : undefined,
|
|
257
|
-
persona,
|
|
258
|
-
};
|
|
480
|
+
const model = args.model ? String(args.model) : undefined;
|
|
259
481
|
const path = agentFilePath(this.workspaceRoot, name);
|
|
482
|
+
let def;
|
|
483
|
+
if (existsSync(path)) {
|
|
484
|
+
// Redefine: load, authorize by ownership, then overwrite ONLY content; preserve all policy.
|
|
485
|
+
try {
|
|
486
|
+
def = loadAgentFile(path);
|
|
487
|
+
}
|
|
488
|
+
catch (e) {
|
|
489
|
+
return { ok: false, error: e.message };
|
|
490
|
+
}
|
|
491
|
+
if (!admin && def.owner !== caller) {
|
|
492
|
+
const owner = def.owner ? `owned by ${def.owner}` : "operator-owned (legacy file — no agent owner)";
|
|
493
|
+
return { ok: false, error: `not authorized to redefine ${name}: ${owner}; only its owner or an operator can` };
|
|
494
|
+
}
|
|
495
|
+
// PATCH content: overwrite model only when provided, so a persona-only redefine can't wipe an existing model.
|
|
496
|
+
if (model !== undefined)
|
|
497
|
+
def.model = model;
|
|
498
|
+
def.persona = persona;
|
|
499
|
+
}
|
|
500
|
+
else {
|
|
501
|
+
// Fresh name: create with content + owner = caller. The privileged tier suffices (creating a
|
|
502
|
+
// brand-new persona isn't admin-only); the creator becomes its owner.
|
|
503
|
+
def = { name, model, persona, owner: caller };
|
|
504
|
+
}
|
|
260
505
|
try {
|
|
261
506
|
saveAgentFile(path, def);
|
|
262
507
|
}
|
|
@@ -265,11 +510,16 @@ export class Manager {
|
|
|
265
510
|
}
|
|
266
511
|
return { ok: true, data: { name, path } };
|
|
267
512
|
}
|
|
268
|
-
opAttach(args) {
|
|
513
|
+
opAttach(args, caller, admin) {
|
|
269
514
|
const name = String(args.name ?? "").trim();
|
|
270
515
|
const a = this.agents.get(name);
|
|
271
516
|
if (!a)
|
|
272
517
|
return { ok: false, error: `no agent "${name}"` };
|
|
518
|
+
// attach grants terminal read+write — same own/admin scoping as despawn: own child on the
|
|
519
|
+
// privileged tier, any agent on admin.
|
|
520
|
+
const denied = this.authorizeNamed(a, caller, admin);
|
|
521
|
+
if (denied)
|
|
522
|
+
return { ok: false, error: denied };
|
|
273
523
|
// Only pty streams over the WS attach endpoint. tmux/cmux are watched natively, and
|
|
274
524
|
// each handle's attach() throws with the right per-runtime guidance (tmux attach … /
|
|
275
525
|
// switch to the cmux tab) — surface that instead of assuming tmux.
|
package/dist/manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty.d.ts","sourceRoot":"","sources":["../../src/runtime/pty.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAiB,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"pty.d.ts","sourceRoot":"","sources":["../../src/runtime/pty.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAiB,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAkBtF;;;;;GAKG;AACH,qBAAa,UAAW,YAAW,OAAO;IACxC,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAE/B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW;CAkGhE"}
|
package/dist/runtime/pty.js
CHANGED
|
@@ -3,19 +3,17 @@ const DEFAULT_COLS = 120;
|
|
|
3
3
|
const DEFAULT_ROWS = 32;
|
|
4
4
|
/** How much terminal output to retain for late-attach scrollback replay. */
|
|
5
5
|
const SCROLLBACK_BYTES = 256 * 1024;
|
|
6
|
-
/**
|
|
7
|
-
|
|
6
|
+
/** Spacing between auto-confirm Enter presses, and how many to send. Claude's startup gates
|
|
7
|
+
* (workspace-trust, then the dev-channels warning) each wait for Enter and neither has a headless
|
|
8
|
+
* override. The count is variable — a fresh folder shows both, a re-launch on a now-trusted folder
|
|
9
|
+
* shows only the channels gate — and each gate's screen is static once rendered, so we don't match
|
|
10
|
+
* text or count prompts: press Enter blindly a few times, spaced so each press lands on the next
|
|
11
|
+
* gate and a dropped press is retried. Both gates default-highlight "proceed", so Enter accepts the
|
|
12
|
+
* safe option; any extra press lands on Claude's empty input as a no-op. */
|
|
13
|
+
const CONFIRM_INTERVAL_MS = 1_000;
|
|
14
|
+
const MAX_CONFIRMS = 5;
|
|
8
15
|
/** Grace window for a clean exit before a graceful stop escalates to SIGKILL. */
|
|
9
16
|
const GRACE_MS = 3_000;
|
|
10
|
-
/** Strip ANSI control sequences and whitespace so a confirm prompt matches regardless
|
|
11
|
-
* of how a TUI positions its text (cursor moves between words, not spaces). */
|
|
12
|
-
function normalizeForMatch(s) {
|
|
13
|
-
return s
|
|
14
|
-
.replace(/\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g, "") // OSC
|
|
15
|
-
.replace(/\x1b\[[0-9;?]*[ -/]*[@-~]/g, "") // CSI
|
|
16
|
-
.replace(/\x1b[@-Z\\-_]/g, "") // other escapes
|
|
17
|
-
.replace(/\s+/g, "");
|
|
18
|
-
}
|
|
19
17
|
/**
|
|
20
18
|
* The default runtime: the manager spawns the agent in a pseudo-terminal it owns
|
|
21
19
|
* via `@lydell/node-pty`. A real native TUI — the manager keeps full OS-signal
|
|
@@ -30,7 +28,11 @@ export class PtyRuntime {
|
|
|
30
28
|
cols: DEFAULT_COLS,
|
|
31
29
|
rows: DEFAULT_ROWS,
|
|
32
30
|
cwd,
|
|
33
|
-
|
|
31
|
+
// P3: pass ONLY the connector-declared env (OS allow-list + identity + named model key) —
|
|
32
|
+
// never `...process.env`. The operator's unrelated secrets (AWS/GH/other service keys) don't
|
|
33
|
+
// bleed into the child. `spec.env ?? {}` so a connector that forgets env fails loud (no
|
|
34
|
+
// PATH) instead of silently inheriting the manager's env.
|
|
35
|
+
env: spec.env ?? {},
|
|
34
36
|
});
|
|
35
37
|
const dataSubs = new Set();
|
|
36
38
|
const exitSubs = new Set();
|
|
@@ -39,13 +41,21 @@ export class PtyRuntime {
|
|
|
39
41
|
let alive = true;
|
|
40
42
|
let cols = DEFAULT_COLS;
|
|
41
43
|
let rows = DEFAULT_ROWS;
|
|
42
|
-
//
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
let
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
// Clear Claude's startup gates (workspace-trust, dev-channels warning) by pressing Enter on a
|
|
45
|
+
// timer during the startup window — see CONFIRM_INTERVAL_MS for why this is blind, not output-
|
|
46
|
+
// driven. A spawn that opts in sets `spec.confirm` truthy.
|
|
47
|
+
let confirmTimer;
|
|
48
|
+
if (spec.confirm) {
|
|
49
|
+
let presses = 0;
|
|
50
|
+
confirmTimer = setInterval(() => {
|
|
51
|
+
if (!alive || presses++ >= MAX_CONFIRMS) {
|
|
52
|
+
clearInterval(confirmTimer);
|
|
53
|
+
confirmTimer = undefined;
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
proc.write("\r");
|
|
57
|
+
}, CONFIRM_INTERVAL_MS);
|
|
58
|
+
}
|
|
49
59
|
proc.onData((d) => {
|
|
50
60
|
const b = Buffer.from(d, "utf8");
|
|
51
61
|
ring.push(b);
|
|
@@ -53,20 +63,13 @@ export class PtyRuntime {
|
|
|
53
63
|
while (ringBytes > SCROLLBACK_BYTES && ring.length > 1) {
|
|
54
64
|
ringBytes -= ring.shift().length;
|
|
55
65
|
}
|
|
56
|
-
if (confirmArmed) {
|
|
57
|
-
confirmBuf = (confirmBuf + d).slice(-8192);
|
|
58
|
-
if (normalizeForMatch(confirmBuf).includes(confirmTarget)) {
|
|
59
|
-
confirmArmed = false;
|
|
60
|
-
// Let the TUI finish wiring up its raw-mode input loop (it may flush
|
|
61
|
-
// stdin on init) before pressing Enter, or the keypress is dropped.
|
|
62
|
-
setTimeout(() => alive && proc.write("\r"), 500);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
66
|
for (const fn of dataSubs)
|
|
66
67
|
fn(b);
|
|
67
68
|
});
|
|
68
69
|
proc.onExit(() => {
|
|
69
70
|
alive = false;
|
|
71
|
+
if (confirmTimer)
|
|
72
|
+
clearInterval(confirmTimer);
|
|
70
73
|
for (const fn of exitSubs)
|
|
71
74
|
fn();
|
|
72
75
|
});
|
package/dist/runtime/pty.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty.js","sourceRoot":"","sources":["../../src/runtime/pty.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAGxC,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,4EAA4E;AAC5E,MAAM,gBAAgB,GAAG,GAAG,GAAG,IAAI,CAAC;AACpC
|
|
1
|
+
{"version":3,"file":"pty.js","sourceRoot":"","sources":["../../src/runtime/pty.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../../src/runtime/tmux.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEvE,wBAAgB,aAAa,IAAI,OAAO,CAOvC;AA6BD;;;;;GAKG;AACH,qBAAa,WAAY,YAAW,OAAO;IAG7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;gBAEH,OAAO,EAAE,MAAM;IAE5C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW;
|
|
1
|
+
{"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../../src/runtime/tmux.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEvE,wBAAgB,aAAa,IAAI,OAAO,CAOvC;AA6BD;;;;;GAKG;AACH,qBAAa,WAAY,YAAW,OAAO;IAG7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;gBAEH,OAAO,EAAE,MAAM;IAE5C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW;CAiDhE"}
|
package/dist/runtime/tmux.js
CHANGED
|
@@ -51,8 +51,12 @@ export class TmuxRuntime {
|
|
|
51
51
|
stdio: "ignore",
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
// P3: `env -i` clears the tmux server's inherited env (the manager's env), then we set ONLY
|
|
55
|
+
// the connector-declared env (OS allow-list + identity + named model key) — the operator's
|
|
56
|
+
// unrelated secrets don't bleed into the window. paneCommand handles env entries; here we
|
|
57
|
+
// prefix with `env -i`.
|
|
58
|
+
const envPrefix = ["-i", ...Object.entries(spec.env ?? {}).map(([k, v]) => `${k}=${shellQuote(v)}`)];
|
|
59
|
+
const cmd = ["env", ...envPrefix, spec.command, ...spec.args.map(shellQuote)].join(" ");
|
|
56
60
|
execFileSync("tmux", ["new-window", "-t", this.session, "-n", name, "-c", cwd, cmd], { stdio: "ignore" });
|
|
57
61
|
const target = `${this.session}:${name}`;
|
|
58
62
|
return {
|
package/dist/runtime/tmux.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/runtime/tmux.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC;QACH,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,MAAM,QAAQ,GAAG,KAAK,CAAC;AAEvB,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AACzC,CAAC;AAED,SAAS,UAAU,CAAC,OAAe;IACjC,IAAI,CAAC;QACH,YAAY,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,IAAY;IAChD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAC5E,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IAGO;IAFpB,IAAI,GAAG,MAAe,CAAC;IAEhC,YAA6B,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAEhD,KAAK,CAAC,IAAY,EAAE,IAAgB,EAAE,GAAW;QAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,YAAY,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE;gBACzE,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/runtime/tmux.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cotal-ai/manager",
|
|
3
|
-
"
|
|
3
|
+
"description": "Cotal agent supervisor: spawns and manages mesh nodes via a pluggable runtime (pty/tmux/cmux).",
|
|
4
|
+
"version": "0.4.0",
|
|
4
5
|
"license": "Apache-2.0",
|
|
5
6
|
"repository": {
|
|
6
7
|
"type": "git",
|
|
@@ -23,10 +24,11 @@
|
|
|
23
24
|
"@xterm/xterm": "^5.5.0",
|
|
24
25
|
"ws": "^8.21.0",
|
|
25
26
|
"yaml": "^2.9.0",
|
|
26
|
-
"@cotal-ai/core": "0.
|
|
27
|
+
"@cotal-ai/core": "0.4.0"
|
|
27
28
|
},
|
|
28
29
|
"devDependencies": {
|
|
29
|
-
"@types/ws": "^8.18.1"
|
|
30
|
+
"@types/ws": "^8.18.1",
|
|
31
|
+
"@cotal-ai/connector-core": "0.4.0"
|
|
30
32
|
},
|
|
31
33
|
"files": [
|
|
32
34
|
"dist"
|