omnara 0.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 (111) hide show
  1. package/README.md +20 -0
  2. package/bin/omnara.js +16 -0
  3. package/dist/auth/auth-provider.d.ts +18 -0
  4. package/dist/auth/auth-provider.js +58 -0
  5. package/dist/auth/auth-provider.js.map +1 -0
  6. package/dist/auth/cli-auth-service.d.ts +18 -0
  7. package/dist/auth/cli-auth-service.js +30 -0
  8. package/dist/auth/cli-auth-service.js.map +1 -0
  9. package/dist/auth/credential-manager.d.ts +6 -0
  10. package/dist/auth/credential-manager.js +73 -0
  11. package/dist/auth/credential-manager.js.map +1 -0
  12. package/dist/auth/credentials-store.d.ts +14 -0
  13. package/dist/auth/credentials-store.js +75 -0
  14. package/dist/auth/credentials-store.js.map +1 -0
  15. package/dist/auth/login-flow.d.ts +15 -0
  16. package/dist/auth/login-flow.js +107 -0
  17. package/dist/auth/login-flow.js.map +1 -0
  18. package/dist/auth/supabase-client.d.ts +3 -0
  19. package/dist/auth/supabase-client.js +13 -0
  20. package/dist/auth/supabase-client.js.map +1 -0
  21. package/dist/auth/supabase-config.d.ts +5 -0
  22. package/dist/auth/supabase-config.js +24 -0
  23. package/dist/auth/supabase-config.js.map +1 -0
  24. package/dist/cli.d.ts +3 -0
  25. package/dist/cli.js +53 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/commands/agent.d.ts +7 -0
  28. package/dist/commands/agent.js +174 -0
  29. package/dist/commands/agent.js.map +1 -0
  30. package/dist/commands/auth.d.ts +2 -0
  31. package/dist/commands/auth.js +87 -0
  32. package/dist/commands/auth.js.map +1 -0
  33. package/dist/commands/hello.d.ts +2 -0
  34. package/dist/commands/hello.js +12 -0
  35. package/dist/commands/hello.js.map +1 -0
  36. package/dist/commands/index.d.ts +2 -0
  37. package/dist/commands/index.js +9 -0
  38. package/dist/commands/index.js.map +1 -0
  39. package/dist/generated/relay.d.ts +240 -0
  40. package/dist/generated/relay.js +2376 -0
  41. package/dist/generated/relay.js.map +1 -0
  42. package/dist/http/api-client.d.ts +24 -0
  43. package/dist/http/api-client.js +122 -0
  44. package/dist/http/api-client.js.map +1 -0
  45. package/dist/messaging/proto-codec.d.ts +5 -0
  46. package/dist/messaging/proto-codec.js +387 -0
  47. package/dist/messaging/proto-codec.js.map +1 -0
  48. package/dist/orchestrator/agent-orchestrator.d.ts +57 -0
  49. package/dist/orchestrator/agent-orchestrator.js +401 -0
  50. package/dist/orchestrator/agent-orchestrator.js.map +1 -0
  51. package/dist/orchestrator/ai-client.d.ts +16 -0
  52. package/dist/orchestrator/ai-client.js +74 -0
  53. package/dist/orchestrator/ai-client.js.map +1 -0
  54. package/dist/orchestrator/session.d.ts +37 -0
  55. package/dist/orchestrator/session.js +260 -0
  56. package/dist/orchestrator/session.js.map +1 -0
  57. package/dist/orchestrator/tools/worker-tools.d.ts +7 -0
  58. package/dist/orchestrator/tools/worker-tools.js +58 -0
  59. package/dist/orchestrator/tools/worker-tools.js.map +1 -0
  60. package/dist/orchestrator/types.d.ts +140 -0
  61. package/dist/orchestrator/types.js +33 -0
  62. package/dist/orchestrator/types.js.map +1 -0
  63. package/dist/orchestrator/utils/session-logger.d.ts +7 -0
  64. package/dist/orchestrator/utils/session-logger.js +53 -0
  65. package/dist/orchestrator/utils/session-logger.js.map +1 -0
  66. package/dist/orchestrator/worker-manager.d.ts +65 -0
  67. package/dist/orchestrator/worker-manager.js +241 -0
  68. package/dist/orchestrator/worker-manager.js.map +1 -0
  69. package/dist/relay/relay-bridge.d.ts +35 -0
  70. package/dist/relay/relay-bridge.js +306 -0
  71. package/dist/relay/relay-bridge.js.map +1 -0
  72. package/dist/relay/relay-service.d.ts +20 -0
  73. package/dist/relay/relay-service.js +28 -0
  74. package/dist/relay/relay-service.js.map +1 -0
  75. package/dist/repl/terminal-repl.d.ts +9 -0
  76. package/dist/repl/terminal-repl.js +258 -0
  77. package/dist/repl/terminal-repl.js.map +1 -0
  78. package/dist/server/agent-server.d.ts +46 -0
  79. package/dist/server/agent-server.js +429 -0
  80. package/dist/server/agent-server.js.map +1 -0
  81. package/dist/server/ai-client.d.ts +16 -0
  82. package/dist/server/ai-client.js +74 -0
  83. package/dist/server/ai-client.js.map +1 -0
  84. package/dist/server/session.d.ts +35 -0
  85. package/dist/server/session.js +272 -0
  86. package/dist/server/session.js.map +1 -0
  87. package/dist/server/subagents.d.ts +19 -0
  88. package/dist/server/subagents.js +42 -0
  89. package/dist/server/subagents.js.map +1 -0
  90. package/dist/server/tools/worker-tools.d.ts +2 -0
  91. package/dist/server/tools/worker-tools.js +37 -0
  92. package/dist/server/tools/worker-tools.js.map +1 -0
  93. package/dist/server/types.d.ts +120 -0
  94. package/dist/server/types.js +29 -0
  95. package/dist/server/types.js.map +1 -0
  96. package/dist/server/utils/session-logger.d.ts +7 -0
  97. package/dist/server/utils/session-logger.js +53 -0
  98. package/dist/server/utils/session-logger.js.map +1 -0
  99. package/dist/server/worker-manager.d.ts +67 -0
  100. package/dist/server/worker-manager.js +207 -0
  101. package/dist/server/worker-manager.js.map +1 -0
  102. package/dist/test-agent.d.ts +1 -0
  103. package/dist/test-agent.js +63 -0
  104. package/dist/test-agent.js.map +1 -0
  105. package/dist/utils/prompt.d.ts +1 -0
  106. package/dist/utils/prompt.js +19 -0
  107. package/dist/utils/prompt.js.map +1 -0
  108. package/dist/voice/voice-service.d.ts +19 -0
  109. package/dist/voice/voice-service.js +27 -0
  110. package/dist/voice/voice-service.js.map +1 -0
  111. package/package.json +58 -0
@@ -0,0 +1,401 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgentOrchestrator = void 0;
4
+ exports.startAgentOrchestrator = startAgentOrchestrator;
5
+ const crypto_1 = require("crypto");
6
+ const ai_client_1 = require("./ai-client");
7
+ const session_1 = require("./session");
8
+ const worker_manager_1 = require("./worker-manager");
9
+ const worker_tools_1 = require("./tools/worker-tools");
10
+ const WORKER_TOOL_NAME = 'mcp__worker__launch_worker';
11
+ class AgentOrchestrator {
12
+ constructor(dependencies) {
13
+ this.sessions = new Map();
14
+ this.clients = new Map();
15
+ this.toolUseMap = new Map();
16
+ this.started = false;
17
+ const resolveSessionIdBySdk = (sdkSessionId) => this.findSessionIdBySdkSession(sdkSessionId);
18
+ const workerClientFactory = dependencies?.createWorkerClient ??
19
+ (() => new ai_client_1.AIClient({
20
+ defaults: {
21
+ allowedTools: [...ai_client_1.BASE_ALLOWED_TOOLS],
22
+ },
23
+ }));
24
+ this.workerManager =
25
+ dependencies?.workerManager ??
26
+ new worker_manager_1.WorkerManager({
27
+ createClient: workerClientFactory,
28
+ resolveSessionIdBySdk,
29
+ });
30
+ const workerMcpServer = (0, worker_tools_1.createWorkerMcpServer)(this.workerManager, {
31
+ resolveSessionIdBySdk,
32
+ resolveSessionIdByToolUse: (toolUseId) => this.consumeToolUse(toolUseId),
33
+ });
34
+ const mainClientFactory = dependencies?.createMainClient ??
35
+ (() => new ai_client_1.AIClient({
36
+ defaults: {
37
+ allowedTools: [...ai_client_1.BASE_ALLOWED_TOOLS, WORKER_TOOL_NAME],
38
+ mcpServers: {
39
+ worker: workerMcpServer,
40
+ },
41
+ },
42
+ }));
43
+ this.aiClient = mainClientFactory();
44
+ this.registerWorkerListeners();
45
+ }
46
+ ensureSessionExists(sessionId) {
47
+ const existing = this.sessions.get(sessionId);
48
+ if (existing) {
49
+ return existing;
50
+ }
51
+ const session = new session_1.Session(sessionId, this.aiClient, (id) => this.handleSessionEmpty(id), (toolUseId) => this.registerToolUse(toolUseId, sessionId));
52
+ this.sessions.set(sessionId, session);
53
+ return session;
54
+ }
55
+ getSession(sessionId) {
56
+ return this.sessions.get(sessionId);
57
+ }
58
+ getWorkerManager() {
59
+ return this.workerManager;
60
+ }
61
+ addClient(adapter) {
62
+ const clientId = (0, crypto_1.randomUUID)();
63
+ const connection = {
64
+ id: clientId,
65
+ sessionIds: new Set(),
66
+ send: adapter.send,
67
+ canSend: adapter.canSend,
68
+ close: adapter.close,
69
+ };
70
+ this.clients.set(clientId, connection);
71
+ let disconnected = false;
72
+ const disconnect = () => {
73
+ if (disconnected) {
74
+ return;
75
+ }
76
+ disconnected = true;
77
+ this.handleDisconnect(connection);
78
+ try {
79
+ connection.close?.();
80
+ }
81
+ catch (error) {
82
+ console.error('Failed to close client connection:', error);
83
+ }
84
+ };
85
+ return {
86
+ id: clientId,
87
+ dispatch: (message) => {
88
+ this.handleClientMessage(connection, message);
89
+ },
90
+ disconnect,
91
+ };
92
+ }
93
+ async start() {
94
+ if (this.started) {
95
+ return;
96
+ }
97
+ this.started = true;
98
+ }
99
+ async stop() {
100
+ for (const connection of Array.from(this.clients.values())) {
101
+ this.handleDisconnect(connection);
102
+ try {
103
+ connection.close?.();
104
+ }
105
+ catch (error) {
106
+ console.error('Failed to close client connection:', error);
107
+ }
108
+ }
109
+ this.clients.clear();
110
+ for (const session of this.sessions.values()) {
111
+ session.close();
112
+ }
113
+ this.sessions.clear();
114
+ this.started = false;
115
+ }
116
+ handleDisconnect(connection) {
117
+ for (const sessionId of connection.sessionIds) {
118
+ const session = this.sessions.get(sessionId);
119
+ if (session) {
120
+ session.unsubscribe(connection.id);
121
+ }
122
+ }
123
+ this.clients.delete(connection.id);
124
+ }
125
+ handleClientMessage(connection, message) {
126
+ switch (message.type) {
127
+ case 'chat':
128
+ this.handleChatMessage(connection, message);
129
+ break;
130
+ case 'session_init':
131
+ this.handleSessionInit(connection, message);
132
+ break;
133
+ case 'join':
134
+ this.handleJoin(connection, message.sessionId);
135
+ break;
136
+ case 'leave':
137
+ this.handleLeave(connection, message.sessionId);
138
+ break;
139
+ case 'ping':
140
+ this.sendToConnection(connection, { type: 'pong' });
141
+ break;
142
+ case 'cancel_worker':
143
+ this.handleCancelWorker(connection, message.workerId);
144
+ break;
145
+ default:
146
+ this.sendToConnection(connection, {
147
+ type: 'error',
148
+ message: `Unsupported message type: ${message.type}`,
149
+ });
150
+ }
151
+ }
152
+ handleSessionInit(connection, message) {
153
+ this.sendToConnection(connection, {
154
+ type: 'session_initialized',
155
+ sessionId: message.sessionId,
156
+ parentSessionId: message.parentSessionId ?? null,
157
+ });
158
+ }
159
+ handleChatMessage(connection, message) {
160
+ let session;
161
+ let sessionId = message.sessionId;
162
+ if (sessionId) {
163
+ session = this.sessions.get(sessionId);
164
+ if (!session) {
165
+ this.sendToConnection(connection, {
166
+ type: 'error',
167
+ sessionId,
168
+ message: 'Session not found.',
169
+ });
170
+ return;
171
+ }
172
+ }
173
+ else {
174
+ session = this.createSession();
175
+ sessionId = session.id;
176
+ this.sendToConnection(connection, {
177
+ type: 'session_created',
178
+ sessionId,
179
+ });
180
+ }
181
+ if (!connection.sessionIds.has(sessionId)) {
182
+ session.subscribe({
183
+ id: connection.id,
184
+ send: (payload) => {
185
+ this.sendToConnection(connection, payload);
186
+ },
187
+ canSend: connection.canSend,
188
+ });
189
+ connection.sessionIds.add(sessionId);
190
+ }
191
+ session.logInbound({ type: 'chat', text: message.text });
192
+ session.announceInboundMessage(message.text, 'user');
193
+ session.enqueueUserMessage(message.text);
194
+ }
195
+ handleJoin(connection, sessionId) {
196
+ const session = this.sessions.get(sessionId);
197
+ if (!session) {
198
+ this.sendToConnection(connection, {
199
+ type: 'error',
200
+ sessionId,
201
+ message: 'Session not found.',
202
+ });
203
+ return;
204
+ }
205
+ if (!connection.sessionIds.has(sessionId)) {
206
+ session.subscribe({
207
+ id: connection.id,
208
+ send: (payload) => {
209
+ this.sendToConnection(connection, payload);
210
+ },
211
+ canSend: connection.canSend,
212
+ });
213
+ connection.sessionIds.add(sessionId);
214
+ }
215
+ else {
216
+ this.sendToConnection(connection, {
217
+ type: 'session_joined',
218
+ sessionId,
219
+ });
220
+ }
221
+ }
222
+ handleLeave(connection, sessionId) {
223
+ if (!connection.sessionIds.has(sessionId)) {
224
+ this.sendToConnection(connection, {
225
+ type: 'error',
226
+ sessionId,
227
+ message: 'You are not subscribed to this session.',
228
+ });
229
+ return;
230
+ }
231
+ connection.sessionIds.delete(sessionId);
232
+ const session = this.sessions.get(sessionId);
233
+ if (session) {
234
+ session.unsubscribe(connection.id);
235
+ }
236
+ }
237
+ handleCancelWorker(connection, workerId) {
238
+ const canceled = this.workerManager.cancelWorker(workerId);
239
+ if (!canceled) {
240
+ this.sendToConnection(connection, {
241
+ type: 'error',
242
+ message: `Worker ${workerId} not found or not running.`,
243
+ });
244
+ }
245
+ }
246
+ createSession() {
247
+ const sessionId = (0, crypto_1.randomUUID)();
248
+ return this.ensureSessionExists(sessionId);
249
+ }
250
+ registerToolUse(toolUseId, sessionId) {
251
+ this.toolUseMap.set(toolUseId, sessionId);
252
+ }
253
+ consumeToolUse(toolUseId) {
254
+ const sessionId = this.toolUseMap.get(toolUseId);
255
+ if (sessionId) {
256
+ this.toolUseMap.delete(toolUseId);
257
+ }
258
+ return sessionId;
259
+ }
260
+ handleSessionEmpty(sessionId) {
261
+ const session = this.sessions.get(sessionId);
262
+ if (!session) {
263
+ return;
264
+ }
265
+ if (!session.hasSubscribers()) {
266
+ session.close();
267
+ this.sessions.delete(sessionId);
268
+ }
269
+ }
270
+ registerWorkerListeners() {
271
+ this.workerManager.on('session_start', (record) => {
272
+ this.handleWorkerSessionStart(record);
273
+ });
274
+ this.workerManager.on('message', (event) => {
275
+ this.handleWorkerMessage(event);
276
+ });
277
+ this.workerManager.on('update', (record) => {
278
+ this.broadcastWorkerUpdate(record);
279
+ });
280
+ this.workerManager.on('completed', (record) => {
281
+ this.broadcastWorkerUpdate(record);
282
+ this.handleWorkerCompletion(record);
283
+ });
284
+ }
285
+ broadcastWorkerUpdate(record) {
286
+ const payload = this.toWorkerPayload(record);
287
+ this.broadcastToAll({
288
+ type: 'worker_update',
289
+ sessionId: record.sessionId,
290
+ worker: payload,
291
+ });
292
+ }
293
+ toWorkerPayload(record) {
294
+ const latest = record.progress.length > 0 ? record.progress[record.progress.length - 1]?.message : undefined;
295
+ return {
296
+ id: record.id,
297
+ status: record.status,
298
+ prompt: record.prompt,
299
+ lastUpdateAt: record.lastUpdateAt,
300
+ latestMessage: latest,
301
+ result: record.result,
302
+ error: record.error,
303
+ originSessionId: record.originSessionId,
304
+ sessionId: record.sessionId,
305
+ };
306
+ }
307
+ handleWorkerSessionStart(record) {
308
+ this.broadcastToAll({
309
+ type: 'session_init',
310
+ sessionId: record.sessionId,
311
+ parentSessionId: record.originSessionId ?? null,
312
+ metadata: record.metadata ?? undefined,
313
+ });
314
+ }
315
+ handleWorkerMessage(event) {
316
+ switch (event.messageType) {
317
+ case 'assistant_text':
318
+ if (!event.text) {
319
+ return;
320
+ }
321
+ this.broadcastToAll({
322
+ type: 'assistant_text',
323
+ sessionId: event.record.sessionId,
324
+ text: event.text,
325
+ });
326
+ break;
327
+ case 'assistant_complete':
328
+ this.broadcastToAll({
329
+ type: 'assistant_complete',
330
+ sessionId: event.record.sessionId,
331
+ });
332
+ break;
333
+ default:
334
+ break;
335
+ }
336
+ }
337
+ handleWorkerCompletion(record) {
338
+ const sessionId = record.originSessionId;
339
+ if (!sessionId) {
340
+ return;
341
+ }
342
+ const session = this.sessions.get(sessionId);
343
+ if (!session) {
344
+ return;
345
+ }
346
+ const summary = this.buildWorkerSummary(record);
347
+ if (!summary) {
348
+ return;
349
+ }
350
+ session.logInbound({ type: 'worker_result', workerId: record.id, summary });
351
+ session.announceInboundMessage(summary, 'worker');
352
+ session.enqueueUserMessage(summary);
353
+ }
354
+ buildWorkerSummary(record) {
355
+ switch (record.status) {
356
+ case 'completed':
357
+ return record.result ?? `Worker ${record.id} completed.`;
358
+ case 'error':
359
+ return `Worker ${record.id} failed: ${record.error ?? 'Unknown error.'}`;
360
+ case 'canceled':
361
+ return `Worker ${record.id} was canceled.`;
362
+ default:
363
+ return null;
364
+ }
365
+ }
366
+ broadcastToAll(message) {
367
+ for (const connection of this.clients.values()) {
368
+ this.sendToConnection(connection, message);
369
+ }
370
+ }
371
+ findSessionIdBySdkSession(sdkSessionId) {
372
+ if (!sdkSessionId) {
373
+ return undefined;
374
+ }
375
+ for (const [serverId, session] of this.sessions.entries()) {
376
+ if (session.sdkSessionIdentifier === sdkSessionId) {
377
+ return serverId;
378
+ }
379
+ }
380
+ return undefined;
381
+ }
382
+ sendToConnection(connection, message) {
383
+ if (connection.canSend && !connection.canSend()) {
384
+ return;
385
+ }
386
+ try {
387
+ connection.send(message);
388
+ }
389
+ catch (error) {
390
+ console.error('Failed to send message to client:', error);
391
+ this.handleDisconnect(connection);
392
+ }
393
+ }
394
+ }
395
+ exports.AgentOrchestrator = AgentOrchestrator;
396
+ async function startAgentOrchestrator(dependencies) {
397
+ const server = new AgentOrchestrator(dependencies);
398
+ await server.start();
399
+ return server;
400
+ }
401
+ //# sourceMappingURL=agent-orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-orchestrator.js","sourceRoot":"","sources":["../../src/orchestrator/agent-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type Options, type Query, type SDKMessage } from '@anthropic-ai/claude-agent-sdk';
2
+ export interface AIClientConfig {
3
+ defaults?: Partial<Options>;
4
+ }
5
+ export interface AgentClient {
6
+ streamUserMessage(prompt: string, overrides?: Partial<Options>): AsyncIterable<SDKMessage>;
7
+ createQuery(prompt: string, overrides?: Partial<Options>): Query;
8
+ }
9
+ export declare const BASE_ALLOWED_TOOLS: readonly ["Task", "Bash", "Glob", "Grep", "LS", "ExitPlanMode", "Read", "Edit", "MultiEdit", "Write", "NotebookEdit", "WebFetch", "TodoWrite", "WebSearch", "BashOutput", "KillBash", "Skill", "SlashCommand"];
10
+ export declare class AIClient implements AgentClient {
11
+ private readonly baseOptions;
12
+ constructor(config?: AIClientConfig);
13
+ streamUserMessage(prompt: string, overrides?: Partial<Options>): AsyncIterable<SDKMessage>;
14
+ createQuery(prompt: string, overrides?: Partial<Options>): Query;
15
+ private ensureWorkingDirectory;
16
+ }
@@ -0,0 +1,74 @@
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.AIClient = exports.BASE_ALLOWED_TOOLS = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const claude_agent_sdk_1 = require("@anthropic-ai/claude-agent-sdk");
9
+ exports.BASE_ALLOWED_TOOLS = [
10
+ 'Task',
11
+ 'Bash',
12
+ 'Glob',
13
+ 'Grep',
14
+ 'LS',
15
+ 'ExitPlanMode',
16
+ 'Read',
17
+ 'Edit',
18
+ 'MultiEdit',
19
+ 'Write',
20
+ 'NotebookEdit',
21
+ 'WebFetch',
22
+ 'TodoWrite',
23
+ 'WebSearch',
24
+ 'BashOutput',
25
+ 'KillBash',
26
+ 'Skill',
27
+ 'SlashCommand',
28
+ ];
29
+ class AIClient {
30
+ constructor(config) {
31
+ const defaultOptions = {
32
+ maxTurns: 100,
33
+ model: 'opus',
34
+ cwd: process.cwd(),
35
+ includePartialMessages: false,
36
+ allowedTools: [...exports.BASE_ALLOWED_TOOLS],
37
+ };
38
+ this.baseOptions = {
39
+ ...defaultOptions,
40
+ ...config?.defaults,
41
+ };
42
+ this.ensureWorkingDirectory(this.baseOptions.cwd);
43
+ }
44
+ async *streamUserMessage(prompt, overrides) {
45
+ const q = this.createQuery(prompt, overrides);
46
+ for await (const message of q) {
47
+ yield message;
48
+ }
49
+ }
50
+ createQuery(prompt, overrides) {
51
+ const merged = {
52
+ ...this.baseOptions,
53
+ ...overrides,
54
+ };
55
+ this.ensureWorkingDirectory(merged.cwd);
56
+ return (0, claude_agent_sdk_1.query)({
57
+ prompt,
58
+ options: merged,
59
+ });
60
+ }
61
+ ensureWorkingDirectory(cwd) {
62
+ if (!cwd) {
63
+ return;
64
+ }
65
+ try {
66
+ fs_1.default.mkdirSync(cwd, { recursive: true });
67
+ }
68
+ catch (error) {
69
+ console.warn(`Failed to ensure working directory ${cwd}:`, error);
70
+ }
71
+ }
72
+ }
73
+ exports.AIClient = AIClient;
74
+ //# sourceMappingURL=ai-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-client.js","sourceRoot":"","sources":["../../src/orchestrator/ai-client.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,qEAAkG;AAWrF,QAAA,kBAAkB,GAAG;IAChC,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,IAAI;IACJ,cAAc;IACd,MAAM;IACN,MAAM;IACN,WAAW;IACX,OAAO;IACP,cAAc;IACd,UAAU;IACV,WAAW;IACX,WAAW;IACX,YAAY;IACZ,UAAU;IACV,OAAO;IACP,cAAc;CACN,CAAC;AAEX,MAAa,QAAQ;IAGnB,YAAY,MAAuB;QACjC,MAAM,cAAc,GAAY;YAC9B,QAAQ,EAAE,GAAG;YACb,KAAK,EAAE,MAAM;YACb,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,sBAAsB,EAAE,KAAK;YAC7B,YAAY,EAAE,CAAC,GAAG,0BAAkB,CAAC;SACtC,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG;YACjB,GAAG,cAAc;YACjB,GAAG,MAAM,EAAE,QAAQ;SACpB,CAAC;QAEF,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,CAAC,iBAAiB,CACtB,MAAc,EACd,SAA4B;QAE5B,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC9C,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,CAAC;QAChB,CAAC;IACH,CAAC;IAED,WAAW,CAAC,MAAc,EAAE,SAA4B;QACtD,MAAM,MAAM,GAAY;YACtB,GAAG,IAAI,CAAC,WAAW;YACnB,GAAG,SAAS;SACb,CAAC;QAEF,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAExC,OAAO,IAAA,wBAAK,EAAC;YACX,MAAM;YACN,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;IACL,CAAC;IAEO,sBAAsB,CAAC,GAAY;QACzC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,YAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,sCAAsC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;CACF;AAtDD,4BAsDC"}
@@ -0,0 +1,37 @@
1
+ import type { AgentClient } from './ai-client';
2
+ import type { SessionSubscriber } from './types';
3
+ type StreamEvent = {
4
+ type: string;
5
+ [key: string]: unknown;
6
+ };
7
+ type ToolUseCallback = (toolUseId: string, sessionId: string) => void;
8
+ export declare class Session {
9
+ readonly id: string;
10
+ private readonly aiClient;
11
+ private readonly subscribers;
12
+ private readonly onEmpty;
13
+ private readonly onToolUse?;
14
+ private readonly logger;
15
+ private sdkSessionId;
16
+ private inflight;
17
+ private lastActivity;
18
+ constructor(id: string, aiClient: AgentClient, onEmpty: (sessionId: string) => void, onToolUse?: ToolUseCallback);
19
+ announceInboundMessage(text: string, origin?: 'user' | 'worker'): void;
20
+ get lastActiveAt(): number;
21
+ get sdkSessionIdentifier(): string | null;
22
+ subscribe(subscriber: SessionSubscriber): void;
23
+ unsubscribe(subscriberId: string): void;
24
+ hasSubscribers(): boolean;
25
+ close(): void;
26
+ enqueueUserMessage(text: string): void;
27
+ handleStreamEvent(event: StreamEvent): void;
28
+ private processUserMessage;
29
+ private routeSdkMessage;
30
+ private handleAssistantMessage;
31
+ private handleResultMessage;
32
+ private handleSystemMessage;
33
+ logInbound(payload: unknown): void;
34
+ private broadcast;
35
+ private safeSend;
36
+ }
37
+ export {};