@stll/ai-catalog 0.8.2 → 0.10.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 CHANGED
@@ -39,8 +39,10 @@ one refresh pull request for both snapshots.
39
39
  `gen:capabilities --refresh` rejects before fetching or writing: rates owns the
40
40
  shared upstream refresh, and capabilities reads those refreshed inputs.
41
41
  The snapshot covers text input/output, cache reads/writes, and context tiers.
42
- Audio pricing is deliberately excluded because Stella does not route audio
43
- model input; an unknown models.dev cost field fails generation.
42
+ The text-model snapshot excludes audio rates; an unknown models.dev cost field
43
+ fails generation. `@stll/ai-catalog/transcription` owns the separately curated
44
+ transcription catalog, with dated public sources, rational duration rates, and
45
+ explicit capability and regional-availability evidence.
44
46
 
45
47
  ## Install
46
48
 
@@ -1,4 +1,4 @@
1
- import { D as ReasoningEffort, a as BYOKProvider } from "./index-COmyIxMN.js";
1
+ import { D as ReasoningEffort, a as BYOKProvider } from "./index-Cez3kbD9.js";
2
2
  //#region src/benchmark-frontier.d.ts
3
3
  export type ModelBenchmarkMeasurement = {
4
4
  sourceModelId: string;
@@ -1,5 +1,5 @@
1
- import { w as OfferedBYOKModelId } from "./index-COmyIxMN.js";
2
1
  import { ModelBenchmarkMeasurement } from "./benchmark-frontier.js";
2
+ import { w as OfferedBYOKModelId } from "./index-Cez3kbD9.js";
3
3
  //#region src/benchmark-sources.d.ts
4
4
  export declare const MODEL_BENCHMARK_NAME = "Text Arena";
5
5
  export declare const MODEL_BENCHMARK_LICENCE = "CC BY 4.0";
@@ -1,4 +1,4 @@
1
- import { E as getModelRate, G as MODEL_RATE_UNITS_PER_USD, K as getStandardModelRate } from "./src-DvSnw4Iz.js";
1
+ import { E as getModelRate, G as MODEL_RATE_UNITS_PER_USD, K as getStandardModelRate } from "./src-d-7yksBq.js";
2
2
  //#region src/benchmark-sources.ts
3
3
  const MODEL_BENCHMARK_NAME = "Text Arena";
4
4
  const MODEL_BENCHMARK_LICENCE = "CC BY 4.0";
@@ -1755,9 +1755,9 @@ declare const MODEL_RATES: {
1755
1755
  };
1756
1756
  readonly "mistral-large-4": {
1757
1757
  readonly kind: "flat";
1758
- readonly inputPerMTok: 136000;
1759
- readonly outputPerMTok: 418000;
1760
- readonly cachedInputPerMTok: 14000;
1758
+ readonly inputPerMTok: 70000;
1759
+ readonly outputPerMTok: 210000;
1760
+ readonly cachedInputPerMTok: 7000;
1761
1761
  };
1762
1762
  readonly "mistral-large-latest": {
1763
1763
  readonly kind: "flat";
@@ -2812,7 +2812,7 @@ declare const MODEL_REASONING_EFFORTS: {
2812
2812
  readonly "us.amazon.nova-micro-v1:0": null;
2813
2813
  readonly "openai.gpt-oss-120b-1:0": readonly ["low", "medium", "high"];
2814
2814
  readonly "openai.gpt-oss-20b-1:0": readonly ["low", "medium", "high"];
2815
- readonly "mistral-large-4": readonly ["none", "high"];
2815
+ readonly "mistral-large-4": readonly ["low", "medium", "high"];
2816
2816
  readonly "mistral-large-latest": null;
2817
2817
  readonly "mistral-medium-latest": readonly ["none", "high"];
2818
2818
  readonly "mistral-small-latest": readonly ["none", "high"];
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { $ as MODEL_IMAGE_INPUT_CAPABILITIES, A as STREAMING_TOOL_USE_SUPPORTS, At as MODEL_TASK_OVERRIDE_GROUP, B as getModelRate, Bt as resolveDefaultModel, C as ModelDisplayMetadata, Ct as ModelRateAmounts, D as ReasoningEffort, Dt as MODEL_OVERRIDE_GROUPS, E as RECOMMENDED_CHAT_MODELS, F as TemperaturePolicy, G as isBYOKProviderRoleSupported, H as getModelReasoningEfforts, I as getContextWindowTokens, J as resolveReasoningEffort, K as isChatPdfAttachmentModelSupported, L as getModelDefaultReasoningEffort, Lt as ModelOverrideGroup, M as TANSTACK_AI_PROVIDERS, N as TEMPERATURE_POLICIES, O as ResolveReasoningEffortOptions, Ot as MODEL_OVERRIDE_GROUP_TASK, P as TanStackAIProvider, Q as MODEL_DEFAULT_REASONING_EFFORTS, R as getModelDisplayMetadata, Rt as ModelTask, S as MODEL_STREAMING_TOOL_USE, St as ModelRate, T as REASONING_EFFORTS, Tt as resolveModelRate, U as getOutputTokenLimit, V as getModelReasoningCapabilities, Vt as resolveDefaultOverrideModels, W as isBYOKModelRoleSupported, X as shouldEmitTemperature, Y as resolveWorkingBYOKModelForTask, Z as supportsStreamingToolUse, _ as IMAGE_INPUT_CAPABILITIES, _t as REASONING_REPLAY_FORMATS, a as BYOKProvider, at as CAPABILITY_OVERRIDES, b as MODEL_CATALOG_PROVIDER_KIND, bt as MODEL_RATES, c as BYOK_MODEL_OPTIONS, ct as ImageInputOverride, d as DECISION_MODEL_CATALOG, dt as MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER, et as MODEL_OUTPUT_TOKEN_LIMITS, f as DECISION_MODEL_PROVIDERS, ft as MODELS_DEV_RATE_SOURCE_ALIASES, g as FirstPartyModelProvider, gt as ModelReasoningCapabilities, h as FIRST_PARTY_MODEL_PROVIDERS, ht as MODEL_REASONING_CAPABILITIES, i as BYOKModelIdByProvider, it as DocumentInputOverride, j as StreamingToolUseSupport, k as ResolvedReasoningEffort, kt as MODEL_TASKS, l as CHAT_PDF_ATTACHMENT_MODEL_OPTIONS, lt as ImageInputOverrides, m as DecisionModelProvider, mt as RETAINED_MODELS_DEV_RATE_ENTRIES, n as AI_PROVIDERS, nt as MODEL_TEMPERATURE_POLICIES, o as BYOK_DEFAULT_MODELS, ot as CapabilityOverride, p as DEFAULT_CONTEXT_WINDOW_TOKENS, pt as ModelsDevRateProvider, q as normalizeModelCatalogId, r as ANTHROPIC_ADAPTIVE_THINKING_MODELS, rt as DOCUMENT_INPUT_OVERRIDES, s as BYOK_DOCUMENT_INPUT_MODEL_OPTIONS, st as IMAGE_INPUT_OVERRIDES, t as AIProvider, tt as MODEL_REASONING_EFFORTS, u as CONTEXT_WINDOW_TOKENS, ut as MODELS_DEV_RATE_CORRECTIONS, v as ImageInputCapability, vt as ReasoningProvenance, w as OfferedBYOKModelId, wt as getStandardModelRate, x as MODEL_DISPLAY_METADATA, xt as MODEL_RATE_UNITS_PER_USD, y as MODEL_CATALOG_ID_ALIASES, yt as ReasoningReplayFormat, z as getModelImageInputCapability } from "./index-COmyIxMN.js";
1
+ import { $ as MODEL_IMAGE_INPUT_CAPABILITIES, A as STREAMING_TOOL_USE_SUPPORTS, At as MODEL_TASK_OVERRIDE_GROUP, B as getModelRate, Bt as resolveDefaultModel, C as ModelDisplayMetadata, Ct as ModelRateAmounts, D as ReasoningEffort, Dt as MODEL_OVERRIDE_GROUPS, E as RECOMMENDED_CHAT_MODELS, F as TemperaturePolicy, G as isBYOKProviderRoleSupported, H as getModelReasoningEfforts, I as getContextWindowTokens, J as resolveReasoningEffort, K as isChatPdfAttachmentModelSupported, L as getModelDefaultReasoningEffort, Lt as ModelOverrideGroup, M as TANSTACK_AI_PROVIDERS, N as TEMPERATURE_POLICIES, O as ResolveReasoningEffortOptions, Ot as MODEL_OVERRIDE_GROUP_TASK, P as TanStackAIProvider, Q as MODEL_DEFAULT_REASONING_EFFORTS, R as getModelDisplayMetadata, Rt as ModelTask, S as MODEL_STREAMING_TOOL_USE, St as ModelRate, T as REASONING_EFFORTS, Tt as resolveModelRate, U as getOutputTokenLimit, V as getModelReasoningCapabilities, Vt as resolveDefaultOverrideModels, W as isBYOKModelRoleSupported, X as shouldEmitTemperature, Y as resolveWorkingBYOKModelForTask, Z as supportsStreamingToolUse, _ as IMAGE_INPUT_CAPABILITIES, _t as REASONING_REPLAY_FORMATS, a as BYOKProvider, at as CAPABILITY_OVERRIDES, b as MODEL_CATALOG_PROVIDER_KIND, bt as MODEL_RATES, c as BYOK_MODEL_OPTIONS, ct as ImageInputOverride, d as DECISION_MODEL_CATALOG, dt as MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER, et as MODEL_OUTPUT_TOKEN_LIMITS, f as DECISION_MODEL_PROVIDERS, ft as MODELS_DEV_RATE_SOURCE_ALIASES, g as FirstPartyModelProvider, gt as ModelReasoningCapabilities, h as FIRST_PARTY_MODEL_PROVIDERS, ht as MODEL_REASONING_CAPABILITIES, i as BYOKModelIdByProvider, it as DocumentInputOverride, j as StreamingToolUseSupport, k as ResolvedReasoningEffort, kt as MODEL_TASKS, l as CHAT_PDF_ATTACHMENT_MODEL_OPTIONS, lt as ImageInputOverrides, m as DecisionModelProvider, mt as RETAINED_MODELS_DEV_RATE_ENTRIES, n as AI_PROVIDERS, nt as MODEL_TEMPERATURE_POLICIES, o as BYOK_DEFAULT_MODELS, ot as CapabilityOverride, p as DEFAULT_CONTEXT_WINDOW_TOKENS, pt as ModelsDevRateProvider, q as normalizeModelCatalogId, r as ANTHROPIC_ADAPTIVE_THINKING_MODELS, rt as DOCUMENT_INPUT_OVERRIDES, s as BYOK_DOCUMENT_INPUT_MODEL_OPTIONS, st as IMAGE_INPUT_OVERRIDES, t as AIProvider, tt as MODEL_REASONING_EFFORTS, u as CONTEXT_WINDOW_TOKENS, ut as MODELS_DEV_RATE_CORRECTIONS, v as ImageInputCapability, vt as ReasoningProvenance, w as OfferedBYOKModelId, wt as getStandardModelRate, x as MODEL_DISPLAY_METADATA, xt as MODEL_RATE_UNITS_PER_USD, y as MODEL_CATALOG_ID_ALIASES, yt as ReasoningReplayFormat, z as getModelImageInputCapability } from "./index-Cez3kbD9.js";
2
2
  export { AIProvider, AI_PROVIDERS, ANTHROPIC_ADAPTIVE_THINKING_MODELS, BYOKModelIdByProvider, BYOKProvider, BYOK_DEFAULT_MODELS, BYOK_DOCUMENT_INPUT_MODEL_OPTIONS, BYOK_MODEL_OPTIONS, CAPABILITY_OVERRIDES, CHAT_PDF_ATTACHMENT_MODEL_OPTIONS, CONTEXT_WINDOW_TOKENS, type CapabilityOverride, DECISION_MODEL_CATALOG, DECISION_MODEL_PROVIDERS, DEFAULT_CONTEXT_WINDOW_TOKENS, DOCUMENT_INPUT_OVERRIDES, DecisionModelProvider, type DocumentInputOverride, FIRST_PARTY_MODEL_PROVIDERS, FirstPartyModelProvider, IMAGE_INPUT_CAPABILITIES, IMAGE_INPUT_OVERRIDES, ImageInputCapability, type ImageInputOverride, type ImageInputOverrides, MODELS_DEV_RATE_CORRECTIONS, MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER, MODELS_DEV_RATE_SOURCE_ALIASES, MODEL_CATALOG_ID_ALIASES, MODEL_CATALOG_PROVIDER_KIND, MODEL_DEFAULT_REASONING_EFFORTS, MODEL_DISPLAY_METADATA, MODEL_IMAGE_INPUT_CAPABILITIES, MODEL_OUTPUT_TOKEN_LIMITS, MODEL_OVERRIDE_GROUPS, MODEL_OVERRIDE_GROUP_TASK, MODEL_RATES, MODEL_RATE_UNITS_PER_USD, MODEL_REASONING_CAPABILITIES, MODEL_REASONING_EFFORTS, MODEL_STREAMING_TOOL_USE, MODEL_TASKS, MODEL_TASK_OVERRIDE_GROUP, MODEL_TEMPERATURE_POLICIES, ModelDisplayMetadata, type ModelOverrideGroup, type ModelRate, type ModelRateAmounts, type ModelReasoningCapabilities, type ModelTask, type ModelsDevRateProvider, OfferedBYOKModelId, REASONING_EFFORTS, REASONING_REPLAY_FORMATS, RECOMMENDED_CHAT_MODELS, RETAINED_MODELS_DEV_RATE_ENTRIES, ReasoningEffort, type ReasoningProvenance, type ReasoningReplayFormat, ResolveReasoningEffortOptions, ResolvedReasoningEffort, STREAMING_TOOL_USE_SUPPORTS, StreamingToolUseSupport, TANSTACK_AI_PROVIDERS, TEMPERATURE_POLICIES, TanStackAIProvider, TemperaturePolicy, getContextWindowTokens, getModelDefaultReasoningEffort, getModelDisplayMetadata, getModelImageInputCapability, getModelRate, getModelReasoningCapabilities, getModelReasoningEfforts, getOutputTokenLimit, getStandardModelRate, isBYOKModelRoleSupported, isBYOKProviderRoleSupported, isChatPdfAttachmentModelSupported, normalizeModelCatalogId, resolveDefaultModel, resolveDefaultOverrideModels, resolveModelRate, resolveReasoningEffort, resolveWorkingBYOKModelForTask, shouldEmitTemperature, supportsStreamingToolUse };
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import { $ as MODEL_OUTPUT_TOKEN_LIMITS, A as isBYOKModelRoleSupported, B as IMAGE_INPUT_OVERRIDES, C as getModelDefaultReasoningEffort, D as getModelReasoningCapabilities, E as getModelRate, F as resolveWorkingBYOKModelForTask, G as MODEL_RATE_UNITS_PER_USD, H as MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER, I as shouldEmitTemperature, J as MODEL_REASONING_CAPABILITIES, K as getStandardModelRate, L as supportsStreamingToolUse, M as isChatPdfAttachmentModelSupported, N as normalizeModelCatalogId, O as getModelReasoningEfforts, P as resolveReasoningEffort, Q as MODEL_IMAGE_INPUT_CAPABILITIES, R as DOCUMENT_INPUT_OVERRIDES, S as getContextWindowTokens, T as getModelImageInputCapability, U as MODELS_DEV_RATE_SOURCE_ALIASES, V as MODELS_DEV_RATE_CORRECTIONS, W as RETAINED_MODELS_DEV_RATE_ENTRIES, X as MODEL_RATES, Y as REASONING_REPLAY_FORMATS, Z as MODEL_DEFAULT_REASONING_EFFORTS, _ as REASONING_EFFORTS, a as BYOK_MODEL_OPTIONS, b as TANSTACK_AI_PROVIDERS, c as DECISION_MODEL_CATALOG, d as FIRST_PARTY_MODEL_PROVIDERS, et as MODEL_REASONING_EFFORTS, f as IMAGE_INPUT_CAPABILITIES, g as MODEL_STREAMING_TOOL_USE, h as MODEL_DISPLAY_METADATA, i as BYOK_DOCUMENT_INPUT_MODEL_OPTIONS, j as isBYOKProviderRoleSupported, k as getOutputTokenLimit, l as DECISION_MODEL_PROVIDERS, m as MODEL_CATALOG_PROVIDER_KIND, n as ANTHROPIC_ADAPTIVE_THINKING_MODELS, o as CHAT_PDF_ATTACHMENT_MODEL_OPTIONS, p as MODEL_CATALOG_ID_ALIASES, q as resolveModelRate, r as BYOK_DEFAULT_MODELS, s as CONTEXT_WINDOW_TOKENS, t as AI_PROVIDERS, tt as MODEL_TEMPERATURE_POLICIES, u as DEFAULT_CONTEXT_WINDOW_TOKENS, v as RECOMMENDED_CHAT_MODELS, w as getModelDisplayMetadata, x as TEMPERATURE_POLICIES, y as STREAMING_TOOL_USE_SUPPORTS, z as CAPABILITY_OVERRIDES } from "./src-DvSnw4Iz.js";
1
+ import { $ as MODEL_OUTPUT_TOKEN_LIMITS, A as isBYOKModelRoleSupported, B as IMAGE_INPUT_OVERRIDES, C as getModelDefaultReasoningEffort, D as getModelReasoningCapabilities, E as getModelRate, F as resolveWorkingBYOKModelForTask, G as MODEL_RATE_UNITS_PER_USD, H as MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER, I as shouldEmitTemperature, J as MODEL_REASONING_CAPABILITIES, K as getStandardModelRate, L as supportsStreamingToolUse, M as isChatPdfAttachmentModelSupported, N as normalizeModelCatalogId, O as getModelReasoningEfforts, P as resolveReasoningEffort, Q as MODEL_IMAGE_INPUT_CAPABILITIES, R as DOCUMENT_INPUT_OVERRIDES, S as getContextWindowTokens, T as getModelImageInputCapability, U as MODELS_DEV_RATE_SOURCE_ALIASES, V as MODELS_DEV_RATE_CORRECTIONS, W as RETAINED_MODELS_DEV_RATE_ENTRIES, X as MODEL_RATES, Y as REASONING_REPLAY_FORMATS, Z as MODEL_DEFAULT_REASONING_EFFORTS, _ as REASONING_EFFORTS, a as BYOK_MODEL_OPTIONS, b as TANSTACK_AI_PROVIDERS, c as DECISION_MODEL_CATALOG, d as FIRST_PARTY_MODEL_PROVIDERS, et as MODEL_REASONING_EFFORTS, f as IMAGE_INPUT_CAPABILITIES, g as MODEL_STREAMING_TOOL_USE, h as MODEL_DISPLAY_METADATA, i as BYOK_DOCUMENT_INPUT_MODEL_OPTIONS, j as isBYOKProviderRoleSupported, k as getOutputTokenLimit, l as DECISION_MODEL_PROVIDERS, m as MODEL_CATALOG_PROVIDER_KIND, n as ANTHROPIC_ADAPTIVE_THINKING_MODELS, o as CHAT_PDF_ATTACHMENT_MODEL_OPTIONS, p as MODEL_CATALOG_ID_ALIASES, q as resolveModelRate, r as BYOK_DEFAULT_MODELS, s as CONTEXT_WINDOW_TOKENS, t as AI_PROVIDERS, tt as MODEL_TEMPERATURE_POLICIES, u as DEFAULT_CONTEXT_WINDOW_TOKENS, v as RECOMMENDED_CHAT_MODELS, w as getModelDisplayMetadata, x as TEMPERATURE_POLICIES, y as STREAMING_TOOL_USE_SUPPORTS, z as CAPABILITY_OVERRIDES } from "./src-d-7yksBq.js";
2
2
  import { MODEL_OVERRIDE_GROUPS, MODEL_OVERRIDE_GROUP_TASK, MODEL_TASKS, MODEL_TASK_OVERRIDE_GROUP, resolveDefaultModel, resolveDefaultOverrideModels } from "./model-defaults-ledger.js";
3
3
  export { AI_PROVIDERS, ANTHROPIC_ADAPTIVE_THINKING_MODELS, BYOK_DEFAULT_MODELS, BYOK_DOCUMENT_INPUT_MODEL_OPTIONS, BYOK_MODEL_OPTIONS, CAPABILITY_OVERRIDES, CHAT_PDF_ATTACHMENT_MODEL_OPTIONS, CONTEXT_WINDOW_TOKENS, DECISION_MODEL_CATALOG, DECISION_MODEL_PROVIDERS, DEFAULT_CONTEXT_WINDOW_TOKENS, DOCUMENT_INPUT_OVERRIDES, FIRST_PARTY_MODEL_PROVIDERS, IMAGE_INPUT_CAPABILITIES, IMAGE_INPUT_OVERRIDES, MODELS_DEV_RATE_CORRECTIONS, MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER, MODELS_DEV_RATE_SOURCE_ALIASES, MODEL_CATALOG_ID_ALIASES, MODEL_CATALOG_PROVIDER_KIND, MODEL_DEFAULT_REASONING_EFFORTS, MODEL_DISPLAY_METADATA, MODEL_IMAGE_INPUT_CAPABILITIES, MODEL_OUTPUT_TOKEN_LIMITS, MODEL_OVERRIDE_GROUPS, MODEL_OVERRIDE_GROUP_TASK, MODEL_RATES, MODEL_RATE_UNITS_PER_USD, MODEL_REASONING_CAPABILITIES, MODEL_REASONING_EFFORTS, MODEL_STREAMING_TOOL_USE, MODEL_TASKS, MODEL_TASK_OVERRIDE_GROUP, MODEL_TEMPERATURE_POLICIES, REASONING_EFFORTS, REASONING_REPLAY_FORMATS, RECOMMENDED_CHAT_MODELS, RETAINED_MODELS_DEV_RATE_ENTRIES, STREAMING_TOOL_USE_SUPPORTS, TANSTACK_AI_PROVIDERS, TEMPERATURE_POLICIES, getContextWindowTokens, getModelDefaultReasoningEffort, getModelDisplayMetadata, getModelImageInputCapability, getModelRate, getModelReasoningCapabilities, getModelReasoningEfforts, getOutputTokenLimit, getStandardModelRate, isBYOKModelRoleSupported, isBYOKProviderRoleSupported, isChatPdfAttachmentModelSupported, normalizeModelCatalogId, resolveDefaultModel, resolveDefaultOverrideModels, resolveModelRate, resolveReasoningEffort, resolveWorkingBYOKModelForTask, shouldEmitTemperature, supportsStreamingToolUse };
@@ -1,2 +1,2 @@
1
- import { At as MODEL_TASK_OVERRIDE_GROUP, Bt as resolveDefaultModel, Dt as MODEL_OVERRIDE_GROUPS, Et as MODEL_DEFAULTS_LEDGER, Ft as ModelDefaultsLedger, It as ModelMode, Lt as ModelOverrideGroup, Mt as ModelDefaultEntry, Nt as ModelDefaultQuality, Ot as MODEL_OVERRIDE_GROUP_TASK, Pt as ModelDefaultRationale, Rt as ModelTask, Vt as resolveDefaultOverrideModels, jt as ModelDefaultCandidate, kt as MODEL_TASKS, zt as ResolvedDefaultModel } from "./index-COmyIxMN.js";
1
+ import { At as MODEL_TASK_OVERRIDE_GROUP, Bt as resolveDefaultModel, Dt as MODEL_OVERRIDE_GROUPS, Et as MODEL_DEFAULTS_LEDGER, Ft as ModelDefaultsLedger, It as ModelMode, Lt as ModelOverrideGroup, Mt as ModelDefaultEntry, Nt as ModelDefaultQuality, Ot as MODEL_OVERRIDE_GROUP_TASK, Pt as ModelDefaultRationale, Rt as ModelTask, Vt as resolveDefaultOverrideModels, jt as ModelDefaultCandidate, kt as MODEL_TASKS, zt as ResolvedDefaultModel } from "./index-Cez3kbD9.js";
2
2
  export { MODEL_DEFAULTS_LEDGER, MODEL_OVERRIDE_GROUPS, MODEL_OVERRIDE_GROUP_TASK, MODEL_TASKS, MODEL_TASK_OVERRIDE_GROUP, ModelDefaultCandidate, ModelDefaultEntry, ModelDefaultQuality, ModelDefaultRationale, ModelDefaultsLedger, ModelMode, ModelOverrideGroup, ModelTask, ResolvedDefaultModel, resolveDefaultModel, resolveDefaultOverrideModels };
@@ -560,7 +560,11 @@ const MODEL_REASONING_EFFORTS = {
560
560
  "medium",
561
561
  "high"
562
562
  ],
563
- "mistral-large-4": ["none", "high"],
563
+ "mistral-large-4": [
564
+ "low",
565
+ "medium",
566
+ "high"
567
+ ],
564
568
  "mistral-large-latest": null,
565
569
  "mistral-medium-latest": ["none", "high"],
566
570
  "mistral-small-latest": ["none", "high"]
@@ -1160,9 +1164,9 @@ const MODEL_RATES = {
1160
1164
  },
1161
1165
  "mistral-large-4": {
1162
1166
  kind: "flat",
1163
- inputPerMTok: 136e3,
1164
- outputPerMTok: 418e3,
1165
- cachedInputPerMTok: 14e3
1167
+ inputPerMTok: 7e4,
1168
+ outputPerMTok: 21e4,
1169
+ cachedInputPerMTok: 7e3
1166
1170
  },
1167
1171
  "mistral-large-latest": {
1168
1172
  kind: "flat",
@@ -0,0 +1,381 @@
1
+ //#region src/transcription.d.ts
2
+ type TranscriptionDurationPrice = {
3
+ kind: "audio-second";
4
+ usdNumerator: number;
5
+ secondsDenominator: number;
6
+ };
7
+ type TranscriptionResidency = "eu" | "us";
8
+ type TranscriptionRegionalAvailability = {
9
+ status: "available";
10
+ price: TranscriptionDurationPrice;
11
+ } | {
12
+ status: "unavailable" | "unknown";
13
+ };
14
+ type TranscriptionModelMetadata = {
15
+ displayName: string;
16
+ price: TranscriptionDurationPrice;
17
+ languageClaim: string;
18
+ /** Granularities supported by the cited evidence; word includes segments. */
19
+ timestamps: "none" | "segment" | "word";
20
+ vocabularyMechanism: "none" | "groq-prompt" | "azure-phrase-list" | "context-hint";
21
+ diarization: "supported" | "unconfirmed";
22
+ residency: Record<TranscriptionResidency, TranscriptionRegionalAvailability>;
23
+ source: {
24
+ url: string;
25
+ checkedAt: string;
26
+ };
27
+ };
28
+ export declare const TRANSCRIPTION_MODELS: {
29
+ readonly "openai/whisper-large-v3-turbo": {
30
+ readonly displayName: "Whisper Large V3 Turbo";
31
+ readonly price: {
32
+ readonly kind: "audio-second";
33
+ readonly usdNumerator: 3;
34
+ readonly secondsDenominator: 1000000;
35
+ };
36
+ readonly languageClaim: "99+ languages";
37
+ readonly timestamps: "none";
38
+ readonly vocabularyMechanism: "groq-prompt";
39
+ readonly diarization: "unconfirmed";
40
+ readonly residency: {
41
+ readonly eu: {
42
+ readonly status: "unavailable";
43
+ };
44
+ readonly us: {
45
+ readonly status: "unknown";
46
+ };
47
+ };
48
+ readonly source: {
49
+ readonly url: "https://openrouter.ai/openai/whisper-large-v3-turbo";
50
+ readonly checkedAt: "2026-10-29";
51
+ };
52
+ };
53
+ readonly "openai/whisper-large-v3": {
54
+ readonly displayName: "Whisper Large V3";
55
+ readonly price: {
56
+ readonly kind: "audio-second";
57
+ readonly usdNumerator: 8;
58
+ readonly secondsDenominator: 1000000;
59
+ };
60
+ readonly languageClaim: "99+ languages";
61
+ readonly timestamps: "word";
62
+ readonly vocabularyMechanism: "groq-prompt";
63
+ readonly diarization: "unconfirmed";
64
+ readonly residency: {
65
+ readonly eu: {
66
+ readonly status: "unavailable";
67
+ };
68
+ readonly us: {
69
+ readonly status: "unknown";
70
+ };
71
+ };
72
+ readonly source: {
73
+ readonly url: "https://openrouter.ai/openai/whisper-large-v3";
74
+ readonly checkedAt: "2026-10-29";
75
+ };
76
+ };
77
+ readonly "nvidia/parakeet-tdt-0.6b-v3": {
78
+ readonly displayName: "Parakeet TDT 0.6B v3";
79
+ readonly price: {
80
+ readonly kind: "audio-second";
81
+ readonly usdNumerator: 25;
82
+ readonly secondsDenominator: 1000000;
83
+ };
84
+ readonly languageClaim: "All official EU languages";
85
+ readonly timestamps: "segment";
86
+ readonly vocabularyMechanism: "none";
87
+ readonly diarization: "unconfirmed";
88
+ readonly residency: {
89
+ readonly eu: {
90
+ readonly status: "unavailable";
91
+ };
92
+ readonly us: {
93
+ readonly status: "unknown";
94
+ };
95
+ };
96
+ readonly source: {
97
+ readonly url: "https://openrouter.ai/nvidia/parakeet-tdt-0.6b-v3";
98
+ readonly checkedAt: "2026-10-29";
99
+ };
100
+ };
101
+ readonly "microsoft/mai-transcribe-2": {
102
+ readonly displayName: "MAI-Transcribe 2";
103
+ readonly price: {
104
+ readonly kind: "audio-second";
105
+ readonly usdNumerator: 1;
106
+ readonly secondsDenominator: 36000;
107
+ };
108
+ readonly languageClaim: "60 languages";
109
+ readonly timestamps: "word";
110
+ readonly vocabularyMechanism: "azure-phrase-list";
111
+ readonly diarization: "supported";
112
+ readonly residency: {
113
+ readonly eu: {
114
+ readonly status: "unavailable";
115
+ };
116
+ readonly us: {
117
+ readonly status: "unknown";
118
+ };
119
+ };
120
+ readonly source: {
121
+ readonly url: "https://openrouter.ai/microsoft/mai-transcribe-2";
122
+ readonly checkedAt: "2026-10-29";
123
+ };
124
+ };
125
+ readonly "elevenlabs/scribe-v2": {
126
+ readonly displayName: "Scribe v2";
127
+ readonly price: {
128
+ readonly kind: "audio-second";
129
+ readonly usdNumerator: 61;
130
+ readonly secondsDenominator: 1000000;
131
+ };
132
+ readonly languageClaim: "90+ languages";
133
+ readonly timestamps: "word";
134
+ readonly vocabularyMechanism: "none";
135
+ readonly diarization: "supported";
136
+ readonly residency: {
137
+ readonly eu: {
138
+ readonly status: "unavailable";
139
+ };
140
+ readonly us: {
141
+ readonly status: "unknown";
142
+ };
143
+ };
144
+ readonly source: {
145
+ readonly url: "https://openrouter.ai/elevenlabs/scribe-v2";
146
+ readonly checkedAt: "2026-10-29";
147
+ };
148
+ };
149
+ readonly "mistralai/voxtral-mini-transcribe": {
150
+ readonly displayName: "Voxtral Mini Transcribe";
151
+ readonly price: {
152
+ readonly kind: "audio-second";
153
+ readonly usdNumerator: 50;
154
+ readonly secondsDenominator: 1000000;
155
+ };
156
+ readonly languageClaim: "Not specified";
157
+ readonly timestamps: "none";
158
+ readonly vocabularyMechanism: "none";
159
+ readonly diarization: "unconfirmed";
160
+ readonly residency: {
161
+ readonly eu: {
162
+ readonly status: "available";
163
+ readonly price: {
164
+ readonly kind: "audio-second";
165
+ readonly usdNumerator: 55;
166
+ readonly secondsDenominator: 1000000;
167
+ };
168
+ };
169
+ readonly us: {
170
+ readonly status: "unknown";
171
+ };
172
+ };
173
+ readonly source: {
174
+ readonly url: "https://openrouter.ai/mistralai/voxtral-mini-transcribe";
175
+ readonly checkedAt: "2026-10-29";
176
+ };
177
+ };
178
+ readonly "openai/gpt-transcribe": {
179
+ readonly displayName: "GPT Transcribe";
180
+ readonly price: {
181
+ readonly kind: "audio-second";
182
+ readonly usdNumerator: 75;
183
+ readonly secondsDenominator: 1000000;
184
+ };
185
+ readonly languageClaim: "Multilingual; language count not specified";
186
+ readonly timestamps: "none";
187
+ readonly vocabularyMechanism: "context-hint";
188
+ readonly diarization: "unconfirmed";
189
+ readonly residency: {
190
+ readonly eu: {
191
+ readonly status: "unavailable";
192
+ };
193
+ readonly us: {
194
+ readonly status: "unknown";
195
+ };
196
+ };
197
+ readonly source: {
198
+ readonly url: "https://openrouter.ai/openai/gpt-transcribe";
199
+ readonly checkedAt: "2026-10-29";
200
+ };
201
+ };
202
+ };
203
+ export type TranscriptionModelId = keyof typeof TRANSCRIPTION_MODELS;
204
+ export type TranscriptionModel = (typeof TRANSCRIPTION_MODELS)[TranscriptionModelId];
205
+ export type TranscriptionVocabularyMechanism = TranscriptionModelMetadata["vocabularyMechanism"];
206
+ export declare const isTranscriptionModelId: (modelId: string) => modelId is TranscriptionModelId;
207
+ /**
208
+ * The model a caller gets when it names none: the cheapest one offered in
209
+ * the organization's region at that region's price, or `undefined` when the
210
+ * region offers none. Ties keep catalog order.
211
+ */
212
+ export declare const defaultTranscriptionModelId: (residency: TranscriptionResidency) => TranscriptionModelId | undefined;
213
+ export declare const getTranscriptionModel: (modelId: string) => {
214
+ readonly displayName: "Whisper Large V3 Turbo";
215
+ readonly price: {
216
+ readonly kind: "audio-second";
217
+ readonly usdNumerator: 3;
218
+ readonly secondsDenominator: 1000000;
219
+ };
220
+ readonly languageClaim: "99+ languages";
221
+ readonly timestamps: "none";
222
+ readonly vocabularyMechanism: "groq-prompt";
223
+ readonly diarization: "unconfirmed";
224
+ readonly residency: {
225
+ readonly eu: {
226
+ readonly status: "unavailable";
227
+ };
228
+ readonly us: {
229
+ readonly status: "unknown";
230
+ };
231
+ };
232
+ readonly source: {
233
+ readonly url: "https://openrouter.ai/openai/whisper-large-v3-turbo";
234
+ readonly checkedAt: "2026-10-29";
235
+ };
236
+ } | {
237
+ readonly displayName: "Whisper Large V3";
238
+ readonly price: {
239
+ readonly kind: "audio-second";
240
+ readonly usdNumerator: 8;
241
+ readonly secondsDenominator: 1000000;
242
+ };
243
+ readonly languageClaim: "99+ languages";
244
+ readonly timestamps: "word";
245
+ readonly vocabularyMechanism: "groq-prompt";
246
+ readonly diarization: "unconfirmed";
247
+ readonly residency: {
248
+ readonly eu: {
249
+ readonly status: "unavailable";
250
+ };
251
+ readonly us: {
252
+ readonly status: "unknown";
253
+ };
254
+ };
255
+ readonly source: {
256
+ readonly url: "https://openrouter.ai/openai/whisper-large-v3";
257
+ readonly checkedAt: "2026-10-29";
258
+ };
259
+ } | {
260
+ readonly displayName: "Parakeet TDT 0.6B v3";
261
+ readonly price: {
262
+ readonly kind: "audio-second";
263
+ readonly usdNumerator: 25;
264
+ readonly secondsDenominator: 1000000;
265
+ };
266
+ readonly languageClaim: "All official EU languages";
267
+ readonly timestamps: "segment";
268
+ readonly vocabularyMechanism: "none";
269
+ readonly diarization: "unconfirmed";
270
+ readonly residency: {
271
+ readonly eu: {
272
+ readonly status: "unavailable";
273
+ };
274
+ readonly us: {
275
+ readonly status: "unknown";
276
+ };
277
+ };
278
+ readonly source: {
279
+ readonly url: "https://openrouter.ai/nvidia/parakeet-tdt-0.6b-v3";
280
+ readonly checkedAt: "2026-10-29";
281
+ };
282
+ } | {
283
+ readonly displayName: "MAI-Transcribe 2";
284
+ readonly price: {
285
+ readonly kind: "audio-second";
286
+ readonly usdNumerator: 1;
287
+ readonly secondsDenominator: 36000;
288
+ };
289
+ readonly languageClaim: "60 languages";
290
+ readonly timestamps: "word";
291
+ readonly vocabularyMechanism: "azure-phrase-list";
292
+ readonly diarization: "supported";
293
+ readonly residency: {
294
+ readonly eu: {
295
+ readonly status: "unavailable";
296
+ };
297
+ readonly us: {
298
+ readonly status: "unknown";
299
+ };
300
+ };
301
+ readonly source: {
302
+ readonly url: "https://openrouter.ai/microsoft/mai-transcribe-2";
303
+ readonly checkedAt: "2026-10-29";
304
+ };
305
+ } | {
306
+ readonly displayName: "Scribe v2";
307
+ readonly price: {
308
+ readonly kind: "audio-second";
309
+ readonly usdNumerator: 61;
310
+ readonly secondsDenominator: 1000000;
311
+ };
312
+ readonly languageClaim: "90+ languages";
313
+ readonly timestamps: "word";
314
+ readonly vocabularyMechanism: "none";
315
+ readonly diarization: "supported";
316
+ readonly residency: {
317
+ readonly eu: {
318
+ readonly status: "unavailable";
319
+ };
320
+ readonly us: {
321
+ readonly status: "unknown";
322
+ };
323
+ };
324
+ readonly source: {
325
+ readonly url: "https://openrouter.ai/elevenlabs/scribe-v2";
326
+ readonly checkedAt: "2026-10-29";
327
+ };
328
+ } | {
329
+ readonly displayName: "Voxtral Mini Transcribe";
330
+ readonly price: {
331
+ readonly kind: "audio-second";
332
+ readonly usdNumerator: 50;
333
+ readonly secondsDenominator: 1000000;
334
+ };
335
+ readonly languageClaim: "Not specified";
336
+ readonly timestamps: "none";
337
+ readonly vocabularyMechanism: "none";
338
+ readonly diarization: "unconfirmed";
339
+ readonly residency: {
340
+ readonly eu: {
341
+ readonly status: "available";
342
+ readonly price: {
343
+ readonly kind: "audio-second";
344
+ readonly usdNumerator: 55;
345
+ readonly secondsDenominator: 1000000;
346
+ };
347
+ };
348
+ readonly us: {
349
+ readonly status: "unknown";
350
+ };
351
+ };
352
+ readonly source: {
353
+ readonly url: "https://openrouter.ai/mistralai/voxtral-mini-transcribe";
354
+ readonly checkedAt: "2026-10-29";
355
+ };
356
+ } | {
357
+ readonly displayName: "GPT Transcribe";
358
+ readonly price: {
359
+ readonly kind: "audio-second";
360
+ readonly usdNumerator: 75;
361
+ readonly secondsDenominator: 1000000;
362
+ };
363
+ readonly languageClaim: "Multilingual; language count not specified";
364
+ readonly timestamps: "none";
365
+ readonly vocabularyMechanism: "context-hint";
366
+ readonly diarization: "unconfirmed";
367
+ readonly residency: {
368
+ readonly eu: {
369
+ readonly status: "unavailable";
370
+ };
371
+ readonly us: {
372
+ readonly status: "unknown";
373
+ };
374
+ };
375
+ readonly source: {
376
+ readonly url: "https://openrouter.ai/openai/gpt-transcribe";
377
+ readonly checkedAt: "2026-10-29";
378
+ };
379
+ } | undefined;
380
+ //#endregion
381
+ export {};
@@ -0,0 +1,173 @@
1
+ //#region src/transcription.ts
2
+ const TRANSCRIPTION_MODELS = {
3
+ "openai/whisper-large-v3-turbo": {
4
+ displayName: "Whisper Large V3 Turbo",
5
+ price: {
6
+ kind: "audio-second",
7
+ usdNumerator: 3,
8
+ secondsDenominator: 1e6
9
+ },
10
+ languageClaim: "99+ languages",
11
+ timestamps: "none",
12
+ vocabularyMechanism: "groq-prompt",
13
+ diarization: "unconfirmed",
14
+ residency: {
15
+ eu: { status: "unavailable" },
16
+ us: { status: "unknown" }
17
+ },
18
+ source: {
19
+ url: "https://openrouter.ai/openai/whisper-large-v3-turbo",
20
+ checkedAt: "2026-10-29"
21
+ }
22
+ },
23
+ "openai/whisper-large-v3": {
24
+ displayName: "Whisper Large V3",
25
+ price: {
26
+ kind: "audio-second",
27
+ usdNumerator: 8,
28
+ secondsDenominator: 1e6
29
+ },
30
+ languageClaim: "99+ languages",
31
+ timestamps: "word",
32
+ vocabularyMechanism: "groq-prompt",
33
+ diarization: "unconfirmed",
34
+ residency: {
35
+ eu: { status: "unavailable" },
36
+ us: { status: "unknown" }
37
+ },
38
+ source: {
39
+ url: "https://openrouter.ai/openai/whisper-large-v3",
40
+ checkedAt: "2026-10-29"
41
+ }
42
+ },
43
+ "nvidia/parakeet-tdt-0.6b-v3": {
44
+ displayName: "Parakeet TDT 0.6B v3",
45
+ price: {
46
+ kind: "audio-second",
47
+ usdNumerator: 25,
48
+ secondsDenominator: 1e6
49
+ },
50
+ languageClaim: "All official EU languages",
51
+ timestamps: "segment",
52
+ vocabularyMechanism: "none",
53
+ diarization: "unconfirmed",
54
+ residency: {
55
+ eu: { status: "unavailable" },
56
+ us: { status: "unknown" }
57
+ },
58
+ source: {
59
+ url: "https://openrouter.ai/nvidia/parakeet-tdt-0.6b-v3",
60
+ checkedAt: "2026-10-29"
61
+ }
62
+ },
63
+ "microsoft/mai-transcribe-2": {
64
+ displayName: "MAI-Transcribe 2",
65
+ price: {
66
+ kind: "audio-second",
67
+ usdNumerator: 1,
68
+ secondsDenominator: 36e3
69
+ },
70
+ languageClaim: "60 languages",
71
+ timestamps: "word",
72
+ vocabularyMechanism: "azure-phrase-list",
73
+ diarization: "supported",
74
+ residency: {
75
+ eu: { status: "unavailable" },
76
+ us: { status: "unknown" }
77
+ },
78
+ source: {
79
+ url: "https://openrouter.ai/microsoft/mai-transcribe-2",
80
+ checkedAt: "2026-10-29"
81
+ }
82
+ },
83
+ "elevenlabs/scribe-v2": {
84
+ displayName: "Scribe v2",
85
+ price: {
86
+ kind: "audio-second",
87
+ usdNumerator: 61,
88
+ secondsDenominator: 1e6
89
+ },
90
+ languageClaim: "90+ languages",
91
+ timestamps: "word",
92
+ vocabularyMechanism: "none",
93
+ diarization: "supported",
94
+ residency: {
95
+ eu: { status: "unavailable" },
96
+ us: { status: "unknown" }
97
+ },
98
+ source: {
99
+ url: "https://openrouter.ai/elevenlabs/scribe-v2",
100
+ checkedAt: "2026-10-29"
101
+ }
102
+ },
103
+ "mistralai/voxtral-mini-transcribe": {
104
+ displayName: "Voxtral Mini Transcribe",
105
+ price: {
106
+ kind: "audio-second",
107
+ usdNumerator: 50,
108
+ secondsDenominator: 1e6
109
+ },
110
+ languageClaim: "Not specified",
111
+ timestamps: "none",
112
+ vocabularyMechanism: "none",
113
+ diarization: "unconfirmed",
114
+ residency: {
115
+ eu: {
116
+ status: "available",
117
+ price: {
118
+ kind: "audio-second",
119
+ usdNumerator: 55,
120
+ secondsDenominator: 1e6
121
+ }
122
+ },
123
+ us: { status: "unknown" }
124
+ },
125
+ source: {
126
+ url: "https://openrouter.ai/mistralai/voxtral-mini-transcribe",
127
+ checkedAt: "2026-10-29"
128
+ }
129
+ },
130
+ "openai/gpt-transcribe": {
131
+ displayName: "GPT Transcribe",
132
+ price: {
133
+ kind: "audio-second",
134
+ usdNumerator: 75,
135
+ secondsDenominator: 1e6
136
+ },
137
+ languageClaim: "Multilingual; language count not specified",
138
+ timestamps: "none",
139
+ vocabularyMechanism: "context-hint",
140
+ diarization: "unconfirmed",
141
+ residency: {
142
+ eu: { status: "unavailable" },
143
+ us: { status: "unknown" }
144
+ },
145
+ source: {
146
+ url: "https://openrouter.ai/openai/gpt-transcribe",
147
+ checkedAt: "2026-10-29"
148
+ }
149
+ }
150
+ };
151
+ const isTranscriptionModelId = (modelId) => Object.hasOwn(TRANSCRIPTION_MODELS, modelId);
152
+ /**
153
+ * The model a caller gets when it names none: the cheapest one offered in
154
+ * the organization's region at that region's price, or `undefined` when the
155
+ * region offers none. Ties keep catalog order.
156
+ */
157
+ const defaultTranscriptionModelId = (residency) => {
158
+ let cheapest;
159
+ for (const modelId of Object.keys(TRANSCRIPTION_MODELS)) {
160
+ if (!isTranscriptionModelId(modelId)) continue;
161
+ const regional = TRANSCRIPTION_MODELS[modelId].residency[residency];
162
+ if (regional.status !== "available") continue;
163
+ const { price } = regional;
164
+ if (cheapest === void 0 || price.usdNumerator * cheapest.price.secondsDenominator < cheapest.price.usdNumerator * price.secondsDenominator) cheapest = {
165
+ modelId,
166
+ price
167
+ };
168
+ }
169
+ return cheapest?.modelId;
170
+ };
171
+ const getTranscriptionModel = (modelId) => Object.hasOwn(TRANSCRIPTION_MODELS, modelId) && isTranscriptionModelId(modelId) ? TRANSCRIPTION_MODELS[modelId] : void 0;
172
+ //#endregion
173
+ export { TRANSCRIPTION_MODELS, defaultTranscriptionModelId, getTranscriptionModel, isTranscriptionModelId };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stll/ai-catalog",
3
- "version": "0.8.2",
3
+ "version": "0.10.0",
4
4
  "description": "Provider-neutral AI model roles, capabilities, and curated model metadata.",
5
5
  "keywords": [
6
6
  "ai",
@@ -40,6 +40,10 @@
40
40
  "./model-defaults-ledger": {
41
41
  "types": "./dist/model-defaults-ledger.d.ts",
42
42
  "import": "./dist/model-defaults-ledger.js"
43
+ },
44
+ "./transcription": {
45
+ "types": "./dist/transcription.d.ts",
46
+ "import": "./dist/transcription.js"
43
47
  }
44
48
  },
45
49
  "publishConfig": {
@@ -75,7 +79,8 @@
75
79
  "@tanstack/ai-openrouter": "0.21.1",
76
80
  "bun-types": "1.4.4",
77
81
  "fast-check": "^4.10.2",
78
- "tsdown": "0.23.0"
82
+ "tsdown": "0.23.1",
83
+ "tsrs": "0.18.0-ts7.1.0-dev.20260929"
79
84
  },
80
85
  "main": "./dist/index.js",
81
86
  "types": "./dist/index.d.ts"