jiva-core 0.2.3 → 0.3.2
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.
- package/.dockerignore +53 -0
- package/.gcloudignore +49 -0
- package/CONTRIBUTING.md +92 -0
- package/Dockerfile +63 -0
- package/README.md +250 -88
- package/cloud-run-deploy.yaml +135 -0
- package/cloud-run.yaml +135 -0
- package/cloud-run.yaml.template +143 -0
- package/deploy.sh +107 -0
- package/dist/core/agent-spawner.d.ts +89 -0
- package/dist/core/agent-spawner.d.ts.map +1 -0
- package/dist/core/agent-spawner.js +208 -0
- package/dist/core/agent-spawner.js.map +1 -0
- package/dist/core/agent.js +1 -1
- package/dist/core/agent.js.map +1 -1
- package/dist/core/client-agent.d.ts +103 -0
- package/dist/core/client-agent.d.ts.map +1 -0
- package/dist/core/client-agent.js +659 -0
- package/dist/core/client-agent.js.map +1 -0
- package/dist/core/config.d.ts +59 -10
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +19 -2
- package/dist/core/config.js.map +1 -1
- package/dist/core/conversation-manager.d.ts +10 -18
- package/dist/core/conversation-manager.d.ts.map +1 -1
- package/dist/core/conversation-manager.js +31 -63
- package/dist/core/conversation-manager.js.map +1 -1
- package/dist/core/dual-agent.d.ts +22 -3
- package/dist/core/dual-agent.d.ts.map +1 -1
- package/dist/core/dual-agent.js +86 -10
- package/dist/core/dual-agent.js.map +1 -1
- package/dist/core/manager-agent.d.ts +16 -1
- package/dist/core/manager-agent.d.ts.map +1 -1
- package/dist/core/manager-agent.js +127 -44
- package/dist/core/manager-agent.js.map +1 -1
- package/dist/core/worker-agent.d.ts +9 -1
- package/dist/core/worker-agent.d.ts.map +1 -1
- package/dist/core/worker-agent.js +169 -14
- package/dist/core/worker-agent.js.map +1 -1
- package/dist/core/workspace.d.ts +5 -0
- package/dist/core/workspace.d.ts.map +1 -1
- package/dist/core/workspace.js +47 -7
- package/dist/core/workspace.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/cli/index.js +349 -42
- package/dist/interfaces/cli/index.js.map +1 -1
- package/dist/interfaces/http/index.d.ts +22 -0
- package/dist/interfaces/http/index.d.ts.map +1 -0
- package/dist/interfaces/http/index.js +135 -0
- package/dist/interfaces/http/index.js.map +1 -0
- package/dist/interfaces/http/middleware/auth.d.ts +32 -0
- package/dist/interfaces/http/middleware/auth.d.ts.map +1 -0
- package/dist/interfaces/http/middleware/auth.js +176 -0
- package/dist/interfaces/http/middleware/auth.js.map +1 -0
- package/dist/interfaces/http/routes/chat.d.ts +7 -0
- package/dist/interfaces/http/routes/chat.d.ts.map +1 -0
- package/dist/interfaces/http/routes/chat.js +144 -0
- package/dist/interfaces/http/routes/chat.js.map +1 -0
- package/dist/interfaces/http/routes/health.d.ts +6 -0
- package/dist/interfaces/http/routes/health.d.ts.map +1 -0
- package/dist/interfaces/http/routes/health.js +25 -0
- package/dist/interfaces/http/routes/health.js.map +1 -0
- package/dist/interfaces/http/routes/session.d.ts +7 -0
- package/dist/interfaces/http/routes/session.d.ts.map +1 -0
- package/dist/interfaces/http/routes/session.js +114 -0
- package/dist/interfaces/http/routes/session.js.map +1 -0
- package/dist/interfaces/http/session-manager.d.ts +76 -0
- package/dist/interfaces/http/session-manager.d.ts.map +1 -0
- package/dist/interfaces/http/session-manager.js +350 -0
- package/dist/interfaces/http/session-manager.js.map +1 -0
- package/dist/interfaces/http/websocket-handler.d.ts +18 -0
- package/dist/interfaces/http/websocket-handler.d.ts.map +1 -0
- package/dist/interfaces/http/websocket-handler.js +146 -0
- package/dist/interfaces/http/websocket-handler.js.map +1 -0
- package/dist/mcp/client.d.ts +11 -2
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +44 -19
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/server-manager.d.ts +1 -1
- package/dist/mcp/server-manager.d.ts.map +1 -1
- package/dist/mcp/server-manager.js +12 -2
- package/dist/mcp/server-manager.js.map +1 -1
- package/dist/models/krutrim.js +1 -1
- package/dist/models/krutrim.js.map +1 -1
- package/dist/personas/index.d.ts +13 -0
- package/dist/personas/index.d.ts.map +1 -0
- package/dist/personas/index.js +13 -0
- package/dist/personas/index.js.map +1 -0
- package/dist/personas/persona-loader.d.ts +30 -0
- package/dist/personas/persona-loader.d.ts.map +1 -0
- package/dist/personas/persona-loader.js +246 -0
- package/dist/personas/persona-loader.js.map +1 -0
- package/dist/personas/persona-manager.d.ts +93 -0
- package/dist/personas/persona-manager.d.ts.map +1 -0
- package/dist/personas/persona-manager.js +268 -0
- package/dist/personas/persona-manager.js.map +1 -0
- package/dist/personas/skill-loader.d.ts +35 -0
- package/dist/personas/skill-loader.d.ts.map +1 -0
- package/dist/personas/skill-loader.js +144 -0
- package/dist/personas/skill-loader.js.map +1 -0
- package/dist/personas/skill-packager.d.ts +25 -0
- package/dist/personas/skill-packager.d.ts.map +1 -0
- package/dist/personas/skill-packager.js +233 -0
- package/dist/personas/skill-packager.js.map +1 -0
- package/dist/personas/types.d.ts +134 -0
- package/dist/personas/types.d.ts.map +1 -0
- package/dist/personas/types.js +7 -0
- package/dist/personas/types.js.map +1 -0
- package/dist/personas/validator.d.ts +22 -0
- package/dist/personas/validator.d.ts.map +1 -0
- package/dist/personas/validator.js +144 -0
- package/dist/personas/validator.js.map +1 -0
- package/dist/storage/factory.d.ts +51 -0
- package/dist/storage/factory.d.ts.map +1 -0
- package/dist/storage/factory.js +154 -0
- package/dist/storage/factory.js.map +1 -0
- package/dist/storage/gcp-bucket-provider.d.ts +60 -0
- package/dist/storage/gcp-bucket-provider.d.ts.map +1 -0
- package/dist/storage/gcp-bucket-provider.js +292 -0
- package/dist/storage/gcp-bucket-provider.js.map +1 -0
- package/dist/storage/index.d.ts +33 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +37 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/local-provider.d.ts +37 -0
- package/dist/storage/local-provider.d.ts.map +1 -0
- package/dist/storage/local-provider.js +228 -0
- package/dist/storage/local-provider.js.map +1 -0
- package/dist/storage/provider.d.ts +142 -0
- package/dist/storage/provider.d.ts.map +1 -0
- package/dist/storage/provider.js +136 -0
- package/dist/storage/provider.js.map +1 -0
- package/dist/storage/types.d.ts +78 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +14 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/utils/logger.d.ts +19 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +49 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/orchestration-logger.d.ts +27 -3
- package/dist/utils/orchestration-logger.d.ts.map +1 -1
- package/dist/utils/orchestration-logger.js +110 -6
- package/dist/utils/orchestration-logger.js.map +1 -1
- package/package.json +30 -2
- package/.fluen/cache/state.json +0 -7
- package/actions/action_registry.py +0 -75
- package/actions/python_coder.py +0 -470
- package/api/main.py +0 -269
package/dist/core/dual-agent.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Dual Agent System - Coordinates Manager and
|
|
2
|
+
* Dual Agent System - Coordinates Manager, Worker, and Client agents
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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';
|
|
10
14
|
import { orchestrationLogger } from '../utils/orchestration-logger.js';
|
|
11
15
|
export class DualAgent {
|
|
@@ -13,10 +17,14 @@ export class DualAgent {
|
|
|
13
17
|
mcpManager;
|
|
14
18
|
workspace;
|
|
15
19
|
conversationManager;
|
|
20
|
+
personaManager;
|
|
21
|
+
agentSpawner = null;
|
|
16
22
|
manager;
|
|
17
23
|
worker;
|
|
24
|
+
client;
|
|
18
25
|
maxSubtasks;
|
|
19
26
|
maxIterations;
|
|
27
|
+
maxAgentDepth;
|
|
20
28
|
autoSave;
|
|
21
29
|
condensingThreshold;
|
|
22
30
|
userConversationHistory = [];
|
|
@@ -25,14 +33,39 @@ export class DualAgent {
|
|
|
25
33
|
this.mcpManager = config.mcpManager;
|
|
26
34
|
this.workspace = config.workspace;
|
|
27
35
|
this.conversationManager = config.conversationManager || null;
|
|
36
|
+
this.personaManager = config.personaManager || null;
|
|
28
37
|
this.maxSubtasks = config.maxSubtasks || 10;
|
|
29
38
|
this.maxIterations = config.maxIterations || 10;
|
|
39
|
+
this.maxAgentDepth = config.maxAgentDepth ?? 1; // Default: only Manager can spawn
|
|
30
40
|
this.autoSave = config.autoSave !== false;
|
|
31
41
|
this.condensingThreshold = config.condensingThreshold || 30;
|
|
32
|
-
// Initialize agents
|
|
33
|
-
this.manager = new ManagerAgent(this.orchestrator, this.workspace);
|
|
34
|
-
this.worker = new WorkerAgent(this.orchestrator, this.mcpManager, this.workspace, this.maxIterations);
|
|
35
|
-
|
|
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
|
+
// Use ephemeral=false for top-level agent's spawner (it should persist)
|
|
52
|
+
// Note: No StorageProvider here - CLI mode uses ConfigManager
|
|
53
|
+
spawnerPersonaManager = new PersonaManager([], false);
|
|
54
|
+
// Note: Not awaiting initialize() here - will be lazy loaded if needed
|
|
55
|
+
}
|
|
56
|
+
this.agentSpawner = new AgentSpawner(this.orchestrator, this.mcpManager, this.workspace, this.conversationManager, spawnerPersonaManager, {
|
|
57
|
+
maxDepth: this.maxAgentDepth,
|
|
58
|
+
currentDepth: 0,
|
|
59
|
+
});
|
|
60
|
+
this.worker.setAgentSpawner(this.agentSpawner);
|
|
61
|
+
logger.info('[*] Three-agent system initialized (Manager + Worker + Client)');
|
|
62
|
+
logger.info(`[*] Agent spawn depth limit: ${this.maxAgentDepth} (${this.maxAgentDepth === 1 ? 'only Manager can spawn' : `${this.maxAgentDepth} levels deep`})`);
|
|
63
|
+
if (this.personaManager) {
|
|
64
|
+
const activePersona = this.personaManager.getActivePersona();
|
|
65
|
+
if (activePersona) {
|
|
66
|
+
logger.info(`[*] Active persona: ${activePersona.manifest.name} (${activePersona.skills.length} skills)`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
36
69
|
}
|
|
37
70
|
/**
|
|
38
71
|
* Process user message using dual-agent architecture
|
|
@@ -85,9 +118,29 @@ export class DualAgent {
|
|
|
85
118
|
subtask,
|
|
86
119
|
result: workerResult.result,
|
|
87
120
|
});
|
|
88
|
-
//
|
|
89
|
-
|
|
90
|
-
|
|
121
|
+
// Client validates Worker's result (adaptive involvement)
|
|
122
|
+
const validation = await this.client.validate(userMessage, plan.subtasks, workerResult);
|
|
123
|
+
if (!validation.approved && validation.nextAction) {
|
|
124
|
+
logger.info(`[Client] Validation failed: ${validation.issues.join(', ')}`);
|
|
125
|
+
logger.info(`[Client] Requesting correction: ${validation.nextAction}`);
|
|
126
|
+
// Deduplicate correction subtasks - don't add the same correction twice
|
|
127
|
+
const normalizedCorrection = validation.nextAction.toLowerCase().trim();
|
|
128
|
+
const isDuplicate = subtasksToExecute.some(existing => existing.toLowerCase().trim() === normalizedCorrection) || results.some(r => r.subtask.toLowerCase().trim() === normalizedCorrection);
|
|
129
|
+
// Add correction subtask (but don't exceed maxSubtasks and avoid duplicates)
|
|
130
|
+
if (isDuplicate) {
|
|
131
|
+
logger.warn(`[Client] Skipping duplicate correction subtask`);
|
|
132
|
+
}
|
|
133
|
+
else if (subtasksToExecute.length < this.maxSubtasks) {
|
|
134
|
+
subtasksToExecute.push(validation.nextAction);
|
|
135
|
+
logger.info(`[Client] Added correction subtask (${subtasksToExecute.length} total)`);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
logger.warn(`[Client] Cannot add correction - maxSubtasks (${this.maxSubtasks}) reached`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else if (validation.approved) {
|
|
142
|
+
logger.info(`[Client] Validation passed (${validation.involvementLevel} level)`);
|
|
143
|
+
}
|
|
91
144
|
}
|
|
92
145
|
orchestrationLogger.logPhaseEnd('EXECUTION', Date.now() - executionStartTime);
|
|
93
146
|
// PHASE 3: Synthesize final response
|
|
@@ -152,6 +205,11 @@ export class DualAgent {
|
|
|
152
205
|
return recent || '';
|
|
153
206
|
}
|
|
154
207
|
async cleanup() {
|
|
208
|
+
logger.info('[DualAgent] Cleaning up...');
|
|
209
|
+
// Cleanup spawned agents
|
|
210
|
+
if (this.agentSpawner) {
|
|
211
|
+
await this.agentSpawner.cleanup();
|
|
212
|
+
}
|
|
155
213
|
await this.mcpManager.cleanup();
|
|
156
214
|
logger.info('[*] Dual-agent system cleaned up');
|
|
157
215
|
}
|
|
@@ -172,6 +230,24 @@ export class DualAgent {
|
|
|
172
230
|
getConversationManager() {
|
|
173
231
|
return this.conversationManager;
|
|
174
232
|
}
|
|
233
|
+
getPersonaManager() {
|
|
234
|
+
return this.personaManager;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Set agent spawner (used by parent agents to enable spawning in sub-agents)
|
|
238
|
+
*/
|
|
239
|
+
setAgentSpawner(spawner) {
|
|
240
|
+
this.agentSpawner = spawner;
|
|
241
|
+
if (this.worker) {
|
|
242
|
+
this.worker.setAgentSpawner(spawner);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Get agent spawner
|
|
247
|
+
*/
|
|
248
|
+
getAgentSpawner() {
|
|
249
|
+
return this.agentSpawner;
|
|
250
|
+
}
|
|
175
251
|
async saveConversation() {
|
|
176
252
|
if (!this.conversationManager) {
|
|
177
253
|
logger.warn('Conversation manager not initialized');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dual-agent.js","sourceRoot":"","sources":["../../src/core/dual-agent.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dual-agent.js","sourceRoot":"","sources":["../../src/core/dual-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { ModelOrchestrator } from '../models/orchestrator.js';
|
|
13
13
|
import { WorkspaceManager } from './workspace.js';
|
|
14
|
+
import { PersonaManager } from '../personas/persona-manager.js';
|
|
14
15
|
import { Message } from '../models/base.js';
|
|
15
16
|
export interface ManagerTask {
|
|
16
17
|
userRequest: string;
|
|
@@ -28,8 +29,9 @@ export interface ManagerDecision {
|
|
|
28
29
|
export declare class ManagerAgent {
|
|
29
30
|
private orchestrator;
|
|
30
31
|
private workspace;
|
|
32
|
+
private personaManager?;
|
|
31
33
|
private conversationHistory;
|
|
32
|
-
constructor(orchestrator: ModelOrchestrator, workspace: WorkspaceManager);
|
|
34
|
+
constructor(orchestrator: ModelOrchestrator, workspace: WorkspaceManager, personaManager?: PersonaManager);
|
|
33
35
|
private initializeSystemPrompt;
|
|
34
36
|
/**
|
|
35
37
|
* Create a plan for handling the user's request
|
|
@@ -46,6 +48,19 @@ export declare class ManagerAgent {
|
|
|
46
48
|
subtask: string;
|
|
47
49
|
result: string;
|
|
48
50
|
}[]): Promise<string>;
|
|
51
|
+
/**
|
|
52
|
+
* Parse a JSON plan from LLM output. Extracts the first JSON object found.
|
|
53
|
+
*/
|
|
54
|
+
private parseJsonPlan;
|
|
55
|
+
/**
|
|
56
|
+
* Fallback: use LLM to clean a raw plan response into valid JSON
|
|
57
|
+
*/
|
|
58
|
+
private cleanPlanWithLLM;
|
|
59
|
+
/**
|
|
60
|
+
* Validate that each subtask is a reasonable, actionable instruction.
|
|
61
|
+
* Removes garbage entries like separators, prose fragments, or empty strings.
|
|
62
|
+
*/
|
|
63
|
+
private validateSubtasks;
|
|
49
64
|
private extractSection;
|
|
50
65
|
getConversationHistory(): Message[];
|
|
51
66
|
resetConversation(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager-agent.d.ts","sourceRoot":"","sources":["../../src/core/manager-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAI5C,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,mBAAmB,CAAiB;gBAEhC,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"manager-agent.d.ts","sourceRoot":"","sources":["../../src/core/manager-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAI5C,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,mBAAmB,CAAiB;gBAEhC,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,CAAC,EAAE,cAAc;IAgBzG,OAAO,CAAC,sBAAsB;IA6C9B;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IA4EzD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAoDpF;;OAEG;IACG,kBAAkB,CAAC,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAgC5F;;OAEG;IACH,OAAO,CAAC,aAAa;IAkBrB;;OAEG;YACW,gBAAgB;IAmC9B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,cAAc;IAMtB,sBAAsB,IAAI,OAAO,EAAE;IAInC,iBAAiB;CAIlB"}
|
|
@@ -14,14 +14,24 @@ import { orchestrationLogger } from '../utils/orchestration-logger.js';
|
|
|
14
14
|
export class ManagerAgent {
|
|
15
15
|
orchestrator;
|
|
16
16
|
workspace;
|
|
17
|
+
personaManager;
|
|
17
18
|
conversationHistory = [];
|
|
18
|
-
constructor(orchestrator, workspace) {
|
|
19
|
+
constructor(orchestrator, workspace, personaManager) {
|
|
19
20
|
this.orchestrator = orchestrator;
|
|
20
21
|
this.workspace = workspace;
|
|
22
|
+
this.personaManager = personaManager;
|
|
23
|
+
// Set persona context for logging
|
|
24
|
+
if (personaManager) {
|
|
25
|
+
const activePersona = personaManager.getActivePersona();
|
|
26
|
+
if (activePersona) {
|
|
27
|
+
logger.setPersonaContext(activePersona.manifest.name);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
21
30
|
this.initializeSystemPrompt();
|
|
22
31
|
}
|
|
23
32
|
initializeSystemPrompt() {
|
|
24
33
|
const directivePrompt = this.workspace.getDirectivePrompt();
|
|
34
|
+
const personaPrompt = this.personaManager?.getSystemPromptAddition() || '';
|
|
25
35
|
let systemContent = `You are the Manager Agent in a two-agent system.
|
|
26
36
|
|
|
27
37
|
ROLE:
|
|
@@ -48,6 +58,9 @@ IMPORTANT:
|
|
|
48
58
|
- Review Worker results critically
|
|
49
59
|
- Only mark complete when user's request is fully satisfied
|
|
50
60
|
`;
|
|
61
|
+
if (personaPrompt) {
|
|
62
|
+
systemContent += `\n${personaPrompt}\n`;
|
|
63
|
+
}
|
|
51
64
|
if (directivePrompt) {
|
|
52
65
|
systemContent += `\n${directivePrompt}`;
|
|
53
66
|
}
|
|
@@ -73,65 +86,57 @@ CRITICAL - Subtask Granularity:
|
|
|
73
86
|
- For information gathering: 1-2 subtasks maximum
|
|
74
87
|
- Only create separate subtasks when they are truly independent or sequential dependencies exist
|
|
75
88
|
|
|
76
|
-
Examples:
|
|
77
|
-
BAD
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
- Test in browser
|
|
83
|
-
(This should be 1 subtask: "Create calculator app as calc.html")
|
|
84
|
-
|
|
85
|
-
GOOD (appropriate level):
|
|
86
|
-
- Create the calculator application
|
|
87
|
-
- Refine based on user feedback (if needed)
|
|
88
|
-
|
|
89
|
-
BAD (too granular):
|
|
90
|
-
- List directory contents
|
|
91
|
-
- Read package.json
|
|
92
|
-
- Identify dependencies
|
|
93
|
-
- Format output
|
|
94
|
-
(This should be 1 subtask: "List and analyze project dependencies")
|
|
95
|
-
|
|
96
|
-
GOOD (appropriate level):
|
|
97
|
-
- Analyze project dependencies and structure
|
|
89
|
+
Examples of GOOD vs BAD:
|
|
90
|
+
BAD: 5 granular steps like "Create HTML structure", "Add CSS", "Add JS", "Test"
|
|
91
|
+
GOOD: 1 subtask: "Create the calculator application as calc.html"
|
|
92
|
+
|
|
93
|
+
BAD: "List directory contents", "Read package.json", "Identify dependencies"
|
|
94
|
+
GOOD: 1 subtask: "Analyze project dependencies and structure"
|
|
98
95
|
|
|
99
96
|
Guidelines:
|
|
100
97
|
- Don't create subtasks for clarifying requirements - Worker can ask if needed
|
|
101
98
|
- Don't create subtasks for implementation details (styling, specific code structure)
|
|
102
99
|
- Don't create separate "test" or "verify" subtasks - Worker does this naturally
|
|
103
100
|
- Trust Worker to handle file operations, error checking, and iteration
|
|
101
|
+
- Each subtask MUST be a clear, actionable instruction - NOT prose, advice, or explanation
|
|
104
102
|
|
|
105
|
-
Respond in this format:
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
103
|
+
Respond ONLY with valid JSON in this exact format (no other text before or after):
|
|
104
|
+
{
|
|
105
|
+
"reasoning": "<brief explanation of your high-level approach>",
|
|
106
|
+
"subtasks": [
|
|
107
|
+
"<subtask 1 - a clear, actionable instruction>",
|
|
108
|
+
"<subtask 2 - only if truly necessary>"
|
|
109
|
+
]
|
|
110
|
+
}`;
|
|
111
111
|
this.conversationHistory.push({
|
|
112
112
|
role: 'user',
|
|
113
113
|
content: planPrompt,
|
|
114
114
|
});
|
|
115
115
|
const response = await this.orchestrator.chat({
|
|
116
116
|
messages: this.conversationHistory,
|
|
117
|
-
temperature: 0.
|
|
117
|
+
temperature: 0.1, // Low temperature for deterministic planning
|
|
118
118
|
});
|
|
119
119
|
this.conversationHistory.push({
|
|
120
120
|
role: 'assistant',
|
|
121
121
|
content: response.content,
|
|
122
122
|
});
|
|
123
|
-
// Parse response
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
123
|
+
// Parse JSON response with fallback
|
|
124
|
+
let plan;
|
|
125
|
+
try {
|
|
126
|
+
plan = this.parseJsonPlan(response.content);
|
|
127
|
+
}
|
|
128
|
+
catch (parseError) {
|
|
129
|
+
// Fallback: ask LLM to clean the raw output into valid JSON
|
|
130
|
+
logger.warn('[Manager] Failed to parse plan JSON, attempting LLM cleanup');
|
|
131
|
+
plan = await this.cleanPlanWithLLM(response.content);
|
|
132
|
+
}
|
|
133
|
+
// Validate subtasks - filter out garbage entries
|
|
134
|
+
plan.subtasks = this.validateSubtasks(plan.subtasks);
|
|
135
|
+
logger.info(`[Manager] Reasoning: ${plan.reasoning}`);
|
|
136
|
+
logger.info(`[Manager] Plan: ${plan.subtasks.length} subtasks`);
|
|
137
|
+
plan.subtasks.forEach((task, i) => logger.info(` ${i + 1}. ${task}`));
|
|
138
|
+
orchestrationLogger.logManagerPlanCreated(plan.subtasks, plan.reasoning);
|
|
139
|
+
return { subtasks: plan.subtasks, reasoning: plan.reasoning };
|
|
135
140
|
}
|
|
136
141
|
/**
|
|
137
142
|
* Review Worker's results and decide next action
|
|
@@ -160,7 +165,7 @@ NEXT_ACTION: <what to do next, if CONTINUE>`;
|
|
|
160
165
|
});
|
|
161
166
|
const response = await this.orchestrator.chat({
|
|
162
167
|
messages: this.conversationHistory,
|
|
163
|
-
temperature: 0.
|
|
168
|
+
temperature: 0.1, // Low temperature for deterministic decisions
|
|
164
169
|
});
|
|
165
170
|
this.conversationHistory.push({
|
|
166
171
|
role: 'assistant',
|
|
@@ -198,7 +203,7 @@ Present information clearly with relevant details, code snippets, or examples as
|
|
|
198
203
|
});
|
|
199
204
|
const response = await this.orchestrator.chat({
|
|
200
205
|
messages: this.conversationHistory,
|
|
201
|
-
temperature: 0.
|
|
206
|
+
temperature: 0.1, // Low temperature for deterministic synthesis
|
|
202
207
|
});
|
|
203
208
|
this.conversationHistory.push({
|
|
204
209
|
role: 'assistant',
|
|
@@ -207,6 +212,84 @@ Present information clearly with relevant details, code snippets, or examples as
|
|
|
207
212
|
logger.info('[Manager] Final response created');
|
|
208
213
|
return response.content;
|
|
209
214
|
}
|
|
215
|
+
/**
|
|
216
|
+
* Parse a JSON plan from LLM output. Extracts the first JSON object found.
|
|
217
|
+
*/
|
|
218
|
+
parseJsonPlan(content) {
|
|
219
|
+
const jsonMatch = content.match(/\{[\s\S]*\}/);
|
|
220
|
+
if (!jsonMatch) {
|
|
221
|
+
throw new Error('No JSON object found in response');
|
|
222
|
+
}
|
|
223
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
224
|
+
if (!parsed.subtasks || !Array.isArray(parsed.subtasks) || parsed.subtasks.length === 0) {
|
|
225
|
+
throw new Error('Invalid plan structure: missing or empty subtasks array');
|
|
226
|
+
}
|
|
227
|
+
return {
|
|
228
|
+
reasoning: parsed.reasoning || '',
|
|
229
|
+
subtasks: parsed.subtasks.map((s) => String(s)),
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Fallback: use LLM to clean a raw plan response into valid JSON
|
|
234
|
+
*/
|
|
235
|
+
async cleanPlanWithLLM(rawContent) {
|
|
236
|
+
const cleanupPrompt = `The following text is a plan that should have been JSON but was not properly formatted.
|
|
237
|
+
Extract the reasoning and actionable subtasks from it and return valid JSON.
|
|
238
|
+
Ignore any prose, markdown separators, advice paragraphs, or non-actionable content.
|
|
239
|
+
Only include entries that are clear, actionable task instructions.
|
|
240
|
+
|
|
241
|
+
Raw text:
|
|
242
|
+
${rawContent}
|
|
243
|
+
|
|
244
|
+
Return ONLY valid JSON in this exact format (no other text):
|
|
245
|
+
{
|
|
246
|
+
"reasoning": "<the reasoning extracted from the text>",
|
|
247
|
+
"subtasks": ["<subtask 1>", "<subtask 2>"]
|
|
248
|
+
}`;
|
|
249
|
+
try {
|
|
250
|
+
const cleanupResponse = await this.orchestrator.chat({
|
|
251
|
+
messages: [
|
|
252
|
+
{ role: 'system', content: 'You are a JSON formatting assistant. Return only valid JSON.' },
|
|
253
|
+
{ role: 'user', content: cleanupPrompt },
|
|
254
|
+
],
|
|
255
|
+
temperature: 0.1,
|
|
256
|
+
});
|
|
257
|
+
return this.parseJsonPlan(cleanupResponse.content);
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
// Ultimate fallback: treat the entire raw content as a single subtask
|
|
261
|
+
logger.error('[Manager] LLM cleanup also failed, using raw content as single subtask');
|
|
262
|
+
return {
|
|
263
|
+
reasoning: 'Plan parsing failed - executing as single task',
|
|
264
|
+
subtasks: [rawContent.substring(0, 500).trim()],
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Validate that each subtask is a reasonable, actionable instruction.
|
|
270
|
+
* Removes garbage entries like separators, prose fragments, or empty strings.
|
|
271
|
+
*/
|
|
272
|
+
validateSubtasks(subtasks) {
|
|
273
|
+
const validated = subtasks.filter(task => {
|
|
274
|
+
const trimmed = task.trim();
|
|
275
|
+
// Reject empty or too-short entries
|
|
276
|
+
if (trimmed.length < 5)
|
|
277
|
+
return false;
|
|
278
|
+
// Reject markdown separators (---, ===, ***)
|
|
279
|
+
if (/^[-=*]{2,}$/.test(trimmed))
|
|
280
|
+
return false;
|
|
281
|
+
// Reject entries that are just punctuation/symbols
|
|
282
|
+
if (/^[^a-zA-Z0-9]*$/.test(trimmed))
|
|
283
|
+
return false;
|
|
284
|
+
return true;
|
|
285
|
+
});
|
|
286
|
+
// Ensure at least one subtask
|
|
287
|
+
if (validated.length === 0) {
|
|
288
|
+
logger.warn('[Manager] All subtasks filtered out, preserving first original');
|
|
289
|
+
return subtasks.length > 0 ? [subtasks[0]] : ['Complete the user request'];
|
|
290
|
+
}
|
|
291
|
+
return validated;
|
|
292
|
+
}
|
|
210
293
|
extractSection(content, sectionName) {
|
|
211
294
|
const regex = new RegExp(`${sectionName}:?\\s*([\\s\\S]*?)(?=\\n[A-Z_]+:|$)`, 'i');
|
|
212
295
|
const match = content.match(regex);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager-agent.js","sourceRoot":"","sources":["../../src/core/manager-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"manager-agent.js","sourceRoot":"","sources":["../../src/core/manager-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
import { ModelOrchestrator } from '../models/orchestrator.js';
|
|
11
11
|
import { MCPServerManager } from '../mcp/server-manager.js';
|
|
12
12
|
import { WorkspaceManager } from './workspace.js';
|
|
13
|
+
import { PersonaManager } from '../personas/persona-manager.js';
|
|
14
|
+
import { AgentSpawner } from './agent-spawner.js';
|
|
13
15
|
export interface WorkerSubtask {
|
|
14
16
|
instruction: string;
|
|
15
17
|
context?: string;
|
|
@@ -24,9 +26,15 @@ export declare class WorkerAgent {
|
|
|
24
26
|
private orchestrator;
|
|
25
27
|
private mcpManager;
|
|
26
28
|
private workspace;
|
|
29
|
+
private personaManager?;
|
|
30
|
+
private agentSpawner?;
|
|
27
31
|
private maxIterations;
|
|
28
32
|
private contextMemory;
|
|
29
|
-
constructor(orchestrator: ModelOrchestrator, mcpManager: MCPServerManager, workspace: WorkspaceManager, maxIterations?: number);
|
|
33
|
+
constructor(orchestrator: ModelOrchestrator, mcpManager: MCPServerManager, workspace: WorkspaceManager, maxIterations?: number, personaManager?: PersonaManager);
|
|
34
|
+
/**
|
|
35
|
+
* Set agent spawner (enables sub-agent spawning)
|
|
36
|
+
*/
|
|
37
|
+
setAgentSpawner(spawner: AgentSpawner): void;
|
|
30
38
|
/**
|
|
31
39
|
* Execute a subtask assigned by Manager
|
|
32
40
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-agent.d.ts","sourceRoot":"","sources":["../../src/core/worker-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAsBlD,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAsB;gBAGzC,YAAY,EAAE,iBAAiB,EAC/B,UAAU,EAAE,gBAAgB,EAC5B,SAAS,EAAE,gBAAgB,EAC3B,aAAa,GAAE,MAAU;
|
|
1
|
+
{"version":3,"file":"worker-agent.d.ts","sourceRoot":"","sources":["../../src/core/worker-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;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,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAsBlD,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,YAAY,CAAC,CAAe;IACpC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAsB;gBAGzC,YAAY,EAAE,iBAAiB,EAC/B,UAAU,EAAE,gBAAgB,EAC5B,SAAS,EAAE,gBAAgB,EAC3B,aAAa,GAAE,MAAU,EACzB,cAAc,CAAC,EAAE,cAAc;IAqBjC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAI5C;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAwYnE,OAAO,CAAC,gBAAgB;IAMxB;;;OAGG;IACH,OAAO,CAAC,yBAAyB;CAuDlC"}
|