Skip to content

Releases: ricatix/pi-9router

v0.1.2 — fix: /9router command not registered

Choose a tag to compare

@ricatix ricatix released this 18 Jun 06:15

Fix

  • Slash command /9router not registered after pi install npm:pi-9router

Root cause: package lacked the pi.extensions manifest in package.json, so Pi's
package loader only loaded dist/index.js for local:-prefixed installs via a
fallback path. npm: and git: installs resolved the package but never invoked
the factory in src/index.ts, so commands/tools/providers stayed unregistered —
even though pi list showed the package and defaultProvider/defaultModel got
written to settings.json from a side effect.

This release adds:

"pi": { "extensions": ["./dist/index.js"] }

to package.json so npm and git sources resolve dist/index.js the same way
local sources do.

Repro (before fix)

  1. pi install npm:pi-9router
  2. Start Pi, run pi listpi-9router is listed
  3. settings.json shows defaultProvider: 9router and defaultModel: ...
  4. Press / in the TUI → /9router is missing from the picker

Verification (after fix)

  1. pi install npm:pi-9router@0.1.2 (or just /reload if already installed)
  2. Press //9router appears
  3. cat ~/.pi/agent/npm/node_modules/pi-9router/package.json | grep -A2 '"pi"'
    should show the extensions array

Docs

  • README: noted the pi.extensions manifest under Installation
  • README: new Troubleshooting entry "Slash command /9router is not registered"
    with verification steps

Verification log

  • bun install --frozen-lockfile — no changes
  • bun run typecheck — clean
  • bun test — 7/7 pass
  • bun run builddist/ regenerated, dist/index.js still contains
    registerCommand("9router", ...)
  • npm OIDC trusted publish via v0.1.2 tag (Node 24, npm 11.5.1+) — success in 21s

v0.1.1

Choose a tag to compare

@ricatix ricatix released this 18 Jun 04:06

v0.1.1

Patch release focused on publishing reliability and release documentation.

Changed

  • Added npm Trusted Publishing workflow documentation.
  • Added release/versioning guide for SemVer and tag-based publishes.
  • Added agent knowledge base files for repository and source conventions.
  • Removed package-level provenance config so local manual publish does not fail outside OIDC.
  • Bumped package version to 0.1.1.

Publishing

  • Published to npm as pi-9router@0.1.1.
  • npm dist-tag: latest.
  • Provenance: GitHub OIDC Trusted Publishing with npm attestations.

Validation

  • bun run typecheck
  • bun test
  • bun run build
  • bun pm pack --dry-run

v0.1.0 — initial npm-ready release

Choose a tag to compare

@ricatix ricatix released this 18 Jun 03:12

Initial npm-ready release

Pi Coding Agent extension for 9router — an open-source AI routing proxy. Connect Pi to any 9router instance via its OpenAI-compatible API with dynamic model discovery, local cache, and graceful startup.

Features

  • /9router command with subcommands: status, refresh, models, setup, reasoning, clear
  • ninerouter_status LLM tool for read-only status checks
  • Dynamic 9router provider — registers via registerProvider with auto-discovery + cached models
  • models.dev enrichment with non-blocking fallback (5s timeout)
  • Dual env var support9ROUTER_* and NINE_ROUTER_* (9ROUTER_* wins)
  • Secure persistence — config and cache at ~/.pi/agent/9router-config.json with 0o600 permissions
  • Graceful startup — registers cached provider before refresh so Pi shows models on first paint

Quality

  • Strict TypeScript with ExtensionAPI typing from @earendil-works/pi-coding-agent
  • 7 unit tests, 15 expect() calls — bun test
  • bun run typecheck ✅, bun run build
  • Custom error hierarchy: NineRouterDiscoveryError, NineRouterAuthError, NineRouterValidationError, NineRouterEmptyModelsError
  • Secret redaction in all log/status paths

Install

pi install npm:pi-9router
# or
pi install git:github.com/ricatix/pi-9router

See README for configuration and usage.

License

MIT © 2026 ricatix