@sriinnu/kosha-discovery 1.9.1 → 1.11.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.
- package/README.md +9 -1
- package/dist/catalog-source.d.ts +99 -0
- package/dist/catalog-source.d.ts.map +1 -0
- package/dist/catalog-source.js +203 -0
- package/dist/catalog-source.js.map +1 -0
- package/dist/cli-cmd-doctor.d.ts +7 -0
- package/dist/cli-cmd-doctor.d.ts.map +1 -1
- package/dist/cli-cmd-doctor.js +38 -17
- package/dist/cli-cmd-doctor.js.map +1 -1
- package/dist/cli-cmd-query.d.ts +5 -0
- package/dist/cli-cmd-query.d.ts.map +1 -1
- package/dist/cli-cmd-query.js +64 -12
- package/dist/cli-cmd-query.js.map +1 -1
- package/dist/cli-cmd-registry.d.ts +12 -0
- package/dist/cli-cmd-registry.d.ts.map +1 -0
- package/dist/cli-cmd-registry.js +39 -0
- package/dist/cli-cmd-registry.js.map +1 -0
- package/dist/cli-cmd-spend.d.ts +6 -0
- package/dist/cli-cmd-spend.d.ts.map +1 -1
- package/dist/cli-cmd-spend.js +22 -6
- package/dist/cli-cmd-spend.js.map +1 -1
- package/dist/cli-commands.d.ts +4 -4
- package/dist/cli-commands.d.ts.map +1 -1
- package/dist/cli-commands.js +14 -12
- package/dist/cli-commands.js.map +1 -1
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +15 -2
- package/dist/cli-help.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +11 -4
- package/dist/cli.js.map +1 -1
- package/dist/cost.d.ts +4 -0
- package/dist/cost.d.ts.map +1 -1
- package/dist/cost.js +27 -18
- package/dist/cost.js.map +1 -1
- package/dist/discovery/public-seed.d.ts.map +1 -1
- package/dist/discovery/public-seed.js +9 -0
- package/dist/discovery/public-seed.js.map +1 -1
- package/dist/discovery/snapshot-catalog.d.ts +13 -1
- package/dist/discovery/snapshot-catalog.d.ts.map +1 -1
- package/dist/discovery/snapshot-catalog.js +25 -7
- package/dist/discovery/snapshot-catalog.js.map +1 -1
- package/dist/enrichment/catalog.d.ts +19 -0
- package/dist/enrichment/catalog.d.ts.map +1 -0
- package/dist/enrichment/catalog.js +60 -0
- package/dist/enrichment/catalog.js.map +1 -0
- package/dist/enrichment/index.d.ts +1 -0
- package/dist/enrichment/index.d.ts.map +1 -1
- package/dist/enrichment/index.js +1 -0
- package/dist/enrichment/index.js.map +1 -1
- package/dist/index.d.ts +17 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -7
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +12 -14
- package/dist/mcp-server.js.map +1 -1
- package/dist/price-trust.d.ts +29 -0
- package/dist/price-trust.d.ts.map +1 -0
- package/dist/price-trust.js +36 -0
- package/dist/price-trust.js.map +1 -0
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +170 -32
- package/dist/proxy.js.map +1 -1
- package/dist/registry-query.d.ts +1 -1
- package/dist/registry-query.d.ts.map +1 -1
- package/dist/registry-query.js +90 -25
- package/dist/registry-query.js.map +1 -1
- package/dist/registry-routing.d.ts +3 -1
- package/dist/registry-routing.d.ts.map +1 -1
- package/dist/registry-routing.js +7 -8
- package/dist/registry-routing.js.map +1 -1
- package/dist/registry-runtime.d.ts.map +1 -1
- package/dist/registry-runtime.js +26 -21
- package/dist/registry-runtime.js.map +1 -1
- package/dist/registry.d.ts +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +82 -32
- package/dist/registry.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +25 -15
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +30 -4
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
package/README.md
CHANGED
|
@@ -246,6 +246,8 @@ compare prices across them directly.
|
|
|
246
246
|
|
|
247
247
|
Without a key, providers fall back to the public models.dev + LiteLLM catalog, then to kosha's own weekly [snapshot](#public-snapshot) if those are unreachable, then to a curated static list, so `kosha list` works on a fresh machine. The same fallback applies when a key is present but rejected: the provider stays listed from the public catalog, shows as unauthenticated, and the error is kept for `kosha doctor`. Exact env var names: [docs/credentials.md](docs/credentials.md).
|
|
248
248
|
|
|
249
|
+
To take models.dev and LiteLLM out of the loop, set `KOSHA_CATALOG_SOURCE=pinned` (kosha's snapshot only) or `local` (a file from `kosha registry export`, no network). See [Catalog Source](docs/configuration.md#catalog-source).
|
|
250
|
+
|
|
249
251
|
### Non-chat modes
|
|
250
252
|
|
|
251
253
|
Most models are `chat`, but `mode` also covers `embedding`, `image`, `video`,
|
|
@@ -359,7 +361,13 @@ git tag -s vX.Y.Z -m "vX.Y.Z" && git push origin vX.Y.Z
|
|
|
359
361
|
gh workflow run release-npm.yml -f tag=vX.Y.Z
|
|
360
362
|
```
|
|
361
363
|
|
|
362
|
-
The workflow checks that the tag matches `package.json`, runs lint / build / test,
|
|
364
|
+
The workflow checks that the tag matches `package.json`, runs lint / build / test, stages the package on npm with provenance, and creates the GitHub Release. Staging authenticates through npm trusted publishing (OIDC); there is no npm token. The version goes live only after a maintainer approves it with 2FA:
|
|
365
|
+
|
|
366
|
+
```bash
|
|
367
|
+
npm stage list @sriinnu/kosha-discovery
|
|
368
|
+
npm stage approve <id>
|
|
369
|
+
gh workflow run release-npm.yml -f tag=vX.Y.Z -f publish_npm=false -f create_github_release=false # then publish to the MCP registry
|
|
370
|
+
```
|
|
363
371
|
|
|
364
372
|
## Support
|
|
365
373
|
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* kosha-discovery — Where keyless catalog data comes from.
|
|
3
|
+
*
|
|
4
|
+
* Without an API key, kosha learns about models from catalogs it does not
|
|
5
|
+
* own: models.dev and LiteLLM. If either one shuts down or ships poisoned
|
|
6
|
+
* data, this is the switch that takes them out of the loop:
|
|
7
|
+
*
|
|
8
|
+
* - `community` (default): models.dev first, LiteLLM as filler and for
|
|
9
|
+
* enrichment, kosha's weekly snapshot when both are unreachable.
|
|
10
|
+
* - `pinned`: kosha's own published snapshot only. No models.dev, no LiteLLM.
|
|
11
|
+
* - `local`: a catalog file on disk (`kosha registry export` writes one).
|
|
12
|
+
* Never touches the network for catalog data. A missing or broken file is
|
|
13
|
+
* an error, never a silent fallback to the network.
|
|
14
|
+
*
|
|
15
|
+
* Provider APIs called with your own key are official sources and run in
|
|
16
|
+
* every mode. `KOSHA_CATALOG_SOURCE` and `KOSHA_CATALOG_FILE` override config.
|
|
17
|
+
* @module
|
|
18
|
+
*/
|
|
19
|
+
import { type SnapshotCatalog } from "./discovery/snapshot-catalog.js";
|
|
20
|
+
import type { KoshaConfig, ModelCard, ProviderInfo } from "./types.js";
|
|
21
|
+
export type CatalogSource = "community" | "pinned" | "local";
|
|
22
|
+
export declare const CATALOG_SOURCES: readonly CatalogSource[];
|
|
23
|
+
export declare const CATALOG_SOURCE_ENV = "KOSHA_CATALOG_SOURCE";
|
|
24
|
+
export declare const CATALOG_FILE_ENV = "KOSHA_CATALOG_FILE";
|
|
25
|
+
/** Envelope version for `kosha registry export` and the published snapshot. */
|
|
26
|
+
export declare const CATALOG_SCHEMA_VERSION = 1;
|
|
27
|
+
export declare const CATALOG_KIND = "kosha-catalog";
|
|
28
|
+
export interface ResolvedCatalogSource {
|
|
29
|
+
mode: CatalogSource;
|
|
30
|
+
/** Absolute path of the catalog file; set only in `local` mode. */
|
|
31
|
+
file?: string;
|
|
32
|
+
/** Where the mode came from, for `kosha doctor`. */
|
|
33
|
+
origin: "default" | "config" | "env";
|
|
34
|
+
}
|
|
35
|
+
export declare function isCatalogSource(value: unknown): value is CatalogSource;
|
|
36
|
+
/**
|
|
37
|
+
* Record the config's choice. Called by the registry constructor, so the
|
|
38
|
+
* last registry built sets it for the process; the env still wins.
|
|
39
|
+
*/
|
|
40
|
+
export declare function configureCatalogSource(config?: Pick<KoshaConfig, "catalogSource" | "catalogFile">): void;
|
|
41
|
+
/**
|
|
42
|
+
* The mode in force right now. An unknown value in the env is an error
|
|
43
|
+
* rather than a quiet fallback: someone who typed `KOSHA_CATALOG_SOURCE=locl`
|
|
44
|
+
* meant to stop the network fetch.
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveCatalogSource(): ResolvedCatalogSource;
|
|
47
|
+
/**
|
|
48
|
+
* Prefix a cache key with the mode, so data cached in `community` mode is
|
|
49
|
+
* never served after switching away from it. `community` keeps the bare
|
|
50
|
+
* keys, so existing caches stay valid.
|
|
51
|
+
*/
|
|
52
|
+
export declare function catalogCacheKey(key: string): string;
|
|
53
|
+
/** Seed cards for one provider from the local catalog file. */
|
|
54
|
+
export declare function getLocalSeed(providerId: string): Promise<ModelCard[]>;
|
|
55
|
+
/** Load and validate the local catalog once per process (per file). */
|
|
56
|
+
export declare function loadLocalCatalog(file: string): Promise<SnapshotCatalog>;
|
|
57
|
+
/** The catalog the active mode reads from, for enrichment outside `community`. */
|
|
58
|
+
export declare function loadActiveCatalog(): Promise<SnapshotCatalog | null>;
|
|
59
|
+
/**
|
|
60
|
+
* Run before discovery. In `local` mode a missing or invalid file throws
|
|
61
|
+
* here, because past this point a seed failure only degrades a provider to
|
|
62
|
+
* its bundled static list, quietly. A bad env value throws in every mode.
|
|
63
|
+
*/
|
|
64
|
+
export declare function assertCatalogReady(): Promise<void>;
|
|
65
|
+
/** What `kosha doctor` reports about the catalog in use. */
|
|
66
|
+
export interface CatalogReport {
|
|
67
|
+
mode: CatalogSource | null;
|
|
68
|
+
origin: ResolvedCatalogSource["origin"] | null;
|
|
69
|
+
file?: string;
|
|
70
|
+
/** When the catalog was built; community catalogs are fetched live and have none. */
|
|
71
|
+
fetchedAt?: string;
|
|
72
|
+
ageDays?: number;
|
|
73
|
+
error?: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Describe the active catalog, loading it outside `community` to read its
|
|
77
|
+
* age. Never throws: a broken setup is exactly what doctor must show.
|
|
78
|
+
*/
|
|
79
|
+
export declare function describeCatalog(now?: number): Promise<CatalogReport>;
|
|
80
|
+
/** The file format shared by `kosha registry export` and the weekly snapshot. */
|
|
81
|
+
export interface CatalogEnvelope {
|
|
82
|
+
schemaVersion: typeof CATALOG_SCHEMA_VERSION;
|
|
83
|
+
kind: typeof CATALOG_KIND;
|
|
84
|
+
fetchedAt: string;
|
|
85
|
+
providerScope: string;
|
|
86
|
+
modelCount: number;
|
|
87
|
+
providerCount: number;
|
|
88
|
+
discoveredAt: number;
|
|
89
|
+
providers: ProviderInfo[];
|
|
90
|
+
}
|
|
91
|
+
/** Wrap discovered providers in the catalog envelope, ready to write as JSON. */
|
|
92
|
+
export declare function buildCatalogEnvelope(providers: ProviderInfo[], options: {
|
|
93
|
+
discoveredAt: number;
|
|
94
|
+
providerScope?: string;
|
|
95
|
+
now?: Date;
|
|
96
|
+
}): CatalogEnvelope;
|
|
97
|
+
/** Test hook. */
|
|
98
|
+
export declare function resetCatalogSource(): void;
|
|
99
|
+
//# sourceMappingURL=catalog-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-source.d.ts","sourceRoot":"","sources":["../src/catalog-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAA6C,KAAK,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE7D,eAAO,MAAM,eAAe,EAAE,SAAS,aAAa,EAAqC,CAAC;AAC1F,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AACzD,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AAErD,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAK5C,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,aAAa,CAAC;IACpB,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;CACrC;AAKD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,GAAG,aAAa,CAAC,GAAG,IAAI,CAMxG;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,qBAAqB,CAuB5D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,+DAA+D;AAC/D,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAU3E;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAOvE;AAED,kFAAkF;AAClF,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAKzE;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGxD;AAED,4DAA4D;AAC5D,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,SAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAoB9E;AAED,iFAAiF;AACjF,MAAM,WAAW,eAAe;IAC/B,aAAa,EAAE,OAAO,sBAAsB,CAAC;IAC7C,IAAI,EAAE,OAAO,YAAY,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,CACnC,SAAS,EAAE,YAAY,EAAE,EACzB,OAAO,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAA;CAAE,GACnE,eAAe,CAWjB;AAED,iBAAiB;AACjB,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* kosha-discovery — Where keyless catalog data comes from.
|
|
3
|
+
*
|
|
4
|
+
* Without an API key, kosha learns about models from catalogs it does not
|
|
5
|
+
* own: models.dev and LiteLLM. If either one shuts down or ships poisoned
|
|
6
|
+
* data, this is the switch that takes them out of the loop:
|
|
7
|
+
*
|
|
8
|
+
* - `community` (default): models.dev first, LiteLLM as filler and for
|
|
9
|
+
* enrichment, kosha's weekly snapshot when both are unreachable.
|
|
10
|
+
* - `pinned`: kosha's own published snapshot only. No models.dev, no LiteLLM.
|
|
11
|
+
* - `local`: a catalog file on disk (`kosha registry export` writes one).
|
|
12
|
+
* Never touches the network for catalog data. A missing or broken file is
|
|
13
|
+
* an error, never a silent fallback to the network.
|
|
14
|
+
*
|
|
15
|
+
* Provider APIs called with your own key are official sources and run in
|
|
16
|
+
* every mode. `KOSHA_CATALOG_SOURCE` and `KOSHA_CATALOG_FILE` override config.
|
|
17
|
+
* @module
|
|
18
|
+
*/
|
|
19
|
+
import { open } from "node:fs/promises";
|
|
20
|
+
import { homedir } from "node:os";
|
|
21
|
+
import { isAbsolute, resolve } from "node:path";
|
|
22
|
+
import { loadSnapshotCatalog, parseSnapshotCatalog } from "./discovery/snapshot-catalog.js";
|
|
23
|
+
export const CATALOG_SOURCES = ["community", "pinned", "local"];
|
|
24
|
+
export const CATALOG_SOURCE_ENV = "KOSHA_CATALOG_SOURCE";
|
|
25
|
+
export const CATALOG_FILE_ENV = "KOSHA_CATALOG_FILE";
|
|
26
|
+
/** Envelope version for `kosha registry export` and the published snapshot. */
|
|
27
|
+
export const CATALOG_SCHEMA_VERSION = 1;
|
|
28
|
+
export const CATALOG_KIND = "kosha-catalog";
|
|
29
|
+
/** Same cap as the published snapshot; ours is ~3 MB today. */
|
|
30
|
+
const MAX_LOCAL_BYTES = 16 * 1024 * 1024;
|
|
31
|
+
let configured = {};
|
|
32
|
+
let localInflight = null;
|
|
33
|
+
export function isCatalogSource(value) {
|
|
34
|
+
return typeof value === "string" && CATALOG_SOURCES.includes(value);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Record the config's choice. Called by the registry constructor, so the
|
|
38
|
+
* last registry built sets it for the process; the env still wins.
|
|
39
|
+
*/
|
|
40
|
+
export function configureCatalogSource(config) {
|
|
41
|
+
configured = {
|
|
42
|
+
mode: isCatalogSource(config?.catalogSource) ? config.catalogSource : undefined,
|
|
43
|
+
file: typeof config?.catalogFile === "string" ? config.catalogFile : undefined,
|
|
44
|
+
};
|
|
45
|
+
localInflight = null;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The mode in force right now. An unknown value in the env is an error
|
|
49
|
+
* rather than a quiet fallback: someone who typed `KOSHA_CATALOG_SOURCE=locl`
|
|
50
|
+
* meant to stop the network fetch.
|
|
51
|
+
*/
|
|
52
|
+
export function resolveCatalogSource() {
|
|
53
|
+
const envMode = process.env[CATALOG_SOURCE_ENV]?.trim();
|
|
54
|
+
let mode = "community";
|
|
55
|
+
let origin = "default";
|
|
56
|
+
if (envMode) {
|
|
57
|
+
if (!isCatalogSource(envMode)) {
|
|
58
|
+
throw new Error(`${CATALOG_SOURCE_ENV}="${envMode}" is not one of: ${CATALOG_SOURCES.join(", ")}`);
|
|
59
|
+
}
|
|
60
|
+
mode = envMode;
|
|
61
|
+
origin = "env";
|
|
62
|
+
}
|
|
63
|
+
else if (configured.mode) {
|
|
64
|
+
mode = configured.mode;
|
|
65
|
+
origin = "config";
|
|
66
|
+
}
|
|
67
|
+
if (mode !== "local")
|
|
68
|
+
return { mode, origin };
|
|
69
|
+
const raw = process.env[CATALOG_FILE_ENV]?.trim() || configured.file;
|
|
70
|
+
if (!raw) {
|
|
71
|
+
throw new Error(`catalog source is "local" but no catalog file is set (${CATALOG_FILE_ENV} or catalogFile in ~/.kosharc.json)`);
|
|
72
|
+
}
|
|
73
|
+
return { mode, file: expandPath(raw), origin };
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Prefix a cache key with the mode, so data cached in `community` mode is
|
|
77
|
+
* never served after switching away from it. `community` keeps the bare
|
|
78
|
+
* keys, so existing caches stay valid.
|
|
79
|
+
*/
|
|
80
|
+
export function catalogCacheKey(key) {
|
|
81
|
+
const { mode } = resolveCatalogSource();
|
|
82
|
+
return mode === "community" ? key : `${mode}_${key}`;
|
|
83
|
+
}
|
|
84
|
+
/** Seed cards for one provider from the local catalog file. */
|
|
85
|
+
export async function getLocalSeed(providerId) {
|
|
86
|
+
const { file } = resolveCatalogSource();
|
|
87
|
+
if (!file)
|
|
88
|
+
return [];
|
|
89
|
+
const catalog = await loadLocalCatalog(file);
|
|
90
|
+
const now = Date.now();
|
|
91
|
+
return (catalog.providers.get(providerId) ?? []).map((card) => ({
|
|
92
|
+
...card,
|
|
93
|
+
discoveredAt: now,
|
|
94
|
+
catalogSource: "local",
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
97
|
+
/** Load and validate the local catalog once per process (per file). */
|
|
98
|
+
export function loadLocalCatalog(file) {
|
|
99
|
+
if (localInflight)
|
|
100
|
+
return localInflight;
|
|
101
|
+
localInflight = readLocalCatalog(file).catch((error) => {
|
|
102
|
+
localInflight = null;
|
|
103
|
+
throw error;
|
|
104
|
+
});
|
|
105
|
+
return localInflight;
|
|
106
|
+
}
|
|
107
|
+
/** The catalog the active mode reads from, for enrichment outside `community`. */
|
|
108
|
+
export async function loadActiveCatalog() {
|
|
109
|
+
const source = resolveCatalogSource();
|
|
110
|
+
if (source.mode === "local" && source.file)
|
|
111
|
+
return loadLocalCatalog(source.file);
|
|
112
|
+
if (source.mode === "pinned")
|
|
113
|
+
return loadSnapshotCatalog();
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Run before discovery. In `local` mode a missing or invalid file throws
|
|
118
|
+
* here, because past this point a seed failure only degrades a provider to
|
|
119
|
+
* its bundled static list, quietly. A bad env value throws in every mode.
|
|
120
|
+
*/
|
|
121
|
+
export async function assertCatalogReady() {
|
|
122
|
+
const source = resolveCatalogSource();
|
|
123
|
+
if (source.mode === "local" && source.file)
|
|
124
|
+
await loadLocalCatalog(source.file);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Describe the active catalog, loading it outside `community` to read its
|
|
128
|
+
* age. Never throws: a broken setup is exactly what doctor must show.
|
|
129
|
+
*/
|
|
130
|
+
export async function describeCatalog(now = Date.now()) {
|
|
131
|
+
let source;
|
|
132
|
+
try {
|
|
133
|
+
source = resolveCatalogSource();
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
return { mode: null, origin: null, error: error.message };
|
|
137
|
+
}
|
|
138
|
+
const report = { mode: source.mode, origin: source.origin, file: source.file };
|
|
139
|
+
if (source.mode === "community")
|
|
140
|
+
return report;
|
|
141
|
+
try {
|
|
142
|
+
const catalog = await loadActiveCatalog();
|
|
143
|
+
const built = catalog?.fetchedAt ? Date.parse(catalog.fetchedAt) : Number.NaN;
|
|
144
|
+
if (catalog?.fetchedAt && Number.isFinite(built)) {
|
|
145
|
+
report.fetchedAt = catalog.fetchedAt;
|
|
146
|
+
report.ageDays = Math.max(0, Math.floor((now - built) / 86_400_000));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
report.error = error.message;
|
|
151
|
+
}
|
|
152
|
+
return report;
|
|
153
|
+
}
|
|
154
|
+
/** Wrap discovered providers in the catalog envelope, ready to write as JSON. */
|
|
155
|
+
export function buildCatalogEnvelope(providers, options) {
|
|
156
|
+
return {
|
|
157
|
+
schemaVersion: CATALOG_SCHEMA_VERSION,
|
|
158
|
+
kind: CATALOG_KIND,
|
|
159
|
+
fetchedAt: (options.now ?? new Date()).toISOString(),
|
|
160
|
+
providerScope: options.providerScope ?? "all",
|
|
161
|
+
modelCount: providers.reduce((sum, provider) => sum + provider.models.length, 0),
|
|
162
|
+
providerCount: providers.length,
|
|
163
|
+
discoveredAt: options.discoveredAt,
|
|
164
|
+
providers,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/** Test hook. */
|
|
168
|
+
export function resetCatalogSource() {
|
|
169
|
+
configured = {};
|
|
170
|
+
localInflight = null;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* One handle for the check and the read, so the file can't be swapped in
|
|
174
|
+
* between, and the read itself stops at the cap in case the file grows.
|
|
175
|
+
*/
|
|
176
|
+
async function readLocalCatalog(file) {
|
|
177
|
+
const handle = await open(file, "r").catch(() => null);
|
|
178
|
+
if (!handle)
|
|
179
|
+
throw new Error(`local catalog not found: ${file}`);
|
|
180
|
+
try {
|
|
181
|
+
if (!(await handle.stat()).isFile())
|
|
182
|
+
throw new Error(`local catalog is not a file: ${file}`);
|
|
183
|
+
const buffer = Buffer.alloc(MAX_LOCAL_BYTES + 1);
|
|
184
|
+
let length = 0;
|
|
185
|
+
while (length < buffer.length) {
|
|
186
|
+
const { bytesRead } = await handle.read(buffer, length, buffer.length - length, length);
|
|
187
|
+
if (bytesRead === 0)
|
|
188
|
+
break;
|
|
189
|
+
length += bytesRead;
|
|
190
|
+
}
|
|
191
|
+
if (length > MAX_LOCAL_BYTES)
|
|
192
|
+
throw new Error(`local catalog too large (> ${MAX_LOCAL_BYTES} bytes): ${file}`);
|
|
193
|
+
return parseSnapshotCatalog(buffer.toString("utf8", 0, length), `local catalog ${file}`);
|
|
194
|
+
}
|
|
195
|
+
finally {
|
|
196
|
+
await handle.close();
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
function expandPath(raw) {
|
|
200
|
+
const path = raw === "~" || raw.startsWith("~/") ? `${homedir()}${raw.slice(1)}` : raw;
|
|
201
|
+
return isAbsolute(path) ? path : resolve(path);
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=catalog-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-source.js","sourceRoot":"","sources":["../src/catalog-source.ts"],"names":[],"mappings":"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"}
|
package/dist/cli-cmd-doctor.d.ts
CHANGED
|
@@ -14,4 +14,11 @@ export declare const DOCTOR_CI_EXIT_CODE = 2;
|
|
|
14
14
|
/** Default deprecation window in days when `--deprecation-window` is absent. */
|
|
15
15
|
export declare const DOCTOR_DEFAULT_DEPRECATION_WINDOW = 30;
|
|
16
16
|
export declare function cmdDoctor(registry: ModelRegistry, flags: Record<string, string | boolean>): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Whole days from `nowMs` to `isoDate`, counted on the UTC calendar.
|
|
19
|
+
* Sunset dates are UTC days (`Date.parse("2026-11-14")` is UTC midnight), so
|
|
20
|
+
* "today" must be too: local midnight put machines west of UTC a day short,
|
|
21
|
+
* which moved the `--ci` gate edge.
|
|
22
|
+
*/
|
|
23
|
+
export declare function daysBetween(nowMs: number, isoDate: string): number | null;
|
|
17
24
|
//# sourceMappingURL=cli-cmd-doctor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-cmd-doctor.d.ts","sourceRoot":"","sources":["../src/cli-cmd-doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"cli-cmd-doctor.d.ts","sourceRoot":"","sources":["../src/cli-cmd-doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAmBnD,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,gFAAgF;AAChF,eAAO,MAAM,iCAAiC,KAAK,CAAC;AAsBpD,wBAAsB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C/G;AA2OD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMzE"}
|
package/dist/cli-cmd-doctor.js
CHANGED
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
* from each provider.
|
|
9
9
|
* @module
|
|
10
10
|
*/
|
|
11
|
-
import {
|
|
11
|
+
import { describeCatalog } from "./catalog-source.js";
|
|
12
|
+
import { CYAN, c, DIM, GREEN, RED, YELLOW } from "./cli-format.js";
|
|
12
13
|
import { extractOriginProvider, matchableModelId } from "./normalize.js";
|
|
13
14
|
/** Exit code `doctor` uses to fail a CI run without looking like a crash. */
|
|
14
15
|
export const DOCTOR_CI_EXIT_CODE = 2;
|
|
@@ -25,6 +26,7 @@ export async function cmdDoctor(registry, flags) {
|
|
|
25
26
|
// Even if discovery fails, we can still report on whatever the cached
|
|
26
27
|
// registry holds — that's the point of `doctor`.
|
|
27
28
|
}
|
|
29
|
+
const catalog = await describeCatalog();
|
|
28
30
|
const scope = parseModelScope(f.model);
|
|
29
31
|
const scoped = scope ? resolveScope(registry, scope) : undefined;
|
|
30
32
|
const models = scoped ? scopeModels(registry, scoped) : registry.models();
|
|
@@ -39,9 +41,10 @@ export async function cmdDoctor(registry, flags) {
|
|
|
39
41
|
.map((providerId) => projectHealth(registry, providerId))
|
|
40
42
|
.filter((row) => row !== null);
|
|
41
43
|
if (f.json) {
|
|
42
|
-
process.stdout.write(`${JSON.stringify({ deprecations, health: healthFindings }, null, 2)}\n`);
|
|
44
|
+
process.stdout.write(`${JSON.stringify({ catalog, deprecations, health: healthFindings }, null, 2)}\n`);
|
|
43
45
|
}
|
|
44
46
|
else {
|
|
47
|
+
renderCatalog(catalog);
|
|
45
48
|
renderDeprecations(deprecations);
|
|
46
49
|
renderHealth(healthFindings);
|
|
47
50
|
}
|
|
@@ -56,6 +59,23 @@ export async function cmdDoctor(registry, flags) {
|
|
|
56
59
|
process.exit(DOCTOR_CI_EXIT_CODE);
|
|
57
60
|
}
|
|
58
61
|
}
|
|
62
|
+
/** One line on where keyless catalog data comes from, and how old it is. */
|
|
63
|
+
function renderCatalog(report) {
|
|
64
|
+
if (report.error) {
|
|
65
|
+
console.log(`${c(RED, "Catalog source:")} ${report.mode ?? "invalid"} — ${report.error}`);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const detail = report.mode === "community"
|
|
69
|
+
? "models.dev + LiteLLM, fetched live"
|
|
70
|
+
: [
|
|
71
|
+
report.file,
|
|
72
|
+
report.fetchedAt ? `built ${report.fetchedAt.slice(0, 10)}, ${report.ageDays}d old` : "build date unknown",
|
|
73
|
+
]
|
|
74
|
+
.filter(Boolean)
|
|
75
|
+
.join(", ");
|
|
76
|
+
const mode = report.mode === "community" ? report.mode : c(GREEN, report.mode ?? "");
|
|
77
|
+
console.log(`${c(CYAN, "Catalog source:")} ${mode} ${c(DIM, `(${detail}; set by ${report.origin})`)}`);
|
|
78
|
+
}
|
|
59
79
|
/**
|
|
60
80
|
* The subset of deprecation findings that trip the CI gate, or an empty array
|
|
61
81
|
* when CI mode is off (no `--ci` / `--fail-on-warning`) so {@link cmdDoctor}
|
|
@@ -101,7 +121,10 @@ function parseDeprecationWindow(raw) {
|
|
|
101
121
|
function parseModelScope(raw) {
|
|
102
122
|
if (typeof raw !== "string")
|
|
103
123
|
return undefined;
|
|
104
|
-
const ids = Array.from(new Set(raw
|
|
124
|
+
const ids = Array.from(new Set(raw
|
|
125
|
+
.split(",")
|
|
126
|
+
.map((id) => id.trim())
|
|
127
|
+
.filter(Boolean)));
|
|
105
128
|
return ids.length > 0 ? ids : undefined;
|
|
106
129
|
}
|
|
107
130
|
/**
|
|
@@ -250,29 +273,27 @@ function renderHealth(findings) {
|
|
|
250
273
|
return;
|
|
251
274
|
}
|
|
252
275
|
for (const h of findings) {
|
|
253
|
-
const tag = h.available
|
|
254
|
-
? h.reliabilityScore >= 0.95
|
|
255
|
-
? c(GREEN, "ok")
|
|
256
|
-
: c(YELLOW, "degraded")
|
|
257
|
-
: c(RED, "open");
|
|
276
|
+
const tag = h.available ? (h.reliabilityScore >= 0.95 ? c(GREEN, "ok") : c(YELLOW, "degraded")) : c(RED, "open");
|
|
258
277
|
const p95 = h.p95LatencyMs !== null ? `${h.p95LatencyMs}ms` : "no samples";
|
|
259
278
|
const reliability = (h.reliabilityScore * 100).toFixed(0);
|
|
260
279
|
process.stdout.write(` ${tag} ${h.providerId.padEnd(14)} ${c(DIM, `reliability=${reliability}%`)} ${c(DIM, `p95=${p95}`)}\n`);
|
|
261
280
|
}
|
|
262
281
|
}
|
|
263
|
-
|
|
282
|
+
/**
|
|
283
|
+
* Whole days from `nowMs` to `isoDate`, counted on the UTC calendar.
|
|
284
|
+
* Sunset dates are UTC days (`Date.parse("2026-11-14")` is UTC midnight), so
|
|
285
|
+
* "today" must be too: local midnight put machines west of UTC a day short,
|
|
286
|
+
* which moved the `--ci` gate edge.
|
|
287
|
+
*/
|
|
288
|
+
export function daysBetween(nowMs, isoDate) {
|
|
264
289
|
const date = Date.parse(isoDate);
|
|
265
290
|
if (!Number.isFinite(date))
|
|
266
291
|
return null;
|
|
267
|
-
|
|
292
|
+
const now = new Date(nowMs);
|
|
293
|
+
const todayUtc = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate());
|
|
294
|
+
return Math.floor((date - todayUtc) / 86_400_000);
|
|
268
295
|
}
|
|
269
|
-
/**
|
|
270
|
-
* Today's wall-clock midnight as ms. Wrapped so tests can swap it out;
|
|
271
|
-
* a deprecation finding rendering is otherwise time-dependent and racy.
|
|
272
|
-
*/
|
|
273
296
|
function todayMs() {
|
|
274
|
-
|
|
275
|
-
now.setHours(0, 0, 0, 0);
|
|
276
|
-
return now.getTime();
|
|
297
|
+
return Date.now();
|
|
277
298
|
}
|
|
278
299
|
//# sourceMappingURL=cli-cmd-doctor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-cmd-doctor.js","sourceRoot":"","sources":["../src/cli-cmd-doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAoBzE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,gFAAgF;AAChF,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAsBpD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAuB,EAAE,KAAuC;IAC/F,MAAM,CAAC,GAAgB,KAAK,CAAC;IAE7B,qEAAqE;IACrE,4CAA4C;IAC5C,IAAI,CAAC;QACJ,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACR,sEAAsE;QACtE,iDAAiD;IAClD,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC1E,MAAM,YAAY,GAAG,MAAM;QAC1B,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,MAAM,CAAC,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC/B,wEAAwE;IACxE,wDAAwD;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAC1E,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAG,SAAS;SAC9B,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;SACxD,MAAM,CAAC,CAAC,GAAG,EAAwB,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;IAEtD,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAChG,CAAC;SAAM,CAAC;QACP,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACjC,YAAY,CAAC,cAAc,CAAC,CAAC;IAC9B,CAAC;IAED,2EAA2E;IAC3E,0EAA0E;IAC1E,yEAAyE;IACzE,mDAAmD;IACnD,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,sBAAsB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,KAAK,CACZ,CAAC,CACA,GAAG,EACH,iBAAiB,UAAU,CAAC,MAAM,oDAAoD,UAAU,KAAK,CACrG,CACD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACnC,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,CAAc,EAAE,QAA8B;IACxE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,sBAAsB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACnE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,iFAAiF;AACjF,SAAS,SAAS,CAAC,CAAc;IAChC,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,OAA2B,EAAE,UAAkB;IACnE,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACjH,IAAI,OAAO,CAAC,eAAe,KAAK,IAAI,IAAI,OAAO,CAAC,eAAe,IAAI,UAAU;QAAE,OAAO,IAAI,CAAC;IAC3F,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,GAAiC;IAChE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QACxD,OAAO,iCAAiC,CAAC;IAC1C,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;QAAE,OAAO,iCAAiC,CAAC;IACrF,OAAO,MAAM,CAAC;AACf,CAAC;AAQD,+EAA+E;AAC/E,SAAS,eAAe,CAAC,GAAiC;IACzD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACvF,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,QAAuB,EAAE,MAAqB;IAClE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAa,CAAC;IAClC,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,MAAM,EAAE,CAAC;QACnC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,YAAY,CAAC,QAAuB,EAAE,KAAe;IAC7D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AACzF,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,MAAqB,EAAE,MAAmB;IACjE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACzF,OAAO,MAAM;SACX,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;SAChF,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAClC,OAAO,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,QAAQ,GAAG;QAC1E,QAAQ,EAAE,GAAG;QACb,MAAM,EAAE,SAAS;QACjB,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,IAAI;QACrB,UAAU,EAAE,IAAI;KAChB,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,QAA8B,EAAE,MAAmB;IACzE,MAAM,MAAM,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1E,MAAM,cAAc,GAAG,IAAI,GAAG,EAAuB,CAAC;IACtD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7B,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,KAAgB,EAAW,EAAE,CAC9C,KAAK,CAAC,QAAQ,KAAK,CAAC,KAAK,CAAC,cAAc,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChG,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,SAAS,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAElG,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAClC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAC9C,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACjE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1G,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACjC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,SAAS,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAmB;IAC/C,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC;IACxB,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;QACpC,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC;QACtD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC;QAE5C,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,IAAI,CAAC,UAAU;YAAE,SAAS;QACzD,IAAI,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,eAAe;YAAE,SAAS;QAElF,QAAQ,CAAC,IAAI,CAAC;YACb,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM;YACN,eAAe;YACf,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI;YAC7E,UAAU;SACV,CAAC,CAAC;IACJ,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACtB,0DAA0D;QAC1D,MAAM,IAAI,GAAG,CAAC,CAAC,eAAe,IAAI,MAAM,CAAC,iBAAiB,CAAC;QAC3D,MAAM,IAAI,GAAG,CAAC,CAAC,eAAe,IAAI,MAAM,CAAC,iBAAiB,CAAC;QAC3D,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,GAAG,IAAI,CAAC;QACtC,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAmB;IAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,aAAa,CAAC,QAAuB,EAAE,UAAkB;IACjE,IAAI,CAAC;QACJ,MAAM,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACnD,OAAO;YACN,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;YACpC,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,WAAW,EAAE,CAAC,CAAC,WAAW;SAC1B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED,SAAS,kBAAkB,CAAC,QAA8B;IACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,2DAA2D,CAAC,CAAC,CAAC;QAC1F,OAAO;IACR,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,eAAe,CAAC;QAC/B,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;YAAE,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;aAC/C,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;YAAE,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;aACpD,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;YAAE,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,cAAc,IAAI,GAAG,CAAC,CAAC;aACrE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;YAAE,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,IAAI,GAAG,CAAC,CAAC;aACxE,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY;YAAE,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;aAC7D,IAAI,IAAI,KAAK,IAAI;YAAE,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,cAAc,IAAI,GAAG,CAAC,CAAC;;YACvD,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;QAEzC,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,GAAG,WAAW,IAAI,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,YAAY,CAAC,QAAyB;IAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,8DAA8D,CAAC,CAAC,CAAC;QAC7F,OAAO;IACR,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS;YACtB,CAAC,CAAC,CAAC,CAAC,gBAAgB,IAAI,IAAI;gBAC3B,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC;gBAChB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC;YACxB,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAClB,MAAM,GAAG,GAAG,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;QAC3E,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,KAAK,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,eAAe,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,OAAO,GAAG,EAAE,CAAC,IAAI,CAC1G,CAAC;IACH,CAAC;AACF,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,OAAe;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,SAAS,OAAO;IACf,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC;AACtB,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli-cmd-doctor.js","sourceRoot":"","sources":["../src/cli-cmd-doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/cli-cmd-query.d.ts
CHANGED
|
@@ -37,4 +37,9 @@ export declare function cmdCapabilities(registry: ModelRegistry, flags: Record<s
|
|
|
37
37
|
* @param flags CLI flags (supports `--provider`, `--origin`, `--pricing`, `--json`, `--limit`).
|
|
38
38
|
*/
|
|
39
39
|
export declare function cmdCapable(registry: ModelRegistry, query: string, flags: Record<string, string | boolean>): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* `kosha ranked` — the routes `kosha:<strategy>` would try, in order. Same
|
|
42
|
+
* ranking as the proxy and MCP's kosha_ranked_routes.
|
|
43
|
+
*/
|
|
44
|
+
export declare function cmdRanked(registry: ModelRegistry, flags: Record<string, string | boolean>): Promise<void>;
|
|
40
45
|
//# sourceMappingURL=cli-cmd-query.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-cmd-query.d.ts","sourceRoot":"","sources":["../src/cli-cmd-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"cli-cmd-query.d.ts","sourceRoot":"","sources":["../src/cli-cmd-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgBH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAsGnD;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD9G;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,CAgCrH;AAID;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC/B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GACrC,OAAO,CAAC,IAAI,CAAC,CAmDf;AAcD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA4C/G"}
|