@agent-relay/factory 0.1.1 → 0.1.2

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 (132) hide show
  1. package/README.md +146 -205
  2. package/dist/cli/fleet.d.ts +5 -1
  3. package/dist/cli/fleet.d.ts.map +1 -1
  4. package/dist/cli/fleet.js +86 -15
  5. package/dist/cli/fleet.js.map +1 -1
  6. package/dist/config/schema.d.ts +4 -4
  7. package/dist/config/schema.d.ts.map +1 -1
  8. package/dist/config/schema.js +13 -2
  9. package/dist/config/schema.js.map +1 -1
  10. package/dist/constants/linear.d.ts +2 -0
  11. package/dist/constants/linear.d.ts.map +1 -1
  12. package/dist/constants/linear.js +6 -0
  13. package/dist/constants/linear.js.map +1 -1
  14. package/dist/dispatch/templates.d.ts +18 -2
  15. package/dist/dispatch/templates.d.ts.map +1 -1
  16. package/dist/dispatch/templates.js +18 -10
  17. package/dist/dispatch/templates.js.map +1 -1
  18. package/dist/fleet/create-fleet.d.ts +3 -2
  19. package/dist/fleet/create-fleet.d.ts.map +1 -1
  20. package/dist/fleet/create-fleet.js +3 -2
  21. package/dist/fleet/create-fleet.js.map +1 -1
  22. package/dist/fleet/ensure-relay-broker.d.ts +24 -0
  23. package/dist/fleet/ensure-relay-broker.d.ts.map +1 -0
  24. package/dist/fleet/ensure-relay-broker.js +56 -0
  25. package/dist/fleet/ensure-relay-broker.js.map +1 -0
  26. package/dist/fleet/internal-fleet-client.d.ts +8 -3
  27. package/dist/fleet/internal-fleet-client.d.ts.map +1 -1
  28. package/dist/fleet/internal-fleet-client.js +32 -5
  29. package/dist/fleet/internal-fleet-client.js.map +1 -1
  30. package/dist/fleet/relay-fleet-client.d.ts +90 -13
  31. package/dist/fleet/relay-fleet-client.d.ts.map +1 -1
  32. package/dist/fleet/relay-fleet-client.js +496 -20
  33. package/dist/fleet/relay-fleet-client.js.map +1 -1
  34. package/dist/github/index.d.ts +4 -4
  35. package/dist/github/index.js +2 -2
  36. package/dist/github/probe-closer.d.ts +1 -1
  37. package/dist/github/probe-closer.js +1 -1
  38. package/dist/index.d.ts +33 -29
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +17 -15
  41. package/dist/index.js.map +1 -1
  42. package/dist/linear/state-resolver.d.ts +3 -2
  43. package/dist/linear/state-resolver.d.ts.map +1 -1
  44. package/dist/linear/state-resolver.js +74 -10
  45. package/dist/linear/state-resolver.js.map +1 -1
  46. package/dist/mount/local-mount-preflight.d.ts +1 -0
  47. package/dist/mount/local-mount-preflight.d.ts.map +1 -1
  48. package/dist/mount/local-mount-preflight.js +64 -12
  49. package/dist/mount/local-mount-preflight.js.map +1 -1
  50. package/dist/mount/relayfile-binary.d.ts +2 -0
  51. package/dist/mount/relayfile-binary.d.ts.map +1 -1
  52. package/dist/mount/relayfile-binary.js +39 -5
  53. package/dist/mount/relayfile-binary.js.map +1 -1
  54. package/dist/mount/relayfile-cloud-mount-client.d.ts +2 -2
  55. package/dist/mount/relayfile-cloud-mount-client.js +1 -1
  56. package/dist/node/factory-node.d.ts +59 -0
  57. package/dist/node/factory-node.d.ts.map +1 -0
  58. package/dist/node/factory-node.js +351 -0
  59. package/dist/node/factory-node.js.map +1 -0
  60. package/dist/node/factory.node.d.ts +3 -0
  61. package/dist/node/factory.node.d.ts.map +1 -0
  62. package/dist/node/factory.node.js +5 -0
  63. package/dist/node/factory.node.js.map +1 -0
  64. package/dist/orchestrator/batch-tracker.d.ts +2 -2
  65. package/dist/orchestrator/factory.d.ts +5 -2
  66. package/dist/orchestrator/factory.d.ts.map +1 -1
  67. package/dist/orchestrator/factory.js +413 -59
  68. package/dist/orchestrator/factory.js.map +1 -1
  69. package/dist/orchestrator/index.d.ts +4 -4
  70. package/dist/orchestrator/index.d.ts.map +1 -1
  71. package/dist/orchestrator/index.js +3 -3
  72. package/dist/orchestrator/index.js.map +1 -1
  73. package/dist/orchestrator/process-identity.d.ts +1 -1
  74. package/dist/orchestrator/reaper.d.ts +3 -3
  75. package/dist/orchestrator/reaper.js +3 -3
  76. package/dist/ports/fleet.d.ts +8 -2
  77. package/dist/ports/fleet.d.ts.map +1 -1
  78. package/dist/ports/index.d.ts +4 -4
  79. package/dist/ports/state.d.ts +3 -3
  80. package/dist/ports/writeback.d.ts +1 -1
  81. package/dist/safety/factory-scope.d.ts +2 -2
  82. package/dist/state/in-memory-state-store.d.ts +1 -1
  83. package/dist/state/in-memory-state-store.js +1 -1
  84. package/dist/subscriptions/event-client.d.ts +1 -1
  85. package/dist/subscriptions/event-client.js +2 -2
  86. package/dist/subscriptions/globs.js +1 -1
  87. package/dist/subscriptions/index.d.ts +7 -7
  88. package/dist/subscriptions/index.js +4 -4
  89. package/dist/subscriptions/linear-filter.d.ts +1 -1
  90. package/dist/subscriptions/linear-filter.js +1 -1
  91. package/dist/subscriptions/specs.d.ts +1 -1
  92. package/dist/subscriptions/specs.js +2 -2
  93. package/dist/testing/fakes.d.ts +1 -1
  94. package/dist/testing/fakes.js +1 -1
  95. package/dist/testing/fakes.js.map +1 -1
  96. package/dist/testing/index.d.ts +1 -1
  97. package/dist/testing/index.js +1 -1
  98. package/dist/triage/heuristic.d.ts +8 -4
  99. package/dist/triage/heuristic.d.ts.map +1 -1
  100. package/dist/triage/heuristic.js +70 -6
  101. package/dist/triage/heuristic.js.map +1 -1
  102. package/dist/triage/index.d.ts +6 -6
  103. package/dist/triage/index.d.ts.map +1 -1
  104. package/dist/triage/index.js +4 -4
  105. package/dist/triage/index.js.map +1 -1
  106. package/dist/triage/llm.d.ts +1 -1
  107. package/dist/triage/llm.d.ts.map +1 -1
  108. package/dist/triage/llm.js +5 -3
  109. package/dist/triage/llm.js.map +1 -1
  110. package/dist/triage/schema.d.ts +133 -29
  111. package/dist/triage/schema.d.ts.map +1 -1
  112. package/dist/triage/schema.js +6 -3
  113. package/dist/triage/schema.js.map +1 -1
  114. package/dist/triage/tiered.d.ts +1 -1
  115. package/dist/triage/tiered.d.ts.map +1 -1
  116. package/dist/triage/tiered.js +9 -2
  117. package/dist/triage/tiered.js.map +1 -1
  118. package/dist/types.d.ts +10 -9
  119. package/dist/types.d.ts.map +1 -1
  120. package/dist/writeback/github.d.ts +2 -2
  121. package/dist/writeback/github.js +1 -1
  122. package/dist/writeback/index.d.ts +5 -5
  123. package/dist/writeback/index.js +3 -3
  124. package/dist/writeback/linear.d.ts +3 -3
  125. package/dist/writeback/linear.d.ts.map +1 -1
  126. package/dist/writeback/linear.js +57 -14
  127. package/dist/writeback/linear.js.map +1 -1
  128. package/dist/writeback/slack.d.ts +1 -1
  129. package/dist/writeback/slack.js +2 -2
  130. package/package.json +10 -2
  131. package/scripts/com.agentrelay.factory-canary.plist.example +53 -0
  132. package/scripts/factory-canary.sh +89 -0
@@ -1,33 +1,509 @@
1
- const notImplemented = () => new Error('RelayFleetClient not implemented — see relay#1056');
2
- // TODO(relay#1056): implement this over the ../relay SDK once the fleet protocol lands there.
1
+ import { randomUUID } from 'node:crypto';
2
+ const knownCapabilities = new Set(['spawn:claude', 'spawn:codex', 'workflow:run']);
3
+ const openStatuses = new Set(['pending', 'dispatched', 'invoked']);
4
+ const terminalStatuses = new Set(['completed', 'failed', 'denied']);
5
+ const DEFAULT_COMPLETION_TIMEOUT_MS = 5 * 60_000;
6
+ const DEFAULT_POLL_INTERVAL_MS = 1_000;
3
7
  export class RelayFleetClient {
4
- async spawn(_input) {
5
- throw notImplemented();
8
+ #options;
9
+ // Built lazily on first network use so that constructing the client (and
10
+ // therefore createFleet({ backend: 'relay' })) never throws merely because no
11
+ // token is configured. The token check lives in HttpRelayFleetTransport's
12
+ // constructor and only fires when a method actually needs the transport.
13
+ #transport;
14
+ #spawnActionName;
15
+ #releaseActionName;
16
+ #completionTimeoutMs;
17
+ #pollIntervalMs;
18
+ #sleep;
19
+ #agentExitListeners = new Set();
20
+ #deliveryFailedListeners = new Set();
21
+ #agentMessageListeners = new Set();
22
+ #eventUnsubscribers = [];
23
+ #subscribed = false;
24
+ #disposed = false;
25
+ constructor(options = {}) {
26
+ this.#options = options;
27
+ this.#spawnActionName = options.spawnActionName ?? 'spawn';
28
+ this.#releaseActionName = options.releaseActionName ?? 'release';
29
+ this.#completionTimeoutMs = options.completionTimeoutMs ?? DEFAULT_COMPLETION_TIMEOUT_MS;
30
+ this.#pollIntervalMs = options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS;
31
+ this.#sleep = options.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
32
+ this.#transport = options.transport;
6
33
  }
7
- async resume(_input) {
8
- throw notImplemented();
34
+ #getTransport() {
35
+ this.#transport ??= new HttpRelayFleetTransport(this.#options);
36
+ return this.#transport;
9
37
  }
10
- async release(_name, _reason) {
11
- throw notImplemented();
38
+ async spawn(input) {
39
+ const invocationId = input.invocationId ?? newInvocationId('spawn', input.name);
40
+ const actionInput = spawnActionInput(input, { includeSelfNode: false });
41
+ const ack = await this.#getTransport().invokeAction(this.#spawnActionName, actionInput, { invocationId });
42
+ const invocation = await this.#awaitInvocation(this.#spawnActionName, ack.invocationId || invocationId, ack);
43
+ return spawnResultFromInvocation(input.name, input.sessionRef, invocation);
44
+ }
45
+ async resume(input) {
46
+ const name = input.name ?? input.sessionRef;
47
+ const invocationId = newInvocationId('resume', name);
48
+ const actionInput = spawnActionInput({
49
+ name,
50
+ capability: input.capability ?? 'spawn:codex',
51
+ node: input.node,
52
+ sessionRef: input.sessionRef,
53
+ }, { includeSelfNode: false });
54
+ const ack = await this.#getTransport().invokeAction(this.#spawnActionName, actionInput, { invocationId });
55
+ const invocation = await this.#awaitInvocation(this.#spawnActionName, ack.invocationId || invocationId, ack);
56
+ return spawnResultFromInvocation(name, input.sessionRef, invocation);
57
+ }
58
+ async release(name, reason) {
59
+ const invocationId = newInvocationId('release', name);
60
+ const ack = await this.#getTransport().invokeAction(this.#releaseActionName, {
61
+ name,
62
+ agent: name,
63
+ ...(reason ? { reason } : {}),
64
+ }, { invocationId });
65
+ await this.#awaitInvocation(this.#releaseActionName, ack.invocationId || invocationId, ack);
12
66
  }
13
67
  async roster() {
14
- throw notImplemented();
68
+ const transport = this.#getTransport();
69
+ const [agents, nodes] = await Promise.all([
70
+ transport.listAgents(),
71
+ transport.listNodes(),
72
+ ]);
73
+ return {
74
+ agents: agents.map((agent) => ({ name: agent.name })),
75
+ nodes: nodes.map((node) => ({
76
+ name: node.name,
77
+ capabilities: normalizeCapabilities(node.capabilities),
78
+ live: node.live ?? node.status === 'online',
79
+ })),
80
+ };
81
+ }
82
+ async sendMessage(input) {
83
+ await this.#getTransport().sendMessage(input);
84
+ }
85
+ async waitForInjected(input, opts) {
86
+ const transport = this.#getTransport();
87
+ const sent = await transport.sendMessage(input);
88
+ const eventId = sent.eventId;
89
+ const targets = sent.targets ?? [input.to];
90
+ if (!eventId) {
91
+ return { eventId: newInvocationId('message', input.to), targets };
92
+ }
93
+ return await transport.waitForDelivery?.(eventId, opts) ?? { eventId, targets };
94
+ }
95
+ onDeliveryFailed(listener) {
96
+ this.#ensureEventSubscription();
97
+ this.#deliveryFailedListeners.add(listener);
98
+ return () => {
99
+ this.#deliveryFailedListeners.delete(listener);
100
+ };
101
+ }
102
+ onAgentMessage(listener) {
103
+ this.#ensureEventSubscription();
104
+ this.#agentMessageListeners.add(listener);
105
+ return () => {
106
+ this.#agentMessageListeners.delete(listener);
107
+ };
108
+ }
109
+ onAgentExit(listener) {
110
+ this.#ensureEventSubscription();
111
+ this.#agentExitListeners.add(listener);
112
+ return () => {
113
+ this.#agentExitListeners.delete(listener);
114
+ };
115
+ }
116
+ async dispose() {
117
+ if (this.#disposed)
118
+ return;
119
+ this.#disposed = true;
120
+ for (const unsubscribe of this.#eventUnsubscribers.splice(0)) {
121
+ unsubscribe();
122
+ }
123
+ this.#agentExitListeners.clear();
124
+ this.#deliveryFailedListeners.clear();
125
+ this.#agentMessageListeners.clear();
126
+ // Only dispose a transport we actually built; never construct one here.
127
+ await this.#transport?.dispose?.();
128
+ this.#subscribed = false;
129
+ }
130
+ async #awaitInvocation(actionName, invocationId, initial) {
131
+ let status = initial.status ?? 'pending';
132
+ let invocation;
133
+ const deadline = Date.now() + this.#completionTimeoutMs;
134
+ while (!terminalStatuses.has(status)) {
135
+ if (Date.now() > deadline) {
136
+ throw new Error(`Timed out waiting for ${actionName} invocation ${invocationId} to complete (last status: ${status})`);
137
+ }
138
+ if (!openStatuses.has(status)) {
139
+ throw new Error(`Unexpected ${actionName} invocation ${invocationId} status: ${status}`);
140
+ }
141
+ await this.#sleep(this.#pollIntervalMs);
142
+ invocation = await this.#getTransport().getInvocation(actionName, invocationId);
143
+ status = invocation.status ?? 'pending';
144
+ }
145
+ invocation ??= await this.#getTransport().getInvocation(actionName, invocationId);
146
+ if (status === 'failed' || status === 'denied') {
147
+ throw new Error(`${actionName} invocation ${invocationId} ${status}${invocation.error ? `: ${invocation.error}` : ''}`);
148
+ }
149
+ return invocation;
150
+ }
151
+ #ensureEventSubscription() {
152
+ if (this.#subscribed)
153
+ return;
154
+ this.#subscribed = true;
155
+ const unsubscribe = this.#getTransport().onEvent?.((event) => this.#handleEvent(event));
156
+ if (unsubscribe)
157
+ this.#eventUnsubscribers.push(unsubscribe);
158
+ }
159
+ #handleEvent(event) {
160
+ const deliveryFailed = deliveryFailedFromEvent(event);
161
+ if (deliveryFailed) {
162
+ for (const listener of this.#deliveryFailedListeners) {
163
+ listener(deliveryFailed);
164
+ }
165
+ }
166
+ const message = agentMessageFromEvent(event);
167
+ if (message) {
168
+ for (const listener of this.#agentMessageListeners) {
169
+ listener(message);
170
+ }
171
+ }
172
+ const exit = agentExitFromEvent(event);
173
+ if (exit) {
174
+ for (const listener of this.#agentExitListeners) {
175
+ listener(exit.name, exit.reason);
176
+ }
177
+ }
178
+ }
179
+ }
180
+ class HttpRelayFleetTransport {
181
+ #baseUrl;
182
+ #token;
183
+ #fetch;
184
+ #eventListeners = new Set();
185
+ #socket;
186
+ constructor(options) {
187
+ this.#baseUrl = (options.baseUrl ?? env('RELAYCAST_BASE_URL') ?? env('AGENT_RELAY_BASE_URL') ?? 'https://api.relaycast.dev').replace(/\/+$/, '');
188
+ this.#token = options.agentToken ?? env('RELAY_AGENT_TOKEN') ?? options.workspaceKey ?? env('RELAY_WORKSPACE_KEY') ?? env('RELAY_API_KEY') ?? '';
189
+ if (!this.#token) {
190
+ throw new Error('RelayFleetClient requires agentToken or workspaceKey (or RELAY_AGENT_TOKEN / RELAY_WORKSPACE_KEY)');
191
+ }
192
+ this.#fetch = options.fetch ?? globalFetch;
193
+ }
194
+ async invokeAction(actionName, input, opts) {
195
+ const data = await this.#request(`/v1/actions/${encodeURIComponent(actionName)}/invoke`, {
196
+ input,
197
+ invocation_id: opts.invocationId,
198
+ invocationId: opts.invocationId,
199
+ });
200
+ return invocationAckFrom(data, opts.invocationId, actionName);
201
+ }
202
+ async getInvocation(actionName, invocationId) {
203
+ const data = await this.#request(`/v1/actions/${encodeURIComponent(actionName)}/invocations/${encodeURIComponent(invocationId)}`);
204
+ return invocationFrom(data, invocationId, actionName);
205
+ }
206
+ async listAgents() {
207
+ const data = await this.#request('/v1/agents?status=all');
208
+ return Array.isArray(data) ? data.map(agentFrom).filter(isRelayFleetAgent) : [];
209
+ }
210
+ async listNodes() {
211
+ const data = await this.#request('/v1/nodes');
212
+ return Array.isArray(data) ? data.map(nodeFrom).filter(isRelayFleetNode) : [];
213
+ }
214
+ async sendMessage(input) {
215
+ const data = input.to.startsWith('#')
216
+ ? await this.#request(`/v1/channels/${encodeURIComponent(input.to.slice(1))}/messages`, {
217
+ text: input.text,
218
+ ...(input.data ? { metadata: input.data } : {}),
219
+ })
220
+ : await this.#request('/v1/dm', {
221
+ to: input.to.startsWith('@') ? input.to.slice(1) : input.to,
222
+ text: input.text,
223
+ ...(input.data ? { metadata: input.data } : {}),
224
+ });
225
+ return {
226
+ eventId: readString(asRecord(data), 'id', 'message_id', 'event_id'),
227
+ targets: [input.to],
228
+ };
229
+ }
230
+ onEvent(listener) {
231
+ this.#eventListeners.add(listener);
232
+ this.#connectEvents();
233
+ return () => {
234
+ this.#eventListeners.delete(listener);
235
+ if (this.#eventListeners.size === 0) {
236
+ this.#socket?.close();
237
+ this.#socket = undefined;
238
+ }
239
+ };
240
+ }
241
+ dispose() {
242
+ this.#socket?.close();
243
+ this.#socket = undefined;
244
+ this.#eventListeners.clear();
245
+ }
246
+ async #request(path, body) {
247
+ const response = await this.#fetch(`${this.#baseUrl}${path}`, {
248
+ method: body ? 'POST' : 'GET',
249
+ headers: {
250
+ Authorization: `Bearer ${this.#token}`,
251
+ ...(body ? { 'Content-Type': 'application/json' } : {}),
252
+ },
253
+ ...(body ? { body: JSON.stringify(body) } : {}),
254
+ });
255
+ const payload = await readResponsePayload(response);
256
+ const record = asRecord(payload);
257
+ if (!response.ok || record?.ok === false) {
258
+ const error = asRecord(record?.error);
259
+ const message = readString(error, 'message') ?? response.statusText;
260
+ throw new Error(`Relay fleet request failed (${response.status}): ${message}`);
261
+ }
262
+ return record && 'data' in record ? record.data : payload;
263
+ }
264
+ #connectEvents() {
265
+ if (this.#socket)
266
+ return;
267
+ const WebSocketCtor = globalThis.WebSocket;
268
+ if (!WebSocketCtor)
269
+ return;
270
+ const url = new URL('/v1/ws', this.#baseUrl.replace(/^http/, 'ws'));
271
+ url.searchParams.set('token', this.#token);
272
+ const socket = new WebSocketCtor(url.toString());
273
+ this.#socket = socket;
274
+ socket.onmessage = (message) => {
275
+ try {
276
+ const parsed = JSON.parse(String(message.data));
277
+ if (parsed && typeof parsed === 'object') {
278
+ this.#emitEvent(parsed);
279
+ }
280
+ }
281
+ catch {
282
+ // Drop malformed event frames; the polling path remains authoritative for invocations.
283
+ }
284
+ };
285
+ socket.onclose = () => {
286
+ if (this.#socket === socket)
287
+ this.#socket = undefined;
288
+ };
289
+ socket.onerror = () => {
290
+ if (this.#socket === socket)
291
+ this.#socket = undefined;
292
+ try {
293
+ socket.close();
294
+ }
295
+ catch {
296
+ // noop
297
+ }
298
+ };
299
+ }
300
+ #emitEvent(event) {
301
+ for (const listener of this.#eventListeners) {
302
+ listener(event);
303
+ }
304
+ }
305
+ }
306
+ function spawnActionInput(input, opts) {
307
+ return definedRecord({
308
+ capability: input.capability,
309
+ name: input.name,
310
+ agent: input.name,
311
+ node: input.node && (opts.includeSelfNode || input.node !== 'self') ? input.node : undefined,
312
+ repo: input.repo,
313
+ clone_path: input.clonePath,
314
+ clonePath: input.clonePath,
315
+ session_ref: input.sessionRef,
316
+ invocationId: input.invocationId,
317
+ task: input.task,
318
+ workflow: input.workflow,
319
+ inputs: input.inputs,
320
+ model: input.model,
321
+ cwd: input.cwd,
322
+ channels: input.channel ? [input.channel] : undefined,
323
+ restart_policy: input.restartPolicy,
324
+ });
325
+ }
326
+ function spawnResultFromInvocation(fallbackName, fallbackSessionRef, invocation) {
327
+ const output = asRecord(invocation.output);
328
+ const agent = asRecord(output?.agent);
329
+ const name = readString(output, 'name', 'agent_name', 'agentName') ?? readString(agent, 'name') ?? fallbackName;
330
+ const sessionRef = readString(output, 'session_ref', 'sessionRef', 'session_id', 'sessionId')
331
+ ?? readString(agent, 'session_ref', 'sessionRef', 'session_id', 'sessionId')
332
+ ?? fallbackSessionRef;
333
+ const pid = readNumber(output, 'pid') ?? readNumber(agent, 'pid');
334
+ const pids = readNumberArray(output, 'pids') ?? readNumberArray(agent, 'pids');
335
+ return {
336
+ name,
337
+ ...(sessionRef ? { sessionRef } : {}),
338
+ ...(pid !== undefined ? { pid } : {}),
339
+ ...(pids ? { pids } : {}),
340
+ };
341
+ }
342
+ function normalizeCapabilities(capabilities) {
343
+ const names = (capabilities ?? [])
344
+ .map((capability) => typeof capability === 'string' ? capability : capability.name)
345
+ .filter((capability) => typeof capability === 'string' && knownCapabilities.has(capability));
346
+ return [...new Set(names)];
347
+ }
348
+ function deliveryFailedFromEvent(event) {
349
+ const type = event.type;
350
+ if (type !== 'delivery.failed' && type !== 'delivery_failed')
351
+ return undefined;
352
+ const to = readString(event, 'to', 'recipient', 'recipient_name', 'recipientName', 'agent_name', 'agentName');
353
+ if (!to)
354
+ return undefined;
355
+ return definedRecord({
356
+ to,
357
+ msgId: readString(event, 'message_id', 'messageId', 'msg_id', 'msgId', 'id'),
358
+ reason: readString(event, 'reason', 'error'),
359
+ });
360
+ }
361
+ function agentMessageFromEvent(event) {
362
+ const type = event.type;
363
+ if (type !== 'message.created' && type !== 'dm.received' && type !== 'group_dm.received' && type !== 'thread.reply') {
364
+ return undefined;
365
+ }
366
+ const message = asRecord(event.message) ?? event;
367
+ const fromRecord = asRecord(message.from);
368
+ const target = asRecord(message.target);
369
+ const from = readString(fromRecord, 'name') ?? readString(message, 'from', 'from_name', 'fromName', 'agent_name', 'agentName');
370
+ const body = readString(message, 'text', 'body');
371
+ if (!from || body === undefined)
372
+ return undefined;
373
+ const targetName = readString(target, 'agentName', 'agent_name', 'channelName', 'channel_name')
374
+ ?? readString(message, 'to', 'target', 'channel', 'channel_name', 'channelName')
375
+ ?? 'factory';
376
+ return definedRecord({
377
+ from,
378
+ target: targetName,
379
+ body,
380
+ threadId: readString(message, 'threadId', 'thread_id', 'parentId', 'parent_id'),
381
+ eventId: readString(message, 'id', 'messageId', 'message_id', 'event_id', 'eventId'),
382
+ });
383
+ }
384
+ function agentExitFromEvent(event) {
385
+ const type = event.type;
386
+ if (type !== 'agent.exited' && type !== 'agent.exit' && type !== 'agent.status.offline' && type !== 'session.released') {
387
+ return undefined;
388
+ }
389
+ const agent = asRecord(event.agent);
390
+ const name = readString(event, 'name', 'agent_name', 'agentName') ?? readString(agent, 'name');
391
+ if (!name)
392
+ return undefined;
393
+ return definedRecord({
394
+ name,
395
+ reason: readString(event, 'reason', 'status') ?? (type === 'agent.status.offline' ? 'offline' : undefined),
396
+ });
397
+ }
398
+ function invocationAckFrom(value, fallbackInvocationId, fallbackActionName) {
399
+ const record = asRecord(value) ?? {};
400
+ return {
401
+ invocationId: readString(record, 'invocation_id', 'invocationId') ?? fallbackInvocationId,
402
+ actionName: readString(record, 'action_name', 'actionName') ?? fallbackActionName,
403
+ status: readString(record, 'status'),
404
+ dispatchedNodeId: readString(record, 'dispatched_node_id', 'dispatchedNodeId') ?? null,
405
+ input: asRecord(record.input),
406
+ };
407
+ }
408
+ function invocationFrom(value, fallbackInvocationId, fallbackActionName) {
409
+ const record = asRecord(value) ?? {};
410
+ return {
411
+ ...invocationAckFrom(record, fallbackInvocationId, fallbackActionName),
412
+ output: record.output,
413
+ error: readString(record, 'error') ?? null,
414
+ completedAt: readString(record, 'completed_at', 'completedAt') ?? null,
415
+ };
416
+ }
417
+ function agentFrom(value) {
418
+ const record = asRecord(value);
419
+ const name = readString(record, 'name');
420
+ return name ? { name } : undefined;
421
+ }
422
+ function isRelayFleetAgent(value) {
423
+ return !!value;
424
+ }
425
+ function nodeFrom(value) {
426
+ const record = asRecord(value);
427
+ const name = readString(record, 'name');
428
+ if (!record || !name)
429
+ return undefined;
430
+ return {
431
+ name,
432
+ status: readString(record, 'status'),
433
+ live: readBoolean(record, 'live') ?? readBoolean(record, 'handlers_live', 'handlersLive'),
434
+ capabilities: Array.isArray(record.capabilities) ? record.capabilities : [],
435
+ };
436
+ }
437
+ function isRelayFleetNode(value) {
438
+ return !!value;
439
+ }
440
+ async function readResponsePayload(response) {
441
+ try {
442
+ return await response.json();
15
443
  }
16
- async sendMessage(_input) {
17
- throw notImplemented();
444
+ catch {
445
+ return await response.text();
18
446
  }
19
- async waitForInjected(_input, _opts) {
20
- throw notImplemented();
447
+ }
448
+ function definedRecord(input) {
449
+ return Object.fromEntries(Object.entries(input).filter(([, value]) => value !== undefined));
450
+ }
451
+ function asRecord(value) {
452
+ return value !== null && typeof value === 'object' && !Array.isArray(value)
453
+ ? value
454
+ : undefined;
455
+ }
456
+ function readString(record, ...keys) {
457
+ if (!record)
458
+ return undefined;
459
+ for (const key of keys) {
460
+ const value = record[key];
461
+ if (typeof value === 'string' && value.length > 0)
462
+ return value;
21
463
  }
22
- onDeliveryFailed(_listener) {
23
- throw notImplemented();
464
+ return undefined;
465
+ }
466
+ function readNumber(record, ...keys) {
467
+ if (!record)
468
+ return undefined;
469
+ for (const key of keys) {
470
+ const value = record[key];
471
+ if (typeof value === 'number' && Number.isFinite(value))
472
+ return value;
24
473
  }
25
- onAgentMessage(_listener) {
26
- throw notImplemented();
474
+ return undefined;
475
+ }
476
+ function readBoolean(record, ...keys) {
477
+ if (!record)
478
+ return undefined;
479
+ for (const key of keys) {
480
+ const value = record[key];
481
+ if (typeof value === 'boolean')
482
+ return value;
27
483
  }
28
- onAgentExit(_listener) {
29
- throw notImplemented();
484
+ return undefined;
485
+ }
486
+ function readNumberArray(record, ...keys) {
487
+ if (!record)
488
+ return undefined;
489
+ for (const key of keys) {
490
+ const value = record[key];
491
+ if (Array.isArray(value)) {
492
+ const numbers = value.filter((item) => typeof item === 'number' && Number.isFinite(item));
493
+ if (numbers.length > 0)
494
+ return numbers;
495
+ }
30
496
  }
31
- async dispose() { }
497
+ return undefined;
498
+ }
499
+ function newInvocationId(prefix, name) {
500
+ return `factory:${prefix}:${name}:${randomUUID()}`;
501
+ }
502
+ function env(name) {
503
+ const value = process.env[name];
504
+ return value && value.trim() ? value.trim() : undefined;
505
+ }
506
+ function globalFetch(...args) {
507
+ return fetch(...args);
32
508
  }
33
509
  //# sourceMappingURL=relay-fleet-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"relay-fleet-client.js","sourceRoot":"","sources":["../../src/fleet/relay-fleet-client.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;AAE3F,8FAA8F;AAC9F,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAC,KAAK,CAAC,MAAkB;QAC5B,MAAM,cAAc,EAAE,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAA8F;QACzG,MAAM,cAAc,EAAE,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,OAAgB;QAC3C,MAAM,cAAc,EAAE,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,cAAc,EAAE,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAiB;QACjC,MAAM,cAAc,EAAE,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,MAAiB,EACjB,KAA8B;QAE9B,MAAM,cAAc,EAAE,CAAA;IACxB,CAAC;IAED,gBAAgB,CAAC,SAA0E;QACzF,MAAM,cAAc,EAAE,CAAA;IACxB,CAAC;IAED,cAAc,CAAC,SAA0C;QACvD,MAAM,cAAc,EAAE,CAAA;IACxB,CAAC;IAED,WAAW,CAAC,SAAkD;QAC5D,MAAM,cAAc,EAAE,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,OAAO,KAAmB,CAAC;CAClC"}
1
+ {"version":3,"file":"relay-fleet-client.js","sourceRoot":"","sources":["../../src/fleet/relay-fleet-client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- export { GhCliGithubMergeGate, GithubMergeGate, defaultGhRunner, evaluateGithubMergeGate, } from './merge-gate';
2
- export { closeProbePr, } from './probe-closer';
3
- export type { GhRunner, GhRunResult, GithubMergeInput, GithubMergeGateInput, GithubMergeResult, GithubMergeGateVerdict, GithubMergeGate as GithubMergeGatePort, } from './merge-gate';
4
- export type { CloseProbePrInput, CloseProbePrResult, } from './probe-closer';
1
+ export { GhCliGithubMergeGate, GithubMergeGate, defaultGhRunner, evaluateGithubMergeGate, } from './merge-gate.js';
2
+ export { closeProbePr, } from './probe-closer.js';
3
+ export type { GhRunner, GhRunResult, GithubMergeInput, GithubMergeGateInput, GithubMergeResult, GithubMergeGateVerdict, GithubMergeGate as GithubMergeGatePort, } from './merge-gate.js';
4
+ export type { CloseProbePrInput, CloseProbePrResult, } from './probe-closer.js';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,3 @@
1
- export { GhCliGithubMergeGate, GithubMergeGate, defaultGhRunner, evaluateGithubMergeGate, } from './merge-gate';
2
- export { closeProbePr, } from './probe-closer';
1
+ export { GhCliGithubMergeGate, GithubMergeGate, defaultGhRunner, evaluateGithubMergeGate, } from './merge-gate.js';
2
+ export { closeProbePr, } from './probe-closer.js';
3
3
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- import type { GhRunner } from './merge-gate';
1
+ import type { GhRunner } from './merge-gate.js';
2
2
  export interface CloseProbePrInput {
3
3
  repo: string;
4
4
  prNumber: number;
@@ -1,6 +1,6 @@
1
1
  import { execFile } from 'node:child_process';
2
2
  import { promisify } from 'node:util';
3
- import { containsIssueKey } from '../issue-key-match';
3
+ import { containsIssueKey } from '../issue-key-match.js';
4
4
  const execFileAsync = promisify(execFile);
5
5
  const FACTORY_E2E_MARKER = '[factory-e2e]';
6
6
  export async function closeProbePr(input) {