@tienne/gestalt 0.25.1 → 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.
- package/dist/package.json +7 -2
- package/dist/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/update.d.ts.map +1 -1
- package/dist/src/cli/commands/update.js.map +1 -1
- package/dist/src/code-graph/engine.d.ts +5 -0
- package/dist/src/code-graph/engine.d.ts.map +1 -1
- package/dist/src/code-graph/engine.js +15 -2
- package/dist/src/code-graph/engine.js.map +1 -1
- package/dist/src/code-graph/plugins/java.js +1 -1
- package/dist/src/code-graph/plugins/java.js.map +1 -1
- package/dist/src/code-graph/storage.d.ts.map +1 -1
- package/dist/src/code-graph/storage.js +12 -2
- package/dist/src/code-graph/storage.js.map +1 -1
- package/dist/src/core/config.js +1 -1
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/errors.d.ts.map +1 -1
- package/dist/src/core/errors.js.map +1 -1
- package/dist/src/events/store.d.ts +21 -2
- package/dist/src/events/store.d.ts.map +1 -1
- package/dist/src/events/store.js +141 -20
- package/dist/src/events/store.js.map +1 -1
- package/dist/src/execute/orchestrators/evaluation.d.ts.map +1 -1
- package/dist/src/execute/orchestrators/evaluation.js +1 -1
- package/dist/src/execute/orchestrators/evaluation.js.map +1 -1
- package/dist/src/execute/repository.d.ts +2 -2
- package/dist/src/execute/repository.d.ts.map +1 -1
- package/dist/src/execute/repository.js.map +1 -1
- package/dist/src/execute/session.d.ts +2 -2
- package/dist/src/execute/session.d.ts.map +1 -1
- package/dist/src/execute/session.js.map +1 -1
- package/dist/src/gestalt/analyzer.d.ts.map +1 -1
- package/dist/src/gestalt/analyzer.js.map +1 -1
- package/dist/src/interview/passthrough-engine.d.ts +1 -1
- package/dist/src/interview/passthrough-engine.d.ts.map +1 -1
- package/dist/src/interview/passthrough-engine.js +4 -1
- package/dist/src/interview/passthrough-engine.js.map +1 -1
- package/dist/src/interview/repository.d.ts +2 -2
- package/dist/src/interview/repository.d.ts.map +1 -1
- package/dist/src/interview/repository.js.map +1 -1
- package/dist/src/interview/session.d.ts +2 -2
- package/dist/src/interview/session.d.ts.map +1 -1
- package/dist/src/interview/session.js.map +1 -1
- package/dist/src/knowledge-base/embedding-index.d.ts.map +1 -1
- package/dist/src/knowledge-base/embedding-index.js.map +1 -1
- package/dist/src/knowledge-base/generator.d.ts.map +1 -1
- package/dist/src/knowledge-base/generator.js +1 -11
- package/dist/src/knowledge-base/generator.js.map +1 -1
- package/dist/src/mcp/schemas.d.ts +10 -10
- package/dist/src/mcp/tools/execute/evaluate.d.ts +5 -0
- package/dist/src/mcp/tools/execute/evaluate.d.ts.map +1 -0
- package/dist/src/mcp/tools/execute/evaluate.js +133 -0
- package/dist/src/mcp/tools/execute/evaluate.js.map +1 -0
- package/dist/src/mcp/tools/execute/evolve.d.ts +10 -0
- package/dist/src/mcp/tools/execute/evolve.d.ts.map +1 -0
- package/dist/src/mcp/tools/execute/evolve.js +273 -0
- package/dist/src/mcp/tools/execute/evolve.js.map +1 -0
- package/dist/src/mcp/tools/execute/execution.d.ts +6 -0
- package/dist/src/mcp/tools/execute/execution.d.ts.map +1 -0
- package/dist/src/mcp/tools/execute/execution.js +145 -0
- package/dist/src/mcp/tools/execute/execution.js.map +1 -0
- package/dist/src/mcp/tools/execute/planning.d.ts +7 -0
- package/dist/src/mcp/tools/execute/planning.d.ts.map +1 -0
- package/dist/src/mcp/tools/execute/planning.js +138 -0
- package/dist/src/mcp/tools/execute/planning.js.map +1 -0
- package/dist/src/mcp/tools/execute/roles.d.ts +6 -0
- package/dist/src/mcp/tools/execute/roles.d.ts.map +1 -0
- package/dist/src/mcp/tools/execute/roles.js +73 -0
- package/dist/src/mcp/tools/execute/roles.js.map +1 -0
- package/dist/src/mcp/tools/execute/types.d.ts +5 -0
- package/dist/src/mcp/tools/execute/types.d.ts.map +1 -0
- package/dist/src/mcp/tools/execute/types.js +2 -0
- package/dist/src/mcp/tools/execute/types.js.map +1 -0
- package/dist/src/mcp/tools/execute/utility.d.ts +8 -0
- package/dist/src/mcp/tools/execute/utility.d.ts.map +1 -0
- package/dist/src/mcp/tools/execute/utility.js +206 -0
- package/dist/src/mcp/tools/execute/utility.js.map +1 -0
- package/dist/src/mcp/tools/execute/utils.d.ts +5 -0
- package/dist/src/mcp/tools/execute/utils.d.ts.map +1 -0
- package/dist/src/mcp/tools/execute/utils.js +44 -0
- package/dist/src/mcp/tools/execute/utils.js.map +1 -0
- package/dist/src/mcp/tools/execute-passthrough.d.ts +1 -1
- package/dist/src/mcp/tools/execute-passthrough.d.ts.map +1 -1
- package/dist/src/mcp/tools/execute-passthrough.js +31 -997
- package/dist/src/mcp/tools/execute-passthrough.js.map +1 -1
- package/dist/src/mcp/tools/generate-kb.d.ts.map +1 -1
- package/dist/src/mcp/tools/generate-kb.js +1 -1
- package/dist/src/mcp/tools/generate-kb.js.map +1 -1
- package/dist/src/mcp/tools/interview-passthrough.d.ts.map +1 -1
- package/dist/src/mcp/tools/interview-passthrough.js +7 -1
- package/dist/src/mcp/tools/interview-passthrough.js.map +1 -1
- package/dist/src/mcp/tools/spec-passthrough.d.ts.map +1 -1
- package/dist/src/mcp/tools/spec-passthrough.js +6 -2
- package/dist/src/mcp/tools/spec-passthrough.js.map +1 -1
- package/dist/src/mcp/tools/status.js.map +1 -1
- package/dist/src/registry/base-registry.d.ts.map +1 -1
- package/dist/src/registry/base-registry.js +16 -3
- package/dist/src/registry/base-registry.js.map +1 -1
- package/dist/src/review/context-collector.d.ts +4 -3
- package/dist/src/review/context-collector.d.ts.map +1 -1
- package/dist/src/review/context-collector.js +22 -5
- package/dist/src/review/context-collector.js.map +1 -1
- package/dist/src/review/passthrough-engine.d.ts.map +1 -1
- package/dist/src/review/passthrough-engine.js +1 -1
- package/dist/src/review/passthrough-engine.js.map +1 -1
- package/package.json +7 -2
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { InterviewSession, InterviewRound, ResolutionScore, ProjectType, GestaltPrinciple, CompressedContext } from '../core/types.js';
|
|
2
|
-
import {
|
|
2
|
+
import type { IEventStore } from '../events/store.js';
|
|
3
3
|
export declare class SessionManager {
|
|
4
4
|
private eventStore;
|
|
5
5
|
private sessions;
|
|
6
|
-
constructor(eventStore:
|
|
6
|
+
constructor(eventStore: IEventStore);
|
|
7
7
|
/**
|
|
8
8
|
* EventStore에서 기존 세션을 복원하여 메모리 Map에 로드한다.
|
|
9
9
|
* 서버 시작 시 한 번 호출.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/interview/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/interview/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD,qBAAa,cAAc;IAGb,OAAO,CAAC,UAAU;IAF9B,OAAO,CAAC,QAAQ,CAAuC;gBAEnC,UAAU,EAAE,WAAW;IAE3C;;;OAGG;IACH,aAAa,IAAI,IAAI;IAQrB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,gBAAgB;IA4BjE;;;;OAIG;IACH,OAAO,CAAC,KAAK,SAAyB,GAAG,MAAM;IAY/C,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB;IAMxC,SAAS,IAAI,gBAAgB,GAAG,IAAI;IAQpC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,GAAG,cAAc;IA0BhG,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc;IAoBnE,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI;IAYtE,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,IAAI;IAMnF,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB;IAoB7C,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB;IAO1C,IAAI,IAAI,gBAAgB,EAAE;CAK3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/interview/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,OAAO,cAAc;IAGL;IAFZ,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEvD,YAAoB,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/interview/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedding-index.d.ts","sourceRoot":"","sources":["../../../src/knowledge-base/embedding-index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD;;GAEG;AACH,wBAAsB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"embedding-index.d.ts","sourceRoot":"","sources":["../../../src/knowledge-base/embedding-index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKjG;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAWvF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedding-index.js","sourceRoot":"","sources":["../../../src/knowledge-base/embedding-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAGrC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,
|
|
1
|
+
{"version":3,"file":"embedding-index.js","sourceRoot":"","sources":["../../../src/knowledge-base/embedding-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAGrC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAqB,EAAE,UAAkB;IAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACnE,GAAG,CAAC,0BAA0B,KAAK,CAAC,OAAO,CAAC,MAAM,eAAe,QAAQ,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAc;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/knowledge-base/generator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErE,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC9B;
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/knowledge-base/generator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErE,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AA0CD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,EAAE,CAAC,CA6C3B"}
|
|
@@ -55,17 +55,7 @@ export async function generateFromCodeGraph(repoRoot, options = {}) {
|
|
|
55
55
|
}
|
|
56
56
|
const stats = engine.stats(repoRoot);
|
|
57
57
|
log(`knowledge-base generator: ${stats.totalFiles} files, ${stats.totalNodes} nodes in graph`);
|
|
58
|
-
|
|
59
|
-
// 사용하면 API 변경에 취약하므로, 엔진을 통해 stats를 얻은 뒤
|
|
60
|
-
// getStore().getAllNodes()에 해당하는 public searchByKeywords를 활용한다.
|
|
61
|
-
// File 노드만 필요하므로 빈 키워드 검색 대신 전체 노드를 얻는 방법이 없기 때문에
|
|
62
|
-
// blast_radius 없이 engine.build() 시 생성된 File 노드만 직접 조회한다.
|
|
63
|
-
// → private store에 접근하지 않고, searchByKeywords([''])로 모든 파일경로를 수집한다.
|
|
64
|
-
const allFilePaths = engine.searchByKeywords(repoRoot, ['']);
|
|
65
|
-
// searchByKeywords가 match 없으면 빈 배열을 반환하므로, stats.totalFiles > 0 이지만
|
|
66
|
-
// 키워드가 공백이면 결과가 없을 수 있다. 이 경우 모든 File 노드를 가져오는
|
|
67
|
-
// 대안: 빈 문자열 하나짜리 검색 대신 단일 공통 확장자 패턴 목록을 사용한다.
|
|
68
|
-
// 실제로는 `searchByKeywords`가 includes('')로 모든 경로에 매칭되므로 동작한다.
|
|
58
|
+
const allFilePaths = engine.listAllFiles(repoRoot);
|
|
69
59
|
log(`knowledge-base generator: ${allFilePaths.length} file paths collected`);
|
|
70
60
|
const now = new Date().toISOString();
|
|
71
61
|
const entries = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/knowledge-base/generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAOrC;;;GAGG;AACH,SAAS,gBAAgB,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/knowledge-base/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -438,14 +438,14 @@ export declare const executeInputSchema: z.ZodObject<{
|
|
|
438
438
|
taskIds: z.ZodArray<z.ZodString, "many">;
|
|
439
439
|
reasoning: z.ZodString;
|
|
440
440
|
}, "strip", z.ZodTypeAny, {
|
|
441
|
-
reasoning: string;
|
|
442
441
|
name: string;
|
|
442
|
+
reasoning: string;
|
|
443
443
|
domain: string;
|
|
444
444
|
groupId: string;
|
|
445
445
|
taskIds: string[];
|
|
446
446
|
}, {
|
|
447
|
-
reasoning: string;
|
|
448
447
|
name: string;
|
|
448
|
+
reasoning: string;
|
|
449
449
|
domain: string;
|
|
450
450
|
groupId: string;
|
|
451
451
|
taskIds: string[];
|
|
@@ -494,8 +494,8 @@ export declare const executeInputSchema: z.ZodObject<{
|
|
|
494
494
|
dependsOn: string[];
|
|
495
495
|
}[] | undefined;
|
|
496
496
|
taskGroups?: {
|
|
497
|
-
reasoning: string;
|
|
498
497
|
name: string;
|
|
498
|
+
reasoning: string;
|
|
499
499
|
domain: string;
|
|
500
500
|
groupId: string;
|
|
501
501
|
taskIds: string[];
|
|
@@ -528,8 +528,8 @@ export declare const executeInputSchema: z.ZodObject<{
|
|
|
528
528
|
dependsOn: string[];
|
|
529
529
|
}[] | undefined;
|
|
530
530
|
taskGroups?: {
|
|
531
|
-
reasoning: string;
|
|
532
531
|
name: string;
|
|
532
|
+
reasoning: string;
|
|
533
533
|
domain: string;
|
|
534
534
|
groupId: string;
|
|
535
535
|
taskIds: string[];
|
|
@@ -1163,8 +1163,8 @@ export declare const executeInputSchema: z.ZodObject<{
|
|
|
1163
1163
|
dependsOn: string[];
|
|
1164
1164
|
}[] | undefined;
|
|
1165
1165
|
taskGroups?: {
|
|
1166
|
-
reasoning: string;
|
|
1167
1166
|
name: string;
|
|
1167
|
+
reasoning: string;
|
|
1168
1168
|
domain: string;
|
|
1169
1169
|
groupId: string;
|
|
1170
1170
|
taskIds: string[];
|
|
@@ -1376,8 +1376,8 @@ export declare const executeInputSchema: z.ZodObject<{
|
|
|
1376
1376
|
dependsOn: string[];
|
|
1377
1377
|
}[] | undefined;
|
|
1378
1378
|
taskGroups?: {
|
|
1379
|
-
reasoning: string;
|
|
1380
1379
|
name: string;
|
|
1380
|
+
reasoning: string;
|
|
1381
1381
|
domain: string;
|
|
1382
1382
|
groupId: string;
|
|
1383
1383
|
taskIds: string[];
|
|
@@ -1727,14 +1727,14 @@ export declare const executeToolSchema: {
|
|
|
1727
1727
|
taskIds: z.ZodArray<z.ZodString, "many">;
|
|
1728
1728
|
reasoning: z.ZodString;
|
|
1729
1729
|
}, "strip", z.ZodTypeAny, {
|
|
1730
|
-
reasoning: string;
|
|
1731
1730
|
name: string;
|
|
1731
|
+
reasoning: string;
|
|
1732
1732
|
domain: string;
|
|
1733
1733
|
groupId: string;
|
|
1734
1734
|
taskIds: string[];
|
|
1735
1735
|
}, {
|
|
1736
|
-
reasoning: string;
|
|
1737
1736
|
name: string;
|
|
1737
|
+
reasoning: string;
|
|
1738
1738
|
domain: string;
|
|
1739
1739
|
groupId: string;
|
|
1740
1740
|
taskIds: string[];
|
|
@@ -1783,8 +1783,8 @@ export declare const executeToolSchema: {
|
|
|
1783
1783
|
dependsOn: string[];
|
|
1784
1784
|
}[] | undefined;
|
|
1785
1785
|
taskGroups?: {
|
|
1786
|
-
reasoning: string;
|
|
1787
1786
|
name: string;
|
|
1787
|
+
reasoning: string;
|
|
1788
1788
|
domain: string;
|
|
1789
1789
|
groupId: string;
|
|
1790
1790
|
taskIds: string[];
|
|
@@ -1817,8 +1817,8 @@ export declare const executeToolSchema: {
|
|
|
1817
1817
|
dependsOn: string[];
|
|
1818
1818
|
}[] | undefined;
|
|
1819
1819
|
taskGroups?: {
|
|
1820
|
-
reasoning: string;
|
|
1821
1820
|
name: string;
|
|
1821
|
+
reasoning: string;
|
|
1822
1822
|
domain: string;
|
|
1823
1823
|
groupId: string;
|
|
1824
1824
|
taskIds: string[];
|
|
@@ -0,0 +1,5 @@
|
|
|
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 handleEvaluate(engine: PassthroughExecuteEngine, input: ExecuteInput, client: ClientType): string;
|
|
5
|
+
//# sourceMappingURL=evaluate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/tools/execute/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrD,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,iCAAiC,CAAC;AAGzC,wBAAgB,cAAc,CAC5B,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,UAAU,GACjB,MAAM,CAwJR"}
|
|
@@ -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
|