@routstr/sdk 0.3.10 → 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 +2 -2
  2. package/dist/browser.d.ts +2 -2
  3. package/dist/browser.js +201 -66
  4. package/dist/browser.js.map +1 -1
  5. package/dist/browser.mjs +198 -67
  6. package/dist/browser.mjs.map +1 -1
  7. package/dist/bun.d.mts +5 -5
  8. package/dist/bun.d.ts +5 -5
  9. package/dist/bun.js +271 -66
  10. package/dist/bun.js.map +1 -1
  11. package/dist/bun.mjs +268 -67
  12. package/dist/bun.mjs.map +1 -1
  13. package/dist/{bunSqlite-BMTseLIz.d.ts → bunSqlite-BmXWNc25.d.ts} +1 -1
  14. package/dist/{bunSqlite-D6AreVE2.d.mts → bunSqlite-Bro9efsl.d.mts} +1 -1
  15. package/dist/client/index.d.mts +31 -10
  16. package/dist/client/index.d.ts +31 -10
  17. package/dist/client/index.js +185 -36
  18. package/dist/client/index.js.map +1 -1
  19. package/dist/client/index.mjs +182 -37
  20. package/dist/client/index.mjs.map +1 -1
  21. package/dist/discovery/index.d.mts +3 -3
  22. package/dist/discovery/index.d.ts +3 -3
  23. package/dist/discovery/index.js +12 -20
  24. package/dist/discovery/index.js.map +1 -1
  25. package/dist/discovery/index.mjs +12 -20
  26. package/dist/discovery/index.mjs.map +1 -1
  27. package/dist/index.d.mts +8 -6
  28. package/dist/index.d.ts +8 -6
  29. package/dist/index.js +201 -66
  30. package/dist/index.js.map +1 -1
  31. package/dist/index.mjs +198 -67
  32. package/dist/index.mjs.map +1 -1
  33. package/dist/node.d.mts +2 -2
  34. package/dist/node.d.ts +2 -2
  35. package/dist/node.js +272 -66
  36. package/dist/node.js.map +1 -1
  37. package/dist/node.mjs +269 -67
  38. package/dist/node.mjs.map +1 -1
  39. package/dist/storage/bun.d.mts +4 -4
  40. package/dist/storage/bun.d.ts +4 -4
  41. package/dist/storage/bun.js +169 -0
  42. package/dist/storage/bun.js.map +1 -1
  43. package/dist/storage/bun.mjs +169 -0
  44. package/dist/storage/bun.mjs.map +1 -1
  45. package/dist/storage/index.d.mts +2 -2
  46. package/dist/storage/index.d.ts +2 -2
  47. package/dist/storage/index.js +99 -0
  48. package/dist/storage/index.js.map +1 -1
  49. package/dist/storage/index.mjs +99 -0
  50. package/dist/storage/index.mjs.map +1 -1
  51. package/dist/storage/node.d.mts +2 -2
  52. package/dist/storage/node.d.ts +2 -2
  53. package/dist/storage/node.js +170 -0
  54. package/dist/storage/node.js.map +1 -1
  55. package/dist/storage/node.mjs +170 -0
  56. package/dist/storage/node.mjs.map +1 -1
  57. package/dist/{store-C8MZlfuz.d.ts → store-CAQLSbEj.d.ts} +38 -1
  58. package/dist/{store-BiuM2V9N.d.mts → store-CuXwe5Rg.d.mts} +38 -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 +1 -1
@@ -1,5 +1,5 @@
1
- import { a as StorageDriver, U as UsageTrackingDriver, b as UsageTrackingEntry, S as SdkStore } from '../store-BiuM2V9N.mjs';
2
- export { L as ListUsageTrackingOptions, c as createDiscoveryAdapterFromStore, d as createProviderRegistryFromStore, e as createSdkStore, f as createStorageAdapterFromStore } from '../store-BiuM2V9N.mjs';
1
+ import { a as StorageDriver, c as UsageTrackingDriver, d as UsageTrackingEntry, S as SdkStore } from '../store-CuXwe5Rg.mjs';
2
+ export { A as AggregateUsageOptions, L as ListUsageTrackingOptions, U as UsageAggregateRow, b as UsageGroupBy, e as createDiscoveryAdapterFromStore, f as createProviderRegistryFromStore, g as createSdkStore, h as createStorageAdapterFromStore } from '../store-CuXwe5Rg.mjs';
3
3
  import { D as DiscoveryAdapter } from '../interfaces-Cv1k2EUK.mjs';
4
4
  import { P as ProviderRegistry, S as StorageAdapter } from '../interfaces-Csn8Uq04.mjs';
5
5
  export { X as XCashuTokenEntry } from '../interfaces-Csn8Uq04.mjs';
@@ -1,5 +1,5 @@
1
- import { a as StorageDriver, U as UsageTrackingDriver, b as UsageTrackingEntry, S as SdkStore } from '../store-C8MZlfuz.js';
2
- export { L as ListUsageTrackingOptions, c as createDiscoveryAdapterFromStore, d as createProviderRegistryFromStore, e as createSdkStore, f as createStorageAdapterFromStore } from '../store-C8MZlfuz.js';
1
+ import { a as StorageDriver, c as UsageTrackingDriver, d as UsageTrackingEntry, S as SdkStore } from '../store-CAQLSbEj.js';
2
+ export { A as AggregateUsageOptions, L as ListUsageTrackingOptions, U as UsageAggregateRow, b as UsageGroupBy, e as createDiscoveryAdapterFromStore, f as createProviderRegistryFromStore, g as createSdkStore, h as createStorageAdapterFromStore } from '../store-CAQLSbEj.js';
3
3
  import { D as DiscoveryAdapter } from '../interfaces-iL7CWeG5.js';
4
4
  import { P as ProviderRegistry, S as StorageAdapter } from '../interfaces-C-DYd9Jy.js';
5
5
  export { X as XCashuTokenEntry } from '../interfaces-C-DYd9Jy.js';
@@ -244,6 +244,91 @@ var SDK_STORAGE_KEYS = {
244
244
  PROVIDERS_ON_COOLDOWN: "providers_on_cooldown"
245
245
  };
246
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
+
247
332
  // storage/usageTracking/indexedDB.ts
248
333
  var DEFAULT_DB_NAME = "routstr-sdk";
249
334
  var DEFAULT_STORE_NAME = "usage_tracking";
@@ -306,6 +391,9 @@ var matchesFilters = (entry, options = {}) => {
306
391
  if (options.client && entry.client !== options.client) {
307
392
  return false;
308
393
  }
394
+ if (options.clients && options.clients.length > 0 && (entry.client == null || !options.clients.includes(entry.client))) {
395
+ return false;
396
+ }
309
397
  if (options.provider && entry.provider !== options.provider) {
310
398
  return false;
311
399
  }
@@ -404,6 +492,10 @@ var createIndexedDBUsageTrackingDriver = (options = {}) => {
404
492
  const results = await this.list(options2);
405
493
  return results.length;
406
494
  },
495
+ async aggregate(options2 = {}) {
496
+ const entries = await this.list(options2);
497
+ return reduceAggregate(entries, options2);
498
+ },
407
499
  async deleteOlderThan(timestamp) {
408
500
  await ensureMigrated();
409
501
  const db = await getDb();
@@ -461,6 +553,9 @@ var matchesFilters2 = (entry, options = {}) => {
461
553
  if (options.client && entry.client !== options.client) {
462
554
  return false;
463
555
  }
556
+ if (options.clients && options.clients.length > 0 && (entry.client == null || !options.clients.includes(entry.client))) {
557
+ return false;
558
+ }
464
559
  if (options.provider && entry.provider !== options.provider) {
465
560
  return false;
466
561
  }
@@ -493,6 +588,10 @@ var createMemoryUsageTrackingDriver = (seed = []) => {
493
588
  async count(options = {}) {
494
589
  return (await this.list(options)).length;
495
590
  },
591
+ async aggregate(options = {}) {
592
+ const entries = [...store.values()].filter((entry) => matchesFilters2(entry, options));
593
+ return reduceAggregate(entries, options);
594
+ },
496
595
  async deleteOlderThan(timestamp) {
497
596
  let deleted = 0;
498
597
  for (const [id, entry] of store.entries()) {