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