omnara 0.1.3 → 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 (136) 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 +13 -15
  4. package/dist/auth/auth-provider.js.map +1 -1
  5. package/dist/auth/cli-auth-service.d.ts +1 -1
  6. package/dist/auth/cli-auth-service.js +3 -6
  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 +23 -29
  15. package/dist/auth/login-flow.js.map +1 -1
  16. package/dist/auth/loopback-listener.js +11 -15
  17. package/dist/auth/loopback-listener.js.map +1 -1
  18. package/dist/auth/pkce.js +4 -7
  19. package/dist/auth/pkce.js.map +1 -1
  20. package/dist/auth/supabase-client.d.ts +1 -1
  21. package/dist/auth/supabase-client.js +3 -6
  22. package/dist/auth/supabase-client.js.map +1 -1
  23. package/dist/auth/supabase-config.js +3 -6
  24. package/dist/auth/supabase-config.js.map +1 -1
  25. package/dist/cli.js +26 -25
  26. package/dist/cli.js.map +1 -1
  27. package/dist/commands/agent.js +36 -38
  28. package/dist/commands/agent.js.map +1 -1
  29. package/dist/commands/auth.js +13 -16
  30. package/dist/commands/auth.js.map +1 -1
  31. package/dist/commands/index.d.ts +2 -2
  32. package/dist/commands/index.js +2 -8
  33. package/dist/commands/index.js.map +1 -1
  34. package/dist/http/api-client.js +7 -11
  35. package/dist/http/api-client.js.map +1 -1
  36. package/dist/http/user-sessions.d.ts +13 -0
  37. package/dist/http/user-sessions.js +9 -0
  38. package/dist/http/user-sessions.js.map +1 -0
  39. package/dist/orchestrator/agent-orchestrator.d.ts +11 -6
  40. package/dist/orchestrator/agent-orchestrator.js +226 -57
  41. package/dist/orchestrator/agent-orchestrator.js.map +1 -1
  42. package/dist/orchestrator/ai-client.d.ts +5 -4
  43. package/dist/orchestrator/ai-client.js +17 -14
  44. package/dist/orchestrator/ai-client.js.map +1 -1
  45. package/dist/orchestrator/orchestrator-prompt.d.ts +2 -7
  46. package/dist/orchestrator/orchestrator-prompt.js +7 -154
  47. package/dist/orchestrator/orchestrator-prompt.js.map +1 -1
  48. package/dist/orchestrator/orchestrator-prompt.md +405 -0
  49. package/dist/orchestrator/session.d.ts +7 -3
  50. package/dist/orchestrator/session.js +56 -34
  51. package/dist/orchestrator/session.js.map +1 -1
  52. package/dist/orchestrator/tools/worker-status-tool.d.ts +7 -0
  53. package/dist/orchestrator/tools/worker-status-tool.js +41 -0
  54. package/dist/orchestrator/tools/worker-status-tool.js.map +1 -0
  55. package/dist/orchestrator/tools/worker-tools.d.ts +1 -1
  56. package/dist/orchestrator/tools/worker-tools.js +73 -89
  57. package/dist/orchestrator/tools/worker-tools.js.map +1 -1
  58. package/dist/orchestrator/types.d.ts +19 -29
  59. package/dist/orchestrator/types.js +22 -25
  60. package/dist/orchestrator/types.js.map +1 -1
  61. package/dist/orchestrator/utils/async-queue.d.ts +26 -0
  62. package/dist/orchestrator/utils/async-queue.js +70 -0
  63. package/dist/orchestrator/utils/async-queue.js.map +1 -0
  64. package/dist/orchestrator/utils/session-logger.d.ts +1 -1
  65. package/dist/orchestrator/utils/session-logger.js +8 -14
  66. package/dist/orchestrator/utils/session-logger.js.map +1 -1
  67. package/dist/orchestrator/worker-manager.d.ts +31 -15
  68. package/dist/orchestrator/worker-manager.js +186 -18
  69. package/dist/orchestrator/worker-manager.js.map +1 -1
  70. package/dist/relay/relay-bridge.d.ts +24 -3
  71. package/dist/relay/relay-bridge.js +382 -90
  72. package/dist/relay/relay-bridge.js.map +1 -1
  73. package/dist/relay/relay-service.d.ts +4 -7
  74. package/dist/relay/relay-service.js +5 -11
  75. package/dist/relay/relay-service.js.map +1 -1
  76. package/dist/repl/terminal-repl.js +34 -30
  77. package/dist/repl/terminal-repl.js.map +1 -1
  78. package/dist/schemas/generated.d.ts +244 -0
  79. package/dist/schemas/generated.js +5 -0
  80. package/dist/schemas/generated.js.map +1 -0
  81. package/dist/schemas/index.d.ts +2 -0
  82. package/dist/schemas/index.js +2 -0
  83. package/dist/schemas/index.js.map +1 -0
  84. package/dist/scripts/generate-schema-types.js +53 -0
  85. package/dist/scripts/generate-schema-types.js.map +1 -0
  86. package/dist/scripts/sync-schemas.d.ts +1 -0
  87. package/dist/scripts/sync-schemas.js +28 -0
  88. package/dist/scripts/sync-schemas.js.map +1 -0
  89. package/dist/utils/prompt.js +4 -10
  90. package/dist/utils/prompt.js.map +1 -1
  91. package/dist/voice/voice-service.d.ts +1 -1
  92. package/dist/voice/voice-service.js +2 -4
  93. package/dist/voice/voice-service.js.map +1 -1
  94. package/package.json +6 -2
  95. package/dist/commands/hello.d.ts +0 -2
  96. package/dist/commands/hello.js +0 -12
  97. package/dist/commands/hello.js.map +0 -1
  98. package/dist/generated/relay.d.ts +0 -240
  99. package/dist/generated/relay.js +0 -2376
  100. package/dist/generated/relay.js.map +0 -1
  101. package/dist/messaging/proto-codec.d.ts +0 -5
  102. package/dist/messaging/proto-codec.js +0 -387
  103. package/dist/messaging/proto-codec.js.map +0 -1
  104. package/dist/server/agent-server.d.ts +0 -46
  105. package/dist/server/agent-server.js +0 -429
  106. package/dist/server/agent-server.js.map +0 -1
  107. package/dist/server/ai-client.d.ts +0 -16
  108. package/dist/server/ai-client.js +0 -74
  109. package/dist/server/ai-client.js.map +0 -1
  110. package/dist/server/session.d.ts +0 -35
  111. package/dist/server/session.js +0 -272
  112. package/dist/server/session.js.map +0 -1
  113. package/dist/server/subagents.d.ts +0 -19
  114. package/dist/server/subagents.js +0 -42
  115. package/dist/server/subagents.js.map +0 -1
  116. package/dist/server/tools/worker-tools.d.ts +0 -2
  117. package/dist/server/tools/worker-tools.js +0 -37
  118. package/dist/server/tools/worker-tools.js.map +0 -1
  119. package/dist/server/types.d.ts +0 -120
  120. package/dist/server/types.js +0 -29
  121. package/dist/server/types.js.map +0 -1
  122. package/dist/server/utils/session-logger.d.ts +0 -7
  123. package/dist/server/utils/session-logger.js +0 -53
  124. package/dist/server/utils/session-logger.js.map +0 -1
  125. package/dist/server/worker-manager.d.ts +0 -67
  126. package/dist/server/worker-manager.js +0 -207
  127. package/dist/server/worker-manager.js.map +0 -1
  128. package/dist/test-agent.js +0 -63
  129. package/dist/test-agent.js.map +0 -1
  130. package/dist/utils/base64url.d.ts +0 -1
  131. package/dist/utils/base64url.js +0 -12
  132. package/dist/utils/base64url.js.map +0 -1
  133. package/dist/utils/random.d.ts +0 -1
  134. package/dist/utils/random.js +0 -9
  135. package/dist/utils/random.js.map +0 -1
  136. /package/dist/{test-agent.d.ts → scripts/generate-schema-types.d.ts} +0 -0
@@ -1,272 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Session = void 0;
4
- const session_logger_1 = require("./utils/session-logger");
5
- const SOCKET_OPEN_STATE = 1;
6
- class Session {
7
- constructor(id, aiClient, onEmpty) {
8
- this.subscribers = new Map();
9
- this.sdkSessionId = null;
10
- this.inflight = null;
11
- this.lastActivity = Date.now();
12
- this.id = id;
13
- this.aiClient = aiClient;
14
- this.onEmpty = onEmpty;
15
- this.logger = (0, session_logger_1.createSessionLogger)(this.id);
16
- }
17
- announceInboundMessage(text, origin = 'user') {
18
- if (!text) {
19
- return;
20
- }
21
- const message = {
22
- type: 'user_text',
23
- sessionId: this.id,
24
- text,
25
- origin,
26
- };
27
- this.broadcast(message);
28
- }
29
- get lastActiveAt() {
30
- return this.lastActivity;
31
- }
32
- get sdkSessionIdentifier() {
33
- return this.sdkSessionId;
34
- }
35
- subscribe(subscriber) {
36
- this.subscribers.set(subscriber.id, subscriber);
37
- this.safeSend(subscriber, { type: 'session_joined', sessionId: this.id });
38
- }
39
- unsubscribe(subscriberId) {
40
- this.subscribers.delete(subscriberId);
41
- if (!this.hasSubscribers() && !this.inflight) {
42
- this.onEmpty(this.id);
43
- }
44
- }
45
- hasSubscribers() {
46
- return this.subscribers.size > 0;
47
- }
48
- close() {
49
- this.subscribers.clear();
50
- this.logger.close();
51
- }
52
- enqueueUserMessage(text) {
53
- this.lastActivity = Date.now();
54
- const previous = this.inflight;
55
- const task = async () => {
56
- if (previous) {
57
- try {
58
- await previous;
59
- }
60
- catch {
61
- // Previous error already reported, continue with new message.
62
- }
63
- }
64
- await this.processUserMessage(text);
65
- };
66
- const promise = task()
67
- .catch((error) => {
68
- this.broadcast({
69
- type: 'error',
70
- sessionId: this.id,
71
- message: extractErrorMessage(error),
72
- });
73
- })
74
- .finally(() => {
75
- if (this.inflight === promise) {
76
- this.inflight = null;
77
- this.lastActivity = Date.now();
78
- if (!this.hasSubscribers()) {
79
- this.onEmpty(this.id);
80
- }
81
- }
82
- });
83
- this.inflight = promise;
84
- }
85
- handleStreamEvent(event) {
86
- switch (event.type) {
87
- case 'content_block_delta': {
88
- const delta = event.delta;
89
- if (delta?.type === 'text_delta' && delta.text) {
90
- this.broadcast({
91
- type: 'assistant_text',
92
- sessionId: this.id,
93
- text: delta.text,
94
- });
95
- }
96
- break;
97
- }
98
- default:
99
- break;
100
- }
101
- }
102
- async processUserMessage(text) {
103
- const options = this.sdkSessionId
104
- ? { resume: this.sdkSessionId }
105
- : undefined;
106
- for await (const message of this.aiClient.streamUserMessage(text, options)) {
107
- this.routeSdkMessage(message);
108
- }
109
- }
110
- routeSdkMessage(message) {
111
- switch (message.type) {
112
- case 'assistant':
113
- this.handleAssistantMessage(message);
114
- break;
115
- case 'stream_event':
116
- this.handleStreamEvent(message.event);
117
- break;
118
- case 'result':
119
- this.handleResultMessage(message);
120
- break;
121
- case 'system':
122
- this.handleSystemMessage(message);
123
- break;
124
- case 'user': {
125
- const textContent = extractUserContent(message.message.content);
126
- if (textContent) {
127
- this.broadcast({
128
- type: 'user_text',
129
- sessionId: this.id,
130
- text: textContent,
131
- });
132
- }
133
- break;
134
- }
135
- default:
136
- break;
137
- }
138
- }
139
- handleAssistantMessage(message) {
140
- const content = message.message.content;
141
- if (!Array.isArray(content)) {
142
- return;
143
- }
144
- for (const block of content) {
145
- if (!block || typeof block !== 'object') {
146
- continue;
147
- }
148
- const typed = block;
149
- const blockType = typed.type;
150
- if (blockType === 'text' && typeof typed.text === 'string') {
151
- if (typed.text.length > 0) {
152
- this.broadcast({
153
- type: 'assistant_text',
154
- sessionId: this.id,
155
- text: typed.text,
156
- });
157
- }
158
- }
159
- else if (blockType === 'tool_use') {
160
- this.broadcast({
161
- type: 'tool_call',
162
- sessionId: this.id,
163
- toolName: typeof typed.name === 'string' ? typed.name : 'unknown',
164
- toolUseId: typeof typed.id === 'string' ? typed.id : 'unknown',
165
- input: typed.input,
166
- });
167
- }
168
- else if (blockType === 'tool_result') {
169
- this.broadcast({
170
- type: 'tool_result',
171
- sessionId: this.id,
172
- toolUseId: typeof typed.tool_use_id === 'string'
173
- ? typed.tool_use_id
174
- : 'unknown',
175
- content: typed.content,
176
- isError: Boolean(typed.is_error),
177
- });
178
- }
179
- }
180
- }
181
- handleResultMessage(message) {
182
- if (message.subtype === 'success') {
183
- this.broadcast({
184
- type: 'result',
185
- sessionId: this.id,
186
- success: true,
187
- message: message.result,
188
- costUsd: message.total_cost_usd,
189
- durationMs: message.duration_ms,
190
- });
191
- }
192
- else {
193
- this.broadcast({
194
- type: 'result',
195
- sessionId: this.id,
196
- success: false,
197
- message: message.subtype,
198
- });
199
- }
200
- this.broadcast({ type: 'assistant_complete', sessionId: this.id });
201
- }
202
- handleSystemMessage(message) {
203
- if (message.subtype === 'init') {
204
- this.sdkSessionId = message.session_id;
205
- }
206
- this.broadcast({
207
- type: 'system',
208
- sessionId: this.id,
209
- subtype: message.subtype,
210
- });
211
- }
212
- logInbound(payload) {
213
- this.logger.logInbound(payload);
214
- }
215
- broadcast(message) {
216
- this.logger.logOutbound(message);
217
- for (const [id, subscriber] of this.subscribers) {
218
- const socket = subscriber.socket;
219
- if (socket.readyState !== SOCKET_OPEN_STATE) {
220
- this.subscribers.delete(id);
221
- continue;
222
- }
223
- this.safeSend(subscriber, message);
224
- }
225
- }
226
- safeSend(subscriber, message) {
227
- try {
228
- const payload = JSON.stringify(message);
229
- subscriber.socket.send(payload);
230
- }
231
- catch {
232
- this.subscribers.delete(subscriber.id);
233
- }
234
- }
235
- }
236
- exports.Session = Session;
237
- function extractErrorMessage(error) {
238
- if (error instanceof Error) {
239
- return error.message;
240
- }
241
- if (typeof error === 'string') {
242
- return error;
243
- }
244
- try {
245
- return JSON.stringify(error);
246
- }
247
- catch {
248
- return 'Unknown error';
249
- }
250
- }
251
- function extractUserContent(content) {
252
- if (typeof content === 'string') {
253
- return content;
254
- }
255
- if (Array.isArray(content)) {
256
- const texts = [];
257
- for (const part of content) {
258
- if (part &&
259
- typeof part === 'object' &&
260
- 'type' in part &&
261
- part.type === 'text' &&
262
- typeof part.text === 'string') {
263
- texts.push(part.text);
264
- }
265
- }
266
- if (texts.length > 0) {
267
- return texts.join('');
268
- }
269
- }
270
- return null;
271
- }
272
- //# sourceMappingURL=session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/server/session.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import type { AgentDefinition } from '@anthropic-ai/claude-agent-sdk';
2
- /**
3
- * Shared registry for programmatically defined subagents.
4
- *
5
- * This mirrors the structure described in the Claude Agent SDK documentation:
6
- * https://docs.claude.com/en/api/agent-sdk/subagents
7
- */
8
- export type SubagentRegistry = Record<string, AgentDefinition>;
9
- /**
10
- * Default subagent definitions. Replace or extend these as needed for your
11
- * application. Each entry's key becomes the `subagent_type` that the main agent
12
- * can invoke (either automatically based on description matching or when the
13
- * user explicitly requests it).
14
- */
15
- export declare const defaultSubagents: SubagentRegistry;
16
- /**
17
- * Helper for merging presets with runtime overrides (e.g., user configuration).
18
- */
19
- export declare function buildSubagentRegistry(overrides?: SubagentRegistry): SubagentRegistry;
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defaultSubagents = void 0;
4
- exports.buildSubagentRegistry = buildSubagentRegistry;
5
- /**
6
- * Default subagent definitions. Replace or extend these as needed for your
7
- * application. Each entry's key becomes the `subagent_type` that the main agent
8
- * can invoke (either automatically based on description matching or when the
9
- * user explicitly requests it).
10
- */
11
- exports.defaultSubagents = {
12
- 'code-reviewer': {
13
- description: 'Expert reviewer for security, performance, and maintainability checks.',
14
- prompt: `You are a code review specialist with expertise in security, performance, and best practices.
15
- When reviewing code:
16
- - Identify security vulnerabilities
17
- - Flag performance regressions
18
- - Verify adherence to coding standards
19
- - Suggest specific, actionable improvements
20
- Return concise findings grouped by issue type.`,
21
- tools: ['Read', 'Grep', 'Glob'],
22
- },
23
- 'test-runner': {
24
- description: 'Runs project test suites and interprets failures with actionable context.',
25
- prompt: `You are a test execution specialist. Focus on:
26
- - Running the relevant test commands
27
- - Summarizing stdout/stderr in human terms
28
- - Highlighting the root cause of failures
29
- - Suggesting next steps to fix broken tests`,
30
- tools: ['Bash', 'Read', 'Grep'],
31
- },
32
- };
33
- /**
34
- * Helper for merging presets with runtime overrides (e.g., user configuration).
35
- */
36
- function buildSubagentRegistry(overrides = {}) {
37
- return {
38
- ...exports.defaultSubagents,
39
- ...overrides,
40
- };
41
- }
42
- //# sourceMappingURL=subagents.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subagents.js","sourceRoot":"","sources":["../../src/server/subagents.ts"],"names":[],"mappings":";;;AA4CA,sDAOC;AAzCD;;;;;GAKG;AACU,QAAA,gBAAgB,GAAqB;IAChD,eAAe,EAAE;QACf,WAAW,EACT,wEAAwE;QAC1E,MAAM,EAAE;;;;;;+CAMmC;QAC3C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC;IACD,aAAa,EAAE;QACb,WAAW,EACT,2EAA2E;QAC7E,MAAM,EAAE;;;;4CAIgC;QACxC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC;CACF,CAAC;AAEF;;GAEG;AACH,SAAgB,qBAAqB,CACnC,YAA8B,EAAE;IAEhC,OAAO;QACL,GAAG,wBAAgB;QACnB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
@@ -1,2 +0,0 @@
1
- import type { WorkerManager } from '../worker-manager';
2
- export declare function createWorkerMcpServer(workerManager: WorkerManager): import("@anthropic-ai/claude-agent-sdk").McpSdkServerConfigWithInstance;
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createWorkerMcpServer = createWorkerMcpServer;
4
- const claude_agent_sdk_1 = require("@anthropic-ai/claude-agent-sdk");
5
- const zod_1 = require("zod");
6
- function createWorkerMcpServer(workerManager) {
7
- return (0, claude_agent_sdk_1.createSdkMcpServer)({
8
- name: 'worker',
9
- version: '1.0.0',
10
- tools: [
11
- (0, claude_agent_sdk_1.tool)('launch_worker', 'Launch a background worker that continues executing outside the main loop.', {
12
- prompt: zod_1.z.string().min(1, 'prompt is required'),
13
- metadata: zod_1.z.record(zod_1.z.any()).optional(),
14
- }, async (args, extra) => {
15
- const typedExtra = extra;
16
- const record = workerManager.launchWorker({
17
- prompt: args.prompt,
18
- originSdkSessionId: typedExtra?.sessionId,
19
- metadata: args.metadata,
20
- });
21
- return {
22
- content: [
23
- {
24
- type: 'text',
25
- text: JSON.stringify({
26
- workerId: record.id,
27
- status: record.status,
28
- message: 'Worker launched successfully. Monitor progress via worker updates.',
29
- }),
30
- },
31
- ],
32
- };
33
- }),
34
- ],
35
- });
36
- }
37
- //# sourceMappingURL=worker-tools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker-tools.js","sourceRoot":"","sources":["../../../src/server/tools/worker-tools.ts"],"names":[],"mappings":";;AASA,sDAoCC;AA7CD,qEAA0E;AAC1E,6BAAwB;AAQxB,SAAgB,qBAAqB,CAAC,aAA4B;IAChE,OAAO,IAAA,qCAAkB,EAAC;QACxB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE;YACL,IAAA,uBAAI,EACF,eAAe,EACf,4EAA4E,EAC5E;gBACE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,oBAAoB,CAAC;gBAC/C,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;aACvC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;gBACpB,MAAM,UAAU,GAAG,KAA8B,CAAC;gBAClD,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC;oBACxC,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,kBAAkB,EAAE,UAAU,EAAE,SAAS;oBACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC,CAAC;gBAEH,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACnB,QAAQ,EAAE,MAAM,CAAC,EAAE;gCACnB,MAAM,EAAE,MAAM,CAAC,MAAM;gCACrB,OAAO,EAAE,oEAAoE;6BAC9E,CAAC;yBACH;qBACF;iBACF,CAAC;YACJ,CAAC,CACF;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1,120 +0,0 @@
1
- import type { WebSocket } from 'ws';
2
- import { z } from 'zod';
3
- export declare const clientMessageSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
4
- type: z.ZodLiteral<"chat">;
5
- sessionId: z.ZodOptional<z.ZodString>;
6
- text: z.ZodString;
7
- }, "strip", z.ZodTypeAny, {
8
- type: "chat";
9
- text: string;
10
- sessionId?: string | undefined;
11
- }, {
12
- type: "chat";
13
- text: string;
14
- sessionId?: string | undefined;
15
- }>, z.ZodObject<{
16
- type: z.ZodLiteral<"join">;
17
- sessionId: z.ZodString;
18
- }, "strip", z.ZodTypeAny, {
19
- type: "join";
20
- sessionId: string;
21
- }, {
22
- type: "join";
23
- sessionId: string;
24
- }>, z.ZodObject<{
25
- type: z.ZodLiteral<"leave">;
26
- sessionId: z.ZodString;
27
- }, "strip", z.ZodTypeAny, {
28
- type: "leave";
29
- sessionId: string;
30
- }, {
31
- type: "leave";
32
- sessionId: string;
33
- }>, z.ZodObject<{
34
- type: z.ZodLiteral<"ping">;
35
- }, "strip", z.ZodTypeAny, {
36
- type: "ping";
37
- }, {
38
- type: "ping";
39
- }>, z.ZodObject<{
40
- type: z.ZodLiteral<"cancel_worker">;
41
- workerId: z.ZodString;
42
- }, "strip", z.ZodTypeAny, {
43
- type: "cancel_worker";
44
- workerId: string;
45
- }, {
46
- type: "cancel_worker";
47
- workerId: string;
48
- }>]>;
49
- export type ClientMessage = z.infer<typeof clientMessageSchema>;
50
- export type ServerMessage = {
51
- type: 'session_created';
52
- sessionId: string;
53
- } | {
54
- type: 'session_joined';
55
- sessionId: string;
56
- } | {
57
- type: 'user_text';
58
- sessionId: string;
59
- text: string;
60
- origin?: 'user' | 'worker';
61
- } | {
62
- type: 'assistant_text';
63
- sessionId: string;
64
- text: string;
65
- } | {
66
- type: 'assistant_complete';
67
- sessionId: string;
68
- } | {
69
- type: 'tool_call';
70
- sessionId: string;
71
- toolName: string;
72
- toolUseId: string;
73
- input: unknown;
74
- } | {
75
- type: 'tool_result';
76
- sessionId: string;
77
- toolUseId: string;
78
- content: unknown;
79
- isError?: boolean;
80
- } | {
81
- type: 'result';
82
- sessionId: string;
83
- success: boolean;
84
- message?: string;
85
- durationMs?: number;
86
- costUsd?: number;
87
- } | {
88
- type: 'system';
89
- sessionId: string;
90
- subtype: string;
91
- } | {
92
- type: 'error';
93
- sessionId?: string;
94
- message: string;
95
- } | {
96
- type: 'worker_update';
97
- worker: WorkerUpdatePayload;
98
- } | {
99
- type: 'pong';
100
- };
101
- export interface SessionSubscriber {
102
- id: string;
103
- socket: WebSocket;
104
- }
105
- export interface ServerConfiguration {
106
- port?: number;
107
- path?: string;
108
- }
109
- export declare const DEFAULT_SERVER_PORT = 3001;
110
- export declare const DEFAULT_SERVER_PATH = "/ws";
111
- export interface WorkerUpdatePayload {
112
- id: string;
113
- status: string;
114
- prompt: string;
115
- lastUpdateAt: number;
116
- latestMessage?: string;
117
- result?: string;
118
- error?: string;
119
- originSessionId?: string;
120
- }
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_SERVER_PATH = exports.DEFAULT_SERVER_PORT = exports.clientMessageSchema = void 0;
4
- const zod_1 = require("zod");
5
- exports.clientMessageSchema = zod_1.z.discriminatedUnion('type', [
6
- zod_1.z.object({
7
- type: zod_1.z.literal('chat'),
8
- sessionId: zod_1.z.string().trim().min(1).optional(),
9
- text: zod_1.z.string().min(1, 'text cannot be empty'),
10
- }),
11
- zod_1.z.object({
12
- type: zod_1.z.literal('join'),
13
- sessionId: zod_1.z.string().trim().min(1, 'sessionId is required to join'),
14
- }),
15
- zod_1.z.object({
16
- type: zod_1.z.literal('leave'),
17
- sessionId: zod_1.z.string().trim().min(1, 'sessionId is required to leave'),
18
- }),
19
- zod_1.z.object({
20
- type: zod_1.z.literal('ping'),
21
- }),
22
- zod_1.z.object({
23
- type: zod_1.z.literal('cancel_worker'),
24
- workerId: zod_1.z.string().trim().min(1, 'workerId is required'),
25
- }),
26
- ]);
27
- exports.DEFAULT_SERVER_PORT = 3001;
28
- exports.DEFAULT_SERVER_PATH = '/ws';
29
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":";;;AACA,6BAAwB;AAEX,QAAA,mBAAmB,GAAG,OAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC9D,OAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC9C,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;KAChD,CAAC;IACF,OAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,+BAA+B,CAAC;KACrE,CAAC;IACF,OAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACxB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,gCAAgC,CAAC;KACtE,CAAC;IACF,OAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,MAAM,CAAC;KACxB,CAAC;IACF,OAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,eAAe,CAAC;QAChC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;KAC3D,CAAC;CACH,CAAC,CAAC;AA+CU,QAAA,mBAAmB,GAAG,IAAI,CAAC;AAC3B,QAAA,mBAAmB,GAAG,KAAK,CAAC"}
@@ -1,7 +0,0 @@
1
- import type { ServerMessage } from '../types';
2
- export type SessionLogger = {
3
- logInbound: (payload: unknown) => void;
4
- logOutbound: (message: ServerMessage) => void;
5
- close: () => void;
6
- };
7
- export declare function createSessionLogger(sessionId: string): SessionLogger;
@@ -1,53 +0,0 @@
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.createSessionLogger = createSessionLogger;
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const os_1 = __importDefault(require("os"));
10
- function getLogDir() {
11
- return process.env.OMNARA_LOG_DIR ?? path_1.default.join(os_1.default.homedir(), '.omnara', 'omnara-voice');
12
- }
13
- function ensureLogDir() {
14
- const dir = getLogDir();
15
- try {
16
- fs_1.default.mkdirSync(dir, { recursive: true });
17
- }
18
- catch {
19
- // ignore
20
- }
21
- return dir;
22
- }
23
- function createSessionLogger(sessionId) {
24
- const dir = ensureLogDir();
25
- const filePath = path_1.default.join(dir, `${sessionId}.log`);
26
- const stream = fs_1.default.createWriteStream(filePath, { flags: 'a' });
27
- const logLine = (direction, payload) => {
28
- const timestamp = new Date().toISOString();
29
- const serialized = safeStringify(payload);
30
- stream.write(`${timestamp} [${direction}] ${serialized}\n`);
31
- };
32
- return {
33
- logInbound: (payload) => logLine('in', payload),
34
- logOutbound: (message) => logLine('out', message),
35
- close: () => {
36
- try {
37
- stream.end();
38
- }
39
- catch {
40
- // ignore close errors
41
- }
42
- },
43
- };
44
- }
45
- function safeStringify(value) {
46
- try {
47
- return JSON.stringify(value);
48
- }
49
- catch {
50
- return String(value);
51
- }
52
- }
53
- //# sourceMappingURL=session-logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-logger.js","sourceRoot":"","sources":["../../../src/server/utils/session-logger.ts"],"names":[],"mappings":";;;;;AAyBA,kDAsBC;AA/CD,4CAAoB;AACpB,gDAAwB;AACxB,4CAAoB;AAGpB,SAAS,SAAS;IAChB,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,IAAI,CAAC;QACH,YAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAQD,SAAgB,mBAAmB,CAAC,SAAiB;IACnD,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,MAAM,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,YAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAE9D,MAAM,OAAO,GAAG,CAAC,SAAuB,EAAE,OAAgB,EAAE,EAAE;QAC5D,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS,KAAK,SAAS,KAAK,UAAU,IAAI,CAAC,CAAC;IAC9D,CAAC,CAAC;IAEF,OAAO;QACL,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;QAC/C,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;QACjD,KAAK,EAAE,GAAG,EAAE;YACV,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,EAAE,CAAC;YACf,CAAC;YAAC,MAAM,CAAC;gBACP,sBAAsB;YACxB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}