@yanlinglabs/winter-provider-catalog 0.0.20 → 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.
@@ -1430,7 +1430,7 @@
1430
1430
  "exclusionClass": "not-allowlisted",
1431
1431
  "path": "azure-ai",
1432
1432
  "sourcePath": "src/shared/constants/providers/apikey/index.ts",
1433
- "reason": "endpoint not derivable — WS-13b §2 (round-1 finding I-1, list (b)): Azure AI Foundry has a real, documented public API, but its base URL is a PER-TENANT TEMPLATE (`https://<resource>.services.ai.azure.com/openai/v1/` or `https://<resource>.openai.azure.com/openai/v1/` — the operator's own resource name), not a fixed host. `defaultEndpoints.api` is immutable generated data (R6-11) and a template is not an endpoint, so an overlay row here would be the exact failure this lane's own endpoint rule exists to prevent — a row that validates and cannot serve a turn. Docs: https://learn.microsoft.com/azure/ai-foundry. RULING (round 1): a dedicated host-supplied-endpoint adapter shape, of the kind `azure-openai` already has, is a SPINE item for the fix wave; this id is admissible the day it exists."
1433
+ "reason": "the EXTRACTION is refused and the provider SHIPS as a reviewed PER-TENANT overlay row — WS-13b §2/§10, P7a. Its upstream entry is built by a helper CALL the literal extractor will not evaluate, so the pinned tree yields no endpoint, auth or executor for it. P6.5 additionally refused it as `endpoint-not-derivable`: Azure AI Foundry has a real, documented public API, but its base URL is a PER-TENANT TEMPLATE (`https://<resource>.services.ai.azure.com/openai/v1/` or `https://<resource>.openai.azure.com/openai/v1/` — the operator's own resource name), not a fixed host, and `defaultEndpoints.api` is immutable generated data (R6-11). THAT REFUSAL IS DISCHARGED (user ruling, WS-13b §10, 2026-09-06): the row ships with `requiresUserEndpoint: true` and NO endpoint at all, the template moves to `endpointTemplate` where it is documentation rather than data, and the host supplies the real base URL — so the row no longer validates-and-cannot-serve; it refuses with a typed `endpoint-required` until a host names its tenant. Docs: https://learn.microsoft.com/azure/ai-foundry. Named here so this id carries a ruling of its own rather than falling back to the generic `not-allowlisted` class — the same cross-reference `aihorde`, `arcee-ai` and `cline` carry."
1434
1434
  },
1435
1435
  {
1436
1436
  "upstreamId": "azure-openai",
@@ -2168,6 +2168,14 @@
2168
2168
  "sourcePath": "open-sse/config/providers/registry/deepseek/index.ts",
2169
2169
  "reason": "provider request headers carry client-identity mirroring (vendor CLI user-agents, beta flags, stainless versions) — WS-13 §5: never imported; Winter adapters author their own"
2170
2170
  },
2171
+ {
2172
+ "upstreamId": "deepseek",
2173
+ "scope": "model",
2174
+ "exclusionClass": "out-of-scope",
2175
+ "path": "deepseek.models[deepseek-v4-flash]",
2176
+ "sourcePath": "open-sse/config/providers/registry/deepseek/index.ts",
2177
+ "reason": "reviewed model exclusion: DeepSeek's current official Models & Pricing page calls the current V4.1 Flash wire id `deepseek-flash`; it says legacy `deepseek-v4-flash` is temporarily routed to that model. Winter ships the documented canonical id as an overlay row with the legacy id retained as its provider-local alias, rather than exposing two model rows for one routed backend. See https://api-docs.deepseek.com/quick_start/pricing/ (retrieved 2026-09-19)."
2178
+ },
2171
2179
  {
2172
2180
  "upstreamId": "deepseek",
2173
2181
  "scope": "field",
@@ -4022,7 +4030,7 @@
4022
4030
  "exclusionClass": "not-allowlisted",
4023
4031
  "path": "oci",
4024
4032
  "sourcePath": "src/shared/constants/providers/apikey/index.ts",
4025
- "reason": "endpoint not derivable — WS-13b §2 (round-1 finding I-1, list (b)): OCI Generative AI has a real, documented public API, but its base URL is a PER-TENANT TEMPLATE (`https://inference.generativeai.<region>.oci.oraclecloud.com/openai/v1/` — the operator's own region), not a fixed host. `defaultEndpoints.api` is immutable generated data (R6-11) and a template is not an endpoint, so an overlay row here would be the exact failure this lane's own endpoint rule exists to prevent — a row that validates and cannot serve a turn. Docs: https://www.oracle.com/artificial-intelligence/generative-ai. RULING (round 1): a dedicated host-supplied-endpoint adapter shape, of the kind `azure-openai` already has, is a SPINE item for the fix wave; this id is admissible the day it exists."
4033
+ "reason": "the EXTRACTION is refused and the provider SHIPS as a reviewed PER-TENANT overlay row — WS-13b §2/§10, P7a. Its upstream entry is built by a helper CALL the literal extractor will not evaluate, so the pinned tree yields no endpoint, auth or executor for it. P6.5 additionally refused it as `endpoint-not-derivable`: OCI Generative AI has a real, documented public API, but its base URL is a PER-TENANT TEMPLATE (`https://inference.generativeai.<region>.oci.oraclecloud.com/openai/v1/` — the operator's own region), not a fixed host, and `defaultEndpoints.api` is immutable generated data (R6-11). THAT REFUSAL IS DISCHARGED (user ruling, WS-13b §10, 2026-09-06): the row ships with `requiresUserEndpoint: true` and NO endpoint at all, the template moves to `endpointTemplate` where it is documentation rather than data, and the host supplies the real base URL — so the row no longer validates-and-cannot-serve; it refuses with a typed `endpoint-required` until a host names its region. Docs: https://www.oracle.com/artificial-intelligence/generative-ai. Named here so this id carries a ruling of its own rather than falling back to the generic `not-allowlisted` class — the same cross-reference `aihorde`, `arcee-ai` and `cline` carry."
4026
4034
  },
4027
4035
  {
4028
4036
  "upstreamId": "ofoxai",
@@ -5670,7 +5678,7 @@
5670
5678
  "exclusionClass": "reviewed-normalization",
5671
5679
  "path": "zai.name",
5672
5680
  "sourcePath": "src/shared/constants/providers/apikey/index.ts",
5673
- "reason": "upstream's product catalog names this vendor \"Z.AI\", which R6b-5 makes AMBIGUOUS: the vendor documents two dialects, Winter ships them as two rows, and one name cannot tell them apart in a picker. Winter records \"Z.AI GLM Coding (Anthropic dialect)\" — the same name plus the dialect, which is what R6b-5 asks for."
5681
+ "reason": "upstream's product catalog names this vendor \"Z.AI\", which R6b-5 makes AMBIGUOUS: the vendor documents two dialects, Winter ships them as two rows, and one name cannot tell them apart in a picker. Winter records \"Z.AI API (Anthropic dialect)\" — the same name plus the dialect, which is what R6b-5 asks for."
5674
5682
  },
5675
5683
  {
5676
5684
  "upstreamId": "zai-web",
@@ -2637,7 +2637,7 @@
2637
2637
  ]
2638
2638
  },
2639
2639
  "scope": "llm",
2640
- "pricingBasis": "token",
2640
+ "pricingBasis": "free",
2641
2641
  "admission": {
2642
2642
  "basis": "api-key",
2643
2643
  "citation": "https://build.nvidia.com — the vendor's own site as OmniRoute's product catalog records it at 5458026 (src/shared/constants/providers/apikey/*.ts, blob-pinned in extraction-manifest.json). The api-key path is attested by the pinned RegistryEntry: authType \"apikey\", OpenAI Chat Completions at https://integrate.api.nvidia.com/v1. EVIDENCE TIER: pinned-upstream, NOT a page this lane fetched and read — see PROVENANCE.md \"Two tiers of admission citation\".",
@@ -3981,7 +3981,7 @@
3981
3981
  },
3982
3982
  {
3983
3983
  "id": "zai-anthropic",
3984
- "displayName": "Z.AI GLM Coding (Anthropic dialect)",
3984
+ "displayName": "Z.AI API (Anthropic dialect)",
3985
3985
  "protocols": [
3986
3986
  "anthropic-messages"
3987
3987
  ],
@@ -13155,80 +13155,6 @@
13155
13155
  "unsupportedParameters": [],
13156
13156
  "status": "candidate"
13157
13157
  },
13158
- {
13159
- "key": "deepseek/deepseek-v4-flash",
13160
- "providerId": "deepseek",
13161
- "upstreamId": "deepseek-v4-flash",
13162
- "displayName": "DeepSeek V4 Flash (0731)",
13163
- "aliases": [],
13164
- "endpoints": [
13165
- "responses"
13166
- ],
13167
- "contextWindow": {
13168
- "value": 1000000,
13169
- "source": "upstream-static",
13170
- "sourceRef": "open-sse/config/providers/registry/deepseek/index.ts#deepseek-v4-flash",
13171
- "observedAt": "2026-09-05T00:00:00Z",
13172
- "confidence": "inferred"
13173
- },
13174
- "maxOutputTokens": {
13175
- "value": 384000,
13176
- "source": "upstream-static",
13177
- "sourceRef": "open-sse/config/providers/registry/deepseek/index.ts#deepseek-v4-flash",
13178
- "observedAt": "2026-09-05T00:00:00Z",
13179
- "confidence": "inferred"
13180
- },
13181
- "inputModalities": {
13182
- "value": [
13183
- "text"
13184
- ],
13185
- "source": "upstream-static",
13186
- "sourceRef": "open-sse/config/providers/registry/deepseek/index.ts#deepseek-v4-flash",
13187
- "observedAt": "2026-09-05T00:00:00Z",
13188
- "confidence": "inferred"
13189
- },
13190
- "outputModalities": {
13191
- "value": [
13192
- "text"
13193
- ],
13194
- "source": "winter-default",
13195
- "sourceRef": "open-sse/config/providers/registry/deepseek/index.ts#deepseek-v4-flash — WINTER DEFAULT: upstream declares no output modality for any model; \"text\" is Winter's inference for a chat registry, NOT an upstream statement",
13196
- "observedAt": "2026-09-05T00:00:00Z",
13197
- "confidence": "unknown"
13198
- },
13199
- "toolCalling": {
13200
- "value": "native",
13201
- "source": "upstream-static",
13202
- "sourceRef": "open-sse/config/providers/registry/deepseek/index.ts#deepseek-v4-flash",
13203
- "observedAt": "2026-09-05T00:00:00Z",
13204
- "confidence": "inferred"
13205
- },
13206
- "nativeTools": {
13207
- "value": true,
13208
- "source": "upstream-static",
13209
- "sourceRef": "open-sse/config/providers/registry/deepseek/index.ts#deepseek-v4-flash",
13210
- "observedAt": "2026-09-05T00:00:00Z",
13211
- "confidence": "inferred"
13212
- },
13213
- "reasoning": {
13214
- "supported": {
13215
- "value": true,
13216
- "source": "upstream-static",
13217
- "sourceRef": "open-sse/config/providers/registry/deepseek/index.ts#deepseek-v4-flash",
13218
- "observedAt": "2026-09-05T00:00:00Z",
13219
- "confidence": "inferred"
13220
- },
13221
- "efforts": [
13222
- "none",
13223
- "low",
13224
- "high",
13225
- "max"
13226
- ],
13227
- "continuation": "none"
13228
- },
13229
- "unsupportedParameters": [],
13230
- "status": "candidate"
13231
- },
13232
13158
  {
13233
13159
  "key": "deepseek/deepseek-v4-pro",
13234
13160
  "providerId": "deepseek",
@@ -32775,7 +32701,7 @@
32775
32701
  "exclusionClass": "not-allowlisted",
32776
32702
  "path": "azure-ai",
32777
32703
  "sourcePath": "src/shared/constants/providers/apikey/index.ts",
32778
- "reason": "endpoint not derivable — WS-13b §2 (round-1 finding I-1, list (b)): Azure AI Foundry has a real, documented public API, but its base URL is a PER-TENANT TEMPLATE (`https://<resource>.services.ai.azure.com/openai/v1/` or `https://<resource>.openai.azure.com/openai/v1/` — the operator's own resource name), not a fixed host. `defaultEndpoints.api` is immutable generated data (R6-11) and a template is not an endpoint, so an overlay row here would be the exact failure this lane's own endpoint rule exists to prevent — a row that validates and cannot serve a turn. Docs: https://learn.microsoft.com/azure/ai-foundry. RULING (round 1): a dedicated host-supplied-endpoint adapter shape, of the kind `azure-openai` already has, is a SPINE item for the fix wave; this id is admissible the day it exists."
32704
+ "reason": "the EXTRACTION is refused and the provider SHIPS as a reviewed PER-TENANT overlay row — WS-13b §2/§10, P7a. Its upstream entry is built by a helper CALL the literal extractor will not evaluate, so the pinned tree yields no endpoint, auth or executor for it. P6.5 additionally refused it as `endpoint-not-derivable`: Azure AI Foundry has a real, documented public API, but its base URL is a PER-TENANT TEMPLATE (`https://<resource>.services.ai.azure.com/openai/v1/` or `https://<resource>.openai.azure.com/openai/v1/` — the operator's own resource name), not a fixed host, and `defaultEndpoints.api` is immutable generated data (R6-11). THAT REFUSAL IS DISCHARGED (user ruling, WS-13b §10, 2026-09-06): the row ships with `requiresUserEndpoint: true` and NO endpoint at all, the template moves to `endpointTemplate` where it is documentation rather than data, and the host supplies the real base URL — so the row no longer validates-and-cannot-serve; it refuses with a typed `endpoint-required` until a host names its tenant. Docs: https://learn.microsoft.com/azure/ai-foundry. Named here so this id carries a ruling of its own rather than falling back to the generic `not-allowlisted` class — the same cross-reference `aihorde`, `arcee-ai` and `cline` carry."
32779
32705
  },
32780
32706
  {
32781
32707
  "upstreamId": "azure-openai",
@@ -33513,6 +33439,14 @@
33513
33439
  "sourcePath": "open-sse/config/providers/registry/deepseek/index.ts",
33514
33440
  "reason": "provider request headers carry client-identity mirroring (vendor CLI user-agents, beta flags, stainless versions) — WS-13 §5: never imported; Winter adapters author their own"
33515
33441
  },
33442
+ {
33443
+ "upstreamId": "deepseek",
33444
+ "scope": "model",
33445
+ "exclusionClass": "out-of-scope",
33446
+ "path": "deepseek.models[deepseek-v4-flash]",
33447
+ "sourcePath": "open-sse/config/providers/registry/deepseek/index.ts",
33448
+ "reason": "reviewed model exclusion: DeepSeek's current official Models & Pricing page calls the current V4.1 Flash wire id `deepseek-flash`; it says legacy `deepseek-v4-flash` is temporarily routed to that model. Winter ships the documented canonical id as an overlay row with the legacy id retained as its provider-local alias, rather than exposing two model rows for one routed backend. See https://api-docs.deepseek.com/quick_start/pricing/ (retrieved 2026-09-19)."
33449
+ },
33516
33450
  {
33517
33451
  "upstreamId": "deepseek",
33518
33452
  "scope": "field",
@@ -35367,7 +35301,7 @@
35367
35301
  "exclusionClass": "not-allowlisted",
35368
35302
  "path": "oci",
35369
35303
  "sourcePath": "src/shared/constants/providers/apikey/index.ts",
35370
- "reason": "endpoint not derivable — WS-13b §2 (round-1 finding I-1, list (b)): OCI Generative AI has a real, documented public API, but its base URL is a PER-TENANT TEMPLATE (`https://inference.generativeai.<region>.oci.oraclecloud.com/openai/v1/` — the operator's own region), not a fixed host. `defaultEndpoints.api` is immutable generated data (R6-11) and a template is not an endpoint, so an overlay row here would be the exact failure this lane's own endpoint rule exists to prevent — a row that validates and cannot serve a turn. Docs: https://www.oracle.com/artificial-intelligence/generative-ai. RULING (round 1): a dedicated host-supplied-endpoint adapter shape, of the kind `azure-openai` already has, is a SPINE item for the fix wave; this id is admissible the day it exists."
35304
+ "reason": "the EXTRACTION is refused and the provider SHIPS as a reviewed PER-TENANT overlay row — WS-13b §2/§10, P7a. Its upstream entry is built by a helper CALL the literal extractor will not evaluate, so the pinned tree yields no endpoint, auth or executor for it. P6.5 additionally refused it as `endpoint-not-derivable`: OCI Generative AI has a real, documented public API, but its base URL is a PER-TENANT TEMPLATE (`https://inference.generativeai.<region>.oci.oraclecloud.com/openai/v1/` — the operator's own region), not a fixed host, and `defaultEndpoints.api` is immutable generated data (R6-11). THAT REFUSAL IS DISCHARGED (user ruling, WS-13b §10, 2026-09-06): the row ships with `requiresUserEndpoint: true` and NO endpoint at all, the template moves to `endpointTemplate` where it is documentation rather than data, and the host supplies the real base URL — so the row no longer validates-and-cannot-serve; it refuses with a typed `endpoint-required` until a host names its region. Docs: https://www.oracle.com/artificial-intelligence/generative-ai. Named here so this id carries a ruling of its own rather than falling back to the generic `not-allowlisted` class — the same cross-reference `aihorde`, `arcee-ai` and `cline` carry."
35371
35305
  },
35372
35306
  {
35373
35307
  "upstreamId": "ofoxai",
@@ -37015,7 +36949,7 @@
37015
36949
  "exclusionClass": "reviewed-normalization",
37016
36950
  "path": "zai.name",
37017
36951
  "sourcePath": "src/shared/constants/providers/apikey/index.ts",
37018
- "reason": "upstream's product catalog names this vendor \"Z.AI\", which R6b-5 makes AMBIGUOUS: the vendor documents two dialects, Winter ships them as two rows, and one name cannot tell them apart in a picker. Winter records \"Z.AI GLM Coding (Anthropic dialect)\" — the same name plus the dialect, which is what R6b-5 asks for."
36952
+ "reason": "upstream's product catalog names this vendor \"Z.AI\", which R6b-5 makes AMBIGUOUS: the vendor documents two dialects, Winter ships them as two rows, and one name cannot tell them apart in a picker. Winter records \"Z.AI API (Anthropic dialect)\" — the same name plus the dialect, which is what R6b-5 asks for."
37019
36953
  },
37020
36954
  {
37021
36955
  "upstreamId": "zai-web",
@@ -68,7 +68,7 @@
68
68
  "matchers": [
69
69
  {
70
70
  "pattern": "^deepseek",
71
- "note": "unanchored tail on purpose: the lineup ships as `deepseek-v4-pro` and as `deepseek-reasoner`-style ids alike"
71
+ "note": "unanchored tail on purpose: the lineup ships as `deepseek-v4-pro` and `deepseek-flash`; legacy aliases remain provider-local rather than becoming separate canonical models"
72
72
  }
73
73
  ],
74
74
  "slots": [
@@ -83,7 +83,7 @@
83
83
  },
84
84
  {
85
85
  "name": "flash",
86
- "canonicalModelId": "deepseek-v4-flash",
86
+ "canonicalModelId": "deepseek-flash",
87
87
  "description": "the fast, cheap implementer of the same lineup.",
88
88
  "reason": "Second: cost and speed.",
89
89
  "basis": "winter-curated",
@@ -94,6 +94,52 @@
94
94
  "status": "candidate",
95
95
  "citation": "spec:WS-13c §9"
96
96
  },
97
+ {
98
+ "id": "ernie",
99
+ "displayName": "ERNIE",
100
+ "vendor": "Baidu",
101
+ "vendorProviders": [
102
+ "baidu",
103
+ "qianfan"
104
+ ],
105
+ "matchers": [
106
+ {
107
+ "pattern": "^ernie-",
108
+ "note": "Baidu's ERNIE ids retain the same vendor prefix across Baidu AI Cloud and Qianfan"
109
+ }
110
+ ],
111
+ "slots": [
112
+ {
113
+ "name": "5.1",
114
+ "canonicalModelId": "ernie-5.1",
115
+ "description": "the current ERNIE general model.",
116
+ "reason": "First: current flagship generation.",
117
+ "basis": "winter-curated",
118
+ "citation": "Baidu Qianfan model and pricing documentation, retrieved 2026-09-19",
119
+ "status": "candidate"
120
+ },
121
+ {
122
+ "name": "5.0",
123
+ "canonicalModelId": "ernie-5.0",
124
+ "description": "the ERNIE 5.0 general model.",
125
+ "reason": "Second: previous current generation.",
126
+ "basis": "winter-curated",
127
+ "citation": "Baidu Qianfan model and pricing documentation, retrieved 2026-09-19",
128
+ "status": "candidate"
129
+ },
130
+ {
131
+ "name": "x1.1",
132
+ "canonicalModelId": "ernie-x1.1",
133
+ "description": "the ERNIE deep-thinking model line.",
134
+ "reason": "Third: reasoning-oriented alternative.",
135
+ "basis": "winter-curated",
136
+ "citation": "Baidu Qianfan model and pricing documentation, retrieved 2026-09-19",
137
+ "status": "candidate"
138
+ }
139
+ ],
140
+ "status": "candidate",
141
+ "citation": "https://cloud.baidu.com/doc/qianfan-docs/s/Jm8r1826a — Baidu's current Qianfan pricing table (retrieved 2026-09-19)"
142
+ },
97
143
  {
98
144
  "id": "gemini",
99
145
  "displayName": "Gemini",
@@ -391,8 +437,8 @@
391
437
  ],
392
438
  "matchers": [
393
439
  {
394
- "pattern": "^llama-",
395
- "note": "after the normaliser strips the `meta-llama/` namespace"
440
+ "pattern": "^llama-(?!.*nemotron)",
441
+ "note": "after the normaliser strips the `meta-llama/` namespace; NVIDIA's Llama-Nemotron derivatives belong to the dedicated Nemotron family"
396
442
  }
397
443
  ],
398
444
  "slots": [
@@ -464,6 +510,42 @@
464
510
  "status": "candidate",
465
511
  "citation": "spec:WS-13c §9"
466
512
  },
513
+ {
514
+ "id": "nemotron",
515
+ "displayName": "Nemotron",
516
+ "vendor": "NVIDIA",
517
+ "vendorProviders": [
518
+ "nvidia"
519
+ ],
520
+ "matchers": [
521
+ {
522
+ "pattern": "^(?:nvidia-)?nemotron-|^llama-.*nemotron|^mistral-.*nemotron",
523
+ "note": "covers NVIDIA's named Nemotron line, including Llama- and Mistral-derived Nemotron releases after provider namespaces are stripped"
524
+ }
525
+ ],
526
+ "slots": [
527
+ {
528
+ "name": "ultra",
529
+ "canonicalModelId": "nemotron-3-ultra-550b-a55b",
530
+ "description": "the largest current Nemotron model in the catalog.",
531
+ "reason": "First: capability tier.",
532
+ "basis": "winter-curated",
533
+ "citation": "NVIDIA NIM model catalog, retrieved 2026-09-19",
534
+ "status": "candidate"
535
+ },
536
+ {
537
+ "name": "super",
538
+ "canonicalModelId": "nemotron-3-super-120b-a12b",
539
+ "description": "the smaller current Nemotron general model.",
540
+ "reason": "Second: lower-cost general alternative.",
541
+ "basis": "winter-curated",
542
+ "citation": "NVIDIA NIM model catalog, retrieved 2026-09-19",
543
+ "status": "candidate"
544
+ }
545
+ ],
546
+ "status": "candidate",
547
+ "citation": "https://build.nvidia.com/models — NVIDIA's hosted model catalog (retrieved 2026-09-19)"
548
+ },
467
549
  {
468
550
  "id": "mistral",
469
551
  "displayName": "Mistral",
@@ -473,8 +555,8 @@
473
555
  ],
474
556
  "matchers": [
475
557
  {
476
- "pattern": "^mistral-|^codestral|^devstral|^magistral|^ministral|^pixtral",
477
- "note": "the vendor ships one lineup under several `-stral` names; all of them are Mistral models"
558
+ "pattern": "^mistral-(?!.*nemotron)|^codestral|^devstral|^magistral|^ministral|^pixtral",
559
+ "note": "the vendor ships one lineup under several `-stral` names; NVIDIA's Mistral-Nemotron derivative is assigned to the dedicated Nemotron family"
478
560
  }
479
561
  ],
480
562
  "slots": [
@@ -557,7 +639,9 @@
557
639
  "vendor": "Alibaba",
558
640
  "vendorProviders": [
559
641
  "qwen-cloud",
560
- "alibaba"
642
+ "qwen-cloud-token-plan",
643
+ "alibaba",
644
+ "alibaba-cn"
561
645
  ],
562
646
  "matchers": [
563
647
  {