@x12i/ai-profiles 4.4.0 → 4.4.2

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.
Files changed (50) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +1086 -1082
  3. package/dist/browser.d.ts +31 -0
  4. package/dist/browser.d.ts.map +1 -0
  5. package/dist/browser.js +124 -0
  6. package/dist/browser.js.map +1 -0
  7. package/dist/data/models-catalog.json +17393 -17393
  8. package/dist/data/models-profiles.bak.json +2336 -2336
  9. package/dist/data/models-profiles.json +10370 -8746
  10. package/dist/data/models-profiles.schema.json +240 -240
  11. package/dist/data/models-registry.json +11192 -10728
  12. package/dist/index.d.ts +1 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/inferModelFamily.d.ts +2 -0
  17. package/dist/inferModelFamily.d.ts.map +1 -1
  18. package/dist/inferModelFamily.js +32 -1
  19. package/dist/inferModelFamily.js.map +1 -1
  20. package/package.json +90 -85
  21. package/dist/data/openrouter-models-catalog.json +0 -857
  22. package/dist/data/profiles-shortcuts.json +0 -295
  23. package/dist/isKnownProfileInput.d.ts +0 -9
  24. package/dist/isKnownProfileInput.d.ts.map +0 -1
  25. package/dist/isKnownProfileInput.js +0 -14
  26. package/dist/isKnownProfileInput.js.map +0 -1
  27. package/dist/isKnownProfileOrShortcut.d.ts +0 -6
  28. package/dist/isKnownProfileOrShortcut.d.ts.map +0 -1
  29. package/dist/isKnownProfileOrShortcut.js +0 -11
  30. package/dist/isKnownProfileOrShortcut.js.map +0 -1
  31. package/dist/legacyGraphEngineAliasMap.d.ts +0 -13
  32. package/dist/legacyGraphEngineAliasMap.d.ts.map +0 -1
  33. package/dist/legacyGraphEngineAliasMap.js +0 -16
  34. package/dist/legacyGraphEngineAliasMap.js.map +0 -1
  35. package/dist/listAIShortcuts.d.ts +0 -4
  36. package/dist/listAIShortcuts.d.ts.map +0 -1
  37. package/dist/listAIShortcuts.js +0 -12
  38. package/dist/listAIShortcuts.js.map +0 -1
  39. package/dist/profileDiscoveryMatch.d.ts +0 -15
  40. package/dist/profileDiscoveryMatch.d.ts.map +0 -1
  41. package/dist/profileDiscoveryMatch.js +0 -18
  42. package/dist/profileDiscoveryMatch.js.map +0 -1
  43. package/dist/profileInputMatch.d.ts +0 -20
  44. package/dist/profileInputMatch.d.ts.map +0 -1
  45. package/dist/profileInputMatch.js +0 -30
  46. package/dist/profileInputMatch.js.map +0 -1
  47. package/dist/profileModelFallback.d.ts +0 -13
  48. package/dist/profileModelFallback.d.ts.map +0 -1
  49. package/dist/profileModelFallback.js +0 -180
  50. package/dist/profileModelFallback.js.map +0 -1
@@ -0,0 +1,31 @@
1
+ import type { AIProfileChoice, AIProfileDefinition, CatalogModelEntry, ModelsCatalogJson, ModelsProfilesJson } from "./types.js";
2
+ export type { AIProfileDefinition, ModelsProfilesJson, CatalogModelEntry };
3
+ export interface CatalogPriceQuote {
4
+ input: number | null;
5
+ output: number | null;
6
+ currency: string;
7
+ unit: string;
8
+ openRouterModelId: string | null;
9
+ contextWindow: number | null;
10
+ maxOutput: number | null;
11
+ supportsReasoning: boolean;
12
+ supportsTools: boolean;
13
+ supportsVision: boolean;
14
+ }
15
+ /** Bundled models-profiles.json (same SoT the Node SDK uses offline). */
16
+ export declare function getBundledModelsProfiles(): ModelsProfilesJson;
17
+ /** Bundled models-catalog.json for pricing / capability enrichment. */
18
+ export declare function getBundledModelsCatalog(): ModelsCatalogJson;
19
+ /** Active (non-deprecated) profile definitions from the bundled registry. */
20
+ export declare function listBundledProfileDefinitions(options?: {
21
+ includeDeprecated?: boolean;
22
+ }): AIProfileDefinition[];
23
+ export declare function formatProfileChoiceKey(profile: string, choice: string): string;
24
+ /** Look up catalog pricing/capabilities for a vendor-native provider + modelId. */
25
+ export declare function lookupCatalogPrice(provider: string, modelId: string): CatalogPriceQuote | null;
26
+ /** Format USD / 1M token rates for columns. */
27
+ export declare function formatUsdPer1M(value: number | null | undefined): string;
28
+ export declare function choiceCostQuote(choice: AIProfileChoice): CatalogPriceQuote | null;
29
+ /** Bucket for cost filters: floor = cheap input, mid, high. */
30
+ export declare function costTierFromInput(input: number | null): "cheap" | "mid" | "high" | "unknown";
31
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;AAE3E,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;CACzB;AAMD,yEAAyE;AACzE,wBAAgB,wBAAwB,IAAI,kBAAkB,CAE7D;AAED,uEAAuE;AACvE,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D;AAED,6EAA6E;AAC7E,wBAAgB,6BAA6B,CAAC,OAAO,CAAC,EAAE;IACtD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,mBAAmB,EAAE,CAMxB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE9E;AA2BD,mFAAmF;AACnF,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,iBAAiB,GAAG,IAAI,CA4B1B;AAED,+CAA+C;AAC/C,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAMvE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,iBAAiB,GAAG,IAAI,CA0BjF;AAED,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAK5F"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Browser-safe surface for explorers / Vite.
3
+ * Does not import Node-only modules (fs, @x12i/env watchers, etc.).
4
+ */
5
+ import modelsProfiles from "./data/models-profiles.json" with { type: "json" };
6
+ import modelsCatalog from "./data/models-catalog.json" with { type: "json" };
7
+ function normalize(value) {
8
+ return value.trim().toLowerCase();
9
+ }
10
+ /** Bundled models-profiles.json (same SoT the Node SDK uses offline). */
11
+ export function getBundledModelsProfiles() {
12
+ return modelsProfiles;
13
+ }
14
+ /** Bundled models-catalog.json for pricing / capability enrichment. */
15
+ export function getBundledModelsCatalog() {
16
+ return modelsCatalog;
17
+ }
18
+ /** Active (non-deprecated) profile definitions from the bundled registry. */
19
+ export function listBundledProfileDefinitions(options) {
20
+ const doc = getBundledModelsProfiles();
21
+ return Object.values(doc.profiles).filter((profile) => {
22
+ if (options?.includeDeprecated)
23
+ return true;
24
+ return profile.status !== "deprecated";
25
+ });
26
+ }
27
+ export function formatProfileChoiceKey(profile, choice) {
28
+ return `${profile.trim()}/${choice.trim()}`;
29
+ }
30
+ function catalogIndex() {
31
+ const catalog = getBundledModelsCatalog();
32
+ const map = new Map();
33
+ for (const entry of catalog.models) {
34
+ const provider = normalize(String(entry.direct.provider));
35
+ const modelId = normalize(String(entry.direct.modelId));
36
+ map.set(`${provider}::${modelId}`, entry);
37
+ if (entry.openrouter?.modelId) {
38
+ map.set(`or::${normalize(entry.openrouter.modelId)}`, entry);
39
+ }
40
+ // Also index without batch suffix
41
+ if (modelId.endsWith(":batch")) {
42
+ map.set(`${provider}::${modelId.replace(/:batch$/, "")}`, entry);
43
+ }
44
+ }
45
+ return map;
46
+ }
47
+ let cachedIndex;
48
+ function getIndex() {
49
+ if (!cachedIndex)
50
+ cachedIndex = catalogIndex();
51
+ return cachedIndex;
52
+ }
53
+ /** Look up catalog pricing/capabilities for a vendor-native provider + modelId. */
54
+ export function lookupCatalogPrice(provider, modelId) {
55
+ const index = getIndex();
56
+ const key = `${normalize(provider)}::${normalize(modelId)}`;
57
+ const orKey = modelId.includes("/")
58
+ ? `or::${normalize(modelId)}`
59
+ : `or::${normalize(provider)}/${normalize(modelId)}`;
60
+ const entry = index.get(key) ?? index.get(orKey);
61
+ if (!entry)
62
+ return null;
63
+ const pricing = entry.openrouter?.pricing;
64
+ const mods = entry.openrouter?.modalities ?? entry.modalities;
65
+ const caps = entry.openrouter?.capabilities;
66
+ return {
67
+ input: pricing?.input ?? null,
68
+ output: pricing?.output ?? null,
69
+ currency: "USD",
70
+ unit: "1M_tokens",
71
+ openRouterModelId: entry.openrouter?.modelId ?? null,
72
+ contextWindow: entry.openrouter?.contextWindow ?? entry.contextWindow ?? null,
73
+ maxOutput: entry.openrouter?.maxCompletionTokens ?? entry.maxCompletionTokens ?? null,
74
+ supportsReasoning: caps?.reasoning === true,
75
+ supportsTools: caps?.toolCalling === true,
76
+ supportsVision: Boolean(mods?.input?.includes("image") || mods?.input?.includes("file")),
77
+ };
78
+ }
79
+ /** Format USD / 1M token rates for columns. */
80
+ export function formatUsdPer1M(value) {
81
+ if (value == null || Number.isNaN(value))
82
+ return "—";
83
+ if (value === 0)
84
+ return "$0";
85
+ if (value < 0.01)
86
+ return `$${value.toFixed(4)}`;
87
+ if (value < 1)
88
+ return `$${value.toFixed(3)}`;
89
+ return `$${value.toFixed(2)}`;
90
+ }
91
+ export function choiceCostQuote(choice) {
92
+ const fromChoice = choice.pricing;
93
+ if (fromChoice && typeof fromChoice === "object") {
94
+ const v2 = fromChoice;
95
+ const input = v2.standard?.input ?? v2.input ?? null;
96
+ const output = v2.standard?.output ?? v2.output ?? null;
97
+ if (input != null || output != null) {
98
+ return {
99
+ input,
100
+ output,
101
+ currency: "USD",
102
+ unit: "1M_tokens",
103
+ openRouterModelId: null,
104
+ contextWindow: choice.limits?.contextWindow ?? null,
105
+ maxOutput: choice.limits?.maxOutputTokens ?? null,
106
+ supportsReasoning: false,
107
+ supportsTools: false,
108
+ supportsVision: false,
109
+ };
110
+ }
111
+ }
112
+ return lookupCatalogPrice(choice.provider, choice.modelId);
113
+ }
114
+ /** Bucket for cost filters: floor = cheap input, mid, high. */
115
+ export function costTierFromInput(input) {
116
+ if (input == null)
117
+ return "unknown";
118
+ if (input <= 0.5)
119
+ return "cheap";
120
+ if (input <= 5)
121
+ return "mid";
122
+ return "high";
123
+ }
124
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,cAAc,MAAM,6BAA6B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC/E,OAAO,aAAa,MAAM,4BAA4B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAwB7E,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACpC,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,wBAAwB;IACtC,OAAO,cAAoC,CAAC;AAC9C,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,uBAAuB;IACrC,OAAO,aAAkC,CAAC;AAC5C,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,6BAA6B,CAAC,OAE7C;IACC,MAAM,GAAG,GAAG,wBAAwB,EAAE,CAAC;IACvC,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QACpD,IAAI,OAAO,EAAE,iBAAiB;YAAE,OAAO,IAAI,CAAC;QAC5C,OAAO,OAAO,CAAC,MAAM,KAAK,YAAY,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAe,EAAE,MAAc;IACpE,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,OAAO,GAAG,uBAAuB,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,EAA6B,CAAC;IACjD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,KAAK,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;YAC9B,GAAG,CAAC,GAAG,CAAC,OAAO,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC;QACD,kCAAkC;QAClC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,IAAI,WAAuD,CAAC;AAE5D,SAAS,QAAQ;IACf,IAAI,CAAC,WAAW;QAAE,WAAW,GAAG,YAAY,EAAE,CAAC;IAC/C,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,kBAAkB,CAChC,QAAgB,EAChB,OAAe;IAEf,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QACjC,CAAC,CAAC,OAAO,SAAS,CAAC,OAAO,CAAC,EAAE;QAC7B,CAAC,CAAC,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC;IAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC;IAE5C,OAAO;QACL,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI;QAC7B,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI;QAC/B,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,WAAW;QACjB,iBAAiB,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,IAAI,IAAI;QACpD,aAAa,EAAE,KAAK,CAAC,UAAU,EAAE,aAAa,IAAI,KAAK,CAAC,aAAa,IAAI,IAAI;QAC7E,SAAS,EACP,KAAK,CAAC,UAAU,EAAE,mBAAmB,IAAI,KAAK,CAAC,mBAAmB,IAAI,IAAI;QAC5E,iBAAiB,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI;QAC3C,aAAa,EAAE,IAAI,EAAE,WAAW,KAAK,IAAI;QACzC,cAAc,EAAE,OAAO,CACrB,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAChE;KACF,CAAC;AACJ,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,cAAc,CAAC,KAAgC;IAC7D,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACrD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAuB;IACrD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;IAClC,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACjD,MAAM,EAAE,GAAG,UAIV,CAAC;QACF,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC;QACrD,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC;QACxD,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACpC,OAAO;gBACL,KAAK;gBACL,MAAM;gBACN,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,WAAW;gBACjB,iBAAiB,EAAE,IAAI;gBACvB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,IAAI,IAAI;gBACnD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,IAAI,IAAI;gBACjD,iBAAiB,EAAE,KAAK;gBACxB,aAAa,EAAE,KAAK;gBACpB,cAAc,EAAE,KAAK;aACtB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,kBAAkB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,iBAAiB,CAAC,KAAoB;IACpD,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IACpC,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,OAAO,CAAC;IACjC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC"}