@routstr/sdk 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -2
- package/dist/client/index.d.mts +38 -11
- package/dist/client/index.d.ts +38 -11
- package/dist/client/index.js +1771 -391
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +1771 -392
- package/dist/client/index.mjs.map +1 -1
- package/dist/discovery/index.d.mts +2 -2
- package/dist/discovery/index.d.ts +2 -2
- package/dist/discovery/index.js +1 -4
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/index.mjs +1 -4
- package/dist/discovery/index.mjs.map +1 -1
- package/dist/index.d.mts +26 -22
- package/dist/index.d.ts +26 -22
- package/dist/index.js +3005 -2107
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2997 -2108
- package/dist/index.mjs.map +1 -1
- package/dist/{interfaces-B85Wx7ni.d.mts → interfaces-B62Rw-dd.d.ts} +20 -15
- package/dist/{interfaces-DGdP8fQp.d.mts → interfaces-BWJJTCXO.d.mts} +1 -1
- package/dist/{interfaces-CC0LT9p9.d.ts → interfaces-BxDEka72.d.ts} +1 -1
- package/dist/{interfaces-BVNyAmKu.d.ts → interfaces-C5fLD3jB.d.mts} +20 -15
- package/dist/storage/index.d.mts +38 -142
- package/dist/storage/index.d.ts +38 -142
- package/dist/storage/index.js +852 -158
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/index.mjs +846 -159
- package/dist/storage/index.mjs.map +1 -1
- package/dist/store-BJlwiDX5.d.ts +151 -0
- package/dist/store-C5lnyX8k.d.mts +151 -0
- package/dist/{types-BlHjmWRK.d.mts → types-BYj_8c5c.d.mts} +3 -0
- package/dist/{types-BlHjmWRK.d.ts → types-BYj_8c5c.d.ts} +3 -0
- package/dist/wallet/index.d.mts +24 -26
- package/dist/wallet/index.d.ts +24 -26
- package/dist/wallet/index.js +130 -259
- package/dist/wallet/index.js.map +1 -1
- package/dist/wallet/index.mjs +130 -259
- package/dist/wallet/index.mjs.map +1 -1
- 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
|
|
@@ -61,10 +70,9 @@ await client.fetchAIResponse(fetchOptions, streamingCallbacks);
|
|
|
61
70
|
|
|
62
71
|
## Client Modes
|
|
63
72
|
|
|
64
|
-
The `RoutstrClient` supports
|
|
73
|
+
The `RoutstrClient` supports two modes via the constructor `mode` parameter (defaults to `"xcashu"` if unspecified):
|
|
65
74
|
|
|
66
75
|
- `"xcashu"` — Default mode. Uses standard Cashu token spending with refunds.
|
|
67
|
-
- `"lazyrefund"` — Defers refund processing to reduce mint load; may retain tokens longer before refunding.
|
|
68
76
|
- `"apikeys"` — Uses API key authentication instead of Cashu tokens; no token spending or refund flow.
|
|
69
77
|
|
|
70
78
|
```ts
|
package/dist/client/index.d.mts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import { M as Model, a as Message, T as TransactionHistory, l as StreamingResult } from '../types-
|
|
2
|
-
import { P as ProviderRegistry, W as WalletAdapter, S as StorageAdapter, a as StreamingCallbacks } from '../interfaces-
|
|
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-C5fLD3jB.mjs';
|
|
3
|
+
import { U as UsageTrackingDriver, S as SdkStore } from '../store-C5lnyX8k.mjs';
|
|
4
|
+
import { ServerResponse } from 'http';
|
|
3
5
|
import { CashuSpender, BalanceManager } from '../wallet/index.mjs';
|
|
6
|
+
import { Transform } from 'stream';
|
|
7
|
+
import 'zustand/vanilla';
|
|
8
|
+
import '../interfaces-BWJJTCXO.mjs';
|
|
4
9
|
|
|
5
10
|
/**
|
|
6
11
|
* ProviderManager - Handles provider selection and failover logic
|
|
@@ -161,7 +166,7 @@ interface FetchOptions {
|
|
|
161
166
|
* RoutstrClient is the main SDK entry point
|
|
162
167
|
*/
|
|
163
168
|
type AlertLevel = "max" | "min";
|
|
164
|
-
type RoutstrClientMode = "xcashu" | "
|
|
169
|
+
type RoutstrClientMode = "xcashu" | "apikeys";
|
|
165
170
|
type DebugLevel = "DEBUG" | "WARN" | "ERROR";
|
|
166
171
|
interface RouteRequestParams {
|
|
167
172
|
path: string;
|
|
@@ -171,6 +176,14 @@ interface RouteRequestParams {
|
|
|
171
176
|
baseUrl: string;
|
|
172
177
|
mintUrl: string;
|
|
173
178
|
modelId?: string;
|
|
179
|
+
clientApiKey?: string;
|
|
180
|
+
}
|
|
181
|
+
interface RouteRequestToNodeResponseParams extends RouteRequestParams {
|
|
182
|
+
res: ServerResponse;
|
|
183
|
+
}
|
|
184
|
+
interface RoutstrClientConfig {
|
|
185
|
+
usageTrackingDriver?: UsageTrackingDriver;
|
|
186
|
+
sdkStore?: SdkStore;
|
|
174
187
|
}
|
|
175
188
|
declare class RoutstrClient {
|
|
176
189
|
private walletAdapter;
|
|
@@ -183,7 +196,9 @@ declare class RoutstrClient {
|
|
|
183
196
|
private alertLevel;
|
|
184
197
|
private mode;
|
|
185
198
|
private debugLevel;
|
|
186
|
-
|
|
199
|
+
private usageTrackingDriver?;
|
|
200
|
+
private sdkStore?;
|
|
201
|
+
constructor(walletAdapter: WalletAdapter, storageAdapter: StorageAdapter, providerRegistry: ProviderRegistry, alertLevel: AlertLevel, mode?: RoutstrClientMode, options?: RoutstrClientConfig);
|
|
187
202
|
/**
|
|
188
203
|
* Get the current client mode
|
|
189
204
|
*/
|
|
@@ -216,6 +231,12 @@ declare class RoutstrClient {
|
|
|
216
231
|
* requests and get responses back.
|
|
217
232
|
*/
|
|
218
233
|
routeRequest(params: RouteRequestParams): Promise<Response>;
|
|
234
|
+
routeRequestToNodeResponse(params: RouteRequestToNodeResponseParams): Promise<void>;
|
|
235
|
+
private _prepareRoutedRequest;
|
|
236
|
+
/**
|
|
237
|
+
* Extract clientApiKey from Authorization Bearer token if present
|
|
238
|
+
*/
|
|
239
|
+
private _extractClientApiKey;
|
|
219
240
|
/**
|
|
220
241
|
* Fetch AI response with streaming
|
|
221
242
|
*/
|
|
@@ -232,6 +253,7 @@ declare class RoutstrClient {
|
|
|
232
253
|
* Handle post-response balance update for all modes
|
|
233
254
|
*/
|
|
234
255
|
private _handlePostResponseBalanceUpdate;
|
|
256
|
+
private _trackResponseUsage;
|
|
235
257
|
/**
|
|
236
258
|
* Convert messages for API format
|
|
237
259
|
*/
|
|
@@ -240,17 +262,12 @@ declare class RoutstrClient {
|
|
|
240
262
|
* Create assistant message from streaming result
|
|
241
263
|
*/
|
|
242
264
|
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
265
|
/**
|
|
249
266
|
* Calculate estimated costs from usage
|
|
250
267
|
*/
|
|
251
268
|
private _getEstimatedCosts;
|
|
252
269
|
/**
|
|
253
|
-
* Get pending
|
|
270
|
+
* Get pending API key amount
|
|
254
271
|
*/
|
|
255
272
|
private _getPendingCashuTokenAmount;
|
|
256
273
|
/**
|
|
@@ -333,4 +350,14 @@ declare class StreamProcessor {
|
|
|
333
350
|
private _mergeImages;
|
|
334
351
|
}
|
|
335
352
|
|
|
336
|
-
|
|
353
|
+
interface UsageTrackingData {
|
|
354
|
+
promptTokens: number;
|
|
355
|
+
completionTokens: number;
|
|
356
|
+
totalTokens: number;
|
|
357
|
+
cost: number;
|
|
358
|
+
satsCost: number;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
declare function createSSEParserTransform(onUsage: (usage: UsageTrackingData) => void, onResponseId?: (responseId: string) => void): Transform;
|
|
362
|
+
|
|
363
|
+
export { type AlertLevel, type DebugLevel, type FetchOptions, type ModelProviderPrice, ProviderManager, type RouteRequestParams, type RouteRequestToNodeResponseParams, RoutstrClient, type RoutstrClientConfig, type RoutstrClientMode, type StreamCallbacks, StreamProcessor, createSSEParserTransform };
|
package/dist/client/index.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import { M as Model, a as Message, T as TransactionHistory, l as StreamingResult } from '../types-
|
|
2
|
-
import { P as ProviderRegistry, W as WalletAdapter, S as StorageAdapter, a as StreamingCallbacks } from '../interfaces-
|
|
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-B62Rw-dd.js';
|
|
3
|
+
import { U as UsageTrackingDriver, S as SdkStore } from '../store-BJlwiDX5.js';
|
|
4
|
+
import { ServerResponse } from 'http';
|
|
3
5
|
import { CashuSpender, BalanceManager } from '../wallet/index.js';
|
|
6
|
+
import { Transform } from 'stream';
|
|
7
|
+
import 'zustand/vanilla';
|
|
8
|
+
import '../interfaces-BxDEka72.js';
|
|
4
9
|
|
|
5
10
|
/**
|
|
6
11
|
* ProviderManager - Handles provider selection and failover logic
|
|
@@ -161,7 +166,7 @@ interface FetchOptions {
|
|
|
161
166
|
* RoutstrClient is the main SDK entry point
|
|
162
167
|
*/
|
|
163
168
|
type AlertLevel = "max" | "min";
|
|
164
|
-
type RoutstrClientMode = "xcashu" | "
|
|
169
|
+
type RoutstrClientMode = "xcashu" | "apikeys";
|
|
165
170
|
type DebugLevel = "DEBUG" | "WARN" | "ERROR";
|
|
166
171
|
interface RouteRequestParams {
|
|
167
172
|
path: string;
|
|
@@ -171,6 +176,14 @@ interface RouteRequestParams {
|
|
|
171
176
|
baseUrl: string;
|
|
172
177
|
mintUrl: string;
|
|
173
178
|
modelId?: string;
|
|
179
|
+
clientApiKey?: string;
|
|
180
|
+
}
|
|
181
|
+
interface RouteRequestToNodeResponseParams extends RouteRequestParams {
|
|
182
|
+
res: ServerResponse;
|
|
183
|
+
}
|
|
184
|
+
interface RoutstrClientConfig {
|
|
185
|
+
usageTrackingDriver?: UsageTrackingDriver;
|
|
186
|
+
sdkStore?: SdkStore;
|
|
174
187
|
}
|
|
175
188
|
declare class RoutstrClient {
|
|
176
189
|
private walletAdapter;
|
|
@@ -183,7 +196,9 @@ declare class RoutstrClient {
|
|
|
183
196
|
private alertLevel;
|
|
184
197
|
private mode;
|
|
185
198
|
private debugLevel;
|
|
186
|
-
|
|
199
|
+
private usageTrackingDriver?;
|
|
200
|
+
private sdkStore?;
|
|
201
|
+
constructor(walletAdapter: WalletAdapter, storageAdapter: StorageAdapter, providerRegistry: ProviderRegistry, alertLevel: AlertLevel, mode?: RoutstrClientMode, options?: RoutstrClientConfig);
|
|
187
202
|
/**
|
|
188
203
|
* Get the current client mode
|
|
189
204
|
*/
|
|
@@ -216,6 +231,12 @@ declare class RoutstrClient {
|
|
|
216
231
|
* requests and get responses back.
|
|
217
232
|
*/
|
|
218
233
|
routeRequest(params: RouteRequestParams): Promise<Response>;
|
|
234
|
+
routeRequestToNodeResponse(params: RouteRequestToNodeResponseParams): Promise<void>;
|
|
235
|
+
private _prepareRoutedRequest;
|
|
236
|
+
/**
|
|
237
|
+
* Extract clientApiKey from Authorization Bearer token if present
|
|
238
|
+
*/
|
|
239
|
+
private _extractClientApiKey;
|
|
219
240
|
/**
|
|
220
241
|
* Fetch AI response with streaming
|
|
221
242
|
*/
|
|
@@ -232,6 +253,7 @@ declare class RoutstrClient {
|
|
|
232
253
|
* Handle post-response balance update for all modes
|
|
233
254
|
*/
|
|
234
255
|
private _handlePostResponseBalanceUpdate;
|
|
256
|
+
private _trackResponseUsage;
|
|
235
257
|
/**
|
|
236
258
|
* Convert messages for API format
|
|
237
259
|
*/
|
|
@@ -240,17 +262,12 @@ declare class RoutstrClient {
|
|
|
240
262
|
* Create assistant message from streaming result
|
|
241
263
|
*/
|
|
242
264
|
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
265
|
/**
|
|
249
266
|
* Calculate estimated costs from usage
|
|
250
267
|
*/
|
|
251
268
|
private _getEstimatedCosts;
|
|
252
269
|
/**
|
|
253
|
-
* Get pending
|
|
270
|
+
* Get pending API key amount
|
|
254
271
|
*/
|
|
255
272
|
private _getPendingCashuTokenAmount;
|
|
256
273
|
/**
|
|
@@ -333,4 +350,14 @@ declare class StreamProcessor {
|
|
|
333
350
|
private _mergeImages;
|
|
334
351
|
}
|
|
335
352
|
|
|
336
|
-
|
|
353
|
+
interface UsageTrackingData {
|
|
354
|
+
promptTokens: number;
|
|
355
|
+
completionTokens: number;
|
|
356
|
+
totalTokens: number;
|
|
357
|
+
cost: number;
|
|
358
|
+
satsCost: number;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
declare function createSSEParserTransform(onUsage: (usage: UsageTrackingData) => void, onResponseId?: (responseId: string) => void): Transform;
|
|
362
|
+
|
|
363
|
+
export { type AlertLevel, type DebugLevel, type FetchOptions, type ModelProviderPrice, ProviderManager, type RouteRequestParams, type RouteRequestToNodeResponseParams, RoutstrClient, type RoutstrClientConfig, type RoutstrClientMode, type StreamCallbacks, StreamProcessor, createSSEParserTransform };
|