@git.zone/tsdoc 1.5.2 → 1.6.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/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/context/config-manager.d.ts +22 -1
- package/dist_ts/context/config-manager.js +113 -4
- package/dist_ts/context/context-analyzer.d.ts +73 -0
- package/dist_ts/context/context-analyzer.js +311 -0
- package/dist_ts/context/context-cache.d.ts +73 -0
- package/dist_ts/context/context-cache.js +238 -0
- package/dist_ts/context/context-trimmer.d.ts +8 -0
- package/dist_ts/context/context-trimmer.js +60 -1
- package/dist_ts/context/enhanced-context.d.ts +12 -14
- package/dist_ts/context/enhanced-context.js +130 -127
- package/dist_ts/context/index.d.ts +6 -3
- package/dist_ts/context/index.js +5 -2
- package/dist_ts/context/lazy-file-loader.d.ts +60 -0
- package/dist_ts/context/lazy-file-loader.js +164 -0
- package/dist_ts/context/types.d.ts +142 -0
- package/package.json +1 -1
- package/readme.md +348 -53
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/context/config-manager.ts +146 -15
- package/ts/context/context-analyzer.ts +391 -0
- package/ts/context/context-cache.ts +285 -0
- package/ts/context/context-trimmer.ts +64 -0
- package/ts/context/enhanced-context.ts +169 -180
- package/ts/context/index.ts +31 -5
- package/ts/context/lazy-file-loader.ts +191 -0
- package/ts/context/types.ts +152 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { ICacheEntry, ICacheConfig } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* ContextCache provides persistent caching of file contents and token counts
|
|
4
|
+
* with automatic invalidation on file changes
|
|
5
|
+
*/
|
|
6
|
+
export declare class ContextCache {
|
|
7
|
+
private cacheDir;
|
|
8
|
+
private cache;
|
|
9
|
+
private config;
|
|
10
|
+
private cacheIndexPath;
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new ContextCache
|
|
13
|
+
* @param projectRoot - Root directory of the project
|
|
14
|
+
* @param config - Cache configuration
|
|
15
|
+
*/
|
|
16
|
+
constructor(projectRoot: string, config?: Partial<ICacheConfig>);
|
|
17
|
+
/**
|
|
18
|
+
* Initializes the cache by loading from disk
|
|
19
|
+
*/
|
|
20
|
+
init(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Gets a cached entry if it's still valid
|
|
23
|
+
* @param filePath - Absolute path to the file
|
|
24
|
+
* @returns Cache entry if valid, null otherwise
|
|
25
|
+
*/
|
|
26
|
+
get(filePath: string): Promise<ICacheEntry | null>;
|
|
27
|
+
/**
|
|
28
|
+
* Stores a cache entry
|
|
29
|
+
* @param entry - Cache entry to store
|
|
30
|
+
*/
|
|
31
|
+
set(entry: ICacheEntry): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Stores multiple cache entries
|
|
34
|
+
* @param entries - Array of cache entries
|
|
35
|
+
*/
|
|
36
|
+
setMany(entries: ICacheEntry[]): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Checks if a file is cached and valid
|
|
39
|
+
* @param filePath - Absolute path to the file
|
|
40
|
+
* @returns True if cached and valid
|
|
41
|
+
*/
|
|
42
|
+
has(filePath: string): Promise<boolean>;
|
|
43
|
+
/**
|
|
44
|
+
* Gets cache statistics
|
|
45
|
+
*/
|
|
46
|
+
getStats(): {
|
|
47
|
+
entries: number;
|
|
48
|
+
totalSize: number;
|
|
49
|
+
oldestEntry: number | null;
|
|
50
|
+
newestEntry: number | null;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Clears all cache entries
|
|
54
|
+
*/
|
|
55
|
+
clear(): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Clears specific cache entries
|
|
58
|
+
* @param filePaths - Array of file paths to clear
|
|
59
|
+
*/
|
|
60
|
+
clearPaths(filePaths: string[]): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Cleans up expired and invalid cache entries
|
|
63
|
+
*/
|
|
64
|
+
private cleanup;
|
|
65
|
+
/**
|
|
66
|
+
* Enforces maximum cache size by evicting oldest entries
|
|
67
|
+
*/
|
|
68
|
+
private enforceMaxSize;
|
|
69
|
+
/**
|
|
70
|
+
* Persists cache index to disk
|
|
71
|
+
*/
|
|
72
|
+
private persist;
|
|
73
|
+
}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
/**
|
|
4
|
+
* ContextCache provides persistent caching of file contents and token counts
|
|
5
|
+
* with automatic invalidation on file changes
|
|
6
|
+
*/
|
|
7
|
+
export class ContextCache {
|
|
8
|
+
/**
|
|
9
|
+
* Creates a new ContextCache
|
|
10
|
+
* @param projectRoot - Root directory of the project
|
|
11
|
+
* @param config - Cache configuration
|
|
12
|
+
*/
|
|
13
|
+
constructor(projectRoot, config = {}) {
|
|
14
|
+
this.cache = new Map();
|
|
15
|
+
this.config = {
|
|
16
|
+
enabled: config.enabled ?? true,
|
|
17
|
+
ttl: config.ttl ?? 3600, // 1 hour default
|
|
18
|
+
maxSize: config.maxSize ?? 100, // 100MB default
|
|
19
|
+
directory: config.directory ?? plugins.path.join(projectRoot, '.nogit', 'context-cache'),
|
|
20
|
+
};
|
|
21
|
+
this.cacheDir = this.config.directory;
|
|
22
|
+
this.cacheIndexPath = plugins.path.join(this.cacheDir, 'index.json');
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Initializes the cache by loading from disk
|
|
26
|
+
*/
|
|
27
|
+
async init() {
|
|
28
|
+
if (!this.config.enabled) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// Ensure cache directory exists
|
|
32
|
+
await plugins.smartfile.fs.ensureDir(this.cacheDir);
|
|
33
|
+
// Load cache index if it exists
|
|
34
|
+
try {
|
|
35
|
+
const indexExists = await plugins.smartfile.fs.fileExists(this.cacheIndexPath);
|
|
36
|
+
if (indexExists) {
|
|
37
|
+
const indexContent = await plugins.smartfile.fs.toStringSync(this.cacheIndexPath);
|
|
38
|
+
const indexData = JSON.parse(indexContent);
|
|
39
|
+
if (Array.isArray(indexData)) {
|
|
40
|
+
for (const entry of indexData) {
|
|
41
|
+
this.cache.set(entry.path, entry);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.warn('Failed to load cache index:', error.message);
|
|
48
|
+
// Start with empty cache if loading fails
|
|
49
|
+
}
|
|
50
|
+
// Clean up expired and invalid entries
|
|
51
|
+
await this.cleanup();
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Gets a cached entry if it's still valid
|
|
55
|
+
* @param filePath - Absolute path to the file
|
|
56
|
+
* @returns Cache entry if valid, null otherwise
|
|
57
|
+
*/
|
|
58
|
+
async get(filePath) {
|
|
59
|
+
if (!this.config.enabled) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
const entry = this.cache.get(filePath);
|
|
63
|
+
if (!entry) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
// Check if entry is expired
|
|
67
|
+
const now = Date.now();
|
|
68
|
+
if (now - entry.cachedAt > this.config.ttl * 1000) {
|
|
69
|
+
this.cache.delete(filePath);
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
// Check if file has been modified
|
|
73
|
+
try {
|
|
74
|
+
const stats = await fs.promises.stat(filePath);
|
|
75
|
+
const currentMtime = Math.floor(stats.mtimeMs);
|
|
76
|
+
if (currentMtime !== entry.mtime) {
|
|
77
|
+
// File has changed, invalidate cache
|
|
78
|
+
this.cache.delete(filePath);
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
return entry;
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
// File doesn't exist anymore
|
|
85
|
+
this.cache.delete(filePath);
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Stores a cache entry
|
|
91
|
+
* @param entry - Cache entry to store
|
|
92
|
+
*/
|
|
93
|
+
async set(entry) {
|
|
94
|
+
if (!this.config.enabled) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
this.cache.set(entry.path, entry);
|
|
98
|
+
// Check cache size and evict old entries if needed
|
|
99
|
+
await this.enforceMaxSize();
|
|
100
|
+
// Persist to disk (async, don't await)
|
|
101
|
+
this.persist().catch((error) => {
|
|
102
|
+
console.warn('Failed to persist cache:', error.message);
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Stores multiple cache entries
|
|
107
|
+
* @param entries - Array of cache entries
|
|
108
|
+
*/
|
|
109
|
+
async setMany(entries) {
|
|
110
|
+
if (!this.config.enabled) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
for (const entry of entries) {
|
|
114
|
+
this.cache.set(entry.path, entry);
|
|
115
|
+
}
|
|
116
|
+
await this.enforceMaxSize();
|
|
117
|
+
await this.persist();
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Checks if a file is cached and valid
|
|
121
|
+
* @param filePath - Absolute path to the file
|
|
122
|
+
* @returns True if cached and valid
|
|
123
|
+
*/
|
|
124
|
+
async has(filePath) {
|
|
125
|
+
const entry = await this.get(filePath);
|
|
126
|
+
return entry !== null;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Gets cache statistics
|
|
130
|
+
*/
|
|
131
|
+
getStats() {
|
|
132
|
+
let totalSize = 0;
|
|
133
|
+
let oldestEntry = null;
|
|
134
|
+
let newestEntry = null;
|
|
135
|
+
for (const entry of this.cache.values()) {
|
|
136
|
+
totalSize += entry.contents.length;
|
|
137
|
+
if (oldestEntry === null || entry.cachedAt < oldestEntry) {
|
|
138
|
+
oldestEntry = entry.cachedAt;
|
|
139
|
+
}
|
|
140
|
+
if (newestEntry === null || entry.cachedAt > newestEntry) {
|
|
141
|
+
newestEntry = entry.cachedAt;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
entries: this.cache.size,
|
|
146
|
+
totalSize,
|
|
147
|
+
oldestEntry,
|
|
148
|
+
newestEntry,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Clears all cache entries
|
|
153
|
+
*/
|
|
154
|
+
async clear() {
|
|
155
|
+
this.cache.clear();
|
|
156
|
+
await this.persist();
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Clears specific cache entries
|
|
160
|
+
* @param filePaths - Array of file paths to clear
|
|
161
|
+
*/
|
|
162
|
+
async clearPaths(filePaths) {
|
|
163
|
+
for (const path of filePaths) {
|
|
164
|
+
this.cache.delete(path);
|
|
165
|
+
}
|
|
166
|
+
await this.persist();
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Cleans up expired and invalid cache entries
|
|
170
|
+
*/
|
|
171
|
+
async cleanup() {
|
|
172
|
+
const now = Date.now();
|
|
173
|
+
const toDelete = [];
|
|
174
|
+
for (const [path, entry] of this.cache.entries()) {
|
|
175
|
+
// Check expiration
|
|
176
|
+
if (now - entry.cachedAt > this.config.ttl * 1000) {
|
|
177
|
+
toDelete.push(path);
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
// Check if file still exists and hasn't changed
|
|
181
|
+
try {
|
|
182
|
+
const stats = await fs.promises.stat(path);
|
|
183
|
+
const currentMtime = Math.floor(stats.mtimeMs);
|
|
184
|
+
if (currentMtime !== entry.mtime) {
|
|
185
|
+
toDelete.push(path);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
// File doesn't exist
|
|
190
|
+
toDelete.push(path);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
for (const path of toDelete) {
|
|
194
|
+
this.cache.delete(path);
|
|
195
|
+
}
|
|
196
|
+
if (toDelete.length > 0) {
|
|
197
|
+
await this.persist();
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Enforces maximum cache size by evicting oldest entries
|
|
202
|
+
*/
|
|
203
|
+
async enforceMaxSize() {
|
|
204
|
+
const stats = this.getStats();
|
|
205
|
+
const maxSizeBytes = this.config.maxSize * 1024 * 1024; // Convert MB to bytes
|
|
206
|
+
if (stats.totalSize <= maxSizeBytes) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
// Sort entries by age (oldest first)
|
|
210
|
+
const entries = Array.from(this.cache.entries()).sort((a, b) => a[1].cachedAt - b[1].cachedAt);
|
|
211
|
+
// Remove oldest entries until we're under the limit
|
|
212
|
+
let currentSize = stats.totalSize;
|
|
213
|
+
for (const [path, entry] of entries) {
|
|
214
|
+
if (currentSize <= maxSizeBytes) {
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
currentSize -= entry.contents.length;
|
|
218
|
+
this.cache.delete(path);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Persists cache index to disk
|
|
223
|
+
*/
|
|
224
|
+
async persist() {
|
|
225
|
+
if (!this.config.enabled) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
try {
|
|
229
|
+
const entries = Array.from(this.cache.values());
|
|
230
|
+
const content = JSON.stringify(entries, null, 2);
|
|
231
|
+
await plugins.smartfile.memory.toFs(content, this.cacheIndexPath);
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
console.warn('Failed to persist cache index:', error.message);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2NvbnRleHQvY29udGV4dC1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUd6Qjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQU12Qjs7OztPQUlHO0lBQ0gsWUFBWSxXQUFtQixFQUFFLFNBQWdDLEVBQUU7UUFUM0QsVUFBSyxHQUE2QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBVWxELElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJO1lBQy9CLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxpQkFBaUI7WUFDMUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFFLGdCQUFnQjtZQUNoRCxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQztTQUN6RixDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUN0QyxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQUk7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUVELGdDQUFnQztRQUNoQyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxD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
|
|
@@ -49,4 +49,12 @@ export declare class ContextTrimmer {
|
|
|
49
49
|
* @param config The new configuration to apply
|
|
50
50
|
*/
|
|
51
51
|
updateConfig(config: ITrimConfig): void;
|
|
52
|
+
/**
|
|
53
|
+
* Trim a file based on its importance tier
|
|
54
|
+
* @param filePath The path to the file
|
|
55
|
+
* @param content The file's contents
|
|
56
|
+
* @param level The trimming level to apply ('none', 'light', 'aggressive')
|
|
57
|
+
* @returns The trimmed file contents
|
|
58
|
+
*/
|
|
59
|
+
trimFileWithLevel(filePath: string, content: string, level: 'none' | 'light' | 'aggressive'): string;
|
|
52
60
|
}
|
|
@@ -195,5 +195,64 @@ export class ContextTrimmer {
|
|
|
195
195
|
...config
|
|
196
196
|
};
|
|
197
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Trim a file based on its importance tier
|
|
200
|
+
* @param filePath The path to the file
|
|
201
|
+
* @param content The file's contents
|
|
202
|
+
* @param level The trimming level to apply ('none', 'light', 'aggressive')
|
|
203
|
+
* @returns The trimmed file contents
|
|
204
|
+
*/
|
|
205
|
+
trimFileWithLevel(filePath, content, level) {
|
|
206
|
+
// No trimming for essential files
|
|
207
|
+
if (level === 'none') {
|
|
208
|
+
return content;
|
|
209
|
+
}
|
|
210
|
+
// Create a temporary config based on level
|
|
211
|
+
const originalConfig = { ...this.config };
|
|
212
|
+
try {
|
|
213
|
+
if (level === 'light') {
|
|
214
|
+
// Light trimming: preserve signatures, remove only complex implementations
|
|
215
|
+
this.config = {
|
|
216
|
+
...this.config,
|
|
217
|
+
removeImplementations: false,
|
|
218
|
+
preserveInterfaces: true,
|
|
219
|
+
preserveTypeDefs: true,
|
|
220
|
+
preserveJSDoc: true,
|
|
221
|
+
maxFunctionLines: 10,
|
|
222
|
+
removeComments: false,
|
|
223
|
+
removeBlankLines: true
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
else if (level === 'aggressive') {
|
|
227
|
+
// Aggressive trimming: remove all implementations, keep only signatures
|
|
228
|
+
this.config = {
|
|
229
|
+
...this.config,
|
|
230
|
+
removeImplementations: true,
|
|
231
|
+
preserveInterfaces: true,
|
|
232
|
+
preserveTypeDefs: true,
|
|
233
|
+
preserveJSDoc: true,
|
|
234
|
+
maxFunctionLines: 3,
|
|
235
|
+
removeComments: true,
|
|
236
|
+
removeBlankLines: true
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
// Process based on file type
|
|
240
|
+
let result = content;
|
|
241
|
+
if (filePath.endsWith('.ts') || filePath.endsWith('.tsx')) {
|
|
242
|
+
result = this.trimTypeScriptFile(content);
|
|
243
|
+
}
|
|
244
|
+
else if (filePath.endsWith('.md')) {
|
|
245
|
+
result = this.trimMarkdownFile(content);
|
|
246
|
+
}
|
|
247
|
+
else if (filePath.endsWith('.json')) {
|
|
248
|
+
result = this.trimJsonFile(content);
|
|
249
|
+
}
|
|
250
|
+
return result;
|
|
251
|
+
}
|
|
252
|
+
finally {
|
|
253
|
+
// Restore original config
|
|
254
|
+
this.config = originalConfig;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
198
257
|
}
|
|
199
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC10cmltbWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvY29udGV4dC9jb250ZXh0LXRyaW1tZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFHekM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFHekI7OztPQUdHO0lBQ0gsWUFBWSxNQUFvQjtRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1oscUJBQXFCLEVBQUUsSUFBSTtZQUMzQixrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsYUFBYSxFQUFFLElBQUk7WUFDbkIsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQixjQUFjLEVBQUUsSUFBSTtZQUNwQixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLEdBQUcsTUFBTTtTQUNWLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksUUFBUSxDQUFDLFFBQWdCLEVBQUUsT0FBZSxFQUFFLE9BQW9CLFNBQVM7UUFDOUUsaURBQWlEO1FBQ2pELElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFFRCw2QkFBNkI7UUFDN0IsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMxRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxDQUFDO2FBQU0sSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEMsQ0FBQzthQUFNLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxD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
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { ContextMode, IContextResult, TaskType } from './types.js';
|
|
1
|
+
import type { ContextMode, IContextResult, TaskType, IFileMetadata } from './types.js';
|
|
3
2
|
/**
|
|
4
3
|
* Enhanced ProjectContext that supports context optimization strategies
|
|
5
4
|
*/
|
|
@@ -7,6 +6,9 @@ export declare class EnhancedContext {
|
|
|
7
6
|
private projectDir;
|
|
8
7
|
private trimmer;
|
|
9
8
|
private configManager;
|
|
9
|
+
private lazyLoader;
|
|
10
|
+
private cache;
|
|
11
|
+
private analyzer;
|
|
10
12
|
private contextMode;
|
|
11
13
|
private tokenBudget;
|
|
12
14
|
private contextResult;
|
|
@@ -30,20 +32,16 @@ export declare class EnhancedContext {
|
|
|
30
32
|
*/
|
|
31
33
|
setTokenBudget(maxTokens: number): void;
|
|
32
34
|
/**
|
|
33
|
-
*
|
|
34
|
-
* @param
|
|
35
|
-
* @param
|
|
35
|
+
* Convert files to context with smart analysis and prioritization
|
|
36
|
+
* @param metadata - File metadata to analyze
|
|
37
|
+
* @param taskType - Task type for context-aware prioritization
|
|
38
|
+
* @param mode - Context mode to use
|
|
39
|
+
* @returns Context string
|
|
36
40
|
*/
|
|
37
|
-
|
|
41
|
+
convertFilesToContextWithAnalysis(metadata: IFileMetadata[], taskType: TaskType, mode?: ContextMode): Promise<string>;
|
|
38
42
|
/**
|
|
39
|
-
*
|
|
40
|
-
* @param
|
|
41
|
-
* @param mode The context mode to use
|
|
42
|
-
*/
|
|
43
|
-
convertFilesToContext(files: plugins.smartfile.SmartFile[], mode?: ContextMode): Promise<string>;
|
|
44
|
-
/**
|
|
45
|
-
* Build context for the project
|
|
46
|
-
* @param taskType Optional task type for task-specific context
|
|
43
|
+
* Build context for the project using smart analysis
|
|
44
|
+
* @param taskType Task type for context-aware prioritization (defaults to 'description')
|
|
47
45
|
*/
|
|
48
46
|
buildContext(taskType?: TaskType): Promise<IContextResult>;
|
|
49
47
|
/**
|