@sriinnu/kosha-discovery 0.6.0 → 1.0.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 (123) hide show
  1. package/README.md +53 -221
  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 +122 -504
  13. package/dist/cli-commands.js.map +1 -1
  14. package/dist/cli-format.d.ts +40 -0
  15. package/dist/cli-format.d.ts.map +1 -1
  16. package/dist/cli-format.js +74 -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 +5 -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/litellm-seed.d.ts +32 -0
  41. package/dist/discovery/litellm-seed.d.ts.map +1 -0
  42. package/dist/discovery/litellm-seed.js +252 -0
  43. package/dist/discovery/litellm-seed.js.map +1 -0
  44. package/dist/discovery/modelsdev-catalog.d.ts +95 -0
  45. package/dist/discovery/modelsdev-catalog.d.ts.map +1 -0
  46. package/dist/discovery/modelsdev-catalog.js +131 -0
  47. package/dist/discovery/modelsdev-catalog.js.map +1 -0
  48. package/dist/discovery/modelsdev-seed.d.ts +19 -0
  49. package/dist/discovery/modelsdev-seed.d.ts.map +1 -0
  50. package/dist/discovery/modelsdev-seed.js +203 -0
  51. package/dist/discovery/modelsdev-seed.js.map +1 -0
  52. package/dist/discovery/openai-compatible.d.ts.map +1 -1
  53. package/dist/discovery/openai-compatible.js +12 -1
  54. package/dist/discovery/openai-compatible.js.map +1 -1
  55. package/dist/discovery/openai.d.ts +9 -1
  56. package/dist/discovery/openai.d.ts.map +1 -1
  57. package/dist/discovery/openai.js +31 -8
  58. package/dist/discovery/openai.js.map +1 -1
  59. package/dist/discovery/openrouter.d.ts.map +1 -1
  60. package/dist/discovery/openrouter.js +18 -1
  61. package/dist/discovery/openrouter.js.map +1 -1
  62. package/dist/discovery/promo-overrides.d.ts +54 -0
  63. package/dist/discovery/promo-overrides.d.ts.map +1 -0
  64. package/dist/discovery/promo-overrides.js +74 -0
  65. package/dist/discovery/promo-overrides.js.map +1 -0
  66. package/dist/discovery/public-seed.d.ts +30 -0
  67. package/dist/discovery/public-seed.d.ts.map +1 -0
  68. package/dist/discovery/public-seed.js +51 -0
  69. package/dist/discovery/public-seed.js.map +1 -0
  70. package/dist/discovery-contract.d.ts +14 -2
  71. package/dist/discovery-contract.d.ts.map +1 -1
  72. package/dist/discovery-contract.js +28 -0
  73. package/dist/discovery-contract.js.map +1 -1
  74. package/dist/enrichment/litellm-catalog.d.ts +81 -0
  75. package/dist/enrichment/litellm-catalog.d.ts.map +1 -0
  76. package/dist/enrichment/litellm-catalog.js +129 -0
  77. package/dist/enrichment/litellm-catalog.js.map +1 -0
  78. package/dist/enrichment/litellm.d.ts +9 -2
  79. package/dist/enrichment/litellm.d.ts.map +1 -1
  80. package/dist/enrichment/litellm.js +192 -23
  81. package/dist/enrichment/litellm.js.map +1 -1
  82. package/dist/index.d.ts +3 -1
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +2 -0
  85. package/dist/index.js.map +1 -1
  86. package/dist/model-features.d.ts +77 -0
  87. package/dist/model-features.d.ts.map +1 -0
  88. package/dist/model-features.js +245 -0
  89. package/dist/model-features.js.map +1 -0
  90. package/dist/normalize.d.ts +13 -0
  91. package/dist/normalize.d.ts.map +1 -1
  92. package/dist/normalize.js +15 -0
  93. package/dist/normalize.js.map +1 -1
  94. package/dist/provider-catalog.d.ts +7 -0
  95. package/dist/provider-catalog.d.ts.map +1 -1
  96. package/dist/provider-catalog.js +4 -0
  97. package/dist/provider-catalog.js.map +1 -1
  98. package/dist/registry-discovery.d.ts.map +1 -1
  99. package/dist/registry-discovery.js +11 -1
  100. package/dist/registry-discovery.js.map +1 -1
  101. package/dist/registry-query.d.ts.map +1 -1
  102. package/dist/registry-query.js +6 -3
  103. package/dist/registry-query.js.map +1 -1
  104. package/dist/registry-runtime.d.ts +39 -1
  105. package/dist/registry-runtime.d.ts.map +1 -1
  106. package/dist/registry-runtime.js +332 -1
  107. package/dist/registry-runtime.js.map +1 -1
  108. package/dist/registry-selection.js +2 -0
  109. package/dist/registry-selection.js.map +1 -1
  110. package/dist/registry.d.ts +9 -0
  111. package/dist/registry.d.ts.map +1 -1
  112. package/dist/registry.js +11 -1
  113. package/dist/registry.js.map +1 -1
  114. package/dist/security.d.ts.map +1 -1
  115. package/dist/security.js +32 -4
  116. package/dist/security.js.map +1 -1
  117. package/dist/tokenizer-family.d.ts +39 -0
  118. package/dist/tokenizer-family.d.ts.map +1 -0
  119. package/dist/tokenizer-family.js +92 -0
  120. package/dist/tokenizer-family.js.map +1 -0
  121. package/dist/types.d.ts +186 -0
  122. package/dist/types.d.ts.map +1 -1
  123. package/package.json +8 -2
@@ -0,0 +1,40 @@
1
+ /**
2
+ * cli-cmd-query.ts — Role, capability, and pricing query commands.
3
+ *
4
+ * Contains `cmdRoles`, `cmdCheapest`, `cmdCapabilities`, and `cmdCapable` —
5
+ * commands that query and filter models by roles, capabilities, and pricing.
6
+ *
7
+ * Extracted from `cli-commands.ts` to keep each module under 450 LOC.
8
+ *
9
+ * @module cli-cmd-query
10
+ */
11
+ import type { ModelRegistry } from "./registry.js";
12
+ /**
13
+ * Show a provider -> model -> roles matrix.
14
+ *
15
+ * Useful for assistants that need to answer: "which providers/models can do X?"
16
+ */
17
+ export declare function cmdRoles(registry: ModelRegistry, flags: Record<string, string | boolean>): Promise<void>;
18
+ /**
19
+ * Return cheapest model candidates for a requested role/capability.
20
+ */
21
+ export declare function cmdCheapest(registry: ModelRegistry, flags: Record<string, string | boolean>): Promise<void>;
22
+ /**
23
+ * Show an aggregated capability overview across all discovered models.
24
+ * Each row shows a capability, how many models/providers support it,
25
+ * and an example model ID for quick reference.
26
+ *
27
+ * @param registry The model registry to query.
28
+ * @param flags CLI flags (supports `--provider`, `--json`).
29
+ */
30
+ export declare function cmdCapabilities(registry: ModelRegistry, flags: Record<string, string | boolean>): Promise<void>;
31
+ /**
32
+ * Show models that support a given capability/role.
33
+ * Normalizes the query so aliases work: "embeddings", "stt", "tools", "vision".
34
+ *
35
+ * @param registry The model registry to query.
36
+ * @param query The capability query (e.g. "vision", "embeddings", "tools").
37
+ * @param flags CLI flags (supports `--provider`, `--origin`, `--pricing`, `--json`, `--limit`).
38
+ */
39
+ export declare function cmdCapable(registry: ModelRegistry, query: string, flags: Record<string, string | boolean>): Promise<void>;
40
+ //# sourceMappingURL=cli-cmd-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-cmd-query.d.ts","sourceRoot":"","sources":["../src/cli-cmd-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AA0GnD;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiD9G;AAID;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAmGjH;AAID;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BrH;AAID;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC/H"}
@@ -0,0 +1,303 @@
1
+ /**
2
+ * cli-cmd-query.ts — Role, capability, and pricing query commands.
3
+ *
4
+ * Contains `cmdRoles`, `cmdCheapest`, `cmdCapabilities`, and `cmdCapable` —
5
+ * commands that query and filter models by roles, capabilities, and pricing.
6
+ *
7
+ * Extracted from `cli-commands.ts` to keep each module under 450 LOC.
8
+ *
9
+ * @module cli-cmd-query
10
+ */
11
+ import { BOLD, CYAN, DIM, RED, YELLOW, c, formatPrice, formatPricingTier, line, renderTable, } from "./cli-format.js";
12
+ async function ensureDiscovered(registry) {
13
+ const candidate = registry;
14
+ if (typeof candidate.ensureDiscovered === "function") {
15
+ await candidate.ensureDiscovered();
16
+ return;
17
+ }
18
+ if (typeof candidate.isDiscovered === "function" && candidate.isDiscovered()) {
19
+ return;
20
+ }
21
+ if (typeof candidate.discover === "function") {
22
+ await candidate.discover();
23
+ }
24
+ }
25
+ function parseNumberFlag(flags, name, fallback) {
26
+ const raw = flags[name];
27
+ if (typeof raw !== "string" || raw.trim() === "") {
28
+ return fallback;
29
+ }
30
+ const value = Number(raw);
31
+ return Number.isFinite(value) ? value : fallback;
32
+ }
33
+ const MODEL_TABLE_COLUMNS = [
34
+ { header: "Provider", width: 12 },
35
+ { header: "Model", width: 40 },
36
+ { header: "Mode", width: 10 },
37
+ { header: "Input", width: 12 },
38
+ { header: "Output", width: 12 },
39
+ ];
40
+ const PRICING_TABLE_COLUMNS = [
41
+ { header: "Provider", width: 12 },
42
+ { header: "Model", width: 34 },
43
+ { header: "Mode", width: 10 },
44
+ { header: "Tier", width: 6 },
45
+ { header: "$/M in", width: 8, align: "right" },
46
+ { header: "$/M out", width: 8, align: "right" },
47
+ { header: "Cache R", width: 8, align: "right" },
48
+ { header: "Cache W", width: 8, align: "right" },
49
+ { header: "Batch in", width: 8, align: "right" },
50
+ { header: "Batch out", width: 9, align: "right" },
51
+ ];
52
+ function modelRow(model) {
53
+ return [
54
+ c(CYAN, model.providerId ?? model.provider ?? ""),
55
+ model.id ?? "",
56
+ model.mode ?? "",
57
+ formatPrice(model.inputPrice ?? undefined),
58
+ formatPrice(model.outputPrice ?? undefined),
59
+ ];
60
+ }
61
+ function pricingRow(model) {
62
+ return [
63
+ c(CYAN, model.provider ?? ""),
64
+ model.id ?? "",
65
+ model.mode ?? "",
66
+ formatPricingTier(model.pricing),
67
+ formatPrice(model.pricing?.inputPerMillion),
68
+ formatPrice(model.pricing?.outputPerMillion),
69
+ formatPrice(model.pricing?.cacheReadPerMillion),
70
+ formatPrice(model.pricing?.cacheWritePerMillion),
71
+ formatPrice(model.pricing?.batchInputPerMillion),
72
+ formatPrice(model.pricing?.batchOutputPerMillion),
73
+ ];
74
+ }
75
+ // ── roles ────────────────────────────────────────────────────────────────
76
+ /**
77
+ * Show a provider -> model -> roles matrix.
78
+ *
79
+ * Useful for assistants that need to answer: "which providers/models can do X?"
80
+ */
81
+ export async function cmdRoles(registry, flags) {
82
+ const provider = typeof flags.provider === "string" ? flags.provider : undefined;
83
+ const originProvider = typeof flags.origin === "string" ? flags.origin : undefined;
84
+ const mode = typeof flags.mode === "string" ? flags.mode : undefined;
85
+ const capability = typeof flags.capability === "string" ? flags.capability : undefined;
86
+ const role = typeof flags.role === "string" ? flags.role : undefined;
87
+ await ensureDiscovered(registry);
88
+ const providers = registry.providerRoles({ provider, originProvider, mode, capability, role });
89
+ if (flags.json) {
90
+ console.log(JSON.stringify({
91
+ providers,
92
+ count: providers.length,
93
+ modelCount: providers.reduce((sum, p) => sum + p.models.length, 0),
94
+ missingCredentials: registry.missingCredentialPrompts(providers.map((p) => p.id)),
95
+ }, null, 2));
96
+ return;
97
+ }
98
+ if (providers.length === 0) {
99
+ console.log(c(YELLOW, "No provider/model roles found for the given filters."));
100
+ return;
101
+ }
102
+ const columns = [
103
+ { header: "Provider", width: 12 },
104
+ { header: "Model", width: 40 },
105
+ { header: "Mode", width: 10 },
106
+ { header: "Roles", width: 56 },
107
+ ];
108
+ const rows = providers.flatMap((providerInfo) => providerInfo.models.map((model) => [
109
+ c(CYAN, providerInfo.id),
110
+ model.id,
111
+ model.mode,
112
+ model.roles.join(", "),
113
+ ]));
114
+ console.log(renderTable(columns, rows));
115
+ const missing = registry.missingCredentialPrompts(providers.map((p) => p.id));
116
+ if (missing.length > 0) {
117
+ console.log(c(DIM, "\nMissing provider credentials:"));
118
+ for (const prompt of missing) {
119
+ console.log(` ${c(YELLOW, prompt.providerId)}: ${prompt.message}`);
120
+ }
121
+ }
122
+ }
123
+ // ── cheapest ─────────────────────────────────────────────────────────────
124
+ /**
125
+ * Return cheapest model candidates for a requested role/capability.
126
+ */
127
+ export async function cmdCheapest(registry, flags) {
128
+ const provider = typeof flags.provider === "string" ? flags.provider : undefined;
129
+ const originProvider = typeof flags.origin === "string" ? flags.origin : undefined;
130
+ const mode = typeof flags.mode === "string" ? flags.mode : undefined;
131
+ const capability = typeof flags.capability === "string" ? flags.capability : undefined;
132
+ const role = typeof flags.role === "string" ? flags.role : undefined;
133
+ const showPricing = flags.pricing === true;
134
+ await ensureDiscovered(registry);
135
+ const result = registry.cheapestModels({
136
+ provider,
137
+ originProvider,
138
+ mode,
139
+ capability,
140
+ role,
141
+ limit: parseNumberFlag(flags, "limit"),
142
+ priceMetric: typeof flags["price-metric"] === "string"
143
+ ? flags["price-metric"]
144
+ : undefined,
145
+ inputWeight: parseNumberFlag(flags, "input-weight"),
146
+ outputWeight: parseNumberFlag(flags, "output-weight"),
147
+ includeUnpriced: flags["include-unpriced"] === true,
148
+ });
149
+ if (flags.json) {
150
+ console.log(JSON.stringify(result, null, 2));
151
+ return;
152
+ }
153
+ if (result.matches.length === 0) {
154
+ console.log(c(YELLOW, "No priced models found for the requested filters."));
155
+ if (result.missingCredentials.length > 0) {
156
+ console.log(c(DIM, "\nMissing provider credentials:"));
157
+ for (const prompt of result.missingCredentials) {
158
+ console.log(` ${c(YELLOW, prompt.providerId)}: ${prompt.message}`);
159
+ }
160
+ }
161
+ return;
162
+ }
163
+ if (showPricing) {
164
+ const columns = [
165
+ { header: "Provider", width: 12 },
166
+ { header: "Model", width: 30 },
167
+ { header: "Metric", width: 8 },
168
+ { header: "Tier", width: 6 },
169
+ { header: "Score", width: 8, align: "right" },
170
+ { header: "$/M in", width: 8, align: "right" },
171
+ { header: "$/M out", width: 8, align: "right" },
172
+ { header: "Cache R", width: 8, align: "right" },
173
+ { header: "Cache W", width: 8, align: "right" },
174
+ { header: "Batch in", width: 8, align: "right" },
175
+ { header: "Batch out", width: 9, align: "right" },
176
+ ];
177
+ const rows = result.matches.map((match) => [
178
+ c(CYAN, match.model.provider),
179
+ match.model.id,
180
+ match.priceMetric,
181
+ formatPricingTier(match.model.pricing),
182
+ match.score === undefined ? "\u2014" : formatPrice(match.score),
183
+ formatPrice(match.model.pricing?.inputPerMillion),
184
+ formatPrice(match.model.pricing?.outputPerMillion),
185
+ formatPrice(match.model.pricing?.cacheReadPerMillion),
186
+ formatPrice(match.model.pricing?.cacheWritePerMillion),
187
+ formatPrice(match.model.pricing?.batchInputPerMillion),
188
+ formatPrice(match.model.pricing?.batchOutputPerMillion),
189
+ ]);
190
+ console.log(renderTable(columns, rows));
191
+ }
192
+ else {
193
+ const columns = [
194
+ { header: "Provider", width: 12 },
195
+ { header: "Model", width: 38 },
196
+ { header: "Mode", width: 10 },
197
+ { header: "Metric", width: 8 },
198
+ { header: "Score", width: 10, align: "right" },
199
+ { header: "$/M in", width: 8, align: "right" },
200
+ { header: "$/M out", width: 8, align: "right" },
201
+ ];
202
+ const rows = result.matches.map((match) => [
203
+ c(CYAN, match.model.provider),
204
+ match.model.id,
205
+ match.model.mode,
206
+ match.priceMetric,
207
+ match.score === undefined ? "\u2014" : formatPrice(match.score),
208
+ formatPrice(match.model.pricing?.inputPerMillion),
209
+ formatPrice(match.model.pricing?.outputPerMillion),
210
+ ]);
211
+ console.log(renderTable(columns, rows));
212
+ }
213
+ console.log(c(DIM, `\n${result.pricedCandidates}/${result.candidates} candidates had usable pricing.`));
214
+ if (result.missingCredentials.length > 0) {
215
+ console.log(c(DIM, "\nMissing provider credentials:"));
216
+ for (const prompt of result.missingCredentials) {
217
+ console.log(` ${c(YELLOW, prompt.providerId)}: ${prompt.message}`);
218
+ }
219
+ }
220
+ }
221
+ // ── capabilities ─────────────────────────────────────────────────────────
222
+ /**
223
+ * Show an aggregated capability overview across all discovered models.
224
+ * Each row shows a capability, how many models/providers support it,
225
+ * and an example model ID for quick reference.
226
+ *
227
+ * @param registry The model registry to query.
228
+ * @param flags CLI flags (supports `--provider`, `--json`).
229
+ */
230
+ export async function cmdCapabilities(registry, flags) {
231
+ const provider = typeof flags.provider === "string" ? flags.provider : undefined;
232
+ await ensureDiscovered(registry);
233
+ const caps = registry.capabilities({ provider });
234
+ if (flags.json) {
235
+ console.log(JSON.stringify(caps, null, 2));
236
+ return;
237
+ }
238
+ if (caps.length === 0) {
239
+ console.log(c(YELLOW, "No capabilities found."));
240
+ return;
241
+ }
242
+ const columns = [
243
+ { header: "Capability", width: 20 },
244
+ { header: "Models", width: 8, align: "right" },
245
+ { header: "Providers", width: 10, align: "right" },
246
+ { header: "Example Model", width: 38 },
247
+ ];
248
+ const rows = caps.map((cap) => [
249
+ c(CYAN, cap.capability),
250
+ String(cap.modelCount),
251
+ String(cap.providerCount),
252
+ cap.exampleModelId ?? c(DIM, "\u2014"),
253
+ ]);
254
+ const totalModels = registry.models({ provider }).length;
255
+ console.log(renderTable(columns, rows));
256
+ console.log(c(DIM, `\n${caps.length} capabilities across ${totalModels} models`));
257
+ }
258
+ // ── capable ──────────────────────────────────────────────────────────────
259
+ /**
260
+ * Show models that support a given capability/role.
261
+ * Normalizes the query so aliases work: "embeddings", "stt", "tools", "vision".
262
+ *
263
+ * @param registry The model registry to query.
264
+ * @param query The capability query (e.g. "vision", "embeddings", "tools").
265
+ * @param flags CLI flags (supports `--provider`, `--origin`, `--pricing`, `--json`, `--limit`).
266
+ */
267
+ export async function cmdCapable(registry, query, flags) {
268
+ if (!query) {
269
+ console.error(c(RED, "Usage: kosha capable <capability>"));
270
+ process.exit(1);
271
+ }
272
+ const provider = typeof flags.provider === "string" ? flags.provider : undefined;
273
+ const originProvider = typeof flags.origin === "string" ? flags.origin : undefined;
274
+ const mode = typeof flags.mode === "string" ? flags.mode : undefined;
275
+ const limit = parseNumberFlag(flags, "limit");
276
+ const showPricing = flags.pricing === true;
277
+ await ensureDiscovered(registry);
278
+ const normalized = registry.normalizeRoleToken(query);
279
+ const allModels = registry.models({ provider, originProvider, mode });
280
+ let models = allModels.filter((m) => registry.modelSupportsRole(m, normalized));
281
+ if (limit !== undefined && limit > 0) {
282
+ models = models.slice(0, limit);
283
+ }
284
+ if (flags.json) {
285
+ console.log(JSON.stringify(models, null, 2));
286
+ return;
287
+ }
288
+ if (models.length === 0) {
289
+ console.log(c(YELLOW, `No models found with capability "${query}"${normalized !== query ? ` (normalized: "${normalized}")` : ""}`));
290
+ return;
291
+ }
292
+ const header = normalized !== query
293
+ ? `Models with capability ${c(CYAN, normalized)} ${c(DIM, `(from "${query}")`)}`
294
+ : `Models with capability ${c(CYAN, normalized)}`;
295
+ console.log(`\n${c(BOLD, header)}\n`);
296
+ const capableColumns = showPricing ? PRICING_TABLE_COLUMNS : MODEL_TABLE_COLUMNS;
297
+ const capableRowFn = showPricing ? pricingRow : modelRow;
298
+ console.log(renderTable(capableColumns, models.map(capableRowFn)));
299
+ const providerCount = new Set(models.map((m) => m.provider)).size;
300
+ console.log(c(DIM, line("\u2500", showPricing ? 110 : 90)));
301
+ console.log(`${c(BOLD, String(models.length))} models from ${c(BOLD, String(providerCount))} providers`);
302
+ }
303
+ //# sourceMappingURL=cli-cmd-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-cmd-query.js","sourceRoot":"","sources":["../src/cli-cmd-query.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,59 @@
5
5
  * Formatting utilities are imported from `./cli-format.js` to keep
6
6
  * presentation logic separate from command orchestration.
7
7
  *
8
+ * This module also serves as the barrel re-export for commands that were
9
+ * split into dedicated files (`cli-cmd-model.ts`, `cli-cmd-query.ts`,
10
+ * `cli-help.ts`) to keep each file under 450 LOC.
11
+ *
8
12
  * @module cli-commands
9
13
  */
14
+ import type { ProviderInfo } from "./types.js";
10
15
  import type { ModelRegistry } from "./registry.js";
16
+ import type { Column } from "./cli-format.js";
17
+ /**
18
+ * Standard column layout reused by both `cmdList` and `cmdSearch`.
19
+ * Extracted to avoid duplicating the same six-column definition.
20
+ */
21
+ export declare const MODEL_TABLE_COLUMNS: Column[];
22
+ /**
23
+ * Return a human-readable label for a provider's credential source.
24
+ * Providers that need no remote auth (e.g. local Ollama) show `"none (local)"`.
25
+ *
26
+ * @param provider The provider info object.
27
+ * @returns A short label suitable for table display.
28
+ */
29
+ export declare function formatCredentialSource(provider: ProviderInfo): string;
30
+ /**
31
+ * Ensure the registry has at least one provider loaded.
32
+ *
33
+ * The registry's `discover()` transparently hydrates from the on-disk cache
34
+ * at `~/.kosha/cache` when that cache is still within TTL, and only hits
35
+ * provider APIs on a cold start or a stale cache. I look at the resulting
36
+ * `discoveredAt` timestamp to tell the user which path actually ran — the
37
+ * old "No cached data. Running discovery..." message was misleading because
38
+ * it fired on every invocation regardless of whether the cache was used.
39
+ *
40
+ * Honesty here matters: users need to trust that `kosha list` is fast
41
+ * because the cache exists, and that `kosha update` is the way to refresh.
42
+ *
43
+ * @param registry The shared model registry instance.
44
+ */
45
+ export declare function ensureDiscovered(registry: ModelRegistry): Promise<void>;
46
+ /**
47
+ * Build a model-table row from a model card (shared by list/search).
48
+ * @param m A model card object.
49
+ * @returns An array of formatted cell strings.
50
+ */
51
+ export declare function modelRow(m: {
52
+ provider: string;
53
+ id: string;
54
+ mode: string;
55
+ contextWindow: number;
56
+ pricing?: {
57
+ inputPerMillion: number;
58
+ outputPerMillion: number;
59
+ };
60
+ }): string[];
11
61
  /**
12
62
  * Discover all configured providers and print a summary.
13
63
  * With `--json` the entire registry snapshot is emitted as JSON.
@@ -27,62 +77,33 @@ export declare function cmdDiscover(registry: ModelRegistry, flags: Record<strin
27
77
  */
28
78
  export declare function cmdLatest(registry: ModelRegistry, flags: Record<string, string | boolean>): Promise<void>;
29
79
  /**
30
- * List all known models in a formatted table.
31
- * Supports filtering by `--provider`, `--origin`, `--mode`, and `--capability`.
80
+ * Re-run LiteLLM enrichment on cached models without re-discovering providers.
32
81
  *
33
- * @param registry The model registry to query.
34
- * @param flags CLI flags (supports `--provider`, `--origin`, `--mode`, `--capability`, `--json`).
35
- */
36
- export declare function cmdList(registry: ModelRegistry, flags: Record<string, string | boolean>): Promise<void>;
37
- /**
38
- * Show a provider -> model -> roles matrix.
39
- *
40
- * Useful for assistants that need to answer: "which providers/models can do X?"
41
- */
42
- export declare function cmdRoles(registry: ModelRegistry, flags: Record<string, string | boolean>): Promise<void>;
43
- /**
44
- * Return cheapest model candidates for a requested role/capability.
45
- */
46
- export declare function cmdCheapest(registry: ModelRegistry, flags: Record<string, string | boolean>): Promise<void>;
47
- /**
48
- * Show an aggregated capability overview across all discovered models.
49
- * Each row shows a capability, how many models/providers support it,
50
- * and an example model ID for quick reference.
82
+ * This is the lightweight alternative to `kosha refresh` when you only need
83
+ * updated pricing data no provider API calls, just a single fetch from the
84
+ * litellm community catalogue plus a cache + manifest update.
51
85
  *
52
- * @param registry The model registry to query.
53
- * @param flags CLI flags (supports `--provider`, `--json`).
86
+ * @param registry The model registry with cached data.
87
+ * @param flags CLI flags (supports `--json`).
54
88
  */
55
- export declare function cmdCapabilities(registry: ModelRegistry, flags: Record<string, string | boolean>): Promise<void>;
89
+ export declare function cmdEnrich(registry: ModelRegistry, flags: Record<string, string | boolean>): Promise<void>;
56
90
  /**
57
- * Show models that support a given capability/role.
58
- * Normalizes the query so aliases work: "embeddings", "stt", "tools", "vision".
91
+ * List all known models in a formatted table.
92
+ * Supports filtering by `--provider`, `--origin`, `--mode`, and `--capability`.
59
93
  *
60
94
  * @param registry The model registry to query.
61
- * @param query The capability query (e.g. "vision", "embeddings", "tools").
62
- * @param flags CLI flags (supports `--provider`, `--origin`, `--json`, `--limit`).
95
+ * @param flags CLI flags (supports `--provider`, `--origin`, `--mode`, `--capability`, `--pricing`, `--json`).
63
96
  */
64
- export declare function cmdCapable(registry: ModelRegistry, query: string, flags: Record<string, string | boolean>): Promise<void>;
97
+ export declare function cmdList(registry: ModelRegistry, flags: Record<string, string | boolean>): Promise<void>;
65
98
  /**
66
99
  * Search for models whose id, name, or aliases contain the query string.
67
100
  * Case-insensitive substring matching. Optionally pre-filtered by `--origin`.
68
101
  *
69
102
  * @param registry The model registry to search.
70
103
  * @param query The search term (substring).
71
- * @param flags CLI flags (supports `--origin`, `--json`).
104
+ * @param flags CLI flags (supports `--origin`, `--pricing`, `--json`).
72
105
  */
73
106
  export declare function cmdSearch(registry: ModelRegistry, query: string, flags: Record<string, string | boolean>): Promise<void>;
74
- /**
75
- * Show detailed information for a single model identified by id or alias.
76
- *
77
- * If an exact match is not found, falls back to fuzzy substring search.
78
- * Single fuzzy match is shown automatically; multiple matches produce a
79
- * disambiguation list (capped at 5 suggestions).
80
- *
81
- * @param registry The model registry to look up.
82
- * @param idOrAlias A model id, display name, or alias.
83
- * @param flags CLI flags (supports `--json`).
84
- */
85
- export declare function cmdModel(registry: ModelRegistry, idOrAlias: string, flags: Record<string, string | boolean>): Promise<void>;
86
107
  /**
87
108
  * List all known providers with their authentication status and model counts.
88
109
  *
@@ -90,29 +111,6 @@ export declare function cmdModel(registry: ModelRegistry, idOrAlias: string, fla
90
111
  * @param flags CLI flags (supports `--json`).
91
112
  */
92
113
  export declare function cmdProviders(registry: ModelRegistry, flags: Record<string, string | boolean>): Promise<void>;
93
- /**
94
- * Resolve a model alias to its canonical provider ID.
95
- * Unknown aliases are returned as-is with a yellow warning.
96
- *
97
- * @param registry The model registry containing alias mappings.
98
- * @param alias The alias string to resolve.
99
- * @param flags CLI flags (supports `--json`).
100
- */
101
- export declare function cmdResolve(registry: ModelRegistry, alias: string, flags: Record<string, string | boolean>): Promise<void>;
102
- /**
103
- * Show every provider route through which a model can be accessed.
104
- *
105
- * A "route" is a serving-layer entry whose normalized model ID matches the
106
- * given identifier. Output includes direct/preferred markers, origin provider,
107
- * model version hint, and serving base URL.
108
- *
109
- * Pricing columns show `—` when data is unavailable.
110
- *
111
- * @param registry The model registry to query.
112
- * @param modelId Canonical model ID or alias to look up.
113
- * @param flags CLI flags (supports `--json`).
114
- */
115
- export declare function cmdRoutes(registry: ModelRegistry, modelId: string, flags: Record<string, string | boolean>): Promise<void>;
116
114
  /**
117
115
  * Force a full re-discovery of all providers, bypassing the cache.
118
116
  *
@@ -128,15 +126,7 @@ export declare function cmdRefresh(registry: ModelRegistry, flags: Record<string
128
126
  * @param flags CLI flags (supports `--port <number>`, default `3000`).
129
127
  */
130
128
  export declare function cmdServe(flags: Record<string, string | boolean>): Promise<void>;
131
- /** Print the full CLI usage / help text to stdout. */
132
- export declare function showHelp(): void;
133
- /** Print the CLI version string to stdout. */
134
- export declare function showVersion(): void;
135
- /**
136
- * Display a branded splash screen when `kosha` is invoked with no arguments.
137
- *
138
- * Shows the Kosha logo, tagline, version, and quick-start commands.
139
- * Uses MAGENTA branding with a clean, minimal layout.
140
- */
141
- export declare function showSplash(): void;
129
+ export { cmdModel, cmdResolve, cmdRoutes } from "./cli-cmd-model.js";
130
+ export { cmdRoles, cmdCheapest, cmdCapabilities, cmdCapable } from "./cli-cmd-query.js";
131
+ export { showHelp, showVersion, showSplash } from "./cli-help.js";
142
132
  //# sourceMappingURL=cli-commands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-commands.d.ts","sourceRoot":"","sources":["../src/cli-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-commands.d.ts","sourceRoot":"","sources":["../src/cli-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAa,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAMnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAM9C;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,EAOvC,CAAC;AAmBF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAKrE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B7E;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,MAAM,EAAE,CAO5K;AAqDD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAUjH;AAID;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/G;AAID;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B/G;AAID;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB7G;AAID;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB9H;AAID;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBlH;AAID;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhH;AAID;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAWrF;AAMD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}