agent-comms 8.10.0 → 8.10.2

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.
Files changed (38) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +1 -1
  4. package/dist/bridges/claude-code/channel.d.ts +2 -1
  5. package/dist/bridges/claude-code/channel.d.ts.map +1 -1
  6. package/dist/bridges/claude-code/channel.js +3 -3
  7. package/dist/bridges/claude-code/channel.js.map +1 -1
  8. package/dist/bridges/mcp/server.d.ts +2 -10
  9. package/dist/bridges/mcp/server.d.ts.map +1 -1
  10. package/dist/bridges/mcp/server.js.map +1 -1
  11. package/dist/bridges/registry.d.ts +3 -1
  12. package/dist/bridges/registry.d.ts.map +1 -1
  13. package/dist/bridges/registry.js.map +1 -1
  14. package/dist/cli-main.d.ts +37 -0
  15. package/dist/cli-main.d.ts.map +1 -0
  16. package/dist/cli-main.js +511 -0
  17. package/dist/cli-main.js.map +1 -0
  18. package/dist/cli.d.ts +1 -22
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/cli.js +6 -506
  21. package/dist/cli.js.map +1 -1
  22. package/dist/core/bridge-mesh.d.ts +7 -0
  23. package/dist/core/bridge-mesh.d.ts.map +1 -1
  24. package/dist/core/bridge-mesh.js.map +1 -1
  25. package/dist/core/index.d.ts +1 -1
  26. package/dist/core/index.d.ts.map +1 -1
  27. package/dist/core/index.js.map +1 -1
  28. package/dist/test/bridge-stdout.runner.d.ts +5 -0
  29. package/dist/test/bridge-stdout.runner.d.ts.map +1 -0
  30. package/dist/test/bridge-stdout.runner.js +49 -0
  31. package/dist/test/bridge-stdout.runner.js.map +1 -0
  32. package/dist/test/mcp-stdout-channel.integration.test.js +9 -3
  33. package/dist/test/mcp-stdout-channel.integration.test.js.map +1 -1
  34. package/package.json +2 -2
  35. package/dist/test/mcp-bridge.runner.d.ts +0 -5
  36. package/dist/test/mcp-bridge.runner.d.ts.map +0 -1
  37. package/dist/test/mcp-bridge.runner.js +0 -25
  38. package/dist/test/mcp-bridge.runner.js.map +0 -1
@@ -0,0 +1,511 @@
1
+ /**
2
+ * agent-comms — cross-harness LLM agent communication mesh.
3
+ *
4
+ * Usage:
5
+ * npx agent-comms # in a terminal: setup (auto-detect and configure); with a piped stdin: serve MCP, as `bridge mcp`
6
+ * npx agent-comms setup # same as above
7
+ * npx agent-comms status # check current configuration
8
+ * npx agent-comms remove # undo configuration
9
+ * npx agent-comms bridge <id> # run a bridge (used by harness configs)
10
+ * npx agent-comms chat # interactive TUI (web UI auto-starts)
11
+ * npx agent-comms send <room> <message> # one-shot send
12
+ * npx agent-comms dm <agent> <message> # one-shot DM
13
+ * npx agent-comms rooms # list rooms
14
+ * npx agent-comms agents # list agents
15
+ * npx agent-comms read <room> # read room messages
16
+ * npx agent-comms account export <file> # write this machine's account key, passphrase-sealed
17
+ * npx agent-comms account import <file> # make this machine hold an exported account
18
+ * npx agent-comms account invite # print a one-use invite that joins another machine to this account
19
+ * npx agent-comms account join # join this machine to an account with an invite
20
+ *
21
+ * The bridge subcommand lets harnesses invoke the bridge via npx:
22
+ * .mcp.json: \{ "command": "npx", "args": ["agent-comms", "bridge", "claude-code"] \}
23
+ * config.toml: command = "npx", args = ["agent-comms", "bridge", "codex"]
24
+ */
25
+ import * as fs from "node:fs";
26
+ import * as path from "node:path";
27
+ import * as os from "node:os";
28
+ import { execSync } from "node:child_process";
29
+ import { z } from "zod";
30
+ import { bridges } from "./bridges/registry.js";
31
+ import { resolveDefaultCommand } from "./core/default-command.js";
32
+ import { runTui } from "./bridges/user/tui.js";
33
+ import { runCli } from "./bridges/user/cli.js";
34
+ import { readHiddenLine, runAccountCommand } from "./account-cli.js";
35
+ import { openMachineAccountStore } from "./account-join-cli.js";
36
+ // ---------------------------------------------------------------------------
37
+ // Zod schemas for config files
38
+ // ---------------------------------------------------------------------------
39
+ const PiSettingsSchema = z
40
+ .object({
41
+ extensions: z.array(z.string()).optional(),
42
+ })
43
+ .loose();
44
+ const McpServersSchema = z
45
+ .object({
46
+ mcpServers: z
47
+ .record(z.string(), z
48
+ .object({
49
+ command: z.string(),
50
+ args: z.array(z.string()).optional(),
51
+ })
52
+ .loose())
53
+ .default({}),
54
+ })
55
+ .loose();
56
+ const OpenCodeConfigSchema = z
57
+ .object({
58
+ plugin: z.array(z.string()).optional(),
59
+ })
60
+ .loose();
61
+ // ---------------------------------------------------------------------------
62
+ // Config I/O
63
+ // ---------------------------------------------------------------------------
64
+ function readJsonFile(filePath) {
65
+ try {
66
+ return JSON.parse(fs.readFileSync(filePath, "utf-8"));
67
+ }
68
+ catch {
69
+ return undefined;
70
+ }
71
+ }
72
+ function writeJsonFile(filePath, data) {
73
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
74
+ fs.writeFileSync(filePath, JSON.stringify(data, null, 2) + "\n");
75
+ console.log(` → Wrote ${filePath}`);
76
+ }
77
+ // ---------------------------------------------------------------------------
78
+ // Constants
79
+ // ---------------------------------------------------------------------------
80
+ const HOME = os.homedir();
81
+ const PKG_DIR = path.resolve(path.dirname(new URL(import.meta.url).pathname), "..");
82
+ // ---------------------------------------------------------------------------
83
+ // Harness definitions
84
+ // ---------------------------------------------------------------------------
85
+ const harnesses = [
86
+ {
87
+ id: "pi",
88
+ detect: () => fs.existsSync(path.join(HOME, ".pi", "agent", "extensions")),
89
+ configure: () => {
90
+ configurePi();
91
+ },
92
+ remove: () => {
93
+ removePi();
94
+ },
95
+ check: () => checkPi(),
96
+ },
97
+ {
98
+ id: "claude-code",
99
+ detect: () => {
100
+ try {
101
+ execSync("which claude", { stdio: "pipe" });
102
+ return true;
103
+ }
104
+ catch {
105
+ return false;
106
+ }
107
+ },
108
+ configure: () => {
109
+ configureClaudeCode();
110
+ },
111
+ remove: () => {
112
+ removeClaudeCode();
113
+ },
114
+ check: () => checkClaudeCode(),
115
+ },
116
+ {
117
+ id: "codex",
118
+ detect: () => {
119
+ try {
120
+ execSync("which codex", { stdio: "pipe" });
121
+ return true;
122
+ }
123
+ catch {
124
+ return false;
125
+ }
126
+ },
127
+ configure: () => {
128
+ configureCodex();
129
+ },
130
+ remove: () => {
131
+ removeCodex();
132
+ },
133
+ check: () => checkCodex(),
134
+ },
135
+ {
136
+ id: "opencode",
137
+ detect: () => {
138
+ try {
139
+ execSync("which opencode", { stdio: "pipe" });
140
+ return true;
141
+ }
142
+ catch {
143
+ return false;
144
+ }
145
+ },
146
+ configure: () => {
147
+ configureOpenCode();
148
+ },
149
+ remove: () => {
150
+ removeOpenCode();
151
+ },
152
+ check: () => checkOpenCode(),
153
+ },
154
+ ];
155
+ // ---------------------------------------------------------------------------
156
+ // Main
157
+ // ---------------------------------------------------------------------------
158
+ // Within the resolved arguments, index 0 is the subcommand and everything after it is the subcommand's own args.
159
+ const SUBCOMMAND_ARGS_START_INDEX = 1;
160
+ /** Runs the subcommand the arguments name, or the default one for a bare command (see resolveDefaultCommand). */
161
+ export function main(options) {
162
+ const resolvedArgs = resolveDefaultCommand(options.args, options.stdinIsTerminal ?? false);
163
+ const command = resolvedArgs[0] ?? "setup";
164
+ switch (command) {
165
+ case "setup":
166
+ setup();
167
+ break;
168
+ case "status":
169
+ status();
170
+ break;
171
+ case "remove":
172
+ remove();
173
+ break;
174
+ case "bridge": {
175
+ const bridgeId = resolvedArgs[1];
176
+ if (bridgeId === undefined) {
177
+ console.error("Usage: agent-comms bridge <id>");
178
+ process.exit(1);
179
+ }
180
+ runBridge(bridgeId, options.bridge);
181
+ break;
182
+ }
183
+ case "chat": {
184
+ const chatArgs = resolvedArgs.slice(SUBCOMMAND_ARGS_START_INDEX);
185
+ runChat(chatArgs);
186
+ break;
187
+ }
188
+ case "send":
189
+ case "dm":
190
+ case "rooms":
191
+ case "agents":
192
+ case "read": {
193
+ const cliArgs = resolvedArgs.slice(SUBCOMMAND_ARGS_START_INDEX);
194
+ runUserCli(command, cliArgs);
195
+ break;
196
+ }
197
+ case "account": {
198
+ runAccountCommand(resolvedArgs.slice(SUBCOMMAND_ARGS_START_INDEX), {
199
+ readSecret: readHiddenLine,
200
+ log: (line) => {
201
+ console.log(line);
202
+ },
203
+ env: process.env,
204
+ openStore: openMachineAccountStore,
205
+ }).then(() => {
206
+ // The store an invite or join ran leaves timers and sockets behind it, so the command ends the process itself once it is done.
207
+ process.exit(0);
208
+ }, (err) => {
209
+ console.error(err instanceof Error ? err.message : String(err));
210
+ process.exit(1);
211
+ });
212
+ break;
213
+ }
214
+ default:
215
+ console.log("Usage: agent-comms [setup|status|remove|bridge <id>|chat|send|dm|rooms|agents|read|account <export|import|invite|join>]");
216
+ console.log("With no subcommand: setup when stdin is a terminal, the MCP server when it is not.");
217
+ process.exit(1);
218
+ }
219
+ }
220
+ // ---------------------------------------------------------------------------
221
+ // Bridge runner
222
+ // ---------------------------------------------------------------------------
223
+ function runBridge(id, options) {
224
+ const bridge = bridges[id];
225
+ if (!bridge) {
226
+ console.error(`Unknown bridge: ${id}. Available: ${Object.keys(bridges).join(", ")}`);
227
+ process.exit(1);
228
+ }
229
+ Promise.resolve(bridge.run(options)).catch((err) => {
230
+ console.error(err);
231
+ process.exit(1);
232
+ });
233
+ }
234
+ function parseNameArg(args) {
235
+ const nameIdx = args.indexOf("--name");
236
+ if (nameIdx !== -1) {
237
+ const val = args[nameIdx + 1];
238
+ if (val !== undefined) {
239
+ return {
240
+ name: val,
241
+ rest: [...args.slice(0, nameIdx), ...args.slice(nameIdx + 2)],
242
+ };
243
+ }
244
+ }
245
+ return { name: "Joe", rest: args };
246
+ }
247
+ function runChat(args) {
248
+ const { name } = parseNameArg(args);
249
+ runTui(name).catch((err) => {
250
+ console.error(err);
251
+ process.exit(1);
252
+ });
253
+ }
254
+ function runUserCli(cliCommand, args) {
255
+ const { name, rest } = parseNameArg(args);
256
+ runCli(cliCommand, rest, name).catch((err) => {
257
+ console.error(err);
258
+ process.exit(1);
259
+ });
260
+ }
261
+ // ---------------------------------------------------------------------------
262
+ // Commands
263
+ // ---------------------------------------------------------------------------
264
+ function setup() {
265
+ console.log("🔌 Agent Comms setup\n");
266
+ const detected = harnesses.filter((h) => h.detect());
267
+ console.log("Detected harnesses:");
268
+ for (const h of harnesses) {
269
+ console.log(` ${detected.includes(h) ? "✓" : "✗"} ${h.id}`);
270
+ }
271
+ if (detected.length === 0) {
272
+ console.log("\nNo supported harnesses found. Install one of: pi, Claude Code, Codex, OpenCode");
273
+ process.exit(1);
274
+ }
275
+ console.log();
276
+ for (const h of detected) {
277
+ console.log(`Configuring ${h.id}...`);
278
+ h.configure();
279
+ }
280
+ const plural = detected.length === 1 ? "" : "es";
281
+ console.log(`\n✓ Done! ${String(detected.length)} harness${plural} configured.`);
282
+ console.log("\nBridges run via: npx agent-comms bridge <id>");
283
+ }
284
+ function status() {
285
+ console.log("🔌 Agent Comms status\n");
286
+ for (const h of harnesses) {
287
+ const installed = h.detect();
288
+ const result = installed
289
+ ? h.check()
290
+ : { configured: false, details: Array() };
291
+ if (!installed) {
292
+ console.log(` ✗ ${h.id} — not found`);
293
+ }
294
+ else if (result.configured) {
295
+ console.log(` ✓ ${h.id} — configured`);
296
+ for (const detail of result.details)
297
+ console.log(` ${detail}`);
298
+ }
299
+ else {
300
+ console.log(` ⚠ ${h.id} — detected but not configured`);
301
+ for (const detail of result.details)
302
+ console.log(` ${detail}`);
303
+ }
304
+ }
305
+ }
306
+ function remove() {
307
+ console.log("🔌 Agent Comms removal\n");
308
+ for (const h of harnesses) {
309
+ if (h.detect()) {
310
+ console.log(`Removing ${h.id}...`);
311
+ h.remove();
312
+ }
313
+ }
314
+ console.log("\n✓ Done!");
315
+ }
316
+ // ---------------------------------------------------------------------------
317
+ // pi
318
+ // ---------------------------------------------------------------------------
319
+ function configurePi() {
320
+ const settingsPath = path.join(HOME, ".pi", "agent", "settings.json");
321
+ const parsed = readJsonFile(settingsPath);
322
+ const settings = PiSettingsSchema.parse(parsed ?? {});
323
+ const bridgeDir = path.join(PKG_DIR, "src", "bridges", "pi");
324
+ const extensions = settings.extensions ?? [];
325
+ if (!extensions.includes(bridgeDir)) {
326
+ extensions.push(bridgeDir);
327
+ settings.extensions = extensions;
328
+ writeJsonFile(settingsPath, settings);
329
+ }
330
+ else {
331
+ console.log(` → Already in ${settingsPath}`);
332
+ }
333
+ }
334
+ function removePi() {
335
+ const settingsPath = path.join(HOME, ".pi", "agent", "settings.json");
336
+ const parsed = readJsonFile(settingsPath);
337
+ const settings = PiSettingsSchema.parse(parsed ?? {});
338
+ const extensions = settings.extensions;
339
+ if (extensions) {
340
+ settings.extensions = extensions.filter((e) => {
341
+ const segments = e.toLowerCase().split("/");
342
+ const busIdx = segments.indexOf("bridges");
343
+ return !(busIdx !== -1 &&
344
+ segments[busIdx + 1] === "pi" &&
345
+ e.toLowerCase().includes("agent-comms"));
346
+ });
347
+ writeJsonFile(settingsPath, settings);
348
+ }
349
+ }
350
+ function checkPi() {
351
+ const settingsPath = path.join(HOME, ".pi", "agent", "settings.json");
352
+ const parsed = readJsonFile(settingsPath);
353
+ const settings = PiSettingsSchema.parse(parsed ?? {});
354
+ const bridgeDir = path.join(PKG_DIR, "src", "bridges", "pi");
355
+ const configured = (settings.extensions ?? []).includes(bridgeDir);
356
+ return {
357
+ configured,
358
+ details: configured
359
+ ? [`Extension: ${bridgeDir}`]
360
+ : [`Not in ${settingsPath} extensions`],
361
+ };
362
+ }
363
+ // ---------------------------------------------------------------------------
364
+ // Claude Code
365
+ // ---------------------------------------------------------------------------
366
+ function configureClaudeCode() {
367
+ const mcpPath = path.join(process.cwd(), ".mcp.json");
368
+ const parsed = readJsonFile(mcpPath);
369
+ const config = McpServersSchema.parse(parsed ?? {});
370
+ config.mcpServers["agent-comms"] = {
371
+ command: "npx",
372
+ args: ["agent-comms", "bridge", "claude-code"],
373
+ };
374
+ writeJsonFile(mcpPath, config);
375
+ }
376
+ function removeClaudeCode() {
377
+ const mcpPath = path.join(process.cwd(), ".mcp.json");
378
+ const parsed = readJsonFile(mcpPath);
379
+ if (parsed === undefined)
380
+ return;
381
+ const config = McpServersSchema.safeParse(parsed);
382
+ if (!config.success)
383
+ return;
384
+ if ("agent-comms" in config.data.mcpServers) {
385
+ delete config.data.mcpServers["agent-comms"];
386
+ writeJsonFile(mcpPath, config.data);
387
+ console.log(` Removed agent-comms from ${mcpPath}`);
388
+ }
389
+ }
390
+ function checkClaudeCode() {
391
+ const mcpPath = path.join(process.cwd(), ".mcp.json");
392
+ const parsed = readJsonFile(mcpPath);
393
+ const config = McpServersSchema.safeParse(parsed ?? {});
394
+ const entry = config.success
395
+ ? config.data.mcpServers["agent-comms"]
396
+ : undefined;
397
+ const configured = entry !== undefined;
398
+ return {
399
+ configured,
400
+ details: configured
401
+ ? [`Config: ${mcpPath}`, `Command: ${entry.command}`]
402
+ : [`Not in ${mcpPath}`],
403
+ };
404
+ }
405
+ // ---------------------------------------------------------------------------
406
+ // Codex
407
+ // ---------------------------------------------------------------------------
408
+ function configureCodex() {
409
+ const configDir = path.join(HOME, ".codex");
410
+ // Add MCP server to config.toml
411
+ const tomlPath = path.join(configDir, "config.toml");
412
+ if (fs.existsSync(tomlPath)) {
413
+ const content = fs.readFileSync(tomlPath, "utf-8");
414
+ if (!content.includes("agent-comms")) {
415
+ const block = [
416
+ "",
417
+ "# Agent Comms MCP tool server",
418
+ "[mcp_servers.agent-comms]",
419
+ 'command = "npx"',
420
+ 'args = ["agent-comms", "bridge", "codex"]',
421
+ ].join("\n");
422
+ fs.writeFileSync(tomlPath, content.trimEnd() + block + "\n");
423
+ console.log(` → Appended MCP server to ${tomlPath}`);
424
+ }
425
+ else {
426
+ console.log(` → Already in ${tomlPath}`);
427
+ }
428
+ }
429
+ else {
430
+ const content = [
431
+ "# Agent Comms MCP tool server",
432
+ "[mcp_servers.agent-comms]",
433
+ 'command = "npx"',
434
+ 'args = ["agent-comms", "bridge", "codex"]',
435
+ ].join("\n");
436
+ fs.mkdirSync(configDir, { recursive: true });
437
+ fs.writeFileSync(tomlPath, content + "\n");
438
+ console.log(` → Created ${tomlPath}`);
439
+ }
440
+ }
441
+ function removeCodex() {
442
+ const configDir = path.join(HOME, ".codex");
443
+ // Remove from config.toml
444
+ const tomlPath = path.join(configDir, "config.toml");
445
+ if (fs.existsSync(tomlPath)) {
446
+ const content = fs.readFileSync(tomlPath, "utf-8");
447
+ const lines = content
448
+ .split("\n")
449
+ .filter((line) => !line.includes("agent-comms") && !line.includes("Agent Comms"));
450
+ fs.writeFileSync(tomlPath, lines.join("\n").trimEnd() + "\n");
451
+ console.log(` Removed agent-comms from ${tomlPath}`);
452
+ }
453
+ }
454
+ function checkCodex() {
455
+ const details = [];
456
+ const tomlPath = path.join(HOME, ".codex", "config.toml");
457
+ if (fs.existsSync(tomlPath)) {
458
+ const content = fs.readFileSync(tomlPath, "utf-8");
459
+ const tomlOk = content.includes("agent-comms");
460
+ details.push(tomlOk ? `MCP server in ${tomlPath}` : `Not in ${tomlPath}`);
461
+ return { configured: tomlOk, details };
462
+ }
463
+ details.push(`${tomlPath} not found`);
464
+ return { configured: false, details };
465
+ }
466
+ // ---------------------------------------------------------------------------
467
+ // OpenCode
468
+ // ---------------------------------------------------------------------------
469
+ function configureOpenCode() {
470
+ const configPath = path.join(process.cwd(), "opencode.json");
471
+ const parsed = readJsonFile(configPath);
472
+ const config = OpenCodeConfigSchema.parse(parsed ?? {});
473
+ const bridgeDir = path.join(PKG_DIR, "src", "bridges", "opencode", "plugin.ts");
474
+ const plugins = config.plugin ?? [];
475
+ if (!plugins.includes(bridgeDir)) {
476
+ plugins.push(bridgeDir);
477
+ config.plugin = plugins;
478
+ writeJsonFile(configPath, config);
479
+ }
480
+ else {
481
+ console.log(` → Already in ${configPath}`);
482
+ }
483
+ }
484
+ function removeOpenCode() {
485
+ const configPath = path.join(process.cwd(), "opencode.json");
486
+ const parsed = readJsonFile(configPath);
487
+ if (parsed === undefined)
488
+ return;
489
+ const config = OpenCodeConfigSchema.safeParse(parsed);
490
+ if (!config.success)
491
+ return;
492
+ const bridgeDir = path.join(PKG_DIR, "src", "bridges", "opencode", "plugin.ts");
493
+ const plugins = config.data.plugin;
494
+ if (plugins) {
495
+ config.data.plugin = plugins.filter((p) => p !== bridgeDir);
496
+ writeJsonFile(configPath, config.data);
497
+ console.log(` Removed agent-comms from ${configPath}`);
498
+ }
499
+ }
500
+ function checkOpenCode() {
501
+ const configPath = path.join(process.cwd(), "opencode.json");
502
+ const parsed = readJsonFile(configPath);
503
+ const config = OpenCodeConfigSchema.safeParse(parsed ?? {});
504
+ const bridgeDir = path.join(PKG_DIR, "src", "bridges", "opencode", "plugin.ts");
505
+ const configured = config.success && (config.data.plugin ?? []).includes(bridgeDir);
506
+ return {
507
+ configured,
508
+ details: configured ? [`Plugin: ${bridgeDir}`] : [`Not in ${configPath}`],
509
+ };
510
+ }
511
+ //# sourceMappingURL=cli-main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-main.js","sourceRoot":"","sources":["../src/cli-main.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts CHANGED
@@ -1,26 +1,5 @@
1
1
  /**
2
- * agent-comms — cross-harness LLM agent communication mesh.
3
- *
4
- * Usage:
5
- * npx agent-comms # in a terminal: setup (auto-detect and configure); with a piped stdin: serve MCP, as `bridge mcp`
6
- * npx agent-comms setup # same as above
7
- * npx agent-comms status # check current configuration
8
- * npx agent-comms remove # undo configuration
9
- * npx agent-comms bridge <id> # run a bridge (used by harness configs)
10
- * npx agent-comms chat # interactive TUI (web UI auto-starts)
11
- * npx agent-comms send <room> <message> # one-shot send
12
- * npx agent-comms dm <agent> <message> # one-shot DM
13
- * npx agent-comms rooms # list rooms
14
- * npx agent-comms agents # list agents
15
- * npx agent-comms read <room> # read room messages
16
- * npx agent-comms account export <file> # write this machine's account key, passphrase-sealed
17
- * npx agent-comms account import <file> # make this machine hold an exported account
18
- * npx agent-comms account invite # print a one-use invite that joins another machine to this account
19
- * npx agent-comms account join # join this machine to an account with an invite
20
- *
21
- * The bridge subcommand lets harnesses invoke the bridge via npx:
22
- * .mcp.json: \{ "command": "npx", "args": ["agent-comms", "bridge", "claude-code"] \}
23
- * config.toml: command = "npx", args = ["agent-comms", "bridge", "codex"]
2
+ * The `agent-comms` executable: runs the command line against this process's own arguments and stdin. The dispatch itself lives in cli-main.ts, where a test can reach it without binding this machine's default ports.
24
3
  */
25
4
  export {};
26
5
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;GAEG"}