feat: sqlite persistence with goose migrations, flashcard schema, zap logger

- Add SQLite as authoritative store alongside Qdrant (best-effort indexing)
- Use goose for embedded SQL migrations
- Schema matches flashcard format: id(INTEGER PK), note, repos, host, tags, user, context, created
- Replace std log with zap structured logger
- Split registerTools into registerStoreKnowledge + registerSearchKnowledge
- Qdrant index uses SQLite rowid directly as point ID (no SHA256 hash)
- Search enriches Qdrant results from SQLite by ID
- Lowercase auth header before prefix check
- Always handle json.MarshalIndent errors
- NixOS: StateDirectory, sqlitePath to /var/lib/st-pierre/st-pierre.sqlite
This commit is contained in:
didier committed 2026-06-02 10:01:28 -04:00
1 parent 5ac11631d4
commit 39c6185b70
8 files changed
+366 -94

No files matched your search

+14
View File
@@ -0,0 +1,14 @@
-- +goose Up
CREATE TABLE IF NOT EXISTS knowledge (
id INTEGER PRIMARY KEY,
note TEXT NOT NULL,
repos TEXT,
host TEXT,
tags TEXT,
"user" TEXT,
context TEXT,
created TEXT NOT NULL DEFAULT (datetime('now'))
);
-- +goose Down
DROP TABLE IF EXISTS knowledge;