@yuaone/core 0.9.43 → 1.0.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/agent-affordance.d.ts +37 -0
- package/dist/agent-affordance.d.ts.map +1 -0
- package/dist/agent-affordance.js +139 -0
- package/dist/agent-affordance.js.map +1 -0
- package/dist/agent-decision-types.d.ts +262 -0
- package/dist/agent-decision-types.d.ts.map +1 -0
- package/dist/agent-decision-types.js +19 -0
- package/dist/agent-decision-types.js.map +1 -0
- package/dist/agent-decision.d.ts +52 -0
- package/dist/agent-decision.d.ts.map +1 -0
- package/dist/agent-decision.js +767 -0
- package/dist/agent-decision.js.map +1 -0
- package/dist/agent-loop.d.ts +37 -79
- package/dist/agent-loop.d.ts.map +1 -1
- package/dist/agent-loop.js +730 -586
- package/dist/agent-loop.js.map +1 -1
- package/dist/agent-reasoning-engine.d.ts +48 -0
- package/dist/agent-reasoning-engine.d.ts.map +1 -0
- package/dist/agent-reasoning-engine.js +544 -0
- package/dist/agent-reasoning-engine.js.map +1 -0
- package/dist/codebase-context.d.ts +3 -0
- package/dist/codebase-context.d.ts.map +1 -1
- package/dist/codebase-context.js +15 -6
- package/dist/codebase-context.js.map +1 -1
- package/dist/command-plan-compiler.d.ts +43 -0
- package/dist/command-plan-compiler.d.ts.map +1 -0
- package/dist/command-plan-compiler.js +164 -0
- package/dist/command-plan-compiler.js.map +1 -0
- package/dist/dependency-guard.d.ts +18 -0
- package/dist/dependency-guard.d.ts.map +1 -0
- package/dist/dependency-guard.js +113 -0
- package/dist/dependency-guard.js.map +1 -0
- package/dist/execution-engine.d.ts +10 -1
- package/dist/execution-engine.d.ts.map +1 -1
- package/dist/execution-engine.js +162 -8
- package/dist/execution-engine.js.map +1 -1
- package/dist/execution-receipt.d.ts +62 -0
- package/dist/execution-receipt.d.ts.map +1 -0
- package/dist/execution-receipt.js +67 -0
- package/dist/execution-receipt.js.map +1 -0
- package/dist/failure-surface-writer.d.ts +13 -0
- package/dist/failure-surface-writer.d.ts.map +1 -0
- package/dist/failure-surface-writer.js +33 -0
- package/dist/failure-surface-writer.js.map +1 -0
- package/dist/file-chunker.d.ts +26 -0
- package/dist/file-chunker.d.ts.map +1 -0
- package/dist/file-chunker.js +103 -0
- package/dist/file-chunker.js.map +1 -0
- package/dist/image-observer.d.ts +22 -0
- package/dist/image-observer.d.ts.map +1 -0
- package/dist/image-observer.js +60 -0
- package/dist/image-observer.js.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -1
- package/dist/judgment-rules.d.ts +44 -0
- package/dist/judgment-rules.d.ts.map +1 -0
- package/dist/judgment-rules.js +185 -0
- package/dist/judgment-rules.js.map +1 -0
- package/dist/memory-decay.d.ts +41 -0
- package/dist/memory-decay.d.ts.map +1 -0
- package/dist/memory-decay.js +62 -0
- package/dist/memory-decay.js.map +1 -0
- package/dist/memory-manager.d.ts.map +1 -1
- package/dist/memory-manager.js +30 -0
- package/dist/memory-manager.js.map +1 -1
- package/dist/model-weakness-tracker.d.ts +42 -0
- package/dist/model-weakness-tracker.d.ts.map +1 -0
- package/dist/model-weakness-tracker.js +107 -0
- package/dist/model-weakness-tracker.js.map +1 -0
- package/dist/overhead-governor.d.ts +3 -1
- package/dist/overhead-governor.d.ts.map +1 -1
- package/dist/overhead-governor.js +5 -0
- package/dist/overhead-governor.js.map +1 -1
- package/dist/patch-scope-controller.d.ts +44 -0
- package/dist/patch-scope-controller.d.ts.map +1 -0
- package/dist/patch-scope-controller.js +107 -0
- package/dist/patch-scope-controller.js.map +1 -0
- package/dist/patch-transaction.d.ts +53 -0
- package/dist/patch-transaction.d.ts.map +1 -0
- package/dist/patch-transaction.js +119 -0
- package/dist/patch-transaction.js.map +1 -0
- package/dist/pre-write-validator.d.ts +29 -0
- package/dist/pre-write-validator.d.ts.map +1 -0
- package/dist/pre-write-validator.js +97 -0
- package/dist/pre-write-validator.js.map +1 -0
- package/dist/prompt-builder.d.ts +25 -0
- package/dist/prompt-builder.d.ts.map +1 -0
- package/dist/prompt-builder.js +93 -0
- package/dist/prompt-builder.js.map +1 -0
- package/dist/prompt-envelope.d.ts +40 -0
- package/dist/prompt-envelope.d.ts.map +1 -0
- package/dist/prompt-envelope.js +16 -0
- package/dist/prompt-envelope.js.map +1 -0
- package/dist/prompt-runtime.d.ts +66 -0
- package/dist/prompt-runtime.d.ts.map +1 -0
- package/dist/prompt-runtime.js +492 -0
- package/dist/prompt-runtime.js.map +1 -0
- package/dist/repo-capability-profile.d.ts +24 -0
- package/dist/repo-capability-profile.d.ts.map +1 -0
- package/dist/repo-capability-profile.js +113 -0
- package/dist/repo-capability-profile.js.map +1 -0
- package/dist/security-gate.d.ts +39 -0
- package/dist/security-gate.d.ts.map +1 -0
- package/dist/security-gate.js +121 -0
- package/dist/security-gate.js.map +1 -0
- package/dist/self-evaluation.d.ts +22 -0
- package/dist/self-evaluation.d.ts.map +1 -0
- package/dist/self-evaluation.js +43 -0
- package/dist/self-evaluation.js.map +1 -0
- package/dist/semantic-diff-reviewer.d.ts +28 -0
- package/dist/semantic-diff-reviewer.d.ts.map +1 -0
- package/dist/semantic-diff-reviewer.js +168 -0
- package/dist/semantic-diff-reviewer.js.map +1 -0
- package/dist/stall-detector.d.ts +26 -2
- package/dist/stall-detector.d.ts.map +1 -1
- package/dist/stall-detector.js +128 -3
- package/dist/stall-detector.js.map +1 -1
- package/dist/system-core.d.ts +27 -0
- package/dist/system-core.d.ts.map +1 -0
- package/dist/system-core.js +269 -0
- package/dist/system-core.js.map +1 -0
- package/dist/system-prompt.d.ts +4 -0
- package/dist/system-prompt.d.ts.map +1 -1
- package/dist/system-prompt.js +12 -218
- package/dist/system-prompt.js.map +1 -1
- package/dist/target-file-ranker.d.ts +38 -0
- package/dist/target-file-ranker.d.ts.map +1 -0
- package/dist/target-file-ranker.js +90 -0
- package/dist/target-file-ranker.js.map +1 -0
- package/dist/task-classifier.d.ts +6 -0
- package/dist/task-classifier.d.ts.map +1 -1
- package/dist/task-classifier.js +6 -0
- package/dist/task-classifier.js.map +1 -1
- package/dist/test-impact-planner.d.ts +16 -0
- package/dist/test-impact-planner.d.ts.map +1 -0
- package/dist/test-impact-planner.js +68 -0
- package/dist/test-impact-planner.js.map +1 -0
- package/dist/tool-outcome-cache.d.ts +41 -0
- package/dist/tool-outcome-cache.d.ts.map +1 -0
- package/dist/tool-outcome-cache.js +88 -0
- package/dist/tool-outcome-cache.js.map +1 -0
- package/dist/types.d.ts +39 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/verifier-rules.d.ts +15 -0
- package/dist/verifier-rules.d.ts.map +1 -0
- package/dist/verifier-rules.js +80 -0
- package/dist/verifier-rules.js.map +1 -0
- package/dist/workspace-mutation-policy.d.ts +28 -0
- package/dist/workspace-mutation-policy.d.ts.map +1 -0
- package/dist/workspace-mutation-policy.js +56 -0
- package/dist/workspace-mutation-policy.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module agent-reasoning-engine
|
|
3
|
+
* @description Pure heuristic reasoning engine for the Agent Decision Engine.
|
|
4
|
+
*
|
|
5
|
+
* **NO LLM, NO async, pure functions.**
|
|
6
|
+
* Same input always yields same output (deterministic).
|
|
7
|
+
* Confidence capped at 0.85 (anti-overconfidence, YUA formula).
|
|
8
|
+
*
|
|
9
|
+
* Design spec: docs/superpowers/specs/2026-03-17-yuan-agent-decision-engine-design.md, sections 4.1-4.6
|
|
10
|
+
*/
|
|
11
|
+
import type { AgentReasoningResult, AgentProjectContext } from "./agent-decision-types.js";
|
|
12
|
+
/**
|
|
13
|
+
* Sanitize user input before reasoning (YUA AOSS Lite pattern).
|
|
14
|
+
* Masks personal information but preserves code content.
|
|
15
|
+
* Does NOT block — just cleans sensitive data.
|
|
16
|
+
*/
|
|
17
|
+
export declare function sanitizeForReasoning(input: string): string;
|
|
18
|
+
/** Error type classification for code/error messages */
|
|
19
|
+
export type CodeErrorType = "TypeError" | "SyntaxError" | "ReferenceError" | "RuntimeError" | "BuildError" | "TestFailure" | "Unknown";
|
|
20
|
+
export interface CodeFeatures {
|
|
21
|
+
detected: boolean;
|
|
22
|
+
maxDepth: number;
|
|
23
|
+
branchCount: number;
|
|
24
|
+
loopCount: number;
|
|
25
|
+
functionCount: number;
|
|
26
|
+
hasAsync: boolean;
|
|
27
|
+
hasEval: boolean;
|
|
28
|
+
hasIO: boolean;
|
|
29
|
+
mutationScore: number;
|
|
30
|
+
errorType?: CodeErrorType;
|
|
31
|
+
mentionedFiles: string[];
|
|
32
|
+
hasStackTrace: boolean;
|
|
33
|
+
}
|
|
34
|
+
/** Check if the message is a short continuation trigger (e.g. "ㄱㄱ", "go"). */
|
|
35
|
+
export declare function isShortContinuation(message: string): boolean;
|
|
36
|
+
/** Check if the message is likely a narration/explanation request (not an action). */
|
|
37
|
+
export declare function isNarrationRequest(message: string): boolean;
|
|
38
|
+
/** Check if the message references a previous turn. */
|
|
39
|
+
export declare function referencesPreviousTurn(message: string): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Pure heuristic reasoning. NO LLM, NO async, deterministic.
|
|
42
|
+
*
|
|
43
|
+
* @param message - User input message
|
|
44
|
+
* @param projectContext - Optional project context for complexity boost
|
|
45
|
+
* @returns AgentReasoningResult with intent, stage, complexity, confidence, depth, anchors
|
|
46
|
+
*/
|
|
47
|
+
export declare function agentReason(message: string, projectContext?: AgentProjectContext): AgentReasoningResult;
|
|
48
|
+
//# sourceMappingURL=agent-reasoning-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-reasoning-engine.d.ts","sourceRoot":"","sources":["../src/agent-reasoning-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAKV,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAWnC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAY1D;AA+VD,wDAAwD;AACxD,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,aAAa,GACb,gBAAgB,GAChB,cAAc,GACd,YAAY,GACZ,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;CACxB;AA6ID,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAI5D;AAED,sFAAsF;AACtF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAI3D;AAkBD,uDAAuD;AACvD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAI/D;AAMD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,mBAAmB,GACnC,oBAAoB,CA6DtB"}
|
|
@@ -0,0 +1,544 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module agent-reasoning-engine
|
|
3
|
+
* @description Pure heuristic reasoning engine for the Agent Decision Engine.
|
|
4
|
+
*
|
|
5
|
+
* **NO LLM, NO async, pure functions.**
|
|
6
|
+
* Same input always yields same output (deterministic).
|
|
7
|
+
* Confidence capped at 0.85 (anti-overconfidence, YUA formula).
|
|
8
|
+
*
|
|
9
|
+
* Design spec: docs/superpowers/specs/2026-03-17-yuan-agent-decision-engine-design.md, sections 4.1-4.6
|
|
10
|
+
*/
|
|
11
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
12
|
+
// Helpers
|
|
13
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
14
|
+
/** Clamp a number to [0, 1]. */
|
|
15
|
+
function clamp01(x) {
|
|
16
|
+
return Math.max(0, Math.min(1, x));
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Sanitize user input before reasoning (YUA AOSS Lite pattern).
|
|
20
|
+
* Masks personal information but preserves code content.
|
|
21
|
+
* Does NOT block — just cleans sensitive data.
|
|
22
|
+
*/
|
|
23
|
+
export function sanitizeForReasoning(input) {
|
|
24
|
+
return input
|
|
25
|
+
// Korean phone numbers: 010-1234-5678
|
|
26
|
+
.replace(/\d{2,3}-\d{3,4}-\d{4}/g, "***-****-****")
|
|
27
|
+
// Email addresses
|
|
28
|
+
.replace(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g, "[email]")
|
|
29
|
+
// Password mentions (mask the value, not the keyword)
|
|
30
|
+
.replace(/(password|passwd|비밀번호|secret|api[_-]?key)\s*[:=]\s*\S+/gi, "$1=[masked]")
|
|
31
|
+
// Credit card patterns
|
|
32
|
+
.replace(/\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}/g, "****-****-****-****")
|
|
33
|
+
// Korean resident registration number
|
|
34
|
+
.replace(/\d{6}-[1-4]\d{6}/g, "******-*******");
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Smooth confidence damping above a clip threshold.
|
|
38
|
+
* YUA pipeline-lite: stability/overconfidence.ts
|
|
39
|
+
* Instead of hard-clamping at 0.85, excess is dampened: clip + excess/(1+k*excess)
|
|
40
|
+
* This produces a natural asymptotic curve instead of a hard ceiling.
|
|
41
|
+
*/
|
|
42
|
+
function suppressOverconfidence(p, clip = 0.85, k = 8) {
|
|
43
|
+
if (p <= clip)
|
|
44
|
+
return p;
|
|
45
|
+
const excess = p - clip;
|
|
46
|
+
return clip + excess / (1 + k * excess);
|
|
47
|
+
}
|
|
48
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
49
|
+
// Intent Classification (9 intents, Korean + English patterns)
|
|
50
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
51
|
+
const INTENT_RULES = [
|
|
52
|
+
{
|
|
53
|
+
key: "fix",
|
|
54
|
+
weight: 1.8,
|
|
55
|
+
patterns: [
|
|
56
|
+
/(에러|오류|버그|깨짐|안됨|crash|error|fix|broken|failing)/i,
|
|
57
|
+
/(고쳐|수정해|해결해|fix\s+this|debug)/i,
|
|
58
|
+
],
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
key: "refactor",
|
|
62
|
+
weight: 1.6,
|
|
63
|
+
patterns: [
|
|
64
|
+
/(리팩토링|리팩터|refactor|cleanup|clean up|정리|개선)/i,
|
|
65
|
+
/(추출|extract|분리|decouple|simplify)/i,
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
key: "plan",
|
|
70
|
+
weight: 1.5,
|
|
71
|
+
patterns: [
|
|
72
|
+
/(설계|구조|아키텍처|architecture|design|패턴|스펙)/i,
|
|
73
|
+
/(어떻게\s+(구현|설계|구조)|방법|전략)/i,
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
key: "edit",
|
|
78
|
+
weight: 1.4,
|
|
79
|
+
patterns: [
|
|
80
|
+
/(만들어|추가|생성|작성|구현|넣어|create|add|implement|write)/i,
|
|
81
|
+
/(변경|바꿔|modify|change|update)/i,
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
key: "test",
|
|
86
|
+
weight: 1.4,
|
|
87
|
+
patterns: [
|
|
88
|
+
/(테스트|test|spec|jest|vitest|검증|확인해)/i,
|
|
89
|
+
],
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
key: "verify",
|
|
93
|
+
weight: 1.3,
|
|
94
|
+
patterns: [
|
|
95
|
+
/(빌드|build|compile|tsc|타입체크|lint)/i,
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
key: "search",
|
|
100
|
+
weight: 1.2,
|
|
101
|
+
patterns: [
|
|
102
|
+
/(찾아|검색|어디|grep|find|locate|where)/i,
|
|
103
|
+
],
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
key: "read",
|
|
107
|
+
weight: 1.1,
|
|
108
|
+
patterns: [
|
|
109
|
+
/(봐|읽어|보여|분석|explain|show|read|analyze|what does)/i,
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
key: "inspect",
|
|
114
|
+
weight: 1.0,
|
|
115
|
+
patterns: [
|
|
116
|
+
/(살펴|확인|check|look|review|scan)/i,
|
|
117
|
+
/\?$/, // ends with question mark
|
|
118
|
+
],
|
|
119
|
+
},
|
|
120
|
+
];
|
|
121
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
122
|
+
// Task Stage Classification (4 stages)
|
|
123
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
124
|
+
const STAGE_RULES = [
|
|
125
|
+
{
|
|
126
|
+
key: "underspecified",
|
|
127
|
+
weight: 1.6,
|
|
128
|
+
patterns: [
|
|
129
|
+
/(뭔가|대충|적당히|알아서|좀|somehow|maybe|something)/i,
|
|
130
|
+
/(모르겠|헷갈|unclear|not sure|vague)/i,
|
|
131
|
+
],
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
key: "blocked",
|
|
135
|
+
weight: 1.5,
|
|
136
|
+
patterns: [
|
|
137
|
+
/(안 돼|안됨|막혀|stuck|blocked|can't|cannot|impossible)/i,
|
|
138
|
+
/(에러가 계속|keeps failing|infinite loop)/i,
|
|
139
|
+
],
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
key: "iterating",
|
|
143
|
+
weight: 1.4,
|
|
144
|
+
patterns: [
|
|
145
|
+
/(다시|또|반복|여전히|still|again|retry|계속)/i,
|
|
146
|
+
/(아까|이전|before|earlier|last time)/i,
|
|
147
|
+
],
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
key: "ready",
|
|
151
|
+
weight: 1.2,
|
|
152
|
+
patterns: [
|
|
153
|
+
/(이제|바로|ㄱㄱ|진행|시작|go|start|do it|해줘|해라)/i,
|
|
154
|
+
/(구현해|만들어|적용해|implement|create|apply)/i,
|
|
155
|
+
],
|
|
156
|
+
},
|
|
157
|
+
];
|
|
158
|
+
/**
|
|
159
|
+
* Score all rules against the input and pick the highest.
|
|
160
|
+
* Returns the winning key, its score, the second-best score, and total evidence count.
|
|
161
|
+
*/
|
|
162
|
+
function scoreByRules(message, rules, defaultKey) {
|
|
163
|
+
const scores = new Map();
|
|
164
|
+
const evidence = new Map();
|
|
165
|
+
for (const rule of rules) {
|
|
166
|
+
let hitCount = 0;
|
|
167
|
+
for (const pattern of rule.patterns) {
|
|
168
|
+
if (pattern.test(message))
|
|
169
|
+
hitCount++;
|
|
170
|
+
}
|
|
171
|
+
if (hitCount > 0) {
|
|
172
|
+
const prev = scores.get(rule.key) ?? 0;
|
|
173
|
+
scores.set(rule.key, prev + rule.weight * Math.min(hitCount, 3));
|
|
174
|
+
evidence.set(rule.key, (evidence.get(rule.key) ?? 0) + hitCount);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
let bestKey = defaultKey;
|
|
178
|
+
let bestScore = 0;
|
|
179
|
+
let secondBest = 0;
|
|
180
|
+
let totalEvidence = 0;
|
|
181
|
+
for (const [key, score] of scores) {
|
|
182
|
+
totalEvidence += evidence.get(key) ?? 0;
|
|
183
|
+
if (score > bestScore) {
|
|
184
|
+
secondBest = bestScore;
|
|
185
|
+
bestScore = score;
|
|
186
|
+
bestKey = key;
|
|
187
|
+
}
|
|
188
|
+
else if (score > secondBest) {
|
|
189
|
+
secondBest = score;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return { key: bestKey, score: bestScore, secondBest, evidenceCount: totalEvidence };
|
|
193
|
+
}
|
|
194
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
195
|
+
// Complexity Computation
|
|
196
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
197
|
+
/**
|
|
198
|
+
* Compute task complexity from message text and optional project context.
|
|
199
|
+
* Absorbs the old `detectComplexityHeuristic()` logic.
|
|
200
|
+
*/
|
|
201
|
+
function computeComplexity(message, projectContext) {
|
|
202
|
+
let score = 0;
|
|
203
|
+
const lower = message.toLowerCase();
|
|
204
|
+
const len = message.length;
|
|
205
|
+
// Length-based
|
|
206
|
+
if (len > 500)
|
|
207
|
+
score += 2;
|
|
208
|
+
else if (len > 200)
|
|
209
|
+
score += 1;
|
|
210
|
+
// File extension mentions
|
|
211
|
+
const fileCount = (lower.match(/\.(ts|js|tsx|jsx|py|go|rs|java|css|html)/g) ?? []).length;
|
|
212
|
+
score += Math.min(fileCount, 4);
|
|
213
|
+
// Complexity keywords
|
|
214
|
+
if (/(architecture|아키텍처|설계|system|전체|all files)/i.test(lower))
|
|
215
|
+
score += 3;
|
|
216
|
+
if (/(refactor|리팩토링|migration|마이그레이션)/i.test(lower))
|
|
217
|
+
score += 2;
|
|
218
|
+
if (/(test|테스트|spec)/i.test(lower))
|
|
219
|
+
score += 1;
|
|
220
|
+
if (/(simple|간단|just|only|딱)/i.test(lower))
|
|
221
|
+
score -= 1;
|
|
222
|
+
// Multi-task markers
|
|
223
|
+
const taskMarkers = lower.match(/(그리고|and then|또한|also|다음에|then)/gi) ?? [];
|
|
224
|
+
score += taskMarkers.length;
|
|
225
|
+
// Project context boost
|
|
226
|
+
if (projectContext) {
|
|
227
|
+
if (projectContext.monorepo)
|
|
228
|
+
score += 1;
|
|
229
|
+
if (projectContext.fileCount > 500)
|
|
230
|
+
score += 1;
|
|
231
|
+
if (projectContext.recentFailureCount > 2)
|
|
232
|
+
score += 1;
|
|
233
|
+
}
|
|
234
|
+
if (score <= 0)
|
|
235
|
+
return "trivial";
|
|
236
|
+
if (score <= 2)
|
|
237
|
+
return "simple";
|
|
238
|
+
if (score <= 5)
|
|
239
|
+
return "moderate";
|
|
240
|
+
if (score <= 8)
|
|
241
|
+
return "complex";
|
|
242
|
+
return "massive";
|
|
243
|
+
}
|
|
244
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
245
|
+
// Confidence Computation (YUA formula)
|
|
246
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
247
|
+
/**
|
|
248
|
+
* Compute confidence with YUA formula.
|
|
249
|
+
* 0.25 + 0.35*lenScore + 0.25*evScore + 0.25*gapScore + stageBias
|
|
250
|
+
* Capped at 0.85 (anti-overconfidence).
|
|
251
|
+
*/
|
|
252
|
+
function computeConfidence(params) {
|
|
253
|
+
const { inputLen, evidenceCount, topGap, stage } = params;
|
|
254
|
+
const lenScore = clamp01(inputLen / 80);
|
|
255
|
+
const evScore = clamp01(evidenceCount / 6);
|
|
256
|
+
const gapScore = clamp01(topGap / 2.5);
|
|
257
|
+
const stageBias = stage === "ready" ? 0.12
|
|
258
|
+
: stage === "underspecified" ? -0.12
|
|
259
|
+
: stage === "blocked" ? -0.08
|
|
260
|
+
: stage === "iterating" ? -0.06
|
|
261
|
+
: 0.04;
|
|
262
|
+
const raw = 0.25 + 0.35 * lenScore + 0.25 * evScore + 0.25 * gapScore + stageBias;
|
|
263
|
+
// YUA suppressOverconfidence: smooth damping above clip instead of hard clamp
|
|
264
|
+
return Number(suppressOverconfidence(clamp01(raw), 0.85, 8).toFixed(2));
|
|
265
|
+
}
|
|
266
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
267
|
+
// Cognitive Load Estimation
|
|
268
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
269
|
+
/** Estimate cognitive load from message character length. */
|
|
270
|
+
function estimateCognitiveLoad(charLen) {
|
|
271
|
+
if (charLen < 40)
|
|
272
|
+
return "low";
|
|
273
|
+
if (charLen < 200)
|
|
274
|
+
return "medium";
|
|
275
|
+
return "high";
|
|
276
|
+
}
|
|
277
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
278
|
+
// Depth Hint Estimation
|
|
279
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
280
|
+
/** Derive depth hint from intent, stage, and complexity. */
|
|
281
|
+
function estimateDepthHint(intent, stage, complexity) {
|
|
282
|
+
// Exploration intents are shallow unless complex
|
|
283
|
+
if ((intent === "inspect" || intent === "read" || intent === "search") &&
|
|
284
|
+
complexity !== "complex" &&
|
|
285
|
+
complexity !== "massive") {
|
|
286
|
+
return "shallow";
|
|
287
|
+
}
|
|
288
|
+
// Underspecified / trivial => shallow
|
|
289
|
+
if (stage === "underspecified" || complexity === "trivial")
|
|
290
|
+
return "shallow";
|
|
291
|
+
// Massive / complex => deep
|
|
292
|
+
if (complexity === "massive" || complexity === "complex")
|
|
293
|
+
return "deep";
|
|
294
|
+
return "normal";
|
|
295
|
+
}
|
|
296
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
297
|
+
// Next Anchors (deterministic decision table)
|
|
298
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
299
|
+
/** Infer 1~3 flow anchors from intent + stage. Never returns empty. */
|
|
300
|
+
function inferNextAnchors(intent, stage) {
|
|
301
|
+
// Stage overrides
|
|
302
|
+
if (stage === "underspecified")
|
|
303
|
+
return ["SEARCH_REPO", "READ_FILES"];
|
|
304
|
+
if (stage === "blocked")
|
|
305
|
+
return ["READ_FILES", "VERIFY_RESULT"];
|
|
306
|
+
switch (intent) {
|
|
307
|
+
case "inspect":
|
|
308
|
+
case "read":
|
|
309
|
+
case "search":
|
|
310
|
+
return ["SEARCH_REPO", "READ_FILES"];
|
|
311
|
+
case "plan":
|
|
312
|
+
return ["SEARCH_REPO", "READ_FILES", "PREPARE_PATCH"];
|
|
313
|
+
case "edit":
|
|
314
|
+
case "refactor":
|
|
315
|
+
return ["READ_FILES", "PREPARE_PATCH", "VERIFY_RESULT"];
|
|
316
|
+
case "fix":
|
|
317
|
+
return ["READ_FILES", "PREPARE_PATCH", "RUN_TESTS"];
|
|
318
|
+
case "test":
|
|
319
|
+
return ["RUN_TESTS", "VERIFY_RESULT"];
|
|
320
|
+
case "verify":
|
|
321
|
+
return ["VERIFY_RESULT", "SUMMARIZE_CHANGE"];
|
|
322
|
+
default:
|
|
323
|
+
return ["SEARCH_REPO"];
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
/** Classify error type from code/message text */
|
|
327
|
+
function detectErrorType(text) {
|
|
328
|
+
if (/TypeError/i.test(text))
|
|
329
|
+
return "TypeError";
|
|
330
|
+
if (/SyntaxError/i.test(text))
|
|
331
|
+
return "SyntaxError";
|
|
332
|
+
if (/ReferenceError/i.test(text))
|
|
333
|
+
return "ReferenceError";
|
|
334
|
+
if (/Error:|panic:|FATAL/i.test(text))
|
|
335
|
+
return "RuntimeError";
|
|
336
|
+
if (/tsc|TS\d{4}|type error/i.test(text))
|
|
337
|
+
return "BuildError";
|
|
338
|
+
if (/FAIL|test.*fail|assertion/i.test(text))
|
|
339
|
+
return "TestFailure";
|
|
340
|
+
return undefined;
|
|
341
|
+
}
|
|
342
|
+
/** Extract file paths from text (source refs, stack traces) */
|
|
343
|
+
function extractFilePaths(text) {
|
|
344
|
+
const paths = new Set();
|
|
345
|
+
// Match file paths like src/foo/bar.ts, ./utils/helper.js, etc.
|
|
346
|
+
const relMatches = text.match(/(?:\.\/|src\/|lib\/|app\/|pages\/|components\/)[a-zA-Z0-9_\-/]+\.[a-zA-Z]{1,5}/g) ?? [];
|
|
347
|
+
for (const m of relMatches)
|
|
348
|
+
paths.add(m);
|
|
349
|
+
// Match "at file:line" patterns from stack traces
|
|
350
|
+
const stackMatches = text.match(/at\s+(?:\S+\s+\()?(\/[^\s:)]+|[a-zA-Z0-9_\-.\/]+\.[a-zA-Z]{1,5})/g) ?? [];
|
|
351
|
+
for (const m of stackMatches) {
|
|
352
|
+
const cleaned = m.replace(/^at\s+(\S+\s+\()?/, "").replace(/[):]+$/, "");
|
|
353
|
+
if (cleaned.includes("."))
|
|
354
|
+
paths.add(cleaned);
|
|
355
|
+
}
|
|
356
|
+
return [...paths].slice(0, 10); // max 10
|
|
357
|
+
}
|
|
358
|
+
function analyzeCodeInMessage(message) {
|
|
359
|
+
// Extract code blocks
|
|
360
|
+
const codeBlockMatch = message.match(/```[\s\S]*?```/g);
|
|
361
|
+
if (!codeBlockMatch || codeBlockMatch.length === 0) {
|
|
362
|
+
// Check for inline code patterns (no fences)
|
|
363
|
+
const hasCodePattern = /\b(function|const|let|var|class|import|export|return|async|await)\b/.test(message);
|
|
364
|
+
if (!hasCodePattern)
|
|
365
|
+
return { detected: false, maxDepth: 0, branchCount: 0, loopCount: 0, functionCount: 0, hasAsync: false, hasEval: false, hasIO: false, mutationScore: 0, mentionedFiles: [], hasStackTrace: false };
|
|
366
|
+
}
|
|
367
|
+
const code = codeBlockMatch ? codeBlockMatch.join("\n") : message;
|
|
368
|
+
// Nesting depth estimate: count max sequential opening braces
|
|
369
|
+
let maxDepth = 0;
|
|
370
|
+
let currentDepth = 0;
|
|
371
|
+
for (const char of code) {
|
|
372
|
+
if (char === "{") {
|
|
373
|
+
currentDepth++;
|
|
374
|
+
maxDepth = Math.max(maxDepth, currentDepth);
|
|
375
|
+
}
|
|
376
|
+
else if (char === "}")
|
|
377
|
+
currentDepth = Math.max(0, currentDepth - 1);
|
|
378
|
+
}
|
|
379
|
+
const branchCount = (code.match(/\b(if|switch|case|\?)\b/g) || []).length;
|
|
380
|
+
const loopCount = (code.match(/\b(for|while|do)\b/g) || []).length;
|
|
381
|
+
const functionCount = (code.match(/\b(function|=>)\b/g) || []).length;
|
|
382
|
+
const hasAsync = /\b(async|await|Promise)\b/.test(code);
|
|
383
|
+
const hasEval = /\b(eval|new\s+Function)\b/.test(code);
|
|
384
|
+
const hasIO = /\b(fetch|require\s*\(\s*['"](?:fs|http|net|child_process)['"]|readFile|writeFile)\b/.test(code);
|
|
385
|
+
const assignments = (code.match(/[^=!<>]=[^=]/g) || []).length;
|
|
386
|
+
const mutationScore = clamp01(assignments / Math.max(1, code.split("\n").length) * 2);
|
|
387
|
+
// Error classification + file extraction (P1 enhancement)
|
|
388
|
+
const errorType = detectErrorType(code + " " + message);
|
|
389
|
+
const mentionedFiles = extractFilePaths(code + " " + message);
|
|
390
|
+
const hasStackTrace = /at\s+\S+\s*\(|stack\s*trace|Traceback/i.test(code + " " + message);
|
|
391
|
+
return {
|
|
392
|
+
detected: true,
|
|
393
|
+
maxDepth,
|
|
394
|
+
branchCount,
|
|
395
|
+
loopCount,
|
|
396
|
+
functionCount,
|
|
397
|
+
hasAsync,
|
|
398
|
+
hasEval,
|
|
399
|
+
hasIO,
|
|
400
|
+
mutationScore,
|
|
401
|
+
errorType,
|
|
402
|
+
mentionedFiles,
|
|
403
|
+
hasStackTrace,
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
function analyzeMathInMessage(message) {
|
|
407
|
+
// Math detection: symbols/keywords that indicate mathematical content
|
|
408
|
+
const mathSymbols = /[∫∑∏∂∇√∞≈≠≤≥±×÷∈∉⊂⊃∪∩∀∃]/;
|
|
409
|
+
const mathKeywords = /\b(integral|derivative|summation|equation|theorem|proof|matrix|vector|eigenvalue|gradient|divergence|laplacian)\b/i;
|
|
410
|
+
const latexPattern = /\\(int|sum|prod|frac|sqrt|lim|partial|nabla|infty|begin\{)/;
|
|
411
|
+
const hasMathContent = mathSymbols.test(message) || mathKeywords.test(message) || latexPattern.test(message);
|
|
412
|
+
if (!hasMathContent) {
|
|
413
|
+
// Check for dense arithmetic that isn't just code
|
|
414
|
+
const pureArithmetic = /[=+\-*/^()]{3,}/.test(message) && !/function|class|=>|{|}/.test(message);
|
|
415
|
+
if (!pureArithmetic)
|
|
416
|
+
return { detected: false, hasIntegral: false, hasDerivative: false, hasSummation: false, operatorCount: 0, nestingDepth: 0, symbolicDensity: 0 };
|
|
417
|
+
}
|
|
418
|
+
const hasIntegral = /∫|\\int|\bintegral\b/i.test(message);
|
|
419
|
+
const hasDerivative = /∂|\\partial|\bderivative\b|d\/d[xyz]/i.test(message);
|
|
420
|
+
const hasSummation = /∑|\\sum|\bsummation\b|\bseries\b/i.test(message);
|
|
421
|
+
const operatorCount = (message.match(/[+\-*/^=<>≈≠≤≥±×÷]/g) || []).length;
|
|
422
|
+
// Nesting: count parentheses depth
|
|
423
|
+
let nestingDepth = 0;
|
|
424
|
+
let maxNesting = 0;
|
|
425
|
+
for (const char of message) {
|
|
426
|
+
if (char === "(") {
|
|
427
|
+
nestingDepth++;
|
|
428
|
+
maxNesting = Math.max(maxNesting, nestingDepth);
|
|
429
|
+
}
|
|
430
|
+
else if (char === ")")
|
|
431
|
+
nestingDepth = Math.max(0, nestingDepth - 1);
|
|
432
|
+
}
|
|
433
|
+
// Symbolic density: ratio of non-alphanumeric non-space chars
|
|
434
|
+
const symbolChars = (message.match(/[^a-zA-Z0-9가-힣\s]/g) || []).length;
|
|
435
|
+
const symbolicDensity = clamp01(symbolChars / Math.max(1, message.length));
|
|
436
|
+
return {
|
|
437
|
+
detected: true,
|
|
438
|
+
hasIntegral,
|
|
439
|
+
hasDerivative,
|
|
440
|
+
hasSummation,
|
|
441
|
+
operatorCount,
|
|
442
|
+
nestingDepth: maxNesting,
|
|
443
|
+
symbolicDensity,
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
447
|
+
// Narration Detection Helpers (for CLI pacer reuse)
|
|
448
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
449
|
+
/** Check if the message is a short continuation trigger (e.g. "ㄱㄱ", "go"). */
|
|
450
|
+
export function isShortContinuation(message) {
|
|
451
|
+
return /^(계속|다음|진행|ㄱㄱ|go|continue|next|이어서|ok|ㅇㅇ|넹|yes)$/i.test(message.trim());
|
|
452
|
+
}
|
|
453
|
+
/** Check if the message is likely a narration/explanation request (not an action). */
|
|
454
|
+
export function isNarrationRequest(message) {
|
|
455
|
+
return /^(설명|explain|뭐야|what is|how does|why|어떻게|왜)/i.test(message.trim());
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* Casual action override (YUA isCasualActionRequest 이식).
|
|
459
|
+
* 구어체 실행/안내 요청 감지 — underspecified 판정 취소에 사용.
|
|
460
|
+
*/
|
|
461
|
+
function isCasualAction(message) {
|
|
462
|
+
const m = message.trim();
|
|
463
|
+
return (
|
|
464
|
+
// 한국어 구어체 실행 요청
|
|
465
|
+
/(해줘|알려줘|안내해줘|정리해줘|보여줘|말해줘|고쳐줘|만들어줘|실행해줘)$/i.test(m) ||
|
|
466
|
+
// 한국어 단답 실행
|
|
467
|
+
/^(ㄱㄱ|ㄱ|고고|시작|진행|해|가자|해라)$/i.test(m) ||
|
|
468
|
+
// 영어 casual action
|
|
469
|
+
/^(go|do it|fix it|start|just do it|run it)$/i.test(m));
|
|
470
|
+
}
|
|
471
|
+
/** Check if the message references a previous turn. */
|
|
472
|
+
export function referencesPreviousTurn(message) {
|
|
473
|
+
return /(아까|이전|위에|방금|earlier|previous|that file|same|last)/i.test(message);
|
|
474
|
+
}
|
|
475
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
476
|
+
// Main Entry Point
|
|
477
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
478
|
+
/**
|
|
479
|
+
* Pure heuristic reasoning. NO LLM, NO async, deterministic.
|
|
480
|
+
*
|
|
481
|
+
* @param message - User input message
|
|
482
|
+
* @param projectContext - Optional project context for complexity boost
|
|
483
|
+
* @returns AgentReasoningResult with intent, stage, complexity, confidence, depth, anchors
|
|
484
|
+
*/
|
|
485
|
+
export function agentReason(message, projectContext) {
|
|
486
|
+
// 1. Intent classification
|
|
487
|
+
const intentResult = scoreByRules(message, INTENT_RULES, "inspect");
|
|
488
|
+
// 2. Task stage classification
|
|
489
|
+
const stageResult = scoreByRules(message, STAGE_RULES, "ready");
|
|
490
|
+
// 3. Complexity
|
|
491
|
+
const complexity = computeComplexity(message, projectContext);
|
|
492
|
+
// 4. Confidence (YUA formula)
|
|
493
|
+
const confidence = computeConfidence({
|
|
494
|
+
inputLen: message.length,
|
|
495
|
+
evidenceCount: intentResult.evidenceCount + stageResult.evidenceCount,
|
|
496
|
+
topGap: intentResult.score - intentResult.secondBest,
|
|
497
|
+
stage: stageResult.key,
|
|
498
|
+
});
|
|
499
|
+
// 4.5 Casual action override (YUA isCasualActionRequest 이식)
|
|
500
|
+
// "ㄱㄱ", "해줘", "고쳐", "알려줘" 같은 구어체 실행 요청 →
|
|
501
|
+
// underspecified로 판단됐어도 실행 의사가 명확하므로 ready로 승격
|
|
502
|
+
let finalStage = stageResult.key;
|
|
503
|
+
if (finalStage === "underspecified" && isCasualAction(message)) {
|
|
504
|
+
finalStage = "ready";
|
|
505
|
+
}
|
|
506
|
+
// 5. Code/Math AST analysis (YUA capability porting — NO LLM, pure pattern)
|
|
507
|
+
const codeFeatures = analyzeCodeInMessage(message);
|
|
508
|
+
const mathFeatures = analyzeMathInMessage(message);
|
|
509
|
+
// 5.5 Cognitive load — enhanced with AST features
|
|
510
|
+
let cognitiveLoad = estimateCognitiveLoad(message.length);
|
|
511
|
+
if (codeFeatures.detected) {
|
|
512
|
+
// Deep nesting, many branches, async patterns → higher cognitive load
|
|
513
|
+
if (codeFeatures.maxDepth >= 4 || codeFeatures.branchCount >= 5)
|
|
514
|
+
cognitiveLoad = "high";
|
|
515
|
+
else if (codeFeatures.maxDepth >= 2 || codeFeatures.branchCount >= 2)
|
|
516
|
+
cognitiveLoad = cognitiveLoad === "low" ? "medium" : cognitiveLoad;
|
|
517
|
+
}
|
|
518
|
+
if (mathFeatures.detected) {
|
|
519
|
+
if (mathFeatures.hasIntegral || mathFeatures.hasDerivative || mathFeatures.nestingDepth >= 3)
|
|
520
|
+
cognitiveLoad = "high";
|
|
521
|
+
else if (mathFeatures.symbolicDensity > 0.3)
|
|
522
|
+
cognitiveLoad = cognitiveLoad === "low" ? "medium" : cognitiveLoad;
|
|
523
|
+
}
|
|
524
|
+
// 6. Depth hint — enhanced with AST
|
|
525
|
+
let depthHint = estimateDepthHint(intentResult.key, finalStage, complexity);
|
|
526
|
+
if ((codeFeatures.detected && codeFeatures.maxDepth >= 3) || (mathFeatures.detected && mathFeatures.hasIntegral)) {
|
|
527
|
+
if (depthHint === "shallow")
|
|
528
|
+
depthHint = "normal";
|
|
529
|
+
if (cognitiveLoad === "high" && depthHint === "normal")
|
|
530
|
+
depthHint = "deep";
|
|
531
|
+
}
|
|
532
|
+
// 7. Next anchors
|
|
533
|
+
const nextAnchors = inferNextAnchors(intentResult.key, finalStage);
|
|
534
|
+
return {
|
|
535
|
+
intent: intentResult.key,
|
|
536
|
+
taskStage: finalStage,
|
|
537
|
+
complexity,
|
|
538
|
+
confidence,
|
|
539
|
+
depthHint,
|
|
540
|
+
cognitiveLoad,
|
|
541
|
+
nextAnchors,
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
//# sourceMappingURL=agent-reasoning-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-reasoning-engine.js","sourceRoot":"","sources":["../src/agent-reasoning-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -330,6 +330,9 @@ export declare class CodebaseContext {
|
|
|
330
330
|
totalFiles: number;
|
|
331
331
|
totalSymbols: number;
|
|
332
332
|
avgComplexity: number;
|
|
333
|
+
avgCognitive: number;
|
|
334
|
+
maxComplexity: number;
|
|
335
|
+
avgLoc: number;
|
|
333
336
|
};
|
|
334
337
|
/**
|
|
335
338
|
* Recursively collect all source files under a directory,
|