dino-spec 13.6.1 → 14.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.
Files changed (231) hide show
  1. package/README.md +118 -5
  2. package/dist/commands/hud.d.ts +1 -8
  3. package/dist/commands/hud.d.ts.map +1 -1
  4. package/dist/commands/hud.js +4 -18
  5. package/dist/commands/hud.js.map +1 -1
  6. package/dist/core/agents/ambiguity-resolver.d.ts +118 -0
  7. package/dist/core/agents/ambiguity-resolver.d.ts.map +1 -0
  8. package/dist/core/agents/ambiguity-resolver.js +327 -0
  9. package/dist/core/agents/ambiguity-resolver.js.map +1 -0
  10. package/dist/core/agents/confidence-gate.d.ts +99 -0
  11. package/dist/core/agents/confidence-gate.d.ts.map +1 -0
  12. package/dist/core/agents/confidence-gate.js +295 -0
  13. package/dist/core/agents/confidence-gate.js.map +1 -0
  14. package/dist/core/agents/feedback-collector.d.ts +108 -0
  15. package/dist/core/agents/feedback-collector.d.ts.map +1 -0
  16. package/dist/core/agents/feedback-collector.js +313 -0
  17. package/dist/core/agents/feedback-collector.js.map +1 -0
  18. package/dist/core/agents/parallel-reviewer.d.ts +88 -0
  19. package/dist/core/agents/parallel-reviewer.d.ts.map +1 -0
  20. package/dist/core/agents/parallel-reviewer.js +459 -0
  21. package/dist/core/agents/parallel-reviewer.js.map +1 -0
  22. package/dist/core/agents/reviewer-loop.d.ts +102 -0
  23. package/dist/core/agents/reviewer-loop.d.ts.map +1 -0
  24. package/dist/core/agents/reviewer-loop.js +373 -0
  25. package/dist/core/agents/reviewer-loop.js.map +1 -0
  26. package/dist/core/agents/skill-auditor.d.ts +82 -0
  27. package/dist/core/agents/skill-auditor.d.ts.map +1 -0
  28. package/dist/core/agents/skill-auditor.js +278 -0
  29. package/dist/core/agents/skill-auditor.js.map +1 -0
  30. package/dist/core/config/feature-flags.d.ts +25 -1
  31. package/dist/core/config/feature-flags.d.ts.map +1 -1
  32. package/dist/core/config/feature-flags.js +7 -1
  33. package/dist/core/config/feature-flags.js.map +1 -1
  34. package/dist/core/context/__tests__/budget-thresholds.test.d.ts +5 -0
  35. package/dist/core/context/__tests__/budget-thresholds.test.d.ts.map +1 -0
  36. package/dist/core/context/__tests__/budget-thresholds.test.js +223 -0
  37. package/dist/core/context/__tests__/budget-thresholds.test.js.map +1 -0
  38. package/dist/core/context/__tests__/compaction-engine.test.d.ts +5 -0
  39. package/dist/core/context/__tests__/compaction-engine.test.d.ts.map +1 -0
  40. package/dist/core/context/__tests__/compaction-engine.test.js +474 -0
  41. package/dist/core/context/__tests__/compaction-engine.test.js.map +1 -0
  42. package/dist/core/context/__tests__/output-persistence.test.d.ts +5 -0
  43. package/dist/core/context/__tests__/output-persistence.test.d.ts.map +1 -0
  44. package/dist/core/context/__tests__/output-persistence.test.js +246 -0
  45. package/dist/core/context/__tests__/output-persistence.test.js.map +1 -0
  46. package/dist/core/context/auto-injection-engine.d.ts +10 -1
  47. package/dist/core/context/auto-injection-engine.d.ts.map +1 -1
  48. package/dist/core/context/auto-injection-engine.js +45 -2
  49. package/dist/core/context/auto-injection-engine.js.map +1 -1
  50. package/dist/core/context/budget-thresholds.d.ts +167 -0
  51. package/dist/core/context/budget-thresholds.d.ts.map +1 -0
  52. package/dist/core/context/budget-thresholds.js +234 -0
  53. package/dist/core/context/budget-thresholds.js.map +1 -0
  54. package/dist/core/context/compaction-engine.d.ts +193 -0
  55. package/dist/core/context/compaction-engine.d.ts.map +1 -0
  56. package/dist/core/context/compaction-engine.js +376 -0
  57. package/dist/core/context/compaction-engine.js.map +1 -0
  58. package/dist/core/context/context-health.d.ts +27 -2
  59. package/dist/core/context/context-health.d.ts.map +1 -1
  60. package/dist/core/context/context-health.js +98 -12
  61. package/dist/core/context/context-health.js.map +1 -1
  62. package/dist/core/context/focus-resource-loader.d.ts +143 -0
  63. package/dist/core/context/focus-resource-loader.d.ts.map +1 -0
  64. package/dist/core/context/focus-resource-loader.js +305 -0
  65. package/dist/core/context/focus-resource-loader.js.map +1 -0
  66. package/dist/core/context/index.d.ts +10 -5
  67. package/dist/core/context/index.d.ts.map +1 -1
  68. package/dist/core/context/index.js +40 -5
  69. package/dist/core/context/index.js.map +1 -1
  70. package/dist/core/context/lazy-loader.d.ts +44 -1
  71. package/dist/core/context/lazy-loader.d.ts.map +1 -1
  72. package/dist/core/context/lazy-loader.js +59 -1
  73. package/dist/core/context/lazy-loader.js.map +1 -1
  74. package/dist/core/context/output-persistence.d.ts +142 -0
  75. package/dist/core/context/output-persistence.d.ts.map +1 -0
  76. package/dist/core/context/output-persistence.js +242 -0
  77. package/dist/core/context/output-persistence.js.map +1 -0
  78. package/dist/core/context-repl/__tests__/repl-environment.test.d.ts +7 -0
  79. package/dist/core/context-repl/__tests__/repl-environment.test.d.ts.map +1 -0
  80. package/dist/core/context-repl/__tests__/repl-environment.test.js +335 -0
  81. package/dist/core/context-repl/__tests__/repl-environment.test.js.map +1 -0
  82. package/dist/core/context-repl/context-window-monitor.d.ts +181 -0
  83. package/dist/core/context-repl/context-window-monitor.d.ts.map +1 -0
  84. package/dist/core/context-repl/context-window-monitor.js +309 -0
  85. package/dist/core/context-repl/context-window-monitor.js.map +1 -0
  86. package/dist/core/context-repl/index.d.ts +8 -3
  87. package/dist/core/context-repl/index.d.ts.map +1 -1
  88. package/dist/core/context-repl/index.js +11 -3
  89. package/dist/core/context-repl/index.js.map +1 -1
  90. package/dist/core/context-repl/repl-environment.d.ts +66 -0
  91. package/dist/core/context-repl/repl-environment.d.ts.map +1 -0
  92. package/dist/core/context-repl/repl-environment.js +795 -0
  93. package/dist/core/context-repl/repl-environment.js.map +1 -0
  94. package/dist/core/context-repl/types.d.ts +277 -1
  95. package/dist/core/context-repl/types.d.ts.map +1 -1
  96. package/dist/core/context-repl/types.js +52 -1
  97. package/dist/core/context-repl/types.js.map +1 -1
  98. package/dist/core/environment/__tests__/pre-verify.test.d.ts +5 -0
  99. package/dist/core/environment/__tests__/pre-verify.test.d.ts.map +1 -0
  100. package/dist/core/environment/__tests__/pre-verify.test.js +343 -0
  101. package/dist/core/environment/__tests__/pre-verify.test.js.map +1 -0
  102. package/dist/core/environment/index.d.ts +8 -0
  103. package/dist/core/environment/index.d.ts.map +1 -0
  104. package/dist/core/environment/index.js +7 -0
  105. package/dist/core/environment/index.js.map +1 -0
  106. package/dist/core/environment/pre-verify.d.ts +63 -0
  107. package/dist/core/environment/pre-verify.d.ts.map +1 -0
  108. package/dist/core/environment/pre-verify.js +221 -0
  109. package/dist/core/environment/pre-verify.js.map +1 -0
  110. package/dist/core/environment/types.d.ts +37 -0
  111. package/dist/core/environment/types.d.ts.map +1 -0
  112. package/dist/core/environment/types.js +5 -0
  113. package/dist/core/environment/types.js.map +1 -0
  114. package/dist/core/generator/claude-md.js +1 -1
  115. package/dist/core/intelligence/context-budget.d.ts +10 -5
  116. package/dist/core/intelligence/context-budget.d.ts.map +1 -1
  117. package/dist/core/intelligence/context-budget.js +12 -5
  118. package/dist/core/intelligence/context-budget.js.map +1 -1
  119. package/dist/core/provider/storage.d.ts.map +1 -1
  120. package/dist/core/provider/storage.js +1 -2
  121. package/dist/core/provider/storage.js.map +1 -1
  122. package/dist/hooks/post-edit.js +73 -0
  123. package/dist/hooks/post-edit.js.map +1 -1
  124. package/dist/hooks/session-start.js +115 -0
  125. package/dist/hooks/session-start.js.map +1 -1
  126. package/dist/hooks/types.js +1 -1
  127. package/dist/hooks/user-prompt-submit.js +100 -0
  128. package/dist/hooks/user-prompt-submit.js.map +1 -1
  129. package/dist/hud/config.d.ts +3 -28
  130. package/dist/hud/config.d.ts.map +1 -1
  131. package/dist/hud/config.js +8 -60
  132. package/dist/hud/config.js.map +1 -1
  133. package/dist/hud/index.d.ts.map +1 -1
  134. package/dist/hud/index.js +0 -1
  135. package/dist/hud/index.js.map +1 -1
  136. package/dist/hud/render/budget-bar.d.ts +0 -2
  137. package/dist/hud/render/budget-bar.d.ts.map +1 -1
  138. package/dist/hud/render/budget-bar.js +5 -8
  139. package/dist/hud/render/budget-bar.js.map +1 -1
  140. package/dist/hud/stdin.d.ts +0 -3
  141. package/dist/hud/stdin.d.ts.map +1 -1
  142. package/dist/hud/stdin.js +2 -29
  143. package/dist/hud/stdin.js.map +1 -1
  144. package/dist/hud/types.d.ts +0 -2
  145. package/dist/hud/types.d.ts.map +1 -1
  146. package/dist/mcp/__tests__/dynamic-updates.test.d.ts +5 -0
  147. package/dist/mcp/__tests__/dynamic-updates.test.d.ts.map +1 -0
  148. package/dist/mcp/__tests__/dynamic-updates.test.js +314 -0
  149. package/dist/mcp/__tests__/dynamic-updates.test.js.map +1 -0
  150. package/dist/mcp/dynamic-updates.d.ts +167 -0
  151. package/dist/mcp/dynamic-updates.d.ts.map +1 -0
  152. package/dist/mcp/dynamic-updates.js +313 -0
  153. package/dist/mcp/dynamic-updates.js.map +1 -0
  154. package/dist/mcp/focus-filter.d.ts +74 -0
  155. package/dist/mcp/focus-filter.d.ts.map +1 -0
  156. package/dist/mcp/focus-filter.js +229 -0
  157. package/dist/mcp/focus-filter.js.map +1 -0
  158. package/dist/mcp/index.d.ts +4 -2
  159. package/dist/mcp/index.d.ts.map +1 -1
  160. package/dist/mcp/index.js +5 -2
  161. package/dist/mcp/index.js.map +1 -1
  162. package/dist/mcp/registry.d.ts +4 -4
  163. package/dist/mcp/registry.d.ts.map +1 -1
  164. package/dist/mcp/registry.js +17 -16
  165. package/dist/mcp/registry.js.map +1 -1
  166. package/dist/mcp/server.d.ts +2 -1
  167. package/dist/mcp/server.d.ts.map +1 -1
  168. package/dist/mcp/server.js +12 -3
  169. package/dist/mcp/server.js.map +1 -1
  170. package/dist/mcp/tool-tiers.d.ts.map +1 -1
  171. package/dist/mcp/tool-tiers.js +5 -0
  172. package/dist/mcp/tool-tiers.js.map +1 -1
  173. package/dist/mcp/tools/__tests__/environment.test.d.ts +5 -0
  174. package/dist/mcp/tools/__tests__/environment.test.d.ts.map +1 -0
  175. package/dist/mcp/tools/__tests__/environment.test.js +219 -0
  176. package/dist/mcp/tools/__tests__/environment.test.js.map +1 -0
  177. package/dist/mcp/tools/auto-inject.d.ts +36 -0
  178. package/dist/mcp/tools/auto-inject.d.ts.map +1 -0
  179. package/dist/mcp/tools/auto-inject.js +143 -0
  180. package/dist/mcp/tools/auto-inject.js.map +1 -0
  181. package/dist/mcp/tools/auto-unload.d.ts +29 -0
  182. package/dist/mcp/tools/auto-unload.d.ts.map +1 -0
  183. package/dist/mcp/tools/auto-unload.js +151 -0
  184. package/dist/mcp/tools/auto-unload.js.map +1 -0
  185. package/dist/mcp/tools/context-repl.d.ts +48 -0
  186. package/dist/mcp/tools/context-repl.d.ts.map +1 -0
  187. package/dist/mcp/tools/context-repl.js +290 -0
  188. package/dist/mcp/tools/context-repl.js.map +1 -0
  189. package/dist/mcp/tools/environment.d.ts +27 -0
  190. package/dist/mcp/tools/environment.d.ts.map +1 -0
  191. package/dist/mcp/tools/environment.js +97 -0
  192. package/dist/mcp/tools/environment.js.map +1 -0
  193. package/dist/mcp/tools/feedback.d.ts +63 -0
  194. package/dist/mcp/tools/feedback.d.ts.map +1 -0
  195. package/dist/mcp/tools/feedback.js +255 -0
  196. package/dist/mcp/tools/feedback.js.map +1 -0
  197. package/dist/mcp/tools/health.d.ts +29 -0
  198. package/dist/mcp/tools/health.d.ts.map +1 -0
  199. package/dist/mcp/tools/health.js +171 -0
  200. package/dist/mcp/tools/health.js.map +1 -0
  201. package/dist/mcp/tools/index.d.ts +9 -2
  202. package/dist/mcp/tools/index.d.ts.map +1 -1
  203. package/dist/mcp/tools/index.js +37 -2
  204. package/dist/mcp/tools/index.js.map +1 -1
  205. package/dist/mcp/tools/output-persistence.d.ts +44 -0
  206. package/dist/mcp/tools/output-persistence.d.ts.map +1 -0
  207. package/dist/mcp/tools/output-persistence.js +208 -0
  208. package/dist/mcp/tools/output-persistence.js.map +1 -0
  209. package/dist/mcp-server.d.ts +2 -1
  210. package/dist/mcp-server.d.ts.map +1 -1
  211. package/dist/mcp-server.js +36 -7
  212. package/dist/mcp-server.js.map +1 -1
  213. package/dist/rules/index.js +2 -2
  214. package/dist/utils/exec.js +2 -2
  215. package/dist/utils/exec.js.map +1 -1
  216. package/dist/utils/gitignore.d.ts.map +1 -1
  217. package/dist/utils/gitignore.js +5 -0
  218. package/dist/utils/gitignore.js.map +1 -1
  219. package/package.json +76 -77
  220. package/dist/hud/config-tui.d.ts +0 -25
  221. package/dist/hud/config-tui.d.ts.map +0 -1
  222. package/dist/hud/config-tui.js +0 -199
  223. package/dist/hud/config-tui.js.map +0 -1
  224. package/dist/hud/models.d.ts +0 -58
  225. package/dist/hud/models.d.ts.map +0 -1
  226. package/dist/hud/models.js +0 -124
  227. package/dist/hud/models.js.map +0 -1
  228. package/dist/hud/token-estimator.d.ts +0 -79
  229. package/dist/hud/token-estimator.d.ts.map +0 -1
  230. package/dist/hud/token-estimator.js +0 -126
  231. package/dist/hud/token-estimator.js.map +0 -1
@@ -0,0 +1,278 @@
1
+ /**
2
+ * Skill Auditor - v14.1.0
3
+ *
4
+ * Pre-audit integration for skills like /dino.nest and /dino.hunt.
5
+ * Validates PRD quality and triggers clarification when needed.
6
+ *
7
+ * @see .claude/skills/dino.audit/SKILL.md
8
+ */
9
+ import { analyzePrompt, isRalphEligible } from '../spec-analyzer/index.js';
10
+ import { generateClarificationQuestions } from './confidence-gate.js';
11
+ // =============================================================================
12
+ // Constants
13
+ // =============================================================================
14
+ const DEFAULT_CONFIG = {
15
+ minScore: 80,
16
+ requireAcceptanceCriteria: true,
17
+ requireTestCommands: true,
18
+ allowPartialPRD: false,
19
+ };
20
+ // =============================================================================
21
+ // Core Functions
22
+ // =============================================================================
23
+ /**
24
+ * Perform pre-audit for a skill invocation
25
+ *
26
+ * Returns audit result with approval status and findings.
27
+ */
28
+ export async function auditForSkill(skillName, prompt, prdContent, config = DEFAULT_CONFIG) {
29
+ const findings = [];
30
+ // Analyze the prompt
31
+ const analysis = analyzePrompt(prompt);
32
+ // Score components
33
+ let score = 100;
34
+ // Check prompt ambiguity
35
+ const ambiguityPenalty = Math.min(30, analysis.ambiguityScore);
36
+ if (ambiguityPenalty > 0) {
37
+ score -= ambiguityPenalty;
38
+ findings.push({
39
+ type: 'ambiguous',
40
+ severity: ambiguityPenalty > 15 ? 'major' : 'minor',
41
+ area: 'prompt',
42
+ message: `Prompt has ${analysis.ambiguityScore}/25 ambiguity score`,
43
+ suggestion: 'Clarify vague terms and specify targets',
44
+ });
45
+ }
46
+ // Check for PRD if this is a planning skill
47
+ if (skillName === 'dino.nest' || skillName === 'dino.ralph') {
48
+ if (!prdContent && !config.allowPartialPRD) {
49
+ score -= 20;
50
+ findings.push({
51
+ type: 'missing',
52
+ severity: 'major',
53
+ area: 'prd',
54
+ message: 'No PRD provided for planning skill',
55
+ suggestion: 'Create PRD with stories before planning',
56
+ });
57
+ }
58
+ else if (prdContent) {
59
+ const prdQuality = assessPRDQuality(prdContent);
60
+ const prdPenalty = Math.round((100 - prdQuality.completenessScore) * 0.3);
61
+ score -= prdPenalty;
62
+ if (!prdQuality.hasStories) {
63
+ findings.push({
64
+ type: 'missing',
65
+ severity: 'critical',
66
+ area: 'prd',
67
+ message: 'PRD has no defined stories',
68
+ suggestion: 'Add stories with IDs and descriptions',
69
+ });
70
+ }
71
+ if (config.requireAcceptanceCriteria && !prdQuality.hasAcceptanceCriteria) {
72
+ findings.push({
73
+ type: 'incomplete',
74
+ severity: 'major',
75
+ area: 'prd',
76
+ message: 'Stories missing acceptance criteria',
77
+ suggestion: 'Add acceptance criteria to each story',
78
+ });
79
+ }
80
+ if (config.requireTestCommands && !prdQuality.hasTestCommands) {
81
+ findings.push({
82
+ type: 'incomplete',
83
+ severity: 'minor',
84
+ area: 'prd',
85
+ message: 'Stories missing test commands',
86
+ suggestion: 'Add test command to verify each story',
87
+ });
88
+ }
89
+ }
90
+ }
91
+ // Check for implementation readiness
92
+ if (skillName === 'dino.hunt') {
93
+ const ralphEligibility = isRalphEligible(analysis);
94
+ // Hunt should have higher confidence for Ralph-eligible tasks
95
+ if (ralphEligibility.eligible && analysis.confidenceEstimate < 90) {
96
+ score -= 15;
97
+ findings.push({
98
+ type: 'risk',
99
+ severity: 'major',
100
+ area: 'confidence',
101
+ message: `Confidence ${analysis.confidenceEstimate}% below Ralph requirement (90%)`,
102
+ suggestion: 'Run /dino.spec to increase confidence before implementation',
103
+ });
104
+ }
105
+ else if (analysis.confidenceEstimate < 80) {
106
+ score -= 10;
107
+ findings.push({
108
+ type: 'risk',
109
+ severity: 'minor',
110
+ area: 'confidence',
111
+ message: `Confidence ${analysis.confidenceEstimate}% below recommended threshold (80%)`,
112
+ suggestion: 'Consider running /dino.spec or /dino.scout first',
113
+ });
114
+ }
115
+ }
116
+ // Determine status
117
+ const approved = score >= config.minScore;
118
+ const status = approved
119
+ ? 'approved'
120
+ : score >= config.minScore - 10
121
+ ? 'needs-clarification'
122
+ : 'rejected';
123
+ // Generate questions if needs clarification
124
+ const questions = status === 'needs-clarification' ? generateClarificationQuestions(analysis) : undefined;
125
+ // Generate recommendation
126
+ const recommendation = generateRecommendation(skillName, status, findings, analysis);
127
+ return {
128
+ approved,
129
+ score,
130
+ requiredScore: config.minScore,
131
+ status,
132
+ findings,
133
+ questions,
134
+ recommendation,
135
+ };
136
+ }
137
+ /**
138
+ * Assess PRD quality
139
+ */
140
+ export function assessPRDQuality(prdContent) {
141
+ // Check for story markers
142
+ const storyMatches = prdContent.match(/###?\s*Story/gi) || [];
143
+ const hasStories = storyMatches.length > 0;
144
+ const storyCount = storyMatches.length;
145
+ // Check for acceptance criteria
146
+ const hasAcceptanceCriteria = /acceptance\s*criteria/i.test(prdContent) ||
147
+ /\[\s*\]/g.test(prdContent);
148
+ // Check for test commands
149
+ const hasTestCommands = /test\s*command/i.test(prdContent) ||
150
+ /vitest|jest|pytest|npm\s+test|bun\s+.*test/i.test(prdContent);
151
+ // Check for files list
152
+ const hasFilesList = /\*\*files?\*\*:/i.test(prdContent) ||
153
+ /files\s*to\s*(modify|create)/i.test(prdContent);
154
+ // Calculate completeness score
155
+ let completenessScore = 0;
156
+ if (hasStories)
157
+ completenessScore += 30;
158
+ if (storyCount >= 3)
159
+ completenessScore += 10;
160
+ if (hasAcceptanceCriteria)
161
+ completenessScore += 25;
162
+ if (hasTestCommands)
163
+ completenessScore += 20;
164
+ if (hasFilesList)
165
+ completenessScore += 15;
166
+ return {
167
+ hasStories,
168
+ storyCount,
169
+ hasAcceptanceCriteria,
170
+ hasTestCommands,
171
+ hasFilesList,
172
+ completenessScore,
173
+ };
174
+ }
175
+ /**
176
+ * Generate recommendation based on audit
177
+ */
178
+ function generateRecommendation(skillName, status, findings, analysis) {
179
+ if (status === 'approved') {
180
+ return `Proceed with ${skillName}`;
181
+ }
182
+ const criticalFindings = findings.filter((f) => f.severity === 'critical');
183
+ const majorFindings = findings.filter((f) => f.severity === 'major');
184
+ if (criticalFindings.length > 0) {
185
+ return `Block: ${criticalFindings[0].message}. Run /dino.sniff to clarify.`;
186
+ }
187
+ if (majorFindings.length > 0) {
188
+ if (analysis.recommendedMode === 'full-research') {
189
+ return `Run /dino.scout first: ${majorFindings[0].message}`;
190
+ }
191
+ return `Run /dino.sniff to address: ${majorFindings[0].message}`;
192
+ }
193
+ return 'Consider addressing minor issues before proceeding';
194
+ }
195
+ // =============================================================================
196
+ // Skill-Specific Audits
197
+ // =============================================================================
198
+ /**
199
+ * Pre-audit for /dino.nest
200
+ */
201
+ export async function auditForNest(prompt, prdContent, config = DEFAULT_CONFIG) {
202
+ return auditForSkill('dino.nest', prompt, prdContent, config);
203
+ }
204
+ /**
205
+ * Pre-audit for /dino.hunt
206
+ */
207
+ export async function auditForHunt(prompt, config = DEFAULT_CONFIG) {
208
+ return auditForSkill('dino.hunt', prompt, undefined, config);
209
+ }
210
+ /**
211
+ * Pre-audit for /dino.ralph
212
+ */
213
+ export async function auditForRalph(prompt, prdContent, config = DEFAULT_CONFIG) {
214
+ // Ralph has stricter requirements
215
+ const strictConfig = {
216
+ ...config,
217
+ minScore: 90, // Higher threshold for Ralph
218
+ requireAcceptanceCriteria: true,
219
+ requireTestCommands: true,
220
+ allowPartialPRD: false,
221
+ };
222
+ return auditForSkill('dino.ralph', prompt, prdContent, strictConfig);
223
+ }
224
+ // =============================================================================
225
+ // Formatting
226
+ // =============================================================================
227
+ /**
228
+ * Format audit result for display
229
+ */
230
+ export function formatAuditResult(result) {
231
+ const lines = [];
232
+ // Status header
233
+ const statusEmoji = result.status === 'approved'
234
+ ? '✅'
235
+ : result.status === 'needs-clarification'
236
+ ? '⚠️'
237
+ : '🚫';
238
+ lines.push('## Auditor Pre-Check');
239
+ lines.push('');
240
+ lines.push(`**Status:** ${statusEmoji} ${result.status.toUpperCase()}`);
241
+ lines.push(`**Score:** ${result.score}/${result.requiredScore} required`);
242
+ lines.push('');
243
+ // Findings
244
+ if (result.findings.length > 0) {
245
+ lines.push('### Findings');
246
+ for (const finding of result.findings) {
247
+ const severityEmoji = {
248
+ critical: '🔴',
249
+ major: '🟠',
250
+ minor: '🟡',
251
+ }[finding.severity];
252
+ lines.push(`- ${severityEmoji} **[${finding.severity}]** ${finding.area}: ${finding.message}`);
253
+ if (finding.suggestion) {
254
+ lines.push(` - _${finding.suggestion}_`);
255
+ }
256
+ }
257
+ lines.push('');
258
+ }
259
+ // Questions
260
+ if (result.questions && result.questions.length > 0) {
261
+ lines.push('### Clarification Needed');
262
+ for (const q of result.questions) {
263
+ lines.push(`- ${q.question}`);
264
+ }
265
+ lines.push('');
266
+ }
267
+ // Recommendation
268
+ lines.push(`**Recommendation:** ${result.recommendation}`);
269
+ return lines.join('\n');
270
+ }
271
+ /**
272
+ * Check if audit should block skill execution
273
+ */
274
+ export function shouldBlockExecution(result) {
275
+ return result.status === 'rejected' ||
276
+ result.findings.some((f) => f.severity === 'critical');
277
+ }
278
+ //# sourceMappingURL=skill-auditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-auditor.js","sourceRoot":"","sources":["../../../src/core/agents/skill-auditor.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Feature Flags - v13.3.0
2
+ * Feature Flags - v13.6.0
3
3
  *
4
4
  * Opt-in feature flags for dino-spec enhancements.
5
5
  * All features maintain backward compatibility and gracefully degrade.
@@ -10,6 +10,7 @@
10
10
  * v7.1.0: Added hybridRetrieval
11
11
  * v12.4.5: Added preValidate for Smart Pre-Validation v2
12
12
  * v13.3.0: Added auto context engineering flags
13
+ * v13.6.0: Added enableReplEnvironment for RLM-style REPL
13
14
  */
14
15
  /**
15
16
  * Feature flag definitions
@@ -111,6 +112,29 @@ export interface FeatureFlags {
111
112
  * Default: true (enabled by default)
112
113
  */
113
114
  autoMemoryRecall: boolean;
115
+ /**
116
+ * Focus-based tool filtering (v13.4.0)
117
+ * Filter MCP tools by current focus area in addition to phase
118
+ * Reduces context overhead by ~10-15% beyond phase filtering
119
+ * Default: true (enabled by default)
120
+ */
121
+ focusFiltering: boolean;
122
+ /**
123
+ * Focus-aware resource deferring (v13.4.0)
124
+ * Use lower token thresholds for out-of-focus files
125
+ * In-focus: 500 tokens, Near-focus: 400, Out-of-focus: 300
126
+ * Additional 5-10% token savings
127
+ * Default: true (enabled by default)
128
+ */
129
+ focusAwareDefer: boolean;
130
+ /**
131
+ * Enable REPL Environment (v13.6.0)
132
+ * RLM-style REPL interface for context management
133
+ * Provides peek, grep, partition operations
134
+ * Controlled context window growth
135
+ * Default: false (opt-in for gradual rollout)
136
+ */
137
+ enableReplEnvironment: boolean;
114
138
  }
115
139
  /**
116
140
  * Full configuration structure
@@ -1 +1 @@
1
- {"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../../src/core/config/feature-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,eAAe,EAAE,OAAO,CAAC;IAEzB;;;;;;OAMG;IACH,WAAW,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAE3B;;;;OAIG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B;;;;OAIG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAE3B;;;;OAIG;IACH,eAAe,EAAE,OAAO,CAAC;IAEzB;;;;;OAKG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,YAAY,EAAE,OAAO,CAAC;IAEtB;;;;;OAKG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;;;;OAKG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAE3B;;;;;OAKG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;IACvB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAgBnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,UAG5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,GAAE,MAAsB,GAAG,MAAM,CAExE;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,UAAU,CAAC,CAsBrB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,EAC3B,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,YAAY,EAC3B,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,YAAY,EAC3B,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,YAAY,EAC3B,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,YAAY,CAAC,CAGvB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,UAAU,CAAC,CAQrB"}
1
+ {"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../../src/core/config/feature-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,eAAe,EAAE,OAAO,CAAC;IAEzB;;;;;;OAMG;IACH,WAAW,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAE3B;;;;OAIG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B;;;;OAIG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAE3B;;;;OAIG;IACH,eAAe,EAAE,OAAO,CAAC;IAEzB;;;;;OAKG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,YAAY,EAAE,OAAO,CAAC;IAEtB;;;;;OAKG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;;;;OAKG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAE3B;;;;;OAKG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAE1B;;;;;OAKG;IACH,cAAc,EAAE,OAAO,CAAC;IAExB;;;;;;OAMG;IACH,eAAe,EAAE,OAAO,CAAC;IAEzB;;;;;;OAMG;IACH,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;IACvB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAqBnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,UAG5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,GAAE,MAAsB,GAAG,MAAM,CAExE;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,UAAU,CAAC,CAsBrB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,EAC3B,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,YAAY,EAC3B,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,YAAY,EAC3B,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,YAAY,EAC3B,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,YAAY,CAAC,CAGvB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,UAAU,CAAC,CAQrB"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Feature Flags - v13.3.0
2
+ * Feature Flags - v13.6.0
3
3
  *
4
4
  * Opt-in feature flags for dino-spec enhancements.
5
5
  * All features maintain backward compatibility and gracefully degrade.
@@ -10,6 +10,7 @@
10
10
  * v7.1.0: Added hybridRetrieval
11
11
  * v12.4.5: Added preValidate for Smart Pre-Validation v2
12
12
  * v13.3.0: Added auto context engineering flags
13
+ * v13.6.0: Added enableReplEnvironment for RLM-style REPL
13
14
  */
14
15
  import { join } from 'path';
15
16
  import { FileSystem } from '../../utils/file-system.js';
@@ -35,6 +36,11 @@ export const DEFAULT_FEATURE_FLAGS = {
35
36
  autoStagedCompact: true,
36
37
  contextHealthMonitor: true,
37
38
  autoMemoryRecall: true,
39
+ // v13.4.0: Focus-based context engineering
40
+ focusFiltering: true,
41
+ focusAwareDefer: true,
42
+ // v13.6.0: REPL Environment
43
+ enableReplEnvironment: false, // Opt-in for gradual rollout
38
44
  };
39
45
  /**
40
46
  * Default configuration
@@ -1 +1 @@
1
- {"version":3,"file":"feature-flags.js","sourceRoot":"","sources":["../../../src/core/config/feature-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAkIxD;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAiB;IACjD,oBAAoB,EAAE,IAAI;IAC1B,eAAe,EAAE,KAAK;IACtB,WAAW,EAAE,IAAI;IACjB,kBAAkB,EAAE,IAAI;IACxB,iBAAiB,EAAE,IAAI;IACvB,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,KAAK;IACxB,eAAe,EAAE,IAAI;IACrB,oCAAoC;IACpC,oBAAoB,EAAE,IAAI;IAC1B,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,IAAI;IAChB,iBAAiB,EAAE,IAAI;IACvB,oBAAoB,EAAE,IAAI;IAC1B,gBAAgB,EAAE,IAAI;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAe;IACxC,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,qBAAqB;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,aAAqB,OAAO,CAAC,GAAG,EAAE;IAC9D,OAAO,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,aAAqB,OAAO,CAAC,GAAG,EAAE;IAElC,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAE7C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC3C,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,YAAY,CAAa,UAAU,CAAC,CAAC;IAErE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,CAAC;IAED,gDAAgD;IAChD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO;QACjD,QAAQ,EAAE;YACR,GAAG,qBAAqB;YACxB,GAAG,MAAM,CAAC,QAAQ;SACnB;QACD,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAA2B,EAC3B,aAAqB,OAAO,CAAC,GAAG,EAAE;IAElC,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;IAEnD,MAAM,SAAS,GAAe;QAC5B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO;QAChD,QAAQ,EAAE;YACR,GAAG,aAAa,CAAC,QAAQ;YACzB,GAAG,MAAM,CAAC,QAAQ;SACnB;QACD,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM;KAC9C,CAAC;IAEF,MAAM,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAA2B,EAC3B,aAAqB,OAAO,CAAC,GAAG,EAAE;IAElC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACpE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAA2B,EAC3B,aAAqB,OAAO,CAAC,GAAG,EAAE;IAElC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IAChC,MAAM,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA2B,EAC3B,aAAqB,OAAO,CAAC,GAAG,EAAE;IAElC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;IACjC,MAAM,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,aAAqB,OAAO,CAAC,GAAG,EAAE;IAElC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC,QAAQ,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,aAAqB,OAAO,CAAC,GAAG,EAAE;IAElC,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAE7C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,UAAU,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"feature-flags.js","sourceRoot":"","sources":["../../../src/core/config/feature-flags.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Budget Thresholds Tests - v14.0.0
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=budget-thresholds.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget-thresholds.test.d.ts","sourceRoot":"","sources":["../../../../src/core/context/__tests__/budget-thresholds.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,223 @@
1
+ /**
2
+ * Budget Thresholds Tests - v14.0.0
3
+ */
4
+ import { describe, it, expect, beforeEach, vi } from 'vitest';
5
+ import { OPTIMIZED_BUDGET_THRESHOLDS, LEGACY_BUDGET_THRESHOLDS, DEFAULT_SAFETY_MARGIN, DEFAULT_THRESHOLD_CONFIG, getThresholdLevel, calculateThresholdResult, loadThresholdConfig, isLegacyThresholds, getThresholdRecommendations, formatThresholdResult, calculateSafeCapacity, getEffectiveLimit, } from '../budget-thresholds.js';
6
+ // Mock loadConfig
7
+ vi.mock('../../config/feature-flags.js', () => ({
8
+ loadConfig: vi.fn(),
9
+ }));
10
+ import { loadConfig } from '../../config/feature-flags.js';
11
+ const mockedLoadConfig = vi.mocked(loadConfig);
12
+ describe('Budget Thresholds', () => {
13
+ const CONTEXT_LIMIT = 200_000; // 200K tokens
14
+ beforeEach(() => {
15
+ vi.resetAllMocks();
16
+ });
17
+ describe('Constants', () => {
18
+ it('should have optimized thresholds higher than legacy', () => {
19
+ expect(OPTIMIZED_BUDGET_THRESHOLDS.WARNING).toBeGreaterThan(LEGACY_BUDGET_THRESHOLDS.WARNING);
20
+ expect(OPTIMIZED_BUDGET_THRESHOLDS.HIGH).toBeGreaterThan(LEGACY_BUDGET_THRESHOLDS.HIGH);
21
+ expect(OPTIMIZED_BUDGET_THRESHOLDS.CRITICAL).toBeGreaterThan(LEGACY_BUDGET_THRESHOLDS.CRITICAL);
22
+ });
23
+ it('should have correct optimized threshold values', () => {
24
+ expect(OPTIMIZED_BUDGET_THRESHOLDS.WARNING).toBe(0.85);
25
+ expect(OPTIMIZED_BUDGET_THRESHOLDS.HIGH).toBe(0.95);
26
+ expect(OPTIMIZED_BUDGET_THRESHOLDS.CRITICAL).toBe(0.98);
27
+ });
28
+ it('should have a default safety margin', () => {
29
+ expect(DEFAULT_SAFETY_MARGIN).toBe(2000);
30
+ });
31
+ });
32
+ describe('getThresholdLevel', () => {
33
+ it('should return safe for low usage', () => {
34
+ const level = getThresholdLevel(50_000, CONTEXT_LIMIT);
35
+ expect(level).toBe('safe');
36
+ });
37
+ it('should return warning at 85% usage', () => {
38
+ const level = getThresholdLevel(170_000, CONTEXT_LIMIT);
39
+ expect(level).toBe('warning');
40
+ });
41
+ it('should return high at 95% usage', () => {
42
+ const level = getThresholdLevel(190_000, CONTEXT_LIMIT);
43
+ expect(level).toBe('high');
44
+ });
45
+ it('should return critical at 98% usage', () => {
46
+ const level = getThresholdLevel(196_000, CONTEXT_LIMIT);
47
+ expect(level).toBe('critical');
48
+ });
49
+ it('should respect custom thresholds', () => {
50
+ const customConfig = {
51
+ warning: 0.50,
52
+ high: 0.70,
53
+ critical: 0.90,
54
+ safetyMargin: 1000,
55
+ };
56
+ expect(getThresholdLevel(100_000, CONTEXT_LIMIT, customConfig)).toBe('warning');
57
+ expect(getThresholdLevel(140_000, CONTEXT_LIMIT, customConfig)).toBe('high');
58
+ expect(getThresholdLevel(180_000, CONTEXT_LIMIT, customConfig)).toBe('critical');
59
+ });
60
+ });
61
+ describe('calculateThresholdResult', () => {
62
+ it('should calculate remaining tokens', () => {
63
+ const result = calculateThresholdResult(150_000, CONTEXT_LIMIT);
64
+ expect(result.remaining).toBe(50_000);
65
+ });
66
+ it('should calculate safe remaining with safety margin', () => {
67
+ const result = calculateThresholdResult(150_000, CONTEXT_LIMIT);
68
+ expect(result.safeRemaining).toBe(50_000 - DEFAULT_SAFETY_MARGIN);
69
+ });
70
+ it('should not return negative values', () => {
71
+ const result = calculateThresholdResult(200_000, CONTEXT_LIMIT);
72
+ expect(result.remaining).toBe(0);
73
+ expect(result.safeRemaining).toBe(0);
74
+ });
75
+ it('should set shouldCompact for high/critical', () => {
76
+ const highResult = calculateThresholdResult(190_000, CONTEXT_LIMIT);
77
+ const criticalResult = calculateThresholdResult(196_000, CONTEXT_LIMIT);
78
+ const safeResult = calculateThresholdResult(100_000, CONTEXT_LIMIT);
79
+ expect(highResult.shouldCompact).toBe(true);
80
+ expect(criticalResult.shouldCompact).toBe(true);
81
+ expect(safeResult.shouldCompact).toBe(false);
82
+ });
83
+ it('should set forceCompact only for critical', () => {
84
+ const highResult = calculateThresholdResult(190_000, CONTEXT_LIMIT);
85
+ const criticalResult = calculateThresholdResult(196_000, CONTEXT_LIMIT);
86
+ expect(highResult.forceCompact).toBe(false);
87
+ expect(criticalResult.forceCompact).toBe(true);
88
+ });
89
+ it('should calculate correct percentage', () => {
90
+ const result = calculateThresholdResult(100_000, CONTEXT_LIMIT);
91
+ expect(result.percentage).toBe(50);
92
+ });
93
+ });
94
+ describe('loadThresholdConfig', () => {
95
+ it('should return default config when no custom config', async () => {
96
+ mockedLoadConfig.mockResolvedValue({
97
+ version: '14.0.0',
98
+ features: {},
99
+ });
100
+ const config = await loadThresholdConfig();
101
+ expect(config).toEqual(DEFAULT_THRESHOLD_CONFIG);
102
+ });
103
+ it('should merge custom thresholds with defaults', async () => {
104
+ mockedLoadConfig.mockResolvedValue({
105
+ version: '14.0.0',
106
+ features: {},
107
+ custom: {
108
+ budgetThresholds: {
109
+ warning: 0.75,
110
+ },
111
+ },
112
+ });
113
+ const config = await loadThresholdConfig();
114
+ expect(config.warning).toBe(0.75);
115
+ expect(config.high).toBe(DEFAULT_THRESHOLD_CONFIG.high);
116
+ expect(config.critical).toBe(DEFAULT_THRESHOLD_CONFIG.critical);
117
+ });
118
+ it('should return defaults on error', async () => {
119
+ mockedLoadConfig.mockRejectedValue(new Error('Config read error'));
120
+ const config = await loadThresholdConfig();
121
+ expect(config).toEqual(DEFAULT_THRESHOLD_CONFIG);
122
+ });
123
+ });
124
+ describe('isLegacyThresholds', () => {
125
+ it('should detect legacy thresholds', () => {
126
+ const legacyConfig = {
127
+ warning: 0.80,
128
+ high: 0.90,
129
+ critical: 0.95,
130
+ safetyMargin: 2000,
131
+ };
132
+ expect(isLegacyThresholds(legacyConfig)).toBe(true);
133
+ });
134
+ it('should not flag optimized thresholds as legacy', () => {
135
+ expect(isLegacyThresholds(DEFAULT_THRESHOLD_CONFIG)).toBe(false);
136
+ });
137
+ });
138
+ describe('getThresholdRecommendations', () => {
139
+ it('should return empty for safe level', () => {
140
+ const recs = getThresholdRecommendations('safe');
141
+ expect(recs).toEqual([]);
142
+ });
143
+ it('should return recommendations for warning level', () => {
144
+ const recs = getThresholdRecommendations('warning');
145
+ expect(recs.length).toBeGreaterThan(0);
146
+ expect(recs.some(r => r.includes('85%'))).toBe(true);
147
+ });
148
+ it('should return more urgent recommendations for high level', () => {
149
+ const recs = getThresholdRecommendations('high');
150
+ expect(recs.length).toBeGreaterThan(0);
151
+ expect(recs.some(r => r.includes('compact'))).toBe(true);
152
+ });
153
+ it('should return urgent recommendations for critical level', () => {
154
+ const recs = getThresholdRecommendations('critical');
155
+ expect(recs.length).toBeGreaterThan(0);
156
+ expect(recs.some(r => r.includes('CRITICAL'))).toBe(true);
157
+ expect(recs.some(r => r.includes('--force'))).toBe(true);
158
+ });
159
+ });
160
+ describe('formatThresholdResult', () => {
161
+ it('should format safe result with OK indicator', () => {
162
+ const result = {
163
+ level: 'safe',
164
+ remaining: 100_000,
165
+ safeRemaining: 98_000,
166
+ percentage: 50,
167
+ shouldCompact: false,
168
+ forceCompact: false,
169
+ };
170
+ const formatted = formatThresholdResult(result);
171
+ expect(formatted).toContain('[OK]');
172
+ expect(formatted).toContain('SAFE');
173
+ expect(formatted).toContain('50%');
174
+ });
175
+ it('should format critical result with warning indicator', () => {
176
+ const result = {
177
+ level: 'critical',
178
+ remaining: 4_000,
179
+ safeRemaining: 2_000,
180
+ percentage: 98,
181
+ shouldCompact: true,
182
+ forceCompact: true,
183
+ };
184
+ const formatted = formatThresholdResult(result);
185
+ expect(formatted).toContain('[!!!]');
186
+ expect(formatted).toContain('CRITICAL');
187
+ expect(formatted).toContain('Recommendations');
188
+ });
189
+ });
190
+ describe('calculateSafeCapacity', () => {
191
+ it('should calculate capacity at threshold minus safety margin', () => {
192
+ const capacity = calculateSafeCapacity(CONTEXT_LIMIT, 0.95);
193
+ expect(capacity).toBe(190_000 - DEFAULT_SAFETY_MARGIN);
194
+ });
195
+ it('should not return negative capacity', () => {
196
+ const capacity = calculateSafeCapacity(1000, 0.50, 1000);
197
+ expect(capacity).toBe(0);
198
+ });
199
+ it('should respect custom safety margin', () => {
200
+ const capacity = calculateSafeCapacity(CONTEXT_LIMIT, 0.95, 5000);
201
+ expect(capacity).toBe(190_000 - 5000);
202
+ });
203
+ });
204
+ describe('getEffectiveLimit', () => {
205
+ it('should return limit at high threshold minus safety margin', () => {
206
+ const effective = getEffectiveLimit(CONTEXT_LIMIT);
207
+ // 200K * 0.95 - 2000 = 188K
208
+ expect(effective).toBe(188_000);
209
+ });
210
+ it('should respect custom config', () => {
211
+ const customConfig = {
212
+ warning: 0.80,
213
+ high: 0.90,
214
+ critical: 0.95,
215
+ safetyMargin: 5000,
216
+ };
217
+ const effective = getEffectiveLimit(CONTEXT_LIMIT, customConfig);
218
+ // 200K * 0.90 - 5000 = 175K
219
+ expect(effective).toBe(175_000);
220
+ });
221
+ });
222
+ });
223
+ //# sourceMappingURL=budget-thresholds.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget-thresholds.test.js","sourceRoot":"","sources":["../../../../src/core/context/__tests__/budget-thresholds.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,2BAA2B,EAC3B,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,GAIlB,MAAM,yBAAyB,CAAC;AAEjC,kBAAkB;AAClB,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;CACpB,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,MAAM,gBAAgB,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAE/C,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,cAAc;IAE7C,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;YAC9F,MAAM,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YACxF,MAAM,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAClG,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YACvD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACxD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACxD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACxD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,YAAY,GAAoB;gBACpC,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,IAAI;aACnB,CAAC;YAEF,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChF,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7E,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAEhE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAEhE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAEhE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACpE,MAAM,cAAc,GAAG,wBAAwB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACxE,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAEpE,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACpE,MAAM,cAAc,GAAG,wBAAwB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAExE,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAEhE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,gBAAgB,CAAC,iBAAiB,CAAC;gBACjC,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE,EAAW;aACtB,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;YAE3C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,gBAAgB,CAAC,iBAAiB,CAAC;gBACjC,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE,EAAW;gBACrB,MAAM,EAAE;oBACN,gBAAgB,EAAE;wBAChB,OAAO,EAAE,IAAI;qBACd;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;YAE3C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAEnE,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;YAE3C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,YAAY,GAAoB;gBACpC,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,IAAI;aACnB,CAAC;YAEF,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,IAAI,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,IAAI,GAAG,2BAA2B,CAAC,SAAS,CAAC,CAAC;YAEpD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAClE,MAAM,IAAI,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;YAEjD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,MAAM,IAAI,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAC;YAErD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,MAAM,GAAoB;gBAC9B,KAAK,EAAE,MAAM;gBACb,SAAS,EAAE,OAAO;gBAClB,aAAa,EAAE,MAAM;gBACrB,UAAU,EAAE,EAAE;gBACd,aAAa,EAAE,KAAK;gBACpB,YAAY,EAAE,KAAK;aACpB,CAAC;YAEF,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAEhD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,MAAM,GAAoB;gBAC9B,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,KAAK;gBAChB,aAAa,EAAE,KAAK;gBACpB,UAAU,EAAE,EAAE;gBACd,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,IAAI;aACnB,CAAC;YAEF,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAEhD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAE5D,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAEzD,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAElE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACnE,MAAM,SAAS,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAEnD,4BAA4B;YAC5B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,YAAY,GAAoB;gBACpC,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,IAAI;aACnB,CAAC;YAEF,MAAM,SAAS,GAAG,iBAAiB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;YAEjE,4BAA4B;YAC5B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Auto Compaction Engine Tests - v14.0.0
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=compaction-engine.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compaction-engine.test.d.ts","sourceRoot":"","sources":["../../../../src/core/context/__tests__/compaction-engine.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}