@routstr/sdk 0.3.8 → 0.3.9
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 +80 -25
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +80 -25
- package/dist/client/index.mjs.map +1 -1
- package/dist/discovery/index.d.mts +37 -3
- package/dist/discovery/index.d.ts +37 -3
- package/dist/discovery/index.js +231 -75
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/index.mjs +231 -75
- package/dist/discovery/index.mjs.map +1 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +592 -102
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +591 -103
- package/dist/index.mjs.map +1 -1
- package/dist/storage/index.d.mts +27 -1
- package/dist/storage/index.d.ts +27 -1
- package/dist/storage/index.js +281 -2
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/index.mjs +280 -3
- package/dist/storage/index.mjs.map +1 -1
- package/dist/wallet/index.d.mts +4 -0
- package/dist/wallet/index.d.ts +4 -0
- package/dist/wallet/index.js +11 -4
- package/dist/wallet/index.js.map +1 -1
- package/dist/wallet/index.mjs +11 -4
- package/dist/wallet/index.mjs.map +1 -1
- package/package.json +3 -2
package/dist/storage/index.mjs
CHANGED
|
@@ -1640,6 +1640,277 @@ var createProviderRegistryFromStore = (store, logger) => {
|
|
|
1640
1640
|
};
|
|
1641
1641
|
};
|
|
1642
1642
|
|
|
1643
|
+
// storage/shardedDiscoveryAdapter.ts
|
|
1644
|
+
var MODEL_KEY_PREFIX = "models:provider:";
|
|
1645
|
+
var MODEL_TS_KEY_PREFIX = "models:provider_timestamp:";
|
|
1646
|
+
var PROVIDER_INDEX_KEY = "models:provider_index";
|
|
1647
|
+
var MIGRATION_MARKER_KEY4 = "models_sharded_migration_v1";
|
|
1648
|
+
var encodeBaseUrl = (baseUrl) => encodeURIComponent(baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`);
|
|
1649
|
+
var modelKey = (baseUrl) => `${MODEL_KEY_PREFIX}${encodeBaseUrl(baseUrl)}`;
|
|
1650
|
+
var modelTsKey = (baseUrl) => `${MODEL_TS_KEY_PREFIX}${encodeBaseUrl(baseUrl)}`;
|
|
1651
|
+
var normalizeBaseUrl6 = (baseUrl) => baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
|
|
1652
|
+
var createShardedDiscoveryAdapter = async (options) => {
|
|
1653
|
+
const { driver } = options;
|
|
1654
|
+
const legacyModels = await driver.getItem(SDK_STORAGE_KEYS.MODELS_FROM_ALL_PROVIDERS, {});
|
|
1655
|
+
const legacyTimestamps = await driver.getItem(SDK_STORAGE_KEYS.LAST_MODELS_UPDATE, {});
|
|
1656
|
+
if (Object.keys(legacyModels).length > 0) {
|
|
1657
|
+
const migratedProviders = [];
|
|
1658
|
+
for (const [baseUrl, models] of Object.entries(legacyModels)) {
|
|
1659
|
+
const normalized = normalizeBaseUrl6(baseUrl);
|
|
1660
|
+
await driver.setItem(modelKey(normalized), models);
|
|
1661
|
+
const ts = legacyTimestamps[normalized] ?? Date.now();
|
|
1662
|
+
await driver.setItem(modelTsKey(normalized), ts);
|
|
1663
|
+
migratedProviders.push(normalized);
|
|
1664
|
+
}
|
|
1665
|
+
const existingIndex = await driver.getItem(
|
|
1666
|
+
PROVIDER_INDEX_KEY,
|
|
1667
|
+
[]
|
|
1668
|
+
);
|
|
1669
|
+
const merged = [.../* @__PURE__ */ new Set([...existingIndex, ...migratedProviders])];
|
|
1670
|
+
await driver.setItem(PROVIDER_INDEX_KEY, merged);
|
|
1671
|
+
await driver.removeItem(SDK_STORAGE_KEYS.MODELS_FROM_ALL_PROVIDERS);
|
|
1672
|
+
await driver.removeItem(SDK_STORAGE_KEYS.LAST_MODELS_UPDATE);
|
|
1673
|
+
}
|
|
1674
|
+
await driver.setItem(MIGRATION_MARKER_KEY4, true);
|
|
1675
|
+
const [
|
|
1676
|
+
rawMints,
|
|
1677
|
+
rawInfo,
|
|
1678
|
+
lastUsedModel,
|
|
1679
|
+
rawDisabled,
|
|
1680
|
+
rawBaseUrls,
|
|
1681
|
+
lastBaseUrlsUpdate,
|
|
1682
|
+
rawRoutstr21Models,
|
|
1683
|
+
lastRoutstr21ModelsUpdate
|
|
1684
|
+
] = await Promise.all([
|
|
1685
|
+
driver.getItem(
|
|
1686
|
+
SDK_STORAGE_KEYS.MINTS_FROM_ALL_PROVIDERS,
|
|
1687
|
+
{}
|
|
1688
|
+
),
|
|
1689
|
+
driver.getItem(
|
|
1690
|
+
SDK_STORAGE_KEYS.INFO_FROM_ALL_PROVIDERS,
|
|
1691
|
+
{}
|
|
1692
|
+
),
|
|
1693
|
+
driver.getItem(SDK_STORAGE_KEYS.LAST_USED_MODEL, null),
|
|
1694
|
+
driver.getItem(SDK_STORAGE_KEYS.DISABLED_PROVIDERS, []),
|
|
1695
|
+
driver.getItem(SDK_STORAGE_KEYS.BASE_URLS_LIST, []),
|
|
1696
|
+
driver.getItem(SDK_STORAGE_KEYS.LAST_BASE_URLS_UPDATE, null),
|
|
1697
|
+
driver.getItem(SDK_STORAGE_KEYS.ROUTSTR21_MODELS, []),
|
|
1698
|
+
driver.getItem(
|
|
1699
|
+
SDK_STORAGE_KEYS.LAST_ROUTSTR21_MODELS_UPDATE,
|
|
1700
|
+
null
|
|
1701
|
+
)
|
|
1702
|
+
]);
|
|
1703
|
+
const modelsByBaseUrl = /* @__PURE__ */ new Map();
|
|
1704
|
+
const timestampsByBaseUrl = /* @__PURE__ */ new Map();
|
|
1705
|
+
const providerIndex = /* @__PURE__ */ new Set();
|
|
1706
|
+
const knownProviders = /* @__PURE__ */ new Set();
|
|
1707
|
+
for (const baseUrl of Object.keys(rawInfo)) {
|
|
1708
|
+
knownProviders.add(normalizeBaseUrl6(baseUrl));
|
|
1709
|
+
}
|
|
1710
|
+
for (const baseUrl of Object.keys(rawMints)) {
|
|
1711
|
+
knownProviders.add(normalizeBaseUrl6(baseUrl));
|
|
1712
|
+
}
|
|
1713
|
+
for (const baseUrl of rawBaseUrls) {
|
|
1714
|
+
knownProviders.add(normalizeBaseUrl6(baseUrl));
|
|
1715
|
+
}
|
|
1716
|
+
for (const baseUrl of rawDisabled) {
|
|
1717
|
+
knownProviders.add(normalizeBaseUrl6(baseUrl));
|
|
1718
|
+
}
|
|
1719
|
+
for (const baseUrl of Object.keys(legacyModels)) {
|
|
1720
|
+
knownProviders.add(normalizeBaseUrl6(baseUrl));
|
|
1721
|
+
}
|
|
1722
|
+
const indexProviders = await driver.getItem(
|
|
1723
|
+
PROVIDER_INDEX_KEY,
|
|
1724
|
+
[]
|
|
1725
|
+
);
|
|
1726
|
+
for (const baseUrl of indexProviders) {
|
|
1727
|
+
const normalized = normalizeBaseUrl6(baseUrl);
|
|
1728
|
+
providerIndex.add(normalized);
|
|
1729
|
+
knownProviders.add(normalized);
|
|
1730
|
+
}
|
|
1731
|
+
for (const baseUrl of knownProviders) {
|
|
1732
|
+
const normalized = normalizeBaseUrl6(baseUrl);
|
|
1733
|
+
const models = await driver.getItem(
|
|
1734
|
+
modelKey(normalized),
|
|
1735
|
+
null
|
|
1736
|
+
);
|
|
1737
|
+
const ts = await driver.getItem(
|
|
1738
|
+
modelTsKey(normalized),
|
|
1739
|
+
null
|
|
1740
|
+
);
|
|
1741
|
+
if (models !== null) {
|
|
1742
|
+
modelsByBaseUrl.set(normalized, models);
|
|
1743
|
+
}
|
|
1744
|
+
if (ts !== null) {
|
|
1745
|
+
timestampsByBaseUrl.set(normalized, ts);
|
|
1746
|
+
}
|
|
1747
|
+
if (models !== null || ts !== null) {
|
|
1748
|
+
providerIndex.add(normalized);
|
|
1749
|
+
}
|
|
1750
|
+
}
|
|
1751
|
+
let mints = Object.fromEntries(
|
|
1752
|
+
Object.entries(rawMints).map(([baseUrl, mintList]) => [
|
|
1753
|
+
normalizeBaseUrl6(baseUrl),
|
|
1754
|
+
mintList.map((mint) => mint.endsWith("/") ? mint.slice(0, -1) : mint)
|
|
1755
|
+
])
|
|
1756
|
+
);
|
|
1757
|
+
let info = Object.fromEntries(
|
|
1758
|
+
Object.entries(rawInfo).map(([baseUrl, entry]) => [
|
|
1759
|
+
normalizeBaseUrl6(baseUrl),
|
|
1760
|
+
entry
|
|
1761
|
+
])
|
|
1762
|
+
);
|
|
1763
|
+
let _lastUsedModel = lastUsedModel;
|
|
1764
|
+
let _disabledProviders = rawDisabled.map(normalizeBaseUrl6);
|
|
1765
|
+
let _baseUrlsList = rawBaseUrls.map(normalizeBaseUrl6);
|
|
1766
|
+
let _lastBaseUrlsUpdate = lastBaseUrlsUpdate;
|
|
1767
|
+
let _routstr21Models = rawRoutstr21Models;
|
|
1768
|
+
let _lastRoutstr21ModelsUpdate = lastRoutstr21ModelsUpdate;
|
|
1769
|
+
const persistProviderIndex = () => {
|
|
1770
|
+
void driver.setItem(PROVIDER_INDEX_KEY, [...providerIndex]);
|
|
1771
|
+
};
|
|
1772
|
+
return {
|
|
1773
|
+
// -- Models (sharded kv) --
|
|
1774
|
+
getCachedModels: () => {
|
|
1775
|
+
const result = {};
|
|
1776
|
+
for (const [baseUrl, models] of modelsByBaseUrl.entries()) {
|
|
1777
|
+
result[baseUrl] = models;
|
|
1778
|
+
}
|
|
1779
|
+
return result;
|
|
1780
|
+
},
|
|
1781
|
+
setCachedModels: (models) => {
|
|
1782
|
+
const nextKeys = new Set(
|
|
1783
|
+
Object.keys(models).map((baseUrl) => normalizeBaseUrl6(baseUrl))
|
|
1784
|
+
);
|
|
1785
|
+
for (const baseUrl of [...modelsByBaseUrl.keys()]) {
|
|
1786
|
+
if (!nextKeys.has(normalizeBaseUrl6(baseUrl))) {
|
|
1787
|
+
providerIndex.delete(baseUrl);
|
|
1788
|
+
modelsByBaseUrl.delete(baseUrl);
|
|
1789
|
+
timestampsByBaseUrl.delete(baseUrl);
|
|
1790
|
+
void driver.removeItem(modelKey(baseUrl));
|
|
1791
|
+
void driver.removeItem(modelTsKey(baseUrl));
|
|
1792
|
+
}
|
|
1793
|
+
}
|
|
1794
|
+
for (const [baseUrl, modelList] of Object.entries(models)) {
|
|
1795
|
+
const normalized = normalizeBaseUrl6(baseUrl);
|
|
1796
|
+
providerIndex.add(normalized);
|
|
1797
|
+
modelsByBaseUrl.set(normalized, modelList);
|
|
1798
|
+
const ts = timestampsByBaseUrl.get(normalized) ?? Date.now();
|
|
1799
|
+
timestampsByBaseUrl.set(normalized, ts);
|
|
1800
|
+
void driver.setItem(modelKey(normalized), modelList);
|
|
1801
|
+
void driver.setItem(modelTsKey(normalized), ts);
|
|
1802
|
+
}
|
|
1803
|
+
persistProviderIndex();
|
|
1804
|
+
},
|
|
1805
|
+
getProviderLastUpdate: (baseUrl) => {
|
|
1806
|
+
return timestampsByBaseUrl.get(normalizeBaseUrl6(baseUrl)) ?? null;
|
|
1807
|
+
},
|
|
1808
|
+
setProviderLastUpdate: (baseUrl, timestamp) => {
|
|
1809
|
+
const normalized = normalizeBaseUrl6(baseUrl);
|
|
1810
|
+
providerIndex.add(normalized);
|
|
1811
|
+
timestampsByBaseUrl.set(normalized, timestamp);
|
|
1812
|
+
void driver.setItem(modelTsKey(normalized), timestamp);
|
|
1813
|
+
persistProviderIndex();
|
|
1814
|
+
},
|
|
1815
|
+
// -- Mints (kv) --
|
|
1816
|
+
getCachedMints: () => mints,
|
|
1817
|
+
setCachedMints: (value) => {
|
|
1818
|
+
const normalized = {};
|
|
1819
|
+
for (const [baseUrl, mintList] of Object.entries(value)) {
|
|
1820
|
+
normalized[normalizeBaseUrl6(baseUrl)] = mintList.map(
|
|
1821
|
+
(mint) => mint.endsWith("/") ? mint.slice(0, -1) : mint
|
|
1822
|
+
);
|
|
1823
|
+
}
|
|
1824
|
+
mints = normalized;
|
|
1825
|
+
void driver.setItem(SDK_STORAGE_KEYS.MINTS_FROM_ALL_PROVIDERS, normalized);
|
|
1826
|
+
},
|
|
1827
|
+
// -- Provider info (kv) --
|
|
1828
|
+
getCachedProviderInfo: () => info,
|
|
1829
|
+
setCachedProviderInfo: (value) => {
|
|
1830
|
+
const normalized = {};
|
|
1831
|
+
for (const [baseUrl, entry] of Object.entries(value)) {
|
|
1832
|
+
normalized[normalizeBaseUrl6(baseUrl)] = entry;
|
|
1833
|
+
}
|
|
1834
|
+
info = normalized;
|
|
1835
|
+
void driver.setItem(SDK_STORAGE_KEYS.INFO_FROM_ALL_PROVIDERS, normalized);
|
|
1836
|
+
},
|
|
1837
|
+
// -- Last used model (kv) --
|
|
1838
|
+
getLastUsedModel: () => _lastUsedModel,
|
|
1839
|
+
setLastUsedModel: (modelId) => {
|
|
1840
|
+
_lastUsedModel = modelId;
|
|
1841
|
+
void driver.setItem(SDK_STORAGE_KEYS.LAST_USED_MODEL, modelId);
|
|
1842
|
+
},
|
|
1843
|
+
// -- Disabled providers (kv) --
|
|
1844
|
+
getDisabledProviders: () => _disabledProviders,
|
|
1845
|
+
setDisabledProviders: (urls) => {
|
|
1846
|
+
const normalized = urls.map(normalizeBaseUrl6);
|
|
1847
|
+
_disabledProviders = normalized;
|
|
1848
|
+
void driver.setItem(SDK_STORAGE_KEYS.DISABLED_PROVIDERS, normalized);
|
|
1849
|
+
},
|
|
1850
|
+
// -- Base URLs (kv) --
|
|
1851
|
+
getBaseUrlsList: () => _baseUrlsList,
|
|
1852
|
+
getBaseUrlsLastUpdate: () => _lastBaseUrlsUpdate,
|
|
1853
|
+
setBaseUrlsList: (urls) => {
|
|
1854
|
+
const normalized = urls.map(normalizeBaseUrl6);
|
|
1855
|
+
_baseUrlsList = normalized;
|
|
1856
|
+
void driver.setItem(SDK_STORAGE_KEYS.BASE_URLS_LIST, normalized);
|
|
1857
|
+
},
|
|
1858
|
+
setBaseUrlsLastUpdate: (timestamp) => {
|
|
1859
|
+
_lastBaseUrlsUpdate = timestamp;
|
|
1860
|
+
void driver.setItem(SDK_STORAGE_KEYS.LAST_BASE_URLS_UPDATE, timestamp);
|
|
1861
|
+
},
|
|
1862
|
+
// -- Routstr21 models (kv) --
|
|
1863
|
+
getRoutstr21Models: () => _routstr21Models,
|
|
1864
|
+
setRoutstr21Models: (models) => {
|
|
1865
|
+
_routstr21Models = models;
|
|
1866
|
+
void driver.setItem(SDK_STORAGE_KEYS.ROUTSTR21_MODELS, models);
|
|
1867
|
+
},
|
|
1868
|
+
getRoutstr21ModelsLastUpdate: () => _lastRoutstr21ModelsUpdate,
|
|
1869
|
+
setRoutstr21ModelsLastUpdate: (timestamp) => {
|
|
1870
|
+
_lastRoutstr21ModelsUpdate = timestamp;
|
|
1871
|
+
void driver.setItem(
|
|
1872
|
+
SDK_STORAGE_KEYS.LAST_ROUTSTR21_MODELS_UPDATE,
|
|
1873
|
+
timestamp
|
|
1874
|
+
);
|
|
1875
|
+
}
|
|
1876
|
+
};
|
|
1877
|
+
};
|
|
1878
|
+
var createProviderRegistryFromDiscoveryAdapter = (adapter, logger) => {
|
|
1879
|
+
const log = (logger ?? consoleLogger).child("ProviderRegistry");
|
|
1880
|
+
return {
|
|
1881
|
+
getModelsForProvider: (baseUrl) => {
|
|
1882
|
+
const normalized = normalizeBaseUrl6(baseUrl);
|
|
1883
|
+
return adapter.getCachedModels()[normalized] || [];
|
|
1884
|
+
},
|
|
1885
|
+
getDisabledProviders: () => adapter.getDisabledProviders(),
|
|
1886
|
+
getProviderMints: (baseUrl) => {
|
|
1887
|
+
const normalized = normalizeBaseUrl6(baseUrl);
|
|
1888
|
+
return adapter.getCachedMints()[normalized] || [];
|
|
1889
|
+
},
|
|
1890
|
+
getProviderInfo: async (baseUrl) => {
|
|
1891
|
+
const normalized = normalizeBaseUrl6(baseUrl);
|
|
1892
|
+
const cached = adapter.getCachedProviderInfo()[normalized];
|
|
1893
|
+
if (cached) return cached;
|
|
1894
|
+
try {
|
|
1895
|
+
const response = await fetch(`${normalized}v1/info`);
|
|
1896
|
+
if (!response.ok) {
|
|
1897
|
+
throw new Error(`Failed ${response.status}`);
|
|
1898
|
+
}
|
|
1899
|
+
const info = await response.json();
|
|
1900
|
+
adapter.setCachedProviderInfo({
|
|
1901
|
+
...adapter.getCachedProviderInfo(),
|
|
1902
|
+
[normalized]: info
|
|
1903
|
+
});
|
|
1904
|
+
return info;
|
|
1905
|
+
} catch (error) {
|
|
1906
|
+
log.warn(`Failed to fetch provider info from ${normalized}:`, error);
|
|
1907
|
+
return null;
|
|
1908
|
+
}
|
|
1909
|
+
},
|
|
1910
|
+
getAllProvidersModels: () => adapter.getCachedModels()
|
|
1911
|
+
};
|
|
1912
|
+
};
|
|
1913
|
+
|
|
1643
1914
|
// storage/index.ts
|
|
1644
1915
|
var isBrowser3 = () => {
|
|
1645
1916
|
try {
|
|
@@ -1709,10 +1980,16 @@ var getDefaultUsageTrackingDriver = () => {
|
|
|
1709
1980
|
var setDefaultUsageTrackingDriver = (driver) => {
|
|
1710
1981
|
defaultUsageTrackingDriver = driver;
|
|
1711
1982
|
};
|
|
1712
|
-
var
|
|
1983
|
+
var defaultDiscoveryAdapter = null;
|
|
1984
|
+
var getDefaultDiscoveryAdapter = async () => {
|
|
1985
|
+
if (defaultDiscoveryAdapter) return defaultDiscoveryAdapter;
|
|
1986
|
+
const driver = getDefaultSdkDriver();
|
|
1987
|
+
defaultDiscoveryAdapter = await createShardedDiscoveryAdapter({ driver });
|
|
1988
|
+
return defaultDiscoveryAdapter;
|
|
1989
|
+
};
|
|
1713
1990
|
var getDefaultStorageAdapter = async () => createStorageAdapterFromStore(await getDefaultSdkStore());
|
|
1714
|
-
var getDefaultProviderRegistry = async () =>
|
|
1991
|
+
var getDefaultProviderRegistry = async () => createProviderRegistryFromDiscoveryAdapter(await getDefaultDiscoveryAdapter());
|
|
1715
1992
|
|
|
1716
|
-
export { SDK_STORAGE_KEYS, createBunSqliteDriver, createBunSqliteUsageTrackingDriver, createDiscoveryAdapterFromStore, createIndexedDBDriver, createIndexedDBUsageTrackingDriver, createMemoryDriver, createMemoryUsageTrackingDriver, createProviderRegistryFromStore, createSdkStore, createSqliteDriver, createSqliteUsageTrackingDriver, createStorageAdapterFromStore, getDefaultDiscoveryAdapter, getDefaultProviderRegistry, getDefaultSdkDriver, getDefaultSdkStore, getDefaultStorageAdapter, getDefaultUsageTrackingDriver, localStorageDriver, setDefaultUsageTrackingDriver };
|
|
1993
|
+
export { SDK_STORAGE_KEYS, createBunSqliteDriver, createBunSqliteUsageTrackingDriver, createDiscoveryAdapterFromStore, createIndexedDBDriver, createIndexedDBUsageTrackingDriver, createMemoryDriver, createMemoryUsageTrackingDriver, createProviderRegistryFromDiscoveryAdapter, createProviderRegistryFromStore, createSdkStore, createShardedDiscoveryAdapter, createSqliteDriver, createSqliteUsageTrackingDriver, createStorageAdapterFromStore, getDefaultDiscoveryAdapter, getDefaultProviderRegistry, getDefaultSdkDriver, getDefaultSdkStore, getDefaultStorageAdapter, getDefaultUsageTrackingDriver, localStorageDriver, setDefaultUsageTrackingDriver };
|
|
1717
1994
|
//# sourceMappingURL=index.mjs.map
|
|
1718
1995
|
//# sourceMappingURL=index.mjs.map
|