@tienne/gestalt 0.25.2 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/package.json +7 -2
  2. package/dist/src/cli/commands/init.d.ts.map +1 -1
  3. package/dist/src/cli/commands/init.js.map +1 -1
  4. package/dist/src/cli/commands/update.d.ts.map +1 -1
  5. package/dist/src/cli/commands/update.js.map +1 -1
  6. package/dist/src/code-graph/engine.d.ts +5 -0
  7. package/dist/src/code-graph/engine.d.ts.map +1 -1
  8. package/dist/src/code-graph/engine.js +15 -2
  9. package/dist/src/code-graph/engine.js.map +1 -1
  10. package/dist/src/code-graph/plugins/java.js +1 -1
  11. package/dist/src/code-graph/plugins/java.js.map +1 -1
  12. package/dist/src/code-graph/storage.d.ts.map +1 -1
  13. package/dist/src/code-graph/storage.js +12 -2
  14. package/dist/src/code-graph/storage.js.map +1 -1
  15. package/dist/src/core/config.js +1 -1
  16. package/dist/src/core/config.js.map +1 -1
  17. package/dist/src/core/errors.d.ts.map +1 -1
  18. package/dist/src/core/errors.js.map +1 -1
  19. package/dist/src/events/store.d.ts +8 -1
  20. package/dist/src/events/store.d.ts.map +1 -1
  21. package/dist/src/events/store.js +141 -20
  22. package/dist/src/events/store.js.map +1 -1
  23. package/dist/src/execute/orchestrators/evaluation.d.ts.map +1 -1
  24. package/dist/src/execute/orchestrators/evaluation.js +1 -1
  25. package/dist/src/execute/orchestrators/evaluation.js.map +1 -1
  26. package/dist/src/gestalt/analyzer.d.ts.map +1 -1
  27. package/dist/src/gestalt/analyzer.js.map +1 -1
  28. package/dist/src/interview/passthrough-engine.d.ts +1 -1
  29. package/dist/src/interview/passthrough-engine.d.ts.map +1 -1
  30. package/dist/src/interview/passthrough-engine.js +4 -1
  31. package/dist/src/interview/passthrough-engine.js.map +1 -1
  32. package/dist/src/knowledge-base/embedding-index.d.ts.map +1 -1
  33. package/dist/src/knowledge-base/embedding-index.js.map +1 -1
  34. package/dist/src/knowledge-base/generator.d.ts.map +1 -1
  35. package/dist/src/knowledge-base/generator.js +1 -11
  36. package/dist/src/knowledge-base/generator.js.map +1 -1
  37. package/dist/src/mcp/schemas.d.ts +10 -10
  38. package/dist/src/mcp/tools/execute/evaluate.d.ts +5 -0
  39. package/dist/src/mcp/tools/execute/evaluate.d.ts.map +1 -0
  40. package/dist/src/mcp/tools/execute/evaluate.js +133 -0
  41. package/dist/src/mcp/tools/execute/evaluate.js.map +1 -0
  42. package/dist/src/mcp/tools/execute/evolve.d.ts +10 -0
  43. package/dist/src/mcp/tools/execute/evolve.d.ts.map +1 -0
  44. package/dist/src/mcp/tools/execute/evolve.js +273 -0
  45. package/dist/src/mcp/tools/execute/evolve.js.map +1 -0
  46. package/dist/src/mcp/tools/execute/execution.d.ts +6 -0
  47. package/dist/src/mcp/tools/execute/execution.d.ts.map +1 -0
  48. package/dist/src/mcp/tools/execute/execution.js +145 -0
  49. package/dist/src/mcp/tools/execute/execution.js.map +1 -0
  50. package/dist/src/mcp/tools/execute/planning.d.ts +7 -0
  51. package/dist/src/mcp/tools/execute/planning.d.ts.map +1 -0
  52. package/dist/src/mcp/tools/execute/planning.js +138 -0
  53. package/dist/src/mcp/tools/execute/planning.js.map +1 -0
  54. package/dist/src/mcp/tools/execute/roles.d.ts +6 -0
  55. package/dist/src/mcp/tools/execute/roles.d.ts.map +1 -0
  56. package/dist/src/mcp/tools/execute/roles.js +73 -0
  57. package/dist/src/mcp/tools/execute/roles.js.map +1 -0
  58. package/dist/src/mcp/tools/execute/types.d.ts +5 -0
  59. package/dist/src/mcp/tools/execute/types.d.ts.map +1 -0
  60. package/dist/src/mcp/tools/execute/types.js +2 -0
  61. package/dist/src/mcp/tools/execute/types.js.map +1 -0
  62. package/dist/src/mcp/tools/execute/utility.d.ts +8 -0
  63. package/dist/src/mcp/tools/execute/utility.d.ts.map +1 -0
  64. package/dist/src/mcp/tools/execute/utility.js +206 -0
  65. package/dist/src/mcp/tools/execute/utility.js.map +1 -0
  66. package/dist/src/mcp/tools/execute/utils.d.ts +5 -0
  67. package/dist/src/mcp/tools/execute/utils.d.ts.map +1 -0
  68. package/dist/src/mcp/tools/execute/utils.js +44 -0
  69. package/dist/src/mcp/tools/execute/utils.js.map +1 -0
  70. package/dist/src/mcp/tools/execute-passthrough.d.ts +1 -1
  71. package/dist/src/mcp/tools/execute-passthrough.d.ts.map +1 -1
  72. package/dist/src/mcp/tools/execute-passthrough.js +31 -997
  73. package/dist/src/mcp/tools/execute-passthrough.js.map +1 -1
  74. package/dist/src/mcp/tools/generate-kb.d.ts.map +1 -1
  75. package/dist/src/mcp/tools/generate-kb.js +1 -1
  76. package/dist/src/mcp/tools/generate-kb.js.map +1 -1
  77. package/dist/src/mcp/tools/interview-passthrough.d.ts.map +1 -1
  78. package/dist/src/mcp/tools/interview-passthrough.js +7 -1
  79. package/dist/src/mcp/tools/interview-passthrough.js.map +1 -1
  80. package/dist/src/mcp/tools/spec-passthrough.d.ts.map +1 -1
  81. package/dist/src/mcp/tools/spec-passthrough.js +6 -2
  82. package/dist/src/mcp/tools/spec-passthrough.js.map +1 -1
  83. package/dist/src/mcp/tools/status.js.map +1 -1
  84. package/dist/src/registry/base-registry.d.ts.map +1 -1
  85. package/dist/src/registry/base-registry.js +16 -3
  86. package/dist/src/registry/base-registry.js.map +1 -1
  87. package/dist/src/review/context-collector.d.ts +4 -3
  88. package/dist/src/review/context-collector.d.ts.map +1 -1
  89. package/dist/src/review/context-collector.js +22 -5
  90. package/dist/src/review/context-collector.js.map +1 -1
  91. package/dist/src/review/passthrough-engine.d.ts.map +1 -1
  92. package/dist/src/review/passthrough-engine.js +1 -1
  93. package/dist/src/review/passthrough-engine.js.map +1 -1
  94. package/package.json +7 -2
@@ -0,0 +1,133 @@
1
+ import { ProjectMemoryStore } from '../../../memory/project-memory-store.js';
2
+ import { gestaltNotify } from '../../../utils/notifier.js';
3
+ import { deleteGestaltRule, deleteActiveSession, } from '../../../execute/rule-writer.js';
4
+ import { formatError, stripContextPrompts } from './utils.js';
5
+ export function handleEvaluate(engine, input, client) {
6
+ const verbose = input.verbose !== false;
7
+ if (!input.sessionId)
8
+ return formatError('sessionId is required for evaluate action');
9
+ // Call 3: Submit contextual evaluation result
10
+ if (input.evaluationResult) {
11
+ const result = engine.submitEvaluation(input.sessionId, input.evaluationResult);
12
+ if (!result.ok)
13
+ return formatError(result.error.message);
14
+ const { evaluationResult } = result.value;
15
+ const completedSession = result.value.session;
16
+ // Update project memory on execution completion
17
+ try {
18
+ const memoryStore = new ProjectMemoryStore();
19
+ const completedTasks = completedSession.taskResults
20
+ .filter((t) => t.status === 'completed')
21
+ .map((t) => t.taskId);
22
+ const failedTasks = completedSession.taskResults
23
+ .filter((t) => t.status === 'failed')
24
+ .map((t) => t.taskId);
25
+ const score = evaluationResult?.overallScore ?? 0;
26
+ const goalAlign = evaluationResult?.goalAlignment ?? 0;
27
+ memoryStore.addExecution({
28
+ executeSessionId: completedSession.sessionId,
29
+ specId: completedSession.specId,
30
+ completedTasks,
31
+ failedTasks,
32
+ resultSummary: `Score: ${score.toFixed(2)}, goalAlignment: ${goalAlign.toFixed(2)}`,
33
+ completedAt: new Date().toISOString(),
34
+ });
35
+ }
36
+ catch {
37
+ // Memory update failure should not block the response
38
+ }
39
+ if (input.cwd) {
40
+ try {
41
+ deleteGestaltRule(input.cwd, client);
42
+ deleteActiveSession(input.cwd);
43
+ }
44
+ catch {
45
+ // Cleanup failure should not block the response
46
+ }
47
+ }
48
+ const score = evaluationResult.overallScore;
49
+ const alignment = evaluationResult.goalAlignment;
50
+ const success = score >= 0.85 && alignment >= 0.8;
51
+ gestaltNotify({
52
+ event: success ? 'evaluation_success' : 'evaluation_failed',
53
+ message: success
54
+ ? `평가 성공 ✓ score: ${score.toFixed(2)}, alignment: ${alignment.toFixed(2)}`
55
+ : `평가 미달 score: ${score.toFixed(2)}, alignment: ${alignment.toFixed(2)} — Evolve 진입`,
56
+ });
57
+ const evalCompleteExtra = success
58
+ ? { hint: '구현 완료! score ≥ 0.85, alignment ≥ 0.80 달성.' }
59
+ : {
60
+ nextAction: 'evolve',
61
+ nextActionParams: { sessionId: completedSession.sessionId },
62
+ hint: '점수 미달. evolve를 호출해 개선하세요.',
63
+ };
64
+ return JSON.stringify({
65
+ status: 'completed',
66
+ sessionId: completedSession.sessionId,
67
+ stage: 'complete',
68
+ evaluationResult,
69
+ message: `Evaluation complete. Overall score: ${score.toFixed(2)}, goal alignment: ${alignment.toFixed(2)}. Session is now completed.`,
70
+ ...evalCompleteExtra,
71
+ }, null, 2);
72
+ }
73
+ // Call 2: Submit structural results
74
+ if (input.structuralResult) {
75
+ const result = engine.submitStructuralResult(input.sessionId, input.structuralResult);
76
+ if (!result.ok)
77
+ return formatError(result.error.message);
78
+ const { stage, shortCircuited, contextualContext, evaluationResult } = result.value;
79
+ if (shortCircuited) {
80
+ gestaltNotify({
81
+ event: 'structural_failed',
82
+ message: 'Structural 검사 실패 — lint/build/test를 확인하세요',
83
+ });
84
+ const evalShortCircuitGuide = {
85
+ nextAction: 'evolve',
86
+ nextActionParams: { sessionId: result.value.session.sessionId },
87
+ hint: '점수 미달. evolve를 호출해 개선하세요.',
88
+ };
89
+ return JSON.stringify({
90
+ status: 'completed',
91
+ sessionId: result.value.session.sessionId,
92
+ stage: 'complete',
93
+ shortCircuited: true,
94
+ evaluationResult,
95
+ message: 'Structural checks failed. Evaluation short-circuited. Fix structural issues and retry.',
96
+ ...evalShortCircuitGuide,
97
+ }, null, 2);
98
+ }
99
+ const evalContextualGuide = {
100
+ nextAction: 'evaluate',
101
+ nextActionParams: { sessionId: result.value.session.sessionId },
102
+ hint: 'evaluationContext에 따라 각 AC를 검증하고 결과를 제출하세요.',
103
+ };
104
+ return JSON.stringify({
105
+ status: 'evaluating',
106
+ sessionId: result.value.session.sessionId,
107
+ stage,
108
+ contextualContext: verbose
109
+ ? contextualContext
110
+ : stripContextPrompts(contextualContext),
111
+ message: 'Structural checks passed. Use contextualContext.evaluatePrompt with contextualContext.systemPrompt to generate the contextual evaluation.',
112
+ ...evalContextualGuide,
113
+ }, null, 2);
114
+ }
115
+ // Call 1: Start evaluation → return structural commands
116
+ const result = engine.startEvaluation(input.sessionId);
117
+ if (!result.ok)
118
+ return formatError(result.error.message);
119
+ const evalStructuralGuide = {
120
+ nextAction: 'evaluate',
121
+ nextActionParams: { sessionId: result.value.session.sessionId },
122
+ hint: 'structuralContext에 따라 lint/build/test를 실행하고 결과를 제출하세요.',
123
+ };
124
+ return JSON.stringify({
125
+ status: 'evaluating',
126
+ sessionId: result.value.session.sessionId,
127
+ stage: 'structural',
128
+ structuralContext: result.value.structuralContext,
129
+ message: 'Run structural checks (lint, build, test) and submit results with structuralResult.',
130
+ ...evalStructuralGuide,
131
+ }, null, 2);
132
+ }
133
+ //# sourceMappingURL=evaluate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../../../../src/mcp/tools/execute/evaluate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { PassthroughExecuteEngine } from '../../../execute/passthrough-engine.js';
2
+ import type { ExecuteInput } from '../../schemas.js';
3
+ import { type ClientType } from '../../../execute/rule-writer.js';
4
+ export declare function handleEvolveFix(engine: PassthroughExecuteEngine, input: ExecuteInput, _client: ClientType): string;
5
+ export declare function handleEvolve(engine: PassthroughExecuteEngine, input: ExecuteInput, client: ClientType): string;
6
+ export declare function handleEvolvePatch(engine: PassthroughExecuteEngine, input: ExecuteInput, client: ClientType): string;
7
+ export declare function handleEvolveReExecute(engine: PassthroughExecuteEngine, input: ExecuteInput, _client: ClientType): string;
8
+ export declare function handleEvolveLateral(engine: PassthroughExecuteEngine, input: ExecuteInput, client: ClientType): string;
9
+ export declare function handleEvolveLateralResult(engine: PassthroughExecuteEngine, input: ExecuteInput, _client: ClientType): string;
10
+ //# sourceMappingURL=evolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evolve.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/tools/execute/evolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,iCAAiC,CAAC;AAGzC,wBAAgB,eAAe,CAC7B,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,UAAU,GAClB,MAAM,CA4CR;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,UAAU,GACjB,MAAM,CAyGR;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,UAAU,GACjB,MAAM,CA2DR;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,UAAU,GAClB,MAAM,CA4CR;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,UAAU,GACjB,MAAM,CAkDR;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,UAAU,GAClB,MAAM,CAoCR"}
@@ -0,0 +1,273 @@
1
+ import { gestaltNotify } from '../../../utils/notifier.js';
2
+ import { deleteGestaltRule, deleteActiveSession, updateGestaltRule, } from '../../../execute/rule-writer.js';
3
+ import { formatError } from './utils.js';
4
+ export function handleEvolveFix(engine, input, _client) {
5
+ if (!input.sessionId)
6
+ return formatError('sessionId is required for evolve_fix action');
7
+ const fixResult = engine.startStructuralFix(input.sessionId, input.fixTasks);
8
+ if (!fixResult.ok)
9
+ return formatError(fixResult.error.message);
10
+ const { fixContext } = fixResult.value;
11
+ if (fixContext) {
12
+ const evolveFixGuide = {
13
+ nextAction: 'evolve_fix',
14
+ nextActionParams: { sessionId: fixResult.value.session.sessionId },
15
+ hint: 'fixContext에 따라 lint/build/test 오류를 수정하세요.',
16
+ };
17
+ return JSON.stringify({
18
+ status: 'evolving',
19
+ sessionId: fixResult.value.session.sessionId,
20
+ stage: 'fix',
21
+ fixContext,
22
+ message: 'Structural failures detected. Use fixContext to generate fix tasks, then re-submit with fixTasks.',
23
+ ...evolveFixGuide,
24
+ }, null, 2);
25
+ }
26
+ const evolveFixAppliedGuide = {
27
+ nextAction: 'evaluate',
28
+ nextActionParams: { sessionId: fixResult.value.session.sessionId },
29
+ hint: 'fixContext에 따라 lint/build/test 오류를 수정하세요.',
30
+ };
31
+ return JSON.stringify({
32
+ status: 'fix_applied',
33
+ sessionId: fixResult.value.session.sessionId,
34
+ message: 'Fix tasks recorded. Call evaluate to re-run structural checks.',
35
+ ...evolveFixAppliedGuide,
36
+ }, null, 2);
37
+ }
38
+ export function handleEvolve(engine, input, client) {
39
+ if (!input.sessionId)
40
+ return formatError('sessionId is required for evolve action');
41
+ const evolveResult = engine.startContextualEvolve(input.sessionId, input.terminateReason);
42
+ if (!evolveResult.ok)
43
+ return formatError(evolveResult.error.message);
44
+ if (evolveResult.value.lateralContext) {
45
+ const evolveLateralGuide = {
46
+ nextAction: 'evolve_lateral_result',
47
+ nextActionParams: { sessionId: evolveResult.value.session.sessionId },
48
+ hint: 'lateralContext.lateralPrompt를 사용해 관점 전환 결과를 제출하세요.',
49
+ };
50
+ return JSON.stringify({
51
+ status: 'lateral_thinking',
52
+ sessionId: evolveResult.value.session.sessionId,
53
+ lateralContext: evolveResult.value.lateralContext,
54
+ message: `Stagnation detected. Lateral thinking activated: ${evolveResult.value.lateralContext.persona} persona (attempt ${evolveResult.value.lateralContext.attemptNumber}/4). Use lateralContext to generate a lateral SpecPatch, then submit with evolve_lateral_result.`,
55
+ ...evolveLateralGuide,
56
+ }, null, 2);
57
+ }
58
+ if (evolveResult.value.humanEscalation) {
59
+ if (input.cwd) {
60
+ try {
61
+ deleteGestaltRule(input.cwd, client);
62
+ deleteActiveSession(input.cwd);
63
+ }
64
+ catch {
65
+ /* ignore */
66
+ }
67
+ }
68
+ gestaltNotify({
69
+ event: 'human_escalation',
70
+ message: '⚠️ Human Escalation — 모든 Lateral Thinking 소진, 수동 개입이 필요해요',
71
+ });
72
+ return JSON.stringify({
73
+ status: 'human_escalation',
74
+ sessionId: evolveResult.value.session.sessionId,
75
+ terminationReason: 'human_escalation',
76
+ escalationContext: evolveResult.value.humanEscalation,
77
+ evolutionHistory: evolveResult.value.session.evolutionHistory.map((g) => ({
78
+ generation: g.generation,
79
+ score: g.evaluationScore,
80
+ goalAlignment: g.goalAlignment,
81
+ fieldsChanged: g.delta.fieldsChanged,
82
+ })),
83
+ message: 'All lateral thinking personas exhausted. Human intervention required.',
84
+ }, null, 2);
85
+ }
86
+ if (evolveResult.value.terminated) {
87
+ if (input.cwd) {
88
+ try {
89
+ deleteGestaltRule(input.cwd, client);
90
+ deleteActiveSession(input.cwd);
91
+ }
92
+ catch {
93
+ /* ignore */
94
+ }
95
+ }
96
+ gestaltNotify({
97
+ event: 'terminated',
98
+ message: `세션 종료: ${evolveResult.value.terminationReason ?? 'unknown'}`,
99
+ });
100
+ return JSON.stringify({
101
+ status: 'terminated',
102
+ sessionId: evolveResult.value.session.sessionId,
103
+ terminationReason: evolveResult.value.terminationReason,
104
+ evolutionHistory: evolveResult.value.session.evolutionHistory.map((g) => ({
105
+ generation: g.generation,
106
+ score: g.evaluationScore,
107
+ goalAlignment: g.goalAlignment,
108
+ fieldsChanged: g.delta.fieldsChanged,
109
+ })),
110
+ message: `Evolution terminated: ${evolveResult.value.terminationReason}.`,
111
+ }, null, 2);
112
+ }
113
+ const evolveGuide = {
114
+ nextAction: 'evolve_patch',
115
+ nextActionParams: { sessionId: evolveResult.value.session.sessionId },
116
+ hint: 'evolveContext에 따라 specPatch를 작성하세요.',
117
+ };
118
+ return JSON.stringify({
119
+ status: 'evolving',
120
+ sessionId: evolveResult.value.session.sessionId,
121
+ stage: 'evolve',
122
+ evolveContext: evolveResult.value.evolveContext,
123
+ message: 'Use evolveContext to generate a Spec patch, then submit with evolve_patch.',
124
+ ...evolveGuide,
125
+ }, null, 2);
126
+ }
127
+ export function handleEvolvePatch(engine, input, client) {
128
+ if (!input.sessionId)
129
+ return formatError('sessionId is required for evolve_patch action');
130
+ if (!input.specPatch)
131
+ return formatError('specPatch is required for evolve_patch action');
132
+ const patchResult = engine.submitSpecPatch(input.sessionId, input.specPatch);
133
+ if (!patchResult.ok)
134
+ return formatError(patchResult.error.message);
135
+ const { impactedTaskIds, reExecuteContext } = patchResult.value;
136
+ if (input.cwd) {
137
+ try {
138
+ const patchedSession = patchResult.value.session;
139
+ updateGestaltRule(input.cwd, { goal: patchedSession.spec.goal, constraints: patchedSession.spec.constraints }, null, client);
140
+ }
141
+ catch {
142
+ // Rule file update failure should not block execution
143
+ }
144
+ }
145
+ if (impactedTaskIds.length === 0) {
146
+ const evolvePatchNoTasksGuide = {
147
+ nextAction: 'evaluate',
148
+ nextActionParams: { sessionId: patchResult.value.session.sessionId },
149
+ hint: 'impactedTaskIds의 태스크를 재실행하세요.',
150
+ };
151
+ return JSON.stringify({
152
+ status: 'patch_applied',
153
+ sessionId: patchResult.value.session.sessionId,
154
+ impactedTaskIds: [],
155
+ message: 'Spec patched. No tasks need re-execution. Call evaluate to re-assess.',
156
+ ...evolvePatchNoTasksGuide,
157
+ }, null, 2);
158
+ }
159
+ const evolvePatchGuide = {
160
+ nextAction: 'evolve_re_execute',
161
+ nextActionParams: { sessionId: patchResult.value.session.sessionId },
162
+ hint: 'impactedTaskIds의 태스크를 재실행하세요.',
163
+ };
164
+ return JSON.stringify({
165
+ status: 're_executing',
166
+ sessionId: patchResult.value.session.sessionId,
167
+ impactedTaskIds,
168
+ reExecuteContext,
169
+ message: `Spec patched. ${impactedTaskIds.length} tasks need re-execution. Use reExecuteContext to implement the task.`,
170
+ ...evolvePatchGuide,
171
+ }, null, 2);
172
+ }
173
+ export function handleEvolveReExecute(engine, input, _client) {
174
+ if (!input.sessionId)
175
+ return formatError('sessionId is required for evolve_re_execute action');
176
+ if (!input.reExecuteTaskResult)
177
+ return formatError('reExecuteTaskResult is required for evolve_re_execute action');
178
+ const reExecResult = engine.submitReExecuteTaskResult(input.sessionId, input.reExecuteTaskResult);
179
+ if (!reExecResult.ok)
180
+ return formatError(reExecResult.error.message);
181
+ const { reExecuteContext: nextContext, allTasksCompleted } = reExecResult.value;
182
+ if (allTasksCompleted) {
183
+ const reExecDoneGuide = {
184
+ nextAction: 'evaluate',
185
+ nextActionParams: { sessionId: reExecResult.value.session.sessionId },
186
+ hint: '재실행 완료. evaluate를 다시 호출하세요.',
187
+ };
188
+ return JSON.stringify({
189
+ status: 're_execute_complete',
190
+ sessionId: reExecResult.value.session.sessionId,
191
+ message: 'All impacted tasks re-executed. Call evaluate to re-assess.',
192
+ ...reExecDoneGuide,
193
+ }, null, 2);
194
+ }
195
+ const reExecGuide = {
196
+ nextAction: 'evolve_re_execute',
197
+ nextActionParams: { sessionId: reExecResult.value.session.sessionId },
198
+ hint: '재실행 계속. 남은 태스크를 완료하세요.',
199
+ };
200
+ return JSON.stringify({
201
+ status: 're_executing',
202
+ sessionId: reExecResult.value.session.sessionId,
203
+ reExecuteContext: nextContext,
204
+ message: 'Task recorded. Use reExecuteContext to implement the next re-execution task.',
205
+ ...reExecGuide,
206
+ }, null, 2);
207
+ }
208
+ export function handleEvolveLateral(engine, input, client) {
209
+ if (!input.sessionId)
210
+ return formatError('sessionId is required for evolve_lateral action');
211
+ const lateralResult = engine.startLateralEvolve(input.sessionId);
212
+ if (!lateralResult.ok)
213
+ return formatError(lateralResult.error.message);
214
+ if (lateralResult.value.terminated) {
215
+ if (input.cwd) {
216
+ try {
217
+ deleteGestaltRule(input.cwd, client);
218
+ deleteActiveSession(input.cwd);
219
+ }
220
+ catch {
221
+ /* ignore */
222
+ }
223
+ }
224
+ return JSON.stringify({
225
+ status: lateralResult.value.terminationReason === 'human_escalation'
226
+ ? 'human_escalation'
227
+ : 'terminated',
228
+ sessionId: lateralResult.value.session.sessionId,
229
+ terminationReason: lateralResult.value.terminationReason,
230
+ ...(lateralResult.value.humanEscalation
231
+ ? { escalationContext: lateralResult.value.humanEscalation }
232
+ : {}),
233
+ message: lateralResult.value.terminationReason === 'human_escalation'
234
+ ? 'All lateral thinking personas exhausted. Human intervention required.'
235
+ : `Evolution terminated: ${lateralResult.value.terminationReason}.`,
236
+ }, null, 2);
237
+ }
238
+ if (lateralResult.value.lateralContext) {
239
+ return JSON.stringify({
240
+ status: 'lateral_thinking',
241
+ sessionId: lateralResult.value.session.sessionId,
242
+ lateralContext: lateralResult.value.lateralContext,
243
+ message: `Lateral thinking: ${lateralResult.value.lateralContext.persona} persona (attempt ${lateralResult.value.lateralContext.attemptNumber}/4). Use lateralContext to generate a lateral SpecPatch, then submit with evolve_lateral_result.`,
244
+ }, null, 2);
245
+ }
246
+ return formatError('Unexpected state in evolve_lateral');
247
+ }
248
+ export function handleEvolveLateralResult(engine, input, _client) {
249
+ if (!input.sessionId)
250
+ return formatError('sessionId is required for evolve_lateral_result action');
251
+ if (!input.lateralResult)
252
+ return formatError('lateralResult is required for evolve_lateral_result action');
253
+ const lrResult = engine.submitLateralResult(input.sessionId, input.lateralResult);
254
+ if (!lrResult.ok)
255
+ return formatError(lrResult.error.message);
256
+ const { impactedTaskIds, reExecuteContext: lrReExecCtx } = lrResult.value;
257
+ if (impactedTaskIds.length === 0) {
258
+ return JSON.stringify({
259
+ status: 'lateral_patch_applied',
260
+ sessionId: lrResult.value.session.sessionId,
261
+ impactedTaskIds: [],
262
+ message: 'Lateral spec patch applied. No tasks need re-execution. Call evaluate to re-assess.',
263
+ }, null, 2);
264
+ }
265
+ return JSON.stringify({
266
+ status: 're_executing',
267
+ sessionId: lrResult.value.session.sessionId,
268
+ impactedTaskIds,
269
+ reExecuteContext: lrReExecCtx,
270
+ message: `Lateral spec patch applied. ${impactedTaskIds.length} tasks need re-execution. Use reExecuteContext to implement the task.`,
271
+ }, null, 2);
272
+ }
273
+ //# sourceMappingURL=evolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evolve.js","sourceRoot":"","sources":["../../../../../src/mcp/tools/execute/evolve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { PassthroughExecuteEngine } from '../../../execute/passthrough-engine.js';
2
+ import type { ExecuteInput } from '../../schemas.js';
3
+ import { type ClientType } from '../../../execute/rule-writer.js';
4
+ export declare function handleExecuteStart(engine: PassthroughExecuteEngine, input: ExecuteInput, client: ClientType): Promise<string>;
5
+ export declare function handleExecuteTask(engine: PassthroughExecuteEngine, input: ExecuteInput, client: ClientType): Promise<string>;
6
+ //# sourceMappingURL=execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/tools/execute/execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,iCAAiC,CAAC;AAGzC,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,MAAM,CAAC,CAqEjB;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,MAAM,CAAC,CA4GjB"}
@@ -0,0 +1,145 @@
1
+ import { gestaltNotify } from '../../../utils/notifier.js';
2
+ import { writeGestaltRule, updateGestaltRule, writeActiveSession, } from '../../../execute/rule-writer.js';
3
+ import { formatError, applyTaskContextFilters, slimRetrospectiveContext } from './utils.js';
4
+ export async function handleExecuteStart(engine, input, client) {
5
+ const verbose = input.verbose !== false;
6
+ if (!input.sessionId)
7
+ return formatError('sessionId is required for execute_start action');
8
+ const result = engine.startExecution(input.sessionId);
9
+ if (!result.ok)
10
+ return formatError(result.error.message);
11
+ const { session, allTasksCompleted } = result.value;
12
+ let { taskContext } = result.value;
13
+ if (allTasksCompleted) {
14
+ const execStartDoneGuide = {
15
+ nextAction: 'evaluate',
16
+ nextActionParams: { sessionId: session.sessionId },
17
+ hint: '모든 태스크 완료. evaluate를 호출하세요.',
18
+ };
19
+ return JSON.stringify({
20
+ status: 'all_tasks_completed',
21
+ sessionId: session.sessionId,
22
+ message: 'All tasks already completed. Call evaluate to verify acceptance criteria.',
23
+ ...execStartDoneGuide,
24
+ }, null, 2);
25
+ }
26
+ // Hybrid search로 suggestedFiles 업그레이드 (codeGraphRepoRoot 있을 때)
27
+ if (taskContext && session.codeGraphRepoRoot) {
28
+ taskContext = await engine.hydrateSuggestedFiles(taskContext, session.codeGraphRepoRoot);
29
+ }
30
+ if (input.cwd) {
31
+ try {
32
+ const currentTask = taskContext
33
+ ? { taskId: taskContext.currentTask.taskId, title: taskContext.currentTask.title }
34
+ : null;
35
+ writeGestaltRule(input.cwd, { goal: session.spec.goal, constraints: session.spec.constraints }, currentTask, client);
36
+ writeActiveSession(input.cwd, session.sessionId, session.specId);
37
+ }
38
+ catch {
39
+ // Rule file creation failure should not block execution
40
+ }
41
+ }
42
+ const execStartGuide = {
43
+ nextAction: 'execute_task',
44
+ nextActionParams: { sessionId: session.sessionId },
45
+ hint: `첫 번째 태스크: ${taskContext?.currentTask.title ?? ''}. taskContext.taskPrompt를 사용해 구현하세요.`,
46
+ };
47
+ return JSON.stringify({
48
+ status: 'executing',
49
+ sessionId: session.sessionId,
50
+ taskContext: taskContext
51
+ ? applyTaskContextFilters(taskContext, verbose)
52
+ : taskContext,
53
+ message: `Execution started. Use taskContext.taskPrompt to implement the task, then submit with execute_task.`,
54
+ ...execStartGuide,
55
+ }, null, 2);
56
+ }
57
+ export async function handleExecuteTask(engine, input, client) {
58
+ const verbose = input.verbose !== false;
59
+ if (!input.sessionId)
60
+ return formatError('sessionId is required for execute_task action');
61
+ if (!input.taskResult)
62
+ return formatError('taskResult is required for execute_task action');
63
+ const result = engine.submitTaskResult(input.sessionId, input.taskResult);
64
+ if (!result.ok)
65
+ return formatError(result.error.message);
66
+ const { session, allTasksCompleted, driftScore, retrospectiveContext } = result.value;
67
+ let { taskContext } = result.value;
68
+ if (allTasksCompleted) {
69
+ gestaltNotify({
70
+ event: 'tasks_completed',
71
+ message: `모든 태스크 완료 (${session.taskResults.length}개) — evaluate를 호출하세요`,
72
+ });
73
+ const execTaskDoneGuide = {
74
+ nextAction: 'evaluate',
75
+ nextActionParams: { sessionId: session.sessionId },
76
+ hint: '모든 태스크 완료. evaluate를 호출하세요.',
77
+ };
78
+ const doneTotal = session.executionPlan?.atomicTasks.length ?? 0;
79
+ const doneCompleted = session.taskResults.length;
80
+ const doneProgress = {
81
+ completed: doneCompleted,
82
+ total: doneTotal,
83
+ percent: doneTotal > 0 ? Math.round((doneCompleted / doneTotal) * 100) : 0,
84
+ };
85
+ return JSON.stringify({
86
+ status: 'all_tasks_completed',
87
+ sessionId: session.sessionId,
88
+ completedTasks: session.taskResults.length,
89
+ progress: doneProgress,
90
+ ...(driftScore ? { driftScore } : {}),
91
+ ...(retrospectiveContext
92
+ ? {
93
+ retrospectiveContext: slimRetrospectiveContext(retrospectiveContext),
94
+ }
95
+ : {}),
96
+ message: 'All tasks completed. Call evaluate to verify acceptance criteria.',
97
+ ...execTaskDoneGuide,
98
+ }, null, 2);
99
+ }
100
+ // Hybrid search로 suggestedFiles 업그레이드
101
+ if (taskContext && session.codeGraphRepoRoot) {
102
+ taskContext = await engine.hydrateSuggestedFiles(taskContext, session.codeGraphRepoRoot);
103
+ }
104
+ if (input.cwd && taskContext) {
105
+ try {
106
+ updateGestaltRule(input.cwd, { goal: session.spec.goal, constraints: session.spec.constraints }, { taskId: taskContext.currentTask.taskId, title: taskContext.currentTask.title }, client);
107
+ }
108
+ catch {
109
+ // Rule file update failure should not block execution
110
+ }
111
+ }
112
+ const compressionAvailable = session.taskResults.length > 5;
113
+ const execTaskNextId = taskContext?.currentTask.taskId ?? '';
114
+ const execTaskGuide = {
115
+ nextAction: 'execute_task',
116
+ nextActionParams: { sessionId: session.sessionId },
117
+ hint: `다음 태스크: ${execTaskNextId}. 계속 실행하세요.`,
118
+ };
119
+ const execTotal = session.executionPlan?.atomicTasks.length ?? 0;
120
+ const execCompleted = session.taskResults.length;
121
+ const execProgress = {
122
+ completed: execCompleted,
123
+ total: execTotal,
124
+ percent: execTotal > 0 ? Math.round((execCompleted / execTotal) * 100) : 0,
125
+ };
126
+ return JSON.stringify({
127
+ status: 'executing',
128
+ sessionId: session.sessionId,
129
+ completedTasks: session.taskResults.length,
130
+ progress: execProgress,
131
+ taskContext: taskContext
132
+ ? applyTaskContextFilters(taskContext, verbose)
133
+ : taskContext,
134
+ ...(compressionAvailable ? { compressionAvailable: true } : {}),
135
+ ...(driftScore ? { driftScore } : {}),
136
+ ...(retrospectiveContext
137
+ ? {
138
+ retrospectiveContext: slimRetrospectiveContext(retrospectiveContext),
139
+ }
140
+ : {}),
141
+ message: `Task "${input.taskResult.taskId}" recorded.${driftScore?.thresholdExceeded ? ' WARNING: Drift threshold exceeded! Review retrospectiveContext.' : ''}${compressionAvailable ? ' TIP: Context is getting long — consider calling compress to summarize completed work.' : ''} Use taskContext.taskPrompt to implement the next task.`,
142
+ ...execTaskGuide,
143
+ }, null, 2);
144
+ }
145
+ //# sourceMappingURL=execution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../../../../src/mcp/tools/execute/execution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { PassthroughExecuteEngine } from '../../../execute/passthrough-engine.js';
2
+ import type { ExecuteInput } from '../../schemas.js';
3
+ import type { ClientType } from '../../../execute/rule-writer.js';
4
+ export declare function handleStart(engine: PassthroughExecuteEngine, input: ExecuteInput, _client: ClientType): string;
5
+ export declare function handlePlanStep(engine: PassthroughExecuteEngine, input: ExecuteInput, _client: ClientType): string;
6
+ export declare function handlePlanComplete(engine: PassthroughExecuteEngine, input: ExecuteInput, _client: ClientType): string;
7
+ //# sourceMappingURL=planning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/tools/execute/planning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAGlE,wBAAgB,WAAW,CACzB,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,UAAU,GAClB,MAAM,CA8BR;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,UAAU,GAClB,MAAM,CAwDR;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,UAAU,GAClB,MAAM,CA+CR"}