dino-spec 15.0.0 → 16.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -1
- package/dist/cli/index.js +46 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/dashboard.d.ts +27 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +80 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/debug.d.ts +53 -0
- package/dist/commands/debug.d.ts.map +1 -0
- package/dist/commands/debug.js +199 -0
- package/dist/commands/debug.js.map +1 -0
- package/dist/commands/profile.d.ts +37 -0
- package/dist/commands/profile.d.ts.map +1 -0
- package/dist/commands/profile.js +145 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/recommendations.d.ts +27 -0
- package/dist/commands/recommendations.d.ts.map +1 -0
- package/dist/commands/recommendations.js +123 -0
- package/dist/commands/recommendations.js.map +1 -0
- package/dist/core/checkpoints/checkpoint.d.ts +1 -0
- package/dist/core/checkpoints/checkpoint.d.ts.map +1 -1
- package/dist/core/checkpoints/checkpoint.js.map +1 -1
- package/dist/core/checkpoints/handoff.d.ts +2 -1
- package/dist/core/checkpoints/handoff.d.ts.map +1 -1
- package/dist/core/checkpoints/handoff.js +2 -1
- package/dist/core/checkpoints/handoff.js.map +1 -1
- package/dist/core/checkpoints/session-recovery.d.ts +71 -0
- package/dist/core/checkpoints/session-recovery.d.ts.map +1 -0
- package/dist/core/checkpoints/session-recovery.js +172 -0
- package/dist/core/checkpoints/session-recovery.js.map +1 -0
- package/dist/core/config/feature-flags.d.ts +84 -0
- package/dist/core/config/feature-flags.d.ts.map +1 -1
- package/dist/core/config/feature-flags.js +18 -0
- package/dist/core/config/feature-flags.js.map +1 -1
- package/dist/core/context/__tests__/feedback-loop-engine.test.d.ts +5 -0
- package/dist/core/context/__tests__/feedback-loop-engine.test.d.ts.map +1 -0
- package/dist/core/context/__tests__/feedback-loop-engine.test.js +377 -0
- package/dist/core/context/__tests__/feedback-loop-engine.test.js.map +1 -0
- package/dist/core/context/adaptation-strategy.d.ts +125 -0
- package/dist/core/context/adaptation-strategy.d.ts.map +1 -0
- package/dist/core/context/adaptation-strategy.js +233 -0
- package/dist/core/context/adaptation-strategy.js.map +1 -0
- package/dist/core/context/auto-injection-engine.d.ts.map +1 -1
- package/dist/core/context/auto-injection-engine.js +21 -0
- package/dist/core/context/auto-injection-engine.js.map +1 -1
- package/dist/core/context/auto-unload-engine.d.ts +20 -2
- package/dist/core/context/auto-unload-engine.d.ts.map +1 -1
- package/dist/core/context/auto-unload-engine.js +78 -5
- package/dist/core/context/auto-unload-engine.js.map +1 -1
- package/dist/core/context/budget-thresholds.d.ts +75 -1
- package/dist/core/context/budget-thresholds.d.ts.map +1 -1
- package/dist/core/context/budget-thresholds.js +163 -2
- package/dist/core/context/budget-thresholds.js.map +1 -1
- package/dist/core/context/context-health.d.ts.map +1 -1
- package/dist/core/context/context-health.js +24 -0
- package/dist/core/context/context-health.js.map +1 -1
- package/dist/core/context/demand-detector.d.ts +34 -1
- package/dist/core/context/demand-detector.d.ts.map +1 -1
- package/dist/core/context/demand-detector.js +162 -1
- package/dist/core/context/demand-detector.js.map +1 -1
- package/dist/core/context/demand-signal-patterns.d.ts +120 -0
- package/dist/core/context/demand-signal-patterns.d.ts.map +1 -0
- package/dist/core/context/demand-signal-patterns.js +418 -0
- package/dist/core/context/demand-signal-patterns.js.map +1 -0
- package/dist/core/context/feedback-loop-engine.d.ts +128 -0
- package/dist/core/context/feedback-loop-engine.d.ts.map +1 -0
- package/dist/core/context/feedback-loop-engine.js +352 -0
- package/dist/core/context/feedback-loop-engine.js.map +1 -0
- package/dist/core/context/index.d.ts +5 -3
- package/dist/core/context/index.d.ts.map +1 -1
- package/dist/core/context/index.js +26 -6
- package/dist/core/context/index.js.map +1 -1
- package/dist/core/context/prefetch-learner.d.ts +195 -0
- package/dist/core/context/prefetch-learner.d.ts.map +1 -0
- package/dist/core/context/prefetch-learner.js +363 -0
- package/dist/core/context/prefetch-learner.js.map +1 -0
- package/dist/core/context/semantic-signal-detector.d.ts +96 -0
- package/dist/core/context/semantic-signal-detector.d.ts.map +1 -0
- package/dist/core/context/semantic-signal-detector.js +320 -0
- package/dist/core/context/semantic-signal-detector.js.map +1 -0
- package/dist/core/context/smart-prefetch-engine.d.ts +66 -0
- package/dist/core/context/smart-prefetch-engine.d.ts.map +1 -0
- package/dist/core/context/smart-prefetch-engine.js +226 -0
- package/dist/core/context/smart-prefetch-engine.js.map +1 -0
- package/dist/core/context/token-tracker.d.ts +9 -0
- package/dist/core/context/token-tracker.d.ts.map +1 -1
- package/dist/core/context/token-tracker.js +14 -0
- package/dist/core/context/token-tracker.js.map +1 -1
- package/dist/core/context/window-boundary.d.ts +132 -0
- package/dist/core/context/window-boundary.d.ts.map +1 -0
- package/dist/core/context/window-boundary.js +268 -0
- package/dist/core/context/window-boundary.js.map +1 -0
- package/dist/core/context-repl/confidence-scorer.d.ts +92 -0
- package/dist/core/context-repl/confidence-scorer.d.ts.map +1 -0
- package/dist/core/context-repl/confidence-scorer.js +159 -0
- package/dist/core/context-repl/confidence-scorer.js.map +1 -0
- package/dist/core/context-repl/reconnaissance-engine.d.ts +160 -0
- package/dist/core/context-repl/reconnaissance-engine.d.ts.map +1 -0
- package/dist/core/context-repl/reconnaissance-engine.js +275 -0
- package/dist/core/context-repl/reconnaissance-engine.js.map +1 -0
- package/dist/core/dashboard/dashboard-formatter.d.ts +68 -0
- package/dist/core/dashboard/dashboard-formatter.d.ts.map +1 -0
- package/dist/core/dashboard/dashboard-formatter.js +250 -0
- package/dist/core/dashboard/dashboard-formatter.js.map +1 -0
- package/dist/core/dashboard/health-metrics-aggregator.d.ts +117 -0
- package/dist/core/dashboard/health-metrics-aggregator.d.ts.map +1 -0
- package/dist/core/dashboard/health-metrics-aggregator.js +255 -0
- package/dist/core/dashboard/health-metrics-aggregator.js.map +1 -0
- package/dist/core/debug/context-decision-logger.d.ts +189 -0
- package/dist/core/debug/context-decision-logger.d.ts.map +1 -0
- package/dist/core/debug/context-decision-logger.js +397 -0
- package/dist/core/debug/context-decision-logger.js.map +1 -0
- package/dist/core/debug/debug-config.d.ts +100 -0
- package/dist/core/debug/debug-config.d.ts.map +1 -0
- package/dist/core/debug/debug-config.js +193 -0
- package/dist/core/debug/debug-config.js.map +1 -0
- package/dist/core/debug/debug-logger.d.ts +85 -0
- package/dist/core/debug/debug-logger.d.ts.map +1 -0
- package/dist/core/debug/debug-logger.js +287 -0
- package/dist/core/debug/debug-logger.js.map +1 -0
- package/dist/core/debug/index.d.ts +10 -0
- package/dist/core/debug/index.d.ts.map +1 -0
- package/dist/core/debug/index.js +13 -0
- package/dist/core/debug/index.js.map +1 -0
- package/dist/core/embeddings/content-indexer.d.ts +169 -0
- package/dist/core/embeddings/content-indexer.d.ts.map +1 -0
- package/dist/core/embeddings/content-indexer.js +317 -0
- package/dist/core/embeddings/content-indexer.js.map +1 -0
- package/dist/core/embeddings/index.d.ts +2 -0
- package/dist/core/embeddings/index.d.ts.map +1 -1
- package/dist/core/embeddings/index.js +4 -0
- package/dist/core/embeddings/index.js.map +1 -1
- package/dist/core/embeddings/semantic-cache.d.ts +162 -0
- package/dist/core/embeddings/semantic-cache.d.ts.map +1 -0
- package/dist/core/embeddings/semantic-cache.js +317 -0
- package/dist/core/embeddings/semantic-cache.js.map +1 -0
- package/dist/core/generator/session-md.d.ts +31 -1
- package/dist/core/generator/session-md.d.ts.map +1 -1
- package/dist/core/generator/session-md.js +63 -1
- package/dist/core/generator/session-md.js.map +1 -1
- package/dist/core/memory/retrieval.d.ts +7 -1
- package/dist/core/memory/retrieval.d.ts.map +1 -1
- package/dist/core/memory/retrieval.js +7 -1
- package/dist/core/memory/retrieval.js.map +1 -1
- package/dist/core/metrics/__tests__/metrics-collector.test.d.ts +5 -0
- package/dist/core/metrics/__tests__/metrics-collector.test.d.ts.map +1 -0
- package/dist/core/metrics/__tests__/metrics-collector.test.js +354 -0
- package/dist/core/metrics/__tests__/metrics-collector.test.js.map +1 -0
- package/dist/core/metrics/index.d.ts +9 -0
- package/dist/core/metrics/index.d.ts.map +1 -0
- package/dist/core/metrics/index.js +29 -0
- package/dist/core/metrics/index.js.map +1 -0
- package/dist/core/metrics/metrics-collector.d.ts +153 -0
- package/dist/core/metrics/metrics-collector.d.ts.map +1 -0
- package/dist/core/metrics/metrics-collector.js +446 -0
- package/dist/core/metrics/metrics-collector.js.map +1 -0
- package/dist/core/metrics/metrics-schema.d.ts +189 -0
- package/dist/core/metrics/metrics-schema.d.ts.map +1 -0
- package/dist/core/metrics/metrics-schema.js +180 -0
- package/dist/core/metrics/metrics-schema.js.map +1 -0
- package/dist/core/profiling/index.d.ts +8 -0
- package/dist/core/profiling/index.d.ts.map +1 -0
- package/dist/core/profiling/index.js +8 -0
- package/dist/core/profiling/index.js.map +1 -0
- package/dist/core/profiling/operation-profiler.d.ts +118 -0
- package/dist/core/profiling/operation-profiler.d.ts.map +1 -0
- package/dist/core/profiling/operation-profiler.js +266 -0
- package/dist/core/profiling/operation-profiler.js.map +1 -0
- package/dist/core/profiling/perf-report-generator.d.ts +46 -0
- package/dist/core/profiling/perf-report-generator.d.ts.map +1 -0
- package/dist/core/profiling/perf-report-generator.js +235 -0
- package/dist/core/profiling/perf-report-generator.js.map +1 -0
- package/dist/core/recommendations/heuristics.d.ts +120 -0
- package/dist/core/recommendations/heuristics.d.ts.map +1 -0
- package/dist/core/recommendations/heuristics.js +771 -0
- package/dist/core/recommendations/heuristics.js.map +1 -0
- package/dist/core/recommendations/priority-scorer.d.ts +75 -0
- package/dist/core/recommendations/priority-scorer.d.ts.map +1 -0
- package/dist/core/recommendations/priority-scorer.js +148 -0
- package/dist/core/recommendations/priority-scorer.js.map +1 -0
- package/dist/core/recommendations/recommendation-engine.d.ts +60 -0
- package/dist/core/recommendations/recommendation-engine.d.ts.map +1 -0
- package/dist/core/recommendations/recommendation-engine.js +271 -0
- package/dist/core/recommendations/recommendation-engine.js.map +1 -0
- package/dist/hooks/pre-compact.d.ts +9 -1
- package/dist/hooks/pre-compact.d.ts.map +1 -1
- package/dist/hooks/pre-compact.js +93 -1
- package/dist/hooks/pre-compact.js.map +1 -1
- package/dist/hooks/session-start.d.ts +5 -1
- package/dist/hooks/session-start.d.ts.map +1 -1
- package/dist/hooks/session-start.js +190 -1
- package/dist/hooks/session-start.js.map +1 -1
- package/dist/mcp/focus-tag-learner.d.ts +132 -0
- package/dist/mcp/focus-tag-learner.d.ts.map +1 -0
- package/dist/mcp/focus-tag-learner.js +269 -0
- package/dist/mcp/focus-tag-learner.js.map +1 -0
- package/dist/mcp/proximity-tags.d.ts +93 -0
- package/dist/mcp/proximity-tags.d.ts.map +1 -0
- package/dist/mcp/proximity-tags.js +248 -0
- package/dist/mcp/proximity-tags.js.map +1 -0
- package/dist/mcp/tool-tiers.d.ts.map +1 -1
- package/dist/mcp/tool-tiers.js +2 -0
- package/dist/mcp/tool-tiers.js.map +1 -1
- package/dist/mcp/tools/index.d.ts +5 -2
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +19 -2
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/memory.d.ts +7 -2
- package/dist/mcp/tools/memory.d.ts.map +1 -1
- package/dist/mcp/tools/memory.js +40 -9
- package/dist/mcp/tools/memory.js.map +1 -1
- package/dist/mcp/tools/prefetch.d.ts.map +1 -1
- package/dist/mcp/tools/prefetch.js +21 -0
- package/dist/mcp/tools/prefetch.js.map +1 -1
- package/dist/mcp/tools/recommendations.d.ts +30 -0
- package/dist/mcp/tools/recommendations.d.ts.map +1 -0
- package/dist/mcp/tools/recommendations.js +134 -0
- package/dist/mcp/tools/recommendations.js.map +1 -0
- package/dist/mcp/tools/tool-clearing.d.ts +35 -0
- package/dist/mcp/tools/tool-clearing.d.ts.map +1 -0
- package/dist/mcp/tools/tool-clearing.js +253 -0
- package/dist/mcp/tools/tool-clearing.js.map +1 -0
- package/dist/statusline/budget-tracker.d.ts +94 -0
- package/dist/statusline/budget-tracker.d.ts.map +1 -0
- package/dist/statusline/budget-tracker.js +240 -0
- package/dist/statusline/budget-tracker.js.map +1 -0
- package/dist/statusline/index.d.ts +1 -0
- package/dist/statusline/index.d.ts.map +1 -1
- package/dist/statusline/index.js +2 -0
- package/dist/statusline/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adaptation Strategy - v16.0.0
|
|
3
|
+
*
|
|
4
|
+
* Defines strategies for dynamic threshold adjustment based on metrics.
|
|
5
|
+
* Part of the Feedback Loop system.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Three adaptation strategies: conservative, moderate, aggressive
|
|
9
|
+
* - Threshold delta calculation with bounds
|
|
10
|
+
* - Hysteresis to prevent oscillation
|
|
11
|
+
* - Validation of threshold bounds
|
|
12
|
+
*/
|
|
13
|
+
// =============================================================================
|
|
14
|
+
// Constants
|
|
15
|
+
// =============================================================================
|
|
16
|
+
/**
|
|
17
|
+
* Strategy configurations
|
|
18
|
+
*/
|
|
19
|
+
export const STRATEGY_CONFIGS = {
|
|
20
|
+
conservative: {
|
|
21
|
+
type: 'conservative',
|
|
22
|
+
maxDeltaPerAdjustment: 0.02, // 2% max
|
|
23
|
+
hysteresisThreshold: 0.03, // Need 3% improvement
|
|
24
|
+
minDataPoints: 50,
|
|
25
|
+
recencyWeight: 0.3,
|
|
26
|
+
},
|
|
27
|
+
moderate: {
|
|
28
|
+
type: 'moderate',
|
|
29
|
+
maxDeltaPerAdjustment: 0.05, // 5% max
|
|
30
|
+
hysteresisThreshold: 0.02, // Need 2% improvement
|
|
31
|
+
minDataPoints: 30,
|
|
32
|
+
recencyWeight: 0.5,
|
|
33
|
+
},
|
|
34
|
+
aggressive: {
|
|
35
|
+
type: 'aggressive',
|
|
36
|
+
maxDeltaPerAdjustment: 0.08, // 8% max (capped at 5% in implementation)
|
|
37
|
+
hysteresisThreshold: 0.01, // Need 1% improvement
|
|
38
|
+
minDataPoints: 20,
|
|
39
|
+
recencyWeight: 0.7,
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Default strategy
|
|
44
|
+
*/
|
|
45
|
+
export const DEFAULT_STRATEGY = 'moderate';
|
|
46
|
+
/**
|
|
47
|
+
* Threshold bounds (must maintain: warning < high < critical)
|
|
48
|
+
*/
|
|
49
|
+
export const THRESHOLD_BOUNDS = {
|
|
50
|
+
warning: { min: 0.70, max: 0.90 },
|
|
51
|
+
high: { min: 0.75, max: 0.95 },
|
|
52
|
+
critical: { min: 0.80, max: 0.99 },
|
|
53
|
+
};
|
|
54
|
+
// =============================================================================
|
|
55
|
+
// Strategy Selection
|
|
56
|
+
// =============================================================================
|
|
57
|
+
/**
|
|
58
|
+
* Get strategy configuration
|
|
59
|
+
*/
|
|
60
|
+
export function getStrategyConfig(strategy = DEFAULT_STRATEGY) {
|
|
61
|
+
return STRATEGY_CONFIGS[strategy];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Detect trend pattern from metrics data
|
|
65
|
+
*/
|
|
66
|
+
export function detectTrendPattern(trend) {
|
|
67
|
+
// Use weighted average of success rate and token savings trends
|
|
68
|
+
const combinedTrend = (trend.successRateTrend * 0.6) + (trend.tokenSavingsTrend * 0.4);
|
|
69
|
+
// Account for period - longer periods need larger trends
|
|
70
|
+
const trendThreshold = 0.01 * Math.sqrt(trend.periodDays);
|
|
71
|
+
if (combinedTrend > trendThreshold) {
|
|
72
|
+
return 'improving';
|
|
73
|
+
}
|
|
74
|
+
if (combinedTrend < -trendThreshold) {
|
|
75
|
+
return 'degrading';
|
|
76
|
+
}
|
|
77
|
+
return 'plateau';
|
|
78
|
+
}
|
|
79
|
+
// =============================================================================
|
|
80
|
+
// Threshold Adjustment
|
|
81
|
+
// =============================================================================
|
|
82
|
+
/**
|
|
83
|
+
* Calculate suggested threshold adjustment
|
|
84
|
+
*/
|
|
85
|
+
export function calculateThresholdAdjustment(currentThreshold, thresholdType, pattern, trend, strategy) {
|
|
86
|
+
// Check if we have enough data
|
|
87
|
+
if (trend.dataPoints < strategy.minDataPoints) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
// Calculate base delta based on pattern
|
|
91
|
+
let baseDelta = 0;
|
|
92
|
+
let reason = '';
|
|
93
|
+
let confidence = 0;
|
|
94
|
+
switch (pattern) {
|
|
95
|
+
case 'improving':
|
|
96
|
+
// System is performing well - can raise thresholds
|
|
97
|
+
baseDelta = calculateImprovingDelta(trend, strategy);
|
|
98
|
+
reason = `Performance improving (success rate trend: ${(trend.successRateTrend * 100).toFixed(1)}%)`;
|
|
99
|
+
confidence = Math.min(1, trend.successRateTrend * 10);
|
|
100
|
+
break;
|
|
101
|
+
case 'degrading':
|
|
102
|
+
// System is struggling - lower thresholds
|
|
103
|
+
baseDelta = calculateDegradingDelta(trend, strategy);
|
|
104
|
+
reason = `Performance degrading (success rate trend: ${(trend.successRateTrend * 100).toFixed(1)}%)`;
|
|
105
|
+
confidence = Math.min(1, Math.abs(trend.successRateTrend) * 10);
|
|
106
|
+
break;
|
|
107
|
+
case 'plateau':
|
|
108
|
+
// No significant change - adjust based on utilization
|
|
109
|
+
baseDelta = calculatePlateauDelta(currentThreshold, trend, strategy);
|
|
110
|
+
reason = `Stable performance (avg utilization: ${(trend.avgBudgetUtilization * 100).toFixed(0)}%)`;
|
|
111
|
+
confidence = 0.3; // Lower confidence for plateau adjustments
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
// Apply hysteresis - skip if delta is too small
|
|
115
|
+
if (Math.abs(baseDelta) < strategy.hysteresisThreshold) {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
// Cap delta at max allowed
|
|
119
|
+
const cappedDelta = Math.sign(baseDelta) *
|
|
120
|
+
Math.min(Math.abs(baseDelta), strategy.maxDeltaPerAdjustment);
|
|
121
|
+
// Additional cap: never more than 5% per adjustment
|
|
122
|
+
const finalDelta = Math.sign(cappedDelta) * Math.min(Math.abs(cappedDelta), 0.05);
|
|
123
|
+
// Calculate suggested value
|
|
124
|
+
let suggestedValue = currentThreshold + finalDelta;
|
|
125
|
+
// Validate bounds
|
|
126
|
+
const bounds = THRESHOLD_BOUNDS[thresholdType];
|
|
127
|
+
suggestedValue = Math.max(bounds.min, Math.min(bounds.max, suggestedValue));
|
|
128
|
+
// If no actual change after bounds, skip
|
|
129
|
+
if (Math.abs(suggestedValue - currentThreshold) < 0.001) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
threshold: thresholdType,
|
|
134
|
+
currentValue: currentThreshold,
|
|
135
|
+
suggestedValue: Math.round(suggestedValue * 1000) / 1000,
|
|
136
|
+
delta: Math.round((suggestedValue - currentThreshold) * 1000) / 1000,
|
|
137
|
+
reason,
|
|
138
|
+
confidence: Math.round(confidence * 100) / 100,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Calculate delta for improving trend
|
|
143
|
+
*/
|
|
144
|
+
function calculateImprovingDelta(trend, strategy) {
|
|
145
|
+
// When improving, we can raise thresholds to use more context
|
|
146
|
+
// Scale by recency weight and success rate trend
|
|
147
|
+
const magnitude = trend.successRateTrend * strategy.recencyWeight;
|
|
148
|
+
return Math.min(magnitude, strategy.maxDeltaPerAdjustment);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Calculate delta for degrading trend
|
|
152
|
+
*/
|
|
153
|
+
function calculateDegradingDelta(trend, strategy) {
|
|
154
|
+
// When degrading, lower thresholds to be more conservative
|
|
155
|
+
// Use absolute value of negative trend
|
|
156
|
+
const magnitude = Math.abs(trend.successRateTrend) * strategy.recencyWeight;
|
|
157
|
+
return -Math.min(magnitude, strategy.maxDeltaPerAdjustment);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Calculate delta for plateau trend
|
|
161
|
+
*/
|
|
162
|
+
function calculatePlateauDelta(currentThreshold, trend, strategy) {
|
|
163
|
+
// On plateau, adjust based on whether we're under/over-utilizing context
|
|
164
|
+
// If avg utilization is low, we could raise thresholds
|
|
165
|
+
if (trend.avgBudgetUtilization < 0.5 && currentThreshold < 0.90) {
|
|
166
|
+
return strategy.maxDeltaPerAdjustment * 0.5; // Small raise
|
|
167
|
+
}
|
|
168
|
+
// If avg utilization is high, might want to lower thresholds
|
|
169
|
+
if (trend.avgBudgetUtilization > 0.85 && currentThreshold > 0.75) {
|
|
170
|
+
return -strategy.maxDeltaPerAdjustment * 0.5; // Small lower
|
|
171
|
+
}
|
|
172
|
+
return 0;
|
|
173
|
+
}
|
|
174
|
+
// =============================================================================
|
|
175
|
+
// Validation
|
|
176
|
+
// =============================================================================
|
|
177
|
+
/**
|
|
178
|
+
* Validate threshold values maintain proper ordering
|
|
179
|
+
*/
|
|
180
|
+
export function validateThresholdOrder(warning, high, critical) {
|
|
181
|
+
// Must maintain: warning < high < critical
|
|
182
|
+
if (warning >= high)
|
|
183
|
+
return false;
|
|
184
|
+
if (high >= critical)
|
|
185
|
+
return false;
|
|
186
|
+
// Must be within bounds
|
|
187
|
+
if (warning < THRESHOLD_BOUNDS.warning.min || warning > THRESHOLD_BOUNDS.warning.max) {
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
if (high < THRESHOLD_BOUNDS.high.min || high > THRESHOLD_BOUNDS.high.max) {
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
if (critical < THRESHOLD_BOUNDS.critical.min || critical > THRESHOLD_BOUNDS.critical.max) {
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Adjust a suggested value to maintain threshold ordering
|
|
200
|
+
*/
|
|
201
|
+
export function enforceThresholdOrder(thresholdType, suggestedValue, currentThresholds) {
|
|
202
|
+
const minGap = 0.02; // Minimum 2% gap between thresholds
|
|
203
|
+
switch (thresholdType) {
|
|
204
|
+
case 'warning':
|
|
205
|
+
// Warning must be at least minGap below high
|
|
206
|
+
return Math.min(suggestedValue, currentThresholds.high - minGap);
|
|
207
|
+
case 'high':
|
|
208
|
+
// High must be at least minGap above warning and below critical
|
|
209
|
+
const highMin = currentThresholds.warning + minGap;
|
|
210
|
+
const highMax = currentThresholds.critical - minGap;
|
|
211
|
+
return Math.max(highMin, Math.min(suggestedValue, highMax));
|
|
212
|
+
case 'critical':
|
|
213
|
+
// Critical must be at least minGap above high
|
|
214
|
+
return Math.max(suggestedValue, currentThresholds.high + minGap);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// =============================================================================
|
|
218
|
+
// Formatting
|
|
219
|
+
// =============================================================================
|
|
220
|
+
/**
|
|
221
|
+
* Format threshold adjustment for display
|
|
222
|
+
*/
|
|
223
|
+
export function formatThresholdAdjustment(adj) {
|
|
224
|
+
const direction = adj.delta > 0 ? '+' : '';
|
|
225
|
+
return `${adj.threshold}: ${(adj.currentValue * 100).toFixed(0)}% -> ${(adj.suggestedValue * 100).toFixed(0)}% (${direction}${(adj.delta * 100).toFixed(1)}%) - ${adj.reason}`;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Format strategy config for display
|
|
229
|
+
*/
|
|
230
|
+
export function formatStrategyConfig(config) {
|
|
231
|
+
return `Strategy: ${config.type} (max delta: ${(config.maxDeltaPerAdjustment * 100).toFixed(0)}%, hysteresis: ${(config.hysteresisThreshold * 100).toFixed(0)}%, min data: ${config.minDataPoints})`;
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=adaptation-strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adaptation-strategy.js","sourceRoot":"","sources":["../../../src/core/context/adaptation-strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAkEH,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA6D;IACxF,YAAY,EAAE;QACZ,IAAI,EAAE,cAAc;QACpB,qBAAqB,EAAE,IAAI,EAAE,SAAS;QACtC,mBAAmB,EAAE,IAAI,EAAI,sBAAsB;QACnD,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,GAAG;KACnB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,qBAAqB,EAAE,IAAI,EAAE,SAAS;QACtC,mBAAmB,EAAE,IAAI,EAAI,sBAAsB;QACnD,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,GAAG;KACnB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,qBAAqB,EAAE,IAAI,EAAE,0CAA0C;QACvE,mBAAmB,EAAE,IAAI,EAAI,sBAAsB;QACnD,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,GAAG;KACnB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA2B,UAAU,CAAC;AAEnE;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;IACjC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;IAC9B,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;CACnC,CAAC;AAEF,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,WAAmC,gBAAgB;IAEnD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAgB;IACjD,gEAAgE;IAChE,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC;IAEvF,yDAAyD;IACzD,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAE1D,IAAI,aAAa,GAAG,cAAc,EAAE,CAAC;QACnC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,aAAa,GAAG,CAAC,cAAc,EAAE,CAAC;QACpC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,gBAAwB,EACxB,aAA8C,EAC9C,OAAqB,EACrB,KAAgB,EAChB,QAAkC;IAElC,+BAA+B;IAC/B,IAAI,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wCAAwC;IACxC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,WAAW;YACd,mDAAmD;YACnD,SAAS,GAAG,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACrD,MAAM,GAAG,8CAA8C,CAAC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YACrG,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;YACtD,MAAM;QAER,KAAK,WAAW;YACd,0CAA0C;YAC1C,SAAS,GAAG,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACrD,MAAM,GAAG,8CAA8C,CAAC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YACrG,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC;YAChE,MAAM;QAER,KAAK,SAAS;YACZ,sDAAsD;YACtD,SAAS,GAAG,qBAAqB,CAAC,gBAAgB,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACrE,MAAM,GAAG,wCAAwC,CAAC,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YACnG,UAAU,GAAG,GAAG,CAAC,CAAC,2CAA2C;YAC7D,MAAM;IACV,CAAC;IAED,gDAAgD;IAChD,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2BAA2B;IAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IAEhE,oDAAoD;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;IAElF,4BAA4B;IAC5B,IAAI,cAAc,GAAG,gBAAgB,GAAG,UAAU,CAAC;IAEnD,kBAAkB;IAClB,MAAM,MAAM,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC/C,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;IAE5E,yCAAyC;IACzC,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,gBAAgB,CAAC,GAAG,KAAK,EAAE,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,SAAS,EAAE,aAAa;QACxB,YAAY,EAAE,gBAAgB;QAC9B,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,IAAI;QACxD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,gBAAgB,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI;QACpE,MAAM;QACN,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG;KAC/C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC9B,KAAgB,EAChB,QAAkC;IAElC,8DAA8D;IAC9D,iDAAiD;IACjD,MAAM,SAAS,GAAG,KAAK,CAAC,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC;IAClE,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC9B,KAAgB,EAChB,QAAkC;IAElC,2DAA2D;IAC3D,uCAAuC;IACvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC;IAC5E,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAC5B,gBAAwB,EACxB,KAAgB,EAChB,QAAkC;IAElC,yEAAyE;IAEzE,uDAAuD;IACvD,IAAI,KAAK,CAAC,oBAAoB,GAAG,GAAG,IAAI,gBAAgB,GAAG,IAAI,EAAE,CAAC;QAChE,OAAO,QAAQ,CAAC,qBAAqB,GAAG,GAAG,CAAC,CAAC,cAAc;IAC7D,CAAC;IAED,6DAA6D;IAC7D,IAAI,KAAK,CAAC,oBAAoB,GAAG,IAAI,IAAI,gBAAgB,GAAG,IAAI,EAAE,CAAC;QACjE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,GAAG,GAAG,CAAC,CAAC,cAAc;IAC9D,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAe,EACf,IAAY,EACZ,QAAgB;IAEhB,2CAA2C;IAC3C,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAClC,IAAI,IAAI,IAAI,QAAQ;QAAE,OAAO,KAAK,CAAC;IAEnC,wBAAwB;IACxB,IAAI,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACrF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACzE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,GAAG,IAAI,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACzF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,aAA8C,EAC9C,cAAsB,EACtB,iBAAsE;IAEtE,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,oCAAoC;IAEzD,QAAQ,aAAa,EAAE,CAAC;QACtB,KAAK,SAAS;YACZ,6CAA6C;YAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,iBAAiB,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;QAEnE,KAAK,MAAM;YACT,gEAAgE;YAChE,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,GAAG,MAAM,CAAC;YACnD,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,GAAG,MAAM,CAAC;YACpD,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;QAE9D,KAAK,UAAU;YACb,8CAA8C;YAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,iBAAiB,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAwB;IAChE,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3C,OAAO,GAAG,GAAG,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;AACjL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAgC;IACnE,OAAO,aAAa,MAAM,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,qBAAqB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,mBAAmB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,aAAa,GAAG,CAAC;AACvM,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-injection-engine.d.ts","sourceRoot":"","sources":["../../../src/core/context/auto-injection-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,KAAK,YAAY,EAOlB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"auto-injection-engine.d.ts","sourceRoot":"","sources":["../../../src/core/context/auto-injection-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,KAAK,YAAY,EAOlB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAO9E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mEAAmE;IACnE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAmBD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,YAAY,EAAE,GACtB,OAAO,CAoBT;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAiJ9B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAGxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAavD;AAMD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAO7E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAgBnE"}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
import { detectDemandSignals, loadContextJIT, shouldInjectContext, formatAsReminder, calculateRelevanceScore, } from './demand-detector.js';
|
|
15
15
|
import { isFeatureEnabled } from '../config/feature-flags.js';
|
|
16
16
|
import { REPLEnvironment } from '../context-repl/index.js';
|
|
17
|
+
import { recordMetric } from '../metrics/index.js';
|
|
17
18
|
// =============================================================================
|
|
18
19
|
// Constants
|
|
19
20
|
// =============================================================================
|
|
@@ -52,6 +53,8 @@ export function shouldAutoInject(budgetPercentage, signals) {
|
|
|
52
53
|
* v13.6.0: Optionally uses REPL peek for reconnaissance before loading
|
|
53
54
|
*/
|
|
54
55
|
export async function executeAutoInjection(prompt, projectDir, options = {}) {
|
|
56
|
+
// v16.0.0: Track execution time for metrics
|
|
57
|
+
const metricsStartTime = performance.now();
|
|
55
58
|
const { budgetPercentage = 50, minRelevance = DEFAULT_MIN_RELEVANCE, maxTokens = DEFAULT_MAX_TOKENS, includeFailures = true, useReplPeek, } = options;
|
|
56
59
|
// Check feature flag
|
|
57
60
|
const enabled = await isFeatureEnabled('autoContextInjection', projectDir);
|
|
@@ -145,6 +148,24 @@ export async function executeAutoInjection(prompt, projectDir, options = {}) {
|
|
|
145
148
|
finalContext = injectedContext.substring(0, maxChars - 3) + '...';
|
|
146
149
|
}
|
|
147
150
|
const relevanceScore = calculateRelevanceScore(prompt, jitResult);
|
|
151
|
+
// v16.0.0: Record metrics
|
|
152
|
+
try {
|
|
153
|
+
await recordMetric(projectDir, {
|
|
154
|
+
operationType: 'auto-injection',
|
|
155
|
+
outcome: 'success',
|
|
156
|
+
durationMs: performance.now() - metricsStartTime,
|
|
157
|
+
tokensSaved: jitResult.tokensEstimate,
|
|
158
|
+
budgetPercentage,
|
|
159
|
+
metadata: {
|
|
160
|
+
signalCount: signals.length,
|
|
161
|
+
relevanceScore,
|
|
162
|
+
usedRepl,
|
|
163
|
+
},
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
// Metrics recording failure should not break the main flow
|
|
168
|
+
}
|
|
148
169
|
return {
|
|
149
170
|
executed: true,
|
|
150
171
|
reason: `Injected context based on ${signals.length} demand signal(s)`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-injection-engine.js","sourceRoot":"","sources":["../../../src/core/context/auto-injection-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAGL,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAqB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"auto-injection-engine.js","sourceRoot":"","sources":["../../../src/core/context/auto-injection-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,14 +46,28 @@ export interface AutoUnloadOptions {
|
|
|
46
46
|
/** Files to never unload */
|
|
47
47
|
protectedFiles?: string[];
|
|
48
48
|
}
|
|
49
|
-
/** Budget threshold to start unloading (70%) */
|
|
49
|
+
/** Budget threshold to start unloading (70%) - static default */
|
|
50
50
|
export declare const UNLOAD_THRESHOLD_START = 70;
|
|
51
|
-
/** Budget threshold for aggressive unloading (85%) */
|
|
51
|
+
/** Budget threshold for aggressive unloading (85%) - static default */
|
|
52
52
|
export declare const UNLOAD_THRESHOLD_AGGRESSIVE = 85;
|
|
53
|
+
/**
|
|
54
|
+
* v16.0.0: Get dynamic unload thresholds
|
|
55
|
+
*
|
|
56
|
+
* When dynamic thresholds are enabled, derives unload thresholds from
|
|
57
|
+
* the active warning/high thresholds (unload starts at warning - 15%).
|
|
58
|
+
*/
|
|
59
|
+
export declare function getDynamicUnloadThresholds(projectDir: string): Promise<{
|
|
60
|
+
start: number;
|
|
61
|
+
aggressive: number;
|
|
62
|
+
}>;
|
|
53
63
|
/**
|
|
54
64
|
* Check if auto unload should execute
|
|
55
65
|
*/
|
|
56
66
|
export declare function shouldAutoUnload(budgetPercentage: number): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* v16.0.0: Check if auto unload should execute with dynamic thresholds
|
|
69
|
+
*/
|
|
70
|
+
export declare function shouldAutoUnloadDynamic(budgetPercentage: number, projectDir: string): Promise<boolean>;
|
|
57
71
|
/**
|
|
58
72
|
* Calculate budget pressure (0-1)
|
|
59
73
|
*/
|
|
@@ -62,6 +76,10 @@ export declare function calculateBudgetPressure(budgetPercentage: number): numbe
|
|
|
62
76
|
* Determine unload aggressiveness based on budget
|
|
63
77
|
*/
|
|
64
78
|
export declare function getUnloadAggressiveness(budgetPercentage: number): 'none' | 'normal' | 'aggressive';
|
|
79
|
+
/**
|
|
80
|
+
* v16.0.0: Determine unload aggressiveness with dynamic thresholds
|
|
81
|
+
*/
|
|
82
|
+
export declare function getUnloadAggressivenessDynamic(budgetPercentage: number, projectDir: string): Promise<'none' | 'normal' | 'aggressive'>;
|
|
65
83
|
/**
|
|
66
84
|
* Select resources to unload based on coldness and budget pressure
|
|
67
85
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-unload-engine.d.ts","sourceRoot":"","sources":["../../../src/core/context/auto-unload-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAKlB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,gBAAgB,EAKtB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"auto-unload-engine.d.ts","sourceRoot":"","sources":["../../../src/core/context/auto-unload-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAKlB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,gBAAgB,EAKtB,MAAM,kBAAkB,CAAC;AAS1B;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4BAA4B;IAC5B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAMD,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,uEAAuE;AACvE,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAahD;AAeD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAElE;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAMxE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,CAQlG;AAED;;GAEG;AACH,wBAAsB,8BAA8B,CAClD,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC,CAU3C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,YAAY,EAAE,EAC7B,OAAO,EAAE,iBAAiB,GACzB,YAAY,EAAE,CAwChB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,gBAAgB,EAC3B,WAAW,EAAE,mBAAmB,EAChC,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,CAAC,CAsK3B;AAMD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAOvE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,YAAY,EAAE,GAC5B,MAAM,CAmBR"}
|
|
@@ -13,13 +13,34 @@
|
|
|
13
13
|
import { getColdResources, getRecentlyAccessedFiles, } from './access-tracker.js';
|
|
14
14
|
import { deferFile, getLoadedResources, } from './lazy-loader.js';
|
|
15
15
|
import { isFeatureEnabled } from '../config/feature-flags.js';
|
|
16
|
+
import { recordMetric } from '../metrics/index.js';
|
|
17
|
+
import { getActiveThresholds } from './budget-thresholds.js';
|
|
16
18
|
// =============================================================================
|
|
17
19
|
// Constants
|
|
18
20
|
// =============================================================================
|
|
19
|
-
/** Budget threshold to start unloading (70%) */
|
|
21
|
+
/** Budget threshold to start unloading (70%) - static default */
|
|
20
22
|
export const UNLOAD_THRESHOLD_START = 70;
|
|
21
|
-
/** Budget threshold for aggressive unloading (85%) */
|
|
23
|
+
/** Budget threshold for aggressive unloading (85%) - static default */
|
|
22
24
|
export const UNLOAD_THRESHOLD_AGGRESSIVE = 85;
|
|
25
|
+
/**
|
|
26
|
+
* v16.0.0: Get dynamic unload thresholds
|
|
27
|
+
*
|
|
28
|
+
* When dynamic thresholds are enabled, derives unload thresholds from
|
|
29
|
+
* the active warning/high thresholds (unload starts at warning - 15%).
|
|
30
|
+
*/
|
|
31
|
+
export async function getDynamicUnloadThresholds(projectDir) {
|
|
32
|
+
try {
|
|
33
|
+
const thresholds = await getActiveThresholds(projectDir);
|
|
34
|
+
// Unload starts 15% below warning threshold
|
|
35
|
+
const start = Math.max(50, (thresholds.warning * 100) - 15);
|
|
36
|
+
// Aggressive unload at warning threshold
|
|
37
|
+
const aggressive = thresholds.warning * 100;
|
|
38
|
+
return { start, aggressive };
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return { start: UNLOAD_THRESHOLD_START, aggressive: UNLOAD_THRESHOLD_AGGRESSIVE };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
23
44
|
/** Default max files to unload per execution */
|
|
24
45
|
const DEFAULT_MAX_FILES_TO_UNLOAD = 5;
|
|
25
46
|
/** Minimum coldness to evict at normal threshold */
|
|
@@ -35,6 +56,13 @@ const AGGRESSIVE_MIN_COLDNESS = 0.4;
|
|
|
35
56
|
export function shouldAutoUnload(budgetPercentage) {
|
|
36
57
|
return budgetPercentage >= UNLOAD_THRESHOLD_START;
|
|
37
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* v16.0.0: Check if auto unload should execute with dynamic thresholds
|
|
61
|
+
*/
|
|
62
|
+
export async function shouldAutoUnloadDynamic(budgetPercentage, projectDir) {
|
|
63
|
+
const thresholds = await getDynamicUnloadThresholds(projectDir);
|
|
64
|
+
return budgetPercentage >= thresholds.start;
|
|
65
|
+
}
|
|
38
66
|
/**
|
|
39
67
|
* Calculate budget pressure (0-1)
|
|
40
68
|
*/
|
|
@@ -57,6 +85,19 @@ export function getUnloadAggressiveness(budgetPercentage) {
|
|
|
57
85
|
}
|
|
58
86
|
return 'none';
|
|
59
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* v16.0.0: Determine unload aggressiveness with dynamic thresholds
|
|
90
|
+
*/
|
|
91
|
+
export async function getUnloadAggressivenessDynamic(budgetPercentage, projectDir) {
|
|
92
|
+
const thresholds = await getDynamicUnloadThresholds(projectDir);
|
|
93
|
+
if (budgetPercentage >= thresholds.aggressive) {
|
|
94
|
+
return 'aggressive';
|
|
95
|
+
}
|
|
96
|
+
if (budgetPercentage >= thresholds.start) {
|
|
97
|
+
return 'normal';
|
|
98
|
+
}
|
|
99
|
+
return 'none';
|
|
100
|
+
}
|
|
60
101
|
/**
|
|
61
102
|
* Select resources to unload based on coldness and budget pressure
|
|
62
103
|
*/
|
|
@@ -95,6 +136,8 @@ export function selectResourcesToUnload(coldResources, options) {
|
|
|
95
136
|
* freeing up context budget.
|
|
96
137
|
*/
|
|
97
138
|
export async function executeAutoUnload(lazyState, accessState, options, projectDir) {
|
|
139
|
+
// v16.0.0: Track execution time for metrics
|
|
140
|
+
const metricsStartTime = performance.now();
|
|
98
141
|
// Check feature flag
|
|
99
142
|
const enabled = await isFeatureEnabled('autoUnload', projectDir);
|
|
100
143
|
if (!enabled) {
|
|
@@ -108,11 +151,23 @@ export async function executeAutoUnload(lazyState, accessState, options, project
|
|
|
108
151
|
};
|
|
109
152
|
}
|
|
110
153
|
const { budgetPercentage } = options;
|
|
111
|
-
// Check if we should unload
|
|
112
|
-
|
|
154
|
+
// v16.0.0: Check if we should unload with dynamic threshold support
|
|
155
|
+
const dynamicEnabled = await isFeatureEnabled('dynamicThresholds', projectDir);
|
|
156
|
+
let shouldUnload;
|
|
157
|
+
let thresholdStart;
|
|
158
|
+
if (dynamicEnabled) {
|
|
159
|
+
const thresholds = await getDynamicUnloadThresholds(projectDir);
|
|
160
|
+
shouldUnload = budgetPercentage >= thresholds.start;
|
|
161
|
+
thresholdStart = thresholds.start;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
shouldUnload = shouldAutoUnload(budgetPercentage);
|
|
165
|
+
thresholdStart = UNLOAD_THRESHOLD_START;
|
|
166
|
+
}
|
|
167
|
+
if (!shouldUnload) {
|
|
113
168
|
return {
|
|
114
169
|
executed: false,
|
|
115
|
-
reason: `Budget at ${budgetPercentage}% - below ${
|
|
170
|
+
reason: `Budget at ${budgetPercentage}% - below ${thresholdStart}% threshold`,
|
|
116
171
|
unloaded: [],
|
|
117
172
|
totalTokensFreed: 0,
|
|
118
173
|
budgetBefore: budgetPercentage,
|
|
@@ -193,6 +248,24 @@ export async function executeAutoUnload(lazyState, accessState, options, project
|
|
|
193
248
|
const tokensReduced = totalTokensFreed;
|
|
194
249
|
const percentageReduced = (tokensReduced / totalTokens) * 100;
|
|
195
250
|
const budgetAfter = Math.max(0, budgetPercentage - percentageReduced);
|
|
251
|
+
// v16.0.0: Record metrics
|
|
252
|
+
try {
|
|
253
|
+
await recordMetric(projectDir, {
|
|
254
|
+
operationType: 'auto-unload',
|
|
255
|
+
outcome: 'success',
|
|
256
|
+
durationMs: performance.now() - metricsStartTime,
|
|
257
|
+
tokensFreed: totalTokensFreed,
|
|
258
|
+
budgetPercentage,
|
|
259
|
+
metadata: {
|
|
260
|
+
filesUnloaded: toUnload.length,
|
|
261
|
+
aggressiveness: getUnloadAggressiveness(budgetPercentage),
|
|
262
|
+
budgetAfter,
|
|
263
|
+
},
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
// Metrics recording failure should not break the main flow
|
|
268
|
+
}
|
|
196
269
|
return {
|
|
197
270
|
executed: true,
|
|
198
271
|
reason: `Unloaded ${toUnload.length} cold resources at ${budgetPercentage}% budget`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-unload-engine.js","sourceRoot":"","sources":["../../../src/core/context/auto-unload-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAGL,gBAAgB,EAChB,wBAAwB,GAGzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,SAAS,EACT,kBAAkB,GAGnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"auto-unload-engine.js","sourceRoot":"","sources":["../../../src/core/context/auto-unload-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Budget Thresholds -
|
|
2
|
+
* Budget Thresholds - v16.0.0
|
|
3
3
|
*
|
|
4
4
|
* Configurable context budget thresholds with safety margins.
|
|
5
5
|
* Optimized for Claude 4.5's extended context window (200K tokens).
|
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
* - Config-driven thresholds via .dino/config.json
|
|
11
11
|
* - Backwards compatible with existing budget tracking
|
|
12
12
|
*
|
|
13
|
+
* v16.0.0:
|
|
14
|
+
* - Real-time budget percentage via getBudgetPercentage()
|
|
15
|
+
* - Dynamic threshold support with getActiveThresholds()
|
|
16
|
+
* - Budget change propagation within 100ms
|
|
17
|
+
*
|
|
13
18
|
* Reference: Anthropic context engineering best practices
|
|
14
19
|
*/
|
|
15
20
|
/**
|
|
@@ -164,4 +169,73 @@ export declare function calculateSafeCapacity(limit: number, threshold: number,
|
|
|
164
169
|
* @returns Effective limit with safety margin applied
|
|
165
170
|
*/
|
|
166
171
|
export declare function getEffectiveLimit(limit: number, config?: ThresholdConfig): number;
|
|
172
|
+
/** Default context limit (200K tokens for Claude 4.5) */
|
|
173
|
+
export declare const DEFAULT_CONTEXT_LIMIT = 200000;
|
|
174
|
+
/**
|
|
175
|
+
* Get current budget percentage (0-100)
|
|
176
|
+
*
|
|
177
|
+
* Returns the real-time budget utilization percentage.
|
|
178
|
+
* Updates are propagated within 100ms.
|
|
179
|
+
*
|
|
180
|
+
* @returns Budget percentage 0-100
|
|
181
|
+
*/
|
|
182
|
+
export declare function getBudgetPercentage(): number;
|
|
183
|
+
/**
|
|
184
|
+
* Update current budget state
|
|
185
|
+
*
|
|
186
|
+
* Called by token tracker and other systems to update budget.
|
|
187
|
+
* Propagates changes for real-time access.
|
|
188
|
+
*
|
|
189
|
+
* @param usage - Current token usage
|
|
190
|
+
* @param limit - Context limit (optional, defaults to current)
|
|
191
|
+
*/
|
|
192
|
+
export declare function updateBudgetState(usage: number, limit?: number): void;
|
|
193
|
+
/**
|
|
194
|
+
* Get current budget state
|
|
195
|
+
*
|
|
196
|
+
* @returns Current budget state with usage, limit, and last update time
|
|
197
|
+
*/
|
|
198
|
+
export declare function getBudgetState(): {
|
|
199
|
+
usage: number;
|
|
200
|
+
limit: number;
|
|
201
|
+
percentage: number;
|
|
202
|
+
lastUpdated: number;
|
|
203
|
+
msSinceUpdate: number;
|
|
204
|
+
};
|
|
205
|
+
/**
|
|
206
|
+
* Get active thresholds (dynamic if enabled, static otherwise)
|
|
207
|
+
*
|
|
208
|
+
* When dynamicThresholds feature is enabled, returns adjusted thresholds
|
|
209
|
+
* from the feedback loop. Otherwise returns static config thresholds.
|
|
210
|
+
*
|
|
211
|
+
* @param projectDir - Project directory
|
|
212
|
+
* @returns Active threshold configuration
|
|
213
|
+
*/
|
|
214
|
+
export declare function getActiveThresholds(projectDir?: string): Promise<ThresholdConfig>;
|
|
215
|
+
/**
|
|
216
|
+
* Check threshold with dynamic support
|
|
217
|
+
*
|
|
218
|
+
* Uses active thresholds (dynamic or static) to determine level.
|
|
219
|
+
*
|
|
220
|
+
* @param usage - Current token usage
|
|
221
|
+
* @param limit - Context limit
|
|
222
|
+
* @param projectDir - Project directory
|
|
223
|
+
* @returns Threshold result with dynamic threshold support
|
|
224
|
+
*/
|
|
225
|
+
export declare function checkThresholdWithDynamic(usage: number, limit: number, projectDir?: string): Promise<ThresholdResult & {
|
|
226
|
+
usingDynamicThresholds: boolean;
|
|
227
|
+
}>;
|
|
228
|
+
/**
|
|
229
|
+
* Format budget state for session.md
|
|
230
|
+
*
|
|
231
|
+
* Includes dynamic threshold delta information when active.
|
|
232
|
+
*
|
|
233
|
+
* @param projectDir - Project directory
|
|
234
|
+
* @returns Formatted budget section
|
|
235
|
+
*/
|
|
236
|
+
export declare function formatBudgetForSession(projectDir?: string): Promise<string>;
|
|
237
|
+
/**
|
|
238
|
+
* Reset budget state (for testing)
|
|
239
|
+
*/
|
|
240
|
+
export declare function resetBudgetState(): void;
|
|
167
241
|
//# sourceMappingURL=budget-thresholds.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"budget-thresholds.d.ts","sourceRoot":"","sources":["../../../src/core/context/budget-thresholds.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"budget-thresholds.d.ts","sourceRoot":"","sources":["../../../src/core/context/budget-thresholds.ts"],"names":[],"mappings":"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"}
|