omnara 0.1.2 → 0.1.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 (132) hide show
  1. package/bin/omnara.js +8 -3
  2. package/dist/auth/auth-provider.d.ts +2 -2
  3. package/dist/auth/auth-provider.js +14 -16
  4. package/dist/auth/auth-provider.js.map +1 -1
  5. package/dist/auth/cli-auth-service.d.ts +12 -3
  6. package/dist/auth/cli-auth-service.js +23 -9
  7. package/dist/auth/cli-auth-service.js.map +1 -1
  8. package/dist/auth/credential-manager.d.ts +1 -1
  9. package/dist/auth/credential-manager.js +7 -9
  10. package/dist/auth/credential-manager.js.map +1 -1
  11. package/dist/auth/credentials-store.js +14 -20
  12. package/dist/auth/credentials-store.js.map +1 -1
  13. package/dist/auth/login-flow.d.ts +2 -2
  14. package/dist/auth/login-flow.js +128 -39
  15. package/dist/auth/login-flow.js.map +1 -1
  16. package/dist/auth/loopback-listener.d.ts +20 -0
  17. package/dist/auth/loopback-listener.js +155 -0
  18. package/dist/auth/loopback-listener.js.map +1 -0
  19. package/dist/auth/pkce.d.ts +6 -0
  20. package/dist/auth/pkce.js +15 -0
  21. package/dist/auth/pkce.js.map +1 -0
  22. package/dist/auth/supabase-client.d.ts +1 -1
  23. package/dist/auth/supabase-client.js +3 -6
  24. package/dist/auth/supabase-client.js.map +1 -1
  25. package/dist/auth/supabase-config.js +3 -6
  26. package/dist/auth/supabase-config.js.map +1 -1
  27. package/dist/cli.js +26 -25
  28. package/dist/cli.js.map +1 -1
  29. package/dist/commands/agent.js +36 -38
  30. package/dist/commands/agent.js.map +1 -1
  31. package/dist/commands/auth.js +13 -16
  32. package/dist/commands/auth.js.map +1 -1
  33. package/dist/commands/index.d.ts +2 -2
  34. package/dist/commands/index.js +2 -8
  35. package/dist/commands/index.js.map +1 -1
  36. package/dist/http/api-client.js +7 -11
  37. package/dist/http/api-client.js.map +1 -1
  38. package/dist/http/user-sessions.d.ts +13 -0
  39. package/dist/http/user-sessions.js +9 -0
  40. package/dist/http/user-sessions.js.map +1 -0
  41. package/dist/orchestrator/agent-orchestrator.d.ts +11 -6
  42. package/dist/orchestrator/agent-orchestrator.js +226 -57
  43. package/dist/orchestrator/agent-orchestrator.js.map +1 -1
  44. package/dist/orchestrator/ai-client.d.ts +5 -4
  45. package/dist/orchestrator/ai-client.js +17 -14
  46. package/dist/orchestrator/ai-client.js.map +1 -1
  47. package/dist/orchestrator/orchestrator-prompt.d.ts +2 -7
  48. package/dist/orchestrator/orchestrator-prompt.js +7 -154
  49. package/dist/orchestrator/orchestrator-prompt.js.map +1 -1
  50. package/dist/orchestrator/orchestrator-prompt.md +405 -0
  51. package/dist/orchestrator/session.d.ts +7 -3
  52. package/dist/orchestrator/session.js +56 -34
  53. package/dist/orchestrator/session.js.map +1 -1
  54. package/dist/orchestrator/tools/worker-status-tool.d.ts +7 -0
  55. package/dist/orchestrator/tools/worker-status-tool.js +41 -0
  56. package/dist/orchestrator/tools/worker-status-tool.js.map +1 -0
  57. package/dist/orchestrator/tools/worker-tools.d.ts +1 -1
  58. package/dist/orchestrator/tools/worker-tools.js +73 -89
  59. package/dist/orchestrator/tools/worker-tools.js.map +1 -1
  60. package/dist/orchestrator/types.d.ts +19 -29
  61. package/dist/orchestrator/types.js +22 -25
  62. package/dist/orchestrator/types.js.map +1 -1
  63. package/dist/orchestrator/utils/async-queue.d.ts +26 -0
  64. package/dist/orchestrator/utils/async-queue.js +70 -0
  65. package/dist/orchestrator/utils/async-queue.js.map +1 -0
  66. package/dist/orchestrator/utils/session-logger.d.ts +1 -1
  67. package/dist/orchestrator/utils/session-logger.js +8 -14
  68. package/dist/orchestrator/utils/session-logger.js.map +1 -1
  69. package/dist/orchestrator/worker-manager.d.ts +31 -15
  70. package/dist/orchestrator/worker-manager.js +186 -18
  71. package/dist/orchestrator/worker-manager.js.map +1 -1
  72. package/dist/relay/relay-bridge.d.ts +24 -3
  73. package/dist/relay/relay-bridge.js +382 -90
  74. package/dist/relay/relay-bridge.js.map +1 -1
  75. package/dist/relay/relay-service.d.ts +4 -7
  76. package/dist/relay/relay-service.js +5 -11
  77. package/dist/relay/relay-service.js.map +1 -1
  78. package/dist/repl/terminal-repl.js +34 -30
  79. package/dist/repl/terminal-repl.js.map +1 -1
  80. package/dist/schemas/generated.d.ts +244 -0
  81. package/dist/schemas/generated.js +5 -0
  82. package/dist/schemas/generated.js.map +1 -0
  83. package/dist/schemas/index.d.ts +2 -0
  84. package/dist/schemas/index.js +2 -0
  85. package/dist/schemas/index.js.map +1 -0
  86. package/dist/scripts/generate-schema-types.js +53 -0
  87. package/dist/scripts/generate-schema-types.js.map +1 -0
  88. package/dist/scripts/sync-schemas.d.ts +1 -0
  89. package/dist/scripts/sync-schemas.js +28 -0
  90. package/dist/scripts/sync-schemas.js.map +1 -0
  91. package/dist/utils/prompt.js +4 -10
  92. package/dist/utils/prompt.js.map +1 -1
  93. package/dist/voice/voice-service.d.ts +1 -1
  94. package/dist/voice/voice-service.js +2 -4
  95. package/dist/voice/voice-service.js.map +1 -1
  96. package/package.json +6 -2
  97. package/dist/commands/hello.d.ts +0 -2
  98. package/dist/commands/hello.js +0 -12
  99. package/dist/commands/hello.js.map +0 -1
  100. package/dist/generated/relay.d.ts +0 -240
  101. package/dist/generated/relay.js +0 -2376
  102. package/dist/generated/relay.js.map +0 -1
  103. package/dist/messaging/proto-codec.d.ts +0 -5
  104. package/dist/messaging/proto-codec.js +0 -387
  105. package/dist/messaging/proto-codec.js.map +0 -1
  106. package/dist/server/agent-server.d.ts +0 -46
  107. package/dist/server/agent-server.js +0 -429
  108. package/dist/server/agent-server.js.map +0 -1
  109. package/dist/server/ai-client.d.ts +0 -16
  110. package/dist/server/ai-client.js +0 -74
  111. package/dist/server/ai-client.js.map +0 -1
  112. package/dist/server/session.d.ts +0 -35
  113. package/dist/server/session.js +0 -272
  114. package/dist/server/session.js.map +0 -1
  115. package/dist/server/subagents.d.ts +0 -19
  116. package/dist/server/subagents.js +0 -42
  117. package/dist/server/subagents.js.map +0 -1
  118. package/dist/server/tools/worker-tools.d.ts +0 -2
  119. package/dist/server/tools/worker-tools.js +0 -37
  120. package/dist/server/tools/worker-tools.js.map +0 -1
  121. package/dist/server/types.d.ts +0 -120
  122. package/dist/server/types.js +0 -29
  123. package/dist/server/types.js.map +0 -1
  124. package/dist/server/utils/session-logger.d.ts +0 -7
  125. package/dist/server/utils/session-logger.js +0 -53
  126. package/dist/server/utils/session-logger.js.map +0 -1
  127. package/dist/server/worker-manager.d.ts +0 -67
  128. package/dist/server/worker-manager.js +0 -207
  129. package/dist/server/worker-manager.js.map +0 -1
  130. package/dist/test-agent.js +0 -63
  131. package/dist/test-agent.js.map +0 -1
  132. /package/dist/{test-agent.d.ts → scripts/generate-schema-types.d.ts} +0 -0
@@ -1,47 +1,35 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.RelayBridge = void 0;
7
- const events_1 = __importDefault(require("events"));
8
- const ws_1 = __importDefault(require("ws"));
9
- const types_1 = require("../orchestrator/types");
10
- const credentials_store_1 = require("../auth/credentials-store");
11
- const api_client_1 = require("../http/api-client");
12
- const relay_service_1 = require("./relay-service");
13
- const auth_provider_1 = require("../auth/auth-provider");
1
+ import { randomUUID } from 'crypto';
2
+ import EventEmitter from 'events';
3
+ import WebSocket from 'ws';
4
+ import { AgentOrchestrator, } from '../orchestrator/agent-orchestrator.js';
5
+ import { CredentialsStore } from '../auth/credentials-store.js';
6
+ import { ApiClient, normalizeBaseUrl } from '../http/api-client.js';
7
+ import { registerRelaySession } from './relay-service.js';
8
+ import { createAuthProvider } from '../auth/auth-provider.js';
9
+ import { createUserSession } from '../http/user-sessions.js';
10
+ import { validateControlMessage, validateMessageEnvelope, } from '../schemas/index.js';
14
11
  const MAX_QUEUE_SIZE = 500;
15
- const OUTBOUND_MESSAGE_TYPES = new Set([
16
- 'session_created',
17
- 'session_joined',
18
- 'session_init',
19
- 'session_initialized',
20
- 'user_text',
21
- 'assistant_text',
22
- 'assistant_complete',
23
- 'tool_call',
24
- 'tool_result',
25
- 'system',
26
- 'error',
27
- 'worker_update',
28
- 'pong',
29
- ]);
30
- class RelayBridge extends events_1.default {
12
+ export class RelayBridge extends EventEmitter {
13
+ orchestrator;
14
+ store;
15
+ logger;
16
+ backendUrl;
17
+ frontendUrl;
18
+ connectionHandle = null;
19
+ ws = null;
20
+ stopped = false;
21
+ pendingOutbound = [];
22
+ pingTimer = null;
23
+ heartbeatIntervalMs = 30_000;
24
+ authProviderPromise = null;
25
+ userSessionId = null;
26
+ currentAgentSessionId = null;
31
27
  constructor(orchestrator, options) {
32
28
  super();
33
- this.connectionHandle = null;
34
- this.ws = null;
35
- this.stopped = false;
36
- this.pendingOutbound = [];
37
- this.pingTimer = null;
38
- this.heartbeatIntervalMs = 30000;
39
- this.authProviderPromise = null;
40
- this.currentSessionId = null;
41
29
  this.orchestrator = orchestrator;
42
- this.store = options.store ?? new credentials_store_1.CredentialsStore();
30
+ this.store = options.store ?? new CredentialsStore();
43
31
  this.logger = options.logger ?? console;
44
- this.backendUrl = (0, api_client_1.normalizeBaseUrl)(options.backendUrl);
32
+ this.backendUrl = normalizeBaseUrl(options.backendUrl);
45
33
  this.frontendUrl = options.frontendUrl;
46
34
  }
47
35
  async start() {
@@ -49,16 +37,17 @@ class RelayBridge extends events_1.default {
49
37
  throw new Error('Relay bridge already started');
50
38
  }
51
39
  this.connectionHandle = this.orchestrator.addClient({
52
- canSend: () => this.ws?.readyState === ws_1.default.OPEN,
40
+ canSend: () => this.ws?.readyState === WebSocket.OPEN,
53
41
  send: (message) => {
54
42
  this.handleOutbound(message);
55
43
  },
56
44
  });
57
- let backoffMs = 1000;
45
+ this.ensureAgentSessionExists();
46
+ let backoffMs = 1_000;
58
47
  while (!this.stopped) {
59
48
  try {
60
49
  await this.establishConnection();
61
- backoffMs = 1000;
50
+ backoffMs = 1_000;
62
51
  }
63
52
  catch (error) {
64
53
  const aborted = isAbortError(error);
@@ -70,13 +59,13 @@ class RelayBridge extends events_1.default {
70
59
  }
71
60
  this.logger.error(`Relay connection failed: ${extractErrorMessage(error)}. Retrying in ${Math.round(backoffMs / 1000)}s.`);
72
61
  await delay(backoffMs);
73
- backoffMs = Math.min(backoffMs * 2, 30000);
62
+ backoffMs = Math.min(backoffMs * 2, 30_000);
74
63
  }
75
64
  }
76
65
  }
77
66
  async stop() {
78
67
  this.stopped = true;
79
- this.currentSessionId = null;
68
+ this.currentAgentSessionId = null;
80
69
  if (this.pingTimer) {
81
70
  clearInterval(this.pingTimer);
82
71
  this.pingTimer = null;
@@ -85,36 +74,41 @@ class RelayBridge extends events_1.default {
85
74
  this.connectionHandle.disconnect();
86
75
  this.connectionHandle = null;
87
76
  }
88
- if (this.ws && this.ws.readyState === ws_1.default.OPEN) {
77
+ if (this.ws && this.ws.readyState === WebSocket.OPEN) {
89
78
  this.ws.close(1000, 'CLI shutting down');
90
79
  }
91
80
  this.ws = null;
92
81
  }
93
82
  async establishConnection() {
94
83
  const authProvider = await this.getAuthProvider();
95
- const client = new api_client_1.ApiClient({ baseUrl: this.backendUrl });
84
+ const client = new ApiClient({ baseUrl: this.backendUrl });
96
85
  const accessToken = await authProvider.getAccessToken();
97
- const registration = await (0, relay_service_1.registerRelaySession)(client, accessToken, this.currentSessionId ? { sessionId: this.currentSessionId } : undefined);
98
- this.currentSessionId = registration.sessionId;
99
- this.orchestrator.ensureSessionExists(this.currentSessionId);
86
+ const userSessionId = await this.ensureUserSession(client, accessToken);
87
+ const registration = await registerRelaySession(client, accessToken, {
88
+ userSessionId,
89
+ clientKind: 'cli',
90
+ });
91
+ this.userSessionId = registration.userSessionId;
92
+ const agentSessionId = this.ensureAgentSessionExists();
100
93
  const url = buildRelayWebsocketUrl(this.backendUrl, registration.relayWsPath);
101
- const ws = new ws_1.default(url, {
94
+ const ws = new WebSocket(url, {
102
95
  headers: {
103
96
  authorization: `Bearer ${accessToken}`,
104
97
  'x-relay-token': registration.relayToken,
105
98
  },
106
99
  });
107
100
  await waitForOpen(ws);
108
- this.logger.log(`Connected to relay session ${registration.sessionId}`);
101
+ this.logger.log(`Connected to relay (user_session=${registration.userSessionId}, agent_session=${agentSessionId})`);
109
102
  this.ws = ws;
110
103
  this.heartbeatIntervalMs = registration.relayHeartbeatIntervalSec * 1000;
111
104
  this.startPingTimer();
105
+ await this.sendPrimarySessionInit(ws);
112
106
  this.flushQueue();
113
107
  await this.handleWebsocketLifecycle(ws);
114
108
  }
115
109
  async getAuthProvider() {
116
110
  if (!this.authProviderPromise) {
117
- this.authProviderPromise = (0, auth_provider_1.createAuthProvider)({
111
+ this.authProviderPromise = createAuthProvider({
118
112
  store: this.store,
119
113
  backendUrl: this.backendUrl,
120
114
  frontendUrl: this.frontendUrl,
@@ -123,6 +117,64 @@ class RelayBridge extends events_1.default {
123
117
  }
124
118
  return this.authProviderPromise;
125
119
  }
120
+ ensureAgentSessionExists() {
121
+ if (!this.currentAgentSessionId) {
122
+ this.currentAgentSessionId = randomUUID();
123
+ }
124
+ this.orchestrator.ensureSessionExists(this.currentAgentSessionId);
125
+ return this.currentAgentSessionId;
126
+ }
127
+ async ensureUserSession(client, accessToken) {
128
+ if (this.userSessionId) {
129
+ return this.userSessionId;
130
+ }
131
+ const descriptor = await createUserSession(client, accessToken, {
132
+ metadata: { source: 'cli' },
133
+ });
134
+ this.userSessionId = descriptor.session_id;
135
+ this.logger.log(`Created user session ${this.userSessionId} for CLI orchestrator`);
136
+ return this.userSessionId;
137
+ }
138
+ async sendPrimarySessionInit(ws) {
139
+ if (!this.userSessionId) {
140
+ throw new Error('Cannot send session_init before user session is available.');
141
+ }
142
+ const agentSessionId = this.ensureAgentSessionExists();
143
+ const initFrame = {
144
+ type: 'session_init',
145
+ session_id: agentSessionId,
146
+ user_session_id: this.userSessionId,
147
+ session_type: 'CODE',
148
+ parent_session_id: null,
149
+ };
150
+ this.sendFrame(initFrame, ws);
151
+ }
152
+ sendFrame(frame, socket) {
153
+ if (this.isMessageEnvelope(frame)) {
154
+ if (!validateMessageEnvelope(frame)) {
155
+ this.logger.error('[RelayBridge] Message envelope validation failed before sending', {
156
+ frame: JSON.stringify(frame),
157
+ errors: validateMessageEnvelope.errors,
158
+ });
159
+ return;
160
+ }
161
+ }
162
+ const serialized = JSON.stringify(frame);
163
+ const target = socket ?? this.ws;
164
+ if (target && target.readyState === WebSocket.OPEN) {
165
+ try {
166
+ target.send(serialized);
167
+ return;
168
+ }
169
+ catch (error) {
170
+ this.logger.error(`Failed to send relay frame: ${extractErrorMessage(error)}`);
171
+ if (target === this.ws) {
172
+ this.closeCurrentSocket();
173
+ }
174
+ }
175
+ }
176
+ this.enqueue(serialized);
177
+ }
126
178
  async handleWebsocketLifecycle(ws) {
127
179
  await new Promise((resolve) => {
128
180
  const onMessage = (data) => {
@@ -160,20 +212,11 @@ class RelayBridge extends events_1.default {
160
212
  });
161
213
  }
162
214
  handleOutbound(message) {
163
- const payload = JSON.stringify(message);
164
- if (this.ws && this.ws.readyState === ws_1.default.OPEN) {
165
- try {
166
- this.ws.send(payload);
167
- }
168
- catch (error) {
169
- this.logger.error(`Failed to send relay message: ${extractErrorMessage(error)}`);
170
- this.enqueue(payload);
171
- this.closeCurrentSocket();
172
- }
173
- }
174
- else {
175
- this.enqueue(payload);
215
+ const frame = this.toRelayFrame(message);
216
+ if (!frame) {
217
+ return;
176
218
  }
219
+ this.sendFrame(frame);
177
220
  }
178
221
  handleInbound(data) {
179
222
  let parsed;
@@ -185,16 +228,273 @@ class RelayBridge extends events_1.default {
185
228
  this.logger.error(`Received invalid JSON from relay: ${extractErrorMessage(error)}`);
186
229
  return;
187
230
  }
188
- const result = types_1.inboundMessageSchema.safeParse(parsed);
189
- if (result.success) {
190
- this.connectionHandle?.dispatch(result.data);
231
+ if (this.tryHandleControlMessage(parsed)) {
191
232
  return;
192
233
  }
193
- if (isOutboundMessage(parsed)) {
194
- // Relay echoed a message originally produced by the orchestrator; ignore.
234
+ if (this.tryHandleMessageEnvelope(parsed)) {
195
235
  return;
196
236
  }
197
- this.logger.error('Received invalid relay message payload.', parsed);
237
+ this.logger.error('Received invalid relay message payload.', { payload: parsed });
238
+ }
239
+ toRelayFrame(message) {
240
+ switch (message.type) {
241
+ case 'session_init': {
242
+ if (!this.userSessionId) {
243
+ this.logger.warn('Dropping session_init frame: user session is not initialised yet.');
244
+ return null;
245
+ }
246
+ const frame = {
247
+ type: 'session_init',
248
+ session_id: message.sessionId,
249
+ user_session_id: this.userSessionId,
250
+ session_type: 'CODE',
251
+ parent_session_id: message.parentSessionId ?? null,
252
+ };
253
+ if (message.metadata) {
254
+ frame.metadata = message.metadata;
255
+ }
256
+ return frame;
257
+ }
258
+ case 'assistant_text':
259
+ return this.buildTextEnvelope(message);
260
+ case 'tool_call':
261
+ return this.buildToolCallEnvelope(message);
262
+ case 'tool_result':
263
+ return this.buildToolResultEnvelope(message);
264
+ case 'agent_complete':
265
+ return this.buildAgentCompleteEnvelope(message);
266
+ case 'agent_progress':
267
+ return this.buildProgressEnvelope(message);
268
+ default:
269
+ return null;
270
+ }
271
+ }
272
+ tryHandleControlMessage(payload) {
273
+ if (!validateControlMessage(payload)) {
274
+ return false;
275
+ }
276
+ const control = payload;
277
+ const type = control.type;
278
+ switch (type) {
279
+ case 'session_bootstrap':
280
+ this.handleSessionBootstrap(control);
281
+ break;
282
+ case 'session_init_ack':
283
+ this.handleSessionInitAck(control);
284
+ break;
285
+ case 'session_announce':
286
+ this.handleSessionAnnounce(control);
287
+ break;
288
+ case 'session_closed':
289
+ this.logger.info(`Session closed: ${control.session_id} -> status ${control.status}`);
290
+ break;
291
+ case 'heartbeat':
292
+ if (control.mode === 'ping') {
293
+ const response = {
294
+ type: 'heartbeat',
295
+ mode: 'pong',
296
+ sent_at: new Date().toISOString(),
297
+ };
298
+ this.sendFrame(response);
299
+ }
300
+ break;
301
+ default:
302
+ this.logger.debug(`Ignoring control message ${type ?? 'unknown'}`);
303
+ }
304
+ return true;
305
+ }
306
+ tryHandleMessageEnvelope(payload) {
307
+ if (!validateMessageEnvelope(payload)) {
308
+ return false;
309
+ }
310
+ const envelope = payload;
311
+ this.handleMessageEnvelope(envelope);
312
+ return true;
313
+ }
314
+ handleSessionBootstrap(control) {
315
+ const userSessionId = control.root.session_id;
316
+ if (!this.userSessionId) {
317
+ this.userSessionId = userSessionId;
318
+ }
319
+ if (this.userSessionId !== userSessionId) {
320
+ this.logger.warn(`Bootstrap user session mismatch (expected ${this.userSessionId}, got ${userSessionId})`);
321
+ }
322
+ for (const agent of control.agent_sessions ?? []) {
323
+ this.orchestrator.ensureSessionExists(agent.session_id);
324
+ }
325
+ }
326
+ handleSessionInitAck(control) {
327
+ const sessionId = control.session_id;
328
+ if (!this.currentAgentSessionId) {
329
+ this.currentAgentSessionId = sessionId;
330
+ }
331
+ if (this.currentAgentSessionId !== sessionId) {
332
+ this.logger.warn(`Session init ack for unexpected session: ${sessionId} (current=${this.currentAgentSessionId})`);
333
+ }
334
+ }
335
+ handleSessionAnnounce(control) {
336
+ if (control.session.kind === 'agent_session') {
337
+ this.orchestrator.ensureSessionExists(control.session.session_id);
338
+ }
339
+ }
340
+ handleMessageEnvelope(envelope) {
341
+ const content = envelope.payload.content;
342
+ if (this.isTextContent(content) && envelope.sender.kind === 'user') {
343
+ this.connectionHandle?.dispatch({
344
+ type: 'chat',
345
+ sessionId: envelope.session_id,
346
+ text: content.text,
347
+ });
348
+ return;
349
+ }
350
+ const label = content.type ?? 'unknown';
351
+ this.logger.debug(`Ignoring inbound envelope with content type ${label}`);
352
+ }
353
+ isTextContent(content) {
354
+ return typeof content.text === 'string';
355
+ }
356
+ buildTextEnvelope(message) {
357
+ const content = {
358
+ type: 'text',
359
+ text: message.text,
360
+ };
361
+ const payloadMetadata = message.workerId || message.workerTask
362
+ ? {
363
+ worker_id: message.workerId,
364
+ worker_task: message.workerTask,
365
+ }
366
+ : undefined;
367
+ const senderSessionId = message.workerId ?? message.sessionId;
368
+ return this.buildEnvelope({
369
+ sessionId: message.sessionId,
370
+ senderSessionId,
371
+ content,
372
+ payloadMetadata,
373
+ messageId: message.messageId,
374
+ });
375
+ }
376
+ buildToolCallEnvelope(message) {
377
+ const args = this.normalizeToolArguments(message.input);
378
+ const content = {
379
+ type: 'tool_call',
380
+ name: message.toolName,
381
+ tool_use_id: message.toolUseId,
382
+ arguments: args,
383
+ };
384
+ const payloadMetadata = message.workerId || message.workerTask
385
+ ? {
386
+ worker_id: message.workerId,
387
+ worker_task: message.workerTask,
388
+ }
389
+ : undefined;
390
+ const senderSessionId = message.workerId ?? message.sessionId;
391
+ return this.buildEnvelope({
392
+ sessionId: message.sessionId,
393
+ senderSessionId,
394
+ content,
395
+ payloadMetadata,
396
+ messageId: message.messageId,
397
+ });
398
+ }
399
+ normalizeToolArguments(input) {
400
+ if (input && typeof input === 'object' && !Array.isArray(input)) {
401
+ return input;
402
+ }
403
+ return { value: input };
404
+ }
405
+ buildToolResultEnvelope(message) {
406
+ const output = typeof message.content === 'object' && message.content !== null
407
+ ? message.content
408
+ : { value: message.content };
409
+ const content = {
410
+ type: 'tool_result',
411
+ tool_use_id: message.toolUseId,
412
+ output,
413
+ is_error: Boolean(message.isError),
414
+ };
415
+ const payloadMetadata = message.workerId || message.workerTask
416
+ ? {
417
+ worker_id: message.workerId,
418
+ worker_task: message.workerTask,
419
+ }
420
+ : undefined;
421
+ const senderSessionId = message.workerId ?? message.sessionId;
422
+ return this.buildEnvelope({
423
+ sessionId: message.sessionId,
424
+ senderSessionId,
425
+ content,
426
+ payloadMetadata,
427
+ messageId: message.messageId,
428
+ });
429
+ }
430
+ buildAgentCompleteEnvelope(message) {
431
+ const content = {
432
+ type: 'agent_complete',
433
+ success: message.success,
434
+ duration_ms: message.durationMs ?? null,
435
+ cost_usd: message.costUsd ?? null,
436
+ message: message.message ?? null,
437
+ };
438
+ if (message.metadata) {
439
+ content.metadata = message.metadata;
440
+ }
441
+ const metadataAgent = typeof message.metadata?.agent_session_id === 'string'
442
+ ? message.metadata.agent_session_id
443
+ : undefined;
444
+ const senderSessionId = metadataAgent ?? this.currentAgentSessionId ?? message.sessionId;
445
+ return this.buildEnvelope({
446
+ sessionId: message.sessionId,
447
+ senderSessionId,
448
+ content,
449
+ messageId: message.messageId,
450
+ });
451
+ }
452
+ buildProgressEnvelope(message) {
453
+ const content = {
454
+ type: 'agent_progress',
455
+ status: message.status,
456
+ };
457
+ if (message.detail) {
458
+ content.detail = message.detail;
459
+ }
460
+ if (message.metadata) {
461
+ content.metadata = message.metadata;
462
+ }
463
+ const metadataAgent = typeof message.metadata?.agent_session_id === 'string'
464
+ ? message.metadata.agent_session_id
465
+ : undefined;
466
+ const sessionId = message.sessionId ?? this.currentAgentSessionId ?? this.ensureAgentSessionExists();
467
+ const senderSessionId = metadataAgent ?? this.currentAgentSessionId ?? sessionId;
468
+ return this.buildEnvelope({
469
+ sessionId,
470
+ senderSessionId,
471
+ content,
472
+ messageId: message.messageId,
473
+ });
474
+ }
475
+ buildEnvelope(options) {
476
+ const payload = {
477
+ version: 0,
478
+ content: options.content,
479
+ };
480
+ if (options.payloadMetadata && Object.keys(options.payloadMetadata).length > 0) {
481
+ payload.metadata = options.payloadMetadata;
482
+ }
483
+ const sender = {
484
+ kind: 'agent_session',
485
+ id: options.senderSessionId ?? options.sessionId,
486
+ };
487
+ const envelope = {
488
+ message_id: options.messageId ?? randomUUID(),
489
+ session_id: options.sessionId,
490
+ sender,
491
+ payload,
492
+ created_at: new Date().toISOString(),
493
+ };
494
+ return envelope;
495
+ }
496
+ isMessageEnvelope(frame) {
497
+ return frame.payload !== undefined;
198
498
  }
199
499
  enqueue(serialized) {
200
500
  if (this.pendingOutbound.length >= MAX_QUEUE_SIZE) {
@@ -203,7 +503,7 @@ class RelayBridge extends events_1.default {
203
503
  this.pendingOutbound.push(serialized);
204
504
  }
205
505
  flushQueue() {
206
- if (!this.ws || this.ws.readyState !== ws_1.default.OPEN) {
506
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
207
507
  return;
208
508
  }
209
509
  while (this.pendingOutbound.length > 0) {
@@ -226,27 +526,26 @@ class RelayBridge extends events_1.default {
226
526
  if (this.pingTimer) {
227
527
  clearInterval(this.pingTimer);
228
528
  }
229
- const interval = Math.max(this.heartbeatIntervalMs, 5000);
529
+ const interval = Math.max(this.heartbeatIntervalMs, 5_000);
230
530
  this.pingTimer = setInterval(() => {
231
- if (!this.ws || this.ws.readyState !== ws_1.default.OPEN) {
531
+ const socket = this.ws;
532
+ if (!socket || socket.readyState !== WebSocket.OPEN) {
232
533
  return;
233
534
  }
234
- try {
235
- this.ws.send(JSON.stringify({ type: 'ping' }));
236
- }
237
- catch (error) {
238
- this.logger.error(`Failed to send relay ping: ${extractErrorMessage(error)}`);
239
- this.closeCurrentSocket();
240
- }
535
+ const frame = {
536
+ type: 'heartbeat',
537
+ mode: 'ping',
538
+ sent_at: new Date().toISOString(),
539
+ };
540
+ this.sendFrame(frame, socket);
241
541
  }, interval);
242
542
  }
243
543
  closeCurrentSocket() {
244
- if (this.ws && this.ws.readyState === ws_1.default.OPEN) {
544
+ if (this.ws && this.ws.readyState === WebSocket.OPEN) {
245
545
  this.ws.close(1012, 'Reconnecting');
246
546
  }
247
547
  }
248
548
  }
249
- exports.RelayBridge = RelayBridge;
250
549
  function buildRelayWebsocketUrl(baseUrl, path) {
251
550
  const url = new URL(baseUrl);
252
551
  url.protocol = url.protocol === 'https:' ? 'wss:' : 'ws:';
@@ -270,13 +569,6 @@ function extractErrorMessage(error) {
270
569
  }
271
570
  return String(error);
272
571
  }
273
- function isOutboundMessage(value) {
274
- if (!value || typeof value !== 'object') {
275
- return false;
276
- }
277
- const type = value.type;
278
- return typeof type === 'string' && OUTBOUND_MESSAGE_TYPES.has(type);
279
- }
280
572
  function isAbortError(error) {
281
573
  if (!(error instanceof Error)) {
282
574
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"relay-bridge.js","sourceRoot":"","sources":["../../src/relay/relay-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay-bridge.js","sourceRoot":"","sources":["../../src/relay/relay-bridge.ts"],"names":[],"mappings":"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"}