@sandbox-agent/persist-indexeddb 0.3.2 → 0.4.0-rc.1

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/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # @sandbox-agent/persist-indexeddb
2
+
3
+ > **Deprecated:** This package has been deprecated and removed.
4
+
5
+ Copy the driver source into your project. See the [reference implementation](https://github.com/rivet-dev/sandbox-agent/tree/main/frontend/packages/inspector/src/persist-indexeddb.ts) and the [session persistence docs](https://sandboxagent.dev/session-persistence) for guidance.
package/dist/index.d.ts CHANGED
@@ -1,23 +1,2 @@
1
- import { SessionPersistDriver, SessionRecord, ListPageRequest, ListPage, ListEventsRequest, SessionEvent } from 'sandbox-agent';
2
1
 
3
- interface IndexedDbSessionPersistDriverOptions {
4
- databaseName?: string;
5
- databaseVersion?: number;
6
- indexedDb?: IDBFactory;
7
- }
8
- declare class IndexedDbSessionPersistDriver implements SessionPersistDriver {
9
- private readonly indexedDb;
10
- private readonly dbName;
11
- private readonly dbVersion;
12
- private readonly dbPromise;
13
- constructor(options?: IndexedDbSessionPersistDriverOptions);
14
- getSession(id: string): Promise<SessionRecord | null>;
15
- listSessions(request?: ListPageRequest): Promise<ListPage<SessionRecord>>;
16
- updateSession(session: SessionRecord): Promise<void>;
17
- listEvents(request: ListEventsRequest): Promise<ListPage<SessionEvent>>;
18
- insertEvent(event: SessionEvent): Promise<void>;
19
- close(): Promise<void>;
20
- private openDatabase;
21
- }
22
-
23
- export { IndexedDbSessionPersistDriver, type IndexedDbSessionPersistDriverOptions };
2
+ export { }
package/dist/index.js CHANGED
@@ -1,249 +1,5 @@
1
1
  // src/index.ts
2
- var DEFAULT_DB_NAME = "sandbox-agent-session-store";
3
- var DEFAULT_DB_VERSION = 2;
4
- var SESSIONS_STORE = "sessions";
5
- var EVENTS_STORE = "events";
6
- var EVENTS_BY_SESSION_INDEX = "by_session_index";
7
- var DEFAULT_LIST_LIMIT = 100;
8
- var IndexedDbSessionPersistDriver = class {
9
- indexedDb;
10
- dbName;
11
- dbVersion;
12
- dbPromise;
13
- constructor(options = {}) {
14
- const indexedDb = options.indexedDb ?? globalThis.indexedDB;
15
- if (!indexedDb) {
16
- throw new Error("IndexedDB is not available in this runtime.");
17
- }
18
- this.indexedDb = indexedDb;
19
- this.dbName = options.databaseName ?? DEFAULT_DB_NAME;
20
- this.dbVersion = options.databaseVersion ?? DEFAULT_DB_VERSION;
21
- this.dbPromise = this.openDatabase();
22
- }
23
- async getSession(id) {
24
- const db = await this.dbPromise;
25
- const row = await requestToPromise(db.transaction(SESSIONS_STORE, "readonly").objectStore(SESSIONS_STORE).get(id));
26
- if (!row || typeof row !== "object") {
27
- return null;
28
- }
29
- return decodeSessionRow(row);
30
- }
31
- async listSessions(request = {}) {
32
- const db = await this.dbPromise;
33
- const rows = await getAllRows(db, SESSIONS_STORE);
34
- rows.sort((a, b) => {
35
- if (a.createdAt !== b.createdAt) {
36
- return a.createdAt - b.createdAt;
37
- }
38
- return a.id.localeCompare(b.id);
39
- });
40
- const offset = parseCursor(request.cursor);
41
- const limit = normalizeLimit(request.limit);
42
- const slice = rows.slice(offset, offset + limit).map(decodeSessionRow);
43
- const nextOffset = offset + slice.length;
44
- return {
45
- items: slice,
46
- nextCursor: nextOffset < rows.length ? String(nextOffset) : void 0
47
- };
48
- }
49
- async updateSession(session) {
50
- const db = await this.dbPromise;
51
- await transactionPromise(db, [SESSIONS_STORE], "readwrite", (tx) => {
52
- tx.objectStore(SESSIONS_STORE).put(encodeSessionRow(session));
53
- });
54
- }
55
- async listEvents(request) {
56
- const db = await this.dbPromise;
57
- const rows = (await getAllRows(db, EVENTS_STORE)).filter((row) => row.sessionId === request.sessionId).sort(compareEventRowsByOrder);
58
- const offset = parseCursor(request.cursor);
59
- const limit = normalizeLimit(request.limit);
60
- const slice = rows.slice(offset, offset + limit).map(decodeEventRow);
61
- const nextOffset = offset + slice.length;
62
- return {
63
- items: slice,
64
- nextCursor: nextOffset < rows.length ? String(nextOffset) : void 0
65
- };
66
- }
67
- async insertEvent(event) {
68
- const db = await this.dbPromise;
69
- await transactionPromise(db, [EVENTS_STORE], "readwrite", (tx) => {
70
- tx.objectStore(EVENTS_STORE).put(encodeEventRow(event));
71
- });
72
- }
73
- async close() {
74
- const db = await this.dbPromise;
75
- db.close();
76
- }
77
- openDatabase() {
78
- return new Promise((resolve, reject) => {
79
- const request = this.indexedDb.open(this.dbName, this.dbVersion);
80
- request.onupgradeneeded = () => {
81
- const db = request.result;
82
- if (!db.objectStoreNames.contains(SESSIONS_STORE)) {
83
- db.createObjectStore(SESSIONS_STORE, { keyPath: "id" });
84
- }
85
- if (!db.objectStoreNames.contains(EVENTS_STORE)) {
86
- const events = db.createObjectStore(EVENTS_STORE, { keyPath: "id" });
87
- events.createIndex(EVENTS_BY_SESSION_INDEX, ["sessionId", "eventIndex", "id"], {
88
- unique: false
89
- });
90
- } else {
91
- const tx = request.transaction;
92
- if (!tx) {
93
- return;
94
- }
95
- const events = tx.objectStore(EVENTS_STORE);
96
- if (!events.indexNames.contains(EVENTS_BY_SESSION_INDEX)) {
97
- events.createIndex(EVENTS_BY_SESSION_INDEX, ["sessionId", "eventIndex", "id"], {
98
- unique: false
99
- });
100
- }
101
- }
102
- };
103
- request.onsuccess = () => resolve(request.result);
104
- request.onerror = () => reject(request.error ?? new Error("Unable to open IndexedDB"));
105
- });
106
- }
107
- };
108
- function encodeSessionRow(session) {
109
- return {
110
- id: session.id,
111
- agent: session.agent,
112
- agentSessionId: session.agentSessionId,
113
- lastConnectionId: session.lastConnectionId,
114
- createdAt: session.createdAt,
115
- destroyedAt: session.destroyedAt,
116
- sessionInit: session.sessionInit
117
- };
118
- }
119
- function decodeSessionRow(row) {
120
- return {
121
- id: row.id,
122
- agent: row.agent,
123
- agentSessionId: row.agentSessionId,
124
- lastConnectionId: row.lastConnectionId,
125
- createdAt: row.createdAt,
126
- destroyedAt: row.destroyedAt,
127
- sessionInit: row.sessionInit
128
- };
129
- }
130
- function encodeEventRow(event) {
131
- return {
132
- id: event.id,
133
- eventIndex: event.eventIndex,
134
- sessionId: event.sessionId,
135
- createdAt: event.createdAt,
136
- connectionId: event.connectionId,
137
- sender: event.sender,
138
- payload: event.payload
139
- };
140
- }
141
- function decodeEventRow(row) {
142
- return {
143
- id: String(row.id),
144
- eventIndex: parseEventIndex(row.eventIndex, row.id),
145
- sessionId: row.sessionId,
146
- createdAt: row.createdAt,
147
- connectionId: row.connectionId,
148
- sender: row.sender,
149
- payload: row.payload
150
- };
151
- }
152
- async function getAllRows(db, storeName) {
153
- return await transactionPromise(db, [storeName], "readonly", async (tx) => {
154
- const request = tx.objectStore(storeName).getAll();
155
- return await requestToPromise(request);
156
- });
157
- }
158
- function normalizeLimit(limit) {
159
- if (!Number.isFinite(limit) || (limit ?? 0) < 1) {
160
- return DEFAULT_LIST_LIMIT;
161
- }
162
- return Math.floor(limit);
163
- }
164
- function parseCursor(cursor) {
165
- if (!cursor) {
166
- return 0;
167
- }
168
- const parsed = Number.parseInt(cursor, 10);
169
- if (!Number.isFinite(parsed) || parsed < 0) {
170
- return 0;
171
- }
172
- return parsed;
173
- }
174
- function compareEventRowsByOrder(a, b) {
175
- const indexA = parseEventIndex(a.eventIndex, a.id);
176
- const indexB = parseEventIndex(b.eventIndex, b.id);
177
- if (indexA !== indexB) {
178
- return indexA - indexB;
179
- }
180
- return String(a.id).localeCompare(String(b.id));
181
- }
182
- function parseEventIndex(value, fallback) {
183
- if (typeof value === "number" && Number.isFinite(value)) {
184
- return Math.max(0, Math.floor(value));
185
- }
186
- const parsed = Number.parseInt(String(fallback), 10);
187
- if (!Number.isFinite(parsed) || parsed < 0) {
188
- return 0;
189
- }
190
- return parsed;
191
- }
192
- function requestToPromise(request) {
193
- return new Promise((resolve, reject) => {
194
- request.onsuccess = () => resolve(request.result);
195
- request.onerror = () => reject(request.error ?? new Error("IndexedDB request failed"));
196
- });
197
- }
198
- function transactionPromise(db, stores, mode, run) {
199
- return new Promise((resolve, reject) => {
200
- const tx = db.transaction(stores, mode);
201
- let settled = false;
202
- let resultValue;
203
- let runCompleted = false;
204
- let txCompleted = false;
205
- function tryResolve() {
206
- if (settled || !runCompleted || !txCompleted) {
207
- return;
208
- }
209
- settled = true;
210
- resolve(resultValue);
211
- }
212
- tx.oncomplete = () => {
213
- txCompleted = true;
214
- tryResolve();
215
- };
216
- tx.onerror = () => {
217
- if (settled) {
218
- return;
219
- }
220
- settled = true;
221
- reject(tx.error ?? new Error("IndexedDB transaction failed"));
222
- };
223
- tx.onabort = () => {
224
- if (settled) {
225
- return;
226
- }
227
- settled = true;
228
- reject(tx.error ?? new Error("IndexedDB transaction aborted"));
229
- };
230
- Promise.resolve(run(tx)).then((value) => {
231
- resultValue = value;
232
- runCompleted = true;
233
- tryResolve();
234
- }).catch((error) => {
235
- if (!settled) {
236
- settled = true;
237
- reject(error);
238
- }
239
- try {
240
- tx.abort();
241
- } catch {
242
- }
243
- });
244
- });
245
- }
246
- export {
247
- IndexedDbSessionPersistDriver
248
- };
2
+ throw new Error(
3
+ "@sandbox-agent/persist-indexeddb has been deprecated and removed. Copy the reference implementation from frontend/packages/inspector/src/persist-indexeddb.ts into your project instead. See https://github.com/rivet-dev/sandbox-agent/tree/main/frontend/packages/inspector/src/persist-indexeddb.ts"
4
+ );
249
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { ListEventsRequest, ListPage, ListPageRequest, SessionEvent, SessionPersistDriver, SessionRecord } from \"sandbox-agent\";\n\nconst DEFAULT_DB_NAME = \"sandbox-agent-session-store\";\nconst DEFAULT_DB_VERSION = 2;\nconst SESSIONS_STORE = \"sessions\";\nconst EVENTS_STORE = \"events\";\nconst EVENTS_BY_SESSION_INDEX = \"by_session_index\";\nconst DEFAULT_LIST_LIMIT = 100;\n\nexport interface IndexedDbSessionPersistDriverOptions {\n databaseName?: string;\n databaseVersion?: number;\n indexedDb?: IDBFactory;\n}\n\nexport class IndexedDbSessionPersistDriver implements SessionPersistDriver {\n private readonly indexedDb: IDBFactory;\n private readonly dbName: string;\n private readonly dbVersion: number;\n private readonly dbPromise: Promise<IDBDatabase>;\n\n constructor(options: IndexedDbSessionPersistDriverOptions = {}) {\n const indexedDb = options.indexedDb ?? globalThis.indexedDB;\n if (!indexedDb) {\n throw new Error(\"IndexedDB is not available in this runtime.\");\n }\n\n this.indexedDb = indexedDb;\n this.dbName = options.databaseName ?? DEFAULT_DB_NAME;\n this.dbVersion = options.databaseVersion ?? DEFAULT_DB_VERSION;\n this.dbPromise = this.openDatabase();\n }\n\n async getSession(id: string): Promise<SessionRecord | null> {\n const db = await this.dbPromise;\n const row = await requestToPromise<IDBValidKey | SessionRow | undefined>(db.transaction(SESSIONS_STORE, \"readonly\").objectStore(SESSIONS_STORE).get(id));\n if (!row || typeof row !== \"object\") {\n return null;\n }\n return decodeSessionRow(row as SessionRow);\n }\n\n async listSessions(request: ListPageRequest = {}): Promise<ListPage<SessionRecord>> {\n const db = await this.dbPromise;\n const rows = await getAllRows<SessionRow>(db, SESSIONS_STORE);\n\n rows.sort((a, b) => {\n if (a.createdAt !== b.createdAt) {\n return a.createdAt - b.createdAt;\n }\n return a.id.localeCompare(b.id);\n });\n\n const offset = parseCursor(request.cursor);\n const limit = normalizeLimit(request.limit);\n const slice = rows.slice(offset, offset + limit).map(decodeSessionRow);\n const nextOffset = offset + slice.length;\n\n return {\n items: slice,\n nextCursor: nextOffset < rows.length ? String(nextOffset) : undefined,\n };\n }\n\n async updateSession(session: SessionRecord): Promise<void> {\n const db = await this.dbPromise;\n await transactionPromise(db, [SESSIONS_STORE], \"readwrite\", (tx) => {\n tx.objectStore(SESSIONS_STORE).put(encodeSessionRow(session));\n });\n }\n\n async listEvents(request: ListEventsRequest): Promise<ListPage<SessionEvent>> {\n const db = await this.dbPromise;\n const rows = (await getAllRows<EventRow>(db, EVENTS_STORE)).filter((row) => row.sessionId === request.sessionId).sort(compareEventRowsByOrder);\n\n const offset = parseCursor(request.cursor);\n const limit = normalizeLimit(request.limit);\n const slice = rows.slice(offset, offset + limit).map(decodeEventRow);\n const nextOffset = offset + slice.length;\n\n return {\n items: slice,\n nextCursor: nextOffset < rows.length ? String(nextOffset) : undefined,\n };\n }\n\n async insertEvent(event: SessionEvent): Promise<void> {\n const db = await this.dbPromise;\n await transactionPromise(db, [EVENTS_STORE], \"readwrite\", (tx) => {\n tx.objectStore(EVENTS_STORE).put(encodeEventRow(event));\n });\n }\n\n async close(): Promise<void> {\n const db = await this.dbPromise;\n db.close();\n }\n\n private openDatabase(): Promise<IDBDatabase> {\n return new Promise((resolve, reject) => {\n const request = this.indexedDb.open(this.dbName, this.dbVersion);\n\n request.onupgradeneeded = () => {\n const db = request.result;\n\n if (!db.objectStoreNames.contains(SESSIONS_STORE)) {\n db.createObjectStore(SESSIONS_STORE, { keyPath: \"id\" });\n }\n\n if (!db.objectStoreNames.contains(EVENTS_STORE)) {\n const events = db.createObjectStore(EVENTS_STORE, { keyPath: \"id\" });\n events.createIndex(EVENTS_BY_SESSION_INDEX, [\"sessionId\", \"eventIndex\", \"id\"], {\n unique: false,\n });\n } else {\n const tx = request.transaction;\n if (!tx) {\n return;\n }\n const events = tx.objectStore(EVENTS_STORE);\n if (!events.indexNames.contains(EVENTS_BY_SESSION_INDEX)) {\n events.createIndex(EVENTS_BY_SESSION_INDEX, [\"sessionId\", \"eventIndex\", \"id\"], {\n unique: false,\n });\n }\n }\n };\n\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error ?? new Error(\"Unable to open IndexedDB\"));\n });\n }\n}\n\ntype SessionRow = {\n id: string;\n agent: string;\n agentSessionId: string;\n lastConnectionId: string;\n createdAt: number;\n destroyedAt?: number;\n sessionInit?: SessionRecord[\"sessionInit\"];\n};\n\ntype EventRow = {\n id: number | string;\n eventIndex?: number;\n sessionId: string;\n createdAt: number;\n connectionId: string;\n sender: \"client\" | \"agent\";\n payload: unknown;\n};\n\nfunction encodeSessionRow(session: SessionRecord): SessionRow {\n return {\n id: session.id,\n agent: session.agent,\n agentSessionId: session.agentSessionId,\n lastConnectionId: session.lastConnectionId,\n createdAt: session.createdAt,\n destroyedAt: session.destroyedAt,\n sessionInit: session.sessionInit,\n };\n}\n\nfunction decodeSessionRow(row: SessionRow): SessionRecord {\n return {\n id: row.id,\n agent: row.agent,\n agentSessionId: row.agentSessionId,\n lastConnectionId: row.lastConnectionId,\n createdAt: row.createdAt,\n destroyedAt: row.destroyedAt,\n sessionInit: row.sessionInit,\n };\n}\n\nfunction encodeEventRow(event: SessionEvent): EventRow {\n return {\n id: event.id,\n eventIndex: event.eventIndex,\n sessionId: event.sessionId,\n createdAt: event.createdAt,\n connectionId: event.connectionId,\n sender: event.sender,\n payload: event.payload,\n };\n}\n\nfunction decodeEventRow(row: EventRow): SessionEvent {\n return {\n id: String(row.id),\n eventIndex: parseEventIndex(row.eventIndex, row.id),\n sessionId: row.sessionId,\n createdAt: row.createdAt,\n connectionId: row.connectionId,\n sender: row.sender,\n payload: row.payload as SessionEvent[\"payload\"],\n };\n}\n\nasync function getAllRows<T>(db: IDBDatabase, storeName: string): Promise<T[]> {\n return await transactionPromise<T[]>(db, [storeName], \"readonly\", async (tx) => {\n const request = tx.objectStore(storeName).getAll();\n return (await requestToPromise(request)) as T[];\n });\n}\n\nfunction normalizeLimit(limit: number | undefined): number {\n if (!Number.isFinite(limit) || (limit ?? 0) < 1) {\n return DEFAULT_LIST_LIMIT;\n }\n return Math.floor(limit as number);\n}\n\nfunction parseCursor(cursor: string | undefined): number {\n if (!cursor) {\n return 0;\n }\n const parsed = Number.parseInt(cursor, 10);\n if (!Number.isFinite(parsed) || parsed < 0) {\n return 0;\n }\n return parsed;\n}\n\nfunction compareEventRowsByOrder(a: EventRow, b: EventRow): number {\n const indexA = parseEventIndex(a.eventIndex, a.id);\n const indexB = parseEventIndex(b.eventIndex, b.id);\n if (indexA !== indexB) {\n return indexA - indexB;\n }\n return String(a.id).localeCompare(String(b.id));\n}\n\nfunction parseEventIndex(value: number | undefined, fallback: number | string): number {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return Math.max(0, Math.floor(value));\n }\n\n const parsed = Number.parseInt(String(fallback), 10);\n if (!Number.isFinite(parsed) || parsed < 0) {\n return 0;\n }\n return parsed;\n}\n\nfunction requestToPromise<T>(request: IDBRequest<T>): Promise<T> {\n return new Promise((resolve, reject) => {\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error ?? new Error(\"IndexedDB request failed\"));\n });\n}\n\nfunction transactionPromise<T>(db: IDBDatabase, stores: string[], mode: IDBTransactionMode, run: (tx: IDBTransaction) => T | Promise<T>): Promise<T> {\n return new Promise((resolve, reject) => {\n const tx = db.transaction(stores, mode);\n let settled = false;\n let resultValue: T | undefined;\n let runCompleted = false;\n let txCompleted = false;\n\n function tryResolve() {\n if (settled || !runCompleted || !txCompleted) {\n return;\n }\n settled = true;\n resolve(resultValue as T);\n }\n\n tx.oncomplete = () => {\n txCompleted = true;\n tryResolve();\n };\n\n tx.onerror = () => {\n if (settled) {\n return;\n }\n settled = true;\n reject(tx.error ?? new Error(\"IndexedDB transaction failed\"));\n };\n\n tx.onabort = () => {\n if (settled) {\n return;\n }\n settled = true;\n reject(tx.error ?? new Error(\"IndexedDB transaction aborted\"));\n };\n\n Promise.resolve(run(tx))\n .then((value) => {\n resultValue = value;\n runCompleted = true;\n tryResolve();\n })\n .catch((error) => {\n if (!settled) {\n settled = true;\n reject(error);\n }\n try {\n tx.abort();\n } catch {\n // no-op\n }\n });\n });\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["throw new Error(\n \"@sandbox-agent/persist-indexeddb has been deprecated and removed. \" +\n \"Copy the reference implementation from frontend/packages/inspector/src/persist-indexeddb.ts into your project instead. \" +\n \"See https://github.com/rivet-dev/sandbox-agent/tree/main/frontend/packages/inspector/src/persist-indexeddb.ts\",\n);\n"],"mappings":";AAAA,MAAM,IAAI;AAAA,EACR;AAGF;","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sandbox-agent/persist-indexeddb",
3
- "version": "0.3.2",
4
- "description": "IndexedDB persistence driver for the Sandbox Agent TypeScript SDK",
3
+ "version": "0.4.0-rc.1",
4
+ "description": "IndexedDB persistence driver for the Sandbox Agent TypeScript SDK (DEPRECATED)",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
@@ -16,23 +16,16 @@
16
16
  "import": "./dist/index.js"
17
17
  }
18
18
  },
19
- "dependencies": {
20
- "sandbox-agent": "0.3.2"
21
- },
22
19
  "files": [
23
20
  "dist"
24
21
  ],
25
22
  "devDependencies": {
26
23
  "@types/node": "^22.0.0",
27
- "fake-indexeddb": "^6.2.4",
28
24
  "tsup": "^8.0.0",
29
- "typescript": "^5.7.0",
30
- "vitest": "^3.0.0"
25
+ "typescript": "^5.7.0"
31
26
  },
32
27
  "scripts": {
33
28
  "build": "tsup",
34
- "typecheck": "tsc --noEmit",
35
- "test": "vitest run",
36
- "test:watch": "vitest"
29
+ "typecheck": "tsc --noEmit"
37
30
  }
38
31
  }