@zerodawn/pi-core
v0.1.0
Published
Shared core for zerodawn PI extensions — DB, config, migrations, cache paths
Maintainers
Readme
@zerodawn/pi-core
Gedeelde core voor zerodawn's PI extensies. Levert één SQLite database, één config file en een migrations registry die door meerdere extensies tegelijk gebruikt kan worden.
Filosofie
Eén DB, één config, één plek waar het settings menu naartoe schrijft. Elke extensie krijgt z'n eigen namespace zonder z'n eigen connectie of file op te zetten.
~/.pi/agent/
core.db ← gedeelde SQLite, tabellen per namespace
core.json ← gedeelde config, secties per namespace
~/.cache/pi-core/
<namespace>/ ← per-extensie runtime cache (externally readable)Status
v0.1 — alleen DB, config, migrations. Connections (LiteLLM, API keys) en events bus komen later.
API
Database
import { getDb } from "@zerodawn/pi-core/db";
const db = getDb(); // singleton, lazy init
db.prepare("SELECT ...").all();Migrations
import { registerMigrations } from "@zerodawn/pi-core/migrations";
registerMigrations("gitflow", [
`CREATE TABLE gitflow_events (...)`,
`ALTER TABLE gitflow_events ADD COLUMN ...`,
]);Migrations zijn namespaced. Elke extensie houdt haar eigen versielijn bij in _migrations. Volgorde binnen de array is de versie-volgorde.
Config
import { getConfig, patchConfig } from "@zerodawn/pi-core/config";
const cfg = getConfig<{ pushTarget: string }>("gitflow");
patchConfig("gitflow", { pushTarget: "dev" });Cache
import { cacheDir } from "@zerodawn/pi-core";
const dir = cacheDir("pi-ping"); // ~/.cache/pi-core/pi-ping/
// caller is responsible for mkdirSync(..., { recursive: true })Voor runtime state die externe processen (tmux statusline, CLI subprocesses,
notifiers) direct moeten lezen — dus niet via een node + sqlite bootstrap.
Persistente queryable data hoort nog steeds in getDb.
Paths overrides
Voor tests of alternatieve setups:
ZERODAWN_CORE_ROOT=/tmp/test
ZERODAWN_CORE_DB=/tmp/test.db
ZERODAWN_CORE_CONFIG=/tmp/test.json
ZERODAWN_CORE_CACHE=/tmp/cacheRoadmap
v0.2— connections module (LiteLLM URL, API keys via env)v0.3— events bus voor cross-extension communicatiev0.4— postgres driver als alternatief voor sqlite
