agent-rooms 0.1.7 → 0.2.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 +10 -4
- package/dist/bridge.js +76 -0
- package/dist/bridge.js.map +1 -0
- package/dist/config.js +28 -1
- package/dist/config.js.map +1 -1
- package/dist/dashboard/readiness.js +175 -30
- package/dist/dashboard/readiness.js.map +1 -1
- package/dist/dashboard/server.js +163 -10
- package/dist/dashboard/server.js.map +1 -1
- package/dist/dashboard/ui.js +156 -69
- package/dist/dashboard/ui.js.map +1 -1
- package/dist/hosts.js +113 -7
- package/dist/hosts.js.map +1 -1
- package/dist/listener.js +156 -6
- package/dist/listener.js.map +1 -1
- package/dist/socket.js +6 -3
- package/dist/socket.js.map +1 -1
- package/dist/spawn.js +117 -5
- package/dist/spawn.js.map +1 -1
- package/package.json +3 -3
- package/skill/agent-rooms/AGENTS.md +109 -40
- package/skill/agent-rooms/SKILL.md +166 -90
- package/skill/agent-rooms/references/etiquette.md +85 -49
- package/skill/agent-rooms/references/tools.md +627 -96
- package/skill/agent-rooms/references/troubleshooting.md +92 -50
package/dist/listener.js
CHANGED
|
@@ -5,10 +5,23 @@ import { platform } from "node:os";
|
|
|
5
5
|
import { loadConfig, saveConfig, sessionKey } from "./config.js";
|
|
6
6
|
import { listenerPost } from "./api.js";
|
|
7
7
|
import { getAdapter, isSkillInstalled } from "./hosts.js";
|
|
8
|
+
import { ensureClaudeMdBridge, writeRoomMd } from "./bridge.js";
|
|
8
9
|
import { runWake } from "./spawn.js";
|
|
9
10
|
import { DaemonSocket } from "./socket.js";
|
|
10
11
|
import { log } from "./log.js";
|
|
11
12
|
const HEARTBEAT_MS = 60_000;
|
|
13
|
+
// §5.5 — spawn-rate / concurrency caps. A wake storm (a malicious collaborator
|
|
14
|
+
// hammering @mentions, or a chatter loop) must not fork-bomb the machine or blow
|
|
15
|
+
// up model cost (#41). Caps sit far above any real workload; tune via env.
|
|
16
|
+
const MAX_CONCURRENT_SPAWNS = clampInt(process.env.AGENT_ROOMS_MAX_CONCURRENT_SPAWNS, 3, 1, 32);
|
|
17
|
+
const MAX_SPAWNS_PER_MIN = clampInt(process.env.AGENT_ROOMS_MAX_SPAWNS_PER_MIN, 20, 1, 600);
|
|
18
|
+
const RATE_WINDOW_MS = 60_000;
|
|
19
|
+
function clampInt(raw, fallback, min, max) {
|
|
20
|
+
const n = raw != null ? Number.parseInt(raw, 10) : NaN;
|
|
21
|
+
if (!Number.isFinite(n))
|
|
22
|
+
return fallback;
|
|
23
|
+
return Math.min(max, Math.max(min, n));
|
|
24
|
+
}
|
|
12
25
|
export class ListenerRuntime {
|
|
13
26
|
options;
|
|
14
27
|
config = null;
|
|
@@ -19,6 +32,15 @@ export class ListenerRuntime {
|
|
|
19
32
|
instanceIds = [];
|
|
20
33
|
instanceByAgentWorkspace = new Map();
|
|
21
34
|
bindingByInstanceId = new Map();
|
|
35
|
+
// §5.5 spawn caps: in-flight count + rolling window of recent spawn starts.
|
|
36
|
+
inFlightSpawns = 0;
|
|
37
|
+
recentSpawns = [];
|
|
38
|
+
// Spec3 §15.7 self-update hot-handoff: while draining we refuse NEW wakes but let
|
|
39
|
+
// in-flight runs finish — so a dashboard self-update never hard-kills a working agent.
|
|
40
|
+
draining = false;
|
|
41
|
+
// Running spawns keyed by agent target, so an owner stop can terminate the
|
|
42
|
+
// real process mid-run (consent model: "stop your agent, instantly").
|
|
43
|
+
running = new Map();
|
|
22
44
|
status = {
|
|
23
45
|
running: false,
|
|
24
46
|
cloudConnected: false,
|
|
@@ -47,8 +69,12 @@ export class ListenerRuntime {
|
|
|
47
69
|
if (config.bindings.length === 0) {
|
|
48
70
|
throw new Error("No agent bindings configured. Bind an agent to a workspace and room first.");
|
|
49
71
|
}
|
|
50
|
-
const
|
|
51
|
-
|
|
72
|
+
const activeBindings = config.bindings.filter((binding) => !config.pausedAgents.includes(binding.agent));
|
|
73
|
+
if (activeBindings.length === 0) {
|
|
74
|
+
throw new Error("All configured agent bindings are paused. Resume at least one agent before starting the listener.");
|
|
75
|
+
}
|
|
76
|
+
const agents = [...new Set(activeBindings.map((b) => b.agent))];
|
|
77
|
+
const instances = activeBindings.map((b) => ({
|
|
52
78
|
agent: b.agent,
|
|
53
79
|
workspace: b.workspace,
|
|
54
80
|
host: b.host,
|
|
@@ -74,7 +100,7 @@ export class ListenerRuntime {
|
|
|
74
100
|
}
|
|
75
101
|
this.instanceByAgentWorkspace = new Map();
|
|
76
102
|
this.bindingByInstanceId = new Map();
|
|
77
|
-
|
|
103
|
+
activeBindings.forEach((binding, index) => {
|
|
78
104
|
const instanceId = this.instanceIds[index];
|
|
79
105
|
if (!instanceId)
|
|
80
106
|
return;
|
|
@@ -87,6 +113,7 @@ export class ListenerRuntime {
|
|
|
87
113
|
platform: platform(),
|
|
88
114
|
agents,
|
|
89
115
|
onWake: (wake) => this.onWake(wake),
|
|
116
|
+
onStop: (target) => this.stopTarget(target),
|
|
90
117
|
onActivity: (activity) => this.onSocketActivity(activity)
|
|
91
118
|
});
|
|
92
119
|
this.socket.start();
|
|
@@ -126,8 +153,47 @@ export class ListenerRuntime {
|
|
|
126
153
|
this.emit("info", "Listener stopped.", "stopped");
|
|
127
154
|
return this.snapshot();
|
|
128
155
|
}
|
|
156
|
+
async restart(reason = "Restarting listener.") {
|
|
157
|
+
const wasRunning = this.status.running;
|
|
158
|
+
if (wasRunning) {
|
|
159
|
+
this.emit("info", reason, "restart");
|
|
160
|
+
await this.stop();
|
|
161
|
+
}
|
|
162
|
+
return await this.start();
|
|
163
|
+
}
|
|
164
|
+
/** Spec3 §15.7: stop taking new wakes and wait for in-flight runs to finish so a
|
|
165
|
+
* self-update hands off cleanly instead of hard-killing a working agent. The
|
|
166
|
+
* refused wakes stay queued server-side and deliver after the new version
|
|
167
|
+
* reconnects. Returns whether it drained before the timeout. */
|
|
168
|
+
async drain(timeoutMs = 90_000) {
|
|
169
|
+
this.draining = true;
|
|
170
|
+
this.emit("info", "Draining: refusing new wakes, waiting for in-flight runs to finish.", "drain_start");
|
|
171
|
+
const deadline = Date.now() + timeoutMs;
|
|
172
|
+
while (this.inFlightSpawns > 0 && Date.now() < deadline) {
|
|
173
|
+
await new Promise((r) => setTimeout(r, 500));
|
|
174
|
+
}
|
|
175
|
+
const remaining = this.inFlightSpawns;
|
|
176
|
+
this.emit(remaining === 0 ? "info" : "warn", remaining === 0 ? "Drained — no runs in flight." : `Drain timed out with ${remaining} run(s) still active.`, "drain_done");
|
|
177
|
+
return { drained: remaining === 0, remaining };
|
|
178
|
+
}
|
|
179
|
+
/** Abort a drain (update cancelled) and resume normal wake handling. */
|
|
180
|
+
resumeFromDrain() {
|
|
181
|
+
this.draining = false;
|
|
182
|
+
}
|
|
129
183
|
async onWake(wake) {
|
|
184
|
+
if (this.draining) {
|
|
185
|
+
// Draining for an update — don't start new work; the mention stays queued
|
|
186
|
+
// server-side and is delivered after the new version reconnects.
|
|
187
|
+
this.emit("info", `Draining for update; deferring wake for ${wake.target}.`, "wake_draining");
|
|
188
|
+
return { status: "error" };
|
|
189
|
+
}
|
|
130
190
|
const config = this.config ?? loadConfig();
|
|
191
|
+
if (config.pausedAgents.includes(wake.target)) {
|
|
192
|
+
const message = `${wake.target} is paused locally; ignoring wake.`;
|
|
193
|
+
log.warn(message);
|
|
194
|
+
this.emit("warn", message, "wake_paused");
|
|
195
|
+
return { status: "error" };
|
|
196
|
+
}
|
|
131
197
|
const binding = this.resolveBinding(config.bindings, wake);
|
|
132
198
|
if (!binding) {
|
|
133
199
|
const message = `No binding for ${wake.target}; ignoring wake.`;
|
|
@@ -142,15 +208,61 @@ export class ListenerRuntime {
|
|
|
142
208
|
this.emit("warn", message, "wake_no_adapter");
|
|
143
209
|
return { status: "error" };
|
|
144
210
|
}
|
|
211
|
+
// §5.5: refuse the spawn if we're over the concurrency or rate cap. This is
|
|
212
|
+
// the local brake on a wake storm — it returns an error rather than forking.
|
|
213
|
+
const throttle = this.spawnThrottleReason();
|
|
214
|
+
if (throttle) {
|
|
215
|
+
log.warn(throttle);
|
|
216
|
+
this.emit("warn", throttle, "wake_throttled");
|
|
217
|
+
return { status: "error" };
|
|
218
|
+
}
|
|
219
|
+
// Spec 05: deterministic instruction bridge + room pointer in the workspace,
|
|
220
|
+
// assembled from facts just before the agent runs. Best-effort — a write
|
|
221
|
+
// failure must never block the wake.
|
|
222
|
+
try {
|
|
223
|
+
if (binding.host === "claude_code") {
|
|
224
|
+
const bridge = ensureClaudeMdBridge(binding.workspace);
|
|
225
|
+
if (bridge.claudeMdAction === "created") {
|
|
226
|
+
this.emit("info", `Bridged AGENTS.md → CLAUDE.md (@import) in ${binding.workspace}.`, "bridge");
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
writeRoomMd({
|
|
230
|
+
roomId: wake.room,
|
|
231
|
+
selfPlate: wake.target,
|
|
232
|
+
workspace: binding.workspace,
|
|
233
|
+
roommates: (wake.context_messages ?? []).map((m) => m.from)
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
this.emit("warn", `workspace bridge/ROOM.md write failed: ${error.message}`, "bridge_failed");
|
|
238
|
+
}
|
|
145
239
|
const key = sessionKey(wake.target, binding.workspace);
|
|
146
240
|
const sessionId = wake.session_id ?? config.sessions[key];
|
|
147
241
|
const prompt = selectWakePrompt(wake, isSkillInstalled(adapter));
|
|
148
|
-
const
|
|
242
|
+
const env = binding.host === "codex" && config.hostTokens.codex
|
|
243
|
+
? { AGENT_ROOMS_TOKEN: config.hostTokens.codex }
|
|
244
|
+
: undefined;
|
|
245
|
+
// Register an abort handle so an owner stop can terminate this run mid-flight.
|
|
246
|
+
const abort = new AbortController();
|
|
247
|
+
this.trackSpawn(wake.target, abort);
|
|
248
|
+
this.inFlightSpawns += 1;
|
|
249
|
+
this.recentSpawns.push(Date.now());
|
|
250
|
+
let outcome;
|
|
251
|
+
try {
|
|
252
|
+
outcome = await runWake(adapter, { prompt, workspace: binding.workspace, sessionId, maxTurns: this.maxTurns, env }, undefined, abort.signal);
|
|
253
|
+
}
|
|
254
|
+
finally {
|
|
255
|
+
this.inFlightSpawns -= 1;
|
|
256
|
+
this.untrackSpawn(wake.target, abort);
|
|
257
|
+
}
|
|
149
258
|
if (outcome.sessionId) {
|
|
150
259
|
config.sessions[key] = outcome.sessionId;
|
|
151
260
|
saveConfig(config);
|
|
152
261
|
this.config = config;
|
|
153
262
|
}
|
|
263
|
+
// The wire protocol carries replied/timeout/error; an owner-stopped run
|
|
264
|
+
// reports as error (the run did not complete) while we log it as stopped.
|
|
265
|
+
const reported = outcome.status === "stopped" ? "error" : outcome.status;
|
|
154
266
|
const instanceId = wake.instance_id ?? this.instanceByAgentWorkspace.get(bindingKey(binding.agent, binding.workspace));
|
|
155
267
|
if (instanceId && config.device) {
|
|
156
268
|
await listenerPost(this.apiBase, config.device.token, {
|
|
@@ -159,12 +271,50 @@ export class ListenerRuntime {
|
|
|
159
271
|
id: rid(),
|
|
160
272
|
instance_id: instanceId,
|
|
161
273
|
room: wake.room,
|
|
162
|
-
status:
|
|
274
|
+
status: reported,
|
|
163
275
|
session_id: outcome.sessionId ?? undefined
|
|
164
276
|
}).catch((error) => this.emit("warn", `wake_result post failed: ${error.message}`, "wake_result_failed"));
|
|
165
277
|
}
|
|
166
278
|
this.emit(outcome.status === "error" ? "warn" : "info", `${adapter.name} wake finished with ${outcome.status}.`, "wake_finished");
|
|
167
|
-
return { status:
|
|
279
|
+
return { status: reported };
|
|
280
|
+
}
|
|
281
|
+
trackSpawn(target, abort) {
|
|
282
|
+
const set = this.running.get(target) ?? new Set();
|
|
283
|
+
set.add(abort);
|
|
284
|
+
this.running.set(target, set);
|
|
285
|
+
}
|
|
286
|
+
untrackSpawn(target, abort) {
|
|
287
|
+
const set = this.running.get(target);
|
|
288
|
+
if (!set)
|
|
289
|
+
return;
|
|
290
|
+
set.delete(abort);
|
|
291
|
+
if (set.size === 0)
|
|
292
|
+
this.running.delete(target);
|
|
293
|
+
}
|
|
294
|
+
/** Owner stop: abort every spawn currently running for this agent, which kills
|
|
295
|
+
* the real process tree (see runWake/terminateChild). Pausing prevents future
|
|
296
|
+
* wakes; this ends the one in flight. */
|
|
297
|
+
stopTarget(target) {
|
|
298
|
+
const set = this.running.get(target);
|
|
299
|
+
if (!set || set.size === 0)
|
|
300
|
+
return 0;
|
|
301
|
+
const count = set.size;
|
|
302
|
+
for (const abort of set)
|
|
303
|
+
abort.abort();
|
|
304
|
+
this.emit("warn", `Stopped ${count} running spawn(s) for ${target}.`, "spawn_stopped");
|
|
305
|
+
return count;
|
|
306
|
+
}
|
|
307
|
+
/** §5.5: returns a reason string if a spawn must be refused, else null. */
|
|
308
|
+
spawnThrottleReason() {
|
|
309
|
+
if (this.inFlightSpawns >= MAX_CONCURRENT_SPAWNS) {
|
|
310
|
+
return `Spawn refused: ${this.inFlightSpawns} agent run(s) already in flight (cap ${MAX_CONCURRENT_SPAWNS}).`;
|
|
311
|
+
}
|
|
312
|
+
const cutoff = Date.now() - RATE_WINDOW_MS;
|
|
313
|
+
this.recentSpawns = this.recentSpawns.filter((t) => t > cutoff);
|
|
314
|
+
if (this.recentSpawns.length >= MAX_SPAWNS_PER_MIN) {
|
|
315
|
+
return `Spawn refused: rate cap reached (${MAX_SPAWNS_PER_MIN}/min). Backing off.`;
|
|
316
|
+
}
|
|
317
|
+
return null;
|
|
168
318
|
}
|
|
169
319
|
resolveBinding(bindings, wake) {
|
|
170
320
|
if (wake.instance_id) {
|
package/dist/listener.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../src/listener.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../src/listener.ts"],"names":[],"mappings":"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"}
|
package/dist/socket.js
CHANGED
|
@@ -90,10 +90,13 @@ export class DaemonSocket {
|
|
|
90
90
|
}
|
|
91
91
|
break;
|
|
92
92
|
}
|
|
93
|
-
case "stop":
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
case "stop": {
|
|
94
|
+
const target = String(frame.target);
|
|
95
|
+
log.warn(`stop requested for ${target} (${String(frame.reason)})`);
|
|
96
|
+
this.opts.onStop?.(target); // terminate the running spawn, not just log it
|
|
97
|
+
this.opts.onActivity?.({ type: "stop", target, reason: String(frame.reason) });
|
|
96
98
|
break;
|
|
99
|
+
}
|
|
97
100
|
case "revoked":
|
|
98
101
|
log.error(`credential revoked (${String(frame.subject_type)}); shutting down`);
|
|
99
102
|
this.opts.onActivity?.({ type: "revoked", subjectType: String(frame.subject_type), subjectId: String(frame.subject_id) });
|
package/dist/socket.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../src/socket.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,iFAAiF;AACjF,+EAA+E;AAC/E,+EAA+E;AAC/E,mDAAmD;AAEnD,OAAO,SAAS,MAAM,IAAI,CAAC;AAC3B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../src/socket.ts"],"names":[],"mappings":"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"}
|
package/dist/spawn.js
CHANGED
|
@@ -2,9 +2,92 @@
|
|
|
2
2
|
// extract the session id (for resume), and bound it with a timeout. The agent's
|
|
3
3
|
// raw stream-json is NOT echoed to the terminal — we parse it and print a few
|
|
4
4
|
// clean progress lines instead (set AGENT_ROOMS_DEBUG=1 to see the raw stream).
|
|
5
|
-
import { spawn } from "node:child_process";
|
|
5
|
+
import { spawn, spawnSync } from "node:child_process";
|
|
6
6
|
import { log } from "./log.js";
|
|
7
|
+
// Terminate a spawned agent and the whole process tree it launched. This is the
|
|
8
|
+
// teeth behind "stop your agent": an owner's stop must end the real OS process,
|
|
9
|
+
// not just flip a status. On Windows the child is a shell that launched the agent
|
|
10
|
+
// CLI, so we kill the tree with taskkill /T; elsewhere SIGTERM then SIGKILL.
|
|
11
|
+
function terminateChild(child) {
|
|
12
|
+
const pid = child.pid;
|
|
13
|
+
if (pid == null) {
|
|
14
|
+
try {
|
|
15
|
+
child.kill("SIGKILL");
|
|
16
|
+
}
|
|
17
|
+
catch { /* already gone */ }
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (process.platform === "win32") {
|
|
21
|
+
try {
|
|
22
|
+
spawnSync("taskkill", ["/PID", String(pid), "/T", "/F"], { stdio: "ignore" });
|
|
23
|
+
}
|
|
24
|
+
catch { /* best-effort */ }
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
child.kill("SIGTERM");
|
|
29
|
+
}
|
|
30
|
+
catch { /* already gone */ }
|
|
31
|
+
// Escalate if it ignores SIGTERM. unref so the grace timer never holds the loop.
|
|
32
|
+
setTimeout(() => { try {
|
|
33
|
+
child.kill("SIGKILL");
|
|
34
|
+
}
|
|
35
|
+
catch { /* gone */ } }, 3000).unref();
|
|
36
|
+
}
|
|
7
37
|
const DEBUG = process.env.AGENT_ROOMS_DEBUG === "1";
|
|
38
|
+
// --- Tier-0 §3.2: environment scrubbing -------------------------------------
|
|
39
|
+
// A spawned agent driven by (possibly hostile) room content must NOT inherit the
|
|
40
|
+
// listener's secrets. We start from an empty environment and pass ONLY what the
|
|
41
|
+
// child needs to run and to do its job: OS/runtime essentials, the agent's own
|
|
42
|
+
// model auth, host config dirs, and the explicit per-spawn vars (room MCP token,
|
|
43
|
+
// task vars). Cloud keys (AWS/GCP/Azure/Cloudflare), API tokens, CI vars, and
|
|
44
|
+
// anything else are dropped — so a tricked agent that reads a secret has nothing
|
|
45
|
+
// of yours to read. Neutralizes the "inherited credentials" vector (#36; blunts
|
|
46
|
+
// #21/#29 exfil). Functionality preserved: the agent keeps its model login, its
|
|
47
|
+
// room tools, and its task inputs — it just can't see your infra credentials.
|
|
48
|
+
//
|
|
49
|
+
// Escape hatches (functionality first): set AGENT_ROOMS_SPAWN_ENV_PASSTHROUGH to
|
|
50
|
+
// a comma/space list of extra var names to allow, or AGENT_ROOMS_SPAWN_ENV_INHERIT=1
|
|
51
|
+
// to inherit the full environment (debugging only — defeats the control).
|
|
52
|
+
const ENV_ALLOW_EXACT = new Set([
|
|
53
|
+
// process + shell runtime essentials (without these, spawning breaks)
|
|
54
|
+
"PATH", "PATHEXT", "HOME", "USERPROFILE", "HOMEDRIVE", "HOMEPATH",
|
|
55
|
+
"SHELL", "COMSPEC", "SYSTEMROOT", "SYSTEMDRIVE", "WINDIR", "PWD",
|
|
56
|
+
"TEMP", "TMP", "TMPDIR", "LANG", "LANGUAGE", "LC_ALL", "LC_CTYPE", "TZ", "TERM",
|
|
57
|
+
"USER", "USERNAME", "LOGNAME", "NUMBER_OF_PROCESSORS", "PROCESSOR_ARCHITECTURE",
|
|
58
|
+
// config-dir roots host CLIs resolve against
|
|
59
|
+
"APPDATA", "LOCALAPPDATA", "PROGRAMDATA", "PROGRAMFILES", "PROGRAMFILES(X86)",
|
|
60
|
+
"PROGRAMW6432", "PUBLIC", "ALLUSERSPROFILE", "COMMONPROGRAMFILES",
|
|
61
|
+
// node / version managers (so `node`, nvm/fnm/volta-shimmed bins resolve)
|
|
62
|
+
"NODE", "NODE_PATH", "NVM_DIR", "FNM_DIR", "VOLTA_HOME", "ASDF_DIR",
|
|
63
|
+
].map((s) => s.toUpperCase()));
|
|
64
|
+
// Prefixes that carry the agent's OWN model auth / host config — intentionally
|
|
65
|
+
// passed (the agent must be able to call its model and read its own config), and
|
|
66
|
+
// nothing here is infra/cloud credentials.
|
|
67
|
+
const ENV_ALLOW_PREFIX = [
|
|
68
|
+
"ANTHROPIC_", "CLAUDE_", "OPENAI_", "XDG_", "AGENT_ROOMS_", "LC_",
|
|
69
|
+
].map((s) => s.toUpperCase());
|
|
70
|
+
/** Build the minimal, explicit environment for a spawned agent (§3.2). */
|
|
71
|
+
export function buildSpawnEnv(extra, source = process.env) {
|
|
72
|
+
if (source.AGENT_ROOMS_SPAWN_ENV_INHERIT === "1") {
|
|
73
|
+
return { ...source, ...(extra ?? {}) };
|
|
74
|
+
}
|
|
75
|
+
const passthrough = new Set((source.AGENT_ROOMS_SPAWN_ENV_PASSTHROUGH ?? "")
|
|
76
|
+
.split(/[,\s]+/)
|
|
77
|
+
.map((n) => n.trim().toUpperCase())
|
|
78
|
+
.filter(Boolean));
|
|
79
|
+
const out = {};
|
|
80
|
+
for (const [key, value] of Object.entries(source)) {
|
|
81
|
+
if (value == null)
|
|
82
|
+
continue;
|
|
83
|
+
const k = key.toUpperCase();
|
|
84
|
+
const allowed = ENV_ALLOW_EXACT.has(k) || passthrough.has(k) || ENV_ALLOW_PREFIX.some((p) => k.startsWith(p));
|
|
85
|
+
if (allowed)
|
|
86
|
+
out[key] = value;
|
|
87
|
+
}
|
|
88
|
+
// Explicit per-spawn vars (room MCP token, task vars) always win.
|
|
89
|
+
return { ...out, ...(extra ?? {}) };
|
|
90
|
+
}
|
|
8
91
|
// The room actions worth surfacing to the operator; everything else (thinking,
|
|
9
92
|
// workspace Read/Grep/Glob, tool results) is internal noise and stays hidden.
|
|
10
93
|
const TOOL_LABEL = {
|
|
@@ -37,8 +120,8 @@ function summarise(rawLine) {
|
|
|
37
120
|
}
|
|
38
121
|
}
|
|
39
122
|
}
|
|
40
|
-
export function runWake(adapter, spec, timeoutMs = 10 * 60 * 1000) {
|
|
41
|
-
const { command, args, cwd, stdin } = adapter.buildWake(spec);
|
|
123
|
+
export function runWake(adapter, spec, timeoutMs = 10 * 60 * 1000, signal) {
|
|
124
|
+
const { command, args, cwd, stdin, env } = adapter.buildWake(spec);
|
|
42
125
|
log.info(`spawn ${adapter.name}: ${command} ${args.filter((a) => !a.includes("\n")).slice(0, 6).join(" ")}… (cwd ${cwd})`);
|
|
43
126
|
const startedAt = Date.now();
|
|
44
127
|
return new Promise((resolve) => {
|
|
@@ -47,7 +130,14 @@ export function runWake(adapter, spec, timeoutMs = 10 * 60 * 1000) {
|
|
|
47
130
|
let settled = false;
|
|
48
131
|
const secs = () => Math.round((Date.now() - startedAt) / 1000);
|
|
49
132
|
// When the prompt rides stdin, open stdin as a pipe; otherwise ignore it.
|
|
50
|
-
|
|
133
|
+
// §3.2: spawn with a scrubbed, allowlisted environment — never the listener's
|
|
134
|
+
// full secret-bearing process.env.
|
|
135
|
+
const child = spawn(command, args, {
|
|
136
|
+
cwd,
|
|
137
|
+
env: buildSpawnEnv(env),
|
|
138
|
+
stdio: [stdin != null ? "pipe" : "ignore", "pipe", "pipe"],
|
|
139
|
+
shell: process.platform === "win32"
|
|
140
|
+
});
|
|
51
141
|
if (stdin != null && child.stdin) {
|
|
52
142
|
child.stdin.write(stdin);
|
|
53
143
|
child.stdin.end();
|
|
@@ -56,10 +146,30 @@ export function runWake(adapter, spec, timeoutMs = 10 * 60 * 1000) {
|
|
|
56
146
|
if (settled)
|
|
57
147
|
return;
|
|
58
148
|
settled = true;
|
|
149
|
+
signal?.removeEventListener("abort", onAbort);
|
|
59
150
|
log.warn(`${adapter.name} wake timed out after ${Math.round(timeoutMs / 1000)}s — killing`);
|
|
60
|
-
child
|
|
151
|
+
terminateChild(child);
|
|
61
152
|
resolve({ status: "timeout", sessionId: adapter.parseSessionId(buffer), code: null });
|
|
62
153
|
}, timeoutMs);
|
|
154
|
+
// Owner stop (a stop frame routed from the backend) aborts the signal; we end
|
|
155
|
+
// the real process tree, not just the run. This is the "stop your agent,
|
|
156
|
+
// instantly, even mid-task" guarantee.
|
|
157
|
+
function onAbort() {
|
|
158
|
+
if (settled)
|
|
159
|
+
return;
|
|
160
|
+
settled = true;
|
|
161
|
+
clearTimeout(timer);
|
|
162
|
+
log.warn(`${adapter.name} stopped by owner — terminating`);
|
|
163
|
+
terminateChild(child);
|
|
164
|
+
resolve({ status: "stopped", sessionId: adapter.parseSessionId(buffer), code: null });
|
|
165
|
+
}
|
|
166
|
+
if (signal) {
|
|
167
|
+
if (signal.aborted) {
|
|
168
|
+
onAbort();
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
172
|
+
}
|
|
63
173
|
child.stdout?.on("data", (chunk) => {
|
|
64
174
|
const text = chunk.toString("utf8");
|
|
65
175
|
buffer += text;
|
|
@@ -88,6 +198,7 @@ export function runWake(adapter, spec, timeoutMs = 10 * 60 * 1000) {
|
|
|
88
198
|
return;
|
|
89
199
|
settled = true;
|
|
90
200
|
clearTimeout(timer);
|
|
201
|
+
signal?.removeEventListener("abort", onAbort);
|
|
91
202
|
log.error(`${adapter.name} failed to spawn: ${err.message} (is "${command}" on PATH?)`);
|
|
92
203
|
resolve({ status: "error", sessionId: null, code: null });
|
|
93
204
|
});
|
|
@@ -96,6 +207,7 @@ export function runWake(adapter, spec, timeoutMs = 10 * 60 * 1000) {
|
|
|
96
207
|
return;
|
|
97
208
|
settled = true;
|
|
98
209
|
clearTimeout(timer);
|
|
210
|
+
signal?.removeEventListener("abort", onAbort);
|
|
99
211
|
const sessionId = adapter.parseSessionId(buffer);
|
|
100
212
|
const status = code === 0 ? "replied" : "error";
|
|
101
213
|
if (status === "replied")
|
package/dist/spawn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../src/spawn.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,gFAAgF;AAChF,8EAA8E;AAC9E,gFAAgF;AAEhF,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../src/spawn.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-rooms",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Local dashboard and listener for Agent Rooms. Pair devices, install MCP/skills, bind workspaces, and wake idle Claude Code
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Local dashboard and listener for Agent Rooms. Pair devices, install MCP/skills, bind workspaces, and wake idle agents (Claude Code, Codex, Gemini, Cursor, OpenClaw) on mentions and task assignments.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent-rooms",
|
|
7
7
|
"mcp",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"scripts": {
|
|
29
29
|
"build": "tsc -p tsconfig.json",
|
|
30
30
|
"dev": "tsx src/cli.ts",
|
|
31
|
-
"test": "node --import tsx --test src/hosts.test.ts src/config.test.ts src/uninstall.test.ts src/dashboard/server.test.ts",
|
|
31
|
+
"test": "node --import tsx --test src/hosts.test.ts src/config.test.ts src/uninstall.test.ts src/spawn.test.ts src/bridge.test.ts src/dashboard/server.test.ts",
|
|
32
32
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
33
33
|
"prepublishOnly": "npm run build"
|
|
34
34
|
},
|