@routstr/sdk 0.3.2 → 0.3.4
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/dist/client/index.d.mts +9 -5
- package/dist/client/index.d.ts +9 -5
- package/dist/client/index.js +70 -131
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +70 -131
- package/dist/client/index.mjs.map +1 -1
- package/dist/discovery/index.d.mts +8 -2
- package/dist/discovery/index.d.ts +8 -2
- package/dist/discovery/index.js +27 -16
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/index.mjs +27 -16
- package/dist/discovery/index.mjs.map +1 -1
- package/dist/index.d.mts +10 -8
- package/dist/index.d.ts +10 -8
- package/dist/index.js +141 -185
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +140 -186
- package/dist/index.mjs.map +1 -1
- package/dist/{interfaces-C5fLD3jB.d.mts → interfaces-Bp0Ngmqv.d.mts} +1 -1
- package/dist/{interfaces-BxDEka72.d.ts → interfaces-CIfd_phZ.d.ts} +1 -1
- package/dist/{interfaces-BWJJTCXO.d.mts → interfaces-Cxi8R4TT.d.mts} +1 -1
- package/dist/{interfaces-B62Rw-dd.d.ts → interfaces-D2FDCLyP.d.ts} +1 -1
- package/dist/storage/index.d.mts +9 -7
- package/dist/storage/index.d.ts +9 -7
- package/dist/storage/index.js +51 -34
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/index.mjs +51 -34
- package/dist/storage/index.mjs.map +1 -1
- package/dist/{store-h7m23ffq.d.ts → store-BD5zF9Hp.d.ts} +4 -4
- package/dist/{store-DGeLPv9E.d.mts → store-CBSyK2qg.d.mts} +4 -4
- package/dist/{types-BYj_8c5c.d.mts → types-DPQM6tIG.d.mts} +10 -1
- package/dist/{types-BYj_8c5c.d.ts → types-DPQM6tIG.d.ts} +10 -1
- package/dist/wallet/index.d.mts +8 -6
- package/dist/wallet/index.d.ts +8 -6
- package/dist/wallet/index.js +43 -52
- package/dist/wallet/index.js.map +1 -1
- package/dist/wallet/index.mjs +43 -52
- package/dist/wallet/index.mjs.map +1 -1
- package/package.json +3 -2
package/dist/index.mjs
CHANGED
|
@@ -6,6 +6,30 @@ import { createStore } from 'zustand/vanilla';
|
|
|
6
6
|
import { Transform } from 'stream';
|
|
7
7
|
import { StringDecoder } from 'string_decoder';
|
|
8
8
|
|
|
9
|
+
// core/types.ts
|
|
10
|
+
function makeConsoleLogger(prefix) {
|
|
11
|
+
const fmt = (args) => prefix ? [prefix, ...args] : args;
|
|
12
|
+
return {
|
|
13
|
+
log: (...args) => console.log(...fmt(args)),
|
|
14
|
+
warn: (...args) => console.warn(...fmt(args)),
|
|
15
|
+
error: (...args) => console.error(...fmt(args)),
|
|
16
|
+
debug: (...args) => console.log(...fmt(args)),
|
|
17
|
+
child: (p) => makeConsoleLogger(prefix ? `${prefix}:${p}` : p)
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
var consoleLogger = makeConsoleLogger();
|
|
21
|
+
var noopLogger = {
|
|
22
|
+
log: () => {
|
|
23
|
+
},
|
|
24
|
+
warn: () => {
|
|
25
|
+
},
|
|
26
|
+
error: () => {
|
|
27
|
+
},
|
|
28
|
+
debug: () => {
|
|
29
|
+
},
|
|
30
|
+
child: () => noopLogger
|
|
31
|
+
};
|
|
32
|
+
|
|
9
33
|
// core/errors.ts
|
|
10
34
|
var InsufficientBalanceError = class extends Error {
|
|
11
35
|
constructor(required, available, maxMintBalance = 0, maxMintUrl = "", customMessage) {
|
|
@@ -102,11 +126,13 @@ var ModelManager = class _ModelManager {
|
|
|
102
126
|
this.cacheTTL = config.cacheTTL || 210 * 60 * 1e3;
|
|
103
127
|
this.includeProviderUrls = config.includeProviderUrls || [];
|
|
104
128
|
this.excludeProviderUrls = config.excludeProviderUrls || [];
|
|
129
|
+
this.logger = (config.logger ?? consoleLogger).child("ModelManager");
|
|
105
130
|
}
|
|
106
131
|
cacheTTL;
|
|
107
132
|
providerDirectoryUrl;
|
|
108
133
|
includeProviderUrls;
|
|
109
134
|
excludeProviderUrls;
|
|
135
|
+
logger;
|
|
110
136
|
/**
|
|
111
137
|
* Get the list of bootstrapped provider base URLs
|
|
112
138
|
* @returns Array of provider base URLs
|
|
@@ -152,7 +178,7 @@ var ModelManager = class _ModelManager {
|
|
|
152
178
|
return filtered;
|
|
153
179
|
}
|
|
154
180
|
} catch (e) {
|
|
155
|
-
|
|
181
|
+
this.logger.warn("Nostr bootstrap failed, falling back to HTTP:", e);
|
|
156
182
|
}
|
|
157
183
|
return this.bootstrapFromHttp(torMode, forceRefresh);
|
|
158
184
|
}
|
|
@@ -228,10 +254,7 @@ var ModelManager = class _ModelManager {
|
|
|
228
254
|
}
|
|
229
255
|
}
|
|
230
256
|
} catch {
|
|
231
|
-
|
|
232
|
-
"[NostrBootstrap] Failed to parse Nostr event content:",
|
|
233
|
-
event.id
|
|
234
|
-
);
|
|
257
|
+
this.logger.warn("NostrBootstrap: failed to parse event content:", event.id);
|
|
235
258
|
}
|
|
236
259
|
}
|
|
237
260
|
}
|
|
@@ -285,7 +308,7 @@ var ModelManager = class _ModelManager {
|
|
|
285
308
|
}
|
|
286
309
|
return list;
|
|
287
310
|
} catch (e) {
|
|
288
|
-
|
|
311
|
+
this.logger.error("Failed to bootstrap providers", e);
|
|
289
312
|
throw new ProviderBootstrapError([], `Provider bootstrap failed: ${e}`);
|
|
290
313
|
}
|
|
291
314
|
}
|
|
@@ -351,9 +374,9 @@ var ModelManager = class _ModelManager {
|
|
|
351
374
|
return { success: true, base, list };
|
|
352
375
|
} catch (error) {
|
|
353
376
|
if (this.isProviderDownError(error)) {
|
|
354
|
-
|
|
377
|
+
this.logger.warn(`Provider ${base} is down right now.`);
|
|
355
378
|
} else {
|
|
356
|
-
|
|
379
|
+
this.logger.warn(`Failed to fetch models from ${base}:`, error);
|
|
357
380
|
}
|
|
358
381
|
this.adapter.setProviderLastUpdate(base, Date.now());
|
|
359
382
|
return { success: false, base };
|
|
@@ -510,10 +533,7 @@ var ModelManager = class _ModelManager {
|
|
|
510
533
|
this.adapter.setRoutstr21ModelsLastUpdate(Date.now());
|
|
511
534
|
return models;
|
|
512
535
|
} catch {
|
|
513
|
-
|
|
514
|
-
"[Routstr21Models] Failed to parse Nostr event content:",
|
|
515
|
-
event.id
|
|
516
|
-
);
|
|
536
|
+
this.logger.warn("Routstr21Models: failed to parse Nostr event content:", event.id);
|
|
517
537
|
return cachedModels.length > 0 ? cachedModels : [];
|
|
518
538
|
}
|
|
519
539
|
}
|
|
@@ -524,8 +544,10 @@ var MintDiscovery = class {
|
|
|
524
544
|
constructor(adapter, config = {}) {
|
|
525
545
|
this.adapter = adapter;
|
|
526
546
|
this.cacheTTL = config.cacheTTL || 21 * 60 * 1e3;
|
|
547
|
+
this.logger = (config.logger ?? consoleLogger).child("MintDiscovery");
|
|
527
548
|
}
|
|
528
549
|
cacheTTL;
|
|
550
|
+
logger;
|
|
529
551
|
/**
|
|
530
552
|
* Fetch mints from all providers via their /v1/info endpoints
|
|
531
553
|
* Caches mints and full provider info for later access
|
|
@@ -576,9 +598,9 @@ var MintDiscovery = class {
|
|
|
576
598
|
} catch (error) {
|
|
577
599
|
this.adapter.setProviderLastUpdate(base, Date.now());
|
|
578
600
|
if (this.isProviderDownError(error)) {
|
|
579
|
-
|
|
601
|
+
this.logger.warn(`Provider ${base} is down right now.`);
|
|
580
602
|
} else {
|
|
581
|
-
|
|
603
|
+
this.logger.warn(`Failed to fetch mints from ${base}:`, error);
|
|
582
604
|
}
|
|
583
605
|
return { success: false, base, mints: [], info: null };
|
|
584
606
|
}
|
|
@@ -592,14 +614,14 @@ var MintDiscovery = class {
|
|
|
592
614
|
infoFromAllProviders[base] = info;
|
|
593
615
|
}
|
|
594
616
|
} else {
|
|
595
|
-
|
|
617
|
+
this.logger.error("Mint discovery error:", result.reason);
|
|
596
618
|
}
|
|
597
619
|
}
|
|
598
620
|
try {
|
|
599
621
|
this.adapter.setCachedMints(mintsFromAllProviders);
|
|
600
622
|
this.adapter.setCachedProviderInfo(infoFromAllProviders);
|
|
601
623
|
} catch (error) {
|
|
602
|
-
|
|
624
|
+
this.logger.error("Error caching mint discovery results:", error);
|
|
603
625
|
}
|
|
604
626
|
return {
|
|
605
627
|
mintsFromProviders: mintsFromAllProviders,
|
|
@@ -738,14 +760,16 @@ function selectMintWithBalance(balances, units, amount, excludeMints = []) {
|
|
|
738
760
|
return { selectedMintUrl: null, selectedMintBalance: 0 };
|
|
739
761
|
}
|
|
740
762
|
var CashuSpender = class {
|
|
741
|
-
constructor(walletAdapter, storageAdapter, _providerRegistry, balanceManager) {
|
|
763
|
+
constructor(walletAdapter, storageAdapter, _providerRegistry, balanceManager, logger) {
|
|
742
764
|
this.walletAdapter = walletAdapter;
|
|
743
765
|
this.storageAdapter = storageAdapter;
|
|
744
766
|
this._providerRegistry = _providerRegistry;
|
|
745
767
|
this.balanceManager = balanceManager;
|
|
768
|
+
this.logger = (logger ?? consoleLogger).child("CashuSpender");
|
|
746
769
|
}
|
|
747
770
|
_isBusy = false;
|
|
748
771
|
debugLevel = "WARN";
|
|
772
|
+
logger;
|
|
749
773
|
async receiveToken(token) {
|
|
750
774
|
try {
|
|
751
775
|
const result = await this.walletAdapter.receiveToken(token);
|
|
@@ -841,13 +865,13 @@ var CashuSpender = class {
|
|
|
841
865
|
if (levelPriority[level] >= levelPriority[this.debugLevel]) {
|
|
842
866
|
switch (level) {
|
|
843
867
|
case "DEBUG":
|
|
844
|
-
|
|
868
|
+
this.logger.log(...args);
|
|
845
869
|
break;
|
|
846
870
|
case "WARN":
|
|
847
|
-
|
|
871
|
+
this.logger.warn(...args);
|
|
848
872
|
break;
|
|
849
873
|
case "ERROR":
|
|
850
|
-
|
|
874
|
+
this.logger.error(...args);
|
|
851
875
|
break;
|
|
852
876
|
}
|
|
853
877
|
}
|
|
@@ -1274,10 +1298,11 @@ var CashuSpender = class {
|
|
|
1274
1298
|
|
|
1275
1299
|
// wallet/BalanceManager.ts
|
|
1276
1300
|
var BalanceManager = class _BalanceManager {
|
|
1277
|
-
constructor(walletAdapter, storageAdapter, providerRegistry, cashuSpender) {
|
|
1301
|
+
constructor(walletAdapter, storageAdapter, providerRegistry, cashuSpender, logger) {
|
|
1278
1302
|
this.walletAdapter = walletAdapter;
|
|
1279
1303
|
this.storageAdapter = storageAdapter;
|
|
1280
1304
|
this.providerRegistry = providerRegistry;
|
|
1305
|
+
this.logger = (logger ?? consoleLogger).child("BalanceManager");
|
|
1281
1306
|
if (cashuSpender) {
|
|
1282
1307
|
this.cashuSpender = cashuSpender;
|
|
1283
1308
|
} else {
|
|
@@ -1294,6 +1319,7 @@ var BalanceManager = class _BalanceManager {
|
|
|
1294
1319
|
providerWalletOps = /* @__PURE__ */ new Map();
|
|
1295
1320
|
/** Cooldown (ms) between opposite operations on the same provider */
|
|
1296
1321
|
static PROVIDER_WALLET_COOLDOWN_MS = 1e4;
|
|
1322
|
+
logger;
|
|
1297
1323
|
/**
|
|
1298
1324
|
* Check whether a wallet operation (topup/refund) may run for a provider.
|
|
1299
1325
|
* Returns the reason when blocked.
|
|
@@ -1368,7 +1394,7 @@ var BalanceManager = class _BalanceManager {
|
|
|
1368
1394
|
const { mintUrl, baseUrl, apiKey, forceRefund } = options;
|
|
1369
1395
|
const guard = this._canRunProviderWalletOperation(baseUrl, "refund");
|
|
1370
1396
|
if (!guard.allowed) {
|
|
1371
|
-
|
|
1397
|
+
this.logger.log(`Skipping refund for ${baseUrl} - ${guard.reason}`);
|
|
1372
1398
|
return { success: false, message: guard.reason };
|
|
1373
1399
|
}
|
|
1374
1400
|
this._beginProviderWalletOperation(baseUrl, "refund");
|
|
@@ -1388,9 +1414,7 @@ var BalanceManager = class _BalanceManager {
|
|
|
1388
1414
|
if (apiKeyEntry?.lastUsed) {
|
|
1389
1415
|
const fiveMinutesAgo = Date.now() - 5 * 60 * 1e3;
|
|
1390
1416
|
if (apiKeyEntry.lastUsed > fiveMinutesAgo) {
|
|
1391
|
-
|
|
1392
|
-
`[BalanceManager] Skipping refund for ${baseUrl} - used ${Math.round((Date.now() - apiKeyEntry.lastUsed) / 1e3)}s ago`
|
|
1393
|
-
);
|
|
1417
|
+
this.logger.log(`Skipping refund for ${baseUrl} - used ${Math.round((Date.now() - apiKeyEntry.lastUsed) / 1e3)}s ago`);
|
|
1394
1418
|
return {
|
|
1395
1419
|
success: false,
|
|
1396
1420
|
message: "API key was used recently, skipping refund"
|
|
@@ -1432,7 +1456,7 @@ var BalanceManager = class _BalanceManager {
|
|
|
1432
1456
|
requestId: fetchResult.requestId
|
|
1433
1457
|
};
|
|
1434
1458
|
} catch (error) {
|
|
1435
|
-
|
|
1459
|
+
this.logger.error("API key refund error", error);
|
|
1436
1460
|
return this._handleRefundError(error, mintUrl, fetchResult?.requestId);
|
|
1437
1461
|
}
|
|
1438
1462
|
}
|
|
@@ -1484,7 +1508,7 @@ var BalanceManager = class _BalanceManager {
|
|
|
1484
1508
|
};
|
|
1485
1509
|
} catch (error) {
|
|
1486
1510
|
clearTimeout(timeoutId);
|
|
1487
|
-
|
|
1511
|
+
this.logger.error("fetchRefundToken fetch error", error);
|
|
1488
1512
|
if (error instanceof Error) {
|
|
1489
1513
|
if (error.name === "AbortError") {
|
|
1490
1514
|
return {
|
|
@@ -1510,7 +1534,7 @@ var BalanceManager = class _BalanceManager {
|
|
|
1510
1534
|
const { mintUrl, baseUrl, amount, token: providedToken } = options;
|
|
1511
1535
|
const guard = this._canRunProviderWalletOperation(baseUrl, "topup");
|
|
1512
1536
|
if (!guard.allowed) {
|
|
1513
|
-
|
|
1537
|
+
this.logger.log(`Skipping topup for ${baseUrl} - ${guard.reason}`);
|
|
1514
1538
|
return { success: false, message: guard.reason };
|
|
1515
1539
|
}
|
|
1516
1540
|
this._beginProviderWalletOperation(baseUrl, "topup");
|
|
@@ -1547,7 +1571,7 @@ var BalanceManager = class _BalanceManager {
|
|
|
1547
1571
|
cashuToken = tokenResult.token;
|
|
1548
1572
|
const topUpResult = await this._postTopUp(baseUrl, apiKey, cashuToken);
|
|
1549
1573
|
requestId = topUpResult.requestId;
|
|
1550
|
-
|
|
1574
|
+
this.logger.log("topUpResult:", topUpResult);
|
|
1551
1575
|
if (!topUpResult.success) {
|
|
1552
1576
|
await this._recoverFailedTopUp(cashuToken);
|
|
1553
1577
|
return {
|
|
@@ -1563,10 +1587,7 @@ var BalanceManager = class _BalanceManager {
|
|
|
1563
1587
|
requestId
|
|
1564
1588
|
};
|
|
1565
1589
|
} catch (error) {
|
|
1566
|
-
|
|
1567
|
-
"DEBUG",
|
|
1568
|
-
`[TopuPU] topup: Topup result for ${baseUrl}: error=${error}`
|
|
1569
|
-
);
|
|
1590
|
+
this.logger.log(`topup error for ${baseUrl}: ${error}`);
|
|
1570
1591
|
if (cashuToken) {
|
|
1571
1592
|
await this._recoverFailedTopUp(cashuToken);
|
|
1572
1593
|
}
|
|
@@ -1583,13 +1604,9 @@ var BalanceManager = class _BalanceManager {
|
|
|
1583
1604
|
p2pkPubkey
|
|
1584
1605
|
} = options;
|
|
1585
1606
|
const adjustedAmount = Math.ceil(amount);
|
|
1586
|
-
|
|
1587
|
-
`[BalanceManager.createProviderToken] Starting: baseUrl=${baseUrl}, mintUrl=${mintUrl}, amount=${amount}, adjustedAmount=${adjustedAmount}, retryCount=${retryCount}`
|
|
1588
|
-
);
|
|
1607
|
+
this.logger.log(`createProviderToken: baseUrl=${baseUrl} mintUrl=${mintUrl} amount=${amount} adjustedAmount=${adjustedAmount} retryCount=${retryCount}`);
|
|
1589
1608
|
if (!adjustedAmount || isNaN(adjustedAmount)) {
|
|
1590
|
-
|
|
1591
|
-
`[BalanceManager.createProviderToken] FAILURE: Invalid amount - amount=${amount}, adjustedAmount=${adjustedAmount}`
|
|
1592
|
-
);
|
|
1609
|
+
this.logger.error(`createProviderToken: invalid amount=${amount}`);
|
|
1593
1610
|
return { success: false, error: "Invalid top up amount" };
|
|
1594
1611
|
}
|
|
1595
1612
|
const balanceState = await this.getBalanceState();
|
|
@@ -1620,9 +1637,7 @@ var BalanceManager = class _BalanceManager {
|
|
|
1620
1637
|
{ url: "", balance: 0 }
|
|
1621
1638
|
).url
|
|
1622
1639
|
);
|
|
1623
|
-
|
|
1624
|
-
`[BalanceManager.createProviderToken] FAILURE: Insufficient balance - required=${adjustedAmount}, available=${totalMintBalance + targetProviderBalance}, totalMintBalance=${totalMintBalance}, targetProviderBalance=${targetProviderBalance}, refundableProviderBalance=${refundableProviderBalance}`
|
|
1625
|
-
);
|
|
1640
|
+
this.logger.error(`createProviderToken: insufficient balance required=${adjustedAmount} available=${totalMintBalance + targetProviderBalance} totalMint=${totalMintBalance} targetProvider=${targetProviderBalance}`);
|
|
1626
1641
|
return { success: false, error: error.message };
|
|
1627
1642
|
}
|
|
1628
1643
|
const providerMints = baseUrl && this.providerRegistry ? this.providerRegistry.getProviderMints(baseUrl) : [];
|
|
@@ -1658,9 +1673,7 @@ var BalanceManager = class _BalanceManager {
|
|
|
1658
1673
|
maxMintUrl = mintUrl2;
|
|
1659
1674
|
}
|
|
1660
1675
|
}
|
|
1661
|
-
|
|
1662
|
-
`[BalanceManager.createProviderToken] FAILURE: No candidate mints found - requiredAmount=${requiredAmount}, totalMintBalance=${totalMintBalance}, maxBalance=${maxBalance}, maxMintUrl=${maxMintUrl}, providerMints=${JSON.stringify(providerMints)}`
|
|
1663
|
-
);
|
|
1676
|
+
this.logger.error(`createProviderToken: no candidate mints required=${requiredAmount} totalMint=${totalMintBalance} maxBalance=${maxBalance} maxMint=${maxMintUrl}`);
|
|
1664
1677
|
const error = new InsufficientBalanceError(
|
|
1665
1678
|
adjustedAmount,
|
|
1666
1679
|
totalMintBalance,
|
|
@@ -1672,17 +1685,13 @@ var BalanceManager = class _BalanceManager {
|
|
|
1672
1685
|
let lastError;
|
|
1673
1686
|
for (const candidateMint of candidates) {
|
|
1674
1687
|
try {
|
|
1675
|
-
|
|
1676
|
-
`[BalanceManager.createProviderToken] Attempting mint: ${candidateMint}, amount: ${requiredAmount}`
|
|
1677
|
-
);
|
|
1688
|
+
this.logger.log(`createProviderToken: attempting mint=${candidateMint} amount=${requiredAmount}`);
|
|
1678
1689
|
const token = await this.walletAdapter.sendToken(
|
|
1679
1690
|
candidateMint,
|
|
1680
1691
|
requiredAmount,
|
|
1681
1692
|
p2pkPubkey
|
|
1682
1693
|
);
|
|
1683
|
-
|
|
1684
|
-
`[BalanceManager.createProviderToken] SUCCESS: Token created from mint ${candidateMint}, all mint balances: ${JSON.stringify(Object.fromEntries(Object.entries(balances).map(([mint, balance]) => [mint, getBalanceInSats(balance, units[mint])])))}`
|
|
1685
|
-
);
|
|
1694
|
+
this.logger.log(`createProviderToken: success from mint=${candidateMint}`);
|
|
1686
1695
|
return {
|
|
1687
1696
|
success: true,
|
|
1688
1697
|
token,
|
|
@@ -1691,15 +1700,11 @@ var BalanceManager = class _BalanceManager {
|
|
|
1691
1700
|
};
|
|
1692
1701
|
} catch (error) {
|
|
1693
1702
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
1694
|
-
|
|
1695
|
-
`[BalanceManager.createProviderToken] FAILURE: Mint ${candidateMint} failed with error: ${errorMsg}`
|
|
1696
|
-
);
|
|
1703
|
+
this.logger.error(`createProviderToken: mint=${candidateMint} failed: ${errorMsg}`);
|
|
1697
1704
|
if (error instanceof Error) {
|
|
1698
1705
|
lastError = errorMsg;
|
|
1699
1706
|
if (isNetworkErrorMessage(error.message)) {
|
|
1700
|
-
|
|
1701
|
-
`[BalanceManager.createProviderToken] Network error from ${candidateMint}, trying next mint...`
|
|
1702
|
-
);
|
|
1707
|
+
this.logger.warn(`createProviderToken: network error from ${candidateMint}, trying next mint...`);
|
|
1703
1708
|
continue;
|
|
1704
1709
|
}
|
|
1705
1710
|
}
|
|
@@ -1709,9 +1714,7 @@ var BalanceManager = class _BalanceManager {
|
|
|
1709
1714
|
};
|
|
1710
1715
|
}
|
|
1711
1716
|
}
|
|
1712
|
-
|
|
1713
|
-
`[BalanceManager.createProviderToken] FAILURE: All candidate mints exhausted - lastError=${lastError}, candidates=${JSON.stringify(candidates)}`
|
|
1714
|
-
);
|
|
1717
|
+
this.logger.error(`createProviderToken: all candidate mints exhausted lastError=${lastError}`);
|
|
1715
1718
|
return {
|
|
1716
1719
|
success: false,
|
|
1717
1720
|
error: lastError || "All candidate mints failed while creating top up token"
|
|
@@ -1826,7 +1829,7 @@ var BalanceManager = class _BalanceManager {
|
|
|
1826
1829
|
return { success: true, requestId };
|
|
1827
1830
|
} catch (error) {
|
|
1828
1831
|
clearTimeout(timeoutId);
|
|
1829
|
-
|
|
1832
|
+
this.logger.error("_postTopUp fetch error", error);
|
|
1830
1833
|
if (error instanceof Error) {
|
|
1831
1834
|
if (error.name === "AbortError") {
|
|
1832
1835
|
return {
|
|
@@ -1852,10 +1855,7 @@ var BalanceManager = class _BalanceManager {
|
|
|
1852
1855
|
try {
|
|
1853
1856
|
await this.cashuSpender.receiveToken(cashuToken);
|
|
1854
1857
|
} catch (error) {
|
|
1855
|
-
|
|
1856
|
-
"[BalanceManager._recoverFailedTopUp] Failed to recover token",
|
|
1857
|
-
error
|
|
1858
|
-
);
|
|
1858
|
+
this.logger.error("_recoverFailedTopUp: failed to recover token", error);
|
|
1859
1859
|
}
|
|
1860
1860
|
}
|
|
1861
1861
|
/**
|
|
@@ -1908,9 +1908,9 @@ var BalanceManager = class _BalanceManager {
|
|
|
1908
1908
|
apiKey: data.api_key
|
|
1909
1909
|
};
|
|
1910
1910
|
} else {
|
|
1911
|
-
|
|
1911
|
+
this.logger.warn(`getTokenBalance: status=${response.status}`);
|
|
1912
1912
|
const data = await response.json();
|
|
1913
|
-
|
|
1913
|
+
this.logger.warn("getTokenBalance: FAILED", data);
|
|
1914
1914
|
const isInvalidApiKey = response.status === 401 && data?.detail?.error?.code === "invalid_api_key" && data?.detail?.error?.message?.includes("proofs already spent");
|
|
1915
1915
|
return {
|
|
1916
1916
|
amount: -1,
|
|
@@ -1921,7 +1921,7 @@ var BalanceManager = class _BalanceManager {
|
|
|
1921
1921
|
};
|
|
1922
1922
|
}
|
|
1923
1923
|
} catch (error) {
|
|
1924
|
-
|
|
1924
|
+
this.logger.error("getTokenBalance error", error);
|
|
1925
1925
|
}
|
|
1926
1926
|
return { amount: -1, reserved: 0, unit: "sat", apiKey: "" };
|
|
1927
1927
|
}
|
|
@@ -2443,9 +2443,10 @@ function isInsecureHttpUrl(url) {
|
|
|
2443
2443
|
return url.startsWith("http://");
|
|
2444
2444
|
}
|
|
2445
2445
|
var ProviderManager = class _ProviderManager {
|
|
2446
|
-
constructor(providerRegistry, store) {
|
|
2446
|
+
constructor(providerRegistry, store, logger) {
|
|
2447
2447
|
this.providerRegistry = providerRegistry;
|
|
2448
2448
|
this.instanceId = `pm_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 8)}`;
|
|
2449
|
+
this.logger = (logger ?? consoleLogger).child(`ProviderManager:${this.instanceId}`);
|
|
2449
2450
|
if (store) {
|
|
2450
2451
|
this.store = store;
|
|
2451
2452
|
this.hydrateFromStore();
|
|
@@ -2462,6 +2463,7 @@ var ProviderManager = class _ProviderManager {
|
|
|
2462
2463
|
store = null;
|
|
2463
2464
|
/** Instance ID for debugging */
|
|
2464
2465
|
instanceId;
|
|
2466
|
+
logger;
|
|
2465
2467
|
/**
|
|
2466
2468
|
* Hydrate in-memory state from persistent store
|
|
2467
2469
|
*/
|
|
@@ -2474,10 +2476,7 @@ var ProviderManager = class _ProviderManager {
|
|
|
2474
2476
|
this.providersOnCoolDown = state.providersOnCooldown.filter(
|
|
2475
2477
|
(entry) => now - entry.timestamp < _ProviderManager.COOLDOWN_DURATION_MS
|
|
2476
2478
|
).map((entry) => [entry.baseUrl, entry.timestamp]);
|
|
2477
|
-
|
|
2478
|
-
console.log(` failedProviders: ${this.failedProviders.size}`);
|
|
2479
|
-
console.log(` lastFailed: ${this.lastFailed.size}`);
|
|
2480
|
-
console.log(` providersOnCooldown: ${this.providersOnCoolDown.length}`);
|
|
2479
|
+
this.logger.log(`Hydrated from store: failedProviders=${this.failedProviders.size} lastFailed=${this.lastFailed.size} providersOnCooldown=${this.providersOnCoolDown.length}`);
|
|
2481
2480
|
}
|
|
2482
2481
|
/**
|
|
2483
2482
|
* Get instance ID for debugging
|
|
@@ -2497,9 +2496,7 @@ var ProviderManager = class _ProviderManager {
|
|
|
2497
2496
|
const age = now - timestamp;
|
|
2498
2497
|
const isExpired = age >= _ProviderManager.COOLDOWN_DURATION_MS;
|
|
2499
2498
|
if (isExpired) {
|
|
2500
|
-
|
|
2501
|
-
`[cleanupExpiredCooldowns:${this.instanceId}] Removing expired cooldown for ${url} (age: ${age}ms, cooldown: ${_ProviderManager.COOLDOWN_DURATION_MS}ms)`
|
|
2502
|
-
);
|
|
2499
|
+
this.logger.log(`Removing expired cooldown for ${url} (age: ${age}ms)`);
|
|
2503
2500
|
this.failedProviders.delete(url);
|
|
2504
2501
|
if (this.store) {
|
|
2505
2502
|
this.store.getState().removeFailedProvider(url);
|
|
@@ -2510,9 +2507,7 @@ var ProviderManager = class _ProviderManager {
|
|
|
2510
2507
|
);
|
|
2511
2508
|
const after = this.providersOnCoolDown.length;
|
|
2512
2509
|
if (before !== after) {
|
|
2513
|
-
|
|
2514
|
-
`[cleanupExpiredCooldowns:${this.instanceId}] Cleaned up ${before - after} expired cooldown(s), ${after} remaining`
|
|
2515
|
-
);
|
|
2510
|
+
this.logger.log(`Cleaned up ${before - after} expired cooldown(s), ${after} remaining`);
|
|
2516
2511
|
}
|
|
2517
2512
|
}
|
|
2518
2513
|
/**
|
|
@@ -2564,24 +2559,10 @@ var ProviderManager = class _ProviderManager {
|
|
|
2564
2559
|
markFailed(baseUrl) {
|
|
2565
2560
|
const now = Date.now();
|
|
2566
2561
|
const lastFailure = this.lastFailed.get(baseUrl);
|
|
2567
|
-
|
|
2568
|
-
console.log(
|
|
2569
|
-
`[markFailed:${this.instanceId}] lastFailure from map: ${lastFailure}`
|
|
2570
|
-
);
|
|
2571
|
-
console.log(
|
|
2572
|
-
`[markFailed:${this.instanceId}] current timestamp (now): ${now}`
|
|
2573
|
-
);
|
|
2574
|
-
console.log(
|
|
2575
|
-
`[markFailed:${this.instanceId}] COOLDOWN_DURATION_MS: ${_ProviderManager.COOLDOWN_DURATION_MS}`
|
|
2576
|
-
);
|
|
2562
|
+
this.logger.log(`markFailed: ${baseUrl} lastFailure=${lastFailure} now=${now}`);
|
|
2577
2563
|
if (lastFailure !== void 0) {
|
|
2578
2564
|
const timeSinceLastFailure = now - lastFailure;
|
|
2579
|
-
|
|
2580
|
-
`[markFailed:${this.instanceId}] timeSinceLastFailure: ${timeSinceLastFailure}ms`
|
|
2581
|
-
);
|
|
2582
|
-
console.log(
|
|
2583
|
-
`[markFailed:${this.instanceId}] isWithinCooldownWindow: ${timeSinceLastFailure < _ProviderManager.COOLDOWN_DURATION_MS}`
|
|
2584
|
-
);
|
|
2565
|
+
this.logger.log(`markFailed: timeSinceLastFailure=${timeSinceLastFailure}ms withinCooldown=${timeSinceLastFailure < _ProviderManager.COOLDOWN_DURATION_MS}`);
|
|
2585
2566
|
}
|
|
2586
2567
|
this.lastFailed.set(baseUrl, now);
|
|
2587
2568
|
this.failedProviders.add(baseUrl);
|
|
@@ -2589,38 +2570,23 @@ var ProviderManager = class _ProviderManager {
|
|
|
2589
2570
|
this.store.getState().setLastFailedTimestamp(baseUrl, now);
|
|
2590
2571
|
this.store.getState().addFailedProvider(baseUrl);
|
|
2591
2572
|
}
|
|
2592
|
-
|
|
2593
|
-
`[markFailed:${this.instanceId}] Updated lastFailed map for ${baseUrl} to ${now}`
|
|
2594
|
-
);
|
|
2595
|
-
console.log(
|
|
2596
|
-
`[markFailed:${this.instanceId}] failedProviders set size: ${this.failedProviders.size}`
|
|
2597
|
-
);
|
|
2573
|
+
this.logger.log(`markFailed: updated ${baseUrl} to ${now}, failedProviders=${this.failedProviders.size}`);
|
|
2598
2574
|
if (lastFailure !== void 0 && now - lastFailure < _ProviderManager.COOLDOWN_DURATION_MS) {
|
|
2599
|
-
|
|
2600
|
-
`[markFailed:${this.instanceId}] Second failure detected within cooldown window for ${baseUrl}`
|
|
2601
|
-
);
|
|
2575
|
+
this.logger.log(`markFailed: second failure within cooldown window for ${baseUrl}`);
|
|
2602
2576
|
if (!this.isOnCooldown(baseUrl)) {
|
|
2603
2577
|
this.providersOnCoolDown.push([baseUrl, now]);
|
|
2604
2578
|
if (this.store) {
|
|
2605
2579
|
this.store.getState().addProviderOnCooldown(baseUrl, now);
|
|
2606
2580
|
}
|
|
2607
|
-
|
|
2608
|
-
`[markFailed:${this.instanceId}] Provider ${baseUrl} added to cooldown after second failure within 5 minutes`
|
|
2609
|
-
);
|
|
2581
|
+
this.logger.log(`markFailed: ${baseUrl} added to cooldown`);
|
|
2610
2582
|
} else {
|
|
2611
|
-
|
|
2612
|
-
`[markFailed:${this.instanceId}] Provider ${baseUrl} is already on cooldown`
|
|
2613
|
-
);
|
|
2583
|
+
this.logger.log(`markFailed: ${baseUrl} already on cooldown`);
|
|
2614
2584
|
}
|
|
2615
2585
|
} else {
|
|
2616
2586
|
if (lastFailure === void 0) {
|
|
2617
|
-
|
|
2618
|
-
`[markFailed:${this.instanceId}] First failure for ${baseUrl} - not adding to cooldown yet`
|
|
2619
|
-
);
|
|
2587
|
+
this.logger.log(`markFailed: first failure for ${baseUrl}`);
|
|
2620
2588
|
} else {
|
|
2621
|
-
|
|
2622
|
-
`[markFailed:${this.instanceId}] Failure outside cooldown window for ${baseUrl} (timeSinceLastFailure: ${now - lastFailure}ms)`
|
|
2623
|
-
);
|
|
2589
|
+
this.logger.log(`markFailed: failure outside cooldown window for ${baseUrl} (${now - lastFailure}ms ago)`);
|
|
2624
2590
|
}
|
|
2625
2591
|
}
|
|
2626
2592
|
}
|
|
@@ -2677,25 +2643,12 @@ var ProviderManager = class _ProviderManager {
|
|
|
2677
2643
|
const disabledProviders = new Set(
|
|
2678
2644
|
this.providerRegistry.getDisabledProviders()
|
|
2679
2645
|
);
|
|
2680
|
-
|
|
2681
|
-
`[findNextBestProvider:${this.instanceId}] Starting search for model: ${modelId}`
|
|
2682
|
-
);
|
|
2683
|
-
console.log(
|
|
2684
|
-
`[findNextBestProvider:${this.instanceId}] disabledProviders: ${[...disabledProviders]}`
|
|
2685
|
-
);
|
|
2686
|
-
console.log(
|
|
2687
|
-
`[findNextBestProvider:${this.instanceId}] providersOnCooldown: ${this.providersOnCoolDown.map(([url]) => url)}`
|
|
2688
|
-
);
|
|
2646
|
+
this.logger.log(`findNextBestProvider: model=${modelId} disabled=${[...disabledProviders].length} onCooldown=${this.providersOnCoolDown.length}`);
|
|
2689
2647
|
const allProviders = this.providerRegistry.getAllProvidersModels();
|
|
2690
|
-
|
|
2691
|
-
`[findNextBestProvider:${this.instanceId}] Total providers in registry: ${Object.keys(allProviders).length}`
|
|
2692
|
-
);
|
|
2648
|
+
this.logger.log(`findNextBestProvider: total providers=${Object.keys(allProviders).length}`);
|
|
2693
2649
|
const candidates = [];
|
|
2694
2650
|
for (const [baseUrl, models] of Object.entries(allProviders)) {
|
|
2695
2651
|
if (baseUrl === currentBaseUrl) {
|
|
2696
|
-
console.log(
|
|
2697
|
-
`[findNextBestProvider:${this.instanceId}] SKIP (current): ${baseUrl}`
|
|
2698
|
-
);
|
|
2699
2652
|
continue;
|
|
2700
2653
|
}
|
|
2701
2654
|
if (disabledProviders.has(baseUrl)) {
|
|
@@ -2721,7 +2674,7 @@ var ProviderManager = class _ProviderManager {
|
|
|
2721
2674
|
return null;
|
|
2722
2675
|
}
|
|
2723
2676
|
} catch (error) {
|
|
2724
|
-
|
|
2677
|
+
this.logger.error("findNextBestProvider error:", error);
|
|
2725
2678
|
return null;
|
|
2726
2679
|
}
|
|
2727
2680
|
}
|
|
@@ -2848,16 +2801,9 @@ var ProviderManager = class _ProviderManager {
|
|
|
2848
2801
|
res.height
|
|
2849
2802
|
);
|
|
2850
2803
|
imageTokens += tokensFromImage;
|
|
2851
|
-
|
|
2852
|
-
width: res.width,
|
|
2853
|
-
height: res.height,
|
|
2854
|
-
tokensFromImage
|
|
2855
|
-
});
|
|
2804
|
+
this.logger.log(`IMAGE INPUT RESOLUTION width=${res.width} height=${res.height} tokens=${tokensFromImage}`);
|
|
2856
2805
|
} else {
|
|
2857
|
-
|
|
2858
|
-
"IMAGE INPUT RESOLUTION",
|
|
2859
|
-
"unknown (unsupported format or parse failure)"
|
|
2860
|
-
);
|
|
2806
|
+
this.logger.log("IMAGE INPUT RESOLUTION: unknown format");
|
|
2861
2807
|
}
|
|
2862
2808
|
}
|
|
2863
2809
|
}
|
|
@@ -2890,7 +2836,7 @@ var ProviderManager = class _ProviderManager {
|
|
|
2890
2836
|
const totalEstimatedCosts = (promptCosts + completionCost) * 1.05;
|
|
2891
2837
|
return totalEstimatedCosts;
|
|
2892
2838
|
} catch (e) {
|
|
2893
|
-
|
|
2839
|
+
this.logger.error("getRequiredSatsForModel error:", e);
|
|
2894
2840
|
return 0;
|
|
2895
2841
|
}
|
|
2896
2842
|
}
|
|
@@ -3089,7 +3035,8 @@ var createSqliteDriver = (options = {}) => {
|
|
|
3089
3035
|
}
|
|
3090
3036
|
};
|
|
3091
3037
|
};
|
|
3092
|
-
async function createBunSqliteDriver(dbPath) {
|
|
3038
|
+
async function createBunSqliteDriver(dbPath, options) {
|
|
3039
|
+
const logger = (options?.logger ?? consoleLogger).child("BunSqliteDriver");
|
|
3093
3040
|
const SQLite = (await import(
|
|
3094
3041
|
/* webpackIgnore: true */
|
|
3095
3042
|
'bun:sqlite'
|
|
@@ -3115,7 +3062,7 @@ async function createBunSqliteDriver(dbPath) {
|
|
|
3115
3062
|
throw parseError;
|
|
3116
3063
|
}
|
|
3117
3064
|
} catch (error) {
|
|
3118
|
-
|
|
3065
|
+
logger.error(`getItem failed for key "${key}":`, error);
|
|
3119
3066
|
return defaultValue;
|
|
3120
3067
|
}
|
|
3121
3068
|
},
|
|
@@ -3125,14 +3072,14 @@ async function createBunSqliteDriver(dbPath) {
|
|
|
3125
3072
|
"INSERT INTO sdk_storage (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value"
|
|
3126
3073
|
).run(key, JSON.stringify(value));
|
|
3127
3074
|
} catch (error) {
|
|
3128
|
-
|
|
3075
|
+
logger.error(`setItem failed for key "${key}":`, error);
|
|
3129
3076
|
}
|
|
3130
3077
|
},
|
|
3131
3078
|
async removeItem(key) {
|
|
3132
3079
|
try {
|
|
3133
3080
|
db.query("DELETE FROM sdk_storage WHERE key = ?").run(key);
|
|
3134
3081
|
} catch (error) {
|
|
3135
|
-
|
|
3082
|
+
logger.error(`removeItem failed for key "${key}":`, error);
|
|
3136
3083
|
}
|
|
3137
3084
|
}
|
|
3138
3085
|
};
|
|
@@ -4483,37 +4430,40 @@ var createStorageAdapterFromStore = (store) => ({
|
|
|
4483
4430
|
store.getState().updateXcashuTokenTryCount(token, tryCount);
|
|
4484
4431
|
}
|
|
4485
4432
|
});
|
|
4486
|
-
var createProviderRegistryFromStore = (store) =>
|
|
4487
|
-
|
|
4488
|
-
|
|
4489
|
-
|
|
4490
|
-
|
|
4491
|
-
|
|
4492
|
-
|
|
4493
|
-
|
|
4494
|
-
|
|
4495
|
-
|
|
4496
|
-
|
|
4497
|
-
|
|
4498
|
-
|
|
4499
|
-
|
|
4500
|
-
|
|
4501
|
-
|
|
4502
|
-
|
|
4503
|
-
|
|
4433
|
+
var createProviderRegistryFromStore = (store, logger) => {
|
|
4434
|
+
const log = (logger ?? consoleLogger).child("ProviderRegistry");
|
|
4435
|
+
return {
|
|
4436
|
+
getModelsForProvider: (baseUrl) => {
|
|
4437
|
+
const normalized = normalizeBaseUrl5(baseUrl);
|
|
4438
|
+
return store.getState().modelsFromAllProviders[normalized] || [];
|
|
4439
|
+
},
|
|
4440
|
+
getDisabledProviders: () => store.getState().disabledProviders,
|
|
4441
|
+
getProviderMints: (baseUrl) => {
|
|
4442
|
+
const normalized = normalizeBaseUrl5(baseUrl);
|
|
4443
|
+
return store.getState().mintsFromAllProviders[normalized] || [];
|
|
4444
|
+
},
|
|
4445
|
+
getProviderInfo: async (baseUrl) => {
|
|
4446
|
+
const normalized = normalizeBaseUrl5(baseUrl);
|
|
4447
|
+
const cached = store.getState().infoFromAllProviders[normalized];
|
|
4448
|
+
if (cached) return cached;
|
|
4449
|
+
try {
|
|
4450
|
+
const response = await fetch(`${normalized}v1/info`);
|
|
4451
|
+
if (!response.ok) {
|
|
4452
|
+
throw new Error(`Failed ${response.status}`);
|
|
4453
|
+
}
|
|
4454
|
+
const info = await response.json();
|
|
4455
|
+
const next = { ...store.getState().infoFromAllProviders };
|
|
4456
|
+
next[normalized] = info;
|
|
4457
|
+
store.getState().setInfoFromAllProviders(next);
|
|
4458
|
+
return info;
|
|
4459
|
+
} catch (error) {
|
|
4460
|
+
log.warn(`Failed to fetch provider info from ${normalized}:`, error);
|
|
4461
|
+
return null;
|
|
4504
4462
|
}
|
|
4505
|
-
|
|
4506
|
-
|
|
4507
|
-
|
|
4508
|
-
|
|
4509
|
-
return info;
|
|
4510
|
-
} catch (error) {
|
|
4511
|
-
console.warn(`Failed to fetch provider info from ${normalized}:`, error);
|
|
4512
|
-
return null;
|
|
4513
|
-
}
|
|
4514
|
-
},
|
|
4515
|
-
getAllProvidersModels: () => store.getState().modelsFromAllProviders
|
|
4516
|
-
});
|
|
4463
|
+
},
|
|
4464
|
+
getAllProvidersModels: () => store.getState().modelsFromAllProviders
|
|
4465
|
+
};
|
|
4466
|
+
};
|
|
4517
4467
|
|
|
4518
4468
|
// storage/index.ts
|
|
4519
4469
|
var isBrowser3 = () => {
|
|
@@ -4784,6 +4734,7 @@ var RoutstrClient = class {
|
|
|
4784
4734
|
this.walletAdapter = walletAdapter;
|
|
4785
4735
|
this.storageAdapter = storageAdapter;
|
|
4786
4736
|
this.providerRegistry = providerRegistry;
|
|
4737
|
+
this.logger = (options.logger ?? consoleLogger).child("RoutstrClient");
|
|
4787
4738
|
this.balanceManager = new BalanceManager(
|
|
4788
4739
|
walletAdapter,
|
|
4789
4740
|
storageAdapter,
|
|
@@ -4800,7 +4751,7 @@ var RoutstrClient = class {
|
|
|
4800
4751
|
this.mode = mode;
|
|
4801
4752
|
this.usageTrackingDriver = options.usageTrackingDriver;
|
|
4802
4753
|
this.sdkStore = options.sdkStore;
|
|
4803
|
-
this.providerManager = options.providerManager ?? new ProviderManager(providerRegistry, this.sdkStore);
|
|
4754
|
+
this.providerManager = options.providerManager ?? new ProviderManager(providerRegistry, this.sdkStore, this.logger);
|
|
4804
4755
|
}
|
|
4805
4756
|
cashuSpender;
|
|
4806
4757
|
balanceManager;
|
|
@@ -4811,6 +4762,7 @@ var RoutstrClient = class {
|
|
|
4811
4762
|
debugLevel = "WARN";
|
|
4812
4763
|
usageTrackingDriver;
|
|
4813
4764
|
sdkStore;
|
|
4765
|
+
logger;
|
|
4814
4766
|
/**
|
|
4815
4767
|
* Get the current client mode
|
|
4816
4768
|
*/
|
|
@@ -4832,13 +4784,13 @@ var RoutstrClient = class {
|
|
|
4832
4784
|
if (levelPriority[level] >= levelPriority[this.debugLevel]) {
|
|
4833
4785
|
switch (level) {
|
|
4834
4786
|
case "DEBUG":
|
|
4835
|
-
|
|
4787
|
+
this.logger.log(...args);
|
|
4836
4788
|
break;
|
|
4837
4789
|
case "WARN":
|
|
4838
|
-
|
|
4790
|
+
this.logger.warn(...args);
|
|
4839
4791
|
break;
|
|
4840
4792
|
case "ERROR":
|
|
4841
|
-
|
|
4793
|
+
this.logger.error(...args);
|
|
4842
4794
|
break;
|
|
4843
4795
|
}
|
|
4844
4796
|
}
|
|
@@ -5442,7 +5394,7 @@ var RoutstrClient = class {
|
|
|
5442
5394
|
tryNextProvider = true;
|
|
5443
5395
|
}
|
|
5444
5396
|
}
|
|
5445
|
-
if ((status === 401 || status === 403 || status === 413 || status === 400 || status === 429 || status === 500 || status === 502 || status === 503 || status === 504 || status === 521) && !tryNextProvider) {
|
|
5397
|
+
if ((status === 401 || status === 403 || status === 404 || status === 413 || status === 400 || status === 429 || status === 500 || status === 502 || status === 503 || status === 504 || status === 521) && !tryNextProvider) {
|
|
5446
5398
|
this._log(
|
|
5447
5399
|
"DEBUG",
|
|
5448
5400
|
`[RoutstrClient] _handleErrorResponse: Status ${status} (${status === 429 ? "rate limited" : "auth/server error"}), attempting refund for ${baseUrl}, mode=${this.mode}`
|
|
@@ -5946,7 +5898,8 @@ async function resolveRouteRequestContext(options) {
|
|
|
5946
5898
|
mode = "apikeys",
|
|
5947
5899
|
usageTrackingDriver,
|
|
5948
5900
|
sdkStore,
|
|
5949
|
-
providerManager: providedProviderManager
|
|
5901
|
+
providerManager: providedProviderManager,
|
|
5902
|
+
logger
|
|
5950
5903
|
} = options;
|
|
5951
5904
|
let modelManager;
|
|
5952
5905
|
let providers;
|
|
@@ -5958,7 +5911,8 @@ async function resolveRouteRequestContext(options) {
|
|
|
5958
5911
|
}
|
|
5959
5912
|
} else {
|
|
5960
5913
|
modelManager = new ModelManager(discoveryAdapter, {
|
|
5961
|
-
includeProviderUrls: forcedProvider ? [forcedProvider, ...includeProviderUrls] : includeProviderUrls
|
|
5914
|
+
includeProviderUrls: forcedProvider ? [forcedProvider, ...includeProviderUrls] : includeProviderUrls,
|
|
5915
|
+
logger
|
|
5962
5916
|
});
|
|
5963
5917
|
providers = await modelManager.bootstrapProviders(torMode);
|
|
5964
5918
|
if (providers.length === 0) {
|
|
@@ -5966,7 +5920,7 @@ async function resolveRouteRequestContext(options) {
|
|
|
5966
5920
|
}
|
|
5967
5921
|
await modelManager.fetchModels(providers, forceRefresh);
|
|
5968
5922
|
}
|
|
5969
|
-
const providerManager = providedProviderManager ?? new ProviderManager(providerRegistry, sdkStore);
|
|
5923
|
+
const providerManager = providedProviderManager ?? new ProviderManager(providerRegistry, sdkStore, logger);
|
|
5970
5924
|
let baseUrl;
|
|
5971
5925
|
let selectedModel;
|
|
5972
5926
|
if (forcedProvider) {
|
|
@@ -6011,7 +5965,7 @@ async function resolveRouteRequestContext(options) {
|
|
|
6011
5965
|
providerRegistry,
|
|
6012
5966
|
"min",
|
|
6013
5967
|
mode,
|
|
6014
|
-
{ usageTrackingDriver, sdkStore, providerManager }
|
|
5968
|
+
{ usageTrackingDriver, sdkStore, providerManager, logger }
|
|
6015
5969
|
);
|
|
6016
5970
|
if (debugLevel) {
|
|
6017
5971
|
client.setDebugLevel(debugLevel);
|
|
@@ -6076,6 +6030,6 @@ function extractStream(requestBody) {
|
|
|
6076
6030
|
return typeof stream === "boolean" ? stream : void 0;
|
|
6077
6031
|
}
|
|
6078
6032
|
|
|
6079
|
-
export { BalanceManager, CashuSpender, FailoverError, InsufficientBalanceError, MintDiscovery, MintDiscoveryError, MintUnreachableError, ModelManager, ModelNotFoundError, NoProvidersAvailableError, ProviderBootstrapError, ProviderError, ProviderManager, RoutstrClient, SDK_STORAGE_KEYS, StreamProcessor, StreamingError, TokenOperationError, createBunSqliteDriver, createBunSqliteUsageTrackingDriver, createDiscoveryAdapterFromStore, createIndexedDBDriver, createIndexedDBUsageTrackingDriver, createMemoryDriver, createMemoryUsageTrackingDriver, createProviderRegistryFromStore, createSSEParserTransform, createSdkStore, createSqliteDriver, createSqliteUsageTrackingDriver, createStorageAdapterFromStore, filterBaseUrlsForTor, getDefaultDiscoveryAdapter, getDefaultProviderRegistry, getDefaultSdkDriver, getDefaultSdkStore, getDefaultStorageAdapter, getDefaultUsageTrackingDriver, getProviderEndpoints, inspectSSEWebStream, isOnionUrl, isTorContext, localStorageDriver, normalizeProviderUrl, routeRequests, setDefaultUsageTrackingDriver };
|
|
6033
|
+
export { BalanceManager, CashuSpender, FailoverError, InsufficientBalanceError, MintDiscovery, MintDiscoveryError, MintUnreachableError, ModelManager, ModelNotFoundError, NoProvidersAvailableError, ProviderBootstrapError, ProviderError, ProviderManager, RoutstrClient, SDK_STORAGE_KEYS, StreamProcessor, StreamingError, TokenOperationError, consoleLogger, createBunSqliteDriver, createBunSqliteUsageTrackingDriver, createDiscoveryAdapterFromStore, createIndexedDBDriver, createIndexedDBUsageTrackingDriver, createMemoryDriver, createMemoryUsageTrackingDriver, createProviderRegistryFromStore, createSSEParserTransform, createSdkStore, createSqliteDriver, createSqliteUsageTrackingDriver, createStorageAdapterFromStore, filterBaseUrlsForTor, getDefaultDiscoveryAdapter, getDefaultProviderRegistry, getDefaultSdkDriver, getDefaultSdkStore, getDefaultStorageAdapter, getDefaultUsageTrackingDriver, getProviderEndpoints, inspectSSEWebStream, isOnionUrl, isTorContext, localStorageDriver, noopLogger, normalizeProviderUrl, routeRequests, setDefaultUsageTrackingDriver };
|
|
6080
6034
|
//# sourceMappingURL=index.mjs.map
|
|
6081
6035
|
//# sourceMappingURL=index.mjs.map
|