@zuplo/lint-win32-x64 7.8.24 → 7.9.2

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.
@@ -216,7 +216,7 @@
216
216
  "type": "number",
217
217
  "default": 10,
218
218
  "minimum": 2,
219
- "description": "The time in seconds to cache app configurations loaded by app_id. Defaults to 10 seconds when omitted. Higher values decrease latency; lower values pick up portal changes sooner. Cached results remain valid until the cache expires even if the configuration changes in the portal. This cache is only used when neither ai-gateway-auth-v2-inbound nor ai-gateway-configuration-loader-v2-inbound already loaded the configuration for the request."
219
+ "description": "The time in seconds to cache app configurations loaded by app_id. Defaults to 10 seconds when omitted. Higher values decrease latency; lower values pick up portal changes sooner. Cached results remain valid until the cache expires even if the configuration changes in the portal. This cache is only used when neither ai-gateway-auth-inbound nor ai-gateway-configuration-loader-inbound already loaded the configuration for the request."
220
220
  }
221
221
  }
222
222
  }
@@ -252,7 +252,7 @@
252
252
  "type": "number",
253
253
  "default": 10,
254
254
  "minimum": 2,
255
- "description": "The time in seconds to cache app configurations loaded by app_id. Defaults to 10 seconds when omitted. Higher values decrease latency; lower values pick up portal changes sooner. Cached results remain valid until the cache expires even if the configuration changes in the portal. When ai-gateway-auth-v2-inbound already loaded the configuration for the request, this cache is not used."
255
+ "description": "The time in seconds to cache app configurations loaded by app_id. Defaults to 10 seconds when omitted. Higher values decrease latency; lower values pick up portal changes sooner. Cached results remain valid until the cache expires even if the configuration changes in the portal. When ai-gateway-auth-inbound already loaded the configuration for the request, this cache is not used."
256
256
  }
257
257
  }
258
258
  }
@@ -1119,24 +1119,112 @@
1119
1119
  "options": {
1120
1120
  "type": "object",
1121
1121
  "additionalProperties": false,
1122
- "required": [
1123
- "classifierAppID",
1124
- "classifierModel",
1125
- "modelsByComplexity"
1126
- ],
1122
+ "required": ["modelsByComplexity"],
1123
+ "if": {
1124
+ "required": ["classifierAppID"]
1125
+ },
1126
+ "then": {
1127
+ "required": ["classifierModel"]
1128
+ },
1129
+ "else": {
1130
+ "required": ["classifier"]
1131
+ },
1127
1132
  "properties": {
1128
- "classifierAppID": {
1129
- "type": "string",
1130
- "title": "Classifier App ID",
1131
- "description": "The AI Gateway application id used to run the classifier prompt and evaluate the user's request.",
1132
- "examples": ["config_1234"]
1133
- },
1134
- "classifierModel": {
1135
- "type": "string",
1136
- "title": "Classifier Model",
1137
- "description": "The model (`providerName/model`) the classifier uses to evaluate the user's request. E.g. `openai/gpt-4o-mini`.",
1138
- "pattern": "^[^/\\s]+/.+$",
1139
- "examples": ["openai/gpt-4o-mini"]
1133
+ "classifier": {
1134
+ "type": "object",
1135
+ "title": "Classifier",
1136
+ "description": "Where the user's prompt is classified. Required unless the deprecated `classifierAppID` and `classifierModel` are set. Set exactly one of `app`, `chatCompletions`, or `jev`; setting more than one is a configuration error.",
1137
+ "additionalProperties": false,
1138
+ "minProperties": 1,
1139
+ "maxProperties": 1,
1140
+ "properties": {
1141
+ "app": {
1142
+ "type": "object",
1143
+ "title": "Classifier App",
1144
+ "description": "Classify with another AI Gateway app in this project. The call runs in-process and never leaves the gateway, so the classifier uses that app's providers, routing, and quotas.",
1145
+ "additionalProperties": false,
1146
+ "required": ["appId", "model"],
1147
+ "properties": {
1148
+ "appId": {
1149
+ "type": "string",
1150
+ "title": "Classifier App ID",
1151
+ "description": "The id of the AI Gateway app that runs the classifier. It must not be this app, and that app must not run this policy.",
1152
+ "examples": ["$env(CLASSIFIER_APP_ID)"]
1153
+ },
1154
+ "model": {
1155
+ "type": "string",
1156
+ "title": "Classifier Model",
1157
+ "description": "The model (`providerName/model`) the classifier app uses to evaluate the user's request. E.g. `openai/gpt-4o-mini`.",
1158
+ "pattern": "^[^/\\s]+/.+$",
1159
+ "examples": ["openai/gpt-4o-mini"]
1160
+ },
1161
+ "apiKey": {
1162
+ "type": "string",
1163
+ "title": "Classifier App API Key",
1164
+ "description": "API key sent as `Authorization: Bearer` when invoking the classifier app. Omit it when the classifier app runs the Ensure Gateway Internal Invocation Only policy: the classifier call never leaves the gateway, so that policy accepts it and rejects everything arriving over the network, and no credential is sent. Set it only when the classifier app authenticates callers with API keys.",
1165
+ "examples": ["$env(CLASSIFIER_APP_API_KEY)"],
1166
+ "x-advanced": true
1167
+ }
1168
+ }
1169
+ },
1170
+ "chatCompletions": {
1171
+ "type": "object",
1172
+ "title": "Chat Completions API",
1173
+ "description": "Classify by calling an OpenAI-compatible Chat Completions API directly, outside the gateway. The model must support structured outputs (`response_format` with a JSON schema).",
1174
+ "additionalProperties": false,
1175
+ "required": ["apiKey", "model"],
1176
+ "properties": {
1177
+ "apiKey": {
1178
+ "type": "string",
1179
+ "title": "Chat Completions API Key",
1180
+ "description": "API key for the service at `baseUrl`, sent as `Authorization: Bearer`.",
1181
+ "examples": ["$env(OPENAI_API_KEY)"]
1182
+ },
1183
+ "model": {
1184
+ "type": "string",
1185
+ "title": "Chat Completions Model",
1186
+ "description": "The model id the service expects, such as `gpt-4o-mini`. This is sent to the service as-is, not as a `providerName/model` reference.",
1187
+ "examples": ["gpt-4o-mini"]
1188
+ },
1189
+ "baseUrl": {
1190
+ "type": "string",
1191
+ "title": "Chat Completions Base URL",
1192
+ "description": "Base URL of the OpenAI-compatible API. The classifier request is sent to `{baseUrl}/chat/completions`.",
1193
+ "default": "https://api.openai.com/v1",
1194
+ "x-advanced": true
1195
+ }
1196
+ }
1197
+ },
1198
+ "jev": {
1199
+ "type": "object",
1200
+ "title": "Jev (TypeSafe)",
1201
+ "description": "Classify with Jev, TypeSafe's classification model, by calling a System One API directly: TypeSafe's by default, or another host such as OpenRouter through `baseUrl`. Jev answers typed questions instead of generating text, so it takes no `classifierPrompt`.",
1202
+ "additionalProperties": false,
1203
+ "required": ["apiKey"],
1204
+ "properties": {
1205
+ "apiKey": {
1206
+ "type": "string",
1207
+ "title": "Jev API Key",
1208
+ "description": "API key for the service at `baseUrl`, sent as `Authorization: Bearer`: a TypeSafe key by default, or an OpenRouter key when `baseUrl` is OpenRouter.",
1209
+ "examples": ["$env(TYPESAFE_API_KEY)"]
1210
+ },
1211
+ "model": {
1212
+ "type": "string",
1213
+ "title": "Jev Model",
1214
+ "description": "The Jev model to call. `jev-latest` follows the newest stable release on both TypeSafe and OpenRouter. Pin a versioned id to keep answers stable after tuning `minConfidenceForRouting`: `jev-1.13.0` on TypeSafe, or `jev-1.13` on OpenRouter.",
1215
+ "default": "jev-latest",
1216
+ "x-advanced": true
1217
+ },
1218
+ "baseUrl": {
1219
+ "type": "string",
1220
+ "title": "Jev Base URL",
1221
+ "description": "API root of the System One API that serves Jev, the same value the TypeSafe SDK's `baseURL` takes. The classifier request is sent to `{baseUrl}/v1/systemone`. Set it to `https://openrouter.ai/api` to call Jev through OpenRouter.",
1222
+ "default": "https://api.typesafe.ai",
1223
+ "x-advanced": true
1224
+ }
1225
+ }
1226
+ }
1227
+ }
1140
1228
  },
1141
1229
  "modelsByComplexity": {
1142
1230
  "type": "object",
@@ -1168,13 +1256,6 @@
1168
1256
  }
1169
1257
  }
1170
1258
  },
1171
- "classifierAppApiKey": {
1172
- "type": "string",
1173
- "title": "Classifier App API Key",
1174
- "description": "API key sent as `Authorization: Bearer` when invoking the classifier app. Omit it when the classifier app runs the Ensure Gateway Internal Invocation Only policy: the classifier call never leaves the gateway, so that policy accepts it and rejects everything arriving over the network, and no credential is sent. Set it only when the classifier app authenticates callers with API keys.",
1175
- "examples": ["$env(CLASSIFIER_APP_API_KEY)"],
1176
- "x-advanced": true
1177
- },
1178
1259
  "smartRoutingEnabled": {
1179
1260
  "type": "boolean",
1180
1261
  "title": "Smart Routing Enabled",
@@ -1213,7 +1294,7 @@
1213
1294
  },
1214
1295
  "classifierPrompt": {
1215
1296
  "title": "Classifier Prompt",
1216
- "description": "Prompt used to analyze and classify the user message. Omit to use the built-in classifier prompt.",
1297
+ "description": "Prompt used to analyze and classify the user message with `classifier.app` or `classifier.chatCompletions`. Omit to use the built-in classifier prompt. Jev takes no prompt, so setting this with `classifier.jev` is a configuration error.",
1217
1298
  "oneOf": [
1218
1299
  {
1219
1300
  "type": "string",
@@ -1254,6 +1335,34 @@
1254
1335
  "minimum": 1,
1255
1336
  "default": 8000,
1256
1337
  "x-advanced": true
1338
+ },
1339
+ "classifierAppID": {
1340
+ "type": "string",
1341
+ "title": "Classifier App ID (Deprecated)",
1342
+ "description": "**Deprecated**: use `classifier.app.appId` instead. Still honored when `classifier` is not set; setting both is a configuration error.",
1343
+ "deprecated": true,
1344
+ "doNotSuggest": true,
1345
+ "x-show-example": false,
1346
+ "x-advanced": true
1347
+ },
1348
+ "classifierModel": {
1349
+ "type": "string",
1350
+ "title": "Classifier Model (Deprecated)",
1351
+ "description": "**Deprecated**: use `classifier.app.model` instead. Still honored when `classifier` is not set; setting both is a configuration error.",
1352
+ "pattern": "^[^/\\s]+/.+$",
1353
+ "deprecated": true,
1354
+ "doNotSuggest": true,
1355
+ "x-show-example": false,
1356
+ "x-advanced": true
1357
+ },
1358
+ "classifierAppApiKey": {
1359
+ "type": "string",
1360
+ "title": "Classifier App API Key (Deprecated)",
1361
+ "description": "**Deprecated**: use `classifier.app.apiKey` instead. Still honored when `classifier` is not set; setting both is a configuration error.",
1362
+ "deprecated": true,
1363
+ "doNotSuggest": true,
1364
+ "x-show-example": false,
1365
+ "x-advanced": true
1257
1366
  }
1258
1367
  }
1259
1368
  }
package/bin/version.txt CHANGED
@@ -1 +1 @@
1
- 7.8.24
1
+ 7.9.2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zuplo/lint-win32-x64",
3
- "version": "7.8.24",
3
+ "version": "7.9.2",
4
4
  "description": "The win32-x64 binary for zuplo-lint, the Zuplo API linter.",
5
5
  "repository": "https://github.com/zuplo/zuplo",
6
6
  "author": "Zuplo, Inc.",