npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@penra/condense

v0.1.9

Published

CLI qui optimise les tokens envoyés à Claude & Codex

Readme

condense

CLI qui optimise les tokens envoyés à Claude & Codex. Au lieu d'envoyer des fichiers entiers et tout l'historique à chaque requête, condense construit un contexte minimal — une carte du repo (signatures seulement) + les extraits réellement pertinents — sous un plafond de tokens réglable, et mesure l'économie vs. un agent naïf.

Principe fondateur : ne jamais envoyer au modèle ce qu'on peut éviter d'envoyer. Chaque token non envoyé est un token économisé.

Installation

npm i -g @penra/condense
# ou via Homebrew (le chemin complet ajoute le tap tout seul) :
brew install PENRA-CORP/tap/condense

Le package est scopé : condense tout court est un paquet npm sans rapport, publié par quelqu'un d'autre. La commande installée reste condense.

Prérequis : Node ≥ 20. ripgrep (rg) est recommandé pour le retrieval lexical.

Démarrage

condense doctor            # que détecte-t-on ? (CLI Claude/Codex, clés, stockage)
condense login             # enregistre une clé API Anthropic (BYOK), validée puis stockée
condense login --provider openai

BYOK par défaut. Vous fournissez votre propre clé API (Anthropic Console / OpenAI). Les clés sont stockées dans le trousseau de l'OS (keytar), avec repli sur ~/.config/condense/config.json en permission 600. La détection des CLI installés est en lecture seule : condense ne lit jamais le token d'un autre outil.

Optimiser le contexte

# Construire le contexte optimisé d'une tâche et voir l'économie de tokens
condense context "ajoute la validation d'email au formulaire d'inscription"

# Marquer des fichiers "ouverts" (poids fort, inclus en entier)
condense context "corrige le bug de login" --open src/auth/login.ts

# Régler le budget et la part repo map
condense context "…" --budget 6000 --map-tokens 1200

# Émettre uniquement le contexte assemblé (pipeable vers un autre outil)
condense context "…" --print | pbcopy

# Sortie machine
condense context "…" --json

Exemple de sortie :

condense context — « ajoute la validation d'email au formulaire d'inscription »

Repo : 15/15 fichiers dans la map · 7 chunks · mots-clés: email, validation, …
  repo map              1 339 tokens
  fichiers ouverts          0 tokens
  retrieval               756 tokens
  tâche                    13 tokens
  ————————————————————————————
  contexte envoyé       2 119 tokens  (budget 8 000)

Économie vs agent naïf : 11 718 tokens (84.7 %)

Prouver l'économie dans le temps

Chaque context enregistre tokens_baseline (ce qu'un agent naïf aurait envoyé) vs. tokens_sent dans un ledger. stats cumule l'écart :

condense stats                 # tokens & coût économisés au total
condense stats --price 3       # prix par million de tokens d'entrée (défaut 3)
condense stats --json

Comment ça marche (les leviers)

  • Repo map — signatures seulement (fonctions/classes/imports via l'AST TypeScript pour JS/TS, regex pour py/go/rs/java/rb), classées par pertinence, remplies dans un budget. ~10× moins de tokens que d'envoyer les fichiers entiers.
  • Retrieval cibléripgrep localise les lignes qui matchent la requête, fenêtrées en chunks, dédupliqués, remplis jusqu'au budget restant.
  • Token budgeter — un plafond dur (--budget) réparti sur repo map → fichiers ouverts → retrieval. Tout ce qui dépasse est coupé. Observable et réglable.
  • Ledger — mesure baseline vs. réel, pour transformer la promesse en preuve.

Prévu ensuite : prompt caching, contexte incrémental (git diff), compaction d'historique, routing de modèle, et la boucle d'agent qui appelle réellement le modèle.

Développement

npm install
npm run dev -- context "…"     # exécuter sans build (tsx)
npm run typecheck
npm run build                  # bundle ESM dans dist/ (tsup)

Licence

MIT