@cotal-ai/manager 0.3.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/dist/commands.js +32 -7
- package/dist/commands.js.map +1 -1
- package/dist/manager.d.ts +85 -4
- package/dist/manager.d.ts.map +1 -1
- package/dist/manager.js +379 -87
- package/dist/manager.js.map +1 -1
- package/dist/runtime/pty.d.ts.map +1 -1
- package/dist/runtime/pty.js +5 -1
- 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,100 @@ 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
|
+
/** Plane-3 durable JOIN (SPEC §8): privileged-write the caller's `durable-active` membership for ONE
|
|
70
|
+
* concrete channel + run activation catch-up. The caller is the authenticated id (non-forgeable in
|
|
71
|
+
* auth), so this only ever resolves to its own managed entry; an unmanaged caller gets a loud error.
|
|
72
|
+
* Validation: valid + concrete channel, ⊆ allowSubscribe. Durable membership is per-concrete-channel
|
|
73
|
+
* (a wildcard ACL grants live breadth + concrete-durable-opt-in, never wildcard-durable). The KV
|
|
74
|
+
* write + cursors + catch-up run with the manager's privileged creds. */
|
|
75
|
+
private opDurableJoin;
|
|
76
|
+
/** Plane-3 durable LEAVE (SPEC §7 leave = hard read boundary for the backstop): tombstone the
|
|
77
|
+
* caller's membership at the leave cursor. A pre-leave entry stays deliverable; `seq > leaveCursor`
|
|
78
|
+
* is denied at the trusted reader. Fail-closed: same validation as join, and a finite `generation`
|
|
79
|
+
* (the caller's join epoch) is REQUIRED — a leave omitting it could otherwise tombstone a newer
|
|
80
|
+
* rejoin via the exposed self-service op (the stale-leave primitive). */
|
|
81
|
+
private opDurableLeave;
|
|
82
|
+
/** Plane-3 self-service: the caller's CURRENT (activated, non-tombstoned) durable memberships as
|
|
83
|
+
* `{channel, generation}`, so a freshly connected agent can hydrate its leave-generation mirror for
|
|
84
|
+
* BOOT durable channels — the agent holds no read on the privileged members KV. Strictly own-scoped:
|
|
85
|
+
* the op takes no owner arg and reads `callerId` (authenticated, non-forgeable), so it can only ever
|
|
86
|
+
* return the caller's own records. Read-only. */
|
|
87
|
+
private opListMemberships;
|
|
88
|
+
/** Drop a live agent's slot. When `floor` is set and the agent died young (lived less than
|
|
89
|
+
* MIN_LIFETIME), push a cooling stamp so the freed slot still counts toward the ceiling until it
|
|
90
|
+
* expires — flooring the RECYCLE, not the call, so both free paths (despawn + exit/reap) are
|
|
91
|
+
* covered (P4c). Floor self + own-child despawn and natural exit; NEVER admin despawn (operator
|
|
92
|
+
* emergency-kill stays unthrottled) and NEVER the reserved-rollback path (no cold-start paid). */
|
|
93
|
+
private freeSlot;
|
|
94
|
+
/** Reap a parent's children on its exit (P4b): stop + free every agent whose `spawner` is the
|
|
95
|
+
* exited agent's id, so orphans don't ratchet the ceiling shut. Recursive — a reaped child's
|
|
96
|
+
* own children are reaped too. Exit-driven, so each freed slot is rate-floored like a despawn. */
|
|
97
|
+
private reapChildrenOf;
|
|
98
|
+
/** A managed agent's process exited on its own (crash, /exit, finished). Free its slot
|
|
99
|
+
* (rate-floored — exit-driven churn counts) and reap any children it spawned. Idempotent via
|
|
100
|
+
* freeSlot's identity guard, so a later graceful-stop SIGKILL firing exit again is a no-op. */
|
|
101
|
+
private onAgentExit;
|
|
48
102
|
/** Agent names become `.cotal/agents/<name>.md` paths and mesh identities, so they must be bare
|
|
49
103
|
* tokens, never a path — blocks traversal / arbitrary writes from a model-supplied name. */
|
|
50
104
|
private nameError;
|
|
105
|
+
/** First free name in the series `base`, `base-2`, `base-3`, … — checked against both live and
|
|
106
|
+
* in-flight (reserved) slots. Lets a colliding spawn auto-number instead of being rejected, so
|
|
107
|
+
* callers never have to invent a unique name. */
|
|
108
|
+
private uniqueName;
|
|
51
109
|
/** Spawn a teammate by name (loads `.cotal/agents/<name>.md`), as if a peer asked via the
|
|
52
110
|
* control plane. Used to pre-spawn the demo's experts at startup so the manager owns them. */
|
|
53
111
|
startByName(name: string): Promise<ControlReply>;
|
|
54
112
|
/** 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.
|
|
113
|
+
* Lets the pre-spawn loop stagger heavy agent cold-starts so they don't all boot at once.
|
|
114
|
+
* Best-effort, keyed on the manager-owned (auto-numbered, unique) spawn name — NOT identity
|
|
115
|
+
* resolution: a same-named *unmanaged* peer already present could satisfy this early. That's
|
|
116
|
+
* acceptable for cold-start staggering; it never routes anything. */
|
|
56
117
|
waitForPresence(name: string, timeoutMs?: number): Promise<boolean>;
|
|
57
118
|
/** Parse an untyped control-plane `start` request into {@link StartAgentOpts}. */
|
|
58
119
|
private opStart;
|
|
59
120
|
/** Spawn and supervise one agent. The single spawn path: both the control-plane
|
|
60
121
|
* `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
|
-
|
|
122
|
+
* resolves the agent file, launches via the connector + runtime, and records the handle.
|
|
123
|
+
* `spawner` is the authenticated id of the peer that requested the spawn (`req.from.id`),
|
|
124
|
+
* defaulting to the manager's own id for roster/pre-spawn — recorded for the spawner
|
|
125
|
+
* ledger (own-children despawn + reap-on-parent-exit). */
|
|
126
|
+
startAgent(opts: StartAgentOpts, spawner?: string): Promise<ControlReply>;
|
|
127
|
+
/** Subscribe to a managed agent's process-exit so a self-driven exit frees its slot and reaps
|
|
128
|
+
* its children (P4b/P4c). Only pty streams exit (via the attach session's `onExit`); tmux/cmux
|
|
129
|
+
* attach() throws, so this is a no-op there — a self-EXITED agent under those runtimes is reaped
|
|
130
|
+
* by nothing until it's explicitly despawned (graceful-stop runs on despawn, not self-exit). The
|
|
131
|
+
* cap still holds (a lingering corpse counts toward it); runtime-agnostic exit-reaping (a real
|
|
132
|
+
* per-runtime `status()` → exited-sweep at the availability gate) is a tracked follow-up. */
|
|
133
|
+
private watchExit;
|
|
134
|
+
/** Prune expired cooling stamps (drop those at/before now) and return the live count — the
|
|
135
|
+
* recycle floor's contribution to the ceiling (P4c). Lazy: pruned only when the gate consults it. */
|
|
136
|
+
private coolingCount;
|
|
63
137
|
private opStop;
|
|
64
138
|
/** Purge the space's retained message backlog (chat, optionally DMs). Privileged — the
|
|
65
139
|
* manager mints its own "manager" creds (same as `cotal history clear`); regular agents are
|
|
66
140
|
* denied STREAM.PURGE under auth. Cleanup only: leaves live agents and the TASK queue alone. */
|
|
67
141
|
private opPurge;
|
|
68
142
|
/** 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.
|
|
143
|
+
* .cotal/agents/<name>.md and the connector applies its persona/model at spawn.
|
|
144
|
+
*
|
|
145
|
+
* CONTENT vs POLICY (P6): the write path accepts ONLY content from args — {name, model,
|
|
146
|
+
* persona}. role/publish/capabilities/owner are POLICY and have no slot here, so a peer can
|
|
147
|
+
* never grant itself a capability or claim ownership by redefining. A fresh name is created with
|
|
148
|
+
* owner = caller (the creator). Redefining an EXISTING file overwrites ONLY model + persona and
|
|
149
|
+
* preserves everything else — and is allowed on the privileged tier only if `file.owner == caller`,
|
|
150
|
+
* else admin is required. Fail-closed: an ownerless file (legacy / operator-written) is admin-only. */
|
|
70
151
|
private opDefinePersona;
|
|
71
152
|
private opAttach;
|
|
72
153
|
/** 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":"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"}
|
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, isConcreteChannel, loadAgentFile, loadCotalConfig, loadSpaceAuth, mintCreds, newIdentity, provisionAgent, registry, saveAgentFile, subjectMatches, 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,77 @@ 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));
|
|
94
|
+
// Plane-3 (SPEC §8): host the fan-out writer + trusted reader. The reader re-authorizes each
|
|
95
|
+
// durable-backstop entry against the owner's CURRENT read ACL — supplied from the managed set
|
|
96
|
+
// (the same `allowSubscribe` opDurableJoin/opDurableLeave validate against). Auth mode only.
|
|
97
|
+
if (this.auth)
|
|
98
|
+
await this.ep.startPlane3((id) => [...this.agents.values()].find((a) => a.id === id)?.allowSubscribe);
|
|
73
99
|
}
|
|
74
100
|
async stop() {
|
|
75
101
|
await this.ep.stop();
|
|
76
102
|
await this.attach.stop();
|
|
77
103
|
}
|
|
78
|
-
async handle(req) {
|
|
104
|
+
async handle(req, tier) {
|
|
79
105
|
const args = req.args ?? {};
|
|
106
|
+
// `req.from.id` is non-forgeable in auth mode: serveControl rejects any request whose payload
|
|
107
|
+
// `from.id` doesn't match the subject sender (endpoint.ts). In open mode there are no creds, so
|
|
108
|
+
// from.id is self-asserted — the spawner ledger + this routing are auth-mode guarantees,
|
|
109
|
+
// advisory in open mode (consistent with "open = single-trusted-host"). Thread it to every op
|
|
110
|
+
// so authz (P2c) and the spawner ledger (P4b) can act on it.
|
|
111
|
+
const caller = req.from.id;
|
|
112
|
+
const name = String(args.name ?? "").trim();
|
|
113
|
+
// Op↔tier binding — the real enforcement per the split. The cred gates WHO can reach each
|
|
114
|
+
// subject; this gates WHAT each subject will honor, fail-closed. A privileged op arriving on
|
|
115
|
+
// the self-service subject (publishable by all) must be rejected or the split does nothing.
|
|
116
|
+
if (tier === CONTROL_SELF_SERVICE) {
|
|
117
|
+
// Self-service honors self-ops only: a no-name stop (self-despawn) and Plane-3 durableJoin/
|
|
118
|
+
// durableLeave (the caller adding/removing its OWN durable backstop, within its allowSubscribe).
|
|
119
|
+
// Anything else — including a named stop (belongs on privileged/admin) — is a misroute, rejected.
|
|
120
|
+
if (req.op === "durableJoin")
|
|
121
|
+
return this.opDurableJoin(caller, args);
|
|
122
|
+
if (req.op === "durableLeave")
|
|
123
|
+
return this.opDurableLeave(caller, args);
|
|
124
|
+
if (req.op === "listMemberships")
|
|
125
|
+
return this.opListMemberships(caller);
|
|
126
|
+
if (req.op !== "stop")
|
|
127
|
+
return { ok: false, error: `op "${req.op}" not allowed on self-service control subject` };
|
|
128
|
+
if (name)
|
|
129
|
+
return { ok: false, error: "named stop not allowed on self-service subject; send it on the privileged subject" };
|
|
130
|
+
return this.opStopSelf(caller, args);
|
|
131
|
+
}
|
|
132
|
+
const admin = tier === CONTROL_ADMIN;
|
|
133
|
+
// Privileged + admin tiers. A no-name stop is a self-op and belongs on the self-service subject.
|
|
80
134
|
switch (req.op) {
|
|
81
135
|
case "start":
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
136
|
+
// Spawn is a privileged-tier op; reaching it via admin is fine (admin ⊇ privileged powers).
|
|
137
|
+
return this.opStart(args, caller);
|
|
138
|
+
case "stop": {
|
|
139
|
+
if (!name)
|
|
140
|
+
return { ok: false, error: "self-stop not allowed on privileged subject; send it on the self-service subject" };
|
|
141
|
+
return this.opStop(args, caller, admin);
|
|
142
|
+
}
|
|
85
143
|
case "definePersona":
|
|
86
|
-
return this.opDefinePersona(args);
|
|
144
|
+
return this.opDefinePersona(args, caller, admin);
|
|
87
145
|
case "purge":
|
|
88
|
-
|
|
146
|
+
// SECURITY: purge clears space history incl. DMs — admin-only. On the privileged tier any
|
|
147
|
+
// spawn-capable agent could wipe the space, so it must not be honored there.
|
|
148
|
+
if (!admin)
|
|
149
|
+
return { ok: false, error: "purge is admin-only; not allowed on the privileged subject" };
|
|
150
|
+
return this.opPurge(args, caller);
|
|
89
151
|
case "attach":
|
|
90
|
-
return this.opAttach(args);
|
|
152
|
+
return this.opAttach(args, caller, admin);
|
|
91
153
|
case "ps":
|
|
92
154
|
return { ok: true, data: this.list() };
|
|
93
155
|
case "status": {
|
|
94
|
-
const name = String(args.name ?? "");
|
|
95
156
|
const a = this.list().find((x) => x.name === name);
|
|
96
157
|
return a ? { ok: true, data: a } : { ok: false, error: `no agent "${name}"` };
|
|
97
158
|
}
|
|
@@ -99,6 +160,133 @@ export class Manager {
|
|
|
99
160
|
return { ok: false, error: `unknown op: ${req.op}` };
|
|
100
161
|
}
|
|
101
162
|
}
|
|
163
|
+
/** Collapsed despawn/attach authorization (P4b). The caller already reached the privileged or
|
|
164
|
+
* admin tier (cred-gated). On the admin tier any named target is allowed (operator). On the
|
|
165
|
+
* privileged tier a named target is allowed ONLY if it's the caller's OWN child
|
|
166
|
+
* (`spawner == caller`) — so a spawn-capable peer can tear down what it spawned, never a peer's.
|
|
167
|
+
* Returns an error string when denied, `undefined` when allowed. */
|
|
168
|
+
authorizeNamed(target, caller, admin) {
|
|
169
|
+
if (admin)
|
|
170
|
+
return undefined;
|
|
171
|
+
if (target.spawner === caller)
|
|
172
|
+
return undefined;
|
|
173
|
+
return `not authorized: ${target.name} was not spawned by ${caller} (admin tier required)`;
|
|
174
|
+
}
|
|
175
|
+
/** Self-despawn (P2b): stop the managed agent whose id == the authenticated caller. The
|
|
176
|
+
* no-name self-op can only ever resolve to the caller's OWN managed entry (ids are unique
|
|
177
|
+
* per spawn + non-forgeable in auth mode), never a peer — so it's structurally incapable of
|
|
178
|
+
* hitting another agent. Non-managed callers (human CLI, the manager itself, observers) find
|
|
179
|
+
* no match and get a loud error, not a silent no-op. */
|
|
180
|
+
opStopSelf(callerId, args) {
|
|
181
|
+
const target = [...this.agents.values()].find((a) => a.id === callerId);
|
|
182
|
+
if (!target)
|
|
183
|
+
return { ok: false, error: `self-stop: caller ${callerId} is not a managed agent` };
|
|
184
|
+
const graceful = args.graceful !== false;
|
|
185
|
+
target.handle.stop({ graceful });
|
|
186
|
+
this.freeSlot(target, true); // self-despawn is rate-floored (recycle churn)
|
|
187
|
+
return { ok: true, data: { name: target.name, stopped: true, graceful } };
|
|
188
|
+
}
|
|
189
|
+
/** Plane-3 durable JOIN (SPEC §8): privileged-write the caller's `durable-active` membership for ONE
|
|
190
|
+
* concrete channel + run activation catch-up. The caller is the authenticated id (non-forgeable in
|
|
191
|
+
* auth), so this only ever resolves to its own managed entry; an unmanaged caller gets a loud error.
|
|
192
|
+
* Validation: valid + concrete channel, ⊆ allowSubscribe. Durable membership is per-concrete-channel
|
|
193
|
+
* (a wildcard ACL grants live breadth + concrete-durable-opt-in, never wildcard-durable). The KV
|
|
194
|
+
* write + cursors + catch-up run with the manager's privileged creds. */
|
|
195
|
+
async opDurableJoin(callerId, args) {
|
|
196
|
+
const target = [...this.agents.values()].find((a) => a.id === callerId);
|
|
197
|
+
if (!target)
|
|
198
|
+
return { ok: false, error: `durableJoin: caller ${callerId} is not an agent this manager spawned` };
|
|
199
|
+
const channel = typeof args.channel === "string" ? args.channel.trim() : "";
|
|
200
|
+
if (!channel)
|
|
201
|
+
return { ok: false, error: "durableJoin: channel must be a non-blank string" };
|
|
202
|
+
try {
|
|
203
|
+
assertValidChannel(channel);
|
|
204
|
+
}
|
|
205
|
+
catch (e) {
|
|
206
|
+
return { ok: false, error: e.message };
|
|
207
|
+
}
|
|
208
|
+
if (!isConcreteChannel(channel))
|
|
209
|
+
return { ok: false, error: `durableJoin: "${channel}" must be a concrete channel (durable membership is per-concrete-channel, not wildcard)` };
|
|
210
|
+
if (!channelInAllow(target.allowSubscribe, channel))
|
|
211
|
+
return { ok: false, error: `channel "${channel}" is not within allowSubscribe [${target.allowSubscribe.join(", ")}]` };
|
|
212
|
+
try {
|
|
213
|
+
return { ok: true, data: await this.ep.durableJoinFor(callerId, channel) };
|
|
214
|
+
}
|
|
215
|
+
catch (e) {
|
|
216
|
+
return { ok: false, error: e.message };
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/** Plane-3 durable LEAVE (SPEC §7 leave = hard read boundary for the backstop): tombstone the
|
|
220
|
+
* caller's membership at the leave cursor. A pre-leave entry stays deliverable; `seq > leaveCursor`
|
|
221
|
+
* is denied at the trusted reader. Fail-closed: same validation as join, and a finite `generation`
|
|
222
|
+
* (the caller's join epoch) is REQUIRED — a leave omitting it could otherwise tombstone a newer
|
|
223
|
+
* rejoin via the exposed self-service op (the stale-leave primitive). */
|
|
224
|
+
async opDurableLeave(callerId, args) {
|
|
225
|
+
const target = [...this.agents.values()].find((a) => a.id === callerId);
|
|
226
|
+
if (!target)
|
|
227
|
+
return { ok: false, error: `durableLeave: caller ${callerId} is not an agent this manager spawned` };
|
|
228
|
+
const channel = typeof args.channel === "string" ? args.channel.trim() : "";
|
|
229
|
+
if (!channel)
|
|
230
|
+
return { ok: false, error: "durableLeave: channel must be a non-blank string" };
|
|
231
|
+
try {
|
|
232
|
+
assertValidChannel(channel);
|
|
233
|
+
}
|
|
234
|
+
catch (e) {
|
|
235
|
+
return { ok: false, error: e.message };
|
|
236
|
+
}
|
|
237
|
+
if (!isConcreteChannel(channel))
|
|
238
|
+
return { ok: false, error: `durableLeave: "${channel}" must be a concrete channel` };
|
|
239
|
+
if (!channelInAllow(target.allowSubscribe, channel))
|
|
240
|
+
return { ok: false, error: `channel "${channel}" is not within allowSubscribe [${target.allowSubscribe.join(", ")}]` };
|
|
241
|
+
if (typeof args.generation !== "number" || !Number.isFinite(args.generation))
|
|
242
|
+
return { ok: false, error: "durableLeave: a finite generation is required (fail-closed stale-leave guard)" };
|
|
243
|
+
try {
|
|
244
|
+
await this.ep.durableLeaveFor(callerId, channel, args.generation);
|
|
245
|
+
}
|
|
246
|
+
catch (e) {
|
|
247
|
+
return { ok: false, error: e.message };
|
|
248
|
+
}
|
|
249
|
+
return { ok: true, data: { channel } };
|
|
250
|
+
}
|
|
251
|
+
/** Plane-3 self-service: the caller's CURRENT (activated, non-tombstoned) durable memberships as
|
|
252
|
+
* `{channel, generation}`, so a freshly connected agent can hydrate its leave-generation mirror for
|
|
253
|
+
* BOOT durable channels — the agent holds no read on the privileged members KV. Strictly own-scoped:
|
|
254
|
+
* the op takes no owner arg and reads `callerId` (authenticated, non-forgeable), so it can only ever
|
|
255
|
+
* return the caller's own records. Read-only. */
|
|
256
|
+
async opListMemberships(callerId) {
|
|
257
|
+
return { ok: true, data: { memberships: await this.ep.ownerMemberships(callerId) } };
|
|
258
|
+
}
|
|
259
|
+
/** Drop a live agent's slot. When `floor` is set and the agent died young (lived less than
|
|
260
|
+
* MIN_LIFETIME), push a cooling stamp so the freed slot still counts toward the ceiling until it
|
|
261
|
+
* expires — flooring the RECYCLE, not the call, so both free paths (despawn + exit/reap) are
|
|
262
|
+
* covered (P4c). Floor self + own-child despawn and natural exit; NEVER admin despawn (operator
|
|
263
|
+
* emergency-kill stays unthrottled) and NEVER the reserved-rollback path (no cold-start paid). */
|
|
264
|
+
freeSlot(a, floor) {
|
|
265
|
+
if (this.agents.get(a.name) !== a)
|
|
266
|
+
return; // already freed (exit raced despawn, etc.)
|
|
267
|
+
this.agents.delete(a.name);
|
|
268
|
+
if (floor && Date.now() - a.startedAt < MIN_LIFETIME)
|
|
269
|
+
this.cooling.push(a.startedAt + MIN_LIFETIME);
|
|
270
|
+
}
|
|
271
|
+
/** Reap a parent's children on its exit (P4b): stop + free every agent whose `spawner` is the
|
|
272
|
+
* exited agent's id, so orphans don't ratchet the ceiling shut. Recursive — a reaped child's
|
|
273
|
+
* own children are reaped too. Exit-driven, so each freed slot is rate-floored like a despawn. */
|
|
274
|
+
reapChildrenOf(parentId) {
|
|
275
|
+
for (const child of [...this.agents.values()]) {
|
|
276
|
+
if (child.spawner !== parentId)
|
|
277
|
+
continue;
|
|
278
|
+
child.handle.stop({ graceful: false });
|
|
279
|
+
this.freeSlot(child, true);
|
|
280
|
+
this.reapChildrenOf(child.id);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
/** A managed agent's process exited on its own (crash, /exit, finished). Free its slot
|
|
284
|
+
* (rate-floored — exit-driven churn counts) and reap any children it spawned. Idempotent via
|
|
285
|
+
* freeSlot's identity guard, so a later graceful-stop SIGKILL firing exit again is a no-op. */
|
|
286
|
+
onAgentExit(a) {
|
|
287
|
+
this.freeSlot(a, true);
|
|
288
|
+
this.reapChildrenOf(a.id);
|
|
289
|
+
}
|
|
102
290
|
/** Agent names become `.cotal/agents/<name>.md` paths and mesh identities, so they must be bare
|
|
103
291
|
* tokens, never a path — blocks traversal / arbitrary writes from a model-supplied name. */
|
|
104
292
|
nameError(name) {
|
|
@@ -106,13 +294,22 @@ export class Manager {
|
|
|
106
294
|
? undefined
|
|
107
295
|
: `unsafe name ${JSON.stringify(name)} (allowed: letters, digits, _ -)`;
|
|
108
296
|
}
|
|
297
|
+
/** First free name in the series `base`, `base-2`, `base-3`, … — checked against both live and
|
|
298
|
+
* in-flight (reserved) slots. Lets a colliding spawn auto-number instead of being rejected, so
|
|
299
|
+
* callers never have to invent a unique name. */
|
|
300
|
+
uniqueName(base) {
|
|
301
|
+
return firstFreeName(base, (n) => this.agents.has(n) || this.reserved.has(n));
|
|
302
|
+
}
|
|
109
303
|
/** Spawn a teammate by name (loads `.cotal/agents/<name>.md`), as if a peer asked via the
|
|
110
304
|
* control plane. Used to pre-spawn the demo's experts at startup so the manager owns them. */
|
|
111
305
|
async startByName(name) {
|
|
112
306
|
return this.startAgent({ name });
|
|
113
307
|
}
|
|
114
308
|
/** 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.
|
|
309
|
+
* Lets the pre-spawn loop stagger heavy agent cold-starts so they don't all boot at once.
|
|
310
|
+
* Best-effort, keyed on the manager-owned (auto-numbered, unique) spawn name — NOT identity
|
|
311
|
+
* resolution: a same-named *unmanaged* peer already present could satisfy this early. That's
|
|
312
|
+
* acceptable for cold-start staggering; it never routes anything. */
|
|
116
313
|
async waitForPresence(name, timeoutMs = 30_000) {
|
|
117
314
|
const deadline = Date.now() + timeoutMs;
|
|
118
315
|
while (Date.now() < deadline) {
|
|
@@ -123,106 +320,171 @@ export class Manager {
|
|
|
123
320
|
return false;
|
|
124
321
|
}
|
|
125
322
|
/** Parse an untyped control-plane `start` request into {@link StartAgentOpts}. */
|
|
126
|
-
opStart(args) {
|
|
323
|
+
opStart(args, caller) {
|
|
127
324
|
return this.startAgent({
|
|
128
325
|
name: String(args.name ?? "").trim(),
|
|
129
326
|
agent: args.agent ? String(args.agent) : undefined,
|
|
130
327
|
role: args.role ? String(args.role) : undefined,
|
|
131
328
|
config: args.config ? String(args.config) : undefined,
|
|
132
|
-
|
|
329
|
+
transcript: typeof args.transcript === "boolean" ? args.transcript : undefined,
|
|
330
|
+
}, caller);
|
|
133
331
|
}
|
|
134
332
|
/** Spawn and supervise one agent. The single spawn path: both the control-plane
|
|
135
333
|
* `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
|
-
|
|
334
|
+
* resolves the agent file, launches via the connector + runtime, and records the handle.
|
|
335
|
+
* `spawner` is the authenticated id of the peer that requested the spawn (`req.from.id`),
|
|
336
|
+
* defaulting to the manager's own id for roster/pre-spawn — recorded for the spawner
|
|
337
|
+
* ledger (own-children despawn + reap-on-parent-exit). */
|
|
338
|
+
async startAgent(opts, spawner) {
|
|
339
|
+
const base = opts.name.trim();
|
|
340
|
+
if (!base)
|
|
140
341
|
return { ok: false, error: "name required" };
|
|
141
|
-
const nameErr = this.nameError(
|
|
342
|
+
const nameErr = this.nameError(base);
|
|
142
343
|
if (nameErr)
|
|
143
344
|
return { ok: false, error: nameErr };
|
|
144
|
-
if (this.agents.has(name))
|
|
145
|
-
return { ok: false, error: `agent "${name}" already running` };
|
|
146
345
|
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;
|
|
346
|
+
// Synchronous availability gate (P4a/P4c) — the free-name pick and the reserve run in one tick
|
|
347
|
+
// BEFORE any await, so two concurrent spawns can't land on the same name (no TOCTOU between the
|
|
348
|
+
// pick and the reserve), and the ceiling can't be overshot by fan-out racing the provision await.
|
|
349
|
+
const cooling = this.coolingCount(); // prune expired stamps, then count live cooling slots
|
|
350
|
+
if (this.agents.size + this.reserved.size + cooling >= MAX_AGENTS)
|
|
351
|
+
return { ok: false, error: `at capacity (${MAX_AGENTS} agents incl. in-flight + cooling); despawn one or wait` };
|
|
352
|
+
// A taken name auto-numbers (reviewer → reviewer-2 → reviewer-3…) so callers never collide; the
|
|
353
|
+
// persona file is still discovered from the requested base name below, so reviewer-2 wears it.
|
|
354
|
+
// Deliberate semantics: this is create-new, not ensure-exists — a retried/redelivered identical
|
|
355
|
+
// spawn from the same caller yields a fresh numbered agent, not a no-op. Accepted (MAX_AGENTS
|
|
356
|
+
// bounds the blast radius). Follow-up: add a short per-(spawner,base,role) idempotency window if
|
|
357
|
+
// autonomous orchestration ever produces phantom spawns.
|
|
358
|
+
const name = this.uniqueName(base);
|
|
359
|
+
this.reserved.add(name);
|
|
166
360
|
try {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
361
|
+
// Resolve an agent file from the manager's own workspace — an explicit
|
|
362
|
+
// --config must exist; otherwise discover .cotal/agents/<name>.md if present.
|
|
363
|
+
let configPath;
|
|
364
|
+
if (opts.config) {
|
|
365
|
+
configPath = agentFilePath(this.workspaceRoot, opts.config);
|
|
366
|
+
if (!existsSync(configPath))
|
|
367
|
+
return { ok: false, error: `agent file not found: ${configPath}` };
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
const f = agentFilePath(this.workspaceRoot, base);
|
|
371
|
+
if (existsSync(f))
|
|
372
|
+
configPath = f;
|
|
373
|
+
}
|
|
374
|
+
// --role overrides the file; the file fills it in for bookkeeping otherwise.
|
|
375
|
+
let role = opts.role;
|
|
376
|
+
// A stable nkey identity assigned at spawn: the public key is the agent's card.id
|
|
377
|
+
// (threaded via COTAL_ID); the seed is retained to mint matching creds later.
|
|
378
|
+
const identity = newIdentity();
|
|
379
|
+
// The agent's read ACL, defaulted the same way the loader/provisioner do — retained on the
|
|
380
|
+
// managed record so the mediated join/leave op can validate channels ⊆ allowSubscribe.
|
|
381
|
+
let allowSubscribe = ["general"];
|
|
382
|
+
let handle;
|
|
383
|
+
try {
|
|
384
|
+
const connector = registry.resolve("connector", agent);
|
|
385
|
+
const def = configPath ? loadAgentFile(configPath) : undefined;
|
|
386
|
+
if (!role)
|
|
387
|
+
role = def?.role;
|
|
388
|
+
allowSubscribe = def?.allowSubscribe ?? def?.subscribe ?? ["general"];
|
|
389
|
+
// In auth mode, mint the agent's creds from the space signing key and write them where the
|
|
390
|
+
// spawned session reads them (COTAL_CREDS path). Open mesh → no creds. Read scope = the
|
|
391
|
+
// file's subscribe/allowSubscribe; post scope = its allowPublish (default-deny).
|
|
392
|
+
let credsPath;
|
|
393
|
+
if (this.auth) {
|
|
394
|
+
// Pre-create the agent's bind-only chat (+ DM + role TASK) durables and mint its scoped
|
|
395
|
+
// creds — the shared onboarding step (provisionAgent), the manager just supplies its
|
|
396
|
+
// own connected endpoint as the privileged provisioner.
|
|
397
|
+
const creds = await provisionAgent(this.ep, this.auth, identity, {
|
|
398
|
+
subscribe: def?.subscribe,
|
|
399
|
+
allowSubscribe,
|
|
400
|
+
allowPublish: def?.allowPublish,
|
|
401
|
+
role,
|
|
402
|
+
capabilities: def?.capabilities,
|
|
403
|
+
});
|
|
404
|
+
credsPath = join(authDir(this.workspaceRoot), "creds", `${name}.creds`);
|
|
405
|
+
mkdirSync(dirname(credsPath), { recursive: true });
|
|
406
|
+
writeFileSync(credsPath, creds, { mode: 0o600 });
|
|
407
|
+
}
|
|
408
|
+
// Personal MCP servers the operator opted to share with manager-spawned agents of this
|
|
409
|
+
// type (cotal config; default none → isolated, the memory-safe default this guards).
|
|
410
|
+
const mcpServers = connectorServers(loadCotalConfig(this.workspaceRoot), agent);
|
|
411
|
+
const spec = connector.buildLaunch({
|
|
412
|
+
space: this.space,
|
|
413
|
+
name,
|
|
181
414
|
role,
|
|
415
|
+
id: identity.id,
|
|
416
|
+
creds: credsPath,
|
|
417
|
+
servers: this.servers,
|
|
418
|
+
configPath,
|
|
419
|
+
transcript: opts.transcript,
|
|
420
|
+
mcpServers,
|
|
182
421
|
});
|
|
183
|
-
|
|
184
|
-
mkdirSync(dirname(credsPath), { recursive: true });
|
|
185
|
-
writeFileSync(credsPath, creds, { mode: 0o600 });
|
|
422
|
+
handle = this.runtime.spawn(name, spec, this.workspaceRoot);
|
|
186
423
|
}
|
|
187
|
-
|
|
188
|
-
|
|
424
|
+
catch (e) {
|
|
425
|
+
// Pre-set failure: the slot was never live, so no cold-start was paid — the reserved
|
|
426
|
+
// rollback (finally) is enough, no cooling stamp.
|
|
427
|
+
return { ok: false, error: e.message };
|
|
428
|
+
}
|
|
429
|
+
const managed = {
|
|
189
430
|
name,
|
|
190
431
|
role,
|
|
432
|
+
agent,
|
|
191
433
|
id: identity.id,
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
434
|
+
seed: identity.seed,
|
|
435
|
+
spawner: spawner ?? this.ep.ref().id,
|
|
436
|
+
startedAt: Date.now(),
|
|
437
|
+
handle,
|
|
438
|
+
allowSubscribe,
|
|
439
|
+
};
|
|
440
|
+
this.agents.set(name, managed);
|
|
441
|
+
// Wire the runtime exit signal so a natural exit (crash / /exit / finished) frees the slot
|
|
442
|
+
// (rate-floored) and reaps any children — keeps the ceiling from ratcheting shut with orphans.
|
|
443
|
+
this.watchExit(managed);
|
|
444
|
+
return { ok: true, data: { name, role, agent, id: identity.id, mode: handle.kind } };
|
|
197
445
|
}
|
|
198
|
-
|
|
199
|
-
|
|
446
|
+
finally {
|
|
447
|
+
this.reserved.delete(name);
|
|
200
448
|
}
|
|
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
449
|
}
|
|
212
|
-
|
|
450
|
+
/** Subscribe to a managed agent's process-exit so a self-driven exit frees its slot and reaps
|
|
451
|
+
* its children (P4b/P4c). Only pty streams exit (via the attach session's `onExit`); tmux/cmux
|
|
452
|
+
* attach() throws, so this is a no-op there — a self-EXITED agent under those runtimes is reaped
|
|
453
|
+
* by nothing until it's explicitly despawned (graceful-stop runs on despawn, not self-exit). The
|
|
454
|
+
* cap still holds (a lingering corpse counts toward it); runtime-agnostic exit-reaping (a real
|
|
455
|
+
* per-runtime `status()` → exited-sweep at the availability gate) is a tracked follow-up. */
|
|
456
|
+
watchExit(a) {
|
|
457
|
+
try {
|
|
458
|
+
a.handle.attach().onExit(() => this.onAgentExit(a));
|
|
459
|
+
}
|
|
460
|
+
catch {
|
|
461
|
+
/* runtime doesn't stream an exit signal (tmux/cmux) — nothing to wire */
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
/** Prune expired cooling stamps (drop those at/before now) and return the live count — the
|
|
465
|
+
* recycle floor's contribution to the ceiling (P4c). Lazy: pruned only when the gate consults it. */
|
|
466
|
+
coolingCount() {
|
|
467
|
+
const now = Date.now();
|
|
468
|
+
this.cooling = this.cooling.filter((stamp) => stamp > now);
|
|
469
|
+
return this.cooling.length;
|
|
470
|
+
}
|
|
471
|
+
opStop(args, caller, admin) {
|
|
213
472
|
const name = String(args.name ?? "").trim();
|
|
214
473
|
const a = this.agents.get(name);
|
|
215
474
|
if (!a)
|
|
216
475
|
return { ok: false, error: `no agent "${name}"` };
|
|
476
|
+
const denied = this.authorizeNamed(a, caller, admin);
|
|
477
|
+
if (denied)
|
|
478
|
+
return { ok: false, error: denied };
|
|
217
479
|
const graceful = args.graceful !== false;
|
|
218
480
|
a.handle.stop({ graceful });
|
|
219
|
-
this.
|
|
481
|
+
this.freeSlot(a, !admin); // own-child despawn is rate-floored; admin emergency-kill is not
|
|
220
482
|
return { ok: true, data: { name, stopped: true, graceful } };
|
|
221
483
|
}
|
|
222
484
|
/** Purge the space's retained message backlog (chat, optionally DMs). Privileged — the
|
|
223
485
|
* manager mints its own "manager" creds (same as `cotal history clear`); regular agents are
|
|
224
486
|
* denied STREAM.PURGE under auth. Cleanup only: leaves live agents and the TASK queue alone. */
|
|
225
|
-
async opPurge(args) {
|
|
487
|
+
async opPurge(args, _caller) {
|
|
226
488
|
const includeDms = args.includeDms === true;
|
|
227
489
|
try {
|
|
228
490
|
const creds = this.auth ? await mintCreds(this.auth, newIdentity(), "manager") : undefined;
|
|
@@ -239,8 +501,15 @@ export class Manager {
|
|
|
239
501
|
}
|
|
240
502
|
}
|
|
241
503
|
/** 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
|
-
|
|
504
|
+
* .cotal/agents/<name>.md and the connector applies its persona/model at spawn.
|
|
505
|
+
*
|
|
506
|
+
* CONTENT vs POLICY (P6): the write path accepts ONLY content from args — {name, model,
|
|
507
|
+
* persona}. role/publish/capabilities/owner are POLICY and have no slot here, so a peer can
|
|
508
|
+
* never grant itself a capability or claim ownership by redefining. A fresh name is created with
|
|
509
|
+
* owner = caller (the creator). Redefining an EXISTING file overwrites ONLY model + persona and
|
|
510
|
+
* preserves everything else — and is allowed on the privileged tier only if `file.owner == caller`,
|
|
511
|
+
* else admin is required. Fail-closed: an ownerless file (legacy / operator-written) is admin-only. */
|
|
512
|
+
opDefinePersona(args, caller, admin) {
|
|
244
513
|
const name = String(args.name ?? "").trim();
|
|
245
514
|
if (!name)
|
|
246
515
|
return { ok: false, error: "name required" };
|
|
@@ -250,13 +519,31 @@ export class Manager {
|
|
|
250
519
|
const persona = String(args.persona ?? "").trim();
|
|
251
520
|
if (!persona)
|
|
252
521
|
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
|
-
};
|
|
522
|
+
const model = args.model ? String(args.model) : undefined;
|
|
259
523
|
const path = agentFilePath(this.workspaceRoot, name);
|
|
524
|
+
let def;
|
|
525
|
+
if (existsSync(path)) {
|
|
526
|
+
// Redefine: load, authorize by ownership, then overwrite ONLY content; preserve all policy.
|
|
527
|
+
try {
|
|
528
|
+
def = loadAgentFile(path);
|
|
529
|
+
}
|
|
530
|
+
catch (e) {
|
|
531
|
+
return { ok: false, error: e.message };
|
|
532
|
+
}
|
|
533
|
+
if (!admin && def.owner !== caller) {
|
|
534
|
+
const owner = def.owner ? `owned by ${def.owner}` : "operator-owned (legacy file — no agent owner)";
|
|
535
|
+
return { ok: false, error: `not authorized to redefine ${name}: ${owner}; only its owner or an operator can` };
|
|
536
|
+
}
|
|
537
|
+
// PATCH content: overwrite model only when provided, so a persona-only redefine can't wipe an existing model.
|
|
538
|
+
if (model !== undefined)
|
|
539
|
+
def.model = model;
|
|
540
|
+
def.persona = persona;
|
|
541
|
+
}
|
|
542
|
+
else {
|
|
543
|
+
// Fresh name: create with content + owner = caller. The privileged tier suffices (creating a
|
|
544
|
+
// brand-new persona isn't admin-only); the creator becomes its owner.
|
|
545
|
+
def = { name, model, persona, owner: caller };
|
|
546
|
+
}
|
|
260
547
|
try {
|
|
261
548
|
saveAgentFile(path, def);
|
|
262
549
|
}
|
|
@@ -265,11 +552,16 @@ export class Manager {
|
|
|
265
552
|
}
|
|
266
553
|
return { ok: true, data: { name, path } };
|
|
267
554
|
}
|
|
268
|
-
opAttach(args) {
|
|
555
|
+
opAttach(args, caller, admin) {
|
|
269
556
|
const name = String(args.name ?? "").trim();
|
|
270
557
|
const a = this.agents.get(name);
|
|
271
558
|
if (!a)
|
|
272
559
|
return { ok: false, error: `no agent "${name}"` };
|
|
560
|
+
// attach grants terminal read+write — same own/admin scoping as despawn: own child on the
|
|
561
|
+
// privileged tier, any agent on admin.
|
|
562
|
+
const denied = this.authorizeNamed(a, caller, admin);
|
|
563
|
+
if (denied)
|
|
564
|
+
return { ok: false, error: denied };
|
|
273
565
|
// Only pty streams over the WS attach endpoint. tmux/cmux are watched natively, and
|
|
274
566
|
// each handle's attach() throws with the right per-runtime guidance (tmux attach … /
|
|
275
567
|
// 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;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;
|
|
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
|
@@ -28,7 +28,11 @@ export class PtyRuntime {
|
|
|
28
28
|
cols: DEFAULT_COLS,
|
|
29
29
|
rows: DEFAULT_ROWS,
|
|
30
30
|
cwd,
|
|
31
|
-
|
|
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 ?? {},
|
|
32
36
|
});
|
|
33
37
|
const dataSubs = new Set();
|
|
34
38
|
const exitSubs = new Set();
|
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;;;;;;6EAM6E;AAC7E,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAClC,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,iFAAiF;AACjF,MAAM,QAAQ,GAAG,KAAK,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,OAAO,UAAU;IACZ,IAAI,GAAG,KAAc,CAAC;IAE/B,KAAK,CAAC,IAAY,EAAE,IAAgB,EAAE,GAAW;QAC/C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;YAC9C,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,YAAY;YAClB,GAAG;YACH,
|
|
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.5.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.5.0"
|
|
27
28
|
},
|
|
28
29
|
"devDependencies": {
|
|
29
|
-
"@types/ws": "^8.18.1"
|
|
30
|
+
"@types/ws": "^8.18.1",
|
|
31
|
+
"@cotal-ai/connector-core": "0.5.0"
|
|
30
32
|
},
|
|
31
33
|
"files": [
|
|
32
34
|
"dist"
|