@yanlinglabs/winter-provider-catalog 0.0.3 → 0.0.5

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/dist/index.js CHANGED
@@ -15936,6 +15936,110 @@ var catalog_default = {
15936
15936
  canonicalModelId: "hcx-007",
15937
15937
  modelFamily: "other"
15938
15938
  },
15939
+ {
15940
+ key: "codex-oauth/gpt-5.6-luna",
15941
+ providerId: "codex-oauth",
15942
+ upstreamId: "gpt-5.6-luna",
15943
+ displayName: "GPT-5.6 Luna (Codex)",
15944
+ aliases: [],
15945
+ endpoints: [
15946
+ "responses"
15947
+ ],
15948
+ contextWindow: {
15949
+ value: 272000,
15950
+ source: "upstream-static",
15951
+ sourceRef: "Norma packages/core/src/providers/codex-config.ts — CODEX_MODELS, a dated static set with its own drift guard",
15952
+ confidence: "declared",
15953
+ observedAt: "2026-09-11T00:00:00Z"
15954
+ },
15955
+ inputModalities: {
15956
+ value: [
15957
+ "text",
15958
+ "image"
15959
+ ],
15960
+ source: "upstream-static",
15961
+ sourceRef: "Norma codex-config.ts CODEX_MODELS supportsVision: true",
15962
+ confidence: "declared",
15963
+ observedAt: "2026-09-11T00:00:00Z"
15964
+ },
15965
+ outputModalities: {
15966
+ value: [
15967
+ "text"
15968
+ ],
15969
+ source: "winter-default",
15970
+ sourceRef: "WINTER DEFAULT: upstream declares no output modality for ANY model, so `text` is Winter's inference for a chat registry, NOT an upstream statement. Stamped `source: winter-default` — the `EvidenceSource` member added for exactly this — so a reader filtering evidence BY SOURCE does not get a Winter guess wearing an upstream label. See PROVENANCE.md.",
15971
+ confidence: "unknown",
15972
+ observedAt: "2026-09-11T00:00:00Z"
15973
+ },
15974
+ toolCalling: {
15975
+ value: "native",
15976
+ source: "upstream-static",
15977
+ confidence: "inferred",
15978
+ observedAt: "2026-09-11T00:00:00Z"
15979
+ },
15980
+ nativeTools: {
15981
+ value: true,
15982
+ source: "upstream-static",
15983
+ confidence: "inferred",
15984
+ observedAt: "2026-09-11T00:00:00Z"
15985
+ },
15986
+ reasoning: {
15987
+ supported: {
15988
+ value: true,
15989
+ source: "upstream-static",
15990
+ confidence: "inferred",
15991
+ observedAt: "2026-09-11T00:00:00Z"
15992
+ },
15993
+ efforts: [
15994
+ "low",
15995
+ "medium",
15996
+ "high"
15997
+ ],
15998
+ defaultEffort: "medium",
15999
+ continuation: "opaque-provider-state",
16000
+ readableState: {
16001
+ value: "summary",
16002
+ source: "official-doc",
16003
+ sourceRef: "continuity report §5.1 — the Responses surface returns a readable summary, never the raw chain",
16004
+ confidence: "declared",
16005
+ observedAt: "2026-09-11T00:00:00Z"
16006
+ },
16007
+ summaryRequest: {
16008
+ value: {
16009
+ field: "reasoning.summary",
16010
+ values: [
16011
+ "auto",
16012
+ "concise",
16013
+ "detailed"
16014
+ ]
16015
+ },
16016
+ source: "official-doc",
16017
+ sourceRef: 'continuity report §5.1 — the Responses surface\'s summary control and its current values `auto`/`concise`/`detailed`; the deprecated `generate_summary` alias is deliberately not listed. Same evidence as `openai/o4-mini` — the same field on the same wire shape — which is exactly why the DOMAIN still is not shared (§2.5). A `readableState: "summary"` claim with no way to REQUEST the summary is a capability nobody can use, so the two travel together.',
16018
+ confidence: "declared",
16019
+ observedAt: "2026-09-11T00:00:00Z"
16020
+ },
16021
+ completionEvent: {
16022
+ value: "response.completed",
16023
+ source: "upstream-static",
16024
+ sourceRef: "Norma packages/core/src/providers/responses-sse.ts — encrypted_content is preserved VERBATIM off the completion event",
16025
+ confidence: "declared",
16026
+ observedAt: "2026-09-11T00:00:00Z"
16027
+ },
16028
+ continuationDomain: {
16029
+ value: [
16030
+ "codex-oauth/gpt-5.6-luna"
16031
+ ],
16032
+ source: "official-doc",
16033
+ sourceRef: 'continuity report §5.1/§5.3 for own-state acceptance — the Responses surface replays its own completed `reasoning.encrypted_content` items to the same model, which is what Norma\'s shipped Codex adapter does verbatim off `response.completed` — and §2.5 for the narrowness: two endpoints can both use `/v1/responses` while issuing UNRELATED encrypted payloads, so this backend shares NO domain with `openai/*` despite the shared HTTP shape. WS-13 §8.2: "OpenAI-compatible" is never the capability test.',
16034
+ confidence: "declared",
16035
+ observedAt: "2026-09-11T00:00:00Z"
16036
+ }
16037
+ },
16038
+ unsupportedParameters: [],
16039
+ status: "candidate",
16040
+ canonicalModelId: "gpt-5.6-luna",
16041
+ modelFamily: "gpt"
16042
+ },
15939
16043
  {
15940
16044
  key: "codex-oauth/gpt-5.6-sol",
15941
16045
  providerId: "codex-oauth",
@@ -16040,6 +16144,110 @@ var catalog_default = {
16040
16144
  canonicalModelId: "gpt-5.6-sol",
16041
16145
  modelFamily: "gpt"
16042
16146
  },
16147
+ {
16148
+ key: "codex-oauth/gpt-5.6-terra",
16149
+ providerId: "codex-oauth",
16150
+ upstreamId: "gpt-5.6-terra",
16151
+ displayName: "GPT-5.6 Terra (Codex)",
16152
+ aliases: [],
16153
+ endpoints: [
16154
+ "responses"
16155
+ ],
16156
+ contextWindow: {
16157
+ value: 272000,
16158
+ source: "upstream-static",
16159
+ sourceRef: "Norma packages/core/src/providers/codex-config.ts — CODEX_MODELS, a dated static set with its own drift guard",
16160
+ confidence: "declared",
16161
+ observedAt: "2026-09-11T00:00:00Z"
16162
+ },
16163
+ inputModalities: {
16164
+ value: [
16165
+ "text",
16166
+ "image"
16167
+ ],
16168
+ source: "upstream-static",
16169
+ sourceRef: "Norma codex-config.ts CODEX_MODELS supportsVision: true",
16170
+ confidence: "declared",
16171
+ observedAt: "2026-09-11T00:00:00Z"
16172
+ },
16173
+ outputModalities: {
16174
+ value: [
16175
+ "text"
16176
+ ],
16177
+ source: "winter-default",
16178
+ sourceRef: "WINTER DEFAULT: upstream declares no output modality for ANY model, so `text` is Winter's inference for a chat registry, NOT an upstream statement. Stamped `source: winter-default` — the `EvidenceSource` member added for exactly this — so a reader filtering evidence BY SOURCE does not get a Winter guess wearing an upstream label. See PROVENANCE.md.",
16179
+ confidence: "unknown",
16180
+ observedAt: "2026-09-11T00:00:00Z"
16181
+ },
16182
+ toolCalling: {
16183
+ value: "native",
16184
+ source: "upstream-static",
16185
+ confidence: "inferred",
16186
+ observedAt: "2026-09-11T00:00:00Z"
16187
+ },
16188
+ nativeTools: {
16189
+ value: true,
16190
+ source: "upstream-static",
16191
+ confidence: "inferred",
16192
+ observedAt: "2026-09-11T00:00:00Z"
16193
+ },
16194
+ reasoning: {
16195
+ supported: {
16196
+ value: true,
16197
+ source: "upstream-static",
16198
+ confidence: "inferred",
16199
+ observedAt: "2026-09-11T00:00:00Z"
16200
+ },
16201
+ efforts: [
16202
+ "low",
16203
+ "medium",
16204
+ "high"
16205
+ ],
16206
+ defaultEffort: "medium",
16207
+ continuation: "opaque-provider-state",
16208
+ readableState: {
16209
+ value: "summary",
16210
+ source: "official-doc",
16211
+ sourceRef: "continuity report §5.1 — the Responses surface returns a readable summary, never the raw chain",
16212
+ confidence: "declared",
16213
+ observedAt: "2026-09-11T00:00:00Z"
16214
+ },
16215
+ summaryRequest: {
16216
+ value: {
16217
+ field: "reasoning.summary",
16218
+ values: [
16219
+ "auto",
16220
+ "concise",
16221
+ "detailed"
16222
+ ]
16223
+ },
16224
+ source: "official-doc",
16225
+ sourceRef: 'continuity report §5.1 — the Responses surface\'s summary control and its current values `auto`/`concise`/`detailed`; the deprecated `generate_summary` alias is deliberately not listed. Same evidence as `openai/o4-mini` — the same field on the same wire shape — which is exactly why the DOMAIN still is not shared (§2.5). A `readableState: "summary"` claim with no way to REQUEST the summary is a capability nobody can use, so the two travel together.',
16226
+ confidence: "declared",
16227
+ observedAt: "2026-09-11T00:00:00Z"
16228
+ },
16229
+ completionEvent: {
16230
+ value: "response.completed",
16231
+ source: "upstream-static",
16232
+ sourceRef: "Norma packages/core/src/providers/responses-sse.ts — encrypted_content is preserved VERBATIM off the completion event",
16233
+ confidence: "declared",
16234
+ observedAt: "2026-09-11T00:00:00Z"
16235
+ },
16236
+ continuationDomain: {
16237
+ value: [
16238
+ "codex-oauth/gpt-5.6-terra"
16239
+ ],
16240
+ source: "official-doc",
16241
+ sourceRef: 'continuity report §5.1/§5.3 for own-state acceptance — the Responses surface replays its own completed `reasoning.encrypted_content` items to the same model, which is what Norma\'s shipped Codex adapter does verbatim off `response.completed` — and §2.5 for the narrowness: two endpoints can both use `/v1/responses` while issuing UNRELATED encrypted payloads, so this backend shares NO domain with `openai/*` despite the shared HTTP shape. WS-13 §8.2: "OpenAI-compatible" is never the capability test.',
16242
+ confidence: "declared",
16243
+ observedAt: "2026-09-11T00:00:00Z"
16244
+ }
16245
+ },
16246
+ unsupportedParameters: [],
16247
+ status: "candidate",
16248
+ canonicalModelId: "gpt-5.6-terra",
16249
+ modelFamily: "gpt"
16250
+ },
16043
16251
  {
16044
16252
  key: "codex-oauth/gpt-6-astra",
16045
16253
  providerId: "codex-oauth",
@@ -15229,6 +15229,110 @@
15229
15229
  "canonicalModelId": "hcx-007",
15230
15230
  "modelFamily": "other"
15231
15231
  },
15232
+ {
15233
+ "key": "codex-oauth/gpt-5.6-luna",
15234
+ "providerId": "codex-oauth",
15235
+ "upstreamId": "gpt-5.6-luna",
15236
+ "displayName": "GPT-5.6 Luna (Codex)",
15237
+ "aliases": [],
15238
+ "endpoints": [
15239
+ "responses"
15240
+ ],
15241
+ "contextWindow": {
15242
+ "value": 272000,
15243
+ "source": "upstream-static",
15244
+ "sourceRef": "Norma packages/core/src/providers/codex-config.ts — CODEX_MODELS, a dated static set with its own drift guard",
15245
+ "confidence": "declared",
15246
+ "observedAt": "2026-09-11T00:00:00Z"
15247
+ },
15248
+ "inputModalities": {
15249
+ "value": [
15250
+ "text",
15251
+ "image"
15252
+ ],
15253
+ "source": "upstream-static",
15254
+ "sourceRef": "Norma codex-config.ts CODEX_MODELS supportsVision: true",
15255
+ "confidence": "declared",
15256
+ "observedAt": "2026-09-11T00:00:00Z"
15257
+ },
15258
+ "outputModalities": {
15259
+ "value": [
15260
+ "text"
15261
+ ],
15262
+ "source": "winter-default",
15263
+ "sourceRef": "WINTER DEFAULT: upstream declares no output modality for ANY model, so `text` is Winter's inference for a chat registry, NOT an upstream statement. Stamped `source: winter-default` — the `EvidenceSource` member added for exactly this — so a reader filtering evidence BY SOURCE does not get a Winter guess wearing an upstream label. See PROVENANCE.md.",
15264
+ "confidence": "unknown",
15265
+ "observedAt": "2026-09-11T00:00:00Z"
15266
+ },
15267
+ "toolCalling": {
15268
+ "value": "native",
15269
+ "source": "upstream-static",
15270
+ "confidence": "inferred",
15271
+ "observedAt": "2026-09-11T00:00:00Z"
15272
+ },
15273
+ "nativeTools": {
15274
+ "value": true,
15275
+ "source": "upstream-static",
15276
+ "confidence": "inferred",
15277
+ "observedAt": "2026-09-11T00:00:00Z"
15278
+ },
15279
+ "reasoning": {
15280
+ "supported": {
15281
+ "value": true,
15282
+ "source": "upstream-static",
15283
+ "confidence": "inferred",
15284
+ "observedAt": "2026-09-11T00:00:00Z"
15285
+ },
15286
+ "efforts": [
15287
+ "low",
15288
+ "medium",
15289
+ "high"
15290
+ ],
15291
+ "defaultEffort": "medium",
15292
+ "continuation": "opaque-provider-state",
15293
+ "readableState": {
15294
+ "value": "summary",
15295
+ "source": "official-doc",
15296
+ "sourceRef": "continuity report §5.1 — the Responses surface returns a readable summary, never the raw chain",
15297
+ "confidence": "declared",
15298
+ "observedAt": "2026-09-11T00:00:00Z"
15299
+ },
15300
+ "summaryRequest": {
15301
+ "value": {
15302
+ "field": "reasoning.summary",
15303
+ "values": [
15304
+ "auto",
15305
+ "concise",
15306
+ "detailed"
15307
+ ]
15308
+ },
15309
+ "source": "official-doc",
15310
+ "sourceRef": "continuity report §5.1 — the Responses surface's summary control and its current values `auto`/`concise`/`detailed`; the deprecated `generate_summary` alias is deliberately not listed. Same evidence as `openai/o4-mini` — the same field on the same wire shape — which is exactly why the DOMAIN still is not shared (§2.5). A `readableState: \"summary\"` claim with no way to REQUEST the summary is a capability nobody can use, so the two travel together.",
15311
+ "confidence": "declared",
15312
+ "observedAt": "2026-09-11T00:00:00Z"
15313
+ },
15314
+ "completionEvent": {
15315
+ "value": "response.completed",
15316
+ "source": "upstream-static",
15317
+ "sourceRef": "Norma packages/core/src/providers/responses-sse.ts — encrypted_content is preserved VERBATIM off the completion event",
15318
+ "confidence": "declared",
15319
+ "observedAt": "2026-09-11T00:00:00Z"
15320
+ },
15321
+ "continuationDomain": {
15322
+ "value": [
15323
+ "codex-oauth/gpt-5.6-luna"
15324
+ ],
15325
+ "source": "official-doc",
15326
+ "sourceRef": "continuity report §5.1/§5.3 for own-state acceptance — the Responses surface replays its own completed `reasoning.encrypted_content` items to the same model, which is what Norma's shipped Codex adapter does verbatim off `response.completed` — and §2.5 for the narrowness: two endpoints can both use `/v1/responses` while issuing UNRELATED encrypted payloads, so this backend shares NO domain with `openai/*` despite the shared HTTP shape. WS-13 §8.2: \"OpenAI-compatible\" is never the capability test.",
15327
+ "confidence": "declared",
15328
+ "observedAt": "2026-09-11T00:00:00Z"
15329
+ }
15330
+ },
15331
+ "unsupportedParameters": [],
15332
+ "status": "candidate",
15333
+ "canonicalModelId": "gpt-5.6-luna",
15334
+ "modelFamily": "gpt"
15335
+ },
15232
15336
  {
15233
15337
  "key": "codex-oauth/gpt-5.6-sol",
15234
15338
  "providerId": "codex-oauth",
@@ -15333,6 +15437,110 @@
15333
15437
  "canonicalModelId": "gpt-5.6-sol",
15334
15438
  "modelFamily": "gpt"
15335
15439
  },
15440
+ {
15441
+ "key": "codex-oauth/gpt-5.6-terra",
15442
+ "providerId": "codex-oauth",
15443
+ "upstreamId": "gpt-5.6-terra",
15444
+ "displayName": "GPT-5.6 Terra (Codex)",
15445
+ "aliases": [],
15446
+ "endpoints": [
15447
+ "responses"
15448
+ ],
15449
+ "contextWindow": {
15450
+ "value": 272000,
15451
+ "source": "upstream-static",
15452
+ "sourceRef": "Norma packages/core/src/providers/codex-config.ts — CODEX_MODELS, a dated static set with its own drift guard",
15453
+ "confidence": "declared",
15454
+ "observedAt": "2026-09-11T00:00:00Z"
15455
+ },
15456
+ "inputModalities": {
15457
+ "value": [
15458
+ "text",
15459
+ "image"
15460
+ ],
15461
+ "source": "upstream-static",
15462
+ "sourceRef": "Norma codex-config.ts CODEX_MODELS supportsVision: true",
15463
+ "confidence": "declared",
15464
+ "observedAt": "2026-09-11T00:00:00Z"
15465
+ },
15466
+ "outputModalities": {
15467
+ "value": [
15468
+ "text"
15469
+ ],
15470
+ "source": "winter-default",
15471
+ "sourceRef": "WINTER DEFAULT: upstream declares no output modality for ANY model, so `text` is Winter's inference for a chat registry, NOT an upstream statement. Stamped `source: winter-default` — the `EvidenceSource` member added for exactly this — so a reader filtering evidence BY SOURCE does not get a Winter guess wearing an upstream label. See PROVENANCE.md.",
15472
+ "confidence": "unknown",
15473
+ "observedAt": "2026-09-11T00:00:00Z"
15474
+ },
15475
+ "toolCalling": {
15476
+ "value": "native",
15477
+ "source": "upstream-static",
15478
+ "confidence": "inferred",
15479
+ "observedAt": "2026-09-11T00:00:00Z"
15480
+ },
15481
+ "nativeTools": {
15482
+ "value": true,
15483
+ "source": "upstream-static",
15484
+ "confidence": "inferred",
15485
+ "observedAt": "2026-09-11T00:00:00Z"
15486
+ },
15487
+ "reasoning": {
15488
+ "supported": {
15489
+ "value": true,
15490
+ "source": "upstream-static",
15491
+ "confidence": "inferred",
15492
+ "observedAt": "2026-09-11T00:00:00Z"
15493
+ },
15494
+ "efforts": [
15495
+ "low",
15496
+ "medium",
15497
+ "high"
15498
+ ],
15499
+ "defaultEffort": "medium",
15500
+ "continuation": "opaque-provider-state",
15501
+ "readableState": {
15502
+ "value": "summary",
15503
+ "source": "official-doc",
15504
+ "sourceRef": "continuity report §5.1 — the Responses surface returns a readable summary, never the raw chain",
15505
+ "confidence": "declared",
15506
+ "observedAt": "2026-09-11T00:00:00Z"
15507
+ },
15508
+ "summaryRequest": {
15509
+ "value": {
15510
+ "field": "reasoning.summary",
15511
+ "values": [
15512
+ "auto",
15513
+ "concise",
15514
+ "detailed"
15515
+ ]
15516
+ },
15517
+ "source": "official-doc",
15518
+ "sourceRef": "continuity report §5.1 — the Responses surface's summary control and its current values `auto`/`concise`/`detailed`; the deprecated `generate_summary` alias is deliberately not listed. Same evidence as `openai/o4-mini` — the same field on the same wire shape — which is exactly why the DOMAIN still is not shared (§2.5). A `readableState: \"summary\"` claim with no way to REQUEST the summary is a capability nobody can use, so the two travel together.",
15519
+ "confidence": "declared",
15520
+ "observedAt": "2026-09-11T00:00:00Z"
15521
+ },
15522
+ "completionEvent": {
15523
+ "value": "response.completed",
15524
+ "source": "upstream-static",
15525
+ "sourceRef": "Norma packages/core/src/providers/responses-sse.ts — encrypted_content is preserved VERBATIM off the completion event",
15526
+ "confidence": "declared",
15527
+ "observedAt": "2026-09-11T00:00:00Z"
15528
+ },
15529
+ "continuationDomain": {
15530
+ "value": [
15531
+ "codex-oauth/gpt-5.6-terra"
15532
+ ],
15533
+ "source": "official-doc",
15534
+ "sourceRef": "continuity report §5.1/§5.3 for own-state acceptance — the Responses surface replays its own completed `reasoning.encrypted_content` items to the same model, which is what Norma's shipped Codex adapter does verbatim off `response.completed` — and §2.5 for the narrowness: two endpoints can both use `/v1/responses` while issuing UNRELATED encrypted payloads, so this backend shares NO domain with `openai/*` despite the shared HTTP shape. WS-13 §8.2: \"OpenAI-compatible\" is never the capability test.",
15535
+ "confidence": "declared",
15536
+ "observedAt": "2026-09-11T00:00:00Z"
15537
+ }
15538
+ },
15539
+ "unsupportedParameters": [],
15540
+ "status": "candidate",
15541
+ "canonicalModelId": "gpt-5.6-terra",
15542
+ "modelFamily": "gpt"
15543
+ },
15336
15544
  {
15337
15545
  "key": "codex-oauth/gpt-6-astra",
15338
15546
  "providerId": "codex-oauth",
@@ -952,6 +952,212 @@
952
952
  "unsupportedParameters": [],
953
953
  "status": "candidate"
954
954
  },
955
+ {
956
+ "key": "codex-oauth/gpt-5.6-terra",
957
+ "providerId": "codex-oauth",
958
+ "upstreamId": "gpt-5.6-terra",
959
+ "displayName": "GPT-5.6 Terra (Codex)",
960
+ "aliases": [],
961
+ "$comment": "Winter-owned (D11), authored 2026-09-11 (SDK 0.0.4, Winter 8b). WHY THE ROW EXISTS: the `gpt` family's `terra` SLOT names `canonicalModelId: \"gpt-5.6-terra\"` and `overlay/families.json`'s gpt row leads `vendorProviders` with `codex-oauth` (a configured subscription's marginal cost is zero, WS-13c §4 step 3-i), so on a Codex-only install that slot resolved to `codex-oauth/gpt-5.6-terra` — a key the catalog did not carry, which is a typed `unknown-model` refusal rather than a fallback. EVIDENCE THAT THE CODEX BACKEND SERVES IT: Norma's shipped Codex adapter declares `gpt-5.6-sol`, `gpt-5.6-terra` and `gpt-5.6-luna` as the ONLY user-selectable Codex models (packages/core/src/providers/codex-config.ts, `CODEX_MODELS`, each with `contextWindow: 272_000` and `supportsVision: true`; `CODEX_MODELS_VERIFIED = \"2026-07-31\"` records the date that static set was last checked against the live `/models` catalogue), and Norma's engine leg serves them today — the sibling `codex-oauth/gpt-5.6-sol` row already in this file cites exactly the same source. EVERY OTHER FIELD IS COPIED VERBATIM from that sibling: same backend, same adapter, same Responses dialect, same efforts. The ONE exception is `continuationDomain`, which names THIS key alone — §2.5's narrowness rule (two endpoints can both use `/v1/responses` while issuing UNRELATED encrypted payloads), so this row shares no domain with `openai/gpt-5.6-terra` despite the shared HTTP shape. Like every codex-oauth row it is deliberately UNPRICED — a subscription backend has no per-token list price (`pricingBasis: subscription` on the provider), so `maxBudgetUsd` is inert for it by design; the metered per-token rates belong to the separate `openai/gpt-5.6-terra` row. `status: candidate` — only the live gate promotes.",
962
+ "endpoints": [
963
+ "responses"
964
+ ],
965
+ "contextWindow": {
966
+ "value": 272000,
967
+ "source": "upstream-static",
968
+ "sourceRef": "Norma packages/core/src/providers/codex-config.ts — CODEX_MODELS, a dated static set with its own drift guard",
969
+ "confidence": "declared",
970
+ "observedAt": "2026-09-11T00:00:00Z"
971
+ },
972
+ "inputModalities": {
973
+ "value": [
974
+ "text",
975
+ "image"
976
+ ],
977
+ "source": "upstream-static",
978
+ "sourceRef": "Norma codex-config.ts CODEX_MODELS supportsVision: true",
979
+ "confidence": "declared",
980
+ "observedAt": "2026-09-11T00:00:00Z"
981
+ },
982
+ "outputModalities": {
983
+ "value": [
984
+ "text"
985
+ ],
986
+ "source": "winter-default",
987
+ "sourceRef": "WINTER DEFAULT: upstream declares no output modality for ANY model, so `text` is Winter's inference for a chat registry, NOT an upstream statement. Stamped `source: winter-default` — the `EvidenceSource` member added for exactly this — so a reader filtering evidence BY SOURCE does not get a Winter guess wearing an upstream label. See PROVENANCE.md.",
988
+ "confidence": "unknown",
989
+ "observedAt": "2026-09-11T00:00:00Z"
990
+ },
991
+ "toolCalling": {
992
+ "value": "native",
993
+ "source": "upstream-static",
994
+ "confidence": "inferred",
995
+ "observedAt": "2026-09-11T00:00:00Z"
996
+ },
997
+ "nativeTools": {
998
+ "value": true,
999
+ "source": "upstream-static",
1000
+ "confidence": "inferred",
1001
+ "observedAt": "2026-09-11T00:00:00Z"
1002
+ },
1003
+ "reasoning": {
1004
+ "supported": {
1005
+ "value": true,
1006
+ "source": "upstream-static",
1007
+ "confidence": "inferred",
1008
+ "observedAt": "2026-09-11T00:00:00Z"
1009
+ },
1010
+ "efforts": [
1011
+ "low",
1012
+ "medium",
1013
+ "high"
1014
+ ],
1015
+ "defaultEffort": "medium",
1016
+ "continuation": "opaque-provider-state",
1017
+ "readableState": {
1018
+ "value": "summary",
1019
+ "source": "official-doc",
1020
+ "sourceRef": "continuity report §5.1 — the Responses surface returns a readable summary, never the raw chain",
1021
+ "confidence": "declared",
1022
+ "observedAt": "2026-09-11T00:00:00Z"
1023
+ },
1024
+ "summaryRequest": {
1025
+ "value": {
1026
+ "field": "reasoning.summary",
1027
+ "values": [
1028
+ "auto",
1029
+ "concise",
1030
+ "detailed"
1031
+ ]
1032
+ },
1033
+ "source": "official-doc",
1034
+ "sourceRef": "continuity report §5.1 — the Responses surface's summary control and its current values `auto`/`concise`/`detailed`; the deprecated `generate_summary` alias is deliberately not listed. Same evidence as `openai/o4-mini` — the same field on the same wire shape — which is exactly why the DOMAIN still is not shared (§2.5). A `readableState: \"summary\"` claim with no way to REQUEST the summary is a capability nobody can use, so the two travel together.",
1035
+ "confidence": "declared",
1036
+ "observedAt": "2026-09-11T00:00:00Z"
1037
+ },
1038
+ "completionEvent": {
1039
+ "value": "response.completed",
1040
+ "source": "upstream-static",
1041
+ "sourceRef": "Norma packages/core/src/providers/responses-sse.ts — encrypted_content is preserved VERBATIM off the completion event",
1042
+ "confidence": "declared",
1043
+ "observedAt": "2026-09-11T00:00:00Z"
1044
+ },
1045
+ "continuationDomain": {
1046
+ "value": [
1047
+ "codex-oauth/gpt-5.6-terra"
1048
+ ],
1049
+ "source": "official-doc",
1050
+ "sourceRef": "continuity report §5.1/§5.3 for own-state acceptance — the Responses surface replays its own completed `reasoning.encrypted_content` items to the same model, which is what Norma's shipped Codex adapter does verbatim off `response.completed` — and §2.5 for the narrowness: two endpoints can both use `/v1/responses` while issuing UNRELATED encrypted payloads, so this backend shares NO domain with `openai/*` despite the shared HTTP shape. WS-13 §8.2: \"OpenAI-compatible\" is never the capability test.",
1051
+ "confidence": "declared",
1052
+ "observedAt": "2026-09-11T00:00:00Z"
1053
+ }
1054
+ },
1055
+ "unsupportedParameters": [],
1056
+ "status": "candidate"
1057
+ },
1058
+ {
1059
+ "key": "codex-oauth/gpt-5.6-luna",
1060
+ "providerId": "codex-oauth",
1061
+ "upstreamId": "gpt-5.6-luna",
1062
+ "displayName": "GPT-5.6 Luna (Codex)",
1063
+ "aliases": [],
1064
+ "$comment": "Winter-owned (D11), authored 2026-09-11 (SDK 0.0.4, Winter 8b). WHY THE ROW EXISTS: the `gpt` family's `luna` SLOT names `canonicalModelId: \"gpt-5.6-luna\"` and `overlay/families.json`'s gpt row leads `vendorProviders` with `codex-oauth` (a configured subscription's marginal cost is zero, WS-13c §4 step 3-i), so on a Codex-only install that slot resolved to `codex-oauth/gpt-5.6-luna` — a key the catalog did not carry, which is a typed `unknown-model` refusal rather than a fallback. EVIDENCE THAT THE CODEX BACKEND SERVES IT: Norma's shipped Codex adapter declares `gpt-5.6-sol`, `gpt-5.6-terra` and `gpt-5.6-luna` as the ONLY user-selectable Codex models (packages/core/src/providers/codex-config.ts, `CODEX_MODELS`, each with `contextWindow: 272_000` and `supportsVision: true`; `CODEX_MODELS_VERIFIED = \"2026-07-31\"` records the date that static set was last checked against the live `/models` catalogue), and Norma's engine leg serves them today — the sibling `codex-oauth/gpt-5.6-sol` row already in this file cites exactly the same source. EVERY OTHER FIELD IS COPIED VERBATIM from that sibling: same backend, same adapter, same Responses dialect, same efforts. The ONE exception is `continuationDomain`, which names THIS key alone — §2.5's narrowness rule (two endpoints can both use `/v1/responses` while issuing UNRELATED encrypted payloads), so this row shares no domain with `openai/gpt-5.6-luna` despite the shared HTTP shape. Like every codex-oauth row it is deliberately UNPRICED — a subscription backend has no per-token list price (`pricingBasis: subscription` on the provider), so `maxBudgetUsd` is inert for it by design; the metered per-token rates belong to the separate `openai/gpt-5.6-luna` row. `status: candidate` — only the live gate promotes.",
1065
+ "endpoints": [
1066
+ "responses"
1067
+ ],
1068
+ "contextWindow": {
1069
+ "value": 272000,
1070
+ "source": "upstream-static",
1071
+ "sourceRef": "Norma packages/core/src/providers/codex-config.ts — CODEX_MODELS, a dated static set with its own drift guard",
1072
+ "confidence": "declared",
1073
+ "observedAt": "2026-09-11T00:00:00Z"
1074
+ },
1075
+ "inputModalities": {
1076
+ "value": [
1077
+ "text",
1078
+ "image"
1079
+ ],
1080
+ "source": "upstream-static",
1081
+ "sourceRef": "Norma codex-config.ts CODEX_MODELS supportsVision: true",
1082
+ "confidence": "declared",
1083
+ "observedAt": "2026-09-11T00:00:00Z"
1084
+ },
1085
+ "outputModalities": {
1086
+ "value": [
1087
+ "text"
1088
+ ],
1089
+ "source": "winter-default",
1090
+ "sourceRef": "WINTER DEFAULT: upstream declares no output modality for ANY model, so `text` is Winter's inference for a chat registry, NOT an upstream statement. Stamped `source: winter-default` — the `EvidenceSource` member added for exactly this — so a reader filtering evidence BY SOURCE does not get a Winter guess wearing an upstream label. See PROVENANCE.md.",
1091
+ "confidence": "unknown",
1092
+ "observedAt": "2026-09-11T00:00:00Z"
1093
+ },
1094
+ "toolCalling": {
1095
+ "value": "native",
1096
+ "source": "upstream-static",
1097
+ "confidence": "inferred",
1098
+ "observedAt": "2026-09-11T00:00:00Z"
1099
+ },
1100
+ "nativeTools": {
1101
+ "value": true,
1102
+ "source": "upstream-static",
1103
+ "confidence": "inferred",
1104
+ "observedAt": "2026-09-11T00:00:00Z"
1105
+ },
1106
+ "reasoning": {
1107
+ "supported": {
1108
+ "value": true,
1109
+ "source": "upstream-static",
1110
+ "confidence": "inferred",
1111
+ "observedAt": "2026-09-11T00:00:00Z"
1112
+ },
1113
+ "efforts": [
1114
+ "low",
1115
+ "medium",
1116
+ "high"
1117
+ ],
1118
+ "defaultEffort": "medium",
1119
+ "continuation": "opaque-provider-state",
1120
+ "readableState": {
1121
+ "value": "summary",
1122
+ "source": "official-doc",
1123
+ "sourceRef": "continuity report §5.1 — the Responses surface returns a readable summary, never the raw chain",
1124
+ "confidence": "declared",
1125
+ "observedAt": "2026-09-11T00:00:00Z"
1126
+ },
1127
+ "summaryRequest": {
1128
+ "value": {
1129
+ "field": "reasoning.summary",
1130
+ "values": [
1131
+ "auto",
1132
+ "concise",
1133
+ "detailed"
1134
+ ]
1135
+ },
1136
+ "source": "official-doc",
1137
+ "sourceRef": "continuity report §5.1 — the Responses surface's summary control and its current values `auto`/`concise`/`detailed`; the deprecated `generate_summary` alias is deliberately not listed. Same evidence as `openai/o4-mini` — the same field on the same wire shape — which is exactly why the DOMAIN still is not shared (§2.5). A `readableState: \"summary\"` claim with no way to REQUEST the summary is a capability nobody can use, so the two travel together.",
1138
+ "confidence": "declared",
1139
+ "observedAt": "2026-09-11T00:00:00Z"
1140
+ },
1141
+ "completionEvent": {
1142
+ "value": "response.completed",
1143
+ "source": "upstream-static",
1144
+ "sourceRef": "Norma packages/core/src/providers/responses-sse.ts — encrypted_content is preserved VERBATIM off the completion event",
1145
+ "confidence": "declared",
1146
+ "observedAt": "2026-09-11T00:00:00Z"
1147
+ },
1148
+ "continuationDomain": {
1149
+ "value": [
1150
+ "codex-oauth/gpt-5.6-luna"
1151
+ ],
1152
+ "source": "official-doc",
1153
+ "sourceRef": "continuity report §5.1/§5.3 for own-state acceptance — the Responses surface replays its own completed `reasoning.encrypted_content` items to the same model, which is what Norma's shipped Codex adapter does verbatim off `response.completed` — and §2.5 for the narrowness: two endpoints can both use `/v1/responses` while issuing UNRELATED encrypted payloads, so this backend shares NO domain with `openai/*` despite the shared HTTP shape. WS-13 §8.2: \"OpenAI-compatible\" is never the capability test.",
1154
+ "confidence": "declared",
1155
+ "observedAt": "2026-09-11T00:00:00Z"
1156
+ }
1157
+ },
1158
+ "unsupportedParameters": [],
1159
+ "status": "candidate"
1160
+ },
955
1161
  {
956
1162
  "key": "deepseek-anthropic/deepseek-reasoner",
957
1163
  "providerId": "deepseek-anthropic",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yanlinglabs/winter-provider-catalog",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "engines": {