jiva-core 0.2.2 → 0.3.1

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 (156) hide show
  1. package/.dockerignore +53 -0
  2. package/.gcloudignore +49 -0
  3. package/CONTRIBUTING.md +92 -0
  4. package/Dockerfile +63 -0
  5. package/LICENSE +21 -0
  6. package/README.md +248 -102
  7. package/cloud-run-deploy.yaml +135 -0
  8. package/cloud-run.yaml +135 -0
  9. package/cloud-run.yaml.template +143 -0
  10. package/deploy.sh +107 -0
  11. package/dist/core/agent-spawner.d.ts +89 -0
  12. package/dist/core/agent-spawner.d.ts.map +1 -0
  13. package/dist/core/agent-spawner.js +195 -0
  14. package/dist/core/agent-spawner.js.map +1 -0
  15. package/dist/core/client-agent.d.ts +82 -0
  16. package/dist/core/client-agent.d.ts.map +1 -0
  17. package/dist/core/client-agent.js +406 -0
  18. package/dist/core/client-agent.js.map +1 -0
  19. package/dist/core/config.d.ts +59 -10
  20. package/dist/core/config.d.ts.map +1 -1
  21. package/dist/core/config.js +19 -2
  22. package/dist/core/config.js.map +1 -1
  23. package/dist/core/conversation-manager.d.ts +10 -18
  24. package/dist/core/conversation-manager.d.ts.map +1 -1
  25. package/dist/core/conversation-manager.js +28 -60
  26. package/dist/core/conversation-manager.js.map +1 -1
  27. package/dist/core/dual-agent.d.ts +24 -3
  28. package/dist/core/dual-agent.d.ts.map +1 -1
  29. package/dist/core/dual-agent.js +112 -19
  30. package/dist/core/dual-agent.js.map +1 -1
  31. package/dist/core/manager-agent.d.ts +3 -1
  32. package/dist/core/manager-agent.d.ts.map +1 -1
  33. package/dist/core/manager-agent.js +66 -14
  34. package/dist/core/manager-agent.js.map +1 -1
  35. package/dist/core/worker-agent.d.ts +15 -1
  36. package/dist/core/worker-agent.d.ts.map +1 -1
  37. package/dist/core/worker-agent.js +244 -11
  38. package/dist/core/worker-agent.js.map +1 -1
  39. package/dist/core/workspace.d.ts +5 -0
  40. package/dist/core/workspace.d.ts.map +1 -1
  41. package/dist/core/workspace.js +47 -7
  42. package/dist/core/workspace.js.map +1 -1
  43. package/dist/index.d.ts +3 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +4 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/interfaces/cli/index.js +376 -44
  48. package/dist/interfaces/cli/index.js.map +1 -1
  49. package/dist/interfaces/cli/repl.d.ts.map +1 -1
  50. package/dist/interfaces/cli/repl.js +6 -0
  51. package/dist/interfaces/cli/repl.js.map +1 -1
  52. package/dist/interfaces/http/index.d.ts +22 -0
  53. package/dist/interfaces/http/index.d.ts.map +1 -0
  54. package/dist/interfaces/http/index.js +135 -0
  55. package/dist/interfaces/http/index.js.map +1 -0
  56. package/dist/interfaces/http/middleware/auth.d.ts +32 -0
  57. package/dist/interfaces/http/middleware/auth.d.ts.map +1 -0
  58. package/dist/interfaces/http/middleware/auth.js +176 -0
  59. package/dist/interfaces/http/middleware/auth.js.map +1 -0
  60. package/dist/interfaces/http/routes/chat.d.ts +7 -0
  61. package/dist/interfaces/http/routes/chat.d.ts.map +1 -0
  62. package/dist/interfaces/http/routes/chat.js +144 -0
  63. package/dist/interfaces/http/routes/chat.js.map +1 -0
  64. package/dist/interfaces/http/routes/health.d.ts +6 -0
  65. package/dist/interfaces/http/routes/health.d.ts.map +1 -0
  66. package/dist/interfaces/http/routes/health.js +25 -0
  67. package/dist/interfaces/http/routes/health.js.map +1 -0
  68. package/dist/interfaces/http/routes/session.d.ts +7 -0
  69. package/dist/interfaces/http/routes/session.d.ts.map +1 -0
  70. package/dist/interfaces/http/routes/session.js +114 -0
  71. package/dist/interfaces/http/routes/session.js.map +1 -0
  72. package/dist/interfaces/http/session-manager.d.ts +76 -0
  73. package/dist/interfaces/http/session-manager.d.ts.map +1 -0
  74. package/dist/interfaces/http/session-manager.js +339 -0
  75. package/dist/interfaces/http/session-manager.js.map +1 -0
  76. package/dist/interfaces/http/websocket-handler.d.ts +18 -0
  77. package/dist/interfaces/http/websocket-handler.d.ts.map +1 -0
  78. package/dist/interfaces/http/websocket-handler.js +146 -0
  79. package/dist/interfaces/http/websocket-handler.js.map +1 -0
  80. package/dist/mcp/client.d.ts +11 -2
  81. package/dist/mcp/client.d.ts.map +1 -1
  82. package/dist/mcp/client.js +44 -19
  83. package/dist/mcp/client.js.map +1 -1
  84. package/dist/mcp/server-manager.d.ts +1 -1
  85. package/dist/mcp/server-manager.d.ts.map +1 -1
  86. package/dist/mcp/server-manager.js +12 -2
  87. package/dist/mcp/server-manager.js.map +1 -1
  88. package/dist/personas/index.d.ts +13 -0
  89. package/dist/personas/index.d.ts.map +1 -0
  90. package/dist/personas/index.js +13 -0
  91. package/dist/personas/index.js.map +1 -0
  92. package/dist/personas/persona-loader.d.ts +30 -0
  93. package/dist/personas/persona-loader.d.ts.map +1 -0
  94. package/dist/personas/persona-loader.js +246 -0
  95. package/dist/personas/persona-loader.js.map +1 -0
  96. package/dist/personas/persona-manager.d.ts +82 -0
  97. package/dist/personas/persona-manager.d.ts.map +1 -0
  98. package/dist/personas/persona-manager.js +211 -0
  99. package/dist/personas/persona-manager.js.map +1 -0
  100. package/dist/personas/skill-loader.d.ts +35 -0
  101. package/dist/personas/skill-loader.d.ts.map +1 -0
  102. package/dist/personas/skill-loader.js +144 -0
  103. package/dist/personas/skill-loader.js.map +1 -0
  104. package/dist/personas/skill-packager.d.ts +25 -0
  105. package/dist/personas/skill-packager.d.ts.map +1 -0
  106. package/dist/personas/skill-packager.js +233 -0
  107. package/dist/personas/skill-packager.js.map +1 -0
  108. package/dist/personas/types.d.ts +134 -0
  109. package/dist/personas/types.d.ts.map +1 -0
  110. package/dist/personas/types.js +7 -0
  111. package/dist/personas/types.js.map +1 -0
  112. package/dist/personas/validator.d.ts +22 -0
  113. package/dist/personas/validator.d.ts.map +1 -0
  114. package/dist/personas/validator.js +144 -0
  115. package/dist/personas/validator.js.map +1 -0
  116. package/dist/storage/factory.d.ts +51 -0
  117. package/dist/storage/factory.d.ts.map +1 -0
  118. package/dist/storage/factory.js +154 -0
  119. package/dist/storage/factory.js.map +1 -0
  120. package/dist/storage/gcp-bucket-provider.d.ts +59 -0
  121. package/dist/storage/gcp-bucket-provider.d.ts.map +1 -0
  122. package/dist/storage/gcp-bucket-provider.js +275 -0
  123. package/dist/storage/gcp-bucket-provider.js.map +1 -0
  124. package/dist/storage/index.d.ts +33 -0
  125. package/dist/storage/index.d.ts.map +1 -0
  126. package/dist/storage/index.js +37 -0
  127. package/dist/storage/index.js.map +1 -0
  128. package/dist/storage/local-provider.d.ts +36 -0
  129. package/dist/storage/local-provider.d.ts.map +1 -0
  130. package/dist/storage/local-provider.js +219 -0
  131. package/dist/storage/local-provider.js.map +1 -0
  132. package/dist/storage/provider.d.ts +137 -0
  133. package/dist/storage/provider.d.ts.map +1 -0
  134. package/dist/storage/provider.js +136 -0
  135. package/dist/storage/provider.js.map +1 -0
  136. package/dist/storage/types.d.ts +78 -0
  137. package/dist/storage/types.d.ts.map +1 -0
  138. package/dist/storage/types.js +14 -0
  139. package/dist/storage/types.js.map +1 -0
  140. package/dist/utils/orchestration-logger.d.ts +36 -0
  141. package/dist/utils/orchestration-logger.d.ts.map +1 -0
  142. package/dist/utils/orchestration-logger.js +224 -0
  143. package/dist/utils/orchestration-logger.js.map +1 -0
  144. package/jiva-new-demo.gif +0 -0
  145. package/package.json +30 -2
  146. package/.fluen/cache/state.json +0 -7
  147. package/actions/action_registry.py +0 -75
  148. package/actions/python_coder.py +0 -470
  149. package/api/main.py +0 -269
  150. package/downloaded_image.avif +0 -0
  151. package/downloads/snipping_tool.avif +0 -0
  152. package/image.avif +0 -0
  153. package/ms_image.avif +0 -0
  154. package/screenshot.png +0 -0
  155. package/snipping_tool.avif +0 -0
  156. package/tmp_image.avif +0 -0
@@ -2,12 +2,17 @@ import Conf from 'conf';
2
2
  import { z } from 'zod';
3
3
  import { ConfigurationError } from '../utils/errors.js';
4
4
  // Zod schemas for validation
5
+ // Support both stdio-based and HTTP/SSE-based MCP servers
5
6
  const MCPServerConfigSchema = z.object({
6
- command: z.string(),
7
+ // Stdio transport (command-based)
8
+ command: z.string().optional(),
7
9
  args: z.array(z.string()).optional(),
8
10
  env: z.record(z.string()).optional(),
11
+ // HTTP/SSE transport (URL-based)
12
+ url: z.string().url().optional(),
13
+ headers: z.record(z.string()).optional(),
9
14
  enabled: z.boolean().default(true),
10
- });
15
+ }).refine((data) => (data.command !== undefined) || (data.url !== undefined), { message: "Must specify either 'command' (for stdio) or 'url' (for HTTP/SSE)" });
11
16
  const ModelConfigSchema = z.object({
12
17
  name: z.string(),
13
18
  endpoint: z.string().url(),
@@ -25,6 +30,7 @@ const JivaConfigSchema = z.object({
25
30
  workspace: z.object({
26
31
  defaultDirectivePath: z.string().optional(),
27
32
  }).optional(),
33
+ activePersona: z.string().optional(),
28
34
  debug: z.boolean().default(false),
29
35
  });
30
36
  export class ConfigManager {
@@ -87,6 +93,17 @@ export class ConfigManager {
87
93
  getDefaultDirectivePath() {
88
94
  return this.store.get('workspace.defaultDirectivePath');
89
95
  }
96
+ setActivePersona(name) {
97
+ if (name === null) {
98
+ this.store.delete('activePersona');
99
+ }
100
+ else {
101
+ this.store.set('activePersona', name);
102
+ }
103
+ }
104
+ getActivePersona() {
105
+ return this.store.get('activePersona');
106
+ }
90
107
  reset() {
91
108
  this.store.clear();
92
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,12 @@
2
2
  * Conversation Manager
3
3
  *
4
4
  * Handles conversation persistence, condensing, and restoration.
5
+ * Now uses StorageProvider abstraction for cloud-native support.
5
6
  */
6
7
  import { Message } from '../models/base.js';
7
8
  import { ModelOrchestrator } from '../models/orchestrator.js';
9
+ import { StorageProvider } from '../storage/provider.js';
10
+ import { SavedConversation } from '../storage/types.js';
8
11
  export interface ConversationMetadata {
9
12
  id: string;
10
13
  title?: string;
@@ -14,40 +17,29 @@ export interface ConversationMetadata {
14
17
  workspace?: string;
15
18
  summary?: string;
16
19
  }
17
- export interface SavedConversation {
18
- metadata: ConversationMetadata;
19
- messages: Message[];
20
- }
21
20
  export declare class ConversationManager {
22
- private conversationsDir;
21
+ private storageProvider;
23
22
  private currentConversationId;
24
- constructor();
25
- /**
26
- * Initialize conversations directory
27
- */
28
- initialize(): Promise<void>;
23
+ constructor(storageProvider: StorageProvider, orchestrator?: ModelOrchestrator);
24
+ private orchestrator?;
29
25
  /**
30
26
  * Generate a unique conversation ID
31
27
  */
32
28
  private generateConversationId;
33
29
  /**
34
- * Get path for a conversation file
35
- */
36
- private getConversationPath;
37
- /**
38
- * Save conversation to disk
30
+ * Save conversation using StorageProvider
39
31
  */
40
32
  saveConversation(messages: Message[], workspace?: string, conversationId?: string, orchestrator?: ModelOrchestrator): Promise<string>;
41
33
  /**
42
- * Load conversation from disk
34
+ * Load conversation using StorageProvider
43
35
  */
44
36
  loadConversation(id: string): Promise<SavedConversation>;
45
37
  /**
46
- * List all saved conversations
38
+ * List all saved conversations using StorageProvider
47
39
  */
48
40
  listConversations(): Promise<ConversationMetadata[]>;
49
41
  /**
50
- * Delete a conversation
42
+ * Delete a conversation using StorageProvider
51
43
  */
52
44
  deleteConversation(id: string): Promise<void>;
53
45
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-manager.d.ts","sourceRoot":"","sources":["../../src/core/conversation-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAK5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,qBAAqB,CAAuB;;IAMpD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAM9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACG,gBAAgB,CACpB,QAAQ,EAAE,OAAO,EAAE,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,iBAAiB,GAC/B,OAAO,CAAC,MAAM,CAAC;IAwDlB;;OAEG;IACG,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiB9D;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAgC1D;;OAEG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBnD;;;;;;;;;OASG;IACG,oBAAoB,CACxB,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,iBAAiB,EAC/B,kBAAkB,GAAE,MAAW,GAC9B,OAAO,CAAC,OAAO,EAAE,CAAC;IAgFrB;;OAEG;IACG,aAAa,CACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,iBAAiB,GAC9B,OAAO,CAAC,MAAM,CAAC;IAuDlB;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACG,eAAe,CACnB,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,iBAAiB,GAC9B,OAAO,CAAC,MAAM,CAAC;IA4BlB;;OAEG;IACG,QAAQ,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,iBAAiB,GAC/B,OAAO,CAAC,IAAI,CAAC;IAQhB;;OAEG;IACH,wBAAwB,IAAI,MAAM,GAAG,IAAI;IAIzC;;OAEG;IACH,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;CAG9D"}
1
+ {"version":3,"file":"conversation-manager.d.ts","sourceRoot":"","sources":["../../src/core/conversation-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,qBAAqB,CAAuB;gBAExC,eAAe,EAAE,eAAe,EAAE,YAAY,CAAC,EAAE,iBAAiB;IAK9E,OAAO,CAAC,YAAY,CAAC,CAAoB;IAEzC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAM9B;;OAEG;IACG,gBAAgB,CACpB,QAAQ,EAAE,OAAO,EAAE,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,iBAAiB,GAC/B,OAAO,CAAC,MAAM,CAAC;IAyDlB;;OAEG;IACG,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkB9D;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAgB1D;;OAEG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcnD;;;;;;;;;OASG;IACG,oBAAoB,CACxB,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,iBAAiB,EAC/B,kBAAkB,GAAE,MAAW,GAC9B,OAAO,CAAC,OAAO,EAAE,CAAC;IAgFrB;;OAEG;IACG,aAAa,CACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,iBAAiB,GAC9B,OAAO,CAAC,MAAM,CAAC;IAuDlB;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACG,eAAe,CACnB,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,iBAAiB,GAC9B,OAAO,CAAC,MAAM,CAAC;IA4BlB;;OAEG;IACG,QAAQ,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,iBAAiB,GAC/B,OAAO,CAAC,IAAI,CAAC;IAQhB;;OAEG;IACH,wBAAwB,IAAI,MAAM,GAAG,IAAI;IAIzC;;OAEG;IACH,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;CAG9D"}
@@ -2,30 +2,17 @@
2
2
  * Conversation Manager
3
3
  *
4
4
  * Handles conversation persistence, condensing, and restoration.
5
+ * Now uses StorageProvider abstraction for cloud-native support.
5
6
  */
6
7
  import { logger } from '../utils/logger.js';
7
- import { promises as fs } from 'fs';
8
- import { join } from 'path';
9
- import { homedir } from 'os';
10
8
  export class ConversationManager {
11
- conversationsDir;
9
+ storageProvider;
12
10
  currentConversationId = null;
13
- constructor() {
14
- this.conversationsDir = join(homedir(), '.jiva', 'conversations');
15
- }
16
- /**
17
- * Initialize conversations directory
18
- */
19
- async initialize() {
20
- try {
21
- await fs.mkdir(this.conversationsDir, { recursive: true });
22
- logger.debug(`Conversations directory: ${this.conversationsDir}`);
23
- }
24
- catch (error) {
25
- logger.error('Failed to create conversations directory', error);
26
- throw error;
27
- }
11
+ constructor(storageProvider, orchestrator) {
12
+ this.storageProvider = storageProvider;
13
+ this.orchestrator = orchestrator;
28
14
  }
15
+ orchestrator;
29
16
  /**
30
17
  * Generate a unique conversation ID
31
18
  */
@@ -35,33 +22,28 @@ export class ConversationManager {
35
22
  return `conv-${timestamp}-${random}`;
36
23
  }
37
24
  /**
38
- * Get path for a conversation file
39
- */
40
- getConversationPath(id) {
41
- return join(this.conversationsDir, `${id}.json`);
42
- }
43
- /**
44
- * Save conversation to disk
25
+ * Save conversation using StorageProvider
45
26
  */
46
27
  async saveConversation(messages, workspace, conversationId, orchestrator) {
47
28
  const finalId = conversationId || this.currentConversationId || this.generateConversationId();
48
- // Load existing metadata if updating an existing conversation
49
- let existingMetadata;
29
+ // Use provided orchestrator or fallback to constructor orchestrator
30
+ const modelOrchestrator = orchestrator || this.orchestrator;
31
+ // Load existing conversation if updating
32
+ let existingData = null;
50
33
  if (this.currentConversationId && finalId === this.currentConversationId) {
51
34
  try {
52
- const existing = await this.loadConversation(finalId);
53
- existingMetadata = existing.metadata;
35
+ existingData = await this.storageProvider.loadConversation(finalId);
54
36
  }
55
37
  catch (error) {
56
- // Ignore, will create new metadata
38
+ // Ignore, will create new
57
39
  }
58
40
  }
59
41
  // Generate title if this is a new conversation and we have at least one user message
60
- let title = existingMetadata?.title;
42
+ let title = existingData?.metadata?.title;
61
43
  const hasUserMessage = messages.some(msg => msg.role === 'user');
62
- if (!title && hasUserMessage && orchestrator) {
44
+ if (!title && hasUserMessage && modelOrchestrator) {
63
45
  logger.info('Generating conversation title...');
64
- title = await this.generateTitle(messages, orchestrator);
46
+ title = await this.generateTitle(messages, modelOrchestrator);
65
47
  logger.info(`Title generated: ${title}`);
66
48
  }
67
49
  else if (!title && hasUserMessage) {
@@ -77,30 +59,30 @@ export class ConversationManager {
77
59
  const metadata = {
78
60
  id: finalId,
79
61
  title,
80
- created: existingMetadata?.created || new Date().toISOString(),
62
+ created: existingData?.metadata?.created || new Date().toISOString(),
81
63
  updated: new Date().toISOString(),
82
64
  messageCount: messages.length,
83
65
  workspace,
84
- summary: existingMetadata?.summary,
66
+ summary: existingData?.metadata?.summary,
85
67
  };
86
68
  const conversation = {
87
69
  metadata,
88
70
  messages,
89
71
  };
90
- const path = this.getConversationPath(finalId);
91
- await fs.writeFile(path, JSON.stringify(conversation, null, 2), 'utf-8');
72
+ await this.storageProvider.saveConversation(conversation);
92
73
  this.currentConversationId = finalId;
93
74
  logger.debug(`Conversation saved: ${finalId}`);
94
75
  return finalId;
95
76
  }
96
77
  /**
97
- * Load conversation from disk
78
+ * Load conversation using StorageProvider
98
79
  */
99
80
  async loadConversation(id) {
100
- const path = this.getConversationPath(id);
101
81
  try {
102
- const data = await fs.readFile(path, 'utf-8');
103
- const conversation = JSON.parse(data);
82
+ const conversation = await this.storageProvider.loadConversation(id);
83
+ if (!conversation) {
84
+ throw new Error(`Conversation not found: ${id}`);
85
+ }
104
86
  this.currentConversationId = id;
105
87
  logger.debug(`Conversation loaded: ${id}`);
106
88
  return conversation;
@@ -111,24 +93,11 @@ export class ConversationManager {
111
93
  }
112
94
  }
113
95
  /**
114
- * List all saved conversations
96
+ * List all saved conversations using StorageProvider
115
97
  */
116
98
  async listConversations() {
117
99
  try {
118
- const files = await fs.readdir(this.conversationsDir);
119
- const conversations = [];
120
- for (const file of files) {
121
- if (file.endsWith('.json')) {
122
- try {
123
- const data = await fs.readFile(join(this.conversationsDir, file), 'utf-8');
124
- const conversation = JSON.parse(data);
125
- conversations.push(conversation.metadata);
126
- }
127
- catch (error) {
128
- logger.warn(`Failed to read conversation file: ${file}`);
129
- }
130
- }
131
- }
100
+ const conversations = await this.storageProvider.listConversations();
132
101
  // Sort by updated date (most recent first)
133
102
  conversations.sort((a, b) => new Date(b.updated).getTime() - new Date(a.updated).getTime());
134
103
  return conversations;
@@ -139,12 +108,11 @@ export class ConversationManager {
139
108
  }
140
109
  }
141
110
  /**
142
- * Delete a conversation
111
+ * Delete a conversation using StorageProvider
143
112
  */
144
113
  async deleteConversation(id) {
145
- const path = this.getConversationPath(id);
146
114
  try {
147
- await fs.unlink(path);
115
+ await this.storageProvider.deleteConversation(id);
148
116
  logger.debug(`Conversation deleted: ${id}`);
149
117
  if (this.currentConversationId === id) {
150
118
  this.currentConversationId = null;
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-manager.js","sourceRoot":"","sources":["../../src/core/conversation-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation-manager.js","sourceRoot":"","sources":["../../src/core/conversation-manager.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,27 @@
1
1
  /**
2
- * Dual Agent System - Coordinates Manager and Worker agents
2
+ * Dual Agent System - Coordinates Manager, Worker, and Client agents
3
3
  *
4
- * This is the main entry point that replaces the old single-agent architecture.
5
- * It implements a two-agent pattern for better separation of concerns.
4
+ * Three-agent architecture:
5
+ * - Manager: High-level planning and coordination
6
+ * - Worker: Task execution with tools
7
+ * - Client: Adaptive validation and quality control
6
8
  */
7
9
  import { ModelOrchestrator } from '../models/orchestrator.js';
8
10
  import { MCPServerManager } from '../mcp/server-manager.js';
9
11
  import { WorkspaceManager } from './workspace.js';
10
12
  import { ConversationManager } from './conversation-manager.js';
13
+ import { PersonaManager } from '../personas/persona-manager.js';
14
+ import { AgentSpawner } from './agent-spawner.js';
11
15
  import { Message } from '../models/base.js';
12
16
  export interface DualAgentConfig {
13
17
  orchestrator: ModelOrchestrator;
14
18
  mcpManager: MCPServerManager;
15
19
  workspace: WorkspaceManager;
16
20
  conversationManager?: ConversationManager;
21
+ personaManager?: PersonaManager;
17
22
  maxSubtasks?: number;
23
+ maxIterations?: number;
24
+ maxAgentDepth?: number;
18
25
  autoSave?: boolean;
19
26
  condensingThreshold?: number;
20
27
  }
@@ -32,9 +39,14 @@ export declare class DualAgent {
32
39
  private mcpManager;
33
40
  private workspace;
34
41
  private conversationManager;
42
+ private personaManager;
43
+ private agentSpawner;
35
44
  private manager;
36
45
  private worker;
46
+ private client;
37
47
  private maxSubtasks;
48
+ private maxIterations;
49
+ private maxAgentDepth;
38
50
  private autoSave;
39
51
  private condensingThreshold;
40
52
  private userConversationHistory;
@@ -51,6 +63,15 @@ export declare class DualAgent {
51
63
  getWorkspace(): WorkspaceManager;
52
64
  getMCPManager(): MCPServerManager;
53
65
  getConversationManager(): ConversationManager | null;
66
+ getPersonaManager(): PersonaManager | null;
67
+ /**
68
+ * Set agent spawner (used by parent agents to enable spawning in sub-agents)
69
+ */
70
+ setAgentSpawner(spawner: AgentSpawner): void;
71
+ /**
72
+ * Get agent spawner
73
+ */
74
+ getAgentSpawner(): AgentSpawner | null;
54
75
  saveConversation(): Promise<string | null>;
55
76
  loadConversation(id: string): Promise<void>;
56
77
  listConversations(): Promise<import("./conversation-manager.js").ConversationMetadata[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"dual-agent.d.ts","sourceRoot":"","sources":["../../src/core/dual-agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAIhE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,iBAAiB,CAAC;IAChC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE;QACL,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,mBAAmB,CAA6B;IAExD,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,MAAM,CAAc;IAE5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,mBAAmB,CAAS;IAEpC,OAAO,CAAC,uBAAuB,CAAiB;gBAEpC,MAAM,EAAE,eAAe;IAiBnC;;OAEG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;YA+G7C,kBAAkB;IAahC,OAAO,CAAC,gBAAgB;IAWlB,OAAO;IAKb,iBAAiB;IAMjB,sBAAsB,IAAI,OAAO,EAAE;IAInC,YAAY,IAAI,gBAAgB;IAIhC,aAAa,IAAI,gBAAgB;IAIjC,sBAAsB,IAAI,mBAAmB,GAAG,IAAI;IAI9C,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAiB1C,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3C,iBAAiB;CAOxB"}
1
+ {"version":3,"file":"dual-agent.d.ts","sourceRoot":"","sources":["../../src/core/dual-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,iBAAiB,CAAC;IAChC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE;QACL,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,YAAY,CAA6B;IAEjD,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAc;IAE5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,mBAAmB,CAAS;IAEpC,OAAO,CAAC,uBAAuB,CAAiB;gBAEpC,MAAM,EAAE,eAAe;IAmDnC;;OAEG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAoJ7C,kBAAkB;IA6BhC,OAAO,CAAC,gBAAgB;IAWlB,OAAO;IAYb,iBAAiB;IAMjB,sBAAsB,IAAI,OAAO,EAAE;IAInC,YAAY,IAAI,gBAAgB;IAIhC,aAAa,IAAI,gBAAgB;IAIjC,sBAAsB,IAAI,mBAAmB,GAAG,IAAI;IAIpD,iBAAiB,IAAI,cAAc,GAAG,IAAI;IAI1C;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAO5C;;OAEG;IACH,eAAe,IAAI,YAAY,GAAG,IAAI;IAIhC,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAiB1C,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3C,iBAAiB;CAOxB"}
@@ -1,20 +1,30 @@
1
1
  /**
2
- * Dual Agent System - Coordinates Manager and Worker agents
2
+ * Dual Agent System - Coordinates Manager, Worker, and Client agents
3
3
  *
4
- * This is the main entry point that replaces the old single-agent architecture.
5
- * It implements a two-agent pattern for better separation of concerns.
4
+ * Three-agent architecture:
5
+ * - Manager: High-level planning and coordination
6
+ * - Worker: Task execution with tools
7
+ * - Client: Adaptive validation and quality control
6
8
  */
9
+ import { AgentSpawner } from './agent-spawner.js';
7
10
  import { ManagerAgent } from './manager-agent.js';
8
11
  import { WorkerAgent } from './worker-agent.js';
12
+ import { ClientAgent } from './client-agent.js';
9
13
  import { logger } from '../utils/logger.js';
14
+ import { orchestrationLogger } from '../utils/orchestration-logger.js';
10
15
  export class DualAgent {
11
16
  orchestrator;
12
17
  mcpManager;
13
18
  workspace;
14
19
  conversationManager;
20
+ personaManager;
21
+ agentSpawner = null;
15
22
  manager;
16
23
  worker;
24
+ client;
17
25
  maxSubtasks;
26
+ maxIterations;
27
+ maxAgentDepth;
18
28
  autoSave;
19
29
  condensingThreshold;
20
30
  userConversationHistory = [];
@@ -23,13 +33,37 @@ export class DualAgent {
23
33
  this.mcpManager = config.mcpManager;
24
34
  this.workspace = config.workspace;
25
35
  this.conversationManager = config.conversationManager || null;
36
+ this.personaManager = config.personaManager || null;
26
37
  this.maxSubtasks = config.maxSubtasks || 10;
38
+ this.maxIterations = config.maxIterations || 10;
39
+ this.maxAgentDepth = config.maxAgentDepth ?? 1; // Default: only Manager can spawn
27
40
  this.autoSave = config.autoSave !== false;
28
41
  this.condensingThreshold = config.condensingThreshold || 30;
29
- // Initialize agents
30
- this.manager = new ManagerAgent(this.orchestrator, this.workspace);
31
- this.worker = new WorkerAgent(this.orchestrator, this.mcpManager, this.workspace);
32
- logger.info('[*] Dual-agent system initialized (Manager + Worker)');
42
+ // Initialize agents (three-agent architecture)
43
+ this.manager = new ManagerAgent(this.orchestrator, this.workspace, this.personaManager || undefined);
44
+ this.worker = new WorkerAgent(this.orchestrator, this.mcpManager, this.workspace, this.maxIterations, this.personaManager || undefined);
45
+ this.client = new ClientAgent(this.orchestrator, this.mcpManager);
46
+ // Initialize AgentSpawner - always available as a baseline tool
47
+ // Create a PersonaManager if one wasn't provided
48
+ let spawnerPersonaManager = this.personaManager;
49
+ if (!this.personaManager) {
50
+ const { PersonaManager } = require('../personas/persona-manager.js');
51
+ spawnerPersonaManager = new PersonaManager();
52
+ // Note: Not awaiting initialize() here - will be lazy loaded if needed
53
+ }
54
+ this.agentSpawner = new AgentSpawner(this.orchestrator, this.mcpManager, this.workspace, this.conversationManager, spawnerPersonaManager, {
55
+ maxDepth: this.maxAgentDepth,
56
+ currentDepth: 0,
57
+ });
58
+ this.worker.setAgentSpawner(this.agentSpawner);
59
+ logger.info('[*] Three-agent system initialized (Manager + Worker + Client)');
60
+ logger.info(`[*] Agent spawn depth limit: ${this.maxAgentDepth} (${this.maxAgentDepth === 1 ? 'only Manager can spawn' : `${this.maxAgentDepth} levels deep`})`);
61
+ if (this.personaManager) {
62
+ const activePersona = this.personaManager.getActivePersona();
63
+ if (activePersona) {
64
+ logger.info(`[*] Active persona: ${activePersona.manifest.name} (${activePersona.skills.length} skills)`);
65
+ }
66
+ }
33
67
  }
34
68
  /**
35
69
  * Process user message using dual-agent architecture
@@ -38,6 +72,7 @@ export class DualAgent {
38
72
  logger.info('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
39
73
  logger.info(`>> User: ${userMessage}`);
40
74
  logger.info('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
75
+ orchestrationLogger.logUserMessage(userMessage);
41
76
  // Check if conversation needs condensing BEFORE adding new message
42
77
  if (this.userConversationHistory.length > this.condensingThreshold && this.conversationManager) {
43
78
  logger.info('[*] Condensing conversation history...');
@@ -53,13 +88,18 @@ export class DualAgent {
53
88
  // PHASE 1: Manager creates plan
54
89
  logger.info('\n[PHASE 1: Planning]');
55
90
  logger.info('─────────────────────────────────────────');
91
+ const phaseStartTime = Date.now();
92
+ orchestrationLogger.logPhaseStart('PLANNING');
56
93
  const plan = await this.manager.createPlan({
57
94
  userRequest: userMessage,
58
95
  context: this.getRecentContext(),
59
96
  });
97
+ orchestrationLogger.logPhaseEnd('PLANNING', Date.now() - phaseStartTime);
60
98
  // PHASE 2: Execute subtasks
61
99
  logger.info('\n[PHASE 2: Execution]');
62
100
  logger.info('─────────────────────────────────────────');
101
+ const executionStartTime = Date.now();
102
+ orchestrationLogger.logPhaseStart('EXECUTION');
63
103
  const results = [];
64
104
  const subtasksToExecute = plan.subtasks.slice(0, this.maxSubtasks);
65
105
  for (let i = 0; i < subtasksToExecute.length; i++) {
@@ -76,23 +116,39 @@ export class DualAgent {
76
116
  subtask,
77
117
  result: workerResult.result,
78
118
  });
79
- // Manager reviews result
80
- const decision = await this.manager.reviewResults(subtask, workerResult.result);
81
- totalIterations += 1;
82
- if (!decision.isComplete && decision.nextAction) {
83
- // Manager wants to do something else
84
- logger.info(`[Manager] Next action: ${decision.nextAction}`);
85
- // Add as new subtask if not at limit
86
- if (results.length < this.maxSubtasks) {
87
- subtasksToExecute.push(decision.nextAction);
119
+ // Client validates Worker's result (adaptive involvement)
120
+ const validation = await this.client.validate(userMessage, plan.subtasks, workerResult);
121
+ if (!validation.approved && validation.nextAction) {
122
+ logger.info(`[Client] Validation failed: ${validation.issues.join(', ')}`);
123
+ logger.info(`[Client] Requesting correction: ${validation.nextAction}`);
124
+ // Deduplicate correction subtasks - don't add the same correction twice
125
+ const normalizedCorrection = validation.nextAction.toLowerCase().trim();
126
+ const isDuplicate = subtasksToExecute.some(existing => existing.toLowerCase().trim() === normalizedCorrection) || results.some(r => r.subtask.toLowerCase().trim() === normalizedCorrection);
127
+ // Add correction subtask (but don't exceed maxSubtasks and avoid duplicates)
128
+ if (isDuplicate) {
129
+ logger.warn(`[Client] Skipping duplicate correction subtask`);
130
+ }
131
+ else if (subtasksToExecute.length < this.maxSubtasks) {
132
+ subtasksToExecute.push(validation.nextAction);
133
+ logger.info(`[Client] Added correction subtask (${subtasksToExecute.length} total)`);
134
+ }
135
+ else {
136
+ logger.warn(`[Client] Cannot add correction - maxSubtasks (${this.maxSubtasks}) reached`);
88
137
  }
89
138
  }
139
+ else if (validation.approved) {
140
+ logger.info(`[Client] Validation passed (${validation.involvementLevel} level)`);
141
+ }
90
142
  }
143
+ orchestrationLogger.logPhaseEnd('EXECUTION', Date.now() - executionStartTime);
91
144
  // PHASE 3: Synthesize final response
92
145
  logger.info('\n[PHASE 3: Synthesis]');
93
146
  logger.info('─────────────────────────────────────────');
147
+ const synthesisStartTime = Date.now();
148
+ orchestrationLogger.logPhaseStart('SYNTHESIS');
94
149
  const finalResponse = await this.synthesizeResponse(plan, results);
95
150
  totalIterations += 1;
151
+ orchestrationLogger.logPhaseEnd('SYNTHESIS', Date.now() - synthesisStartTime);
96
152
  // Add assistant response to user conversation history
97
153
  this.userConversationHistory.push({
98
154
  role: 'assistant',
@@ -105,6 +161,7 @@ export class DualAgent {
105
161
  logger.info('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
106
162
  logger.info(`[+] Complete: ${totalIterations} iterations, ${allToolsUsed.length} tools used`);
107
163
  logger.info('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');
164
+ orchestrationLogger.logFinalResponse(finalResponse, totalIterations, allToolsUsed);
108
165
  return {
109
166
  content: finalResponse,
110
167
  iterations: totalIterations,
@@ -116,11 +173,24 @@ export class DualAgent {
116
173
  };
117
174
  }
118
175
  async synthesizeResponse(plan, results) {
119
- // If only one subtask and simple, just return the result
176
+ // If only one subtask and it's a short success message, return directly
177
+ // But ALWAYS synthesize if result indicates failure or incomplete work
120
178
  if (results.length === 1 && results[0].result.length < 500) {
121
- return results[0].result;
179
+ const result = results[0].result;
180
+ // Check if this is a failure/incomplete message
181
+ const isFailure = result.includes('could not be completed') ||
182
+ result.includes('failed') ||
183
+ result.includes('error') ||
184
+ result.toLowerCase().includes('unable to');
185
+ // If it's a failure, always let Manager synthesize to provide proper context
186
+ if (isFailure) {
187
+ logger.info('[DualAgent] Result indicates failure, invoking Manager synthesis');
188
+ return await this.manager.synthesizeResponse(results);
189
+ }
190
+ // Otherwise, short successful result can be returned directly
191
+ return result;
122
192
  }
123
- // Otherwise, ask Manager to synthesize
193
+ // Multiple subtasks or long result - ask Manager to synthesize
124
194
  return await this.manager.synthesizeResponse(results);
125
195
  }
126
196
  getRecentContext() {
@@ -133,6 +203,11 @@ export class DualAgent {
133
203
  return recent || '';
134
204
  }
135
205
  async cleanup() {
206
+ logger.info('[DualAgent] Cleaning up...');
207
+ // Cleanup spawned agents
208
+ if (this.agentSpawner) {
209
+ await this.agentSpawner.cleanup();
210
+ }
136
211
  await this.mcpManager.cleanup();
137
212
  logger.info('[*] Dual-agent system cleaned up');
138
213
  }
@@ -153,6 +228,24 @@ export class DualAgent {
153
228
  getConversationManager() {
154
229
  return this.conversationManager;
155
230
  }
231
+ getPersonaManager() {
232
+ return this.personaManager;
233
+ }
234
+ /**
235
+ * Set agent spawner (used by parent agents to enable spawning in sub-agents)
236
+ */
237
+ setAgentSpawner(spawner) {
238
+ this.agentSpawner = spawner;
239
+ if (this.worker) {
240
+ this.worker.setAgentSpawner(spawner);
241
+ }
242
+ }
243
+ /**
244
+ * Get agent spawner
245
+ */
246
+ getAgentSpawner() {
247
+ return this.agentSpawner;
248
+ }
156
249
  async saveConversation() {
157
250
  if (!this.conversationManager) {
158
251
  logger.warn('Conversation manager not initialized');