@agent-relay/sdk 3.2.3 → 3.2.4

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 (109) hide show
  1. package/dist/communicate/a2a-bridge.d.ts +25 -0
  2. package/dist/communicate/a2a-bridge.d.ts.map +1 -0
  3. package/dist/communicate/a2a-bridge.js +89 -0
  4. package/dist/communicate/a2a-bridge.js.map +1 -0
  5. package/dist/communicate/a2a-server.d.ts +31 -0
  6. package/dist/communicate/a2a-server.d.ts.map +1 -0
  7. package/dist/communicate/a2a-server.js +220 -0
  8. package/dist/communicate/a2a-server.js.map +1 -0
  9. package/dist/communicate/a2a-transport.d.ts +48 -0
  10. package/dist/communicate/a2a-transport.d.ts.map +1 -0
  11. package/dist/communicate/a2a-transport.js +302 -0
  12. package/dist/communicate/a2a-transport.js.map +1 -0
  13. package/dist/communicate/a2a-types.d.ts +107 -0
  14. package/dist/communicate/a2a-types.d.ts.map +1 -0
  15. package/dist/communicate/a2a-types.js +209 -0
  16. package/dist/communicate/a2a-types.js.map +1 -0
  17. package/dist/communicate/adapters/claude-sdk.d.ts +28 -0
  18. package/dist/communicate/adapters/claude-sdk.d.ts.map +1 -0
  19. package/dist/communicate/adapters/claude-sdk.js +47 -0
  20. package/dist/communicate/adapters/claude-sdk.js.map +1 -0
  21. package/dist/communicate/adapters/crewai.d.ts +42 -0
  22. package/dist/communicate/adapters/crewai.d.ts.map +1 -0
  23. package/dist/communicate/adapters/crewai.js +95 -0
  24. package/dist/communicate/adapters/crewai.js.map +1 -0
  25. package/dist/communicate/adapters/google-adk.d.ts +53 -0
  26. package/dist/communicate/adapters/google-adk.d.ts.map +1 -0
  27. package/dist/communicate/adapters/google-adk.js +77 -0
  28. package/dist/communicate/adapters/google-adk.js.map +1 -0
  29. package/dist/communicate/adapters/index.d.ts +7 -0
  30. package/dist/communicate/adapters/index.d.ts.map +1 -0
  31. package/dist/communicate/adapters/index.js +7 -0
  32. package/dist/communicate/adapters/index.js.map +1 -0
  33. package/dist/communicate/adapters/langgraph.d.ts +40 -0
  34. package/dist/communicate/adapters/langgraph.d.ts.map +1 -0
  35. package/dist/communicate/adapters/langgraph.js +77 -0
  36. package/dist/communicate/adapters/langgraph.js.map +1 -0
  37. package/dist/communicate/adapters/openai-agents.d.ts +25 -0
  38. package/dist/communicate/adapters/openai-agents.d.ts.map +1 -0
  39. package/dist/communicate/adapters/openai-agents.js +70 -0
  40. package/dist/communicate/adapters/openai-agents.js.map +1 -0
  41. package/dist/communicate/adapters/pi.d.ts +45 -0
  42. package/dist/communicate/adapters/pi.d.ts.map +1 -0
  43. package/dist/communicate/adapters/pi.js +59 -0
  44. package/dist/communicate/adapters/pi.js.map +1 -0
  45. package/dist/communicate/core.d.ts +58 -0
  46. package/dist/communicate/core.d.ts.map +1 -0
  47. package/dist/communicate/core.js +128 -0
  48. package/dist/communicate/core.js.map +1 -0
  49. package/dist/communicate/index.d.ts +4 -0
  50. package/dist/communicate/index.d.ts.map +1 -0
  51. package/dist/communicate/index.js +4 -0
  52. package/dist/communicate/index.js.map +1 -0
  53. package/dist/communicate/transport.d.ts +36 -0
  54. package/dist/communicate/transport.d.ts.map +1 -0
  55. package/dist/communicate/transport.js +371 -0
  56. package/dist/communicate/transport.js.map +1 -0
  57. package/dist/communicate/types.d.ts +58 -0
  58. package/dist/communicate/types.d.ts.map +1 -0
  59. package/dist/communicate/types.js +66 -0
  60. package/dist/communicate/types.js.map +1 -0
  61. package/dist/workflows/builder.d.ts +35 -5
  62. package/dist/workflows/builder.d.ts.map +1 -1
  63. package/dist/workflows/builder.js +81 -7
  64. package/dist/workflows/builder.js.map +1 -1
  65. package/dist/workflows/cli.js +14 -1
  66. package/dist/workflows/cli.js.map +1 -1
  67. package/dist/workflows/runner.d.ts +10 -2
  68. package/dist/workflows/runner.d.ts.map +1 -1
  69. package/dist/workflows/runner.js +95 -1
  70. package/dist/workflows/runner.js.map +1 -1
  71. package/dist/workflows/types.d.ts +11 -0
  72. package/dist/workflows/types.d.ts.map +1 -1
  73. package/package.json +48 -2
  74. package/dist/__tests__/completion-pipeline.test.d.ts +0 -14
  75. package/dist/__tests__/completion-pipeline.test.d.ts.map +0 -1
  76. package/dist/__tests__/completion-pipeline.test.js +0 -1476
  77. package/dist/__tests__/completion-pipeline.test.js.map +0 -1
  78. package/dist/__tests__/contract-fixtures.test.d.ts +0 -2
  79. package/dist/__tests__/contract-fixtures.test.d.ts.map +0 -1
  80. package/dist/__tests__/contract-fixtures.test.js +0 -152
  81. package/dist/__tests__/contract-fixtures.test.js.map +0 -1
  82. package/dist/__tests__/e2e-owner-review.test.d.ts +0 -16
  83. package/dist/__tests__/e2e-owner-review.test.d.ts.map +0 -1
  84. package/dist/__tests__/e2e-owner-review.test.js +0 -640
  85. package/dist/__tests__/e2e-owner-review.test.js.map +0 -1
  86. package/dist/__tests__/facade.test.d.ts +0 -2
  87. package/dist/__tests__/facade.test.d.ts.map +0 -1
  88. package/dist/__tests__/facade.test.js +0 -305
  89. package/dist/__tests__/facade.test.js.map +0 -1
  90. package/dist/__tests__/integration.test.d.ts +0 -2
  91. package/dist/__tests__/integration.test.d.ts.map +0 -1
  92. package/dist/__tests__/integration.test.js +0 -205
  93. package/dist/__tests__/integration.test.js.map +0 -1
  94. package/dist/__tests__/pty.test.d.ts +0 -2
  95. package/dist/__tests__/pty.test.d.ts.map +0 -1
  96. package/dist/__tests__/pty.test.js +0 -20
  97. package/dist/__tests__/pty.test.js.map +0 -1
  98. package/dist/__tests__/quickstart.test.d.ts +0 -2
  99. package/dist/__tests__/quickstart.test.d.ts.map +0 -1
  100. package/dist/__tests__/quickstart.test.js +0 -176
  101. package/dist/__tests__/quickstart.test.js.map +0 -1
  102. package/dist/__tests__/spawn-from-env.test.d.ts +0 -2
  103. package/dist/__tests__/spawn-from-env.test.d.ts.map +0 -1
  104. package/dist/__tests__/spawn-from-env.test.js +0 -222
  105. package/dist/__tests__/spawn-from-env.test.js.map +0 -1
  106. package/dist/__tests__/unit.test.d.ts +0 -2
  107. package/dist/__tests__/unit.test.d.ts.map +0 -1
  108. package/dist/__tests__/unit.test.js +0 -357
  109. package/dist/__tests__/unit.test.js.map +0 -1
@@ -0,0 +1,371 @@
1
+ import { setTimeout as sleep } from 'node:timers/promises';
2
+ import { WebSocket } from 'ws';
3
+ import { RelayAuthError, RelayConfigError, RelayConnectionError, resolveRelayConfig, } from './types.js';
4
+ const HTTP_RETRY_ATTEMPTS = 3;
5
+ const WS_RECONNECT_MAX_DELAY_MS = 30_000;
6
+ export class RelayTransport {
7
+ agentName;
8
+ config;
9
+ agentId;
10
+ token;
11
+ ws;
12
+ messageCallback;
13
+ closing = false;
14
+ reconnectDelayMs = 1_000;
15
+ reconnectTimer;
16
+ wsConnectPromise;
17
+ constructor(agentName, config = {}) {
18
+ this.agentName = agentName;
19
+ this.config = resolveRelayConfig(config);
20
+ }
21
+ async connect() {
22
+ this.requireConfig({ requireWorkspace: true });
23
+ this.closing = false;
24
+ await this.registerAgent();
25
+ await this.connectWebSocket();
26
+ }
27
+ async disconnect() {
28
+ this.closing = true;
29
+ this.clearReconnectTimer();
30
+ const socket = this.ws;
31
+ this.ws = undefined;
32
+ this.wsConnectPromise = undefined;
33
+ if (socket && socket.readyState !== WebSocket.CLOSED) {
34
+ await Promise.race([
35
+ new Promise((resolve) => {
36
+ socket.once('close', () => resolve());
37
+ socket.close();
38
+ }),
39
+ new Promise((resolve) => setTimeout(resolve, 2_000)),
40
+ ]);
41
+ }
42
+ if (this.agentId) {
43
+ try {
44
+ await this.unregisterAgent();
45
+ }
46
+ catch {
47
+ // Best-effort cleanup.
48
+ }
49
+ }
50
+ this.closing = false;
51
+ }
52
+ onWsMessage(callback) {
53
+ this.messageCallback = callback;
54
+ }
55
+ async registerAgent() {
56
+ this.requireConfig({ requireWorkspace: true });
57
+ if (this.agentId && this.token) {
58
+ return this.agentId;
59
+ }
60
+ let payload;
61
+ try {
62
+ payload = await this.sendHttp('POST', '/v1/agents', { name: this.agentName, type: 'agent' });
63
+ }
64
+ catch (error) {
65
+ if (error instanceof RelayConnectionError && error.statusCode === 409) {
66
+ const agentPayload = await this.sendHttp('GET', `/v1/agents/${encodeURIComponent(this.agentName)}`);
67
+ const agentData = agentPayload.data ?? agentPayload;
68
+ this.agentId = String(agentData.id);
69
+ const rotatePayload = await this.sendHttp('POST', `/v1/agents/${encodeURIComponent(this.agentName)}/rotate-token`);
70
+ const rotateData = rotatePayload.data ?? rotatePayload;
71
+ this.token = String(rotateData.token);
72
+ return this.agentId;
73
+ }
74
+ throw error;
75
+ }
76
+ const data = payload.data ?? payload;
77
+ this.agentId = String(data.id);
78
+ this.token = String(data.token);
79
+ return this.agentId;
80
+ }
81
+ async unregisterAgent() {
82
+ if (!this.agentId || !this.token) {
83
+ return;
84
+ }
85
+ this.agentId = undefined;
86
+ const agentToken = this.token;
87
+ this.token = undefined;
88
+ await this.sendHttpAsAgent('POST', '/v1/agents/disconnect', undefined, agentToken);
89
+ }
90
+ async sendDm(to, text) {
91
+ await this.ensureRegistered();
92
+ const payload = await this.sendHttpAsAgent('POST', '/v1/dm', { to, text });
93
+ const data = payload.data ?? payload;
94
+ return String(data.id ?? data.message_id ?? '');
95
+ }
96
+ async postMessage(channel, text) {
97
+ await this.ensureRegistered();
98
+ const payload = await this.sendHttpAsAgent('POST', `/v1/channels/${encodeURIComponent(channel)}/messages`, { text });
99
+ const data = payload.data ?? payload;
100
+ return String(data.id ?? data.message_id ?? '');
101
+ }
102
+ async reply(messageId, text) {
103
+ await this.ensureRegistered();
104
+ const payload = await this.sendHttpAsAgent('POST', `/v1/messages/${encodeURIComponent(messageId)}/replies`, { text });
105
+ const data = payload.data ?? payload;
106
+ return String(data.id ?? data.message_id ?? '');
107
+ }
108
+ async checkInbox() {
109
+ await this.ensureRegistered();
110
+ const payload = await this.sendHttpAsAgent('GET', '/v1/inbox');
111
+ const data = payload.data ?? payload;
112
+ const messages = [];
113
+ for (const mention of (data.mentions ?? [])) {
114
+ messages.push(this.messageFromPayload(mention));
115
+ }
116
+ for (const dm of (data.unread_dms ?? [])) {
117
+ const last = dm.last_message;
118
+ if (last?.text) {
119
+ messages.push({
120
+ sender: String(dm.from ?? dm.agent_name ?? 'unknown'),
121
+ text: String(last.text),
122
+ channel: undefined,
123
+ threadId: typeof dm.conversation_id === 'string' ? dm.conversation_id : undefined,
124
+ timestamp: typeof last.created_at === 'string' ? undefined : last.created_at,
125
+ messageId: typeof last.id === 'string' ? last.id : undefined,
126
+ });
127
+ }
128
+ }
129
+ return messages;
130
+ }
131
+ async listAgents() {
132
+ const payload = await this.sendHttp('GET', '/v1/agents');
133
+ const data = payload.data ?? payload.agents ?? [];
134
+ if (Array.isArray(data)) {
135
+ return data.map((a) => (typeof a === 'string' ? a : String(a.name ?? a)));
136
+ }
137
+ return [];
138
+ }
139
+ async ensureRegistered() {
140
+ if (this.agentId && this.token) {
141
+ return;
142
+ }
143
+ await this.registerAgent();
144
+ }
145
+ requireConfig(options = {}) {
146
+ if (!this.config.apiKey) {
147
+ throw new RelayConfigError('Missing RELAY_API_KEY. Set the environment variable or pass apiKey to RelayConfig.');
148
+ }
149
+ if (options.requireWorkspace && !this.config.workspace) {
150
+ throw new RelayConfigError('Missing RELAY_WORKSPACE. Set the environment variable or pass workspace to RelayConfig.');
151
+ }
152
+ }
153
+ async sendHttpAsAgent(method, path, payload, overrideToken) {
154
+ this.requireConfig();
155
+ const agentToken = overrideToken ?? this.token;
156
+ if (!agentToken) {
157
+ throw new RelayConfigError('Agent not registered; no agent token available.');
158
+ }
159
+ const url = `${this.config.baseUrl}${path}`;
160
+ const headers = {
161
+ authorization: `Bearer ${agentToken}`,
162
+ };
163
+ if (payload !== undefined) {
164
+ headers['content-type'] = 'application/json';
165
+ }
166
+ for (let attempt = 1; attempt <= HTTP_RETRY_ATTEMPTS; attempt += 1) {
167
+ let response;
168
+ try {
169
+ response = await fetch(url, {
170
+ method,
171
+ headers,
172
+ body: payload === undefined ? undefined : JSON.stringify(payload),
173
+ });
174
+ }
175
+ catch (error) {
176
+ if (attempt < HTTP_RETRY_ATTEMPTS) {
177
+ await sleep(Math.min(2 ** (attempt - 1) * 1_000, WS_RECONNECT_MAX_DELAY_MS));
178
+ continue;
179
+ }
180
+ throw new RelayConnectionError(0, error instanceof Error ? error.message : String(error));
181
+ }
182
+ if (response.status === 401) {
183
+ throw new RelayAuthError(await this.errorMessage(response));
184
+ }
185
+ if (response.status >= 500 && response.status <= 599) {
186
+ const message = await this.errorMessage(response);
187
+ if (attempt < HTTP_RETRY_ATTEMPTS) {
188
+ await sleep(Math.min(2 ** (attempt - 1) * 1_000, WS_RECONNECT_MAX_DELAY_MS));
189
+ continue;
190
+ }
191
+ throw new RelayConnectionError(response.status, message);
192
+ }
193
+ if (response.status >= 400) {
194
+ throw new RelayConnectionError(response.status, await this.errorMessage(response));
195
+ }
196
+ if (response.status === 204) {
197
+ return undefined;
198
+ }
199
+ const contentType = response.headers.get('content-type') ?? '';
200
+ if (contentType.includes('application/json')) {
201
+ return (await response.json());
202
+ }
203
+ return (await response.text());
204
+ }
205
+ throw new RelayConnectionError(500, 'Unexpected transport retry failure');
206
+ }
207
+ async sendHttp(method, path, payload) {
208
+ this.requireConfig();
209
+ const url = `${this.config.baseUrl}${path}`;
210
+ const headers = {
211
+ authorization: `Bearer ${this.config.apiKey}`,
212
+ };
213
+ if (payload !== undefined) {
214
+ headers['content-type'] = 'application/json';
215
+ }
216
+ for (let attempt = 1; attempt <= HTTP_RETRY_ATTEMPTS; attempt += 1) {
217
+ let response;
218
+ try {
219
+ response = await fetch(url, {
220
+ method,
221
+ headers,
222
+ body: payload === undefined ? undefined : JSON.stringify(payload),
223
+ });
224
+ }
225
+ catch (error) {
226
+ if (attempt < HTTP_RETRY_ATTEMPTS) {
227
+ await sleep(Math.min(2 ** (attempt - 1) * 1_000, WS_RECONNECT_MAX_DELAY_MS));
228
+ continue;
229
+ }
230
+ throw new RelayConnectionError(0, error instanceof Error ? error.message : String(error));
231
+ }
232
+ if (response.status === 401) {
233
+ throw new RelayAuthError(await this.errorMessage(response));
234
+ }
235
+ if (response.status >= 500 && response.status <= 599) {
236
+ const message = await this.errorMessage(response);
237
+ if (attempt < HTTP_RETRY_ATTEMPTS) {
238
+ await sleep(Math.min(2 ** (attempt - 1) * 1_000, WS_RECONNECT_MAX_DELAY_MS));
239
+ continue;
240
+ }
241
+ throw new RelayConnectionError(response.status, message);
242
+ }
243
+ if (response.status >= 400) {
244
+ throw new RelayConnectionError(response.status, await this.errorMessage(response));
245
+ }
246
+ if (response.status === 204) {
247
+ return undefined;
248
+ }
249
+ const contentType = response.headers.get('content-type') ?? '';
250
+ if (contentType.includes('application/json')) {
251
+ return (await response.json());
252
+ }
253
+ return (await response.text());
254
+ }
255
+ throw new RelayConnectionError(500, 'Unexpected transport retry failure');
256
+ }
257
+ async connectWebSocket() {
258
+ await this.ensureRegistered();
259
+ if (this.ws && (this.ws.readyState === WebSocket.OPEN || this.ws.readyState === WebSocket.CONNECTING)) {
260
+ return;
261
+ }
262
+ if (this.wsConnectPromise) {
263
+ return this.wsConnectPromise;
264
+ }
265
+ const url = `${this.wsBaseUrl()}/v1/ws?token=${encodeURIComponent(this.token ?? '')}`;
266
+ const socket = new WebSocket(url);
267
+ this.wsConnectPromise = new Promise((resolve, reject) => {
268
+ let settled = false;
269
+ socket.once('open', () => {
270
+ settled = true;
271
+ this.ws = socket;
272
+ this.reconnectDelayMs = 1_000;
273
+ resolve();
274
+ });
275
+ socket.once('error', (error) => {
276
+ if (!settled) {
277
+ settled = true;
278
+ reject(error);
279
+ }
280
+ });
281
+ }).finally(() => {
282
+ this.wsConnectPromise = undefined;
283
+ });
284
+ socket.on('message', (raw) => {
285
+ void this.dispatchWsPayload(raw.toString());
286
+ });
287
+ socket.on('close', () => {
288
+ if (this.ws === socket) {
289
+ this.ws = undefined;
290
+ }
291
+ if (!this.closing) {
292
+ this.scheduleReconnect();
293
+ }
294
+ });
295
+ socket.on('error', () => {
296
+ // The close handler manages reconnects for established sockets.
297
+ });
298
+ await this.wsConnectPromise;
299
+ }
300
+ wsBaseUrl() {
301
+ if (this.config.baseUrl.startsWith('https://')) {
302
+ return `wss://${this.config.baseUrl.slice('https://'.length)}`;
303
+ }
304
+ if (this.config.baseUrl.startsWith('http://')) {
305
+ return `ws://${this.config.baseUrl.slice('http://'.length)}`;
306
+ }
307
+ return this.config.baseUrl;
308
+ }
309
+ scheduleReconnect() {
310
+ if (this.reconnectTimer || this.closing) {
311
+ return;
312
+ }
313
+ const delayMs = this.reconnectDelayMs;
314
+ this.reconnectDelayMs = Math.min(this.reconnectDelayMs * 2, WS_RECONNECT_MAX_DELAY_MS);
315
+ this.reconnectTimer = setTimeout(() => {
316
+ this.reconnectTimer = undefined;
317
+ void this.connectWebSocket().catch(() => {
318
+ this.scheduleReconnect();
319
+ });
320
+ }, delayMs);
321
+ }
322
+ clearReconnectTimer() {
323
+ if (this.reconnectTimer) {
324
+ clearTimeout(this.reconnectTimer);
325
+ this.reconnectTimer = undefined;
326
+ }
327
+ }
328
+ async dispatchWsPayload(rawPayload) {
329
+ const payload = JSON.parse(rawPayload);
330
+ if (payload.type === 'ping') {
331
+ this.ws?.send(JSON.stringify({ type: 'pong' }));
332
+ return;
333
+ }
334
+ const messageEvents = new Set([
335
+ 'message.created', 'dm.received', 'direct_message.received',
336
+ 'thread.reply', 'message', 'group_dm.received',
337
+ ]);
338
+ if (!messageEvents.has(payload.type) || !this.messageCallback) {
339
+ return;
340
+ }
341
+ await this.messageCallback(this.messageFromPayload(payload));
342
+ }
343
+ messageFromPayload(payload) {
344
+ const m = (typeof payload.message === 'object' && payload.message !== null)
345
+ ? payload.message
346
+ : payload;
347
+ const sender = String(m.sender ?? m.agent_name ?? m.from ?? m.agentName
348
+ ?? payload.agent_name ?? payload.from ?? 'unknown');
349
+ const text = String(m.text ?? '');
350
+ const channel = String(m.channel ?? m.channel_name ?? m.channelName ?? payload.channel ?? payload.channel_name ?? '') || undefined;
351
+ const threadId = String(m.thread_id ?? m.threadId ?? m.conversation_id ?? m.conversationId ?? payload.thread_id ?? '') || undefined;
352
+ const rawTs = m.timestamp ?? m.created_at ?? m.createdAt ?? payload.timestamp;
353
+ const timestamp = typeof rawTs === 'number' ? rawTs : undefined;
354
+ const messageId = String(m.id ?? m.message_id ?? m.messageId ?? payload.message_id ?? '') || undefined;
355
+ return { sender, text, channel, threadId, timestamp, messageId };
356
+ }
357
+ async errorMessage(response) {
358
+ const text = await response.text().catch(() => '');
359
+ try {
360
+ const payload = JSON.parse(text);
361
+ if (typeof payload.error === 'object' && payload.error?.message) {
362
+ return payload.error.message;
363
+ }
364
+ return payload.message ?? response.statusText ?? 'Request failed';
365
+ }
366
+ catch {
367
+ return text || response.statusText || 'Request failed';
368
+ }
369
+ }
370
+ }
371
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/communicate/transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ export declare const DEFAULT_RELAY_BASE_URL = "https://api.relaycast.dev";
2
+ /** An incoming relay message. All fields except `sender` and `text` are optional. */
3
+ export interface Message {
4
+ readonly sender: string;
5
+ readonly text: string;
6
+ readonly channel?: string;
7
+ readonly threadId?: string;
8
+ readonly timestamp?: number;
9
+ readonly messageId?: string;
10
+ }
11
+ /** Callback invoked when a message is received. */
12
+ export type MessageCallback = (message: Message) => void | Promise<void>;
13
+ /** User-supplied relay configuration. All fields are optional and fall back to env vars or defaults. */
14
+ export interface RelayConfig {
15
+ workspace?: string;
16
+ apiKey?: string;
17
+ baseUrl?: string;
18
+ channels?: string[];
19
+ pollIntervalMs?: number;
20
+ autoCleanup?: boolean;
21
+ }
22
+ export interface ResolvedRelayConfig {
23
+ workspace?: string;
24
+ apiKey?: string;
25
+ baseUrl: string;
26
+ channels: string[];
27
+ pollIntervalMs: number;
28
+ autoCleanup: boolean;
29
+ }
30
+ export declare class RelayConnectionError extends Error {
31
+ readonly statusCode: number;
32
+ constructor(statusCode: number, message: string);
33
+ }
34
+ export declare class RelayConfigError extends Error {
35
+ constructor(message: string);
36
+ }
37
+ export declare class RelayAuthError extends RelayConnectionError {
38
+ constructor(message?: string, statusCode?: number);
39
+ }
40
+ /**
41
+ * Resolve a partial config into a fully-populated config with env-var fallbacks.
42
+ * @param config - Partial user config.
43
+ * @returns Resolved config with all defaults applied.
44
+ */
45
+ export declare function resolveRelayConfig(config?: RelayConfig): ResolvedRelayConfig;
46
+ /**
47
+ * Format a single message for display in agent instructions.
48
+ * @param message - The relay message to format.
49
+ * @returns Human-readable message string.
50
+ */
51
+ export declare function formatRelayMessage(message: Message): string;
52
+ /**
53
+ * Format an array of messages for display in agent instructions.
54
+ * @param messages - The relay messages to format.
55
+ * @returns Human-readable inbox summary.
56
+ */
57
+ export declare function formatRelayInbox(messages: Message[]): string;
58
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/communicate/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAElE,qFAAqF;AACrF,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,mDAAmD;AACnD,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzE,wGAAwG;AACxG,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAKhD;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,cAAe,SAAQ,oBAAoB;gBAC1C,OAAO,SAAiB,EAAE,UAAU,SAAM;CAIvD;AAWD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,WAAgB,GAAG,mBAAmB,CAShF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAI3D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAM5D"}
@@ -0,0 +1,66 @@
1
+ export const DEFAULT_RELAY_BASE_URL = 'https://api.relaycast.dev';
2
+ export class RelayConnectionError extends Error {
3
+ statusCode;
4
+ constructor(statusCode, message) {
5
+ super(`${statusCode}: ${message}`);
6
+ this.name = 'RelayConnectionError';
7
+ this.statusCode = statusCode;
8
+ }
9
+ }
10
+ export class RelayConfigError extends Error {
11
+ constructor(message) {
12
+ super(message);
13
+ this.name = 'RelayConfigError';
14
+ }
15
+ }
16
+ export class RelayAuthError extends RelayConnectionError {
17
+ constructor(message = 'Unauthorized', statusCode = 401) {
18
+ super(statusCode, message);
19
+ this.name = 'RelayAuthError';
20
+ }
21
+ }
22
+ /** Strip trailing slashes without a quantified regex (avoids ReDoS). */
23
+ function trimTrailingSlashes(url) {
24
+ let end = url.length;
25
+ while (end > 0 && url[end - 1] === '/') {
26
+ end -= 1;
27
+ }
28
+ return url.slice(0, end);
29
+ }
30
+ /**
31
+ * Resolve a partial config into a fully-populated config with env-var fallbacks.
32
+ * @param config - Partial user config.
33
+ * @returns Resolved config with all defaults applied.
34
+ */
35
+ export function resolveRelayConfig(config = {}) {
36
+ return {
37
+ workspace: config.workspace ?? process.env.RELAY_WORKSPACE,
38
+ apiKey: config.apiKey ?? process.env.RELAY_API_KEY,
39
+ baseUrl: trimTrailingSlashes(config.baseUrl ?? process.env.RELAY_BASE_URL ?? DEFAULT_RELAY_BASE_URL),
40
+ channels: [...(config.channels ?? ['general'])],
41
+ pollIntervalMs: config.pollIntervalMs ?? 1_000,
42
+ autoCleanup: config.autoCleanup ?? true,
43
+ };
44
+ }
45
+ /**
46
+ * Format a single message for display in agent instructions.
47
+ * @param message - The relay message to format.
48
+ * @returns Human-readable message string.
49
+ */
50
+ export function formatRelayMessage(message) {
51
+ const location = message.channel ? ` [#${message.channel}]` : '';
52
+ const thread = message.threadId ? ` [thread ${message.threadId}]` : '';
53
+ return `Relay message from ${message.sender}${location}${thread}: ${message.text}`;
54
+ }
55
+ /**
56
+ * Format an array of messages for display in agent instructions.
57
+ * @param messages - The relay messages to format.
58
+ * @returns Human-readable inbox summary.
59
+ */
60
+ export function formatRelayInbox(messages) {
61
+ if (messages.length === 0) {
62
+ return 'No new relay messages.';
63
+ }
64
+ return messages.map((message) => formatRelayMessage(message)).join('\n');
65
+ }
66
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/communicate/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;AAkClE,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACpC,UAAU,CAAS;IAE5B,YAAY,UAAkB,EAAE,OAAe;QAC7C,KAAK,CAAC,GAAG,UAAU,KAAK,OAAO,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,oBAAoB;IACtD,YAAY,OAAO,GAAG,cAAc,EAAE,UAAU,GAAG,GAAG;QACpD,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,wEAAwE;AACxE,SAAS,mBAAmB,CAAC,GAAW;IACtC,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IACrB,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QACvC,GAAG,IAAI,CAAC,CAAC;IACX,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAsB,EAAE;IACzD,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe;QAC1D,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa;QAClD,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,sBAAsB,CAAC;QACpG,QAAQ,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/C,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,KAAK;QAC9C,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI;KACxC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,OAAO,sBAAsB,OAAO,CAAC,MAAM,GAAG,QAAQ,GAAG,MAAM,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;AACrF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAmB;IAClD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,wBAAwB,CAAC;IAClC,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3E,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { AgentRelayOptions } from '../relay.js';
2
- import type { AgentCli, AgentPreset, DryRunReport, IdleNudgeConfig, RelayYamlConfig, SwarmPattern, VerificationCheck, WorkflowRunRow } from './types.js';
2
+ import type { AgentCli, AgentPreset, CoordinationConfig, DryRunReport, IdleNudgeConfig, RelayYamlConfig, StateConfig, SwarmPattern, TrajectoryConfig, VerificationCheck, WorkflowRunRow } from './types.js';
3
3
  import { type WorkflowEventListener, type VariableContext, type StepExecutor } from './runner.js';
4
4
  export interface AgentOptions {
5
5
  cli: AgentCli;
@@ -31,14 +31,25 @@ export interface AgentStepOptions {
31
31
  export interface DeterministicStepOptions {
32
32
  type: 'deterministic';
33
33
  command: string;
34
- dependsOn?: string[];
35
- /** Fail if command exit code is non-zero. Default: true. */
36
- failOnError?: boolean;
37
34
  /** Capture stdout as step output for downstream steps. Default: true. */
38
35
  captureOutput?: boolean;
36
+ /** Fail if command exit code is non-zero. Default: true. */
37
+ failOnError?: boolean;
38
+ dependsOn?: string[];
39
+ verification?: VerificationCheck;
40
+ timeoutMs?: number;
41
+ }
42
+ /** Options for worktree steps (create/checkout git worktrees). */
43
+ export interface WorktreeStepOptions {
44
+ type: 'worktree';
45
+ branch: string;
46
+ baseBranch?: string;
47
+ path?: string;
48
+ createBranch?: boolean;
49
+ dependsOn?: string[];
39
50
  timeoutMs?: number;
40
51
  }
41
- export type StepOptions = AgentStepOptions | DeterministicStepOptions;
52
+ export type StepOptions = AgentStepOptions | DeterministicStepOptions | WorktreeStepOptions;
42
53
  export interface ErrorOptions {
43
54
  maxRetries?: number;
44
55
  retryDelayMs?: number;
@@ -59,6 +70,10 @@ export interface WorkflowRunOptions {
59
70
  dryRun?: boolean;
60
71
  /** External step executor (e.g. Daytona sandbox backend). */
61
72
  executor?: StepExecutor;
73
+ /** Start from a specific step, skipping all predecessors. */
74
+ startFrom?: string;
75
+ /** Previous run ID whose cached outputs are used with startFrom. */
76
+ previousRunId?: string;
62
77
  }
63
78
  /**
64
79
  * Fluent builder for constructing workflow configurations programmatically.
@@ -86,6 +101,11 @@ export declare class WorkflowBuilder {
86
101
  private _agents;
87
102
  private _steps;
88
103
  private _errorHandling?;
104
+ private _coordination?;
105
+ private _state?;
106
+ private _trajectories?;
107
+ private _startFrom?;
108
+ private _previousRunId?;
89
109
  constructor(name: string);
90
110
  /** Set workflow description. */
91
111
  description(desc: string): this;
@@ -99,6 +119,16 @@ export declare class WorkflowBuilder {
99
119
  channel(ch: string): this;
100
120
  /** Configure idle agent detection and nudging for interactive agents. */
101
121
  idleNudge(config: IdleNudgeConfig): this;
122
+ /** Set workflow coordination settings (barriers, voting threshold, consensus strategy). */
123
+ coordination(config: CoordinationConfig): this;
124
+ /** Configure shared workflow state backend settings. */
125
+ state(config: StateConfig): this;
126
+ /** Configure trajectory recording, or pass `false` to disable it. */
127
+ trajectories(config: TrajectoryConfig | false): this;
128
+ /** Start execution from a specific step, skipping all predecessor steps. */
129
+ startFrom(stepName: string): this;
130
+ /** Set the previous run ID whose cached step outputs should be used with startFrom. */
131
+ previousRunId(id: string): this;
102
132
  /** Add an agent definition. */
103
133
  agent(name: string, options: AgentOptions): this;
104
134
  /** Add a workflow step (agent or deterministic). */
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/workflows/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/workflows/builder.ts"],"names":[],"mappings":"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"}