@playerthree/bench/model-catalog
OpenRouter model catalog for benchmark configuration discovery (server/CLI only): a bounded, allowlisted projection of the public models list. Catalog membership is neither an execution whitelist nor model identity evidence.
Classes
ModelCatalogError
Defined in: packages/bench/src/model-catalog.ts:59
A catalog fetch failed; carries a closed code only, never the provider's error text.
Extends
Error
Constructors
Constructor
new ModelCatalogError(code): ModelCatalogError;Defined in: packages/bench/src/model-catalog.ts:61
Parameters
| Parameter | Type |
|---|---|
code | "unavailable" | "invalid_response" | "response_too_large" |
Returns
Overrides
Error.constructor
Properties
| Property | Modifier | Type | Defined in |
|---|---|---|---|
code | readonly | "unavailable" | "invalid_response" | "response_too_large" | packages/bench/src/model-catalog.ts:60 |
Interfaces
CatalogFetchOptions
Defined in: packages/bench/src/model-catalog.ts:52
Properties
| Property | Type | Description | Defined in |
|---|---|---|---|
apiKey? | string | Opt-in server-side credential only; public discovery never needs an environment lookup. | packages/bench/src/model-catalog.ts:54 |
fetch? | { (input, init?): Promise<Response>; (input, init?): Promise<Response>; } | - | packages/bench/src/model-catalog.ts:55 |
now? | () => number | - | packages/bench/src/model-catalog.ts:56 |
CatalogPrice
Defined in: packages/bench/src/model-catalog.ts:14
Properties
| Property | Modifier | Type | Description | Defined in |
|---|---|---|---|---|
amount | readonly | string | null | Exact decimal string, never a floating-point dollar conversion. Null includes provider sentinels. | packages/bench/src/model-catalog.ts:17 |
parameter | readonly | string | - | packages/bench/src/model-catalog.ts:15 |
raw | readonly | string | null | - | packages/bench/src/model-catalog.ts:18 |
unit | readonly | string | null | Unknown future price dimensions remain unknown, not implicitly per-token. | packages/bench/src/model-catalog.ts:20 |
CatalogSearch
Defined in: packages/bench/src/model-catalog.ts:206
Properties
| Property | Type | Defined in |
|---|---|---|
limit? | number | packages/bench/src/model-catalog.ts:210 |
query? | string | packages/bench/src/model-catalog.ts:207 |
reasoning? | boolean | packages/bench/src/model-catalog.ts:209 |
tools? | boolean | packages/bench/src/model-catalog.ts:208 |
ModelCatalog
Defined in: packages/bench/src/model-catalog.ts:40
Properties
| Property | Modifier | Type | Description | Defined in |
|---|---|---|---|---|
disclaimer | readonly | "OpenRouter catalog metadata is a discovery hint, not a whitelist or model identity attestation. Listed prices are dated estimates, not billed costs; routing, caching and conditional rates can change actual charges." | - | packages/bench/src/model-catalog.ts:45 |
fetchedAt | readonly | string | - | packages/bench/src/model-catalog.ts:42 |
models | readonly | readonly ModelCatalogEntry[] | - | packages/bench/src/model-catalog.ts:46 |
scope | readonly | "default-text-output-catalog" | The unfiltered endpoint defaults to text-output models, not every OpenRouter product. | packages/bench/src/model-catalog.ts:44 |
source | readonly | "https://openrouter.ai/api/v1/models" | - | packages/bench/src/model-catalog.ts:41 |
ModelCatalogEntry
Defined in: packages/bench/src/model-catalog.ts:22
Properties
| Property | Modifier | Type | Defined in |
|---|---|---|---|
contextLength | readonly | number | null | packages/bench/src/model-catalog.ts:25 |
id | readonly | string | packages/bench/src/model-catalog.ts:23 |
inputModalities | readonly | readonly string[] | null | packages/bench/src/model-catalog.ts:26 |
name | readonly | string | null | packages/bench/src/model-catalog.ts:24 |
outputModalities | readonly | readonly string[] | null | packages/bench/src/model-catalog.ts:27 |
pricing | readonly | object | packages/bench/src/model-catalog.ts:31 |
pricing.basis | readonly | "catalog-list-price" | packages/bench/src/model-catalog.ts:35 |
pricing.currency | readonly | "USD" | packages/bench/src/model-catalog.ts:32 |
pricing.fetchedAt | readonly | string | packages/bench/src/model-catalog.ts:34 |
pricing.hasConditionalRates | readonly | boolean | null | packages/bench/src/model-catalog.ts:36 |
pricing.rates | readonly | readonly CatalogPrice[] | null | packages/bench/src/model-catalog.ts:37 |
pricing.source | readonly | "https://openrouter.ai/api/v1/models" | packages/bench/src/model-catalog.ts:33 |
supportedParameters | readonly | readonly string[] | null | packages/bench/src/model-catalog.ts:28 |
supportsReasoning | readonly | boolean | null | packages/bench/src/model-catalog.ts:30 |
supportsTools | readonly | boolean | null | packages/bench/src/model-catalog.ts:29 |
ModelCatalogState
Defined in: packages/bench/src/model-catalog.ts:48
Properties
| Property | Modifier | Type | Defined in |
|---|---|---|---|
catalog | readonly | ModelCatalog | null | packages/bench/src/model-catalog.ts:50 |
status | readonly | "available" | "stale" | "unavailable" | packages/bench/src/model-catalog.ts:49 |
Variables
MODEL_CATALOG_DISCLAIMER
const MODEL_CATALOG_DISCLAIMER: "OpenRouter catalog metadata is a discovery hint, not a whitelist or model identity attestation. Listed prices are dated estimates, not billed costs; routing, caching and conditional rates can change actual charges." = 'OpenRouter catalog metadata is a discovery hint, not a whitelist or model identity attestation. Listed prices are dated estimates, not billed costs; routing, caching and conditional rates can change actual charges.';Defined in: packages/bench/src/model-catalog.ts:7
OPENROUTER_MODELS_URL
const OPENROUTER_MODELS_URL: "https://openrouter.ai/api/v1/models" = 'https://openrouter.ai/api/v1/models';Defined in: packages/bench/src/model-catalog.ts:6
OpenRouter model catalog for benchmark configuration discovery (server/CLI only): a bounded, allowlisted projection of the public models list. Catalog membership is neither an execution whitelist nor model identity evidence.
Functions
createOpenRouterCatalog()
function createOpenRouterCatalog(options?): object;Defined in: packages/bench/src/model-catalog.ts:178
One bounded snapshot and one in-flight fetch per instance; outage cooldown also covers a cold cache.
Parameters
| Parameter | Type |
|---|---|
options? | CatalogFetchOptions |
Returns
object
| Name | Type | Defined in |
|---|---|---|
get() | () => Promise<ModelCatalogState> | packages/bench/src/model-catalog.ts:178 |
fetchOpenRouterCatalog()
function fetchOpenRouterCatalog(options?): Promise<ModelCatalog>;Defined in: packages/bench/src/model-catalog.ts:139
One fetch of the catalog (10 s timeout, at most 8 MiB, no redirects); apiKey, if given, is sent as a bearer token.
Parameters
| Parameter | Type |
|---|---|
options? | CatalogFetchOptions |
Returns
Promise<ModelCatalog>
projectOpenRouterCatalog()
function projectOpenRouterCatalog(value, fetchedAt): ModelCatalog;Defined in: packages/bench/src/model-catalog.ts:113
Allowlisted projection: never copy descriptions, arbitrary provider properties, request headers or response errors.
Parameters
| Parameter | Type |
|---|---|
value | unknown |
fetchedAt | string |
Returns
searchCatalog()
function searchCatalog(catalog, options?): object;Defined in: packages/bench/src/model-catalog.ts:213
Case-insensitive substring search over id and name, optionally only models known to support tools or reasoning; limit 1..5000 (default 50).
Parameters
| Parameter | Type |
|---|---|
catalog | ModelCatalog |
options? | CatalogSearch |
Returns
object
| Name | Type | Defined in |
|---|---|---|
hasMore | boolean | packages/bench/src/model-catalog.ts:213 |
models | readonly ModelCatalogEntry[] | packages/bench/src/model-catalog.ts:213 |
total | number | packages/bench/src/model-catalog.ts:213 |
