@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,365 @@
1
+ /**
2
+ * kosha-discovery (कोश) — AI Model & Provider Discovery Registry
3
+ *
4
+ * Core type definitions for the model registry system.
5
+ * All interfaces here are provider-agnostic; concrete discoverers
6
+ * map provider-specific API responses into these shapes.
7
+ * @module
8
+ */
9
+ /** Supported model operational modes. */
10
+ export type ModelMode = "chat" | "embedding" | "image" | "audio" | "moderation" | "rerank";
11
+ /** Normalized transport families used by discovery consumers. */
12
+ export type ProviderTransport = "native-http" | "openai-compatible-http" | "cloud-sdk";
13
+ /** High-level provider origin classifications. */
14
+ export type ProviderOrigin = "direct" | "proxy" | "local";
15
+ /** Broad execution target for local runtimes. */
16
+ export type ComputeTarget = "cpu" | "gpu" | "hybrid" | "unknown";
17
+ /** Price scoring metric for cheapest-model selection. */
18
+ export type PricingMetric = "input" | "output" | "blended";
19
+ /** Token pricing in USD per million tokens. */
20
+ export interface ModelPricing {
21
+ /** USD cost per 1 million input tokens. */
22
+ inputPerMillion: number;
23
+ /** USD cost per 1 million output tokens. */
24
+ outputPerMillion: number;
25
+ /** USD cost per 1 million cache-read tokens (optional). */
26
+ cacheReadPerMillion?: number;
27
+ /** USD cost per 1 million cache-write tokens (optional). */
28
+ cacheWritePerMillion?: number;
29
+ }
30
+ /**
31
+ * Local-runtime metadata surfaced for first-class local providers.
32
+ *
33
+ * Values are optional because local runtimes vary widely in what they expose.
34
+ * The versioned discovery schema will serialize unknown values as `null`.
35
+ */
36
+ export interface LocalRuntimeMetadata {
37
+ /** Canonical runtime family, e.g. `"ollama"` or `"llama.cpp"`. */
38
+ runtimeFamily: string;
39
+ /** Normalized transport family used by this runtime. */
40
+ transport: ProviderTransport;
41
+ /** Best-effort tokenizer family, when exposed by the runtime. */
42
+ tokenizerFamily?: string;
43
+ /** Quantization level / format, e.g. `"Q4_K_M"` or `"F16"`. */
44
+ quantization?: string;
45
+ /** Best-effort memory footprint estimate in bytes. */
46
+ memoryFootprintBytes?: number;
47
+ /** Best-effort target device class. */
48
+ computeTarget?: ComputeTarget;
49
+ /** Whether the runtime is known to support structured outputs / grammars. */
50
+ supportsStructuredOutput?: boolean;
51
+ /** Whether the runtime is known to support token streaming. */
52
+ supportsStreaming?: boolean;
53
+ }
54
+ /**
55
+ * A normalized descriptor for a single AI model.
56
+ *
57
+ * Every discoverer produces `ModelCard` instances so that consumers
58
+ * get a uniform shape regardless of the upstream provider API.
59
+ * The `provider` field reflects the serving layer (e.g. "openrouter",
60
+ * "bedrock", "vertex"), while `originProvider` holds the original
61
+ * model creator (e.g. "anthropic", "openai", "google").
62
+ */
63
+ export interface ModelCard {
64
+ /** Provider's canonical model ID (e.g. "claude-opus-4-6"). */
65
+ id: string;
66
+ /** Human-readable display name (e.g. "Claude Opus 4"). */
67
+ name: string;
68
+ /**
69
+ * Serving-layer provider identifier.
70
+ * Examples: "anthropic", "openai", "openrouter", "bedrock", "vertex".
71
+ */
72
+ provider: string;
73
+ /**
74
+ * Original model creator, distinct from the serving layer when a model
75
+ * is accessed through a proxy or managed service.
76
+ * Examples: "anthropic" when served via "openrouter" or "bedrock";
77
+ * "google" when served via "vertex".
78
+ */
79
+ originProvider?: string;
80
+ /** Primary operational mode of the model. */
81
+ mode: ModelMode;
82
+ /** Feature flags: "chat", "vision", "function_calling", "nlu", "code", "embedding", etc. */
83
+ capabilities: string[];
84
+ /** Original free-form capability tags retained for compatibility/debugging. */
85
+ rawCapabilities?: string[];
86
+ /** Maximum context window size in tokens. */
87
+ contextWindow: number;
88
+ /** Maximum number of output tokens the model can generate. */
89
+ maxOutputTokens: number;
90
+ /** Token pricing information (filled by enrichment or API). */
91
+ pricing?: ModelPricing;
92
+ /** Output vector dimensionality (only for embedding models). */
93
+ dimensions?: number;
94
+ /** Maximum input chunk size in tokens (only for embedding models). */
95
+ maxInputTokens?: number;
96
+ /** Short alias names that resolve to this model (e.g. ["opus", "opus-4"]). */
97
+ aliases: string[];
98
+ /** Unix timestamp (ms) when this model was discovered. */
99
+ discoveredAt: number;
100
+ /** How this model entry was obtained. */
101
+ source: "api" | "litellm" | "local" | "manual";
102
+ /** AWS region for Bedrock-served models (e.g. "us-east-1"). */
103
+ region?: string;
104
+ /** GCP project ID for Vertex AI-served models (e.g. "my-gcp-project"). */
105
+ projectId?: string;
106
+ /** Local-runtime metadata for Ollama / llama.cpp style providers. */
107
+ localRuntime?: LocalRuntimeMetadata;
108
+ }
109
+ /**
110
+ * A model projection used for role/capability matrix views.
111
+ *
112
+ * `roles` is a union of the model's primary mode plus all declared capability
113
+ * flags, deduplicated and normalized for routing use-cases.
114
+ */
115
+ export interface ModelRoleCard {
116
+ /** Provider's canonical model ID. */
117
+ id: string;
118
+ /** Human-readable display name. */
119
+ name: string;
120
+ /** Serving-layer provider slug. */
121
+ provider: string;
122
+ /** Original model creator (if different from serving provider). */
123
+ originProvider?: string;
124
+ /** Primary model mode. */
125
+ mode: ModelMode;
126
+ /** Deduplicated role/capability list (e.g. ["chat", "vision", "function_calling"]). */
127
+ roles: string[];
128
+ /** Optional pricing copied from the base model card. */
129
+ pricing?: ModelPricing;
130
+ }
131
+ /** Provider-level role matrix view used by assistants and routing clients. */
132
+ export interface ProviderRoleInfo {
133
+ /** Unique provider slug. */
134
+ id: string;
135
+ /** Human-readable provider name. */
136
+ name: string;
137
+ /** Whether an auth credential was resolved for this provider. */
138
+ authenticated: boolean;
139
+ /** How credential was sourced, if available. */
140
+ credentialSource?: "env" | "cli" | "config" | "oauth" | "none";
141
+ /** Role-augmented model projections for this provider. */
142
+ models: ModelRoleCard[];
143
+ }
144
+ /** Query options for role-based model/provider views. */
145
+ export interface RoleQueryOptions {
146
+ /** Restrict to one serving-layer provider. */
147
+ provider?: string;
148
+ /** Restrict by model creator/provider. */
149
+ originProvider?: string;
150
+ /** Restrict by primary mode. */
151
+ mode?: ModelMode;
152
+ /** Restrict by normalized capability tag (e.g. "vision", "embedding"). */
153
+ capability?: string;
154
+ /** Flexible role query alias (e.g. "embeddings", "image", "tool_use"). */
155
+ role?: string;
156
+ }
157
+ /** Prompt metadata for providers missing required credentials. */
158
+ export interface ProviderCredentialPrompt {
159
+ /** Provider slug. */
160
+ providerId: string;
161
+ /** Provider display name. */
162
+ providerName: string;
163
+ /** Whether this provider requires credentials to discover/use models. */
164
+ required: boolean;
165
+ /** Environment variable names that satisfy the credential requirement. */
166
+ envVars: string[];
167
+ /** Human-readable prompt text suitable for assistant UX. */
168
+ message: string;
169
+ }
170
+ /** Query options for cheapest-model selection. */
171
+ export interface CheapestModelOptions extends RoleQueryOptions {
172
+ /** Maximum number of ranked matches to return (default: 5). */
173
+ limit?: number;
174
+ /** Pricing comparator metric (default inferred from role/mode). */
175
+ priceMetric?: PricingMetric;
176
+ /** Weight applied to input-token price when using `blended` metric (default: 1). */
177
+ inputWeight?: number;
178
+ /** Weight applied to output-token price when using `blended` metric (default: 1). */
179
+ outputWeight?: number;
180
+ /** Include unpriced models at the end of results with undefined score. */
181
+ includeUnpriced?: boolean;
182
+ }
183
+ /** A ranked cheapest-model match with its computed score. */
184
+ export interface CheapestModelMatch {
185
+ /** Ranked model candidate. */
186
+ model: ModelCard;
187
+ /** Computed cost score (undefined when model has no usable pricing). */
188
+ score?: number;
189
+ /** Metric used for scoring this result set. */
190
+ priceMetric: PricingMetric;
191
+ }
192
+ /** Full cheapest-model query response with diagnostics for callers. */
193
+ export interface CheapestModelResult {
194
+ /** Ranked matches sorted by ascending score. */
195
+ matches: CheapestModelMatch[];
196
+ /** Total models matching non-price filters before pricing checks. */
197
+ candidates: number;
198
+ /** Models with usable pricing for the selected metric. */
199
+ pricedCandidates: number;
200
+ /** Matching models excluded due to missing/invalid pricing. */
201
+ skippedNoPricing: number;
202
+ /** Metric actually used to compute scores. */
203
+ priceMetric: PricingMetric;
204
+ /** Providers that are likely missing required API keys. */
205
+ missingCredentials: ProviderCredentialPrompt[];
206
+ }
207
+ /** Aggregated capability summary returned by {@link ModelRegistry.capabilities}. */
208
+ export interface CapabilitySummary {
209
+ /** Normalized capability/role string (e.g. "vision", "embedding", "function_calling"). */
210
+ capability: string;
211
+ /** Number of distinct models that declare this capability. */
212
+ modelCount: number;
213
+ /** Number of unique serving-layer providers that offer this capability. */
214
+ providerCount: number;
215
+ /** List of unique provider slugs that serve models with this capability. */
216
+ providers: string[];
217
+ /** Unique model modes seen among models with this capability. */
218
+ modes: ModelMode[];
219
+ /** An example model ID for quick reference (first encountered). */
220
+ exampleModelId?: string;
221
+ }
222
+ /** Error captured when a provider's discovery fails during {@link ModelRegistry.discover}. */
223
+ export interface DiscoveryError {
224
+ /** Provider slug that failed discovery. */
225
+ providerId: string;
226
+ /** Human-readable provider name. */
227
+ providerName: string;
228
+ /** Error message from the failed discovery attempt. */
229
+ error: string;
230
+ /** Unix timestamp (ms) when the error occurred. */
231
+ timestamp: number;
232
+ }
233
+ /** Detailed provider route info for a model across serving layers. */
234
+ export interface ModelRouteInfo {
235
+ /** Original model card for this route. */
236
+ model: ModelCard;
237
+ /** Serving provider ID (same as `model.provider`). */
238
+ provider: string;
239
+ /** Resolved model creator/provider (origin). */
240
+ originProvider: string;
241
+ /** Base URL of the serving provider API, when known. */
242
+ baseUrl?: string;
243
+ /** Parsed model version hint (date, semantic version, or provider suffix). */
244
+ version?: string;
245
+ /** True when the model is served directly by its origin provider. */
246
+ isDirect: boolean;
247
+ /** True when this route is recommended for invocation. */
248
+ isPreferred: boolean;
249
+ }
250
+ /**
251
+ * Aggregated info about a single AI provider and the models it serves.
252
+ */
253
+ export interface ProviderInfo {
254
+ /** Unique provider slug (e.g. "anthropic"). */
255
+ id: string;
256
+ /** Human-readable provider name (e.g. "Anthropic"). */
257
+ name: string;
258
+ /** Base URL for the provider's API. */
259
+ baseUrl: string;
260
+ /** Whether a valid credential was found for this provider. */
261
+ authenticated: boolean;
262
+ /** How the credential was obtained, if any. */
263
+ credentialSource?: "env" | "cli" | "config" | "oauth" | "none";
264
+ /** All models discovered from this provider. */
265
+ models: ModelCard[];
266
+ /** Unix timestamp (ms) of the last successful refresh. */
267
+ lastRefreshed: number;
268
+ }
269
+ /**
270
+ * Options passed to {@link ModelRegistry.discover} to control
271
+ * which providers are queried and how.
272
+ */
273
+ export interface DiscoveryOptions {
274
+ /** Limit discovery to these provider IDs (default: all). */
275
+ providers?: string[];
276
+ /** Whether to scan local runtimes like Ollama / LM Studio (default: true). */
277
+ includeLocal?: boolean;
278
+ /** Per-provider HTTP timeout in milliseconds (default: 10 000). */
279
+ timeout?: number;
280
+ /** Enrich models with litellm pricing/context data (default: true). */
281
+ enrichWithPricing?: boolean;
282
+ /** Bypass the disk cache and force fresh API calls. */
283
+ force?: boolean;
284
+ }
285
+ /** Options for explicit cache-bypassing latest discovery fetches. */
286
+ export interface LatestDiscoveryOptions extends Omit<DiscoveryOptions, "force"> {
287
+ }
288
+ /** Result payload returned by explicit latest discovery fetches. */
289
+ export interface LatestDiscoveryResult {
290
+ /** Providers discovered during this latest fetch. */
291
+ providers: ProviderInfo[];
292
+ /** Total number of models across returned providers. */
293
+ modelCount: number;
294
+ /** Unix timestamp (ms) when discovery completed. */
295
+ discoveredAt: number;
296
+ }
297
+ /**
298
+ * Top-level configuration for the kosha registry.
299
+ */
300
+ export interface KoshaConfig {
301
+ /** Directory path for the disk cache (default: ~/.kosha). */
302
+ cacheDir?: string;
303
+ /** Cache time-to-live in milliseconds (default: 86 400 000 = 24 h). */
304
+ cacheTtlMs?: number;
305
+ /** Per-provider overrides: enable/disable, explicit API keys, custom base URLs. */
306
+ providers?: Record<string, {
307
+ /** Set to false to skip this provider during discovery. */
308
+ enabled?: boolean;
309
+ /** Explicit API key — takes precedence over env / CLI sources. */
310
+ apiKey?: string;
311
+ /** Override the default API base URL for this provider. */
312
+ baseUrl?: string;
313
+ }>;
314
+ /** Custom user-defined alias mappings (merged on top of built-in defaults). */
315
+ aliases?: Record<string, string>;
316
+ }
317
+ /**
318
+ * The result of a credential lookup for a single provider.
319
+ */
320
+ export interface CredentialResult {
321
+ /** Raw API key string, if found. */
322
+ apiKey?: string;
323
+ /** OAuth / bearer access token, if found. */
324
+ accessToken?: string;
325
+ /** How the credential was discovered. */
326
+ source: "env" | "cli" | "config" | "oauth" | "none";
327
+ /** Filesystem path the credential was read from, if applicable. */
328
+ path?: string;
329
+ /**
330
+ * Provider-specific metadata bag.
331
+ * For AWS Bedrock: `{ region: "us-east-1" }`.
332
+ * For GCP Vertex: `{ projectId: "my-project", region: "us-central1" }`.
333
+ */
334
+ metadata?: Record<string, string>;
335
+ }
336
+ /**
337
+ * Contract that every provider-specific discoverer must implement.
338
+ */
339
+ export interface ProviderDiscoverer {
340
+ /** Unique provider slug (e.g. "anthropic"). */
341
+ readonly providerId: string;
342
+ /** Human-readable provider name. */
343
+ readonly providerName: string;
344
+ /** Default API base URL. */
345
+ readonly baseUrl: string;
346
+ /**
347
+ * Query the provider API and return normalized {@link ModelCard} instances.
348
+ * @param credential - Resolved credential for authentication.
349
+ * @param options - Optional timeout configuration.
350
+ */
351
+ discover(credential: CredentialResult, options?: {
352
+ timeout?: number;
353
+ }): Promise<ModelCard[]>;
354
+ }
355
+ /**
356
+ * Contract for post-discovery enrichment passes (e.g. litellm pricing).
357
+ */
358
+ export interface Enricher {
359
+ /**
360
+ * Augment model cards with additional data (pricing, context windows, etc.).
361
+ * Must return new objects — never mutate the originals.
362
+ */
363
+ enrich(models: ModelCard[]): Promise<ModelCard[]>;
364
+ }
365
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * kosha-discovery (कोश) — AI Model & Provider Discovery Registry
3
+ *
4
+ * Core type definitions for the model registry system.
5
+ * All interfaces here are provider-agnostic; concrete discoverers
6
+ * map provider-specific API responses into these shapes.
7
+ * @module
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
package/logo.svg ADDED
@@ -0,0 +1,81 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" width="200" height="200">
2
+ <defs>
3
+ <linearGradient id="chestGrad" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" stop-color="#7C3AED"/>
5
+ <stop offset="100%" stop-color="#5B21B6"/>
6
+ </linearGradient>
7
+ <linearGradient id="lidGrad" x1="0%" y1="0%" x2="100%" y2="100%">
8
+ <stop offset="0%" stop-color="#8B5CF6"/>
9
+ <stop offset="100%" stop-color="#7C3AED"/>
10
+ </linearGradient>
11
+ <linearGradient id="goldGrad" x1="0%" y1="0%" x2="100%" y2="100%">
12
+ <stop offset="0%" stop-color="#FBBF24"/>
13
+ <stop offset="100%" stop-color="#F59E0B"/>
14
+ </linearGradient>
15
+ <filter id="glow">
16
+ <feGaussianBlur stdDeviation="2" result="blur"/>
17
+ <feMerge>
18
+ <feMergeNode in="blur"/>
19
+ <feMergeNode in="SourceGraphic"/>
20
+ </feMerge>
21
+ </filter>
22
+ </defs>
23
+
24
+ <!-- Background circle -->
25
+ <circle cx="100" cy="100" r="95" fill="#0F0A1A" stroke="#7C3AED" stroke-width="2" opacity="0.95"/>
26
+
27
+ <!-- Vault / Treasure chest body -->
28
+ <rect x="45" y="90" width="110" height="60" rx="6" ry="6" fill="url(#chestGrad)"/>
29
+
30
+ <!-- Chest lid (open, angled) -->
31
+ <path d="M45 90 L45 72 Q100 48 155 72 L155 90 Z" fill="url(#lidGrad)"/>
32
+
33
+ <!-- Gold clasp / lock -->
34
+ <rect x="90" y="85" width="20" height="14" rx="3" ry="3" fill="url(#goldGrad)"/>
35
+ <circle cx="100" cy="92" r="3" fill="#0F0A1A"/>
36
+
37
+ <!-- Chest bands -->
38
+ <line x1="45" y1="110" x2="155" y2="110" stroke="#F59E0B" stroke-width="1.5" opacity="0.6"/>
39
+ <line x1="45" y1="130" x2="155" y2="130" stroke="#F59E0B" stroke-width="1.5" opacity="0.6"/>
40
+
41
+ <!-- Neural network nodes emerging from chest -->
42
+ <!-- Central node -->
43
+ <circle cx="100" cy="58" r="6" fill="#F59E0B" filter="url(#glow)"/>
44
+
45
+ <!-- Left nodes -->
46
+ <circle cx="68" cy="42" r="4.5" fill="#A78BFA"/>
47
+ <circle cx="52" cy="28" r="3.5" fill="#C4B5FD"/>
48
+
49
+ <!-- Right nodes -->
50
+ <circle cx="132" cy="42" r="4.5" fill="#A78BFA"/>
51
+ <circle cx="148" cy="28" r="3.5" fill="#C4B5FD"/>
52
+
53
+ <!-- Top nodes -->
54
+ <circle cx="85" cy="26" r="3.5" fill="#DDD6FE"/>
55
+ <circle cx="115" cy="26" r="3.5" fill="#DDD6FE"/>
56
+ <circle cx="100" cy="18" r="4" fill="#F59E0B" opacity="0.8"/>
57
+
58
+ <!-- Neural connections -->
59
+ <line x1="100" y1="58" x2="68" y2="42" stroke="#A78BFA" stroke-width="1.2" opacity="0.7"/>
60
+ <line x1="100" y1="58" x2="132" y2="42" stroke="#A78BFA" stroke-width="1.2" opacity="0.7"/>
61
+ <line x1="68" y1="42" x2="52" y2="28" stroke="#C4B5FD" stroke-width="1" opacity="0.5"/>
62
+ <line x1="132" y1="42" x2="148" y2="28" stroke="#C4B5FD" stroke-width="1" opacity="0.5"/>
63
+ <line x1="68" y1="42" x2="85" y2="26" stroke="#C4B5FD" stroke-width="1" opacity="0.5"/>
64
+ <line x1="132" y1="42" x2="115" y2="26" stroke="#C4B5FD" stroke-width="1" opacity="0.5"/>
65
+ <line x1="85" y1="26" x2="100" y2="18" stroke="#DDD6FE" stroke-width="1" opacity="0.5"/>
66
+ <line x1="115" y1="26" x2="100" y2="18" stroke="#DDD6FE" stroke-width="1" opacity="0.5"/>
67
+ <line x1="52" y1="28" x2="85" y2="26" stroke="#DDD6FE" stroke-width="0.8" opacity="0.3"/>
68
+ <line x1="148" y1="28" x2="115" y2="26" stroke="#DDD6FE" stroke-width="0.8" opacity="0.3"/>
69
+
70
+ <!-- Provider dots inside chest glow -->
71
+ <circle cx="72" cy="105" r="3" fill="#F59E0B" opacity="0.7"/>
72
+ <circle cx="88" cy="105" r="3" fill="#F59E0B" opacity="0.5"/>
73
+ <circle cx="112" cy="105" r="3" fill="#F59E0B" opacity="0.5"/>
74
+ <circle cx="128" cy="105" r="3" fill="#F59E0B" opacity="0.7"/>
75
+
76
+ <!-- Text: Kosha -->
77
+ <text x="100" y="172" text-anchor="middle" font-family="'Segoe UI', system-ui, -apple-system, sans-serif" font-weight="700" font-size="22" fill="#FFFFFF" letter-spacing="2">Kosha</text>
78
+
79
+ <!-- Devanagari subtitle -->
80
+ <text x="100" y="190" text-anchor="middle" font-family="'Noto Sans Devanagari', 'Mangal', sans-serif" font-weight="400" font-size="12" fill="#A78BFA" letter-spacing="1">&#x0915;&#x094B;&#x0936;</text>
81
+ </svg>
package/package.json ADDED
@@ -0,0 +1,85 @@
1
+ {
2
+ "name": "@sriinnu/kosha-discovery",
3
+ "version": "0.5.0",
4
+ "description": "AI Model & Provider Discovery Registry -- kosha (कोश) treasury of models",
5
+ "type": "module",
6
+ "packageManager": "pnpm@10.33.0",
7
+ "license": "MIT",
8
+ "author": "sriinnu",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/sriinnu/kosha-discovery.git"
12
+ },
13
+ "engines": {
14
+ "node": ">=22"
15
+ },
16
+ "keywords": [
17
+ "ai",
18
+ "llm",
19
+ "model-discovery",
20
+ "model-registry",
21
+ "openai",
22
+ "anthropic",
23
+ "gemini",
24
+ "ollama",
25
+ "openrouter",
26
+ "bedrock",
27
+ "vertex-ai",
28
+ "ai-models",
29
+ "provider-discovery",
30
+ "model-routing",
31
+ "pricing",
32
+ "cli"
33
+ ],
34
+ "publishConfig": {
35
+ "access": "public"
36
+ },
37
+ "main": "dist/index.js",
38
+ "types": "dist/index.d.ts",
39
+ "bin": {
40
+ "kosha": "dist/cli.js"
41
+ },
42
+ "exports": {
43
+ ".": {
44
+ "types": "./dist/index.d.ts",
45
+ "import": "./dist/index.js"
46
+ },
47
+ "./server": {
48
+ "types": "./dist/server.d.ts",
49
+ "import": "./dist/server.js"
50
+ },
51
+ "./cli": {
52
+ "types": "./dist/cli.d.ts",
53
+ "import": "./dist/cli.js"
54
+ }
55
+ },
56
+ "scripts": {
57
+ "build": "tsc -p tsconfig.json",
58
+ "dev": "tsc -p tsconfig.json --watch",
59
+ "test": "vitest run",
60
+ "test:watch": "vitest",
61
+ "clean": "rm -rf dist",
62
+ "start": "node dist/server.js",
63
+ "kosha": "node dist/cli.js",
64
+ "latest": "node dist/cli.js latest --json",
65
+ "autofetch": "node scripts/auto-fetch-latest.mjs",
66
+ "autofetch:once": "node scripts/auto-fetch-latest.mjs --once",
67
+ "prepare": "cp hooks/pre-commit .git/hooks/pre-commit 2>/dev/null && chmod +x .git/hooks/pre-commit || true"
68
+ },
69
+ "files": [
70
+ "dist",
71
+ "logo.svg",
72
+ "README.md",
73
+ "LICENSE"
74
+ ],
75
+ "dependencies": {
76
+ "hono": "^4.12.9",
77
+ "@hono/node-server": "^1.19.10"
78
+ },
79
+ "devDependencies": {
80
+ "@biomejs/biome": "^2.3.14",
81
+ "@types/node": "^22.0.0",
82
+ "typescript": "^5.7.0",
83
+ "vitest": "^4.0.18"
84
+ }
85
+ }