token-pilot 0.7.0 → 0.7.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/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +6 -0
- package/dist/handlers/outline.d.ts.map +1 -1
- package/dist/handlers/outline.js +55 -11
- package/dist/handlers/outline.js.map +1 -1
- package/dist/handlers/read-for-edit.d.ts.map +1 -1
- package/dist/handlers/read-for-edit.js +21 -2
- package/dist/handlers/read-for-edit.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,12 @@ All notable changes to Token Pilot will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.7.1] - 2026-03-07
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- **read_diff after read_for_edit** — `read_for_edit` now caches the full file content, so `read_diff` can use it as baseline after edits. Previously returned "No previous read" because read_for_edit didn't populate the file cache.
|
|
12
|
+
- **outline on intermediate directories** — directories with only subdirectories (no direct code files) now show subdirectory listing with recursive code file counts instead of "No code files found". Enables progressive drill-down: `outline("module/") → outline("module/infrastructure/")`.
|
|
13
|
+
|
|
8
14
|
## [0.7.0] - 2026-03-07
|
|
9
15
|
|
|
10
16
|
### Fixed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outline.d.ts","sourceRoot":"","sources":["../../src/handlers/outline.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI7D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAeD,wBAAsB,aAAa,CACjC,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"outline.d.ts","sourceRoot":"","sources":["../../src/handlers/outline.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI7D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAeD,wBAAsB,aAAa,CACjC,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAsF7D"}
|
package/dist/handlers/outline.js
CHANGED
|
@@ -22,29 +22,47 @@ export async function handleOutline(args, projectRoot, astIndex) {
|
|
|
22
22
|
}],
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
|
-
// List code files (1 level
|
|
25
|
+
// List code files and subdirectories (1 level)
|
|
26
26
|
const entries = await readdir(absPath, { withFileTypes: true });
|
|
27
27
|
const codeFiles = [];
|
|
28
|
+
const subdirs = [];
|
|
28
29
|
for (const entry of entries) {
|
|
29
|
-
if (
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if (
|
|
33
|
-
|
|
30
|
+
if (entry.isDirectory()) {
|
|
31
|
+
subdirs.push(entry.name);
|
|
32
|
+
}
|
|
33
|
+
else if (entry.isFile()) {
|
|
34
|
+
const ext = entry.name.split('.').pop()?.toLowerCase() ?? '';
|
|
35
|
+
if (CODE_EXTENSIONS.has(ext)) {
|
|
36
|
+
codeFiles.push(resolve(absPath, entry.name));
|
|
37
|
+
}
|
|
34
38
|
}
|
|
35
39
|
}
|
|
36
|
-
if (codeFiles.length === 0) {
|
|
40
|
+
if (codeFiles.length === 0 && subdirs.length === 0) {
|
|
37
41
|
return {
|
|
38
42
|
content: [{
|
|
39
43
|
type: 'text',
|
|
40
|
-
text: `No code files found in "${args.path}".`,
|
|
44
|
+
text: `No code files or subdirectories found in "${args.path}".`,
|
|
41
45
|
}],
|
|
42
46
|
};
|
|
43
47
|
}
|
|
44
|
-
// Sort
|
|
48
|
+
// Sort
|
|
45
49
|
codeFiles.sort();
|
|
50
|
+
subdirs.sort();
|
|
46
51
|
const relDir = relative(projectRoot, absPath) || '.';
|
|
47
|
-
const
|
|
52
|
+
const totalLabel = codeFiles.length > 0 ? `${codeFiles.length} files` : '';
|
|
53
|
+
const subLabel = subdirs.length > 0 ? `${subdirs.length} subdirs` : '';
|
|
54
|
+
const countLabel = [totalLabel, subLabel].filter(Boolean).join(', ');
|
|
55
|
+
const sections = [`OUTLINE: ${relDir}/ (${countLabel})`, ''];
|
|
56
|
+
// Show subdirectories with file counts (recursive scan)
|
|
57
|
+
if (subdirs.length > 0) {
|
|
58
|
+
for (const sub of subdirs) {
|
|
59
|
+
const subPath = resolve(absPath, sub);
|
|
60
|
+
const fileCount = await countCodeFiles(subPath);
|
|
61
|
+
sections.push(` ${sub}/ (${fileCount} code files)`);
|
|
62
|
+
}
|
|
63
|
+
sections.push('');
|
|
64
|
+
}
|
|
65
|
+
// Show code files at this level with AST outline
|
|
48
66
|
for (const filePath of codeFiles) {
|
|
49
67
|
const name = basename(filePath);
|
|
50
68
|
try {
|
|
@@ -65,7 +83,7 @@ export async function handleOutline(args, projectRoot, astIndex) {
|
|
|
65
83
|
sections.push('');
|
|
66
84
|
}
|
|
67
85
|
}
|
|
68
|
-
sections.push('HINT: Use smart_read(path) for
|
|
86
|
+
sections.push('HINT: Use outline(path) on subdirs, smart_read(path) for file structure, read_symbol(path, symbol) for source code.');
|
|
69
87
|
return { content: [{ type: 'text', text: sections.join('\n') }] };
|
|
70
88
|
}
|
|
71
89
|
/**
|
|
@@ -165,4 +183,30 @@ function extractHttpRoute(decorators, parentRoute) {
|
|
|
165
183
|
}
|
|
166
184
|
return null;
|
|
167
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Recursively count code files in a directory.
|
|
188
|
+
* Max depth 5 to avoid runaway scans.
|
|
189
|
+
*/
|
|
190
|
+
async function countCodeFiles(dirPath, depth = 0) {
|
|
191
|
+
if (depth > 5)
|
|
192
|
+
return 0;
|
|
193
|
+
try {
|
|
194
|
+
const entries = await readdir(dirPath, { withFileTypes: true });
|
|
195
|
+
let count = 0;
|
|
196
|
+
for (const entry of entries) {
|
|
197
|
+
if (entry.isFile()) {
|
|
198
|
+
const ext = entry.name.split('.').pop()?.toLowerCase() ?? '';
|
|
199
|
+
if (CODE_EXTENSIONS.has(ext))
|
|
200
|
+
count++;
|
|
201
|
+
}
|
|
202
|
+
else if (entry.isDirectory()) {
|
|
203
|
+
count += await countCodeFiles(resolve(dirPath, entry.name), depth + 1);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return count;
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
return 0;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
168
212
|
//# sourceMappingURL=outline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outline.js","sourceRoot":"","sources":["../../src/handlers/outline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAMxD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK;IACtE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO;IACxE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI;IACpE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK;CAC3C,CAAC,CAAC;AAEH,+DAA+D;AAC/D,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AACvF,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAClC,KAAK,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,8CAA8C,EAAE,GAAG,CAC7E,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAiB,EACjB,WAAmB,EACnB,QAAwB;IAExB,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAExD,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QACzC,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,8DAA8D;iBAClF,CAAC;SACH,CAAC;IACJ,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"outline.js","sourceRoot":"","sources":["../../src/handlers/outline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-for-edit.d.ts","sourceRoot":"","sources":["../../src/handlers/read-for-edit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"read-for-edit.d.ts","sourceRoot":"","sources":["../../src/handlers/read-for-edit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAInE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,eAAe,EACrB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA0H7D"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { readFile } from 'node:fs/promises';
|
|
1
|
+
import { readFile, stat } from 'node:fs/promises';
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
2
3
|
import { estimateTokens } from '../core/token-estimator.js';
|
|
3
4
|
import { resolveSafePath } from '../core/validation.js';
|
|
4
5
|
const DEFAULT_CONTEXT = 5;
|
|
5
6
|
export async function handleReadForEdit(args, projectRoot, symbolResolver, fileCache, contextRegistry, astIndex) {
|
|
6
7
|
const absPath = resolveSafePath(projectRoot, args.path);
|
|
7
8
|
const ctx = args.context ?? DEFAULT_CONTEXT;
|
|
8
|
-
// Get file content
|
|
9
|
+
// Get file content — also cache for read_diff baseline
|
|
9
10
|
const cached = fileCache.get(absPath);
|
|
10
11
|
let lines;
|
|
11
12
|
if (cached) {
|
|
@@ -14,6 +15,24 @@ export async function handleReadForEdit(args, projectRoot, symbolResolver, fileC
|
|
|
14
15
|
else {
|
|
15
16
|
const content = await readFile(absPath, 'utf-8');
|
|
16
17
|
lines = content.split('\n');
|
|
18
|
+
// Cache the full file so read_diff can use it as baseline after edits
|
|
19
|
+
const fileStat = await stat(absPath);
|
|
20
|
+
const hash = createHash('sha256').update(content).digest('hex');
|
|
21
|
+
fileCache.set(absPath, {
|
|
22
|
+
structure: {
|
|
23
|
+
path: absPath,
|
|
24
|
+
language: 'unknown',
|
|
25
|
+
meta: { lines: lines.length, bytes: content.length, lastModified: fileStat.mtimeMs, contentHash: hash },
|
|
26
|
+
imports: [],
|
|
27
|
+
exports: [],
|
|
28
|
+
symbols: [],
|
|
29
|
+
},
|
|
30
|
+
content,
|
|
31
|
+
lines,
|
|
32
|
+
mtime: fileStat.mtimeMs,
|
|
33
|
+
hash,
|
|
34
|
+
lastAccess: Date.now(),
|
|
35
|
+
});
|
|
17
36
|
}
|
|
18
37
|
let startLine;
|
|
19
38
|
let endLine;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-for-edit.js","sourceRoot":"","sources":["../../src/handlers/read-for-edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"read-for-edit.js","sourceRoot":"","sources":["../../src/handlers/read-for-edit.ts"],"names":[],"mappings":"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"}
|