agent-relay 3.1.18 → 3.1.20

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 (93) hide show
  1. package/README.md +13 -1
  2. package/bin/agent-relay-broker-darwin-arm64 +0 -0
  3. package/bin/agent-relay-broker-darwin-x64 +0 -0
  4. package/bin/agent-relay-broker-linux-arm64 +0 -0
  5. package/bin/agent-relay-broker-linux-x64 +0 -0
  6. package/dist/index.cjs +446 -192
  7. package/dist/src/cli/bootstrap.js +0 -15
  8. package/dist/src/cli/bootstrap.js.map +1 -1
  9. package/dist/src/cli/commands/agent-management.d.ts +1 -0
  10. package/dist/src/cli/commands/agent-management.d.ts.map +1 -1
  11. package/dist/src/cli/commands/agent-management.js +235 -16
  12. package/dist/src/cli/commands/agent-management.js.map +1 -1
  13. package/dist/src/cli/commands/core.js +1 -1
  14. package/dist/src/cli/commands/core.js.map +1 -1
  15. package/dist/src/cli/index.d.ts.map +1 -1
  16. package/dist/src/cli/index.js +13 -1
  17. package/dist/src/cli/index.js.map +1 -1
  18. package/dist/src/cli/lib/broker-lifecycle.d.ts.map +1 -1
  19. package/dist/src/cli/lib/broker-lifecycle.js +3 -5
  20. package/dist/src/cli/lib/broker-lifecycle.js.map +1 -1
  21. package/dist/src/cli/lib/connect-daytona.js +2 -2
  22. package/dist/src/cli/lib/connect-daytona.js.map +1 -1
  23. package/dist/src/cli/lib/core-maintenance.d.ts.map +1 -1
  24. package/dist/src/cli/lib/core-maintenance.js +52 -0
  25. package/dist/src/cli/lib/core-maintenance.js.map +1 -1
  26. package/install.sh +32 -0
  27. package/package.json +13 -13
  28. package/packages/acp-bridge/package.json +2 -2
  29. package/packages/config/package.json +1 -1
  30. package/packages/hooks/package.json +4 -4
  31. package/packages/memory/package.json +2 -2
  32. package/packages/openclaw/dist/cli.js +79 -2
  33. package/packages/openclaw/dist/cli.js.map +1 -1
  34. package/packages/openclaw/dist/config.d.ts +28 -1
  35. package/packages/openclaw/dist/config.d.ts.map +1 -1
  36. package/packages/openclaw/dist/config.js +145 -0
  37. package/packages/openclaw/dist/config.js.map +1 -1
  38. package/packages/openclaw/dist/index.d.ts +2 -2
  39. package/packages/openclaw/dist/index.d.ts.map +1 -1
  40. package/packages/openclaw/dist/index.js +1 -1
  41. package/packages/openclaw/dist/index.js.map +1 -1
  42. package/packages/openclaw/dist/setup.d.ts.map +1 -1
  43. package/packages/openclaw/dist/setup.js +24 -1
  44. package/packages/openclaw/dist/setup.js.map +1 -1
  45. package/packages/openclaw/dist/types.d.ts +23 -0
  46. package/packages/openclaw/dist/types.d.ts.map +1 -1
  47. package/packages/openclaw/package.json +2 -2
  48. package/packages/openclaw/skill/SKILL.md +46 -0
  49. package/packages/openclaw/src/cli.ts +90 -2
  50. package/packages/openclaw/src/config.ts +165 -1
  51. package/packages/openclaw/src/index.ts +7 -1
  52. package/packages/openclaw/src/setup.ts +26 -1
  53. package/packages/openclaw/src/types.ts +25 -0
  54. package/packages/policy/package.json +2 -2
  55. package/packages/sdk/dist/__tests__/integration.test.js +35 -0
  56. package/packages/sdk/dist/__tests__/integration.test.js.map +1 -1
  57. package/packages/sdk/dist/client.d.ts +9 -0
  58. package/packages/sdk/dist/client.d.ts.map +1 -1
  59. package/packages/sdk/dist/client.js +48 -25
  60. package/packages/sdk/dist/client.js.map +1 -1
  61. package/packages/sdk/dist/protocol.d.ts +1 -0
  62. package/packages/sdk/dist/protocol.d.ts.map +1 -1
  63. package/packages/sdk/dist/relay.d.ts +8 -0
  64. package/packages/sdk/dist/relay.d.ts.map +1 -1
  65. package/packages/sdk/dist/relay.js +50 -5
  66. package/packages/sdk/dist/relay.js.map +1 -1
  67. package/packages/sdk/dist/workflows/cli.js +2 -0
  68. package/packages/sdk/dist/workflows/cli.js.map +1 -1
  69. package/packages/sdk/dist/workflows/runner.d.ts +11 -0
  70. package/packages/sdk/dist/workflows/runner.d.ts.map +1 -1
  71. package/packages/sdk/dist/workflows/runner.js +350 -167
  72. package/packages/sdk/dist/workflows/runner.js.map +1 -1
  73. package/packages/sdk/dist/workflows/trajectory.d.ts +6 -1
  74. package/packages/sdk/dist/workflows/trajectory.d.ts.map +1 -1
  75. package/packages/sdk/dist/workflows/trajectory.js +16 -2
  76. package/packages/sdk/dist/workflows/trajectory.js.map +1 -1
  77. package/packages/sdk/package.json +2 -2
  78. package/packages/sdk/src/__tests__/integration.test.ts +49 -0
  79. package/packages/sdk/src/__tests__/orchestration-upgrades.test.ts +50 -1
  80. package/packages/sdk/src/client.ts +57 -24
  81. package/packages/sdk/src/protocol.ts +1 -1
  82. package/packages/sdk/src/relay.ts +70 -5
  83. package/packages/sdk/src/workflows/cli.ts +2 -0
  84. package/packages/sdk/src/workflows/runner.ts +414 -185
  85. package/packages/sdk/src/workflows/trajectory.ts +22 -2
  86. package/packages/sdk-py/pyproject.toml +1 -1
  87. package/packages/sdk-py/src/agent_relay/client.py +18 -1
  88. package/packages/sdk-py/src/agent_relay/relay.py +4 -0
  89. package/packages/sdk-py/src/agent_relay/types.py +4 -0
  90. package/packages/telemetry/package.json +1 -1
  91. package/packages/trajectory/package.json +2 -2
  92. package/packages/user-directory/package.json +2 -2
  93. package/packages/utils/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,eAAO,MAAM,6BAA6B,QAAQ,CAAC;AAEnD,MAAM,WAAW,8BAA8B;IAC7C,sEAAsE;IACtE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,8BAA8B,CAAC;CAC1C;AAED,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,YAAY,CAAC,EAAE,yBAAyB,CAAC;CAC1C;AAED,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,4EAA4E;IAC5E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,8CAA8C;IAC9C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,yCAAyC;IACzC,SAAS,CAAC,EAAE,sBAAsB,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;CACzE;AAED,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,EAAE,EAAE,OAAO,CAAC;IACZ,qEAAqE;IACrE,MAAM,EAAE,WAAW,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC9C,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,eAAO,MAAM,6BAA6B,QAAQ,CAAC;AAEnD,MAAM,WAAW,8BAA8B;IAC7C,sEAAsE;IACtE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,8BAA8B,CAAC;CAC1C;AAED,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,YAAY,CAAC,EAAE,yBAAyB,CAAC;CAC1C;AAED,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,4EAA4E;IAC5E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,8CAA8C;IAC9C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,yCAAyC;IACzC,SAAS,CAAC,EAAE,sBAAsB,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;CACzE;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,EAAE,EAAE,OAAO,CAAC;IACZ,qEAAqE;IACrE,MAAM,EAAE,WAAW,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC9C,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/openclaw",
3
- "version": "3.1.18",
3
+ "version": "3.1.20",
4
4
  "description": "Relaycast bridge for OpenClaw — messaging, identity, runtime setup, and local spawning",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -29,7 +29,7 @@
29
29
  "postinstall": "node -e \"try{require('child_process').execSync('ldd --version 2>&1',{stdio:'pipe'})}catch{try{require('child_process').execSync('apk info gcompat 2>/dev/null',{stdio:'pipe'})}catch{console.warn('\\n\\u26a0\\ufe0f @agent-relay/openclaw: Alpine detected without gcompat. Spawning requires glibc.\\n Install with: apk add gcompat libstdc++\\n')}}\""
30
30
  },
31
31
  "dependencies": {
32
- "@agent-relay/sdk": "3.1.18",
32
+ "@agent-relay/sdk": "3.1.20",
33
33
  "@relaycast/sdk": "^0.4.0",
34
34
  "ws": "^8.0.0"
35
35
  },
@@ -97,6 +97,45 @@ Expected signals:
97
97
 
98
98
  These signals mean setup completed, but they do **not** prove end-to-end message sending. Treat `mcporter call relaycast.post_message ...` as the real health check.
99
99
 
100
+ ## 2b) Setup (Multi-workspace)
101
+
102
+ OpenClaw now supports multiple Relaycast workspaces in one config.
103
+
104
+ ### Configure additional workspace entries
105
+
106
+ ```bash
107
+ relay-openclaw add-workspace rk_live_ABC123 --alias team-a
108
+ relay-openclaw add-workspace rk_live_DEF456 --alias team-b --default
109
+ relay-openclaw list-workspaces
110
+ relay-openclaw switch-workspace team-a
111
+ ```
112
+
113
+ Notes:
114
+
115
+ - `add-workspace` stores entries in `~/.openclaw/workspace/relaycast/workspaces.json`.
116
+ - Aliases (`--alias`) make switching easier than copying workspace UUIDs.
117
+ - Use `--default` on `add-workspace` to mark that workspace as default, or switch later with `switch-workspace`.
118
+ - `setup` seeds the first workspace from existing `.env` settings so existing users stay compatible.
119
+
120
+ Stored shape (when ≥2 workspaces):
121
+
122
+ ```json
123
+ {
124
+ "memberships": [
125
+ { "api_key": "rk_live_ABC", "workspace_alias": "team-a" },
126
+ { "api_key": "rk_live_DEF", "workspace_alias": "team-b", "workspace_id": "ws_..." }
127
+ ],
128
+ "default_workspace_id": "team-a"
129
+ }
130
+ ```
131
+
132
+ When multi-workspace mode is configured, setup writes these to MCP process env:
133
+
134
+ - `RELAY_WORKSPACES_JSON=<json>` (serialized payload above)
135
+ - `RELAY_DEFAULT_WORKSPACE=<alias-or-id>`
136
+
137
+ You must restart the relay gateway after switching default workspaces for the change to take effect.
138
+
100
139
  ---
101
140
 
102
141
  ## 3) Verify Connectivity
@@ -183,6 +222,13 @@ There are **two different credentials** in a healthy setup:
183
222
  - `RELAY_API_KEY` (`rk_live_...`) = workspace-level key used for setup, workspace inspection, and general API reachability
184
223
  - `RELAY_AGENT_TOKEN` (`at_live_...`) = per-agent token used by the MCP messaging tools for posting, replying, and DMs
185
224
 
225
+ In multi-workspace mode, active workspace selection is driven by:
226
+
227
+ - `RELAY_WORKSPACES_JSON` (serialized list of workspace memberships passed to MCP/gateway)
228
+ - `RELAY_DEFAULT_WORKSPACE` (alias or workspace ID of the default workspace)
229
+
230
+ For backward compatibility, single-workspace mode still relies on `RELAY_API_KEY` in `~/.openclaw/workspace/relaycast/.env`.
231
+
186
232
  Storage locations:
187
233
 
188
234
  - `workspace/relaycast/.env` holds workspace-level config (`RELAY_API_KEY`, `RELAY_CLAW_NAME`, etc.)
@@ -1,6 +1,6 @@
1
1
  import { createRequire } from 'node:module';
2
2
  import { setup } from './setup.js';
3
- import { loadGatewayConfig } from './config.js';
3
+ import { loadGatewayConfig, addWorkspace, listWorkspaces, switchWorkspace } from './config.js';
4
4
  import { InboundGateway } from './gateway.js';
5
5
  import { listOpenClaws, releaseOpenClaw, spawnOpenClaw } from './control.js';
6
6
  import { startMcpServer } from './mcp/server.js';
@@ -27,6 +27,9 @@ Usage:
27
27
  relay-openclaw list List OpenClaws in a workspace
28
28
  relay-openclaw release Release an OpenClaw by agent name
29
29
  relay-openclaw mcp-server Start MCP server (spawn/list/release tools)
30
+ relay-openclaw add-workspace Add a workspace to multi-workspace config
31
+ relay-openclaw list-workspaces List all configured workspaces
32
+ relay-openclaw switch-workspace Switch the default/active workspace
30
33
  relay-openclaw runtime-setup Run container runtime setup (auth, config, identity, patching)
31
34
  relay-openclaw help Show this help
32
35
  relay-openclaw --version Show version
@@ -46,6 +49,11 @@ Control API options:
46
49
  --system-prompt <txt> Optional system prompt
47
50
  --reason <text> Optional release reason
48
51
 
52
+ Multi-workspace options:
53
+ --alias <name> Human-friendly alias for the workspace
54
+ --workspace-id <id> Workspace UUID
55
+ --default Set as the default workspace
56
+
49
57
  Examples:
50
58
  relay-openclaw setup rk_live_abc123
51
59
  relay-openclaw setup --name my-claw --channels general,alerts
@@ -53,6 +61,10 @@ Examples:
53
61
  relay-openclaw spawn --workspace-id ws_uuid --name researcher-1
54
62
  relay-openclaw list --workspace-id ws_uuid
55
63
  relay-openclaw release --workspace-id ws_uuid --agent claw-ws_uuid-researcher-1
64
+ relay-openclaw add-workspace rk_live_abc123 --alias team-a
65
+ relay-openclaw add-workspace rk_live_def456 --alias team-b --default
66
+ relay-openclaw list-workspaces
67
+ relay-openclaw switch-workspace team-a
56
68
  `.trim());
57
69
  }
58
70
 
@@ -100,7 +112,8 @@ async function runSetup(
100
112
 
101
113
  if (result.ok) {
102
114
  console.log(result.message);
103
- console.log(`\nWorkspace key: ${result.apiKey}`);
115
+ const maskedApiKey = result.apiKey.slice(0, 12) + '...';
116
+ console.log(`\nWorkspace key: ${maskedApiKey}`);
104
117
  console.log('Share this key with other claws to join the same workspace.');
105
118
  } else {
106
119
  console.error(`Setup failed: ${result.message}`);
@@ -234,6 +247,72 @@ async function runRuntimeSetup(flags: Record<string, string>): Promise<void> {
234
247
  console.log(` Workspace: ${result.workspaceId}`);
235
248
  }
236
249
 
250
+ async function runAddWorkspace(
251
+ positional: string[],
252
+ flags: Record<string, string>,
253
+ ): Promise<void> {
254
+ const apiKey = positional[0];
255
+ if (!apiKey) {
256
+ console.error('add-workspace requires a workspace API key as the first argument.');
257
+ console.error('Usage: relay-openclaw add-workspace <rk_live_...> [--alias <name>] [--workspace-id <id>] [--default]');
258
+ process.exit(1);
259
+ }
260
+
261
+ const config = await addWorkspace({
262
+ api_key: apiKey,
263
+ ...(flags['alias'] ? { workspace_alias: flags['alias'] } : {}),
264
+ ...(flags['workspace-id'] ? { workspace_id: flags['workspace-id'] } : {}),
265
+ ...(flags['default'] !== undefined ? { is_default: flags['default'] === 'true' } : {}),
266
+ });
267
+
268
+ const entry = config.workspaces.find((w) => w.api_key === apiKey);
269
+ const label = entry?.workspace_alias
270
+ ?? entry?.workspace_id
271
+ ?? apiKey.slice(0, 12) + '...';
272
+ console.log(`Workspace "${label}" added.`);
273
+ console.log(`Total workspaces: ${config.workspaces.length}`);
274
+ if (config.default_workspace) {
275
+ console.log(`Default workspace: ${config.default_workspace}`);
276
+ }
277
+ }
278
+
279
+ async function runListWorkspaces(): Promise<void> {
280
+ const workspaces = await listWorkspaces();
281
+ if (workspaces.length === 0) {
282
+ console.log('No workspaces configured.');
283
+ console.log('Add one with: relay-openclaw add-workspace <rk_live_...> --alias <name>');
284
+ return;
285
+ }
286
+
287
+ console.log(`Configured workspaces (${workspaces.length}):\n`);
288
+ for (const w of workspaces) {
289
+ const defaultMarker = w.is_default ? ' (default)' : '';
290
+ const alias = w.workspace_alias ?? '(no alias)';
291
+ const maskedKey = w.api_key.slice(0, 12) + '...';
292
+ const wsId = w.workspace_id ? ` [${w.workspace_id}]` : '';
293
+ console.log(` ${alias}${wsId} — ${maskedKey}${defaultMarker}`);
294
+ }
295
+ }
296
+
297
+ async function runSwitchWorkspace(positional: string[]): Promise<void> {
298
+ const identifier = positional[0];
299
+ if (!identifier) {
300
+ console.error('switch-workspace requires a workspace alias or ID.');
301
+ console.error('Usage: relay-openclaw switch-workspace <alias-or-id>');
302
+ process.exit(1);
303
+ }
304
+
305
+ const result = await switchWorkspace(identifier);
306
+ if (!result) {
307
+ console.error(`Workspace "${identifier}" not found.`);
308
+ console.error('Run "relay-openclaw list-workspaces" to see available workspaces.');
309
+ process.exit(1);
310
+ }
311
+
312
+ console.log(`Switched default workspace to "${identifier}".`);
313
+ console.log('The .env config has been updated. Restart the gateway to apply.');
314
+ }
315
+
237
316
  async function main(): Promise<void> {
238
317
  const { command, positional, flags } = parseArgs(process.argv);
239
318
 
@@ -256,6 +335,15 @@ async function main(): Promise<void> {
256
335
  case 'release':
257
336
  await runRelease(flags);
258
337
  break;
338
+ case 'add-workspace':
339
+ await runAddWorkspace(positional, flags);
340
+ break;
341
+ case 'list-workspaces':
342
+ await runListWorkspaces();
343
+ break;
344
+ case 'switch-workspace':
345
+ await runSwitchWorkspace(positional);
346
+ break;
259
347
  case 'mcp-server':
260
348
  await startMcpServer();
261
349
  break;
@@ -3,7 +3,7 @@ import { join, dirname, basename } from 'node:path';
3
3
  import { homedir } from 'node:os';
4
4
  import { existsSync, readFileSync } from 'node:fs';
5
5
 
6
- import type { GatewayConfig } from './types.js';
6
+ import type { GatewayConfig, WorkspaceEntry, WorkspacesConfig } from './types.js';
7
7
 
8
8
  function envValue(vars: Record<string, string>, key: string): string | undefined {
9
9
  const processValue = process.env[key]?.trim();
@@ -330,3 +330,167 @@ export async function saveGatewayConfig(config: GatewayConfig): Promise<void> {
330
330
 
331
331
  await writeFile(join(relaycastDir, '.env'), env, 'utf-8');
332
332
  }
333
+
334
+ // ---------------------------------------------------------------------------
335
+ // Multi-workspace config: ~/.openclaw/workspace/relaycast/workspaces.json
336
+ // ---------------------------------------------------------------------------
337
+
338
+ /**
339
+ * Path to the workspaces.json file.
340
+ */
341
+ async function workspacesConfigPath(): Promise<string> {
342
+ const detection = await detectOpenClaw();
343
+ return join(detection.workspaceDir, 'relaycast', 'workspaces.json');
344
+ }
345
+
346
+ /**
347
+ * Load multi-workspace config. Returns null if the file doesn't exist.
348
+ */
349
+ export async function loadWorkspacesConfig(): Promise<WorkspacesConfig | null> {
350
+ const configPath = await workspacesConfigPath();
351
+ if (!existsSync(configPath)) return null;
352
+
353
+ try {
354
+ const raw = await readFile(configPath, 'utf-8');
355
+ return JSON.parse(raw) as WorkspacesConfig;
356
+ } catch (err) {
357
+ const message = err instanceof Error ? err.message : String(err);
358
+ console.warn(`Warning: failed to parse ${configPath}: ${message}`);
359
+ console.warn('The file may be corrupted. Existing workspace config will not be modified.');
360
+ return { workspaces: [], default_workspace: undefined };
361
+ }
362
+ }
363
+
364
+ /**
365
+ * Save multi-workspace config to disk.
366
+ */
367
+ export async function saveWorkspacesConfig(config: WorkspacesConfig): Promise<void> {
368
+ const configPath = await workspacesConfigPath();
369
+ await mkdir(dirname(configPath), { recursive: true });
370
+ await writeFile(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
371
+ }
372
+
373
+ /**
374
+ * Add a workspace entry. If an entry with the same api_key already exists,
375
+ * it is updated in place. The first workspace added becomes the default.
376
+ */
377
+ export async function addWorkspace(entry: WorkspaceEntry): Promise<WorkspacesConfig> {
378
+ let config = await loadWorkspacesConfig();
379
+
380
+ if (!config) {
381
+ // Bootstrap from existing single-workspace .env if available
382
+ const gateway = await loadGatewayConfig();
383
+ if (gateway) {
384
+ config = {
385
+ workspaces: [{
386
+ api_key: gateway.apiKey,
387
+ workspace_alias: gateway.clawName,
388
+ is_default: true,
389
+ }],
390
+ default_workspace: gateway.clawName,
391
+ };
392
+ } else {
393
+ config = { workspaces: [], default_workspace: undefined };
394
+ }
395
+ }
396
+
397
+ const normalizeWorkspaceLabel = (workspace: WorkspaceEntry): string => {
398
+ return workspace.workspace_alias ?? workspace.workspace_id ?? workspace.api_key;
399
+ };
400
+
401
+ // Check for existing entry with same api_key
402
+ const hasExplicitDefault = entry.is_default !== undefined;
403
+ const existingIdx = config.workspaces.findIndex((w) => w.api_key === entry.api_key);
404
+ if (existingIdx >= 0) {
405
+ const existingEntry = config.workspaces[existingIdx];
406
+ config.workspaces[existingIdx] = { ...existingEntry, ...entry };
407
+ if (!hasExplicitDefault) {
408
+ config.workspaces[existingIdx].is_default = existingEntry.is_default;
409
+ }
410
+ const updatedEntry = config.workspaces[existingIdx];
411
+ if (updatedEntry.is_default) {
412
+ config.default_workspace = normalizeWorkspaceLabel(updatedEntry);
413
+ }
414
+ } else {
415
+ config.workspaces.push(entry);
416
+ }
417
+
418
+ const targetWorkspace = config.workspaces.find((w) => w.api_key === entry.api_key);
419
+ if (!targetWorkspace) {
420
+ throw new Error(`Failed to locate workspace entry for ${entry.api_key}`);
421
+ }
422
+
423
+ // If this is explicitly default, or this is the first workspace without an existing default,
424
+ // set it as default.
425
+ if (
426
+ entry.is_default === true ||
427
+ (config.default_workspace === undefined && config.workspaces.length === 1)
428
+ ) {
429
+ config.default_workspace = normalizeWorkspaceLabel(targetWorkspace);
430
+ for (const w of config.workspaces) {
431
+ w.is_default = w.api_key === targetWorkspace.api_key;
432
+ }
433
+ }
434
+
435
+ await saveWorkspacesConfig(config);
436
+ return config;
437
+ }
438
+
439
+ /**
440
+ * List all configured workspaces.
441
+ */
442
+ export async function listWorkspaces(): Promise<WorkspaceEntry[]> {
443
+ const config = await loadWorkspacesConfig();
444
+ return config?.workspaces ?? [];
445
+ }
446
+
447
+ /**
448
+ * Switch the default workspace by alias or workspace_id.
449
+ * Returns the updated config, or null if the identifier was not found.
450
+ */
451
+ export async function switchWorkspace(identifier: string): Promise<WorkspacesConfig | null> {
452
+ const config = await loadWorkspacesConfig();
453
+ if (!config) return null;
454
+
455
+ const target = config.workspaces.find(
456
+ (w) => w.workspace_alias === identifier || w.workspace_id === identifier
457
+ );
458
+ if (!target) return null;
459
+
460
+ config.default_workspace = target.workspace_alias ?? target.workspace_id ?? target.api_key;
461
+ for (const w of config.workspaces) {
462
+ w.is_default = w.api_key === target.api_key;
463
+ }
464
+
465
+ // Also update the single-workspace .env to match the new default
466
+ const gateway = await loadGatewayConfig();
467
+ if (gateway) {
468
+ gateway.apiKey = target.api_key;
469
+ gateway.clawName = target.workspace_alias ?? target.workspace_id ?? target.api_key;
470
+ await saveGatewayConfig(gateway);
471
+ }
472
+
473
+ await saveWorkspacesConfig(config);
474
+ return config;
475
+ }
476
+
477
+ /**
478
+ * Build RELAY_WORKSPACES_JSON value for the broker from stored workspaces.
479
+ * Returns null if there are fewer than 2 workspaces (single-workspace mode).
480
+ */
481
+ export function buildWorkspacesJson(config: WorkspacesConfig): string | null {
482
+ if (config.workspaces.length < 2) return null;
483
+
484
+ const memberships = config.workspaces.map((w) => ({
485
+ api_key: w.api_key,
486
+ ...(w.workspace_id ? { workspace_id: w.workspace_id } : {}),
487
+ ...(w.workspace_alias ? { workspace_alias: w.workspace_alias } : {}),
488
+ }));
489
+
490
+ const payload: Record<string, unknown> = { memberships };
491
+ if (config.default_workspace) {
492
+ payload.default_workspace_id = config.default_workspace;
493
+ }
494
+
495
+ return JSON.stringify(payload);
496
+ }
@@ -1,5 +1,5 @@
1
1
  // ── Types ──────────────────────────────────────────────────────────────
2
- export type { GatewayConfig, InboundMessage, DeliveryResult } from './types.js';
2
+ export type { GatewayConfig, InboundMessage, DeliveryResult, WorkspaceEntry, WorkspacesConfig } from './types.js';
3
3
 
4
4
  // ── Gateway ────────────────────────────────────────────────────────────
5
5
  export { InboundGateway, type GatewayOptions, type RelaySender } from './gateway.js';
@@ -9,6 +9,12 @@ export {
9
9
  detectOpenClaw,
10
10
  loadGatewayConfig,
11
11
  saveGatewayConfig,
12
+ loadWorkspacesConfig,
13
+ saveWorkspacesConfig,
14
+ addWorkspace,
15
+ listWorkspaces,
16
+ switchWorkspace,
17
+ buildWorkspacesJson,
12
18
  type OpenClawDetection,
13
19
  } from './config.js';
14
20
 
@@ -9,7 +9,7 @@ import { randomBytes } from 'node:crypto';
9
9
 
10
10
  import { RelayCast } from '@relaycast/sdk';
11
11
 
12
- import { detectOpenClaw, saveGatewayConfig } from './config.js';
12
+ import { detectOpenClaw, saveGatewayConfig, addWorkspace, loadWorkspacesConfig, buildWorkspacesJson } from './config.js';
13
13
  import { InboundGateway } from './gateway.js';
14
14
  import { DEFAULT_OPENCLAW_GATEWAY_PORT, type GatewayConfig } from './types.js';
15
15
 
@@ -353,14 +353,31 @@ export async function setup(options: SetupOptions): Promise<SetupResult> {
353
353
  };
354
354
  await saveGatewayConfig(gatewayConfig);
355
355
 
356
+ // Register this workspace in the multi-workspace config
357
+ await addWorkspace({
358
+ api_key: apiKey,
359
+ workspace_alias: clawName,
360
+ is_default: true,
361
+ });
362
+
356
363
  // Register MCP servers via mcporter (global binary or npx fallback)
357
364
  let mcpConfigured = false;
358
365
  {
366
+ // Build env args for mcporter, including multi-workspace JSON if available
367
+ const wsConfig = await loadWorkspacesConfig();
368
+ const workspacesJson = wsConfig ? buildWorkspacesJson(wsConfig) : null;
369
+
359
370
  const envArgs = [
360
371
  '--env', `RELAY_API_KEY=${apiKey}`,
361
372
  ...(baseUrl !== 'https://api.relaycast.dev'
362
373
  ? ['--env', `RELAY_BASE_URL=${baseUrl}`]
363
374
  : []),
375
+ ...(workspacesJson
376
+ ? ['--env', `RELAY_WORKSPACES_JSON=${workspacesJson}`]
377
+ : []),
378
+ ...(wsConfig?.default_workspace
379
+ ? ['--env', `RELAY_DEFAULT_WORKSPACE=${wsConfig.default_workspace}`]
380
+ : []),
364
381
  ];
365
382
 
366
383
  let mcp: { cmd: string; prefix: string[] } | null = null;
@@ -538,6 +555,14 @@ Once installed, use the Relaycast MCP tools:
538
555
  - \`reply_to_thread\` — Reply in a thread
539
556
  - \`check_inbox\` — See unread messages
540
557
 
558
+ ## Multi-Workspace
559
+
560
+ \`\`\`bash
561
+ relay-openclaw add-workspace <key> --alias <name> # Add a workspace
562
+ relay-openclaw list-workspaces # List all workspaces
563
+ relay-openclaw switch-workspace <alias> # Switch default workspace
564
+ \`\`\`
565
+
541
566
  ## Commands
542
567
 
543
568
  \`\`\`bash
@@ -66,6 +66,31 @@ export interface InboundMessage {
66
66
  kind?: 'channel' | 'thread' | 'dm' | 'groupdm' | 'command' | 'reaction';
67
67
  }
68
68
 
69
+ /**
70
+ * A stored workspace entry for multi-workspace support.
71
+ * Matches the broker's WorkspaceSource schema in src/auth.rs.
72
+ */
73
+ export interface WorkspaceEntry {
74
+ /** Workspace API key (rk_live_*). */
75
+ api_key: string;
76
+ /** Optional workspace ID (ws_*). */
77
+ workspace_id?: string;
78
+ /** Human-friendly alias for this workspace. */
79
+ workspace_alias?: string;
80
+ /** Whether this is the default/active workspace. */
81
+ is_default?: boolean;
82
+ }
83
+
84
+ /**
85
+ * Multi-workspace config stored at ~/.openclaw/workspace/relaycast/workspaces.json.
86
+ */
87
+ export interface WorkspacesConfig {
88
+ /** All configured workspace entries. */
89
+ workspaces: WorkspaceEntry[];
90
+ /** Alias or workspace_id of the default workspace. */
91
+ default_workspace?: string;
92
+ }
93
+
69
94
  export interface DeliveryResult {
70
95
  /** Whether delivery succeeded. */
71
96
  ok: boolean;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/policy",
3
- "version": "3.1.18",
3
+ "version": "3.1.20",
4
4
  "description": "Agent policy management with multi-level fallback (repo, local PRPM, cloud workspace)",
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/config": "3.1.18"
25
+ "@agent-relay/config": "3.1.20"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/node": "^22.19.3",
@@ -167,4 +167,39 @@ test('sdk includes broker stderr details when startup fails', async (t) => {
167
167
  fs.rmSync(cwd, { recursive: true, force: true });
168
168
  }
169
169
  });
170
+ test('sdk writes broker lifecycle logs to stderr so stdout stays machine-readable', async (t) => {
171
+ const binaryPath = resolveBinaryPath();
172
+ if (!fs.existsSync(binaryPath)) {
173
+ t.skip(`agent-relay-broker binary not found at ${binaryPath}`);
174
+ return;
175
+ }
176
+ const loggedStdout = [];
177
+ const loggedStderr = [];
178
+ const originalLog = console.log;
179
+ const originalError = console.error;
180
+ console.log = (...args) => {
181
+ loggedStdout.push(args.map((arg) => String(arg)).join(' '));
182
+ };
183
+ console.error = (...args) => {
184
+ loggedStderr.push(args.map((arg) => String(arg)).join(' '));
185
+ };
186
+ let client;
187
+ try {
188
+ client = await AgentRelayClient.start({
189
+ binaryPath,
190
+ requestTimeoutMs: 8_000,
191
+ shutdownTimeoutMs: 2_000,
192
+ env: process.env,
193
+ });
194
+ await client.listAgents();
195
+ assert.equal(loggedStdout.some((line) => line.includes('[broker] Starting:') || line.includes('[broker] Broker ready')), false, `broker lifecycle logs should not be written to stdout: ${loggedStdout.join('\n')}`);
196
+ assert.ok(loggedStderr.some((line) => line.includes('[broker] Starting:')), `expected broker start log on stderr, got: ${loggedStderr.join('\n')}`);
197
+ assert.ok(loggedStderr.some((line) => line.includes('[broker] Broker ready')), `expected broker ready log on stderr, got: ${loggedStderr.join('\n')}`);
198
+ }
199
+ finally {
200
+ console.log = originalLog;
201
+ console.error = originalError;
202
+ await client?.shutdown();
203
+ }
204
+ });
170
205
  //# sourceMappingURL=integration.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../src/__tests__/integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../src/__tests__/integration.test.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,9 @@ export interface SpawnPtyInput {
28
28
  restartPolicy?: RestartPolicy;
29
29
  /** Name of a previously released agent whose continuity context should be injected. */
30
30
  continueFrom?: string;
31
+ /** When true, skip injecting the relay MCP configuration and protocol prompt into the spawned agent.
32
+ * Useful for minor tasks where relay messaging is not needed, saving tokens. */
33
+ skipRelayPrompt?: boolean;
31
34
  }
32
35
  export interface SpawnHeadlessInput {
33
36
  name: string;
@@ -35,6 +38,9 @@ export interface SpawnHeadlessInput {
35
38
  args?: string[];
36
39
  channels?: string[];
37
40
  task?: string;
41
+ /** When true, skip injecting the relay MCP configuration and protocol prompt into the spawned agent.
42
+ * Useful for minor tasks where relay messaging is not needed, saving tokens. */
43
+ skipRelayPrompt?: boolean;
38
44
  }
39
45
  export type AgentTransport = 'pty' | 'headless';
40
46
  export interface SpawnProviderInput {
@@ -52,6 +58,9 @@ export interface SpawnProviderInput {
52
58
  idleThresholdSecs?: number;
53
59
  restartPolicy?: RestartPolicy;
54
60
  continueFrom?: string;
61
+ /** When true, skip injecting the relay MCP configuration and protocol prompt into the spawned agent.
62
+ * Useful for minor tasks where relay messaging is not needed, saving tokens. */
63
+ skipRelayPrompt?: boolean;
55
64
  }
56
65
  export interface SendMessageInput {
57
66
  to: string;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}