@x12i/ai-profiles 1.4.0 → 1.6.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 +237 -21
- package/dist/buildCatalogFromOpenRouterApi.d.ts +29 -0
- package/dist/buildCatalogFromOpenRouterApi.d.ts.map +1 -0
- package/dist/buildCatalogFromOpenRouterApi.js +113 -0
- package/dist/buildCatalogFromOpenRouterApi.js.map +1 -0
- package/dist/buildModelsRegistry.d.ts +25 -0
- package/dist/buildModelsRegistry.d.ts.map +1 -0
- package/dist/buildModelsRegistry.js +190 -0
- package/dist/buildModelsRegistry.js.map +1 -0
- package/dist/buildResolvedProfile.d.ts +3 -1
- package/dist/buildResolvedProfile.d.ts.map +1 -1
- package/dist/buildResolvedProfile.js +94 -11
- package/dist/buildResolvedProfile.js.map +1 -1
- package/dist/catalogEnrichment.d.ts +19 -0
- package/dist/catalogEnrichment.d.ts.map +1 -0
- package/dist/catalogEnrichment.js +87 -0
- package/dist/catalogEnrichment.js.map +1 -0
- package/dist/computeRegistryStatistics.d.ts +15 -0
- package/dist/computeRegistryStatistics.d.ts.map +1 -0
- package/dist/computeRegistryStatistics.js +168 -0
- package/dist/computeRegistryStatistics.js.map +1 -0
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +10 -0
- package/dist/constants.js.map +1 -1
- package/dist/data/models-catalog.json +2219 -0
- package/dist/data/models-profiles.json +1361 -193
- package/dist/data/models-profiles.schema.json +130 -0
- package/dist/data/models-registry.json +1606 -0
- package/dist/data/openrouter-models-catalog.json +857 -0
- package/dist/data/profiles-shortcuts.json +101 -2
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/formatRegistryStatistics.d.ts +4 -0
- package/dist/formatRegistryStatistics.d.ts.map +1 -0
- package/dist/formatRegistryStatistics.js +34 -0
- package/dist/formatRegistryStatistics.js.map +1 -0
- package/dist/getAIRegistryStatistics.d.ts +11 -0
- package/dist/getAIRegistryStatistics.d.ts.map +1 -0
- package/dist/getAIRegistryStatistics.js +52 -0
- package/dist/getAIRegistryStatistics.js.map +1 -0
- package/dist/index.d.ts +26 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -1
- package/dist/listAIProfiles.d.ts +6 -0
- package/dist/listAIProfiles.d.ts.map +1 -1
- package/dist/listAIProfiles.js +6 -0
- package/dist/listAIProfiles.js.map +1 -1
- package/dist/loadModelsRegistry.d.ts +6 -0
- package/dist/loadModelsRegistry.d.ts.map +1 -0
- package/dist/loadModelsRegistry.js +43 -0
- package/dist/loadModelsRegistry.js.map +1 -0
- package/dist/loader/catalogMemoryCache.d.ts +12 -0
- package/dist/loader/catalogMemoryCache.d.ts.map +1 -0
- package/dist/loader/catalogMemoryCache.js +14 -0
- package/dist/loader/catalogMemoryCache.js.map +1 -0
- package/dist/loader/loadBundledModelsCatalog.d.ts +3 -0
- package/dist/loader/loadBundledModelsCatalog.d.ts.map +1 -0
- package/dist/loader/loadBundledModelsCatalog.js +20 -0
- package/dist/loader/loadBundledModelsCatalog.js.map +1 -0
- package/dist/loader/loadBundledModelsProfiles.d.ts +4 -0
- package/dist/loader/loadBundledModelsProfiles.d.ts.map +1 -0
- package/dist/loader/loadBundledModelsProfiles.js +14 -0
- package/dist/loader/loadBundledModelsProfiles.js.map +1 -0
- package/dist/loader/loadBundledRegistry.d.ts.map +1 -1
- package/dist/loader/loadBundledRegistry.js +2 -1
- package/dist/loader/loadBundledRegistry.js.map +1 -1
- package/dist/loader/loadModelsCatalog.d.ts +9 -0
- package/dist/loader/loadModelsCatalog.d.ts.map +1 -0
- package/dist/loader/loadModelsCatalog.js +72 -0
- package/dist/loader/loadModelsCatalog.js.map +1 -0
- package/dist/loader/loadModelsProfilesJson.d.ts +3 -0
- package/dist/loader/loadModelsProfilesJson.d.ts.map +1 -0
- package/dist/loader/loadModelsProfilesJson.js +18 -0
- package/dist/loader/loadModelsProfilesJson.js.map +1 -0
- package/dist/loader/loadRemoteModelsCatalog.d.ts +3 -0
- package/dist/loader/loadRemoteModelsCatalog.d.ts.map +1 -0
- package/dist/loader/loadRemoteModelsCatalog.js +23 -0
- package/dist/loader/loadRemoteModelsCatalog.js.map +1 -0
- package/dist/loader/loadRemoteModelsProfiles.d.ts +3 -0
- package/dist/loader/loadRemoteModelsProfiles.d.ts.map +1 -0
- package/dist/loader/loadRemoteModelsProfiles.js +21 -0
- package/dist/loader/loadRemoteModelsProfiles.js.map +1 -0
- package/dist/loader/loadRemoteRegistry.d.ts.map +1 -1
- package/dist/loader/loadRemoteRegistry.js +2 -1
- package/dist/loader/loadRemoteRegistry.js.map +1 -1
- package/dist/mergeCatalogSupplement.d.ts +4 -0
- package/dist/mergeCatalogSupplement.d.ts.map +1 -0
- package/dist/mergeCatalogSupplement.js +26 -0
- package/dist/mergeCatalogSupplement.js.map +1 -0
- package/dist/modelIdentity.d.ts +33 -0
- package/dist/modelIdentity.d.ts.map +1 -0
- package/dist/modelIdentity.js +161 -0
- package/dist/modelIdentity.js.map +1 -0
- package/dist/modelsCatalog.d.ts +21 -0
- package/dist/modelsCatalog.d.ts.map +1 -0
- package/dist/modelsCatalog.js +187 -0
- package/dist/modelsCatalog.js.map +1 -0
- package/dist/profileCatalogSupplement.d.ts +7 -0
- package/dist/profileCatalogSupplement.d.ts.map +1 -0
- package/dist/profileCatalogSupplement.js +292 -0
- package/dist/profileCatalogSupplement.js.map +1 -0
- package/dist/profileRegistryV2.d.ts +19 -0
- package/dist/profileRegistryV2.d.ts.map +1 -0
- package/dist/profileRegistryV2.js +257 -0
- package/dist/profileRegistryV2.js.map +1 -0
- package/dist/profileRegistryV3.d.ts +11 -0
- package/dist/profileRegistryV3.d.ts.map +1 -0
- package/dist/profileRegistryV3.js +526 -0
- package/dist/profileRegistryV3.js.map +1 -0
- package/dist/resolveAIProfile.d.ts +8 -0
- package/dist/resolveAIProfile.d.ts.map +1 -1
- package/dist/resolveAIProfile.js +62 -18
- package/dist/resolveAIProfile.js.map +1 -1
- package/dist/resolveModelIdentity.d.ts +17 -0
- package/dist/resolveModelIdentity.d.ts.map +1 -0
- package/dist/resolveModelIdentity.js +107 -0
- package/dist/resolveModelIdentity.js.map +1 -0
- package/dist/resolveModelRouting.d.ts +2 -1
- package/dist/resolveModelRouting.d.ts.map +1 -1
- package/dist/resolveModelRouting.js +9 -10
- package/dist/resolveModelRouting.js.map +1 -1
- package/dist/types.d.ts +339 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -1
- package/dist/validateProfileVendorCoverage.d.ts +12 -0
- package/dist/validateProfileVendorCoverage.d.ts.map +1 -0
- package/dist/validateProfileVendorCoverage.js +58 -0
- package/dist/validateProfileVendorCoverage.js.map +1 -0
- package/dist/validation/openRouterAlignment.d.ts +6 -15
- package/dist/validation/openRouterAlignment.d.ts.map +1 -1
- package/dist/validation/openRouterAlignment.js +9 -57
- package/dist/validation/openRouterAlignment.js.map +1 -1
- package/dist/validation/validateModelsCatalog.d.ts +3 -0
- package/dist/validation/validateModelsCatalog.d.ts.map +1 -0
- package/dist/validation/validateModelsCatalog.js +42 -0
- package/dist/validation/validateModelsCatalog.js.map +1 -0
- package/dist/validation/validateModelsProfilesJson.d.ts.map +1 -1
- package/dist/validation/validateModelsProfilesJson.js +38 -2
- package/dist/validation/validateModelsProfilesJson.js.map +1 -1
- package/dist/vendorPolicy.d.ts +20 -0
- package/dist/vendorPolicy.d.ts.map +1 -0
- package/dist/vendorPolicy.js +71 -0
- package/dist/vendorPolicy.js.map +1 -0
- package/package.json +12 -2
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Registry types for {@link https://github.com/x12i/ai-profiles | @x12i/ai-profiles}.
|
|
3
|
+
*
|
|
4
|
+
* An **AI profile** is a capability contract (e.g. `cheap`, `deep`, `json`) — what kind of
|
|
5
|
+
* work is needed — not a specific model. Each profile has a **default choice** and optional
|
|
6
|
+
* **choices** (alternatives) that map intent to `provider`, `modelId`, pricing, and runtime
|
|
7
|
+
* defaults. Tasks should reference profiles (and optional choices), not vendor model names.
|
|
8
|
+
*
|
|
9
|
+
* @see README.md — “Why AI profiles” for the full design rationale.
|
|
10
|
+
*/
|
|
11
|
+
export type AIProvider = "openai" | "anthropic" | "google" | "deepseek" | "mistral" | "groq" | "together" | "xai" | "local" | "custom" | "openrouter";
|
|
2
12
|
export type InstructionTier = "default" | "cpu" | "reasoning";
|
|
3
13
|
export type AIProfileBackend = "openrouter" | "llama-cpp" | "transformersjs" | "custom";
|
|
4
14
|
export interface AIModelPricing {
|
|
@@ -31,27 +41,121 @@ export interface AIRuntimeDefaults {
|
|
|
31
41
|
instructionTier?: InstructionTier;
|
|
32
42
|
backend?: AIProfileBackend;
|
|
33
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* One implementation option within a profile (e.g. `default`, `cost_floor`, `openai_deep`).
|
|
46
|
+
* Choices let the same profile intent use different providers, cost/quality trade-offs, or
|
|
47
|
+
* capabilities (long context, batch execution) without changing caller code.
|
|
48
|
+
*/
|
|
49
|
+
export interface ProfileChoiceApi {
|
|
50
|
+
defaultTransport: "openrouter" | "direct";
|
|
51
|
+
vendorModelId: string;
|
|
52
|
+
openRouterModelId?: string | null;
|
|
53
|
+
}
|
|
54
|
+
export interface ProfileChoicePricingV2 {
|
|
55
|
+
billingModel: "token" | "self_hosted";
|
|
56
|
+
currency: "USD";
|
|
57
|
+
unit: "1M_tokens";
|
|
58
|
+
priceStatus?: "standard" | "promotional" | "estimated";
|
|
59
|
+
notes?: string;
|
|
60
|
+
standard?: {
|
|
61
|
+
input?: number;
|
|
62
|
+
output?: number;
|
|
63
|
+
cachedInput?: number;
|
|
64
|
+
};
|
|
65
|
+
batch?: {
|
|
66
|
+
input?: number;
|
|
67
|
+
output?: number;
|
|
68
|
+
};
|
|
69
|
+
cache?: {
|
|
70
|
+
write5m?: number;
|
|
71
|
+
write1h?: number;
|
|
72
|
+
hit?: number;
|
|
73
|
+
write?: number;
|
|
74
|
+
};
|
|
75
|
+
futureStandard?: {
|
|
76
|
+
input?: number;
|
|
77
|
+
output?: number;
|
|
78
|
+
validUntil?: string;
|
|
79
|
+
notes?: string;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export interface ProfileChoiceVerification {
|
|
83
|
+
lastVerifiedAt?: string;
|
|
84
|
+
sourceRefs?: string[];
|
|
85
|
+
}
|
|
86
|
+
export interface ProfileChoiceLimits {
|
|
87
|
+
contextWindow?: number;
|
|
88
|
+
maxOutputTokens?: number;
|
|
89
|
+
}
|
|
90
|
+
export type ModelAvailabilityStatus = "verified" | "predicted";
|
|
91
|
+
export type DeploymentType = "proprietary" | "openWeightsHosted" | "selfHosted";
|
|
92
|
+
export interface ProfileRequiredCapabilities {
|
|
93
|
+
reasoning?: "minimal" | "low" | "medium" | "high" | "max";
|
|
94
|
+
coding?: boolean;
|
|
95
|
+
context?: "standard" | "large" | "xlarge";
|
|
96
|
+
cost?: "low" | "medium" | "high";
|
|
97
|
+
speed?: "high";
|
|
98
|
+
latency?: "low";
|
|
99
|
+
quality?: "high" | "premium";
|
|
100
|
+
structuredOutput?: boolean;
|
|
101
|
+
supportsJsonSchema?: boolean;
|
|
102
|
+
supportsVision?: boolean;
|
|
103
|
+
supportsTools?: boolean;
|
|
104
|
+
}
|
|
105
|
+
export interface ModelCapabilitiesSnapshot {
|
|
106
|
+
contextWindow?: number;
|
|
107
|
+
maxOutputTokens?: number;
|
|
108
|
+
supportsVision?: boolean;
|
|
109
|
+
supportsTools?: boolean;
|
|
110
|
+
supportsReasoning?: boolean;
|
|
111
|
+
supportsJsonSchema?: boolean;
|
|
112
|
+
supportsCaching?: boolean;
|
|
113
|
+
supportsBatch?: boolean;
|
|
114
|
+
supportsStreaming?: boolean;
|
|
115
|
+
}
|
|
34
116
|
export interface AIProfileChoice {
|
|
35
117
|
choice: string;
|
|
36
118
|
displayName: string;
|
|
37
119
|
description: string;
|
|
120
|
+
/** Canonical vendor-native model identifier. */
|
|
38
121
|
provider: AIProvider;
|
|
39
122
|
modelId: string;
|
|
40
|
-
|
|
123
|
+
/** Whether the SKU is production-stable or a forward-looking placeholder. */
|
|
124
|
+
modelStatus?: ModelAvailabilityStatus;
|
|
125
|
+
/** How the model is operated when not a proprietary vendor API. */
|
|
126
|
+
deploymentType?: DeploymentType;
|
|
127
|
+
/** Transport mapping (v2 registry). */
|
|
128
|
+
api?: ProfileChoiceApi;
|
|
129
|
+
/** Legacy flat pricing and/or v2 nested pricing blocks. */
|
|
130
|
+
pricing?: AIModelPricing | ProfileChoicePricingV2;
|
|
41
131
|
runtime?: AIRuntimeDefaults;
|
|
42
132
|
reason?: string;
|
|
43
133
|
status?: "active" | "experimental" | "deprecated";
|
|
134
|
+
verification?: ProfileChoiceVerification;
|
|
135
|
+
limits?: ProfileChoiceLimits;
|
|
44
136
|
metadata?: Record<string, unknown>;
|
|
45
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Capability contract for a class of AI work (cost, speed, reasoning, structured output,
|
|
140
|
+
* agentic tools, research, local inference). Resolved via {@link resolveAIProfile}.
|
|
141
|
+
*/
|
|
46
142
|
export interface AIProfileDefinition {
|
|
47
143
|
profile: string;
|
|
48
144
|
displayName: string;
|
|
49
145
|
description: string;
|
|
146
|
+
/** Grouping for filtering (`cost`, `speed`, `standard`, `reasoning`, `output`, `agentic`, `research`, `local`). */
|
|
50
147
|
category: string;
|
|
51
148
|
/** Many alternate names for this profile (see `matchProfileInput`). */
|
|
52
149
|
aliases?: string[];
|
|
53
150
|
defaultChoice: string;
|
|
54
151
|
choices: Record<string, AIProfileChoice>;
|
|
152
|
+
/** Intent contract for dynamic model selection (Optimixer). */
|
|
153
|
+
requiredCapabilities?: ProfileRequiredCapabilities;
|
|
154
|
+
/** Profile-level deployment strategy (e.g. open weights). */
|
|
155
|
+
deploymentType?: DeploymentType;
|
|
156
|
+
/** Deterministic failover order when trimming vendors or choices. */
|
|
157
|
+
fallbackChoiceOrder?: string[];
|
|
158
|
+
intendedUseCases?: string[];
|
|
55
159
|
status?: "active" | "experimental" | "deprecated";
|
|
56
160
|
runtime?: AIRuntimeDefaults;
|
|
57
161
|
metadata?: Record<string, unknown>;
|
|
@@ -61,11 +165,25 @@ export interface AIProfileShortcut {
|
|
|
61
165
|
choice?: string;
|
|
62
166
|
description?: string;
|
|
63
167
|
}
|
|
168
|
+
export type ModelsProfilesSchemaId = "x12i.ai-profiles.models-profiles" | "x12i.ai-profiles.model-registry.v2" | "x12i.ai-profiles.model-registry.v3";
|
|
64
169
|
export interface ModelsProfilesJson {
|
|
65
|
-
schema:
|
|
170
|
+
schema: ModelsProfilesSchemaId;
|
|
171
|
+
registryId?: string;
|
|
66
172
|
/** Optional label in source JSON; not used for compatibility or selection logic. */
|
|
67
173
|
version?: string;
|
|
68
174
|
generatedAt?: string;
|
|
175
|
+
lastVerifiedAt?: string;
|
|
176
|
+
namingConvention?: string;
|
|
177
|
+
semantics?: Record<string, string>;
|
|
178
|
+
sourceCatalog?: {
|
|
179
|
+
providers: Array<{
|
|
180
|
+
id: string;
|
|
181
|
+
docsUrl?: string;
|
|
182
|
+
}>;
|
|
183
|
+
modelsCatalogUrl?: string;
|
|
184
|
+
/** @deprecated Use modelsCatalogUrl */
|
|
185
|
+
openRouterCatalogUrl?: string;
|
|
186
|
+
};
|
|
69
187
|
currency: "USD";
|
|
70
188
|
pricingUnit: "1M_tokens";
|
|
71
189
|
profiles: Record<string, AIProfileDefinition>;
|
|
@@ -111,9 +229,149 @@ export interface AIShortcutSummary {
|
|
|
111
229
|
description?: string;
|
|
112
230
|
}
|
|
113
231
|
export interface AIProfileWarning {
|
|
114
|
-
code: "USING_BUNDLED_FALLBACK" | "PROFILE_DEPRECATED" | "CHOICE_DEPRECATED" | "PRICING_MISSING" | "REMOTE_REFRESH_FAILED_USING_CACHE";
|
|
232
|
+
code: "USING_BUNDLED_FALLBACK" | "PROFILE_DEPRECATED" | "CHOICE_DEPRECATED" | "PRICING_MISSING" | "MODEL_PREDICTED" | "PRICING_FROM_CATALOG" | "REMOTE_REFRESH_FAILED_USING_CACHE" | "OPENROUTER_UNAVAILABLE";
|
|
115
233
|
message: string;
|
|
116
234
|
}
|
|
235
|
+
export interface ModelInvocationEndpoint {
|
|
236
|
+
provider: AIProvider;
|
|
237
|
+
modelId: string;
|
|
238
|
+
}
|
|
239
|
+
export interface ModelInvocation {
|
|
240
|
+
direct: ModelInvocationEndpoint;
|
|
241
|
+
openrouter: ModelInvocationEndpoint | null;
|
|
242
|
+
}
|
|
243
|
+
export type ModelRegistryKind = "linked" | "openrouter-only" | "local-only" | "faulty";
|
|
244
|
+
export type ModelLinkageStatus = "matched" | "faulty" | "skipped" | "catalog-miss";
|
|
245
|
+
export interface ModelRegistryLinkage {
|
|
246
|
+
status: ModelLinkageStatus;
|
|
247
|
+
openRouterCatalogId?: string;
|
|
248
|
+
canonicalSlug?: string;
|
|
249
|
+
matchMethod?: string;
|
|
250
|
+
exemptReason?: string;
|
|
251
|
+
}
|
|
252
|
+
export interface ModelRegistryEntry {
|
|
253
|
+
registryKey: string;
|
|
254
|
+
kind: ModelRegistryKind;
|
|
255
|
+
vendor: ModelInvocationEndpoint;
|
|
256
|
+
invocation: ModelInvocation;
|
|
257
|
+
linkage: ModelRegistryLinkage;
|
|
258
|
+
usage: {
|
|
259
|
+
profileChoices: Array<{
|
|
260
|
+
profile: string;
|
|
261
|
+
choice: string;
|
|
262
|
+
}>;
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
export interface ModelsRegistryJson {
|
|
266
|
+
schema: "x12i.ai-profiles.models-registry";
|
|
267
|
+
version?: string;
|
|
268
|
+
generatedAt?: string;
|
|
269
|
+
inputs?: {
|
|
270
|
+
openRouterCatalog?: {
|
|
271
|
+
schema?: string;
|
|
272
|
+
version?: string;
|
|
273
|
+
generatedAt?: string;
|
|
274
|
+
modelCount?: number;
|
|
275
|
+
};
|
|
276
|
+
modelsProfiles?: {
|
|
277
|
+
version?: string;
|
|
278
|
+
generatedAt?: string;
|
|
279
|
+
choiceCount?: number;
|
|
280
|
+
};
|
|
281
|
+
};
|
|
282
|
+
models: Record<string, ModelRegistryEntry>;
|
|
283
|
+
}
|
|
284
|
+
export interface CatalogOpenRouterPricing {
|
|
285
|
+
input?: number;
|
|
286
|
+
output?: number;
|
|
287
|
+
cachedInput?: number;
|
|
288
|
+
cacheWrite?: number;
|
|
289
|
+
batchInput?: number;
|
|
290
|
+
batchOutput?: number;
|
|
291
|
+
imageInput?: number;
|
|
292
|
+
audioInput?: number;
|
|
293
|
+
internalReasoning?: number;
|
|
294
|
+
webSearchPerRequest?: number;
|
|
295
|
+
}
|
|
296
|
+
export interface CatalogOpenRouterCapabilities {
|
|
297
|
+
reasoning?: boolean;
|
|
298
|
+
toolCalling?: boolean;
|
|
299
|
+
structuredOutputs?: boolean;
|
|
300
|
+
imageGeneration?: boolean;
|
|
301
|
+
}
|
|
302
|
+
export interface CatalogDirectSlice {
|
|
303
|
+
provider: AIProvider;
|
|
304
|
+
modelId: string;
|
|
305
|
+
/**
|
|
306
|
+
* OpenRouter slug prefix when `provider` is `custom` (e.g. `qwen` for `qwen/qwen3.7-max`).
|
|
307
|
+
* Not used for API calls — documents the upstream vendor namespace.
|
|
308
|
+
*/
|
|
309
|
+
vendorNamespace?: string;
|
|
310
|
+
}
|
|
311
|
+
export interface CatalogOpenRouterSlice {
|
|
312
|
+
provider: "openrouter";
|
|
313
|
+
modelId: string;
|
|
314
|
+
canonicalSlug?: string;
|
|
315
|
+
status?: string;
|
|
316
|
+
modalities?: {
|
|
317
|
+
input?: string[];
|
|
318
|
+
output?: string[];
|
|
319
|
+
};
|
|
320
|
+
contextWindow?: number;
|
|
321
|
+
maxCompletionTokens?: number;
|
|
322
|
+
knowledgeCutoff?: string;
|
|
323
|
+
pricing?: CatalogOpenRouterPricing;
|
|
324
|
+
capabilities?: CatalogOpenRouterCapabilities;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Unified catalog model: two explicit call shapes (never conflate them).
|
|
328
|
+
* - `direct` — vendor-native / direct API identity
|
|
329
|
+
* - `openrouter` — OpenRouter transport (`provider` is always `openrouter`)
|
|
330
|
+
*/
|
|
331
|
+
export interface CatalogModelEntry {
|
|
332
|
+
direct: CatalogDirectSlice;
|
|
333
|
+
openrouter: CatalogOpenRouterSlice;
|
|
334
|
+
displayName?: string;
|
|
335
|
+
family?: string;
|
|
336
|
+
status?: string;
|
|
337
|
+
modalities?: CatalogOpenRouterSlice["modalities"];
|
|
338
|
+
contextWindow?: number;
|
|
339
|
+
maxCompletionTokens?: number;
|
|
340
|
+
knowledgeCutoff?: string;
|
|
341
|
+
}
|
|
342
|
+
export interface ModelsCatalogJson {
|
|
343
|
+
schema: "x12i.ai-profiles.models-catalog";
|
|
344
|
+
version?: string;
|
|
345
|
+
generatedAt?: string;
|
|
346
|
+
currency: "USD";
|
|
347
|
+
pricingUnit: "1M_tokens";
|
|
348
|
+
sources: {
|
|
349
|
+
openrouter: {
|
|
350
|
+
catalogUrl: string;
|
|
351
|
+
pricingUrl?: string;
|
|
352
|
+
verifiedAt?: string;
|
|
353
|
+
normalization?: string;
|
|
354
|
+
};
|
|
355
|
+
};
|
|
356
|
+
notes?: string[];
|
|
357
|
+
models: CatalogModelEntry[];
|
|
358
|
+
}
|
|
359
|
+
/** @deprecated Use {@link ModelsCatalogJson} */
|
|
360
|
+
export type OpenRouterModelsCatalogJson = ModelsCatalogJson;
|
|
361
|
+
export interface ProfileVendorCoverageResult {
|
|
362
|
+
profile: string;
|
|
363
|
+
leadingVendorsPresent: AIProvider[];
|
|
364
|
+
leadingVendorsMissing: AIProvider[];
|
|
365
|
+
nonLeadingChoices: Array<{
|
|
366
|
+
choice: string;
|
|
367
|
+
provider: AIProvider;
|
|
368
|
+
}>;
|
|
369
|
+
}
|
|
370
|
+
export interface ValidateProfileVendorCoverageResult {
|
|
371
|
+
ok: boolean;
|
|
372
|
+
profiles: ProfileVendorCoverageResult[];
|
|
373
|
+
}
|
|
374
|
+
/** Materialized profile + choice: model, pricing, runtime, and routing after registry resolution. */
|
|
117
375
|
export interface ResolvedAIProfile {
|
|
118
376
|
input: string;
|
|
119
377
|
profile: string;
|
|
@@ -133,6 +391,12 @@ export interface ResolvedAIProfile {
|
|
|
133
391
|
currency: "USD";
|
|
134
392
|
unit: "1M_tokens";
|
|
135
393
|
};
|
|
394
|
+
/** Echo of choice modelStatus when present. */
|
|
395
|
+
modelStatus?: ModelAvailabilityStatus;
|
|
396
|
+
limits?: ProfileChoiceLimits;
|
|
397
|
+
capabilities?: ModelCapabilitiesSnapshot;
|
|
398
|
+
/** Profile intent contract (from registry definition). */
|
|
399
|
+
requiredCapabilities?: ProfileRequiredCapabilities;
|
|
136
400
|
runtime: Required<AIRuntimeDefaults>;
|
|
137
401
|
metadata?: Record<string, unknown>;
|
|
138
402
|
reason?: string;
|
|
@@ -146,6 +410,8 @@ export interface ResolvedAIProfile {
|
|
|
146
410
|
profile: string;
|
|
147
411
|
choice?: string;
|
|
148
412
|
};
|
|
413
|
+
/** Direct and OpenRouter call shapes for the resolved choice. */
|
|
414
|
+
invocation: ModelInvocation;
|
|
149
415
|
warnings?: AIProfileWarning[];
|
|
150
416
|
}
|
|
151
417
|
export interface ListAIProfilesOptions {
|
|
@@ -168,6 +434,10 @@ export interface ResolveAIProfileOptions {
|
|
|
168
434
|
* `0`/`false` → direct). Azure and AWS routing are not supported yet.
|
|
169
435
|
*/
|
|
170
436
|
useOpenRouter?: boolean;
|
|
437
|
+
/** Restrict resolution to these vendors; auto-picks when default is outside the set. */
|
|
438
|
+
allowedProviders?: AIProvider[];
|
|
439
|
+
/** When auto-picking, rank {@link LEADING_VENDORS} ahead of other providers (default true). */
|
|
440
|
+
preferLeadingVendors?: boolean;
|
|
171
441
|
}
|
|
172
442
|
export interface LoadRegistryOptions {
|
|
173
443
|
source?: RegistrySourceMode;
|
|
@@ -177,4 +447,69 @@ export interface LoadRegistryResult {
|
|
|
177
447
|
registry: AIProfilesRegistry;
|
|
178
448
|
warnings: AIProfileWarning[];
|
|
179
449
|
}
|
|
450
|
+
export interface ProfileStatisticsFilter {
|
|
451
|
+
includeDeprecated?: boolean;
|
|
452
|
+
includeExperimental?: boolean;
|
|
453
|
+
category?: string;
|
|
454
|
+
}
|
|
455
|
+
export interface GetAIRegistryStatisticsOptions extends LoadRegistryOptions {
|
|
456
|
+
/** Include models catalog counts (default true). */
|
|
457
|
+
includeCatalog?: boolean;
|
|
458
|
+
/** Include profile↔catalog linkage counts (default true). */
|
|
459
|
+
includeLinkage?: boolean;
|
|
460
|
+
includeDeprecated?: boolean;
|
|
461
|
+
includeExperimental?: boolean;
|
|
462
|
+
category?: string;
|
|
463
|
+
}
|
|
464
|
+
export interface AIRegistryStatistics {
|
|
465
|
+
schema: "x12i.ai-profiles.registry-statistics";
|
|
466
|
+
generatedAt: string;
|
|
467
|
+
sources: {
|
|
468
|
+
profiles: "remote" | "bundled";
|
|
469
|
+
catalog?: "remote" | "bundled";
|
|
470
|
+
};
|
|
471
|
+
registry: {
|
|
472
|
+
version?: string;
|
|
473
|
+
loadedAt: string;
|
|
474
|
+
currency: "USD";
|
|
475
|
+
pricingUnit: "1M_tokens";
|
|
476
|
+
};
|
|
477
|
+
profiles: {
|
|
478
|
+
total: number;
|
|
479
|
+
choices: number;
|
|
480
|
+
aliases: number;
|
|
481
|
+
uniqueProviders: number;
|
|
482
|
+
providers: AIProvider[];
|
|
483
|
+
uniqueModelKeys: number;
|
|
484
|
+
uniqueVendorModelIds: number;
|
|
485
|
+
byStatus: Record<string, number>;
|
|
486
|
+
byCategory: Record<string, number>;
|
|
487
|
+
categories: string[];
|
|
488
|
+
averageChoicesPerProfile: number;
|
|
489
|
+
};
|
|
490
|
+
shortcuts: {
|
|
491
|
+
total: number;
|
|
492
|
+
};
|
|
493
|
+
catalog?: {
|
|
494
|
+
totalModels: number;
|
|
495
|
+
uniqueDirectProviders: number;
|
|
496
|
+
directProviders: string[];
|
|
497
|
+
active: number;
|
|
498
|
+
deprecated: number;
|
|
499
|
+
withPricing: number;
|
|
500
|
+
withReasoningCapability: number;
|
|
501
|
+
catalogVersion?: string;
|
|
502
|
+
generatedAt?: string;
|
|
503
|
+
};
|
|
504
|
+
linkage?: {
|
|
505
|
+
registryEntries: number;
|
|
506
|
+
profileChoiceReferences: number;
|
|
507
|
+
byLinkageStatus: Record<string, number>;
|
|
508
|
+
byKind: Record<string, number>;
|
|
509
|
+
matched: number;
|
|
510
|
+
faulty: number;
|
|
511
|
+
catalogMiss: number;
|
|
512
|
+
skipped: number;
|
|
513
|
+
};
|
|
514
|
+
}
|
|
180
515
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -1,2 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry types for {@link https://github.com/x12i/ai-profiles | @x12i/ai-profiles}.
|
|
3
|
+
*
|
|
4
|
+
* An **AI profile** is a capability contract (e.g. `cheap`, `deep`, `json`) — what kind of
|
|
5
|
+
* work is needed — not a specific model. Each profile has a **default choice** and optional
|
|
6
|
+
* **choices** (alternatives) that map intent to `provider`, `modelId`, pricing, and runtime
|
|
7
|
+
* defaults. Tasks should reference profiles (and optional choices), not vendor model names.
|
|
8
|
+
*
|
|
9
|
+
* @see README.md — “Why AI profiles” for the full design rationale.
|
|
10
|
+
*/
|
|
1
11
|
export {};
|
|
2
12
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AIProvider, ModelsProfilesJson, ValidateProfileVendorCoverageResult } from "./types.js";
|
|
2
|
+
export declare function validateProfileVendorCoverage(profiles: ModelsProfilesJson, options?: {
|
|
3
|
+
vendors?: readonly AIProvider[];
|
|
4
|
+
profileKey?: string;
|
|
5
|
+
}): ValidateProfileVendorCoverageResult;
|
|
6
|
+
export declare function isProfileLeadingVendorReady(profileKey: string, profiles?: ModelsProfilesJson): boolean;
|
|
7
|
+
export declare function isProfileVendorTrimReady(profileKey: string, allowedProviders: AIProvider[], profiles?: ModelsProfilesJson): boolean;
|
|
8
|
+
export declare function validateBundledProfileVendorCoverage(options?: {
|
|
9
|
+
vendors?: readonly AIProvider[];
|
|
10
|
+
profileKey?: string;
|
|
11
|
+
}): ValidateProfileVendorCoverageResult;
|
|
12
|
+
//# sourceMappingURL=validateProfileVendorCoverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateProfileVendorCoverage.d.ts","sourceRoot":"","sources":["../src/validateProfileVendorCoverage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,UAAU,EACV,kBAAkB,EAElB,mCAAmC,EACpC,MAAM,YAAY,CAAC;AAKpB,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GACjE,mCAAmC,CAmBrC;AAgCD,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,kBAAoC,GAC7C,OAAO,CAMT;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,UAAU,EAAE,EAC9B,QAAQ,GAAE,kBAAoC,GAC7C,OAAO,CAOT;AAED,wBAAgB,oCAAoC,CAAC,OAAO,CAAC,EAAE;IAC7D,OAAO,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,mCAAmC,CAEtC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import bundledModelsProfiles from "./data/models-profiles.json" with { type: "json" };
|
|
2
|
+
import { isLeadingVendor, LEADING_VENDORS } from "./vendorPolicy.js";
|
|
3
|
+
const defaultProfiles = bundledModelsProfiles;
|
|
4
|
+
export function validateProfileVendorCoverage(profiles, options) {
|
|
5
|
+
const vendors = options?.vendors ?? LEADING_VENDORS;
|
|
6
|
+
const profileEntries = options?.profileKey
|
|
7
|
+
? [[options.profileKey, profiles.profiles[options.profileKey]]].filter(([, p]) => p !== undefined)
|
|
8
|
+
: Object.entries(profiles.profiles);
|
|
9
|
+
const results = [];
|
|
10
|
+
for (const [profileKey, profile] of profileEntries) {
|
|
11
|
+
if (!profile)
|
|
12
|
+
continue;
|
|
13
|
+
results.push(analyzeProfile(profileKey, profile, vendors));
|
|
14
|
+
}
|
|
15
|
+
return {
|
|
16
|
+
ok: true,
|
|
17
|
+
profiles: results,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function analyzeProfile(profileKey, profile, vendors) {
|
|
21
|
+
const present = new Set();
|
|
22
|
+
const nonLeadingChoices = [];
|
|
23
|
+
for (const [choiceKey, choice] of Object.entries(profile.choices)) {
|
|
24
|
+
if (choice.provider === "local")
|
|
25
|
+
continue;
|
|
26
|
+
if (isLeadingVendor(choice.provider)) {
|
|
27
|
+
present.add(choice.provider);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
nonLeadingChoices.push({ choice: choiceKey, provider: choice.provider });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const leadingVendorsPresent = vendors.filter((v) => present.has(v));
|
|
34
|
+
const leadingVendorsMissing = vendors.filter((v) => !present.has(v));
|
|
35
|
+
return {
|
|
36
|
+
profile: profileKey,
|
|
37
|
+
leadingVendorsPresent: [...leadingVendorsPresent],
|
|
38
|
+
leadingVendorsMissing: [...leadingVendorsMissing],
|
|
39
|
+
nonLeadingChoices,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function isProfileLeadingVendorReady(profileKey, profiles = defaultProfiles) {
|
|
43
|
+
const profile = profiles.profiles[profileKey];
|
|
44
|
+
if (!profile)
|
|
45
|
+
return false;
|
|
46
|
+
const analysis = analyzeProfile(profileKey, profile, LEADING_VENDORS);
|
|
47
|
+
return analysis.leadingVendorsPresent.length > 0;
|
|
48
|
+
}
|
|
49
|
+
export function isProfileVendorTrimReady(profileKey, allowedProviders, profiles = defaultProfiles) {
|
|
50
|
+
const profile = profiles.profiles[profileKey];
|
|
51
|
+
if (!profile)
|
|
52
|
+
return false;
|
|
53
|
+
return Object.values(profile.choices).some((choice) => allowedProviders.includes(choice.provider));
|
|
54
|
+
}
|
|
55
|
+
export function validateBundledProfileVendorCoverage(options) {
|
|
56
|
+
return validateProfileVendorCoverage(defaultProfiles, options);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=validateProfileVendorCoverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateProfileVendorCoverage.js","sourceRoot":"","sources":["../src/validateProfileVendorCoverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
modelId?: string;
|
|
6
|
-
canonicalSlug?: string;
|
|
7
|
-
}>;
|
|
8
|
-
};
|
|
1
|
+
import type { ModelsCatalogJson, ModelsProfilesJson } from "../types.js";
|
|
2
|
+
import { normalizeAnthropicVersionSlug, openRouterResolutionCandidates, shouldCheckOpenRouterAlignment } from "../modelIdentity.js";
|
|
3
|
+
export declare const OPENROUTER_MODELS_CATALOG_URL = "https://open-assets.x12i.com/models-catalog.json";
|
|
4
|
+
export type OpenRouterCatalogFile = ModelsCatalogJson | unknown;
|
|
9
5
|
export type OpenRouterAlignmentIssue = {
|
|
10
6
|
profile: string;
|
|
11
7
|
choice: string;
|
|
@@ -19,13 +15,8 @@ export type OpenRouterAlignmentReport = {
|
|
|
19
15
|
issues: OpenRouterAlignmentIssue[];
|
|
20
16
|
catalogModelCount: number;
|
|
21
17
|
};
|
|
22
|
-
|
|
23
|
-
export declare function
|
|
24
|
-
export declare function buildOpenRouterCatalogIndex(catalog: OpenRouterCatalogFile): Set<string>;
|
|
25
|
-
export declare function openRouterResolutionCandidates(provider: string, modelId: string): string[];
|
|
26
|
-
export declare function isOpenRouterModelAvailable(provider: string, modelId: string, catalogIndex: Set<string>): boolean;
|
|
27
|
-
/** Skip local / vendor-direct choices that are not expected on OpenRouter. */
|
|
28
|
-
export declare function shouldCheckOpenRouterAlignment(choice: AIProfileChoice): boolean;
|
|
18
|
+
export { normalizeAnthropicVersionSlug, openRouterResolutionCandidates, shouldCheckOpenRouterAlignment, };
|
|
19
|
+
export declare function buildOpenRouterCatalogIndexSet(catalog: OpenRouterCatalogFile): Set<string>;
|
|
29
20
|
export declare function verifyOpenRouterAlignment(registry: ModelsProfilesJson, catalog: OpenRouterCatalogFile): OpenRouterAlignmentReport;
|
|
30
21
|
export declare function formatOpenRouterAlignmentReport(report: OpenRouterAlignmentReport): string;
|
|
31
22
|
//# sourceMappingURL=openRouterAlignment.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openRouterAlignment.d.ts","sourceRoot":"","sources":["../../src/validation/openRouterAlignment.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openRouterAlignment.d.ts","sourceRoot":"","sources":["../../src/validation/openRouterAlignment.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAEL,6BAA6B,EAC7B,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,6BAA6B,qDAA4B,CAAC;AAEvE,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GAAG,OAAO,CAAC;AAEhE,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,8BAA8B,GAC/B,CAAC;AAEF,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,qBAAqB,GAC7B,GAAG,CAAC,MAAM,CAAC,CAGb;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,qBAAqB,GAC7B,yBAAyB,CAsC3B;AAED,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,yBAAyB,GAChC,MAAM,CAgBR"}
|