agent-relay 2.2.23 → 2.3.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 (133) hide show
  1. package/dist/index.cjs +199 -3
  2. package/package.json +64 -21
  3. package/packages/acp-bridge/package.json +2 -2
  4. package/packages/api-types/package.json +1 -1
  5. package/packages/benchmark/package.json +5 -5
  6. package/packages/bridge/package.json +7 -7
  7. package/packages/cli-tester/package.json +1 -1
  8. package/packages/config/package.json +2 -2
  9. package/packages/continuity/package.json +2 -2
  10. package/packages/daemon/dist/cloud-sync.d.ts +13 -1
  11. package/packages/daemon/dist/cloud-sync.d.ts.map +1 -1
  12. package/packages/daemon/dist/cloud-sync.js +169 -5
  13. package/packages/daemon/dist/cloud-sync.js.map +1 -1
  14. package/packages/daemon/dist/server.d.ts +5 -0
  15. package/packages/daemon/dist/server.d.ts.map +1 -1
  16. package/packages/daemon/dist/server.js +50 -0
  17. package/packages/daemon/dist/server.js.map +1 -1
  18. package/packages/daemon/package.json +12 -12
  19. package/packages/daemon/src/cloud-sync.ts +201 -5
  20. package/packages/daemon/src/server.ts +61 -0
  21. package/packages/hooks/package.json +4 -4
  22. package/packages/mcp/package.json +5 -5
  23. package/packages/memory/package.json +2 -2
  24. package/packages/policy/package.json +2 -2
  25. package/packages/protocol/package.json +1 -1
  26. package/packages/resiliency/package.json +1 -1
  27. package/packages/sdk/dist/client.d.ts +1 -1
  28. package/packages/sdk/dist/client.js +2 -2
  29. package/packages/sdk/package.json +3 -3
  30. package/packages/sdk/src/client.ts +2 -2
  31. package/packages/sdk-ts/README.md +65 -0
  32. package/packages/sdk-ts/dist/__tests__/integration.test.d.ts +2 -0
  33. package/packages/sdk-ts/dist/__tests__/integration.test.d.ts.map +1 -0
  34. package/packages/sdk-ts/dist/__tests__/integration.test.js +139 -0
  35. package/packages/sdk-ts/dist/__tests__/integration.test.js.map +1 -0
  36. package/packages/sdk-ts/dist/__tests__/quickstart.test.d.ts +2 -0
  37. package/packages/sdk-ts/dist/__tests__/quickstart.test.d.ts.map +1 -0
  38. package/packages/sdk-ts/dist/__tests__/quickstart.test.js +176 -0
  39. package/packages/sdk-ts/dist/__tests__/quickstart.test.js.map +1 -0
  40. package/packages/sdk-ts/dist/browser.d.ts +16 -0
  41. package/packages/sdk-ts/dist/browser.d.ts.map +1 -0
  42. package/packages/sdk-ts/dist/browser.js +19 -0
  43. package/packages/sdk-ts/dist/browser.js.map +1 -0
  44. package/packages/sdk-ts/dist/client.d.ts +91 -0
  45. package/packages/sdk-ts/dist/client.d.ts.map +1 -0
  46. package/packages/sdk-ts/dist/client.js +360 -0
  47. package/packages/sdk-ts/dist/client.js.map +1 -0
  48. package/packages/sdk-ts/dist/consensus-helpers.d.ts +103 -0
  49. package/packages/sdk-ts/dist/consensus-helpers.d.ts.map +1 -0
  50. package/packages/sdk-ts/dist/consensus-helpers.js +147 -0
  51. package/packages/sdk-ts/dist/consensus-helpers.js.map +1 -0
  52. package/packages/sdk-ts/dist/consensus.d.ts +72 -0
  53. package/packages/sdk-ts/dist/consensus.d.ts.map +1 -0
  54. package/packages/sdk-ts/dist/consensus.js +378 -0
  55. package/packages/sdk-ts/dist/consensus.js.map +1 -0
  56. package/packages/sdk-ts/dist/examples/demo.d.ts +2 -0
  57. package/packages/sdk-ts/dist/examples/demo.d.ts.map +1 -0
  58. package/packages/sdk-ts/dist/examples/demo.js +63 -0
  59. package/packages/sdk-ts/dist/examples/demo.js.map +1 -0
  60. package/packages/sdk-ts/dist/examples/example.d.ts +2 -0
  61. package/packages/sdk-ts/dist/examples/example.d.ts.map +1 -0
  62. package/packages/sdk-ts/dist/examples/example.js +80 -0
  63. package/packages/sdk-ts/dist/examples/example.js.map +1 -0
  64. package/packages/sdk-ts/dist/examples/quickstart.d.ts +2 -0
  65. package/packages/sdk-ts/dist/examples/quickstart.d.ts.map +1 -0
  66. package/packages/sdk-ts/dist/examples/quickstart.js +56 -0
  67. package/packages/sdk-ts/dist/examples/quickstart.js.map +1 -0
  68. package/packages/sdk-ts/dist/examples/ralph-loop.d.ts +2 -0
  69. package/packages/sdk-ts/dist/examples/ralph-loop.d.ts.map +1 -0
  70. package/packages/sdk-ts/dist/examples/ralph-loop.js +281 -0
  71. package/packages/sdk-ts/dist/examples/ralph-loop.js.map +1 -0
  72. package/packages/sdk-ts/dist/index.d.ts +9 -0
  73. package/packages/sdk-ts/dist/index.d.ts.map +1 -0
  74. package/packages/sdk-ts/dist/index.js +9 -0
  75. package/packages/sdk-ts/dist/index.js.map +1 -0
  76. package/packages/sdk-ts/dist/logs.d.ts +47 -0
  77. package/packages/sdk-ts/dist/logs.d.ts.map +1 -0
  78. package/packages/sdk-ts/dist/logs.js +137 -0
  79. package/packages/sdk-ts/dist/logs.js.map +1 -0
  80. package/packages/sdk-ts/dist/protocol.d.ts +249 -0
  81. package/packages/sdk-ts/dist/protocol.d.ts.map +1 -0
  82. package/packages/sdk-ts/dist/protocol.js +2 -0
  83. package/packages/sdk-ts/dist/protocol.js.map +1 -0
  84. package/packages/sdk-ts/dist/pty.d.ts +8 -0
  85. package/packages/sdk-ts/dist/pty.d.ts.map +1 -0
  86. package/packages/sdk-ts/dist/pty.js +14 -0
  87. package/packages/sdk-ts/dist/pty.js.map +1 -0
  88. package/packages/sdk-ts/dist/relay.d.ts +118 -0
  89. package/packages/sdk-ts/dist/relay.d.ts.map +1 -0
  90. package/packages/sdk-ts/dist/relay.js +355 -0
  91. package/packages/sdk-ts/dist/relay.js.map +1 -0
  92. package/packages/sdk-ts/dist/relaycast.d.ts +57 -0
  93. package/packages/sdk-ts/dist/relaycast.d.ts.map +1 -0
  94. package/packages/sdk-ts/dist/relaycast.js +110 -0
  95. package/packages/sdk-ts/dist/relaycast.js.map +1 -0
  96. package/packages/sdk-ts/dist/shadow.d.ts +100 -0
  97. package/packages/sdk-ts/dist/shadow.d.ts.map +1 -0
  98. package/packages/sdk-ts/dist/shadow.js +174 -0
  99. package/packages/sdk-ts/dist/shadow.js.map +1 -0
  100. package/packages/sdk-ts/package.json +75 -0
  101. package/packages/sdk-ts/scripts/bundle-agent-relay.mjs +53 -0
  102. package/packages/sdk-ts/src/__tests__/integration.test.ts +170 -0
  103. package/packages/sdk-ts/src/__tests__/quickstart.test.ts +198 -0
  104. package/packages/sdk-ts/src/browser.ts +57 -0
  105. package/packages/sdk-ts/src/client.ts +491 -0
  106. package/packages/sdk-ts/src/consensus-helpers.ts +253 -0
  107. package/packages/sdk-ts/src/consensus.ts +506 -0
  108. package/packages/sdk-ts/src/examples/demo.ts +88 -0
  109. package/packages/sdk-ts/src/examples/example.ts +91 -0
  110. package/packages/sdk-ts/src/examples/quickstart.ts +72 -0
  111. package/packages/sdk-ts/src/examples/ralph-loop.ts +352 -0
  112. package/packages/sdk-ts/src/examples/sample-prd.json +37 -0
  113. package/packages/sdk-ts/src/index.ts +8 -0
  114. package/packages/sdk-ts/src/logs.ts +163 -0
  115. package/packages/sdk-ts/src/protocol.ts +266 -0
  116. package/packages/sdk-ts/src/pty.ts +16 -0
  117. package/packages/sdk-ts/src/relay.ts +454 -0
  118. package/packages/sdk-ts/src/relaycast.ts +143 -0
  119. package/packages/sdk-ts/src/shadow.ts +230 -0
  120. package/packages/sdk-ts/tsconfig.json +16 -0
  121. package/packages/spawner/package.json +1 -1
  122. package/packages/state/package.json +1 -1
  123. package/packages/storage/package.json +2 -2
  124. package/packages/telemetry/package.json +1 -1
  125. package/packages/trajectory/package.json +2 -2
  126. package/packages/user-directory/package.json +2 -2
  127. package/packages/utils/package.json +3 -3
  128. package/packages/wrapper/dist/client.js +1 -1
  129. package/packages/wrapper/package.json +6 -6
  130. package/packages/wrapper/src/client.test.ts +1 -1
  131. package/packages/wrapper/src/client.ts +1 -1
  132. package/packages/mcp/SPEC.md +0 -1922
  133. package/packages/mcp/STAFFING_PLAN.md +0 -294
package/dist/index.cjs CHANGED
@@ -33354,8 +33354,8 @@ var RelayClient = class _RelayClient {
33354
33354
  const result = await this.requestResponse(
33355
33355
  "SPAWN",
33356
33356
  payload,
33357
- 3e4
33358
- // 30 second timeout for spawn
33357
+ 6e4
33358
+ // 60 second timeout for spawn
33359
33359
  );
33360
33360
  return toSpawnResult(result);
33361
33361
  } catch (e) {
@@ -58538,6 +58538,7 @@ var CloudSyncService = class extends import_events7.EventEmitter {
58538
58538
  remoteAgents = [];
58539
58539
  remoteUsers = [];
58540
58540
  connected = false;
58541
+ useLegacyHeartbeat = false;
58541
58542
  storage = null;
58542
58543
  lastMessageSyncTs = 0;
58543
58544
  messageSyncInProgress = false;
@@ -58674,9 +58675,157 @@ var CloudSyncService = class extends import_events7.EventEmitter {
58674
58675
  }
58675
58676
  }
58676
58677
  /**
58677
- * Send heartbeat to cloud
58678
+ * Send heartbeat to cloud using the batched poll endpoint.
58679
+ * Combines heartbeat, messages, agents, and message sync into a single request.
58680
+ * Falls back to legacy individual endpoints if poll endpoint is not available.
58678
58681
  */
58679
58682
  async sendHeartbeat() {
58683
+ if (this.useLegacyHeartbeat) {
58684
+ return this.sendHeartbeatLegacy();
58685
+ }
58686
+ try {
58687
+ const agents = Array.from(this.localAgents.entries()).map(([name, info]) => ({
58688
+ name,
58689
+ status: info.status,
58690
+ isHuman: info.isHuman,
58691
+ avatarUrl: info.avatarUrl
58692
+ }));
58693
+ const syncMessages = await this.getSyncMessagesPayload();
58694
+ const controller = new AbortController();
58695
+ const timeoutId = setTimeout(() => controller.abort(), 15e3);
58696
+ const response = await fetch(`${this.config.cloudUrl}/api/daemons/poll`, {
58697
+ method: "POST",
58698
+ headers: {
58699
+ Authorization: `Bearer ${this.config.apiKey}`,
58700
+ "Content-Type": "application/json"
58701
+ },
58702
+ body: JSON.stringify({
58703
+ agents,
58704
+ metrics: {
58705
+ uptime: process.uptime(),
58706
+ memoryUsage: process.memoryUsage()
58707
+ },
58708
+ ...syncMessages ? { syncMessages, repoFullName: this.repoFullName } : {}
58709
+ }),
58710
+ signal: controller.signal
58711
+ }).finally(() => clearTimeout(timeoutId));
58712
+ if (!response.ok) {
58713
+ if (response.status === 401) {
58714
+ log6.error("Invalid API key. Run `agent-relay cloud link` to re-authenticate.");
58715
+ this.stop();
58716
+ return;
58717
+ }
58718
+ if (response.status === 404) {
58719
+ log6.info("Poll endpoint not available, switching to legacy endpoints permanently");
58720
+ this.useLegacyHeartbeat = true;
58721
+ return this.sendHeartbeatLegacy();
58722
+ }
58723
+ throw new Error(`Poll failed: ${response.status}`);
58724
+ }
58725
+ const data = await response.json();
58726
+ if (data.commands && data.commands.length > 0) {
58727
+ for (const cmd of data.commands) {
58728
+ this.emit("command", cmd);
58729
+ }
58730
+ }
58731
+ if (data.messages) {
58732
+ for (const msg of data.messages) {
58733
+ this.emit("cross-machine-message", msg);
58734
+ }
58735
+ }
58736
+ if (data.allAgents) {
58737
+ this.remoteAgents = data.allAgents.filter((a) => !this.localAgents.has(a.name));
58738
+ if (this.remoteAgents.length > 0) {
58739
+ this.emit("remote-agents-updated", this.remoteAgents);
58740
+ }
58741
+ }
58742
+ if (data.allUsers) {
58743
+ this.remoteUsers = data.allUsers.filter((u) => !this.localAgents.has(u.name));
58744
+ if (this.remoteUsers.length > 0) {
58745
+ this.emit("remote-users-updated", this.remoteUsers);
58746
+ }
58747
+ }
58748
+ if (data.sync && data.sync.synced > 0) {
58749
+ log6.info(`Synced ${data.sync.synced} messages to cloud`, { duplicates: data.sync.duplicates });
58750
+ }
58751
+ if (syncMessages && syncMessages.length > 0 && data.sync && data.sync.synced >= 0) {
58752
+ this.lastMessageSyncTs = Math.max(...syncMessages.map((m) => m.ts));
58753
+ }
58754
+ if (data.pollIntervalMs && data.pollIntervalMs !== this.config.heartbeatInterval) {
58755
+ const newInterval = Math.max(5e3, data.pollIntervalMs);
58756
+ if (newInterval !== this.config.heartbeatInterval) {
58757
+ log6.info(`Adjusting poll interval from ${this.config.heartbeatInterval}ms to ${newInterval}ms (server hint)`);
58758
+ this.config.heartbeatInterval = newInterval;
58759
+ if (this.heartbeatTimer) {
58760
+ clearInterval(this.heartbeatTimer);
58761
+ this.heartbeatTimer = setInterval(() => this.sendHeartbeat().catch((err) => log6.error("Heartbeat failed", { error: String(err) })), this.config.heartbeatInterval);
58762
+ }
58763
+ }
58764
+ }
58765
+ await this.pushAgentMetrics();
58766
+ } catch (error) {
58767
+ const errorMessage = String(error);
58768
+ if (error instanceof Error && error.name === "AbortError") {
58769
+ log6.error("Poll timeout (15s)", { url: this.config.cloudUrl });
58770
+ } else if (errorMessage.includes("fetch failed") || errorMessage.includes("ECONNREFUSED")) {
58771
+ log6.error("Poll network error - cloud server unreachable", {
58772
+ url: this.config.cloudUrl,
58773
+ error: errorMessage
58774
+ });
58775
+ } else if (errorMessage.includes("ENOTFOUND") || errorMessage.includes("getaddrinfo")) {
58776
+ log6.error("Poll DNS error - cannot resolve cloud server", {
58777
+ url: this.config.cloudUrl
58778
+ });
58779
+ } else {
58780
+ log6.error("Poll error", { error: errorMessage });
58781
+ }
58782
+ this.emit("error", error);
58783
+ }
58784
+ }
58785
+ /**
58786
+ * Get messages ready for sync, or null if none available.
58787
+ */
58788
+ async getSyncMessagesPayload() {
58789
+ if (!this.storage || this.messageSyncInProgress || this.config.messageSyncEnabled === false) {
58790
+ return null;
58791
+ }
58792
+ this.messageSyncInProgress = true;
58793
+ try {
58794
+ const batchSize = this.config.messageSyncBatchSize || 100;
58795
+ const messages = await this.storage.getMessages({
58796
+ sinceTs: this.lastMessageSyncTs > 0 ? this.lastMessageSyncTs : void 0,
58797
+ limit: batchSize,
58798
+ order: "asc"
58799
+ });
58800
+ if (messages.length === 0) {
58801
+ return null;
58802
+ }
58803
+ return messages.map((msg) => ({
58804
+ id: msg.id,
58805
+ ts: msg.ts,
58806
+ from: msg.from,
58807
+ to: msg.to,
58808
+ body: msg.body,
58809
+ kind: msg.kind,
58810
+ topic: msg.topic,
58811
+ thread: msg.thread,
58812
+ is_broadcast: msg.is_broadcast,
58813
+ is_urgent: msg.is_urgent,
58814
+ data: msg.data,
58815
+ payload_meta: msg.payloadMeta
58816
+ }));
58817
+ } catch (error) {
58818
+ log6.error("Failed to prepare sync messages", { error: String(error) });
58819
+ return null;
58820
+ } finally {
58821
+ this.messageSyncInProgress = false;
58822
+ }
58823
+ }
58824
+ /**
58825
+ * Legacy heartbeat: individual endpoint calls.
58826
+ * Used as fallback when the batched /api/daemons/poll endpoint is not available.
58827
+ */
58828
+ async sendHeartbeatLegacy() {
58680
58829
  try {
58681
58830
  const agents = Array.from(this.localAgents.entries()).map(([name, info]) => ({
58682
58831
  name,
@@ -60483,6 +60632,10 @@ var Daemon = class _Daemon {
60483
60632
  from: `${msg.from.daemonName}:${msg.from.agent}`,
60484
60633
  to: msg.to
60485
60634
  });
60635
+ if (msg.to === "__spawner__" && msg.metadata?.type === "spawn_command") {
60636
+ this.handleCloudSpawnCommand(msg);
60637
+ return;
60638
+ }
60486
60639
  const targetConnection = Array.from(this.connections).find((c) => c.agentName === msg.to);
60487
60640
  if (!targetConnection) {
60488
60641
  daemonLog.warn("Target agent not found locally", { agent: msg.to });
@@ -60508,6 +60661,49 @@ var Daemon = class _Daemon {
60508
60661
  };
60509
60662
  this.router.route(targetConnection, envelope);
60510
60663
  }
60664
+ /**
60665
+ * Handle a spawn command received from the cloud (e.g., Slack orchestrator).
60666
+ * Parses the spawn_agent command and uses SpawnManager to spawn the agent locally.
60667
+ */
60668
+ async handleCloudSpawnCommand(msg) {
60669
+ if (!this.spawnManager) {
60670
+ daemonLog.warn("Cannot handle cloud spawn command: SpawnManager not enabled");
60671
+ return;
60672
+ }
60673
+ try {
60674
+ const command = JSON.parse(msg.content);
60675
+ if (command.type !== "spawn_agent") {
60676
+ daemonLog.warn("Unknown cloud spawn command type", { type: command.type });
60677
+ return;
60678
+ }
60679
+ daemonLog.info("Spawning agent from cloud command", {
60680
+ name: command.agentName,
60681
+ cli: command.cli,
60682
+ source: msg.from.agent
60683
+ });
60684
+ const spawner = this.spawnManager.getSpawner();
60685
+ const result = await spawner.spawn({
60686
+ name: command.agentName,
60687
+ cli: command.cli,
60688
+ task: command.task || "You were spawned by the cloud orchestrator. Check your inbox for messages.",
60689
+ spawnerName: msg.from.agent
60690
+ });
60691
+ if (result.success) {
60692
+ daemonLog.info("Cloud-spawned agent started", {
60693
+ name: command.agentName,
60694
+ pid: result.pid
60695
+ });
60696
+ } else {
60697
+ daemonLog.error("Cloud spawn failed", {
60698
+ name: command.agentName,
60699
+ error: result.error
60700
+ });
60701
+ }
60702
+ } catch (err) {
60703
+ const error = err instanceof Error ? err.message : String(err);
60704
+ daemonLog.error("Failed to parse cloud spawn command", { error });
60705
+ }
60706
+ }
60511
60707
  /**
60512
60708
  * Send message to agent on another machine via cloud.
60513
60709
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-relay",
3
- "version": "2.2.23",
3
+ "version": "2.3.0",
4
4
  "description": "Real-time agent-to-agent communication system",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -23,7 +23,47 @@
23
23
  "import": "./dist/src/index.js",
24
24
  "default": "./dist/index.cjs"
25
25
  },
26
- "./package.json": "./package.json"
26
+ "./package.json": "./package.json",
27
+ "./broker": {
28
+ "types": "./packages/sdk-ts/dist/index.d.ts",
29
+ "import": "./packages/sdk-ts/dist/index.js",
30
+ "default": "./packages/sdk-ts/dist/index.js"
31
+ },
32
+ "./broker/client": {
33
+ "types": "./packages/sdk-ts/dist/client.d.ts",
34
+ "import": "./packages/sdk-ts/dist/client.js",
35
+ "default": "./packages/sdk-ts/dist/client.js"
36
+ },
37
+ "./broker/protocol": {
38
+ "types": "./packages/sdk-ts/dist/protocol.d.ts",
39
+ "import": "./packages/sdk-ts/dist/protocol.js",
40
+ "default": "./packages/sdk-ts/dist/protocol.js"
41
+ },
42
+ "./broker/relay": {
43
+ "types": "./packages/sdk-ts/dist/relay.d.ts",
44
+ "import": "./packages/sdk-ts/dist/relay.js",
45
+ "default": "./packages/sdk-ts/dist/relay.js"
46
+ },
47
+ "./broker/logs": {
48
+ "types": "./packages/sdk-ts/dist/logs.d.ts",
49
+ "import": "./packages/sdk-ts/dist/logs.js",
50
+ "default": "./packages/sdk-ts/dist/logs.js"
51
+ },
52
+ "./broker/consensus": {
53
+ "types": "./packages/sdk-ts/dist/consensus.d.ts",
54
+ "import": "./packages/sdk-ts/dist/consensus.js",
55
+ "default": "./packages/sdk-ts/dist/consensus.js"
56
+ },
57
+ "./broker/shadow": {
58
+ "types": "./packages/sdk-ts/dist/shadow.d.ts",
59
+ "import": "./packages/sdk-ts/dist/shadow.js",
60
+ "default": "./packages/sdk-ts/dist/shadow.js"
61
+ },
62
+ "./broker/browser": {
63
+ "types": "./packages/sdk-ts/dist/browser.d.ts",
64
+ "import": "./packages/sdk-ts/dist/browser.js",
65
+ "default": "./packages/sdk-ts/dist/browser.js"
66
+ }
27
67
  },
28
68
  "bin": {
29
69
  "agent-relay": "dist/src/cli/index.js"
@@ -56,8 +96,8 @@
56
96
  "scripts": {
57
97
  "postinstall": "node scripts/postinstall.js",
58
98
  "build": "npm run clean && npm run build:rust && turbo run build --filter='./packages/*' && tsc",
59
- "build:sequential": "npm run clean && npm run build:rust && npm run build:protocol && npm run build:config && npm run build:storage && npm run build:state && npm run build:policy && npm run build:trajectory && npm run build:hooks && npm run build:memory && npm run build:utils && npm run build:continuity && npm run build:resiliency && npm run build:user-directory && npm run build:wrapper && npm run build:mcp && npm run build:bridge && npm run build:telemetry && npm run build:daemon && npm run build:sdk && npm run build:api-types && npm run build:spawner && tsc",
60
- "build:workspace": "npm run clean && npm run build:rust && npm run build:protocol && npm run build:config && npm run build:storage && npm run build:state && npm run build:policy && npm run build:trajectory && npm run build:hooks && npm run build:memory && npm run build:utils && npm run build:continuity && npm run build:resiliency && npm run build:user-directory && npm run build:wrapper && npm run build:mcp && npm run build:bridge && npm run build:telemetry && npm run build:daemon && npm run build:sdk && npm run build:api-types && npm run build:spawner && tsc",
99
+ "build:sequential": "npm run clean && npm run build:rust && npm run build:protocol && npm run build:config && npm run build:storage && npm run build:state && npm run build:policy && npm run build:trajectory && npm run build:hooks && npm run build:memory && npm run build:utils && npm run build:continuity && npm run build:resiliency && npm run build:user-directory && npm run build:wrapper && npm run build:mcp && npm run build:bridge && npm run build:telemetry && npm run build:daemon && npm run build:sdk && npm run build:api-types && npm run build:spawner && npm run build:broker-sdk && tsc",
100
+ "build:workspace": "npm run clean && npm run build:rust && npm run build:protocol && npm run build:config && npm run build:storage && npm run build:state && npm run build:policy && npm run build:trajectory && npm run build:hooks && npm run build:memory && npm run build:utils && npm run build:continuity && npm run build:resiliency && npm run build:user-directory && npm run build:wrapper && npm run build:mcp && npm run build:bridge && npm run build:telemetry && npm run build:daemon && npm run build:sdk && npm run build:api-types && npm run build:spawner && npm run build:broker-sdk && tsc",
61
101
  "build:packages": "turbo run build --filter='./packages/*'",
62
102
  "build:packages:watch": "turbo run build --filter='./packages/*' --watch",
63
103
  "build:mcp": "cd packages/mcp && npm run build",
@@ -79,6 +119,7 @@
79
119
  "build:sdk": "cd packages/sdk && npm run build",
80
120
  "build:api-types": "cd packages/api-types && npm run build",
81
121
  "build:spawner": "cd packages/spawner && npm run build",
122
+ "build:broker-sdk": "cd packages/sdk-ts && npm run build",
82
123
  "build:telemetry": "cd packages/telemetry && npm run build",
83
124
  "build:benchmark": "cd packages/benchmark && npm run build",
84
125
  "build:cjs": "node ./scripts/build-cjs.mjs",
@@ -134,23 +175,25 @@
134
175
  },
135
176
  "homepage": "https://github.com/AgentWorkforce/relay#readme",
136
177
  "dependencies": {
137
- "@agent-relay/bridge": "2.2.23",
138
- "@agent-relay/config": "2.2.23",
139
- "@agent-relay/continuity": "2.2.23",
140
- "@agent-relay/daemon": "2.2.23",
141
- "@agent-relay/hooks": "2.2.23",
142
- "@agent-relay/mcp": "2.2.23",
143
- "@agent-relay/protocol": "2.2.23",
144
- "@agent-relay/resiliency": "2.2.23",
145
- "@agent-relay/sdk": "2.2.23",
146
- "@agent-relay/spawner": "2.2.23",
147
- "@agent-relay/state": "2.2.23",
148
- "@agent-relay/storage": "2.2.23",
149
- "@agent-relay/telemetry": "2.2.23",
150
- "@agent-relay/trajectory": "2.2.23",
151
- "@agent-relay/user-directory": "2.2.23",
152
- "@agent-relay/utils": "2.2.23",
153
- "@agent-relay/wrapper": "2.2.23",
178
+ "@agent-relay/bridge": "2.3.0",
179
+ "@agent-relay/config": "2.3.0",
180
+ "@agent-relay/continuity": "2.3.0",
181
+ "@agent-relay/daemon": "2.3.0",
182
+ "@agent-relay/hooks": "2.3.0",
183
+ "@agent-relay/mcp": "2.3.0",
184
+ "@agent-relay/protocol": "2.3.0",
185
+ "@agent-relay/resiliency": "2.3.0",
186
+ "@agent-relay/sdk": "2.3.0",
187
+ "@agent-relay/spawner": "2.3.0",
188
+ "@agent-relay/state": "2.3.0",
189
+ "@agent-relay/storage": "2.3.0",
190
+ "@agent-relay/telemetry": "2.3.0",
191
+ "@agent-relay/trajectory": "2.3.0",
192
+ "@agent-relay/user-directory": "2.3.0",
193
+ "@agent-relay/utils": "2.3.0",
194
+ "@agent-relay/broker-sdk": "2.3.0",
195
+ "@agent-relay/wrapper": "2.3.0",
196
+ "@relaycast/sdk": "^0.2.1",
154
197
  "@modelcontextprotocol/sdk": "^1.0.0",
155
198
  "agent-trajectories": "^0.3.0",
156
199
  "chokidar": "^5.0.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/acp-bridge",
3
- "version": "2.2.23",
3
+ "version": "2.3.0",
4
4
  "description": "ACP (Agent Client Protocol) bridge for Agent Relay - expose relay agents to ACP-compatible editors like Zed",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -46,7 +46,7 @@
46
46
  "access": "public"
47
47
  },
48
48
  "dependencies": {
49
- "@agent-relay/sdk": "2.2.23",
49
+ "@agent-relay/sdk": "2.3.0",
50
50
  "@agentclientprotocol/sdk": "^0.12.0"
51
51
  },
52
52
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/api-types",
3
- "version": "2.2.23",
3
+ "version": "2.3.0",
4
4
  "description": "Shared API types and Zod schemas for Agent Relay",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/benchmark",
3
- "version": "2.2.23",
3
+ "version": "2.3.0",
4
4
  "description": "Performance benchmarking for agent swarms, sub-agents, and single agents using Harbor",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -54,14 +54,14 @@
54
54
  "directory": "packages/benchmark"
55
55
  },
56
56
  "dependencies": {
57
- "@agent-relay/sdk": "2.2.23",
58
- "@agent-relay/protocol": "2.2.23",
59
- "@agent-relay/spawner": "2.2.23",
57
+ "@agent-relay/sdk": "2.3.0",
58
+ "@agent-relay/protocol": "2.3.0",
59
+ "@agent-relay/spawner": "2.3.0",
60
60
  "commander": "^12.1.0",
61
61
  "yaml": "^2.3.4"
62
62
  },
63
63
  "devDependencies": {
64
- "@agent-relay/daemon": "2.2.23",
64
+ "@agent-relay/daemon": "2.3.0",
65
65
  "@types/node": "^22.19.3",
66
66
  "typescript": "^5.9.3",
67
67
  "vitest": "^3.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/bridge",
3
- "version": "2.2.23",
3
+ "version": "2.3.0",
4
4
  "description": "Multi-project bridge client utilities for Relay",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -22,12 +22,12 @@
22
22
  "test:watch": "vitest"
23
23
  },
24
24
  "dependencies": {
25
- "@agent-relay/protocol": "2.2.23",
26
- "@agent-relay/config": "2.2.23",
27
- "@agent-relay/utils": "2.2.23",
28
- "@agent-relay/policy": "2.2.23",
29
- "@agent-relay/user-directory": "2.2.23",
30
- "@agent-relay/wrapper": "2.2.23"
25
+ "@agent-relay/protocol": "2.3.0",
26
+ "@agent-relay/config": "2.3.0",
27
+ "@agent-relay/utils": "2.3.0",
28
+ "@agent-relay/policy": "2.3.0",
29
+ "@agent-relay/user-directory": "2.3.0",
30
+ "@agent-relay/wrapper": "2.3.0"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/node": "^22.19.3",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/cli-tester",
3
- "version": "2.2.23",
3
+ "version": "2.3.0",
4
4
  "description": "Manual interactive testing for CLI authentication flows",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/config",
3
- "version": "2.2.23",
3
+ "version": "2.3.0",
4
4
  "description": "Shared configuration schemas and loaders for Agent Relay",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -83,7 +83,7 @@
83
83
  "test:watch": "vitest"
84
84
  },
85
85
  "dependencies": {
86
- "@agent-relay/protocol": "2.2.23",
86
+ "@agent-relay/protocol": "2.3.0",
87
87
  "zod": "^3.23.8",
88
88
  "zod-to-json-schema": "^3.23.1"
89
89
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/continuity",
3
- "version": "2.2.23",
3
+ "version": "2.3.0",
4
4
  "description": "Session continuity manager for Relay (ledgers, handoffs, resume)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -22,7 +22,7 @@
22
22
  "test:watch": "vitest"
23
23
  },
24
24
  "dependencies": {
25
- "@agent-relay/memory": "2.2.23"
25
+ "@agent-relay/memory": "2.3.0"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/node": "^22.19.3",
@@ -79,6 +79,7 @@ export declare class CloudSyncService extends EventEmitter {
79
79
  private remoteAgents;
80
80
  private remoteUsers;
81
81
  private connected;
82
+ private useLegacyHeartbeat;
82
83
  private storage;
83
84
  private lastMessageSyncTs;
84
85
  private messageSyncInProgress;
@@ -117,9 +118,20 @@ export declare class CloudSyncService extends EventEmitter {
117
118
  */
118
119
  sendCrossMachineMessage(targetDaemonId: string, targetAgent: string, fromAgent: string, content: string, metadata?: Record<string, unknown>): Promise<void>;
119
120
  /**
120
- * Send heartbeat to cloud
121
+ * Send heartbeat to cloud using the batched poll endpoint.
122
+ * Combines heartbeat, messages, agents, and message sync into a single request.
123
+ * Falls back to legacy individual endpoints if poll endpoint is not available.
121
124
  */
122
125
  private sendHeartbeat;
126
+ /**
127
+ * Get messages ready for sync, or null if none available.
128
+ */
129
+ private getSyncMessagesPayload;
130
+ /**
131
+ * Legacy heartbeat: individual endpoint calls.
132
+ * Used as fallback when the batched /api/daemons/poll endpoint is not available.
133
+ */
134
+ private sendHeartbeatLegacy;
123
135
  /**
124
136
  * Sync agents with cloud and get remote agents
125
137
  */
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-sync.d.ts","sourceRoot":"","sources":["../src/cloud-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloud-sync.d.ts","sourceRoot":"","sources":["../src/cloud-sync.ts"],"names":[],"mappings":"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"}