agent-relay 2.1.13 → 2.1.15

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 (165) hide show
  1. package/dist/index.cjs +37571 -50918
  2. package/dist/src/cli/index.js +1 -1
  3. package/dist/src/cli/index.js.map +1 -1
  4. package/package.json +18 -18
  5. package/packages/acp-bridge/package.json +2 -2
  6. package/packages/api-types/package.json +1 -1
  7. package/packages/benchmark/datasets/quick-test.yaml +20 -0
  8. package/packages/benchmark/dist/runners/base.d.ts.map +1 -1
  9. package/packages/benchmark/dist/runners/base.js +1 -0
  10. package/packages/benchmark/dist/runners/base.js.map +1 -1
  11. package/packages/benchmark/package.json +4 -4
  12. package/packages/benchmark/src/runners/base.ts +1 -0
  13. package/packages/bridge/dist/spawner.d.ts.map +1 -1
  14. package/packages/bridge/dist/spawner.js +2 -30
  15. package/packages/bridge/dist/spawner.js.map +1 -1
  16. package/packages/bridge/package.json +7 -8
  17. package/packages/bridge/src/spawner.ts +2 -29
  18. package/packages/cli-tester/package.json +1 -1
  19. package/packages/config/dist/teams-config.d.ts +7 -1
  20. package/packages/config/dist/teams-config.d.ts.map +1 -1
  21. package/packages/config/dist/teams-config.js +88 -34
  22. package/packages/config/dist/teams-config.js.map +1 -1
  23. package/packages/config/package.json +2 -2
  24. package/packages/config/src/teams-config.ts +106 -39
  25. package/packages/continuity/package.json +2 -2
  26. package/packages/daemon/dist/server.d.ts.map +1 -1
  27. package/packages/daemon/dist/server.js +18 -0
  28. package/packages/daemon/dist/server.js.map +1 -1
  29. package/packages/daemon/dist/spawn-manager.d.ts +8 -0
  30. package/packages/daemon/dist/spawn-manager.d.ts.map +1 -1
  31. package/packages/daemon/dist/spawn-manager.js +14 -3
  32. package/packages/daemon/dist/spawn-manager.js.map +1 -1
  33. package/packages/daemon/package.json +12 -12
  34. package/packages/daemon/src/server.ts +17 -0
  35. package/packages/daemon/src/spawn-manager.ts +21 -3
  36. package/packages/hooks/package.json +4 -4
  37. package/packages/mcp/CHANGELOG.md +28 -0
  38. package/packages/mcp/README.md +31 -0
  39. package/packages/mcp/dist/bin.js +18 -5
  40. package/packages/mcp/dist/bin.js.map +1 -1
  41. package/packages/mcp/dist/{client.d.ts → client-adapter.d.ts} +22 -36
  42. package/packages/mcp/dist/client-adapter.d.ts.map +1 -0
  43. package/packages/mcp/dist/client-adapter.js +227 -0
  44. package/packages/mcp/dist/client-adapter.js.map +1 -0
  45. package/packages/mcp/dist/hybrid-client.d.ts +1 -31
  46. package/packages/mcp/dist/hybrid-client.d.ts.map +1 -1
  47. package/packages/mcp/dist/hybrid-client.js +3 -153
  48. package/packages/mcp/dist/hybrid-client.js.map +1 -1
  49. package/packages/mcp/dist/index.d.ts +2 -3
  50. package/packages/mcp/dist/index.d.ts.map +1 -1
  51. package/packages/mcp/dist/index.js +4 -3
  52. package/packages/mcp/dist/index.js.map +1 -1
  53. package/packages/mcp/dist/resources/agents.d.ts +1 -1
  54. package/packages/mcp/dist/resources/agents.d.ts.map +1 -1
  55. package/packages/mcp/dist/resources/inbox.d.ts +1 -1
  56. package/packages/mcp/dist/resources/inbox.d.ts.map +1 -1
  57. package/packages/mcp/dist/resources/project.d.ts +1 -1
  58. package/packages/mcp/dist/resources/project.d.ts.map +1 -1
  59. package/packages/mcp/dist/server.d.ts +5 -1
  60. package/packages/mcp/dist/server.d.ts.map +1 -1
  61. package/packages/mcp/dist/server.js.map +1 -1
  62. package/packages/mcp/dist/simple.d.ts +1 -1
  63. package/packages/mcp/dist/simple.d.ts.map +1 -1
  64. package/packages/mcp/dist/simple.js +1 -1
  65. package/packages/mcp/dist/simple.js.map +1 -1
  66. package/packages/mcp/dist/tools/relay-broadcast.d.ts +1 -1
  67. package/packages/mcp/dist/tools/relay-broadcast.d.ts.map +1 -1
  68. package/packages/mcp/dist/tools/relay-channel.d.ts +1 -1
  69. package/packages/mcp/dist/tools/relay-channel.d.ts.map +1 -1
  70. package/packages/mcp/dist/tools/relay-connected.d.ts +1 -1
  71. package/packages/mcp/dist/tools/relay-connected.d.ts.map +1 -1
  72. package/packages/mcp/dist/tools/relay-consensus.d.ts +7 -7
  73. package/packages/mcp/dist/tools/relay-consensus.d.ts.map +1 -1
  74. package/packages/mcp/dist/tools/relay-continuity.d.ts +1 -1
  75. package/packages/mcp/dist/tools/relay-continuity.d.ts.map +1 -1
  76. package/packages/mcp/dist/tools/relay-health.d.ts +1 -1
  77. package/packages/mcp/dist/tools/relay-health.d.ts.map +1 -1
  78. package/packages/mcp/dist/tools/relay-inbox.d.ts +2 -2
  79. package/packages/mcp/dist/tools/relay-inbox.d.ts.map +1 -1
  80. package/packages/mcp/dist/tools/relay-logs.d.ts +1 -1
  81. package/packages/mcp/dist/tools/relay-logs.d.ts.map +1 -1
  82. package/packages/mcp/dist/tools/relay-messages.d.ts +7 -7
  83. package/packages/mcp/dist/tools/relay-messages.d.ts.map +1 -1
  84. package/packages/mcp/dist/tools/relay-metrics.d.ts +1 -1
  85. package/packages/mcp/dist/tools/relay-metrics.d.ts.map +1 -1
  86. package/packages/mcp/dist/tools/relay-metrics.js +4 -4
  87. package/packages/mcp/dist/tools/relay-metrics.js.map +1 -1
  88. package/packages/mcp/dist/tools/relay-release.d.ts +1 -1
  89. package/packages/mcp/dist/tools/relay-release.d.ts.map +1 -1
  90. package/packages/mcp/dist/tools/relay-remove-agent.d.ts +1 -1
  91. package/packages/mcp/dist/tools/relay-remove-agent.d.ts.map +1 -1
  92. package/packages/mcp/dist/tools/relay-send.d.ts +3 -3
  93. package/packages/mcp/dist/tools/relay-send.d.ts.map +1 -1
  94. package/packages/mcp/dist/tools/relay-shadow.d.ts +1 -1
  95. package/packages/mcp/dist/tools/relay-shadow.d.ts.map +1 -1
  96. package/packages/mcp/dist/tools/relay-spawn.d.ts +3 -3
  97. package/packages/mcp/dist/tools/relay-spawn.d.ts.map +1 -1
  98. package/packages/mcp/dist/tools/relay-status.d.ts +1 -1
  99. package/packages/mcp/dist/tools/relay-status.d.ts.map +1 -1
  100. package/packages/mcp/dist/tools/relay-subscribe.d.ts +1 -1
  101. package/packages/mcp/dist/tools/relay-subscribe.d.ts.map +1 -1
  102. package/packages/mcp/dist/tools/relay-who.d.ts +1 -1
  103. package/packages/mcp/dist/tools/relay-who.d.ts.map +1 -1
  104. package/packages/mcp/package.json +13 -4
  105. package/packages/mcp/src/bin.ts +21 -6
  106. package/packages/mcp/src/client-adapter.ts +346 -0
  107. package/packages/mcp/src/hybrid-client.ts +3 -202
  108. package/packages/mcp/src/index.ts +12 -5
  109. package/packages/mcp/src/resources/agents.ts +1 -1
  110. package/packages/mcp/src/resources/inbox.ts +1 -1
  111. package/packages/mcp/src/resources/project.ts +1 -1
  112. package/packages/mcp/src/server.ts +5 -1
  113. package/packages/mcp/src/simple.ts +1 -1
  114. package/packages/mcp/src/tools/relay-broadcast.ts +1 -1
  115. package/packages/mcp/src/tools/relay-channel.ts +1 -1
  116. package/packages/mcp/src/tools/relay-connected.ts +1 -1
  117. package/packages/mcp/src/tools/relay-consensus.ts +1 -1
  118. package/packages/mcp/src/tools/relay-continuity.ts +1 -1
  119. package/packages/mcp/src/tools/relay-health.ts +1 -1
  120. package/packages/mcp/src/tools/relay-inbox.ts +1 -1
  121. package/packages/mcp/src/tools/relay-logs.ts +1 -1
  122. package/packages/mcp/src/tools/relay-messages.ts +1 -1
  123. package/packages/mcp/src/tools/relay-metrics.ts +7 -5
  124. package/packages/mcp/src/tools/relay-release.ts +1 -1
  125. package/packages/mcp/src/tools/relay-remove-agent.ts +1 -1
  126. package/packages/mcp/src/tools/relay-send.ts +1 -1
  127. package/packages/mcp/src/tools/relay-shadow.ts +1 -1
  128. package/packages/mcp/src/tools/relay-spawn.ts +1 -1
  129. package/packages/mcp/src/tools/relay-status.ts +1 -1
  130. package/packages/mcp/src/tools/relay-subscribe.ts +1 -1
  131. package/packages/mcp/src/tools/relay-who.ts +1 -1
  132. package/packages/mcp/tests/client.test.ts +332 -432
  133. package/packages/memory/package.json +2 -2
  134. package/packages/policy/package.json +2 -2
  135. package/packages/protocol/package.json +1 -1
  136. package/packages/resiliency/package.json +1 -1
  137. package/packages/sdk/README.md +185 -0
  138. package/packages/sdk/dist/client.d.ts +1 -1
  139. package/packages/sdk/dist/client.d.ts.map +1 -1
  140. package/packages/sdk/dist/client.js +2 -1
  141. package/packages/sdk/dist/client.js.map +1 -1
  142. package/packages/sdk/dist/standalone.d.ts +2 -0
  143. package/packages/sdk/dist/standalone.d.ts.map +1 -1
  144. package/packages/sdk/dist/standalone.js +6 -1
  145. package/packages/sdk/dist/standalone.js.map +1 -1
  146. package/packages/sdk/package.json +3 -4
  147. package/packages/sdk/src/client.ts +2 -2
  148. package/packages/sdk/src/standalone.ts +8 -1
  149. package/packages/spawner/package.json +1 -1
  150. package/packages/state/package.json +1 -1
  151. package/packages/storage/package.json +2 -2
  152. package/packages/storage/src/jsonl-adapter.test.ts +3 -1
  153. package/packages/telemetry/package.json +1 -1
  154. package/packages/trajectory/package.json +2 -2
  155. package/packages/user-directory/package.json +2 -2
  156. package/packages/utils/package.json +3 -3
  157. package/packages/wrapper/dist/relay-pty-orchestrator.d.ts.map +1 -1
  158. package/packages/wrapper/dist/relay-pty-orchestrator.js +13 -0
  159. package/packages/wrapper/dist/relay-pty-orchestrator.js.map +1 -1
  160. package/packages/wrapper/package.json +6 -6
  161. package/packages/wrapper/src/relay-pty-orchestrator.ts +14 -0
  162. package/packages/mcp/dist/client.d.ts.map +0 -1
  163. package/packages/mcp/dist/client.js +0 -320
  164. package/packages/mcp/dist/client.js.map +0 -1
  165. package/packages/mcp/src/client.ts +0 -485
@@ -10,6 +10,8 @@
10
10
  */
11
11
  import { parseArgs } from 'node:util';
12
12
  import { runInstall, validateEditor, getValidEditors } from './install-cli.js';
13
+ import { RelayClient } from '@agent-relay/sdk';
14
+ import { createRelayClientAdapter } from './client-adapter.js';
13
15
  const { values, positionals } = parseArgs({
14
16
  allowPositionals: true,
15
17
  options: {
@@ -104,7 +106,7 @@ switch (command) {
104
106
  (async () => {
105
107
  try {
106
108
  const { runMCPServer, discoverSocket, discoverAgentName } = await import('./index.js');
107
- const { createHybridClient, discoverProjectRoot } = await import('./hybrid-client.js');
109
+ const { discoverProjectRoot } = await import('./hybrid-client.js');
108
110
  const { join } = await import('node:path');
109
111
  const { existsSync } = await import('node:fs');
110
112
  // Use explicit project path if provided (for MCP servers invoked from different contexts)
@@ -123,7 +125,7 @@ switch (command) {
123
125
  }
124
126
  const discovery = discoverSocket();
125
127
  const agentName = discoverAgentName(discovery) || `mcp-${process.pid}`;
126
- // Discover project root for file-based transport
128
+ // Discover project root
127
129
  if (!projectRoot) {
128
130
  projectRoot = discoverProjectRoot() ?? undefined;
129
131
  }
@@ -139,14 +141,25 @@ switch (command) {
139
141
  console.error('Run "agent-relay up" in the project to start the daemon first');
140
142
  process.exit(1);
141
143
  }
142
- // Create hybrid client (file-based writes, socket queries)
143
- const client = createHybridClient({
144
+ const client = new RelayClient({
144
145
  agentName,
146
+ socketPath: socketPath || discovery?.socketPath,
147
+ quiet: values.quiet,
148
+ reconnect: true,
149
+ });
150
+ await client.connect();
151
+ const mcpClient = createRelayClientAdapter(client, {
152
+ agentName,
153
+ project: discovery?.project,
145
154
  projectRoot,
146
155
  socketPath: socketPath || discovery?.socketPath,
156
+ });
157
+ await runMCPServer(mcpClient, {
158
+ projectRoot,
147
159
  project: discovery?.project,
160
+ socketPath: socketPath || discovery?.socketPath,
161
+ agentName,
148
162
  });
149
- await runMCPServer(client);
150
163
  }
151
164
  catch (err) {
152
165
  const message = err instanceof Error ? err.message : String(err);
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE/E,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IACxC,gBAAgB,EAAE,IAAI;IACtB,OAAO,EAAE;QACP,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;QACrC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;QACxC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;QACvC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;QAC1C,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;QAC1C,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;QACrC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;QACvC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;QACtC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC3B;CACF,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAC/B,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC;oBACM,OAAO;;;;;;;;;;;;;;;;;;;;;;;IAuBvB,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;CAW/B,CAAC,CAAC;AACH,CAAC;AAED,6BAA6B;AAC7B,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;IAC5B,QAAQ,EAAE,CAAC;IACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,mBAAmB;AACnB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,sBAAsB;AACtB,IAAI,CAAC,OAAO,EAAE,CAAC;IACb,QAAQ,EAAE,CAAC;IACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,+BAA+B;AAC/B,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IACpD,OAAO,CAAC,KAAK,CAAC,0BAA0B,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1D,OAAO,CAAC,KAAK,CAAC,kBAAkB,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,QAAQ,OAAO,EAAE,CAAC;IAChB,KAAK,SAAS;QACZ,UAAU,CAAC;YACT,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;QACH,MAAM;IAER,KAAK,OAAO;QACV,8DAA8D;QAC9D,CAAC,KAAK,IAAI,EAAE;YACV,IAAI,CAAC;gBACH,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;gBACvF,MAAM,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBACvF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC3C,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;gBAE/C,0FAA0F;gBAC1F,MAAM,eAAe,GAAG,MAAM,CAAC,OAA6B,CAAC;gBAC7D,MAAM,cAAc,GAAG,MAAM,CAAC,MAA4B,CAAC;gBAE3D,gEAAgE;gBAChE,IAAI,UAAU,GAAG,cAAc,CAAC;gBAChC,IAAI,WAAW,GAAG,eAAe,CAAC;gBAElC,IAAI,eAAe,IAAI,CAAC,cAAc,EAAE,CAAC;oBACvC,uCAAuC;oBACvC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;gBACnE,CAAC;gBAED,0EAA0E;gBAC1E,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC;gBACxC,CAAC;gBACD,MAAM,SAAS,GAAG,cAAc,EAAE,CAAC;gBACnC,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;gBAEvE,iDAAiD;gBACjD,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,WAAW,GAAG,mBAAmB,EAAE,IAAI,SAAS,CAAC;gBACnD,CAAC;gBAED,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;oBACtE,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;oBAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBAED,iDAAiD;gBACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;gBACnD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1B,OAAO,CAAC,KAAK,CAAC,sDAAsD,WAAW,EAAE,CAAC,CAAC;oBACnF,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;oBAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBAED,2DAA2D;gBAC3D,MAAM,MAAM,GAAG,kBAAkB,CAAC;oBAChC,SAAS;oBACT,WAAW;oBACX,UAAU,EAAE,UAAU,IAAI,SAAS,EAAE,UAAU;oBAC/C,OAAO,EAAE,SAAS,EAAE,OAAO;iBAC5B,CAAC,CAAC;gBAEH,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC;gBACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,MAAM;IAER,KAAK,MAAM;QACT,QAAQ,EAAE,CAAC;QACX,MAAM;IAER;QACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,8 @@
1
- /**
2
- * RelayClient - Client for connecting to the Agent Relay daemon
3
- *
4
- * This module uses @agent-relay/protocol for wire format handling
5
- * to avoid code duplication with the SDK.
6
- */
7
- import { type AckPayload, type HealthResponsePayload, type MetricsResponsePayload, type MessagesResponsePayload } from '@agent-relay/protocol';
8
- import { type SpawnResult, type ReleaseResult } from '@agent-relay/utils/client-helpers';
1
+ import { RelayClient as SdkRelayClient, type AckPayload, type AgentInfo, type HealthResponsePayload, type MetricsResponsePayload, type MessagesResponsePayload, type SpawnResult, type ReleaseResultPayload } from '@agent-relay/sdk';
2
+ export type QueryMessage = MessagesResponsePayload['messages'][number];
9
3
  export type HealthResponse = HealthResponsePayload;
10
4
  export type MetricsResponse = MetricsResponsePayload;
11
5
  export type MessagesResponse = MessagesResponsePayload;
12
- export type QueryMessage = MessagesResponsePayload['messages'][number];
13
6
  export interface RelayClient {
14
7
  send(to: string, message: string, options?: {
15
8
  thread?: string;
@@ -24,15 +17,16 @@ export interface RelayClient {
24
17
  }): Promise<AckPayload>;
25
18
  broadcast(message: string, options?: {
26
19
  kind?: string;
20
+ data?: Record<string, unknown>;
27
21
  }): Promise<void>;
28
22
  spawn(options: {
29
23
  name: string;
30
24
  cli: string;
31
- task: string;
25
+ task?: string;
32
26
  model?: string;
33
27
  cwd?: string;
34
28
  }): Promise<SpawnResult>;
35
- release(name: string, reason?: string): Promise<ReleaseResult>;
29
+ release(name: string, reason?: string): Promise<ReleaseResultPayload>;
36
30
  subscribe(topic: string): Promise<{
37
31
  success: boolean;
38
32
  error?: string;
@@ -52,12 +46,10 @@ export interface RelayClient {
52
46
  sendChannelMessage(channel: string, message: string, options?: {
53
47
  thread?: string;
54
48
  }): Promise<void>;
55
- /** Admin join: Add any member to a channel (does not require member to be connected) */
56
49
  adminJoinChannel(channel: string, member: string): Promise<{
57
50
  success: boolean;
58
51
  error?: string;
59
52
  }>;
60
- /** Admin remove: Remove any member from a channel */
61
53
  adminRemoveMember(channel: string, member: string): Promise<{
62
54
  success: boolean;
63
55
  error?: string;
@@ -113,20 +105,10 @@ export interface RelayClient {
113
105
  listAgents(options?: {
114
106
  include_idle?: boolean;
115
107
  project?: string;
116
- }): Promise<Array<{
117
- name: string;
118
- cli?: string;
119
- idle?: boolean;
120
- parent?: string;
121
- }>>;
108
+ }): Promise<AgentInfo[]>;
122
109
  listConnectedAgents(options?: {
123
110
  project?: string;
124
- }): Promise<Array<{
125
- name: string;
126
- cli?: string;
127
- idle?: boolean;
128
- parent?: string;
129
- }>>;
111
+ }): Promise<AgentInfo[]>;
130
112
  removeAgent(name: string, options?: {
131
113
  removeMessages?: boolean;
132
114
  }): Promise<{
@@ -137,33 +119,37 @@ export interface RelayClient {
137
119
  getHealth(options?: {
138
120
  include_crashes?: boolean;
139
121
  include_alerts?: boolean;
140
- }): Promise<HealthResponse>;
122
+ }): Promise<HealthResponsePayload>;
141
123
  getMetrics(options?: {
142
124
  agent?: string;
143
- }): Promise<MetricsResponse>;
144
- /**
145
- * Query all messages (not filtered by recipient).
146
- * Useful for dashboard views and message history.
147
- */
125
+ }): Promise<MetricsResponsePayload>;
148
126
  queryMessages(options?: {
149
127
  limit?: number;
150
128
  sinceTs?: number;
129
+ since_ts?: number;
151
130
  from?: string;
152
131
  to?: string;
153
132
  thread?: string;
154
133
  order?: 'asc' | 'desc';
155
134
  }): Promise<QueryMessage[]>;
156
- /**
157
- * Send log output to the daemon for dashboard streaming.
158
- */
159
135
  sendLog(data: string): Promise<void>;
160
136
  }
137
+ export interface RelayClientAdapterOptions {
138
+ agentName: string;
139
+ project?: string;
140
+ projectRoot?: string;
141
+ socketPath?: string;
142
+ }
143
+ export declare function createRelayClientAdapter(client: SdkRelayClient, ctx: RelayClientAdapterOptions): RelayClient;
161
144
  export interface RelayClientOptions {
162
145
  agentName: string;
163
146
  socketPath?: string;
164
147
  project?: string;
148
+ quiet?: boolean;
165
149
  timeout?: number;
166
150
  }
151
+ /**
152
+ * Factory that creates an SDK RelayClient and wraps it with the MCP adapter.
153
+ */
167
154
  export declare function createRelayClient(options: RelayClientOptions): RelayClient;
168
- export default createRelayClient;
169
- //# sourceMappingURL=client.d.ts.map
155
+ //# sourceMappingURL=client-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-adapter.d.ts","sourceRoot":"","sources":["../src/client-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,KAAK,qBAAqB,EAAqB,KAAK,sBAAsB,EAAE,KAAK,uBAAuB,EAAE,KAAK,WAAW,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAIzP,MAAM,MAAM,YAAY,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AACvE,MAAM,MAAM,cAAc,GAAG,qBAAqB,CAAC;AACnD,MAAM,MAAM,eAAe,GAAG,sBAAsB,CAAC;AACrD,MAAM,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/H,WAAW,CACT,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAC/F,OAAO,CAAC,UAAU,CAAC,CAAC;IACvB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvG,KAAK,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACjH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEtE,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxE,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE1E,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9F,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnG,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjG,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAElG,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpH,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAEpF,cAAc,CAAC,OAAO,EAAE;QACtB,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAElD,IAAI,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAEpH,SAAS,IAAI,OAAO,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CACrG,KAAK,CAAC;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC,CACH,CAAC;IAEF,UAAU,CAAC,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACzF,mBAAmB,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1E,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrI,SAAS,CAAC,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC7G,UAAU,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAE1E,aAAa,CAAC,OAAO,CAAC,EAAE;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KACxB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAE5B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAYD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,yBAAyB,GAAG,WAAW,CA6N5G;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAa1E"}
@@ -0,0 +1,227 @@
1
+ import { RelayClient as SdkRelayClient } from '@agent-relay/sdk';
2
+ import { PROTOCOL_VERSION } from '@agent-relay/protocol';
3
+ import { randomUUID } from 'node:crypto';
4
+ async function ensureReady(client) {
5
+ if (client.state !== 'READY') {
6
+ await client.connect();
7
+ }
8
+ }
9
+ function boolResult(ok, action) {
10
+ return ok ? { success: true } : { success: false, error: `Failed to ${action}` };
11
+ }
12
+ export function createRelayClientAdapter(client, ctx) {
13
+ const project = ctx.projectRoot ?? ctx.project ?? 'default';
14
+ const socketPath = ctx.socketPath ?? '';
15
+ return {
16
+ async send(to, message, opts = {}) {
17
+ await ensureReady(client);
18
+ const ok = client.sendMessage(to, message, opts.kind ?? 'message', opts.data, opts.thread);
19
+ if (!ok)
20
+ throw new Error('Failed to send message');
21
+ },
22
+ async sendAndWait(to, message, opts = {}) {
23
+ await ensureReady(client);
24
+ return client.sendAndWait(to, message, {
25
+ thread: opts.thread,
26
+ timeoutMs: opts.timeoutMs,
27
+ kind: opts.kind,
28
+ data: opts.data,
29
+ });
30
+ },
31
+ async broadcast(message, opts = {}) {
32
+ await ensureReady(client);
33
+ const ok = client.broadcast(message, opts.kind ?? 'message', opts.data);
34
+ if (!ok)
35
+ throw new Error('Failed to broadcast message');
36
+ },
37
+ async subscribe(topic) {
38
+ await ensureReady(client);
39
+ const ok = client.subscribe(topic);
40
+ return boolResult(ok, 'subscribe');
41
+ },
42
+ async unsubscribe(topic) {
43
+ await ensureReady(client);
44
+ const ok = client.unsubscribe(topic);
45
+ return boolResult(ok, 'unsubscribe');
46
+ },
47
+ async joinChannel(channel, displayName) {
48
+ await ensureReady(client);
49
+ const ok = client.joinChannel(channel, displayName);
50
+ return boolResult(ok, 'join channel');
51
+ },
52
+ async leaveChannel(channel, reason) {
53
+ await ensureReady(client);
54
+ const ok = client.leaveChannel(channel, reason);
55
+ return boolResult(ok, 'leave channel');
56
+ },
57
+ async sendChannelMessage(channel, message, options = {}) {
58
+ await ensureReady(client);
59
+ const ok = client.sendChannelMessage(channel, message, { thread: options.thread });
60
+ if (!ok)
61
+ throw new Error('Failed to send channel message');
62
+ },
63
+ async adminJoinChannel(channel, member) {
64
+ await ensureReady(client);
65
+ const ok = client.adminJoinChannel(channel, member);
66
+ return boolResult(ok, 'add member to channel');
67
+ },
68
+ async adminRemoveMember(channel, member) {
69
+ await ensureReady(client);
70
+ const ok = client.adminRemoveMember(channel, member);
71
+ return boolResult(ok, 'remove member from channel');
72
+ },
73
+ async bindAsShadow(primaryAgent, opts = {}) {
74
+ await ensureReady(client);
75
+ const ok = client.bindAsShadow(primaryAgent, { speakOn: opts.speakOn });
76
+ return boolResult(ok, 'bind as shadow');
77
+ },
78
+ async unbindAsShadow(primaryAgent) {
79
+ await ensureReady(client);
80
+ const ok = client.unbindAsShadow(primaryAgent);
81
+ return boolResult(ok, 'unbind shadow');
82
+ },
83
+ async createProposal(opts) {
84
+ await ensureReady(client);
85
+ const envelope = {
86
+ v: PROTOCOL_VERSION,
87
+ type: 'PROPOSAL_CREATE',
88
+ id: randomUUID(),
89
+ ts: Date.now(),
90
+ payload: {
91
+ id: opts.id,
92
+ description: opts.description,
93
+ options: opts.options,
94
+ votingMethod: opts.votingMethod ?? 'majority',
95
+ deadline: opts.deadline,
96
+ },
97
+ };
98
+ const ok = client.send?.(envelope) ?? false;
99
+ return boolResult(ok, 'create proposal');
100
+ },
101
+ async vote(opts) {
102
+ await ensureReady(client);
103
+ const envelope = {
104
+ v: PROTOCOL_VERSION,
105
+ type: 'VOTE',
106
+ id: randomUUID(),
107
+ ts: Date.now(),
108
+ payload: {
109
+ proposalId: opts.proposalId,
110
+ vote: opts.vote,
111
+ reason: opts.reason,
112
+ },
113
+ };
114
+ const ok = client.send?.(envelope) ?? false;
115
+ return boolResult(ok, 'vote');
116
+ },
117
+ async spawn(options) {
118
+ await ensureReady(client);
119
+ return client.spawn(options);
120
+ },
121
+ async release(name, reason) {
122
+ await ensureReady(client);
123
+ return client.release(name, reason);
124
+ },
125
+ async getStatus() {
126
+ try {
127
+ await ensureReady(client);
128
+ const status = await client.getStatus();
129
+ return {
130
+ connected: true,
131
+ agentName: ctx.agentName,
132
+ project,
133
+ socketPath,
134
+ daemonVersion: status.version,
135
+ uptime: status.uptime ? `${Math.floor(status.uptime / 1000)}s` : undefined,
136
+ };
137
+ }
138
+ catch {
139
+ return {
140
+ connected: false,
141
+ agentName: ctx.agentName,
142
+ project,
143
+ socketPath,
144
+ };
145
+ }
146
+ },
147
+ async getInbox(options = {}) {
148
+ await ensureReady(client);
149
+ const messages = await client.getInbox({
150
+ limit: options.limit,
151
+ unreadOnly: options.unread_only,
152
+ from: options.from,
153
+ channel: options.channel,
154
+ });
155
+ return messages.map((m) => ({
156
+ id: m.id,
157
+ from: m.from,
158
+ content: m.body,
159
+ channel: m.channel,
160
+ thread: m.thread,
161
+ }));
162
+ },
163
+ async listAgents(options = {}) {
164
+ await ensureReady(client);
165
+ return client.listAgents({
166
+ includeIdle: options.include_idle,
167
+ project: options.project,
168
+ });
169
+ },
170
+ async listConnectedAgents(options = {}) {
171
+ await ensureReady(client);
172
+ return client.listConnectedAgents({
173
+ project: options.project,
174
+ });
175
+ },
176
+ async removeAgent(name, options = {}) {
177
+ await ensureReady(client);
178
+ return client.removeAgent(name, { removeMessages: options.removeMessages });
179
+ },
180
+ async getHealth(options = {}) {
181
+ await ensureReady(client);
182
+ return client.getHealth({
183
+ includeCrashes: options.include_crashes,
184
+ includeAlerts: options.include_alerts,
185
+ });
186
+ },
187
+ async getMetrics(options = {}) {
188
+ await ensureReady(client);
189
+ return client.getMetrics({ agent: options.agent });
190
+ },
191
+ async queryMessages(options = {}) {
192
+ await ensureReady(client);
193
+ const response = await client.queryMessages({
194
+ limit: options.limit,
195
+ sinceTs: options.sinceTs ?? options.since_ts,
196
+ from: options.from,
197
+ to: options.to,
198
+ thread: options.thread,
199
+ order: options.order,
200
+ });
201
+ return response || [];
202
+ },
203
+ async sendLog(data) {
204
+ await ensureReady(client);
205
+ const ok = client.sendLog(data);
206
+ if (!ok)
207
+ throw new Error('Failed to send log');
208
+ },
209
+ };
210
+ }
211
+ /**
212
+ * Factory that creates an SDK RelayClient and wraps it with the MCP adapter.
213
+ */
214
+ export function createRelayClient(options) {
215
+ const sdkClient = new SdkRelayClient({
216
+ agentName: options.agentName,
217
+ socketPath: options.socketPath,
218
+ quiet: options.quiet,
219
+ reconnect: true,
220
+ });
221
+ return createRelayClientAdapter(sdkClient, {
222
+ agentName: options.agentName,
223
+ project: options.project,
224
+ socketPath: options.socketPath,
225
+ });
226
+ }
227
+ //# sourceMappingURL=client-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-adapter.js","sourceRoot":"","sources":["../src/client-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,35 +1,5 @@
1
1
  /**
2
- * Hybrid Client for MCP Tools
3
- *
4
- * IMPORTANT: The file-based writes ONLY work when relay-pty is wrapping the agent.
5
- * relay-pty watches for ->relay-file:* triggers in agent output and processes outbox files.
6
- * The daemon does NOT watch outbox directories directly.
7
- *
8
- * For pure MCP tools (not wrapped by relay-pty), use createRelayClient() instead,
9
- * which communicates directly with the daemon via socket.
10
- *
11
- * This hybrid client is designed for scenarios where:
12
- * - An agent is wrapped by relay-pty
13
- * - File-based writes avoid socket connection overhead
14
- * - Socket is still used for queries (getInbox, listAgents, etc.)
15
- */
16
- import type { RelayClient } from './client.js';
17
- export interface HybridClientOptions {
18
- /** Agent name */
19
- agentName: string;
20
- /** Project root directory (where .agent-relay lives) */
21
- projectRoot: string;
22
- /** Socket path (optional, will discover if not provided) */
23
- socketPath?: string;
24
- /** Project ID */
25
- project?: string;
26
- }
27
- /**
28
- * Create a hybrid client that uses file-based for writes, socket for queries.
29
- */
30
- export declare function createHybridClient(options: HybridClientOptions): RelayClient;
31
- /**
32
- * Discover project root from socket path or environment.
2
+ * Discover project root by locating a .agent-relay directory.
33
3
  */
34
4
  export declare function discoverProjectRoot(): string | null;
35
5
  //# sourceMappingURL=hybrid-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hybrid-client.d.ts","sourceRoot":"","sources":["../src/hybrid-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,MAAM,WAAW,mBAAmB;IAClC,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,WAAW,CA+J5E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAqBnD"}
1
+ {"version":3,"file":"hybrid-client.d.ts","sourceRoot":"","sources":["../src/hybrid-client.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAkBnD"}
@@ -1,166 +1,16 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { dirname, join } from 'node:path';
1
3
  /**
2
- * Hybrid Client for MCP Tools
3
- *
4
- * IMPORTANT: The file-based writes ONLY work when relay-pty is wrapping the agent.
5
- * relay-pty watches for ->relay-file:* triggers in agent output and processes outbox files.
6
- * The daemon does NOT watch outbox directories directly.
7
- *
8
- * For pure MCP tools (not wrapped by relay-pty), use createRelayClient() instead,
9
- * which communicates directly with the daemon via socket.
10
- *
11
- * This hybrid client is designed for scenarios where:
12
- * - An agent is wrapped by relay-pty
13
- * - File-based writes avoid socket connection overhead
14
- * - Socket is still used for queries (getInbox, listAgents, etc.)
15
- */
16
- import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
17
- import { join, dirname } from 'node:path';
18
- import { createRelayClient } from './client.js';
19
- import { discoverSocket } from './cloud.js';
20
- /**
21
- * Create a hybrid client that uses file-based for writes, socket for queries.
22
- */
23
- export function createHybridClient(options) {
24
- const { agentName, projectRoot, project = 'default' } = options;
25
- // Setup directories
26
- const relayDir = join(projectRoot, '.agent-relay');
27
- const outboxDir = join(relayDir, 'outbox', agentName);
28
- const inboxDir = join(relayDir, 'inbox', agentName);
29
- // Ensure directories exist
30
- if (!existsSync(outboxDir)) {
31
- mkdirSync(outboxDir, { recursive: true });
32
- }
33
- if (!existsSync(inboxDir)) {
34
- mkdirSync(inboxDir, { recursive: true });
35
- }
36
- // Get socket path for queries
37
- // Use discoverSocket() which respects cloud workspace config and env overrides.
38
- // Only fall back to relayDir/relay.sock for non-cloud local development.
39
- const discovery = discoverSocket();
40
- const socketPath = options.socketPath || discovery?.socketPath || join(relayDir, 'relay.sock');
41
- if (process.env.DEBUG || process.env.RELAY_DEBUG) {
42
- console.debug('[hybrid-client] Socket path:', socketPath, 'source:', discovery?.source ?? 'fallback', 'isCloud:', discovery?.isCloud ?? false);
43
- }
44
- // Create socket client for queries only
45
- let socketClient = null;
46
- const getSocketClient = () => {
47
- if (!socketClient) {
48
- socketClient = createRelayClient({
49
- agentName,
50
- socketPath,
51
- project,
52
- });
53
- }
54
- return socketClient;
55
- };
56
- // File-based send (write to outbox)
57
- const send = async (to, message, opts = {}) => {
58
- let content = `TO: ${to}\n`;
59
- if (opts.thread) {
60
- content += `THREAD: ${opts.thread}\n`;
61
- }
62
- content += `\n${message}`;
63
- const msgPath = join(outboxDir, 'msg');
64
- writeFileSync(msgPath, content);
65
- // NOTE: relay-pty (not daemon) watches for ->relay-file:msg trigger.
66
- // The agent must output "->relay-file:msg" for relay-pty to process.
67
- };
68
- // File-based sendAndWait (for now, delegate to socket - can improve later)
69
- const sendAndWait = async (to, message, opts = {}) => {
70
- // For await responses, we still use socket since we need the response
71
- // TODO: Implement file-based request/response pattern
72
- return getSocketClient().sendAndWait(to, message, opts);
73
- };
74
- // File-based spawn
75
- const spawn = async (opts) => {
76
- let content = `KIND: spawn\n`;
77
- content += `NAME: ${opts.name}\n`;
78
- content += `CLI: ${opts.cli}\n`;
79
- if (opts.model) {
80
- content += `MODEL: ${opts.model}\n`;
81
- }
82
- if (opts.cwd) {
83
- content += `CWD: ${opts.cwd}\n`;
84
- }
85
- content += `\n${opts.task}`;
86
- const spawnPath = join(outboxDir, 'spawn');
87
- writeFileSync(spawnPath, content);
88
- return { success: true };
89
- };
90
- // File-based release
91
- const release = async (name, reason) => {
92
- let content = `KIND: release\n`;
93
- content += `NAME: ${name}\n`;
94
- if (reason) {
95
- content += `\n${reason}`;
96
- }
97
- const releasePath = join(outboxDir, 'release');
98
- writeFileSync(releasePath, content);
99
- return { success: true };
100
- };
101
- // File-based continuity (NEW - not in original MCP)
102
- const saveContinuity = async (state) => {
103
- let content = `KIND: continuity\n`;
104
- content += `ACTION: save\n\n`;
105
- if (state.currentTask)
106
- content += `Current task: ${state.currentTask}\n`;
107
- if (state.completed)
108
- content += `Completed: ${state.completed}\n`;
109
- if (state.inProgress)
110
- content += `In progress: ${state.inProgress}\n`;
111
- if (state.keyDecisions)
112
- content += `Key decisions: ${state.keyDecisions}\n`;
113
- if (state.files)
114
- content += `Files: ${state.files}\n`;
115
- const continuityPath = join(outboxDir, 'continuity');
116
- writeFileSync(continuityPath, content);
117
- };
118
- const loadContinuity = async () => {
119
- const content = `KIND: continuity\nACTION: load\n`;
120
- const continuityPath = join(outboxDir, 'continuity');
121
- writeFileSync(continuityPath, content);
122
- };
123
- const markUncertain = async (item) => {
124
- const content = `KIND: continuity\nACTION: uncertain\n\n${item}`;
125
- const continuityPath = join(outboxDir, 'continuity');
126
- writeFileSync(continuityPath, content);
127
- };
128
- // Socket-based queries (these work fine over socket)
129
- const getStatus = async () => getSocketClient().getStatus();
130
- const getInbox = async (opts) => getSocketClient().getInbox(opts);
131
- const listAgents = async (opts) => getSocketClient().listAgents(opts);
132
- const getHealth = async (opts) => getSocketClient().getHealth(opts);
133
- const getMetrics = async (opts) => getSocketClient().getMetrics(opts);
134
- return {
135
- send,
136
- sendAndWait,
137
- spawn,
138
- release,
139
- getStatus,
140
- getInbox,
141
- listAgents,
142
- getHealth,
143
- getMetrics,
144
- // Extended methods (not in base RelayClient interface but useful)
145
- saveContinuity,
146
- loadContinuity,
147
- markUncertain,
148
- };
149
- }
150
- /**
151
- * Discover project root from socket path or environment.
4
+ * Discover project root by locating a .agent-relay directory.
152
5
  */
153
6
  export function discoverProjectRoot() {
154
- // Check RELAY_SOCKET env var
155
7
  const socketEnv = process.env.RELAY_SOCKET;
156
8
  if (socketEnv) {
157
- // Socket path is like /path/to/project/.agent-relay/relay.sock
158
9
  const match = socketEnv.match(/^(.+)\/\.agent-relay\/relay\.sock$/);
159
10
  if (match) {
160
11
  return match[1];
161
12
  }
162
13
  }
163
- // Search from cwd upward
164
14
  let dir = process.cwd();
165
15
  while (dir !== '/') {
166
16
  if (existsSync(join(dir, '.agent-relay'))) {