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

@markoonakic/pi-working-line

v0.1.3

Published

Claude-style working message phrases and elapsed timer for Pi.

Readme

Pi Working Line

Claude-style working messages for Pi.

pi-working-line replaces Pi's default working message with a per-turn phrase and an elapsed timer.

Pi Working Line menu

Baking... · 12s
Herding... · 1m 04s
Baking... · running bash · 45s · thought for 8s

Install

pi install npm:@markoonakic/pi-working-line

For local development:

{
  "packages": ["/path/to/pi-working-line"]
}

What It Does

  • Picks one working phrase per agent turn.
  • Shows elapsed time next to the phrase.
  • Shows the currently running tool as a suffix.
  • Shows thinking state and thinking duration when Pi exposes thinking stream events.
  • Can show an approximate live output token count.
  • Can optionally add a visible turn-duration message after long turns.
  • Restores Pi's default working message when the turn ends.

What It Does Not Do

  • It does not replace spinner frames.
  • It does not integrate with task/subagent extensions yet.

Command

/working-line

Opens a compact Pi-native menu for common settings:

pi-working-line
Baking... · running bash · 12s · thinking

> Toggle tokens        off
  Toggle thinking      on
  Toggle tool suffix   on
  Toggle turn message  off
  Configure phrases

Power-user commands:

/working-line status
/working-line help
/working-line tokens on|off
/working-line thinking on|off
/working-line suffix on|off
/working-line turn-duration on|off
/working-line turn-duration threshold 45s
/working-line phrases add Reticulating
/working-line phrases mode append|replace
/working-line phrases reset
/working-line reset

Configure phrases lets you add one phrase, edit custom phrases one per line, switch between append and replace, or reset custom phrases. replace mode requires at least one custom phrase.

Command changes are saved to global ~/.pi/agent/settings.json and applied to the current session immediately. Project .pi/settings.json overrides are read when rendering working lines, but command writes are intentionally global because this is personal UI behavior.

Configuration

Configure it in ~/.pi/agent/settings.json:

{
  "pi-working-line": {
    "enabled": true,
    "phrases": {
      "mode": "append",
      "verbs": []
    },
    "segments": {
      "phrase": true,
      "suffix": true,
      "elapsed": true,
      "thinking": true,
      "tokens": false
    },
    "turnDuration": {
      "enabled": false,
      "thresholdMs": 30000
    }
  }
}

Defaults:

  • phrases.mode: append
  • phrases.verbs: []
  • phrase: on
  • suffix: on
  • elapsed: on
  • thinking: on
  • tokens: off, because it is an approximate text_delta.length / 4 estimate
  • turnDuration: off, because it adds a visible transcript message

Example with tokens enabled:

Baking... · running bash · 45s · thought for 8s · ↓ 1.8k tokens

Example turn-duration message when enabled:

Baked for 1m 06s

Custom Phrases

Append your own phrases to the built-in list:

{
  "pi-working-line": {
    "phrases": {
      "mode": "append",
      "verbs": ["Consulting", "Reticulating"]
    }
  }
}

Replace the built-in list entirely:

{
  "pi-working-line": {
    "phrases": {
      "mode": "replace",
      "verbs": ["Consulting", "Reticulating"]
    }
  }
}

Manual JSON editing is optional. Use /working-line for normal configuration.

Compatibility

This extension intentionally owns the whole ctx.ui.setWorkingMessage(...) surface. Do not run it together with another extension that continuously rewrites the working message, or the extensions will overwrite each other.

It is fine to use alongside spinner-frame extensions, footer extensions, and theme extensions that do not call setWorkingMessage().

Development

npm install
npm run check
npm run pack:dry