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

pi-checkpoint-bridge

v0.1.0

Published

Pi extension: lets sub-agent sessions ask the human user questions through the main session's UI — the checkpoint channel for the openspec* workflow family (grill rounds, apply blockers, any user-interaction checkpoint).

Readme

checkpoint-bridge

A pi extension that lets sub-agent sessions ask the human user questions through the main session's UI — the checkpoint channel from ADR-0001.

How it works

pi-subagents spawns sub-agent sessions in the same process as the main session, and every session activates this extension. The relay runs over a process-global bus — a Symbol.for-keyed EventEmitter on globalThis — because pi.events turned out to be session-scoped in practice (a request emitted on a sub-agent session's bus never reached the main session's listener; live-tested 2026-09-06, see ADR-0001's amendment).

  1. On session_start each instance tries to claim the host role via a globalThis symbol. The main session always starts first, so first claim wins = main session hosts.
  2. A sub-agent calls the ask_user_via_host tool with a batch of questions.
  3. The agent instance emits checkpoint-bridge:request on the bus.
  4. The host instance renders each question as a ctx.ui.select (when options are given) or ctx.ui.input dialog — one dialog at a time (requests queue serially so concurrent askers never interleave).
  5. Answers return as checkpoint-bridge:response and become the tool result.

Timeouts: per-question dialogs auto-dismiss after 180s (or the call's remaining budget); the whole call defaults to a 300s budget.

Fallback contract

ask_user_via_host never throws for environmental reasons. It returns a structured result the caller can branch on:

| status | meaning | expected caller behavior | |---|---|---| | ok | user answered every question | proceed | | timeout-or-cancelled | user dismissed a dialog (or it timed out) | proceed with answers so far, or fall back to needs_input | | timeout | call budget expired | fall back to needs_input | | cancelled | tool call aborted | stop gracefully | | no-host | no main session armed (headless/print mode) | fall back to needs_input | | error | host-side dialog failure | fall back to needs_input |

Workflows should treat every non-ok status as "produce a structured needs_input return instead of guessing."

In RPC mode the host's ctx.ui dialogs translate to the Extension UI Protocol (extension_ui_request / extension_ui_response), so the same design serves IDE/UI embeddings without changes.

Scope discipline

Do not expose ask_user_via_host to every agent. In custom agent frontmatter, load the extension narrowly:

extensions: [checkpoint-bridge]

extensions: [checkpoint-bridge] arms the relay; add tools: "*, ext:checkpoint-bridge" in agents that should be able to call ask_user_via_host.

Smoke test

node extensions/checkpoint-bridge/smoke.mjs

Runs three in-process scenarios (hosted relay, local-host call, no-host fallback) against a mocked bus and UI — no pi process needed.