@tienne/gestalt 0.15.0 → 0.15.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/CLAUDE.md +2 -2
- package/README.ko.md +15 -32
- package/README.md +183 -163
- package/dist/package.json +1 -1
- package/dist/src/execute/orchestrators/evaluation.d.ts +27 -0
- package/dist/src/execute/orchestrators/evaluation.d.ts.map +1 -0
- package/dist/src/execute/orchestrators/evaluation.js +169 -0
- package/dist/src/execute/orchestrators/evaluation.js.map +1 -0
- package/dist/src/execute/orchestrators/evolution.d.ts +50 -0
- package/dist/src/execute/orchestrators/evolution.d.ts.map +1 -0
- package/dist/src/execute/orchestrators/evolution.js +391 -0
- package/dist/src/execute/orchestrators/evolution.js.map +1 -0
- package/dist/src/execute/orchestrators/execution.d.ts +38 -0
- package/dist/src/execute/orchestrators/execution.d.ts.map +1 -0
- package/dist/src/execute/orchestrators/execution.js +328 -0
- package/dist/src/execute/orchestrators/execution.js.map +1 -0
- package/dist/src/execute/orchestrators/planning.d.ts +26 -0
- package/dist/src/execute/orchestrators/planning.d.ts.map +1 -0
- package/dist/src/execute/orchestrators/planning.js +269 -0
- package/dist/src/execute/orchestrators/planning.js.map +1 -0
- package/dist/src/execute/orchestrators/types.d.ts +137 -0
- package/dist/src/execute/orchestrators/types.d.ts.map +1 -0
- package/dist/src/execute/orchestrators/types.js +2 -0
- package/dist/src/execute/orchestrators/types.js.map +1 -0
- package/dist/src/execute/passthrough-engine.d.ts +9 -201
- package/dist/src/execute/passthrough-engine.d.ts.map +1 -1
- package/dist/src/execute/passthrough-engine.js +37 -1075
- package/dist/src/execute/passthrough-engine.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
import { ExecuteError, ExecuteSessionNotFoundError, TaskExecutionError, } from '../../core/errors.js';
|
|
2
|
+
import { ok, err } from '../../core/result.js';
|
|
3
|
+
import { EventType } from '../../events/types.js';
|
|
4
|
+
import { EXECUTE_EXECUTION_SYSTEM_PROMPT, EVOLVE_STRUCTURAL_FIX_SYSTEM_PROMPT, EVOLVE_CONTEXTUAL_SYSTEM_PROMPT, buildStructuralFixPrompt, buildContextualEvolvePrompt, buildReExecutionPrompt, } from '../prompts.js';
|
|
5
|
+
import { DRIFT_THRESHOLD } from '../../core/constants.js';
|
|
6
|
+
import { validateSpecPatch } from '../spec-patch-validator.js';
|
|
7
|
+
import { applySpecPatch } from '../spec-patch-applier.js';
|
|
8
|
+
import { identifyImpactedTasks } from '../impact-identifier.js';
|
|
9
|
+
import { checkTermination } from '../termination-detector.js';
|
|
10
|
+
import { mergeSystemPrompt } from '../../agent/prompt-resolver.js';
|
|
11
|
+
import { classifyStagnation } from '../../resilience/stagnation-detector.js';
|
|
12
|
+
import { suggestPersona, buildLateralContext, buildEscalationContext, } from '../../resilience/lateral.js';
|
|
13
|
+
export class EvolutionOrchestrator {
|
|
14
|
+
sessionManager;
|
|
15
|
+
eventStore;
|
|
16
|
+
agentRegistry;
|
|
17
|
+
constructor(sessionManager, eventStore, agentRegistry, _roleAgentRegistry) {
|
|
18
|
+
this.sessionManager = sessionManager;
|
|
19
|
+
this.eventStore = eventStore;
|
|
20
|
+
this.agentRegistry = agentRegistry;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* evolve_fix: Structural 실패 시 fix context를 반환하거나, fix 결과를 제출한다.
|
|
24
|
+
* - fixTasks 없으면: fixContext 반환 (caller가 fix 생성)
|
|
25
|
+
* - fixTasks 있으면: fix 기록 후 re-evaluate를 위한 상태 복원
|
|
26
|
+
*/
|
|
27
|
+
startStructuralFix(sessionId, fixTasks) {
|
|
28
|
+
try {
|
|
29
|
+
const session = this.sessionManager.get(sessionId);
|
|
30
|
+
// Call 1: Return fix context (no fixTasks submitted)
|
|
31
|
+
if (!fixTasks) {
|
|
32
|
+
if (!session.structuralResult || session.structuralResult.allPassed) {
|
|
33
|
+
return err(new ExecuteError('No structural failures to fix'));
|
|
34
|
+
}
|
|
35
|
+
this.sessionManager.startStructuralFix(sessionId);
|
|
36
|
+
const failedCommands = session.structuralResult.commands.filter((c) => c.exitCode !== 0);
|
|
37
|
+
return ok({
|
|
38
|
+
session: this.sessionManager.get(sessionId),
|
|
39
|
+
fixContext: {
|
|
40
|
+
systemPrompt: mergeSystemPrompt(EVOLVE_STRUCTURAL_FIX_SYSTEM_PROMPT, this.agentRegistry, 'evaluate'),
|
|
41
|
+
fixPrompt: buildStructuralFixPrompt(session.spec, failedCommands, session.taskResults),
|
|
42
|
+
phase: 'evolving',
|
|
43
|
+
stage: 'fix',
|
|
44
|
+
failedCommands,
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// Call 2: Submit fix results
|
|
49
|
+
this.sessionManager.completeStructuralFix(sessionId, fixTasks);
|
|
50
|
+
// Reset evaluation state for re-evaluate
|
|
51
|
+
const updated = this.sessionManager.get(sessionId);
|
|
52
|
+
updated.evaluateStage = undefined;
|
|
53
|
+
updated.structuralResult = undefined;
|
|
54
|
+
updated.evaluationResult = undefined;
|
|
55
|
+
updated.status = 'executing';
|
|
56
|
+
updated.updatedAt = new Date().toISOString();
|
|
57
|
+
return ok({
|
|
58
|
+
session: updated,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
catch (e) {
|
|
62
|
+
if (e instanceof ExecuteSessionNotFoundError)
|
|
63
|
+
return err(e);
|
|
64
|
+
return err(new ExecuteError(`Failed structural fix: ${e instanceof Error ? e.message : String(e)}`));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* evolve: Contextual evolution 시작.
|
|
69
|
+
* - evaluationResult에서 gap 분석 후 evolveContext 반환
|
|
70
|
+
* - caller가 SpecPatch를 생성
|
|
71
|
+
* - terminateReason='caller'이면 즉시 종료
|
|
72
|
+
*/
|
|
73
|
+
startContextualEvolve(sessionId, terminateReason) {
|
|
74
|
+
try {
|
|
75
|
+
const session = this.sessionManager.get(sessionId);
|
|
76
|
+
// Caller-initiated termination
|
|
77
|
+
if (terminateReason === 'caller') {
|
|
78
|
+
this.sessionManager.terminate(sessionId, 'caller');
|
|
79
|
+
return ok({
|
|
80
|
+
session: this.sessionManager.get(sessionId),
|
|
81
|
+
terminated: true,
|
|
82
|
+
terminationReason: 'caller',
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
if (!session.evaluationResult) {
|
|
86
|
+
return err(new ExecuteError('No evaluation result found. Run evaluate first.'));
|
|
87
|
+
}
|
|
88
|
+
// Check termination conditions
|
|
89
|
+
const termination = checkTermination({
|
|
90
|
+
evolutionHistory: session.evolutionHistory,
|
|
91
|
+
currentScore: session.evaluationResult.overallScore,
|
|
92
|
+
currentGoalAlignment: session.evaluationResult.goalAlignment,
|
|
93
|
+
structuralFixCount: this.countStructuralFixes(session),
|
|
94
|
+
contextualCount: session.evolutionHistory.length,
|
|
95
|
+
});
|
|
96
|
+
if (termination) {
|
|
97
|
+
// Success → terminate normally
|
|
98
|
+
if (termination.reason === 'success') {
|
|
99
|
+
this.sessionManager.terminate(sessionId, 'success');
|
|
100
|
+
return ok({
|
|
101
|
+
session: this.sessionManager.get(sessionId),
|
|
102
|
+
terminated: true,
|
|
103
|
+
terminationReason: 'success',
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
// Non-success → lateral thinking
|
|
107
|
+
const pattern = classifyStagnation({
|
|
108
|
+
evolutionHistory: session.evolutionHistory,
|
|
109
|
+
currentScore: session.evaluationResult.overallScore,
|
|
110
|
+
termination,
|
|
111
|
+
});
|
|
112
|
+
const persona = suggestPersona(pattern, session.lateralTriedPersonas);
|
|
113
|
+
if (persona) {
|
|
114
|
+
this.sessionManager.startLateral(sessionId, persona, pattern);
|
|
115
|
+
const lateralCtx = buildLateralContext(persona, pattern, session.spec, session.evaluationResult, session.evolutionHistory, session.lateralAttempts + 1);
|
|
116
|
+
return ok({
|
|
117
|
+
session: this.sessionManager.get(sessionId),
|
|
118
|
+
lateralContext: lateralCtx,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
// All personas exhausted → human escalation
|
|
122
|
+
this.sessionManager.terminate(sessionId, 'human_escalation');
|
|
123
|
+
this.eventStore.append('execute', sessionId, EventType.EVOLVE_HUMAN_ESCALATION, {
|
|
124
|
+
triedPersonas: session.lateralTriedPersonas,
|
|
125
|
+
bestScore: Math.max(...session.evolutionHistory.map((g) => g.evaluationScore), session.evaluationResult.overallScore),
|
|
126
|
+
});
|
|
127
|
+
const escalation = buildEscalationContext(session.lateralTriedPersonas, session.evaluationResult, session.evolutionHistory);
|
|
128
|
+
return ok({
|
|
129
|
+
session: this.sessionManager.get(sessionId),
|
|
130
|
+
humanEscalation: escalation,
|
|
131
|
+
terminated: true,
|
|
132
|
+
terminationReason: 'human_escalation',
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
return ok({
|
|
136
|
+
session,
|
|
137
|
+
evolveContext: {
|
|
138
|
+
systemPrompt: mergeSystemPrompt(EVOLVE_CONTEXTUAL_SYSTEM_PROMPT, this.agentRegistry, 'evaluate'),
|
|
139
|
+
evolvePrompt: buildContextualEvolvePrompt(session.spec, session.evaluationResult, session.evolutionHistory),
|
|
140
|
+
phase: 'evolving',
|
|
141
|
+
stage: 'evolve',
|
|
142
|
+
evaluationResult: session.evaluationResult,
|
|
143
|
+
evolutionHistory: session.evolutionHistory,
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
catch (e) {
|
|
148
|
+
if (e instanceof ExecuteSessionNotFoundError)
|
|
149
|
+
return err(e);
|
|
150
|
+
return err(new ExecuteError(`Failed contextual evolve: ${e instanceof Error ? e.message : String(e)}`));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* evolve_patch: Spec 패치 제출 → 검증 → 적용 → impacted tasks 식별 → re-execute context 반환
|
|
155
|
+
*/
|
|
156
|
+
submitSpecPatch(sessionId, patch) {
|
|
157
|
+
try {
|
|
158
|
+
const session = this.sessionManager.get(sessionId);
|
|
159
|
+
if (!session.executionPlan) {
|
|
160
|
+
return err(new ExecuteError('No execution plan found'));
|
|
161
|
+
}
|
|
162
|
+
// Validate patch
|
|
163
|
+
const validation = validateSpecPatch(patch, session.spec);
|
|
164
|
+
if (!validation.valid) {
|
|
165
|
+
const msgs = validation.errors.map((e) => `${e.field}: ${e.message}`).join('; ');
|
|
166
|
+
return err(new ExecuteError(`Invalid spec patch: ${msgs}`));
|
|
167
|
+
}
|
|
168
|
+
// Apply patch
|
|
169
|
+
const generation = session.currentGeneration + 1;
|
|
170
|
+
const { newSpec, delta } = applySpecPatch(session.spec, patch, generation);
|
|
171
|
+
// Record generation snapshot BEFORE applying
|
|
172
|
+
this.sessionManager.recordEvolutionGeneration(sessionId, {
|
|
173
|
+
generation: session.currentGeneration,
|
|
174
|
+
spec: session.spec,
|
|
175
|
+
evaluationScore: session.evaluationResult?.overallScore ?? 0,
|
|
176
|
+
goalAlignment: session.evaluationResult?.goalAlignment ?? 0,
|
|
177
|
+
delta,
|
|
178
|
+
});
|
|
179
|
+
// Apply patch to session
|
|
180
|
+
this.sessionManager.patchSpec(sessionId, patch, newSpec, delta);
|
|
181
|
+
// Identify impacted tasks
|
|
182
|
+
const driftThreshold = DRIFT_THRESHOLD;
|
|
183
|
+
const impactedTaskIds = identifyImpactedTasks(session.executionPlan.atomicTasks, session.driftHistory, delta, driftThreshold);
|
|
184
|
+
if (impactedTaskIds.length === 0) {
|
|
185
|
+
// No tasks need re-execution, just re-evaluate
|
|
186
|
+
return ok({
|
|
187
|
+
session: this.sessionManager.get(sessionId),
|
|
188
|
+
impactedTaskIds: [],
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
// Start re-execution
|
|
192
|
+
this.sessionManager.startReExecution(sessionId, impactedTaskIds);
|
|
193
|
+
const updatedSession = this.sessionManager.get(sessionId);
|
|
194
|
+
const reExecuteContext = this.buildReExecuteContext(updatedSession, impactedTaskIds, delta);
|
|
195
|
+
return ok({
|
|
196
|
+
session: updatedSession,
|
|
197
|
+
reExecuteContext: reExecuteContext ?? undefined,
|
|
198
|
+
impactedTaskIds,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
catch (e) {
|
|
202
|
+
if (e instanceof ExecuteSessionNotFoundError)
|
|
203
|
+
return err(e);
|
|
204
|
+
return err(new ExecuteError(`Failed to submit spec patch: ${e instanceof Error ? e.message : String(e)}`));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* evolve_re_execute: Re-execution 중 태스크 결과 제출
|
|
209
|
+
*/
|
|
210
|
+
submitReExecuteTaskResult(sessionId, taskResult) {
|
|
211
|
+
try {
|
|
212
|
+
const session = this.sessionManager.get(sessionId);
|
|
213
|
+
if (!session.executionPlan) {
|
|
214
|
+
return err(new ExecuteError('No execution plan found'));
|
|
215
|
+
}
|
|
216
|
+
// Validate task exists
|
|
217
|
+
const task = session.executionPlan.atomicTasks.find((t) => t.taskId === taskResult.taskId);
|
|
218
|
+
if (!task) {
|
|
219
|
+
return err(new TaskExecutionError(`Task "${taskResult.taskId}" not found in execution plan`));
|
|
220
|
+
}
|
|
221
|
+
this.sessionManager.addEvolveTaskResult(sessionId, taskResult);
|
|
222
|
+
const updatedSession = this.sessionManager.get(sessionId);
|
|
223
|
+
const nextContext = this.buildNextReExecuteTaskContext(updatedSession);
|
|
224
|
+
return ok({
|
|
225
|
+
session: updatedSession,
|
|
226
|
+
reExecuteContext: nextContext ?? undefined,
|
|
227
|
+
allTasksCompleted: nextContext === null,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
catch (e) {
|
|
231
|
+
if (e instanceof ExecuteSessionNotFoundError)
|
|
232
|
+
return err(e);
|
|
233
|
+
return err(new TaskExecutionError(`Failed to submit re-execute task result: ${e instanceof Error ? e.message : String(e)}`));
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* evolve_lateral: 다음 lateral persona를 suggest하거나 human_escalation 반환.
|
|
238
|
+
* evolve에서 자동 분기되지만, caller가 명시적으로 다음 persona를 요청할 때도 사용.
|
|
239
|
+
*/
|
|
240
|
+
startLateralEvolve(sessionId) {
|
|
241
|
+
try {
|
|
242
|
+
const session = this.sessionManager.get(sessionId);
|
|
243
|
+
if (!session.evaluationResult) {
|
|
244
|
+
return err(new ExecuteError('No evaluation result found. Run evaluate first.'));
|
|
245
|
+
}
|
|
246
|
+
// Check termination again (might have succeeded after lateral re-execute)
|
|
247
|
+
const termination = checkTermination({
|
|
248
|
+
evolutionHistory: session.evolutionHistory,
|
|
249
|
+
currentScore: session.evaluationResult.overallScore,
|
|
250
|
+
currentGoalAlignment: session.evaluationResult.goalAlignment,
|
|
251
|
+
structuralFixCount: this.countStructuralFixes(session),
|
|
252
|
+
contextualCount: session.evolutionHistory.length,
|
|
253
|
+
});
|
|
254
|
+
if (termination?.reason === 'success') {
|
|
255
|
+
this.sessionManager.terminate(sessionId, 'success');
|
|
256
|
+
return ok({
|
|
257
|
+
session: this.sessionManager.get(sessionId),
|
|
258
|
+
terminated: true,
|
|
259
|
+
terminationReason: 'success',
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
// Classify stagnation for next persona suggestion
|
|
263
|
+
const pattern = termination
|
|
264
|
+
? classifyStagnation({
|
|
265
|
+
evolutionHistory: session.evolutionHistory,
|
|
266
|
+
currentScore: session.evaluationResult.overallScore,
|
|
267
|
+
termination,
|
|
268
|
+
})
|
|
269
|
+
: 'spinning'; // fallback if no termination yet
|
|
270
|
+
const persona = suggestPersona(pattern, session.lateralTriedPersonas);
|
|
271
|
+
if (persona) {
|
|
272
|
+
this.sessionManager.startLateral(sessionId, persona, pattern);
|
|
273
|
+
const lateralCtx = buildLateralContext(persona, pattern, session.spec, session.evaluationResult, session.evolutionHistory, session.lateralAttempts + 1);
|
|
274
|
+
return ok({
|
|
275
|
+
session: this.sessionManager.get(sessionId),
|
|
276
|
+
lateralContext: lateralCtx,
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
// All personas exhausted → human escalation
|
|
280
|
+
this.sessionManager.terminate(sessionId, 'human_escalation');
|
|
281
|
+
this.eventStore.append('execute', sessionId, EventType.EVOLVE_HUMAN_ESCALATION, {
|
|
282
|
+
triedPersonas: session.lateralTriedPersonas,
|
|
283
|
+
bestScore: Math.max(...session.evolutionHistory.map((g) => g.evaluationScore), session.evaluationResult.overallScore),
|
|
284
|
+
});
|
|
285
|
+
const escalation = buildEscalationContext(session.lateralTriedPersonas, session.evaluationResult, session.evolutionHistory);
|
|
286
|
+
return ok({
|
|
287
|
+
session: this.sessionManager.get(sessionId),
|
|
288
|
+
humanEscalation: escalation,
|
|
289
|
+
terminated: true,
|
|
290
|
+
terminationReason: 'human_escalation',
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
catch (e) {
|
|
294
|
+
if (e instanceof ExecuteSessionNotFoundError)
|
|
295
|
+
return err(e);
|
|
296
|
+
return err(new ExecuteError(`Failed lateral evolve: ${e instanceof Error ? e.message : String(e)}`));
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* evolve_lateral_result: Lateral thinking 결과(specPatch) 제출.
|
|
301
|
+
* completeLateral() 후 기존 submitSpecPatch() 위임.
|
|
302
|
+
*/
|
|
303
|
+
submitLateralResult(sessionId, lateralResult) {
|
|
304
|
+
try {
|
|
305
|
+
// Validate session exists
|
|
306
|
+
this.sessionManager.get(sessionId);
|
|
307
|
+
// Complete lateral phase
|
|
308
|
+
this.sessionManager.completeLateral(sessionId, lateralResult.persona, lateralResult.description);
|
|
309
|
+
// Delegate to existing submitSpecPatch
|
|
310
|
+
return this.submitSpecPatch(sessionId, lateralResult.specPatch);
|
|
311
|
+
}
|
|
312
|
+
catch (e) {
|
|
313
|
+
if (e instanceof ExecuteSessionNotFoundError)
|
|
314
|
+
return err(e);
|
|
315
|
+
return err(new ExecuteError(`Failed to submit lateral result: ${e instanceof Error ? e.message : String(e)}`));
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
countStructuralFixes(session) {
|
|
319
|
+
// Count from event history: how many EVOLVE_STRUCTURAL_FIX_STARTED events
|
|
320
|
+
const events = this.eventStore.replay('execute', session.sessionId);
|
|
321
|
+
return events.filter((e) => e.eventType === EventType.EVOLVE_STRUCTURAL_FIX_STARTED).length;
|
|
322
|
+
}
|
|
323
|
+
buildReExecuteContext(session, impactedTaskIds, delta) {
|
|
324
|
+
if (!session.executionPlan)
|
|
325
|
+
return null;
|
|
326
|
+
const plan = session.executionPlan;
|
|
327
|
+
const completedIds = new Set(session.taskResults
|
|
328
|
+
.filter((r) => r.status === 'completed' || r.status === 'skipped')
|
|
329
|
+
.map((r) => r.taskId));
|
|
330
|
+
// Find first impacted task that's not yet completed
|
|
331
|
+
const topoOrder = plan.dagValidation.topologicalOrder;
|
|
332
|
+
for (const taskId of topoOrder) {
|
|
333
|
+
if (!impactedTaskIds.includes(taskId))
|
|
334
|
+
continue;
|
|
335
|
+
if (completedIds.has(taskId))
|
|
336
|
+
continue;
|
|
337
|
+
const task = plan.atomicTasks.find((t) => t.taskId === taskId);
|
|
338
|
+
if (!task)
|
|
339
|
+
continue;
|
|
340
|
+
const depsResolved = task.dependsOn.every((dep) => completedIds.has(dep));
|
|
341
|
+
if (!depsResolved)
|
|
342
|
+
continue;
|
|
343
|
+
const patchSummary = `Fields changed: ${delta.fieldsChanged.join(', ')}`;
|
|
344
|
+
return {
|
|
345
|
+
systemPrompt: mergeSystemPrompt(EXECUTE_EXECUTION_SYSTEM_PROMPT, this.agentRegistry, 'execute'),
|
|
346
|
+
taskPrompt: buildReExecutionPrompt(task, session.spec, session.taskResults, patchSummary),
|
|
347
|
+
phase: 'evolving',
|
|
348
|
+
stage: 're_execute',
|
|
349
|
+
currentTask: task,
|
|
350
|
+
impactedTaskIds,
|
|
351
|
+
patchSummary,
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
return null;
|
|
355
|
+
}
|
|
356
|
+
buildNextReExecuteTaskContext(session) {
|
|
357
|
+
if (!session.executionPlan)
|
|
358
|
+
return null;
|
|
359
|
+
// Find impacted tasks that are not yet completed
|
|
360
|
+
const plan = session.executionPlan;
|
|
361
|
+
const completedIds = new Set(session.taskResults
|
|
362
|
+
.filter((r) => r.status === 'completed' || r.status === 'skipped')
|
|
363
|
+
.map((r) => r.taskId));
|
|
364
|
+
const topoOrder = plan.dagValidation.topologicalOrder;
|
|
365
|
+
for (const taskId of topoOrder) {
|
|
366
|
+
if (completedIds.has(taskId))
|
|
367
|
+
continue;
|
|
368
|
+
const task = plan.atomicTasks.find((t) => t.taskId === taskId);
|
|
369
|
+
if (!task)
|
|
370
|
+
continue;
|
|
371
|
+
const depsResolved = task.dependsOn.every((dep) => completedIds.has(dep));
|
|
372
|
+
if (!depsResolved)
|
|
373
|
+
continue;
|
|
374
|
+
const delta = session.evolutionHistory.length > 0
|
|
375
|
+
? session.evolutionHistory[session.evolutionHistory.length - 1].delta
|
|
376
|
+
: { fieldsChanged: [] };
|
|
377
|
+
const patchSummary = `Fields changed: ${delta.fieldsChanged.join(', ')}`;
|
|
378
|
+
return {
|
|
379
|
+
systemPrompt: mergeSystemPrompt(EXECUTE_EXECUTION_SYSTEM_PROMPT, this.agentRegistry, 'execute'),
|
|
380
|
+
taskPrompt: buildReExecutionPrompt(task, session.spec, session.taskResults, patchSummary),
|
|
381
|
+
phase: 'evolving',
|
|
382
|
+
stage: 're_execute',
|
|
383
|
+
currentTask: task,
|
|
384
|
+
impactedTaskIds: [],
|
|
385
|
+
patchSummary,
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
return null;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
//# sourceMappingURL=evolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evolution.js","sourceRoot":"","sources":["../../../../src/execute/orchestrators/evolution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { TaskExecutionResult, RoleMatch, RolePerspective, RoleConsensus } from '../../core/types.js';
|
|
2
|
+
import { ExecuteError } from '../../core/errors.js';
|
|
3
|
+
import { type Result } from '../../core/result.js';
|
|
4
|
+
import { EventStore } from '../../events/store.js';
|
|
5
|
+
import { ExecuteSessionManager } from '../session.js';
|
|
6
|
+
import type { AgentRegistry } from '../../agent/registry.js';
|
|
7
|
+
import type { RoleAgentRegistry } from '../../agent/role-agent-registry.js';
|
|
8
|
+
import type { TaskExecutionContext, PassthroughRoleMatchResult, PassthroughRoleConsensusResult, PassthroughExecutionStartResult, PassthroughTaskSubmitResult } from './types.js';
|
|
9
|
+
export declare class ExecutionOrchestrator {
|
|
10
|
+
private sessionManager;
|
|
11
|
+
private eventStore;
|
|
12
|
+
private agentRegistry?;
|
|
13
|
+
private roleAgentRegistry?;
|
|
14
|
+
constructor(sessionManager: ExecuteSessionManager, eventStore: EventStore, agentRegistry?: AgentRegistry | undefined, roleAgentRegistry?: RoleAgentRegistry | undefined);
|
|
15
|
+
startExecution(sessionId: string): Result<PassthroughExecutionStartResult, ExecuteError>;
|
|
16
|
+
submitTaskResult(sessionId: string, taskResult: TaskExecutionResult, driftThreshold?: number): Result<PassthroughTaskSubmitResult, ExecuteError>;
|
|
17
|
+
/**
|
|
18
|
+
* role_match: 2-call passthrough pattern.
|
|
19
|
+
* - Call 1 (no matchResult): Returns matchContext for current task
|
|
20
|
+
* - Call 2 (with matchResult): Stores matches, returns perspectivePrompts
|
|
21
|
+
*/
|
|
22
|
+
roleMatch(sessionId: string, matchResult?: RoleMatch[]): Result<PassthroughRoleMatchResult, ExecuteError>;
|
|
23
|
+
/**
|
|
24
|
+
* role_consensus: 2-call passthrough pattern.
|
|
25
|
+
* - Call 1 (perspectives, no consensus): Returns synthesisContext
|
|
26
|
+
* - Call 2 (consensus): Stores consensus, returns roleGuidance
|
|
27
|
+
*/
|
|
28
|
+
roleConsensus(sessionId: string, perspectives?: RolePerspective[], consensus?: RoleConsensus): Result<PassthroughRoleConsensusResult, ExecuteError>;
|
|
29
|
+
/**
|
|
30
|
+
* suggestedFiles를 searchByHybrid(키워드+의미론)로 업그레이드.
|
|
31
|
+
* buildNextTaskContext()는 동기 유지, 호출측에서 필요 시 이 메서드로 보강한다.
|
|
32
|
+
*/
|
|
33
|
+
hydrateSuggestedFiles(context: TaskExecutionContext, repoRoot: string): Promise<TaskExecutionContext>;
|
|
34
|
+
private getCurrentTask;
|
|
35
|
+
private buildNextTaskContext;
|
|
36
|
+
private findSimilarTasks;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../../../src/execute/orchestrators/execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,mBAAmB,EAEnB,SAAS,EACT,eAAe,EACf,aAAa,EAEd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,EAGb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAQtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAI5E,OAAO,KAAK,EACV,oBAAoB,EAEpB,0BAA0B,EAC1B,8BAA8B,EAC9B,+BAA+B,EAC/B,2BAA2B,EAC5B,MAAM,YAAY,CAAC;AA8BpB,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,iBAAiB,CAAC;gBAHlB,cAAc,EAAE,qBAAqB,EACrC,UAAU,EAAE,UAAU,EACtB,aAAa,CAAC,EAAE,aAAa,YAAA,EAC7B,iBAAiB,CAAC,EAAE,iBAAiB,YAAA;IAG/C,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,+BAA+B,EAAE,YAAY,CAAC;IAmCxF,gBAAgB,CACd,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,mBAAmB,EAC/B,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAAC,2BAA2B,EAAE,YAAY,CAAC;IAoFpD;;;;OAIG;IACH,SAAS,CACP,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,SAAS,EAAE,GACxB,MAAM,CAAC,0BAA0B,EAAE,YAAY,CAAC;IA2EnD;;;;OAIG;IACH,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,eAAe,EAAE,EAChC,SAAS,CAAC,EAAE,aAAa,GACxB,MAAM,CAAC,8BAA8B,EAAE,YAAY,CAAC;IA6DvD;;;OAGG;IACG,qBAAqB,CACzB,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC;IAgBhC,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,oBAAoB;IAuE5B,OAAO,CAAC,gBAAgB;CAezB"}
|