pi-extensions #
small, independently useful extensions for pi. capabilities are added from demonstrated needs rather than as a framework roadmap.
install #
each extension is its own package under extensions/, published to npm
under @waow.tech, so one installs alone:
pi install npm:@waow.tech/lore
installing the repository itself loads every extension in it:
pi install https://tangled.org/zzstoatzz.io/pi-extensions
pi config enables or disables them individually either way.
arrival #
text-first startup header with project/model information and command-source provenance.
/arrival cycles through a small block π, an ASCII orbit, and a plain layout;
/arrival plain selects directly. Narrow terminals omit the art automatically.
uses stock Pi's public header API: no fork, images, or changes to native diagnostics. see extensions/arrival/README.md.
lore #
breadcrumbs an agent leaves while working with you, each with its link, kept as records in a space on your PDS. one space per project, shared by handle. read into the prompt at session start; written only when you ask, after you confirm.
/lore login <handle>signs in through your PDS in the browser. then/loreshows the project's space and/lore note <text>saves your words; asking the agent to remember something saves its, after you confirm/lore share <handle>; on their side/lore join <owner> <key>/lore helpfor the rest; lore.waow.tech lists your spaces- package: @waow.tech/lore
- everyone involved needs an account on a PDS that implements the spaces alpha
- design: extensions/lore/README.md
bufo-mood #
after each response, reduces it to a single mood word via the session's current model, searches find-bufo.com, and renders the top matching bufo above the editor via the kitty graphics protocol.
/bufotoggles it- gifs are converted to a first-frame png with
sips(macOS), since the kitty protocol only transmits png - requests
formats=png,jpgfrom find-bufo to prefer static images
what once slopped can be slopped again
background-jobs #
runs commands as session-owned tasks while the agent continues with other work:
background_jobstarts a finite command and delivers one terminal resultmonitorstarts a command whose output lines join the next user-started turn as coalesced eventsbackground_tasklists, inspects, and stops either kind through sharedtask-*IDs
this iteration remains deliberately session-scoped:
- tasks are stopped on reload, session switch, fork, or Pi exit
- output and pending monitor events are bounded in-memory tails, not durable logs
- observing a task consumes any queued notification already represented by that snapshot
- the transcript stays compact;
ctrl+oreveals command, cwd, and more output - stopping targets the POSIX process group and escalates from TERM to KILL
- it does not manage services, recurring schedules, restarts, re-adoption, or PTYs
for development:
npm ci && npm ci --prefix site
npm run check
pi -e ./extensions/background-jobs/index.ts
ci #
tangled runs .tangled/workflows/check.yml for pushes and pull requests to
main: locked dependencies, then typecheck, lint, and tests across every
workspace, a dry-run pack of lore, and a site build.