@routstr/sdk 0.3.9 → 0.3.11

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.
Files changed (63) hide show
  1. package/dist/browser.d.mts +12 -0
  2. package/dist/browser.d.ts +12 -0
  3. package/dist/browser.js +6413 -0
  4. package/dist/browser.js.map +1 -0
  5. package/dist/browser.mjs +6361 -0
  6. package/dist/browser.mjs.map +1 -0
  7. package/dist/bun.d.mts +29 -0
  8. package/dist/bun.d.ts +29 -0
  9. package/dist/bun.js +6791 -0
  10. package/dist/bun.js.map +1 -0
  11. package/dist/bun.mjs +6733 -0
  12. package/dist/bun.mjs.map +1 -0
  13. package/dist/bunSqlite-BmXWNc25.d.ts +18 -0
  14. package/dist/bunSqlite-Bro9efsl.d.mts +18 -0
  15. package/dist/client/index.d.mts +85 -42
  16. package/dist/client/index.d.ts +85 -42
  17. package/dist/client/index.js +1243 -1584
  18. package/dist/client/index.js.map +1 -1
  19. package/dist/client/index.mjs +1239 -1585
  20. package/dist/client/index.mjs.map +1 -1
  21. package/dist/discovery/index.d.mts +33 -3
  22. package/dist/discovery/index.d.ts +33 -3
  23. package/dist/discovery/index.js +30 -31
  24. package/dist/discovery/index.js.map +1 -1
  25. package/dist/discovery/index.mjs +30 -31
  26. package/dist/discovery/index.mjs.map +1 -1
  27. package/dist/index.d.mts +9 -7
  28. package/dist/index.d.ts +9 -7
  29. package/dist/index.js +1264 -1648
  30. package/dist/index.js.map +1 -1
  31. package/dist/index.mjs +1260 -1645
  32. package/dist/index.mjs.map +1 -1
  33. package/dist/node.d.mts +22 -0
  34. package/dist/node.d.ts +22 -0
  35. package/dist/node.js +6857 -0
  36. package/dist/node.js.map +1 -0
  37. package/dist/node.mjs +6801 -0
  38. package/dist/node.mjs.map +1 -0
  39. package/dist/storage/bun.d.mts +16 -0
  40. package/dist/storage/bun.d.ts +16 -0
  41. package/dist/storage/bun.js +1970 -0
  42. package/dist/storage/bun.js.map +1 -0
  43. package/dist/storage/bun.mjs +1946 -0
  44. package/dist/storage/bun.mjs.map +1 -0
  45. package/dist/storage/index.d.mts +4 -30
  46. package/dist/storage/index.d.ts +4 -30
  47. package/dist/storage/index.js +238 -650
  48. package/dist/storage/index.js.map +1 -1
  49. package/dist/storage/index.mjs +239 -647
  50. package/dist/storage/index.mjs.map +1 -1
  51. package/dist/storage/node.d.mts +22 -0
  52. package/dist/storage/node.d.ts +22 -0
  53. package/dist/storage/node.js +2034 -0
  54. package/dist/storage/node.js.map +1 -0
  55. package/dist/storage/node.mjs +2012 -0
  56. package/dist/storage/node.mjs.map +1 -0
  57. package/dist/{store-58VcEUoA.d.ts → store-CAQLSbEj.d.ts} +52 -1
  58. package/dist/{store-C6dfj1cc.d.mts → store-CuXwe5Rg.d.mts} +52 -1
  59. package/dist/wallet/index.js +38 -24
  60. package/dist/wallet/index.js.map +1 -1
  61. package/dist/wallet/index.mjs +38 -24
  62. package/dist/wallet/index.mjs.map +1 -1
  63. package/package.json +26 -1
@@ -110,154 +110,6 @@ var createMemoryDriver = (seed) => {
110
110
  };
111
111
  };
112
112
 
113
- // core/types.ts
114
- function makeConsoleLogger(prefix) {
115
- const fmt = (args) => prefix ? [prefix, ...args] : args;
116
- return {
117
- log: (...args) => console.log(...fmt(args)),
118
- warn: (...args) => console.warn(...fmt(args)),
119
- error: (...args) => console.error(...fmt(args)),
120
- debug: (...args) => console.log(...fmt(args)),
121
- child: (p) => makeConsoleLogger(prefix ? `${prefix}:${p}` : p)
122
- };
123
- }
124
- var consoleLogger = makeConsoleLogger();
125
-
126
- // storage/drivers/sqlite.ts
127
- var isBun = () => {
128
- return typeof process.versions.bun !== "undefined";
129
- };
130
- var cachedDbModule = null;
131
- var loadDatabase = async (dbPath) => {
132
- if (isBun()) {
133
- throw new Error(
134
- "SQLite driver not supported in Bun. Use createBunSqliteDriver() instead."
135
- );
136
- }
137
- try {
138
- if (!cachedDbModule) {
139
- cachedDbModule = (await import('better-sqlite3')).default;
140
- }
141
- return new cachedDbModule(dbPath);
142
- } catch (error) {
143
- throw new Error(
144
- `better-sqlite3 is required for sqlite storage. Install it to use sqlite storage. (${error})`
145
- );
146
- }
147
- };
148
- var createSqliteDriver = (options = {}) => {
149
- const dbPath = options.dbPath || "routstr.sqlite";
150
- const tableName = options.tableName || "sdk_storage";
151
- let db;
152
- let selectStmt;
153
- let upsertStmt;
154
- let deleteStmt;
155
- const initDb = async () => {
156
- if (!db) {
157
- db = await loadDatabase(dbPath);
158
- db.exec(
159
- `CREATE TABLE IF NOT EXISTS ${tableName} (key TEXT PRIMARY KEY, value TEXT NOT NULL)`
160
- );
161
- selectStmt = db.prepare(`SELECT value FROM ${tableName} WHERE key = ?`);
162
- upsertStmt = db.prepare(
163
- `INSERT INTO ${tableName} (key, value) VALUES (?, ?)
164
- ON CONFLICT(key) DO UPDATE SET value = excluded.value`
165
- );
166
- deleteStmt = db.prepare(`DELETE FROM ${tableName} WHERE key = ?`);
167
- }
168
- };
169
- const ensureInit = async () => {
170
- if (!db) {
171
- await initDb();
172
- }
173
- };
174
- return {
175
- async getItem(key, defaultValue) {
176
- try {
177
- await ensureInit();
178
- const row = selectStmt.get(key);
179
- if (!row || typeof row.value !== "string") return defaultValue;
180
- try {
181
- return JSON.parse(row.value);
182
- } catch (parseError) {
183
- if (typeof defaultValue === "string") {
184
- return row.value;
185
- }
186
- throw parseError;
187
- }
188
- } catch (error) {
189
- console.error(`SQLite getItem failed for key "${key}":`, error);
190
- return defaultValue;
191
- }
192
- },
193
- async setItem(key, value) {
194
- try {
195
- await ensureInit();
196
- upsertStmt.run(key, JSON.stringify(value));
197
- } catch (error) {
198
- console.error(`SQLite setItem failed for key "${key}":`, error);
199
- }
200
- },
201
- async removeItem(key) {
202
- try {
203
- await ensureInit();
204
- deleteStmt.run(key);
205
- } catch (error) {
206
- console.error(`SQLite removeItem failed for key "${key}":`, error);
207
- }
208
- }
209
- };
210
- };
211
- async function createBunSqliteDriver(dbPath, options) {
212
- const logger = (options?.logger ?? consoleLogger).child("BunSqliteDriver");
213
- const SQLite = (await import(
214
- /* webpackIgnore: true */
215
- 'bun:sqlite'
216
- )).default;
217
- const db = new SQLite(dbPath);
218
- db.run(`
219
- CREATE TABLE IF NOT EXISTS sdk_storage (
220
- key TEXT PRIMARY KEY,
221
- value TEXT NOT NULL
222
- )
223
- `);
224
- return {
225
- async getItem(key, defaultValue) {
226
- try {
227
- const row = db.query("SELECT value FROM sdk_storage WHERE key = ?").get(key);
228
- if (!row || typeof row.value !== "string") return defaultValue;
229
- try {
230
- return JSON.parse(row.value);
231
- } catch (parseError) {
232
- if (typeof defaultValue === "string") {
233
- return row.value;
234
- }
235
- throw parseError;
236
- }
237
- } catch (error) {
238
- logger.error(`getItem failed for key "${key}":`, error);
239
- return defaultValue;
240
- }
241
- },
242
- async setItem(key, value) {
243
- try {
244
- db.query(
245
- "INSERT INTO sdk_storage (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value"
246
- ).run(key, JSON.stringify(value));
247
- } catch (error) {
248
- logger.error(`setItem failed for key "${key}":`, error);
249
- }
250
- },
251
- async removeItem(key) {
252
- try {
253
- db.query("DELETE FROM sdk_storage WHERE key = ?").run(key);
254
- } catch (error) {
255
- logger.error(`removeItem failed for key "${key}":`, error);
256
- }
257
- }
258
- };
259
- }
260
-
261
113
  // storage/drivers/indexedDB.ts
262
114
  var isBrowser = typeof indexedDB !== "undefined";
263
115
  var openDatabase = (dbName, storeName) => {
@@ -265,15 +117,32 @@ var openDatabase = (dbName, storeName) => {
265
117
  return Promise.reject(new Error("IndexedDB is not available"));
266
118
  }
267
119
  return new Promise((resolve, reject) => {
268
- const request = indexedDB.open(dbName, 1);
120
+ const request = indexedDB.open(dbName, 2);
269
121
  request.onupgradeneeded = () => {
270
122
  const db = request.result;
271
123
  if (!db.objectStoreNames.contains(storeName)) {
272
124
  db.createObjectStore(storeName);
273
125
  }
126
+ if (storeName !== "usage_tracking" && !db.objectStoreNames.contains("usage_tracking")) {
127
+ const utStore = db.createObjectStore("usage_tracking", { keyPath: "id" });
128
+ utStore.createIndex("timestamp", "timestamp", { unique: false });
129
+ utStore.createIndex("modelId", "modelId", { unique: false });
130
+ utStore.createIndex("baseUrl", "baseUrl", { unique: false });
131
+ utStore.createIndex("sessionId", "sessionId", { unique: false });
132
+ utStore.createIndex("client", "client", { unique: false });
133
+ }
134
+ if (storeName !== "sdk_storage" && !db.objectStoreNames.contains("sdk_storage")) {
135
+ db.createObjectStore("sdk_storage");
136
+ }
274
137
  };
275
138
  request.onsuccess = () => resolve(request.result);
276
139
  request.onerror = () => reject(request.error);
140
+ request.onblocked = () => {
141
+ console.warn(
142
+ `[IndexedDB driver] open blocked for "${dbName}" (store: "${storeName}") \u2014 close other tabs using this DB`
143
+ );
144
+ reject(new Error(`IndexedDB "${dbName}" blocked by another connection`));
145
+ };
277
146
  });
278
147
  };
279
148
  var createIndexedDBDriver = (options = {}) => {
@@ -375,6 +244,91 @@ var SDK_STORAGE_KEYS = {
375
244
  PROVIDERS_ON_COOLDOWN: "providers_on_cooldown"
376
245
  };
377
246
 
247
+ // storage/usageTracking/aggregate.ts
248
+ var pad2 = (n) => String(n).padStart(2, "0");
249
+ var jsGroupKey = (entry, groupBy, tzOffsetMinutes) => {
250
+ switch (groupBy) {
251
+ case "modelId":
252
+ return entry.modelId ?? null;
253
+ case "baseUrl":
254
+ return entry.baseUrl ?? null;
255
+ case "client":
256
+ return entry.client ?? null;
257
+ case "sessionId":
258
+ return entry.sessionId ?? null;
259
+ case "provider":
260
+ return entry.provider ?? null;
261
+ case "day": {
262
+ const d = new Date(entry.timestamp - tzOffsetMinutes * 6e4);
263
+ return `${d.getUTCFullYear()}-${pad2(d.getUTCMonth() + 1)}-${pad2(d.getUTCDate())}`;
264
+ }
265
+ case "hour": {
266
+ const d = new Date(entry.timestamp - tzOffsetMinutes * 6e4);
267
+ return pad2(d.getUTCHours());
268
+ }
269
+ }
270
+ };
271
+ var reduceAggregate = (entries, options = {}) => {
272
+ const emptyRow = (group) => ({
273
+ group,
274
+ requests: 0,
275
+ promptTokens: 0,
276
+ completionTokens: 0,
277
+ totalTokens: 0,
278
+ cost: 0,
279
+ satsCost: 0,
280
+ baseMsats: 0,
281
+ inputMsats: 0,
282
+ outputMsats: 0,
283
+ totalMsats: 0,
284
+ totalUsd: 0,
285
+ cacheReadInputTokens: 0,
286
+ cacheCreationInputTokens: 0,
287
+ cacheReadMsats: 0,
288
+ cacheCreationMsats: 0
289
+ });
290
+ const accumulate = (row, entry) => {
291
+ row.requests += 1;
292
+ row.promptTokens += entry.promptTokens;
293
+ row.completionTokens += entry.completionTokens;
294
+ row.totalTokens += entry.totalTokens;
295
+ row.cost += entry.cost;
296
+ row.satsCost += entry.satsCost;
297
+ row.baseMsats += entry.baseMsats ?? 0;
298
+ row.inputMsats += entry.inputMsats ?? 0;
299
+ row.outputMsats += entry.outputMsats ?? 0;
300
+ row.totalMsats += entry.totalMsats ?? 0;
301
+ row.totalUsd += entry.totalUsd ?? 0;
302
+ row.cacheReadInputTokens += entry.cacheReadInputTokens ?? 0;
303
+ row.cacheCreationInputTokens += entry.cacheCreationInputTokens ?? 0;
304
+ row.cacheReadMsats += entry.cacheReadMsats ?? 0;
305
+ row.cacheCreationMsats += entry.cacheCreationMsats ?? 0;
306
+ };
307
+ if (!options.groupBy) {
308
+ const total = emptyRow(null);
309
+ for (const entry of entries) accumulate(total, entry);
310
+ return [total];
311
+ }
312
+ const tz = options.tzOffsetMinutes ?? 0;
313
+ const groups = /* @__PURE__ */ new Map();
314
+ for (const entry of entries) {
315
+ const key = jsGroupKey(entry, options.groupBy, tz);
316
+ let row = groups.get(key);
317
+ if (!row) {
318
+ row = emptyRow(key);
319
+ groups.set(key, row);
320
+ }
321
+ accumulate(row, entry);
322
+ }
323
+ const rows = [...groups.values()];
324
+ if (options.groupBy === "day" || options.groupBy === "hour") {
325
+ rows.sort((a, b) => (a.group ?? "").localeCompare(b.group ?? ""));
326
+ } else {
327
+ rows.sort((a, b) => b.satsCost - a.satsCost);
328
+ }
329
+ return rows;
330
+ };
331
+
378
332
  // storage/usageTracking/indexedDB.ts
379
333
  var DEFAULT_DB_NAME = "routstr-sdk";
380
334
  var DEFAULT_STORE_NAME = "usage_tracking";
@@ -386,9 +340,10 @@ var openDatabase2 = (dbName, storeName) => {
386
340
  return Promise.reject(new Error("IndexedDB is not available"));
387
341
  }
388
342
  return new Promise((resolve, reject) => {
389
- const request = indexedDB.open(dbName, 1);
343
+ const request = indexedDB.open(dbName, 3);
390
344
  request.onupgradeneeded = () => {
391
345
  const db = request.result;
346
+ const tx = request.transaction;
392
347
  if (!db.objectStoreNames.contains(storeName)) {
393
348
  const store = db.createObjectStore(storeName, { keyPath: "id" });
394
349
  store.createIndex("timestamp", "timestamp", { unique: false });
@@ -396,10 +351,25 @@ var openDatabase2 = (dbName, storeName) => {
396
351
  store.createIndex("baseUrl", "baseUrl", { unique: false });
397
352
  store.createIndex("sessionId", "sessionId", { unique: false });
398
353
  store.createIndex("client", "client", { unique: false });
354
+ store.createIndex("provider", "provider", { unique: false });
355
+ } else if (tx) {
356
+ const store = tx.objectStore(storeName);
357
+ if (!store.indexNames.contains("provider")) {
358
+ store.createIndex("provider", "provider", { unique: false });
359
+ }
360
+ }
361
+ if (storeName !== "sdk_storage" && !db.objectStoreNames.contains("sdk_storage")) {
362
+ db.createObjectStore("sdk_storage");
399
363
  }
400
364
  };
401
365
  request.onsuccess = () => resolve(request.result);
402
366
  request.onerror = () => reject(request.error);
367
+ request.onblocked = () => {
368
+ console.warn(
369
+ `[usageTracking IndexedDB] open blocked for "${dbName}" \u2014 close other tabs using this DB`
370
+ );
371
+ reject(new Error(`IndexedDB "${dbName}" blocked by another connection`));
372
+ };
403
373
  });
404
374
  };
405
375
  var matchesFilters = (entry, options = {}) => {
@@ -421,6 +391,12 @@ var matchesFilters = (entry, options = {}) => {
421
391
  if (options.client && entry.client !== options.client) {
422
392
  return false;
423
393
  }
394
+ if (options.clients && options.clients.length > 0 && (entry.client == null || !options.clients.includes(entry.client))) {
395
+ return false;
396
+ }
397
+ if (options.provider && entry.provider !== options.provider) {
398
+ return false;
399
+ }
424
400
  return true;
425
401
  };
426
402
  var createIndexedDBUsageTrackingDriver = (options = {}) => {
@@ -516,6 +492,10 @@ var createIndexedDBUsageTrackingDriver = (options = {}) => {
516
492
  const results = await this.list(options2);
517
493
  return results.length;
518
494
  },
495
+ async aggregate(options2 = {}) {
496
+ const entries = await this.list(options2);
497
+ return reduceAggregate(entries, options2);
498
+ },
519
499
  async deleteOlderThan(timestamp) {
520
500
  await ensureMigrated();
521
501
  const db = await getDb();
@@ -552,393 +532,8 @@ var createIndexedDBUsageTrackingDriver = (options = {}) => {
552
532
  };
553
533
  };
554
534
 
555
- // storage/usageTracking/sqlite.ts
556
- var MIGRATION_MARKER_KEY2 = "usage_tracking_migration_v1";
557
- var normalizeBaseUrl2 = (baseUrl) => baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
558
- var isBun2 = () => {
559
- return typeof process.versions.bun !== "undefined";
560
- };
561
- var cachedDbModule2 = null;
562
- var loadDatabase2 = async (dbPath) => {
563
- if (isBun2()) {
564
- throw new Error(
565
- "SQLite driver not supported in Bun. Use createMemoryDriver() instead."
566
- );
567
- }
568
- try {
569
- if (!cachedDbModule2) {
570
- cachedDbModule2 = (await import('better-sqlite3')).default;
571
- }
572
- return new cachedDbModule2(dbPath);
573
- } catch (error) {
574
- throw new Error(
575
- `better-sqlite3 is required for sqlite usage tracking. Install it to use sqlite storage. (${error})`
576
- );
577
- }
578
- };
579
- var buildWhereClause = (options = {}) => {
580
- const clauses = [];
581
- const params = [];
582
- if (typeof options.before === "number") {
583
- clauses.push("timestamp < ?");
584
- params.push(options.before);
585
- }
586
- if (typeof options.after === "number") {
587
- clauses.push("timestamp > ?");
588
- params.push(options.after);
589
- }
590
- if (options.modelId) {
591
- clauses.push("model_id = ?");
592
- params.push(options.modelId);
593
- }
594
- if (options.baseUrl) {
595
- clauses.push("base_url = ?");
596
- params.push(normalizeBaseUrl2(options.baseUrl));
597
- }
598
- if (options.sessionId) {
599
- clauses.push("session_id = ?");
600
- params.push(options.sessionId);
601
- }
602
- if (options.client) {
603
- clauses.push("client = ?");
604
- params.push(options.client);
605
- }
606
- return {
607
- sql: clauses.length > 0 ? `WHERE ${clauses.join(" AND ")}` : "",
608
- params
609
- };
610
- };
611
- var createSqliteUsageTrackingDriver = (options = {}) => {
612
- const dbPath = options.dbPath || "routstr.sqlite";
613
- const tableName = options.tableName || "usage_tracking";
614
- const legacyStorageDriver = options.legacyStorageDriver;
615
- let db;
616
- let insertStmt;
617
- let migrationComplete = false;
618
- const initDb = async () => {
619
- if (!db) {
620
- db = await loadDatabase2(dbPath);
621
- db.exec(`
622
- CREATE TABLE IF NOT EXISTS ${tableName} (
623
- id TEXT PRIMARY KEY,
624
- timestamp INTEGER NOT NULL,
625
- model_id TEXT NOT NULL,
626
- base_url TEXT NOT NULL,
627
- request_id TEXT NOT NULL,
628
- cost REAL NOT NULL,
629
- sats_cost REAL NOT NULL,
630
- prompt_tokens INTEGER NOT NULL,
631
- completion_tokens INTEGER NOT NULL,
632
- total_tokens INTEGER NOT NULL,
633
- client TEXT,
634
- session_id TEXT,
635
- tags TEXT
636
- );
637
- CREATE INDEX IF NOT EXISTS idx_${tableName}_timestamp ON ${tableName}(timestamp);
638
- CREATE INDEX IF NOT EXISTS idx_${tableName}_model_id ON ${tableName}(model_id);
639
- CREATE INDEX IF NOT EXISTS idx_${tableName}_base_url ON ${tableName}(base_url);
640
- CREATE INDEX IF NOT EXISTS idx_${tableName}_session_id ON ${tableName}(session_id);
641
- CREATE INDEX IF NOT EXISTS idx_${tableName}_client ON ${tableName}(client);
642
- `);
643
- insertStmt = db.prepare(`
644
- INSERT OR REPLACE INTO ${tableName} (
645
- id, timestamp, model_id, base_url, request_id,
646
- cost, sats_cost, prompt_tokens, completion_tokens, total_tokens,
647
- client, session_id, tags
648
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
649
- `);
650
- }
651
- };
652
- const ensureInit = async () => {
653
- if (!db) {
654
- await initDb();
655
- }
656
- };
657
- const appendOne = (entry) => {
658
- insertStmt.run(
659
- entry.id,
660
- entry.timestamp,
661
- entry.modelId,
662
- normalizeBaseUrl2(entry.baseUrl),
663
- entry.requestId,
664
- entry.cost,
665
- entry.satsCost,
666
- entry.promptTokens,
667
- entry.completionTokens,
668
- entry.totalTokens,
669
- entry.client ?? null,
670
- entry.sessionId ?? null,
671
- JSON.stringify(entry.tags ?? [])
672
- );
673
- };
674
- const ensureMigrated = async () => {
675
- if (!legacyStorageDriver || migrationComplete) return;
676
- const migrated = await legacyStorageDriver.getItem(
677
- MIGRATION_MARKER_KEY2,
678
- false
679
- );
680
- if (migrated) {
681
- migrationComplete = true;
682
- return;
683
- }
684
- const legacyEntries = await legacyStorageDriver.getItem(
685
- SDK_STORAGE_KEYS.USAGE_TRACKING,
686
- []
687
- );
688
- for (const entry of legacyEntries) {
689
- appendOne(entry);
690
- }
691
- if (legacyEntries.length > 0) {
692
- await legacyStorageDriver.removeItem(SDK_STORAGE_KEYS.USAGE_TRACKING);
693
- }
694
- await legacyStorageDriver.setItem(MIGRATION_MARKER_KEY2, true);
695
- migrationComplete = true;
696
- };
697
- const mapRow = (row) => ({
698
- id: row.id,
699
- timestamp: row.timestamp,
700
- modelId: row.model_id,
701
- baseUrl: row.base_url,
702
- requestId: row.request_id,
703
- cost: row.cost,
704
- satsCost: row.sats_cost,
705
- promptTokens: row.prompt_tokens,
706
- completionTokens: row.completion_tokens,
707
- totalTokens: row.total_tokens,
708
- client: row.client ?? void 0,
709
- sessionId: row.session_id ?? void 0,
710
- tags: typeof row.tags === "string" ? JSON.parse(row.tags) : void 0
711
- });
712
- return {
713
- async migrate() {
714
- await ensureInit();
715
- await ensureMigrated();
716
- },
717
- async append(entry) {
718
- await ensureInit();
719
- await ensureMigrated();
720
- appendOne(entry);
721
- },
722
- async appendMany(entries) {
723
- await ensureInit();
724
- await ensureMigrated();
725
- for (const entry of entries) {
726
- appendOne(entry);
727
- }
728
- },
729
- async list(options2 = {}) {
730
- await ensureInit();
731
- await ensureMigrated();
732
- const { sql, params } = buildWhereClause(options2);
733
- const limitSql = typeof options2.limit === "number" ? " LIMIT ?" : "";
734
- const stmt = db.prepare(
735
- `SELECT * FROM ${tableName} ${sql} ORDER BY timestamp DESC${limitSql}`
736
- );
737
- const rows = stmt.all(
738
- ...typeof options2.limit === "number" ? [...params, options2.limit] : params
739
- );
740
- return rows.map(mapRow);
741
- },
742
- async count(options2 = {}) {
743
- await ensureInit();
744
- await ensureMigrated();
745
- const { sql, params } = buildWhereClause(options2);
746
- const stmt = db.prepare(`SELECT COUNT(*) as count FROM ${tableName} ${sql}`);
747
- const row = stmt.get(...params);
748
- return Number(row?.count ?? 0);
749
- },
750
- async deleteOlderThan(timestamp) {
751
- await ensureInit();
752
- await ensureMigrated();
753
- const stmt = db.prepare(`DELETE FROM ${tableName} WHERE timestamp < ?`);
754
- const result = stmt.run(timestamp);
755
- return result.changes;
756
- },
757
- async clear() {
758
- await ensureInit();
759
- await ensureMigrated();
760
- db.prepare(`DELETE FROM ${tableName}`).run();
761
- }
762
- };
763
- };
764
-
765
- // storage/usageTracking/bunSqlite.ts
766
- var MIGRATION_MARKER_KEY3 = "usage_tracking_migration_v1";
767
- var normalizeBaseUrl3 = (baseUrl) => baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
768
- var buildWhereClause2 = (options = {}) => {
769
- const clauses = [];
770
- const params = [];
771
- if (typeof options.before === "number") {
772
- clauses.push("timestamp < ?");
773
- params.push(options.before);
774
- }
775
- if (typeof options.after === "number") {
776
- clauses.push("timestamp > ?");
777
- params.push(options.after);
778
- }
779
- if (options.modelId) {
780
- clauses.push("model_id = ?");
781
- params.push(options.modelId);
782
- }
783
- if (options.baseUrl) {
784
- clauses.push("base_url = ?");
785
- params.push(normalizeBaseUrl3(options.baseUrl));
786
- }
787
- if (options.sessionId) {
788
- clauses.push("session_id = ?");
789
- params.push(options.sessionId);
790
- }
791
- if (options.client) {
792
- clauses.push("client = ?");
793
- params.push(options.client);
794
- }
795
- return {
796
- sql: clauses.length > 0 ? `WHERE ${clauses.join(" AND ")}` : "",
797
- params
798
- };
799
- };
800
- var createBunSqliteUsageTrackingDriver = (options = {}) => {
801
- const dbPath = options.dbPath || "routstr.sqlite";
802
- const tableName = options.tableName || "usage_tracking";
803
- const legacyStorageDriver = options.legacyStorageDriver;
804
- const SQLiteDatabase = options.sqlite?.Database;
805
- let migrationPromise = null;
806
- if (!SQLiteDatabase) {
807
- throw new Error(
808
- "Bun SQLite Database constructor is required. Pass { sqlite: { Database } } when creating the driver."
809
- );
810
- }
811
- const db = new SQLiteDatabase(dbPath);
812
- db.run(`
813
- CREATE TABLE IF NOT EXISTS ${tableName} (
814
- id TEXT PRIMARY KEY,
815
- timestamp INTEGER NOT NULL,
816
- model_id TEXT NOT NULL,
817
- base_url TEXT NOT NULL,
818
- request_id TEXT NOT NULL,
819
- cost REAL NOT NULL,
820
- sats_cost REAL NOT NULL,
821
- prompt_tokens INTEGER NOT NULL,
822
- completion_tokens INTEGER NOT NULL,
823
- total_tokens INTEGER NOT NULL,
824
- client TEXT,
825
- session_id TEXT,
826
- tags TEXT
827
- )
828
- `);
829
- db.run(`CREATE INDEX IF NOT EXISTS idx_${tableName}_timestamp ON ${tableName}(timestamp)`);
830
- db.run(`CREATE INDEX IF NOT EXISTS idx_${tableName}_model_id ON ${tableName}(model_id)`);
831
- db.run(`CREATE INDEX IF NOT EXISTS idx_${tableName}_base_url ON ${tableName}(base_url)`);
832
- const appendOne = (entry) => {
833
- db.query(`
834
- INSERT OR REPLACE INTO ${tableName} (
835
- id, timestamp, model_id, base_url, request_id,
836
- cost, sats_cost, prompt_tokens, completion_tokens, total_tokens,
837
- client, session_id, tags
838
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
839
- `).run(
840
- entry.id,
841
- entry.timestamp,
842
- entry.modelId,
843
- normalizeBaseUrl3(entry.baseUrl),
844
- entry.requestId,
845
- entry.cost,
846
- entry.satsCost,
847
- entry.promptTokens,
848
- entry.completionTokens,
849
- entry.totalTokens,
850
- entry.client ?? null,
851
- entry.sessionId ?? null,
852
- JSON.stringify(entry.tags ?? [])
853
- );
854
- };
855
- const mapRow = (row) => ({
856
- id: row.id,
857
- timestamp: row.timestamp,
858
- modelId: row.model_id,
859
- baseUrl: row.base_url,
860
- requestId: row.request_id,
861
- cost: row.cost,
862
- satsCost: row.sats_cost,
863
- promptTokens: row.prompt_tokens,
864
- completionTokens: row.completion_tokens,
865
- totalTokens: row.total_tokens,
866
- client: row.client ?? void 0,
867
- sessionId: row.session_id ?? void 0,
868
- tags: typeof row.tags === "string" ? JSON.parse(row.tags) : void 0
869
- });
870
- const ensureMigrated = async () => {
871
- if (!legacyStorageDriver) return;
872
- if (!migrationPromise) {
873
- migrationPromise = (async () => {
874
- const migrated = await legacyStorageDriver.getItem(
875
- MIGRATION_MARKER_KEY3,
876
- false
877
- );
878
- if (migrated) return;
879
- const legacyEntries = await legacyStorageDriver.getItem(
880
- SDK_STORAGE_KEYS.USAGE_TRACKING,
881
- []
882
- );
883
- if (legacyEntries.length > 0) {
884
- for (const entry of legacyEntries) {
885
- appendOne(entry);
886
- }
887
- await legacyStorageDriver.removeItem(SDK_STORAGE_KEYS.USAGE_TRACKING);
888
- }
889
- await legacyStorageDriver.setItem(MIGRATION_MARKER_KEY3, true);
890
- })();
891
- }
892
- await migrationPromise;
893
- };
894
- return {
895
- async migrate() {
896
- await ensureMigrated();
897
- },
898
- async append(entry) {
899
- await ensureMigrated();
900
- appendOne(entry);
901
- },
902
- async appendMany(entries) {
903
- await ensureMigrated();
904
- for (const entry of entries) {
905
- appendOne(entry);
906
- }
907
- },
908
- async list(options2 = {}) {
909
- await ensureMigrated();
910
- const { sql, params } = buildWhereClause2(options2);
911
- const limitSql = typeof options2.limit === "number" ? " LIMIT ?" : "";
912
- const query = `SELECT * FROM ${tableName} ${sql} ORDER BY timestamp DESC${limitSql}`;
913
- let rows;
914
- if (typeof options2.limit === "number") {
915
- rows = db.query(query).all(...params, options2.limit);
916
- } else {
917
- rows = db.query(query).all(...params);
918
- }
919
- return rows.map(mapRow);
920
- },
921
- async count(options2 = {}) {
922
- const { sql, params } = buildWhereClause2(options2);
923
- const query = `SELECT COUNT(*) as count FROM ${tableName} ${sql}`;
924
- const row = db.query(query).get(...params);
925
- return Number(row?.count ?? 0);
926
- },
927
- async deleteOlderThan(timestamp) {
928
- await ensureMigrated();
929
- const before = timestamp;
930
- const result = db.query(`DELETE FROM ${tableName} WHERE timestamp < ?`).run(before);
931
- return result.changes ?? 0;
932
- },
933
- async clear() {
934
- await ensureMigrated();
935
- db.query(`DELETE FROM ${tableName}`).run();
936
- }
937
- };
938
- };
939
-
940
535
  // storage/usageTracking/memory.ts
941
- var normalizeBaseUrl4 = (baseUrl) => baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
536
+ var normalizeBaseUrl2 = (baseUrl) => baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
942
537
  var matchesFilters2 = (entry, options = {}) => {
943
538
  if (typeof options.before === "number" && entry.timestamp >= options.before) {
944
539
  return false;
@@ -949,7 +544,7 @@ var matchesFilters2 = (entry, options = {}) => {
949
544
  if (options.modelId && entry.modelId !== options.modelId) {
950
545
  return false;
951
546
  }
952
- if (options.baseUrl && normalizeBaseUrl4(entry.baseUrl) !== normalizeBaseUrl4(options.baseUrl)) {
547
+ if (options.baseUrl && normalizeBaseUrl2(entry.baseUrl) !== normalizeBaseUrl2(options.baseUrl)) {
953
548
  return false;
954
549
  }
955
550
  if (options.sessionId && entry.sessionId !== options.sessionId) {
@@ -958,23 +553,29 @@ var matchesFilters2 = (entry, options = {}) => {
958
553
  if (options.client && entry.client !== options.client) {
959
554
  return false;
960
555
  }
556
+ if (options.clients && options.clients.length > 0 && (entry.client == null || !options.clients.includes(entry.client))) {
557
+ return false;
558
+ }
559
+ if (options.provider && entry.provider !== options.provider) {
560
+ return false;
561
+ }
961
562
  return true;
962
563
  };
963
564
  var createMemoryUsageTrackingDriver = (seed = []) => {
964
565
  const store = /* @__PURE__ */ new Map();
965
566
  for (const entry of seed) {
966
- store.set(entry.id, { ...entry, baseUrl: normalizeBaseUrl4(entry.baseUrl) });
567
+ store.set(entry.id, { ...entry, baseUrl: normalizeBaseUrl2(entry.baseUrl) });
967
568
  }
968
569
  return {
969
570
  async migrate() {
970
571
  return;
971
572
  },
972
573
  async append(entry) {
973
- store.set(entry.id, { ...entry, baseUrl: normalizeBaseUrl4(entry.baseUrl) });
574
+ store.set(entry.id, { ...entry, baseUrl: normalizeBaseUrl2(entry.baseUrl) });
974
575
  },
975
576
  async appendMany(entries) {
976
577
  for (const entry of entries) {
977
- store.set(entry.id, { ...entry, baseUrl: normalizeBaseUrl4(entry.baseUrl) });
578
+ store.set(entry.id, { ...entry, baseUrl: normalizeBaseUrl2(entry.baseUrl) });
978
579
  }
979
580
  },
980
581
  async list(options = {}) {
@@ -987,6 +588,10 @@ var createMemoryUsageTrackingDriver = (seed = []) => {
987
588
  async count(options = {}) {
988
589
  return (await this.list(options)).length;
989
590
  },
591
+ async aggregate(options = {}) {
592
+ const entries = [...store.values()].filter((entry) => matchesFilters2(entry, options));
593
+ return reduceAggregate(entries, options);
594
+ },
990
595
  async deleteOlderThan(timestamp) {
991
596
  let deleted = 0;
992
597
  for (const [id, entry] of store.entries()) {
@@ -1002,7 +607,22 @@ var createMemoryUsageTrackingDriver = (seed = []) => {
1002
607
  }
1003
608
  };
1004
609
  };
1005
- var normalizeBaseUrl5 = (baseUrl) => baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
610
+
611
+ // core/types.ts
612
+ function makeConsoleLogger(prefix) {
613
+ const fmt = (args) => prefix ? [prefix, ...args] : args;
614
+ return {
615
+ log: (...args) => console.log(...fmt(args)),
616
+ warn: (...args) => console.warn(...fmt(args)),
617
+ error: (...args) => console.error(...fmt(args)),
618
+ debug: (...args) => console.log(...fmt(args)),
619
+ child: (p) => makeConsoleLogger(prefix ? `${prefix}:${p}` : p)
620
+ };
621
+ }
622
+ var consoleLogger = makeConsoleLogger();
623
+
624
+ // storage/store.ts
625
+ var normalizeBaseUrl3 = (baseUrl) => baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
1006
626
  var createEmptyStore = (driver) => vanilla.createStore((set, get) => ({
1007
627
  modelsFromAllProviders: {},
1008
628
  lastUsedModel: null,
@@ -1025,7 +645,7 @@ var createEmptyStore = (driver) => vanilla.createStore((set, get) => ({
1025
645
  setModelsFromAllProviders: (value) => {
1026
646
  const normalized = {};
1027
647
  for (const [baseUrl, models] of Object.entries(value)) {
1028
- normalized[normalizeBaseUrl5(baseUrl)] = models;
648
+ normalized[normalizeBaseUrl3(baseUrl)] = models;
1029
649
  }
1030
650
  void driver.setItem(
1031
651
  SDK_STORAGE_KEYS.MODELS_FROM_ALL_PROVIDERS,
@@ -1038,7 +658,7 @@ var createEmptyStore = (driver) => vanilla.createStore((set, get) => ({
1038
658
  set({ lastUsedModel: value });
1039
659
  },
1040
660
  setBaseUrlsList: (value) => {
1041
- const normalized = value.map((url) => normalizeBaseUrl5(url));
661
+ const normalized = value.map((url) => normalizeBaseUrl3(url));
1042
662
  void driver.setItem(SDK_STORAGE_KEYS.BASE_URLS_LIST, normalized);
1043
663
  set({ baseUrlsList: normalized });
1044
664
  },
@@ -1047,14 +667,14 @@ var createEmptyStore = (driver) => vanilla.createStore((set, get) => ({
1047
667
  set({ lastBaseUrlsUpdate: value });
1048
668
  },
1049
669
  setDisabledProviders: (value) => {
1050
- const normalized = value.map((url) => normalizeBaseUrl5(url));
670
+ const normalized = value.map((url) => normalizeBaseUrl3(url));
1051
671
  void driver.setItem(SDK_STORAGE_KEYS.DISABLED_PROVIDERS, normalized);
1052
672
  set({ disabledProviders: normalized });
1053
673
  },
1054
674
  setMintsFromAllProviders: (value) => {
1055
675
  const normalized = {};
1056
676
  for (const [baseUrl, mints] of Object.entries(value)) {
1057
- normalized[normalizeBaseUrl5(baseUrl)] = mints.map(
677
+ normalized[normalizeBaseUrl3(baseUrl)] = mints.map(
1058
678
  (mint) => mint.endsWith("/") ? mint.slice(0, -1) : mint
1059
679
  );
1060
680
  }
@@ -1067,7 +687,7 @@ var createEmptyStore = (driver) => vanilla.createStore((set, get) => ({
1067
687
  setInfoFromAllProviders: (value) => {
1068
688
  const normalized = {};
1069
689
  for (const [baseUrl, info] of Object.entries(value)) {
1070
- normalized[normalizeBaseUrl5(baseUrl)] = info;
690
+ normalized[normalizeBaseUrl3(baseUrl)] = info;
1071
691
  }
1072
692
  void driver.setItem(SDK_STORAGE_KEYS.INFO_FROM_ALL_PROVIDERS, normalized);
1073
693
  set({ infoFromAllProviders: normalized });
@@ -1075,7 +695,7 @@ var createEmptyStore = (driver) => vanilla.createStore((set, get) => ({
1075
695
  setLastModelsUpdate: (value) => {
1076
696
  const normalized = {};
1077
697
  for (const [baseUrl, timestamp] of Object.entries(value)) {
1078
- normalized[normalizeBaseUrl5(baseUrl)] = timestamp;
698
+ normalized[normalizeBaseUrl3(baseUrl)] = timestamp;
1079
699
  }
1080
700
  void driver.setItem(SDK_STORAGE_KEYS.LAST_MODELS_UPDATE, normalized);
1081
701
  set({ lastModelsUpdate: normalized });
@@ -1085,7 +705,7 @@ var createEmptyStore = (driver) => vanilla.createStore((set, get) => ({
1085
705
  const updates = typeof value === "function" ? value(state.apiKeys) : value;
1086
706
  const normalized = updates.map((entry) => ({
1087
707
  ...entry,
1088
- baseUrl: normalizeBaseUrl5(entry.baseUrl),
708
+ baseUrl: normalizeBaseUrl3(entry.baseUrl),
1089
709
  balance: entry.balance ?? 0,
1090
710
  lastUsed: entry.lastUsed ?? null
1091
711
  }));
@@ -1097,7 +717,7 @@ var createEmptyStore = (driver) => vanilla.createStore((set, get) => ({
1097
717
  set((state) => {
1098
718
  const updates = typeof value === "function" ? value(state.childKeys) : value;
1099
719
  const normalized = updates.map((entry) => ({
1100
- parentBaseUrl: normalizeBaseUrl5(entry.parentBaseUrl),
720
+ parentBaseUrl: normalizeBaseUrl3(entry.parentBaseUrl),
1101
721
  childKey: entry.childKey,
1102
722
  balance: entry.balance ?? 0,
1103
723
  balanceLimit: entry.balanceLimit,
@@ -1111,9 +731,9 @@ var createEmptyStore = (driver) => vanilla.createStore((set, get) => ({
1111
731
  setXcashuTokens: (value) => {
1112
732
  const normalized = {};
1113
733
  for (const [baseUrl, tokens] of Object.entries(value)) {
1114
- normalized[normalizeBaseUrl5(baseUrl)] = tokens.map((entry) => ({
734
+ normalized[normalizeBaseUrl3(baseUrl)] = tokens.map((entry) => ({
1115
735
  ...entry,
1116
- baseUrl: normalizeBaseUrl5(entry.baseUrl),
736
+ baseUrl: normalizeBaseUrl3(entry.baseUrl),
1117
737
  createdAt: entry.createdAt ?? Date.now(),
1118
738
  tryCount: entry.tryCount ?? 0
1119
739
  }));
@@ -1164,12 +784,12 @@ var createEmptyStore = (driver) => vanilla.createStore((set, get) => ({
1164
784
  },
1165
785
  // ========== Failure Tracking ==========
1166
786
  setFailedProviders: (value) => {
1167
- const normalized = value.map((url) => normalizeBaseUrl5(url));
787
+ const normalized = value.map((url) => normalizeBaseUrl3(url));
1168
788
  void driver.setItem(SDK_STORAGE_KEYS.FAILED_PROVIDERS, normalized);
1169
789
  set({ failedProviders: normalized });
1170
790
  },
1171
791
  addFailedProvider: (baseUrl) => {
1172
- const normalized = normalizeBaseUrl5(baseUrl);
792
+ const normalized = normalizeBaseUrl3(baseUrl);
1173
793
  const current = get().failedProviders;
1174
794
  if (!current.includes(normalized)) {
1175
795
  const updated = [...current, normalized];
@@ -1178,7 +798,7 @@ var createEmptyStore = (driver) => vanilla.createStore((set, get) => ({
1178
798
  }
1179
799
  },
1180
800
  removeFailedProvider: (baseUrl) => {
1181
- const normalized = normalizeBaseUrl5(baseUrl);
801
+ const normalized = normalizeBaseUrl3(baseUrl);
1182
802
  const current = get().failedProviders;
1183
803
  const updated = current.filter((url) => url !== normalized);
1184
804
  void driver.setItem(SDK_STORAGE_KEYS.FAILED_PROVIDERS, updated);
@@ -1187,13 +807,13 @@ var createEmptyStore = (driver) => vanilla.createStore((set, get) => ({
1187
807
  setLastFailed: (value) => {
1188
808
  const normalized = {};
1189
809
  for (const [baseUrl, timestamp] of Object.entries(value)) {
1190
- normalized[normalizeBaseUrl5(baseUrl)] = timestamp;
810
+ normalized[normalizeBaseUrl3(baseUrl)] = timestamp;
1191
811
  }
1192
812
  void driver.setItem(SDK_STORAGE_KEYS.LAST_FAILED, normalized);
1193
813
  set({ lastFailed: normalized });
1194
814
  },
1195
815
  setLastFailedTimestamp: (baseUrl, timestamp) => {
1196
- const normalized = normalizeBaseUrl5(baseUrl);
816
+ const normalized = normalizeBaseUrl3(baseUrl);
1197
817
  const current = get().lastFailed;
1198
818
  const updated = { ...current, [normalized]: timestamp };
1199
819
  void driver.setItem(SDK_STORAGE_KEYS.LAST_FAILED, updated);
@@ -1201,14 +821,14 @@ var createEmptyStore = (driver) => vanilla.createStore((set, get) => ({
1201
821
  },
1202
822
  setProvidersOnCooldown: (value) => {
1203
823
  const normalized = value.map((entry) => ({
1204
- baseUrl: normalizeBaseUrl5(entry.baseUrl),
824
+ baseUrl: normalizeBaseUrl3(entry.baseUrl),
1205
825
  timestamp: entry.timestamp
1206
826
  }));
1207
827
  void driver.setItem(SDK_STORAGE_KEYS.PROVIDERS_ON_COOLDOWN, normalized);
1208
828
  set({ providersOnCooldown: normalized });
1209
829
  },
1210
830
  addProviderOnCooldown: (baseUrl, timestamp) => {
1211
- const normalized = normalizeBaseUrl5(baseUrl);
831
+ const normalized = normalizeBaseUrl3(baseUrl);
1212
832
  const current = get().providersOnCooldown;
1213
833
  if (!current.some((entry) => entry.baseUrl === normalized)) {
1214
834
  const updated = [...current, { baseUrl: normalized, timestamp }];
@@ -1217,7 +837,7 @@ var createEmptyStore = (driver) => vanilla.createStore((set, get) => ({
1217
837
  }
1218
838
  },
1219
839
  removeProviderFromCooldown: (baseUrl) => {
1220
- const normalized = normalizeBaseUrl5(baseUrl);
840
+ const normalized = normalizeBaseUrl3(baseUrl);
1221
841
  const current = get().providersOnCooldown;
1222
842
  const updated = current.filter((entry) => entry.baseUrl !== normalized);
1223
843
  void driver.setItem(SDK_STORAGE_KEYS.PROVIDERS_ON_COOLDOWN, updated);
@@ -1288,40 +908,40 @@ var hydrateStoreFromDriver = async (store, driver) => {
1288
908
  ]);
1289
909
  const modelsFromAllProviders = Object.fromEntries(
1290
910
  Object.entries(rawModels).map(([baseUrl, models]) => [
1291
- normalizeBaseUrl5(baseUrl),
911
+ normalizeBaseUrl3(baseUrl),
1292
912
  models
1293
913
  ])
1294
914
  );
1295
- const baseUrlsList = rawBaseUrls.map((url) => normalizeBaseUrl5(url));
915
+ const baseUrlsList = rawBaseUrls.map((url) => normalizeBaseUrl3(url));
1296
916
  const disabledProviders = rawDisabledProviders.map(
1297
- (url) => normalizeBaseUrl5(url)
917
+ (url) => normalizeBaseUrl3(url)
1298
918
  );
1299
919
  const mintsFromAllProviders = Object.fromEntries(
1300
920
  Object.entries(rawMints).map(([baseUrl, mints]) => [
1301
- normalizeBaseUrl5(baseUrl),
921
+ normalizeBaseUrl3(baseUrl),
1302
922
  mints.map((mint) => mint.endsWith("/") ? mint.slice(0, -1) : mint)
1303
923
  ])
1304
924
  );
1305
925
  const infoFromAllProviders = Object.fromEntries(
1306
926
  Object.entries(rawInfo).map(([baseUrl, info]) => [
1307
- normalizeBaseUrl5(baseUrl),
927
+ normalizeBaseUrl3(baseUrl),
1308
928
  info
1309
929
  ])
1310
930
  );
1311
931
  const lastModelsUpdate = Object.fromEntries(
1312
932
  Object.entries(rawLastModelsUpdate).map(([baseUrl, timestamp]) => [
1313
- normalizeBaseUrl5(baseUrl),
933
+ normalizeBaseUrl3(baseUrl),
1314
934
  timestamp
1315
935
  ])
1316
936
  );
1317
937
  const apiKeys = rawApiKeys.map((entry) => ({
1318
938
  ...entry,
1319
- baseUrl: normalizeBaseUrl5(entry.baseUrl),
939
+ baseUrl: normalizeBaseUrl3(entry.baseUrl),
1320
940
  balance: entry.balance ?? 0,
1321
941
  lastUsed: entry.lastUsed ?? null
1322
942
  }));
1323
943
  const childKeys = rawChildKeys.map((entry) => ({
1324
- parentBaseUrl: normalizeBaseUrl5(entry.parentBaseUrl),
944
+ parentBaseUrl: normalizeBaseUrl3(entry.parentBaseUrl),
1325
945
  childKey: entry.childKey,
1326
946
  balance: entry.balance ?? 0,
1327
947
  balanceLimit: entry.balanceLimit,
@@ -1330,9 +950,9 @@ var hydrateStoreFromDriver = async (store, driver) => {
1330
950
  }));
1331
951
  const xcashuTokens = Object.fromEntries(
1332
952
  Object.entries(rawXcashuTokens).map(([baseUrl, tokens]) => [
1333
- normalizeBaseUrl5(baseUrl),
953
+ normalizeBaseUrl3(baseUrl),
1334
954
  tokens.map((entry) => ({
1335
- baseUrl: normalizeBaseUrl5(entry.baseUrl),
955
+ baseUrl: normalizeBaseUrl3(entry.baseUrl),
1336
956
  token: entry.token,
1337
957
  createdAt: entry.createdAt ?? Date.now(),
1338
958
  tryCount: entry.tryCount ?? 0
@@ -1353,16 +973,16 @@ var hydrateStoreFromDriver = async (store, driver) => {
1353
973
  lastUsed: entry.lastUsed ?? null
1354
974
  }));
1355
975
  const failedProviders = rawFailedProviders.map(
1356
- (url) => normalizeBaseUrl5(url)
976
+ (url) => normalizeBaseUrl3(url)
1357
977
  );
1358
978
  const lastFailed = Object.fromEntries(
1359
979
  Object.entries(rawLastFailed).map(([baseUrl, timestamp]) => [
1360
- normalizeBaseUrl5(baseUrl),
980
+ normalizeBaseUrl3(baseUrl),
1361
981
  timestamp
1362
982
  ])
1363
983
  );
1364
984
  const providersOnCooldown = rawProvidersOnCooldown.map((entry) => ({
1365
- baseUrl: normalizeBaseUrl5(entry.baseUrl),
985
+ baseUrl: normalizeBaseUrl3(entry.baseUrl),
1366
986
  timestamp: entry.timestamp
1367
987
  }));
1368
988
  store.setState({
@@ -1403,12 +1023,12 @@ var createDiscoveryAdapterFromStore = (store) => ({
1403
1023
  getCachedProviderInfo: () => store.getState().infoFromAllProviders,
1404
1024
  setCachedProviderInfo: (info) => store.getState().setInfoFromAllProviders(info),
1405
1025
  getProviderLastUpdate: (baseUrl) => {
1406
- const normalized = normalizeBaseUrl5(baseUrl);
1026
+ const normalized = normalizeBaseUrl3(baseUrl);
1407
1027
  const timestamps = store.getState().lastModelsUpdate;
1408
1028
  return timestamps[normalized] || null;
1409
1029
  },
1410
1030
  setProviderLastUpdate: (baseUrl, timestamp) => {
1411
- const normalized = normalizeBaseUrl5(baseUrl);
1031
+ const normalized = normalizeBaseUrl3(baseUrl);
1412
1032
  const timestamps = { ...store.getState().lastModelsUpdate };
1413
1033
  timestamps[normalized] = timestamp;
1414
1034
  store.getState().setLastModelsUpdate(timestamps);
@@ -1437,24 +1057,24 @@ var createStorageAdapterFromStore = (store) => ({
1437
1057
  return Object.entries(distributionMap).map(([baseUrl, amt]) => ({ baseUrl, amount: amt })).sort((a, b) => b.amount - a.amount);
1438
1058
  },
1439
1059
  saveProviderInfo: (baseUrl, info) => {
1440
- const normalized = normalizeBaseUrl5(baseUrl);
1060
+ const normalized = normalizeBaseUrl3(baseUrl);
1441
1061
  const next = { ...store.getState().infoFromAllProviders };
1442
1062
  next[normalized] = info;
1443
1063
  store.getState().setInfoFromAllProviders(next);
1444
1064
  },
1445
1065
  getProviderInfo: (baseUrl) => {
1446
- const normalized = normalizeBaseUrl5(baseUrl);
1066
+ const normalized = normalizeBaseUrl3(baseUrl);
1447
1067
  return store.getState().infoFromAllProviders[normalized] || null;
1448
1068
  },
1449
1069
  // ========== API Keys (for apikeys mode) ==========
1450
1070
  getApiKey: (baseUrl) => {
1451
- const normalized = normalizeBaseUrl5(baseUrl);
1071
+ const normalized = normalizeBaseUrl3(baseUrl);
1452
1072
  const entry = store.getState().apiKeys.find((key) => key.baseUrl === normalized);
1453
1073
  if (!entry) return null;
1454
1074
  return entry;
1455
1075
  },
1456
1076
  setApiKey: (baseUrl, key) => {
1457
- const normalized = normalizeBaseUrl5(baseUrl);
1077
+ const normalized = normalizeBaseUrl3(baseUrl);
1458
1078
  const keys = store.getState().apiKeys;
1459
1079
  const existingIndex = keys.findIndex(
1460
1080
  (entry) => entry.baseUrl === normalized
@@ -1472,7 +1092,7 @@ var createStorageAdapterFromStore = (store) => ({
1472
1092
  store.getState().setApiKeys(next);
1473
1093
  },
1474
1094
  updateApiKeyBalance: (baseUrl, balance) => {
1475
- const normalized = normalizeBaseUrl5(baseUrl);
1095
+ const normalized = normalizeBaseUrl3(baseUrl);
1476
1096
  const keys = store.getState().apiKeys;
1477
1097
  const next = keys.map(
1478
1098
  (entry) => entry.baseUrl === normalized ? { ...entry, balance, lastUsed: Date.now() } : entry
@@ -1480,7 +1100,7 @@ var createStorageAdapterFromStore = (store) => ({
1480
1100
  store.getState().setApiKeys(next);
1481
1101
  },
1482
1102
  removeApiKey: (baseUrl) => {
1483
- const normalized = normalizeBaseUrl5(baseUrl);
1103
+ const normalized = normalizeBaseUrl3(baseUrl);
1484
1104
  const next = store.getState().apiKeys.filter((entry) => entry.baseUrl !== normalized);
1485
1105
  store.getState().setApiKeys(next);
1486
1106
  },
@@ -1494,7 +1114,7 @@ var createStorageAdapterFromStore = (store) => ({
1494
1114
  },
1495
1115
  // ========== Child Keys ==========
1496
1116
  getChildKey: (parentBaseUrl) => {
1497
- const normalized = normalizeBaseUrl5(parentBaseUrl);
1117
+ const normalized = normalizeBaseUrl3(parentBaseUrl);
1498
1118
  const entry = store.getState().childKeys.find((key) => key.parentBaseUrl === normalized);
1499
1119
  if (!entry) return null;
1500
1120
  return {
@@ -1507,7 +1127,7 @@ var createStorageAdapterFromStore = (store) => ({
1507
1127
  };
1508
1128
  },
1509
1129
  setChildKey: (parentBaseUrl, childKey, balance, validityDate, balanceLimit) => {
1510
- const normalized = normalizeBaseUrl5(parentBaseUrl);
1130
+ const normalized = normalizeBaseUrl3(parentBaseUrl);
1511
1131
  const keys = store.getState().childKeys;
1512
1132
  const existingIndex = keys.findIndex(
1513
1133
  (entry) => entry.parentBaseUrl === normalized
@@ -1538,7 +1158,7 @@ var createStorageAdapterFromStore = (store) => ({
1538
1158
  }
1539
1159
  },
1540
1160
  updateChildKeyBalance: (parentBaseUrl, balance) => {
1541
- const normalized = normalizeBaseUrl5(parentBaseUrl);
1161
+ const normalized = normalizeBaseUrl3(parentBaseUrl);
1542
1162
  const keys = store.getState().childKeys;
1543
1163
  const next = keys.map(
1544
1164
  (entry) => entry.parentBaseUrl === normalized ? { ...entry, balance } : entry
@@ -1546,7 +1166,7 @@ var createStorageAdapterFromStore = (store) => ({
1546
1166
  store.getState().setChildKeys(next);
1547
1167
  },
1548
1168
  removeChildKey: (parentBaseUrl) => {
1549
- const normalized = normalizeBaseUrl5(parentBaseUrl);
1169
+ const normalized = normalizeBaseUrl3(parentBaseUrl);
1550
1170
  const next = store.getState().childKeys.filter((entry) => entry.parentBaseUrl !== normalized);
1551
1171
  store.getState().setChildKeys(next);
1552
1172
  },
@@ -1571,11 +1191,11 @@ var createStorageAdapterFromStore = (store) => ({
1571
1191
  return store.getState().xcashuTokens;
1572
1192
  },
1573
1193
  getXcashuTokensForBaseUrl: (baseUrl) => {
1574
- const normalized = normalizeBaseUrl5(baseUrl);
1194
+ const normalized = normalizeBaseUrl3(baseUrl);
1575
1195
  return store.getState().xcashuTokens[normalized] || [];
1576
1196
  },
1577
1197
  addXcashuToken: (baseUrl, token) => {
1578
- const normalized = normalizeBaseUrl5(baseUrl);
1198
+ const normalized = normalizeBaseUrl3(baseUrl);
1579
1199
  const tokens = store.getState().xcashuTokens;
1580
1200
  const existing = tokens[normalized] || [];
1581
1201
  const next = { ...tokens };
@@ -1586,7 +1206,7 @@ var createStorageAdapterFromStore = (store) => ({
1586
1206
  store.getState().setXcashuTokens(next);
1587
1207
  },
1588
1208
  removeXcashuToken: (baseUrl, token) => {
1589
- const normalized = normalizeBaseUrl5(baseUrl);
1209
+ const normalized = normalizeBaseUrl3(baseUrl);
1590
1210
  const tokens = store.getState().xcashuTokens;
1591
1211
  const existing = tokens[normalized] || [];
1592
1212
  const next = { ...tokens };
@@ -1597,7 +1217,7 @@ var createStorageAdapterFromStore = (store) => ({
1597
1217
  store.getState().setXcashuTokens(next);
1598
1218
  },
1599
1219
  clearXcashuTokensForBaseUrl: (baseUrl) => {
1600
- const normalized = normalizeBaseUrl5(baseUrl);
1220
+ const normalized = normalizeBaseUrl3(baseUrl);
1601
1221
  const tokens = store.getState().xcashuTokens;
1602
1222
  const next = { ...tokens };
1603
1223
  delete next[normalized];
@@ -1611,16 +1231,16 @@ var createProviderRegistryFromStore = (store, logger) => {
1611
1231
  const log = (logger ?? consoleLogger).child("ProviderRegistry");
1612
1232
  return {
1613
1233
  getModelsForProvider: (baseUrl) => {
1614
- const normalized = normalizeBaseUrl5(baseUrl);
1234
+ const normalized = normalizeBaseUrl3(baseUrl);
1615
1235
  return store.getState().modelsFromAllProviders[normalized] || [];
1616
1236
  },
1617
1237
  getDisabledProviders: () => store.getState().disabledProviders,
1618
1238
  getProviderMints: (baseUrl) => {
1619
- const normalized = normalizeBaseUrl5(baseUrl);
1239
+ const normalized = normalizeBaseUrl3(baseUrl);
1620
1240
  return store.getState().mintsFromAllProviders[normalized] || [];
1621
1241
  },
1622
1242
  getProviderInfo: async (baseUrl) => {
1623
- const normalized = normalizeBaseUrl5(baseUrl);
1243
+ const normalized = normalizeBaseUrl3(baseUrl);
1624
1244
  const cached = store.getState().infoFromAllProviders[normalized];
1625
1245
  if (cached) return cached;
1626
1246
  try {
@@ -1646,11 +1266,11 @@ var createProviderRegistryFromStore = (store, logger) => {
1646
1266
  var MODEL_KEY_PREFIX = "models:provider:";
1647
1267
  var MODEL_TS_KEY_PREFIX = "models:provider_timestamp:";
1648
1268
  var PROVIDER_INDEX_KEY = "models:provider_index";
1649
- var MIGRATION_MARKER_KEY4 = "models_sharded_migration_v1";
1269
+ var MIGRATION_MARKER_KEY2 = "models_sharded_migration_v1";
1650
1270
  var encodeBaseUrl = (baseUrl) => encodeURIComponent(baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`);
1651
1271
  var modelKey = (baseUrl) => `${MODEL_KEY_PREFIX}${encodeBaseUrl(baseUrl)}`;
1652
1272
  var modelTsKey = (baseUrl) => `${MODEL_TS_KEY_PREFIX}${encodeBaseUrl(baseUrl)}`;
1653
- var normalizeBaseUrl6 = (baseUrl) => baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
1273
+ var normalizeBaseUrl4 = (baseUrl) => baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
1654
1274
  var createShardedDiscoveryAdapter = async (options) => {
1655
1275
  const { driver } = options;
1656
1276
  const legacyModels = await driver.getItem(SDK_STORAGE_KEYS.MODELS_FROM_ALL_PROVIDERS, {});
@@ -1658,7 +1278,7 @@ var createShardedDiscoveryAdapter = async (options) => {
1658
1278
  if (Object.keys(legacyModels).length > 0) {
1659
1279
  const migratedProviders = [];
1660
1280
  for (const [baseUrl, models] of Object.entries(legacyModels)) {
1661
- const normalized = normalizeBaseUrl6(baseUrl);
1281
+ const normalized = normalizeBaseUrl4(baseUrl);
1662
1282
  await driver.setItem(modelKey(normalized), models);
1663
1283
  const ts = legacyTimestamps[normalized] ?? Date.now();
1664
1284
  await driver.setItem(modelTsKey(normalized), ts);
@@ -1673,7 +1293,7 @@ var createShardedDiscoveryAdapter = async (options) => {
1673
1293
  await driver.removeItem(SDK_STORAGE_KEYS.MODELS_FROM_ALL_PROVIDERS);
1674
1294
  await driver.removeItem(SDK_STORAGE_KEYS.LAST_MODELS_UPDATE);
1675
1295
  }
1676
- await driver.setItem(MIGRATION_MARKER_KEY4, true);
1296
+ await driver.setItem(MIGRATION_MARKER_KEY2, true);
1677
1297
  const [
1678
1298
  rawMints,
1679
1299
  rawInfo,
@@ -1707,31 +1327,31 @@ var createShardedDiscoveryAdapter = async (options) => {
1707
1327
  const providerIndex = /* @__PURE__ */ new Set();
1708
1328
  const knownProviders = /* @__PURE__ */ new Set();
1709
1329
  for (const baseUrl of Object.keys(rawInfo)) {
1710
- knownProviders.add(normalizeBaseUrl6(baseUrl));
1330
+ knownProviders.add(normalizeBaseUrl4(baseUrl));
1711
1331
  }
1712
1332
  for (const baseUrl of Object.keys(rawMints)) {
1713
- knownProviders.add(normalizeBaseUrl6(baseUrl));
1333
+ knownProviders.add(normalizeBaseUrl4(baseUrl));
1714
1334
  }
1715
1335
  for (const baseUrl of rawBaseUrls) {
1716
- knownProviders.add(normalizeBaseUrl6(baseUrl));
1336
+ knownProviders.add(normalizeBaseUrl4(baseUrl));
1717
1337
  }
1718
1338
  for (const baseUrl of rawDisabled) {
1719
- knownProviders.add(normalizeBaseUrl6(baseUrl));
1339
+ knownProviders.add(normalizeBaseUrl4(baseUrl));
1720
1340
  }
1721
1341
  for (const baseUrl of Object.keys(legacyModels)) {
1722
- knownProviders.add(normalizeBaseUrl6(baseUrl));
1342
+ knownProviders.add(normalizeBaseUrl4(baseUrl));
1723
1343
  }
1724
1344
  const indexProviders = await driver.getItem(
1725
1345
  PROVIDER_INDEX_KEY,
1726
1346
  []
1727
1347
  );
1728
1348
  for (const baseUrl of indexProviders) {
1729
- const normalized = normalizeBaseUrl6(baseUrl);
1349
+ const normalized = normalizeBaseUrl4(baseUrl);
1730
1350
  providerIndex.add(normalized);
1731
1351
  knownProviders.add(normalized);
1732
1352
  }
1733
1353
  for (const baseUrl of knownProviders) {
1734
- const normalized = normalizeBaseUrl6(baseUrl);
1354
+ const normalized = normalizeBaseUrl4(baseUrl);
1735
1355
  const models = await driver.getItem(
1736
1356
  modelKey(normalized),
1737
1357
  null
@@ -1752,19 +1372,19 @@ var createShardedDiscoveryAdapter = async (options) => {
1752
1372
  }
1753
1373
  let mints = Object.fromEntries(
1754
1374
  Object.entries(rawMints).map(([baseUrl, mintList]) => [
1755
- normalizeBaseUrl6(baseUrl),
1375
+ normalizeBaseUrl4(baseUrl),
1756
1376
  mintList.map((mint) => mint.endsWith("/") ? mint.slice(0, -1) : mint)
1757
1377
  ])
1758
1378
  );
1759
1379
  let info = Object.fromEntries(
1760
1380
  Object.entries(rawInfo).map(([baseUrl, entry]) => [
1761
- normalizeBaseUrl6(baseUrl),
1381
+ normalizeBaseUrl4(baseUrl),
1762
1382
  entry
1763
1383
  ])
1764
1384
  );
1765
1385
  let _lastUsedModel = lastUsedModel;
1766
- let _disabledProviders = rawDisabled.map(normalizeBaseUrl6);
1767
- let _baseUrlsList = rawBaseUrls.map(normalizeBaseUrl6);
1386
+ let _disabledProviders = rawDisabled.map(normalizeBaseUrl4);
1387
+ let _baseUrlsList = rawBaseUrls.map(normalizeBaseUrl4);
1768
1388
  let _lastBaseUrlsUpdate = lastBaseUrlsUpdate;
1769
1389
  let _routstr21Models = rawRoutstr21Models;
1770
1390
  let _lastRoutstr21ModelsUpdate = lastRoutstr21ModelsUpdate;
@@ -1782,10 +1402,10 @@ var createShardedDiscoveryAdapter = async (options) => {
1782
1402
  },
1783
1403
  setCachedModels: (models) => {
1784
1404
  const nextKeys = new Set(
1785
- Object.keys(models).map((baseUrl) => normalizeBaseUrl6(baseUrl))
1405
+ Object.keys(models).map((baseUrl) => normalizeBaseUrl4(baseUrl))
1786
1406
  );
1787
1407
  for (const baseUrl of [...modelsByBaseUrl.keys()]) {
1788
- if (!nextKeys.has(normalizeBaseUrl6(baseUrl))) {
1408
+ if (!nextKeys.has(normalizeBaseUrl4(baseUrl))) {
1789
1409
  providerIndex.delete(baseUrl);
1790
1410
  modelsByBaseUrl.delete(baseUrl);
1791
1411
  timestampsByBaseUrl.delete(baseUrl);
@@ -1794,7 +1414,7 @@ var createShardedDiscoveryAdapter = async (options) => {
1794
1414
  }
1795
1415
  }
1796
1416
  for (const [baseUrl, modelList] of Object.entries(models)) {
1797
- const normalized = normalizeBaseUrl6(baseUrl);
1417
+ const normalized = normalizeBaseUrl4(baseUrl);
1798
1418
  providerIndex.add(normalized);
1799
1419
  modelsByBaseUrl.set(normalized, modelList);
1800
1420
  const ts = timestampsByBaseUrl.get(normalized) ?? Date.now();
@@ -1805,10 +1425,10 @@ var createShardedDiscoveryAdapter = async (options) => {
1805
1425
  persistProviderIndex();
1806
1426
  },
1807
1427
  getProviderLastUpdate: (baseUrl) => {
1808
- return timestampsByBaseUrl.get(normalizeBaseUrl6(baseUrl)) ?? null;
1428
+ return timestampsByBaseUrl.get(normalizeBaseUrl4(baseUrl)) ?? null;
1809
1429
  },
1810
1430
  setProviderLastUpdate: (baseUrl, timestamp) => {
1811
- const normalized = normalizeBaseUrl6(baseUrl);
1431
+ const normalized = normalizeBaseUrl4(baseUrl);
1812
1432
  providerIndex.add(normalized);
1813
1433
  timestampsByBaseUrl.set(normalized, timestamp);
1814
1434
  void driver.setItem(modelTsKey(normalized), timestamp);
@@ -1819,7 +1439,7 @@ var createShardedDiscoveryAdapter = async (options) => {
1819
1439
  setCachedMints: (value) => {
1820
1440
  const normalized = {};
1821
1441
  for (const [baseUrl, mintList] of Object.entries(value)) {
1822
- normalized[normalizeBaseUrl6(baseUrl)] = mintList.map(
1442
+ normalized[normalizeBaseUrl4(baseUrl)] = mintList.map(
1823
1443
  (mint) => mint.endsWith("/") ? mint.slice(0, -1) : mint
1824
1444
  );
1825
1445
  }
@@ -1831,7 +1451,7 @@ var createShardedDiscoveryAdapter = async (options) => {
1831
1451
  setCachedProviderInfo: (value) => {
1832
1452
  const normalized = {};
1833
1453
  for (const [baseUrl, entry] of Object.entries(value)) {
1834
- normalized[normalizeBaseUrl6(baseUrl)] = entry;
1454
+ normalized[normalizeBaseUrl4(baseUrl)] = entry;
1835
1455
  }
1836
1456
  info = normalized;
1837
1457
  void driver.setItem(SDK_STORAGE_KEYS.INFO_FROM_ALL_PROVIDERS, normalized);
@@ -1845,7 +1465,7 @@ var createShardedDiscoveryAdapter = async (options) => {
1845
1465
  // -- Disabled providers (kv) --
1846
1466
  getDisabledProviders: () => _disabledProviders,
1847
1467
  setDisabledProviders: (urls) => {
1848
- const normalized = urls.map(normalizeBaseUrl6);
1468
+ const normalized = urls.map(normalizeBaseUrl4);
1849
1469
  _disabledProviders = normalized;
1850
1470
  void driver.setItem(SDK_STORAGE_KEYS.DISABLED_PROVIDERS, normalized);
1851
1471
  },
@@ -1853,7 +1473,7 @@ var createShardedDiscoveryAdapter = async (options) => {
1853
1473
  getBaseUrlsList: () => _baseUrlsList,
1854
1474
  getBaseUrlsLastUpdate: () => _lastBaseUrlsUpdate,
1855
1475
  setBaseUrlsList: (urls) => {
1856
- const normalized = urls.map(normalizeBaseUrl6);
1476
+ const normalized = urls.map(normalizeBaseUrl4);
1857
1477
  _baseUrlsList = normalized;
1858
1478
  void driver.setItem(SDK_STORAGE_KEYS.BASE_URLS_LIST, normalized);
1859
1479
  },
@@ -1881,16 +1501,16 @@ var createProviderRegistryFromDiscoveryAdapter = (adapter, logger) => {
1881
1501
  const log = (logger ?? consoleLogger).child("ProviderRegistry");
1882
1502
  return {
1883
1503
  getModelsForProvider: (baseUrl) => {
1884
- const normalized = normalizeBaseUrl6(baseUrl);
1504
+ const normalized = normalizeBaseUrl4(baseUrl);
1885
1505
  return adapter.getCachedModels()[normalized] || [];
1886
1506
  },
1887
1507
  getDisabledProviders: () => adapter.getDisabledProviders(),
1888
1508
  getProviderMints: (baseUrl) => {
1889
- const normalized = normalizeBaseUrl6(baseUrl);
1509
+ const normalized = normalizeBaseUrl4(baseUrl);
1890
1510
  return adapter.getCachedMints()[normalized] || [];
1891
1511
  },
1892
1512
  getProviderInfo: async (baseUrl) => {
1893
- const normalized = normalizeBaseUrl6(baseUrl);
1513
+ const normalized = normalizeBaseUrl4(baseUrl);
1894
1514
  const cached = adapter.getCachedProviderInfo()[normalized];
1895
1515
  if (cached) return cached;
1896
1516
  try {
@@ -1921,31 +1541,13 @@ var isBrowser3 = () => {
1921
1541
  return false;
1922
1542
  }
1923
1543
  };
1924
- var isNode = () => {
1925
- try {
1926
- return typeof process !== "undefined" && process.versions != null && process.versions.node != null;
1927
- } catch {
1928
- return false;
1929
- }
1930
- };
1931
1544
  var defaultDriver = null;
1932
- var isBun3 = () => {
1933
- return typeof process.versions.bun !== "undefined";
1934
- };
1935
1545
  var getDefaultSdkDriver = () => {
1936
1546
  if (defaultDriver) return defaultDriver;
1937
1547
  if (isBrowser3()) {
1938
1548
  defaultDriver = localStorageDriver;
1939
1549
  return defaultDriver;
1940
1550
  }
1941
- if (isBun3()) {
1942
- defaultDriver = createMemoryDriver();
1943
- return defaultDriver;
1944
- }
1945
- if (isNode()) {
1946
- defaultDriver = createSqliteDriver();
1947
- return defaultDriver;
1948
- }
1949
1551
  defaultDriver = createMemoryDriver();
1950
1552
  return defaultDriver;
1951
1553
  };
@@ -1966,16 +1568,6 @@ var getDefaultUsageTrackingDriver = () => {
1966
1568
  });
1967
1569
  return defaultUsageTrackingDriver;
1968
1570
  }
1969
- if (isBun3()) {
1970
- defaultUsageTrackingDriver = createBunSqliteUsageTrackingDriver();
1971
- return defaultUsageTrackingDriver;
1972
- }
1973
- if (isNode()) {
1974
- defaultUsageTrackingDriver = createSqliteUsageTrackingDriver({
1975
- legacyStorageDriver: storageDriver
1976
- });
1977
- return defaultUsageTrackingDriver;
1978
- }
1979
1571
  defaultUsageTrackingDriver = createMemoryUsageTrackingDriver();
1980
1572
  return defaultUsageTrackingDriver;
1981
1573
  };
@@ -1993,8 +1585,6 @@ var getDefaultStorageAdapter = async () => createStorageAdapterFromStore(await g
1993
1585
  var getDefaultProviderRegistry = async () => createProviderRegistryFromDiscoveryAdapter(await getDefaultDiscoveryAdapter());
1994
1586
 
1995
1587
  exports.SDK_STORAGE_KEYS = SDK_STORAGE_KEYS;
1996
- exports.createBunSqliteDriver = createBunSqliteDriver;
1997
- exports.createBunSqliteUsageTrackingDriver = createBunSqliteUsageTrackingDriver;
1998
1588
  exports.createDiscoveryAdapterFromStore = createDiscoveryAdapterFromStore;
1999
1589
  exports.createIndexedDBDriver = createIndexedDBDriver;
2000
1590
  exports.createIndexedDBUsageTrackingDriver = createIndexedDBUsageTrackingDriver;
@@ -2004,8 +1594,6 @@ exports.createProviderRegistryFromDiscoveryAdapter = createProviderRegistryFromD
2004
1594
  exports.createProviderRegistryFromStore = createProviderRegistryFromStore;
2005
1595
  exports.createSdkStore = createSdkStore;
2006
1596
  exports.createShardedDiscoveryAdapter = createShardedDiscoveryAdapter;
2007
- exports.createSqliteDriver = createSqliteDriver;
2008
- exports.createSqliteUsageTrackingDriver = createSqliteUsageTrackingDriver;
2009
1597
  exports.createStorageAdapterFromStore = createStorageAdapterFromStore;
2010
1598
  exports.getDefaultDiscoveryAdapter = getDefaultDiscoveryAdapter;
2011
1599
  exports.getDefaultProviderRegistry = getDefaultProviderRegistry;