@stll/ai-catalog 0.1.10 → 0.1.11

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/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@ import * as v from "valibot";
5
5
  * same rates as integer ledger units so usage arithmetic never depends on
6
6
  * floating point values.
7
7
  */
8
- declare const MODEL_RATE_UNITS_PER_USD = 100000;
8
+ export declare const MODEL_RATE_UNITS_PER_USD = 100000;
9
9
  type ModelRateAmounts = {
10
10
  /** Normalized ledger units per 1M input tokens. */
11
11
  inputPerMTok: number;
@@ -37,11 +37,11 @@ type ModelRate = ({
37
37
  /** Applies to the entire request once input exceeds the threshold. */
38
38
  aboveThreshold: ModelRateAmounts;
39
39
  };
40
- declare const getStandardModelRate: (rate: ModelRate) => ModelRateAmounts;
41
- declare const resolveModelRate: (rate: ModelRate, inputTokens: number) => ModelRateAmounts;
40
+ export declare const getStandardModelRate: (rate: ModelRate) => ModelRateAmounts;
41
+ export declare const resolveModelRate: (rate: ModelRate, inputTokens: number) => ModelRateAmounts;
42
42
  //#endregion
43
43
  //#region src/model-rates.gen.d.ts
44
- declare const MODEL_RATES: {
44
+ export declare const MODEL_RATES: {
45
45
  readonly "gemini-3.8-flash": {
46
46
  readonly kind: "flat";
47
47
  readonly inputPerMTok: 75000;
@@ -330,21 +330,6 @@ declare const MODEL_RATES: {
330
330
  readonly inputPerMTok: 15000;
331
331
  readonly outputPerMTok: 60000;
332
332
  };
333
- readonly "magistral-medium-latest": {
334
- readonly kind: "flat";
335
- readonly inputPerMTok: 200000;
336
- readonly outputPerMTok: 500000;
337
- };
338
- readonly "magistral-small": {
339
- readonly kind: "flat";
340
- readonly inputPerMTok: 50000;
341
- readonly outputPerMTok: 150000;
342
- };
343
- readonly "pixtral-large-latest": {
344
- readonly kind: "flat";
345
- readonly inputPerMTok: 200000;
346
- readonly outputPerMTok: 600000;
347
- };
348
333
  readonly "gemini-2.5-flash": {
349
334
  readonly kind: "flat";
350
335
  readonly inputPerMTok: 30000;
@@ -380,7 +365,7 @@ declare const MODEL_RATES: {
380
365
  };
381
366
  //#endregion
382
367
  //#region src/model-rate-policy.d.ts
383
- declare const MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER: {
368
+ export declare const MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER: {
384
369
  readonly google: "google";
385
370
  readonly openai: "openai";
386
371
  readonly anthropic: "anthropic";
@@ -393,7 +378,7 @@ type ModelsDevRateProvider = (typeof MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDE
393
378
  * deployment overrides and usage attribution. Their numeric rates still come
394
379
  * exclusively from models.dev.
395
380
  */
396
- declare const RETAINED_MODELS_DEV_RATE_ENTRIES: {
381
+ export declare const RETAINED_MODELS_DEV_RATE_ENTRIES: {
397
382
  readonly "gemini-2.5-flash": {
398
383
  readonly modelId: "gemini-2.5-flash";
399
384
  readonly provider: "google";
@@ -417,7 +402,7 @@ declare const RETAINED_MODELS_DEV_RATE_ENTRIES: {
417
402
  * a mapping once models.dev begins publishing the Stella ID directly, so the
418
403
  * map is empty whenever upstream covers every offered ID.
419
404
  */
420
- declare const MODELS_DEV_RATE_SOURCE_ALIASES: {};
405
+ export declare const MODELS_DEV_RATE_SOURCE_ALIASES: {};
421
406
  //#endregion
422
407
  //#region src/capabilities-overrides.d.ts
423
408
  /**
@@ -436,7 +421,7 @@ type CapabilityOverride = {
436
421
  /** Why the upstream source cannot answer for this model. Dated. */
437
422
  reason: string;
438
423
  };
439
- declare const CAPABILITY_OVERRIDES: Partial<Record<OfferedBYOKModelId, CapabilityOverride>>;
424
+ export declare const CAPABILITY_OVERRIDES: Partial<Record<OfferedBYOKModelId, CapabilityOverride>>;
440
425
  //#endregion
441
426
  //#region src/document-input-overrides.d.ts
442
427
  type DocumentInputOverride = {
@@ -450,7 +435,7 @@ type DocumentInputOverride = {
450
435
  * under-report the provider API's file-input support. The generator rejects an
451
436
  * override once upstream agrees, so sourced data takes ownership automatically.
452
437
  */
453
- declare const DOCUMENT_INPUT_OVERRIDES: Partial<Record<OfferedBYOKModelId, DocumentInputOverride>>;
438
+ export declare const DOCUMENT_INPUT_OVERRIDES: Partial<Record<OfferedBYOKModelId, DocumentInputOverride>>;
454
439
  //#endregion
455
440
  //#region src/capabilities.gen.d.ts
456
441
  /**
@@ -459,7 +444,7 @@ declare const DOCUMENT_INPUT_OVERRIDES: Partial<Record<OfferedBYOKModelId, Docum
459
444
  * means the model's reasoning cannot be disabled; consumers must go
460
445
  * through `resolveReasoningEffort`.
461
446
  */
462
- declare const MODEL_REASONING_EFFORTS: {
447
+ export declare const MODEL_REASONING_EFFORTS: {
463
448
  readonly "gemini-3.8-flash": readonly ["low", "medium", "high"];
464
449
  readonly "gemini-3.7-flash": readonly ["low", "medium", "high"];
465
450
  readonly "gemini-3.6-flash": readonly ["minimal", "low", "medium", "high"];
@@ -512,16 +497,13 @@ declare const MODEL_REASONING_EFFORTS: {
512
497
  readonly "mistral-large-latest": null;
513
498
  readonly "mistral-medium-latest": readonly ["none", "high"];
514
499
  readonly "mistral-small-latest": readonly ["none", "high"];
515
- readonly "magistral-medium-latest": null;
516
- readonly "magistral-small": null;
517
- readonly "pixtral-large-latest": null;
518
500
  };
519
501
  /**
520
502
  * Concrete provider-default effort where the upstream catalogue publishes
521
503
  * one. OpenRouter is the source today; null means the provider does not expose
522
504
  * a truthful named default, so clients must retain a separate Default choice.
523
505
  */
524
- declare const MODEL_DEFAULT_REASONING_EFFORTS: {
506
+ export declare const MODEL_DEFAULT_REASONING_EFFORTS: {
525
507
  readonly "gemini-3.8-flash": null;
526
508
  readonly "gemini-3.7-flash": null;
527
509
  readonly "gemini-3.6-flash": null;
@@ -574,16 +556,13 @@ declare const MODEL_DEFAULT_REASONING_EFFORTS: {
574
556
  readonly "mistral-large-latest": null;
575
557
  readonly "mistral-medium-latest": null;
576
558
  readonly "mistral-small-latest": null;
577
- readonly "magistral-medium-latest": null;
578
- readonly "magistral-small": null;
579
- readonly "pixtral-large-latest": null;
580
559
  };
581
560
  /**
582
561
  * Whether stella should emit a `temperature` sampling override.
583
562
  * `"omit"` covers rejected, deprecated, and accepted-but-ignored
584
563
  * parameters. Consumers must go through `shouldEmitTemperature`.
585
564
  */
586
- declare const MODEL_TEMPERATURE_POLICIES: {
565
+ export declare const MODEL_TEMPERATURE_POLICIES: {
587
566
  readonly "gemini-3.8-flash": "omit";
588
567
  readonly "gemini-3.7-flash": "omit";
589
568
  readonly "gemini-3.6-flash": "omit";
@@ -636,9 +615,6 @@ declare const MODEL_TEMPERATURE_POLICIES: {
636
615
  readonly "mistral-large-latest": "emit";
637
616
  readonly "mistral-medium-latest": "emit";
638
617
  readonly "mistral-small-latest": "emit";
639
- readonly "magistral-medium-latest": "emit";
640
- readonly "magistral-small": "emit";
641
- readonly "pixtral-large-latest": "emit";
642
618
  };
643
619
  //#endregion
644
620
  //#region src/index.d.ts
@@ -651,12 +627,12 @@ declare const MODEL_TEMPERATURE_POLICIES: {
651
627
  * - reasoning: complex multi-step legal analysis
652
628
  * - pdf: native PDF/image understanding
653
629
  */
654
- declare const MODEL_ROLES: readonly ["fast", "chat", "reasoning", "pdf"];
655
- type ModelRole = (typeof MODEL_ROLES)[number];
656
- declare const TEMPERATURE_POLICIES: readonly ["emit", "omit"];
657
- type TemperaturePolicy = (typeof TEMPERATURE_POLICIES)[number];
658
- declare const AI_PROVIDERS: readonly ["google", "openrouter", "openai", "azure_foundry", "anthropic", "bedrock", "mistral", "openai_compatible", "huggingface"];
659
- type AIProvider = (typeof AI_PROVIDERS)[number];
630
+ export declare const MODEL_ROLES: readonly ["fast", "chat", "reasoning", "pdf"];
631
+ export type ModelRole = (typeof MODEL_ROLES)[number];
632
+ export declare const TEMPERATURE_POLICIES: readonly ["emit", "omit"];
633
+ export type TemperaturePolicy = (typeof TEMPERATURE_POLICIES)[number];
634
+ export declare const AI_PROVIDERS: readonly ["google", "openrouter", "openai", "azure_foundry", "anthropic", "bedrock", "mistral", "openai_compatible", "huggingface"];
635
+ export type AIProvider = (typeof AI_PROVIDERS)[number];
660
636
  declare const AI_PROVIDER_ADAPTER_KIND: {
661
637
  readonly google: "tanstack";
662
638
  readonly openrouter: "tanstack";
@@ -668,9 +644,9 @@ declare const AI_PROVIDER_ADAPTER_KIND: {
668
644
  readonly openai_compatible: "custom";
669
645
  readonly huggingface: "custom";
670
646
  };
671
- type TanStackAIProvider = { [TProvider in AIProvider]: (typeof AI_PROVIDER_ADAPTER_KIND)[TProvider] extends "tanstack" ? TProvider : never; }[AIProvider];
672
- declare const TANSTACK_AI_PROVIDERS: readonly ["google", "openrouter", "openai", "anthropic", "bedrock", "mistral"];
673
- declare const MODEL_CATALOG_PROVIDER_KIND: {
647
+ export type TanStackAIProvider = { [TProvider in AIProvider]: (typeof AI_PROVIDER_ADAPTER_KIND)[TProvider] extends "tanstack" ? TProvider : never; }[AIProvider];
648
+ export declare const TANSTACK_AI_PROVIDERS: readonly ["google", "openrouter", "openai", "anthropic", "bedrock", "mistral"];
649
+ export declare const MODEL_CATALOG_PROVIDER_KIND: {
674
650
  readonly google: "first-party";
675
651
  readonly openrouter: "aggregator";
676
652
  readonly openai: "first-party";
@@ -679,20 +655,20 @@ declare const MODEL_CATALOG_PROVIDER_KIND: {
679
655
  readonly mistral: "first-party";
680
656
  };
681
657
  /** Providers whose picker IDs map directly to public first-party catalogs. */
682
- type FirstPartyModelProvider = { [TProvider in TanStackAIProvider]: (typeof MODEL_CATALOG_PROVIDER_KIND)[TProvider] extends "first-party" ? TProvider : never; }[TanStackAIProvider];
658
+ export type FirstPartyModelProvider = { [TProvider in TanStackAIProvider]: (typeof MODEL_CATALOG_PROVIDER_KIND)[TProvider] extends "first-party" ? TProvider : never; }[TanStackAIProvider];
683
659
  declare const FIRST_PARTY_MODEL_PROVIDER_VALUES: readonly ["google", "openai", "anthropic", "mistral"];
684
660
  /**
685
661
  * Runtime form of the first-party provider union. The conditional annotation
686
662
  * makes adding a first-party policy without adding its discovery implementation
687
663
  * a compile error.
688
664
  */
689
- declare const FIRST_PARTY_MODEL_PROVIDERS: Exclude<FirstPartyModelProvider, (typeof FIRST_PARTY_MODEL_PROVIDER_VALUES)[number]> extends never ? typeof FIRST_PARTY_MODEL_PROVIDER_VALUES : never;
665
+ export declare const FIRST_PARTY_MODEL_PROVIDERS: Exclude<FirstPartyModelProvider, (typeof FIRST_PARTY_MODEL_PROVIDER_VALUES)[number]> extends never ? typeof FIRST_PARTY_MODEL_PROVIDER_VALUES : never;
690
666
  /**
691
667
  * Per-role default model IDs for the BYOK-capable cloud providers.
692
668
  * Shared between the instance default table (`DEFAULT_MODELS`) and the
693
669
  * settings-UI default selection, so a default is defined exactly once.
694
670
  */
695
- declare const BYOK_DEFAULT_MODELS: {
671
+ export declare const BYOK_DEFAULT_MODELS: {
696
672
  readonly google: {
697
673
  readonly fast: "gemini-3.7-flash";
698
674
  readonly chat: "gemini-3.7-flash";
@@ -713,12 +689,12 @@ declare const BYOK_DEFAULT_MODELS: {
713
689
  };
714
690
  readonly anthropic: {
715
691
  readonly fast: "claude-opus-5";
716
- readonly chat: "claude-opus-5";
692
+ readonly chat: "claude-opus-4-8";
717
693
  readonly reasoning: "claude-opus-5";
718
- readonly pdf: "claude-opus-5";
694
+ readonly pdf: "claude-opus-4-8";
719
695
  };
720
696
  readonly bedrock: {
721
- readonly fast: "us.amazon.nova-micro-v1:0";
697
+ readonly fast: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
722
698
  readonly chat: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
723
699
  readonly reasoning: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
724
700
  readonly pdf: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
@@ -726,7 +702,7 @@ declare const BYOK_DEFAULT_MODELS: {
726
702
  readonly mistral: {
727
703
  readonly fast: "mistral-small-latest";
728
704
  readonly chat: "mistral-medium-latest";
729
- readonly reasoning: "magistral-medium-latest";
705
+ readonly reasoning: "mistral-medium-latest";
730
706
  readonly pdf: "mistral-large-latest";
731
707
  };
732
708
  };
@@ -735,7 +711,7 @@ declare const BYOK_DEFAULT_MODELS: {
735
711
  * defaults with the providers that only the instance path uses
736
712
  * (custom deployments and OpenAI-compatible endpoints).
737
713
  */
738
- declare const DEFAULT_MODELS: {
714
+ export declare const DEFAULT_MODELS: {
739
715
  readonly azure_foundry: {
740
716
  readonly fast: "gpt-5.4-nano";
741
717
  readonly chat: "gpt-5.4-mini";
@@ -774,12 +750,12 @@ declare const DEFAULT_MODELS: {
774
750
  };
775
751
  readonly anthropic: {
776
752
  readonly fast: "claude-opus-5";
777
- readonly chat: "claude-opus-5";
753
+ readonly chat: "claude-opus-4-8";
778
754
  readonly reasoning: "claude-opus-5";
779
- readonly pdf: "claude-opus-5";
755
+ readonly pdf: "claude-opus-4-8";
780
756
  };
781
757
  readonly bedrock: {
782
- readonly fast: "us.amazon.nova-micro-v1:0";
758
+ readonly fast: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
783
759
  readonly chat: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
784
760
  readonly reasoning: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
785
761
  readonly pdf: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
@@ -787,7 +763,7 @@ declare const DEFAULT_MODELS: {
787
763
  readonly mistral: {
788
764
  readonly fast: "mistral-small-latest";
789
765
  readonly chat: "mistral-medium-latest";
790
- readonly reasoning: "magistral-medium-latest";
766
+ readonly reasoning: "mistral-medium-latest";
791
767
  readonly pdf: "mistral-large-latest";
792
768
  };
793
769
  };
@@ -801,18 +777,18 @@ declare const DEFAULT_MODELS: {
801
777
  * Providers without a first-class TanStack adapter path are intentionally
802
778
  * not accepted at this boundary.
803
779
  */
804
- declare const BYOK_MODEL_OPTIONS: {
780
+ export declare const BYOK_MODEL_OPTIONS: {
805
781
  readonly google: readonly ["gemini-3.8-flash", "gemini-3.7-flash", "gemini-3.6-flash", "gemini-3.5-flash-lite", "gemini-3.1-pro-preview", "gemini-3.5-flash", "gemini-3.1-flash-lite"];
806
782
  readonly anthropic: readonly ["claude-sonnet-5", "claude-fable-5-1", "claude-fable-5", "claude-opus-5", "claude-opus-4-8", "claude-opus-4-7", "claude-sonnet-4-6", "claude-opus-4-6", "claude-haiku-4-5-20251001"];
807
783
  readonly openai: readonly ["gpt-6-astra", "gpt-5.6", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-5.5", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.2"];
808
784
  readonly openrouter: readonly ["openai/gpt-6-astra", "openai/gpt-5.6-luna", "openai/gpt-5.6-terra", "google/gemini-3.8-flash", "google/gemini-3.7-flash", "google/gemini-3.6-flash", "google/gemini-3.5-flash-lite", "google/gemini-3.1-pro-preview", "google/gemini-3.5-flash", "google/gemini-3.1-flash-lite", "anthropic/claude-sonnet-5", "anthropic/claude-opus-5", "anthropic/claude-opus-4.8", "anthropic/claude-sonnet-4.6", "openai/gpt-5.5", "openai/gpt-5.4-mini"];
809
785
  readonly bedrock: readonly ["us.anthropic.claude-sonnet-4-5-20250929-v1:0", "us.anthropic.claude-haiku-4-5-20251001-v1:0", "us.amazon.nova-pro-v1:0", "us.amazon.nova-lite-v1:0", "us.amazon.nova-micro-v1:0", "openai.gpt-oss-120b-1:0", "openai.gpt-oss-20b-1:0", "us.deepseek.r1-v1:0"];
810
- readonly mistral: readonly ["mistral-large-latest", "mistral-medium-latest", "mistral-small-latest", "magistral-medium-latest", "magistral-small", "pixtral-large-latest"];
786
+ readonly mistral: readonly ["mistral-large-latest", "mistral-medium-latest", "mistral-small-latest"];
811
787
  };
812
- type BYOKProvider = keyof typeof BYOK_MODEL_OPTIONS;
813
- type BYOKModelIdByProvider = { [TProvider in BYOKProvider]: (typeof BYOK_MODEL_OPTIONS)[TProvider][number]; };
814
- type OfferedBYOKModelId = BYOKModelIdByProvider[BYOKProvider];
815
- type ModelDisplayMetadata = {
788
+ export type BYOKProvider = keyof typeof BYOK_MODEL_OPTIONS;
789
+ export type BYOKModelIdByProvider = { [TProvider in BYOKProvider]: (typeof BYOK_MODEL_OPTIONS)[TProvider][number]; };
790
+ export type OfferedBYOKModelId = BYOKModelIdByProvider[BYOKProvider];
791
+ export type ModelDisplayMetadata = {
816
792
  /** Human-readable product name; model names are trademarks and stay untranslated. */
817
793
  displayName: string;
818
794
  /** Brand mark to show. This may differ from the routing provider. */
@@ -824,7 +800,7 @@ type ModelDisplayMetadata = {
824
800
  * into user-facing pickers. OpenRouter entries deliberately carry their model
825
801
  * creator's icon while their routing provider remains available separately.
826
802
  */
827
- declare const MODEL_DISPLAY_METADATA: {
803
+ export declare const MODEL_DISPLAY_METADATA: {
828
804
  readonly "gemini-3.8-flash": {
829
805
  readonly displayName: "Gemini 3.8 Flash";
830
806
  readonly iconProvider: "google";
@@ -1033,26 +1009,14 @@ declare const MODEL_DISPLAY_METADATA: {
1033
1009
  readonly displayName: "Mistral Small";
1034
1010
  readonly iconProvider: "mistral";
1035
1011
  };
1036
- readonly "magistral-medium-latest": {
1037
- readonly displayName: "Magistral Medium";
1038
- readonly iconProvider: "mistral";
1039
- };
1040
- readonly "magistral-small": {
1041
- readonly displayName: "Magistral Small";
1042
- readonly iconProvider: "mistral";
1043
- };
1044
- readonly "pixtral-large-latest": {
1045
- readonly displayName: "Pixtral Large";
1046
- readonly iconProvider: "mistral";
1047
- };
1048
1012
  };
1049
- declare const getModelDisplayMetadata: (modelId: string) => ModelDisplayMetadata | null;
1013
+ export declare const getModelDisplayMetadata: (modelId: string) => ModelDisplayMetadata | null;
1050
1014
  /**
1051
1015
  * Offered models whose provider API accepts PDF/file content. Generated from
1052
1016
  * live models.dev input modalities plus dated, reviewed source corrections;
1053
1017
  * the nightly upstream check rejects drift.
1054
1018
  */
1055
- declare const BYOK_DOCUMENT_INPUT_MODEL_OPTIONS: {
1019
+ export declare const BYOK_DOCUMENT_INPUT_MODEL_OPTIONS: {
1056
1020
  readonly google: readonly ["gemini-3.8-flash", "gemini-3.7-flash", "gemini-3.6-flash", "gemini-3.5-flash-lite", "gemini-3.1-pro-preview", "gemini-3.5-flash", "gemini-3.1-flash-lite"];
1057
1021
  readonly openrouter: readonly ["openai/gpt-6-astra", "openai/gpt-5.6-luna", "openai/gpt-5.6-terra", "google/gemini-3.8-flash", "google/gemini-3.7-flash", "google/gemini-3.6-flash", "google/gemini-3.5-flash-lite", "google/gemini-3.1-pro-preview", "google/gemini-3.5-flash", "google/gemini-3.1-flash-lite", "anthropic/claude-sonnet-5", "anthropic/claude-opus-5", "anthropic/claude-opus-4.8", "anthropic/claude-sonnet-4.6", "openai/gpt-5.5", "openai/gpt-5.4-mini"];
1058
1022
  readonly openai: readonly ["gpt-6-astra", "gpt-5.6", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-5.5", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.2"];
@@ -1060,11 +1024,11 @@ declare const BYOK_DOCUMENT_INPUT_MODEL_OPTIONS: {
1060
1024
  readonly bedrock: readonly ["us.anthropic.claude-sonnet-4-5-20250929-v1:0", "us.anthropic.claude-haiku-4-5-20251001-v1:0", "us.amazon.nova-pro-v1:0", "us.amazon.nova-lite-v1:0"];
1061
1025
  readonly mistral: readonly [];
1062
1026
  };
1063
- declare const isBYOKProviderRoleSupported: ({ provider, role }: {
1027
+ export declare const isBYOKProviderRoleSupported: ({ provider, role }: {
1064
1028
  provider: BYOKProvider;
1065
1029
  role: ModelRole;
1066
1030
  }) => boolean;
1067
- declare const isBYOKModelRoleSupported: ({ provider, modelId, role }: {
1031
+ export declare const isBYOKModelRoleSupported: ({ provider, modelId, role }: {
1068
1032
  provider: BYOKProvider;
1069
1033
  modelId: string;
1070
1034
  role: ModelRole;
@@ -1082,15 +1046,15 @@ declare const isBYOKModelRoleSupported: ({ provider, modelId, role }: {
1082
1046
  * `BYOK_DOCUMENT_INPUT_MODEL_OPTIONS` (which excludes Mistral). Superset
1083
1047
  * invariant: every pdf-role document model also accepts a PDF chat attachment.
1084
1048
  */
1085
- declare const CHAT_PDF_ATTACHMENT_MODEL_OPTIONS: {
1086
- readonly mistral: readonly ["mistral-medium-latest", "mistral-small-latest", "pixtral-large-latest"];
1049
+ export declare const CHAT_PDF_ATTACHMENT_MODEL_OPTIONS: {
1050
+ readonly mistral: readonly ["mistral-medium-latest", "mistral-small-latest"];
1087
1051
  readonly google: readonly ["gemini-3.8-flash", "gemini-3.7-flash", "gemini-3.6-flash", "gemini-3.5-flash-lite", "gemini-3.1-pro-preview", "gemini-3.5-flash", "gemini-3.1-flash-lite"];
1088
1052
  readonly openrouter: readonly ["openai/gpt-6-astra", "openai/gpt-5.6-luna", "openai/gpt-5.6-terra", "google/gemini-3.8-flash", "google/gemini-3.7-flash", "google/gemini-3.6-flash", "google/gemini-3.5-flash-lite", "google/gemini-3.1-pro-preview", "google/gemini-3.5-flash", "google/gemini-3.1-flash-lite", "anthropic/claude-sonnet-5", "anthropic/claude-opus-5", "anthropic/claude-opus-4.8", "anthropic/claude-sonnet-4.6", "openai/gpt-5.5", "openai/gpt-5.4-mini"];
1089
1053
  readonly openai: readonly ["gpt-6-astra", "gpt-5.6", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-5.5", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.2"];
1090
1054
  readonly anthropic: readonly ["claude-sonnet-5", "claude-fable-5-1", "claude-fable-5", "claude-opus-5", "claude-opus-4-8", "claude-opus-4-7", "claude-sonnet-4-6", "claude-opus-4-6", "claude-haiku-4-5-20251001"];
1091
1055
  readonly bedrock: readonly ["us.anthropic.claude-sonnet-4-5-20250929-v1:0", "us.anthropic.claude-haiku-4-5-20251001-v1:0", "us.amazon.nova-pro-v1:0", "us.amazon.nova-lite-v1:0"];
1092
1056
  };
1093
- declare const isChatPdfAttachmentModelSupported: ({ provider, modelId }: {
1057
+ export declare const isChatPdfAttachmentModelSupported: ({ provider, modelId }: {
1094
1058
  provider: BYOKProvider;
1095
1059
  modelId: string;
1096
1060
  }) => boolean;
@@ -1108,7 +1072,7 @@ declare const isChatPdfAttachmentModelSupported: ({ provider, modelId }: {
1108
1072
  * catalog bump, so generation resolves to a supported model instead of
1109
1073
  * 400-ing (or forwarding a retired id to the provider).
1110
1074
  */
1111
- declare const resolveWorkingBYOKModelForRole: ({ provider, modelId, role }: {
1075
+ export declare const resolveWorkingBYOKModelForRole: ({ provider, modelId, role }: {
1112
1076
  provider: BYOKProvider;
1113
1077
  modelId: string;
1114
1078
  role: ModelRole;
@@ -1119,15 +1083,15 @@ declare const resolveWorkingBYOKModelForRole: ({ provider, modelId, role }: {
1119
1083
  * legacy budget-based form, so every Opus 4.6+/Sonnet 4.6/Fable entry
1120
1084
  * offered above must appear here or it will 400 on the reasoning role.
1121
1085
  */
1122
- declare const ANTHROPIC_ADAPTIVE_THINKING_MODELS: readonly ["claude-sonnet-5", "claude-opus-5", "claude-sonnet-4-6", "claude-opus-4-6", "claude-opus-4-7", "claude-opus-4-8", "claude-fable-5", "claude-fable-5-1"];
1086
+ export declare const ANTHROPIC_ADAPTIVE_THINKING_MODELS: readonly ["claude-sonnet-5", "claude-opus-5", "claude-sonnet-4-6", "claude-opus-4-6", "claude-opus-4-7", "claude-opus-4-8", "claude-fable-5", "claude-fable-5-1"];
1123
1087
  /**
1124
1088
  * Canonical reasoning-effort ladder, ordered weakest to strongest.
1125
1089
  * Union of every effort keyword the offered providers accept; no
1126
1090
  * single model accepts all of them, which is exactly why the
1127
1091
  * generated per-model `MODEL_REASONING_EFFORTS` exists.
1128
1092
  */
1129
- declare const REASONING_EFFORTS: readonly ["none", "minimal", "low", "medium", "high", "xhigh", "max"];
1130
- type ReasoningEffort = (typeof REASONING_EFFORTS)[number];
1093
+ export declare const REASONING_EFFORTS: readonly ["none", "minimal", "low", "medium", "high", "xhigh", "max"];
1094
+ export type ReasoningEffort = (typeof REASONING_EFFORTS)[number];
1131
1095
  declare const resolvedReasoningEffortSchema: v.SchemaWithPipe<readonly [v.PicklistSchema<readonly ["none", "minimal", "low", "medium", "high", "xhigh", "max"], undefined>, v.BrandAction<"none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "ResolvedReasoningEffort">]>;
1132
1096
  /**
1133
1097
  * A reasoning effort proven to be accepted by the model it targets.
@@ -1136,7 +1100,7 @@ declare const resolvedReasoningEffortSchema: v.SchemaWithPipe<readonly [v.Pickli
1136
1100
  * (e.g. `"none"` to a model whose reasoning cannot be disabled) —
1137
1101
  * that mistake now fails typecheck instead of 502-ing at runtime.
1138
1102
  */
1139
- type ResolvedReasoningEffort = v.InferOutput<typeof resolvedReasoningEffortSchema>;
1103
+ export type ResolvedReasoningEffort = v.InferOutput<typeof resolvedReasoningEffortSchema>;
1140
1104
  /**
1141
1105
  * Per-provider model served when a user's included budget is exhausted
1142
1106
  * and no explicit selection overrides it. Falls back to each
@@ -1144,12 +1108,12 @@ type ResolvedReasoningEffort = v.InferOutput<typeof resolvedReasoningEffortSchem
1144
1108
  * adapter path cannot serve the lane. Total over providers so a new
1145
1109
  * provider lands with an explicit decision.
1146
1110
  */
1147
- declare const FALLBACK_CHAT_MODEL_BY_PROVIDER: {
1111
+ export declare const FALLBACK_CHAT_MODEL_BY_PROVIDER: {
1148
1112
  readonly google: "gemini-3.7-flash";
1149
1113
  readonly openrouter: "openai/gpt-5.6-luna";
1150
1114
  readonly openai: "gpt-5.6-luna";
1151
1115
  readonly anthropic: "claude-opus-5";
1152
- readonly bedrock: "us.amazon.nova-micro-v1:0";
1116
+ readonly bedrock: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
1153
1117
  readonly mistral: "mistral-small-latest";
1154
1118
  readonly azure_foundry: null;
1155
1119
  readonly openai_compatible: null;
@@ -1160,12 +1124,12 @@ declare const FALLBACK_CHAT_MODEL_BY_PROVIDER: {
1160
1124
  * Every metadata lookup normalizes here, so instance/dev overrides cannot
1161
1125
  * bypass rates or capabilities and duplicated alias rows cannot drift apart.
1162
1126
  */
1163
- declare const MODEL_CATALOG_ID_ALIASES: {
1127
+ export declare const MODEL_CATALOG_ID_ALIASES: {
1164
1128
  readonly "gpt-5.6-sol": "gpt-5.6";
1165
1129
  readonly "claude-opus-4.8": "claude-opus-4-8";
1166
1130
  readonly "claude-sonnet-4.6": "claude-sonnet-4-6";
1167
1131
  };
1168
- declare const normalizeModelCatalogId: (modelId: string) => string;
1132
+ export declare const normalizeModelCatalogId: (modelId: string) => string;
1169
1133
  /**
1170
1134
  * Whether stella should emit a `temperature` override for this model.
1171
1135
  * This is deliberately stricter than provider acceptance: deprecated
@@ -1174,20 +1138,20 @@ declare const normalizeModelCatalogId: (modelId: string) => string;
1174
1138
  * never index `MODEL_TEMPERATURE_POLICIES` directly with
1175
1139
  * a runtime string.
1176
1140
  */
1177
- declare const shouldEmitTemperature: (modelId: string) => boolean;
1141
+ export declare const shouldEmitTemperature: (modelId: string) => boolean;
1178
1142
  /**
1179
1143
  * Declared reasoning-effort values for a model ID, or `null` when the
1180
1144
  * model has no effort control or is not catalogued (custom deployments,
1181
1145
  * env overrides). Callers must never index `MODEL_REASONING_EFFORTS`
1182
1146
  * directly with a runtime string.
1183
1147
  */
1184
- declare const getModelReasoningEfforts: (modelId: string) => readonly ReasoningEffort[] | null;
1148
+ export declare const getModelReasoningEfforts: (modelId: string) => readonly ReasoningEffort[] | null;
1185
1149
  /**
1186
1150
  * Concrete provider-default effort published for a model, or null when the
1187
1151
  * provider exposes no named default. Unknown ids also resolve to null.
1188
1152
  */
1189
- declare const getModelDefaultReasoningEffort: (modelId: string) => ReasoningEffort | null;
1190
- type ResolveReasoningEffortOptions = {
1153
+ export declare const getModelDefaultReasoningEffort: (modelId: string) => ReasoningEffort | null;
1154
+ export type ResolveReasoningEffortOptions = {
1191
1155
  modelId: string;
1192
1156
  requested: ReasoningEffort;
1193
1157
  };
@@ -1203,8 +1167,8 @@ type ResolveReasoningEffortOptions = {
1203
1167
  * reasoning-mandatory model degrades to its weakest tier instead of
1204
1168
  * erroring, and requests above the model's ceiling clamp down to it.
1205
1169
  */
1206
- declare const resolveReasoningEffort: ({ modelId, requested }: ResolveReasoningEffortOptions) => ResolvedReasoningEffort | null;
1207
- declare const getModelRate: (modelId: string) => ModelRate | undefined;
1170
+ export declare const resolveReasoningEffort: ({ modelId, requested }: ResolveReasoningEffortOptions) => ResolvedReasoningEffort | null;
1171
+ export declare const getModelRate: (modelId: string) => ModelRate | undefined;
1208
1172
  /**
1209
1173
  * Documented input context-window sizes (in tokens) per model ID.
1210
1174
  *
@@ -1222,7 +1186,7 @@ declare const getModelRate: (modelId: string) => ModelRate | undefined;
1222
1186
  * validate this map, so an unknown model degrades to the conservative
1223
1187
  * default rather than failing CI.
1224
1188
  */
1225
- declare const CONTEXT_WINDOW_TOKENS: {
1189
+ export declare const CONTEXT_WINDOW_TOKENS: {
1226
1190
  readonly "gemini-2.5-flash": 1048576;
1227
1191
  readonly "gemini-2.5-pro": 1048576;
1228
1192
  readonly "gemini-3.1-flash-lite": 1048576;
@@ -1256,10 +1220,7 @@ declare const CONTEXT_WINDOW_TOKENS: {
1256
1220
  readonly "mistral-large-latest": 128000;
1257
1221
  readonly "mistral-medium-latest": 128000;
1258
1222
  readonly "mistral-medium-3-5": 128000;
1259
- readonly "magistral-medium-latest": 128000;
1260
1223
  readonly "magistral-small-latest": 128000;
1261
- readonly "magistral-small": 128000;
1262
- readonly "pixtral-large-latest": 128000;
1263
1224
  readonly "google/gemini-3.8-flash": 1048576;
1264
1225
  readonly "google/gemini-3.7-flash": 1048576;
1265
1226
  readonly "google/gemini-3.6-flash": 1048576;
@@ -1290,12 +1251,12 @@ declare const CONTEXT_WINDOW_TOKENS: {
1290
1251
  * `CONTEXT_WINDOW_TOKENS` (custom deployments, OpenAI-compatible
1291
1252
  * endpoints, brand-new IDs not yet catalogued).
1292
1253
  */
1293
- declare const DEFAULT_CONTEXT_WINDOW_TOKENS = 128000;
1254
+ export declare const DEFAULT_CONTEXT_WINDOW_TOKENS = 128000;
1294
1255
  /**
1295
1256
  * Documented input context window for a model ID, or the conservative
1296
1257
  * default for unlisted IDs. Callers must never index
1297
1258
  * `CONTEXT_WINDOW_TOKENS` directly.
1298
1259
  */
1299
- declare const getContextWindowTokens: (modelId: string) => number;
1260
+ export declare const getContextWindowTokens: (modelId: string) => number;
1300
1261
  //#endregion
1301
- 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, DEFAULT_CONTEXT_WINDOW_TOKENS, DEFAULT_MODELS, DOCUMENT_INPUT_OVERRIDES, type DocumentInputOverride, FALLBACK_CHAT_MODEL_BY_PROVIDER, FIRST_PARTY_MODEL_PROVIDERS, FirstPartyModelProvider, 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_RATES, MODEL_RATE_UNITS_PER_USD, MODEL_REASONING_EFFORTS, MODEL_ROLES, MODEL_TEMPERATURE_POLICIES, ModelDisplayMetadata, type ModelRate, type ModelRateAmounts, ModelRole, type ModelsDevRateProvider, OfferedBYOKModelId, REASONING_EFFORTS, RETAINED_MODELS_DEV_RATE_ENTRIES, ReasoningEffort, ResolveReasoningEffortOptions, ResolvedReasoningEffort, TANSTACK_AI_PROVIDERS, TEMPERATURE_POLICIES, TanStackAIProvider, TemperaturePolicy, getContextWindowTokens, getModelDefaultReasoningEffort, getModelDisplayMetadata, getModelRate, getModelReasoningEfforts, getStandardModelRate, isBYOKModelRoleSupported, isBYOKProviderRoleSupported, isChatPdfAttachmentModelSupported, normalizeModelCatalogId, resolveModelRate, resolveReasoningEffort, resolveWorkingBYOKModelForRole, shouldEmitTemperature };
1262
+ export type { CapabilityOverride, DocumentInputOverride, ModelRate, ModelRateAmounts, ModelsDevRateProvider };
package/dist/index.js CHANGED
@@ -356,10 +356,7 @@ const MODEL_REASONING_EFFORTS = {
356
356
  "us.deepseek.r1-v1:0": null,
357
357
  "mistral-large-latest": null,
358
358
  "mistral-medium-latest": ["none", "high"],
359
- "mistral-small-latest": ["none", "high"],
360
- "magistral-medium-latest": null,
361
- "magistral-small": null,
362
- "pixtral-large-latest": null
359
+ "mistral-small-latest": ["none", "high"]
363
360
  };
364
361
  /**
365
362
  * Concrete provider-default effort where the upstream catalogue publishes
@@ -418,10 +415,7 @@ const MODEL_DEFAULT_REASONING_EFFORTS = {
418
415
  "us.deepseek.r1-v1:0": null,
419
416
  "mistral-large-latest": null,
420
417
  "mistral-medium-latest": null,
421
- "mistral-small-latest": null,
422
- "magistral-medium-latest": null,
423
- "magistral-small": null,
424
- "pixtral-large-latest": null
418
+ "mistral-small-latest": null
425
419
  };
426
420
  /**
427
421
  * Whether stella should emit a `temperature` sampling override.
@@ -480,10 +474,7 @@ const MODEL_TEMPERATURE_POLICIES = {
480
474
  "us.deepseek.r1-v1:0": "emit",
481
475
  "mistral-large-latest": "emit",
482
476
  "mistral-medium-latest": "emit",
483
- "mistral-small-latest": "emit",
484
- "magistral-medium-latest": "emit",
485
- "magistral-small": "emit",
486
- "pixtral-large-latest": "emit"
477
+ "mistral-small-latest": "emit"
487
478
  };
488
479
  //#endregion
489
480
  //#region src/model-rates.gen.ts
@@ -776,21 +767,6 @@ const MODEL_RATES = {
776
767
  inputPerMTok: 15e3,
777
768
  outputPerMTok: 6e4
778
769
  },
779
- "magistral-medium-latest": {
780
- kind: "flat",
781
- inputPerMTok: 2e5,
782
- outputPerMTok: 5e5
783
- },
784
- "magistral-small": {
785
- kind: "flat",
786
- inputPerMTok: 5e4,
787
- outputPerMTok: 15e4
788
- },
789
- "pixtral-large-latest": {
790
- kind: "flat",
791
- inputPerMTok: 2e5,
792
- outputPerMTok: 6e5
793
- },
794
770
  "gemini-2.5-flash": {
795
771
  kind: "flat",
796
772
  inputPerMTok: 3e4,
@@ -896,14 +872,6 @@ const DOCUMENT_INPUT_OVERRIDES = {
896
872
  "gpt-5.2": {
897
873
  supported: true,
898
874
  reason: "2026-08-20: OpenAI Responses accepts input_file PDF content for this vision-capable model; models.dev currently omits the pdf modality"
899
- },
900
- "us.amazon.nova-pro-v1:0": {
901
- supported: true,
902
- reason: "2026-09-09: AWS documents PDF input for Nova Pro through Bedrock Converse; models.dev lists text, image and video only"
903
- },
904
- "us.amazon.nova-lite-v1:0": {
905
- supported: true,
906
- reason: "2026-09-09: AWS documents PDF input for Nova Lite through Bedrock Converse; models.dev lists text, image and video only"
907
875
  }
908
876
  };
909
877
  //#endregion
@@ -1009,12 +977,12 @@ const BYOK_DEFAULT_MODELS = {
1009
977
  },
1010
978
  anthropic: {
1011
979
  fast: "claude-opus-5",
1012
- chat: "claude-opus-5",
980
+ chat: "claude-opus-4-8",
1013
981
  reasoning: "claude-opus-5",
1014
- pdf: "claude-opus-5"
982
+ pdf: "claude-opus-4-8"
1015
983
  },
1016
984
  bedrock: {
1017
- fast: "us.amazon.nova-micro-v1:0",
985
+ fast: "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
1018
986
  chat: "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
1019
987
  reasoning: "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
1020
988
  pdf: "us.anthropic.claude-sonnet-4-5-20250929-v1:0"
@@ -1022,7 +990,7 @@ const BYOK_DEFAULT_MODELS = {
1022
990
  mistral: {
1023
991
  fast: "mistral-small-latest",
1024
992
  chat: "mistral-medium-latest",
1025
- reasoning: "magistral-medium-latest",
993
+ reasoning: "mistral-medium-latest",
1026
994
  pdf: "mistral-large-latest"
1027
995
  }
1028
996
  };
@@ -1125,10 +1093,7 @@ const BYOK_MODEL_OPTIONS = {
1125
1093
  mistral: [
1126
1094
  "mistral-large-latest",
1127
1095
  "mistral-medium-latest",
1128
- "mistral-small-latest",
1129
- "magistral-medium-latest",
1130
- "magistral-small",
1131
- "pixtral-large-latest"
1096
+ "mistral-small-latest"
1132
1097
  ]
1133
1098
  };
1134
1099
  /**
@@ -1345,18 +1310,6 @@ const MODEL_DISPLAY_METADATA = {
1345
1310
  "mistral-small-latest": {
1346
1311
  displayName: "Mistral Small",
1347
1312
  iconProvider: "mistral"
1348
- },
1349
- "magistral-medium-latest": {
1350
- displayName: "Magistral Medium",
1351
- iconProvider: "mistral"
1352
- },
1353
- "magistral-small": {
1354
- displayName: "Magistral Small",
1355
- iconProvider: "mistral"
1356
- },
1357
- "pixtral-large-latest": {
1358
- displayName: "Pixtral Large",
1359
- iconProvider: "mistral"
1360
1313
  }
1361
1314
  };
1362
1315
  const MODEL_DISPLAY_METADATA_BY_ID = MODEL_DISPLAY_METADATA;
@@ -1387,11 +1340,7 @@ const isBYOKModelRoleSupported = ({ provider, modelId, role }) => {
1387
1340
  */
1388
1341
  const CHAT_PDF_ATTACHMENT_MODEL_OPTIONS = {
1389
1342
  ...BYOK_DOCUMENT_INPUT_MODEL_OPTIONS,
1390
- mistral: [
1391
- "mistral-medium-latest",
1392
- "mistral-small-latest",
1393
- "pixtral-large-latest"
1394
- ]
1343
+ mistral: ["mistral-medium-latest", "mistral-small-latest"]
1395
1344
  };
1396
1345
  const isChatPdfAttachmentModelSupported = ({ provider, modelId }) => {
1397
1346
  return CHAT_PDF_ATTACHMENT_MODEL_OPTIONS[provider].includes(modelId);
@@ -1614,10 +1563,7 @@ const CONTEXT_WINDOW_TOKENS = {
1614
1563
  "mistral-large-latest": 128e3,
1615
1564
  "mistral-medium-latest": 128e3,
1616
1565
  "mistral-medium-3-5": 128e3,
1617
- "magistral-medium-latest": 128e3,
1618
1566
  "magistral-small-latest": 128e3,
1619
- "magistral-small": 128e3,
1620
- "pixtral-large-latest": 128e3,
1621
1567
  "google/gemini-3.8-flash": 1048576,
1622
1568
  "google/gemini-3.7-flash": 1048576,
1623
1569
  "google/gemini-3.6-flash": 1048576,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stll/ai-catalog",
3
- "version": "0.1.10",
3
+ "version": "0.1.11",
4
4
  "description": "Provider-neutral AI model roles, capabilities, and curated model metadata.",
5
5
  "keywords": [
6
6
  "ai",
@@ -51,13 +51,13 @@
51
51
  },
52
52
  "devDependencies": {
53
53
  "@stll/typescript-config": "0.0.0",
54
- "@tanstack/ai-anthropic": "0.18.3",
55
- "@tanstack/ai-bedrock": "0.3.4",
56
- "@tanstack/ai-gemini": "0.26.5",
57
- "@tanstack/ai-mistral": "0.5.3",
58
- "@tanstack/ai-openrouter": "0.19.6",
54
+ "@tanstack/ai-anthropic": "0.18.5",
55
+ "@tanstack/ai-bedrock": "0.3.7",
56
+ "@tanstack/ai-gemini": "0.29.1",
57
+ "@tanstack/ai-mistral": "0.6.1",
58
+ "@tanstack/ai-openrouter": "0.19.8",
59
59
  "bun-types": "1.4.2",
60
- "tsdown": "0.22.14"
60
+ "tsdown": "0.23.0"
61
61
  },
62
62
  "main": "./dist/index.js",
63
63
  "types": "./dist/index.d.ts"