@sriinnu/kosha-discovery 0.6.1 → 1.1.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.
Files changed (127) hide show
  1. package/README.md +95 -263
  2. package/dist/cli-cmd-model.d.ts +48 -0
  3. package/dist/cli-cmd-model.d.ts.map +1 -0
  4. package/dist/cli-cmd-model.js +231 -0
  5. package/dist/cli-cmd-model.js.map +1 -0
  6. package/dist/cli-cmd-query.d.ts +40 -0
  7. package/dist/cli-cmd-query.d.ts.map +1 -0
  8. package/dist/cli-cmd-query.js +303 -0
  9. package/dist/cli-cmd-query.js.map +1 -0
  10. package/dist/cli-commands.d.ts +65 -75
  11. package/dist/cli-commands.d.ts.map +1 -1
  12. package/dist/cli-commands.js +93 -543
  13. package/dist/cli-commands.js.map +1 -1
  14. package/dist/cli-format.d.ts +32 -0
  15. package/dist/cli-format.d.ts.map +1 -1
  16. package/dist/cli-format.js +51 -0
  17. package/dist/cli-format.js.map +1 -1
  18. package/dist/cli-help.d.ts +19 -0
  19. package/dist/cli-help.d.ts.map +1 -0
  20. package/dist/cli-help.js +150 -0
  21. package/dist/cli-help.js.map +1 -0
  22. package/dist/cli.js +4 -1
  23. package/dist/cli.js.map +1 -1
  24. package/dist/discovery/anthropic.d.ts +8 -1
  25. package/dist/discovery/anthropic.d.ts.map +1 -1
  26. package/dist/discovery/anthropic.js +26 -3
  27. package/dist/discovery/anthropic.js.map +1 -1
  28. package/dist/discovery/base.d.ts +26 -0
  29. package/dist/discovery/base.d.ts.map +1 -1
  30. package/dist/discovery/base.js +55 -2
  31. package/dist/discovery/base.js.map +1 -1
  32. package/dist/discovery/free-tier.d.ts +31 -0
  33. package/dist/discovery/free-tier.d.ts.map +1 -0
  34. package/dist/discovery/free-tier.js +47 -0
  35. package/dist/discovery/free-tier.js.map +1 -0
  36. package/dist/discovery/google.d.ts +8 -1
  37. package/dist/discovery/google.d.ts.map +1 -1
  38. package/dist/discovery/google.js +25 -3
  39. package/dist/discovery/google.js.map +1 -1
  40. package/dist/discovery/index.d.ts +3 -6
  41. package/dist/discovery/index.d.ts.map +1 -1
  42. package/dist/discovery/index.js +36 -55
  43. package/dist/discovery/index.js.map +1 -1
  44. package/dist/discovery/litellm-seed.d.ts +32 -0
  45. package/dist/discovery/litellm-seed.d.ts.map +1 -0
  46. package/dist/discovery/litellm-seed.js +252 -0
  47. package/dist/discovery/litellm-seed.js.map +1 -0
  48. package/dist/discovery/modelsdev-catalog.d.ts +95 -0
  49. package/dist/discovery/modelsdev-catalog.d.ts.map +1 -0
  50. package/dist/discovery/modelsdev-catalog.js +131 -0
  51. package/dist/discovery/modelsdev-catalog.js.map +1 -0
  52. package/dist/discovery/modelsdev-seed.d.ts +19 -0
  53. package/dist/discovery/modelsdev-seed.d.ts.map +1 -0
  54. package/dist/discovery/modelsdev-seed.js +203 -0
  55. package/dist/discovery/modelsdev-seed.js.map +1 -0
  56. package/dist/discovery/openai-compatible.d.ts.map +1 -1
  57. package/dist/discovery/openai-compatible.js +12 -1
  58. package/dist/discovery/openai-compatible.js.map +1 -1
  59. package/dist/discovery/openai.d.ts +9 -1
  60. package/dist/discovery/openai.d.ts.map +1 -1
  61. package/dist/discovery/openai.js +31 -8
  62. package/dist/discovery/openai.js.map +1 -1
  63. package/dist/discovery/promo-overrides.d.ts +54 -0
  64. package/dist/discovery/promo-overrides.d.ts.map +1 -0
  65. package/dist/discovery/promo-overrides.js +74 -0
  66. package/dist/discovery/promo-overrides.js.map +1 -0
  67. package/dist/discovery/public-seed.d.ts +30 -0
  68. package/dist/discovery/public-seed.d.ts.map +1 -0
  69. package/dist/discovery/public-seed.js +51 -0
  70. package/dist/discovery/public-seed.js.map +1 -0
  71. package/dist/discovery-contract.d.ts +14 -2
  72. package/dist/discovery-contract.d.ts.map +1 -1
  73. package/dist/discovery-contract.js +28 -0
  74. package/dist/discovery-contract.js.map +1 -1
  75. package/dist/enrichment/litellm-catalog.d.ts +81 -0
  76. package/dist/enrichment/litellm-catalog.d.ts.map +1 -0
  77. package/dist/enrichment/litellm-catalog.js +129 -0
  78. package/dist/enrichment/litellm-catalog.js.map +1 -0
  79. package/dist/enrichment/litellm.d.ts +9 -2
  80. package/dist/enrichment/litellm.d.ts.map +1 -1
  81. package/dist/enrichment/litellm.js +168 -20
  82. package/dist/enrichment/litellm.js.map +1 -1
  83. package/dist/index.d.ts +3 -1
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +2 -0
  86. package/dist/index.js.map +1 -1
  87. package/dist/mcp-server.d.ts +18 -0
  88. package/dist/mcp-server.d.ts.map +1 -0
  89. package/dist/mcp-server.js +293 -0
  90. package/dist/mcp-server.js.map +1 -0
  91. package/dist/model-features.d.ts +77 -0
  92. package/dist/model-features.d.ts.map +1 -0
  93. package/dist/model-features.js +245 -0
  94. package/dist/model-features.js.map +1 -0
  95. package/dist/provider-catalog.d.ts +9 -0
  96. package/dist/provider-catalog.d.ts.map +1 -1
  97. package/dist/provider-catalog.js +22 -0
  98. package/dist/provider-catalog.js.map +1 -1
  99. package/dist/proxy.d.ts +31 -0
  100. package/dist/proxy.d.ts.map +1 -0
  101. package/dist/proxy.js +193 -0
  102. package/dist/proxy.js.map +1 -0
  103. package/dist/registry-discovery.d.ts.map +1 -1
  104. package/dist/registry-discovery.js +12 -2
  105. package/dist/registry-discovery.js.map +1 -1
  106. package/dist/registry-runtime.d.ts +40 -1
  107. package/dist/registry-runtime.d.ts.map +1 -1
  108. package/dist/registry-runtime.js +502 -30
  109. package/dist/registry-runtime.js.map +1 -1
  110. package/dist/registry-selection.js +2 -0
  111. package/dist/registry-selection.js.map +1 -1
  112. package/dist/registry.d.ts +9 -0
  113. package/dist/registry.d.ts.map +1 -1
  114. package/dist/registry.js +11 -1
  115. package/dist/registry.js.map +1 -1
  116. package/dist/server.d.ts +2 -0
  117. package/dist/server.d.ts.map +1 -1
  118. package/dist/server.js +6 -0
  119. package/dist/server.js.map +1 -1
  120. package/dist/tokenizer-family.d.ts +39 -0
  121. package/dist/tokenizer-family.d.ts.map +1 -0
  122. package/dist/tokenizer-family.js +92 -0
  123. package/dist/tokenizer-family.js.map +1 -0
  124. package/dist/types.d.ts +186 -0
  125. package/dist/types.d.ts.map +1 -1
  126. package/logo.png +0 -0
  127. package/package.json +15 -3
@@ -6,10 +6,11 @@
6
6
  * @module
7
7
  */
8
8
  import { assertCleanPayload } from "../security.js";
9
+ import { getPublicSeed } from "./public-seed.js";
9
10
  /** Safety cap for paginated model listing. */
10
11
  export const MAX_MODELS_PER_PROVIDER = 10_000;
11
12
  /** Common API-key patterns to redact from error messages. */
12
- const API_KEY_PATTERN = /\b(sk-[A-Za-z0-9_-]{8,}|key-[A-Za-z0-9_-]{8,}|Bearer\s+[A-Za-z0-9._\-]{20,})\b/gi;
13
+ const API_KEY_PATTERN = /\b(sk-[A-Za-z0-9_-]{8,}|key-[A-Za-z0-9_-]{8,}|Bearer\s+[A-Za-z0-9._-]{20,})\b/gi;
13
14
  /** Sanitize a response body before including it in an error message. */
14
15
  function sanitizeErrorBody(raw, maxLen = 200) {
15
16
  const redacted = raw.replace(API_KEY_PATTERN, "[REDACTED]");
@@ -99,7 +100,59 @@ export class BaseDiscoverer {
99
100
  */
100
101
  /** Validate and normalise a timeout value. Returns defaultMs when invalid. */
101
102
  validateTimeout(timeout, defaultMs = 10_000) {
102
- return (Number.isFinite(timeout) && timeout > 0) ? timeout : defaultMs;
103
+ return Number.isFinite(timeout) && timeout > 0 ? timeout : defaultMs;
104
+ }
105
+ /**
106
+ * Union API discovery results with the public seed for this provider.
107
+ *
108
+ * Merge rules per (providerId, modelId):
109
+ * - **Identity wins from API.** If the API returned the model, the API
110
+ * entry's metadata (name, capabilities, mode, context window) is the
111
+ * authoritative description of "what this model is for this account".
112
+ * - **Pricing falls back to the seed.** Native list endpoints
113
+ * (`/v1/models` on Anthropic, OpenAI, Google) return *no pricing*.
114
+ * The seed (models.dev primary, LiteLLM filler) does. So when the
115
+ * API stub has no pricing and the seed entry does, we lift the seed's
116
+ * pricing onto the API entry.
117
+ * - **Seed-only models survive as filler.** Preview tiers, deprecated-
118
+ * but-still-priced SKUs, region-gated entries that the API doesn't
119
+ * list — keep them so consumers can still resolve historical IDs.
120
+ *
121
+ * Why this matters: without the pricing fallback, the same model can flip
122
+ * between two different prices depending on whether `/v1/models` was
123
+ * reachable when `kosha update` ran. That's a same-day-instability bug
124
+ * for any downstream that locks pricing at midnight (tokmeter et al).
125
+ *
126
+ * Failures in fetching the seed are swallowed — the API result still
127
+ * stands on its own. Pricing-degraded fallback is layered on at the
128
+ * registry-runtime merge step.
129
+ */
130
+ async mergeWithPublicSeed(apiCards) {
131
+ try {
132
+ const seeds = await getPublicSeed(this.providerId);
133
+ if (seeds.length === 0)
134
+ return apiCards;
135
+ const seedById = new Map(seeds.map((s) => [s.id, s]));
136
+ const enriched = apiCards.map((api) => {
137
+ const seed = seedById.get(api.id);
138
+ if (!seed)
139
+ return api;
140
+ const apiHasPricing = !!api.pricing || !!api.originPricing;
141
+ if (apiHasPricing)
142
+ return api;
143
+ return {
144
+ ...api,
145
+ pricing: seed.pricing,
146
+ originPricing: seed.originPricing,
147
+ };
148
+ });
149
+ const apiIds = new Set(apiCards.map((c) => c.id));
150
+ const filler = seeds.filter((s) => !apiIds.has(s.id));
151
+ return [...enriched, ...filler];
152
+ }
153
+ catch {
154
+ return apiCards;
155
+ }
103
156
  }
104
157
  makeCard(partial) {
105
158
  const capabilities = partial.capabilities ?? ["chat"];
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/discovery/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/discovery/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * kosha-discovery — Free-tier capability flag.
3
+ *
4
+ * Centralised helper that adds the `"free_tier"` capability to a
5
+ * {@link ModelCard} when the model is genuinely free for both input and
6
+ * output usage. Used by the public-catalog seeds (models.dev, LiteLLM)
7
+ * and by the post-discovery enricher so any path that ends up with
8
+ * 0/0 pricing gets the flag consistently.
9
+ *
10
+ * Distinct from "pricing unknown":
11
+ * - `pricing === undefined` → upstream had no pricing field at all.
12
+ * - `pricing = { in: 0, out: 0 }` → upstream said the model is free.
13
+ *
14
+ * Free can mean a structural offering (NVIDIA NIM dev tier, open-weights
15
+ * via deepinfra) or a temporary promotion (DeepSeek off-peak windows).
16
+ * We don't distinguish those today because no upstream catalog labels
17
+ * them — but the flag is enough for downstream cost classification.
18
+ * @module
19
+ */
20
+ import type { ModelCard } from "../types.js";
21
+ export declare const FREE_TIER_CAPABILITY = "free_tier";
22
+ /**
23
+ * Returns a copy of the card with `"free_tier"` added to capabilities
24
+ * when both input and output pricing are exactly zero. No-op otherwise.
25
+ *
26
+ * Idempotent: calling it twice does not duplicate the flag.
27
+ */
28
+ export declare function applyFreeTierFlag(card: ModelCard): ModelCard;
29
+ /** True when the card explicitly priced both directions at zero. */
30
+ export declare function isFreeTier(card: ModelCard): boolean;
31
+ //# sourceMappingURL=free-tier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"free-tier.d.ts","sourceRoot":"","sources":["../../src/discovery/free-tier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAU5D;AAED,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAInD"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * kosha-discovery — Free-tier capability flag.
3
+ *
4
+ * Centralised helper that adds the `"free_tier"` capability to a
5
+ * {@link ModelCard} when the model is genuinely free for both input and
6
+ * output usage. Used by the public-catalog seeds (models.dev, LiteLLM)
7
+ * and by the post-discovery enricher so any path that ends up with
8
+ * 0/0 pricing gets the flag consistently.
9
+ *
10
+ * Distinct from "pricing unknown":
11
+ * - `pricing === undefined` → upstream had no pricing field at all.
12
+ * - `pricing = { in: 0, out: 0 }` → upstream said the model is free.
13
+ *
14
+ * Free can mean a structural offering (NVIDIA NIM dev tier, open-weights
15
+ * via deepinfra) or a temporary promotion (DeepSeek off-peak windows).
16
+ * We don't distinguish those today because no upstream catalog labels
17
+ * them — but the flag is enough for downstream cost classification.
18
+ * @module
19
+ */
20
+ export const FREE_TIER_CAPABILITY = "free_tier";
21
+ /**
22
+ * Returns a copy of the card with `"free_tier"` added to capabilities
23
+ * when both input and output pricing are exactly zero. No-op otherwise.
24
+ *
25
+ * Idempotent: calling it twice does not duplicate the flag.
26
+ */
27
+ export function applyFreeTierFlag(card) {
28
+ if (!isFreeTier(card))
29
+ return card;
30
+ if (card.capabilities.includes(FREE_TIER_CAPABILITY))
31
+ return card;
32
+ const capabilities = [...card.capabilities, FREE_TIER_CAPABILITY];
33
+ const rawCapabilities = card.rawCapabilities
34
+ ? card.rawCapabilities.includes(FREE_TIER_CAPABILITY)
35
+ ? card.rawCapabilities
36
+ : [...card.rawCapabilities, FREE_TIER_CAPABILITY]
37
+ : undefined;
38
+ return { ...card, capabilities, rawCapabilities };
39
+ }
40
+ /** True when the card explicitly priced both directions at zero. */
41
+ export function isFreeTier(card) {
42
+ const pricing = card.pricing;
43
+ if (!pricing)
44
+ return false;
45
+ return pricing.inputPerMillion === 0 && pricing.outputPerMillion === 0;
46
+ }
47
+ //# sourceMappingURL=free-tier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"free-tier.js","sourceRoot":"","sources":["../../src/discovery/free-tier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAe;IAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAAE,OAAO,IAAI,CAAC;IAClE,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;IAClE,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe;QAC3C,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YACpD,CAAC,CAAC,IAAI,CAAC,eAAe;YACtB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,oBAAoB,CAAC;QAClD,CAAC,CAAC,SAAS,CAAC;IACb,OAAO,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;AACnD,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,UAAU,CAAC,IAAe;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,OAAO,CAAC,eAAe,KAAK,CAAC,IAAI,OAAO,CAAC,gBAAgB,KAAK,CAAC,CAAC;AACxE,CAAC"}
@@ -49,7 +49,14 @@ export declare class GoogleDiscoverer extends BaseDiscoverer {
49
49
  * Gemini Pro, Ultra, and Flash variants support function calling and vision.
50
50
  */
51
51
  private inferCapabilities;
52
- /** Return curated fallback models when no API key is configured. */
52
+ /**
53
+ * No-key fallback: source the latest public seed via {@link getPublicSeed},
54
+ * which uses models.dev as the primary source, fills gaps from the public
55
+ * LiteLLM catalog, and applies promo overrides. Falls back to the curated
56
+ * static list only if the public-seed fetch fails or returns no models.
57
+ */
58
+ private publicCatalogFallback;
59
+ /** Return curated fallback models when both API and public catalog are unavailable. */
53
60
  private staticFallbackModels;
54
61
  }
55
62
  //# sourceMappingURL=google.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../src/discovery/google.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAa,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,cAAc,EAA2B,MAAM,WAAW,CAAC;AAuBpE;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IACnD,QAAQ,CAAC,UAAU,YAAY;IAC/B,QAAQ,CAAC,YAAY,YAAY;IACjC,QAAQ,CAAC,OAAO,+CAA+C;IAE/D;;;;OAIG;IACG,QAAQ,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAsBlG;;OAEG;IACH,OAAO,CAAC,QAAQ;IAQhB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAmBnB;;OAEG;IACH,OAAO,CAAC,SAAS;IAYjB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAgCzB,oEAAoE;IACpE,OAAO,CAAC,oBAAoB;CAa5B"}
1
+ {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../src/discovery/google.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAa,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,cAAc,EAA2B,MAAM,WAAW,CAAC;AAwBpE;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IACnD,QAAQ,CAAC,UAAU,YAAY;IAC/B,QAAQ,CAAC,YAAY,YAAY;IACjC,QAAQ,CAAC,OAAO,+CAA+C;IAE/D;;;;OAIG;IACG,QAAQ,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA0BlG;;OAEG;IACH,OAAO,CAAC,QAAQ;IAQhB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAmBnB;;OAEG;IACH,OAAO,CAAC,SAAS;IAYjB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAgCzB;;;;;OAKG;YACW,qBAAqB;IAUnC,uFAAuF;IACvF,OAAO,CAAC,oBAAoB;CAe5B"}
@@ -9,6 +9,7 @@
9
9
  * @module
10
10
  */
11
11
  import { BaseDiscoverer, MAX_MODELS_PER_PROVIDER } from "./base.js";
12
+ import { getPublicSeed } from "./public-seed.js";
12
13
  import { STATIC_GOOGLE_MODELS } from "./static-direct.js";
13
14
  /**
14
15
  * Discovers models available through the Google Generative Language API.
@@ -28,7 +29,7 @@ export class GoogleDiscoverer extends BaseDiscoverer {
28
29
  async discover(credential, options) {
29
30
  const apiKey = credential.apiKey ?? credential.accessToken;
30
31
  if (!apiKey) {
31
- return this.staticFallbackModels();
32
+ return this.publicCatalogFallback();
32
33
  }
33
34
  const timeoutMs = this.validateTimeout(options?.timeout);
34
35
  const allModels = [];
@@ -42,7 +43,11 @@ export class GoogleDiscoverer extends BaseDiscoverer {
42
43
  if (allModels.length >= MAX_MODELS_PER_PROVIDER)
43
44
  break;
44
45
  } while (pageToken);
45
- return allModels.map((model) => this.toModelCard(model));
46
+ const apiCards = allModels.map((model) => this.toModelCard(model));
47
+ // Merge public catalog so any Gemini SKU not in v1beta/models keeps its
48
+ // pricing. API wins on identity; seed wins on pricing where the API
49
+ // stub has none.
50
+ return this.mergeWithPublicSeed(apiCards);
46
51
  }
47
52
  /**
48
53
  * Build the paginated list URL with API key and optional page token.
@@ -119,7 +124,24 @@ export class GoogleDiscoverer extends BaseDiscoverer {
119
124
  }
120
125
  return capabilities.length > 0 ? capabilities : ["chat"];
121
126
  }
122
- /** Return curated fallback models when no API key is configured. */
127
+ /**
128
+ * No-key fallback: source the latest public seed via {@link getPublicSeed},
129
+ * which uses models.dev as the primary source, fills gaps from the public
130
+ * LiteLLM catalog, and applies promo overrides. Falls back to the curated
131
+ * static list only if the public-seed fetch fails or returns no models.
132
+ */
133
+ async publicCatalogFallback() {
134
+ try {
135
+ const seeds = await getPublicSeed(this.providerId);
136
+ if (seeds.length > 0)
137
+ return seeds;
138
+ }
139
+ catch {
140
+ /* fall through to static fallback */
141
+ }
142
+ return this.staticFallbackModels();
143
+ }
144
+ /** Return curated fallback models when both API and public catalog are unavailable. */
123
145
  staticFallbackModels() {
124
146
  return STATIC_GOOGLE_MODELS.map((model) => this.makeCard({
125
147
  id: model.id,
@@ -1 +1 @@
1
- {"version":3,"file":"google.js","sourceRoot":"","sources":["../../src/discovery/google.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAsB1D;;;;;GAKG;AACH,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IAC1C,UAAU,GAAG,QAAQ,CAAC;IACtB,YAAY,GAAG,QAAQ,CAAC;IACxB,OAAO,GAAG,2CAA2C,CAAC;IAE/D;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,UAA4B,EAAE,OAA8B;QAC1E,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,WAAW,CAAC;QAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACpC,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,SAAS,GAAkB,EAAE,CAAC;QACpC,IAAI,SAA6B,CAAC;QAElC,0EAA0E;QAC1E,GAAG,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAqB,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACrF,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC;YACnC,IAAI,SAAS,CAAC,MAAM,IAAI,uBAAuB;gBAAE,MAAM;QACxD,CAAC,QAAQ,SAAS,EAAE;QAEpB,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,MAAc,EAAE,SAAkB;QAClD,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,sBAAsB,MAAM,eAAe,CAAC;QACrE,IAAI,SAAS,EAAE,CAAC;YACf,GAAG,IAAI,cAAc,SAAS,EAAE,CAAC;QAClC,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;IAED;;;;;OAKG;IACK,WAAW,CAAC,KAAkB;QACrC,sEAAsE;QACtE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC,QAAQ,CAAC;YACpB,EAAE;YACF,IAAI,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;YAC7B,QAAQ,EAAE,IAAI,CAAC,UAAU;YACzB,IAAI;YACJ,YAAY;YACZ,gEAAgE;YAChE,aAAa,EAAE,KAAK,CAAC,eAAe,IAAI,CAAC;YACzC,eAAe,EAAE,KAAK,CAAC,gBAAgB,IAAI,CAAC;YAC5C,cAAc,EAAE,KAAK,CAAC,eAAe,IAAI,SAAS;SAClD,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,KAAkB;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC;QACvD,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAE7D,+DAA+D;QAC/D,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5E,OAAO,WAAW,CAAC;QACpB,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CAAC,KAAkB;QAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC;QACvD,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7D,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5E,OAAO,CAAC,WAAW,CAAC,CAAC;QACtB,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACzC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QAED,+CAA+C;QAC/C,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAEjC,0DAA0D;YAC1D,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxE,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACvC,CAAC;YAED,2DAA2D;YAC3D,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC;QACF,CAAC;QAED,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,oEAAoE;IAC5D,oBAAoB;QAC3B,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;YACxD,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,IAAI,CAAC,UAAU;YACzB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,CAAC;YACvC,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,CAAC;YAC3C,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,MAAM,EAAE,QAAQ;SAChB,CAAC,CAAC,CAAC;IACL,CAAC;CACD"}
1
+ {"version":3,"file":"google.js","sourceRoot":"","sources":["../../src/discovery/google.ts"],"names":[],"mappings":"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"}
@@ -34,13 +34,10 @@ export declare function getAllDiscoverers(options?: {
34
34
  llamaCppBaseUrl?: string;
35
35
  }): ProviderDiscoverer[];
36
36
  /**
37
- * Returns a single discoverer by provider ID, or undefined if not found.
37
+ * Returns a single discoverer by canonical provider ID, or undefined if not found.
38
38
  *
39
- * Supported IDs: `"anthropic"`, `"openai"`, `"google"`, `"ollama"`,
40
- * `"openrouter"`, `"bedrock"`, `"vertex"`, `"nvidia"`, `"together"`,
41
- * `"fireworks"`, `"groq"`, `"mistral"`, `"deepinfra"`, `"cohere"`,
42
- * `"cerebras"`, `"perplexity"`, `"deepseek"`, `"moonshot"`,
43
- * `"glm"`, `"zai"`, `"minimax"`.
39
+ * Supported IDs are the keys of {@link DISCOVERER_REGISTRY} — every provider
40
+ * in the canonical catalog.
44
41
  */
45
42
  export declare function getDiscoverer(providerId: string, options?: {
46
43
  baseUrl?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/discovery/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAyBtD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,EAAE,CAyBtH;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,GAAG,SAAS,CA0BhH"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/discovery/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AA2DtD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,EAAE,CAMtH;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,GAAG,SAAS,CAGhH"}
@@ -45,6 +45,30 @@ import { GLMDiscoverer } from "./glm.js";
45
45
  import { ZAIDiscoverer } from "./zai.js";
46
46
  import { MiniMaxDiscoverer } from "./minimax.js";
47
47
  import { normalizeProviderId } from "../provider-catalog.js";
48
+ const DISCOVERER_REGISTRY = {
49
+ anthropic: () => new AnthropicDiscoverer(),
50
+ openai: () => new OpenAIDiscoverer(),
51
+ google: () => new GoogleDiscoverer(),
52
+ ollama: (baseUrl) => new OllamaDiscoverer(baseUrl),
53
+ "llama.cpp": (baseUrl) => new LlamaCppDiscoverer(baseUrl),
54
+ openrouter: () => new OpenRouterDiscoverer(),
55
+ bedrock: () => new BedrockDiscoverer(),
56
+ vertex: () => new VertexDiscoverer(),
57
+ nvidia: () => new NvidiaDiscoverer(),
58
+ together: () => new TogetherDiscoverer(),
59
+ fireworks: () => new FireworksDiscoverer(),
60
+ groq: () => new GroqDiscoverer(),
61
+ mistral: () => new MistralDiscoverer(),
62
+ deepinfra: () => new DeepInfraDiscoverer(),
63
+ cohere: () => new CohereDiscoverer(),
64
+ cerebras: () => new CerebrasDiscoverer(),
65
+ perplexity: () => new PerplexityDiscoverer(),
66
+ deepseek: () => new DeepSeekDiscoverer(),
67
+ moonshot: () => new MoonshotDiscoverer(),
68
+ glm: () => new GLMDiscoverer(),
69
+ zai: () => new ZAIDiscoverer(),
70
+ minimax: () => new MiniMaxDiscoverer(),
71
+ };
48
72
  /**
49
73
  * Returns all built-in provider discoverers.
50
74
  *
@@ -52,65 +76,22 @@ import { normalizeProviderId } from "../provider-catalog.js";
52
76
  * as well as managed-service proxies (AWS Bedrock, Google Vertex AI).
53
77
  */
54
78
  export function getAllDiscoverers(options) {
55
- return [
56
- new AnthropicDiscoverer(),
57
- new OpenAIDiscoverer(),
58
- new GoogleDiscoverer(),
59
- new OllamaDiscoverer(options?.ollamaBaseUrl),
60
- new LlamaCppDiscoverer(options?.llamaCppBaseUrl),
61
- new OpenRouterDiscoverer(),
62
- new BedrockDiscoverer(),
63
- new VertexDiscoverer(),
64
- new NvidiaDiscoverer(),
65
- new TogetherDiscoverer(),
66
- new FireworksDiscoverer(),
67
- new GroqDiscoverer(),
68
- new MistralDiscoverer(),
69
- new DeepInfraDiscoverer(),
70
- new CohereDiscoverer(),
71
- new CerebrasDiscoverer(),
72
- new PerplexityDiscoverer(),
73
- new DeepSeekDiscoverer(),
74
- new MoonshotDiscoverer(),
75
- new GLMDiscoverer(),
76
- new ZAIDiscoverer(),
77
- new MiniMaxDiscoverer(),
78
- ];
79
+ return Object.entries(DISCOVERER_REGISTRY).map(([id, factory]) => {
80
+ if (id === "ollama")
81
+ return factory(options?.ollamaBaseUrl);
82
+ if (id === "llama.cpp")
83
+ return factory(options?.llamaCppBaseUrl);
84
+ return factory();
85
+ });
79
86
  }
80
87
  /**
81
- * Returns a single discoverer by provider ID, or undefined if not found.
88
+ * Returns a single discoverer by canonical provider ID, or undefined if not found.
82
89
  *
83
- * Supported IDs: `"anthropic"`, `"openai"`, `"google"`, `"ollama"`,
84
- * `"openrouter"`, `"bedrock"`, `"vertex"`, `"nvidia"`, `"together"`,
85
- * `"fireworks"`, `"groq"`, `"mistral"`, `"deepinfra"`, `"cohere"`,
86
- * `"cerebras"`, `"perplexity"`, `"deepseek"`, `"moonshot"`,
87
- * `"glm"`, `"zai"`, `"minimax"`.
90
+ * Supported IDs are the keys of {@link DISCOVERER_REGISTRY} — every provider
91
+ * in the canonical catalog.
88
92
  */
89
93
  export function getDiscoverer(providerId, options) {
90
- const map = {
91
- anthropic: () => new AnthropicDiscoverer(),
92
- openai: () => new OpenAIDiscoverer(),
93
- google: () => new GoogleDiscoverer(),
94
- ollama: () => new OllamaDiscoverer(options?.baseUrl),
95
- "llama.cpp": () => new LlamaCppDiscoverer(options?.baseUrl),
96
- openrouter: () => new OpenRouterDiscoverer(),
97
- bedrock: () => new BedrockDiscoverer(),
98
- vertex: () => new VertexDiscoverer(),
99
- nvidia: () => new NvidiaDiscoverer(),
100
- together: () => new TogetherDiscoverer(),
101
- fireworks: () => new FireworksDiscoverer(),
102
- groq: () => new GroqDiscoverer(),
103
- mistral: () => new MistralDiscoverer(),
104
- deepinfra: () => new DeepInfraDiscoverer(),
105
- cohere: () => new CohereDiscoverer(),
106
- cerebras: () => new CerebrasDiscoverer(),
107
- perplexity: () => new PerplexityDiscoverer(),
108
- deepseek: () => new DeepSeekDiscoverer(),
109
- moonshot: () => new MoonshotDiscoverer(),
110
- glm: () => new GLMDiscoverer(),
111
- zai: () => new ZAIDiscoverer(),
112
- minimax: () => new MiniMaxDiscoverer(),
113
- };
114
- return map[normalizeProviderId(providerId) ?? providerId]?.();
94
+ const id = normalizeProviderId(providerId) ?? providerId;
95
+ return DISCOVERER_REGISTRY[id]?.(options?.baseUrl);
115
96
  }
116
97
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/discovery/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/discovery/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * kosha-discovery — Public-catalog seed for origin providers.
3
+ *
4
+ * Treats the LiteLLM community catalog as the canonical *public* source of
5
+ * "what models exist with what pricing/context/capabilities" and converts
6
+ * it into seed {@link ModelCard} arrays per origin provider.
7
+ *
8
+ * This decouples kosha discovery from API keys: anyone running `kosha
9
+ * latest`, with or without credentials, gets the current state of the
10
+ * world for every supported origin provider.
11
+ *
12
+ * Hardening notes:
13
+ * - All fields are read defensively (`typeof` checks, length caps).
14
+ * - Synthetic IDs are slugified to strict `[A-Za-z0-9._/:-]` so a
15
+ * compromised catalog cannot smuggle injection-shaped strings into
16
+ * downstream consumers.
17
+ * - The maximum number of seeded models per provider is capped to bound
18
+ * cost of a hostile catalog.
19
+ * @module
20
+ */
21
+ import type { ModelCard } from "../types.js";
22
+ /**
23
+ * Build a fresh array of seed {@link ModelCard}s for the given kosha
24
+ * provider ID, using the shared LiteLLM catalog. Returns `[]` if the
25
+ * provider has no entries in the catalog.
26
+ *
27
+ * The returned cards have `source: "litellm"` so downstream consumers
28
+ * (and the existing pricing enricher) can distinguish public-catalog
29
+ * data from live-API data.
30
+ */
31
+ export declare function getLiteLLMSeed(providerId: string): Promise<ModelCard[]>;
32
+ //# sourceMappingURL=litellm-seed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"litellm-seed.d.ts","sourceRoot":"","sources":["../../src/discovery/litellm-seed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAA2B,MAAM,aAAa,CAAC;AA6CtE;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAyB7E"}