dino-spec 13.6.1 → 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/README.md +82 -5
- package/dist/commands/hud.d.ts +1 -8
- package/dist/commands/hud.d.ts.map +1 -1
- package/dist/commands/hud.js +4 -18
- package/dist/commands/hud.js.map +1 -1
- package/dist/core/config/feature-flags.d.ts +25 -1
- package/dist/core/config/feature-flags.d.ts.map +1 -1
- package/dist/core/config/feature-flags.js +7 -1
- package/dist/core/config/feature-flags.js.map +1 -1
- 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/auto-injection-engine.d.ts +10 -1
- package/dist/core/context/auto-injection-engine.d.ts.map +1 -1
- package/dist/core/context/auto-injection-engine.js +45 -2
- package/dist/core/context/auto-injection-engine.js.map +1 -1
- 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/context-health.d.ts +27 -2
- package/dist/core/context/context-health.d.ts.map +1 -1
- package/dist/core/context/context-health.js +98 -12
- package/dist/core/context/context-health.js.map +1 -1
- package/dist/core/context/focus-resource-loader.d.ts +143 -0
- package/dist/core/context/focus-resource-loader.d.ts.map +1 -0
- package/dist/core/context/focus-resource-loader.js +305 -0
- package/dist/core/context/focus-resource-loader.js.map +1 -0
- package/dist/core/context/index.d.ts +10 -5
- package/dist/core/context/index.d.ts.map +1 -1
- package/dist/core/context/index.js +40 -5
- package/dist/core/context/index.js.map +1 -1
- package/dist/core/context/lazy-loader.d.ts +44 -1
- package/dist/core/context/lazy-loader.d.ts.map +1 -1
- package/dist/core/context/lazy-loader.js +59 -1
- package/dist/core/context/lazy-loader.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/context-repl/__tests__/repl-environment.test.d.ts +7 -0
- package/dist/core/context-repl/__tests__/repl-environment.test.d.ts.map +1 -0
- package/dist/core/context-repl/__tests__/repl-environment.test.js +335 -0
- package/dist/core/context-repl/__tests__/repl-environment.test.js.map +1 -0
- package/dist/core/context-repl/context-window-monitor.d.ts +181 -0
- package/dist/core/context-repl/context-window-monitor.d.ts.map +1 -0
- package/dist/core/context-repl/context-window-monitor.js +309 -0
- package/dist/core/context-repl/context-window-monitor.js.map +1 -0
- package/dist/core/context-repl/index.d.ts +8 -3
- package/dist/core/context-repl/index.d.ts.map +1 -1
- package/dist/core/context-repl/index.js +11 -3
- package/dist/core/context-repl/index.js.map +1 -1
- package/dist/core/context-repl/repl-environment.d.ts +66 -0
- package/dist/core/context-repl/repl-environment.d.ts.map +1 -0
- package/dist/core/context-repl/repl-environment.js +795 -0
- package/dist/core/context-repl/repl-environment.js.map +1 -0
- package/dist/core/context-repl/types.d.ts +277 -1
- package/dist/core/context-repl/types.d.ts.map +1 -1
- package/dist/core/context-repl/types.js +52 -1
- package/dist/core/context-repl/types.js.map +1 -1
- 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/generator/claude-md.js +1 -1
- 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/core/provider/storage.d.ts.map +1 -1
- package/dist/core/provider/storage.js +1 -2
- package/dist/core/provider/storage.js.map +1 -1
- package/dist/hooks/post-edit.js +73 -0
- package/dist/hooks/post-edit.js.map +1 -1
- package/dist/hooks/session-start.js +115 -0
- package/dist/hooks/session-start.js.map +1 -1
- package/dist/hooks/types.js +1 -1
- package/dist/hooks/user-prompt-submit.js +100 -0
- package/dist/hooks/user-prompt-submit.js.map +1 -1
- package/dist/hud/config.d.ts +3 -28
- package/dist/hud/config.d.ts.map +1 -1
- package/dist/hud/config.js +8 -60
- package/dist/hud/config.js.map +1 -1
- package/dist/hud/index.d.ts.map +1 -1
- package/dist/hud/index.js +0 -1
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/render/budget-bar.d.ts +0 -2
- package/dist/hud/render/budget-bar.d.ts.map +1 -1
- package/dist/hud/render/budget-bar.js +5 -8
- package/dist/hud/render/budget-bar.js.map +1 -1
- package/dist/hud/stdin.d.ts +0 -3
- package/dist/hud/stdin.d.ts.map +1 -1
- package/dist/hud/stdin.js +2 -29
- package/dist/hud/stdin.js.map +1 -1
- package/dist/hud/types.d.ts +0 -2
- package/dist/hud/types.d.ts.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/focus-filter.d.ts +74 -0
- package/dist/mcp/focus-filter.d.ts.map +1 -0
- package/dist/mcp/focus-filter.js +229 -0
- package/dist/mcp/focus-filter.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/server.d.ts +2 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +12 -3
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-tiers.d.ts.map +1 -1
- package/dist/mcp/tool-tiers.js +5 -0
- package/dist/mcp/tool-tiers.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/auto-inject.d.ts +36 -0
- package/dist/mcp/tools/auto-inject.d.ts.map +1 -0
- package/dist/mcp/tools/auto-inject.js +143 -0
- package/dist/mcp/tools/auto-inject.js.map +1 -0
- package/dist/mcp/tools/auto-unload.d.ts +29 -0
- package/dist/mcp/tools/auto-unload.d.ts.map +1 -0
- package/dist/mcp/tools/auto-unload.js +151 -0
- package/dist/mcp/tools/auto-unload.js.map +1 -0
- package/dist/mcp/tools/context-repl.d.ts +48 -0
- package/dist/mcp/tools/context-repl.d.ts.map +1 -0
- package/dist/mcp/tools/context-repl.js +290 -0
- package/dist/mcp/tools/context-repl.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/health.d.ts +29 -0
- package/dist/mcp/tools/health.d.ts.map +1 -0
- package/dist/mcp/tools/health.js +171 -0
- package/dist/mcp/tools/health.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +9 -2
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +37 -2
- 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 +36 -7
- package/dist/mcp-server.js.map +1 -1
- package/dist/rules/index.js +2 -2
- package/dist/utils/exec.js +2 -2
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/gitignore.d.ts.map +1 -1
- package/dist/utils/gitignore.js +5 -0
- package/dist/utils/gitignore.js.map +1 -1
- package/package.json +76 -77
- package/dist/hud/config-tui.d.ts +0 -25
- package/dist/hud/config-tui.d.ts.map +0 -1
- package/dist/hud/config-tui.js +0 -199
- package/dist/hud/config-tui.js.map +0 -1
- package/dist/hud/models.d.ts +0 -58
- package/dist/hud/models.d.ts.map +0 -1
- package/dist/hud/models.js +0 -124
- package/dist/hud/models.js.map +0 -1
- package/dist/hud/token-estimator.d.ts +0 -79
- package/dist/hud/token-estimator.d.ts.map +0 -1
- package/dist/hud/token-estimator.js +0 -126
- package/dist/hud/token-estimator.js.map +0 -1
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Focus-Aware Resource Loader - v13.4.0
|
|
3
|
+
*
|
|
4
|
+
* Determines if files should be deferred based on focus proximity.
|
|
5
|
+
* Implements the "Moderate" aggressiveness strategy:
|
|
6
|
+
* - In-focus files: Default threshold (500 tokens)
|
|
7
|
+
* - Out-of-focus files: Lower threshold (300 tokens)
|
|
8
|
+
*
|
|
9
|
+
* Focus distance is calculated based on path hierarchy:
|
|
10
|
+
* - Same directory: in-focus
|
|
11
|
+
* - Parent/child directory: near-focus
|
|
12
|
+
* - Different top-level: out-of-focus
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const config = getFocusAwareDeferConfig('src/mcp/', 'src/core/auth.ts');
|
|
17
|
+
* if (config.shouldDefer(tokenCount)) {
|
|
18
|
+
* // Defer this file
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
import { normalize } from 'path';
|
|
23
|
+
// =============================================================================
|
|
24
|
+
// Constants
|
|
25
|
+
// =============================================================================
|
|
26
|
+
/**
|
|
27
|
+
* Default thresholds for focus-aware deferring
|
|
28
|
+
* "Moderate" aggressiveness - balances context savings with availability
|
|
29
|
+
*/
|
|
30
|
+
export const DEFAULT_FOCUS_DEFER_THRESHOLDS = {
|
|
31
|
+
inFocus: 500, // Same as current default
|
|
32
|
+
nearFocus: 400, // Slightly more aggressive
|
|
33
|
+
outOfFocus: 300, // Most aggressive (user's choice)
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Get focus-aware thresholds from environment or defaults
|
|
37
|
+
*/
|
|
38
|
+
export function getFocusDeferThresholds() {
|
|
39
|
+
const inFocus = parseInt(process.env.DINO_DEFER_IN_FOCUS || '', 10);
|
|
40
|
+
const nearFocus = parseInt(process.env.DINO_DEFER_NEAR_FOCUS || '', 10);
|
|
41
|
+
const outOfFocus = parseInt(process.env.DINO_DEFER_OUT_FOCUS || '', 10);
|
|
42
|
+
return {
|
|
43
|
+
inFocus: !isNaN(inFocus) && inFocus > 0 ? inFocus : DEFAULT_FOCUS_DEFER_THRESHOLDS.inFocus,
|
|
44
|
+
nearFocus: !isNaN(nearFocus) && nearFocus > 0 ? nearFocus : DEFAULT_FOCUS_DEFER_THRESHOLDS.nearFocus,
|
|
45
|
+
outOfFocus: !isNaN(outOfFocus) && outOfFocus > 0 ? outOfFocus : DEFAULT_FOCUS_DEFER_THRESHOLDS.outOfFocus,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
// =============================================================================
|
|
49
|
+
// Focus Proximity Calculation
|
|
50
|
+
// =============================================================================
|
|
51
|
+
/**
|
|
52
|
+
* Normalize a path for comparison (handles both / and \)
|
|
53
|
+
*/
|
|
54
|
+
function normalizePath(path) {
|
|
55
|
+
return normalize(path).replace(/\\/g, '/').toLowerCase();
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get path segments for comparison
|
|
59
|
+
*/
|
|
60
|
+
function getPathSegments(path) {
|
|
61
|
+
const normalized = normalizePath(path);
|
|
62
|
+
// Remove leading slash and trailing slash, then split
|
|
63
|
+
return normalized.replace(/^\/+|\/+$/g, '').split('/').filter(Boolean);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Calculate focus proximity between focus area and file path
|
|
67
|
+
*
|
|
68
|
+
* Proximity levels:
|
|
69
|
+
* - in-focus: File is within the focus directory or focus directory is parent
|
|
70
|
+
* - near-focus: File shares a common ancestor (1-2 levels up)
|
|
71
|
+
* - out-of-focus: File is in a completely different area
|
|
72
|
+
*
|
|
73
|
+
* @param focusArea - Current focus area (e.g., 'src/mcp/')
|
|
74
|
+
* @param filePath - File path to evaluate (e.g., 'src/core/auth.ts')
|
|
75
|
+
* @returns Focus proximity level
|
|
76
|
+
*/
|
|
77
|
+
export function calculateFocusProximity(focusArea, filePath) {
|
|
78
|
+
// If no focus area, everything is out-of-focus
|
|
79
|
+
if (!focusArea || focusArea.trim() === '') {
|
|
80
|
+
return 'out-of-focus';
|
|
81
|
+
}
|
|
82
|
+
const focusSegments = getPathSegments(focusArea);
|
|
83
|
+
const fileSegments = getPathSegments(filePath);
|
|
84
|
+
// Empty segments means root or invalid path
|
|
85
|
+
if (focusSegments.length === 0 || fileSegments.length === 0) {
|
|
86
|
+
return 'out-of-focus';
|
|
87
|
+
}
|
|
88
|
+
// Check if file is within focus directory
|
|
89
|
+
// e.g., focus='src/mcp/', file='src/mcp/server.ts' -> in-focus
|
|
90
|
+
if (fileSegments.length >= focusSegments.length) {
|
|
91
|
+
let matchCount = 0;
|
|
92
|
+
for (let i = 0; i < focusSegments.length; i++) {
|
|
93
|
+
if (focusSegments[i] === fileSegments[i]) {
|
|
94
|
+
matchCount++;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// All focus segments match -> file is in or under focus
|
|
101
|
+
if (matchCount === focusSegments.length) {
|
|
102
|
+
return 'in-focus';
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Check if focus is within file's directory (parent-child)
|
|
106
|
+
// e.g., focus='src/mcp/tools/', file='src/mcp/' -> in-focus (file is parent)
|
|
107
|
+
if (focusSegments.length > fileSegments.length) {
|
|
108
|
+
let matchCount = 0;
|
|
109
|
+
for (let i = 0; i < fileSegments.length; i++) {
|
|
110
|
+
if (focusSegments[i] === fileSegments[i]) {
|
|
111
|
+
matchCount++;
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// All file segments match -> focus is under file
|
|
118
|
+
if (matchCount === fileSegments.length) {
|
|
119
|
+
return 'in-focus';
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// Check for common ancestor (near-focus)
|
|
123
|
+
// Count matching segments from the start
|
|
124
|
+
let commonSegments = 0;
|
|
125
|
+
const minLength = Math.min(focusSegments.length, fileSegments.length);
|
|
126
|
+
for (let i = 0; i < minLength; i++) {
|
|
127
|
+
if (focusSegments[i] === fileSegments[i]) {
|
|
128
|
+
commonSegments++;
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Share at least 1-2 segments -> near-focus
|
|
135
|
+
// e.g., focus='src/mcp/', file='src/core/' -> common='src/' -> near-focus
|
|
136
|
+
if (commonSegments >= 1) {
|
|
137
|
+
// If they share the first 2+ segments, it's near-focus
|
|
138
|
+
// e.g., src/core/ and src/mcp/ share 'src' -> near-focus
|
|
139
|
+
if (commonSegments >= 2) {
|
|
140
|
+
return 'near-focus';
|
|
141
|
+
}
|
|
142
|
+
// If they only share 1 segment but it's a meaningful one (not 'src'), near-focus
|
|
143
|
+
// Otherwise, if only sharing 'src' or similar, check depth
|
|
144
|
+
const sharedSegment = focusSegments[0];
|
|
145
|
+
if (sharedSegment !== 'src' && sharedSegment !== 'lib' && sharedSegment !== '.') {
|
|
146
|
+
return 'near-focus';
|
|
147
|
+
}
|
|
148
|
+
// They share 'src' or similar - consider near-focus only if depths are similar
|
|
149
|
+
const depthDiff = Math.abs(focusSegments.length - fileSegments.length);
|
|
150
|
+
if (depthDiff <= 1) {
|
|
151
|
+
return 'near-focus';
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// No significant common ancestor -> out-of-focus
|
|
155
|
+
return 'out-of-focus';
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get the token threshold for a given proximity level
|
|
159
|
+
*/
|
|
160
|
+
export function getThresholdForProximity(proximity, thresholds) {
|
|
161
|
+
const t = thresholds || getFocusDeferThresholds();
|
|
162
|
+
switch (proximity) {
|
|
163
|
+
case 'in-focus':
|
|
164
|
+
return t.inFocus;
|
|
165
|
+
case 'near-focus':
|
|
166
|
+
return t.nearFocus;
|
|
167
|
+
case 'out-of-focus':
|
|
168
|
+
return t.outOfFocus;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// =============================================================================
|
|
172
|
+
// Focus-Aware Defer Configuration
|
|
173
|
+
// =============================================================================
|
|
174
|
+
/**
|
|
175
|
+
* Get focus-aware defer configuration for a file
|
|
176
|
+
*
|
|
177
|
+
* @param focusArea - Current focus area (e.g., 'src/mcp/')
|
|
178
|
+
* @param filePath - File path to evaluate
|
|
179
|
+
* @param thresholds - Optional custom thresholds
|
|
180
|
+
* @returns Configuration object with threshold and shouldDefer function
|
|
181
|
+
*/
|
|
182
|
+
export function getFocusAwareDeferConfig(focusArea, filePath, thresholds) {
|
|
183
|
+
const proximity = calculateFocusProximity(focusArea, filePath);
|
|
184
|
+
const threshold = getThresholdForProximity(proximity, thresholds);
|
|
185
|
+
return {
|
|
186
|
+
focusArea,
|
|
187
|
+
filePath,
|
|
188
|
+
proximity,
|
|
189
|
+
threshold,
|
|
190
|
+
shouldDefer: (tokenCount) => tokenCount > threshold,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Check if focus-aware deferring is enabled
|
|
195
|
+
* Default: enabled (true)
|
|
196
|
+
* Opt-out: DINO_FOCUS_DEFER=false
|
|
197
|
+
*/
|
|
198
|
+
export function isFocusAwareDeferEnabled() {
|
|
199
|
+
return process.env.DINO_FOCUS_DEFER !== 'false';
|
|
200
|
+
}
|
|
201
|
+
// =============================================================================
|
|
202
|
+
// Batch Processing
|
|
203
|
+
// =============================================================================
|
|
204
|
+
/**
|
|
205
|
+
* Classify multiple files by focus proximity
|
|
206
|
+
*
|
|
207
|
+
* @param focusArea - Current focus area
|
|
208
|
+
* @param files - Array of file paths
|
|
209
|
+
* @returns Files grouped by proximity
|
|
210
|
+
*/
|
|
211
|
+
export function classifyFilesByFocus(focusArea, files) {
|
|
212
|
+
const result = {
|
|
213
|
+
inFocus: [],
|
|
214
|
+
nearFocus: [],
|
|
215
|
+
outOfFocus: [],
|
|
216
|
+
};
|
|
217
|
+
for (const file of files) {
|
|
218
|
+
const proximity = calculateFocusProximity(focusArea, file);
|
|
219
|
+
result[proximity === 'in-focus' ? 'inFocus' :
|
|
220
|
+
proximity === 'near-focus' ? 'nearFocus' : 'outOfFocus'].push(file);
|
|
221
|
+
}
|
|
222
|
+
return result;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get defer recommendations for a batch of files
|
|
226
|
+
*
|
|
227
|
+
* @param focusArea - Current focus area
|
|
228
|
+
* @param files - Array of file paths with token estimates
|
|
229
|
+
* @returns Files that should be deferred
|
|
230
|
+
*/
|
|
231
|
+
export function getDeferRecommendations(focusArea, files) {
|
|
232
|
+
const shouldDefer = [];
|
|
233
|
+
const shouldLoad = [];
|
|
234
|
+
let tokensSaved = 0;
|
|
235
|
+
let tokensLoaded = 0;
|
|
236
|
+
for (const file of files) {
|
|
237
|
+
const config = getFocusAwareDeferConfig(focusArea, file.path);
|
|
238
|
+
if (config.shouldDefer(file.tokenEstimate)) {
|
|
239
|
+
shouldDefer.push({
|
|
240
|
+
path: file.path,
|
|
241
|
+
tokenEstimate: file.tokenEstimate,
|
|
242
|
+
proximity: config.proximity,
|
|
243
|
+
threshold: config.threshold,
|
|
244
|
+
});
|
|
245
|
+
tokensSaved += file.tokenEstimate;
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
shouldLoad.push({
|
|
249
|
+
path: file.path,
|
|
250
|
+
tokenEstimate: file.tokenEstimate,
|
|
251
|
+
proximity: config.proximity,
|
|
252
|
+
});
|
|
253
|
+
tokensLoaded += file.tokenEstimate;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return {
|
|
257
|
+
shouldDefer,
|
|
258
|
+
shouldLoad,
|
|
259
|
+
stats: {
|
|
260
|
+
totalFiles: files.length,
|
|
261
|
+
deferredCount: shouldDefer.length,
|
|
262
|
+
loadedCount: shouldLoad.length,
|
|
263
|
+
tokensSaved,
|
|
264
|
+
tokensLoaded,
|
|
265
|
+
},
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
// =============================================================================
|
|
269
|
+
// Formatting
|
|
270
|
+
// =============================================================================
|
|
271
|
+
/**
|
|
272
|
+
* Format focus-aware defer stats for display
|
|
273
|
+
*/
|
|
274
|
+
export function formatFocusDeferStats(stats, focusArea) {
|
|
275
|
+
const lines = [
|
|
276
|
+
'## Focus-Aware Deferring',
|
|
277
|
+
'',
|
|
278
|
+
focusArea ? `**Focus:** ${focusArea}` : '**Focus:** none',
|
|
279
|
+
`**Total Files:** ${stats.totalFiles}`,
|
|
280
|
+
`**Deferred:** ${stats.deferredCount} (~${stats.tokensSaved} tokens saved)`,
|
|
281
|
+
`**Loaded:** ${stats.loadedCount} (~${stats.tokensLoaded} tokens)`,
|
|
282
|
+
];
|
|
283
|
+
if (stats.totalFiles > 0) {
|
|
284
|
+
const deferPercent = Math.round((stats.deferredCount / stats.totalFiles) * 100);
|
|
285
|
+
lines.push(`**Defer Rate:** ${deferPercent}%`);
|
|
286
|
+
}
|
|
287
|
+
return lines.join('\n');
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Format threshold information for display
|
|
291
|
+
*/
|
|
292
|
+
export function formatThresholdInfo(thresholds) {
|
|
293
|
+
const t = thresholds || getFocusDeferThresholds();
|
|
294
|
+
const lines = [
|
|
295
|
+
'## Focus-Aware Thresholds',
|
|
296
|
+
'',
|
|
297
|
+
`- **In-focus:** ${t.inFocus} tokens`,
|
|
298
|
+
`- **Near-focus:** ${t.nearFocus} tokens`,
|
|
299
|
+
`- **Out-of-focus:** ${t.outOfFocus} tokens`,
|
|
300
|
+
'',
|
|
301
|
+
'Files exceeding their threshold are deferred for lazy loading.',
|
|
302
|
+
];
|
|
303
|
+
return lines.join('\n');
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=focus-resource-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focus-resource-loader.js","sourceRoot":"","sources":["../../../src/core/context/focus-resource-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Context Management Module -
|
|
2
|
+
* Context Management Module - v14.0.0
|
|
3
3
|
*
|
|
4
4
|
* Tools for managing context window efficiently.
|
|
5
5
|
* Includes tool result protection, clearing recommendations,
|
|
6
6
|
* just-in-time context retrieval, automated clearing,
|
|
7
7
|
* summarization before clearing (v9.6.0), lazy context
|
|
8
|
-
* loading (v10.1.0), auto-lazy context (v12.5.0),
|
|
9
|
-
* auto context engineering (v13.3.0)
|
|
8
|
+
* loading (v10.1.0), auto-lazy context (v12.5.0),
|
|
9
|
+
* auto context engineering (v13.3.0), and
|
|
10
|
+
* optimized budget thresholds (v14.0.0).
|
|
10
11
|
*/
|
|
11
12
|
export { type ProtectionLevel, type ToolCategory, type ProtectionResult, TOOL_PROTECTION_RULES, DEFAULT_RECENCY_THRESHOLD, shouldProtectToolResult, getProtectionSummary, getAlwaysProtectedTools, formatProtectionRules, estimateClearingSavings, } from './tool-protection.js';
|
|
12
13
|
export { type ContextDemandType, type DemandSignal, type JITLoadResult, detectDemandSignals, extractKeywords, loadContextJIT, formatAsReminder, calculateRelevanceScore, shouldInjectContext, } from './demand-detector.js';
|
|
@@ -16,11 +17,15 @@ export { type ToolSummary, type SummarizationOptions, type ToolSummarizer, summa
|
|
|
16
17
|
export { type PositionPreference, type ContextSection, type ContextCategory, type OptimizedContext, type PositionedSection, type OptimizationStats, CATEGORY_POSITION_DEFAULTS, CATEGORY_IMPORTANCE_DEFAULTS, createSection, calculatePositionScore, scoreSectionsForEdges, optimizePositions, assembleOptimizedContext, formatOptimizationStats, recitationToSections, quickOptimize, isWellPositioned, getPositioningQuality, } from './positional-optimizer.js';
|
|
17
18
|
export { type ContentBlockType, type DensityMetrics, type RedundancyFinding, type CompressionOpportunity, type ContextAuditResult, auditContext, formatAuditResult, } from './context-auditor.js';
|
|
18
19
|
export { type ContextSource, type SourceUsage, type ContextUtilization, type ContextSources, type TrackerOptions, trackContextUtilization, updateSessionWithUtilization, formatUtilizationCli, getUtilizationSummary, needsAttention, isCritical, } from './token-tracker.js';
|
|
19
|
-
export { type DeferredStatus, type DeferredResource, type LazyContextState, type LazyLoadingStats, type ExpandOptions, type ExpandResult, type AutoDeferConfig, DEFAULT_AUTO_DEFER_THRESHOLD, getAutoDeferThreshold, createLazyContext, deferFile, deferFiles, deferContent, shouldAutoDefer, autoDeferFile, autoDeferFiles, configureAutoDefer, getAutoDeferStats, expandRefs, getResource, getDeferredResources, getLoadedResources, getStats as getLazyStats, formatDeferredPlaceholder, formatAllDeferredPlaceholders, formatExpandResult, formatStats as formatLazyStats, serializeState as serializeLazyState, deserializeState as deserializeLazyState, } from './lazy-loader.js';
|
|
20
|
+
export { type DeferredStatus, type DeferredResource, type LazyContextState, type LazyLoadingStats, type ExpandOptions, type ExpandResult, type AutoDeferConfig, DEFAULT_AUTO_DEFER_THRESHOLD, getAutoDeferThreshold, createLazyContext, deferFile, deferFiles, deferContent, shouldAutoDefer, autoDeferFile, autoDeferFiles, configureAutoDefer, getAutoDeferStats, updateDeferFocus, expandRefs, getResource, getDeferredResources, getLoadedResources, getStats as getLazyStats, formatDeferredPlaceholder, formatAllDeferredPlaceholders, formatExpandResult, formatStats as formatLazyStats, serializeState as serializeLazyState, deserializeState as deserializeLazyState, } from './lazy-loader.js';
|
|
21
|
+
export { type FocusProximity, type FocusAwareDeferConfig, type FocusDeferThresholds, DEFAULT_FOCUS_DEFER_THRESHOLDS, getFocusDeferThresholds, calculateFocusProximity, getThresholdForProximity, getFocusAwareDeferConfig, isFocusAwareDeferEnabled, classifyFilesByFocus, getDeferRecommendations, formatFocusDeferStats, formatThresholdInfo, } from './focus-resource-loader.js';
|
|
20
22
|
export { type AccessPattern, type AccessPatternsState, type AccessPatternsCache, ACCESS_PATTERNS_VERSION, ACCESS_PATTERNS_FILE, PREFETCH_PROBABILITY_THRESHOLD, createAccessPatternsState, recordAccess as recordFileAccess, getAccessProbability, applyDecay as applyAccessDecay, getLikelyAccesses, getTopAccessedFiles, isLikelyToBeAccessed, serializeAccessPatterns, deserializeAccessPatterns, loadAccessPatterns, saveAccessPatterns, formatAccessPatterns, formatAccessStats, } from './access-tracker.js';
|
|
21
23
|
export { type PrefetchCandidate, type PrefetchOptions, DEFAULT_MAX_PREFETCH, DEFAULT_MIN_PROBABILITY, getPrefetchCandidates, getPrefetchCandidatesForFiles, loadGraphForPrefetch, ensureGraphForPrefetch, formatPrefetchCandidates, getPrefetchStats, } from './prefetch-optimizer.js';
|
|
22
24
|
export { type ColdResource, calculateColdnessScore, getColdResources, isFileCold, getRecentlyAccessedFiles, formatColdResources, } from './access-tracker.js';
|
|
23
25
|
export { type UnloadResult, type AutoUnloadResult, type AutoUnloadOptions, UNLOAD_THRESHOLD_START, UNLOAD_THRESHOLD_AGGRESSIVE, shouldAutoUnload, calculateBudgetPressure, getUnloadAggressiveness, selectResourcesToUnload, executeAutoUnload, formatAutoUnloadResult, formatUnloadDecision, } from './auto-unload-engine.js';
|
|
24
26
|
export { type AutoInjectionResult, type AutoInjectionOptions, shouldAutoInject, executeAutoInjection, hasDemandSignals, getDemandSummary, formatAutoInjectionResult, formatDemandSignals, } from './auto-injection-engine.js';
|
|
25
|
-
export { type HealthStatus, type ContextHealthReport, type HealthCheckOptions, calculateStalenessScore, calculateRedundancyScore, calculateFragmentationScore, calculateAgeDistribution, calculateRotIndex, getHealthStatus, generateRecommendations, executeHealthCheck, formatHealthReport, formatHealthStatus, } from './context-health.js';
|
|
27
|
+
export { type HealthStatus, type ContextHealthReport, type HealthCheckOptions, calculateStalenessScore, calculateRedundancyScore, calculateFragmentationScore, calculateAgeDistribution, calculateRotIndex, getHealthStatus, generateRecommendations, executeHealthCheck, calculateFocusFragmentationScore, calculateFocusDistribution, formatHealthReport, formatHealthStatus, } from './context-health.js';
|
|
28
|
+
export { type ThresholdConfig, type ThresholdLevel, type ThresholdResult, OPTIMIZED_BUDGET_THRESHOLDS, LEGACY_BUDGET_THRESHOLDS, DEFAULT_SAFETY_MARGIN, DEFAULT_THRESHOLD_CONFIG, getThresholdLevel, calculateThresholdResult, loadThresholdConfig, isLegacyThresholds, getThresholdRecommendations, formatThresholdResult, calculateSafeCapacity, getEffectiveLimit, } from './budget-thresholds.js';
|
|
29
|
+
export { type PersistedOutput, type OutputPersistenceResult, type PersistenceOptions, OUTPUT_SIZE_THRESHOLD, OUTPUT_DIR, OUTPUT_RETENTION_DAYS, shouldPersist, persistOutput, readPersistedOutput, getOutputMetadata, listPersistedOutputs, cleanupExpiredOutputs, getPersistedOutputsStats, generateContentHash, generateOutputFilename, createFileReference, parseFileReference, formatPersistenceResult, } from './output-persistence.js';
|
|
30
|
+
export { type ExtractedDecision, type ExtractedBlocker, type ExtractedProgress, type StructuredCompaction, type CompactionEngineResult, type CompactionEngineOptions, AUTO_COMPACT_THRESHOLD, COMPACT_OUTPUT_DIR, AUTO_COMPACT_FEATURE_FLAG, shouldAutoCompact, getUsagePercent, generateSessionId, extractDecisions, extractBlockers, extractProgress, createStructuredCompaction, persistStructuredCompaction, listCompactions, runAutoCompaction, formatCompactionEngineResult, getCompactionEngineStats, } from './compaction-engine.js';
|
|
26
31
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/context/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/context/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Context Management Module -
|
|
2
|
+
* Context Management Module - v14.0.0
|
|
3
3
|
*
|
|
4
4
|
* Tools for managing context window efficiently.
|
|
5
5
|
* Includes tool result protection, clearing recommendations,
|
|
6
6
|
* just-in-time context retrieval, automated clearing,
|
|
7
7
|
* summarization before clearing (v9.6.0), lazy context
|
|
8
|
-
* loading (v10.1.0), auto-lazy context (v12.5.0),
|
|
9
|
-
* auto context engineering (v13.3.0)
|
|
8
|
+
* loading (v10.1.0), auto-lazy context (v12.5.0),
|
|
9
|
+
* auto context engineering (v13.3.0), and
|
|
10
|
+
* optimized budget thresholds (v14.0.0).
|
|
10
11
|
*/
|
|
11
12
|
export {
|
|
12
13
|
// Constants
|
|
@@ -81,7 +82,7 @@ trackContextUtilization, updateSessionWithUtilization,
|
|
|
81
82
|
formatUtilizationCli, getUtilizationSummary,
|
|
82
83
|
// Checks
|
|
83
84
|
needsAttention, isCritical, } from './token-tracker.js';
|
|
84
|
-
// Lazy context loading (v10.1.0, v12.5.0 auto-defer)
|
|
85
|
+
// Lazy context loading (v10.1.0, v12.5.0 auto-defer, v13.4.0 focus-aware)
|
|
85
86
|
export {
|
|
86
87
|
// Constants
|
|
87
88
|
DEFAULT_AUTO_DEFER_THRESHOLD, getAutoDeferThreshold,
|
|
@@ -89,12 +90,26 @@ DEFAULT_AUTO_DEFER_THRESHOLD, getAutoDeferThreshold,
|
|
|
89
90
|
createLazyContext, deferFile, deferFiles, deferContent,
|
|
90
91
|
// Auto-defer (v12.5.0)
|
|
91
92
|
shouldAutoDefer, autoDeferFile, autoDeferFiles, configureAutoDefer, getAutoDeferStats,
|
|
93
|
+
// v13.4.0: Focus-aware deferring
|
|
94
|
+
updateDeferFocus,
|
|
92
95
|
// Expansion
|
|
93
96
|
expandRefs, getResource, getDeferredResources, getLoadedResources,
|
|
94
97
|
// Stats & Formatting
|
|
95
98
|
getStats as getLazyStats, formatDeferredPlaceholder, formatAllDeferredPlaceholders, formatExpandResult, formatStats as formatLazyStats,
|
|
96
99
|
// Serialization
|
|
97
100
|
serializeState as serializeLazyState, deserializeState as deserializeLazyState, } from './lazy-loader.js';
|
|
101
|
+
// Focus-aware resource loader (v13.4.0)
|
|
102
|
+
export {
|
|
103
|
+
// Constants
|
|
104
|
+
DEFAULT_FOCUS_DEFER_THRESHOLDS, getFocusDeferThresholds,
|
|
105
|
+
// Proximity calculation
|
|
106
|
+
calculateFocusProximity, getThresholdForProximity,
|
|
107
|
+
// Configuration
|
|
108
|
+
getFocusAwareDeferConfig, isFocusAwareDeferEnabled,
|
|
109
|
+
// Batch processing
|
|
110
|
+
classifyFilesByFocus, getDeferRecommendations,
|
|
111
|
+
// Formatting
|
|
112
|
+
formatFocusDeferStats, formatThresholdInfo, } from './focus-resource-loader.js';
|
|
98
113
|
// Access tracking (v12.5.0)
|
|
99
114
|
export {
|
|
100
115
|
// Constants
|
|
@@ -137,10 +152,30 @@ export {
|
|
|
137
152
|
shouldAutoInject, executeAutoInjection, hasDemandSignals, getDemandSummary,
|
|
138
153
|
// Formatting
|
|
139
154
|
formatAutoInjectionResult, formatDemandSignals, } from './auto-injection-engine.js';
|
|
140
|
-
// Context health monitor (v13.3.0)
|
|
155
|
+
// Context health monitor (v13.3.0, v13.4.0 focus-aware)
|
|
141
156
|
export {
|
|
142
157
|
// Core logic
|
|
143
158
|
calculateStalenessScore, calculateRedundancyScore, calculateFragmentationScore, calculateAgeDistribution, calculateRotIndex, getHealthStatus, generateRecommendations, executeHealthCheck,
|
|
159
|
+
// v13.4.0: Focus-aware health metrics
|
|
160
|
+
calculateFocusFragmentationScore, calculateFocusDistribution,
|
|
144
161
|
// Formatting
|
|
145
162
|
formatHealthReport, formatHealthStatus, } from './context-health.js';
|
|
163
|
+
// Budget thresholds (v14.0.0)
|
|
164
|
+
export {
|
|
165
|
+
// Constants
|
|
166
|
+
OPTIMIZED_BUDGET_THRESHOLDS, LEGACY_BUDGET_THRESHOLDS, DEFAULT_SAFETY_MARGIN, DEFAULT_THRESHOLD_CONFIG,
|
|
167
|
+
// Functions
|
|
168
|
+
getThresholdLevel, calculateThresholdResult, loadThresholdConfig, isLegacyThresholds, getThresholdRecommendations, formatThresholdResult, calculateSafeCapacity, getEffectiveLimit, } from './budget-thresholds.js';
|
|
169
|
+
// Output persistence (v14.0.0)
|
|
170
|
+
export {
|
|
171
|
+
// Constants
|
|
172
|
+
OUTPUT_SIZE_THRESHOLD, OUTPUT_DIR, OUTPUT_RETENTION_DAYS,
|
|
173
|
+
// Functions
|
|
174
|
+
shouldPersist, persistOutput, readPersistedOutput, getOutputMetadata, listPersistedOutputs, cleanupExpiredOutputs, getPersistedOutputsStats, generateContentHash, generateOutputFilename, createFileReference, parseFileReference, formatPersistenceResult, } from './output-persistence.js';
|
|
175
|
+
// Auto compaction engine (v14.0.0)
|
|
176
|
+
export {
|
|
177
|
+
// Constants
|
|
178
|
+
AUTO_COMPACT_THRESHOLD, COMPACT_OUTPUT_DIR, AUTO_COMPACT_FEATURE_FLAG,
|
|
179
|
+
// Functions
|
|
180
|
+
shouldAutoCompact, getUsagePercent, generateSessionId, extractDecisions, extractBlockers, extractProgress, createStructuredCompaction, persistStructuredCompaction, listCompactions, runAutoCompaction, formatCompactionEngineResult, getCompactionEngineStats, } from './compaction-engine.js';
|
|
146
181
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/context/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/context/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,7 +42,7 @@ export interface DeferredResource {
|
|
|
42
42
|
export interface AutoDeferConfig {
|
|
43
43
|
/** Whether auto-defer is enabled */
|
|
44
44
|
enabled: boolean;
|
|
45
|
-
/** Token threshold for auto-deferring */
|
|
45
|
+
/** Token threshold for auto-deferring (used when no focus) */
|
|
46
46
|
threshold: number;
|
|
47
47
|
/** Files that have been auto-scanned */
|
|
48
48
|
scannedFiles: Set<string>;
|
|
@@ -50,6 +50,25 @@ export interface AutoDeferConfig {
|
|
|
50
50
|
autoDeferredCount: number;
|
|
51
51
|
/** Tokens saved by auto-deferring */
|
|
52
52
|
autoDeferredTokens: number;
|
|
53
|
+
/** v13.4.0: Focus-aware deferring enabled */
|
|
54
|
+
focusAwareEnabled: boolean;
|
|
55
|
+
/** v13.4.0: Current focus area for focus-aware deferring */
|
|
56
|
+
currentFocus: string;
|
|
57
|
+
/** v13.4.0: Counts by proximity */
|
|
58
|
+
proximityStats: {
|
|
59
|
+
inFocus: {
|
|
60
|
+
count: number;
|
|
61
|
+
tokens: number;
|
|
62
|
+
};
|
|
63
|
+
nearFocus: {
|
|
64
|
+
count: number;
|
|
65
|
+
tokens: number;
|
|
66
|
+
};
|
|
67
|
+
outOfFocus: {
|
|
68
|
+
count: number;
|
|
69
|
+
tokens: number;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
53
72
|
}
|
|
54
73
|
/**
|
|
55
74
|
* Lazy context state
|
|
@@ -136,6 +155,7 @@ export declare function createLazyContext(autoDeferEnabled?: boolean): LazyConte
|
|
|
136
155
|
export declare function shouldAutoDefer(tokenCount: number, threshold?: number): boolean;
|
|
137
156
|
/**
|
|
138
157
|
* Auto-defer a file if it exceeds the token threshold
|
|
158
|
+
* v13.4.0: Uses focus-aware thresholds when enabled
|
|
139
159
|
*
|
|
140
160
|
* @param state - Lazy context state
|
|
141
161
|
* @param path - File path
|
|
@@ -162,9 +182,16 @@ export declare function autoDeferFiles(state: LazyContextState, files: Array<{
|
|
|
162
182
|
export declare function configureAutoDefer(state: LazyContextState, options: {
|
|
163
183
|
enabled?: boolean;
|
|
164
184
|
threshold?: number;
|
|
185
|
+
focusAwareEnabled?: boolean;
|
|
165
186
|
}): void;
|
|
187
|
+
/**
|
|
188
|
+
* v13.4.0: Update the current focus for focus-aware deferring
|
|
189
|
+
* Should be called when focus changes (e.g., on edit hook)
|
|
190
|
+
*/
|
|
191
|
+
export declare function updateDeferFocus(state: LazyContextState, focusArea: string): void;
|
|
166
192
|
/**
|
|
167
193
|
* Get auto-defer statistics
|
|
194
|
+
* v13.4.0: Includes focus-aware stats
|
|
168
195
|
*/
|
|
169
196
|
export declare function getAutoDeferStats(state: LazyContextState): {
|
|
170
197
|
enabled: boolean;
|
|
@@ -172,6 +199,22 @@ export declare function getAutoDeferStats(state: LazyContextState): {
|
|
|
172
199
|
scannedCount: number;
|
|
173
200
|
deferredCount: number;
|
|
174
201
|
tokensSaved: number;
|
|
202
|
+
focusAwareEnabled: boolean;
|
|
203
|
+
currentFocus: string;
|
|
204
|
+
proximityStats: {
|
|
205
|
+
inFocus: {
|
|
206
|
+
count: number;
|
|
207
|
+
tokens: number;
|
|
208
|
+
};
|
|
209
|
+
nearFocus: {
|
|
210
|
+
count: number;
|
|
211
|
+
tokens: number;
|
|
212
|
+
};
|
|
213
|
+
outOfFocus: {
|
|
214
|
+
count: number;
|
|
215
|
+
tokens: number;
|
|
216
|
+
};
|
|
217
|
+
};
|
|
175
218
|
};
|
|
176
219
|
/**
|
|
177
220
|
* Defer a file for lazy loading
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy-loader.d.ts","sourceRoot":"","sources":["../../../src/core/context/lazy-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,EASnB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"lazy-loader.d.ts","sourceRoot":"","sources":["../../../src/core/context/lazy-loader.ts"],"names":[],"mappings":"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"}
|