token-pilot 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/CHANGELOG.md +16 -0
  3. package/dist/ast-index/client.d.ts.map +1 -1
  4. package/dist/ast-index/client.js +58 -18
  5. package/dist/ast-index/client.js.map +1 -1
  6. package/dist/ast-index/types.d.ts +1 -0
  7. package/dist/ast-index/types.d.ts.map +1 -1
  8. package/dist/handlers/project-overview.js +2 -2
  9. package/dist/handlers/project-overview.js.map +1 -1
  10. package/dist/handlers/smart-read.d.ts.map +1 -1
  11. package/dist/handlers/smart-read.js +16 -2
  12. package/dist/handlers/smart-read.js.map +1 -1
  13. package/package.json +3 -2
  14. package/dist/core/context-window-tracker.d.ts +0 -89
  15. package/dist/core/context-window-tracker.d.ts.map +0 -1
  16. package/dist/core/context-window-tracker.js +0 -161
  17. package/dist/core/context-window-tracker.js.map +0 -1
  18. package/dist/core/context-window-tracker.test.d.ts +0 -2
  19. package/dist/core/context-window-tracker.test.d.ts.map +0 -1
  20. package/dist/core/context-window-tracker.test.js +0 -238
  21. package/dist/core/context-window-tracker.test.js.map +0 -1
  22. package/dist/core/diff-engine.d.ts +0 -64
  23. package/dist/core/diff-engine.d.ts.map +0 -1
  24. package/dist/core/diff-engine.js +0 -185
  25. package/dist/core/diff-engine.js.map +0 -1
  26. package/dist/core/diff-engine.test.d.ts +0 -2
  27. package/dist/core/diff-engine.test.d.ts.map +0 -1
  28. package/dist/core/diff-engine.test.js +0 -351
  29. package/dist/core/diff-engine.test.js.map +0 -1
  30. package/dist/core/persistent-cache.d.ts +0 -153
  31. package/dist/core/persistent-cache.d.ts.map +0 -1
  32. package/dist/core/persistent-cache.js +0 -555
  33. package/dist/core/persistent-cache.js.map +0 -1
  34. package/dist/core/persistent-cache.test.d.ts +0 -2
  35. package/dist/core/persistent-cache.test.d.ts.map +0 -1
  36. package/dist/core/persistent-cache.test.js +0 -251
  37. package/dist/core/persistent-cache.test.js.map +0 -1
  38. package/dist/core/real-token-estimator.d.ts +0 -49
  39. package/dist/core/real-token-estimator.d.ts.map +0 -1
  40. package/dist/core/real-token-estimator.js +0 -93
  41. package/dist/core/real-token-estimator.js.map +0 -1
  42. package/dist/formatters/context-markup.d.ts +0 -40
  43. package/dist/formatters/context-markup.d.ts.map +0 -1
  44. package/dist/formatters/context-markup.js +0 -55
  45. package/dist/formatters/context-markup.js.map +0 -1
  46. package/dist/formatters/smart-read-xml.d.ts +0 -20
  47. package/dist/formatters/smart-read-xml.d.ts.map +0 -1
  48. package/dist/formatters/smart-read-xml.js +0 -163
  49. package/dist/formatters/smart-read-xml.js.map +0 -1
@@ -1,351 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { DiffEngine } from './diff-engine';
3
- describe('DiffEngine', () => {
4
- const engine = new DiffEngine();
5
- // Helper to create mock FileStructure
6
- const createMockStructure = (symbols) => ({
7
- path: 'test.ts',
8
- language: 'typescript',
9
- meta: {
10
- lines: 100,
11
- bytes: 2000,
12
- lastModified: Date.now(),
13
- contentHash: 'hash123'
14
- },
15
- imports: [],
16
- exports: [],
17
- symbols
18
- });
19
- describe('computeDiff', () => {
20
- it('should detect no changes for identical content', () => {
21
- const content = 'function hello() {\n console.log("world")\n}';
22
- const result = engine.computeDiff(content, content);
23
- expect(result.operations).toHaveLength(0);
24
- expect(result.totalAddedLines).toBe(0);
25
- expect(result.totalRemovedLines).toBe(0);
26
- expect(result.changePercentage).toBe(0);
27
- });
28
- it('should detect line additions', () => {
29
- const old = 'line 1\nline 2\n';
30
- const newContent = 'line 1\nline 2\nline 3\nline 4\n';
31
- const result = engine.computeDiff(old, newContent);
32
- expect(result.operations.length).toBeGreaterThan(0);
33
- expect(result.totalAddedLines).toBeGreaterThan(0);
34
- expect(result.changePercentage).toBeGreaterThan(0);
35
- });
36
- it('should detect line removals', () => {
37
- const old = 'line 1\nline 2\nline 3\nline 4\n';
38
- const newContent = 'line 1\nline 2\n';
39
- const result = engine.computeDiff(old, newContent);
40
- expect(result.totalRemovedLines).toBeGreaterThan(0);
41
- expect(result.totalAddedLines).toBe(0);
42
- });
43
- it('should detect modifications (add + remove)', () => {
44
- const old = 'function test() {}\n';
45
- const newContent = 'function test(param: string) {\n return param\n}\n';
46
- const result = engine.computeDiff(old, newContent);
47
- // Should have either modify ops or separate add/remove ops
48
- expect(result.operations.length).toBeGreaterThan(0);
49
- expect(result.totalRemovedLines + result.totalAddedLines).toBeGreaterThan(0);
50
- });
51
- it('should calculate change percentage', () => {
52
- const old = 'line 1\nline 2\nline 3\nline 4\nline 5\n';
53
- const newContent = 'line 1\nline 2\nline X\nline 4\nline 5\n';
54
- const result = engine.computeDiff(old, newContent);
55
- expect(result.changePercentage).toBeGreaterThan(0);
56
- expect(result.changePercentage).toBeLessThanOrEqual(100);
57
- });
58
- it('should handle large file diffs efficiently', () => {
59
- const old = 'line 1\n'.repeat(5000);
60
- const newContent = 'line 1\n'.repeat(4800) + 'line modified\n'.repeat(200);
61
- const start = Date.now();
62
- const result = engine.computeDiff(old, newContent);
63
- const elapsed = Date.now() - start;
64
- // Should complete in less than 100ms even for 10K lines
65
- expect(elapsed).toBeLessThan(100);
66
- expect(result.operations.length).toBeGreaterThan(0);
67
- });
68
- it('should handle empty content', () => {
69
- const result = engine.computeDiff('', '');
70
- expect(result.operations).toHaveLength(0);
71
- expect(result.changePercentage).toBe(0);
72
- });
73
- it('should handle replacing all content', () => {
74
- const old = 'old content\nold content\n';
75
- const newContent = 'new content\nnew content\n';
76
- const result = engine.computeDiff(old, newContent);
77
- expect(result.operations.length).toBeGreaterThan(0);
78
- expect(result.totalAddedLines + result.totalRemovedLines).toBeGreaterThan(0);
79
- });
80
- });
81
- describe('extractChangedSymbols', () => {
82
- it('should extract symbols in changed line ranges', () => {
83
- const oldContent = `function foo() {
84
- return 1
85
- }
86
-
87
- function bar() {
88
- return 2
89
- }`;
90
- const newContent = `function foo() {
91
- return 1
92
- }
93
-
94
- function bar() {
95
- return 3
96
- }
97
-
98
- function baz() {
99
- return 4
100
- }`;
101
- const diff = engine.computeDiff(oldContent, newContent);
102
- const oldStructure = createMockStructure([
103
- {
104
- name: 'foo',
105
- qualifiedName: 'foo',
106
- kind: 'function',
107
- signature: 'function foo()',
108
- location: { startLine: 1, endLine: 3, lineCount: 3 },
109
- visibility: 'default',
110
- async: false,
111
- static: false,
112
- decorators: [],
113
- children: [],
114
- doc: null,
115
- references: []
116
- },
117
- {
118
- name: 'bar',
119
- qualifiedName: 'bar',
120
- kind: 'function',
121
- signature: 'function bar()',
122
- location: { startLine: 5, endLine: 7, lineCount: 3 },
123
- visibility: 'default',
124
- async: false,
125
- static: false,
126
- decorators: [],
127
- children: [],
128
- doc: null,
129
- references: []
130
- }
131
- ]);
132
- const newStructure = createMockStructure([
133
- {
134
- name: 'foo',
135
- qualifiedName: 'foo',
136
- kind: 'function',
137
- signature: 'function foo()',
138
- location: { startLine: 1, endLine: 3, lineCount: 3 },
139
- visibility: 'default',
140
- async: false,
141
- static: false,
142
- decorators: [],
143
- children: [],
144
- doc: null,
145
- references: []
146
- },
147
- {
148
- name: 'bar',
149
- qualifiedName: 'bar',
150
- kind: 'function',
151
- signature: 'function bar()',
152
- location: { startLine: 5, endLine: 7, lineCount: 3 },
153
- visibility: 'default',
154
- async: false,
155
- static: false,
156
- decorators: [],
157
- children: [],
158
- doc: null,
159
- references: []
160
- },
161
- {
162
- name: 'baz',
163
- qualifiedName: 'baz',
164
- kind: 'function',
165
- signature: 'function baz()',
166
- location: { startLine: 9, endLine: 11, lineCount: 3 },
167
- visibility: 'default',
168
- async: false,
169
- static: false,
170
- decorators: [],
171
- children: [],
172
- doc: null,
173
- references: []
174
- }
175
- ]);
176
- const changed = engine.extractChangedSymbols(diff, oldStructure, newStructure);
177
- // Should include symbols that were added or modified
178
- expect(changed.length).toBeGreaterThan(0);
179
- // 'bar' was modified, 'baz' was added - but foo was not changed
180
- expect(changed.map(s => s.name)).toContain('baz');
181
- });
182
- it('should not duplicate changed symbols', () => {
183
- const oldContent = 'function test() { return 1 }';
184
- const newContent = 'function test() { return 2 }';
185
- const diff = engine.computeDiff(oldContent, newContent);
186
- const oldStructure = createMockStructure([
187
- {
188
- name: 'test',
189
- qualifiedName: 'test',
190
- kind: 'function',
191
- signature: 'function test()',
192
- location: { startLine: 1, endLine: 1, lineCount: 1 },
193
- visibility: 'default',
194
- async: false,
195
- static: false,
196
- decorators: [],
197
- children: [],
198
- doc: null,
199
- references: []
200
- }
201
- ]);
202
- const newStructure = createMockStructure([
203
- {
204
- name: 'test',
205
- qualifiedName: 'test',
206
- kind: 'function',
207
- signature: 'function test()',
208
- location: { startLine: 1, endLine: 1, lineCount: 1 },
209
- visibility: 'default',
210
- async: false,
211
- static: false,
212
- decorators: [],
213
- children: [],
214
- doc: null,
215
- references: []
216
- }
217
- ]);
218
- const changed = engine.extractChangedSymbols(diff, oldStructure, newStructure);
219
- // Should return exactly 1 symbol, not duplicates
220
- expect(changed).toHaveLength(1);
221
- });
222
- it('should return empty array when no symbols changed', () => {
223
- const oldContent = 'const x = 1\nconst y = 2';
224
- const newContent = 'const x = 1\nconst y = 2\n// comment';
225
- const diff = engine.computeDiff(oldContent, newContent);
226
- const oldStructure = createMockStructure([
227
- {
228
- name: 'x',
229
- qualifiedName: 'x',
230
- kind: 'variable',
231
- signature: 'const x = 1',
232
- location: { startLine: 1, endLine: 1, lineCount: 1 },
233
- visibility: 'default',
234
- async: false,
235
- static: false,
236
- decorators: [],
237
- children: [],
238
- doc: null,
239
- references: []
240
- }
241
- ]);
242
- const newStructure = createMockStructure([
243
- {
244
- name: 'x',
245
- qualifiedName: 'x',
246
- kind: 'variable',
247
- signature: 'const x = 1',
248
- location: { startLine: 1, endLine: 1, lineCount: 1 },
249
- visibility: 'default',
250
- async: false,
251
- static: false,
252
- decorators: [],
253
- children: [],
254
- doc: null,
255
- references: []
256
- }
257
- ]);
258
- const changed = engine.extractChangedSymbols(diff, oldStructure, newStructure);
259
- // Only comment was added, no symbol changes
260
- expect(changed.length).toBeLessThanOrEqual(1);
261
- });
262
- });
263
- describe('estimateTokenSavings', () => {
264
- it('should estimate token savings for delta read', () => {
265
- const fullFileTokens = 3000;
266
- const changedSymbols = [
267
- {
268
- name: 'foo',
269
- qualifiedName: 'foo',
270
- kind: 'function',
271
- signature: 'function foo()',
272
- location: { startLine: 1, endLine: 10, lineCount: 10 },
273
- visibility: 'default',
274
- async: false,
275
- static: false,
276
- decorators: [],
277
- children: [],
278
- doc: null,
279
- references: []
280
- },
281
- {
282
- name: 'bar',
283
- qualifiedName: 'bar',
284
- kind: 'function',
285
- signature: 'function bar()',
286
- location: { startLine: 12, endLine: 20, lineCount: 9 },
287
- visibility: 'default',
288
- async: false,
289
- static: false,
290
- decorators: [],
291
- children: [],
292
- doc: null,
293
- references: []
294
- }
295
- ];
296
- const savings = engine.estimateTokenSavings(fullFileTokens, changedSymbols);
297
- // 2 symbols * 35 tokens = 70 tokens
298
- // 3000 - 70 = 2930 tokens savings
299
- expect(savings).toBeGreaterThan(0);
300
- expect(savings).toBeLessThan(fullFileTokens);
301
- expect(savings).toBeCloseTo(3000 - 2 * 35, 50);
302
- });
303
- it('should not have negative savings', () => {
304
- const fullFileTokens = 100;
305
- const changedSymbols = [
306
- {
307
- name: 'foo',
308
- qualifiedName: 'foo',
309
- kind: 'function',
310
- signature: 'function foo()',
311
- location: { startLine: 1, endLine: 10, lineCount: 10 },
312
- visibility: 'default',
313
- async: false,
314
- static: false,
315
- decorators: [],
316
- children: [],
317
- doc: null,
318
- references: []
319
- }
320
- ];
321
- const savings = engine.estimateTokenSavings(fullFileTokens, changedSymbols);
322
- expect(savings).toBeGreaterThanOrEqual(0);
323
- });
324
- it('should return full file tokens as savings when no symbols changed', () => {
325
- const fullFileTokens = 3000;
326
- const changedSymbols = [];
327
- const savings = engine.estimateTokenSavings(fullFileTokens, changedSymbols);
328
- expect(savings).toBe(fullFileTokens);
329
- });
330
- });
331
- describe('performance', () => {
332
- it('should handle 10K line files in under 100ms', () => {
333
- const large = 'line\n'.repeat(5000);
334
- const modified = 'line\n'.repeat(4900) + 'changed\n'.repeat(100);
335
- const start = Date.now();
336
- engine.computeDiff(large, modified);
337
- const elapsed = Date.now() - start;
338
- expect(elapsed).toBeLessThan(100);
339
- });
340
- it('should handle 100K character files', () => {
341
- const large = 'x'.repeat(50000) + '\ny\n' + 'z'.repeat(50000);
342
- const modified = 'x'.repeat(50000) + '\ny\n' + 'w'.repeat(50000);
343
- const start = Date.now();
344
- const result = engine.computeDiff(large, modified);
345
- const elapsed = Date.now() - start;
346
- expect(result.operations.length).toBeGreaterThanOrEqual(0);
347
- expect(elapsed).toBeLessThan(200);
348
- });
349
- });
350
- });
351
- //# sourceMappingURL=diff-engine.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"diff-engine.test.js","sourceRoot":"","sources":["../../src/core/diff-engine.test.ts"],"names":[],"mappings":"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"}
@@ -1,153 +0,0 @@
1
- import type { CacheEntry } from '../types';
2
- /**
3
- * Persistent File Cache with Two-Level Architecture
4
- *
5
- * Problem: Cold start takes 200s because each file needs AST parsing
6
- * Solution: L1 (in-memory) + L2 (SQLite persistent) cache with LRU eviction
7
- *
8
- * L1 Cache (Memory):
9
- * - Fast: <5ms lookups
10
- * - Warm during session
11
- * - Survives memory pressure via eviction
12
- *
13
- * L2 Cache (SQLite):
14
- * - Persistent: survives restarts
15
- * - Slower: ~100ms lookups
16
- * - Enables 20x faster cold starts (200s → 10s)
17
- *
18
- * Strategy:
19
- * - Always read from L1 first (fastest)
20
- * - Miss in L1 → read from L2 (persistent)
21
- * - Miss in L2 → parse file (slowest, but cached for next time)
22
- * - Evict LRU when memory/disk limit exceeded
23
- */
24
- export declare class PersistentFileCache {
25
- private l1;
26
- private db;
27
- private maxSizeBytes;
28
- private l1MaxSize;
29
- private onSetCallback;
30
- private smallFileThreshold;
31
- private l1Only;
32
- private l1Hits;
33
- private l2Hits;
34
- private misses;
35
- constructor(projectRoot: string, maxSizeMB?: number, smallFileThreshold?: number);
36
- /**
37
- * Initialize database schema with file_cache table and indexes
38
- */
39
- private initializeSchema;
40
- /**
41
- * Get cached entry from L1 or L2
42
- * Returns from L1 first (fastest), then L2 (persistent)
43
- */
44
- get(filePath: string): CacheEntry | null;
45
- /**
46
- * Set cache entry in L1 and L2
47
- */
48
- set(filePath: string, entry: CacheEntry): void;
49
- /**
50
- * Get cached entry by content hash (semantic caching)
51
- * Useful when same file content loaded from different paths
52
- */
53
- getByHash(contentHash: string): CacheEntry | null;
54
- /**
55
- * Remove entry from both L1 and L2
56
- */
57
- delete(filePath: string): void;
58
- /**
59
- * Clear all cache (useful for testing)
60
- */
61
- clear(): void;
62
- /**
63
- * Get cache statistics
64
- */
65
- getStats(): {
66
- totalBytes: number;
67
- entryCount: number;
68
- l1Size: number;
69
- l2Size: number;
70
- maxBytes: number;
71
- };
72
- /**
73
- * Get all cached entries (for iteration/analysis)
74
- */
75
- private getAllEntries;
76
- /**
77
- * Evict LRU entries if cache exceeds size limit
78
- */
79
- private evictIfNeeded;
80
- /**
81
- * Update lastAccess timestamp for file
82
- */
83
- private updateLastAccess;
84
- /**
85
- * Update cache statistics
86
- */
87
- private updateStats;
88
- /**
89
- * Estimate entry size in bytes
90
- */
91
- private estimateSize;
92
- /**
93
- * Register callback for file writes (compatibility with FileCache)
94
- */
95
- onSet(callback: (filePath: string) => void): void;
96
- /**
97
- * Invalidate cache entry (compatibility with FileCache)
98
- */
99
- invalidate(filePath?: string): void;
100
- /**
101
- * Invalidate files by git diff (compatibility with FileCache)
102
- */
103
- invalidateByGitDiff(changedFiles: string[]): Promise<void>;
104
- /**
105
- * Check if file is small (under threshold lines)
106
- */
107
- isSmallFile(filePath: string): Promise<boolean>;
108
- /**
109
- * Check if cached entry is stale (mtime changed)
110
- */
111
- isStale(filePath: string): Promise<boolean>;
112
- /**
113
- * Get small file threshold
114
- */
115
- getSmallFileThreshold(): number;
116
- /**
117
- * Get all cached file paths
118
- */
119
- cachedPaths(): string[];
120
- /**
121
- * Get cache statistics (compatibility with FileCache)
122
- */
123
- stats(): {
124
- entries: number;
125
- sizeBytes: number;
126
- hitRate: number;
127
- };
128
- /**
129
- * Get detailed cache performance metrics
130
- */
131
- getPerformanceMetrics(): {
132
- l1Hits: number;
133
- l2Hits: number;
134
- misses: number;
135
- totalRequests: number;
136
- hitRate: number;
137
- l1HitRate: number;
138
- l2HitRate: number;
139
- l1Only: boolean;
140
- };
141
- /**
142
- * Trigger onSet callback after setting entry
143
- */
144
- private triggerOnSet;
145
- /**
146
- * Close database connection
147
- */
148
- close(): void;
149
- }
150
- export declare function initializePersistentCache(projectRoot: string, maxSizeMB?: number): PersistentFileCache;
151
- export declare function getPersistentCache(): PersistentFileCache;
152
- export declare function closePersistentCache(): void;
153
- //# sourceMappingURL=persistent-cache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"persistent-cache.d.ts","sourceRoot":"","sources":["../../src/core/persistent-cache.ts"],"names":[],"mappings":"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"}