@routstr/sdk 0.1.2 → 0.1.3
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.js +10 -3
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +10 -3
- package/dist/client/index.mjs.map +1 -1
- package/dist/discovery/index.d.mts +3 -2
- package/dist/discovery/index.d.ts +3 -2
- package/dist/discovery/index.js +17 -4
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/index.mjs +17 -4
- package/dist/discovery/index.mjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +43 -9
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +43 -9
- package/dist/index.mjs.map +1 -1
- package/dist/{interfaces-Dnrvxr6N.d.ts → interfaces-CC0LT9p9.d.ts} +10 -0
- package/dist/{interfaces-nanJOqdW.d.mts → interfaces-DGdP8fQp.d.mts} +10 -0
- package/dist/storage/index.d.mts +4 -1
- package/dist/storage/index.d.ts +4 -1
- package/dist/storage/index.js +16 -2
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/index.mjs +16 -2
- package/dist/storage/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { M as Model } from './types-BlHjmWRK.mjs';
|
|
2
2
|
export { A as APIErrorVerdict, b as AnnotationData, C as CandidateProvider, F as FetchAIResponseParams, I as ImageData, a as Message, c as MessageContentType, d as MintDiscoveryResult, e as MintSelection, f as ModelArchitecture, g as ModelDiscoveryResult, h as ModelPricing, i as ModelSatsPricing, j as PendingTokenEntry, k as PerRequestLimits, P as ProviderInfo, R as RefundResult, S as SpendResult, l as StreamingResult, m as TopUpResult, T as TransactionHistory, U as UsageStats } from './types-BlHjmWRK.mjs';
|
|
3
|
-
import { D as DiscoveryAdapter } from './interfaces-
|
|
3
|
+
import { D as DiscoveryAdapter } from './interfaces-DGdP8fQp.mjs';
|
|
4
4
|
import { ModelManager } from './discovery/index.mjs';
|
|
5
5
|
export { MintDiscovery, ModelManagerConfig } from './discovery/index.mjs';
|
|
6
6
|
import { W as WalletAdapter, S as StorageAdapter, P as ProviderRegistry } from './interfaces-B85Wx7ni.mjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { M as Model } from './types-BlHjmWRK.js';
|
|
2
2
|
export { A as APIErrorVerdict, b as AnnotationData, C as CandidateProvider, F as FetchAIResponseParams, I as ImageData, a as Message, c as MessageContentType, d as MintDiscoveryResult, e as MintSelection, f as ModelArchitecture, g as ModelDiscoveryResult, h as ModelPricing, i as ModelSatsPricing, j as PendingTokenEntry, k as PerRequestLimits, P as ProviderInfo, R as RefundResult, S as SpendResult, l as StreamingResult, m as TopUpResult, T as TransactionHistory, U as UsageStats } from './types-BlHjmWRK.js';
|
|
3
|
-
import { D as DiscoveryAdapter } from './interfaces-
|
|
3
|
+
import { D as DiscoveryAdapter } from './interfaces-CC0LT9p9.js';
|
|
4
4
|
import { ModelManager } from './discovery/index.js';
|
|
5
5
|
export { MintDiscovery, ModelManagerConfig } from './discovery/index.js';
|
|
6
6
|
import { W as WalletAdapter, S as StorageAdapter, P as ProviderRegistry } from './interfaces-BVNyAmKu.js';
|
package/dist/index.js
CHANGED
|
@@ -142,6 +142,7 @@ var ModelManager = class _ModelManager {
|
|
|
142
142
|
const lastUpdate = this.adapter.getBaseUrlsLastUpdate();
|
|
143
143
|
const cacheValid = lastUpdate && Date.now() - lastUpdate <= this.cacheTTL;
|
|
144
144
|
if (cacheValid) {
|
|
145
|
+
await this.fetchRoutstr21Models();
|
|
145
146
|
return this.filterBaseUrlsForTor(cachedUrls, torMode);
|
|
146
147
|
}
|
|
147
148
|
}
|
|
@@ -452,9 +453,18 @@ var ModelManager = class _ModelManager {
|
|
|
452
453
|
}
|
|
453
454
|
/**
|
|
454
455
|
* Fetch routstr21 models from Nostr network (kind 38423)
|
|
456
|
+
* Uses cache if available and not expired
|
|
455
457
|
* @returns Array of model IDs or empty array if not found
|
|
456
458
|
*/
|
|
457
|
-
async fetchRoutstr21Models() {
|
|
459
|
+
async fetchRoutstr21Models(forceRefresh = false) {
|
|
460
|
+
const cachedModels = this.adapter.getRoutstr21Models();
|
|
461
|
+
if (!forceRefresh && cachedModels.length > 0) {
|
|
462
|
+
const lastUpdate = this.adapter.getRoutstr21ModelsLastUpdate();
|
|
463
|
+
const cacheValid = lastUpdate && Date.now() - lastUpdate <= this.cacheTTL;
|
|
464
|
+
if (cacheValid) {
|
|
465
|
+
return cachedModels;
|
|
466
|
+
}
|
|
467
|
+
}
|
|
458
468
|
const DEFAULT_RELAYS = [
|
|
459
469
|
"wss://relay.primal.net",
|
|
460
470
|
"wss://nos.lol",
|
|
@@ -468,7 +478,9 @@ var ModelManager = class _ModelManager {
|
|
|
468
478
|
kinds: [38423],
|
|
469
479
|
"#d": ["routstr-21-models"],
|
|
470
480
|
limit: 1,
|
|
471
|
-
authors: [
|
|
481
|
+
authors: [
|
|
482
|
+
"4ad6fa2d16e2a9b576c863b4cf7404a70d4dc320c0c447d10ad6ff58993eacc8"
|
|
483
|
+
]
|
|
472
484
|
}).pipe(
|
|
473
485
|
applesauceRelay.onlyEvents(),
|
|
474
486
|
rxjs.tap((event2) => {
|
|
@@ -485,20 +497,21 @@ var ModelManager = class _ModelManager {
|
|
|
485
497
|
});
|
|
486
498
|
const timeline = localEventStore.getTimeline({ kinds: [38423] });
|
|
487
499
|
if (timeline.length === 0) {
|
|
488
|
-
return [];
|
|
500
|
+
return cachedModels.length > 0 ? cachedModels : [];
|
|
489
501
|
}
|
|
490
502
|
const event = timeline[0];
|
|
491
503
|
try {
|
|
492
504
|
const content = JSON.parse(event.content);
|
|
493
505
|
const models = Array.isArray(content?.models) ? content.models : [];
|
|
494
506
|
this.adapter.setRoutstr21Models(models);
|
|
507
|
+
this.adapter.setRoutstr21ModelsLastUpdate(Date.now());
|
|
495
508
|
return models;
|
|
496
509
|
} catch {
|
|
497
510
|
console.warn(
|
|
498
511
|
"[Routstr21Models] Failed to parse Nostr event content:",
|
|
499
512
|
event.id
|
|
500
513
|
);
|
|
501
|
-
return [];
|
|
514
|
+
return cachedModels.length > 0 ? cachedModels : [];
|
|
502
515
|
}
|
|
503
516
|
}
|
|
504
517
|
};
|
|
@@ -2736,12 +2749,19 @@ var RoutstrClient = class {
|
|
|
2736
2749
|
response.token = token;
|
|
2737
2750
|
if (!response.ok) {
|
|
2738
2751
|
const requestId = response.headers.get("x-routstr-request-id") || void 0;
|
|
2752
|
+
let bodyText;
|
|
2753
|
+
try {
|
|
2754
|
+
bodyText = await response.text();
|
|
2755
|
+
} catch (e) {
|
|
2756
|
+
bodyText = void 0;
|
|
2757
|
+
}
|
|
2739
2758
|
return await this._handleErrorResponse(
|
|
2740
2759
|
params,
|
|
2741
2760
|
token,
|
|
2742
2761
|
response.status,
|
|
2743
2762
|
requestId,
|
|
2744
|
-
this.mode === "xcashu" ? response.headers.get("x-cashu") ?? void 0 : void 0
|
|
2763
|
+
this.mode === "xcashu" ? response.headers.get("x-cashu") ?? void 0 : void 0,
|
|
2764
|
+
bodyText
|
|
2745
2765
|
);
|
|
2746
2766
|
}
|
|
2747
2767
|
return response;
|
|
@@ -2760,7 +2780,7 @@ var RoutstrClient = class {
|
|
|
2760
2780
|
/**
|
|
2761
2781
|
* Handle error responses with failover
|
|
2762
2782
|
*/
|
|
2763
|
-
async _handleErrorResponse(params, token, status, requestId, xCashuRefundToken) {
|
|
2783
|
+
async _handleErrorResponse(params, token, status, requestId, xCashuRefundToken, responseBody) {
|
|
2764
2784
|
const { path, method, body, selectedModel, baseUrl, mintUrl } = params;
|
|
2765
2785
|
let tryNextProvider = false;
|
|
2766
2786
|
this._log(
|
|
@@ -2830,7 +2850,7 @@ var RoutstrClient = class {
|
|
|
2830
2850
|
);
|
|
2831
2851
|
}
|
|
2832
2852
|
}
|
|
2833
|
-
if (status === 402 && !tryNextProvider && (this.mode === "apikeys" || this.mode === "lazyrefund")) {
|
|
2853
|
+
if ((status === 402 || status === 413 && responseBody?.includes("Insufficient balance")) && !tryNextProvider && (this.mode === "apikeys" || this.mode === "lazyrefund")) {
|
|
2834
2854
|
const topupResult = await this.balanceManager.topUp({
|
|
2835
2855
|
mintUrl,
|
|
2836
2856
|
baseUrl,
|
|
@@ -3614,6 +3634,7 @@ var SDK_STORAGE_KEYS = {
|
|
|
3614
3634
|
API_KEYS: "api_keys",
|
|
3615
3635
|
CHILD_KEYS: "child_keys",
|
|
3616
3636
|
ROUTSTR21_MODELS: "routstr21Models",
|
|
3637
|
+
LAST_ROUTSTR21_MODELS_UPDATE: "lastRoutstr21ModelsUpdate",
|
|
3617
3638
|
CACHED_RECEIVE_TOKENS: "cached_receive_tokens"
|
|
3618
3639
|
};
|
|
3619
3640
|
|
|
@@ -3648,6 +3669,7 @@ var createSdkStore = async ({
|
|
|
3648
3669
|
rawApiKeys,
|
|
3649
3670
|
rawChildKeys,
|
|
3650
3671
|
rawRoutstr21Models,
|
|
3672
|
+
rawLastRoutstr21ModelsUpdate,
|
|
3651
3673
|
rawCachedReceiveTokens
|
|
3652
3674
|
] = await Promise.all([
|
|
3653
3675
|
driver.getItem(
|
|
@@ -3674,6 +3696,10 @@ var createSdkStore = async ({
|
|
|
3674
3696
|
driver.getItem(SDK_STORAGE_KEYS.API_KEYS, []),
|
|
3675
3697
|
driver.getItem(SDK_STORAGE_KEYS.CHILD_KEYS, []),
|
|
3676
3698
|
driver.getItem(SDK_STORAGE_KEYS.ROUTSTR21_MODELS, []),
|
|
3699
|
+
driver.getItem(
|
|
3700
|
+
SDK_STORAGE_KEYS.LAST_ROUTSTR21_MODELS_UPDATE,
|
|
3701
|
+
null
|
|
3702
|
+
),
|
|
3677
3703
|
driver.getItem(SDK_STORAGE_KEYS.CACHED_RECEIVE_TOKENS, [])
|
|
3678
3704
|
]);
|
|
3679
3705
|
const modelsFromAllProviders = Object.fromEntries(
|
|
@@ -3725,7 +3751,8 @@ var createSdkStore = async ({
|
|
|
3725
3751
|
createdAt: entry.createdAt ?? Date.now()
|
|
3726
3752
|
}));
|
|
3727
3753
|
const routstr21Models = rawRoutstr21Models;
|
|
3728
|
-
const
|
|
3754
|
+
const lastRoutstr21ModelsUpdate = rawLastRoutstr21ModelsUpdate;
|
|
3755
|
+
const cachedReceiveTokens = rawCachedReceiveTokens?.map((entry) => ({
|
|
3729
3756
|
token: entry.token,
|
|
3730
3757
|
amount: entry.amount,
|
|
3731
3758
|
unit: entry.unit || "sat",
|
|
@@ -3744,6 +3771,7 @@ var createSdkStore = async ({
|
|
|
3744
3771
|
apiKeys,
|
|
3745
3772
|
childKeys,
|
|
3746
3773
|
routstr21Models,
|
|
3774
|
+
lastRoutstr21ModelsUpdate,
|
|
3747
3775
|
cachedReceiveTokens,
|
|
3748
3776
|
setModelsFromAllProviders: (value) => {
|
|
3749
3777
|
const normalized = {};
|
|
@@ -3848,6 +3876,10 @@ var createSdkStore = async ({
|
|
|
3848
3876
|
void driver.setItem(SDK_STORAGE_KEYS.ROUTSTR21_MODELS, value);
|
|
3849
3877
|
set({ routstr21Models: value });
|
|
3850
3878
|
},
|
|
3879
|
+
setRoutstr21ModelsLastUpdate: (value) => {
|
|
3880
|
+
void driver.setItem(SDK_STORAGE_KEYS.LAST_ROUTSTR21_MODELS_UPDATE, value);
|
|
3881
|
+
set({ lastRoutstr21ModelsUpdate: value });
|
|
3882
|
+
},
|
|
3851
3883
|
setCachedReceiveTokens: (value) => {
|
|
3852
3884
|
const normalized = value.map((entry) => ({
|
|
3853
3885
|
token: entry.token,
|
|
@@ -3886,7 +3918,9 @@ var createDiscoveryAdapterFromStore = (store) => ({
|
|
|
3886
3918
|
getBaseUrlsLastUpdate: () => store.getState().lastBaseUrlsUpdate,
|
|
3887
3919
|
setBaseUrlsLastUpdate: (timestamp) => store.getState().setBaseUrlsLastUpdate(timestamp),
|
|
3888
3920
|
getRoutstr21Models: () => store.getState().routstr21Models,
|
|
3889
|
-
setRoutstr21Models: (models) => store.getState().setRoutstr21Models(models)
|
|
3921
|
+
setRoutstr21Models: (models) => store.getState().setRoutstr21Models(models),
|
|
3922
|
+
getRoutstr21ModelsLastUpdate: () => store.getState().lastRoutstr21ModelsUpdate,
|
|
3923
|
+
setRoutstr21ModelsLastUpdate: (timestamp) => store.getState().setRoutstr21ModelsLastUpdate(timestamp)
|
|
3890
3924
|
});
|
|
3891
3925
|
var createStorageAdapterFromStore = (store) => ({
|
|
3892
3926
|
getToken: (baseUrl) => {
|