@yanlinglabs/winter-provider-catalog 0.0.17 → 0.0.22
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/NOTICE +41 -59
- package/PROVENANCE.md +52 -7
- package/README.md +7 -1
- package/dist/extract/merge.d.ts +11 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.js +26970 -13393
- package/dist/tag-renames.d.ts +9 -0
- package/generated/catalog.json +10274 -2515
- package/generated/rejections.json +11 -3
- package/generated/upstream-layer.json +13 -79
- package/overlay/families.json +91 -7
- package/overlay/models.json +7312 -1946
- package/overlay/pricing.json +243 -0
- package/overlay/providers.json +187 -5
- package/package.json +1 -1
package/NOTICE
CHANGED
|
@@ -1,59 +1,41 @@
|
|
|
1
|
-
NOTICE
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
deleted it before the run finished. The two files listed above are the only ones that survived.
|
|
43
|
-
|
|
44
|
-
The pinned source
|
|
45
|
-
-----------------
|
|
46
|
-
|
|
47
|
-
repository https://github.com/diegosouzapw/OmniRoute
|
|
48
|
-
tag v3.8.50
|
|
49
|
-
tag object 6f5d4e00e817bc01b2ac16fdd66db3840c296416 (the ANNOTATED TAG, not a commit)
|
|
50
|
-
commit 5458026c216f77a3da68ea49152dc33470cfe2cb (the tag, peeled)
|
|
51
|
-
licence MIT, Copyright (c) 2026 diegosouzapw
|
|
52
|
-
|
|
53
|
-
The MIT licence covers the source it was applied to. It does NOT grant permission to use a
|
|
54
|
-
provider's consumer subscription, to copy user credentials from another product, to reach private or
|
|
55
|
-
reverse-engineered endpoints, or any trademark right in provider names or logos. The provider logo
|
|
56
|
-
tree is deliberately not imported by this work (report §12), and per-file intake review remains
|
|
57
|
-
mandatory even under an MIT root — the audited upstream head carries retirement migrations for
|
|
58
|
-
GPL-derived and provenance-hold integrations, which at this pinned tag have not yet landed
|
|
59
|
-
(see PROVENANCE.md).
|
|
1
|
+
NOTICE
|
|
2
|
+
======
|
|
3
|
+
|
|
4
|
+
Third-party attributions for the Winter agent SDK.
|
|
5
|
+
|
|
6
|
+
This file records material that Winter DERIVED FROM third-party artifacts. Winter copies no source
|
|
7
|
+
code from any of them; what it takes is protocol facts — endpoint URLs, form-field names, client
|
|
8
|
+
identifiers and scope strings — which it needs in order to speak to a vendor's service at all. Each
|
|
9
|
+
entry names the exact commit the values were read at, so the derivation is re-checkable.
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
-------------------------------------------------------------------------------
|
|
13
|
+
xai-org/grok-build
|
|
14
|
+
-------------------------------------------------------------------------------
|
|
15
|
+
|
|
16
|
+
Repository: https://github.com/xai-org/grok-build
|
|
17
|
+
Commit: 72a61251fcffb464bcc687aeb5a998e5a98ec0c9
|
|
18
|
+
License: Apache License, Version 2.0
|
|
19
|
+
https://www.apache.org/licenses/LICENSE-2.0
|
|
20
|
+
Copyright: Copyright 2023-2026 SpaceXAI
|
|
21
|
+
|
|
22
|
+
Winter's `xai-oauth` provider derives the following constants and request shapes from this
|
|
23
|
+
repository's authentication module, in order to perform its own OAuth 2.0 device authorization
|
|
24
|
+
grant (RFC 8628) against xAI's public, secret-less OAuth client:
|
|
25
|
+
|
|
26
|
+
- the public OAuth client identifier
|
|
27
|
+
- the OAuth issuer, device-authorization endpoint and token endpoint
|
|
28
|
+
- the requested scope set
|
|
29
|
+
- the name of the form field the flow carries a client identity in
|
|
30
|
+
- the shape (field names) of the device-authorization and token requests
|
|
31
|
+
|
|
32
|
+
No source code from this repository is copied into Winter, and no part of Winter is a derivative
|
|
33
|
+
work of it. The derivation is recorded, with per-value line citations, in:
|
|
34
|
+
|
|
35
|
+
packages/conformance/compat/xai/grok-build/derived-shapes-p6b-xai.md
|
|
36
|
+
|
|
37
|
+
Winter identifies ITSELF in that flow. It sends its own `User-Agent` (`winter-agent-sdk/<version>`)
|
|
38
|
+
and its own name in the flow's identity field, and it does not send xAI's product-identity or
|
|
39
|
+
telemetry headers. Winter is not affiliated with or endorsed by SpaceXAI, and "Grok" and "Grok Build"
|
|
40
|
+
are the marks of their owner; they appear here and in the capture solely to identify the artifact
|
|
41
|
+
these values were derived from.
|
package/PROVENANCE.md
CHANGED
|
@@ -7,8 +7,8 @@ The committed catalog is the merge of two layers, performed by `scripts/provider
|
|
|
7
7
|
|
|
8
8
|
| Layer | Source | Owner | Present |
|
|
9
9
|
| --- | --- | --- | --- |
|
|
10
|
-
| upstream | `generated/upstream-layer.json`, extracted from the pinned OmniRoute tree by `scripts/provider-source-sync.ts` | the extractor | **yes** — 106 providers,
|
|
11
|
-
| overlay | `overlay/providers.json` + `overlay/models.json`, hand-authored and reviewed | Winter | yes — 64 providers,
|
|
10
|
+
| upstream | `generated/upstream-layer.json`, extracted from the pinned OmniRoute tree by `scripts/provider-source-sync.ts` | the extractor | **yes** — 106 providers, 539 models |
|
|
11
|
+
| overlay | `overlay/providers.json` + `overlay/models.json`, hand-authored and reviewed | Winter | yes — 64 providers, 117 models |
|
|
12
12
|
|
|
13
13
|
**The overlay always wins.** WS-13 §7: live discovery and upstream extraction never silently
|
|
14
14
|
overwrite `official-doc`/`live-probe` overlay entries, so a conflicting upstream row is dropped in
|
|
@@ -113,11 +113,11 @@ and wants to refresh this document by name — not a second gate.
|
|
|
113
113
|
|
|
114
114
|
<!-- BEGIN GENERATED: admission-tier census (bun run scripts/provenance-tiers.ts) -->
|
|
115
115
|
|
|
116
|
-
Generated from `generated/catalog.json` (`v3.8.50+winter.1`,
|
|
116
|
+
Generated from `generated/catalog.json` (`v3.8.50+winter.1`, 171 provider rows). Do not edit by hand.
|
|
117
117
|
|
|
118
118
|
| Tier | Rows | What it means |
|
|
119
119
|
| --- | ---: | --- |
|
|
120
|
-
| **fetched-document** |
|
|
120
|
+
| **fetched-document** | 44 | a vendor page this repository retrieved and read, on a recorded date |
|
|
121
121
|
| **pinned-upstream** | 101 | the vendor's own site as the pinned upstream product catalog records it, plus that id's own pinned entry — a real, dated reference, but NOT a page read here |
|
|
122
122
|
| **spec-ruling** | 4 | a ruling in an approved spec (or a user ruling recorded in one) admits the PATH; the row's own details are carried from a reviewed ledger entry — `anthropic`, `azure-ai`, `console`, `oci` |
|
|
123
123
|
| **local** | 12 | a local installation on the operator's own machine — there is no third party to be admitted by — `docker-model-runner`, `lemonade`, `llama-cpp`, `llamafile`, `lm-studio`, `mlx-gemma`, `mlx-qwen`, `ollama-local`, `oobabooga`, `triton`, `vllm`, `xinference` |
|
|
@@ -315,7 +315,7 @@ unfalsifiable against its own source.
|
|
|
315
315
|
|
|
316
316
|
## What was excluded, and why
|
|
317
317
|
|
|
318
|
-
`generated/rejections.json` carries all **
|
|
318
|
+
`generated/rejections.json` carries all **723** rows. The counts below are generated from the ledger
|
|
319
319
|
and pinned by `catalog-integrity.test.ts` → *"PROVENANCE.md's exclusion table matches the ledger,
|
|
320
320
|
row for row"*, because a hand-typed count is the line that goes stale first and nobody notices.
|
|
321
321
|
|
|
@@ -342,7 +342,7 @@ row for row"*, because a hand-typed count is the line that goes stale first and
|
|
|
342
342
|
| `category-system` | 1 | `auto` is routing policy, which this layer bans |
|
|
343
343
|
| `duplicate-id` | 1 | upstream's second `gpt-4o` |
|
|
344
344
|
| `no-registry-entry` | 1 | `azure-openai` — catalogued upstream, with no backend entry |
|
|
345
|
-
| **`out-of-scope`** |
|
|
345
|
+
| **`out-of-scope`** | 2 | **`gemini-3.1-flash-tts-preview`** is a TEXT-TO-SPEECH model: WS-13 §4 is a MUST, so `tts` rows never feed the worker-model picker. **`deepseek-v4-flash`** is a retired legacy id that DeepSeek temporarily routes to canonical `deepseek-flash`; it is excluded from the stale upstream layer so the catalog has one canonical row with the legacy id as its alias. Both are reviewed `modelOverrides`, never name heuristics |
|
|
346
346
|
|
|
347
347
|
**`unrepresentable-protocol` is the interesting one.** Upstream's `vertex` entry lists eleven
|
|
348
348
|
`claude-*` models with `targetFormat: "claude"` — Claude models served over Vertex's endpoint in the
|
|
@@ -423,7 +423,7 @@ reviewed allowlist change" a property of the pipeline instead of a promise.
|
|
|
423
423
|
## Pricing
|
|
424
424
|
|
|
425
425
|
`overlay/models.json` carries list prices for the cohort rows below, each with the vendor's own
|
|
426
|
-
pricing page as `sourceRef` and the observation instant. The set is pinned by name in
|
|
426
|
+
official pricing or model page as `sourceRef` and the observation instant. The set is pinned by name in
|
|
427
427
|
`src/extract/catalog-integrity.test.ts`, so a row gaining or losing a price is a deliberate edit:
|
|
428
428
|
|
|
429
429
|
| Model | Input | Output | Cache read | Cache write | Source |
|
|
@@ -436,10 +436,24 @@ pricing page as `sourceRef` and the observation instant. The set is pinned by na
|
|
|
436
436
|
| `google/gemini-3.5-flash-lite` | 0.30 | 2.50 | 0.03 | — | ai.google.dev/gemini-api/docs/pricing |
|
|
437
437
|
| `google/gemini-3.8-flash` | 0.75 | 3.75 | 0.075 | — | ai.google.dev/gemini-api/docs/pricing |
|
|
438
438
|
| `openai/gpt-4.1` | 2.00 | 8.00 | 0.50 | — | developers.openai.com/api/docs/pricing |
|
|
439
|
+
| `openai/gpt-4.1-mini` | 0.40 | 1.60 | 0.10 | — | developers.openai.com/api/docs/models/gpt-4.1-mini |
|
|
440
|
+
| `openai/gpt-4.1-nano` | 0.10 | 0.40 | 0.025 | — | developers.openai.com/api/docs/models/gpt-4.1-nano |
|
|
441
|
+
| `openai/gpt-4o` | 2.50 | 10.00 | 1.25 | — | developers.openai.com/api/docs/models/gpt-4o |
|
|
442
|
+
| `openai/gpt-4o-2024-11-20` | 2.50 | 10.00 | 1.25 | — | developers.openai.com/api/docs/models/gpt-4o |
|
|
443
|
+
| `openai/gpt-4o-mini` | 0.15 | 0.60 | 0.075 | — | developers.openai.com/api/docs/models/gpt-4o-mini |
|
|
444
|
+
| `openai/gpt-5.4` | 2.50 | 15.00 | 0.25 | — | developers.openai.com/api/docs/models/gpt-5.4 |
|
|
445
|
+
| `openai/gpt-5.4-mini` | 0.75 | 4.50 | 0.075 | — | developers.openai.com/api/docs/models/gpt-5.4-mini |
|
|
446
|
+
| `openai/gpt-5.4-nano` | 0.20 | 1.25 | 0.02 | — | developers.openai.com/api/docs/models/gpt-5.4-nano |
|
|
447
|
+
| `openai/gpt-5.4-pro` | 30.00 | 180.00 | — | — | developers.openai.com/api/docs/models/gpt-5.4-pro |
|
|
448
|
+
| `openai/gpt-5.5` | 5.00 | 30.00 | 0.50 | — | developers.openai.com/api/docs/models/gpt-5.5 |
|
|
449
|
+
| `openai/gpt-5.5-pro` | 30.00 | 180.00 | — | — | developers.openai.com/api/docs/models/gpt-5.5-pro |
|
|
450
|
+
| `openai/gpt-5.6` | 4.00 | 20.00 | 0.40 | — | developers.openai.com/api/docs/models/gpt-5.6-sol |
|
|
439
451
|
| `openai/gpt-5.6-luna` | 0.20 | 1.20 | 0.02 | — | developers.openai.com/api/docs/pricing |
|
|
440
452
|
| `openai/gpt-5.6-sol` | 4.00 | 20.00 | 0.40 | — | developers.openai.com/api/docs/pricing |
|
|
441
453
|
| `openai/gpt-5.6-terra` | 2.00 | 12.00 | 0.20 | — | developers.openai.com/api/docs/pricing |
|
|
442
454
|
| `openai/gpt-6-astra` | 10.00 | 50.00 | 1.00 | 12.50 | developers.openai.com/api/docs/pricing |
|
|
455
|
+
| `openai/o3` | 2.00 | 8.00 | 0.50 | — | developers.openai.com/api/docs/models/o3 |
|
|
456
|
+
| `openai/o3-mini` | 1.10 | 4.40 | 0.55 | — | developers.openai.com/api/docs/models/o3-mini |
|
|
443
457
|
| `openai/o4-mini` | 1.10 | 4.40 | 0.275 | — | developers.openai.com/api/docs/pricing |
|
|
444
458
|
| `xai/grok-4.6` | 2.00 | 6.00 | 0.50 | — | docs.x.ai/docs/models |
|
|
445
459
|
|
|
@@ -596,3 +610,34 @@ document (`scanForSecrets`), and the extractor runs the **same** scan over the r
|
|
|
596
610
|
a debug dump no output-side scan would ever see. Field names carrying credential or identity
|
|
597
611
|
material (`oauth`, `anonymousApiKey`, `headers`, `extraHeaders`, `defaultHeaders`) are rejected on
|
|
598
612
|
sight, whatever their shape. WS-13 §6 is categorical: descriptors never contain secrets.
|
|
613
|
+
|
|
614
|
+
## Copied-files register (WS-13 §13)
|
|
615
|
+
|
|
616
|
+
Moved here from this package's own `NOTICE` (P7a fix wave r3 (I3)), which now ships the root
|
|
617
|
+
`NOTICE`'s Apache-2.0 `xai-org/grok-build` attribution byte-for-byte instead — `generated/
|
|
618
|
+
catalog.json` cites that same repository, at the identical pinned commit, as the `sourceRef` for
|
|
619
|
+
several xAI model-catalogue rows (`crates/codegen/xai-grok-models/default_models.json`), so this
|
|
620
|
+
package is a genuine carrier of that derivation alongside `@yanlinglabs/winter-provider-runtime` and
|
|
621
|
+
`@yanlinglabs/winter-provider-conformance`. This register is unrelated to that attribution; it is the
|
|
622
|
+
WS-13 §13 acceptance requirement that "notices cover copied files", for the OmniRoute corpus.
|
|
623
|
+
|
|
624
|
+
NO THIRD-PARTY SOURCE CODE. As of this section's writing, this package contains no third-party
|
|
625
|
+
source code, and no file in it was copied from any upstream project.
|
|
626
|
+
|
|
627
|
+
Two upstream files ARE copied into this repository — but into `third_party/`, not here:
|
|
628
|
+
|
|
629
|
+
third_party/omniroute-provider-source/LICENSE <- OmniRoute's root LICENSE (MIT), verbatim
|
|
630
|
+
third_party/omniroute-provider-source/NOTICE <- OmniRoute's THIRD_PARTY_NOTICES.md, verbatim
|
|
631
|
+
|
|
632
|
+
Both are registered with their upstream path, git blob id, sha256 and byte count in
|
|
633
|
+
`third_party/omniroute-provider-source/extraction-manifest.json`, under `copiedFiles`, with
|
|
634
|
+
`modifications: "none"`.
|
|
635
|
+
|
|
636
|
+
WS-13 §5 permits a narrow, deliberate exception: a *pure helper* may be copied from the OmniRoute
|
|
637
|
+
provider corpus with clean per-file provenance. WS-13 §13's acceptance list then requires "notices
|
|
638
|
+
cover copied files". This register is that register. It is empty of code entries on purpose, and an
|
|
639
|
+
empty register is a stronger statement than a missing one: it says the exception has not been used,
|
|
640
|
+
rather than leaving a reader to guess.
|
|
641
|
+
|
|
642
|
+
If a future lane copies such a file, it appends an entry here naming the file, the upstream project,
|
|
643
|
+
the exact commit, the upstream path, and the licence — and the copy is not merged without it.
|
package/README.md
CHANGED
|
@@ -43,4 +43,10 @@ a patch.
|
|
|
43
43
|
|
|
44
44
|
MIT — see [`LICENSE`](./LICENSE), which ships in the published tarball.
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
This package's generated catalog data cites the Apache-2.0 licensed `xai-org/grok-build` as the
|
|
47
|
+
source for several xAI model-catalogue rows; that attribution is in [`NOTICE`](./NOTICE) — identical
|
|
48
|
+
to the [root `NOTICE`](../../NOTICE) — which ships in the tarball beside this file.
|
|
49
|
+
|
|
50
|
+
The separate OmniRoute-corpus extraction this package's catalog **data** is built from (no code
|
|
51
|
+
copied, two licence/notice files registered verbatim under `third_party/`) is documented in
|
|
52
|
+
[`PROVENANCE.md`](./PROVENANCE.md), which also ships in the tarball.
|
package/dist/extract/merge.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AdmissionTier, ModelFamilyDescriptor, ProviderProtocol, WinterCatalog, WinterModelDescriptor, WinterProviderDescriptor } from "../types.js";
|
|
1
|
+
import type { AdmissionTier, CapabilityEvidence, ModelFamilyDescriptor, ModelPricing, ProviderProtocol, WinterCatalog, WinterModelDescriptor, WinterProviderDescriptor } from "../types.js";
|
|
2
2
|
import type { ExclusionClass, LiteralValue, Rejection } from "./literal-extractor.js";
|
|
3
3
|
export interface AllowlistProviderRow {
|
|
4
4
|
upstreamId: string;
|
|
@@ -184,7 +184,15 @@ export declare function buildUpstreamLayer(input: BuildUpstreamLayerInput): Upst
|
|
|
184
184
|
/** Total, stable rejection ordering: a ledger diff between two upstream bumps must show CHANGES, not churn. */
|
|
185
185
|
export declare function compareRejections(a: LedgerRejection, b: LedgerRejection): number;
|
|
186
186
|
/** The overlay files a re-sync must NEVER write. Exported so the sync script's own guard and its test read the same list. */
|
|
187
|
-
export declare const OVERLAY_FILES: readonly ["overlay/providers.json", "overlay/models.json", "overlay/families.json"];
|
|
187
|
+
export declare const OVERLAY_FILES: readonly ["overlay/providers.json", "overlay/models.json", "overlay/families.json", "overlay/pricing.json"];
|
|
188
|
+
/** Exact provider/model price evidence. A price is not a model override: it must never erase fields extracted for the same row. */
|
|
189
|
+
export type ModelPricingPatches = Record<string, CapabilityEvidence<ModelPricing>>;
|
|
190
|
+
/**
|
|
191
|
+
* Applies the reviewed price-only overlay after a whole-row merge. The explicit unknown-key refusal
|
|
192
|
+
* makes a stale price row fail closed instead of becoming orphaned documentation after an upstream
|
|
193
|
+
* model rename.
|
|
194
|
+
*/
|
|
195
|
+
export declare function applyPricingPatches<T extends UnstampedModelDescriptor>(models: readonly T[], pricingPatches: Readonly<ModelPricingPatches>): T[];
|
|
188
196
|
/**
|
|
189
197
|
* The overlay-wins merge, mirroring `scripts/provider-catalog.ts`.
|
|
190
198
|
*
|
|
@@ -210,4 +218,4 @@ export declare function mergeLayers(upstream: {
|
|
|
210
218
|
}, overlay: {
|
|
211
219
|
providers: WinterProviderDescriptor[];
|
|
212
220
|
models: UnstampedModelDescriptor[];
|
|
213
|
-
}, pin: WinterCatalog["upstream"], families?: readonly ModelFamilyDescriptor[]): WinterCatalog;
|
|
221
|
+
}, pin: WinterCatalog["upstream"], families?: readonly ModelFamilyDescriptor[], pricingPatches?: Readonly<ModelPricingPatches>): WinterCatalog;
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export type { CapabilityEvidence, CatalogValidationResult, EvidenceConfidence, E
|
|
|
2
2
|
export { CATALOG_VOCABULARIES, scanForSecrets, validateCatalog } from "./validate.js";
|
|
3
3
|
export { CLAUDE_FAMILY_ID, CLAUDE_RESERVED_SLOT_NAMES, CURRENCY_RE, FAMILY_ID_RE, OTHER_FAMILY_ID, SLOT_NAME_RE, canonicalModelIdOf, familyIdOf, familyOfModelKey, isSlotServableRow, modelFamilyOf, resolveSlotName, rowsForCanonicalId, stampFamilyFields, } from "./families.js";
|
|
4
4
|
export type { SlotNameResolution } from "./families.js";
|
|
5
|
+
export { CATALOG_TAG_RENAMES } from "./tag-renames.js";
|
|
5
6
|
import type { WinterCatalog } from "./types.js";
|
|
6
7
|
/**
|
|
7
8
|
* The catalog compiled into this build.
|