Hub: ๐ OMP Extensions ยท Contract: ๐งญ Extension UX Contract ยท Runtime:
omponly.
1. ๐ Blueprint
id: ompbar # display/SSOT id
runtime_file: ~/.omp/agent/extensions/statusbar.ts
rebrand: planned separately; do not load duplicate wrappers
config: ~/.omp/agent/statusbar.json
surface: widget # colored ยท aboveEditor
command: /statusbar
command_owner: ompbar
api: pi.on(session_*) + pi.setWidget | pi.setStatus
deps: "@oh-my-pi/pi-tui"
status: planned # loads; interactive HUD verification remains2. ๐ฏ Purpose
Event-driven telemetry strip: model ยท context ยท tokens ยท TPS ยท git ยท tools ยท agents ยท quota ยท todos ยท update.
No polling loop โ one change-gated render per tick; async work carries session epoch.
3. โ๏ธ Config quick-ref
| Key | Yours | Meaning |
|---|---|---|
surface | widget | Color HUD (status = plain, ANSI stripped) |
placement | aboveEditor | Widget position |
order | brandโmodelโโฆโupdate | Segment left-to-right |
segments.*.enabled | most on | Toggle per segment |
4. ๐ฎ Commands
| Command | Effect |
|---|---|
/statusbar | Interactive config panel |
/statusbar widget | Colored widget mode |
/statusbar status | Plain status line |
/statusbar debug | surface=widget todo=โฆ quota=โฆ |
/statusbar reload | Hot-reload statusbar.json |
5. ๐ Optional event bus
OMP does not emit these โ extensions or scripts can:
pi.events.emit("statusbar:loop", { remaining: 6 }); // โโถ
pi.events.emit("statusbar:mode", { key: "plan", text: "โค" });Subagent lifecycle: listens on task:subagent:lifecycle.
6. ๐๏ธ Architecture
flowchart LR E[OMP events] --> S[statusbar.ts] C[statusbar.json] --> S S --> W[setWidget / setStatus] W --> TUI[Editor HUD]
7. โ Done when
- Bar visible above editor in interactive
omp -
/statusbar debugโsurface=widget - Context + token segments update per turn
- Git segment refreshes after file saves
8. ๐ง Next (optional)
- Enable
activity/clocksegments in config - Emit
statusbar:loopfrom custom automation - Deduplicate
extensions/statusline/dev copy if unused