dino-spec 13.6.0 → 14.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.
- package/bin/dino-hud.js +1 -1
- package/bin/dino.js +1 -1
- package/dist/core/agents/context-isolation.js +26 -26
- package/dist/core/context/__tests__/budget-thresholds.test.d.ts +5 -0
- package/dist/core/context/__tests__/budget-thresholds.test.d.ts.map +1 -0
- package/dist/core/context/__tests__/budget-thresholds.test.js +223 -0
- package/dist/core/context/__tests__/budget-thresholds.test.js.map +1 -0
- package/dist/core/context/__tests__/compaction-engine.test.d.ts +5 -0
- package/dist/core/context/__tests__/compaction-engine.test.d.ts.map +1 -0
- package/dist/core/context/__tests__/compaction-engine.test.js +474 -0
- package/dist/core/context/__tests__/compaction-engine.test.js.map +1 -0
- package/dist/core/context/__tests__/output-persistence.test.d.ts +5 -0
- package/dist/core/context/__tests__/output-persistence.test.d.ts.map +1 -0
- package/dist/core/context/__tests__/output-persistence.test.js +246 -0
- package/dist/core/context/__tests__/output-persistence.test.js.map +1 -0
- package/dist/core/context/budget-thresholds.d.ts +167 -0
- package/dist/core/context/budget-thresholds.d.ts.map +1 -0
- package/dist/core/context/budget-thresholds.js +234 -0
- package/dist/core/context/budget-thresholds.js.map +1 -0
- package/dist/core/context/compaction-engine.d.ts +193 -0
- package/dist/core/context/compaction-engine.d.ts.map +1 -0
- package/dist/core/context/compaction-engine.js +376 -0
- package/dist/core/context/compaction-engine.js.map +1 -0
- package/dist/core/context/index.d.ts +7 -3
- package/dist/core/context/index.d.ts.map +1 -1
- package/dist/core/context/index.js +22 -3
- package/dist/core/context/index.js.map +1 -1
- package/dist/core/context/output-persistence.d.ts +142 -0
- package/dist/core/context/output-persistence.d.ts.map +1 -0
- package/dist/core/context/output-persistence.js +242 -0
- package/dist/core/context/output-persistence.js.map +1 -0
- package/dist/core/environment/__tests__/pre-verify.test.d.ts +5 -0
- package/dist/core/environment/__tests__/pre-verify.test.d.ts.map +1 -0
- package/dist/core/environment/__tests__/pre-verify.test.js +343 -0
- package/dist/core/environment/__tests__/pre-verify.test.js.map +1 -0
- package/dist/core/environment/index.d.ts +8 -0
- package/dist/core/environment/index.d.ts.map +1 -0
- package/dist/core/environment/index.js +7 -0
- package/dist/core/environment/index.js.map +1 -0
- package/dist/core/environment/pre-verify.d.ts +63 -0
- package/dist/core/environment/pre-verify.d.ts.map +1 -0
- package/dist/core/environment/pre-verify.js +221 -0
- package/dist/core/environment/pre-verify.js.map +1 -0
- package/dist/core/environment/types.d.ts +37 -0
- package/dist/core/environment/types.d.ts.map +1 -0
- package/dist/core/environment/types.js +5 -0
- package/dist/core/environment/types.js.map +1 -0
- package/dist/core/intelligence/context-budget.d.ts +10 -5
- package/dist/core/intelligence/context-budget.d.ts.map +1 -1
- package/dist/core/intelligence/context-budget.js +12 -5
- package/dist/core/intelligence/context-budget.js.map +1 -1
- package/dist/mcp/__tests__/dynamic-updates.test.d.ts +5 -0
- package/dist/mcp/__tests__/dynamic-updates.test.d.ts.map +1 -0
- package/dist/mcp/__tests__/dynamic-updates.test.js +314 -0
- package/dist/mcp/__tests__/dynamic-updates.test.js.map +1 -0
- package/dist/mcp/dynamic-updates.d.ts +167 -0
- package/dist/mcp/dynamic-updates.d.ts.map +1 -0
- package/dist/mcp/dynamic-updates.js +313 -0
- package/dist/mcp/dynamic-updates.js.map +1 -0
- package/dist/mcp/index.d.ts +4 -2
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +5 -2
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/registry.d.ts +4 -4
- package/dist/mcp/registry.d.ts.map +1 -1
- package/dist/mcp/registry.js +16 -16
- package/dist/mcp/registry.js.map +1 -1
- package/dist/mcp/tools/__tests__/environment.test.d.ts +5 -0
- package/dist/mcp/tools/__tests__/environment.test.d.ts.map +1 -0
- package/dist/mcp/tools/__tests__/environment.test.js +219 -0
- package/dist/mcp/tools/__tests__/environment.test.js.map +1 -0
- package/dist/mcp/tools/environment.d.ts +27 -0
- package/dist/mcp/tools/environment.d.ts.map +1 -0
- package/dist/mcp/tools/environment.js +97 -0
- package/dist/mcp/tools/environment.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +3 -1
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +13 -1
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/output-persistence.d.ts +44 -0
- package/dist/mcp/tools/output-persistence.d.ts.map +1 -0
- package/dist/mcp/tools/output-persistence.js +208 -0
- package/dist/mcp/tools/output-persistence.js.map +1 -0
- package/dist/mcp-server.d.ts +2 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +27 -2
- package/dist/mcp-server.js.map +1 -1
- package/package.json +1 -1
package/bin/dino-hud.js
CHANGED
package/bin/dino.js
CHANGED
|
@@ -20,15 +20,15 @@
|
|
|
20
20
|
* Role-specific context constraints
|
|
21
21
|
*/
|
|
22
22
|
export const ROLE_CONSTRAINTS = {
|
|
23
|
-
explorer: `Focus on discovery and information gathering. Do not make changes.
|
|
23
|
+
explorer: `Focus on discovery and information gathering. Do not make changes.
|
|
24
24
|
Read files, search patterns, understand structure. Report findings concisely.`,
|
|
25
|
-
implementer: `Focus on code implementation. Make minimal, targeted changes.
|
|
25
|
+
implementer: `Focus on code implementation. Make minimal, targeted changes.
|
|
26
26
|
Follow existing patterns. Test changes before reporting completion.`,
|
|
27
|
-
tester: `Focus on test creation and execution. Ensure coverage of edge cases.
|
|
27
|
+
tester: `Focus on test creation and execution. Ensure coverage of edge cases.
|
|
28
28
|
Report test results clearly with pass/fail counts.`,
|
|
29
|
-
reviewer: `Focus on code review and quality. Identify issues, suggest improvements.
|
|
29
|
+
reviewer: `Focus on code review and quality. Identify issues, suggest improvements.
|
|
30
30
|
Do not make changes directly - document findings for implementer.`,
|
|
31
|
-
planner: `Focus on strategy and task breakdown. Analyze complexity.
|
|
31
|
+
planner: `Focus on strategy and task breakdown. Analyze complexity.
|
|
32
32
|
Create clear, actionable subtasks with dependencies.`,
|
|
33
33
|
};
|
|
34
34
|
/**
|
|
@@ -80,8 +80,8 @@ export function createSharedPrefix(projectContext) {
|
|
|
80
80
|
// Global constraints
|
|
81
81
|
const globalConstraints = projectContext.constraints
|
|
82
82
|
? projectContext.constraints.join('\n')
|
|
83
|
-
: `- Follow existing code style
|
|
84
|
-
- Minimize changes
|
|
83
|
+
: `- Follow existing code style
|
|
84
|
+
- Minimize changes
|
|
85
85
|
- Test before completion`;
|
|
86
86
|
parts.push(`## Constraints\n${globalConstraints}`);
|
|
87
87
|
const fullPrefix = parts.join('\n\n');
|
|
@@ -99,23 +99,23 @@ export function createSharedPrefix(projectContext) {
|
|
|
99
99
|
* Format shared prefix for injection
|
|
100
100
|
*/
|
|
101
101
|
export function formatSharedPrefix(prefix) {
|
|
102
|
-
return `<!-- SHARED_CONTEXT_PREFIX -->
|
|
103
|
-
# Project Context
|
|
104
|
-
|
|
105
|
-
${prefix.projectInfo}
|
|
106
|
-
|
|
107
|
-
## Architecture
|
|
108
|
-
${prefix.architecture}
|
|
109
|
-
|
|
110
|
-
## Commands
|
|
111
|
-
${prefix.commands}
|
|
112
|
-
|
|
113
|
-
## Patterns
|
|
114
|
-
${prefix.patterns}
|
|
115
|
-
|
|
116
|
-
## Global Constraints
|
|
117
|
-
${prefix.globalConstraints}
|
|
118
|
-
|
|
102
|
+
return `<!-- SHARED_CONTEXT_PREFIX -->
|
|
103
|
+
# Project Context
|
|
104
|
+
|
|
105
|
+
${prefix.projectInfo}
|
|
106
|
+
|
|
107
|
+
## Architecture
|
|
108
|
+
${prefix.architecture}
|
|
109
|
+
|
|
110
|
+
## Commands
|
|
111
|
+
${prefix.commands}
|
|
112
|
+
|
|
113
|
+
## Patterns
|
|
114
|
+
${prefix.patterns}
|
|
115
|
+
|
|
116
|
+
## Global Constraints
|
|
117
|
+
${prefix.globalConstraints}
|
|
118
|
+
|
|
119
119
|
<!-- END_SHARED_CONTEXT_PREFIX -->`;
|
|
120
120
|
}
|
|
121
121
|
// =============================================================================
|
|
@@ -214,8 +214,8 @@ export function createIsolatedContext(agentId, spawnContext, sharedPrefix, optio
|
|
|
214
214
|
export function formatIsolatedContext(context, sharedPrefix) {
|
|
215
215
|
const prefixFormatted = formatSharedPrefix(sharedPrefix);
|
|
216
216
|
const dynamicFormatted = formatAgentDynamicContext(context.dynamicContext);
|
|
217
|
-
return `${prefixFormatted}
|
|
218
|
-
|
|
217
|
+
return `${prefixFormatted}
|
|
218
|
+
|
|
219
219
|
${dynamicFormatted}`;
|
|
220
220
|
}
|
|
221
221
|
// =============================================================================
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"compaction-engine.test.d.ts","sourceRoot":"","sources":["../../../../src/core/context/__tests__/compaction-engine.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|