@yusukeshib/pi-working-status
Replace pi's plain "Working..." loader with a live, detailed status line that tracks the agent through every phase of a turn.
Package details
Install @yusukeshib/pi-working-status from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@yusukeshib/pi-working-status- Package
@yusukeshib/pi-working-status- Version
0.1.0- Published
- May 30, 2026
- Downloads
- not available
- Author
- yusukeshib
- License
- MIT
- Types
- extension
- Size
- 16.3 KB
- Dependencies
- 0 dependencies · 1 peer
Pi manifest JSON
{
"extensions": [
"./extensions"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
@yusukeshib/pi-working-status
A pi extension that replaces the plain Working... loader
with a live, detailed status line tracking the agent through every phase of a
turn — request, streaming, and tool execution.
What it looks like
The detail in parentheses changes as the turn progresses:
Working... (0:02 · sending request to api.anthropic.com…)
Working... (0:04 · receiving reasoning stream… 240 tok · 1.2 KB)
Working... (0:07 · receiving text stream… 1.1k tok · 180 tok/s · 4.8 KB)
Working... (0:08 · ⚙ bash: npm test -- --watch=false)
Working... (0:09 · ⚙ running bash, read)
A fixed elapsed clock follows Working, and a detail segment shows the most
specific current activity:
| Detail | Meaning |
|---|---|
⚙ <tool>: <args> |
single tool executing (command / path / pattern) |
⚙ running <tools> |
multiple tools executing (deduped names, max 3) |
sending request to <host>… |
request being sent (first ~0.4s) |
waiting for response… <n>s |
request sent, awaiting any response |
receiving reasoning stream… |
provider streaming a reasoning block |
receiving text stream… |
provider streaming assistant text |
receiving tool call… |
provider streaming a tool call |
connected to <host>, waiting… <n>s |
headers received, awaiting first token |
HTTP <status> |
last response returned a non-2xx status |
Streaming lines append token counts, tok/s, and decoded byte counts when the
provider reports them mid-stream (Anthropic, Bedrock, Mistral, Google). Model
id and context-window usage are intentionally omitted — pi's footer already
shows them.
Install
pi install npm:@yusukeshib/pi-working-status
Via git (no npm publish required):
pi install git:github.com/yusukeshib/pi-working-status
Try it without installing:
pi -e npm:@yusukeshib/pi-working-status
Command
/working-status [on|off]
/working-status off— restore pi's defaultWorking...message/working-status on— re-enable the detailed status line/working-status— show the current on/off state
How it works
The extension subscribes to pi's turn lifecycle events
(before_provider_request, after_provider_response, message_update,
tool_execution_start/end) and a 1s ticker, then composes the status line
through ctx.ui.setWorkingMessage(). Token counts come from the provider's
streamed usage; tok/s and time-to-first-token are derived locally. Byte
counts are decoded payload size, not raw HTTP bytes.
License
MIT