@sriinnu/kosha-discovery 0.5.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 (208) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +286 -0
  3. package/dist/aliases.d.ts +51 -0
  4. package/dist/aliases.d.ts.map +1 -0
  5. package/dist/aliases.js +115 -0
  6. package/dist/aliases.js.map +1 -0
  7. package/dist/cache.d.ts +57 -0
  8. package/dist/cache.d.ts.map +1 -0
  9. package/dist/cache.js +123 -0
  10. package/dist/cache.js.map +1 -0
  11. package/dist/cli-commands.d.ts +142 -0
  12. package/dist/cli-commands.d.ts.map +1 -0
  13. package/dist/cli-commands.js +746 -0
  14. package/dist/cli-commands.js.map +1 -0
  15. package/dist/cli-format.d.ts +119 -0
  16. package/dist/cli-format.d.ts.map +1 -0
  17. package/dist/cli-format.js +171 -0
  18. package/dist/cli-format.js.map +1 -0
  19. package/dist/cli.d.ts +15 -0
  20. package/dist/cli.d.ts.map +1 -0
  21. package/dist/cli.js +143 -0
  22. package/dist/cli.js.map +1 -0
  23. package/dist/credentials/index.d.ts +2 -0
  24. package/dist/credentials/index.d.ts.map +1 -0
  25. package/dist/credentials/index.js +2 -0
  26. package/dist/credentials/index.js.map +1 -0
  27. package/dist/credentials/resolver.d.ts +170 -0
  28. package/dist/credentials/resolver.d.ts.map +1 -0
  29. package/dist/credentials/resolver.js +597 -0
  30. package/dist/credentials/resolver.js.map +1 -0
  31. package/dist/discovery/anthropic.d.ts +49 -0
  32. package/dist/discovery/anthropic.d.ts.map +1 -0
  33. package/dist/discovery/anthropic.js +101 -0
  34. package/dist/discovery/anthropic.js.map +1 -0
  35. package/dist/discovery/base.d.ts +59 -0
  36. package/dist/discovery/base.d.ts.map +1 -0
  37. package/dist/discovery/base.js +123 -0
  38. package/dist/discovery/base.js.map +1 -0
  39. package/dist/discovery/bedrock.d.ts +122 -0
  40. package/dist/discovery/bedrock.d.ts.map +1 -0
  41. package/dist/discovery/bedrock.js +356 -0
  42. package/dist/discovery/bedrock.js.map +1 -0
  43. package/dist/discovery/cerebras.d.ts +43 -0
  44. package/dist/discovery/cerebras.d.ts.map +1 -0
  45. package/dist/discovery/cerebras.js +65 -0
  46. package/dist/discovery/cerebras.js.map +1 -0
  47. package/dist/discovery/cohere.d.ts +57 -0
  48. package/dist/discovery/cohere.d.ts.map +1 -0
  49. package/dist/discovery/cohere.js +82 -0
  50. package/dist/discovery/cohere.js.map +1 -0
  51. package/dist/discovery/deepinfra.d.ts +41 -0
  52. package/dist/discovery/deepinfra.d.ts.map +1 -0
  53. package/dist/discovery/deepinfra.js +86 -0
  54. package/dist/discovery/deepinfra.js.map +1 -0
  55. package/dist/discovery/deepseek.d.ts +17 -0
  56. package/dist/discovery/deepseek.d.ts.map +1 -0
  57. package/dist/discovery/deepseek.js +45 -0
  58. package/dist/discovery/deepseek.js.map +1 -0
  59. package/dist/discovery/fireworks.d.ts +48 -0
  60. package/dist/discovery/fireworks.d.ts.map +1 -0
  61. package/dist/discovery/fireworks.js +101 -0
  62. package/dist/discovery/fireworks.js.map +1 -0
  63. package/dist/discovery/glm.d.ts +17 -0
  64. package/dist/discovery/glm.d.ts.map +1 -0
  65. package/dist/discovery/glm.js +52 -0
  66. package/dist/discovery/glm.js.map +1 -0
  67. package/dist/discovery/google.d.ts +53 -0
  68. package/dist/discovery/google.d.ts.map +1 -0
  69. package/dist/discovery/google.js +122 -0
  70. package/dist/discovery/google.js.map +1 -0
  71. package/dist/discovery/groq.d.ts +44 -0
  72. package/dist/discovery/groq.d.ts.map +1 -0
  73. package/dist/discovery/groq.js +89 -0
  74. package/dist/discovery/groq.js.map +1 -0
  75. package/dist/discovery/index.d.ts +48 -0
  76. package/dist/discovery/index.d.ts.map +1 -0
  77. package/dist/discovery/index.js +116 -0
  78. package/dist/discovery/index.js.map +1 -0
  79. package/dist/discovery/llama-cpp.d.ts +45 -0
  80. package/dist/discovery/llama-cpp.d.ts.map +1 -0
  81. package/dist/discovery/llama-cpp.js +137 -0
  82. package/dist/discovery/llama-cpp.js.map +1 -0
  83. package/dist/discovery/minimax.d.ts +16 -0
  84. package/dist/discovery/minimax.d.ts.map +1 -0
  85. package/dist/discovery/minimax.js +56 -0
  86. package/dist/discovery/minimax.js.map +1 -0
  87. package/dist/discovery/mistral.d.ts +45 -0
  88. package/dist/discovery/mistral.d.ts.map +1 -0
  89. package/dist/discovery/mistral.js +82 -0
  90. package/dist/discovery/mistral.js.map +1 -0
  91. package/dist/discovery/moonshot.d.ts +16 -0
  92. package/dist/discovery/moonshot.d.ts.map +1 -0
  93. package/dist/discovery/moonshot.js +46 -0
  94. package/dist/discovery/moonshot.js.map +1 -0
  95. package/dist/discovery/nvidia.d.ts +60 -0
  96. package/dist/discovery/nvidia.d.ts.map +1 -0
  97. package/dist/discovery/nvidia.js +145 -0
  98. package/dist/discovery/nvidia.js.map +1 -0
  99. package/dist/discovery/ollama.d.ts +57 -0
  100. package/dist/discovery/ollama.d.ts.map +1 -0
  101. package/dist/discovery/ollama.js +151 -0
  102. package/dist/discovery/ollama.js.map +1 -0
  103. package/dist/discovery/openai-compatible.d.ts +126 -0
  104. package/dist/discovery/openai-compatible.d.ts.map +1 -0
  105. package/dist/discovery/openai-compatible.js +161 -0
  106. package/dist/discovery/openai-compatible.js.map +1 -0
  107. package/dist/discovery/openai.d.ts +62 -0
  108. package/dist/discovery/openai.d.ts.map +1 -0
  109. package/dist/discovery/openai.js +157 -0
  110. package/dist/discovery/openai.js.map +1 -0
  111. package/dist/discovery/openrouter.d.ts +78 -0
  112. package/dist/discovery/openrouter.d.ts.map +1 -0
  113. package/dist/discovery/openrouter.js +184 -0
  114. package/dist/discovery/openrouter.js.map +1 -0
  115. package/dist/discovery/perplexity.d.ts +66 -0
  116. package/dist/discovery/perplexity.d.ts.map +1 -0
  117. package/dist/discovery/perplexity.js +86 -0
  118. package/dist/discovery/perplexity.js.map +1 -0
  119. package/dist/discovery/together.d.ts +41 -0
  120. package/dist/discovery/together.d.ts.map +1 -0
  121. package/dist/discovery/together.js +88 -0
  122. package/dist/discovery/together.js.map +1 -0
  123. package/dist/discovery/vertex.d.ts +146 -0
  124. package/dist/discovery/vertex.d.ts.map +1 -0
  125. package/dist/discovery/vertex.js +371 -0
  126. package/dist/discovery/vertex.js.map +1 -0
  127. package/dist/discovery/zai.d.ts +17 -0
  128. package/dist/discovery/zai.d.ts.map +1 -0
  129. package/dist/discovery/zai.js +51 -0
  130. package/dist/discovery/zai.js.map +1 -0
  131. package/dist/discovery-contract.d.ts +186 -0
  132. package/dist/discovery-contract.d.ts.map +1 -0
  133. package/dist/discovery-contract.js +115 -0
  134. package/dist/discovery-contract.js.map +1 -0
  135. package/dist/discovery-routes.d.ts +14 -0
  136. package/dist/discovery-routes.d.ts.map +1 -0
  137. package/dist/discovery-routes.js +98 -0
  138. package/dist/discovery-routes.js.map +1 -0
  139. package/dist/enrichment/index.d.ts +2 -0
  140. package/dist/enrichment/index.d.ts.map +1 -0
  141. package/dist/enrichment/index.js +2 -0
  142. package/dist/enrichment/index.js.map +1 -0
  143. package/dist/enrichment/litellm.d.ts +52 -0
  144. package/dist/enrichment/litellm.d.ts.map +1 -0
  145. package/dist/enrichment/litellm.js +205 -0
  146. package/dist/enrichment/litellm.js.map +1 -0
  147. package/dist/index.d.ts +30 -0
  148. package/dist/index.d.ts.map +1 -0
  149. package/dist/index.js +33 -0
  150. package/dist/index.js.map +1 -0
  151. package/dist/normalize.d.ts +64 -0
  152. package/dist/normalize.d.ts.map +1 -0
  153. package/dist/normalize.js +166 -0
  154. package/dist/normalize.js.map +1 -0
  155. package/dist/provider-catalog.d.ts +62 -0
  156. package/dist/provider-catalog.d.ts.map +1 -0
  157. package/dist/provider-catalog.js +331 -0
  158. package/dist/provider-catalog.js.map +1 -0
  159. package/dist/registry-delta.d.ts +17 -0
  160. package/dist/registry-delta.d.ts.map +1 -0
  161. package/dist/registry-delta.js +74 -0
  162. package/dist/registry-delta.js.map +1 -0
  163. package/dist/registry-discovery.d.ts +66 -0
  164. package/dist/registry-discovery.d.ts.map +1 -0
  165. package/dist/registry-discovery.js +339 -0
  166. package/dist/registry-discovery.js.map +1 -0
  167. package/dist/registry-query.d.ts +74 -0
  168. package/dist/registry-query.d.ts.map +1 -0
  169. package/dist/registry-query.js +310 -0
  170. package/dist/registry-query.js.map +1 -0
  171. package/dist/registry-runtime.d.ts +48 -0
  172. package/dist/registry-runtime.d.ts.map +1 -0
  173. package/dist/registry-runtime.js +255 -0
  174. package/dist/registry-runtime.js.map +1 -0
  175. package/dist/registry-selection.d.ts +31 -0
  176. package/dist/registry-selection.d.ts.map +1 -0
  177. package/dist/registry-selection.js +167 -0
  178. package/dist/registry-selection.js.map +1 -0
  179. package/dist/registry-state.d.ts +92 -0
  180. package/dist/registry-state.d.ts.map +1 -0
  181. package/dist/registry-state.js +35 -0
  182. package/dist/registry-state.js.map +1 -0
  183. package/dist/registry.d.ts +127 -0
  184. package/dist/registry.d.ts.map +1 -0
  185. package/dist/registry.js +248 -0
  186. package/dist/registry.js.map +1 -0
  187. package/dist/resilience.d.ts +212 -0
  188. package/dist/resilience.d.ts.map +1 -0
  189. package/dist/resilience.js +292 -0
  190. package/dist/resilience.js.map +1 -0
  191. package/dist/security.d.ts +44 -0
  192. package/dist/security.d.ts.map +1 -0
  193. package/dist/security.js +184 -0
  194. package/dist/security.js.map +1 -0
  195. package/dist/server.d.ts +41 -0
  196. package/dist/server.d.ts.map +1 -0
  197. package/dist/server.js +320 -0
  198. package/dist/server.js.map +1 -0
  199. package/dist/shell-safe.d.ts +15 -0
  200. package/dist/shell-safe.d.ts.map +1 -0
  201. package/dist/shell-safe.js +20 -0
  202. package/dist/shell-safe.js.map +1 -0
  203. package/dist/types.d.ts +365 -0
  204. package/dist/types.d.ts.map +1 -0
  205. package/dist/types.js +10 -0
  206. package/dist/types.js.map +1 -0
  207. package/logo.svg +81 -0
  208. package/package.json +85 -0
@@ -0,0 +1,44 @@
1
+ /**
2
+ * kosha-discovery — Groq provider discoverer.
3
+ *
4
+ * Queries the Groq `/v1/models` endpoint (OpenAI-compatible),
5
+ * and maps models into {@link ModelCard} objects.
6
+ *
7
+ * Groq uses flat model IDs without vendor prefixes (e.g. `llama-3.3-70b-versatile`,
8
+ * `mixtral-8x7b-32768`), so origin provider is inferred from name heuristics.
9
+ * @module
10
+ */
11
+ import { OpenAICompatibleDiscoverer, type OpenAICompatibleModel, type ModelClassification } from "./openai-compatible.js";
12
+ /**
13
+ * Discovers models available through the Groq API.
14
+ *
15
+ * Groq hosts a curated catalog of open-source models served via its
16
+ * LPU Inference Engine. Model IDs are flat (no vendor prefix), so
17
+ * origin provider is inferred from name heuristics.
18
+ */
19
+ export declare class GroqDiscoverer extends OpenAICompatibleDiscoverer {
20
+ readonly providerId = "groq";
21
+ readonly providerName = "Groq";
22
+ readonly baseUrl = "https://api.groq.com/openai";
23
+ /**
24
+ * Classify a Groq model: determine origin provider, mode, and capabilities.
25
+ *
26
+ * Groq has a curated catalog of open-source models, so all models are kept
27
+ * (no filter needed). Origin is inferred from keywords in the model ID.
28
+ */
29
+ protected classifyModel(model: OpenAICompatibleModel): ModelClassification;
30
+ /** Map a model ID to its primary {@link ModelMode}. */
31
+ private inferMode;
32
+ /**
33
+ * Infer capability flags from the model ID.
34
+ *
35
+ * Key heuristics:
36
+ * - Whisper models get "speech_to_text" only
37
+ * - Guard models get "chat" + "moderation"
38
+ * - Vision models get "vision" added
39
+ * - Code-specialized models get "code" added
40
+ * - Most chat models get "function_calling" (Groq supports it broadly)
41
+ */
42
+ private inferCapabilities;
43
+ }
44
+ //# sourceMappingURL=groq.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groq.d.ts","sourceRoot":"","sources":["../../src/discovery/groq.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,0BAA0B,EAAE,KAAK,qBAAqB,EAAE,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE1H;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,0BAA0B;IAC7D,QAAQ,CAAC,UAAU,UAAU;IAC7B,QAAQ,CAAC,YAAY,UAAU;IAC/B,QAAQ,CAAC,OAAO,iCAAiC;IAEjD;;;;;OAKG;IACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG,mBAAmB;IA2B1E,uDAAuD;IACvD,OAAO,CAAC,SAAS;IAKjB;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;CA6BzB"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * kosha-discovery — Groq provider discoverer.
3
+ *
4
+ * Queries the Groq `/v1/models` endpoint (OpenAI-compatible),
5
+ * and maps models into {@link ModelCard} objects.
6
+ *
7
+ * Groq uses flat model IDs without vendor prefixes (e.g. `llama-3.3-70b-versatile`,
8
+ * `mixtral-8x7b-32768`), so origin provider is inferred from name heuristics.
9
+ * @module
10
+ */
11
+ import { OpenAICompatibleDiscoverer } from "./openai-compatible.js";
12
+ /**
13
+ * Discovers models available through the Groq API.
14
+ *
15
+ * Groq hosts a curated catalog of open-source models served via its
16
+ * LPU Inference Engine. Model IDs are flat (no vendor prefix), so
17
+ * origin provider is inferred from name heuristics.
18
+ */
19
+ export class GroqDiscoverer extends OpenAICompatibleDiscoverer {
20
+ providerId = "groq";
21
+ providerName = "Groq";
22
+ baseUrl = "https://api.groq.com/openai";
23
+ /**
24
+ * Classify a Groq model: determine origin provider, mode, and capabilities.
25
+ *
26
+ * Groq has a curated catalog of open-source models, so all models are kept
27
+ * (no filter needed). Origin is inferred from keywords in the model ID.
28
+ */
29
+ classifyModel(model) {
30
+ const lower = model.id.toLowerCase();
31
+ const originProvider = this.inferOriginFromKeywords(lower, [
32
+ ["deepseek", "deepseek"],
33
+ ["mixtral", "mistral"],
34
+ ["mistral", "mistral"],
35
+ ["gemma", "google"],
36
+ ["qwen", "qwen"],
37
+ ["whisper", "openai"],
38
+ ["llama", "meta"],
39
+ ], "groq");
40
+ const mode = this.inferMode(lower);
41
+ const capabilities = this.inferCapabilities(lower);
42
+ return {
43
+ originProvider,
44
+ mode,
45
+ capabilities,
46
+ contextWindow: model.context_window,
47
+ };
48
+ }
49
+ /** Map a model ID to its primary {@link ModelMode}. */
50
+ inferMode(lower) {
51
+ if (lower.includes("whisper"))
52
+ return "audio";
53
+ return "chat";
54
+ }
55
+ /**
56
+ * Infer capability flags from the model ID.
57
+ *
58
+ * Key heuristics:
59
+ * - Whisper models get "speech_to_text" only
60
+ * - Guard models get "chat" + "moderation"
61
+ * - Vision models get "vision" added
62
+ * - Code-specialized models get "code" added
63
+ * - Most chat models get "function_calling" (Groq supports it broadly)
64
+ */
65
+ inferCapabilities(lower) {
66
+ // Audio / speech-to-text models
67
+ if (lower.includes("whisper")) {
68
+ return ["speech_to_text"];
69
+ }
70
+ const caps = ["chat"];
71
+ // Guard / safety models
72
+ if (lower.includes("guard")) {
73
+ caps.push("moderation");
74
+ return caps;
75
+ }
76
+ // Vision models
77
+ if (this.looksLikeVision(lower)) {
78
+ caps.push("vision");
79
+ }
80
+ // Code-specialized models
81
+ if (this.looksLikeCode(lower)) {
82
+ caps.push("code");
83
+ }
84
+ // Function calling — Groq supports it broadly for chat models
85
+ caps.push("function_calling");
86
+ return caps;
87
+ }
88
+ }
89
+ //# sourceMappingURL=groq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groq.js","sourceRoot":"","sources":["../../src/discovery/groq.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,0BAA0B,EAAwD,MAAM,wBAAwB,CAAC;AAE1H;;;;;;GAMG;AACH,MAAM,OAAO,cAAe,SAAQ,0BAA0B;IACpD,UAAU,GAAG,MAAM,CAAC;IACpB,YAAY,GAAG,MAAM,CAAC;IACtB,OAAO,GAAG,6BAA6B,CAAC;IAEjD;;;;;OAKG;IACO,aAAa,CAAC,KAA4B;QACnD,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAClD,KAAK,EACL;YACC,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,SAAS,EAAE,SAAS,CAAC;YACtB,CAAC,SAAS,EAAE,SAAS,CAAC;YACtB,CAAC,OAAO,EAAE,QAAQ,CAAC;YACnB,CAAC,MAAM,EAAE,MAAM,CAAC;YAChB,CAAC,SAAS,EAAE,QAAQ,CAAC;YACrB,CAAC,OAAO,EAAE,MAAM,CAAC;SACjB,EACD,MAAM,CACN,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEnD,OAAO;YACN,cAAc;YACd,IAAI;YACJ,YAAY;YACZ,aAAa,EAAE,KAAK,CAAC,cAAc;SACnC,CAAC;IACH,CAAC;IAED,uDAAuD;IAC/C,SAAS,CAAC,KAAa;QAC9B,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO,OAAO,CAAC;QAC9C,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;;;;;;;;OASG;IACK,iBAAiB,CAAC,KAAa;QACtC,gCAAgC;QAChC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,IAAI,GAAa,CAAC,MAAM,CAAC,CAAC;QAEhC,wBAAwB;QACxB,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,gBAAgB;QAChB,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;QAED,0BAA0B;QAC1B,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;QAED,8DAA8D;QAC9D,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAE9B,OAAO,IAAI,CAAC;IACb,CAAC;CACD"}
@@ -0,0 +1,48 @@
1
+ export { AnthropicDiscoverer } from "./anthropic.js";
2
+ export { OpenAIDiscoverer } from "./openai.js";
3
+ export { GoogleDiscoverer } from "./google.js";
4
+ export { OllamaDiscoverer } from "./ollama.js";
5
+ export { LlamaCppDiscoverer } from "./llama-cpp.js";
6
+ export { OpenRouterDiscoverer } from "./openrouter.js";
7
+ export { BedrockDiscoverer, inferOriginFromBedrockId } from "./bedrock.js";
8
+ export { VertexDiscoverer } from "./vertex.js";
9
+ export { NvidiaDiscoverer } from "./nvidia.js";
10
+ export { TogetherDiscoverer } from "./together.js";
11
+ export { FireworksDiscoverer } from "./fireworks.js";
12
+ export { GroqDiscoverer } from "./groq.js";
13
+ export { MistralDiscoverer } from "./mistral.js";
14
+ export { DeepInfraDiscoverer } from "./deepinfra.js";
15
+ export { CohereDiscoverer } from "./cohere.js";
16
+ export { CerebrasDiscoverer } from "./cerebras.js";
17
+ export { PerplexityDiscoverer } from "./perplexity.js";
18
+ export { DeepSeekDiscoverer } from "./deepseek.js";
19
+ export { MoonshotDiscoverer } from "./moonshot.js";
20
+ export { GLMDiscoverer } from "./glm.js";
21
+ export { ZAIDiscoverer } from "./zai.js";
22
+ export { MiniMaxDiscoverer } from "./minimax.js";
23
+ export { OpenAICompatibleDiscoverer } from "./openai-compatible.js";
24
+ export { BaseDiscoverer } from "./base.js";
25
+ import type { ProviderDiscoverer } from "../types.js";
26
+ /**
27
+ * Returns all built-in provider discoverers.
28
+ *
29
+ * Includes direct-API providers (Anthropic, OpenAI, Google, Ollama, OpenRouter)
30
+ * as well as managed-service proxies (AWS Bedrock, Google Vertex AI).
31
+ */
32
+ export declare function getAllDiscoverers(options?: {
33
+ ollamaBaseUrl?: string;
34
+ llamaCppBaseUrl?: string;
35
+ }): ProviderDiscoverer[];
36
+ /**
37
+ * Returns a single discoverer by provider ID, or undefined if not found.
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"`.
44
+ */
45
+ export declare function getDiscoverer(providerId: string, options?: {
46
+ baseUrl?: string;
47
+ }): ProviderDiscoverer | undefined;
48
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,116 @@
1
+ export { AnthropicDiscoverer } from "./anthropic.js";
2
+ export { OpenAIDiscoverer } from "./openai.js";
3
+ export { GoogleDiscoverer } from "./google.js";
4
+ export { OllamaDiscoverer } from "./ollama.js";
5
+ export { LlamaCppDiscoverer } from "./llama-cpp.js";
6
+ export { OpenRouterDiscoverer } from "./openrouter.js";
7
+ export { BedrockDiscoverer, inferOriginFromBedrockId } from "./bedrock.js";
8
+ export { VertexDiscoverer } from "./vertex.js";
9
+ export { NvidiaDiscoverer } from "./nvidia.js";
10
+ export { TogetherDiscoverer } from "./together.js";
11
+ export { FireworksDiscoverer } from "./fireworks.js";
12
+ export { GroqDiscoverer } from "./groq.js";
13
+ export { MistralDiscoverer } from "./mistral.js";
14
+ export { DeepInfraDiscoverer } from "./deepinfra.js";
15
+ export { CohereDiscoverer } from "./cohere.js";
16
+ export { CerebrasDiscoverer } from "./cerebras.js";
17
+ export { PerplexityDiscoverer } from "./perplexity.js";
18
+ export { DeepSeekDiscoverer } from "./deepseek.js";
19
+ export { MoonshotDiscoverer } from "./moonshot.js";
20
+ export { GLMDiscoverer } from "./glm.js";
21
+ export { ZAIDiscoverer } from "./zai.js";
22
+ export { MiniMaxDiscoverer } from "./minimax.js";
23
+ export { OpenAICompatibleDiscoverer } from "./openai-compatible.js";
24
+ export { BaseDiscoverer } from "./base.js";
25
+ import { AnthropicDiscoverer } from "./anthropic.js";
26
+ import { BedrockDiscoverer } from "./bedrock.js";
27
+ import { CerebrasDiscoverer } from "./cerebras.js";
28
+ import { CohereDiscoverer } from "./cohere.js";
29
+ import { DeepInfraDiscoverer } from "./deepinfra.js";
30
+ import { FireworksDiscoverer } from "./fireworks.js";
31
+ import { GoogleDiscoverer } from "./google.js";
32
+ import { GroqDiscoverer } from "./groq.js";
33
+ import { MistralDiscoverer } from "./mistral.js";
34
+ import { NvidiaDiscoverer } from "./nvidia.js";
35
+ import { LlamaCppDiscoverer } from "./llama-cpp.js";
36
+ import { OllamaDiscoverer } from "./ollama.js";
37
+ import { OpenAIDiscoverer } from "./openai.js";
38
+ import { OpenRouterDiscoverer } from "./openrouter.js";
39
+ import { PerplexityDiscoverer } from "./perplexity.js";
40
+ import { TogetherDiscoverer } from "./together.js";
41
+ import { VertexDiscoverer } from "./vertex.js";
42
+ import { DeepSeekDiscoverer } from "./deepseek.js";
43
+ import { MoonshotDiscoverer } from "./moonshot.js";
44
+ import { GLMDiscoverer } from "./glm.js";
45
+ import { ZAIDiscoverer } from "./zai.js";
46
+ import { MiniMaxDiscoverer } from "./minimax.js";
47
+ import { normalizeProviderId } from "../provider-catalog.js";
48
+ /**
49
+ * Returns all built-in provider discoverers.
50
+ *
51
+ * Includes direct-API providers (Anthropic, OpenAI, Google, Ollama, OpenRouter)
52
+ * as well as managed-service proxies (AWS Bedrock, Google Vertex AI).
53
+ */
54
+ 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
+ }
80
+ /**
81
+ * Returns a single discoverer by provider ID, or undefined if not found.
82
+ *
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"`.
88
+ */
89
+ 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]?.();
115
+ }
116
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/discovery/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * kosha-discovery — llama.cpp (local) discoverer.
3
+ *
4
+ * I target `llama-server`'s OpenAI-compatible `/v1/models` endpoint so
5
+ * Chitragupta can treat llama.cpp as a first-class local runtime without
6
+ * inventing a second local discovery protocol.
7
+ * @module
8
+ */
9
+ import type { CredentialResult, ModelCard } from "../types.js";
10
+ import { BaseDiscoverer } from "./base.js";
11
+ /**
12
+ * Discover locally served models from a llama.cpp `llama-server` process.
13
+ *
14
+ * The server is local and unauthenticated, so discovery returns an empty list
15
+ * instead of throwing when the daemon is absent.
16
+ */
17
+ export declare class LlamaCppDiscoverer extends BaseDiscoverer {
18
+ readonly providerId = "llama.cpp";
19
+ readonly providerName = "llama.cpp (Local)";
20
+ readonly baseUrl: string;
21
+ /**
22
+ * @param baseUrl - Override the default llama.cpp server URL.
23
+ */
24
+ constructor(baseUrl?: string);
25
+ /**
26
+ * Query the local OpenAI-compatible `/v1/models` endpoint.
27
+ */
28
+ discover(_credential: CredentialResult, options?: {
29
+ timeout?: number;
30
+ }): Promise<ModelCard[]>;
31
+ /** Convert an OpenAI-compatible model payload into a normalized card. */
32
+ private toModelCard;
33
+ /** Strip path-like prefixes so local file-system details do not leak into IDs. */
34
+ private normalizeLocalModelId;
35
+ /** Infer the model mode from the normalized model ID. */
36
+ private inferMode;
37
+ /** Infer the free-form raw capability list for compatibility surfaces. */
38
+ private inferRawCapabilities;
39
+ /** Build best-effort local runtime metadata from model payload fields. */
40
+ private buildRuntimeMetadata;
41
+ private normalizeComputeTarget;
42
+ /** Check whether the error represents an unavailable local server. */
43
+ private isConnectionError;
44
+ }
45
+ //# sourceMappingURL=llama-cpp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llama-cpp.d.ts","sourceRoot":"","sources":["../../src/discovery/llama-cpp.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAuC,SAAS,EAAa,MAAM,aAAa,CAAC;AAC/G,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AA4B3C;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,cAAc;IACrD,QAAQ,CAAC,UAAU,eAAe;IAClC,QAAQ,CAAC,YAAY,uBAAuB;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;OAEG;gBACS,OAAO,CAAC,EAAE,MAAM;IAK5B;;OAEG;IACG,QAAQ,CAAC,WAAW,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAoBnG,yEAAyE;IACzE,OAAO,CAAC,WAAW;IAoBnB,kFAAkF;IAClF,OAAO,CAAC,qBAAqB;IAM7B,yDAAyD;IACzD,OAAO,CAAC,SAAS;IAOjB,0EAA0E;IAC1E,OAAO,CAAC,oBAAoB;IAmB5B,0EAA0E;IAC1E,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,sBAAsB;IAS9B,sEAAsE;IACtE,OAAO,CAAC,iBAAiB;CAWzB"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * kosha-discovery — llama.cpp (local) discoverer.
3
+ *
4
+ * I target `llama-server`'s OpenAI-compatible `/v1/models` endpoint so
5
+ * Chitragupta can treat llama.cpp as a first-class local runtime without
6
+ * inventing a second local discovery protocol.
7
+ * @module
8
+ */
9
+ import { BaseDiscoverer } from "./base.js";
10
+ /**
11
+ * Discover locally served models from a llama.cpp `llama-server` process.
12
+ *
13
+ * The server is local and unauthenticated, so discovery returns an empty list
14
+ * instead of throwing when the daemon is absent.
15
+ */
16
+ export class LlamaCppDiscoverer extends BaseDiscoverer {
17
+ providerId = "llama.cpp";
18
+ providerName = "llama.cpp (Local)";
19
+ baseUrl;
20
+ /**
21
+ * @param baseUrl - Override the default llama.cpp server URL.
22
+ */
23
+ constructor(baseUrl) {
24
+ super();
25
+ this.baseUrl = baseUrl ?? "http://127.0.0.1:8080";
26
+ }
27
+ /**
28
+ * Query the local OpenAI-compatible `/v1/models` endpoint.
29
+ */
30
+ async discover(_credential, options) {
31
+ const timeoutMs = this.validateTimeout(options?.timeout, 5_000);
32
+ let response;
33
+ try {
34
+ response = await this.fetchJSON(`${this.baseUrl}/v1/models`, undefined, timeoutMs);
35
+ }
36
+ catch (error) {
37
+ if (this.isConnectionError(error)) {
38
+ return [];
39
+ }
40
+ throw error;
41
+ }
42
+ if (!response.data || !Array.isArray(response.data)) {
43
+ return [];
44
+ }
45
+ return response.data.map((model) => this.toModelCard(model));
46
+ }
47
+ /** Convert an OpenAI-compatible model payload into a normalized card. */
48
+ toModelCard(model) {
49
+ const normalizedId = this.normalizeLocalModelId(model.id);
50
+ const mode = this.inferMode(normalizedId);
51
+ const rawCapabilities = this.inferRawCapabilities(normalizedId, mode);
52
+ const localRuntime = this.buildRuntimeMetadata(model);
53
+ return this.makeCard({
54
+ id: normalizedId,
55
+ name: normalizedId,
56
+ provider: this.providerId,
57
+ mode,
58
+ capabilities: rawCapabilities,
59
+ rawCapabilities,
60
+ contextWindow: model.context_window ?? 0,
61
+ maxOutputTokens: 0,
62
+ source: "local",
63
+ localRuntime,
64
+ });
65
+ }
66
+ /** Strip path-like prefixes so local file-system details do not leak into IDs. */
67
+ normalizeLocalModelId(modelId) {
68
+ if (!modelId)
69
+ return modelId;
70
+ const segments = modelId.split(/[\\/]/).filter(Boolean);
71
+ return segments[segments.length - 1] ?? modelId;
72
+ }
73
+ /** Infer the model mode from the normalized model ID. */
74
+ inferMode(modelId) {
75
+ const lower = modelId.toLowerCase();
76
+ if (lower.includes("rerank"))
77
+ return "rerank";
78
+ if (lower.includes("embed"))
79
+ return "embedding";
80
+ return "chat";
81
+ }
82
+ /** Infer the free-form raw capability list for compatibility surfaces. */
83
+ inferRawCapabilities(modelId, mode) {
84
+ const lower = modelId.toLowerCase();
85
+ if (mode === "embedding") {
86
+ return ["embedding"];
87
+ }
88
+ if (mode === "rerank") {
89
+ return ["rerank"];
90
+ }
91
+ const capabilities = ["chat"];
92
+ if (lower.includes("code") || lower.includes("coder") || lower.includes("codellama")) {
93
+ capabilities.push("code");
94
+ }
95
+ if (lower.includes("vision") || lower.includes("vlm") || lower.includes("llava")) {
96
+ capabilities.push("vision");
97
+ }
98
+ return capabilities;
99
+ }
100
+ /** Build best-effort local runtime metadata from model payload fields. */
101
+ buildRuntimeMetadata(model) {
102
+ return {
103
+ runtimeFamily: "llama.cpp",
104
+ transport: "openai-compatible-http",
105
+ tokenizerFamily: model.metadata?.tokenizer_family,
106
+ quantization: model.metadata?.quantization,
107
+ memoryFootprintBytes: model.metadata?.memory_footprint_bytes,
108
+ computeTarget: this.normalizeComputeTarget(model.metadata?.compute_target),
109
+ // llama.cpp grammars/JSON schema support make structured output a first-class capability.
110
+ supportsStructuredOutput: model.metadata?.supports_structured_output ?? true,
111
+ supportsStreaming: model.metadata?.supports_streaming ?? true,
112
+ };
113
+ }
114
+ normalizeComputeTarget(value) {
115
+ if (!value)
116
+ return undefined;
117
+ const normalized = value.toLowerCase();
118
+ if (normalized.includes("gpu"))
119
+ return "gpu";
120
+ if (normalized.includes("cpu"))
121
+ return "cpu";
122
+ if (normalized.includes("hybrid"))
123
+ return "hybrid";
124
+ return "unknown";
125
+ }
126
+ /** Check whether the error represents an unavailable local server. */
127
+ isConnectionError(error) {
128
+ const message = (error instanceof Error ? error.message : String(error)).toLowerCase();
129
+ return (message.includes("econnrefused") ||
130
+ message.includes("enotfound") ||
131
+ message.includes("econnreset") ||
132
+ message.includes("fetch failed") ||
133
+ message.includes("network") ||
134
+ message.includes("timed out"));
135
+ }
136
+ }
137
+ //# sourceMappingURL=llama-cpp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llama-cpp.js","sourceRoot":"","sources":["../../src/discovery/llama-cpp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * kosha-discovery — MiniMax provider discoverer.
3
+ *
4
+ * MiniMax exposes an OpenAI-compatible API endpoint.
5
+ * @module
6
+ */
7
+ import type { OpenAICompatibleModel, ModelClassification } from "./openai-compatible.js";
8
+ import { OpenAICompatibleDiscoverer } from "./openai-compatible.js";
9
+ export declare class MiniMaxDiscoverer extends OpenAICompatibleDiscoverer {
10
+ readonly providerId = "minimax";
11
+ readonly providerName = "MiniMax";
12
+ readonly baseUrl = "https://api.minimax.io";
13
+ protected isRelevantModel(model: OpenAICompatibleModel): boolean;
14
+ protected classifyModel(model: OpenAICompatibleModel): ModelClassification;
15
+ }
16
+ //# sourceMappingURL=minimax.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minimax.d.ts","sourceRoot":"","sources":["../../src/discovery/minimax.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEpE,qBAAa,iBAAkB,SAAQ,0BAA0B;IAChE,QAAQ,CAAC,UAAU,aAAa;IAChC,QAAQ,CAAC,YAAY,aAAa;IAClC,QAAQ,CAAC,OAAO,4BAA4B;IAE5C,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO;IAKhE,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG,mBAAmB;CAwC1E"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * kosha-discovery — MiniMax provider discoverer.
3
+ *
4
+ * MiniMax exposes an OpenAI-compatible API endpoint.
5
+ * @module
6
+ */
7
+ import { OpenAICompatibleDiscoverer } from "./openai-compatible.js";
8
+ export class MiniMaxDiscoverer extends OpenAICompatibleDiscoverer {
9
+ providerId = "minimax";
10
+ providerName = "MiniMax";
11
+ baseUrl = "https://api.minimax.io";
12
+ isRelevantModel(model) {
13
+ const lower = model.id.toLowerCase();
14
+ return !model.id.startsWith("ft:") && !this.looksLikeReward(lower);
15
+ }
16
+ classifyModel(model) {
17
+ const lower = model.id.toLowerCase();
18
+ if (this.looksLikeEmbedding(lower) || lower.includes("embedding")) {
19
+ return {
20
+ originProvider: "minimax",
21
+ mode: "embedding",
22
+ capabilities: ["embedding"],
23
+ contextWindow: model.context_window,
24
+ maxOutputTokens: model.max_output_tokens,
25
+ maxInputTokens: model.max_input_tokens,
26
+ dimensions: model.output_vector_size,
27
+ };
28
+ }
29
+ if (this.looksLikeAudio(lower)) {
30
+ return {
31
+ originProvider: "minimax",
32
+ mode: "audio",
33
+ capabilities: lower.includes("tts") ? ["text_to_speech"] : ["speech_to_text"],
34
+ contextWindow: model.context_window,
35
+ maxOutputTokens: model.max_output_tokens,
36
+ maxInputTokens: model.max_input_tokens,
37
+ };
38
+ }
39
+ const capabilities = ["chat", "function_calling"];
40
+ if (this.looksLikeVision(lower))
41
+ capabilities.push("vision");
42
+ if (this.looksLikeCode(lower))
43
+ capabilities.push("code");
44
+ if (lower.includes("reason") || lower.includes("think"))
45
+ capabilities.push("nlu");
46
+ return {
47
+ originProvider: "minimax",
48
+ mode: "chat",
49
+ capabilities,
50
+ contextWindow: model.context_window,
51
+ maxOutputTokens: model.max_output_tokens,
52
+ maxInputTokens: model.max_input_tokens,
53
+ };
54
+ }
55
+ }
56
+ //# sourceMappingURL=minimax.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minimax.js","sourceRoot":"","sources":["../../src/discovery/minimax.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEpE,MAAM,OAAO,iBAAkB,SAAQ,0BAA0B;IACvD,UAAU,GAAG,SAAS,CAAC;IACvB,YAAY,GAAG,SAAS,CAAC;IACzB,OAAO,GAAG,wBAAwB,CAAC;IAElC,eAAe,CAAC,KAA4B;QACrD,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;IAES,aAAa,CAAC,KAA4B;QACnD,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACnE,OAAO;gBACN,cAAc,EAAE,SAAS;gBACzB,IAAI,EAAE,WAAW;gBACjB,YAAY,EAAE,CAAC,WAAW,CAAC;gBAC3B,aAAa,EAAE,KAAK,CAAC,cAAc;gBACnC,eAAe,EAAE,KAAK,CAAC,iBAAiB;gBACxC,cAAc,EAAE,KAAK,CAAC,gBAAgB;gBACtC,UAAU,EAAE,KAAK,CAAC,kBAAkB;aACpC,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO;gBACN,cAAc,EAAE,SAAS;gBACzB,IAAI,EAAE,OAAO;gBACb,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAC7E,aAAa,EAAE,KAAK,CAAC,cAAc;gBACnC,eAAe,EAAE,KAAK,CAAC,iBAAiB;gBACxC,cAAc,EAAE,KAAK,CAAC,gBAAgB;aACtC,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElF,OAAO;YACN,cAAc,EAAE,SAAS;YACzB,IAAI,EAAE,MAAM;YACZ,YAAY;YACZ,aAAa,EAAE,KAAK,CAAC,cAAc;YACnC,eAAe,EAAE,KAAK,CAAC,iBAAiB;YACxC,cAAc,EAAE,KAAK,CAAC,gBAAgB;SACtC,CAAC;IACH,CAAC;CACD"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * kosha-discovery — Mistral AI provider discoverer.
3
+ *
4
+ * Queries the Mistral AI `/v1/models` endpoint, filters relevant models,
5
+ * and maps them into {@link ModelCard} objects.
6
+ *
7
+ * Mistral's catalog is first-party only — all models are Mistral's own,
8
+ * so `originProvider` is always `"mistral"`.
9
+ * @module
10
+ */
11
+ import type { OpenAICompatibleModel, ModelClassification } from "./openai-compatible.js";
12
+ import { OpenAICompatibleDiscoverer } from "./openai-compatible.js";
13
+ /**
14
+ * Discovers models available through the Mistral AI API.
15
+ *
16
+ * Mistral's catalog is first-party — model IDs are flat strings such as
17
+ * `mistral-large-latest`, `codestral-latest`, and `mistral-embed`. The
18
+ * discoverer infers mode and capabilities from patterns in the model ID.
19
+ */
20
+ export declare class MistralDiscoverer extends OpenAICompatibleDiscoverer {
21
+ readonly providerId = "mistral";
22
+ readonly providerName = "Mistral AI";
23
+ readonly baseUrl = "https://api.mistral.ai";
24
+ /**
25
+ * Determine whether a model ID represents a model we want to track.
26
+ *
27
+ * We keep all standard Mistral models and filter out:
28
+ * - Fine-tuned model snapshots (id starts with "ft:")
29
+ */
30
+ protected isRelevantModel(model: OpenAICompatibleModel): boolean;
31
+ /**
32
+ * Classify a Mistral model: determine origin, mode, and capabilities.
33
+ *
34
+ * Key heuristics:
35
+ * - Origin is always "mistral"
36
+ * - Embedding models get mode "embedding"
37
+ * - Chat models get mode "chat"
38
+ * - Models containing "pixtral" get "vision" capability
39
+ * - Models containing "codestral" get "code" capability
40
+ * - All chat models get "function_calling" (Mistral supports it across their lineup)
41
+ * - Large models get "nlu"
42
+ */
43
+ protected classifyModel(model: OpenAICompatibleModel): ModelClassification;
44
+ }
45
+ //# sourceMappingURL=mistral.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mistral.d.ts","sourceRoot":"","sources":["../../src/discovery/mistral.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEpE;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,0BAA0B;IAChE,QAAQ,CAAC,UAAU,aAAa;IAChC,QAAQ,CAAC,YAAY,gBAAgB;IACrC,QAAQ,CAAC,OAAO,4BAA4B;IAE5C;;;;;OAKG;IACH,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO;IAOhE;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG,mBAAmB;CAwC1E"}