@yuaone/core 0.9.43 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/dist/agent-affordance.d.ts +37 -0
  2. package/dist/agent-affordance.d.ts.map +1 -0
  3. package/dist/agent-affordance.js +139 -0
  4. package/dist/agent-affordance.js.map +1 -0
  5. package/dist/agent-decision-types.d.ts +262 -0
  6. package/dist/agent-decision-types.d.ts.map +1 -0
  7. package/dist/agent-decision-types.js +19 -0
  8. package/dist/agent-decision-types.js.map +1 -0
  9. package/dist/agent-decision.d.ts +52 -0
  10. package/dist/agent-decision.d.ts.map +1 -0
  11. package/dist/agent-decision.js +767 -0
  12. package/dist/agent-decision.js.map +1 -0
  13. package/dist/agent-loop.d.ts +37 -79
  14. package/dist/agent-loop.d.ts.map +1 -1
  15. package/dist/agent-loop.js +730 -586
  16. package/dist/agent-loop.js.map +1 -1
  17. package/dist/agent-reasoning-engine.d.ts +48 -0
  18. package/dist/agent-reasoning-engine.d.ts.map +1 -0
  19. package/dist/agent-reasoning-engine.js +544 -0
  20. package/dist/agent-reasoning-engine.js.map +1 -0
  21. package/dist/codebase-context.d.ts +3 -0
  22. package/dist/codebase-context.d.ts.map +1 -1
  23. package/dist/codebase-context.js +15 -6
  24. package/dist/codebase-context.js.map +1 -1
  25. package/dist/command-plan-compiler.d.ts +43 -0
  26. package/dist/command-plan-compiler.d.ts.map +1 -0
  27. package/dist/command-plan-compiler.js +164 -0
  28. package/dist/command-plan-compiler.js.map +1 -0
  29. package/dist/dependency-guard.d.ts +18 -0
  30. package/dist/dependency-guard.d.ts.map +1 -0
  31. package/dist/dependency-guard.js +113 -0
  32. package/dist/dependency-guard.js.map +1 -0
  33. package/dist/execution-engine.d.ts +10 -1
  34. package/dist/execution-engine.d.ts.map +1 -1
  35. package/dist/execution-engine.js +162 -8
  36. package/dist/execution-engine.js.map +1 -1
  37. package/dist/execution-receipt.d.ts +62 -0
  38. package/dist/execution-receipt.d.ts.map +1 -0
  39. package/dist/execution-receipt.js +67 -0
  40. package/dist/execution-receipt.js.map +1 -0
  41. package/dist/failure-surface-writer.d.ts +13 -0
  42. package/dist/failure-surface-writer.d.ts.map +1 -0
  43. package/dist/failure-surface-writer.js +33 -0
  44. package/dist/failure-surface-writer.js.map +1 -0
  45. package/dist/file-chunker.d.ts +26 -0
  46. package/dist/file-chunker.d.ts.map +1 -0
  47. package/dist/file-chunker.js +103 -0
  48. package/dist/file-chunker.js.map +1 -0
  49. package/dist/image-observer.d.ts +22 -0
  50. package/dist/image-observer.d.ts.map +1 -0
  51. package/dist/image-observer.js +60 -0
  52. package/dist/image-observer.js.map +1 -0
  53. package/dist/index.d.ts +55 -0
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +53 -0
  56. package/dist/index.js.map +1 -1
  57. package/dist/judgment-rules.d.ts +44 -0
  58. package/dist/judgment-rules.d.ts.map +1 -0
  59. package/dist/judgment-rules.js +185 -0
  60. package/dist/judgment-rules.js.map +1 -0
  61. package/dist/memory-decay.d.ts +41 -0
  62. package/dist/memory-decay.d.ts.map +1 -0
  63. package/dist/memory-decay.js +62 -0
  64. package/dist/memory-decay.js.map +1 -0
  65. package/dist/memory-manager.d.ts.map +1 -1
  66. package/dist/memory-manager.js +30 -0
  67. package/dist/memory-manager.js.map +1 -1
  68. package/dist/model-weakness-tracker.d.ts +42 -0
  69. package/dist/model-weakness-tracker.d.ts.map +1 -0
  70. package/dist/model-weakness-tracker.js +107 -0
  71. package/dist/model-weakness-tracker.js.map +1 -0
  72. package/dist/overhead-governor.d.ts +3 -1
  73. package/dist/overhead-governor.d.ts.map +1 -1
  74. package/dist/overhead-governor.js +5 -0
  75. package/dist/overhead-governor.js.map +1 -1
  76. package/dist/patch-scope-controller.d.ts +44 -0
  77. package/dist/patch-scope-controller.d.ts.map +1 -0
  78. package/dist/patch-scope-controller.js +107 -0
  79. package/dist/patch-scope-controller.js.map +1 -0
  80. package/dist/patch-transaction.d.ts +53 -0
  81. package/dist/patch-transaction.d.ts.map +1 -0
  82. package/dist/patch-transaction.js +119 -0
  83. package/dist/patch-transaction.js.map +1 -0
  84. package/dist/pre-write-validator.d.ts +29 -0
  85. package/dist/pre-write-validator.d.ts.map +1 -0
  86. package/dist/pre-write-validator.js +97 -0
  87. package/dist/pre-write-validator.js.map +1 -0
  88. package/dist/prompt-builder.d.ts +25 -0
  89. package/dist/prompt-builder.d.ts.map +1 -0
  90. package/dist/prompt-builder.js +93 -0
  91. package/dist/prompt-builder.js.map +1 -0
  92. package/dist/prompt-envelope.d.ts +40 -0
  93. package/dist/prompt-envelope.d.ts.map +1 -0
  94. package/dist/prompt-envelope.js +16 -0
  95. package/dist/prompt-envelope.js.map +1 -0
  96. package/dist/prompt-runtime.d.ts +66 -0
  97. package/dist/prompt-runtime.d.ts.map +1 -0
  98. package/dist/prompt-runtime.js +492 -0
  99. package/dist/prompt-runtime.js.map +1 -0
  100. package/dist/repo-capability-profile.d.ts +24 -0
  101. package/dist/repo-capability-profile.d.ts.map +1 -0
  102. package/dist/repo-capability-profile.js +113 -0
  103. package/dist/repo-capability-profile.js.map +1 -0
  104. package/dist/security-gate.d.ts +39 -0
  105. package/dist/security-gate.d.ts.map +1 -0
  106. package/dist/security-gate.js +121 -0
  107. package/dist/security-gate.js.map +1 -0
  108. package/dist/self-evaluation.d.ts +22 -0
  109. package/dist/self-evaluation.d.ts.map +1 -0
  110. package/dist/self-evaluation.js +43 -0
  111. package/dist/self-evaluation.js.map +1 -0
  112. package/dist/semantic-diff-reviewer.d.ts +28 -0
  113. package/dist/semantic-diff-reviewer.d.ts.map +1 -0
  114. package/dist/semantic-diff-reviewer.js +168 -0
  115. package/dist/semantic-diff-reviewer.js.map +1 -0
  116. package/dist/stall-detector.d.ts +26 -2
  117. package/dist/stall-detector.d.ts.map +1 -1
  118. package/dist/stall-detector.js +128 -3
  119. package/dist/stall-detector.js.map +1 -1
  120. package/dist/system-core.d.ts +27 -0
  121. package/dist/system-core.d.ts.map +1 -0
  122. package/dist/system-core.js +269 -0
  123. package/dist/system-core.js.map +1 -0
  124. package/dist/system-prompt.d.ts +4 -0
  125. package/dist/system-prompt.d.ts.map +1 -1
  126. package/dist/system-prompt.js +12 -218
  127. package/dist/system-prompt.js.map +1 -1
  128. package/dist/target-file-ranker.d.ts +38 -0
  129. package/dist/target-file-ranker.d.ts.map +1 -0
  130. package/dist/target-file-ranker.js +90 -0
  131. package/dist/target-file-ranker.js.map +1 -0
  132. package/dist/task-classifier.d.ts +6 -0
  133. package/dist/task-classifier.d.ts.map +1 -1
  134. package/dist/task-classifier.js +6 -0
  135. package/dist/task-classifier.js.map +1 -1
  136. package/dist/test-impact-planner.d.ts +16 -0
  137. package/dist/test-impact-planner.d.ts.map +1 -0
  138. package/dist/test-impact-planner.js +68 -0
  139. package/dist/test-impact-planner.js.map +1 -0
  140. package/dist/tool-outcome-cache.d.ts +41 -0
  141. package/dist/tool-outcome-cache.d.ts.map +1 -0
  142. package/dist/tool-outcome-cache.js +88 -0
  143. package/dist/tool-outcome-cache.js.map +1 -0
  144. package/dist/types.d.ts +39 -0
  145. package/dist/types.d.ts.map +1 -1
  146. package/dist/verifier-rules.d.ts +15 -0
  147. package/dist/verifier-rules.d.ts.map +1 -0
  148. package/dist/verifier-rules.js +80 -0
  149. package/dist/verifier-rules.js.map +1 -0
  150. package/dist/workspace-mutation-policy.d.ts +28 -0
  151. package/dist/workspace-mutation-policy.d.ts.map +1 -0
  152. package/dist/workspace-mutation-policy.js +56 -0
  153. package/dist/workspace-mutation-policy.js.map +1 -0
  154. 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,