Releases: ArthurDEV44/distill
v0.8.1
🚀 What's New in v0.8.1
CLI Setup Improvements
- Interactive setup no longer pre-selects IDEs - Users now explicitly choose which IDEs to configure instead of having detected ones pre-selected
- CLAUDE.md auto-update - When configuring Claude Code, the setup now automatically adds Distill MCP directives to your existing
CLAUDE.mdfile- Requires
CLAUDE.mdto exist (run/initin Claude Code first) - Includes comprehensive SDK documentation in French
- Requires
IDE Configuration Updates
- Cursor: Now uses
npx -y distill-mcp serve(recommended by Cursor docs) - Windsurf: Now uses
npx -y distill-mcp serve(recommended by Windsurf docs) - Antigravity: Now uses
npx -y distill-mcp servefor consistency - Claude Code: Keeps direct
distill-mcp servecommand
The npx -y format ensures the package is always available even without global installation.
Documentation
- Updated installation guides for all IDEs (FR/EN)
- Updated CLAUDE.md setup guide with new CLI workflow
- Clarified that
/initmust be run before setup can update CLAUDE.md
📦 Installation
npm install -g distill-mcp
distill-mcp setup🔗 Links
Distill v0.8.0
Distill v0.8.0 - Release Notes
Vue d'ensemble
Cette version majeure apporte des améliorations significatives sur trois axes principaux : l'analyse de code AST, la sécurité et robustesse du SDK sandbox, et l'intelligence du résumé de logs. Plus de 6 700 lignes de code ajoutées pour une expérience plus fiable et performante.
Parsing AST enrichi pour 6 langages
Nouvelles capacités d'extraction
Le parsing de code est maintenant considérablement plus détaillé. Pour tous les langages supportés (TypeScript, Python, Go, Rust, PHP, Swift), l'extraction inclut désormais :
- Visibilité et modificateurs : public/private/protected, static, abstract, final
- Génériques et paramètres de type : support complet des types génériques avec contraintes
- Paramètres détaillés : types, valeurs par défaut, paramètres optionnels, rest parameters
- Décorateurs et attributs : extraction des annotations et métadonnées du code
- Enums : nouveau type d'élément extrait (auparavant manquant)
Améliorations par langage
Rust : Support des lifetimes, clauses where, fonctions async/unsafe/const, attributs #[derive(...)], et ABI extern.
Swift : Support de Swift 6+ avec actors distribués, async/await, Sendable, typed throws, @MainActor, et le nouveau niveau d'accès package.
Python : Extraction améliorée des décorateurs, annotations de type, et classes avec héritage multiple.
Go : Meilleure gestion des interfaces, méthodes de receiver, et types embarqués.
PHP : Support des traits, interfaces, et namespaces amélioré.
SDK Sandbox renforcé
Gestion d'erreurs type-safe avec neverthrow
Toutes les API du SDK retournent maintenant des types Result<T, Error> au lieu de lever des exceptions. Cela permet :
- Prévisibilité : Impossible d'oublier de gérer une erreur - le compilateur vous rappelle à l'ordre
- Composition : Chaînage d'opérations avec gestion d'erreurs intégrée
- Rétrocompatibilité : Les anciennes API "legacy" qui lèvent des exceptions restent disponibles
Types marqués (Branded Types)
Introduction de types marqués pour la sécurité à la compilation :
ValidatedPath: Chemin de fichier validé contre les traversées de répertoireSafePattern: Pattern glob vérifié comme sûrSanitizedGitArg: Argument git nettoyé contre l'injection de commandesSanitizedCode: Code utilisateur ayant passé l'analyse de sécurité
Ces types garantissent au niveau du compilateur TypeScript qu'une valeur a été validée avant utilisation.
Ressources avec nettoyage automatique (Disposables)
Utilisation du nouveau pattern using de TypeScript 5.2+ pour la gestion automatique des ressources :
- Les timers d'exécution sont automatiquement nettoyés
- Les sandboxes libèrent leurs ressources même en cas d'erreur
- Code plus propre et moins de fuites de ressources
Mode QuickJS (expérimental)
Nouveau mode d'exécution optionnel utilisant WebAssembly pour une isolation complète :
- Sandbox véritablement isolée du processus Node.js
- Activable via
DISTILL_USE_QUICKJS=true - Plus sécurisé pour les cas d'usage sensibles
Résumé de logs intelligent
Scoring multi-facteurs
Nouveau système de scoring inspiré de BM25/TF-IDF qui prend en compte :
- Niveau de log : Erreurs pondérées plus fortement que les warnings et infos
- Unicité du contenu : Logs uniques valorisés par rapport aux répétitions
- Position : Début et fin de session considérés plus importants
- Rareté : Patterns inhabituels mis en avant
Clustering sémantique
Regroupement automatique des logs similaires :
- Détection de patterns récurrents (ex: "Connection failed to X")
- Sélection du représentant le plus pertinent par cluster
- Réduction significative de la redondance dans les résumés
Extraction de patterns
Identification automatique des templates de logs avec variables :
- Conversion de messages en patterns génériques (ex:
Error connecting to <IP>:<PORT>) - Statistiques sur la fréquence de chaque pattern
- Aide à identifier les problèmes récurrents
Résumé hiérarchique
Nouveau mode de résumé pour les fichiers volumineux :
- Découpage temporel ou par taille en sections
- Résumé de chaque section puis agrégation
- Vision multi-niveaux : vue d'ensemble, sections, entrées critiques
Conformité MCP 2025-06-18
Output Schemas
Tous les outils principaux incluent maintenant des schémas de sortie conformes à la spécification MCP 2025-06-18 :
- Validation structurée : Les résultats sont validés contre un schéma défini
- Documentation automatique : Chaque champ de sortie est documenté avec sa description et son type
- Interopérabilité : Meilleure intégration avec les clients MCP conformes
Outils mis à jour : auto_optimize, smart_file_read, discover_tools, code_execute, session_stats, summarize_logs.
Annotations d'outils
Nouveau système d'annotations pour guider les LLMs dans l'utilisation des outils :
- readOnlyHint : Indique que l'outil ne modifie pas l'état du système
- destructiveHint : Avertit des opérations potentiellement destructives
- idempotentHint : Signale que le même input produit toujours le même résultat
- longRunningHint : Prévient que l'exécution peut être longue
- title : Titre lisible pour l'affichage dans les interfaces
Descriptions sémantiques
Les schémas d'entrée incluent maintenant des descriptions détaillées pour chaque propriété :
- Amélioration de la sélection automatique d'outils par les LLMs
- Documentation inline des paramètres avec valeurs par défaut
- Contraintes de validation (
minLength,minimum,maximum)
Registre d'outils étendu
Le ToolRegistry supporte maintenant :
outputSchemaoptionnel pour chaque outilannotationspour les métadonnées comportementales- Sérialisation complète dans la réponse
ListTools
Pipeline Builder fluide
Nouvelle API chaînable pour les opérations multi-étapes :
- Interface immutable et type-safe
- Méthodes fluides :
glob(),read(),parse(),filter(),map(),compress() - Présets pour cas courants : analyse de code mort, extraction de signatures
Nouvelles dépendances
- neverthrow : Gestion d'erreurs fonctionnelle type-safe
- @jitl/quickjs-ng-wasmfile-release-sync : Sandbox QuickJS WebAssembly
- @sebastianwessel/quickjs : Bridge hôte pour QuickJS
Changements notables
- L'option
detaileddu parsing est maintenant dépréciée - l'extraction détaillée est toujours activée pour une meilleure qualité d'AST - Les API retournant des
Resultsont la nouvelle norme ; les versions "legacy" qui lèvent des exceptions restent disponibles pour la rétrocompatibilité
Note : Cette release est un travail en cours. D'autres améliorations sont prévues avant la version finale 0.8.0.
v0.7.0-beta - Interactive Setup Wizard & Antigravity Support
What's New
Interactive Setup Wizard
distill-mcp setup now launches a beautiful interactive wizard powered by @clack/prompts:
- Select multiple IDEs with arrow keys and spacebar
- Auto-detects installed IDEs and pre-selects them
- Optional Claude Code hooks installation
- Spinner feedback during configuration
Antigravity (Google) Support
Added support for Google's Antigravity IDE alongside Claude Code, Cursor, and Windsurf.
distill-mcp setup --antigravity # Non-interactive modeBackward Compatibility
All existing flags continue to work for non-interactive/scripted setups:
--claude,--cursor,--windsurf,--antigravity--hooks,--force
Installation
npm install -g distill-mcp
distill-mcp setupFull Changelog
v0.6.0-beta - All Phases Complete
Distill v0.6.0-beta
Extract the essence. Compress the context. Save tokens.
Distill is an open-source MCP server for LLM token optimization. Works with Claude Code, Cursor, and Windsurf.
Installation
# Run directly
npx distill-mcp
# Or install globally
npm install -g distill-mcp
# Add to Claude Code
claude mcp add distill -- npx distill-mcpWhat's New
This beta release marks the completion of all 6 development phases.
Phase 1: Core Stability
auto_optimize- Auto-detect and compress (40-95% savings)smart_file_read- AST-based file reading (50-70% savings)code_execute- TypeScript SDK execution (98% savings)- Support for 7 languages: TypeScript, JavaScript, Python, Go, Rust, PHP, Swift
Phase 2: Smart Search
- BM25 keyword search for tool discovery
- Semantic search with local embeddings (all-MiniLM-L6-v2)
- Hybrid search combining both approaches
Phase 3: SDK Enhancement
ctx.git.*- Git operations (diff, log, blame, status)ctx.search.*- Code search (grep, symbols, files)ctx.analyze.*- Static analysis (dependencies, callGraph)ctx.pipeline- Composable data pipelines
Phase 4: Intelligence Layer
context_budget- Pre-flight token estimationdetect_retry_loop- Failure pattern detectionsession_stats- Usage analytics and cost tracking
Phase 5: Ecosystem Integration
- One-click setup for Claude Code, Cursor, Windsurf
- GitHub Action for CI/CD token analysis
- Pre-commit hooks for large file warnings
- CLI
analyzecommand
Phase 6: Advanced Compression
multifile_compress- Cross-file deduplicationconversation_memory- Long conversation summarization- TOON format output optimization
- Configurable verbosity levels
Test Results
- 437 tests passing
- TypeScript type checking clean
- Build successful
Known Limitations
- Test coverage at ~21% (expanding in next releases)
- Some ESLint warnings in web app (Three.js properties)