token-pilot 0.28.0 → 0.28.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/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +21 -0
- package/agents/tp-api-surface-tracker.md +1 -1
- package/agents/tp-audit-scanner.md +1 -1
- package/agents/tp-commit-writer.md +1 -1
- package/agents/tp-context-engineer.md +1 -1
- package/agents/tp-dead-code-finder.md +1 -1
- package/agents/tp-debugger.md +1 -1
- package/agents/tp-dep-health.md +1 -1
- package/agents/tp-doc-writer.md +1 -1
- package/agents/tp-history-explorer.md +1 -1
- package/agents/tp-impact-analyzer.md +1 -1
- package/agents/tp-incident-timeline.md +1 -1
- package/agents/tp-incremental-builder.md +1 -1
- package/agents/tp-migration-scout.md +1 -1
- package/agents/tp-onboard.md +1 -1
- package/agents/tp-performance-profiler.md +1 -1
- package/agents/tp-pr-reviewer.md +1 -1
- package/agents/tp-refactor-planner.md +1 -1
- package/agents/tp-review-impact.md +1 -1
- package/agents/tp-run.md +1 -1
- package/agents/tp-session-restorer.md +1 -1
- package/agents/tp-ship-coordinator.md +1 -1
- package/agents/tp-spec-writer.md +1 -1
- package/agents/tp-test-coverage-gapper.md +1 -1
- package/agents/tp-test-triage.md +1 -1
- package/agents/tp-test-writer.md +1 -1
- package/dist/server/tool-profiles.d.ts +15 -9
- package/dist/server/tool-profiles.js +30 -13
- package/package.json +1 -1
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Token Pilot \u2014 save 60-90% tokens when AI reads code",
|
|
9
|
-
"version": "0.28.
|
|
9
|
+
"version": "0.28.1"
|
|
10
10
|
},
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
13
13
|
"name": "token-pilot",
|
|
14
14
|
"source": "./",
|
|
15
15
|
"description": "Reduces token consumption by 60-90% via AST-aware lazy file reading, structural symbol navigation, and cross-session tool-usage analytics. 22 MCP tools + 19 subagents + budget watchdog hooks.",
|
|
16
|
-
"version": "0.28.
|
|
16
|
+
"version": "0.28.1",
|
|
17
17
|
"author": {
|
|
18
18
|
"name": "Digital-Threads"
|
|
19
19
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "token-pilot",
|
|
3
|
-
"version": "0.28.
|
|
3
|
+
"version": "0.28.1",
|
|
4
4
|
"description": "Saves 60-90% tokens when AI reads code. AST-aware lazy reading, symbol navigation, cross-session tool-usage analytics, 22 subagents (haiku/sonnet/opus-tiered) with budget watchdog.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Digital-Threads",
|
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,27 @@ 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.28.1] - 2026-04-19
|
|
9
|
+
|
|
10
|
+
### Fixed — `session_analytics` hidden in `nav` profile defeated the whole point of profiles
|
|
11
|
+
|
|
12
|
+
Field report from Opus 4.7 running our own verification prompt against v0.28.0 on Windows: user had `TOKEN_PILOT_PROFILE=nav` set, Opus tried `mcp__plugin_token-pilot_token-pilot__session_analytics` for the pre-flight baseline and got "No matching deferred tools found". The whole verification stalled — the tool that measures whether the profile saves tokens wasn't in the profile.
|
|
13
|
+
|
|
14
|
+
Root cause: in v0.26.3 I bucketed `session_analytics` / `session_budget` / `session_snapshot` as "full-only" along with `test_summary`, `code_audit`, `find_unused`. That was a mistake — those three are **diagnostic meta-tools**, not workflow tools. Hiding them from `nav` and `edit` contradicts the profile feature's own purpose: if you can't verify the savings, why would you trust the profile?
|
|
15
|
+
|
|
16
|
+
Fix: new `META_TOOLS` set in `src/server/tool-profiles.ts`. META is **always visible** regardless of profile. Contents:
|
|
17
|
+
- `session_analytics` — self-measurement (verifies the profile is working)
|
|
18
|
+
- `session_budget` — remaining budget view
|
|
19
|
+
- `session_snapshot` — state capture for /clear recovery
|
|
20
|
+
|
|
21
|
+
`filterToolsByProfile` now does `NAV_TOOLS ∪ META_TOOLS` for nav and `NAV_TOOLS ∪ EDIT_EXTRAS ∪ META_TOOLS` for edit. New regression test asserts META is present in every profile.
|
|
22
|
+
|
|
23
|
+
### Impact
|
|
24
|
+
|
|
25
|
+
Users on `nav` / `edit` profiles get **3 extra tools** in their `tools/list` (~400 additional tokens at session start) but retain the ability to verify savings. The math: if a profile saves 2200 tokens on the original 22-tool list but hides the observability tools, the user mentally pads the savings with uncertainty and eventually switches back to `full`. The 400-token tax for keeping visibility is cheaper than that.
|
|
26
|
+
|
|
27
|
+
1019 tests passing (+1 new — META_TOOLS cross-profile visibility).
|
|
28
|
+
|
|
8
29
|
## [0.28.0] - 2026-04-19
|
|
9
30
|
|
|
10
31
|
### Added — passive pre-intercept hooks for Grep and Bash
|
package/agents/tp-debugger.md
CHANGED
package/agents/tp-dep-health.md
CHANGED
package/agents/tp-doc-writer.md
CHANGED
package/agents/tp-onboard.md
CHANGED
|
@@ -10,7 +10,7 @@ tools:
|
|
|
10
10
|
- mcp__token-pilot__smart_read
|
|
11
11
|
- mcp__token-pilot__smart_read_many
|
|
12
12
|
- mcp__token-pilot__read_section
|
|
13
|
-
token_pilot_version: "0.28.
|
|
13
|
+
token_pilot_version: "0.28.1"
|
|
14
14
|
token_pilot_body_hash: ae0b86eaffaf34bf283b94b5572481fa8c2d6a2a25193f1173b70bef0fbe1919
|
|
15
15
|
---
|
|
16
16
|
|
package/agents/tp-pr-reviewer.md
CHANGED
package/agents/tp-run.md
CHANGED
package/agents/tp-spec-writer.md
CHANGED
package/agents/tp-test-triage.md
CHANGED
package/agents/tp-test-writer.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* v0.26.3 — tool profiles.
|
|
2
|
+
* v0.26.3 — tool profiles. v0.28.1 — META_TOOLS always-available fix.
|
|
3
3
|
*
|
|
4
4
|
* Idea lifted honestly from Token Savior's TOKEN_SAVIOR_PROFILE. When an
|
|
5
5
|
* MCP server advertises 22 tools, every tools/list response costs the
|
|
@@ -10,20 +10,26 @@
|
|
|
10
10
|
* user in the same server can still reach the full set if they know
|
|
11
11
|
* the name).
|
|
12
12
|
*
|
|
13
|
-
* Three profiles:
|
|
14
|
-
* -
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* -
|
|
19
|
-
*
|
|
20
|
-
* read_diff, read_for_edit, smart_read_many.
|
|
13
|
+
* Three profiles, plus one always-on set:
|
|
14
|
+
* - META (implicit): always advertised, every profile — meta-tools
|
|
15
|
+
* the user needs to verify token-pilot is actually saving anything.
|
|
16
|
+
* Excluding them contradicts the whole point of profiles.
|
|
17
|
+
* - full (default): everything, same as pre-v0.26.3.
|
|
18
|
+
* - nav : META + read-only exploration (10 tools + META).
|
|
19
|
+
* - edit: META + nav + batch reads + edit-prep (16 tools + META).
|
|
21
20
|
*
|
|
22
21
|
* Selection: TOKEN_PILOT_PROFILE=nav|edit|full env var. Unknown values
|
|
23
22
|
* fall back to full with a stderr warning. Silent on missing env.
|
|
24
23
|
*/
|
|
25
24
|
export type ToolProfile = "full" | "nav" | "edit";
|
|
26
25
|
export declare const PROFILE_NAMES: readonly ToolProfile[];
|
|
26
|
+
/**
|
|
27
|
+
* Meta-tools — diagnostic / self-observation tools that must be visible
|
|
28
|
+
* in EVERY profile. Excluding them defeats the profile feature's own
|
|
29
|
+
* purpose: if you can't check whether token-pilot is saving tokens, why
|
|
30
|
+
* would you trust the savings number?
|
|
31
|
+
*/
|
|
32
|
+
export declare const META_TOOLS: ReadonlySet<string>;
|
|
27
33
|
/** Minimum nav profile — exploration only, no editing support. */
|
|
28
34
|
export declare const NAV_TOOLS: ReadonlySet<string>;
|
|
29
35
|
/** Edit profile adds batch reads + edit-preparation tools. */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* v0.26.3 — tool profiles.
|
|
2
|
+
* v0.26.3 — tool profiles. v0.28.1 — META_TOOLS always-available fix.
|
|
3
3
|
*
|
|
4
4
|
* Idea lifted honestly from Token Savior's TOKEN_SAVIOR_PROFILE. When an
|
|
5
5
|
* MCP server advertises 22 tools, every tools/list response costs the
|
|
@@ -10,14 +10,13 @@
|
|
|
10
10
|
* user in the same server can still reach the full set if they know
|
|
11
11
|
* the name).
|
|
12
12
|
*
|
|
13
|
-
* Three profiles:
|
|
14
|
-
* -
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* -
|
|
19
|
-
*
|
|
20
|
-
* read_diff, read_for_edit, smart_read_many.
|
|
13
|
+
* Three profiles, plus one always-on set:
|
|
14
|
+
* - META (implicit): always advertised, every profile — meta-tools
|
|
15
|
+
* the user needs to verify token-pilot is actually saving anything.
|
|
16
|
+
* Excluding them contradicts the whole point of profiles.
|
|
17
|
+
* - full (default): everything, same as pre-v0.26.3.
|
|
18
|
+
* - nav : META + read-only exploration (10 tools + META).
|
|
19
|
+
* - edit: META + nav + batch reads + edit-prep (16 tools + META).
|
|
21
20
|
*
|
|
22
21
|
* Selection: TOKEN_PILOT_PROFILE=nav|edit|full env var. Unknown values
|
|
23
22
|
* fall back to full with a stderr warning. Silent on missing env.
|
|
@@ -27,6 +26,17 @@ export const PROFILE_NAMES = [
|
|
|
27
26
|
"nav",
|
|
28
27
|
"edit",
|
|
29
28
|
];
|
|
29
|
+
/**
|
|
30
|
+
* Meta-tools — diagnostic / self-observation tools that must be visible
|
|
31
|
+
* in EVERY profile. Excluding them defeats the profile feature's own
|
|
32
|
+
* purpose: if you can't check whether token-pilot is saving tokens, why
|
|
33
|
+
* would you trust the savings number?
|
|
34
|
+
*/
|
|
35
|
+
export const META_TOOLS = new Set([
|
|
36
|
+
"session_analytics",
|
|
37
|
+
"session_budget",
|
|
38
|
+
"session_snapshot",
|
|
39
|
+
]);
|
|
30
40
|
/** Minimum nav profile — exploration only, no editing support. */
|
|
31
41
|
export const NAV_TOOLS = new Set([
|
|
32
42
|
"smart_read",
|
|
@@ -59,10 +69,17 @@ export const EDIT_EXTRAS = new Set([
|
|
|
59
69
|
export function filterToolsByProfile(tools, profile) {
|
|
60
70
|
if (profile === "full")
|
|
61
71
|
return [...tools];
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
//
|
|
65
|
-
|
|
72
|
+
// META_TOOLS are ALWAYS visible — session_analytics, session_budget,
|
|
73
|
+
// session_snapshot are the instruments for verifying the profile is
|
|
74
|
+
// doing its job. Hiding them would turn "did this save tokens?" into
|
|
75
|
+
// a guess.
|
|
76
|
+
if (profile === "nav") {
|
|
77
|
+
return tools.filter((t) => NAV_TOOLS.has(t.name) || META_TOOLS.has(t.name));
|
|
78
|
+
}
|
|
79
|
+
// edit = nav + extras + meta
|
|
80
|
+
return tools.filter((t) => NAV_TOOLS.has(t.name) ||
|
|
81
|
+
EDIT_EXTRAS.has(t.name) ||
|
|
82
|
+
META_TOOLS.has(t.name));
|
|
66
83
|
}
|
|
67
84
|
/**
|
|
68
85
|
* Parse the TOKEN_PILOT_PROFILE env value. Unknown values get a warning
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "token-pilot",
|
|
3
|
-
"version": "0.28.
|
|
3
|
+
"version": "0.28.1",
|
|
4
4
|
"description": "Save up to 80% tokens when AI reads code \u2014 MCP server for token-efficient code navigation, AST-aware structural reading instead of dumping full files into context window",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|