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
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Spawner - Manages hierarchical sub-agent spawning with personas
|
|
3
|
+
*
|
|
4
|
+
* Enables a parent agent to spawn child agents with specific personas,
|
|
5
|
+
* creating a multi-agent collaboration system for complex tasks.
|
|
6
|
+
*
|
|
7
|
+
* Example: An "engineering-manager" persona can spawn:
|
|
8
|
+
* - "code-reviewer" agent to review code
|
|
9
|
+
* - "developer" agent to implement features
|
|
10
|
+
* - "tester" agent to write tests
|
|
11
|
+
*/
|
|
12
|
+
import { DualAgent } from './dual-agent.js';
|
|
13
|
+
import { PersonaManager } from '../personas/persona-manager.js';
|
|
14
|
+
import { logger } from '../utils/logger.js';
|
|
15
|
+
export class AgentSpawner {
|
|
16
|
+
agents = new Map();
|
|
17
|
+
orchestrator;
|
|
18
|
+
mcpManager;
|
|
19
|
+
workspace;
|
|
20
|
+
conversationManager;
|
|
21
|
+
basePersonaManager;
|
|
22
|
+
parentAgentId;
|
|
23
|
+
maxDepth;
|
|
24
|
+
currentDepth;
|
|
25
|
+
constructor(orchestrator, mcpManager, workspace, conversationManager, basePersonaManager, options) {
|
|
26
|
+
this.orchestrator = orchestrator;
|
|
27
|
+
this.mcpManager = mcpManager;
|
|
28
|
+
this.workspace = workspace;
|
|
29
|
+
this.conversationManager = conversationManager;
|
|
30
|
+
this.basePersonaManager = basePersonaManager;
|
|
31
|
+
this.parentAgentId = options?.parentAgentId;
|
|
32
|
+
this.maxDepth = options?.maxDepth || 1; // Default: only top-level can spawn
|
|
33
|
+
this.currentDepth = options?.currentDepth || 0;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Check if agent spawning is allowed at current depth
|
|
37
|
+
*/
|
|
38
|
+
canSpawnMore() {
|
|
39
|
+
return this.currentDepth < this.maxDepth;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get current depth level
|
|
43
|
+
*/
|
|
44
|
+
getCurrentDepth() {
|
|
45
|
+
return this.currentDepth;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get maximum depth
|
|
49
|
+
*/
|
|
50
|
+
getMaxDepth() {
|
|
51
|
+
return this.maxDepth;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Spawn a sub-agent with a specific persona
|
|
55
|
+
*/
|
|
56
|
+
async spawnAgent(request) {
|
|
57
|
+
// Check depth limit
|
|
58
|
+
if (this.currentDepth >= this.maxDepth) {
|
|
59
|
+
throw new Error(`Maximum agent depth (${this.maxDepth}) reached. Cannot spawn more sub-agents.`);
|
|
60
|
+
}
|
|
61
|
+
// Ensure PersonaManager is initialized
|
|
62
|
+
if (this.basePersonaManager.getPersonas().length === 0) {
|
|
63
|
+
logger.info('[AgentSpawner] PersonaManager not initialized, initializing now...');
|
|
64
|
+
await this.basePersonaManager.initialize();
|
|
65
|
+
}
|
|
66
|
+
// Validate persona exists
|
|
67
|
+
const availablePersonas = this.basePersonaManager.getPersonas();
|
|
68
|
+
if (availablePersonas.length === 0) {
|
|
69
|
+
throw new Error(`No personas available. Please install personas in ~/.jiva/personas/ or activate one with 'jiva persona activate <name>'`);
|
|
70
|
+
}
|
|
71
|
+
const personaExists = availablePersonas.some((p) => p.manifest.name === request.persona);
|
|
72
|
+
if (!personaExists) {
|
|
73
|
+
throw new Error(`Persona '${request.persona}' not found. Available personas: ${availablePersonas.map((p) => p.manifest.name).join(', ')}`);
|
|
74
|
+
}
|
|
75
|
+
const agentId = `agent-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
76
|
+
logger.info(`[AgentSpawner] Spawning sub-agent with persona: ${request.persona}`);
|
|
77
|
+
logger.info(`[AgentSpawner] Task: ${request.task}`);
|
|
78
|
+
logger.info(`[AgentSpawner] Depth: ${this.currentDepth + 1}/${this.maxDepth}`);
|
|
79
|
+
try {
|
|
80
|
+
// Create an ephemeral PersonaManager for the sub-agent
|
|
81
|
+
// Ephemeral = true means it won't persist persona to global config
|
|
82
|
+
const subPersonaManager = new PersonaManager([], true);
|
|
83
|
+
await subPersonaManager.initialize();
|
|
84
|
+
// Activate the requested persona (ephemeral, won't overwrite parent's persona)
|
|
85
|
+
await subPersonaManager.activatePersona(request.persona);
|
|
86
|
+
logger.success(`[AgentSpawner] Activated ephemeral persona: ${request.persona}`);
|
|
87
|
+
// Merge persona MCP servers
|
|
88
|
+
const personaMCPServers = subPersonaManager.getPersonaMCPServers();
|
|
89
|
+
if (Object.keys(personaMCPServers).length > 0) {
|
|
90
|
+
logger.info(`[AgentSpawner] Loading ${Object.keys(personaMCPServers).length} MCP servers from persona`);
|
|
91
|
+
for (const [name, config] of Object.entries(personaMCPServers)) {
|
|
92
|
+
try {
|
|
93
|
+
await this.mcpManager.addServer(name, config);
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
// Server might already exist from parent, that's ok
|
|
97
|
+
logger.debug(`[AgentSpawner] MCP server '${name}' already exists or failed to add`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Create sub-agent with persona and nested spawner
|
|
102
|
+
const subSpawner = new AgentSpawner(this.orchestrator, this.mcpManager, this.workspace, this.conversationManager, this.basePersonaManager, {
|
|
103
|
+
parentAgentId: agentId,
|
|
104
|
+
maxDepth: this.maxDepth,
|
|
105
|
+
currentDepth: this.currentDepth + 1,
|
|
106
|
+
});
|
|
107
|
+
const subAgentConfig = {
|
|
108
|
+
orchestrator: this.orchestrator,
|
|
109
|
+
mcpManager: this.mcpManager,
|
|
110
|
+
workspace: this.workspace,
|
|
111
|
+
conversationManager: this.conversationManager || undefined,
|
|
112
|
+
personaManager: subPersonaManager,
|
|
113
|
+
maxSubtasks: 20,
|
|
114
|
+
maxIterations: request.maxIterations || 10,
|
|
115
|
+
maxAgentDepth: this.maxDepth, // Inherit parent's max depth limit
|
|
116
|
+
autoSave: false, // Sub-agents don't auto-save
|
|
117
|
+
};
|
|
118
|
+
const subAgent = new DualAgent(subAgentConfig);
|
|
119
|
+
// Override with the nested spawner (which has currentDepth + 1)
|
|
120
|
+
subAgent.setAgentSpawner(subSpawner);
|
|
121
|
+
// Track the spawned agent
|
|
122
|
+
const spawnedAgent = {
|
|
123
|
+
id: agentId,
|
|
124
|
+
persona: request.persona,
|
|
125
|
+
agent: subAgent,
|
|
126
|
+
parentId: this.parentAgentId,
|
|
127
|
+
createdAt: new Date(),
|
|
128
|
+
messageCount: 0,
|
|
129
|
+
status: 'active',
|
|
130
|
+
};
|
|
131
|
+
this.agents.set(agentId, spawnedAgent);
|
|
132
|
+
// Prepare task message with context
|
|
133
|
+
// IMPORTANT: Always include workspace path for sub-agents
|
|
134
|
+
const workspacePath = this.workspace.getWorkspaceDir();
|
|
135
|
+
let contextSection = `Project root: ${workspacePath}`;
|
|
136
|
+
if (request.context) {
|
|
137
|
+
contextSection += `\n${request.context}`;
|
|
138
|
+
}
|
|
139
|
+
const taskMessage = `CONTEXT:\n${contextSection}\n\nTASK:\n${request.task}`;
|
|
140
|
+
// Save parent's persona context and set sub-agent's persona for logging
|
|
141
|
+
const parentPersonaContext = logger.getPersonaContext();
|
|
142
|
+
try {
|
|
143
|
+
logger.setPersonaContext(request.persona);
|
|
144
|
+
// Execute the task
|
|
145
|
+
logger.info(`[AgentSpawner] Executing task with sub-agent...`);
|
|
146
|
+
const response = await subAgent.chat(taskMessage);
|
|
147
|
+
// Update agent status
|
|
148
|
+
spawnedAgent.messageCount = 1;
|
|
149
|
+
spawnedAgent.status = 'completed';
|
|
150
|
+
spawnedAgent.result = response.content;
|
|
151
|
+
logger.success(`[AgentSpawner] Sub-agent completed task (${response.iterations} iterations)`);
|
|
152
|
+
return {
|
|
153
|
+
agentId,
|
|
154
|
+
persona: request.persona,
|
|
155
|
+
result: response.content,
|
|
156
|
+
iterations: response.iterations,
|
|
157
|
+
toolsUsed: response.toolsUsed,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
finally {
|
|
161
|
+
// Always restore parent's persona context
|
|
162
|
+
logger.setPersonaContext(parentPersonaContext);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
logger.error(`[AgentSpawner] Sub-agent failed:`, error);
|
|
167
|
+
const agent = this.agents.get(agentId);
|
|
168
|
+
if (agent) {
|
|
169
|
+
agent.status = 'failed';
|
|
170
|
+
agent.result = error instanceof Error ? error.message : String(error);
|
|
171
|
+
}
|
|
172
|
+
throw error;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Get information about a spawned agent
|
|
177
|
+
*/
|
|
178
|
+
getAgent(agentId) {
|
|
179
|
+
return this.agents.get(agentId);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* List all spawned agents
|
|
183
|
+
*/
|
|
184
|
+
listAgents() {
|
|
185
|
+
return Array.from(this.agents.values());
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Get available personas that can be spawned
|
|
189
|
+
*/
|
|
190
|
+
getAvailablePersonas() {
|
|
191
|
+
return this.basePersonaManager.getPersonas().map((p) => p.manifest.name);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Cleanup all spawned agents
|
|
195
|
+
*/
|
|
196
|
+
async cleanup() {
|
|
197
|
+
for (const [agentId, spawnedAgent] of this.agents.entries()) {
|
|
198
|
+
try {
|
|
199
|
+
await spawnedAgent.agent.cleanup();
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
logger.warn(`[AgentSpawner] Failed to cleanup agent ${agentId}:`, error);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
this.agents.clear();
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=agent-spawner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-spawner.js","sourceRoot":"","sources":["../../src/core/agent-spawner.ts"],"names":[],"mappings":"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"}
|
package/dist/core/agent.js
CHANGED
|
@@ -24,7 +24,7 @@ export class JivaAgent {
|
|
|
24
24
|
this.workspace = config.workspace;
|
|
25
25
|
this.conversationManager = config.conversationManager || null;
|
|
26
26
|
this.maxIterations = config.maxIterations || 10;
|
|
27
|
-
this.temperature = config.temperature || 0.
|
|
27
|
+
this.temperature = config.temperature || 0.2; // Lower default to reduce hallucination
|
|
28
28
|
this.autoSave = config.autoSave !== false; // Default true
|
|
29
29
|
this.condensingThreshold = config.condensingThreshold || 30;
|
|
30
30
|
this.initializeSystemPrompt();
|
package/dist/core/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAmB/C,MAAM,OAAO,SAAS;IACZ,YAAY,CAAoB;IAChC,UAAU,CAAmB;IAC7B,SAAS,CAAmB;IAC5B,mBAAmB,CAA6B;IAChD,aAAa,CAAS;IACtB,WAAW,CAAS;IACpB,mBAAmB,GAAc,EAAE,CAAC;IACpC,QAAQ,CAAU;IAClB,mBAAmB,CAAS;IAC5B,oBAAoB,GAAW,EAAE,CAAC,CAAC,iDAAiD;IAE5F,YAAY,MAAmB;QAC7B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,IAAI,CAAC;QAC9D,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client Agent - Adaptive validation and quality control
|
|
3
|
+
*
|
|
4
|
+
* Acts as user advocate, validating that Manager/Worker actually deliver
|
|
5
|
+
* what the user requested. Uses tiered involvement levels to minimize cost:
|
|
6
|
+
*
|
|
7
|
+
* - MINIMAL: Info requests, simple queries → metadata validation only
|
|
8
|
+
* BUT: Detects unjustified failures and escalates to STANDARD
|
|
9
|
+
* - STANDARD: Creation requests → file existence + basic validation
|
|
10
|
+
* - THOROUGH: Complex/testing requests OR failures → full E2E validation with tools
|
|
11
|
+
*/
|
|
12
|
+
import { ModelOrchestrator } from '../models/orchestrator.js';
|
|
13
|
+
import { MCPServerManager } from '../mcp/server-manager.js';
|
|
14
|
+
import { WorkerResult } from './worker-agent.js';
|
|
15
|
+
export declare enum InvolvementLevel {
|
|
16
|
+
MINIMAL = "minimal",// Metadata only, no tools
|
|
17
|
+
STANDARD = "standard",// Basic validation with read tools
|
|
18
|
+
THOROUGH = "thorough"
|
|
19
|
+
}
|
|
20
|
+
export interface Requirement {
|
|
21
|
+
type: 'file_creation' | 'file_modification' | 'testing' | 'verification' | 'information' | 'other';
|
|
22
|
+
description: string;
|
|
23
|
+
filePath?: string;
|
|
24
|
+
mustUseTools?: string[];
|
|
25
|
+
}
|
|
26
|
+
export interface ValidationResult {
|
|
27
|
+
approved: boolean;
|
|
28
|
+
requirementsMet: boolean;
|
|
29
|
+
issues: string[];
|
|
30
|
+
nextAction?: string;
|
|
31
|
+
involvementLevel: InvolvementLevel;
|
|
32
|
+
}
|
|
33
|
+
export declare class ClientAgent {
|
|
34
|
+
private orchestrator;
|
|
35
|
+
private mcpManager;
|
|
36
|
+
private mcpClient;
|
|
37
|
+
private failureCount;
|
|
38
|
+
private readonly ALLOWED_TOOLS;
|
|
39
|
+
constructor(orchestrator: ModelOrchestrator, mcpManager: MCPServerManager);
|
|
40
|
+
/**
|
|
41
|
+
* Use LLM to analyze the task and determine involvement level + requirements.
|
|
42
|
+
* Replaces keyword-based determineInvolvementLevel() and parseRequirements()
|
|
43
|
+
* with semantic understanding that avoids false positives.
|
|
44
|
+
*/
|
|
45
|
+
private analyzeTaskRequirements;
|
|
46
|
+
/**
|
|
47
|
+
* @deprecated Use analyzeTaskRequirements() instead. Kept for reference.
|
|
48
|
+
* Determine involvement level based on user request complexity
|
|
49
|
+
*/
|
|
50
|
+
determineInvolvementLevel(userMessage: string, subtasks: string[]): InvolvementLevel;
|
|
51
|
+
/**
|
|
52
|
+
* @deprecated Use analyzeTaskRequirements() instead. Kept for reference.
|
|
53
|
+
* Parse requirements from user message
|
|
54
|
+
*/
|
|
55
|
+
parseRequirements(userMessage: string, subtasks: string[]): Requirement[];
|
|
56
|
+
/**
|
|
57
|
+
* Validate Worker's work at appropriate involvement level
|
|
58
|
+
*/
|
|
59
|
+
validate(userMessage: string, subtasks: string[], workerResult: WorkerResult, involvementLevel?: InvolvementLevel): Promise<ValidationResult>;
|
|
60
|
+
/**
|
|
61
|
+
* Use LLM to analyze worker result for unjustified failure claims
|
|
62
|
+
* This is language-agnostic and captures semantic meaning
|
|
63
|
+
*/
|
|
64
|
+
private analyzeForUnjustifiedFailure;
|
|
65
|
+
/**
|
|
66
|
+
* Use LLM to cross-check the Worker's result claims against its actual tool usage.
|
|
67
|
+
* Catches hallucinated accomplishments — e.g., Worker claims "I inspected all source files
|
|
68
|
+
* and found no bugs" but only used list_directory and never read a single file.
|
|
69
|
+
* This runs at ALL involvement levels including MINIMAL.
|
|
70
|
+
*/
|
|
71
|
+
private analyzeResultCoherence;
|
|
72
|
+
/**
|
|
73
|
+
* Layer 1: Process Validation (metadata only, no tools)
|
|
74
|
+
*/
|
|
75
|
+
private validateProcess;
|
|
76
|
+
/**
|
|
77
|
+
* Layer 2: Outcome Validation (uses read-only tools)
|
|
78
|
+
*/
|
|
79
|
+
private validateOutcome;
|
|
80
|
+
/**
|
|
81
|
+
* Check if file exists using read tool
|
|
82
|
+
*/
|
|
83
|
+
private fileExists;
|
|
84
|
+
/**
|
|
85
|
+
* Use LLM to generate an actionable correction instruction from raw validation issues.
|
|
86
|
+
* Instead of echoing "requires using playwright__ but Worker did not use these tools",
|
|
87
|
+
* produces something like "Use the filesystem tools to list ~/Library/Caches and report sizes".
|
|
88
|
+
*/
|
|
89
|
+
private generateCorrectionInstruction;
|
|
90
|
+
/**
|
|
91
|
+
* Validate file contents for common issues
|
|
92
|
+
*/
|
|
93
|
+
private validateFileContents;
|
|
94
|
+
/**
|
|
95
|
+
* Validate HTML file in browser
|
|
96
|
+
*/
|
|
97
|
+
private validateInBrowser;
|
|
98
|
+
/**
|
|
99
|
+
* Reset failure tracking (for new conversation/session)
|
|
100
|
+
*/
|
|
101
|
+
resetFailureTracking(): void;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=client-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-agent.d.ts","sourceRoot":"","sources":["../../src/core/client-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAgBjD,oBAAY,gBAAgB;IAC1B,OAAO,YAAY,CAAM,0BAA0B;IACnD,QAAQ,aAAa,CAAI,mCAAmC;IAC5D,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,GAAG,mBAAmB,GAAG,SAAS,GAAG,cAAc,GAAG,aAAa,GAAG,OAAO,CAAC;IACnG,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,YAAY,CAAa;IAGjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAS5B;gBAEU,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,gBAAgB;IAMzE;;;;OAIG;YACW,uBAAuB;IA+GrC;;;OAGG;IACH,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,gBAAgB;IAuCpF;;;OAGG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE;IAgEzE;;OAEG;IACG,QAAQ,CACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAAE,EAClB,YAAY,EAAE,YAAY,EAC1B,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,gBAAgB,CAAC;IAyG5B;;;OAGG;YACW,4BAA4B;IA8D1C;;;;;OAKG;YACW,sBAAsB;IAyEpC;;OAEG;IACH,OAAO,CAAC,eAAe;IA+CvB;;OAEG;YACW,eAAe;IAgD7B;;OAEG;YACW,UAAU;IAYxB;;;;OAIG;YACW,6BAA6B;IAiD3C;;OAEG;YACW,oBAAoB;IAqClC;;OAEG;YACW,iBAAiB;IA+B/B;;OAEG;IACH,oBAAoB,IAAI,IAAI;CAG7B"}
|