Development
mise run setup once: it installs the node dependencies and the hk git hooks. Never bypass the hooks; fix what they report.
| Task | Alias | What |
|---|---|---|
mise run check |
c |
biome, dprint, tsc across the repo |
mise run fix |
f |
Apply lint and format fixes |
mise run test |
t |
Unit suite: deterministic, no backend, no network, no LLM |
mise run test:integration |
ti |
Real uvx and onnx round trip; needs uv, gated on PI_MEMSEARCH_IT=1, 5 min timeout |
mise run dev |
d |
pi with the local extension loaded |
No build step
Section titled “No build step”pi loads extensions/*.ts through jiti, so the package ships TypeScript source rather than compiled output. Two consequences worth knowing before the first edit:
- relative imports carry explicit
.tsextensions - nothing is compiled, so
tscruns as a typechecker and emits no files
The site is the one exception. docs/ is a standalone Astro project with its own package.json and lockfile, outside every mise task and built by its own workflow: npm --prefix docs ci, then npm --prefix docs run build.
Going further
Section titled “Going further”Test layout, the integration suite, the release process, and the rule that a PR changing runtime behavior updates the runtime page in the same commit: CONTRIBUTING.md.