@yuaone/core 0.1.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/LICENSE +663 -0
- package/README.md +15 -0
- package/dist/__tests__/context-manager.test.d.ts +6 -0
- package/dist/__tests__/context-manager.test.d.ts.map +1 -0
- package/dist/__tests__/context-manager.test.js +220 -0
- package/dist/__tests__/context-manager.test.js.map +1 -0
- package/dist/__tests__/governor.test.d.ts +6 -0
- package/dist/__tests__/governor.test.d.ts.map +1 -0
- package/dist/__tests__/governor.test.js +210 -0
- package/dist/__tests__/governor.test.js.map +1 -0
- package/dist/__tests__/model-router.test.d.ts +6 -0
- package/dist/__tests__/model-router.test.d.ts.map +1 -0
- package/dist/__tests__/model-router.test.js +329 -0
- package/dist/__tests__/model-router.test.js.map +1 -0
- package/dist/agent-logger.d.ts +384 -0
- package/dist/agent-logger.d.ts.map +1 -0
- package/dist/agent-logger.js +820 -0
- package/dist/agent-logger.js.map +1 -0
- package/dist/agent-loop.d.ts +163 -0
- package/dist/agent-loop.d.ts.map +1 -0
- package/dist/agent-loop.js +609 -0
- package/dist/agent-loop.js.map +1 -0
- package/dist/agent-modes.d.ts +85 -0
- package/dist/agent-modes.d.ts.map +1 -0
- package/dist/agent-modes.js +418 -0
- package/dist/agent-modes.js.map +1 -0
- package/dist/approval.d.ts +137 -0
- package/dist/approval.d.ts.map +1 -0
- package/dist/approval.js +299 -0
- package/dist/approval.js.map +1 -0
- package/dist/async-completion-queue.d.ts +56 -0
- package/dist/async-completion-queue.d.ts.map +1 -0
- package/dist/async-completion-queue.js +77 -0
- package/dist/async-completion-queue.js.map +1 -0
- package/dist/auto-fix.d.ts +174 -0
- package/dist/auto-fix.d.ts.map +1 -0
- package/dist/auto-fix.js +319 -0
- package/dist/auto-fix.js.map +1 -0
- package/dist/codebase-context.d.ts +396 -0
- package/dist/codebase-context.d.ts.map +1 -0
- package/dist/codebase-context.js +1260 -0
- package/dist/codebase-context.js.map +1 -0
- package/dist/conflict-resolver.d.ts +191 -0
- package/dist/conflict-resolver.d.ts.map +1 -0
- package/dist/conflict-resolver.js +524 -0
- package/dist/conflict-resolver.js.map +1 -0
- package/dist/constants.d.ts +52 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +141 -0
- package/dist/constants.js.map +1 -0
- package/dist/context-budget.d.ts +435 -0
- package/dist/context-budget.d.ts.map +1 -0
- package/dist/context-budget.js +903 -0
- package/dist/context-budget.js.map +1 -0
- package/dist/context-compressor.d.ts +143 -0
- package/dist/context-compressor.d.ts.map +1 -0
- package/dist/context-compressor.js +511 -0
- package/dist/context-compressor.js.map +1 -0
- package/dist/context-manager.d.ts +112 -0
- package/dist/context-manager.d.ts.map +1 -0
- package/dist/context-manager.js +247 -0
- package/dist/context-manager.js.map +1 -0
- package/dist/continuous-reflection.d.ts +267 -0
- package/dist/continuous-reflection.d.ts.map +1 -0
- package/dist/continuous-reflection.js +338 -0
- package/dist/continuous-reflection.js.map +1 -0
- package/dist/cross-file-refactor.d.ts +352 -0
- package/dist/cross-file-refactor.d.ts.map +1 -0
- package/dist/cross-file-refactor.js +1544 -0
- package/dist/cross-file-refactor.js.map +1 -0
- package/dist/dag-orchestrator.d.ts +138 -0
- package/dist/dag-orchestrator.d.ts.map +1 -0
- package/dist/dag-orchestrator.js +379 -0
- package/dist/dag-orchestrator.js.map +1 -0
- package/dist/debate-orchestrator.d.ts +301 -0
- package/dist/debate-orchestrator.d.ts.map +1 -0
- package/dist/debate-orchestrator.js +719 -0
- package/dist/debate-orchestrator.js.map +1 -0
- package/dist/dependency-analyzer.d.ts +113 -0
- package/dist/dependency-analyzer.d.ts.map +1 -0
- package/dist/dependency-analyzer.js +444 -0
- package/dist/dependency-analyzer.js.map +1 -0
- package/dist/design-loop.d.ts +59 -0
- package/dist/design-loop.d.ts.map +1 -0
- package/dist/design-loop.js +344 -0
- package/dist/design-loop.js.map +1 -0
- package/dist/doc-intelligence.d.ts +383 -0
- package/dist/doc-intelligence.d.ts.map +1 -0
- package/dist/doc-intelligence.js +1307 -0
- package/dist/doc-intelligence.js.map +1 -0
- package/dist/dynamic-role-generator.d.ts +76 -0
- package/dist/dynamic-role-generator.d.ts.map +1 -0
- package/dist/dynamic-role-generator.js +194 -0
- package/dist/dynamic-role-generator.js.map +1 -0
- package/dist/errors.d.ts +69 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +102 -0
- package/dist/errors.js.map +1 -0
- package/dist/event-bus.d.ts +159 -0
- package/dist/event-bus.d.ts.map +1 -0
- package/dist/event-bus.js +305 -0
- package/dist/event-bus.js.map +1 -0
- package/dist/execution-engine.d.ts +425 -0
- package/dist/execution-engine.d.ts.map +1 -0
- package/dist/execution-engine.js +1555 -0
- package/dist/execution-engine.js.map +1 -0
- package/dist/git-intelligence.d.ts +306 -0
- package/dist/git-intelligence.d.ts.map +1 -0
- package/dist/git-intelligence.js +1099 -0
- package/dist/git-intelligence.js.map +1 -0
- package/dist/governor.d.ts +77 -0
- package/dist/governor.d.ts.map +1 -0
- package/dist/governor.js +161 -0
- package/dist/governor.js.map +1 -0
- package/dist/hierarchical-planner.d.ts +313 -0
- package/dist/hierarchical-planner.d.ts.map +1 -0
- package/dist/hierarchical-planner.js +981 -0
- package/dist/hierarchical-planner.js.map +1 -0
- package/dist/index.d.ts +121 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +123 -0
- package/dist/index.js.map +1 -0
- package/dist/intent-inference.d.ts +103 -0
- package/dist/intent-inference.d.ts.map +1 -0
- package/dist/intent-inference.js +605 -0
- package/dist/intent-inference.js.map +1 -0
- package/dist/interrupt-manager.d.ts +143 -0
- package/dist/interrupt-manager.d.ts.map +1 -0
- package/dist/interrupt-manager.js +196 -0
- package/dist/interrupt-manager.js.map +1 -0
- package/dist/kernel.d.ts +564 -0
- package/dist/kernel.d.ts.map +1 -0
- package/dist/kernel.js +1419 -0
- package/dist/kernel.js.map +1 -0
- package/dist/language-support.d.ts +232 -0
- package/dist/language-support.d.ts.map +1 -0
- package/dist/language-support.js +1134 -0
- package/dist/language-support.js.map +1 -0
- package/dist/llm-client.d.ts +82 -0
- package/dist/llm-client.d.ts.map +1 -0
- package/dist/llm-client.js +475 -0
- package/dist/llm-client.js.map +1 -0
- package/dist/mcp-client.d.ts +232 -0
- package/dist/mcp-client.d.ts.map +1 -0
- package/dist/mcp-client.js +718 -0
- package/dist/mcp-client.js.map +1 -0
- package/dist/memory-manager.d.ts +200 -0
- package/dist/memory-manager.d.ts.map +1 -0
- package/dist/memory-manager.js +568 -0
- package/dist/memory-manager.js.map +1 -0
- package/dist/memory.d.ts +87 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +341 -0
- package/dist/memory.js.map +1 -0
- package/dist/model-router.d.ts +245 -0
- package/dist/model-router.d.ts.map +1 -0
- package/dist/model-router.js +632 -0
- package/dist/model-router.js.map +1 -0
- package/dist/parallel-executor.d.ts +125 -0
- package/dist/parallel-executor.d.ts.map +1 -0
- package/dist/parallel-executor.js +201 -0
- package/dist/parallel-executor.js.map +1 -0
- package/dist/perf-optimizer.d.ts +212 -0
- package/dist/perf-optimizer.d.ts.map +1 -0
- package/dist/perf-optimizer.js +721 -0
- package/dist/perf-optimizer.js.map +1 -0
- package/dist/persona.d.ts +305 -0
- package/dist/persona.d.ts.map +1 -0
- package/dist/persona.js +887 -0
- package/dist/persona.js.map +1 -0
- package/dist/planner.d.ts +70 -0
- package/dist/planner.d.ts.map +1 -0
- package/dist/planner.js +264 -0
- package/dist/planner.js.map +1 -0
- package/dist/qa-pipeline.d.ts +365 -0
- package/dist/qa-pipeline.d.ts.map +1 -0
- package/dist/qa-pipeline.js +1352 -0
- package/dist/qa-pipeline.js.map +1 -0
- package/dist/reasoning-adapter.d.ts +116 -0
- package/dist/reasoning-adapter.d.ts.map +1 -0
- package/dist/reasoning-adapter.js +187 -0
- package/dist/reasoning-adapter.js.map +1 -0
- package/dist/role-registry.d.ts +55 -0
- package/dist/role-registry.d.ts.map +1 -0
- package/dist/role-registry.js +192 -0
- package/dist/role-registry.js.map +1 -0
- package/dist/sandbox-tiers.d.ts +327 -0
- package/dist/sandbox-tiers.d.ts.map +1 -0
- package/dist/sandbox-tiers.js +928 -0
- package/dist/sandbox-tiers.js.map +1 -0
- package/dist/security-scanner.d.ts +222 -0
- package/dist/security-scanner.d.ts.map +1 -0
- package/dist/security-scanner.js +1129 -0
- package/dist/security-scanner.js.map +1 -0
- package/dist/security.d.ts +93 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +393 -0
- package/dist/security.js.map +1 -0
- package/dist/self-reflection.d.ts +397 -0
- package/dist/self-reflection.d.ts.map +1 -0
- package/dist/self-reflection.js +908 -0
- package/dist/self-reflection.js.map +1 -0
- package/dist/session-persistence.d.ts +191 -0
- package/dist/session-persistence.d.ts.map +1 -0
- package/dist/session-persistence.js +395 -0
- package/dist/session-persistence.js.map +1 -0
- package/dist/speculative-executor.d.ts +210 -0
- package/dist/speculative-executor.d.ts.map +1 -0
- package/dist/speculative-executor.js +618 -0
- package/dist/speculative-executor.js.map +1 -0
- package/dist/state-machine.d.ts +289 -0
- package/dist/state-machine.d.ts.map +1 -0
- package/dist/state-machine.js +695 -0
- package/dist/state-machine.js.map +1 -0
- package/dist/sub-agent.d.ts +177 -0
- package/dist/sub-agent.d.ts.map +1 -0
- package/dist/sub-agent.js +303 -0
- package/dist/sub-agent.js.map +1 -0
- package/dist/system-prompt.d.ts +26 -0
- package/dist/system-prompt.d.ts.map +1 -0
- package/dist/system-prompt.js +84 -0
- package/dist/system-prompt.js.map +1 -0
- package/dist/test-intelligence.d.ts +439 -0
- package/dist/test-intelligence.d.ts.map +1 -0
- package/dist/test-intelligence.js +1165 -0
- package/dist/test-intelligence.js.map +1 -0
- package/dist/types.d.ts +632 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/vector-index.d.ts +314 -0
- package/dist/vector-index.d.ts.map +1 -0
- package/dist/vector-index.js +618 -0
- package/dist/vector-index.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module self-reflection
|
|
3
|
+
* @description Deep Self-Reflection & Self-Correction — 6-dimension 자기 검증,
|
|
4
|
+
* 내적 독백(inner monologue), 반성 학습(reflection learning) 시스템.
|
|
5
|
+
*
|
|
6
|
+
* `continuous-reflection.ts`가 주기적 체크포인트/경량 검증을 담당한다면,
|
|
7
|
+
* 이 모듈은 **심층 코드 검증**(6개 차원), **사고 과정 기록**, **실수 학습**을 담당한다.
|
|
8
|
+
*
|
|
9
|
+
* 6-Dimension Verification:
|
|
10
|
+
* 1. **Correctness** — 코드가 올바른가?
|
|
11
|
+
* 2. **Completeness** — 빠진 것은 없는가?
|
|
12
|
+
* 3. **Consistency** — 기존 코드와 일관적인가?
|
|
13
|
+
* 4. **Quality** — 더 나은 방법이 있는가?
|
|
14
|
+
* 5. **Security** — 보안 취약점은 없는가?
|
|
15
|
+
* 6. **Performance** — 성능 문제는 없는가?
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const sr = new SelfReflection("session-123", {
|
|
20
|
+
* minScoreToPass: 70,
|
|
21
|
+
* criticalDimensions: ["correctness", "security"],
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // Inner monologue
|
|
25
|
+
* sr.think("analyze", "이 파일은 Express 라우터이므로 미들웨어 패턴을 따라야 한다");
|
|
26
|
+
* sr.recordDecision("plan", "어떤 패턴?", ["factory", "class"], "factory", "기존 코드가 모두 factory 패턴");
|
|
27
|
+
*
|
|
28
|
+
* // Deep verification
|
|
29
|
+
* const result = await sr.deepVerify(
|
|
30
|
+
* "Add user authentication middleware",
|
|
31
|
+
* changedFiles,
|
|
32
|
+
* originalFiles,
|
|
33
|
+
* ["Use camelCase", "Express middleware pattern"],
|
|
34
|
+
* (prompt) => llm.complete(prompt),
|
|
35
|
+
* );
|
|
36
|
+
*
|
|
37
|
+
* if (result.verdict === "fail") {
|
|
38
|
+
* // auto-fix or report
|
|
39
|
+
* }
|
|
40
|
+
*
|
|
41
|
+
* // Persist learnings
|
|
42
|
+
* await sr.persistLearnings(memoryManager);
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
import { EventEmitter } from "node:events";
|
|
46
|
+
import type { MemoryManager, ProjectMemory } from "./memory-manager.js";
|
|
47
|
+
/** 차원별 점수 */
|
|
48
|
+
export interface DimensionScore {
|
|
49
|
+
/** 점수 (0–100) */
|
|
50
|
+
score: number;
|
|
51
|
+
/** 상태 */
|
|
52
|
+
status: "pass" | "warning" | "fail";
|
|
53
|
+
/** 발견된 이슈 */
|
|
54
|
+
issues: string[];
|
|
55
|
+
/** 판단 근거 */
|
|
56
|
+
evidence: string[];
|
|
57
|
+
}
|
|
58
|
+
/** 자동 수정 제안 */
|
|
59
|
+
export interface SuggestedFix {
|
|
60
|
+
/** 해당 차원 */
|
|
61
|
+
dimension: keyof DeepVerifyResult["dimensions"];
|
|
62
|
+
/** 심각도 */
|
|
63
|
+
severity: "critical" | "high" | "medium" | "low";
|
|
64
|
+
/** 설명 */
|
|
65
|
+
description: string;
|
|
66
|
+
/** 관련 파일 */
|
|
67
|
+
file?: string;
|
|
68
|
+
/** 제안 코드 */
|
|
69
|
+
suggestedCode?: string;
|
|
70
|
+
/** 자동 수정 가능 여부 */
|
|
71
|
+
autoFixable: boolean;
|
|
72
|
+
}
|
|
73
|
+
/** 6-dimension 심층 검증 결과 */
|
|
74
|
+
export interface DeepVerifyResult {
|
|
75
|
+
/** 최종 판정 */
|
|
76
|
+
verdict: "pass" | "concern" | "fail";
|
|
77
|
+
/** 종합 점수 (0–100) */
|
|
78
|
+
overallScore: number;
|
|
79
|
+
/** 6개 차원별 점수 */
|
|
80
|
+
dimensions: {
|
|
81
|
+
correctness: DimensionScore;
|
|
82
|
+
completeness: DimensionScore;
|
|
83
|
+
consistency: DimensionScore;
|
|
84
|
+
quality: DimensionScore;
|
|
85
|
+
security: DimensionScore;
|
|
86
|
+
performance: DimensionScore;
|
|
87
|
+
};
|
|
88
|
+
/** 자가 비판 텍스트 */
|
|
89
|
+
selfCritique: string;
|
|
90
|
+
/** 수정 제안 목록 */
|
|
91
|
+
suggestedFixes: SuggestedFix[];
|
|
92
|
+
/** 판단 확신도 (0.0–1.0) */
|
|
93
|
+
confidence: number;
|
|
94
|
+
}
|
|
95
|
+
/** 내적 독백 항목 */
|
|
96
|
+
export interface MonologueEntry {
|
|
97
|
+
/** 기록 시각 (epoch ms) */
|
|
98
|
+
timestamp: number;
|
|
99
|
+
/** 단계 ("analyze" | "plan" | "implement" | "verify" 등) */
|
|
100
|
+
phase: string;
|
|
101
|
+
/** 사고 내용 */
|
|
102
|
+
thought: string;
|
|
103
|
+
/** 수행한 행동 */
|
|
104
|
+
action?: string;
|
|
105
|
+
/** 결과 요약 */
|
|
106
|
+
result?: string;
|
|
107
|
+
/** 의사결정 기록 */
|
|
108
|
+
decision?: {
|
|
109
|
+
question: string;
|
|
110
|
+
options: string[];
|
|
111
|
+
chosen: string;
|
|
112
|
+
reasoning: string;
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/** 실수 유형 */
|
|
116
|
+
export type MistakeType = "logic_error" | "pattern_violation" | "missing_edge_case" | "wrong_assumption" | "incomplete_change" | "security_issue" | "performance_issue" | "type_error";
|
|
117
|
+
/** 반성 학습 — 실수와 교정을 기록하여 향후 세션에 적용 */
|
|
118
|
+
export interface ReflectionLearning {
|
|
119
|
+
/** 고유 ID */
|
|
120
|
+
id: string;
|
|
121
|
+
/** 세션 ID */
|
|
122
|
+
sessionId: string;
|
|
123
|
+
/** 기록 시각 (epoch ms) */
|
|
124
|
+
timestamp: number;
|
|
125
|
+
/** 실수 정보 */
|
|
126
|
+
mistake: {
|
|
127
|
+
type: MistakeType;
|
|
128
|
+
description: string;
|
|
129
|
+
file: string;
|
|
130
|
+
line?: number;
|
|
131
|
+
};
|
|
132
|
+
/** 교정 결과 */
|
|
133
|
+
correction: {
|
|
134
|
+
approach: string;
|
|
135
|
+
result: "fixed" | "partially_fixed" | "needs_human";
|
|
136
|
+
};
|
|
137
|
+
/** 학습된 지식 */
|
|
138
|
+
learning: {
|
|
139
|
+
/** 학습된 규칙 */
|
|
140
|
+
rule: string;
|
|
141
|
+
/** 확신도 (0–1) */
|
|
142
|
+
confidence: number;
|
|
143
|
+
/** 적용 가능 컨텍스트 */
|
|
144
|
+
appliesTo: string[];
|
|
145
|
+
/** 카테고리 */
|
|
146
|
+
category: string;
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/** SelfReflection 설정 */
|
|
150
|
+
export interface SelfReflectionConfig {
|
|
151
|
+
/** 심층 검증 활성화 (기본 true) */
|
|
152
|
+
enableDeepVerify: boolean;
|
|
153
|
+
/** 내적 독백 활성화 (기본 true) */
|
|
154
|
+
enableMonologue: boolean;
|
|
155
|
+
/** 학습 기록 활성화 (기본 true) */
|
|
156
|
+
enableLearning: boolean;
|
|
157
|
+
/** 내적 독백 최대 항목 수 (기본 200) */
|
|
158
|
+
monologueMaxEntries: number;
|
|
159
|
+
/** 학습 기록 최대 항목 수 (기본 100) */
|
|
160
|
+
learningMaxEntries: number;
|
|
161
|
+
/** 통과 최소 점수 (기본 70) */
|
|
162
|
+
minScoreToPass: number;
|
|
163
|
+
/** 반드시 통과해야 하는 차원 (기본 ["correctness", "security"]) */
|
|
164
|
+
criticalDimensions: (keyof DeepVerifyResult["dimensions"])[];
|
|
165
|
+
}
|
|
166
|
+
/** SelfReflection 이벤트 맵 */
|
|
167
|
+
export interface SelfReflectionEvents {
|
|
168
|
+
/** 새 사고/결정 기록 */
|
|
169
|
+
"monologue:entry": [entry: MonologueEntry];
|
|
170
|
+
/** 심층 검증 시작 */
|
|
171
|
+
"verify:start": [goal: string];
|
|
172
|
+
/** 심층 검증 완료 */
|
|
173
|
+
"verify:complete": [result: DeepVerifyResult];
|
|
174
|
+
/** 새 학습 기록 */
|
|
175
|
+
"learning:recorded": [learning: ReflectionLearning];
|
|
176
|
+
/** 학습 메모리 저장 완료 */
|
|
177
|
+
"learning:persisted": [count: number];
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* SelfReflection — 6-dimension 심층 자기 검증, 내적 독백, 반성 학습.
|
|
181
|
+
*
|
|
182
|
+
* LLM 호출은 외부에서 주입(`verifyFn`)하여 결합도를 낮춘다.
|
|
183
|
+
* MemoryManager와 연동하여 학습을 세션 간 지속한다.
|
|
184
|
+
*/
|
|
185
|
+
export declare class SelfReflection extends EventEmitter {
|
|
186
|
+
private readonly config;
|
|
187
|
+
private readonly monologue;
|
|
188
|
+
private readonly learnings;
|
|
189
|
+
private readonly sessionId;
|
|
190
|
+
/** 마지막 검증 결과 (getSummary용) */
|
|
191
|
+
private lastVerdict;
|
|
192
|
+
constructor(sessionId: string, config?: Partial<SelfReflectionConfig>);
|
|
193
|
+
/**
|
|
194
|
+
* 전체 6-dimension 심층 검증을 실행한다.
|
|
195
|
+
*
|
|
196
|
+
* LLM에 구조화된 프롬프트를 전달하고, 응답을 파싱하여
|
|
197
|
+
* 6개 차원의 점수와 수정 제안을 반환한다.
|
|
198
|
+
*
|
|
199
|
+
* @param goal - 에이전트가 달성하려는 목표
|
|
200
|
+
* @param changedFiles - 변경된 파일 (파일경로 → 내용)
|
|
201
|
+
* @param originalFiles - 원본 파일 (파일경로 → 원본 내용, diff 생성용)
|
|
202
|
+
* @param projectPatterns - 프로젝트 규칙/패턴 목록
|
|
203
|
+
* @param verifyFn - LLM 호출 콜백 (프롬프트 → 응답)
|
|
204
|
+
* @returns 6-dimension 검증 결과
|
|
205
|
+
*/
|
|
206
|
+
deepVerify(goal: string, changedFiles: Map<string, string>, originalFiles: Map<string, string>, projectPatterns: string[], verifyFn: (prompt: string) => Promise<string>): Promise<DeepVerifyResult>;
|
|
207
|
+
/**
|
|
208
|
+
* 빠른 검증 — critical 차원(correctness + security)만 확인.
|
|
209
|
+
*
|
|
210
|
+
* 전체 6-dimension 검증보다 가볍고, 각 iteration 후에 실행하기 적합하다.
|
|
211
|
+
*
|
|
212
|
+
* @param changedFiles - 변경된 파일 (파일경로 → 내용)
|
|
213
|
+
* @param verifyFn - LLM 호출 콜백
|
|
214
|
+
* @returns 검증 결과 (non-critical 차원은 기본값)
|
|
215
|
+
*/
|
|
216
|
+
quickVerify(changedFiles: Map<string, string>, verifyFn: (prompt: string) => Promise<string>): Promise<DeepVerifyResult>;
|
|
217
|
+
/**
|
|
218
|
+
* 사고를 기록한다.
|
|
219
|
+
*
|
|
220
|
+
* @param phase - 현재 단계 ("analyze", "plan", "implement", "verify" 등)
|
|
221
|
+
* @param thought - 사고 내용
|
|
222
|
+
*/
|
|
223
|
+
think(phase: string, thought: string): void;
|
|
224
|
+
/**
|
|
225
|
+
* 사고와 행동을 함께 기록한다.
|
|
226
|
+
*
|
|
227
|
+
* @param phase - 현재 단계
|
|
228
|
+
* @param thought - 사고 내용
|
|
229
|
+
* @param action - 수행한 행동 (도구 호출 등)
|
|
230
|
+
* @param result - 결과 요약
|
|
231
|
+
*/
|
|
232
|
+
thinkAndAct(phase: string, thought: string, action: string, result?: string): void;
|
|
233
|
+
/**
|
|
234
|
+
* 의사결정을 기록한다.
|
|
235
|
+
*
|
|
236
|
+
* 여러 선택지 중 하나를 골랐을 때 근거와 함께 기록한다.
|
|
237
|
+
*
|
|
238
|
+
* @param phase - 현재 단계
|
|
239
|
+
* @param question - 의사결정 질문
|
|
240
|
+
* @param options - 선택지 목록
|
|
241
|
+
* @param chosen - 선택한 옵션
|
|
242
|
+
* @param reasoning - 선택 근거
|
|
243
|
+
*/
|
|
244
|
+
recordDecision(phase: string, question: string, options: string[], chosen: string, reasoning: string): void;
|
|
245
|
+
/**
|
|
246
|
+
* 내적 독백을 포맷된 텍스트로 반환한다 (유저 표시용).
|
|
247
|
+
*
|
|
248
|
+
* @param lastN - 최근 N개 항목만 반환 (미지정 시 전체)
|
|
249
|
+
* @returns 포맷된 독백 텍스트
|
|
250
|
+
*/
|
|
251
|
+
getMonologueText(lastN?: number): string;
|
|
252
|
+
/**
|
|
253
|
+
* 내적 독백 항목 전체를 반환한다 (읽기 전용).
|
|
254
|
+
*/
|
|
255
|
+
getMonologue(): readonly MonologueEntry[];
|
|
256
|
+
/**
|
|
257
|
+
* 내적 독백을 초기화한다.
|
|
258
|
+
*/
|
|
259
|
+
clearMonologue(): void;
|
|
260
|
+
/**
|
|
261
|
+
* 실수와 교정을 기록한다.
|
|
262
|
+
*
|
|
263
|
+
* id, sessionId, timestamp는 자동 생성된다.
|
|
264
|
+
*
|
|
265
|
+
* @param learning - 학습 데이터 (id/sessionId/timestamp 제외)
|
|
266
|
+
*/
|
|
267
|
+
recordLearning(learning: Omit<ReflectionLearning, "id" | "sessionId" | "timestamp">): void;
|
|
268
|
+
/**
|
|
269
|
+
* 현재 태스크에 관련된 학습을 반환한다.
|
|
270
|
+
*
|
|
271
|
+
* 태스크 설명 또는 파일 목록과 키워드 매칭으로 필터링한다.
|
|
272
|
+
*
|
|
273
|
+
* @param taskDescription - 태스크 설명
|
|
274
|
+
* @param files - 작업 대상 파일 목록
|
|
275
|
+
* @returns 관련 학습 목록
|
|
276
|
+
*/
|
|
277
|
+
getRelevantLearnings(taskDescription: string, files: string[]): ReflectionLearning[];
|
|
278
|
+
/**
|
|
279
|
+
* 모든 학습 기록을 반환한다 (읽기 전용).
|
|
280
|
+
*/
|
|
281
|
+
getAllLearnings(): readonly ReflectionLearning[];
|
|
282
|
+
/**
|
|
283
|
+
* 학습 기록을 MemoryManager에 저장한다.
|
|
284
|
+
*
|
|
285
|
+
* ReflectionLearning을 MemoryManager의 Learning + FailedApproach로 변환하여
|
|
286
|
+
* 세션 간 지속되도록 한다.
|
|
287
|
+
*
|
|
288
|
+
* @param memoryManager - 저장 대상 MemoryManager
|
|
289
|
+
* @returns 저장된 학습 수
|
|
290
|
+
*/
|
|
291
|
+
persistLearnings(memoryManager: MemoryManager): Promise<number>;
|
|
292
|
+
/**
|
|
293
|
+
* ProjectMemory에서 기존 학습을 로드한다.
|
|
294
|
+
*
|
|
295
|
+
* MemoryManager.load()로 읽은 ProjectMemory를 전달하면
|
|
296
|
+
* 관련 학습을 ReflectionLearning으로 변환하여 내부 목록에 추가한다.
|
|
297
|
+
*
|
|
298
|
+
* @param memory - 로드된 프로젝트 메모리
|
|
299
|
+
*/
|
|
300
|
+
loadFromMemory(memory: ProjectMemory): void;
|
|
301
|
+
/**
|
|
302
|
+
* 6-dimension 심층 검증 프롬프트를 생성한다.
|
|
303
|
+
*
|
|
304
|
+
* LLM에 구조화된 JSON 출력을 요청하는 프롬프트를 만든다.
|
|
305
|
+
*
|
|
306
|
+
* @param goal - 에이전트 목표
|
|
307
|
+
* @param changedFiles - 변경된 파일 (경로 → 내용)
|
|
308
|
+
* @param originalFiles - 원본 파일 (경로 → 내용)
|
|
309
|
+
* @param patterns - 프로젝트 규칙/패턴
|
|
310
|
+
* @returns LLM에 전달할 프롬프트
|
|
311
|
+
*/
|
|
312
|
+
buildDeepVerifyPrompt(goal: string, changedFiles: Map<string, string>, originalFiles: Map<string, string>, patterns: string[]): string;
|
|
313
|
+
/**
|
|
314
|
+
* LLM 응답을 DeepVerifyResult로 파싱한다.
|
|
315
|
+
*
|
|
316
|
+
* JSON 파싱 실패 시 안전한 기본값을 반환한다.
|
|
317
|
+
*
|
|
318
|
+
* @param response - LLM 응답 문자열
|
|
319
|
+
* @returns 파싱된 검증 결과
|
|
320
|
+
*/
|
|
321
|
+
parseDeepVerifyResponse(response: string): DeepVerifyResult;
|
|
322
|
+
/**
|
|
323
|
+
* 현재 상태 요약을 반환한다 (컨텍스트 주입용).
|
|
324
|
+
*/
|
|
325
|
+
getSummary(): {
|
|
326
|
+
monologueCount: number;
|
|
327
|
+
learningCount: number;
|
|
328
|
+
lastVerdict?: string;
|
|
329
|
+
};
|
|
330
|
+
/**
|
|
331
|
+
* 독백 항목을 추가하고 한도를 초과하면 오래된 항목을 제거한다.
|
|
332
|
+
*/
|
|
333
|
+
private addMonologueEntry;
|
|
334
|
+
/**
|
|
335
|
+
* quick verify용 경량 프롬프트를 생성한다.
|
|
336
|
+
*/
|
|
337
|
+
private buildQuickVerifyPrompt;
|
|
338
|
+
/**
|
|
339
|
+
* 검증 실패 시 자동으로 학습을 기록한다.
|
|
340
|
+
*/
|
|
341
|
+
private recordVerificationLearnings;
|
|
342
|
+
/**
|
|
343
|
+
* 차원 이름을 MistakeType으로 변환한다.
|
|
344
|
+
*/
|
|
345
|
+
private dimensionToMistakeType;
|
|
346
|
+
/**
|
|
347
|
+
* 6개 차원의 점수를 종합한다.
|
|
348
|
+
*
|
|
349
|
+
* critical 차원에 가중치를 부여한다 (1.5x).
|
|
350
|
+
*/
|
|
351
|
+
private calculateOverallScore;
|
|
352
|
+
/**
|
|
353
|
+
* 종합 판정을 결정한다.
|
|
354
|
+
*
|
|
355
|
+
* - fail: 종합 점수 < minScoreToPass 또는 critical 차원이 fail
|
|
356
|
+
* - concern: 종합 점수 >= minScoreToPass 이지만 warning인 차원 존재
|
|
357
|
+
* - pass: 모든 조건 통과
|
|
358
|
+
*/
|
|
359
|
+
private determineVerdict;
|
|
360
|
+
/**
|
|
361
|
+
* LLM 응답에서 JSON 블록을 추출한다.
|
|
362
|
+
*/
|
|
363
|
+
private extractJson;
|
|
364
|
+
/**
|
|
365
|
+
* LLM 응답에서 dimensions를 파싱한다.
|
|
366
|
+
*/
|
|
367
|
+
private parseDimensions;
|
|
368
|
+
/**
|
|
369
|
+
* LLM 응답에서 suggestedFixes를 파싱한다.
|
|
370
|
+
*/
|
|
371
|
+
private parseSuggestedFixes;
|
|
372
|
+
/**
|
|
373
|
+
* 기본 차원 점수를 생성한다.
|
|
374
|
+
*/
|
|
375
|
+
private createDefaultDimensions;
|
|
376
|
+
/**
|
|
377
|
+
* 검증 통과 기본 결과를 생성한다 (비활성화 시 사용).
|
|
378
|
+
*/
|
|
379
|
+
private createPassResult;
|
|
380
|
+
/**
|
|
381
|
+
* 검증 에러 시 안전한 기본 결과를 반환한다.
|
|
382
|
+
*/
|
|
383
|
+
private createErrorResult;
|
|
384
|
+
/**
|
|
385
|
+
* 출력 JSON 템플릿을 반환한다 (프롬프트에 포함).
|
|
386
|
+
*/
|
|
387
|
+
private getOutputTemplate;
|
|
388
|
+
/**
|
|
389
|
+
* 텍스트에서 검색 키워드를 추출한다.
|
|
390
|
+
*/
|
|
391
|
+
private extractKeywords;
|
|
392
|
+
/**
|
|
393
|
+
* 긴 내용을 최대 길이로 잘라낸다.
|
|
394
|
+
*/
|
|
395
|
+
private truncateContent;
|
|
396
|
+
}
|
|
397
|
+
//# sourceMappingURL=self-reflection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-reflection.d.ts","sourceRoot":"","sources":["../src/self-reflection.ts"],"names":[],"mappings":"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"}
|