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,33 +1,30 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.inboundMessageSchema = void 0;
4
- const zod_1 = require("zod");
5
- exports.inboundMessageSchema = 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'),
1
+ import { z } from 'zod';
2
+ export const inboundMessageSchema = z.discriminatedUnion('type', [
3
+ z.object({
4
+ type: z.literal('chat'),
5
+ sessionId: z.string().trim().min(1).optional(),
6
+ text: z.string().min(1, 'text cannot be empty'),
10
7
  }),
11
- zod_1.z.object({
12
- type: zod_1.z.literal('session_init'),
13
- sessionId: zod_1.z.string().trim().min(1, 'sessionId is required for session_init'),
14
- parentSessionId: zod_1.z.string().trim().min(1).optional(),
15
- metadata: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
8
+ z.object({
9
+ type: z.literal('session_init'),
10
+ sessionId: z.string().trim().min(1, 'sessionId is required for session_init'),
11
+ parentSessionId: z.string().trim().min(1).optional(),
12
+ metadata: z.record(z.string(), z.unknown()).optional(),
16
13
  }),
17
- zod_1.z.object({
18
- type: zod_1.z.literal('join'),
19
- sessionId: zod_1.z.string().trim().min(1, 'sessionId is required to join'),
14
+ z.object({
15
+ type: z.literal('join'),
16
+ sessionId: z.string().trim().min(1, 'sessionId is required to join'),
20
17
  }),
21
- zod_1.z.object({
22
- type: zod_1.z.literal('leave'),
23
- sessionId: zod_1.z.string().trim().min(1, 'sessionId is required to leave'),
18
+ z.object({
19
+ type: z.literal('leave'),
20
+ sessionId: z.string().trim().min(1, 'sessionId is required to leave'),
24
21
  }),
25
- zod_1.z.object({
26
- type: zod_1.z.literal('ping'),
22
+ z.object({
23
+ type: z.literal('ping'),
27
24
  }),
28
- zod_1.z.object({
29
- type: zod_1.z.literal('cancel_worker'),
30
- workerId: zod_1.z.string().trim().min(1, 'workerId is required'),
25
+ z.object({
26
+ type: z.literal('cancel_worker'),
27
+ workerId: z.string().trim().min(1, 'workerId is required'),
31
28
  }),
32
29
  ]);
33
30
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/orchestrator/types.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,oBAAoB,GAAG,OAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC/D,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,cAAc,CAAC;QAC/B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,wCAAwC,CAAC;QAC7E,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACpD,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;KACvD,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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/orchestrator/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;KAChD,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;QAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,wCAAwC,CAAC;QAC7E,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;KACvD,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,+BAA+B,CAAC;KACrE,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACxB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,gCAAgC,CAAC;KACtE,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;KACxB,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;QAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;KAC3D,CAAC;CACH,CAAC,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * A simple async queue for streaming messages to workers.
3
+ * Allows pushing messages and consuming them via async iteration.
4
+ */
5
+ export declare class AsyncQueue<T> {
6
+ private queue;
7
+ private resolvers;
8
+ private closed;
9
+ /**
10
+ * Push a new item to the queue.
11
+ * If there are waiting consumers, resolve them immediately.
12
+ */
13
+ push(item: T): void;
14
+ /**
15
+ * Close the queue, signaling that no more items will be added.
16
+ */
17
+ close(): void;
18
+ /**
19
+ * Check if the queue is closed.
20
+ */
21
+ isClosed(): boolean;
22
+ /**
23
+ * Async iterator implementation for consuming items from the queue.
24
+ */
25
+ [Symbol.asyncIterator](): AsyncIterator<T>;
26
+ }
@@ -0,0 +1,70 @@
1
+ /**
2
+ * A simple async queue for streaming messages to workers.
3
+ * Allows pushing messages and consuming them via async iteration.
4
+ */
5
+ export class AsyncQueue {
6
+ queue = [];
7
+ resolvers = [];
8
+ closed = false;
9
+ /**
10
+ * Push a new item to the queue.
11
+ * If there are waiting consumers, resolve them immediately.
12
+ */
13
+ push(item) {
14
+ if (this.closed) {
15
+ throw new Error('Cannot push to a closed queue');
16
+ }
17
+ if (this.resolvers.length > 0) {
18
+ const resolve = this.resolvers.shift();
19
+ resolve?.({ value: item, done: false });
20
+ }
21
+ else {
22
+ this.queue.push(item);
23
+ }
24
+ }
25
+ /**
26
+ * Close the queue, signaling that no more items will be added.
27
+ */
28
+ close() {
29
+ this.closed = true;
30
+ // Resolve all waiting consumers with done: true
31
+ while (this.resolvers.length > 0) {
32
+ const resolve = this.resolvers.shift();
33
+ resolve?.({ value: undefined, done: true });
34
+ }
35
+ }
36
+ /**
37
+ * Check if the queue is closed.
38
+ */
39
+ isClosed() {
40
+ return this.closed;
41
+ }
42
+ /**
43
+ * Async iterator implementation for consuming items from the queue.
44
+ */
45
+ async *[Symbol.asyncIterator]() {
46
+ while (true) {
47
+ // If there are items in the queue, yield them
48
+ if (this.queue.length > 0) {
49
+ const item = this.queue.shift();
50
+ if (item !== undefined) {
51
+ yield item;
52
+ }
53
+ continue;
54
+ }
55
+ // If the queue is closed and empty, we're done
56
+ if (this.closed) {
57
+ return;
58
+ }
59
+ // Wait for a new item or close
60
+ const result = await new Promise((resolve) => {
61
+ this.resolvers.push(resolve);
62
+ });
63
+ if (result.done) {
64
+ return;
65
+ }
66
+ yield result.value;
67
+ }
68
+ }
69
+ }
70
+ //# sourceMappingURL=async-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-queue.js","sourceRoot":"","sources":["../../../src/orchestrator/utils/async-queue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,UAAU;IACb,KAAK,GAAQ,EAAE,CAAC;IAChB,SAAS,GAA8C,EAAE,CAAC;IAC1D,MAAM,GAAG,KAAK,CAAC;IAEvB;;;OAGG;IACH,IAAI,CAAC,IAAO;QACV,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACvC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,gDAAgD;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACvC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,SAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,OAAO,IAAI,EAAE,CAAC;YACZ,8CAA8C;YAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,MAAM,IAAI,CAAC;gBACb,CAAC;gBACD,SAAS;YACX,CAAC;YAED,+CAA+C;YAC/C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,+BAA+B;YAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAoB,CAAC,OAAO,EAAE,EAAE;gBAC9D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,MAAM,MAAM,CAAC,KAAK,CAAC;QACrB,CAAC;IACH,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import type { OutboundMessage } from '../types';
1
+ import type { OutboundMessage } from '../types.js';
2
2
  export type SessionLogger = {
3
3
  logInbound: (payload: unknown) => void;
4
4
  logOutbound: (message: OutboundMessage) => void;
@@ -1,29 +1,23 @@
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"));
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import os from 'os';
10
4
  function getLogDir() {
11
- return process.env.OMNARA_LOG_DIR ?? path_1.default.join(os_1.default.homedir(), '.omnara', 'omnara-voice');
5
+ return process.env.OMNARA_LOG_DIR ?? path.join(os.homedir(), '.omnara', 'omnara-voice');
12
6
  }
13
7
  function ensureLogDir() {
14
8
  const dir = getLogDir();
15
9
  try {
16
- fs_1.default.mkdirSync(dir, { recursive: true });
10
+ fs.mkdirSync(dir, { recursive: true });
17
11
  }
18
12
  catch {
19
13
  // ignore
20
14
  }
21
15
  return dir;
22
16
  }
23
- function createSessionLogger(sessionId) {
17
+ export function createSessionLogger(sessionId) {
24
18
  const dir = ensureLogDir();
25
- const filePath = path_1.default.join(dir, `${sessionId}.log`);
26
- const stream = fs_1.default.createWriteStream(filePath, { flags: 'a' });
19
+ const filePath = path.join(dir, `${sessionId}.log`);
20
+ const stream = fs.createWriteStream(filePath, { flags: 'a' });
27
21
  const logLine = (direction, payload) => {
28
22
  const timestamp = new Date().toISOString();
29
23
  const serialized = safeStringify(payload);
@@ -1 +1 @@
1
- {"version":3,"file":"session-logger.js","sourceRoot":"","sources":["../../../src/orchestrator/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"}
1
+ {"version":3,"file":"session-logger.js","sourceRoot":"","sources":["../../../src/orchestrator/utils/session-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,SAAS,SAAS;IAChB,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,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,EAAE,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,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,MAAM,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,EAAE,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"}
@@ -1,5 +1,7 @@
1
1
  import { EventEmitter } from 'events';
2
- import type { AgentClient } from './ai-client';
2
+ import type { SDKUserMessage } from '@anthropic-ai/claude-agent-sdk';
3
+ import type { AgentClient } from './ai-client.js';
4
+ import { AsyncQueue } from './utils/async-queue.js';
3
5
  export type WorkerStatus = 'running' | 'completed' | 'error' | 'canceled';
4
6
  export interface WorkerProgressEntry {
5
7
  timestamp: number;
@@ -18,24 +20,18 @@ export interface WorkerRecord {
18
20
  result?: string;
19
21
  error?: string;
20
22
  metadata?: Record<string, unknown>;
21
- }
22
- export interface WorkerUpdatePayload {
23
- id: string;
24
- task: string;
25
- status: WorkerStatus;
26
- prompt: string;
27
- lastUpdateAt: number;
28
- result?: string;
29
- error?: string;
30
- latestMessage?: string;
31
- originSessionId?: string;
32
- sessionId: string;
23
+ messageQueue: AsyncQueue<SDKUserMessage>;
33
24
  }
34
25
  export interface WorkerMessageEvent {
35
26
  record: WorkerRecord;
36
- messageType: 'assistant_text' | 'assistant_complete';
27
+ messageType: 'assistant_text' | 'assistant_complete' | 'tool_call' | 'tool_result';
37
28
  text?: string;
38
29
  success?: boolean;
30
+ toolName?: string;
31
+ toolUseId?: string;
32
+ toolInput?: unknown;
33
+ toolContent?: unknown;
34
+ isError?: boolean;
39
35
  }
40
36
  interface LaunchWorkerOptions {
41
37
  task: string;
@@ -44,7 +40,7 @@ interface LaunchWorkerOptions {
44
40
  metadata?: Record<string, unknown>;
45
41
  }
46
42
  interface WorkerManagerOptions {
47
- createClient: () => AgentClient;
43
+ createClient: (mcpServers?: Record<string, any>) => AgentClient;
48
44
  resolveSessionIdBySdk?: (sdkSessionId?: string) => string | undefined;
49
45
  }
50
46
  export declare class WorkerManager extends EventEmitter {
@@ -55,10 +51,30 @@ export declare class WorkerManager extends EventEmitter {
55
51
  listWorkers(): WorkerRecord[];
56
52
  getWorker(id: string): WorkerRecord | undefined;
57
53
  getWorkerByTask(task: string): WorkerRecord | undefined;
54
+ /**
55
+ * Get a formatted summary of all current worker statuses for inclusion in system prompts.
56
+ * Returns a string describing all active workers and their current state.
57
+ */
58
+ getWorkerStatusSummary(): string;
58
59
  launchWorker({ task, prompt, originSessionId, metadata }: LaunchWorkerOptions): WorkerRecord;
59
60
  cancelWorker(id: string): boolean;
61
+ /**
62
+ * Send a message to a running worker.
63
+ *
64
+ * @param task - The task name of the worker to message
65
+ * @param message - The message content to send
66
+ * @param interrupt - If true, interrupt current generation; if false, queue for next turn
67
+ * @returns true if message was sent, false if worker not found or not running
68
+ */
69
+ messageWorker(task: string, message: string, interrupt: boolean): Promise<boolean>;
60
70
  private emitUpdate;
61
71
  private emitCompleted;
72
+ private handleStatusUpdate;
73
+ /**
74
+ * Create an async iterable stream of user messages for the worker.
75
+ * Yields the initial prompt, then streams any additional messages from the queue.
76
+ */
77
+ private createMessageStream;
62
78
  private runWorker;
63
79
  private handleMessage;
64
80
  private extractAssistantText;
@@ -1,14 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WorkerManager = void 0;
4
- const events_1 = require("events");
5
- const crypto_1 = require("crypto");
6
- class WorkerManager extends events_1.EventEmitter {
1
+ import { EventEmitter } from 'events';
2
+ import { randomUUID } from 'crypto';
3
+ import { createWorkerStatusMcpServer } from './tools/worker-status-tool.js';
4
+ import { AsyncQueue } from './utils/async-queue.js';
5
+ export class WorkerManager extends EventEmitter {
6
+ options;
7
+ workers = new Map();
8
+ runningQueries = new Map();
7
9
  constructor(options) {
8
10
  super();
9
11
  this.options = options;
10
- this.workers = new Map();
11
- this.runningQueries = new Map();
12
12
  }
13
13
  listWorkers() {
14
14
  return Array.from(this.workers.values());
@@ -24,22 +24,55 @@ class WorkerManager extends events_1.EventEmitter {
24
24
  }
25
25
  return undefined;
26
26
  }
27
+ /**
28
+ * Get a formatted summary of all current worker statuses for inclusion in system prompts.
29
+ * Returns a string describing all active workers and their current state.
30
+ */
31
+ getWorkerStatusSummary() {
32
+ const workers = this.listWorkers();
33
+ if (workers.length === 0) {
34
+ return 'No active workers.';
35
+ }
36
+ const lines = ['## Current Worker Status'];
37
+ lines.push('');
38
+ for (const worker of workers) {
39
+ const latestMsg = worker.progress.length > 0
40
+ ? worker.progress[worker.progress.length - 1]?.message
41
+ : undefined;
42
+ lines.push(`**Task: "${worker.task}"**`);
43
+ lines.push(`- Status: ${worker.status}`);
44
+ lines.push(`- Worker ID: ${worker.id}`);
45
+ if (worker.status === 'completed' && worker.result) {
46
+ lines.push(`- Result: ${worker.result}`);
47
+ }
48
+ else if (worker.status === 'error' && worker.error) {
49
+ lines.push(`- Error: ${worker.error}`);
50
+ }
51
+ else if (latestMsg) {
52
+ lines.push(`- Latest: ${latestMsg}`);
53
+ }
54
+ lines.push('');
55
+ }
56
+ return lines.join('\n');
57
+ }
27
58
  launchWorker({ task, prompt, originSessionId, metadata }) {
28
- const id = (0, crypto_1.randomUUID)();
59
+ // Use a single UUID for both worker ID and session ID to unify them
60
+ const sessionId = randomUUID();
29
61
  const resolvedOriginSessionId = originSessionId;
30
62
  const record = {
31
- id,
63
+ id: sessionId, // Worker ID is the same as session ID
32
64
  task,
33
65
  prompt,
34
66
  status: 'running',
35
- sessionId: (0, crypto_1.randomUUID)(),
67
+ sessionId,
36
68
  startedAt: Date.now(),
37
69
  lastUpdateAt: Date.now(),
38
70
  originSessionId: resolvedOriginSessionId,
39
71
  progress: [],
40
72
  metadata,
73
+ messageQueue: new AsyncQueue(),
41
74
  };
42
- this.workers.set(id, record);
75
+ this.workers.set(sessionId, record);
43
76
  this.emit('session_start', { ...record });
44
77
  this.emitUpdate(record);
45
78
  void this.runWorker(record, prompt);
@@ -72,18 +105,127 @@ class WorkerManager extends events_1.EventEmitter {
72
105
  // Ignore interrupt errors; status already updated.
73
106
  });
74
107
  }
108
+ // Close the message queue
109
+ record.messageQueue.close();
75
110
  return true;
76
111
  }
112
+ /**
113
+ * Send a message to a running worker.
114
+ *
115
+ * @param task - The task name of the worker to message
116
+ * @param message - The message content to send
117
+ * @param interrupt - If true, interrupt current generation; if false, queue for next turn
118
+ * @returns true if message was sent, false if worker not found or not running
119
+ */
120
+ async messageWorker(task, message, interrupt) {
121
+ const record = this.getWorkerByTask(task);
122
+ if (!record) {
123
+ return false;
124
+ }
125
+ if (record.status !== 'running') {
126
+ return false;
127
+ }
128
+ // Log the message being sent to progress for internal tracking
129
+ // Note: We don't emit an update here because the user already sees the message_worker tool call.
130
+ // We only emit updates when the worker's actual state changes (status, completion, etc.)
131
+ record.progress.push({
132
+ timestamp: Date.now(),
133
+ message: `[ORCHESTRATOR MESSAGE${interrupt ? ' - INTERRUPT' : ''}]: ${message}`,
134
+ });
135
+ record.lastUpdateAt = Date.now();
136
+ // If interrupt is requested, interrupt the current query
137
+ if (interrupt) {
138
+ const query = this.runningQueries.get(record.id);
139
+ if (query) {
140
+ try {
141
+ await query.interrupt();
142
+ }
143
+ catch (error) {
144
+ console.error('[WorkerManager] Failed to interrupt worker:', error);
145
+ }
146
+ }
147
+ }
148
+ // Create SDK user message and push to queue
149
+ const userMessage = {
150
+ session_id: record.sessionId,
151
+ type: 'user',
152
+ message: {
153
+ role: 'user',
154
+ content: message,
155
+ },
156
+ parent_tool_use_id: null,
157
+ isSynthetic: true,
158
+ };
159
+ try {
160
+ record.messageQueue.push(userMessage);
161
+ return true;
162
+ }
163
+ catch (error) {
164
+ console.error('[WorkerManager] Failed to queue message:', error);
165
+ return false;
166
+ }
167
+ }
77
168
  emitUpdate(record) {
78
169
  this.emit('update', { ...record });
79
170
  }
80
171
  emitCompleted(record) {
81
172
  this.emit('completed', { ...record });
82
173
  }
174
+ handleStatusUpdate(record, event) {
175
+ console.log('[WorkerManager] Status update received:', {
176
+ workerId: record.id,
177
+ task: record.task,
178
+ message: event.message,
179
+ metadata: event.metadata,
180
+ });
181
+ record.progress.push({
182
+ timestamp: event.timestamp,
183
+ message: event.message,
184
+ });
185
+ record.lastUpdateAt = event.timestamp;
186
+ this.emitUpdate(record);
187
+ }
188
+ /**
189
+ * Create an async iterable stream of user messages for the worker.
190
+ * Yields the initial prompt, then streams any additional messages from the queue.
191
+ */
192
+ async *createMessageStream(initialPrompt, sessionId, messageQueue) {
193
+ // Yield initial prompt as first message
194
+ yield {
195
+ session_id: sessionId,
196
+ type: 'user',
197
+ message: {
198
+ role: 'user',
199
+ content: initialPrompt,
200
+ },
201
+ parent_tool_use_id: null,
202
+ };
203
+ // Continue yielding messages from the queue
204
+ for await (const message of messageQueue) {
205
+ yield message;
206
+ }
207
+ }
83
208
  async runWorker(record, prompt) {
84
- const client = this.options.createClient();
209
+ // Create status update MCP server for this worker
210
+ const statusMcpServer = createWorkerStatusMcpServer((event) => {
211
+ this.handleStatusUpdate(record, event);
212
+ });
213
+ console.log('[WorkerManager] Creating worker client with status MCP server:', {
214
+ workerId: record.id,
215
+ task: record.task,
216
+ hasMcpServer: !!statusMcpServer,
217
+ });
218
+ // Create client with status MCP server
219
+ const client = this.options.createClient({
220
+ worker_status: statusMcpServer,
221
+ });
222
+ // Wrap the prompt with worker instructions
85
223
  const workerPrompt = this.wrapPrompt(prompt);
86
- const query = client.createQuery(workerPrompt);
224
+ // Create message stream that includes initial prompt and any future messages
225
+ const messageStream = this.createMessageStream(workerPrompt, record.sessionId, record.messageQueue);
226
+ // Create query with the message stream for continuous message support
227
+ const query = client.createQuery(messageStream);
228
+ // Store the query reference for interrupt support
87
229
  this.runningQueries.set(record.id, query);
88
230
  const summarizedChunks = [];
89
231
  try {
@@ -127,12 +269,15 @@ class WorkerManager extends events_1.EventEmitter {
127
269
  this.emitCompleted(record);
128
270
  }
129
271
  finally {
272
+ // Close the message queue to signal no more messages
273
+ record.messageQueue.close();
130
274
  this.runningQueries.delete(record.id);
131
275
  }
132
276
  }
133
277
  handleMessage(record, message, summarizedChunks) {
134
278
  switch (message.type) {
135
279
  case 'assistant': {
280
+ // Extract text content
136
281
  const text = this.extractAssistantText(message);
137
282
  if (text) {
138
283
  summarizedChunks.push(text);
@@ -141,13 +286,38 @@ class WorkerManager extends events_1.EventEmitter {
141
286
  message: text,
142
287
  });
143
288
  record.lastUpdateAt = Date.now();
144
- this.emitUpdate(record);
145
289
  this.emit('message', {
146
290
  record,
147
291
  messageType: 'assistant_text',
148
292
  text,
149
293
  });
150
294
  }
295
+ // Extract tool uses from assistant message content
296
+ const content = message.message.content;
297
+ let hasToolUse = false;
298
+ if (Array.isArray(content)) {
299
+ for (const block of content) {
300
+ if (block && typeof block === 'object' && 'type' in block) {
301
+ if (block.type === 'tool_use' && 'name' in block && 'id' in block) {
302
+ hasToolUse = true;
303
+ this.emit('message', {
304
+ record,
305
+ messageType: 'tool_call',
306
+ toolName: block.name,
307
+ toolUseId: block.id,
308
+ toolInput: 'input' in block ? block.input : undefined,
309
+ });
310
+ }
311
+ }
312
+ }
313
+ }
314
+ // If the assistant message has no tool uses, the conversation is likely done
315
+ // Close the message queue to signal to SDK that no more messages are coming
316
+ // This allows the SDK to emit the final 'result' message and complete the query
317
+ if (!hasToolUse && !record.messageQueue.isClosed()) {
318
+ console.log('[WorkerManager] Assistant message without tool use - closing message queue to signal completion');
319
+ record.messageQueue.close();
320
+ }
151
321
  break;
152
322
  }
153
323
  case 'stream_event': {
@@ -158,7 +328,6 @@ class WorkerManager extends events_1.EventEmitter {
158
328
  message: text,
159
329
  });
160
330
  record.lastUpdateAt = Date.now();
161
- this.emitUpdate(record);
162
331
  }
163
332
  break;
164
333
  }
@@ -242,9 +411,8 @@ class WorkerManager extends events_1.EventEmitter {
242
411
  }
243
412
  }
244
413
  wrapPrompt(userPrompt) {
245
- const directive = `\n\nIMPORTANT:\n- Provide concise status updates prefixed with "STATUS:" whenever you make progress.\n- When finished, output a final summary prefixed with "RESULT:".\n- Do not include raw diffs or large file dumps unless explicitly asked.\n`;
414
+ const directive = `\n\nIMPORTANT:\n- Use the mcp__worker_status__send_status_update tool to report progress as you work.\n- When finished, output a final summary.\n- Do not include raw diffs or large file dumps unless explicitly asked.\n`;
246
415
  return `${userPrompt.trim()}\n${directive}`;
247
416
  }
248
417
  }
249
- exports.WorkerManager = WorkerManager;
250
418
  //# sourceMappingURL=worker-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker-manager.js","sourceRoot":"","sources":["../../src/orchestrator/worker-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker-manager.js","sourceRoot":"","sources":["../../src/orchestrator/worker-manager.ts"],"names":[],"mappings":"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"}