@stll/ai-catalog 0.6.0 → 0.7.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 CHANGED
@@ -24,9 +24,20 @@ The package contains data and validation only. It does not read environment
24
24
  variables, store credentials, or initialize provider SDKs.
25
25
 
26
26
  Model rates are committed in `src/model-rates.gen.ts` so application startup
27
- never depends on a pricing service. Regenerate the snapshot from
28
- [models.dev](https://models.dev) with `bun --filter @stll/ai-catalog gen:rates`;
29
- rate-related pull requests verify the committed output against that source.
27
+ never depends on a pricing service. Rates and capabilities regenerate from
28
+ reduced, committed models.dev and OpenRouter inputs in `upstream/`:
29
+
30
+ ```sh
31
+ bun --filter @stll/ai-catalog gen:rates --from-snapshot
32
+ bun --filter @stll/ai-catalog gen:capabilities --from-snapshot
33
+ ```
34
+
35
+ `--check` verifies these outputs offline, with network fetches blocked.
36
+ To refresh both inputs and outputs from upstream, run `gen:rates --refresh`,
37
+ then `gen:capabilities --from-snapshot`. The scheduled catalog check maintains
38
+ one refresh pull request for both snapshots.
39
+ `gen:capabilities --refresh` rejects before fetching or writing: rates owns the
40
+ shared upstream refresh, and capabilities reads those refreshed inputs.
30
41
  The snapshot covers text input/output, cache reads/writes, and context tiers.
31
42
  Audio pricing is deliberately excluded because Stella does not route audio
32
43
  model input; an unknown models.dev cost field fails generation.
@@ -1,4 +1,4 @@
1
- import { O as ReasoningEffort, a as BYOKProvider } from "./index-pC8aWAxm.js";
1
+ import { a as BYOKProvider, j as ReasoningEffort } from "./index-BBA5F7Uz.js";
2
2
  //#region src/benchmark-frontier.d.ts
3
3
  export type ModelBenchmarkMeasurement = {
4
4
  sourceModelId: string;
@@ -1,4 +1,4 @@
1
- import { T as OfferedBYOKModelId } from "./index-pC8aWAxm.js";
1
+ import { O as OfferedBYOKModelId } from "./index-BBA5F7Uz.js";
2
2
  import { ModelBenchmarkMeasurement } from "./benchmark-frontier.js";
3
3
  //#region src/benchmark-sources.d.ts
4
4
  export declare const MODEL_BENCHMARK_NAME = "Text Arena";
@@ -10,6 +10,9 @@ export declare const MODEL_BENCHMARK_CONFIG = "text_style_control";
10
10
  export declare const MODEL_BENCHMARK_SPLIT = "latest";
11
11
  export declare const MODEL_BENCHMARK_CATEGORY = "overall";
12
12
  export declare const MODEL_BENCHMARK_SOURCES: {
13
+ readonly "anthropic/claude-haiku-5.5": readonly [];
14
+ readonly "us.anthropic.claude-haiku-5-5": readonly [];
15
+ readonly "claude-haiku-5-5": readonly [];
13
16
  readonly "gemini-3.8-flash": readonly [{
14
17
  readonly sourceModelId: "gemini-3.8-flash-high";
15
18
  readonly reasoningEffort: "high";
@@ -259,6 +262,9 @@ type ModelUnratedReason = (typeof MODEL_UNRATED_REASONS)[number];
259
262
  * drift. `too_new` drives the picker's "New" recommendation.
260
263
  */
261
264
  export declare const MODEL_UNRATED_REASON: {
265
+ readonly "anthropic/claude-haiku-5.5": "too_new";
266
+ readonly "us.anthropic.claude-haiku-5-5": "too_new";
267
+ readonly "claude-haiku-5-5": "too_new";
262
268
  readonly "gemini-3.1-flash-lite": "preview_only";
263
269
  readonly "openai/gpt-6.1-sol": "too_new";
264
270
  readonly "google/gemini-3.5-flash-lite": "named_default_effort";
@@ -1,4 +1,4 @@
1
- import { D as getModelRate, G as getStandardModelRate, W as MODEL_RATE_UNITS_PER_USD } from "./src-DaH9EEfe.js";
1
+ import { J as MODEL_RATE_UNITS_PER_USD, Y as getStandardModelRate, k as getModelRate } from "./src-DpNCcFaY.js";
2
2
  //#region src/benchmark-sources.ts
3
3
  const MODEL_BENCHMARK_NAME = "Text Arena";
4
4
  const MODEL_BENCHMARK_LICENCE = "CC BY 4.0";
@@ -9,6 +9,9 @@ const MODEL_BENCHMARK_CONFIG = "text_style_control";
9
9
  const MODEL_BENCHMARK_SPLIT = "latest";
10
10
  const MODEL_BENCHMARK_CATEGORY = "overall";
11
11
  const MODEL_BENCHMARK_SOURCES = {
12
+ "anthropic/claude-haiku-5.5": [],
13
+ "us.anthropic.claude-haiku-5-5": [],
14
+ "claude-haiku-5-5": [],
12
15
  "gemini-3.8-flash": [{
13
16
  sourceModelId: "gemini-3.8-flash-high",
14
17
  reasoningEffort: "high"
@@ -262,6 +265,9 @@ const MODEL_UNRATED_REASONS = [
262
265
  * drift. `too_new` drives the picker's "New" recommendation.
263
266
  */
264
267
  const MODEL_UNRATED_REASON = {
268
+ "anthropic/claude-haiku-5.5": "too_new",
269
+ "us.anthropic.claude-haiku-5-5": "too_new",
270
+ "claude-haiku-5-5": "too_new",
265
271
  "gemini-3.1-flash-lite": "preview_only",
266
272
  "openai/gpt-6.1-sol": "too_new",
267
273
  "google/gemini-3.5-flash-lite": "named_default_effort",