feat(config-audit): TOK consumes readActiveConfig (v5 F1)

Removes the v4 'void readActiveConfig' placeholder and wires the
active-config snapshot into the TOK scanner.

Per-turn behavior changes:
- Each enabled MCP server becomes its own hotspot entry (richer than
  the parent .mcp.json file alone)
- total_estimated_tokens now includes MCP server cost
- result.activeConfig exposes a small summary
  (claudeMdEstimatedTokens, mcpServerCount, pluginCount, skillCount)

Failures of readActiveConfig are non-fatal — the scanner falls back
to the discovery-only path used in v4.

Tests: +3 cases on the new tok-active-config fixture
(.mcp.json with 2 servers, CLAUDE.md, plugin skeleton).
This commit is contained in:
Kjell Tore Guttormsen 2026-05-01 06:27:34 +02:00
commit 34669d596c
6 changed files with 115 additions and 9 deletions

View file

@ -0,0 +1,5 @@
{
"name": "tok-active-config",
"description": "Fixture plugin for TOK scanner active-config integration test",
"version": "0.0.1"
}

View file

@ -0,0 +1,12 @@
{
"mcpServers": {
"alpha": {
"command": "npx",
"args": ["alpha-server"]
},
"beta": {
"command": "npx",
"args": ["beta-server"]
}
}
}

View file

@ -0,0 +1,14 @@
# Tok Active-Config Fixture
A small Claude Code-shaped project used by the TOK scanner integration test.
## Purpose
Verify that the TOK scanner consumes `readActiveConfig` output: MCP servers
appear in hotspots and the CLAUDE.md cascade contributes a non-zero token
estimate when active-config integration is wired up (v5 F1).
## Notes
This file is intentionally larger than a one-liner so the cascade contributes
visible tokens to `activeConfig.claudeMd.estimatedTokens`.

View file

@ -0,0 +1,11 @@
---
name: sample
description: Sample command in the tok-active-config fixture
model: sonnet
---
# /sample
A trivial command body so the file has both frontmatter and content. The TOK
scanner ranks command sources by their estimated tokens; this is bigger than
zero, smaller than CLAUDE.md.