@agentxjs/persistence 1.8.1 → 1.9.0
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/dist/drivers/sqlite.js +48 -19
- package/dist/drivers/sqlite.js.map +3 -3
- package/package.json +3 -11
package/dist/drivers/sqlite.js
CHANGED
|
@@ -19,28 +19,57 @@ var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
|
19
19
|
|
|
20
20
|
// src/drivers/sqlite.ts
|
|
21
21
|
import { createStorage } from "unstorage";
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
22
|
+
import { openDatabase } from "@agentxjs/common/sqlite";
|
|
23
|
+
function createSqliteUnstorageDriver(db) {
|
|
24
|
+
db.exec(`
|
|
25
|
+
CREATE TABLE IF NOT EXISTS kv_storage (
|
|
26
|
+
key TEXT PRIMARY KEY,
|
|
27
|
+
value TEXT NOT NULL,
|
|
28
|
+
created_at INTEGER NOT NULL,
|
|
29
|
+
updated_at INTEGER NOT NULL
|
|
30
|
+
);
|
|
31
|
+
CREATE INDEX IF NOT EXISTS idx_kv_key ON kv_storage(key);
|
|
32
|
+
`);
|
|
33
|
+
return {
|
|
34
|
+
name: "agentx-sqlite",
|
|
35
|
+
hasItem(key) {
|
|
36
|
+
const row = db.prepare("SELECT 1 FROM kv_storage WHERE key = ?").get(key);
|
|
37
|
+
return row !== undefined;
|
|
38
|
+
},
|
|
39
|
+
getItem(key) {
|
|
40
|
+
const row = db.prepare("SELECT value FROM kv_storage WHERE key = ?").get(key);
|
|
41
|
+
return row?.value ?? null;
|
|
42
|
+
},
|
|
43
|
+
setItem(key, value) {
|
|
44
|
+
const now = Date.now();
|
|
45
|
+
const existing = db.prepare("SELECT 1 FROM kv_storage WHERE key = ?").get(key);
|
|
46
|
+
if (existing) {
|
|
47
|
+
db.prepare("UPDATE kv_storage SET value = ?, updated_at = ? WHERE key = ?").run(value, now, key);
|
|
48
|
+
} else {
|
|
49
|
+
db.prepare("INSERT INTO kv_storage (key, value, created_at, updated_at) VALUES (?, ?, ?, ?)").run(key, value, now, now);
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
removeItem(key) {
|
|
53
|
+
db.prepare("DELETE FROM kv_storage WHERE key = ?").run(key);
|
|
54
|
+
},
|
|
55
|
+
getKeys() {
|
|
56
|
+
const rows = db.prepare("SELECT key FROM kv_storage").all();
|
|
57
|
+
return rows.map((r) => r.key);
|
|
58
|
+
},
|
|
59
|
+
clear() {
|
|
60
|
+
db.exec("DELETE FROM kv_storage");
|
|
61
|
+
},
|
|
62
|
+
dispose() {
|
|
63
|
+
db.close();
|
|
64
|
+
}
|
|
65
|
+
};
|
|
33
66
|
}
|
|
34
67
|
function sqliteDriver(options) {
|
|
35
68
|
return {
|
|
36
69
|
async createStorage() {
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
const database = createDatabase(connector);
|
|
41
|
-
return createStorage({
|
|
42
|
-
driver: db0Driver({ database })
|
|
43
|
-
});
|
|
70
|
+
const db = openDatabase(options.path);
|
|
71
|
+
const driver = createSqliteUnstorageDriver(db);
|
|
72
|
+
return createStorage({ driver });
|
|
44
73
|
}
|
|
45
74
|
};
|
|
46
75
|
}
|
|
@@ -48,4 +77,4 @@ export {
|
|
|
48
77
|
sqliteDriver
|
|
49
78
|
};
|
|
50
79
|
|
|
51
|
-
//# debugId=
|
|
80
|
+
//# debugId=C7DB872B4F7049E064756E2164756E21
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/drivers/sqlite.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"/**\n * SQLite Driver - SQLite database storage\n *\n * Uses
|
|
5
|
+
"/**\n * SQLite Driver - SQLite database storage\n *\n * Uses @agentxjs/common SQLite abstraction with automatic runtime detection:\n * - Bun: uses bun:sqlite (built-in)\n * - Node.js 22+: uses node:sqlite (built-in)\n *\n * @example\n * ```typescript\n * import { createPersistence } from \"@agentxjs/persistence\";\n * import { sqliteDriver } from \"@agentxjs/persistence/sqlite\";\n *\n * const persistence = await createPersistence(\n * sqliteDriver({ path: \"./data/agentx.db\" })\n * );\n * ```\n */\n\nimport { createStorage, type Storage, type Driver } from \"unstorage\";\nimport { openDatabase, type Database } from \"@agentxjs/common/sqlite\";\nimport type { PersistenceDriver } from \"../Persistence\";\n\nexport interface SqliteDriverOptions {\n /**\n * Path to SQLite database file\n * @example \"./data/agentx.db\"\n */\n path: string;\n}\n\n/**\n * Create a custom unstorage driver using our SQLite abstraction\n */\nfunction createSqliteUnstorageDriver(db: Database): Driver {\n // Initialize schema\n db.exec(`\n CREATE TABLE IF NOT EXISTS kv_storage (\n key TEXT PRIMARY KEY,\n value TEXT NOT NULL,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL\n );\n CREATE INDEX IF NOT EXISTS idx_kv_key ON kv_storage(key);\n `);\n\n return {\n name: \"agentx-sqlite\",\n\n hasItem(key: string): boolean {\n const row = db.prepare(\"SELECT 1 FROM kv_storage WHERE key = ?\").get(key);\n return row !== undefined;\n },\n\n getItem(key: string): string | null {\n const row = db.prepare(\"SELECT value FROM kv_storage WHERE key = ?\").get(key) as\n | { value: string }\n | undefined;\n return row?.value ?? null;\n },\n\n setItem(key: string, value: string): void {\n const now = Date.now();\n const existing = db.prepare(\"SELECT 1 FROM kv_storage WHERE key = ?\").get(key);\n if (existing) {\n db.prepare(\"UPDATE kv_storage SET value = ?, updated_at = ? WHERE key = ?\").run(\n value,\n now,\n key\n );\n } else {\n db.prepare(\n \"INSERT INTO kv_storage (key, value, created_at, updated_at) VALUES (?, ?, ?, ?)\"\n ).run(key, value, now, now);\n }\n },\n\n removeItem(key: string): void {\n db.prepare(\"DELETE FROM kv_storage WHERE key = ?\").run(key);\n },\n\n getKeys(): string[] {\n const rows = db.prepare(\"SELECT key FROM kv_storage\").all() as { key: string }[];\n return rows.map((r) => r.key);\n },\n\n clear(): void {\n db.exec(\"DELETE FROM kv_storage\");\n },\n\n dispose(): void {\n db.close();\n },\n };\n}\n\n/**\n * Create a SQLite driver\n *\n * @param options - Driver options\n */\nexport function sqliteDriver(options: SqliteDriverOptions): PersistenceDriver {\n return {\n async createStorage(): Promise<Storage> {\n const db = openDatabase(options.path);\n const driver = createSqliteUnstorageDriver(db);\n\n return createStorage({ driver });\n },\n };\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAkBA;
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAkBA;AACA;AAcA,SAAS,2BAA2B,CAAC,IAAsB;AAAA,EAEzD,GAAG,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQP;AAAA,EAED,OAAO;AAAA,IACL,MAAM;AAAA,IAEN,OAAO,CAAC,KAAsB;AAAA,MAC5B,MAAM,MAAM,GAAG,QAAQ,wCAAwC,EAAE,IAAI,GAAG;AAAA,MACxE,OAAO,QAAQ;AAAA;AAAA,IAGjB,OAAO,CAAC,KAA4B;AAAA,MAClC,MAAM,MAAM,GAAG,QAAQ,4CAA4C,EAAE,IAAI,GAAG;AAAA,MAG5E,OAAO,KAAK,SAAS;AAAA;AAAA,IAGvB,OAAO,CAAC,KAAa,OAAqB;AAAA,MACxC,MAAM,MAAM,KAAK,IAAI;AAAA,MACrB,MAAM,WAAW,GAAG,QAAQ,wCAAwC,EAAE,IAAI,GAAG;AAAA,MAC7E,IAAI,UAAU;AAAA,QACZ,GAAG,QAAQ,+DAA+D,EAAE,IAC1E,OACA,KACA,GACF;AAAA,MACF,EAAO;AAAA,QACL,GAAG,QACD,iFACF,EAAE,IAAI,KAAK,OAAO,KAAK,GAAG;AAAA;AAAA;AAAA,IAI9B,UAAU,CAAC,KAAmB;AAAA,MAC5B,GAAG,QAAQ,sCAAsC,EAAE,IAAI,GAAG;AAAA;AAAA,IAG5D,OAAO,GAAa;AAAA,MAClB,MAAM,OAAO,GAAG,QAAQ,4BAA4B,EAAE,IAAI;AAAA,MAC1D,OAAO,KAAK,IAAI,CAAC,MAAM,EAAE,GAAG;AAAA;AAAA,IAG9B,KAAK,GAAS;AAAA,MACZ,GAAG,KAAK,wBAAwB;AAAA;AAAA,IAGlC,OAAO,GAAS;AAAA,MACd,GAAG,MAAM;AAAA;AAAA,EAEb;AAAA;AAQK,SAAS,YAAY,CAAC,SAAiD;AAAA,EAC5E,OAAO;AAAA,SACC,cAAa,GAAqB;AAAA,MACtC,MAAM,KAAK,aAAa,QAAQ,IAAI;AAAA,MACpC,MAAM,SAAS,4BAA4B,EAAE;AAAA,MAE7C,OAAO,cAAc,EAAE,OAAO,CAAC;AAAA;AAAA,EAEnC;AAAA;",
|
|
8
|
+
"debugId": "C7DB872B4F7049E064756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentxjs/persistence",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"description": "Multi-backend persistence layer for AgentX - supports memory, SQLite, Redis, MongoDB, and SQL databases",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agentx",
|
|
@@ -63,18 +63,10 @@
|
|
|
63
63
|
"clean": "rm -rf dist"
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
|
-
"@agentxjs/common": "^1.
|
|
67
|
-
"@agentxjs/types": "^1.
|
|
66
|
+
"@agentxjs/common": "^1.9.0",
|
|
67
|
+
"@agentxjs/types": "^1.9.0",
|
|
68
68
|
"unstorage": "^1.14.4"
|
|
69
69
|
},
|
|
70
|
-
"peerDependencies": {
|
|
71
|
-
"db0": "^0.2.0"
|
|
72
|
-
},
|
|
73
|
-
"peerDependenciesMeta": {
|
|
74
|
-
"db0": {
|
|
75
|
-
"optional": true
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
70
|
"publishConfig": {
|
|
79
71
|
"access": "public"
|
|
80
72
|
}
|