codehere 0.2.2 → 0.3.0-rc.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.
- package/README.md +88 -68
- package/dist/domain/entities/task.js +4 -4
- package/dist/error-handler.js +4 -9
- package/dist/index.js +253 -1219
- package/dist/infrastructure/config/product-context.js +7 -6
- package/dist/infrastructure/hooks/claude-sdk-hook.js +335 -63
- package/dist/infrastructure/observability/execution-tracer.js +11 -6
- package/dist/infrastructure/orchestration/agent-adapter.js +13 -0
- package/dist/infrastructure/orchestration/agent-installer.js +101 -0
- package/dist/infrastructure/orchestration/agents-config-seed.js +56 -0
- package/dist/infrastructure/orchestration/aider-adapter.js +319 -0
- package/dist/infrastructure/orchestration/artifacts-extractor.js +175 -0
- package/dist/infrastructure/orchestration/claude-code-adapter.js +352 -0
- package/dist/infrastructure/orchestration/codex-adapter.js +310 -0
- package/dist/infrastructure/orchestration/generic-cli-adapter.js +553 -0
- package/dist/infrastructure/orchestration/opencode-adapter.js +275 -0
- package/dist/infrastructure/orchestration/progress-aggregator.js +189 -0
- package/dist/infrastructure/orchestration/readiness.js +106 -0
- package/dist/infrastructure/orchestration/session-manager.js +272 -0
- package/dist/infrastructure/orchestration/session-persistence.js +109 -0
- package/dist/infrastructure/protocols/mcp-helpers.js +10 -30
- package/dist/infrastructure/protocols/mcp-server-impl.js +359 -21
- package/dist/infrastructure/protocols/ui-page.js +1827 -0
- package/dist/infrastructure/security/file-collection.js +115 -0
- package/dist/infrastructure/security/trust-scorer.js +301 -56
- package/dist/infrastructure/storage/task-repository.js +8 -7
- package/dist/monitoring.js +9 -38
- package/dist/presentation/cli/commands/help-command.js +96 -139
- package/dist/presentation/cli/commands/hook-command.js +17 -24
- package/dist/presentation/cli/commands/report-command.js +59 -72
- package/dist/presentation/cli/commands/setup-command.js +4 -4
- package/dist/presentation/cli/commands/status-command.js +321 -30
- package/dist/presentation/cli/commands/trust-command.js +84 -72
- package/dist/presentation/cli/error-display.js +17 -21
- package/dist/ui.js +11 -11
- package/package.json +24 -62
- package/dist/agents/base.js +0 -101
- package/dist/agents/orchestrator-model-driven.js +0 -141
- package/dist/agents/react-orchestrator-agent.js +0 -54
- package/dist/application/agents/execution-agent.js +0 -508
- package/dist/application/agents/multi-agent-orchestrator.js +0 -295
- package/dist/application/agents/planning-agent.js +0 -433
- package/dist/application/agents/validation-agent.js +0 -317
- package/dist/application/architectures/plan-and-act.js +0 -242
- package/dist/application/index.js +0 -12
- package/dist/application/services/agent-factory.js +0 -28
- package/dist/application/services/dependency-container.js +0 -596
- package/dist/application/services/git-context-service.js +0 -83
- package/dist/application/services/intelligent-router.js +0 -934
- package/dist/application/services/tool-executor-service.js +0 -94
- package/dist/application/use-cases/ask-question-use-case.js +0 -338
- package/dist/application/use-cases/edit-file-use-case.js +0 -830
- package/dist/application/use-cases/explain-file-use-case.js +0 -50
- package/dist/application/use-cases/index-codebase-use-case.js +0 -113
- package/dist/application/use-cases/planning-use-case.js +0 -276
- package/dist/application/use-cases/react-orchestration-use-case.js +0 -329
- package/dist/application/use-cases/reflexion-use-case.js +0 -30
- package/dist/application/workflows/deterministic-workflows.js +0 -189
- package/dist/ast-parser.js +0 -331
- package/dist/cache.js +0 -180
- package/dist/chat.js +0 -251
- package/dist/code-analysis.js +0 -327
- package/dist/context.js +0 -187
- package/dist/docs.js +0 -146
- package/dist/domain/entities/code-chunk.js +0 -6
- package/dist/domain/entities/decision.js +0 -9
- package/dist/domain/entities/edit.js +0 -6
- package/dist/domain/entities/knowledge-node.js +0 -9
- package/dist/domain/entities/knowledge-preservation.js +0 -10
- package/dist/domain/entities/memory.js +0 -6
- package/dist/domain/entities/pattern.js +0 -7
- package/dist/domain/entities/plan.js +0 -6
- package/dist/domain/entities/query.js +0 -6
- package/dist/domain/errors/embeddings-not-found-error.js +0 -13
- package/dist/domain/index.js +0 -19
- package/dist/domain/interfaces/ai-service.interface.js +0 -6
- package/dist/domain/interfaces/code-analyzer.interface.js +0 -6
- package/dist/domain/interfaces/decision-repository.interface.js +0 -9
- package/dist/domain/interfaces/embedding-repository.interface.js +0 -6
- package/dist/domain/interfaces/knowledge-graph-repository.interface.js +0 -9
- package/dist/domain/interfaces/knowledge-preservation-repository.interface.js +0 -8
- package/dist/domain/interfaces/memory-repository.interface.js +0 -6
- package/dist/domain/interfaces/pattern-repository.interface.js +0 -6
- package/dist/domain/interfaces/verification-service.interface.js +0 -6
- package/dist/domain/services/cross-team-pattern-sharing.js +0 -125
- package/dist/domain/services/decision-recorder.js +0 -223
- package/dist/domain/services/decision-retriever.js +0 -133
- package/dist/domain/services/environment-mode-manager.js +0 -22
- package/dist/domain/services/graded-memory-activation.js +0 -69
- package/dist/domain/services/knowledge-access.js +0 -132
- package/dist/domain/services/knowledge-extractor.js +0 -247
- package/dist/domain/services/knowledge-graph-builder.js +0 -268
- package/dist/domain/services/knowledge-graph-query.js +0 -187
- package/dist/domain/services/memory-retriever.js +0 -82
- package/dist/domain/services/memory-synthesizer.js +0 -91
- package/dist/domain/services/pattern-extractor.js +0 -442
- package/dist/domain/services/query-intent-classifier.js +0 -140
- package/dist/domain/services/react-loop.js +0 -186
- package/dist/domain/services/risk-tier-detector.js +0 -78
- package/dist/edit.js +0 -319
- package/dist/embed.js +0 -459
- package/dist/formatter.js +0 -168
- package/dist/git.js +0 -198
- package/dist/infrastructure/ai/cohere-ai-service.js +0 -607
- package/dist/infrastructure/ai/command-r-evaluation.js +0 -206
- package/dist/infrastructure/ai/model-config.js +0 -84
- package/dist/infrastructure/ai/provider-ai-service.js +0 -477
- package/dist/infrastructure/cache/embedding-cache.js +0 -175
- package/dist/infrastructure/cache/query-result-cache.js +0 -66
- package/dist/infrastructure/cache/response-cache.js +0 -48
- package/dist/infrastructure/cache/security-scan-cache.js +0 -47
- package/dist/infrastructure/chunking/ast-code-chunker.js +0 -19
- package/dist/infrastructure/chunking/code-aware-chunker.js +0 -397
- package/dist/infrastructure/context/context-compressor.js +0 -329
- package/dist/infrastructure/context/conversation-context.js +0 -128
- package/dist/infrastructure/context/session-manager.js +0 -94
- package/dist/infrastructure/cost/cost-tracker.js +0 -360
- package/dist/infrastructure/file-scanner/file-scanner.js +0 -106
- package/dist/infrastructure/governance/nist-ai-rmf.js +0 -292
- package/dist/infrastructure/governance/policy-as-code.js +0 -258
- package/dist/infrastructure/governance/prompt-to-code-lineage.js +0 -239
- package/dist/infrastructure/index.js +0 -7
- package/dist/infrastructure/observability/prompt-versioner.js +0 -145
- package/dist/infrastructure/protocols/a2a-metadata.js +0 -137
- package/dist/infrastructure/protocols/a2a-protocol.js +0 -314
- package/dist/infrastructure/protocols/mcp-oauth.js +0 -184
- package/dist/infrastructure/protocols/mcp-server.js +0 -333
- package/dist/infrastructure/protocols/streaming-handler.js +0 -103
- package/dist/infrastructure/providers/cohere-provider.js +0 -444
- package/dist/infrastructure/providers/fake-provider.js +0 -130
- package/dist/infrastructure/providers/local-llm-provider.js +0 -330
- package/dist/infrastructure/providers/model-config.types.js +0 -9
- package/dist/infrastructure/providers/model-provider.interface.js +0 -8
- package/dist/infrastructure/providers/openai-provider.js +0 -413
- package/dist/infrastructure/providers/openrouter-provider.js +0 -399
- package/dist/infrastructure/providers/operation-provider-resolver.js +0 -105
- package/dist/infrastructure/providers/provider-config-loader.js +0 -120
- package/dist/infrastructure/providers/provider-registry.js +0 -88
- package/dist/infrastructure/safety/pattern-detector.js +0 -133
- package/dist/infrastructure/security/ai-sast-scanner.js +0 -290
- package/dist/infrastructure/security/docker-sandbox.js +0 -178
- package/dist/infrastructure/security/enhanced-security-gate.js +0 -151
- package/dist/infrastructure/security/license-scanner.js +0 -167
- package/dist/infrastructure/security/provider-bias-detector.js +0 -164
- package/dist/infrastructure/security/sandbox-executor.js +0 -64
- package/dist/infrastructure/serialization/toon-serializer.js +0 -119
- package/dist/infrastructure/storage/memory-stream-service.js +0 -204
- package/dist/infrastructure/storage/plan-repository.js +0 -96
- package/dist/infrastructure/storage/sqlite-decision-repository.js +0 -232
- package/dist/infrastructure/storage/sqlite-embedding-repository.js +0 -311
- package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js +0 -417
- package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js +0 -230
- package/dist/infrastructure/storage/sqlite-memory-repository.js +0 -229
- package/dist/infrastructure/storage/sqlite-pattern-repository.js +0 -249
- package/dist/infrastructure/storage/task-helpers.js +0 -197
- package/dist/infrastructure/telemetry/telemetry-service.js +0 -167
- package/dist/infrastructure/ux/appropriate-friction.js +0 -213
- package/dist/infrastructure/ux/bi-directional-learning.js +0 -337
- package/dist/infrastructure/ux/capability-boundaries.js +0 -42
- package/dist/infrastructure/ux/comprehensive-formatter.js +0 -117
- package/dist/infrastructure/ux/contextual-feature-discovery.js +0 -10
- package/dist/infrastructure/ux/expectation-management.js +0 -327
- package/dist/infrastructure/ux/feature-discovery.js +0 -14
- package/dist/infrastructure/ux/feedback-prompt.js +0 -45
- package/dist/infrastructure/ux/hitl-validation.js +0 -297
- package/dist/infrastructure/ux/progress-indicator.js +0 -116
- package/dist/infrastructure/ux/progressive-disclosure.js +0 -236
- package/dist/infrastructure/ux/review-checkpoint.js +0 -72
- package/dist/infrastructure/ux/staged-feature-intro.js +0 -24
- package/dist/infrastructure/ux/stream-markdown.js +0 -151
- package/dist/infrastructure/ux/syntax-highlighter.js +0 -91
- package/dist/infrastructure/ux/team-standards.js +0 -196
- package/dist/infrastructure/ux/transparency.js +0 -71
- package/dist/infrastructure/validation/agent-feedback.js +0 -55
- package/dist/infrastructure/validation/agent-validation-helper.js +0 -137
- package/dist/infrastructure/validation/review-handler.js +0 -40
- package/dist/infrastructure/validation/summary-aggregator.js +0 -70
- package/dist/infrastructure/validation/summary-extractor.js +0 -45
- package/dist/infrastructure/validation/trace-summary.js +0 -52
- package/dist/infrastructure/verification/verification-service.js +0 -47
- package/dist/infrastructure/xai/attention-visualizer.js +0 -172
- package/dist/infrastructure/xai/cot-visualizer.js +0 -283
- package/dist/infrastructure/xai/decision-tree-log.js +0 -212
- package/dist/infrastructure/xai/interactive-xai.js +0 -260
- package/dist/infrastructure/xai/uncertainty-quantifier.js +0 -198
- package/dist/intelligent-retrieval.js +0 -272
- package/dist/intent/classifier.js +0 -2
- package/dist/intent/context.js +0 -2
- package/dist/iterative-refinement.js +0 -189
- package/dist/learning.js +0 -232
- package/dist/log.js +0 -31
- package/dist/migrate.js +0 -133
- package/dist/parallel-processor.js +0 -534
- package/dist/planner.js +0 -198
- package/dist/policy.js +0 -26
- package/dist/presentation/cli/commands/ask-command.js +0 -314
- package/dist/presentation/cli/commands/cost-command.js +0 -191
- package/dist/presentation/cli/commands/decision-command.js +0 -207
- package/dist/presentation/cli/commands/docs-command.js +0 -25
- package/dist/presentation/cli/commands/fix-command.js +0 -53
- package/dist/presentation/cli/commands/knowledge-command.js +0 -129
- package/dist/presentation/cli/commands/learning-dashboard-command.js +0 -183
- package/dist/presentation/cli/commands/models-command.js +0 -194
- package/dist/presentation/cli/commands/orchestrate-command.js +0 -207
- package/dist/presentation/cli/commands/plan-command.js +0 -246
- package/dist/presentation/cli/commands/product-command.js +0 -199
- package/dist/presentation/cli/commands/react-command.js +0 -181
- package/dist/presentation/cli/commands/review-command.js +0 -154
- package/dist/presentation/cli/commands/run-command.js +0 -188
- package/dist/presentation/cli/commands/smart-command.js +0 -395
- package/dist/presentation/cli/commands/suggest-command.js +0 -138
- package/dist/presentation/cli/commands/trace-command.js +0 -129
- package/dist/presentation/cli/commands/undo-command.js +0 -150
- package/dist/query-optimizer.js +0 -205
- package/dist/refactor.js +0 -116
- package/dist/review.js +0 -206
- package/dist/search.js +0 -163
- package/dist/session.js +0 -704
- package/dist/task-verification.js +0 -336
- package/dist/testgen.js +0 -166
- package/dist/token-optimizer.js +0 -277
- package/dist/tools/bash.js +0 -213
- package/dist/tools/edit.js +0 -235
- package/dist/tools/executor.js +0 -153
- package/dist/tools/git-tool.js +0 -292
- package/dist/tools/parser.js +0 -158
- package/dist/tools/registry.js +0 -302
- package/dist/tools/search.js +0 -100
- package/dist/types.js +0 -2
- package/dist/utils/check-api-status.js +0 -100
- package/dist/utils/diff-parser.js +0 -162
- package/dist/verification/backup.js +0 -259
- package/dist/verification/compiler.js +0 -264
- package/dist/verification/index.js +0 -273
- package/dist/verification/test-runner.js +0 -379
|
@@ -1,295 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Application: Multi-Agent Orchestrator
|
|
3
|
-
* Coordinates Planning, Execution, and Validation agents
|
|
4
|
-
*
|
|
5
|
-
* Based on enterprise architecture: Coordinator Pattern with specialized agents
|
|
6
|
-
* Uses Command R+ as orchestrator (when available) or current AI service
|
|
7
|
-
*/
|
|
8
|
-
import { PlanningAgent } from './planning-agent.js';
|
|
9
|
-
import { ExecutionAgent } from './execution-agent.js';
|
|
10
|
-
import { ValidationAgent } from './validation-agent.js';
|
|
11
|
-
import { executionTracer } from '../../infrastructure/observability/execution-tracer.js';
|
|
12
|
-
import { agentFeedbackManager } from '../../infrastructure/validation/agent-feedback.js';
|
|
13
|
-
import { summaryAggregator } from '../../infrastructure/validation/summary-aggregator.js';
|
|
14
|
-
import { findCodebaseRoot } from '../../domain/services/codebase-detector.js';
|
|
15
|
-
export class MultiAgentOrchestrator {
|
|
16
|
-
aiService;
|
|
17
|
-
memoryStream;
|
|
18
|
-
memoryRepository;
|
|
19
|
-
toolExecutor;
|
|
20
|
-
verificationService;
|
|
21
|
-
sastScanner;
|
|
22
|
-
cwd;
|
|
23
|
-
planningAgent;
|
|
24
|
-
executionAgent;
|
|
25
|
-
validationAgent;
|
|
26
|
-
constructor(aiService, memoryStream, memoryRepository, toolExecutor, verificationService, sastScanner, cwd = process.cwd()) {
|
|
27
|
-
this.aiService = aiService;
|
|
28
|
-
this.memoryStream = memoryStream;
|
|
29
|
-
this.memoryRepository = memoryRepository;
|
|
30
|
-
this.toolExecutor = toolExecutor;
|
|
31
|
-
this.verificationService = verificationService;
|
|
32
|
-
this.sastScanner = sastScanner;
|
|
33
|
-
this.cwd = cwd;
|
|
34
|
-
// Initialize specialized agents
|
|
35
|
-
this.planningAgent = new PlanningAgent(aiService, memoryStream, memoryRepository, cwd);
|
|
36
|
-
this.executionAgent = new ExecutionAgent(aiService, toolExecutor, cwd);
|
|
37
|
-
this.validationAgent = new ValidationAgent(aiService, verificationService);
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Orchestrate multi-agent workflow
|
|
41
|
-
* Coordinator Pattern: Plan → Execute → Validate → Feedback Loop
|
|
42
|
-
*/
|
|
43
|
-
// TODO: Update task status during orchestration
|
|
44
|
-
// Update task.currentStep, task.totalSteps
|
|
45
|
-
// Update task.steps[].status
|
|
46
|
-
// Update task.status: RUNNING → COMPLETED/FAILED
|
|
47
|
-
// See: .internal/ARCHITECTURE.md (internal docs)
|
|
48
|
-
async orchestrate(request) {
|
|
49
|
-
const mode = request.mode || 'full';
|
|
50
|
-
// Create unified run context for entire orchestration
|
|
51
|
-
const codebaseInfo = findCodebaseRoot(this.cwd);
|
|
52
|
-
const unifiedRunId = executionTracer.startRun('multi-agent-orchestration', {
|
|
53
|
-
query: request.goal,
|
|
54
|
-
codebaseId: codebaseInfo?.codebaseId || codebaseInfo?.rootPath,
|
|
55
|
-
});
|
|
56
|
-
// Track summaries from each agent
|
|
57
|
-
const agentSummaries = [];
|
|
58
|
-
try {
|
|
59
|
-
// Phase 1: Planning (if needed)
|
|
60
|
-
let plan;
|
|
61
|
-
if (mode === 'full' || mode === 'plan-only') {
|
|
62
|
-
// Input validation
|
|
63
|
-
if (!request.goal || request.goal.trim().length === 0) {
|
|
64
|
-
return {
|
|
65
|
-
success: false,
|
|
66
|
-
message: 'Goal cannot be empty',
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
let planningResponse;
|
|
70
|
-
try {
|
|
71
|
-
planningResponse = await this.planningAgent.createPlan({
|
|
72
|
-
goal: request.goal,
|
|
73
|
-
context: request.context,
|
|
74
|
-
});
|
|
75
|
-
plan = planningResponse.plan;
|
|
76
|
-
// Capture planning summary
|
|
77
|
-
if (planningResponse.validationSummary) {
|
|
78
|
-
agentSummaries.push({
|
|
79
|
-
agent: 'planning-agent',
|
|
80
|
-
summary: planningResponse.validationSummary,
|
|
81
|
-
runId: planningResponse.runId,
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
87
|
-
console.error('Orchestrator: Planning failed:', errorMessage);
|
|
88
|
-
return {
|
|
89
|
-
success: false,
|
|
90
|
-
message: `Planning failed: ${errorMessage}`,
|
|
91
|
-
plan: undefined,
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
// Validate plan was generated
|
|
95
|
-
if (!plan) {
|
|
96
|
-
return {
|
|
97
|
-
success: false,
|
|
98
|
-
message: 'Planning agent returned no plan',
|
|
99
|
-
plan: undefined,
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
if (!plan.subPlans || plan.subPlans.length === 0) {
|
|
103
|
-
return {
|
|
104
|
-
success: false,
|
|
105
|
-
message: 'Planning agent returned plan with no sub-plans',
|
|
106
|
-
plan,
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
// If plan-only mode, return here
|
|
110
|
-
if (mode === 'plan-only') {
|
|
111
|
-
// Aggregate summaries if available (filter out any undefined summaries)
|
|
112
|
-
const validSummaries = agentSummaries.filter(s => s.summary !== undefined);
|
|
113
|
-
const compositeSummary = validSummaries.length > 0
|
|
114
|
-
? summaryAggregator.mergeSummaries(validSummaries, unifiedRunId, 'multi-agent-orchestration')
|
|
115
|
-
: undefined;
|
|
116
|
-
executionTracer.endRun();
|
|
117
|
-
return {
|
|
118
|
-
plan,
|
|
119
|
-
success: true,
|
|
120
|
-
message: `Plan created with ${plan.subPlans.length} sub-plans (confidence: ${(planningResponse.confidence * 100).toFixed(0)}%)`,
|
|
121
|
-
compositeSummary,
|
|
122
|
-
unifiedRunId,
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
if (!plan) {
|
|
127
|
-
return {
|
|
128
|
-
success: false,
|
|
129
|
-
message: 'No plan available for execution',
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
// Phase 2: Execution (if needed)
|
|
133
|
-
let execution;
|
|
134
|
-
if (mode === 'full' || mode === 'execute-only') {
|
|
135
|
-
execution = await this.executionAgent.execute({
|
|
136
|
-
plan,
|
|
137
|
-
context: request.context,
|
|
138
|
-
});
|
|
139
|
-
// Capture execution summary
|
|
140
|
-
if (execution.validationSummary) {
|
|
141
|
-
agentSummaries.push({
|
|
142
|
-
agent: 'execution-agent',
|
|
143
|
-
summary: execution.validationSummary,
|
|
144
|
-
runId: execution.runId,
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
// If execute-only mode, return here
|
|
148
|
-
if (mode === 'execute-only') {
|
|
149
|
-
// Aggregate summaries if available (filter out any undefined summaries)
|
|
150
|
-
const validSummaries = agentSummaries.filter(s => s.summary !== undefined);
|
|
151
|
-
const compositeSummary = validSummaries.length > 0
|
|
152
|
-
? summaryAggregator.mergeSummaries(validSummaries, unifiedRunId, 'multi-agent-orchestration')
|
|
153
|
-
: undefined;
|
|
154
|
-
executionTracer.endRun();
|
|
155
|
-
return {
|
|
156
|
-
plan,
|
|
157
|
-
execution,
|
|
158
|
-
success: execution.overallSuccess,
|
|
159
|
-
message: `Execution completed: ${execution.completedSubPlans}/${execution.totalSubPlans} sub-plans`,
|
|
160
|
-
compositeSummary,
|
|
161
|
-
unifiedRunId,
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
if (!execution) {
|
|
166
|
-
return {
|
|
167
|
-
plan,
|
|
168
|
-
success: false,
|
|
169
|
-
message: 'Execution not performed',
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
// Phase 3: Validation
|
|
173
|
-
const filesModified = this.extractModifiedFiles(execution);
|
|
174
|
-
const validation = await this.validationAgent.validate({
|
|
175
|
-
plan,
|
|
176
|
-
executionResults: execution.results,
|
|
177
|
-
filesModified,
|
|
178
|
-
});
|
|
179
|
-
// Capture validation summary
|
|
180
|
-
if (validation.validationSummary) {
|
|
181
|
-
agentSummaries.push({
|
|
182
|
-
agent: 'validation-agent',
|
|
183
|
-
summary: validation.validationSummary,
|
|
184
|
-
runId: validation.runId,
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
// Phase 4: Feedback Loop
|
|
188
|
-
// If validation fails, provide feedback for next iteration
|
|
189
|
-
let feedback;
|
|
190
|
-
if (!validation.success) {
|
|
191
|
-
feedback = this.generateFeedback(validation, execution);
|
|
192
|
-
}
|
|
193
|
-
// Aggregate all summaries into composite summary (filter out any undefined summaries)
|
|
194
|
-
const validSummaries = agentSummaries.filter(s => s.summary !== undefined);
|
|
195
|
-
const compositeSummary = validSummaries.length > 0
|
|
196
|
-
? summaryAggregator.mergeSummaries(validSummaries, unifiedRunId, 'multi-agent-orchestration')
|
|
197
|
-
: undefined;
|
|
198
|
-
// Record in memory stream
|
|
199
|
-
await this.memoryStream.recordObservation(`Multi-agent orchestration completed for: "${request.goal}"`, {
|
|
200
|
-
goal: request.goal,
|
|
201
|
-
planId: plan.id,
|
|
202
|
-
executionSuccess: execution.overallSuccess,
|
|
203
|
-
validationSuccess: validation.success,
|
|
204
|
-
qualityScore: validation.qualityScore,
|
|
205
|
-
});
|
|
206
|
-
// End unified run context
|
|
207
|
-
executionTracer.endRun();
|
|
208
|
-
// Note: Feedback recording is handled by CLI commands with proper userAction
|
|
209
|
-
// This allows CLI to record feedback after review decision
|
|
210
|
-
return {
|
|
211
|
-
plan,
|
|
212
|
-
execution,
|
|
213
|
-
validation,
|
|
214
|
-
success: validation.success && execution.overallSuccess,
|
|
215
|
-
message: this.generateSuccessMessage(execution, validation),
|
|
216
|
-
feedback,
|
|
217
|
-
compositeSummary,
|
|
218
|
-
unifiedRunId,
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
catch (error) {
|
|
222
|
-
// End run context even on error
|
|
223
|
-
executionTracer.endRun();
|
|
224
|
-
// Record failure feedback
|
|
225
|
-
try {
|
|
226
|
-
agentFeedbackManager.recordFeedback({
|
|
227
|
-
runId: unifiedRunId,
|
|
228
|
-
agentName: 'multi-agent-orchestrator',
|
|
229
|
-
operation: 'orchestrate',
|
|
230
|
-
query: request.goal,
|
|
231
|
-
outcome: 'failure',
|
|
232
|
-
userAction: 'not_required', // Error case - no review flow
|
|
233
|
-
errors: [error instanceof Error ? error.message : String(error)],
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
catch {
|
|
237
|
-
// Non-blocking
|
|
238
|
-
}
|
|
239
|
-
return {
|
|
240
|
-
success: false,
|
|
241
|
-
message: error instanceof Error ? error.message : String(error),
|
|
242
|
-
unifiedRunId,
|
|
243
|
-
};
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Extract modified files from execution results
|
|
248
|
-
*/
|
|
249
|
-
extractModifiedFiles(execution) {
|
|
250
|
-
const files = [];
|
|
251
|
-
for (const result of execution.results) {
|
|
252
|
-
if (result.result && typeof result.result === 'object') {
|
|
253
|
-
if ('filepath' in result.result) {
|
|
254
|
-
files.push(result.result.filepath);
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
return [...new Set(files)]; // Deduplicate
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* Generate feedback for next iteration
|
|
262
|
-
*/
|
|
263
|
-
generateFeedback(validation, execution) {
|
|
264
|
-
const feedback = [];
|
|
265
|
-
if (!validation.compilationSuccess) {
|
|
266
|
-
feedback.push(`Compilation errors: ${validation.compilationErrors?.slice(0, 2).join(', ')}`);
|
|
267
|
-
}
|
|
268
|
-
if (!validation.testsPassed) {
|
|
269
|
-
feedback.push('Tests are failing - review test results');
|
|
270
|
-
}
|
|
271
|
-
const failedSubPlans = execution.results.filter(r => !r.success);
|
|
272
|
-
if (failedSubPlans.length > 0) {
|
|
273
|
-
feedback.push(`${failedSubPlans.length} sub-plans failed: ${failedSubPlans.map(r => r.subPlanId).join(', ')}`);
|
|
274
|
-
}
|
|
275
|
-
if (validation.recommendations.length > 0) {
|
|
276
|
-
feedback.push(...validation.recommendations.slice(0, 3));
|
|
277
|
-
}
|
|
278
|
-
return feedback.join('. ');
|
|
279
|
-
}
|
|
280
|
-
/**
|
|
281
|
-
* Generate success message
|
|
282
|
-
*/
|
|
283
|
-
generateSuccessMessage(execution, validation) {
|
|
284
|
-
if (validation.success && execution.overallSuccess) {
|
|
285
|
-
return `✅ Successfully completed: ${execution.completedSubPlans}/${execution.totalSubPlans} sub-plans executed, all tests passing (quality score: ${validation.qualityScore}/100)`;
|
|
286
|
-
}
|
|
287
|
-
else if (execution.overallSuccess) {
|
|
288
|
-
return `⚠️ Execution completed but validation issues: ${validation.recommendations.join(', ')}`;
|
|
289
|
-
}
|
|
290
|
-
else {
|
|
291
|
-
return `❌ Execution incomplete: ${execution.completedSubPlans}/${execution.totalSubPlans} sub-plans completed`;
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
//# sourceMappingURL=multi-agent-orchestrator.js.map
|