@x12i/ai-tools 2.0.4 → 2.1.0
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/catalog/index.cjs +6 -6
- package/dist/catalog/index.js +5 -5
- package/dist/{chunk-ZPUZ7DBO.js → chunk-25O27USJ.js} +2 -2
- package/dist/{chunk-DDRWORUU.cjs → chunk-2A6EUGR5.cjs} +19 -19
- package/dist/{chunk-DDRWORUU.cjs.map → chunk-2A6EUGR5.cjs.map} +1 -1
- package/dist/chunk-2KPWVOOT.cjs +32 -0
- package/dist/chunk-2KPWVOOT.cjs.map +1 -0
- package/dist/{chunk-PN4FF6YF.js → chunk-4AIEM4AE.js} +3 -3
- package/dist/{chunk-RSHI4OOY.cjs → chunk-5XBMNY7Q.cjs} +252 -64
- package/dist/chunk-5XBMNY7Q.cjs.map +1 -0
- package/dist/chunk-EBBJCLJQ.js +29 -0
- package/dist/chunk-EBBJCLJQ.js.map +1 -0
- package/dist/{chunk-D6OIUYNC.js → chunk-ET5LPVPT.js} +5 -5
- package/dist/chunk-FISSYP27.cjs +29 -0
- package/dist/chunk-FISSYP27.cjs.map +1 -0
- package/dist/{chunk-76FHWQH3.cjs → chunk-GVFL2LRG.cjs} +9 -3
- package/dist/chunk-GVFL2LRG.cjs.map +1 -0
- package/dist/{chunk-75ZVXZAV.cjs → chunk-I6CDT2NG.cjs} +7 -7
- package/dist/{chunk-75ZVXZAV.cjs.map → chunk-I6CDT2NG.cjs.map} +1 -1
- package/dist/{chunk-VBROBIVI.js → chunk-JCMLIXIX.js} +3 -3
- package/dist/{chunk-VBROBIVI.js.map → chunk-JCMLIXIX.js.map} +1 -1
- package/dist/chunk-LQLSD26Y.cjs +1 -0
- package/dist/chunk-LQLSD26Y.cjs.map +1 -0
- package/dist/{chunk-X42KFOUO.cjs → chunk-R6P4AWOM.cjs} +6 -6
- package/dist/{chunk-X42KFOUO.cjs.map → chunk-R6P4AWOM.cjs.map} +1 -1
- package/dist/{chunk-HBNYVRLZ.cjs → chunk-SIR4LDHD.cjs} +16 -16
- package/dist/{chunk-HBNYVRLZ.cjs.map → chunk-SIR4LDHD.cjs.map} +1 -1
- package/dist/chunk-SQ6NOF4Z.js +32 -0
- package/dist/chunk-SQ6NOF4Z.js.map +1 -0
- package/dist/{chunk-54GKLIDW.js → chunk-SYHLDADG.js} +233 -45
- package/dist/chunk-SYHLDADG.js.map +1 -0
- package/dist/{chunk-WSUFQR3D.cjs → chunk-TDO5SDQ3.cjs} +25 -25
- package/dist/{chunk-WSUFQR3D.cjs.map → chunk-TDO5SDQ3.cjs.map} +1 -1
- package/dist/chunk-TMDWPWKB.cjs +123 -0
- package/dist/chunk-TMDWPWKB.cjs.map +1 -0
- package/dist/{chunk-MOLWV5LV.js → chunk-VDNKQRDG.js} +2 -2
- package/dist/chunk-VYVX46VO.js +123 -0
- package/dist/chunk-VYVX46VO.js.map +1 -0
- package/dist/{chunk-KSJSLKYI.js → chunk-WFRS32EQ.js} +8 -2
- package/dist/chunk-WFRS32EQ.js.map +1 -0
- package/dist/{chunk-HEB73GKJ.js → chunk-XMOALOYU.js} +2 -2
- package/dist/chunk-XUUPJ7WO.js +1 -0
- package/dist/{chunk-TMA6QSNH.cjs → chunk-YO7AJ5Z3.cjs} +3 -3
- package/dist/{chunk-TMA6QSNH.cjs.map → chunk-YO7AJ5Z3.cjs.map} +1 -1
- package/dist/cli/index.cjs +36 -16
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.js +27 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/cost/index.cjs +15 -5
- package/dist/cost/index.cjs.map +1 -1
- package/dist/cost/index.d.cts +3 -2
- package/dist/cost/index.d.ts +3 -2
- package/dist/cost/index.js +14 -4
- package/dist/index.cjs +21 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +21 -11
- package/dist/models/index.cjs +9 -7
- package/dist/models/index.cjs.map +1 -1
- package/dist/models/index.d.cts +2 -0
- package/dist/models/index.d.ts +2 -0
- package/dist/models/index.js +8 -6
- package/dist/{resolveUsageModel-DrFuiuIW.d.ts → resolveModelVendor--2JdUZlR.d.ts} +5 -1
- package/dist/{resolveUsageModel-xKZ2QpHy.d.cts → resolveModelVendor-BPPvzxE8.d.cts} +5 -1
- package/dist/resolveModelVendor-Dd4N6Vds.d.cts +16 -0
- package/dist/resolveModelVendor-oKeiH9ig.d.ts +16 -0
- package/dist/sync/index.cjs +10 -5
- package/dist/sync/index.cjs.map +1 -1
- package/dist/sync/index.d.cts +1 -0
- package/dist/sync/index.d.ts +1 -0
- package/dist/sync/index.js +11 -6
- package/package.json +2 -2
- package/dist/chunk-54GKLIDW.js.map +0 -1
- package/dist/chunk-56R4XA2S.js +0 -1
- package/dist/chunk-5GUKLOEK.cjs +0 -1
- package/dist/chunk-5GUKLOEK.cjs.map +0 -1
- package/dist/chunk-76FHWQH3.cjs.map +0 -1
- package/dist/chunk-BCX5CLJJ.cjs +0 -238
- package/dist/chunk-BCX5CLJJ.cjs.map +0 -1
- package/dist/chunk-KSJSLKYI.js.map +0 -1
- package/dist/chunk-RSHI4OOY.cjs.map +0 -1
- package/dist/chunk-SLSKQRMI.js +0 -238
- package/dist/chunk-SLSKQRMI.js.map +0 -1
- /package/dist/{chunk-ZPUZ7DBO.js.map → chunk-25O27USJ.js.map} +0 -0
- /package/dist/{chunk-PN4FF6YF.js.map → chunk-4AIEM4AE.js.map} +0 -0
- /package/dist/{chunk-D6OIUYNC.js.map → chunk-ET5LPVPT.js.map} +0 -0
- /package/dist/{chunk-MOLWV5LV.js.map → chunk-VDNKQRDG.js.map} +0 -0
- /package/dist/{chunk-HEB73GKJ.js.map → chunk-XMOALOYU.js.map} +0 -0
- /package/dist/{chunk-56R4XA2S.js.map → chunk-XUUPJ7WO.js.map} +0 -0
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkFISSYP27cjs = require('./chunk-FISSYP27.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkSIR4LDHDcjs = require('./chunk-SIR4LDHD.cjs');
|
|
4
7
|
|
|
5
8
|
// src/models/filterModels.ts
|
|
6
9
|
function matchesSearch(record, search) {
|
|
@@ -46,7 +49,7 @@ function countModels(models, filters = {}) {
|
|
|
46
49
|
var AiModelsService = class {
|
|
47
50
|
|
|
48
51
|
constructor(options = {}) {
|
|
49
|
-
this.client = new (0,
|
|
52
|
+
this.client = new (0, _chunkSIR4LDHDcjs.AiModelsCatalogClient)(options);
|
|
50
53
|
}
|
|
51
54
|
async getAllModels() {
|
|
52
55
|
return this.client.getAllModels();
|
|
@@ -69,6 +72,9 @@ var AiModelsService = class {
|
|
|
69
72
|
async resolve(modelIdOrAlias, provider) {
|
|
70
73
|
return this.client.resolveModel({ model: modelIdOrAlias, provider });
|
|
71
74
|
}
|
|
75
|
+
async resolveVendor(model, options) {
|
|
76
|
+
return _chunkFISSYP27cjs.resolveModelVendor.call(void 0, model, this.client, options);
|
|
77
|
+
}
|
|
72
78
|
async refresh() {
|
|
73
79
|
await this.client.refresh();
|
|
74
80
|
}
|
|
@@ -83,4 +89,4 @@ async function getModelInfo(modelIdOrAlias, options = {}, provider) {
|
|
|
83
89
|
|
|
84
90
|
|
|
85
91
|
exports.filterModels = filterModels; exports.countModels = countModels; exports.AiModelsService = AiModelsService; exports.getModelInfo = getModelInfo;
|
|
86
|
-
//# sourceMappingURL=chunk-
|
|
92
|
+
//# sourceMappingURL=chunk-GVFL2LRG.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/ami/Documents/prometheus/x12i/ai-tools/dist/chunk-GVFL2LRG.cjs","../src/models/filterModels.ts","../src/models/AiModelsService.ts"],"names":[],"mappings":"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","file":"/Users/ami/Documents/prometheus/x12i/ai-tools/dist/chunk-GVFL2LRG.cjs","sourcesContent":[null,"import type { AiModelRecord, ModelListFilters } from \"./types.js\";\n\nfunction matchesSearch(record: AiModelRecord, search: string): boolean {\n const q = search.toLowerCase();\n return (\n record.modelId.toLowerCase().includes(q) ||\n record.name.toLowerCase().includes(q) ||\n record.description.toLowerCase().includes(q) ||\n record.canonicalSlug.toLowerCase().includes(q) ||\n record.aliases.some((a) => a.toLowerCase().includes(q))\n );\n}\n\nexport function filterModels(\n models: Iterable<AiModelRecord>,\n filters: ModelListFilters = {},\n): AiModelRecord[] {\n let list = [...models];\n\n if (filters.providerId) {\n list = list.filter((m) => m.providerId === filters.providerId);\n }\n if (filters.status) {\n list = list.filter((m) => m.status === filters.status);\n }\n if (filters.outputModality) {\n list = list.filter((m) => m.outputModalities.includes(filters.outputModality!));\n }\n if (filters.inputModality) {\n list = list.filter((m) => m.inputModalities.includes(filters.inputModality!));\n }\n if (filters.supportedParameter) {\n list = list.filter((m) => m.supportedParameters.includes(filters.supportedParameter!));\n }\n if (filters.supportsTools !== undefined) {\n list = list.filter((m) => m.supportsTools === filters.supportsTools);\n }\n if (filters.supportsReasoning !== undefined) {\n list = list.filter((m) => m.supportsReasoning === filters.supportsReasoning);\n }\n if (filters.search) {\n list = list.filter((m) => matchesSearch(m, filters.search!));\n }\n\n list.sort((a, b) => a.name.localeCompare(b.name));\n\n const offset = filters.offset ?? 0;\n const limit = filters.limit ?? list.length;\n return list.slice(offset, offset + limit);\n}\n\nexport function countModels(\n models: Iterable<AiModelRecord>,\n filters: Omit<ModelListFilters, \"limit\" | \"offset\"> = {},\n): number {\n return filterModels(models, { ...filters, limit: Number.MAX_SAFE_INTEGER, offset: 0 }).length;\n}\n","import { AiModelsCatalogClient } from \"../catalog/AiModelsCatalogClient.js\";\nimport type { AiModelsCatalogClientOptions } from \"../catalog/AiModelsCatalogClient.js\";\nimport { countModels, filterModels } from \"./filterModels.js\";\nimport type { AiModelRecord, ModelListFilters, ModelListResult } from \"./types.js\";\nimport {\n resolveModelVendor,\n type ModelVendorRef,\n type ResolveModelVendorOptions,\n} from \"../cost/resolveModelVendor.js\";\n\nexport type AiModelsServiceOptions = AiModelsCatalogClientOptions;\n\n/**\n * High-level model catalog API — list, filter, count, and get full model info.\n */\nexport class AiModelsService {\n private readonly client: AiModelsCatalogClient;\n\n constructor(options: AiModelsServiceOptions = {}) {\n this.client = new AiModelsCatalogClient(options);\n }\n\n async getAllModels(): Promise<Map<string, AiModelRecord>> {\n return this.client.getAllModels();\n }\n\n async listModels(filters: ModelListFilters = {}): Promise<ModelListResult> {\n const all = await this.getAllModels();\n const total = countModels(all.values(), filters);\n const limit = filters.limit ?? 50;\n const offset = filters.offset ?? 0;\n const models = filterModels(all.values(), { ...filters, limit, offset });\n return { models, total, limit, offset };\n }\n\n async countModels(filters: Omit<ModelListFilters, \"limit\" | \"offset\"> = {}): Promise<number> {\n const all = await this.getAllModels();\n return countModels(all.values(), filters);\n }\n\n async getModelInfo(modelIdOrAlias: string, provider?: string): Promise<AiModelRecord | null> {\n return this.client.getModel(modelIdOrAlias, provider);\n }\n\n async resolve(\n modelIdOrAlias: string,\n provider?: string,\n ): Promise<import(\"../sync/modelNameResolver/types.js\").ModelResolutionResult> {\n return this.client.resolveModel({ model: modelIdOrAlias, provider });\n }\n\n async resolveVendor(\n model: string,\n options?: ResolveModelVendorOptions,\n ): Promise<ModelVendorRef | null> {\n return resolveModelVendor(model, this.client, options);\n }\n\n async refresh(): Promise<void> {\n await this.client.refresh();\n }\n}\n\nexport async function getModelInfo(\n modelIdOrAlias: string,\n options: AiModelsServiceOptions = {},\n provider?: string,\n): Promise<AiModelRecord | null> {\n return new AiModelsService(options).getModelInfo(modelIdOrAlias, provider);\n}\n"]}
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkSIR4LDHDcjs = require('./chunk-SIR4LDHD.cjs');
|
|
7
7
|
|
|
8
8
|
// src/catalog/catalogMaintenance.ts
|
|
9
9
|
async function refreshAiModelsCatalog(options = {}) {
|
|
10
|
-
const client = new (0,
|
|
10
|
+
const client = new (0, _chunkSIR4LDHDcjs.AiModelsCatalogClient)(options);
|
|
11
11
|
await client.refresh();
|
|
12
|
-
const loaded = await
|
|
12
|
+
const loaded = await _chunkSIR4LDHDcjs.loadCatalogSourcesCached.call(void 0, options, {
|
|
13
13
|
cacheKey: options.cacheKey,
|
|
14
14
|
ttlMs: options.cacheTtlMs,
|
|
15
15
|
forceRefresh: false
|
|
@@ -23,7 +23,7 @@ async function refreshAiModelsCatalog(options = {}) {
|
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
async function verifyAiModelsCatalog(options = {}) {
|
|
26
|
-
const loaded = await
|
|
26
|
+
const loaded = await _chunkSIR4LDHDcjs.loadCatalogSourcesCached.call(void 0, options, {
|
|
27
27
|
cacheKey: options.cacheKey,
|
|
28
28
|
ttlMs: options.cacheTtlMs,
|
|
29
29
|
forceRefresh: _nullishCoalesce(options.forceRefresh, () => ( options.bundledOnly === true))
|
|
@@ -34,8 +34,8 @@ async function verifyAiModelsCatalog(options = {}) {
|
|
|
34
34
|
openRouterCount: loaded.meta.openRouterCount,
|
|
35
35
|
directSource: loaded.meta.directSource,
|
|
36
36
|
openRouterSource: loaded.meta.openRouterSource,
|
|
37
|
-
directUrl: _nullishCoalesce(options.directCatalogUrl, () => (
|
|
38
|
-
openRouterUrl: _nullishCoalesce(options.openRouterCatalogUrl, () => (
|
|
37
|
+
directUrl: _nullishCoalesce(options.directCatalogUrl, () => ( _chunkSIR4LDHDcjs.DEFAULT_DIRECT_CATALOG_URL)),
|
|
38
|
+
openRouterUrl: _nullishCoalesce(options.openRouterCatalogUrl, () => ( _chunkSIR4LDHDcjs.DEFAULT_OPENROUTER_CATALOG_URL))
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
41
|
|
|
@@ -43,4 +43,4 @@ async function verifyAiModelsCatalog(options = {}) {
|
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
exports.refreshAiModelsCatalog = refreshAiModelsCatalog; exports.verifyAiModelsCatalog = verifyAiModelsCatalog;
|
|
46
|
-
//# sourceMappingURL=chunk-
|
|
46
|
+
//# sourceMappingURL=chunk-I6CDT2NG.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/ami/Documents/prometheus/x12i/ai-tools/dist/chunk-
|
|
1
|
+
{"version":3,"sources":["/Users/ami/Documents/prometheus/x12i/ai-tools/dist/chunk-I6CDT2NG.cjs","../src/catalog/catalogMaintenance.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACA;ACeA,MAAA,SAAsB,sBAAA,CACpB,QAAA,EAAiC,CAAC,CAAA,EACH;AAC/B,EAAA,MAAM,OAAA,EAAS,IAAI,4CAAA,CAAsB,OAAO,CAAA;AAChD,EAAA,MAAM,MAAA,CAAO,OAAA,CAAQ,CAAA;AACrB,EAAA,MAAM,OAAA,EAAS,MAAM,wDAAA,OAAyB,EAAS;AAAA,IACrD,QAAA,EAAU,OAAA,CAAQ,QAAA;AAAA,IAClB,KAAA,EAAO,OAAA,CAAQ,UAAA;AAAA,IACf,YAAA,EAAc;AAAA,EAChB,CAAC,CAAA;AACD,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,IAAA;AAAA,IACJ,WAAA,EAAa,MAAA,CAAO,IAAA,CAAK,WAAA;AAAA,IACzB,eAAA,EAAiB,MAAA,CAAO,IAAA,CAAK,eAAA;AAAA,IAC7B,YAAA,EAAc,MAAA,CAAO,IAAA,CAAK,YAAA;AAAA,IAC1B,gBAAA,EAAkB,MAAA,CAAO,IAAA,CAAK;AAAA,EAChC,CAAA;AACF;AAkBA,MAAA,SAAsB,qBAAA,CACpB,QAAA,EAA6D,CAAC,CAAA,EAChC;AAC9B,EAAA,MAAM,OAAA,EAAS,MAAM,wDAAA,OAAyB,EAAS;AAAA,IACrD,QAAA,EAAU,OAAA,CAAQ,QAAA;AAAA,IAClB,KAAA,EAAO,OAAA,CAAQ,UAAA;AAAA,IACf,YAAA,mBAAc,OAAA,CAAQ,YAAA,UAAgB,OAAA,CAAQ,YAAA,IAAgB;AAAA,EAChE,CAAC,CAAA;AACD,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,EAAA,GAAK,MAAA,CAAO,UAAA,CAAW,KAAA,EAAO,CAAA;AAAA,IACvD,WAAA,EAAa,MAAA,CAAO,IAAA,CAAK,WAAA;AAAA,IACzB,eAAA,EAAiB,MAAA,CAAO,IAAA,CAAK,eAAA;AAAA,IAC7B,YAAA,EAAc,MAAA,CAAO,IAAA,CAAK,YAAA;AAAA,IAC1B,gBAAA,EAAkB,MAAA,CAAO,IAAA,CAAK,gBAAA;AAAA,IAC9B,SAAA,mBAAW,OAAA,CAAQ,gBAAA,UAAoB,8CAAA;AAAA,IACvC,aAAA,mBAAe,OAAA,CAAQ,oBAAA,UAAwB;AAAA,EACjD,CAAA;AACF;ADlCA;AACA;AACE;AACA;AACF,+GAAC","file":"/Users/ami/Documents/prometheus/x12i/ai-tools/dist/chunk-I6CDT2NG.cjs","sourcesContent":[null,"import {\n DEFAULT_DIRECT_CATALOG_URL,\n DEFAULT_OPENROUTER_CATALOG_URL,\n type LoadCatalogOptions,\n} from \"./loadCatalogSources.js\";\nimport { loadCatalogSourcesCached } from \"./catalogLoadCache.js\";\nimport { AiModelsCatalogClient } from \"./AiModelsCatalogClient.js\";\n\nexport type CatalogRefreshOptions = LoadCatalogOptions & {\n cacheKey?: string;\n cacheTtlMs?: number;\n};\n\nexport type CatalogRefreshResult = {\n ok: true;\n directCount: number;\n openRouterCount: number;\n directSource: \"remote\" | \"bundled\";\n openRouterSource: \"remote\" | \"bundled\";\n};\n\n/** Fetch remote catalogs and warm the in-memory cache (forces a network load). */\nexport async function refreshAiModelsCatalog(\n options: CatalogRefreshOptions = {},\n): Promise<CatalogRefreshResult> {\n const client = new AiModelsCatalogClient(options);\n await client.refresh();\n const loaded = await loadCatalogSourcesCached(options, {\n cacheKey: options.cacheKey,\n ttlMs: options.cacheTtlMs,\n forceRefresh: false,\n });\n return {\n ok: true,\n directCount: loaded.meta.directCount,\n openRouterCount: loaded.meta.openRouterCount,\n directSource: loaded.meta.directSource,\n openRouterSource: loaded.meta.openRouterSource,\n };\n}\n\nexport type CatalogVerifyOptions = LoadCatalogOptions & {\n cacheKey?: string;\n cacheTtlMs?: number;\n};\n\nexport type CatalogVerifyReport = {\n ok: boolean;\n directCount: number;\n openRouterCount: number;\n directSource: \"remote\" | \"bundled\";\n openRouterSource: \"remote\" | \"bundled\";\n directUrl: string;\n openRouterUrl: string;\n};\n\n/** Load and validate both catalogs (uses cache unless `forceRefresh`). */\nexport async function verifyAiModelsCatalog(\n options: CatalogVerifyOptions & { forceRefresh?: boolean } = {},\n): Promise<CatalogVerifyReport> {\n const loaded = await loadCatalogSourcesCached(options, {\n cacheKey: options.cacheKey,\n ttlMs: options.cacheTtlMs,\n forceRefresh: options.forceRefresh ?? options.bundledOnly === true,\n });\n return {\n ok: loaded.direct.size > 0 && loaded.openrouter.size > 0,\n directCount: loaded.meta.directCount,\n openRouterCount: loaded.meta.openRouterCount,\n directSource: loaded.meta.directSource,\n openRouterSource: loaded.meta.openRouterSource,\n directUrl: options.directCatalogUrl ?? DEFAULT_DIRECT_CATALOG_URL,\n openRouterUrl: options.openRouterCatalogUrl ?? DEFAULT_OPENROUTER_CATALOG_URL,\n };\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
normalizeOpenRouterModel
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VDNKQRDG.js";
|
|
4
4
|
import {
|
|
5
5
|
ModelNameResolver
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-SYHLDADG.js";
|
|
7
7
|
import {
|
|
8
8
|
SyncError
|
|
9
9
|
} from "./chunk-2PTCWPHV.js";
|
|
@@ -92,4 +92,4 @@ export {
|
|
|
92
92
|
resolveModel,
|
|
93
93
|
isRoutedViaOpenRouter
|
|
94
94
|
};
|
|
95
|
-
//# sourceMappingURL=chunk-
|
|
95
|
+
//# sourceMappingURL=chunk-JCMLIXIX.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sync/OpenRouterSyncProvider.ts","../src/sync/modelNameResolver.ts"],"sourcesContent":["import { SyncError } from \"../errors.js\";\nimport { normalizeOpenRouterModel } from \"../models/normalizeOpenRouterModel.js\";\nimport type { AiModelRecord } from \"../models/types.js\";\nimport type {\n OpenRouterModelsQuery,\n OpenRouterModelsResponse,\n} from \"../models/openrouter.types.js\";\n\nexport type OpenRouterSyncProviderOptions = {\n /** Optional — public GET /models needs no key. */\n apiKey?: string;\n baseUrl?: string;\n /** Query params passed to OpenRouter (default: all modalities). */\n query?: OpenRouterModelsQuery;\n};\n\nfunction buildFetchHeaders(apiKey?: string): Record<string, string> {\n const headers: Record<string, string> = { Accept: \"application/json\" };\n if (apiKey?.trim()) headers.Authorization = `Bearer ${apiKey.trim()}`;\n return headers;\n}\n\nfunction buildModelsUrl(baseUrl: string, query?: OpenRouterModelsQuery): string {\n const url = new URL(`${baseUrl.replace(/\\/$/, \"\")}/models`);\n const q = { output_modalities: \"all\", ...query };\n for (const [key, value] of Object.entries(q)) {\n if (value !== undefined && value !== \"\") url.searchParams.set(key, value);\n }\n return url.toString();\n}\n\nexport class OpenRouterSyncProvider {\n private readonly apiKey?: string;\n private readonly baseUrl: string;\n private readonly query?: OpenRouterModelsQuery;\n\n constructor(options: OpenRouterSyncProviderOptions = {}) {\n this.apiKey = options.apiKey;\n this.baseUrl = options.baseUrl ?? \"https://openrouter.ai/api/v1\";\n this.query = options.query ?? { output_modalities: \"all\" };\n }\n\n /**\n * Fetches the full OpenRouter model catalog (public, no API key required).\n * @see https://openrouter.ai/api/v1/models\n */\n async fetchModels(): Promise<AiModelRecord[]> {\n const url = buildModelsUrl(this.baseUrl, this.query);\n let response: Response;\n\n try {\n response = await fetch(url, { headers: buildFetchHeaders(this.apiKey) });\n } catch (cause) {\n throw new SyncError(\"OPENROUTER_MODELS_FETCH_FAILED\", `Failed to fetch OpenRouter models from ${url}`, cause);\n }\n\n if (response.status === 401 || response.status === 403) {\n throw new SyncError(\n \"OPENROUTER_AUTH_FAILED\",\n this.apiKey\n ? \"OpenRouter API key is invalid or unauthorized.\"\n : \"OpenRouter returned unauthorized — remove OPENROUTER_API_KEY to use the public models endpoint.\",\n );\n }\n\n if (!response.ok) {\n const body = await response.text().catch(() => \"\");\n throw new SyncError(\n \"OPENROUTER_MODELS_FETCH_FAILED\",\n `OpenRouter models fetch failed (${response.status}): ${body.slice(0, 200)}`,\n );\n }\n\n const json = (await response.json()) as OpenRouterModelsResponse;\n const syncedAt = new Date().toISOString();\n return (json.data ?? []).map((row) => normalizeOpenRouterModel(row, syncedAt));\n }\n\n /** Build the URL used for the last fetch pattern (for debugging). */\n getModelsUrl(): string {\n return buildModelsUrl(this.baseUrl, this.query);\n }\n}\n","import type { AliasRegistry } from \"../aliases/AliasRegistry.js\";\nimport type { AiModelRecord } from \"../models/types.js\";\nimport { ModelNameResolver } from \"./modelNameResolver/ModelNameResolver.js\";\nimport type {\n ModelResolutionInput,\n ModelResolutionResult,\n ModelResolutionSuccess,\n ModelResolverOptions,\n ResolvedModel,\n} from \"./modelNameResolver/types.js\";\n\nexport { ModelNameResolver } from \"./modelNameResolver/ModelNameResolver.js\";\nexport { buildCatalogIndexes } from \"./modelNameResolver/catalogIndexes.js\";\nexport * from \"./modelNameResolver/types.js\";\nexport {\n loadOpenRouterRoutingEnv,\n shouldDefaultRouteViaOpenRouter,\n isEffectiveOpenRouterTransport,\n providerIdToEnvKeyPrefix,\n vendorApiKeyEnvName,\n} from \"./openRouterRoutingEnv.js\";\nexport type { OpenRouterRoutingConfig } from \"./openRouterRoutingEnv.js\";\nexport { normalizeString, normalizeProvider } from \"./modelNameResolver/normalize.js\";\n\nexport function createModelNameResolver(\n catalog: Map<string, AiModelRecord>,\n options?: ModelResolverOptions,\n): ModelNameResolver {\n return new ModelNameResolver(catalog, options);\n}\n\n/** Resolve a model string; returns catalog record only (no resolution metadata). */\nexport function resolveModel(\n input: string,\n models: Map<string, AiModelRecord>,\n aliasRegistry?: AliasRegistry,\n provider?: string,\n): ResolvedModel | null {\n const resolver = new ModelNameResolver(models, { aliasRegistry });\n const result = resolver.resolve({ model: input, provider });\n if (!result.found || !result.record) return null;\n return {\n catalogModel: result.record,\n matchedAlias: result.modelId,\n routedViaOpenRouter: result.routedViaOpenRouter,\n };\n}\n\nexport function isRoutedViaOpenRouter(\n provider: string | undefined,\n model: AiModelRecord,\n matchedKey: string,\n): boolean {\n if (provider === \"openrouter\") return true;\n if (provider && provider !== \"openrouter\") return false;\n return model.modelId.includes(\"/\") && matchedKey.includes(\"/\");\n}\n\nexport type {\n ModelResolutionInput,\n ModelResolutionResult,\n ModelResolutionSuccess,\n ModelResolverOptions,\n};\n"],"mappings":";;;;;;;;;;;AAgBA,SAAS,kBAAkB,QAAyC;AAClE,QAAM,UAAkC,EAAE,QAAQ,mBAAmB;AACrE,MAAI,QAAQ,KAAK,EAAG,SAAQ,gBAAgB,UAAU,OAAO,KAAK,CAAC;AACnE,SAAO;AACT;AAEA,SAAS,eAAe,SAAiB,OAAuC;AAC9E,QAAM,MAAM,IAAI,IAAI,GAAG,QAAQ,QAAQ,OAAO,EAAE,CAAC,SAAS;AAC1D,QAAM,IAAI,EAAE,mBAAmB,OAAO,GAAG,MAAM;AAC/C,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,CAAC,GAAG;AAC5C,QAAI,UAAU,UAAa,UAAU,GAAI,KAAI,aAAa,IAAI,KAAK,KAAK;AAAA,EAC1E;AACA,SAAO,IAAI,SAAS;AACtB;AAEO,IAAM,yBAAN,MAA6B;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EAEjB,YAAY,UAAyC,CAAC,GAAG;AACvD,SAAK,SAAS,QAAQ;AACtB,SAAK,UAAU,QAAQ,WAAW;AAClC,SAAK,QAAQ,QAAQ,SAAS,EAAE,mBAAmB,MAAM;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAwC;AAC5C,UAAM,MAAM,eAAe,KAAK,SAAS,KAAK,KAAK;AACnD,QAAI;AAEJ,QAAI;AACF,iBAAW,MAAM,MAAM,KAAK,EAAE,SAAS,kBAAkB,KAAK,MAAM,EAAE,CAAC;AAAA,IACzE,SAAS,OAAO;AACd,YAAM,IAAI,UAAU,kCAAkC,0CAA0C,GAAG,IAAI,KAAK;AAAA,IAC9G;AAEA,QAAI,SAAS,WAAW,OAAO,SAAS,WAAW,KAAK;AACtD,YAAM,IAAI;AAAA,QACR;AAAA,QACA,KAAK,SACD,mDACA;AAAA,MACN;AAAA,IACF;AAEA,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,OAAO,MAAM,SAAS,KAAK,EAAE,MAAM,MAAM,EAAE;AACjD,YAAM,IAAI;AAAA,QACR;AAAA,QACA,mCAAmC,SAAS,MAAM,MAAM,KAAK,MAAM,GAAG,GAAG,CAAC;AAAA,MAC5E;AAAA,IACF;AAEA,UAAM,OAAQ,MAAM,SAAS,KAAK;AAClC,UAAM,YAAW,oBAAI,KAAK,GAAE,YAAY;AACxC,YAAQ,KAAK,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,yBAAyB,KAAK,QAAQ,CAAC;AAAA,EAC/E;AAAA;AAAA,EAGA,eAAuB;AACrB,WAAO,eAAe,KAAK,SAAS,KAAK,KAAK;AAAA,EAChD;AACF;;;
|
|
1
|
+
{"version":3,"sources":["../src/sync/OpenRouterSyncProvider.ts","../src/sync/modelNameResolver.ts"],"sourcesContent":["import { SyncError } from \"../errors.js\";\nimport { normalizeOpenRouterModel } from \"../models/normalizeOpenRouterModel.js\";\nimport type { AiModelRecord } from \"../models/types.js\";\nimport type {\n OpenRouterModelsQuery,\n OpenRouterModelsResponse,\n} from \"../models/openrouter.types.js\";\n\nexport type OpenRouterSyncProviderOptions = {\n /** Optional — public GET /models needs no key. */\n apiKey?: string;\n baseUrl?: string;\n /** Query params passed to OpenRouter (default: all modalities). */\n query?: OpenRouterModelsQuery;\n};\n\nfunction buildFetchHeaders(apiKey?: string): Record<string, string> {\n const headers: Record<string, string> = { Accept: \"application/json\" };\n if (apiKey?.trim()) headers.Authorization = `Bearer ${apiKey.trim()}`;\n return headers;\n}\n\nfunction buildModelsUrl(baseUrl: string, query?: OpenRouterModelsQuery): string {\n const url = new URL(`${baseUrl.replace(/\\/$/, \"\")}/models`);\n const q = { output_modalities: \"all\", ...query };\n for (const [key, value] of Object.entries(q)) {\n if (value !== undefined && value !== \"\") url.searchParams.set(key, value);\n }\n return url.toString();\n}\n\nexport class OpenRouterSyncProvider {\n private readonly apiKey?: string;\n private readonly baseUrl: string;\n private readonly query?: OpenRouterModelsQuery;\n\n constructor(options: OpenRouterSyncProviderOptions = {}) {\n this.apiKey = options.apiKey;\n this.baseUrl = options.baseUrl ?? \"https://openrouter.ai/api/v1\";\n this.query = options.query ?? { output_modalities: \"all\" };\n }\n\n /**\n * Fetches the full OpenRouter model catalog (public, no API key required).\n * @see https://openrouter.ai/api/v1/models\n */\n async fetchModels(): Promise<AiModelRecord[]> {\n const url = buildModelsUrl(this.baseUrl, this.query);\n let response: Response;\n\n try {\n response = await fetch(url, { headers: buildFetchHeaders(this.apiKey) });\n } catch (cause) {\n throw new SyncError(\"OPENROUTER_MODELS_FETCH_FAILED\", `Failed to fetch OpenRouter models from ${url}`, cause);\n }\n\n if (response.status === 401 || response.status === 403) {\n throw new SyncError(\n \"OPENROUTER_AUTH_FAILED\",\n this.apiKey\n ? \"OpenRouter API key is invalid or unauthorized.\"\n : \"OpenRouter returned unauthorized — remove OPENROUTER_API_KEY to use the public models endpoint.\",\n );\n }\n\n if (!response.ok) {\n const body = await response.text().catch(() => \"\");\n throw new SyncError(\n \"OPENROUTER_MODELS_FETCH_FAILED\",\n `OpenRouter models fetch failed (${response.status}): ${body.slice(0, 200)}`,\n );\n }\n\n const json = (await response.json()) as OpenRouterModelsResponse;\n const syncedAt = new Date().toISOString();\n return (json.data ?? []).map((row) => normalizeOpenRouterModel(row, syncedAt));\n }\n\n /** Build the URL used for the last fetch pattern (for debugging). */\n getModelsUrl(): string {\n return buildModelsUrl(this.baseUrl, this.query);\n }\n}\n","import type { AliasRegistry } from \"../aliases/AliasRegistry.js\";\nimport type { AiModelRecord } from \"../models/types.js\";\nimport { ModelNameResolver } from \"./modelNameResolver/ModelNameResolver.js\";\nimport type {\n ModelResolutionInput,\n ModelResolutionResult,\n ModelResolutionSuccess,\n ModelResolverOptions,\n ResolvedModel,\n} from \"./modelNameResolver/types.js\";\n\nexport { ModelNameResolver } from \"./modelNameResolver/ModelNameResolver.js\";\nexport { buildCatalogIndexes } from \"./modelNameResolver/catalogIndexes.js\";\nexport * from \"./modelNameResolver/types.js\";\nexport {\n loadOpenRouterRoutingEnv,\n shouldDefaultRouteViaOpenRouter,\n isEffectiveOpenRouterTransport,\n providerIdToEnvKeyPrefix,\n vendorApiKeyEnvName,\n} from \"./openRouterRoutingEnv.js\";\nexport type { OpenRouterRoutingConfig } from \"./openRouterRoutingEnv.js\";\nexport { normalizeString, normalizeProvider } from \"./modelNameResolver/normalize.js\";\nexport {\n resolveModelVendorSync,\n resolveModelVendorFromResolution,\n} from \"./modelNameResolver/resolveModelVendor.js\";\nexport type {\n ModelVendorRef,\n ResolveModelVendorOptions,\n} from \"./modelNameResolver/resolveModelVendor.js\";\n\nexport function createModelNameResolver(\n catalog: Map<string, AiModelRecord>,\n options?: ModelResolverOptions,\n): ModelNameResolver {\n return new ModelNameResolver(catalog, options);\n}\n\n/** Resolve a model string; returns catalog record only (no resolution metadata). */\nexport function resolveModel(\n input: string,\n models: Map<string, AiModelRecord>,\n aliasRegistry?: AliasRegistry,\n provider?: string,\n): ResolvedModel | null {\n const resolver = new ModelNameResolver(models, { aliasRegistry });\n const result = resolver.resolve({ model: input, provider });\n if (!result.found || !result.record) return null;\n return {\n catalogModel: result.record,\n matchedAlias: result.modelId,\n routedViaOpenRouter: result.routedViaOpenRouter,\n };\n}\n\nexport function isRoutedViaOpenRouter(\n provider: string | undefined,\n model: AiModelRecord,\n matchedKey: string,\n): boolean {\n if (provider === \"openrouter\") return true;\n if (provider && provider !== \"openrouter\") return false;\n return model.modelId.includes(\"/\") && matchedKey.includes(\"/\");\n}\n\nexport type {\n ModelResolutionInput,\n ModelResolutionResult,\n ModelResolutionSuccess,\n ModelResolverOptions,\n};\n"],"mappings":";;;;;;;;;;;AAgBA,SAAS,kBAAkB,QAAyC;AAClE,QAAM,UAAkC,EAAE,QAAQ,mBAAmB;AACrE,MAAI,QAAQ,KAAK,EAAG,SAAQ,gBAAgB,UAAU,OAAO,KAAK,CAAC;AACnE,SAAO;AACT;AAEA,SAAS,eAAe,SAAiB,OAAuC;AAC9E,QAAM,MAAM,IAAI,IAAI,GAAG,QAAQ,QAAQ,OAAO,EAAE,CAAC,SAAS;AAC1D,QAAM,IAAI,EAAE,mBAAmB,OAAO,GAAG,MAAM;AAC/C,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,CAAC,GAAG;AAC5C,QAAI,UAAU,UAAa,UAAU,GAAI,KAAI,aAAa,IAAI,KAAK,KAAK;AAAA,EAC1E;AACA,SAAO,IAAI,SAAS;AACtB;AAEO,IAAM,yBAAN,MAA6B;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EAEjB,YAAY,UAAyC,CAAC,GAAG;AACvD,SAAK,SAAS,QAAQ;AACtB,SAAK,UAAU,QAAQ,WAAW;AAClC,SAAK,QAAQ,QAAQ,SAAS,EAAE,mBAAmB,MAAM;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAwC;AAC5C,UAAM,MAAM,eAAe,KAAK,SAAS,KAAK,KAAK;AACnD,QAAI;AAEJ,QAAI;AACF,iBAAW,MAAM,MAAM,KAAK,EAAE,SAAS,kBAAkB,KAAK,MAAM,EAAE,CAAC;AAAA,IACzE,SAAS,OAAO;AACd,YAAM,IAAI,UAAU,kCAAkC,0CAA0C,GAAG,IAAI,KAAK;AAAA,IAC9G;AAEA,QAAI,SAAS,WAAW,OAAO,SAAS,WAAW,KAAK;AACtD,YAAM,IAAI;AAAA,QACR;AAAA,QACA,KAAK,SACD,mDACA;AAAA,MACN;AAAA,IACF;AAEA,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,OAAO,MAAM,SAAS,KAAK,EAAE,MAAM,MAAM,EAAE;AACjD,YAAM,IAAI;AAAA,QACR;AAAA,QACA,mCAAmC,SAAS,MAAM,MAAM,KAAK,MAAM,GAAG,GAAG,CAAC;AAAA,MAC5E;AAAA,IACF;AAEA,UAAM,OAAQ,MAAM,SAAS,KAAK;AAClC,UAAM,YAAW,oBAAI,KAAK,GAAE,YAAY;AACxC,YAAQ,KAAK,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,yBAAyB,KAAK,QAAQ,CAAC;AAAA,EAC/E;AAAA;AAAA,EAGA,eAAuB;AACrB,WAAO,eAAe,KAAK,SAAS,KAAK,KAAK;AAAA,EAChD;AACF;;;AClDO,SAAS,wBACd,SACA,SACmB;AACnB,SAAO,IAAI,kBAAkB,SAAS,OAAO;AAC/C;AAGO,SAAS,aACd,OACA,QACA,eACA,UACsB;AACtB,QAAM,WAAW,IAAI,kBAAkB,QAAQ,EAAE,cAAc,CAAC;AAChE,QAAM,SAAS,SAAS,QAAQ,EAAE,OAAO,OAAO,SAAS,CAAC;AAC1D,MAAI,CAAC,OAAO,SAAS,CAAC,OAAO,OAAQ,QAAO;AAC5C,SAAO;AAAA,IACL,cAAc,OAAO;AAAA,IACrB,cAAc,OAAO;AAAA,IACrB,qBAAqB,OAAO;AAAA,EAC9B;AACF;AAEO,SAAS,sBACd,UACA,OACA,YACS;AACT,MAAI,aAAa,aAAc,QAAO;AACtC,MAAI,YAAY,aAAa,aAAc,QAAO;AAClD,SAAO,MAAM,QAAQ,SAAS,GAAG,KAAK,WAAW,SAAS,GAAG;AAC/D;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";//# sourceMappingURL=chunk-LQLSD26Y.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/ami/Documents/prometheus/x12i/ai-tools/dist/chunk-LQLSD26Y.cjs"],"names":[],"mappings":"AAAA","file":"/Users/ami/Documents/prometheus/x12i/ai-tools/dist/chunk-LQLSD26Y.cjs"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkYO7AJ5Z3cjs = require('./chunk-YO7AJ5Z3.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunk5XBMNY7Qcjs = require('./chunk-5XBMNY7Q.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
var _chunkPADNCGZBcjs = require('./chunk-PADNCGZB.cjs');
|
|
@@ -58,7 +58,7 @@ var OpenRouterSyncProvider = class {
|
|
|
58
58
|
}
|
|
59
59
|
const json = await response.json();
|
|
60
60
|
const syncedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
61
|
-
return (_nullishCoalesce(json.data, () => ( []))).map((row) =>
|
|
61
|
+
return (_nullishCoalesce(json.data, () => ( []))).map((row) => _chunkYO7AJ5Z3cjs.normalizeOpenRouterModel.call(void 0, row, syncedAt));
|
|
62
62
|
}
|
|
63
63
|
/** Build the URL used for the last fetch pattern (for debugging). */
|
|
64
64
|
getModelsUrl() {
|
|
@@ -68,10 +68,10 @@ var OpenRouterSyncProvider = class {
|
|
|
68
68
|
|
|
69
69
|
// src/sync/modelNameResolver.ts
|
|
70
70
|
function createModelNameResolver(catalog, options) {
|
|
71
|
-
return new (0,
|
|
71
|
+
return new (0, _chunk5XBMNY7Qcjs.ModelNameResolver)(catalog, options);
|
|
72
72
|
}
|
|
73
73
|
function resolveModel(input, models, aliasRegistry, provider) {
|
|
74
|
-
const resolver = new (0,
|
|
74
|
+
const resolver = new (0, _chunk5XBMNY7Qcjs.ModelNameResolver)(models, { aliasRegistry });
|
|
75
75
|
const result = resolver.resolve({ model: input, provider });
|
|
76
76
|
if (!result.found || !result.record) return null;
|
|
77
77
|
return {
|
|
@@ -92,4 +92,4 @@ function isRoutedViaOpenRouter(provider, model, matchedKey) {
|
|
|
92
92
|
|
|
93
93
|
|
|
94
94
|
exports.OpenRouterSyncProvider = OpenRouterSyncProvider; exports.createModelNameResolver = createModelNameResolver; exports.resolveModel = resolveModel; exports.isRoutedViaOpenRouter = isRoutedViaOpenRouter;
|
|
95
|
-
//# sourceMappingURL=chunk-
|
|
95
|
+
//# sourceMappingURL=chunk-R6P4AWOM.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/ami/Documents/prometheus/x12i/ai-tools/dist/chunk-
|
|
1
|
+
{"version":3,"sources":["/Users/ami/Documents/prometheus/x12i/ai-tools/dist/chunk-R6P4AWOM.cjs","../src/sync/OpenRouterSyncProvider.ts","../src/sync/modelNameResolver.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACMA,SAAS,iBAAA,CAAkB,MAAA,EAAyC;AAClE,EAAA,MAAM,QAAA,EAAkC,EAAE,MAAA,EAAQ,mBAAmB,CAAA;AACrE,EAAA,GAAA,iBAAI,MAAA,2BAAQ,IAAA,mBAAK,GAAA,EAAG,OAAA,CAAQ,cAAA,EAAgB,CAAA,OAAA,EAAU,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,CAAA;AAC5D,EAAA;AACT;AAEgF;AACpB,EAAA;AACX,EAAA;AACD,EAAA;AACuB,IAAA;AACrE,EAAA;AACoB,EAAA;AACtB;AAEoC;AACjB,EAAA;AACA,EAAA;AACA,EAAA;AAEwC,EAAA;AACjC,IAAA;AACY,IAAA;AACuB,IAAA;AAC3D,EAAA;AAAA;AAAA;AAAA;AAAA;AAM8C,EAAA;AACO,IAAA;AAC/C,IAAA;AAEA,IAAA;AAC4D,MAAA;AAChD,IAAA;AACwC,MAAA;AACxD,IAAA;AAEwD,IAAA;AAC5C,MAAA;AACR,QAAA;AAEI,QAAA;AAEN,MAAA;AACF,IAAA;AAEkB,IAAA;AACiC,MAAA;AACvC,MAAA;AACR,QAAA;AAC6D,QAAA;AAC/D,MAAA;AACF,IAAA;AAEkC,IAAA;AACM,IAAA;AACuB,IAAA;AACjE,EAAA;AAAA;AAGuB,EAAA;AACyB,IAAA;AAChD,EAAA;AACF;ADfsE;AACA;AEjCjD;AAC0B,EAAA;AAC/C;AAQwB;AAC0C,EAAA;AACN,EAAA;AACd,EAAA;AACrC,EAAA;AACgB,IAAA;AACA,IAAA;AACO,IAAA;AAC9B,EAAA;AACF;AAMW;AAC6B,EAAA;AACY,EAAA;AACW,EAAA;AAC/D;AFuBsE;AACA;AACA;AACA;AACA;AACA;AACA","file":"/Users/ami/Documents/prometheus/x12i/ai-tools/dist/chunk-R6P4AWOM.cjs","sourcesContent":[null,"import { SyncError } from \"../errors.js\";\nimport { normalizeOpenRouterModel } from \"../models/normalizeOpenRouterModel.js\";\nimport type { AiModelRecord } from \"../models/types.js\";\nimport type {\n OpenRouterModelsQuery,\n OpenRouterModelsResponse,\n} from \"../models/openrouter.types.js\";\n\nexport type OpenRouterSyncProviderOptions = {\n /** Optional — public GET /models needs no key. */\n apiKey?: string;\n baseUrl?: string;\n /** Query params passed to OpenRouter (default: all modalities). */\n query?: OpenRouterModelsQuery;\n};\n\nfunction buildFetchHeaders(apiKey?: string): Record<string, string> {\n const headers: Record<string, string> = { Accept: \"application/json\" };\n if (apiKey?.trim()) headers.Authorization = `Bearer ${apiKey.trim()}`;\n return headers;\n}\n\nfunction buildModelsUrl(baseUrl: string, query?: OpenRouterModelsQuery): string {\n const url = new URL(`${baseUrl.replace(/\\/$/, \"\")}/models`);\n const q = { output_modalities: \"all\", ...query };\n for (const [key, value] of Object.entries(q)) {\n if (value !== undefined && value !== \"\") url.searchParams.set(key, value);\n }\n return url.toString();\n}\n\nexport class OpenRouterSyncProvider {\n private readonly apiKey?: string;\n private readonly baseUrl: string;\n private readonly query?: OpenRouterModelsQuery;\n\n constructor(options: OpenRouterSyncProviderOptions = {}) {\n this.apiKey = options.apiKey;\n this.baseUrl = options.baseUrl ?? \"https://openrouter.ai/api/v1\";\n this.query = options.query ?? { output_modalities: \"all\" };\n }\n\n /**\n * Fetches the full OpenRouter model catalog (public, no API key required).\n * @see https://openrouter.ai/api/v1/models\n */\n async fetchModels(): Promise<AiModelRecord[]> {\n const url = buildModelsUrl(this.baseUrl, this.query);\n let response: Response;\n\n try {\n response = await fetch(url, { headers: buildFetchHeaders(this.apiKey) });\n } catch (cause) {\n throw new SyncError(\"OPENROUTER_MODELS_FETCH_FAILED\", `Failed to fetch OpenRouter models from ${url}`, cause);\n }\n\n if (response.status === 401 || response.status === 403) {\n throw new SyncError(\n \"OPENROUTER_AUTH_FAILED\",\n this.apiKey\n ? \"OpenRouter API key is invalid or unauthorized.\"\n : \"OpenRouter returned unauthorized — remove OPENROUTER_API_KEY to use the public models endpoint.\",\n );\n }\n\n if (!response.ok) {\n const body = await response.text().catch(() => \"\");\n throw new SyncError(\n \"OPENROUTER_MODELS_FETCH_FAILED\",\n `OpenRouter models fetch failed (${response.status}): ${body.slice(0, 200)}`,\n );\n }\n\n const json = (await response.json()) as OpenRouterModelsResponse;\n const syncedAt = new Date().toISOString();\n return (json.data ?? []).map((row) => normalizeOpenRouterModel(row, syncedAt));\n }\n\n /** Build the URL used for the last fetch pattern (for debugging). */\n getModelsUrl(): string {\n return buildModelsUrl(this.baseUrl, this.query);\n }\n}\n","import type { AliasRegistry } from \"../aliases/AliasRegistry.js\";\nimport type { AiModelRecord } from \"../models/types.js\";\nimport { ModelNameResolver } from \"./modelNameResolver/ModelNameResolver.js\";\nimport type {\n ModelResolutionInput,\n ModelResolutionResult,\n ModelResolutionSuccess,\n ModelResolverOptions,\n ResolvedModel,\n} from \"./modelNameResolver/types.js\";\n\nexport { ModelNameResolver } from \"./modelNameResolver/ModelNameResolver.js\";\nexport { buildCatalogIndexes } from \"./modelNameResolver/catalogIndexes.js\";\nexport * from \"./modelNameResolver/types.js\";\nexport {\n loadOpenRouterRoutingEnv,\n shouldDefaultRouteViaOpenRouter,\n isEffectiveOpenRouterTransport,\n providerIdToEnvKeyPrefix,\n vendorApiKeyEnvName,\n} from \"./openRouterRoutingEnv.js\";\nexport type { OpenRouterRoutingConfig } from \"./openRouterRoutingEnv.js\";\nexport { normalizeString, normalizeProvider } from \"./modelNameResolver/normalize.js\";\nexport {\n resolveModelVendorSync,\n resolveModelVendorFromResolution,\n} from \"./modelNameResolver/resolveModelVendor.js\";\nexport type {\n ModelVendorRef,\n ResolveModelVendorOptions,\n} from \"./modelNameResolver/resolveModelVendor.js\";\n\nexport function createModelNameResolver(\n catalog: Map<string, AiModelRecord>,\n options?: ModelResolverOptions,\n): ModelNameResolver {\n return new ModelNameResolver(catalog, options);\n}\n\n/** Resolve a model string; returns catalog record only (no resolution metadata). */\nexport function resolveModel(\n input: string,\n models: Map<string, AiModelRecord>,\n aliasRegistry?: AliasRegistry,\n provider?: string,\n): ResolvedModel | null {\n const resolver = new ModelNameResolver(models, { aliasRegistry });\n const result = resolver.resolve({ model: input, provider });\n if (!result.found || !result.record) return null;\n return {\n catalogModel: result.record,\n matchedAlias: result.modelId,\n routedViaOpenRouter: result.routedViaOpenRouter,\n };\n}\n\nexport function isRoutedViaOpenRouter(\n provider: string | undefined,\n model: AiModelRecord,\n matchedKey: string,\n): boolean {\n if (provider === \"openrouter\") return true;\n if (provider && provider !== \"openrouter\") return false;\n return model.modelId.includes(\"/\") && matchedKey.includes(\"/\");\n}\n\nexport type {\n ModelResolutionInput,\n ModelResolutionResult,\n ModelResolutionSuccess,\n ModelResolverOptions,\n};\n"]}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkTDO5SDQ3cjs = require('./chunk-TDO5SDQ3.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
var _chunk2KPWVOOTcjs = require('./chunk-2KPWVOOT.cjs');
|
|
6
7
|
|
|
7
|
-
var _chunkRSHI4OOYcjs = require('./chunk-RSHI4OOY.cjs');
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var _chunk5XBMNY7Qcjs = require('./chunk-5XBMNY7Q.cjs');
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
var _chunkGS7T56RPcjs = require('./chunk-GS7T56RP.cjs');
|
|
@@ -52,9 +52,9 @@ function firstRate(raw, ...keys) {
|
|
|
52
52
|
return void 0;
|
|
53
53
|
}
|
|
54
54
|
function canonicalCatalogModelId(provider, modelId) {
|
|
55
|
-
const m =
|
|
55
|
+
const m = _chunk5XBMNY7Qcjs.normalizeString.call(void 0, modelId);
|
|
56
56
|
if (m.includes("/")) return m;
|
|
57
|
-
const p = _nullishCoalesce(
|
|
57
|
+
const p = _nullishCoalesce(_chunk5XBMNY7Qcjs.normalizeProvider.call(void 0, provider), () => ( _chunk5XBMNY7Qcjs.normalizeString.call(void 0, provider)));
|
|
58
58
|
return `${p}/${m}`;
|
|
59
59
|
}
|
|
60
60
|
function mapStatus(status) {
|
|
@@ -145,7 +145,7 @@ function normalizeX12iCatalogModel(entry, kind, verifiedAt) {
|
|
|
145
145
|
const outputRate = firstRate(pricingRaw, "output", "textOutput", "outputBelow200k");
|
|
146
146
|
if (inputRate == null && outputRate == null) return null;
|
|
147
147
|
const modelId = canonicalCatalogModelId(entry.provider, entry.modelId);
|
|
148
|
-
const providerId = kind === "openrouter" && modelId.includes("/") ? modelId.split("/")[0] : _nullishCoalesce(
|
|
148
|
+
const providerId = kind === "openrouter" && modelId.includes("/") ? modelId.split("/")[0] : _nullishCoalesce(_chunk5XBMNY7Qcjs.normalizeProvider.call(void 0, entry.provider), () => ( entry.provider));
|
|
149
149
|
const modalities = mapModalities(entry.modalities);
|
|
150
150
|
const pricedAt = verifiedAt || (/* @__PURE__ */ new Date()).toISOString();
|
|
151
151
|
const pricingSource = kind === "openrouter" ? "openrouter" : "direct";
|
|
@@ -153,7 +153,7 @@ function normalizeX12iCatalogModel(entry, kind, verifiedAt) {
|
|
|
153
153
|
const openRouterPricing = pricingToOpenRouterApi(pricingRaw, true);
|
|
154
154
|
const openRouter = stubOpenRouterApi(modelId, entry, modalities, openRouterPricing);
|
|
155
155
|
const supportedParameters = _nullishCoalesce(openRouter.supported_parameters, () => ( []));
|
|
156
|
-
const supportsReasoning = _optionalChain([entry, 'access', _3 => _3.capabilities, 'optionalAccess', _4 => _4.reasoning]) === true ||
|
|
156
|
+
const supportsReasoning = _optionalChain([entry, 'access', _3 => _3.capabilities, 'optionalAccess', _4 => _4.reasoning]) === true || _chunk2KPWVOOTcjs.computeSupportsReasoning.call(void 0, {
|
|
157
157
|
supportedParameters,
|
|
158
158
|
pricing,
|
|
159
159
|
openRouterPricing
|
|
@@ -1867,7 +1867,7 @@ async function loadCatalogSourcesCached(options = {}, cacheOptions = {}) {
|
|
|
1867
1867
|
|
|
1868
1868
|
// src/catalog/AiModelsCatalogClient.ts
|
|
1869
1869
|
function isOpenRouterProvider(provider) {
|
|
1870
|
-
return
|
|
1870
|
+
return _chunk5XBMNY7Qcjs.normalizeProvider.call(void 0, provider) === "openrouter";
|
|
1871
1871
|
}
|
|
1872
1872
|
function profileResolutionStrategy(matchedVia) {
|
|
1873
1873
|
switch (matchedVia) {
|
|
@@ -1942,7 +1942,7 @@ var AiModelsCatalogClient = (_class = class {
|
|
|
1942
1942
|
return _nullishCoalesce(this.directModels, () => ( /* @__PURE__ */ new Map()));
|
|
1943
1943
|
}
|
|
1944
1944
|
resolver(models, options) {
|
|
1945
|
-
return new (0,
|
|
1945
|
+
return new (0, _chunk5XBMNY7Qcjs.ModelNameResolver)(models, { ...this.resolverOptions, ...options });
|
|
1946
1946
|
}
|
|
1947
1947
|
async getAllModels() {
|
|
1948
1948
|
await this.ensureLoaded();
|
|
@@ -1993,7 +1993,7 @@ var AiModelsCatalogClient = (_class = class {
|
|
|
1993
1993
|
if (!result.routedViaOpenRouter) return result;
|
|
1994
1994
|
let { modelId, record } = result;
|
|
1995
1995
|
if (!modelId.includes("/")) {
|
|
1996
|
-
const vendor = _nullishCoalesce(_nullishCoalesce(_optionalChain([record, 'optionalAccess', _13 => _13.providerId]), () => (
|
|
1996
|
+
const vendor = _nullishCoalesce(_nullishCoalesce(_optionalChain([record, 'optionalAccess', _13 => _13.providerId]), () => ( _chunk5XBMNY7Qcjs.normalizeProvider.call(void 0, input.provider))), () => ( void 0));
|
|
1997
1997
|
if (vendor && vendor !== "openrouter") {
|
|
1998
1998
|
modelId = `${vendor}/${modelId}`;
|
|
1999
1999
|
}
|
|
@@ -2006,13 +2006,13 @@ var AiModelsCatalogClient = (_class = class {
|
|
|
2006
2006
|
return { ...result, modelId, record };
|
|
2007
2007
|
}
|
|
2008
2008
|
async resolveViaProfile(input, options) {
|
|
2009
|
-
const profileMatch = await
|
|
2009
|
+
const profileMatch = await _chunkTDO5SDQ3cjs.matchModelInAiProfiles.call(void 0, input.model, input.provider);
|
|
2010
2010
|
if (!profileMatch) return null;
|
|
2011
2011
|
const strategy = profileResolutionStrategy(profileMatch.matchedVia);
|
|
2012
2012
|
const attempts = [];
|
|
2013
2013
|
const seen = /* @__PURE__ */ new Set();
|
|
2014
2014
|
const add = (model, provider) => {
|
|
2015
|
-
const key = `${_nullishCoalesce(provider, () => ( ""))}\0${
|
|
2015
|
+
const key = `${_nullishCoalesce(provider, () => ( ""))}\0${_chunk5XBMNY7Qcjs.normalizeString.call(void 0, model)}`;
|
|
2016
2016
|
if (seen.has(key)) return;
|
|
2017
2017
|
seen.add(key);
|
|
2018
2018
|
attempts.push({ model, provider });
|
|
@@ -2028,10 +2028,10 @@ var AiModelsCatalogClient = (_class = class {
|
|
|
2028
2028
|
catalogResult = result;
|
|
2029
2029
|
if (result.found && result.record) break;
|
|
2030
2030
|
}
|
|
2031
|
-
const normalisedInput =
|
|
2031
|
+
const normalisedInput = _chunk5XBMNY7Qcjs.normalizeString.call(void 0, input.model);
|
|
2032
2032
|
if (!_optionalChain([catalogResult, 'optionalAccess', _17 => _17.found])) {
|
|
2033
|
-
const routingEnv = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _18 => _18.routingEnv]), () => (
|
|
2034
|
-
const routedViaOpenRouter =
|
|
2033
|
+
const routingEnv = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _18 => _18.routingEnv]), () => ( _chunk5XBMNY7Qcjs.loadOpenRouterRoutingEnv.call(void 0, )));
|
|
2034
|
+
const routedViaOpenRouter = _chunk5XBMNY7Qcjs.isEffectiveOpenRouterTransport.call(void 0, routingEnv, {
|
|
2035
2035
|
provider: _nullishCoalesce(input.provider, () => ( profileMatch.provider)),
|
|
2036
2036
|
modelId: profileMatch.canonicalModelId,
|
|
2037
2037
|
routeViaOpenRouter: _optionalChain([options, 'optionalAccess', _19 => _19.routeViaOpenRouter])
|
|
@@ -2097,4 +2097,4 @@ var AiModelsCatalogClient = (_class = class {
|
|
|
2097
2097
|
|
|
2098
2098
|
|
|
2099
2099
|
exports.DEFAULT_CATALOG_CACHE_TTL_MS = DEFAULT_CATALOG_CACHE_TTL_MS; exports.resolveCatalogCacheTtlMs = resolveCatalogCacheTtlMs; exports.DEFAULT_DIRECT_CATALOG_URL = DEFAULT_DIRECT_CATALOG_URL; exports.DEFAULT_OPENROUTER_CATALOG_URL = DEFAULT_OPENROUTER_CATALOG_URL; exports.canonicalCatalogModelId = canonicalCatalogModelId; exports.normalizeX12iCatalogModel = normalizeX12iCatalogModel; exports.modelsFromX12iCatalogFile = modelsFromX12iCatalogFile; exports.loadCatalogSources = loadCatalogSources; exports.readBundledCatalogFiles = readBundledCatalogFiles; exports.invalidateCatalogLoadCache = invalidateCatalogLoadCache; exports.loadCatalogSourcesCached = loadCatalogSourcesCached; exports.AiModelsCatalogClient = AiModelsCatalogClient;
|
|
2100
|
-
//# sourceMappingURL=chunk-
|
|
2100
|
+
//# sourceMappingURL=chunk-SIR4LDHD.cjs.map
|