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

pt-compact

v0.1.2

Published

Percentage-based context compaction for Pi with a configurable summarization model

Readme

pt-compact

A Pi extension that triggers context compaction at a configurable usage percentage and uses a configurable model for Pi's native compaction algorithm.

Features

  • Automatically compacts context after the configured percentage is reached.
  • Supports Pi's built-in /compact [instructions] command.
  • Uses one configurable model for both extension-triggered and built-in compaction.
  • Keeps the active conversation model unchanged.
  • Resumes the current task after extension-triggered compaction.
  • Keeps Pi's built-in automatic compaction enabled as an overflow safety net.

Install

Install from npm after the package is published:

pi install npm:pt-compact

Try a local checkout without installing it:

pi -e .

Configure

Create ~/.pi/agent/pt-compact.json:

{
  "compressionModel": "google/gemini-2.5-flash",
  "compressionThinkingLevel": "low",
  "thresholdPercent": 80
}

compressionModel is required and must use the exact provider/model identifier shown by Pi's model list. The provider must already be authenticated in Pi.

compressionThinkingLevel is optional and defaults to low. Supported values are off, minimal, low, medium, high, xhigh, and max; Pi/provider model capabilities may clamp the selected level.

This release requires Pi 0.85.1 or newer.

thresholdPercent is optional and defaults to 80. It must be greater than 0 and less than 100.

Reload Pi after changing the file:

/reload

Usage

Automatic compaction runs after a model turn when context usage reaches the configured percentage. After compaction, the extension asks Pi to continue the current task without repeating completed tool calls.

Manual compaction uses Pi's existing command and ignores the percentage threshold:

/compact
/compact Focus the summary on unresolved errors and modified files.

The extension calls Pi's exported compact() function. It does not implement or replace Pi's summary format, cut-point selection, retained-message handling, or file-operation tracking.

Failure behavior

If extension-triggered compaction fails, the extension:

  1. Reports the error.
  2. Leaves the active conversation model unchanged.
  3. Suppresses another extension-triggered attempt until the next user input.
  4. Continues the current task using the existing context.

Pi's own automatic compaction should remain enabled. It provides threshold and overflow recovery if context grows beyond Pi's native safety boundary:

{
  "compaction": {
    "enabled": true,
    "reserveTokens": 16384,
    "keepRecentTokens": 20000
  }
}

The extension never edits Pi's settings.json.

If the configured compression model fails during Pi's own automatic threshold or overflow compaction, the extension allows Pi to fall back to its active model so Pi's native recovery remains available.

Notes

  • Context usage is based on Pi's ctx.getContextUsage() estimate.
  • Automatic checks run at turn_end, after completed tool results have been recorded.
  • Compaction is lossy. Pi keeps the full session history in its JSONL session file.
  • The configuration is global. Project-specific configuration and a settings UI are intentionally not included.

Development

Requires Node.js 22.19 or newer.

npm test
npm run check

License

MIT