@x12i/ai-profiles 4.1.1 → 4.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -17
- package/dist/data/models-catalog.json +2183 -264
- package/dist/data/models-profiles.json +8 -63
- package/dist/data/models-registry.json +1 -1
- package/dist/deriveModelTags.d.ts +18 -0
- package/dist/deriveModelTags.d.ts.map +1 -0
- package/dist/deriveModelTags.js +148 -0
- package/dist/deriveModelTags.js.map +1 -0
- package/dist/index.d.ts +11 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/isKnownProfileChoice.d.ts +21 -0
- package/dist/isKnownProfileChoice.d.ts.map +1 -1
- package/dist/isKnownProfileChoice.js +25 -0
- package/dist/isKnownProfileChoice.js.map +1 -1
- package/dist/listAICatalogModels.d.ts +45 -0
- package/dist/listAICatalogModels.d.ts.map +1 -0
- package/dist/listAICatalogModels.js +229 -0
- package/dist/listAICatalogModels.js.map +1 -0
- package/dist/listAIProfiles.d.ts.map +1 -1
- package/dist/listAIProfiles.js +8 -4
- package/dist/listAIProfiles.js.map +1 -1
- package/dist/modelsCatalog.d.ts.map +1 -1
- package/dist/modelsCatalog.js +5 -0
- package/dist/modelsCatalog.js.map +1 -1
- package/dist/profileDiscovery.d.ts +38 -6
- package/dist/profileDiscovery.d.ts.map +1 -1
- package/dist/profileDiscovery.js +70 -22
- package/dist/profileDiscovery.js.map +1 -1
- package/dist/profileTags.d.ts +5 -0
- package/dist/profileTags.d.ts.map +1 -1
- package/dist/profileTags.js +26 -0
- package/dist/profileTags.js.map +1 -1
- package/dist/resolveAIProfileByTags.d.ts +10 -2
- package/dist/resolveAIProfileByTags.d.ts.map +1 -1
- package/dist/resolveAIProfileByTags.js +21 -5
- package/dist/resolveAIProfileByTags.js.map +1 -1
- package/dist/resolveCatalogModelByTags.d.ts +39 -0
- package/dist/resolveCatalogModelByTags.d.ts.map +1 -0
- package/dist/resolveCatalogModelByTags.js +112 -0
- package/dist/resolveCatalogModelByTags.js.map +1 -0
- package/dist/resolveInput.d.ts +29 -0
- package/dist/resolveInput.d.ts.map +1 -0
- package/dist/resolveInput.js +41 -0
- package/dist/resolveInput.js.map +1 -0
- package/dist/resolveModelIdentity.d.ts +4 -0
- package/dist/resolveModelIdentity.d.ts.map +1 -1
- package/dist/resolveModelIdentity.js +8 -0
- package/dist/resolveModelIdentity.js.map +1 -1
- package/dist/types.d.ts +11 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/validation/validateModelsCatalog.d.ts.map +1 -1
- package/dist/validation/validateModelsCatalog.js +11 -0
- package/dist/validation/validateModelsCatalog.js.map +1 -1
- package/dist/validation/validateModelsProfilesJson.d.ts +5 -1
- package/dist/validation/validateModelsProfilesJson.d.ts.map +1 -1
- package/dist/validation/validateModelsProfilesJson.js +6 -13
- package/dist/validation/validateModelsProfilesJson.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { AIProfileTag, CatalogModelEntry, ProfileCatalogLane, ProfileTagMatchMode, RegistrySourceMode } from "./types.js";
|
|
2
|
+
export interface CatalogModelSummary {
|
|
3
|
+
openRouterModelId: string;
|
|
4
|
+
provider: CatalogModelEntry["direct"]["provider"];
|
|
5
|
+
modelId: string;
|
|
6
|
+
displayName?: string;
|
|
7
|
+
tags: AIProfileTag[];
|
|
8
|
+
modelFamily?: string;
|
|
9
|
+
status?: string;
|
|
10
|
+
/** Intent profile/choice keys that reference this model. */
|
|
11
|
+
profileChoices: string[];
|
|
12
|
+
score?: number;
|
|
13
|
+
matchedTags?: AIProfileTag[];
|
|
14
|
+
}
|
|
15
|
+
export interface ListAICatalogModelsOptions {
|
|
16
|
+
source?: RegistrySourceMode;
|
|
17
|
+
refresh?: boolean;
|
|
18
|
+
tags?: Array<AIProfileTag | string>;
|
|
19
|
+
tagMatch?: ProfileTagMatchMode;
|
|
20
|
+
/** Free-text search across slug, display name, family. */
|
|
21
|
+
search?: string;
|
|
22
|
+
/** Prefer models whose modalities match this lane (best-effort). */
|
|
23
|
+
catalogLane?: ProfileCatalogLane;
|
|
24
|
+
/**
|
|
25
|
+
* Direct vendor id (e.g. `google`, `openai`) or OpenRouter slug prefix.
|
|
26
|
+
* Also matches `direct.vendorNamespace` for `custom` rows.
|
|
27
|
+
*/
|
|
28
|
+
provider?: string;
|
|
29
|
+
/** Catalog / OpenRouter status (e.g. `active`, `deprecated`). */
|
|
30
|
+
status?: string;
|
|
31
|
+
/** Require this modality in the model's input modalities. */
|
|
32
|
+
inputModality?: string;
|
|
33
|
+
/** Require this modality in the model's output modalities. */
|
|
34
|
+
outputModality?: string;
|
|
35
|
+
/** Catalog `capabilities.toolCalling`. */
|
|
36
|
+
supportsTools?: boolean;
|
|
37
|
+
/** Catalog `capabilities.reasoning`. */
|
|
38
|
+
supportsReasoning?: boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* List catalog models, optionally filtered/ranked by tags and catalog attributes.
|
|
42
|
+
* Empty match → `[]` (does not throw).
|
|
43
|
+
*/
|
|
44
|
+
export declare function listAICatalogModels(options?: ListAICatalogModelsOptions): Promise<CatalogModelSummary[]>;
|
|
45
|
+
//# sourceMappingURL=listAICatalogModels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listAICatalogModels.d.ts","sourceRoot":"","sources":["../src/listAICatalogModels.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EAEjB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wCAAwC;IACxC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAwKD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAqGhC"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { loadModelsCatalogWithWarnings } from "./loader/loadModelsCatalog.js";
|
|
2
|
+
import { loadAIProfilesRegistryWithWarnings } from "./loader/loadAIProfilesRegistry.js";
|
|
3
|
+
import { profileIncludedInTagPool, scoreTagOverlap, } from "./profileDiscovery.js";
|
|
4
|
+
import { resolveAIProfileTagTokens } from "./profileTags.js";
|
|
5
|
+
import { formatProfileChoiceKey } from "./profileChoiceKey.js";
|
|
6
|
+
import { normalizeKey } from "./normalizeKey.js";
|
|
7
|
+
function modelMatchesLane(entry, lane) {
|
|
8
|
+
if (!lane || lane === "text") {
|
|
9
|
+
const output = entry.openrouter.modalities?.output ?? entry.modalities?.output;
|
|
10
|
+
if (output && !output.includes("text")) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
if (lane === "image") {
|
|
16
|
+
const input = entry.openrouter.modalities?.input ?? entry.modalities?.input ?? [];
|
|
17
|
+
return input.some((m) => /image/i.test(m));
|
|
18
|
+
}
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
function modelMatchesSearch(entry, search) {
|
|
22
|
+
const trimmed = search.trim().toLowerCase();
|
|
23
|
+
if (!trimmed)
|
|
24
|
+
return true;
|
|
25
|
+
const haystack = [
|
|
26
|
+
entry.openrouter.modelId,
|
|
27
|
+
entry.direct.modelId,
|
|
28
|
+
entry.displayName ?? "",
|
|
29
|
+
entry.family ?? "",
|
|
30
|
+
entry.modelFamily ?? "",
|
|
31
|
+
...(entry.tags ?? []),
|
|
32
|
+
]
|
|
33
|
+
.join(" ")
|
|
34
|
+
.toLowerCase();
|
|
35
|
+
return haystack.includes(trimmed);
|
|
36
|
+
}
|
|
37
|
+
function modelMatchesTags(entry, tags, mode) {
|
|
38
|
+
if (tags.length === 0)
|
|
39
|
+
return true;
|
|
40
|
+
const { matchedTags, score } = scoreTagOverlap(entry.tags, tags);
|
|
41
|
+
if (mode === "all") {
|
|
42
|
+
return matchedTags.length === tags.length;
|
|
43
|
+
}
|
|
44
|
+
return score > 0;
|
|
45
|
+
}
|
|
46
|
+
function entryModalities(entry) {
|
|
47
|
+
return {
|
|
48
|
+
input: entry.openrouter.modalities?.input ?? entry.modalities?.input ?? [],
|
|
49
|
+
output: entry.openrouter.modalities?.output ?? entry.modalities?.output ?? [],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function entryCapabilities(entry) {
|
|
53
|
+
return entry.openrouter.capabilities ?? {};
|
|
54
|
+
}
|
|
55
|
+
function entryStatus(entry) {
|
|
56
|
+
return entry.status ?? entry.openrouter.status;
|
|
57
|
+
}
|
|
58
|
+
function modelMatchesProvider(entry, provider) {
|
|
59
|
+
if (!provider)
|
|
60
|
+
return true;
|
|
61
|
+
const want = normalizeKey(provider);
|
|
62
|
+
if (!want)
|
|
63
|
+
return true;
|
|
64
|
+
if (normalizeKey(entry.direct.provider) === want)
|
|
65
|
+
return true;
|
|
66
|
+
if (entry.direct.vendorNamespace &&
|
|
67
|
+
normalizeKey(entry.direct.vendorNamespace) === want) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
const orId = normalizeKey(entry.openrouter.modelId);
|
|
71
|
+
if (orId === want || orId.startsWith(`${want}/`))
|
|
72
|
+
return true;
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
function modelMatchesStatus(entry, status) {
|
|
76
|
+
if (!status)
|
|
77
|
+
return true;
|
|
78
|
+
const want = normalizeKey(status);
|
|
79
|
+
if (!want)
|
|
80
|
+
return true;
|
|
81
|
+
const actual = entryStatus(entry);
|
|
82
|
+
return actual !== undefined && normalizeKey(actual) === want;
|
|
83
|
+
}
|
|
84
|
+
function modelMatchesModality(values, required) {
|
|
85
|
+
if (!required)
|
|
86
|
+
return true;
|
|
87
|
+
const want = normalizeKey(required);
|
|
88
|
+
if (!want)
|
|
89
|
+
return true;
|
|
90
|
+
return values.some((m) => normalizeKey(m) === want);
|
|
91
|
+
}
|
|
92
|
+
function modelMatchesCapabilityFlag(actual, required) {
|
|
93
|
+
if (required === undefined)
|
|
94
|
+
return true;
|
|
95
|
+
return Boolean(actual) === required;
|
|
96
|
+
}
|
|
97
|
+
function buildProfileChoiceIndex(profiles) {
|
|
98
|
+
const index = new Map();
|
|
99
|
+
const add = (key, profileChoice) => {
|
|
100
|
+
const k = key.trim().toLowerCase();
|
|
101
|
+
if (!k)
|
|
102
|
+
return;
|
|
103
|
+
const list = index.get(k) ?? [];
|
|
104
|
+
if (!list.includes(profileChoice)) {
|
|
105
|
+
list.push(profileChoice);
|
|
106
|
+
}
|
|
107
|
+
index.set(k, list);
|
|
108
|
+
};
|
|
109
|
+
for (const [profileKey, profile] of Object.entries(profiles)) {
|
|
110
|
+
if (!profileIncludedInTagPool(profile, { includeDiscovery: false })) {
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
for (const [choiceKey, choice] of Object.entries(profile.choices ?? {})) {
|
|
114
|
+
const composite = formatProfileChoiceKey(profileKey, choiceKey);
|
|
115
|
+
add(`${choice.provider}/${choice.modelId}`, composite);
|
|
116
|
+
add(choice.modelId, composite);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return index;
|
|
120
|
+
}
|
|
121
|
+
function profileChoicesForEntry(entry, index) {
|
|
122
|
+
const keys = [
|
|
123
|
+
entry.openrouter.modelId,
|
|
124
|
+
entry.openrouter.canonicalSlug,
|
|
125
|
+
`${entry.direct.provider}/${entry.direct.modelId}`,
|
|
126
|
+
entry.direct.modelId,
|
|
127
|
+
].filter((k) => typeof k === "string" && k.length > 0);
|
|
128
|
+
const out = [];
|
|
129
|
+
for (const key of keys) {
|
|
130
|
+
for (const hit of index.get(key.toLowerCase()) ?? []) {
|
|
131
|
+
if (!out.includes(hit))
|
|
132
|
+
out.push(hit);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return out.sort();
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* List catalog models, optionally filtered/ranked by tags and catalog attributes.
|
|
139
|
+
* Empty match → `[]` (does not throw).
|
|
140
|
+
*/
|
|
141
|
+
export async function listAICatalogModels(options = {}) {
|
|
142
|
+
const [{ catalog }, { registry }] = await Promise.all([
|
|
143
|
+
loadModelsCatalogWithWarnings({
|
|
144
|
+
source: options.source,
|
|
145
|
+
refresh: options.refresh,
|
|
146
|
+
}),
|
|
147
|
+
loadAIProfilesRegistryWithWarnings({
|
|
148
|
+
source: options.source,
|
|
149
|
+
refresh: options.refresh,
|
|
150
|
+
}),
|
|
151
|
+
]);
|
|
152
|
+
const requestedTags = resolveAIProfileTagTokens((options.tags ?? []).map(String));
|
|
153
|
+
const tagMatch = options.tagMatch ?? "any";
|
|
154
|
+
const choiceIndex = buildProfileChoiceIndex(registry.profiles);
|
|
155
|
+
const matched = [];
|
|
156
|
+
for (const entry of catalog.models) {
|
|
157
|
+
if (!modelMatchesLane(entry, options.catalogLane)) {
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
if (options.search && !modelMatchesSearch(entry, options.search)) {
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
if (!modelMatchesTags(entry, requestedTags, tagMatch)) {
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
if (!modelMatchesProvider(entry, options.provider)) {
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
if (!modelMatchesStatus(entry, options.status)) {
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
const modalities = entryModalities(entry);
|
|
173
|
+
if (!modelMatchesModality(modalities.input, options.inputModality)) {
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
if (!modelMatchesModality(modalities.output, options.outputModality)) {
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
const caps = entryCapabilities(entry);
|
|
180
|
+
if (!modelMatchesCapabilityFlag(caps.toolCalling, options.supportsTools)) {
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
if (!modelMatchesCapabilityFlag(caps.reasoning, options.supportsReasoning)) {
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
const scored = requestedTags.length > 0
|
|
187
|
+
? scoreTagOverlap(entry.tags, requestedTags)
|
|
188
|
+
: { score: 0, matchedTags: [], coverageRatio: 0 };
|
|
189
|
+
matched.push({
|
|
190
|
+
openRouterModelId: entry.openrouter.modelId,
|
|
191
|
+
provider: entry.direct.provider,
|
|
192
|
+
modelId: entry.direct.modelId,
|
|
193
|
+
displayName: entry.displayName,
|
|
194
|
+
tags: entry.tags ?? [],
|
|
195
|
+
modelFamily: entry.modelFamily,
|
|
196
|
+
status: entryStatus(entry),
|
|
197
|
+
profileChoices: profileChoicesForEntry(entry, choiceIndex),
|
|
198
|
+
...(requestedTags.length > 0
|
|
199
|
+
? { score: scored.score, matchedTags: scored.matchedTags }
|
|
200
|
+
: {}),
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
if (requestedTags.length > 0) {
|
|
204
|
+
matched.sort((a, b) => {
|
|
205
|
+
const aScore = a.score ?? 0;
|
|
206
|
+
const bScore = b.score ?? 0;
|
|
207
|
+
if (bScore !== aScore)
|
|
208
|
+
return bScore - aScore;
|
|
209
|
+
const aCov = requestedTags.length > 0
|
|
210
|
+
? (a.matchedTags?.length ?? 0) / requestedTags.length
|
|
211
|
+
: 0;
|
|
212
|
+
const bCov = requestedTags.length > 0
|
|
213
|
+
? (b.matchedTags?.length ?? 0) / requestedTags.length
|
|
214
|
+
: 0;
|
|
215
|
+
if (bCov !== aCov)
|
|
216
|
+
return bCov - aCov;
|
|
217
|
+
const aLen = a.tags.length;
|
|
218
|
+
const bLen = b.tags.length;
|
|
219
|
+
if (aLen !== bLen)
|
|
220
|
+
return aLen - bLen;
|
|
221
|
+
return a.openRouterModelId.localeCompare(b.openRouterModelId);
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
matched.sort((a, b) => a.openRouterModelId.localeCompare(b.openRouterModelId));
|
|
226
|
+
}
|
|
227
|
+
return matched;
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=listAICatalogModels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listAICatalogModels.js","sourceRoot":"","sources":["../src/listAICatalogModels.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listAIProfiles.d.ts","sourceRoot":"","sources":["../src/listAIProfiles.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE1E;;;GAGG;AACH,wBAAsB,cAAc,CAClC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,gBAAgB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"listAIProfiles.d.ts","sourceRoot":"","sources":["../src/listAIProfiles.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE1E;;;GAGG;AACH,wBAAsB,cAAc,CAClC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA4G7B"}
|
package/dist/listAIProfiles.js
CHANGED
|
@@ -39,6 +39,7 @@ export async function listAIProfiles(options = {}) {
|
|
|
39
39
|
tags: requestedTags.length > 0 ? requestedTags : undefined,
|
|
40
40
|
tagMatch: options.tagMatch,
|
|
41
41
|
search: options.search,
|
|
42
|
+
includeDiscovery: options.includeDiscovery,
|
|
42
43
|
})) {
|
|
43
44
|
return false;
|
|
44
45
|
}
|
|
@@ -60,10 +61,13 @@ export async function listAIProfiles(options = {}) {
|
|
|
60
61
|
});
|
|
61
62
|
if (requestedTags.length > 0) {
|
|
62
63
|
filtered.sort((a, b) => {
|
|
63
|
-
const
|
|
64
|
-
const
|
|
65
|
-
if (
|
|
66
|
-
return
|
|
64
|
+
const aResult = scoreProfileTags(a, requestedTags);
|
|
65
|
+
const bResult = scoreProfileTags(b, requestedTags);
|
|
66
|
+
if (bResult.score !== aResult.score) {
|
|
67
|
+
return bResult.score - aResult.score;
|
|
68
|
+
}
|
|
69
|
+
if (bResult.coverageRatio !== aResult.coverageRatio) {
|
|
70
|
+
return bResult.coverageRatio - aResult.coverageRatio;
|
|
67
71
|
}
|
|
68
72
|
const aLen = a.tags?.length ?? 0;
|
|
69
73
|
const bLen = b.tags?.length ?? 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listAIProfiles.js","sourceRoot":"","sources":["../src/listAIProfiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAAE,MAAM,oCAAoC,CAAC;AACxF,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EACL,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AAGvE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAiC,EAAE;IAEnC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,kCAAkC,CAAC;QAC5D,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;IAEH,MAAM,YAAY,GAChB,OAAO,CAAC,gBAAgB,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC;IACxE,MAAM,OAAO,GAAG,YAAY;QAC1B,CAAC,CAAC,CACE,MAAM,6BAA6B,CAAC;YAClC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CACH,CAAC,OAAO;QACX,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,aAAa,GAAG,yBAAyB,CAC7C,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CACjC,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QACnE,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YAClE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,OAAO,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC9D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IACE,OAAO,CAAC,WAAW;YACnB,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,EACxD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IACE,CAAC,uBAAuB,CAAC,OAAO,EAAE;YAChC,IAAI,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;YAC1D,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"listAIProfiles.js","sourceRoot":"","sources":["../src/listAIProfiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modelsCatalog.d.ts","sourceRoot":"","sources":["../src/modelsCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,kBAAkB,EAIlB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAe5D;AAwBD,kFAAkF;AAClF,eAAO,MAAM,yBAAyB,wDAA4B,CAAC;AAEnE,4FAA4F;AAC5F,eAAO,MAAM,oCAAoC,gEACc,CAAC;AAEhE,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,eAAO,MAAM,qBAAqB,EAAG,iCAA0C,CAAC;AAgBhF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAMF,yGAAyG;AACzG,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,kBAAkB,CAgCpB;
|
|
1
|
+
{"version":3,"file":"modelsCatalog.d.ts","sourceRoot":"","sources":["../src/modelsCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,kBAAkB,EAIlB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAe5D;AAwBD,kFAAkF;AAClF,eAAO,MAAM,yBAAyB,wDAA4B,CAAC;AAEnE,4FAA4F;AAC5F,eAAO,MAAM,oCAAoC,gEACc,CAAC;AAEhE,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,eAAO,MAAM,qBAAqB,EAAG,iCAA0C,CAAC;AAgBhF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAMF,yGAAyG;AACzG,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,kBAAkB,CAgCpB;AAwID,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,iBAAiB,CAmDtE;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,iBAAiB,GACzB,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CA2CjC;AAED,sDAAsD;AACtD,eAAO,MAAM,2BAA2B,gCAA0B,CAAC"}
|
package/dist/modelsCatalog.js
CHANGED
|
@@ -111,6 +111,7 @@ function legacyEntryToCatalogModel(entry) {
|
|
|
111
111
|
maxCompletionTokens: entry.maxCompletionTokens,
|
|
112
112
|
knowledgeCutoff: entry.knowledgeCutoff,
|
|
113
113
|
releasedAt: entry.releasedAt,
|
|
114
|
+
...(Array.isArray(entry.tags) ? { tags: entry.tags } : {}),
|
|
114
115
|
};
|
|
115
116
|
}
|
|
116
117
|
function upgradeCatalogEntry(raw) {
|
|
@@ -150,6 +151,9 @@ function upgradeCatalogEntry(raw) {
|
|
|
150
151
|
if (!direct || direct.provider === "openrouter") {
|
|
151
152
|
direct = parseDirectFromOpenRouterSlug(openrouter.modelId, raw.family);
|
|
152
153
|
}
|
|
154
|
+
const tags = Array.isArray(raw.tags)
|
|
155
|
+
? raw.tags
|
|
156
|
+
: undefined;
|
|
153
157
|
return {
|
|
154
158
|
direct,
|
|
155
159
|
openrouter,
|
|
@@ -162,6 +166,7 @@ function upgradeCatalogEntry(raw) {
|
|
|
162
166
|
maxCompletionTokens: raw.maxCompletionTokens,
|
|
163
167
|
knowledgeCutoff: raw.knowledgeCutoff,
|
|
164
168
|
releasedAt: raw.releasedAt,
|
|
169
|
+
...(tags ? { tags } : {}),
|
|
165
170
|
};
|
|
166
171
|
}
|
|
167
172
|
/** Normalize legacy OpenRouter-only catalog or pass through unified catalog. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modelsCatalog.js","sourceRoot":"","sources":["../src/modelsCatalog.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"modelsCatalog.js","sourceRoot":"","sources":["../src/modelsCatalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,17 +5,37 @@ export interface ProfileTagScore {
|
|
|
5
5
|
profile: AIProfileDefinition;
|
|
6
6
|
score: number;
|
|
7
7
|
matchedTags: AIProfileTag[];
|
|
8
|
+
coverageRatio: number;
|
|
8
9
|
}
|
|
10
|
+
export interface TagScoreResult {
|
|
11
|
+
score: number;
|
|
12
|
+
matchedTags: AIProfileTag[];
|
|
13
|
+
/** Matched weight / total requested weight (0–1). */
|
|
14
|
+
coverageRatio: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Weighted overlap of requested tags against a candidate tag list.
|
|
18
|
+
* Weights: domain/task 3, capability 2, tier/vendor 1, `wf` 0.25.
|
|
19
|
+
*/
|
|
20
|
+
export declare function scoreTagOverlap(candidateTags: readonly AIProfileTag[] | undefined, tags: readonly AIProfileTag[]): TagScoreResult;
|
|
9
21
|
/**
|
|
10
|
-
*
|
|
22
|
+
* Weighted score of requested tags present on the profile.
|
|
11
23
|
*/
|
|
12
|
-
export declare function scoreProfileTags(profile: AIProfileDefinition, tags: AIProfileTag[]):
|
|
24
|
+
export declare function scoreProfileTags(profile: AIProfileDefinition, tags: AIProfileTag[]): TagScoreResult;
|
|
25
|
+
declare function compareTagScores(a: {
|
|
13
26
|
score: number;
|
|
14
|
-
|
|
15
|
-
|
|
27
|
+
coverageRatio: number;
|
|
28
|
+
tagCount: number;
|
|
29
|
+
key: string;
|
|
30
|
+
}, b: {
|
|
31
|
+
score: number;
|
|
32
|
+
coverageRatio: number;
|
|
33
|
+
tagCount: number;
|
|
34
|
+
key: string;
|
|
35
|
+
}): number;
|
|
16
36
|
/**
|
|
17
|
-
* Rank profiles by tag
|
|
18
|
-
* Tie-break: fewer total
|
|
37
|
+
* Rank profiles by weighted tag score (highest first).
|
|
38
|
+
* Tie-break: coverage ratio → fewer total tags → profile key lex.
|
|
19
39
|
*/
|
|
20
40
|
export declare function rankProfilesByTags(profiles: Record<string, AIProfileDefinition>, tags: AIProfileTag[]): ProfileTagScore[];
|
|
21
41
|
/**
|
|
@@ -31,13 +51,25 @@ export declare function profileMatchesTags(profile: AIProfileDefinition, tags: A
|
|
|
31
51
|
* Free-text discovery across profile metadata, tags, and choice labels.
|
|
32
52
|
*/
|
|
33
53
|
export declare function profileMatchesSearch(profile: AIProfileDefinition, search: string): boolean;
|
|
54
|
+
/** True for vendor-family / catalog discovery profiles. */
|
|
55
|
+
export declare function isDiscoveryProfile(profile: AIProfileDefinition): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Whether a profile belongs in the default tag list/resolve pool.
|
|
58
|
+
* Discovery/vendor profiles are excluded unless `includeDiscovery` or tags include `vnd`.
|
|
59
|
+
*/
|
|
60
|
+
export declare function profileIncludedInTagPool(profile: AIProfileDefinition, options?: {
|
|
61
|
+
includeDiscovery?: boolean;
|
|
62
|
+
tags?: readonly AIProfileTag[];
|
|
63
|
+
}): boolean;
|
|
34
64
|
export declare function profileMatchesDiscovery(profile: AIProfileDefinition, options: {
|
|
35
65
|
tags?: AIProfileTag[];
|
|
36
66
|
tagMatch?: ProfileTagMatchMode;
|
|
37
67
|
search?: string;
|
|
68
|
+
includeDiscovery?: boolean;
|
|
38
69
|
}): boolean;
|
|
39
70
|
/** Collect every tag used across profiles (sorted). */
|
|
40
71
|
export declare function collectProfileTags(profiles: Record<string, AIProfileDefinition>): AIProfileTag[];
|
|
41
72
|
/** Stable signature for a profile tag set (sorted, comma-joined). */
|
|
42
73
|
export declare function profileTagSetSignature(tags: AIProfileTag[]): string;
|
|
74
|
+
export { compareTagScores };
|
|
43
75
|
//# sourceMappingURL=profileDiscovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profileDiscovery.d.ts","sourceRoot":"","sources":["../src/profileDiscovery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,YAAY,EAAE,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"profileDiscovery.d.ts","sourceRoot":"","sources":["../src/profileDiscovery.ts"],"names":[],"mappings":"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"}
|
package/dist/profileDiscovery.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { normalizeKey } from "./normalizeKey.js";
|
|
2
|
-
import { getAIProfileTag } from "./profileTags.js";
|
|
2
|
+
import { getAIProfileTag, getAIProfileTagWeight } from "./profileTags.js";
|
|
3
3
|
function tokenizeSearch(value) {
|
|
4
4
|
return normalizeKey(value)
|
|
5
5
|
.split(/[^a-z0-9]+/g)
|
|
@@ -34,39 +34,61 @@ function profileSearchHaystack(profile) {
|
|
|
34
34
|
.join(" ");
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
|
-
*
|
|
37
|
+
* Weighted overlap of requested tags against a candidate tag list.
|
|
38
|
+
* Weights: domain/task 3, capability 2, tier/vendor 1, `wf` 0.25.
|
|
38
39
|
*/
|
|
39
|
-
export function
|
|
40
|
+
export function scoreTagOverlap(candidateTags, tags) {
|
|
40
41
|
if (tags.length === 0) {
|
|
41
|
-
return { score: 0, matchedTags: [] };
|
|
42
|
+
return { score: 0, matchedTags: [], coverageRatio: 0 };
|
|
42
43
|
}
|
|
43
|
-
const
|
|
44
|
-
const matchedTags = tags.filter((tag) =>
|
|
45
|
-
|
|
44
|
+
const candidateSet = new Set(candidateTags ?? []);
|
|
45
|
+
const matchedTags = tags.filter((tag) => candidateSet.has(tag));
|
|
46
|
+
const score = matchedTags.reduce((sum, tag) => sum + getAIProfileTagWeight(tag), 0);
|
|
47
|
+
const requestWeight = tags.reduce((sum, tag) => sum + getAIProfileTagWeight(tag), 0);
|
|
48
|
+
const coverageRatio = requestWeight > 0 ? score / requestWeight : 0;
|
|
49
|
+
return { score, matchedTags, coverageRatio };
|
|
46
50
|
}
|
|
47
51
|
/**
|
|
48
|
-
*
|
|
49
|
-
|
|
52
|
+
* Weighted score of requested tags present on the profile.
|
|
53
|
+
*/
|
|
54
|
+
export function scoreProfileTags(profile, tags) {
|
|
55
|
+
return scoreTagOverlap(profile.tags, tags);
|
|
56
|
+
}
|
|
57
|
+
function compareTagScores(a, b) {
|
|
58
|
+
if (b.score !== a.score) {
|
|
59
|
+
return b.score - a.score;
|
|
60
|
+
}
|
|
61
|
+
if (b.coverageRatio !== a.coverageRatio) {
|
|
62
|
+
return b.coverageRatio - a.coverageRatio;
|
|
63
|
+
}
|
|
64
|
+
if (a.tagCount !== b.tagCount) {
|
|
65
|
+
return a.tagCount - b.tagCount;
|
|
66
|
+
}
|
|
67
|
+
return a.key.localeCompare(b.key);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Rank profiles by weighted tag score (highest first).
|
|
71
|
+
* Tie-break: coverage ratio → fewer total tags → profile key lex.
|
|
50
72
|
*/
|
|
51
73
|
export function rankProfilesByTags(profiles, tags) {
|
|
52
74
|
const ranked = [];
|
|
53
75
|
for (const [profileKey, profile] of Object.entries(profiles)) {
|
|
54
|
-
const { score, matchedTags } = scoreProfileTags(profile, tags);
|
|
76
|
+
const { score, matchedTags, coverageRatio } = scoreProfileTags(profile, tags);
|
|
55
77
|
if (score > 0) {
|
|
56
|
-
ranked.push({ profileKey, profile, score, matchedTags });
|
|
78
|
+
ranked.push({ profileKey, profile, score, matchedTags, coverageRatio });
|
|
57
79
|
}
|
|
58
80
|
}
|
|
59
|
-
ranked.sort((a, b) => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
});
|
|
81
|
+
ranked.sort((a, b) => compareTagScores({
|
|
82
|
+
score: a.score,
|
|
83
|
+
coverageRatio: a.coverageRatio,
|
|
84
|
+
tagCount: a.profile.tags?.length ?? 0,
|
|
85
|
+
key: a.profileKey,
|
|
86
|
+
}, {
|
|
87
|
+
score: b.score,
|
|
88
|
+
coverageRatio: b.coverageRatio,
|
|
89
|
+
tagCount: b.profile.tags?.length ?? 0,
|
|
90
|
+
key: b.profileKey,
|
|
91
|
+
}));
|
|
70
92
|
return ranked;
|
|
71
93
|
}
|
|
72
94
|
/**
|
|
@@ -110,7 +132,32 @@ export function profileMatchesSearch(profile, search) {
|
|
|
110
132
|
}
|
|
111
133
|
return tokens.every((token) => haystack.includes(token));
|
|
112
134
|
}
|
|
135
|
+
/** True for vendor-family / catalog discovery profiles. */
|
|
136
|
+
export function isDiscoveryProfile(profile) {
|
|
137
|
+
return profile.vendorFamily === true || profile.category === "discovery";
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Whether a profile belongs in the default tag list/resolve pool.
|
|
141
|
+
* Discovery/vendor profiles are excluded unless `includeDiscovery` or tags include `vnd`.
|
|
142
|
+
*/
|
|
143
|
+
export function profileIncludedInTagPool(profile, options = {}) {
|
|
144
|
+
if (options.includeDiscovery) {
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
if (options.tags?.includes("vnd")) {
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
return !isDiscoveryProfile(profile);
|
|
151
|
+
}
|
|
113
152
|
export function profileMatchesDiscovery(profile, options) {
|
|
153
|
+
// Discovery exclusion only applies to tag-filtered pools (not bare list/search).
|
|
154
|
+
if (options.tags?.length &&
|
|
155
|
+
!profileIncludedInTagPool(profile, {
|
|
156
|
+
includeDiscovery: options.includeDiscovery,
|
|
157
|
+
tags: options.tags,
|
|
158
|
+
})) {
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
114
161
|
if (options.tags?.length && !profileMatchesTags(profile, options.tags, options.tagMatch)) {
|
|
115
162
|
return false;
|
|
116
163
|
}
|
|
@@ -133,4 +180,5 @@ export function collectProfileTags(profiles) {
|
|
|
133
180
|
export function profileTagSetSignature(tags) {
|
|
134
181
|
return [...tags].sort().join(",");
|
|
135
182
|
}
|
|
183
|
+
export { compareTagScores };
|
|
136
184
|
//# sourceMappingURL=profileDiscovery.js.map
|