agent-relay 8.9.2 → 9.1.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 (38) hide show
  1. package/dist/cli/agent-relay-mcp.d.ts +9 -0
  2. package/dist/cli/agent-relay-mcp.d.ts.map +1 -1
  3. package/dist/cli/agent-relay-mcp.js +17 -2
  4. package/dist/cli/agent-relay-mcp.js.map +1 -1
  5. package/dist/cli/bootstrap.js +1 -1
  6. package/dist/cli/commands/core.d.ts +0 -2
  7. package/dist/cli/commands/core.d.ts.map +1 -1
  8. package/dist/cli/commands/core.js +1 -74
  9. package/dist/cli/commands/core.js.map +1 -1
  10. package/dist/cli/commands/fleet.d.ts.map +1 -1
  11. package/dist/cli/commands/fleet.js +3 -3
  12. package/dist/cli/commands/fleet.js.map +1 -1
  13. package/dist/cli/commands/integration.d.ts.map +1 -1
  14. package/dist/cli/commands/integration.js +27 -0
  15. package/dist/cli/commands/integration.js.map +1 -1
  16. package/dist/cli/commands/local-agent.d.ts +1 -2
  17. package/dist/cli/commands/local-agent.d.ts.map +1 -1
  18. package/dist/cli/commands/local-agent.js +1 -2
  19. package/dist/cli/commands/local-agent.js.map +1 -1
  20. package/dist/cli/lib/broker-lifecycle.d.ts +8 -7
  21. package/dist/cli/lib/broker-lifecycle.d.ts.map +1 -1
  22. package/dist/cli/lib/broker-lifecycle.js +63 -223
  23. package/dist/cli/lib/broker-lifecycle.js.map +1 -1
  24. package/dist/cli/lib/core-maintenance.d.ts.map +1 -1
  25. package/dist/cli/lib/core-maintenance.js +4 -52
  26. package/dist/cli/lib/core-maintenance.js.map +1 -1
  27. package/dist/cli/lib/fleet-sidecar.d.ts +1 -3
  28. package/dist/cli/lib/fleet-sidecar.d.ts.map +1 -1
  29. package/dist/cli/lib/fleet-sidecar.js +1 -5
  30. package/dist/cli/lib/fleet-sidecar.js.map +1 -1
  31. package/dist/cli/telemetry/events.d.ts +3 -3
  32. package/dist/cli/telemetry/events.d.ts.map +1 -1
  33. package/dist/index.cjs +119 -113
  34. package/package.json +8 -8
  35. package/dist/cli/lib/broker-dashboard.d.ts +0 -12
  36. package/dist/cli/lib/broker-dashboard.d.ts.map +0 -1
  37. package/dist/cli/lib/broker-dashboard.js +0 -431
  38. package/dist/cli/lib/broker-dashboard.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -283,7 +283,7 @@ __export(index_exports, {
283
283
  module.exports = __toCommonJS(index_exports);
284
284
 
285
285
  // ../sdk/node_modules/@relaycast/sdk/dist/version.js
286
- var SDK_VERSION = "4.1.4";
286
+ var SDK_VERSION = "4.2.0";
287
287
 
288
288
  // ../sdk/node_modules/zod/v4/classic/external.js
289
289
  var external_exports = {};
@@ -14913,7 +14913,7 @@ var AgentPresenceInfoSchema = external_exports.object({
14913
14913
  agent_name: external_exports.string(),
14914
14914
  status: external_exports.enum(["online", "offline"])
14915
14915
  });
14916
- var CliTypeSchema = external_exports.enum(["claude", "codex", "gemini", "aider", "goose"]);
14916
+ var CliTypeSchema = external_exports.enum(["claude", "codex", "gemini", "aider", "goose", "opencode", "grok"]);
14917
14917
  var SpawnAgentRequestSchema = external_exports.object({
14918
14918
  name: external_exports.string(),
14919
14919
  cli: CliTypeSchema,
@@ -16265,7 +16265,7 @@ var WsClient = class {
16265
16265
  this.reconnectBaseDelayMs = Number.isFinite(options.reconnectBaseDelayMs) ? Math.max(1, Math.floor(options.reconnectBaseDelayMs)) : 1e3;
16266
16266
  this.reconnectMaxDelayMs = Number.isFinite(options.reconnectMaxDelayMs) ? Math.max(this.reconnectBaseDelayMs, Math.floor(options.reconnectMaxDelayMs)) : 3e4;
16267
16267
  this.circuitBreakerMaxAttempts = Number.isFinite(options.circuitBreakerMaxAttempts) ? Math.max(1, Math.floor(options.circuitBreakerMaxAttempts)) : 30;
16268
- const base = (options.baseUrl ?? "https://gateway.relaycast.dev").replace(/\/+$/, "");
16268
+ const base = (options.baseUrl ?? "https://cast.agentrelay.com").replace(/\/+$/, "");
16269
16269
  this.baseUrl = base.replace(/^http/, "ws");
16270
16270
  this.originClient = origin.client;
16271
16271
  this.originVersion = origin.version;
@@ -17259,7 +17259,7 @@ var HttpClient = class _HttpClient {
17259
17259
  constructor(options) {
17260
17260
  const origin = readInternalOrigin(options) ?? SDK_ORIGIN;
17261
17261
  this._apiKey = options.apiKey;
17262
- this._baseUrl = options.baseUrl ?? "https://gateway.relaycast.dev";
17262
+ this._baseUrl = options.baseUrl ?? "https://cast.agentrelay.com";
17263
17263
  this._originClient = origin.client;
17264
17264
  this._originVersion = origin.version;
17265
17265
  this._originActor = sanitizeOriginActor(origin.originActor ?? options.originActor);
@@ -17496,7 +17496,7 @@ var RelayCast = class _RelayCast {
17496
17496
  }
17497
17497
  static async createWorkspaceWithStatus(name, options) {
17498
17498
  const { apiKey, baseUrl, agentRelayDistinctId: rawAgentRelayDistinctId } = resolveWorkspaceBootstrapOptions(options);
17499
- const requestBaseUrl = baseUrl ?? "https://gateway.relaycast.dev";
17499
+ const requestBaseUrl = baseUrl ?? "https://cast.agentrelay.com";
17500
17500
  const agentRelayDistinctId = sanitizeAgentRelayDistinctId(rawAgentRelayDistinctId);
17501
17501
  const url2 = new URL("/v1/workspaces", requestBaseUrl);
17502
17502
  const res = await fetch(url2.toString(), {
@@ -17531,7 +17531,7 @@ var RelayCast = class _RelayCast {
17531
17531
  }
17532
17532
  static async lookupWorkspace(name, options) {
17533
17533
  const { baseUrl, agentRelayDistinctId: rawAgentRelayDistinctId } = resolveWorkspaceLookupOptions(options);
17534
- const requestBaseUrl = baseUrl ?? "https://gateway.relaycast.dev";
17534
+ const requestBaseUrl = baseUrl ?? "https://cast.agentrelay.com";
17535
17535
  const agentRelayDistinctId = sanitizeAgentRelayDistinctId(rawAgentRelayDistinctId);
17536
17536
  const url2 = new URL(`/v1/workspaces/by-name/${encodeURIComponent(name)}`, requestBaseUrl);
17537
17537
  const res = await fetch(url2.toString(), {
@@ -19154,7 +19154,50 @@ function normalizeMessagingEvent(input) {
19154
19154
  }
19155
19155
  }
19156
19156
 
19157
- // ../sdk/dist/messaging/relaycast.js
19157
+ // ../sdk/dist/messaging/relaycast-translate.js
19158
+ function asRecord(value) {
19159
+ return value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
19160
+ }
19161
+ function readStr(record2, ...keys) {
19162
+ for (const key of keys) {
19163
+ const value = record2[key];
19164
+ if (typeof value === "string")
19165
+ return value;
19166
+ }
19167
+ return void 0;
19168
+ }
19169
+ function readRecord2(record2, ...keys) {
19170
+ for (const key of keys) {
19171
+ const value = record2[key];
19172
+ if (value !== null && typeof value === "object" && !Array.isArray(value)) {
19173
+ return value;
19174
+ }
19175
+ }
19176
+ return void 0;
19177
+ }
19178
+ function readNumber2(record2, ...keys) {
19179
+ for (const key of keys) {
19180
+ const value = record2[key];
19181
+ if (typeof value === "number" && Number.isFinite(value))
19182
+ return value;
19183
+ }
19184
+ return void 0;
19185
+ }
19186
+ function readBoolean2(record2, ...keys) {
19187
+ for (const key of keys) {
19188
+ const value = record2[key];
19189
+ if (typeof value === "boolean")
19190
+ return value;
19191
+ }
19192
+ return void 0;
19193
+ }
19194
+ function readStringArray(record2, key) {
19195
+ const value = record2[key];
19196
+ return Array.isArray(value) ? value.filter((item) => typeof item === "string") : void 0;
19197
+ }
19198
+ function readMention(value) {
19199
+ return typeof value === "boolean" || typeof value === "string" ? value : void 0;
19200
+ }
19158
19201
  function toRegisterActionRequest(input) {
19159
19202
  const inputSchema = input.inputSchema ?? input.parameters;
19160
19203
  return {
@@ -19166,6 +19209,22 @@ function toRegisterActionRequest(input) {
19166
19209
  ...input.availableTo === void 0 ? {} : { availableTo: input.availableTo }
19167
19210
  };
19168
19211
  }
19212
+ function toTriggerRequest(input) {
19213
+ return {
19214
+ ...input.channel !== void 0 ? { channel: input.channel } : {},
19215
+ ...input.pattern !== void 0 ? { pattern: input.pattern } : {},
19216
+ ...input.mention !== void 0 ? { mention: input.mention } : {},
19217
+ ...input.actionName !== void 0 ? { actionName: input.actionName, action_name: input.actionName } : {},
19218
+ ...input.enabled !== void 0 ? { enabled: input.enabled } : {}
19219
+ };
19220
+ }
19221
+ function toCompleteInvocationRequest(data) {
19222
+ return {
19223
+ ...data.output === void 0 ? {} : { output: data.output },
19224
+ ...data.error === void 0 ? {} : { error: data.error },
19225
+ ...data.durationMs === void 0 ? {} : { durationMs: data.durationMs }
19226
+ };
19227
+ }
19169
19228
  function toRelayCapability(raw) {
19170
19229
  const action = raw ?? {};
19171
19230
  const command = action.name ?? action.command;
@@ -19224,65 +19283,6 @@ function toRelayTrigger(raw) {
19224
19283
  enabled: readBoolean2(trigger, "enabled") ?? true
19225
19284
  };
19226
19285
  }
19227
- function toTriggerRequest(input) {
19228
- return {
19229
- ...input.channel !== void 0 ? { channel: input.channel } : {},
19230
- ...input.pattern !== void 0 ? { pattern: input.pattern } : {},
19231
- ...input.mention !== void 0 ? { mention: input.mention } : {},
19232
- ...input.actionName !== void 0 ? { actionName: input.actionName, action_name: input.actionName } : {},
19233
- ...input.enabled !== void 0 ? { enabled: input.enabled } : {}
19234
- };
19235
- }
19236
- function readNumber2(record2, ...keys) {
19237
- for (const key of keys) {
19238
- const value = record2[key];
19239
- if (typeof value === "number" && Number.isFinite(value))
19240
- return value;
19241
- }
19242
- return void 0;
19243
- }
19244
- function readBoolean2(record2, ...keys) {
19245
- for (const key of keys) {
19246
- const value = record2[key];
19247
- if (typeof value === "boolean")
19248
- return value;
19249
- }
19250
- return void 0;
19251
- }
19252
- function readStringArray(record2, key) {
19253
- const value = record2[key];
19254
- return Array.isArray(value) ? value.filter((item) => typeof item === "string") : void 0;
19255
- }
19256
- function readMention(value) {
19257
- return typeof value === "boolean" || typeof value === "string" ? value : void 0;
19258
- }
19259
- function toCompleteInvocationRequest(data) {
19260
- return {
19261
- ...data.output === void 0 ? {} : { output: data.output },
19262
- ...data.error === void 0 ? {} : { error: data.error },
19263
- ...data.durationMs === void 0 ? {} : { durationMs: data.durationMs }
19264
- };
19265
- }
19266
- function asRecord(value) {
19267
- return value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
19268
- }
19269
- function readStr(record2, ...keys) {
19270
- for (const key of keys) {
19271
- const value = record2[key];
19272
- if (typeof value === "string")
19273
- return value;
19274
- }
19275
- return void 0;
19276
- }
19277
- function readRecord2(record2, ...keys) {
19278
- for (const key of keys) {
19279
- const value = record2[key];
19280
- if (value !== null && typeof value === "object" && !Array.isArray(value)) {
19281
- return value;
19282
- }
19283
- }
19284
- return void 0;
19285
- }
19286
19286
  function toRelayWorkspaceFleetNodesConfig(raw) {
19287
19287
  const record2 = asRecord(raw);
19288
19288
  return {
@@ -19291,53 +19291,6 @@ function toRelayWorkspaceFleetNodesConfig(raw) {
19291
19291
  override: readBoolean2(record2, "override") ?? null
19292
19292
  };
19293
19293
  }
19294
- var RelayPlacementError = class extends Error {
19295
- code;
19296
- capability;
19297
- node;
19298
- repo;
19299
- attempts;
19300
- constructor(code, message, context) {
19301
- super(message);
19302
- this.name = "RelayPlacementError";
19303
- this.code = code;
19304
- this.capability = context.capability;
19305
- this.node = context.node;
19306
- this.repo = context.repo;
19307
- this.attempts = context.attempts;
19308
- }
19309
- };
19310
- function nonEmptyPlacement(value, label) {
19311
- const trimmed = value.trim();
19312
- if (!trimmed)
19313
- throw new Error(`${label} is required.`);
19314
- return trimmed;
19315
- }
19316
- function placementActionName(capability) {
19317
- return capability.startsWith("spawn:") ? "spawn" : capability;
19318
- }
19319
- function placementActionInput(input, placement) {
19320
- const payload = { ...input ?? {} };
19321
- payload.capability = placement.capability;
19322
- payload.node = placement.node;
19323
- payload.target_node = placement.node;
19324
- if (placement.repo)
19325
- payload.repo = placement.repo;
19326
- if (placement.ttlMs > 0) {
19327
- payload.ttl_override_ms = placement.ttlMs;
19328
- }
19329
- if (placement.capability.startsWith("spawn:")) {
19330
- const capabilityCli = placement.capability.slice("spawn:".length);
19331
- if (typeof payload.cli === "string" && payload.cli !== capabilityCli) {
19332
- throw new RelayPlacementError("capability_mismatch", `Placement rejected: input cli "${payload.cli}" does not match capability "${placement.capability}"`, { capability: placement.capability, node: placement.node, repo: placement.repo, attempts: 0 });
19333
- }
19334
- payload.cli = capabilityCli;
19335
- }
19336
- return payload;
19337
- }
19338
- function delay(ms) {
19339
- return new Promise((resolve2) => setTimeout(resolve2, ms));
19340
- }
19341
19294
  function normalizeActionInvocationAck(raw) {
19342
19295
  const record2 = asRecord(raw);
19343
19296
  return {
@@ -19405,6 +19358,8 @@ function serializeAttachmentInputs(input) {
19405
19358
  return void 0;
19406
19359
  return input.map((attachment) => typeof attachment === "string" ? attachment : JSON.stringify(attachment));
19407
19360
  }
19361
+
19362
+ // ../sdk/dist/messaging/relaycast-client.js
19408
19363
  function createRelaycastClient(options) {
19409
19364
  if (options.relaycast)
19410
19365
  return options.relaycast;
@@ -19422,6 +19377,57 @@ function createRelaycastClient(options) {
19422
19377
  })
19423
19378
  }));
19424
19379
  }
19380
+
19381
+ // ../sdk/dist/messaging/relaycast-placement.js
19382
+ var RelayPlacementError = class extends Error {
19383
+ code;
19384
+ capability;
19385
+ node;
19386
+ repo;
19387
+ attempts;
19388
+ constructor(code, message, context) {
19389
+ super(message);
19390
+ this.name = "RelayPlacementError";
19391
+ this.code = code;
19392
+ this.capability = context.capability;
19393
+ this.node = context.node;
19394
+ this.repo = context.repo;
19395
+ this.attempts = context.attempts;
19396
+ }
19397
+ };
19398
+ function nonEmptyPlacement(value, label) {
19399
+ const trimmed = value.trim();
19400
+ if (!trimmed)
19401
+ throw new Error(`${label} is required.`);
19402
+ return trimmed;
19403
+ }
19404
+ function placementActionName(capability) {
19405
+ return capability.startsWith("spawn:") ? "spawn" : capability;
19406
+ }
19407
+ function placementActionInput(input, placement) {
19408
+ const payload = { ...input ?? {} };
19409
+ payload.capability = placement.capability;
19410
+ payload.node = placement.node;
19411
+ payload.target_node = placement.node;
19412
+ if (placement.repo)
19413
+ payload.repo = placement.repo;
19414
+ if (placement.ttlMs > 0) {
19415
+ payload.ttl_override_ms = placement.ttlMs;
19416
+ }
19417
+ if (placement.capability.startsWith("spawn:")) {
19418
+ const capabilityCli = placement.capability.slice("spawn:".length);
19419
+ if (typeof payload.cli === "string" && payload.cli !== capabilityCli) {
19420
+ throw new RelayPlacementError("capability_mismatch", `Placement rejected: input cli "${payload.cli}" does not match capability "${placement.capability}"`, { capability: placement.capability, node: placement.node, repo: placement.repo, attempts: 0 });
19421
+ }
19422
+ payload.cli = capabilityCli;
19423
+ }
19424
+ return payload;
19425
+ }
19426
+ function delay(ms) {
19427
+ return new Promise((resolve2) => setTimeout(resolve2, ms));
19428
+ }
19429
+
19430
+ // ../sdk/dist/messaging/relaycast.js
19425
19431
  var RelaycastMessagingClient = class {
19426
19432
  capabilities;
19427
19433
  relaycast;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-relay",
3
- "version": "8.9.2",
3
+ "version": "9.1.0",
4
4
  "description": "Real-time agent-to-agent communication system",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -43,14 +43,14 @@
43
43
  "pack:validate": "npm pack --dry-run"
44
44
  },
45
45
  "dependencies": {
46
- "@agent-relay/cloud": "8.9.2",
47
- "@agent-relay/config": "8.9.2",
48
- "@agent-relay/fleet": "8.9.2",
49
- "@agent-relay/harness-driver": "8.9.2",
50
- "@agent-relay/sdk": "8.9.2",
51
- "@agent-relay/utils": "8.9.2",
46
+ "@agent-relay/cloud": "9.1.0",
47
+ "@agent-relay/config": "9.1.0",
48
+ "@agent-relay/fleet": "9.1.0",
49
+ "@agent-relay/harness-driver": "9.1.0",
50
+ "@agent-relay/sdk": "9.1.0",
51
+ "@agent-relay/utils": "9.1.0",
52
52
  "@modelcontextprotocol/sdk": "^1.0.0",
53
- "@relaycast/sdk": "^4.1.2",
53
+ "@relaycast/sdk": "^4.1.6",
54
54
  "@relayflows/cli": "^1.0.1",
55
55
  "@xterm/headless": "^6.0.0",
56
56
  "commander": "^12.1.0",
@@ -1,12 +0,0 @@
1
- import type { CoreDependencies, CoreProjectPaths, SpawnedProcess } from '../commands/core.js';
2
- export declare function resolveDashboardPortWithFallback(dashboardPort: number, dashboardPortCandidates: number, deps: CoreDependencies): Promise<number>;
3
- export declare function getDefaultDashboardRelayUrl(apiPort: number): string;
4
- export declare function resolveDashboardRelayUrl(apiPort: number, deps: CoreDependencies): string;
5
- export declare function isDebugLikeLoggingEnabled(deps: CoreDependencies): boolean;
6
- export declare function normalizeDashboardPath(rawDashboardPath: string | undefined): string | undefined;
7
- export declare function startDashboardWithFallback(paths: CoreProjectPaths, dashboardPort: number, apiPort: number, deps: CoreDependencies, enableVerboseLogging: boolean, relayApiKey?: string, brokerApiKey?: string): Promise<{
8
- process: SpawnedProcess;
9
- port: number | null;
10
- }>;
11
- export declare function waitForDashboard(port: number, process: SpawnedProcess, deps: Pick<CoreDependencies, 'warn'>, isShuttingDown: () => boolean): Promise<void>;
12
- //# sourceMappingURL=broker-dashboard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broker-dashboard.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/broker-dashboard.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE9F,wBAAsB,gCAAgC,CACpD,aAAa,EAAE,MAAM,EACrB,uBAAuB,EAAE,MAAM,EAC/B,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,MAAM,CAAC,CAajB;AAiHD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAOxF;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAGzE;AAqDD,wBAAgB,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAO/F;AAoSD,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,gBAAgB,EACvB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,gBAAgB,EACtB,oBAAoB,EAAE,OAAO,EAC7B,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,OAAO,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CA+B3D;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,EACpC,cAAc,EAAE,MAAM,OAAO,GAC5B,OAAO,CAAC,IAAI,CAAC,CAmBf"}