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

@danielmeneses/pi-review

v0.0.1

Published

PI extension to review, accept, and revert agent code changes

Readme

PI Review

Review, accept, or revert code changes made by the PI agent — right from your browser.

PI Review is a PI extension that tracks every file the agent edits, creates, or deletes. It gives you a clean web interface to see what changed, leave line-level comments, accept the good changes, and revert the ones you don't want.


The Problem

When an AI coding agent modifies your code, it happens fast — files change, new code appears, and you're left wondering "what did it just do?" The agent's chat history shows tool calls, but it's hard to get a clear picture of every file change across multiple edits.

PI Review solves this by:

  • Tracking every edit the agent makes (through edit, write, or bash tools)
  • Showing a unified diff per file — so you see all changes together, not scattered across tool calls
  • Letting you accept or revert changes, one file at a time or all at once
  • Preserving a history of every accept/revert action, so you can go back and review what was done

Main Workflow

1. The agent makes changes

When the PI agent edits a file, PI Review automatically captures the original content, the new content, and a diff showing exactly what changed. Nothing extra to do — it just works.

2. Open the review UI

Run /review in PI to open the web interface. You'll see:

  • A sidebar listing every file that was changed
  • A main panel showing the diff for the selected file
  • Status badges: Pending (yellow), Accepted (green), Reverted (grey)

3. Review changes

For each file you can choose between two views:

  • Diff view — shows only the changed lines
  • Full file view — shows the complete file with changes highlighted in green (additions) and red (deletions). A down-arrow button jumps you to the next change.

4. Accept or revert

  • Accept — keeps the agent's changes. Future edits to the same file will diff against the accepted version.
  • Revert — restores the file to its original content before the agent touched it.

You can do this per file or globally with the "Accept All" / "Revert All" buttons.

5. Leave comments

Click any line number to add a comment. Comments are sent to the agent as instructions — useful for asking "why did you change this?" or requesting a fix without leaving the review UI.

6. Check history

Every accept or revert is recorded. Files with history show a collapsible list of past cycles, so you can see the full timeline of what happened.

7. Talk to the agent

Use the Chat button to start an open conversation with the agent. The chat panel slides in from the right — you can resize it by dragging the left edge.

8. Reference code

Right-click on any line or selection to open the "Reference this code" menu. This sends the selected code along with a question to the agent.


Key Features

| Feature | Description | |---|---| | File tracking | Automatically captures changes from edit, write, and bash tools | | Unified diffs | Merges multiple edits to the same file into a single, readable diff | | Diff view | Shows only changed lines | | Full file view | Shows the complete file with inline diff highlighting | | Scroll to next diff | In full file view, jumps to the next changed line | | Accept / Revert | Per-file or global accept/revert with history tracking | | Line comments | Click a line number to leave a comment for the agent | | Reference code | Right-click code to ask the agent about specific lines | | Chat | Open-ended conversation with the agent from inside the review UI | | Resizable panels | Drag the divider between sidebar and main content, or the chat panel edge | | History timeline | Every accept/revert is recorded for future reference | | Live updates | The UI refreshes automatically when new changes come in | | Open in VS Code | Click the VS Code icon to jump straight to a file | | External change detection | Warns when a file was modified outside the agent |


Project Structure

pi-review/
├── src/
│   ├── index.ts          — PI extension entry point
│   ├── tracker.ts        — Core engine: tracks, merges, accepts, reverts
│   ├── server.ts         — HTTP server with SSE and REST API
│   ├── types.ts          — TypeScript type definitions
│   └── frontend/
│       ├── app.tsx       — Root Preact component
│       ├── main.tsx      — Frontend entry point
│       ├── store.ts      — API client and SSE manager
│       ├── styles.css    — All styles
│       ├── utils.ts      — Helper functions
│       ├── highlight.ts  — Syntax highlighting
│       ├── selection.ts  — Line selection utilities
│       └── components/
│           ├── file-viewer.tsx      — File diff/full-file display
│           ├── full-file-view.tsx   — Full file with diff highlighting
│           ├── diff-table.tsx       — Unified diff table
│           ├── header.tsx           — Top toolbar
│           ├── sidebar.tsx          — File list sidebar
│           ├── chat-panel.tsx       — Agent chat (slide-in panel)
│           └── reference-panel.tsx  — Code reference panel
├── dist/                — Built frontend assets
├── build.mjs            — esbuild config for frontend
├── package.json         — PI extension config in the `pi` key
└── README.md

Installation

PI Review is a PI extension. It's loaded from the pi key in package.json:

"pi": {
  "extensions": ["./src/index.ts"]
}

To use it in another project, either:

# Install from git
pi install git:github.com/danielmeneses/pi-review

# Or install locally from a local path
pi install /path/to/pi-review -l

Extensions and packages are placed in ~/.pi/agent/ (global) or .pi/ (project-local). See the PI extensions docs for more details.


Getting Started

# Build the frontend (required after any UI changes)
npm run build:frontend

# In PI, start the review UI
/review

The server picks a port at runtime (defaults to 3123, falls back to a random port if busy). Run /review to open it in your browser.


Commands

| PI Command | Description | |---|---| | /review | Open the review UI in your browser | | /accept-all | Accept all pending changes | | /revert-all | Revert all pending changes (with confirmation) |


State Persistence

PI Review saves its state to .pi-review/state.json in your project root. This means:

  • Changes survive PI restarts
  • You can close and reopen the review UI without losing data
  • Accepted/reverted history is preserved between sessions

Requirements

  • Node.js 18+
  • PI coding agent
  • A modern browser (Chrome, Firefox, Safari 14+)