@x12i/ai-profiles 4.1.0 → 4.2.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/README.md +35 -4
- package/dist/data/models-catalog.json +2183 -264
- package/dist/data/models-profiles.json +57 -20
- 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 +12 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/listAICatalogModels.d.ts +30 -0
- package/dist/listAICatalogModels.d.ts.map +1 -0
- package/dist/listAICatalogModels.js +157 -0
- package/dist/listAICatalogModels.js.map +1 -0
- package/dist/listAIProfiles.d.ts +2 -4
- package/dist/listAIProfiles.d.ts.map +1 -1
- package/dist/listAIProfiles.js +13 -10
- package/dist/listAIProfiles.js.map +1 -1
- package/dist/listUsedAIProfileTags.d.ts +13 -0
- package/dist/listUsedAIProfileTags.d.ts.map +1 -0
- package/dist/listUsedAIProfileTags.js +52 -0
- package/dist/listUsedAIProfileTags.js.map +1 -0
- 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 +78 -22
- package/dist/profileDiscovery.js.map +1 -1
- package/dist/profileTags.d.ts +43 -0
- package/dist/profileTags.d.ts.map +1 -0
- package/dist/profileTags.js +355 -0
- package/dist/profileTags.js.map +1 -0
- package/dist/resolveAIProfileByTags.d.ts +13 -3
- package/dist/resolveAIProfileByTags.d.ts.map +1 -1
- package/dist/resolveAIProfileByTags.js +26 -7
- 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/types.d.ts +30 -4
- 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 +10 -13
- package/dist/validation/validateModelsProfilesJson.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profileDiscovery.js","sourceRoot":"","sources":["../src/profileDiscovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"profileDiscovery.js","sourceRoot":"","sources":["../src/profileDiscovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { AIProfileTag } from "./types.js";
|
|
2
|
+
/** High-level grouping for tag pickers / docs. */
|
|
3
|
+
export type AIProfileTagCategory = "tier" | "capability" | "domain" | "task" | "modality" | "deployment" | "vendor";
|
|
4
|
+
export interface AIProfileTagInfo {
|
|
5
|
+
/** Short discovery code (2–6 chars). */
|
|
6
|
+
id: AIProfileTag;
|
|
7
|
+
/** Human label for UI pickers. */
|
|
8
|
+
label: string;
|
|
9
|
+
/** Grouping for filters and glossaries. */
|
|
10
|
+
category: AIProfileTagCategory;
|
|
11
|
+
/** What the tag means / what a profile is good for. */
|
|
12
|
+
description: string;
|
|
13
|
+
/** Optional longer aliases that map to this tag in free-text search. */
|
|
14
|
+
aliases?: string[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Canonical glossary for every {@link AIProfileTag}.
|
|
18
|
+
* Keep in sync with the JSON schema enum and `AIProfileTag` union.
|
|
19
|
+
*/
|
|
20
|
+
export declare const AI_PROFILE_TAG_GLOSSARY: readonly AIProfileTagInfo[];
|
|
21
|
+
/** Every allowed short tag id (sorted). */
|
|
22
|
+
export declare const AI_PROFILE_TAGS: readonly AIProfileTag[];
|
|
23
|
+
export declare function isAIProfileTag(value: string): value is AIProfileTag;
|
|
24
|
+
export declare function getAIProfileTag(id: string): AIProfileTagInfo | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Discovery ranking weight for a tag.
|
|
27
|
+
* Domain/task: 3 · capability: 2 · tier/vendor/deployment/modality: 1 · `wf`: 0.25
|
|
28
|
+
*/
|
|
29
|
+
export declare function getAIProfileTagWeight(tag: AIProfileTag): number;
|
|
30
|
+
export interface ListAIProfileTagsOptions {
|
|
31
|
+
/** Restrict to one or more glossary categories. */
|
|
32
|
+
category?: AIProfileTagCategory | AIProfileTagCategory[];
|
|
33
|
+
/** Free-text filter across id, label, description, and aliases. */
|
|
34
|
+
search?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* List all allowed filter tags (optionally by category / search).
|
|
38
|
+
* For tags present in the loaded registry, use {@link listUsedAIProfileTags}.
|
|
39
|
+
*/
|
|
40
|
+
export declare function listAIProfileTags(options?: ListAIProfileTagsOptions): AIProfileTagInfo[];
|
|
41
|
+
/** Resolve free-text / alias tokens into known short tags (deduped, order preserved). */
|
|
42
|
+
export declare function resolveAIProfileTagTokens(tokens: string[]): AIProfileTag[];
|
|
43
|
+
//# sourceMappingURL=profileTags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profileTags.d.ts","sourceRoot":"","sources":["../src/profileTags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,kDAAkD;AAClD,MAAM,MAAM,oBAAoB,GAC5B,MAAM,GACN,YAAY,GACZ,QAAQ,GACR,MAAM,GACN,UAAU,GACV,YAAY,GACZ,QAAQ,CAAC;AAEb,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,EAAE,EAAE,YAAY,CAAC;IACjB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,gBAAgB,EA6PrD,CAAC;AAMX,2CAA2C;AAC3C,eAAO,MAAM,eAAe,EAAE,SAAS,YAAY,EAEzB,CAAC;AAI3B,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAEnE;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAKxE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAqB/D;AAED,MAAM,WAAW,wBAAwB;IACvC,mDAAmD;IACnD,QAAQ,CAAC,EAAE,oBAAoB,GAAG,oBAAoB,EAAE,CAAC;IACzD,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,wBAA6B,GACrC,gBAAgB,EAAE,CAwBpB;AAED,yFAAyF;AACzF,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAgC1E"}
|
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical glossary for every {@link AIProfileTag}.
|
|
3
|
+
* Keep in sync with the JSON schema enum and `AIProfileTag` union.
|
|
4
|
+
*/
|
|
5
|
+
export const AI_PROFILE_TAG_GLOSSARY = [
|
|
6
|
+
{
|
|
7
|
+
id: "flg",
|
|
8
|
+
label: "Flagship",
|
|
9
|
+
category: "tier",
|
|
10
|
+
description: "Top-tier / premium model quality for critical work.",
|
|
11
|
+
aliases: ["flagship", "premium", "top"],
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
id: "eco",
|
|
15
|
+
label: "Economic",
|
|
16
|
+
category: "tier",
|
|
17
|
+
description: "Cost-sensitive workloads; prefer cheap or high volume.",
|
|
18
|
+
aliases: ["economic", "budget", "cheap", "cost"],
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: "pro",
|
|
22
|
+
label: "Pro",
|
|
23
|
+
category: "tier",
|
|
24
|
+
description: "Professional-grade quality above everyday defaults.",
|
|
25
|
+
aliases: ["professional"],
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: "exp",
|
|
29
|
+
label: "Expert",
|
|
30
|
+
category: "tier",
|
|
31
|
+
description: "Expert / high-skill reasoning and specialized analysis.",
|
|
32
|
+
aliases: ["expert", "advanced"],
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: "spd",
|
|
36
|
+
label: "Speed",
|
|
37
|
+
category: "tier",
|
|
38
|
+
description: "Latency- and throughput-sensitive; fast responses.",
|
|
39
|
+
aliases: ["speed", "fast", "latency", "throughput"],
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
id: "agt",
|
|
43
|
+
label: "Agentic",
|
|
44
|
+
category: "capability",
|
|
45
|
+
description: "Tool-using agents, multi-step loops, and orchestration.",
|
|
46
|
+
aliases: ["agent", "agentic", "tools", "tool-use"],
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: "rsn",
|
|
50
|
+
label: "Reasoning",
|
|
51
|
+
category: "capability",
|
|
52
|
+
description: "Deep reasoning, planning, and hard problem solving.",
|
|
53
|
+
aliases: ["reasoning", "think", "chain-of-thought"],
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
id: "anl",
|
|
57
|
+
label: "Analysis",
|
|
58
|
+
category: "capability",
|
|
59
|
+
description: "Analytical breakdown, comparison, and synthesis.",
|
|
60
|
+
aliases: ["analysis", "analytical"],
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: "str",
|
|
64
|
+
label: "Structured",
|
|
65
|
+
category: "capability",
|
|
66
|
+
description: "Structured outputs and schema-friendly responses.",
|
|
67
|
+
aliases: ["structured", "schema"],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
id: "json",
|
|
71
|
+
label: "JSON",
|
|
72
|
+
category: "capability",
|
|
73
|
+
description: "JSON / JSON-schema oriented extraction and formatting.",
|
|
74
|
+
aliases: ["json-schema"],
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
id: "cod",
|
|
78
|
+
label: "Coding",
|
|
79
|
+
category: "domain",
|
|
80
|
+
description: "Software engineering, code generation, and debugging.",
|
|
81
|
+
aliases: ["code", "coding", "programming", "software"],
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: "eng",
|
|
85
|
+
label: "Engineering",
|
|
86
|
+
category: "domain",
|
|
87
|
+
description: "Broader engineering workflows and technical design.",
|
|
88
|
+
aliases: ["engineering"],
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: "sec",
|
|
92
|
+
label: "Security",
|
|
93
|
+
category: "domain",
|
|
94
|
+
description: "Security review, hardening, and threat awareness.",
|
|
95
|
+
aliases: ["security", "secure"],
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
id: "cyb",
|
|
99
|
+
label: "Cyber",
|
|
100
|
+
category: "domain",
|
|
101
|
+
description: "Cybersecurity, offense/defense, and SOC-style work.",
|
|
102
|
+
aliases: ["cyber", "cybersecurity"],
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
id: "for",
|
|
106
|
+
label: "Forensics",
|
|
107
|
+
category: "domain",
|
|
108
|
+
description: "Incident forensics, evidence review, timeline reconstruction.",
|
|
109
|
+
aliases: ["forensics", "incident"],
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
id: "aud",
|
|
113
|
+
label: "Audit",
|
|
114
|
+
category: "domain",
|
|
115
|
+
description: "Audits, compliance-oriented review, and verification.",
|
|
116
|
+
aliases: ["audit", "compliance"],
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
id: "res",
|
|
120
|
+
label: "Research",
|
|
121
|
+
category: "domain",
|
|
122
|
+
description: "Open-ended research, literature-style synthesis, exploration.",
|
|
123
|
+
aliases: ["research"],
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
id: "cre",
|
|
127
|
+
label: "Creative",
|
|
128
|
+
category: "domain",
|
|
129
|
+
description: "Creative ideation and generative writing tasks.",
|
|
130
|
+
aliases: ["creative", "creativity"],
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
id: "wrt",
|
|
134
|
+
label: "Writing",
|
|
135
|
+
category: "domain",
|
|
136
|
+
description: "Long-form writing, editing, and brand voice.",
|
|
137
|
+
aliases: ["writing", "copywriting", "content"],
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
id: "xtr",
|
|
141
|
+
label: "Extraction",
|
|
142
|
+
category: "task",
|
|
143
|
+
description: "Information extraction from documents or text.",
|
|
144
|
+
aliases: ["extraction", "extract"],
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
id: "cls",
|
|
148
|
+
label: "Classification",
|
|
149
|
+
category: "task",
|
|
150
|
+
description: "Labeling, routing classes, and taxonomy assignment.",
|
|
151
|
+
aliases: ["classification", "classify", "label"],
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
id: "rte",
|
|
155
|
+
label: "Routing",
|
|
156
|
+
category: "task",
|
|
157
|
+
description: "Model/task routing and dispatcher-style decisions.",
|
|
158
|
+
aliases: ["routing", "route", "dispatch"],
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
id: "tri",
|
|
162
|
+
label: "Triage",
|
|
163
|
+
category: "task",
|
|
164
|
+
description: "Quick triage of incoming work into buckets.",
|
|
165
|
+
aliases: ["triage"],
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
id: "wf",
|
|
169
|
+
label: "Workflow",
|
|
170
|
+
category: "task",
|
|
171
|
+
description: "Pipeline / high-volume workflow automation.",
|
|
172
|
+
aliases: ["workflow", "pipeline", "automation"],
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
id: "bat",
|
|
176
|
+
label: "Batch",
|
|
177
|
+
category: "task",
|
|
178
|
+
description: "Batch / offline bulk processing.",
|
|
179
|
+
aliases: ["batch", "bulk", "offline"],
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
id: "rev",
|
|
183
|
+
label: "Review",
|
|
184
|
+
category: "task",
|
|
185
|
+
description: "Review, critique, and secondary-pass verification.",
|
|
186
|
+
aliases: ["review", "critique"],
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
id: "sum",
|
|
190
|
+
label: "Summarization",
|
|
191
|
+
category: "task",
|
|
192
|
+
description: "Summaries, digests, and condensation.",
|
|
193
|
+
aliases: ["summarization", "summary", "summarize"],
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
id: "vis",
|
|
197
|
+
label: "Vision",
|
|
198
|
+
category: "modality",
|
|
199
|
+
description: "Image / multimodal vision input workloads.",
|
|
200
|
+
aliases: ["vision", "image", "multimodal"],
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
id: "loc",
|
|
204
|
+
label: "Local",
|
|
205
|
+
category: "deployment",
|
|
206
|
+
description: "On-device / local CPU inference (no cloud LLM).",
|
|
207
|
+
aliases: ["local", "cpu", "on-device", "self-hosted"],
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
id: "vnd",
|
|
211
|
+
label: "Vendor",
|
|
212
|
+
category: "deployment",
|
|
213
|
+
description: "Vendor-family discovery profile (openai/claude/…). ",
|
|
214
|
+
aliases: ["vendor", "provider", "family"],
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
id: "ds",
|
|
218
|
+
label: "DeepSeek",
|
|
219
|
+
category: "vendor",
|
|
220
|
+
description: "DeepSeek-oriented routing preference.",
|
|
221
|
+
aliases: ["deepseek"],
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
id: "ggl",
|
|
225
|
+
label: "Google",
|
|
226
|
+
category: "vendor",
|
|
227
|
+
description: "Google / Gemini-oriented routing preference.",
|
|
228
|
+
aliases: ["google", "gemini", "gemma"],
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
id: "xai",
|
|
232
|
+
label: "xAI",
|
|
233
|
+
category: "vendor",
|
|
234
|
+
description: "xAI / Grok-oriented routing preference.",
|
|
235
|
+
aliases: ["xai", "grok"],
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
id: "mmx",
|
|
239
|
+
label: "MiniMax",
|
|
240
|
+
category: "vendor",
|
|
241
|
+
description: "MiniMax-oriented routing preference.",
|
|
242
|
+
aliases: ["minimax"],
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
id: "ant",
|
|
246
|
+
label: "Anthropic",
|
|
247
|
+
category: "vendor",
|
|
248
|
+
description: "Anthropic / Claude-oriented routing preference.",
|
|
249
|
+
aliases: ["anthropic", "claude"],
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
id: "oai",
|
|
253
|
+
label: "OpenAI",
|
|
254
|
+
category: "vendor",
|
|
255
|
+
description: "OpenAI-oriented routing preference.",
|
|
256
|
+
aliases: ["openai", "gpt"],
|
|
257
|
+
},
|
|
258
|
+
];
|
|
259
|
+
const TAG_BY_ID = new Map(AI_PROFILE_TAG_GLOSSARY.map((entry) => [entry.id, entry]));
|
|
260
|
+
/** Every allowed short tag id (sorted). */
|
|
261
|
+
export const AI_PROFILE_TAGS = AI_PROFILE_TAG_GLOSSARY.map((entry) => entry.id).sort();
|
|
262
|
+
const TAG_ID_SET = new Set(AI_PROFILE_TAGS);
|
|
263
|
+
export function isAIProfileTag(value) {
|
|
264
|
+
return TAG_ID_SET.has(value);
|
|
265
|
+
}
|
|
266
|
+
export function getAIProfileTag(id) {
|
|
267
|
+
if (!isAIProfileTag(id)) {
|
|
268
|
+
return undefined;
|
|
269
|
+
}
|
|
270
|
+
return TAG_BY_ID.get(id);
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Discovery ranking weight for a tag.
|
|
274
|
+
* Domain/task: 3 · capability: 2 · tier/vendor/deployment/modality: 1 · `wf`: 0.25
|
|
275
|
+
*/
|
|
276
|
+
export function getAIProfileTagWeight(tag) {
|
|
277
|
+
if (tag === "wf") {
|
|
278
|
+
return 0.25;
|
|
279
|
+
}
|
|
280
|
+
const info = TAG_BY_ID.get(tag);
|
|
281
|
+
if (!info) {
|
|
282
|
+
return 1;
|
|
283
|
+
}
|
|
284
|
+
switch (info.category) {
|
|
285
|
+
case "domain":
|
|
286
|
+
case "task":
|
|
287
|
+
return 3;
|
|
288
|
+
case "capability":
|
|
289
|
+
return 2;
|
|
290
|
+
case "tier":
|
|
291
|
+
case "vendor":
|
|
292
|
+
case "deployment":
|
|
293
|
+
case "modality":
|
|
294
|
+
default:
|
|
295
|
+
return 1;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* List all allowed filter tags (optionally by category / search).
|
|
300
|
+
* For tags present in the loaded registry, use {@link listUsedAIProfileTags}.
|
|
301
|
+
*/
|
|
302
|
+
export function listAIProfileTags(options = {}) {
|
|
303
|
+
const categories = options.category
|
|
304
|
+
? new Set(Array.isArray(options.category) ? options.category : [options.category])
|
|
305
|
+
: undefined;
|
|
306
|
+
const search = options.search?.trim().toLowerCase();
|
|
307
|
+
return AI_PROFILE_TAG_GLOSSARY.filter((entry) => {
|
|
308
|
+
if (categories && !categories.has(entry.category)) {
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
if (!search) {
|
|
312
|
+
return true;
|
|
313
|
+
}
|
|
314
|
+
const haystack = [
|
|
315
|
+
entry.id,
|
|
316
|
+
entry.label,
|
|
317
|
+
entry.description,
|
|
318
|
+
entry.category,
|
|
319
|
+
...(entry.aliases ?? []),
|
|
320
|
+
]
|
|
321
|
+
.join(" ")
|
|
322
|
+
.toLowerCase();
|
|
323
|
+
return haystack.includes(search);
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
/** Resolve free-text / alias tokens into known short tags (deduped, order preserved). */
|
|
327
|
+
export function resolveAIProfileTagTokens(tokens) {
|
|
328
|
+
const out = [];
|
|
329
|
+
const seen = new Set();
|
|
330
|
+
for (const raw of tokens) {
|
|
331
|
+
const token = raw.trim().toLowerCase();
|
|
332
|
+
if (!token)
|
|
333
|
+
continue;
|
|
334
|
+
if (isAIProfileTag(token)) {
|
|
335
|
+
if (!seen.has(token)) {
|
|
336
|
+
seen.add(token);
|
|
337
|
+
out.push(token);
|
|
338
|
+
}
|
|
339
|
+
continue;
|
|
340
|
+
}
|
|
341
|
+
for (const entry of AI_PROFILE_TAG_GLOSSARY) {
|
|
342
|
+
const aliases = entry.aliases ?? [];
|
|
343
|
+
if (entry.label.toLowerCase() === token ||
|
|
344
|
+
aliases.some((alias) => alias.toLowerCase() === token)) {
|
|
345
|
+
if (!seen.has(entry.id)) {
|
|
346
|
+
seen.add(entry.id);
|
|
347
|
+
out.push(entry.id);
|
|
348
|
+
}
|
|
349
|
+
break;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
return out;
|
|
354
|
+
}
|
|
355
|
+
//# sourceMappingURL=profileTags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profileTags.js","sourceRoot":"","sources":["../src/profileTags.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,21 @@
|
|
|
1
|
-
import type { AIProfileTag, ResolveAIProfileOptions, ResolvedAIProfile } from "./types.js";
|
|
1
|
+
import type { AIProfileTag, ProfileTagMatchMode, ResolveAIProfileOptions, ResolvedAIProfile } from "./types.js";
|
|
2
2
|
export interface ResolveAIProfileByTagsOptions extends ResolveAIProfileOptions {
|
|
3
|
-
/** Minimum tag
|
|
3
|
+
/** Minimum weighted tag score required (default 1). Used with `tagMatch: "any"`. */
|
|
4
4
|
minScore?: number;
|
|
5
|
+
/** `"any"` (default) = overlap ranking; `"all"` = require every requested tag. */
|
|
6
|
+
tagMatch?: ProfileTagMatchMode;
|
|
7
|
+
/**
|
|
8
|
+
* Include vendorFamily / discovery profiles. Default `false`.
|
|
9
|
+
* Also auto-included when tags contain `vnd`.
|
|
10
|
+
*/
|
|
11
|
+
includeDiscovery?: boolean;
|
|
5
12
|
}
|
|
6
13
|
/**
|
|
7
14
|
* Discovery: pick the best-matching profile by tags, auto-select a choice under constraints,
|
|
8
15
|
* then resolve the resulting `profile/choice` key.
|
|
16
|
+
*
|
|
17
|
+
* Tags may be short ids (`cyb`) or glossary aliases (`cyber`, `security`).
|
|
18
|
+
* Discovery/vendor profiles are excluded unless `includeDiscovery` or tags include `vnd`.
|
|
9
19
|
*/
|
|
10
|
-
export declare function resolveAIProfileByTags(tags: AIProfileTag
|
|
20
|
+
export declare function resolveAIProfileByTags(tags: Array<AIProfileTag | string>, options: ResolveAIProfileByTagsOptions): Promise<ResolvedAIProfile>;
|
|
11
21
|
//# sourceMappingURL=resolveAIProfileByTags.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveAIProfileByTags.d.ts","sourceRoot":"","sources":["../src/resolveAIProfileByTags.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolveAIProfileByTags.d.ts","sourceRoot":"","sources":["../src/resolveAIProfileByTags.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,6BAA8B,SAAQ,uBAAuB;IAC5E,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,EAClC,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,iBAAiB,CAAC,CAkF5B"}
|
|
@@ -2,21 +2,25 @@ import { AIProfilesError } from "./errors.js";
|
|
|
2
2
|
import { loadAIProfilesRegistryWithWarnings } from "./loader/loadAIProfilesRegistry.js";
|
|
3
3
|
import { loadModelsCatalogWithWarnings } from "./loader/loadModelsCatalog.js";
|
|
4
4
|
import { profileMatchesCatalogLane } from "./profileCatalogLane.js";
|
|
5
|
-
import { pickBestProfileByTags } from "./profileDiscovery.js";
|
|
5
|
+
import { pickBestProfileByTags, profileIncludedInTagPool, profileMatchesTags, } from "./profileDiscovery.js";
|
|
6
|
+
import { resolveAIProfileTagTokens } from "./profileTags.js";
|
|
6
7
|
import { formatProfileChoiceKey } from "./profileChoiceKey.js";
|
|
7
8
|
import { pickProfileChoiceWithConstraints } from "./modalityPolicy.js";
|
|
8
9
|
import { resolveAIProfile } from "./resolveAIProfile.js";
|
|
9
10
|
/**
|
|
10
11
|
* Discovery: pick the best-matching profile by tags, auto-select a choice under constraints,
|
|
11
12
|
* then resolve the resulting `profile/choice` key.
|
|
13
|
+
*
|
|
14
|
+
* Tags may be short ids (`cyb`) or glossary aliases (`cyber`, `security`).
|
|
15
|
+
* Discovery/vendor profiles are excluded unless `includeDiscovery` or tags include `vnd`.
|
|
12
16
|
*/
|
|
13
17
|
export async function resolveAIProfileByTags(tags, options) {
|
|
14
18
|
if (!options.catalogLane) {
|
|
15
19
|
throw new AIProfilesError("MISSING_CATALOG_LANE", "resolveAIProfileByTags requires options.catalogLane", { tags });
|
|
16
20
|
}
|
|
17
|
-
const uniqueTags =
|
|
21
|
+
const uniqueTags = resolveAIProfileTagTokens(tags.map(String));
|
|
18
22
|
if (uniqueTags.length === 0) {
|
|
19
|
-
throw new AIProfilesError("UNKNOWN_PROFILE", "resolveAIProfileByTags requires at least one tag", { tags });
|
|
23
|
+
throw new AIProfilesError("UNKNOWN_PROFILE", "resolveAIProfileByTags requires at least one known tag", { tags });
|
|
20
24
|
}
|
|
21
25
|
const [{ registry }, catalogResult] = await Promise.all([
|
|
22
26
|
loadAIProfilesRegistryWithWarnings({
|
|
@@ -28,11 +32,26 @@ export async function resolveAIProfileByTags(tags, options) {
|
|
|
28
32
|
refresh: options.refresh,
|
|
29
33
|
}),
|
|
30
34
|
]);
|
|
35
|
+
const tagMatch = options.tagMatch ?? "any";
|
|
31
36
|
const minScore = options.minScore ?? 1;
|
|
32
|
-
const pool = Object.fromEntries(Object.entries(registry.profiles).filter(([, profile]) =>
|
|
37
|
+
const pool = Object.fromEntries(Object.entries(registry.profiles).filter(([, profile]) => {
|
|
38
|
+
if (!profileMatchesCatalogLane(profile, options.catalogLane)) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
if (!profileIncludedInTagPool(profile, {
|
|
42
|
+
includeDiscovery: options.includeDiscovery,
|
|
43
|
+
tags: uniqueTags,
|
|
44
|
+
})) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
if (!profileMatchesTags(profile, uniqueTags, tagMatch)) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
return true;
|
|
51
|
+
}));
|
|
33
52
|
const best = pickBestProfileByTags(pool, uniqueTags);
|
|
34
|
-
if (!best || best.score < minScore) {
|
|
35
|
-
throw new AIProfilesError("UNKNOWN_PROFILE", `No profile matches tags: ${uniqueTags.join(", ")}`, { tags: uniqueTags, minScore });
|
|
53
|
+
if (!best || (tagMatch === "any" && best.score < minScore)) {
|
|
54
|
+
throw new AIProfilesError("UNKNOWN_PROFILE", `No profile matches tags: ${uniqueTags.join(", ")}`, { tags: uniqueTags, minScore, tagMatch });
|
|
36
55
|
}
|
|
37
56
|
const profile = registry.profiles[best.profileKey];
|
|
38
57
|
const picked = pickProfileChoiceWithConstraints(best.profileKey, profile, {
|
|
@@ -45,7 +64,7 @@ export async function resolveAIProfileByTags(tags, options) {
|
|
|
45
64
|
focus: options.focus,
|
|
46
65
|
catalog: catalogResult.catalog,
|
|
47
66
|
});
|
|
48
|
-
const { minScore: _minScore, ...resolveOptions } = options;
|
|
67
|
+
const { minScore: _minScore, tagMatch: _tagMatch, includeDiscovery: _includeDiscovery, ...resolveOptions } = options;
|
|
49
68
|
return resolveAIProfile(formatProfileChoiceKey(best.profileKey, picked.choiceKey), resolveOptions);
|
|
50
69
|
}
|
|
51
70
|
//# sourceMappingURL=resolveAIProfileByTags.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveAIProfileByTags.js","sourceRoot":"","sources":["../src/resolveAIProfileByTags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,kCAAkC,EAAE,MAAM,oCAAoC,CAAC;AACxF,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,
|
|
1
|
+
{"version":3,"file":"resolveAIProfileByTags.js","sourceRoot":"","sources":["../src/resolveAIProfileByTags.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { AIProfileDefinition, AIProfileTag, CatalogModelEntry, ProfileCatalogLane, ProfileTagMatchMode, RegistrySourceMode } from "./types.js";
|
|
2
|
+
export interface ResolveCatalogModelByTagsOptions {
|
|
3
|
+
source?: RegistrySourceMode;
|
|
4
|
+
refresh?: boolean;
|
|
5
|
+
tagMatch?: ProfileTagMatchMode;
|
|
6
|
+
minScore?: number;
|
|
7
|
+
catalogLane?: ProfileCatalogLane;
|
|
8
|
+
}
|
|
9
|
+
export interface CatalogModelProfileChoice {
|
|
10
|
+
profile: string;
|
|
11
|
+
choice: string;
|
|
12
|
+
profileChoice: string;
|
|
13
|
+
score: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ResolvedCatalogModelByTags {
|
|
16
|
+
openRouterModelId: string;
|
|
17
|
+
provider: CatalogModelEntry["direct"]["provider"];
|
|
18
|
+
modelId: string;
|
|
19
|
+
displayName?: string;
|
|
20
|
+
tags: AIProfileTag[];
|
|
21
|
+
matchedTags: AIProfileTag[];
|
|
22
|
+
score: number;
|
|
23
|
+
/** Best intent profile/choice referencing this model for the request tags, if any. */
|
|
24
|
+
bestProfileChoice?: CatalogModelProfileChoice;
|
|
25
|
+
/** All intent profile/choice keys that reference this model. */
|
|
26
|
+
profileChoices: string[];
|
|
27
|
+
catalogEntry: CatalogModelEntry;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Given a catalog model, prefer an intent profile choice that references it
|
|
31
|
+
* with the highest weighted profile-tag overlap against the request.
|
|
32
|
+
*/
|
|
33
|
+
export declare function mapCatalogModelToProfileChoice(entry: CatalogModelEntry, profiles: Record<string, AIProfileDefinition>, requestTags: AIProfileTag[]): CatalogModelProfileChoice | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Resolve the best catalog model for a tag set (weighted score).
|
|
36
|
+
* No match → `UNKNOWN_MODEL`.
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolveCatalogModelByTags(tags: Array<AIProfileTag | string>, options?: ResolveCatalogModelByTagsOptions): Promise<ResolvedCatalogModelByTags>;
|
|
39
|
+
//# sourceMappingURL=resolveCatalogModelByTags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveCatalogModelByTags.d.ts","sourceRoot":"","sources":["../src/resolveCatalogModelByTags.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,gCAAgC;IAC/C,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,0BAA0B;IACzC,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,EAAE,YAAY,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;IAC9C,gEAAgE;IAChE,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,iBAAiB,CAAC;CACjC;AAcD;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC7C,WAAW,EAAE,YAAY,EAAE,GAC1B,yBAAyB,GAAG,SAAS,CAgDvC;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,EAClC,OAAO,GAAE,gCAAqC,GAC7C,OAAO,CAAC,0BAA0B,CAAC,CA8ErC"}
|