agent-comms 1.1.0 → 1.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.
Files changed (73) hide show
  1. package/.claude-plugin/marketplace.json +21 -0
  2. package/.claude-plugin/plugin.json +21 -0
  3. package/README.md +83 -22
  4. package/dist/bridges/claude-code/channel.d.ts +1 -0
  5. package/dist/bridges/claude-code/channel.d.ts.map +1 -1
  6. package/dist/bridges/claude-code/channel.js +18 -37
  7. package/dist/bridges/claude-code/channel.js.map +1 -1
  8. package/dist/bridges/codex/tool.d.ts +2 -1
  9. package/dist/bridges/codex/tool.d.ts.map +1 -1
  10. package/dist/bridges/codex/tool.js +24 -19
  11. package/dist/bridges/codex/tool.js.map +1 -1
  12. package/dist/bridges/index.d.ts.map +1 -1
  13. package/dist/bridges/index.js +2 -4
  14. package/dist/bridges/index.js.map +1 -1
  15. package/dist/bridges/mcp/index.d.ts +11 -0
  16. package/dist/bridges/mcp/index.d.ts.map +1 -0
  17. package/dist/bridges/mcp/index.js +76 -0
  18. package/dist/bridges/mcp/index.js.map +1 -0
  19. package/dist/bridges/opencode/plugin.d.ts +2 -2
  20. package/dist/bridges/opencode/plugin.d.ts.map +1 -1
  21. package/dist/bridges/opencode/plugin.js +22 -22
  22. package/dist/bridges/opencode/plugin.js.map +1 -1
  23. package/dist/bridges/pi/index.d.ts +2 -2
  24. package/dist/bridges/pi/index.d.ts.map +1 -1
  25. package/dist/bridges/pi/index.js +12 -35
  26. package/dist/bridges/pi/index.js.map +1 -1
  27. package/dist/cli.js +4 -108
  28. package/dist/cli.js.map +1 -1
  29. package/dist/core/bridge.d.ts +7 -7
  30. package/dist/core/bridge.d.ts.map +1 -1
  31. package/dist/core/bridge.js +2 -2
  32. package/dist/core/bridge.js.map +1 -1
  33. package/dist/core/comms-store.d.ts +48 -0
  34. package/dist/core/comms-store.d.ts.map +1 -0
  35. package/dist/core/comms-store.js +11 -0
  36. package/dist/core/comms-store.js.map +1 -0
  37. package/dist/core/index.d.ts +6 -4
  38. package/dist/core/index.d.ts.map +1 -1
  39. package/dist/core/index.js +4 -3
  40. package/dist/core/index.js.map +1 -1
  41. package/dist/core/mesh-store.d.ts +88 -0
  42. package/dist/core/mesh-store.d.ts.map +1 -0
  43. package/dist/core/mesh-store.js +790 -0
  44. package/dist/core/mesh-store.js.map +1 -0
  45. package/dist/core/store.d.ts +3 -2
  46. package/dist/core/store.d.ts.map +1 -1
  47. package/dist/core/store.js +20 -20
  48. package/dist/core/store.js.map +1 -1
  49. package/dist/core/tool.d.ts +9 -9
  50. package/dist/core/tool.d.ts.map +1 -1
  51. package/dist/core/tool.js +5 -5
  52. package/dist/core/tool.js.map +1 -1
  53. package/dist/core/types.d.ts +2 -2
  54. package/dist/core/types.d.ts.map +1 -1
  55. package/dist/core/types.js +2 -2
  56. package/dist/core/types.js.map +1 -1
  57. package/dist/test/mesh-e2e.test.d.ts +8 -0
  58. package/dist/test/mesh-e2e.test.d.ts.map +1 -0
  59. package/dist/test/mesh-e2e.test.js +126 -0
  60. package/dist/test/mesh-e2e.test.js.map +1 -0
  61. package/dist/test/mesh-smoke.test.d.ts +9 -0
  62. package/dist/test/mesh-smoke.test.d.ts.map +1 -0
  63. package/dist/test/mesh-smoke.test.js +193 -0
  64. package/dist/test/mesh-smoke.test.js.map +1 -0
  65. package/package.json +17 -4
  66. package/dist/bridges/codex/post_tool_use.d.ts +0 -13
  67. package/dist/bridges/codex/post_tool_use.d.ts.map +0 -1
  68. package/dist/bridges/codex/post_tool_use.js +0 -118
  69. package/dist/bridges/codex/post_tool_use.js.map +0 -1
  70. package/dist/bridges/codex/stop_hook.d.ts +0 -13
  71. package/dist/bridges/codex/stop_hook.d.ts.map +0 -1
  72. package/dist/bridges/codex/stop_hook.js +0 -113
  73. package/dist/bridges/codex/stop_hook.js.map +0 -1
@@ -1,113 +0,0 @@
1
- /**
2
- * Agent Comms — Codex Stop hook.
3
- *
4
- * Drains the agent-comms delivery queue when Codex finishes a turn.
5
- * If pending messages exist, returns decision=block with the messages
6
- * as the reason, causing Codex to continue processing them immediately.
7
- *
8
- * Run via: npx agent-comms bridge codex-stop
9
- *
10
- * Requires [features] codex_hooks = true in config.toml.
11
- */
12
- import * as fs from "node:fs";
13
- import * as path from "node:path";
14
- import * as os from "node:os";
15
- import { DeliveryEventSchema } from "../../core/types.js";
16
- const BUS_ROOT = path.join(os.homedir(), ".agents", "bus");
17
- const IDENTITY_DIR = path.join(BUS_ROOT, "identity");
18
- function isRecord(value) {
19
- return typeof value === "object" && value !== null && !Array.isArray(value);
20
- }
21
- function readIdentity() {
22
- try {
23
- const files = fs
24
- .readdirSync(IDENTITY_DIR)
25
- .filter((f) => f.startsWith("codex--"));
26
- if (files.length === 0)
27
- return undefined;
28
- // Use the most recently modified codex identity
29
- const latest = files.sort((a, b) => {
30
- const sa = fs.statSync(path.join(IDENTITY_DIR, a));
31
- const sb = fs.statSync(path.join(IDENTITY_DIR, b));
32
- return sb.mtimeMs - sa.mtimeMs;
33
- })[0];
34
- if (!latest)
35
- return undefined;
36
- const parsed = JSON.parse(fs.readFileSync(path.join(IDENTITY_DIR, latest), "utf-8"));
37
- if (isRecord(parsed) && typeof parsed.id === "string") {
38
- return parsed.id;
39
- }
40
- return undefined;
41
- }
42
- catch {
43
- return undefined;
44
- }
45
- }
46
- function drainDelivery(agentId) {
47
- const deliveryDir = path.join(BUS_ROOT, "delivery", agentId);
48
- try {
49
- const files = fs
50
- .readdirSync(deliveryDir)
51
- .filter((f) => f.endsWith(".json"))
52
- .sort();
53
- const events = [];
54
- for (const file of files) {
55
- const fp = path.join(deliveryDir, file);
56
- try {
57
- const parsed = JSON.parse(fs.readFileSync(fp, "utf-8"));
58
- events.push(DeliveryEventSchema.parse(parsed));
59
- fs.unlinkSync(fp);
60
- }
61
- catch {
62
- fs.unlinkSync(fp);
63
- }
64
- }
65
- events.sort((a, b) => {
66
- const ta = a.type === "room_message" || a.type === "dm" ? a.message.timestamp : "";
67
- const tb = b.type === "room_message" || b.type === "dm" ? b.message.timestamp : "";
68
- return ta.localeCompare(tb);
69
- });
70
- return events;
71
- }
72
- catch {
73
- return [];
74
- }
75
- }
76
- function formatEvent(event) {
77
- switch (event.type) {
78
- case "room_message":
79
- return `[${event.message.room}] ${event.message.from}: ${event.message.content}`;
80
- case "dm":
81
- return `DM from ${event.message.from}: ${event.message.content}`;
82
- case "room_invite":
83
- return `Invited to room ${event.room} by ${event.from}`;
84
- case "member_joined":
85
- return `${event.agent} joined ${event.room}`;
86
- case "member_left":
87
- return `${event.agent} left ${event.room}`;
88
- }
89
- }
90
- export function run() {
91
- const chunks = [];
92
- process.stdin.setEncoding("utf-8");
93
- process.stdin.on("data", (chunk) => chunks.push(chunk));
94
- process.stdin.on("end", () => {
95
- try {
96
- JSON.parse(chunks.join(""));
97
- }
98
- catch {
99
- /* no input, fine */
100
- }
101
- const agentId = readIdentity();
102
- if (!agentId)
103
- process.exit(0);
104
- const events = drainDelivery(agentId);
105
- if (events.length === 0)
106
- process.exit(0);
107
- const lines = events.map(formatEvent);
108
- const message = "📬 Agent Comms pending messages:\n" +
109
- lines.map((l) => `- ${l}`).join("\n");
110
- process.stdout.write(JSON.stringify({ decision: "block", reason: message }, null, 2) + "\n");
111
- });
112
- }
113
- //# sourceMappingURL=stop_hook.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stop_hook.js","sourceRoot":"","sources":["../../../src/bridges/codex/stop_hook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAErD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,EAAE;aACb,WAAW,CAAC,YAAY,CAAC;aACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACzC,gDAAgD;QAChD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACjC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;YACnD,OAAO,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QACjC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACN,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9B,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAChC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAC1D,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YACtD,OAAO,MAAM,CAAC,EAAE,CAAC;QACnB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,EAAE;aACb,WAAW,CAAC,WAAW,CAAC;aACxB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAClC,IAAI,EAAE,CAAC;QACV,MAAM,MAAM,GAAoB,EAAE,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;gBACjE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC/C,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;YAAC,MAAM,CAAC;gBACP,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,MAAM,EAAE,GACN,CAAC,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,MAAM,EAAE,GACN,CAAC,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAoB;IACvC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,cAAc;YACjB,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACnF,KAAK,IAAI;YACP,OAAO,WAAW,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACnE,KAAK,aAAa;YAChB,OAAO,mBAAmB,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1D,KAAK,eAAe;YAClB,OAAO,GAAG,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/C,KAAK,aAAa;YAChB,OAAO,GAAG,KAAK,CAAC,KAAK,SAAS,KAAK,CAAC,IAAI,EAAE,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,GAAG;IACjB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;QAC3B,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB;QACtB,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE9B,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,OAAO,GACX,oCAAoC;YACpC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CACvE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}