@earendil-works/pi-session-backend-sqlite-node 0.84.1 → 0.84.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/README.md +10 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/sqlite/migrations/001_initial.sql +4 -8
- package/dist/sqlite/repo.d.ts.map +1 -1
- package/dist/sqlite/repo.js +16 -21
- package/dist/sqlite/repo.js.map +1 -1
- package/dist/sqlite/search-backend.d.ts +7 -2
- package/dist/sqlite/search-backend.d.ts.map +1 -1
- package/dist/sqlite/search-backend.js +71 -34
- package/dist/sqlite/search-backend.js.map +1 -1
- package/dist/sqlite/sql.d.ts +1 -0
- package/dist/sqlite/sql.d.ts.map +1 -1
- package/dist/sqlite/sql.js +3 -0
- package/dist/sqlite/sql.js.map +1 -1
- package/dist/sqlite/storage/branch-entries.d.ts +2 -2
- package/dist/sqlite/storage/branch-entries.d.ts.map +1 -1
- package/dist/sqlite/storage/branch-entries.js +39 -22
- package/dist/sqlite/storage/branch-entries.js.map +1 -1
- package/dist/sqlite/storage/entries.d.ts +6 -2
- package/dist/sqlite/storage/entries.d.ts.map +1 -1
- package/dist/sqlite/storage/entries.js +9 -2
- package/dist/sqlite/storage/entries.js.map +1 -1
- package/dist/sqlite/storage/facts.d.ts.map +1 -1
- package/dist/sqlite/storage/facts.js +13 -11
- package/dist/sqlite/storage/facts.js.map +1 -1
- package/dist/sqlite/storage/records.d.ts +2 -2
- package/dist/sqlite/storage/records.d.ts.map +1 -1
- package/dist/sqlite/storage/records.js.map +1 -1
- package/dist/sqlite/storage/sessions.d.ts +2 -2
- package/dist/sqlite/storage/sessions.d.ts.map +1 -1
- package/dist/sqlite/storage/sessions.js +3 -4
- package/dist/sqlite/storage/sessions.js.map +1 -1
- package/dist/sqlite/types.d.ts +1 -0
- package/dist/sqlite/types.d.ts.map +1 -1
- package/dist/sqlite/types.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/sqlite/storage/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAqBhC,SAAS,aAAa,CAAC,QAAuB,EAAE,SAAiB,EAAuC;IACvG,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,YAAY,CACrB,SAAS,EACT,0BAA0B,SAAS,8BAA8B,EACjE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC1C,CAAC;IACH,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,0BAA0B,SAAS,8BAA8B,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,MAAiC,CAAC;AAAA,CACzC;AAED,MAAM,UAAU,aAAa,CAAC,EAAkB,EAAE,SAAiB,EAAE;IACpE,OAAO,CAAC,CAAC,GAAG,CAAA,8CAA8C,SAAS,EAAE,CAAC,GAAG,CAAoB,EAAE,CAAC,CAAC;AAAA,CACjG;AAED,SAAS,iBAAiB,CAAC,QAA6C,EAAiB;IACxF,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClF,MAAM,IAAI,YAAY,CAAC,iBAAiB,EAAE,2CAA2C,CAAC,CAAC;IACxF,CAAC;IACD,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAAA,CAChC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAkB,EAAE,OAAsB,EAAE;IAC5E,GAAG,CAAA;YACQ,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,SAAS,KAAK,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,eAAe,IAAI,IAAI,GAAG,CAAC,GAAG,CAC7I,EAAE,CACF,CAAC;AAAA,CACF;AAED,MAAM,UAAU,cAAc,CAAC,EAAkB,EAAE,SAAiB,EAAE;IACrE,OAAO,GAAG,CAAA;;;;;;;;;;;;;iBAaM,SAAS,EAAE,CAAC,GAAG,CAAa,EAAE,CAAC,CAAC;AAAA,CAChD;AAED,MAAM,UAAU,eAAe,CAAC,EAAkB,EAAE,OAAO,GAAqB,EAAE,EAAE;IACnF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAA,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA,iBAAiB,OAAO,CAAC,GAAG,EAAE,CAAC;IACpF,OAAO,GAAG,CAAA;;;;;;;;;;;;;IAaP,KAAK;6BACoB,CAAC,GAAG,CAAa,EAAE,CAAC,CAAC;AAAA,CACjD;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAkB,EAAE,SAAiB,EAAE;IACvE,GAAG,CAAA,mCAAmC,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAAA,CAC1D;AAED,SAAS,gBAAgB,CAAC,KAAoB,EAAE,SAAiB,
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/sqlite/storage/sessions.ts"],"names":[],"mappings":"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","sourcesContent":["import { assertJsonSerializable, SessionError } from \"@earendil-works/pi-agent-core\";\nimport { sql } from \"../sql.ts\";\nimport type { SqliteDatabase, SqliteSessionMetadata } from \"../types.ts\";\n\nexport interface SessionRow {\n\tid: string;\n\tcreated_at: number;\n\tmetadata: string | null;\n\tcwd: string;\n\tparent_session_id: string | null;\n\thas_session_name: number;\n\tsession_name: string | null;\n}\n\nexport interface NewSessionRow {\n\tid: string;\n\tcreatedAt: number;\n\tcwd: string;\n\tparentSessionId?: string;\n\tmetadata?: Record<string, unknown>;\n}\n\nfunction parseMetadata(metadata: string | null, sessionId: string): Record<string, unknown> | undefined {\n\tif (metadata === null) return undefined;\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(metadata);\n\t} catch (error) {\n\t\tthrow new SessionError(\n\t\t\t\"storage\",\n\t\t\t`Invalid SQLite session ${sessionId}: metadata is not valid JSON`,\n\t\t\terror instanceof Error ? error : undefined,\n\t\t);\n\t}\n\tif (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n\t\tthrow new SessionError(\"storage\", `Invalid SQLite session ${sessionId}: metadata must be an object`);\n\t}\n\treturn parsed as Record<string, unknown>;\n}\n\nexport function sessionExists(db: SqliteDatabase, sessionId: string) {\n\treturn !!sql`SELECT 1 AS found FROM sessions WHERE id = ${sessionId}`.get<{ found: number }>(db);\n}\n\nfunction serializeMetadata(metadata: Record<string, unknown> | undefined): string | null {\n\tif (metadata === undefined) return null;\n\tif (typeof metadata !== \"object\" || metadata === null || Array.isArray(metadata)) {\n\t\tthrow new SessionError(\"invalid_payload\", \"SQLite session metadata must be an object\");\n\t}\n\tassertJsonSerializable(metadata);\n\treturn JSON.stringify(metadata);\n}\n\nexport function insertSessionRow(db: SqliteDatabase, session: NewSessionRow) {\n\tsql`INSERT INTO sessions (id, created_at, metadata, cwd, parent_session_id)\n\t\tVALUES (${session.id}, ${session.createdAt}, ${serializeMetadata(session.metadata)}, ${session.cwd}, ${session.parentSessionId ?? null})`.run(\n\t\tdb,\n\t);\n}\n\nexport function readSessionRow(db: SqliteDatabase, sessionId: string) {\n\treturn sql`SELECT s.id, s.created_at, s.metadata, s.cwd, s.parent_session_id,\n\t\t\tname_fact.seq IS NOT NULL AS has_session_name,\n\t\t\tname_fact.value AS session_name\n\t\tFROM sessions AS s\n\t\tLEFT JOIN facts AS name_fact\n\t\t\tON name_fact.session_id = s.id\n\t\t\tAND name_fact.kind = 'name'\n\t\t\tAND name_fact.key IS NULL\n\t\t\tAND name_fact.seq = (\n\t\t\t\tSELECT MAX(f.seq)\n\t\t\t\tFROM facts AS f\n\t\t\t\tWHERE f.session_id = s.id AND f.kind = 'name' AND f.key IS NULL\n\t\t\t)\n\t\tWHERE s.id = ${sessionId}`.get<SessionRow>(db);\n}\n\nexport function readSessionRows(db: SqliteDatabase, options: { cwd?: string } = {}) {\n\tconst where = options.cwd === undefined ? sql`` : sql`WHERE s.cwd = ${options.cwd}`;\n\treturn sql`SELECT s.id, s.created_at, s.metadata, s.cwd, s.parent_session_id,\n\t\t\tname_fact.seq IS NOT NULL AS has_session_name,\n\t\t\tname_fact.value AS session_name\n\t\tFROM sessions AS s\n\t\tLEFT JOIN facts AS name_fact\n\t\t\tON name_fact.session_id = s.id\n\t\t\tAND name_fact.kind = 'name'\n\t\t\tAND name_fact.key IS NULL\n\t\t\tAND name_fact.seq = (\n\t\t\t\tSELECT MAX(f.seq)\n\t\t\t\tFROM facts AS f\n\t\t\t\tWHERE f.session_id = s.id AND f.kind = 'name' AND f.key IS NULL\n\t\t\t)\n\t\t${where}\n\t\tORDER BY s.created_at DESC`.all<SessionRow>(db);\n}\n\nexport function deleteSessionRow(db: SqliteDatabase, sessionId: string) {\n\tsql`DELETE FROM sessions WHERE id = ${sessionId}`.run(db);\n}\n\nfunction parseSessionName(value: string | null, sessionId: string): string | undefined {\n\tif (value === null) return undefined;\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(value);\n\t} catch (error) {\n\t\tthrow new SessionError(\n\t\t\t\"storage\",\n\t\t\t`Invalid SQLite session ${sessionId}: name is not valid JSON`,\n\t\t\terror instanceof Error ? error : undefined,\n\t\t);\n\t}\n\tif (typeof parsed !== \"string\") {\n\t\tthrow new SessionError(\"storage\", `Invalid SQLite session ${sessionId}: name must be a string`);\n\t}\n\treturn parsed;\n}\n\nexport function decodeSessionMetadata(row: SessionRow, path: string): SqliteSessionMetadata {\n\tconst metadata = parseMetadata(row.metadata, row.id);\n\tconst name = row.has_session_name === 0 ? undefined : parseSessionName(row.session_name, row.id);\n\treturn {\n\t\tid: row.id,\n\t\tcreatedAt: row.created_at,\n\t\t...(name === undefined ? {} : { name }),\n\t\tcwd: row.cwd,\n\t\tpath,\n\t\tparentSessionId: row.parent_session_id ?? undefined,\n\t\tmetadata,\n\t};\n}\n"]}
|
package/dist/sqlite/types.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export interface SqliteStatement {
|
|
|
11
11
|
run(...params: unknown[]): SqliteRunResult;
|
|
12
12
|
get<TRow extends object>(...params: unknown[]): TRow | undefined;
|
|
13
13
|
all<TRow extends object>(...params: unknown[]): TRow[];
|
|
14
|
+
iterate<TRow extends object>(...params: unknown[]): Iterable<TRow>;
|
|
14
15
|
}
|
|
15
16
|
/** SQLite database capability used by the SQLite session backend. */
|
|
16
17
|
export interface SqliteDatabase {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sqlite/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEvG,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC/B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,+EAA+E;AAC/E,MAAM,WAAW,eAAe;IAC/B,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC;IAC3C,GAAG,CAAC,IAAI,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IACjE,GAAG,CAAC,IAAI,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sqlite/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEvG,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC/B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,+EAA+E;AAC/E,MAAM,WAAW,eAAe;IAC/B,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC;IAC3C,GAAG,CAAC,IAAI,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IACjE,GAAG,CAAC,IAAI,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;IACvD,OAAO,CAAC,IAAI,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;CACnE;AAED,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC9B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC;IACtC,oFAAoF;IACpF,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,KAAK,IAAI,IAAI,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACrC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAC7D,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACvE,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,wBAAwB;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,GAAG,WAAW,GAAG,QAAQ,CAAC,CAAC","sourcesContent":["import type { FileSystem, SessionCreateOptions, SessionMetadata } from \"@earendil-works/pi-agent-core\";\n\n/** Result of a prepared SQLite statement execution. */\nexport interface SqliteRunResult {\n\t/** Number of rows changed by the statement. */\n\tchanges: number;\n\t/** Inserted row id when the backend exposes one. */\n\tlastInsertRowid?: number;\n}\n\n/** Prepared SQLite statement capability used by the SQLite session backend. */\nexport interface SqliteStatement {\n\trun(...params: unknown[]): SqliteRunResult;\n\tget<TRow extends object>(...params: unknown[]): TRow | undefined;\n\tall<TRow extends object>(...params: unknown[]): TRow[];\n\titerate<TRow extends object>(...params: unknown[]): Iterable<TRow>;\n}\n\n/** SQLite database capability used by the SQLite session backend. */\nexport interface SqliteDatabase {\n\texec(sql: string): void;\n\tprepare(sql: string): SqliteStatement;\n\t/** Runs a synchronous write transaction. The callback must not return a promise. */\n\ttransaction<T>(fn: () => T): T;\n\tclose(): void;\n}\n\nexport interface SqliteDatabaseFactory {\n\topen(path: string): Promise<SqliteDatabase>;\n}\n\nexport interface SqliteSessionMetadata extends SessionMetadata {\n\tcwd: string;\n\tpath: string;\n\tparentSessionId?: string;\n\t/** Current session name projected from SQLite global facts. */\n\tname?: string;\n\t/** Opaque application-owned metadata. */\n\tmetadata?: Record<string, unknown>;\n}\n\nexport interface SqliteSessionCreateOptions extends SessionCreateOptions {\n\tcwd: string;\n\tparentSessionId?: string;\n\tmetadata?: Record<string, unknown>;\n}\n\nexport interface SqliteSessionListOptions {\n\tcwd?: string;\n}\n\nexport type SqliteSessionRepositoryEnv = Pick<FileSystem, \"absolutePath\" | \"createDir\" | \"exists\">;\n"]}
|
package/dist/sqlite/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sqlite/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { FileSystem, SessionCreateOptions, SessionMetadata } from \"@earendil-works/pi-agent-core\";\n\n/** Result of a prepared SQLite statement execution. */\nexport interface SqliteRunResult {\n\t/** Number of rows changed by the statement. */\n\tchanges: number;\n\t/** Inserted row id when the backend exposes one. */\n\tlastInsertRowid?: number;\n}\n\n/** Prepared SQLite statement capability used by the SQLite session backend. */\nexport interface SqliteStatement {\n\trun(...params: unknown[]): SqliteRunResult;\n\tget<TRow extends object>(...params: unknown[]): TRow | undefined;\n\tall<TRow extends object>(...params: unknown[]): TRow[];\n}\n\n/** SQLite database capability used by the SQLite session backend. */\nexport interface SqliteDatabase {\n\texec(sql: string): void;\n\tprepare(sql: string): SqliteStatement;\n\t/** Runs a synchronous write transaction. The callback must not return a promise. */\n\ttransaction<T>(fn: () => T): T;\n\tclose(): void;\n}\n\nexport interface SqliteDatabaseFactory {\n\topen(path: string): Promise<SqliteDatabase>;\n}\n\nexport interface SqliteSessionMetadata extends SessionMetadata {\n\tcwd: string;\n\tpath: string;\n\tparentSessionId?: string;\n\t/** Current session name projected from SQLite global facts. */\n\tname?: string;\n\t/** Opaque application-owned metadata. */\n\tmetadata?: Record<string, unknown>;\n}\n\nexport interface SqliteSessionCreateOptions extends SessionCreateOptions {\n\tcwd: string;\n\tparentSessionId?: string;\n\tmetadata?: Record<string, unknown>;\n}\n\nexport interface SqliteSessionListOptions {\n\tcwd?: string;\n}\n\nexport type SqliteSessionRepositoryEnv = Pick<FileSystem, \"absolutePath\" | \"createDir\" | \"exists\">;\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sqlite/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { FileSystem, SessionCreateOptions, SessionMetadata } from \"@earendil-works/pi-agent-core\";\n\n/** Result of a prepared SQLite statement execution. */\nexport interface SqliteRunResult {\n\t/** Number of rows changed by the statement. */\n\tchanges: number;\n\t/** Inserted row id when the backend exposes one. */\n\tlastInsertRowid?: number;\n}\n\n/** Prepared SQLite statement capability used by the SQLite session backend. */\nexport interface SqliteStatement {\n\trun(...params: unknown[]): SqliteRunResult;\n\tget<TRow extends object>(...params: unknown[]): TRow | undefined;\n\tall<TRow extends object>(...params: unknown[]): TRow[];\n\titerate<TRow extends object>(...params: unknown[]): Iterable<TRow>;\n}\n\n/** SQLite database capability used by the SQLite session backend. */\nexport interface SqliteDatabase {\n\texec(sql: string): void;\n\tprepare(sql: string): SqliteStatement;\n\t/** Runs a synchronous write transaction. The callback must not return a promise. */\n\ttransaction<T>(fn: () => T): T;\n\tclose(): void;\n}\n\nexport interface SqliteDatabaseFactory {\n\topen(path: string): Promise<SqliteDatabase>;\n}\n\nexport interface SqliteSessionMetadata extends SessionMetadata {\n\tcwd: string;\n\tpath: string;\n\tparentSessionId?: string;\n\t/** Current session name projected from SQLite global facts. */\n\tname?: string;\n\t/** Opaque application-owned metadata. */\n\tmetadata?: Record<string, unknown>;\n}\n\nexport interface SqliteSessionCreateOptions extends SessionCreateOptions {\n\tcwd: string;\n\tparentSessionId?: string;\n\tmetadata?: Record<string, unknown>;\n}\n\nexport interface SqliteSessionListOptions {\n\tcwd?: string;\n}\n\nexport type SqliteSessionRepositoryEnv = Pick<FileSystem, \"absolutePath\" | \"createDir\" | \"exists\">;\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@earendil-works/pi-session-backend-sqlite-node",
|
|
3
|
-
"version": "0.84.
|
|
3
|
+
"version": "0.84.2",
|
|
4
4
|
"description": "Node sqlite session backend for @earendil-works/pi-agent-core sessions",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"node": ">=22.19.0"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@earendil-works/pi-ai": "^0.84.
|
|
38
|
-
"@earendil-works/pi-agent-core": "^0.84.
|
|
37
|
+
"@earendil-works/pi-ai": "^0.84.2",
|
|
38
|
+
"@earendil-works/pi-agent-core": "^0.84.2"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@vitest/coverage-v8": "4.1.9",
|