Journal des versions
Historique des releases de Distill — versions publiées, corrections et nouveaux points d'intégration avec Claude Code.
Journal des versions
Cette page résume les releases publiées de distill-mcp côté npm. L'historique complet, orienté commits, vit dans CHANGELOG.md à la racine du dépôt ; la PRD de chaque version décrit la motivation détaillée story par story.
v0.10.1 — 22 avril 2026
Patch release. Aucun changement de contrat, aucune modification d'API, aucune migration. Deux corrections de bugs remontées juste après la publication de v0.10.0.
Corrections
code_execute— crash quand le code ne contient pas dereturn. Le code utilisateur qui se contentait d'écrireconsole.log(...)sans valeur de retour faisait crasher l'outil :JSON.stringify(undefined)renvoieundefined(pas une chaîne), ce qui cassaitcountTokensen aval. Un garde àsrc/sandbox/executor.ts:152-153convertit désormais le casundefineden chaîne vide avant la sérialisation. Les scripts purement side-effect fonctionnent à nouveau.smart_file_read—async asyncdans les squelettes TypeScript. Le renderer du modeskeletonajoutait systématiquement le modificateurasyncsur les fonctions asynchrones sans vérifier s'il n'était pas déjà présent dans la signature capturée, produisant par exempleasync async function fetchData(...). La ligne de rendu àsrc/tools/smart-file-read.ts:395-414teste maintenant la présence d'un\basync\bpréexistant avant d'ajouter le modificateur.
Tests et couverture
1 203 tests passants (1 ignoré) sur 46 fichiers. Couverture mcp-server : Lines 72,13 % · Branches 58,62 % · Functions 73,46 % · Statements 71,32 %. Les planchers v0.9.2 restent respectés avec marge.
v0.10.0 — 22 avril 2026
Release correction + intégration native. Aucun changement dans le contrat des trois outils (auto_optimize, smart_file_read, code_execute). Aucun changement dans le sandbox, les parsers AST ou les algorithmes de compression. Première release publiée sur npm depuis v0.8.1 — elle consolide les travaux v0.9.1 et v0.9.2 qui étaient restés en état « draft ».
Corrections de documentation
Chaque affirmation de CLAUDE.md est maintenant liée à une citation claude-code/<chemin>:<ligne> pour que la re-vérification contre un upstream en mouvement tienne en un seul grep.
- Le seuil de persistance des résultats d'outils MCP est 25 000 tokens (constante
DEFAULT_MAX_MCP_OUTPUT_TOKENS), pas « 50 000 caractères ». La porte heuristiquelength/4àmcpValidation.ts:151-163court-circuite sur ~12 500 tokens estimés (≈ 50K chars). - La formule d'autocompact réserve
min(maxOutputTokens, 20_000)tokens — pour Haiku (max_output = 4 096) cela donne un déclenchement environ 16K tokens plus haut qu'une lecture hardcodée à 20K ne le suggère. - Un appendice « Claude Code Mechanics — Verified Citations » regroupe onze mécanismes (alwaysLoad / searchHint / outputSchema / persistance MCP / autocompact / drop de
structuredContent/ hook PreCompact / prompts MCP / agents custom /readOnlyHint/ skills MCP) avec un script de re-vérification en une ligne.
Chemin de code aligné sur Claude Code
structuredContentn'est plus émis sur le fil MCP. Claude Code le range dansmcpMeta, etmcpMetaest explicitement exclu des blocs envoyés à l'API Anthropic — le LLM ne voyait jamais le champ.- La table
searchHintsdansserver.tsest supprimée. Le hint n'est rendu que pour les outils différés via ToolSearch, et Distill déclarealwaysLoad: truesur ses trois outils — le hint était inatteignable par construction. annotations.readOnlyHint: trueest maintenant déclaré sursmart_file_readetauto_optimize. Claude Code mappe ce hint versisConcurrencySafe(), ce qui permet le dispatch en parallèle avec d'autres outils read-only sur les tours multi-outils.
Hook PreCompact (opt-in)
- Contrat de marqueur
[DISTILL:COMPRESSED ratio=X.XX method=<name>]. Enveloppe opt-in activée viaDISTILL_COMPRESSED_MARKERS=1. Seuils :auto_optimize≥ 30 % d'économies ;smart_file_read< 50 % de la taille source en modesskeleton/extract/search;code_executevia ses helpersctx.compress.*sous la même règle. Collision gérée via les tokens d'échappement[DISTILL-USER-TEXT:COMPRESSED …]. packages/mcp-server/scripts/precompact-hook.sh— hook POSIX shippé qui émet sur stdout l'instruction « preserve verbatim » intégrée par Claude Code dansnewCustomInstructions. Il sort en code 0 sur toutes les formes d'entrée (JSON malformé, événement inattendu) pour ne jamais bloquer la compaction.distill-mcp setup --install-precompact-hook— installation idempotente et atomique (tempfile + rename), avec--dry-run,--uninstall-precompact-hooket--user-dir=<chemin>pour les tests. Avorte proprement sur un~/.claude/settings.jsonmalformé avec un pointeur ligne/colonne.
Commandes slash MCP
Trois prompts déclarés via prompts/list, disponibles en tant que commandes slash sans argument :
/mcp__distill-mcp__compress-session— survole les résultats d'outils récents et déclencheauto_optimizesur les plus gros./mcp__distill-mcp__analyze-tokens— estime la consommation de tokens et identifie les trois contributions les plus lourdes./mcp__distill-mcp__forget-large-results— repère les résultats persistés sur disque (> 25K tokens) et propose ceux qui peuvent être recompressés.
Documentation complète sur la page Commandes slash.
Sous-agent custom distill-compressor
- Template agent Markdown shippé dans
packages/mcp-server/assets/agents/distill-compressor.md— toolset read-only (Read, Grep, Glob, Bash +auto_optimize+smart_file_read),code_executeexplicitement dansdisallowedTools,requiredMcpServers: [distill-mcp]. distill-mcp setup --install-agent— copie atomique vers~/.claude/agents/(mode 0644, parent 0755). Idempotent ; avec--dry-run,--uninstall-agentet diff préalable si le fichier existe et diffère (il faut--forcepour écraser).
Skills MCP — décision NO-GO
Le spike docs/spikes/mcp-skills-exposure.md a tranché : aujourd'hui, un serveur MCP externe ne peut pas produire de commandes avec loadedFrom === 'mcp' sur le binaire Claude Code publié. Le chargeur est gardé par un flag de bundle time (feature('MCP_SKILLS')) compilé à false dans le build public, et le module skills/mcpSkills.ts est absent de l'arbre source open source. Le rapport documente les quatre préconditions upstream qui feraient basculer la décision à GO et trois commandes strings pour re-vérifier à chaque montée de version de Claude Code. v0.11 n'inclura pas les skills MCP.
Notes de migration
Pas de migration requise. Les signatures et formes de sortie des trois outils sont inchangées. Le contrat de marqueur, le hook PreCompact, les commandes slash et l'agent custom sont tous opt-in — les intégrations v0.8.x / v0.9.x existantes continuent de fonctionner à l'identique.
Avant v0.10.0
Les releases précédentes ont leurs notes longues sous docs/releases/ ; à partir de v0.9.0 la source canonique est CHANGELOG.md.