@routstr/sdk 0.2.3 → 0.2.5

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 (38) hide show
  1. package/README.md +9 -0
  2. package/dist/client/index.d.mts +21 -8
  3. package/dist/client/index.d.ts +21 -8
  4. package/dist/client/index.js +1406 -69
  5. package/dist/client/index.js.map +1 -1
  6. package/dist/client/index.mjs +1406 -70
  7. package/dist/client/index.mjs.map +1 -1
  8. package/dist/discovery/index.d.mts +2 -2
  9. package/dist/discovery/index.d.ts +2 -2
  10. package/dist/discovery/index.js +1 -4
  11. package/dist/discovery/index.js.map +1 -1
  12. package/dist/discovery/index.mjs +1 -4
  13. package/dist/discovery/index.mjs.map +1 -1
  14. package/dist/index.d.mts +15 -19
  15. package/dist/index.d.ts +15 -19
  16. package/dist/index.js +2385 -1574
  17. package/dist/index.js.map +1 -1
  18. package/dist/index.mjs +2380 -1575
  19. package/dist/index.mjs.map +1 -1
  20. package/dist/{interfaces-DGdP8fQp.d.mts → interfaces-BWJJTCXO.d.mts} +1 -1
  21. package/dist/{interfaces-CC0LT9p9.d.ts → interfaces-BxDEka72.d.ts} +1 -1
  22. package/dist/{interfaces-B85Wx7ni.d.mts → interfaces-C6Dr6hKy.d.mts} +1 -1
  23. package/dist/{interfaces-BVNyAmKu.d.ts → interfaces-CluftN4z.d.ts} +1 -1
  24. package/dist/storage/index.d.mts +56 -34
  25. package/dist/storage/index.d.ts +56 -34
  26. package/dist/storage/index.js +500 -51
  27. package/dist/storage/index.js.map +1 -1
  28. package/dist/storage/index.mjs +497 -52
  29. package/dist/storage/index.mjs.map +1 -1
  30. package/dist/{types-BlHjmWRK.d.mts → types-BYj_8c5c.d.mts} +3 -0
  31. package/dist/{types-BlHjmWRK.d.ts → types-BYj_8c5c.d.ts} +3 -0
  32. package/dist/wallet/index.d.mts +9 -5
  33. package/dist/wallet/index.d.ts +9 -5
  34. package/dist/wallet/index.js +54 -22
  35. package/dist/wallet/index.js.map +1 -1
  36. package/dist/wallet/index.mjs +54 -22
  37. package/dist/wallet/index.mjs.map +1 -1
  38. package/package.json +1 -1
package/README.md CHANGED
@@ -25,10 +25,19 @@ This SDK lives under `sdk/` and exposes a framework-agnostic surface for Routstr
25
25
  - `sdk/storage/index.ts` exposes:
26
26
  - `getDefaultSdkDriver()` (localStorage -> sqlite -> memory)
27
27
  - `getDefaultSdkStore()`
28
+ - `getDefaultUsageTrackingDriver()`
28
29
  - `getDefaultDiscoveryAdapter()`
29
30
  - `getDefaultStorageAdapter()`
30
31
  - `getDefaultProviderRegistry()`
31
32
 
33
+ Usage tracking is now stored separately from the Zustand-backed SDK state:
34
+
35
+ - browser: IndexedDB usage-tracking object store
36
+ - node: SQLite usage-tracking table
37
+ - bun/ephemeral: in-memory usage-tracking driver
38
+
39
+ The usage tracking driver also exposes `migrate()` so apps can proactively move legacy blob data into the new backend during startup instead of waiting for the first append/read operation.
40
+
32
41
  ## Minimal Usage
33
42
 
34
43
  ```ts
@@ -1,6 +1,8 @@
1
- import { M as Model, a as Message, T as TransactionHistory, l as StreamingResult } from '../types-BlHjmWRK.mjs';
2
- import { P as ProviderRegistry, W as WalletAdapter, S as StorageAdapter, a as StreamingCallbacks } from '../interfaces-B85Wx7ni.mjs';
1
+ import { M as Model, a as Message, T as TransactionHistory, l as StreamingResult } from '../types-BYj_8c5c.mjs';
2
+ import { P as ProviderRegistry, W as WalletAdapter, S as StorageAdapter, a as StreamingCallbacks } from '../interfaces-C6Dr6hKy.mjs';
3
+ import { ServerResponse } from 'http';
3
4
  import { CashuSpender, BalanceManager } from '../wallet/index.mjs';
5
+ import { Transform } from 'stream';
4
6
 
5
7
  /**
6
8
  * ProviderManager - Handles provider selection and failover logic
@@ -172,6 +174,9 @@ interface RouteRequestParams {
172
174
  mintUrl: string;
173
175
  modelId?: string;
174
176
  }
177
+ interface RouteRequestToNodeResponseParams extends RouteRequestParams {
178
+ res: ServerResponse;
179
+ }
175
180
  declare class RoutstrClient {
176
181
  private walletAdapter;
177
182
  private storageAdapter;
@@ -216,6 +221,8 @@ declare class RoutstrClient {
216
221
  * requests and get responses back.
217
222
  */
218
223
  routeRequest(params: RouteRequestParams): Promise<Response>;
224
+ routeRequestToNodeResponse(params: RouteRequestToNodeResponseParams): Promise<void>;
225
+ private _prepareRoutedRequest;
219
226
  /**
220
227
  * Fetch AI response with streaming
221
228
  */
@@ -232,6 +239,7 @@ declare class RoutstrClient {
232
239
  * Handle post-response balance update for all modes
233
240
  */
234
241
  private _handlePostResponseBalanceUpdate;
242
+ private _trackResponseUsage;
235
243
  /**
236
244
  * Convert messages for API format
237
245
  */
@@ -240,11 +248,6 @@ declare class RoutstrClient {
240
248
  * Create assistant message from streaming result
241
249
  */
242
250
  private _createAssistantMessage;
243
- /**
244
- * Create a child key for a parent API key via the provider's API
245
- * POST /v1/balance/child-key
246
- */
247
- private _createChildKey;
248
251
  /**
249
252
  * Calculate estimated costs from usage
250
253
  */
@@ -333,4 +336,14 @@ declare class StreamProcessor {
333
336
  private _mergeImages;
334
337
  }
335
338
 
336
- export { type AlertLevel, type DebugLevel, type FetchOptions, type ModelProviderPrice, ProviderManager, type RouteRequestParams, RoutstrClient, type RoutstrClientMode, type StreamCallbacks, StreamProcessor };
339
+ interface UsageTrackingData {
340
+ promptTokens: number;
341
+ completionTokens: number;
342
+ totalTokens: number;
343
+ cost: number;
344
+ satsCost: number;
345
+ }
346
+
347
+ declare function createSSEParserTransform(onUsage: (usage: UsageTrackingData) => void, onResponseId?: (responseId: string) => void): Transform;
348
+
349
+ export { type AlertLevel, type DebugLevel, type FetchOptions, type ModelProviderPrice, ProviderManager, type RouteRequestParams, type RouteRequestToNodeResponseParams, RoutstrClient, type RoutstrClientMode, type StreamCallbacks, StreamProcessor, createSSEParserTransform };
@@ -1,6 +1,8 @@
1
- import { M as Model, a as Message, T as TransactionHistory, l as StreamingResult } from '../types-BlHjmWRK.js';
2
- import { P as ProviderRegistry, W as WalletAdapter, S as StorageAdapter, a as StreamingCallbacks } from '../interfaces-BVNyAmKu.js';
1
+ import { M as Model, a as Message, T as TransactionHistory, l as StreamingResult } from '../types-BYj_8c5c.js';
2
+ import { P as ProviderRegistry, W as WalletAdapter, S as StorageAdapter, a as StreamingCallbacks } from '../interfaces-CluftN4z.js';
3
+ import { ServerResponse } from 'http';
3
4
  import { CashuSpender, BalanceManager } from '../wallet/index.js';
5
+ import { Transform } from 'stream';
4
6
 
5
7
  /**
6
8
  * ProviderManager - Handles provider selection and failover logic
@@ -172,6 +174,9 @@ interface RouteRequestParams {
172
174
  mintUrl: string;
173
175
  modelId?: string;
174
176
  }
177
+ interface RouteRequestToNodeResponseParams extends RouteRequestParams {
178
+ res: ServerResponse;
179
+ }
175
180
  declare class RoutstrClient {
176
181
  private walletAdapter;
177
182
  private storageAdapter;
@@ -216,6 +221,8 @@ declare class RoutstrClient {
216
221
  * requests and get responses back.
217
222
  */
218
223
  routeRequest(params: RouteRequestParams): Promise<Response>;
224
+ routeRequestToNodeResponse(params: RouteRequestToNodeResponseParams): Promise<void>;
225
+ private _prepareRoutedRequest;
219
226
  /**
220
227
  * Fetch AI response with streaming
221
228
  */
@@ -232,6 +239,7 @@ declare class RoutstrClient {
232
239
  * Handle post-response balance update for all modes
233
240
  */
234
241
  private _handlePostResponseBalanceUpdate;
242
+ private _trackResponseUsage;
235
243
  /**
236
244
  * Convert messages for API format
237
245
  */
@@ -240,11 +248,6 @@ declare class RoutstrClient {
240
248
  * Create assistant message from streaming result
241
249
  */
242
250
  private _createAssistantMessage;
243
- /**
244
- * Create a child key for a parent API key via the provider's API
245
- * POST /v1/balance/child-key
246
- */
247
- private _createChildKey;
248
251
  /**
249
252
  * Calculate estimated costs from usage
250
253
  */
@@ -333,4 +336,14 @@ declare class StreamProcessor {
333
336
  private _mergeImages;
334
337
  }
335
338
 
336
- export { type AlertLevel, type DebugLevel, type FetchOptions, type ModelProviderPrice, ProviderManager, type RouteRequestParams, RoutstrClient, type RoutstrClientMode, type StreamCallbacks, StreamProcessor };
339
+ interface UsageTrackingData {
340
+ promptTokens: number;
341
+ completionTokens: number;
342
+ totalTokens: number;
343
+ cost: number;
344
+ satsCost: number;
345
+ }
346
+
347
+ declare function createSSEParserTransform(onUsage: (usage: UsageTrackingData) => void, onResponseId?: (responseId: string) => void): Transform;
348
+
349
+ export { type AlertLevel, type DebugLevel, type FetchOptions, type ModelProviderPrice, ProviderManager, type RouteRequestParams, type RouteRequestToNodeResponseParams, RoutstrClient, type RoutstrClientMode, type StreamCallbacks, StreamProcessor, createSSEParserTransform };