mirror of
https://github.com/badlogic/pi-mono.git
synced 2026-08-23 23:54:00 +00:00
* refactor: search out of repo * fix: apply cases, no resolve for index on every hit * chore: tests * fix: use iterator and no open * refactor: public dir stuff in jsonl, source * cleanup and sqlite time number * fix: use storage for label search too, delete types * refactor: abstract some more * docs: example jsonl with elastic search * docs: Christian's md * refactor: simpler api surface * feat: rebuild * docs: consolidate * fix: use trigger for sqlite, cleanup indexable, add example in doc * chore: restore upstream responses shared * fix: delete metadata from jsonl search hit * fix: AsynIterable * refactor: scanning for memory, reuse * fix: dont export jsonlSessionDirectoryName * cleanup: more shared stuff * cleanup: why, jsonl?
22 lines
1,008 B
Markdown
22 lines
1,008 B
Markdown
# @earendil-works/pi-session-backend-sqlite-node
|
|
|
|
Node sqlite session backend for `@earendil-works/pi-agent-core` sessions. Provides the
|
|
`node:sqlite` adapter (`SqliteDatabase` implementation), SQLite session repository,
|
|
migrations, materialized views, and optional FTS search.
|
|
|
|
```ts
|
|
await using repository = new SqliteSessionRepository(options);
|
|
const search = createSqliteSessionSearch(options);
|
|
const session = await repository.create({ cwd });
|
|
await session.appendMessage(message);
|
|
|
|
const hits = [];
|
|
for await (const hit of search.search("needle")) hits.push(hit);
|
|
```
|
|
|
|
The repository lazily owns one shared database connection. Search is an independent
|
|
service over the same canonical database: repositories do not expose `search()`.
|
|
The FTS table and triggers are created lazily on the first non-blank search; when
|
|
FTS is first created, search performs a one-time rebuild from canonical entries.
|
|
After that, SQLite triggers keep FTS in sync with canonical entry inserts, deletes,
|
|
and payload updates.
|