omp-llm-role 1.0.0 → 1.2.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 +202 -12
- package/agents/designer.md +4 -3
- package/docs/dev/README.md +44 -7
- package/docs/dev/agent-authoring.md +59 -1
- package/docs/dev/architecture.md +106 -28
- package/docs/dev/ci.md +163 -0
- package/docs/dev/current-state.md +364 -24
- package/docs/dev/data-sources.md +231 -38
- package/docs/dev/explorer.md +175 -46
- package/docs/dev/quirks.md +77 -4
- package/docs/dev/releasing.md +130 -17
- package/docs/dev/scoring.md +851 -27
- package/docs/dev/testing.md +253 -0
- package/docs/dev/writes-and-state.md +232 -28
- package/docs/llm-role-rankings.md +149 -148
- package/package.json +814 -80
- package/skills/omp-llm-role-create-agent/SKILL.md +7 -1
- package/src/agent-architect.ts +148 -19
- package/src/agent-create.ts +800 -40
- package/src/agent-file.ts +2 -5
- package/src/architect-provenance.ts +16 -0
- package/src/availability.ts +191 -15
- package/src/benchmark-author.ts +9 -4
- package/src/benchmark-sources.ts +283 -18
- package/src/cli/create-role.ts +29 -1
- package/src/cli/llm-role-rank.ts +40 -1
- package/src/config-edit.ts +207 -80
- package/src/engine.ts +519 -75
- package/src/error-report.ts +562 -0
- package/src/explorer/boot.ts +36 -24
- package/src/explorer/explain.ts +128 -13
- package/src/explorer/scopes.ts +110 -0
- package/src/explorer/server.ts +126 -33
- package/src/extension.ts +464 -48
- package/src/features.ts +105 -0
- package/src/project-registry.ts +65 -0
- package/src/project-setup.ts +382 -0
- package/src/prompts/agent-creation-architect.md +2 -0
- package/src/prompts/project-profile-architect.md +33 -0
- package/src/prompts/project-profile-user.md +8 -0
- package/src/provider-display.ts +67 -0
- package/src/role-archetypes.ts +12 -2
- package/src/role-settings.ts +22 -0
- package/src/settings.ts +211 -24
- package/src/state.ts +1 -1
- package/src/updater.ts +234 -37
- package/web/app.js +434 -12
- package/web/index.html +1 -0
- package/web/style.css +44 -1
- package/docs/dev/spec.md +0 -633
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omp-llm-role",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "omp plugin: daily model-role updater driven by llm-stats/OpenRouter rankings",
|
|
6
6
|
"license": "MIT",
|
|
@@ -31,7 +31,9 @@
|
|
|
31
31
|
"create-role": "node src/cli/create-role.ts"
|
|
32
32
|
},
|
|
33
33
|
"omp": {
|
|
34
|
-
"extensions": [
|
|
34
|
+
"extensions": [
|
|
35
|
+
"./src/extension.ts"
|
|
36
|
+
],
|
|
35
37
|
"settings": {
|
|
36
38
|
"switchMargin": {
|
|
37
39
|
"type": "number",
|
|
@@ -66,6 +68,36 @@
|
|
|
66
68
|
"description": "Reapply the new default selector to an empty session's active model",
|
|
67
69
|
"default": true
|
|
68
70
|
},
|
|
71
|
+
"errorReporting": {
|
|
72
|
+
"type": "enum",
|
|
73
|
+
"description": "File unexpected plugin errors as GitHub issues (off, ask, auto)",
|
|
74
|
+
"default": "off",
|
|
75
|
+
"values": [
|
|
76
|
+
"off",
|
|
77
|
+
"ask",
|
|
78
|
+
"auto"
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
"features.endpointCeilings": {
|
|
82
|
+
"type": "boolean",
|
|
83
|
+
"description": "Drop routes that cannot call tools and routes whose output ceiling is below 16 384 tokens",
|
|
84
|
+
"default": false
|
|
85
|
+
},
|
|
86
|
+
"features.cachePricing": {
|
|
87
|
+
"type": "boolean",
|
|
88
|
+
"description": "Price the role on a cache-heavy agent loop's invoice (cacheHitRate 0.5) instead of the sticker price",
|
|
89
|
+
"default": false
|
|
90
|
+
},
|
|
91
|
+
"features.providerPinning": {
|
|
92
|
+
"type": "boolean",
|
|
93
|
+
"description": "Bind each request to the model's best provider route (per-model policy; never drops a model) and prefer routes at or above 50 tok/s",
|
|
94
|
+
"default": false
|
|
95
|
+
},
|
|
96
|
+
"features.costCap": {
|
|
97
|
+
"type": "boolean",
|
|
98
|
+
"description": "Drop the priciest tail of the eligible pool (maxPriceUsdPerM 10)",
|
|
99
|
+
"default": false
|
|
100
|
+
},
|
|
69
101
|
"roles.default.enabled": {
|
|
70
102
|
"type": "boolean",
|
|
71
103
|
"description": "Enable the default role",
|
|
@@ -80,7 +112,53 @@
|
|
|
80
112
|
"type": "enum",
|
|
81
113
|
"description": "Thinking level appended to the default selector",
|
|
82
114
|
"default": "auto",
|
|
83
|
-
"values": [
|
|
115
|
+
"values": [
|
|
116
|
+
"off",
|
|
117
|
+
"minimal",
|
|
118
|
+
"low",
|
|
119
|
+
"medium",
|
|
120
|
+
"high",
|
|
121
|
+
"xhigh",
|
|
122
|
+
"max",
|
|
123
|
+
"auto"
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
"roles.default.providerPin": {
|
|
127
|
+
"type": "string",
|
|
128
|
+
"description": "Provider slug the default role's requests are pinned to (OpenRouter @<slug> routing; empty = default routing)"
|
|
129
|
+
},
|
|
130
|
+
"roles.default.cacheHitRate": {
|
|
131
|
+
"type": "number",
|
|
132
|
+
"description": "Assumed cache-hit rate (0–1) for default's input tokens; blends each route's cache-read price before the 3:1 blend (0 = off)",
|
|
133
|
+
"default": 0,
|
|
134
|
+
"min": 0,
|
|
135
|
+
"max": 1,
|
|
136
|
+
"step": 0.01
|
|
137
|
+
},
|
|
138
|
+
"roles.default.features.endpointCeilings": {
|
|
139
|
+
"type": "boolean",
|
|
140
|
+
"description": "Enable the Endpoint capability ceilings capability for the default role",
|
|
141
|
+
"default": false
|
|
142
|
+
},
|
|
143
|
+
"roles.default.features.cachePricing": {
|
|
144
|
+
"type": "boolean",
|
|
145
|
+
"description": "Enable the Cache-read pricing capability for the default role",
|
|
146
|
+
"default": false
|
|
147
|
+
},
|
|
148
|
+
"roles.default.features.providerPinning": {
|
|
149
|
+
"type": "boolean",
|
|
150
|
+
"description": "Enable the Best-route provider pinning capability for the default role",
|
|
151
|
+
"default": false
|
|
152
|
+
},
|
|
153
|
+
"roles.default.features.costCap": {
|
|
154
|
+
"type": "boolean",
|
|
155
|
+
"description": "Enable the Cost cap capability for the default role",
|
|
156
|
+
"default": false
|
|
157
|
+
},
|
|
158
|
+
"roles.default.preferOwnProvider": {
|
|
159
|
+
"type": "boolean",
|
|
160
|
+
"description": "Bind default requests to each model's best provider route (soft preference; never drops a model)",
|
|
161
|
+
"default": false
|
|
84
162
|
},
|
|
85
163
|
"roles.default.required": {
|
|
86
164
|
"type": "string",
|
|
@@ -92,6 +170,35 @@
|
|
|
92
170
|
"description": "Restrict the default pool to image-capable models",
|
|
93
171
|
"default": false
|
|
94
172
|
},
|
|
173
|
+
"roles.default.filters.tools": {
|
|
174
|
+
"type": "boolean",
|
|
175
|
+
"description": "Restrict the default pool to models with a tool-capable route",
|
|
176
|
+
"default": false
|
|
177
|
+
},
|
|
178
|
+
"roles.default.filters.minContextTokens": {
|
|
179
|
+
"type": "number",
|
|
180
|
+
"description": "Drop default routes whose endpoint context is below this (tokens; 0 = off)",
|
|
181
|
+
"default": 0,
|
|
182
|
+
"min": 0
|
|
183
|
+
},
|
|
184
|
+
"roles.default.filters.minOutputTokens": {
|
|
185
|
+
"type": "number",
|
|
186
|
+
"description": "Drop default routes whose endpoint output ceiling is below this (tokens; 0 = off)",
|
|
187
|
+
"default": 0,
|
|
188
|
+
"min": 0
|
|
189
|
+
},
|
|
190
|
+
"roles.default.filters.maxPriceUsdPerM": {
|
|
191
|
+
"type": "number",
|
|
192
|
+
"description": "Drop default models whose role-priced blend exceeds this ($/M; 0 = off)",
|
|
193
|
+
"default": 0,
|
|
194
|
+
"min": 0
|
|
195
|
+
},
|
|
196
|
+
"roles.default.filters.preferredMinThroughput": {
|
|
197
|
+
"type": "number",
|
|
198
|
+
"description": "Soft throughput floor for default routes (tok/s; 0 = off) — a below-floor route sorts last but is never dropped",
|
|
199
|
+
"default": 0,
|
|
200
|
+
"min": 0
|
|
201
|
+
},
|
|
95
202
|
"roles.default.lambda": {
|
|
96
203
|
"type": "number",
|
|
97
204
|
"description": "Explicit λ ($ per quality point) override for default",
|
|
@@ -100,15 +207,7 @@
|
|
|
100
207
|
"roles.default.weights.general": {
|
|
101
208
|
"type": "number",
|
|
102
209
|
"description": "Weight of general in the default quality composite",
|
|
103
|
-
"default": 0.
|
|
104
|
-
"min": 0,
|
|
105
|
-
"max": 1,
|
|
106
|
-
"step": 0.001
|
|
107
|
-
},
|
|
108
|
-
"roles.default.weights.reasoning": {
|
|
109
|
-
"type": "number",
|
|
110
|
-
"description": "Weight of reasoning in the default quality composite",
|
|
111
|
-
"default": 0.1705,
|
|
210
|
+
"default": 0.4926,
|
|
112
211
|
"min": 0,
|
|
113
212
|
"max": 1,
|
|
114
213
|
"step": 0.001
|
|
@@ -167,7 +266,53 @@
|
|
|
167
266
|
"type": "enum",
|
|
168
267
|
"description": "Thinking level appended to the smol selector",
|
|
169
268
|
"default": "off",
|
|
170
|
-
"values": [
|
|
269
|
+
"values": [
|
|
270
|
+
"off",
|
|
271
|
+
"minimal",
|
|
272
|
+
"low",
|
|
273
|
+
"medium",
|
|
274
|
+
"high",
|
|
275
|
+
"xhigh",
|
|
276
|
+
"max",
|
|
277
|
+
"auto"
|
|
278
|
+
]
|
|
279
|
+
},
|
|
280
|
+
"roles.smol.providerPin": {
|
|
281
|
+
"type": "string",
|
|
282
|
+
"description": "Provider slug the smol role's requests are pinned to (OpenRouter @<slug> routing; empty = default routing)"
|
|
283
|
+
},
|
|
284
|
+
"roles.smol.cacheHitRate": {
|
|
285
|
+
"type": "number",
|
|
286
|
+
"description": "Assumed cache-hit rate (0–1) for smol's input tokens; blends each route's cache-read price before the 3:1 blend (0 = off)",
|
|
287
|
+
"default": 0,
|
|
288
|
+
"min": 0,
|
|
289
|
+
"max": 1,
|
|
290
|
+
"step": 0.01
|
|
291
|
+
},
|
|
292
|
+
"roles.smol.features.endpointCeilings": {
|
|
293
|
+
"type": "boolean",
|
|
294
|
+
"description": "Enable the Endpoint capability ceilings capability for the smol role",
|
|
295
|
+
"default": false
|
|
296
|
+
},
|
|
297
|
+
"roles.smol.features.cachePricing": {
|
|
298
|
+
"type": "boolean",
|
|
299
|
+
"description": "Enable the Cache-read pricing capability for the smol role",
|
|
300
|
+
"default": false
|
|
301
|
+
},
|
|
302
|
+
"roles.smol.features.providerPinning": {
|
|
303
|
+
"type": "boolean",
|
|
304
|
+
"description": "Enable the Best-route provider pinning capability for the smol role",
|
|
305
|
+
"default": false
|
|
306
|
+
},
|
|
307
|
+
"roles.smol.features.costCap": {
|
|
308
|
+
"type": "boolean",
|
|
309
|
+
"description": "Enable the Cost cap capability for the smol role",
|
|
310
|
+
"default": false
|
|
311
|
+
},
|
|
312
|
+
"roles.smol.preferOwnProvider": {
|
|
313
|
+
"type": "boolean",
|
|
314
|
+
"description": "Bind smol requests to each model's best provider route (soft preference; never drops a model)",
|
|
315
|
+
"default": false
|
|
171
316
|
},
|
|
172
317
|
"roles.smol.required": {
|
|
173
318
|
"type": "string",
|
|
@@ -179,6 +324,35 @@
|
|
|
179
324
|
"description": "Restrict the smol pool to image-capable models",
|
|
180
325
|
"default": false
|
|
181
326
|
},
|
|
327
|
+
"roles.smol.filters.tools": {
|
|
328
|
+
"type": "boolean",
|
|
329
|
+
"description": "Restrict the smol pool to models with a tool-capable route",
|
|
330
|
+
"default": false
|
|
331
|
+
},
|
|
332
|
+
"roles.smol.filters.minContextTokens": {
|
|
333
|
+
"type": "number",
|
|
334
|
+
"description": "Drop smol routes whose endpoint context is below this (tokens; 0 = off)",
|
|
335
|
+
"default": 0,
|
|
336
|
+
"min": 0
|
|
337
|
+
},
|
|
338
|
+
"roles.smol.filters.minOutputTokens": {
|
|
339
|
+
"type": "number",
|
|
340
|
+
"description": "Drop smol routes whose endpoint output ceiling is below this (tokens; 0 = off)",
|
|
341
|
+
"default": 0,
|
|
342
|
+
"min": 0
|
|
343
|
+
},
|
|
344
|
+
"roles.smol.filters.maxPriceUsdPerM": {
|
|
345
|
+
"type": "number",
|
|
346
|
+
"description": "Drop smol models whose role-priced blend exceeds this ($/M; 0 = off)",
|
|
347
|
+
"default": 0,
|
|
348
|
+
"min": 0
|
|
349
|
+
},
|
|
350
|
+
"roles.smol.filters.preferredMinThroughput": {
|
|
351
|
+
"type": "number",
|
|
352
|
+
"description": "Soft throughput floor for smol routes (tok/s; 0 = off) — a below-floor route sorts last but is never dropped",
|
|
353
|
+
"default": 0,
|
|
354
|
+
"min": 0
|
|
355
|
+
},
|
|
182
356
|
"roles.smol.lambda": {
|
|
183
357
|
"type": "number",
|
|
184
358
|
"description": "Explicit λ ($ per quality point) override for smol",
|
|
@@ -187,7 +361,7 @@
|
|
|
187
361
|
"roles.smol.weights.price": {
|
|
188
362
|
"type": "number",
|
|
189
363
|
"description": "Weight of price in the smol quality composite",
|
|
190
|
-
"default": 0.
|
|
364
|
+
"default": 0.45,
|
|
191
365
|
"min": 0,
|
|
192
366
|
"max": 1,
|
|
193
367
|
"step": 0.001
|
|
@@ -195,7 +369,7 @@
|
|
|
195
369
|
"roles.smol.weights.throughput": {
|
|
196
370
|
"type": "number",
|
|
197
371
|
"description": "Weight of throughput in the smol quality composite",
|
|
198
|
-
"default": 0.
|
|
372
|
+
"default": 0.22,
|
|
199
373
|
"min": 0,
|
|
200
374
|
"max": 1,
|
|
201
375
|
"step": 0.001
|
|
@@ -203,7 +377,7 @@
|
|
|
203
377
|
"roles.smol.weights.general": {
|
|
204
378
|
"type": "number",
|
|
205
379
|
"description": "Weight of general in the smol quality composite",
|
|
206
|
-
"default": 0.
|
|
380
|
+
"default": 0.1571,
|
|
207
381
|
"min": 0,
|
|
208
382
|
"max": 1,
|
|
209
383
|
"step": 0.001
|
|
@@ -211,7 +385,7 @@
|
|
|
211
385
|
"roles.smol.weights.code": {
|
|
212
386
|
"type": "number",
|
|
213
387
|
"description": "Weight of code in the smol quality composite",
|
|
214
|
-
"default": 0.
|
|
388
|
+
"default": 0.0943,
|
|
215
389
|
"min": 0,
|
|
216
390
|
"max": 1,
|
|
217
391
|
"step": 0.001
|
|
@@ -219,7 +393,7 @@
|
|
|
219
393
|
"roles.smol.weights.tool_calling": {
|
|
220
394
|
"type": "number",
|
|
221
395
|
"description": "Weight of tool_calling in the smol quality composite",
|
|
222
|
-
"default": 0.
|
|
396
|
+
"default": 0.0786,
|
|
223
397
|
"min": 0,
|
|
224
398
|
"max": 1,
|
|
225
399
|
"step": 0.001
|
|
@@ -238,7 +412,53 @@
|
|
|
238
412
|
"type": "enum",
|
|
239
413
|
"description": "Thinking level appended to the slow selector",
|
|
240
414
|
"default": "high",
|
|
241
|
-
"values": [
|
|
415
|
+
"values": [
|
|
416
|
+
"off",
|
|
417
|
+
"minimal",
|
|
418
|
+
"low",
|
|
419
|
+
"medium",
|
|
420
|
+
"high",
|
|
421
|
+
"xhigh",
|
|
422
|
+
"max",
|
|
423
|
+
"auto"
|
|
424
|
+
]
|
|
425
|
+
},
|
|
426
|
+
"roles.slow.providerPin": {
|
|
427
|
+
"type": "string",
|
|
428
|
+
"description": "Provider slug the slow role's requests are pinned to (OpenRouter @<slug> routing; empty = default routing)"
|
|
429
|
+
},
|
|
430
|
+
"roles.slow.cacheHitRate": {
|
|
431
|
+
"type": "number",
|
|
432
|
+
"description": "Assumed cache-hit rate (0–1) for slow's input tokens; blends each route's cache-read price before the 3:1 blend (0 = off)",
|
|
433
|
+
"default": 0,
|
|
434
|
+
"min": 0,
|
|
435
|
+
"max": 1,
|
|
436
|
+
"step": 0.01
|
|
437
|
+
},
|
|
438
|
+
"roles.slow.features.endpointCeilings": {
|
|
439
|
+
"type": "boolean",
|
|
440
|
+
"description": "Enable the Endpoint capability ceilings capability for the slow role",
|
|
441
|
+
"default": false
|
|
442
|
+
},
|
|
443
|
+
"roles.slow.features.cachePricing": {
|
|
444
|
+
"type": "boolean",
|
|
445
|
+
"description": "Enable the Cache-read pricing capability for the slow role",
|
|
446
|
+
"default": false
|
|
447
|
+
},
|
|
448
|
+
"roles.slow.features.providerPinning": {
|
|
449
|
+
"type": "boolean",
|
|
450
|
+
"description": "Enable the Best-route provider pinning capability for the slow role",
|
|
451
|
+
"default": false
|
|
452
|
+
},
|
|
453
|
+
"roles.slow.features.costCap": {
|
|
454
|
+
"type": "boolean",
|
|
455
|
+
"description": "Enable the Cost cap capability for the slow role",
|
|
456
|
+
"default": false
|
|
457
|
+
},
|
|
458
|
+
"roles.slow.preferOwnProvider": {
|
|
459
|
+
"type": "boolean",
|
|
460
|
+
"description": "Bind slow requests to each model's best provider route (soft preference; never drops a model)",
|
|
461
|
+
"default": false
|
|
242
462
|
},
|
|
243
463
|
"roles.slow.required": {
|
|
244
464
|
"type": "string",
|
|
@@ -250,6 +470,35 @@
|
|
|
250
470
|
"description": "Restrict the slow pool to image-capable models",
|
|
251
471
|
"default": false
|
|
252
472
|
},
|
|
473
|
+
"roles.slow.filters.tools": {
|
|
474
|
+
"type": "boolean",
|
|
475
|
+
"description": "Restrict the slow pool to models with a tool-capable route",
|
|
476
|
+
"default": false
|
|
477
|
+
},
|
|
478
|
+
"roles.slow.filters.minContextTokens": {
|
|
479
|
+
"type": "number",
|
|
480
|
+
"description": "Drop slow routes whose endpoint context is below this (tokens; 0 = off)",
|
|
481
|
+
"default": 0,
|
|
482
|
+
"min": 0
|
|
483
|
+
},
|
|
484
|
+
"roles.slow.filters.minOutputTokens": {
|
|
485
|
+
"type": "number",
|
|
486
|
+
"description": "Drop slow routes whose endpoint output ceiling is below this (tokens; 0 = off)",
|
|
487
|
+
"default": 0,
|
|
488
|
+
"min": 0
|
|
489
|
+
},
|
|
490
|
+
"roles.slow.filters.maxPriceUsdPerM": {
|
|
491
|
+
"type": "number",
|
|
492
|
+
"description": "Drop slow models whose role-priced blend exceeds this ($/M; 0 = off)",
|
|
493
|
+
"default": 0,
|
|
494
|
+
"min": 0
|
|
495
|
+
},
|
|
496
|
+
"roles.slow.filters.preferredMinThroughput": {
|
|
497
|
+
"type": "number",
|
|
498
|
+
"description": "Soft throughput floor for slow routes (tok/s; 0 = off) — a below-floor route sorts last but is never dropped",
|
|
499
|
+
"default": 0,
|
|
500
|
+
"min": 0
|
|
501
|
+
},
|
|
253
502
|
"roles.slow.lambda": {
|
|
254
503
|
"type": "number",
|
|
255
504
|
"description": "Explicit λ ($ per quality point) override for slow",
|
|
@@ -258,15 +507,7 @@
|
|
|
258
507
|
"roles.slow.weights.general": {
|
|
259
508
|
"type": "number",
|
|
260
509
|
"description": "Weight of general in the slow quality composite",
|
|
261
|
-
"default": 0.
|
|
262
|
-
"min": 0,
|
|
263
|
-
"max": 1,
|
|
264
|
-
"step": 0.001
|
|
265
|
-
},
|
|
266
|
-
"roles.slow.weights.reasoning": {
|
|
267
|
-
"type": "number",
|
|
268
|
-
"description": "Weight of reasoning in the slow quality composite",
|
|
269
|
-
"default": 0.26,
|
|
510
|
+
"default": 0.6,
|
|
270
511
|
"min": 0,
|
|
271
512
|
"max": 1,
|
|
272
513
|
"step": 0.001
|
|
@@ -287,14 +528,6 @@
|
|
|
287
528
|
"max": 1,
|
|
288
529
|
"step": 0.001
|
|
289
530
|
},
|
|
290
|
-
"roles.slow.weights.math": {
|
|
291
|
-
"type": "number",
|
|
292
|
-
"description": "Weight of math in the slow quality composite",
|
|
293
|
-
"default": 0.08,
|
|
294
|
-
"min": 0,
|
|
295
|
-
"max": 1,
|
|
296
|
-
"step": 0.001
|
|
297
|
-
},
|
|
298
531
|
"roles.slow.weights.throughput": {
|
|
299
532
|
"type": "number",
|
|
300
533
|
"description": "Weight of throughput in the slow quality composite",
|
|
@@ -325,7 +558,53 @@
|
|
|
325
558
|
"type": "enum",
|
|
326
559
|
"description": "Thinking level appended to the vision selector",
|
|
327
560
|
"default": "auto",
|
|
328
|
-
"values": [
|
|
561
|
+
"values": [
|
|
562
|
+
"off",
|
|
563
|
+
"minimal",
|
|
564
|
+
"low",
|
|
565
|
+
"medium",
|
|
566
|
+
"high",
|
|
567
|
+
"xhigh",
|
|
568
|
+
"max",
|
|
569
|
+
"auto"
|
|
570
|
+
]
|
|
571
|
+
},
|
|
572
|
+
"roles.vision.providerPin": {
|
|
573
|
+
"type": "string",
|
|
574
|
+
"description": "Provider slug the vision role's requests are pinned to (OpenRouter @<slug> routing; empty = default routing)"
|
|
575
|
+
},
|
|
576
|
+
"roles.vision.cacheHitRate": {
|
|
577
|
+
"type": "number",
|
|
578
|
+
"description": "Assumed cache-hit rate (0–1) for vision's input tokens; blends each route's cache-read price before the 3:1 blend (0 = off)",
|
|
579
|
+
"default": 0,
|
|
580
|
+
"min": 0,
|
|
581
|
+
"max": 1,
|
|
582
|
+
"step": 0.01
|
|
583
|
+
},
|
|
584
|
+
"roles.vision.features.endpointCeilings": {
|
|
585
|
+
"type": "boolean",
|
|
586
|
+
"description": "Enable the Endpoint capability ceilings capability for the vision role",
|
|
587
|
+
"default": false
|
|
588
|
+
},
|
|
589
|
+
"roles.vision.features.cachePricing": {
|
|
590
|
+
"type": "boolean",
|
|
591
|
+
"description": "Enable the Cache-read pricing capability for the vision role",
|
|
592
|
+
"default": false
|
|
593
|
+
},
|
|
594
|
+
"roles.vision.features.providerPinning": {
|
|
595
|
+
"type": "boolean",
|
|
596
|
+
"description": "Enable the Best-route provider pinning capability for the vision role",
|
|
597
|
+
"default": false
|
|
598
|
+
},
|
|
599
|
+
"roles.vision.features.costCap": {
|
|
600
|
+
"type": "boolean",
|
|
601
|
+
"description": "Enable the Cost cap capability for the vision role",
|
|
602
|
+
"default": false
|
|
603
|
+
},
|
|
604
|
+
"roles.vision.preferOwnProvider": {
|
|
605
|
+
"type": "boolean",
|
|
606
|
+
"description": "Bind vision requests to each model's best provider route (soft preference; never drops a model)",
|
|
607
|
+
"default": false
|
|
329
608
|
},
|
|
330
609
|
"roles.vision.required": {
|
|
331
610
|
"type": "string",
|
|
@@ -337,6 +616,35 @@
|
|
|
337
616
|
"description": "Restrict the vision pool to image-capable models",
|
|
338
617
|
"default": true
|
|
339
618
|
},
|
|
619
|
+
"roles.vision.filters.tools": {
|
|
620
|
+
"type": "boolean",
|
|
621
|
+
"description": "Restrict the vision pool to models with a tool-capable route",
|
|
622
|
+
"default": false
|
|
623
|
+
},
|
|
624
|
+
"roles.vision.filters.minContextTokens": {
|
|
625
|
+
"type": "number",
|
|
626
|
+
"description": "Drop vision routes whose endpoint context is below this (tokens; 0 = off)",
|
|
627
|
+
"default": 0,
|
|
628
|
+
"min": 0
|
|
629
|
+
},
|
|
630
|
+
"roles.vision.filters.minOutputTokens": {
|
|
631
|
+
"type": "number",
|
|
632
|
+
"description": "Drop vision routes whose endpoint output ceiling is below this (tokens; 0 = off)",
|
|
633
|
+
"default": 0,
|
|
634
|
+
"min": 0
|
|
635
|
+
},
|
|
636
|
+
"roles.vision.filters.maxPriceUsdPerM": {
|
|
637
|
+
"type": "number",
|
|
638
|
+
"description": "Drop vision models whose role-priced blend exceeds this ($/M; 0 = off)",
|
|
639
|
+
"default": 0,
|
|
640
|
+
"min": 0
|
|
641
|
+
},
|
|
642
|
+
"roles.vision.filters.preferredMinThroughput": {
|
|
643
|
+
"type": "number",
|
|
644
|
+
"description": "Soft throughput floor for vision routes (tok/s; 0 = off) — a below-floor route sorts last but is never dropped",
|
|
645
|
+
"default": 0,
|
|
646
|
+
"min": 0
|
|
647
|
+
},
|
|
340
648
|
"roles.vision.lambda": {
|
|
341
649
|
"type": "number",
|
|
342
650
|
"description": "Explicit λ ($ per quality point) override for vision",
|
|
@@ -398,13 +706,59 @@
|
|
|
398
706
|
"roles.plan.description": {
|
|
399
707
|
"type": "string",
|
|
400
708
|
"description": "Description of the plan role",
|
|
401
|
-
"default": "Planning: reasoning
|
|
709
|
+
"default": "Planning: reasoning and long-context coherence, priced so the cheapest capable planner wins"
|
|
402
710
|
},
|
|
403
711
|
"roles.plan.thinking": {
|
|
404
712
|
"type": "enum",
|
|
405
713
|
"description": "Thinking level appended to the plan selector",
|
|
406
714
|
"default": "auto",
|
|
407
|
-
"values": [
|
|
715
|
+
"values": [
|
|
716
|
+
"off",
|
|
717
|
+
"minimal",
|
|
718
|
+
"low",
|
|
719
|
+
"medium",
|
|
720
|
+
"high",
|
|
721
|
+
"xhigh",
|
|
722
|
+
"max",
|
|
723
|
+
"auto"
|
|
724
|
+
]
|
|
725
|
+
},
|
|
726
|
+
"roles.plan.providerPin": {
|
|
727
|
+
"type": "string",
|
|
728
|
+
"description": "Provider slug the plan role's requests are pinned to (OpenRouter @<slug> routing; empty = default routing)"
|
|
729
|
+
},
|
|
730
|
+
"roles.plan.cacheHitRate": {
|
|
731
|
+
"type": "number",
|
|
732
|
+
"description": "Assumed cache-hit rate (0–1) for plan's input tokens; blends each route's cache-read price before the 3:1 blend (0 = off)",
|
|
733
|
+
"default": 0,
|
|
734
|
+
"min": 0,
|
|
735
|
+
"max": 1,
|
|
736
|
+
"step": 0.01
|
|
737
|
+
},
|
|
738
|
+
"roles.plan.features.endpointCeilings": {
|
|
739
|
+
"type": "boolean",
|
|
740
|
+
"description": "Enable the Endpoint capability ceilings capability for the plan role",
|
|
741
|
+
"default": false
|
|
742
|
+
},
|
|
743
|
+
"roles.plan.features.cachePricing": {
|
|
744
|
+
"type": "boolean",
|
|
745
|
+
"description": "Enable the Cache-read pricing capability for the plan role",
|
|
746
|
+
"default": false
|
|
747
|
+
},
|
|
748
|
+
"roles.plan.features.providerPinning": {
|
|
749
|
+
"type": "boolean",
|
|
750
|
+
"description": "Enable the Best-route provider pinning capability for the plan role",
|
|
751
|
+
"default": false
|
|
752
|
+
},
|
|
753
|
+
"roles.plan.features.costCap": {
|
|
754
|
+
"type": "boolean",
|
|
755
|
+
"description": "Enable the Cost cap capability for the plan role",
|
|
756
|
+
"default": false
|
|
757
|
+
},
|
|
758
|
+
"roles.plan.preferOwnProvider": {
|
|
759
|
+
"type": "boolean",
|
|
760
|
+
"description": "Bind plan requests to each model's best provider route (soft preference; never drops a model)",
|
|
761
|
+
"default": false
|
|
408
762
|
},
|
|
409
763
|
"roles.plan.required": {
|
|
410
764
|
"type": "string",
|
|
@@ -416,23 +770,44 @@
|
|
|
416
770
|
"description": "Restrict the plan pool to image-capable models",
|
|
417
771
|
"default": false
|
|
418
772
|
},
|
|
419
|
-
"roles.plan.
|
|
773
|
+
"roles.plan.filters.tools": {
|
|
774
|
+
"type": "boolean",
|
|
775
|
+
"description": "Restrict the plan pool to models with a tool-capable route",
|
|
776
|
+
"default": false
|
|
777
|
+
},
|
|
778
|
+
"roles.plan.filters.minContextTokens": {
|
|
420
779
|
"type": "number",
|
|
421
|
-
"description": "
|
|
780
|
+
"description": "Drop plan routes whose endpoint context is below this (tokens; 0 = off)",
|
|
781
|
+
"default": 0,
|
|
422
782
|
"min": 0
|
|
423
783
|
},
|
|
424
|
-
"roles.plan.
|
|
784
|
+
"roles.plan.filters.minOutputTokens": {
|
|
425
785
|
"type": "number",
|
|
426
|
-
"description": "
|
|
427
|
-
"default": 0
|
|
428
|
-
"min": 0
|
|
429
|
-
|
|
430
|
-
|
|
786
|
+
"description": "Drop plan routes whose endpoint output ceiling is below this (tokens; 0 = off)",
|
|
787
|
+
"default": 0,
|
|
788
|
+
"min": 0
|
|
789
|
+
},
|
|
790
|
+
"roles.plan.filters.maxPriceUsdPerM": {
|
|
791
|
+
"type": "number",
|
|
792
|
+
"description": "Drop plan models whose role-priced blend exceeds this ($/M; 0 = off)",
|
|
793
|
+
"default": 0,
|
|
794
|
+
"min": 0
|
|
795
|
+
},
|
|
796
|
+
"roles.plan.filters.preferredMinThroughput": {
|
|
797
|
+
"type": "number",
|
|
798
|
+
"description": "Soft throughput floor for plan routes (tok/s; 0 = off) — a below-floor route sorts last but is never dropped",
|
|
799
|
+
"default": 0,
|
|
800
|
+
"min": 0
|
|
801
|
+
},
|
|
802
|
+
"roles.plan.lambda": {
|
|
803
|
+
"type": "number",
|
|
804
|
+
"description": "Explicit λ ($ per quality point) override for plan",
|
|
805
|
+
"min": 0
|
|
431
806
|
},
|
|
432
807
|
"roles.plan.weights.general": {
|
|
433
808
|
"type": "number",
|
|
434
809
|
"description": "Weight of general in the plan quality composite",
|
|
435
|
-
"default": 0.
|
|
810
|
+
"default": 0.6,
|
|
436
811
|
"min": 0,
|
|
437
812
|
"max": 1,
|
|
438
813
|
"step": 0.001
|
|
@@ -440,15 +815,7 @@
|
|
|
440
815
|
"roles.plan.weights.long_context": {
|
|
441
816
|
"type": "number",
|
|
442
817
|
"description": "Weight of long_context in the plan quality composite",
|
|
443
|
-
"default": 0.
|
|
444
|
-
"min": 0,
|
|
445
|
-
"max": 1,
|
|
446
|
-
"step": 0.001
|
|
447
|
-
},
|
|
448
|
-
"roles.plan.weights.math": {
|
|
449
|
-
"type": "number",
|
|
450
|
-
"description": "Weight of math in the plan quality composite",
|
|
451
|
-
"default": 0.1369,
|
|
818
|
+
"default": 0.116676,
|
|
452
819
|
"min": 0,
|
|
453
820
|
"max": 1,
|
|
454
821
|
"step": 0.001
|
|
@@ -456,7 +823,7 @@
|
|
|
456
823
|
"roles.plan.weights.throughput": {
|
|
457
824
|
"type": "number",
|
|
458
825
|
"description": "Weight of throughput in the plan quality composite",
|
|
459
|
-
"default": 0.
|
|
826
|
+
"default": 0.033324,
|
|
460
827
|
"min": 0,
|
|
461
828
|
"max": 1,
|
|
462
829
|
"step": 0.001
|
|
@@ -464,7 +831,7 @@
|
|
|
464
831
|
"roles.plan.weights.price": {
|
|
465
832
|
"type": "number",
|
|
466
833
|
"description": "Weight of price in the plan quality composite",
|
|
467
|
-
"default": 0.
|
|
834
|
+
"default": 0.25,
|
|
468
835
|
"min": 0,
|
|
469
836
|
"max": 1,
|
|
470
837
|
"step": 0.001
|
|
@@ -483,7 +850,53 @@
|
|
|
483
850
|
"type": "enum",
|
|
484
851
|
"description": "Thinking level appended to the commit selector",
|
|
485
852
|
"default": "off",
|
|
486
|
-
"values": [
|
|
853
|
+
"values": [
|
|
854
|
+
"off",
|
|
855
|
+
"minimal",
|
|
856
|
+
"low",
|
|
857
|
+
"medium",
|
|
858
|
+
"high",
|
|
859
|
+
"xhigh",
|
|
860
|
+
"max",
|
|
861
|
+
"auto"
|
|
862
|
+
]
|
|
863
|
+
},
|
|
864
|
+
"roles.commit.providerPin": {
|
|
865
|
+
"type": "string",
|
|
866
|
+
"description": "Provider slug the commit role's requests are pinned to (OpenRouter @<slug> routing; empty = default routing)"
|
|
867
|
+
},
|
|
868
|
+
"roles.commit.cacheHitRate": {
|
|
869
|
+
"type": "number",
|
|
870
|
+
"description": "Assumed cache-hit rate (0–1) for commit's input tokens; blends each route's cache-read price before the 3:1 blend (0 = off)",
|
|
871
|
+
"default": 0,
|
|
872
|
+
"min": 0,
|
|
873
|
+
"max": 1,
|
|
874
|
+
"step": 0.01
|
|
875
|
+
},
|
|
876
|
+
"roles.commit.features.endpointCeilings": {
|
|
877
|
+
"type": "boolean",
|
|
878
|
+
"description": "Enable the Endpoint capability ceilings capability for the commit role",
|
|
879
|
+
"default": false
|
|
880
|
+
},
|
|
881
|
+
"roles.commit.features.cachePricing": {
|
|
882
|
+
"type": "boolean",
|
|
883
|
+
"description": "Enable the Cache-read pricing capability for the commit role",
|
|
884
|
+
"default": false
|
|
885
|
+
},
|
|
886
|
+
"roles.commit.features.providerPinning": {
|
|
887
|
+
"type": "boolean",
|
|
888
|
+
"description": "Enable the Best-route provider pinning capability for the commit role",
|
|
889
|
+
"default": false
|
|
890
|
+
},
|
|
891
|
+
"roles.commit.features.costCap": {
|
|
892
|
+
"type": "boolean",
|
|
893
|
+
"description": "Enable the Cost cap capability for the commit role",
|
|
894
|
+
"default": false
|
|
895
|
+
},
|
|
896
|
+
"roles.commit.preferOwnProvider": {
|
|
897
|
+
"type": "boolean",
|
|
898
|
+
"description": "Bind commit requests to each model's best provider route (soft preference; never drops a model)",
|
|
899
|
+
"default": false
|
|
487
900
|
},
|
|
488
901
|
"roles.commit.required": {
|
|
489
902
|
"type": "string",
|
|
@@ -495,6 +908,35 @@
|
|
|
495
908
|
"description": "Restrict the commit pool to image-capable models",
|
|
496
909
|
"default": false
|
|
497
910
|
},
|
|
911
|
+
"roles.commit.filters.tools": {
|
|
912
|
+
"type": "boolean",
|
|
913
|
+
"description": "Restrict the commit pool to models with a tool-capable route",
|
|
914
|
+
"default": false
|
|
915
|
+
},
|
|
916
|
+
"roles.commit.filters.minContextTokens": {
|
|
917
|
+
"type": "number",
|
|
918
|
+
"description": "Drop commit routes whose endpoint context is below this (tokens; 0 = off)",
|
|
919
|
+
"default": 0,
|
|
920
|
+
"min": 0
|
|
921
|
+
},
|
|
922
|
+
"roles.commit.filters.minOutputTokens": {
|
|
923
|
+
"type": "number",
|
|
924
|
+
"description": "Drop commit routes whose endpoint output ceiling is below this (tokens; 0 = off)",
|
|
925
|
+
"default": 0,
|
|
926
|
+
"min": 0
|
|
927
|
+
},
|
|
928
|
+
"roles.commit.filters.maxPriceUsdPerM": {
|
|
929
|
+
"type": "number",
|
|
930
|
+
"description": "Drop commit models whose role-priced blend exceeds this ($/M; 0 = off)",
|
|
931
|
+
"default": 0,
|
|
932
|
+
"min": 0
|
|
933
|
+
},
|
|
934
|
+
"roles.commit.filters.preferredMinThroughput": {
|
|
935
|
+
"type": "number",
|
|
936
|
+
"description": "Soft throughput floor for commit routes (tok/s; 0 = off) — a below-floor route sorts last but is never dropped",
|
|
937
|
+
"default": 0,
|
|
938
|
+
"min": 0
|
|
939
|
+
},
|
|
498
940
|
"roles.commit.lambda": {
|
|
499
941
|
"type": "number",
|
|
500
942
|
"description": "Explicit λ ($ per quality point) override for commit",
|
|
@@ -503,7 +945,7 @@
|
|
|
503
945
|
"roles.commit.weights.price": {
|
|
504
946
|
"type": "number",
|
|
505
947
|
"description": "Weight of price in the commit quality composite",
|
|
506
|
-
"default": 0.
|
|
948
|
+
"default": 0.45,
|
|
507
949
|
"min": 0,
|
|
508
950
|
"max": 1,
|
|
509
951
|
"step": 0.001
|
|
@@ -511,7 +953,7 @@
|
|
|
511
953
|
"roles.commit.weights.throughput": {
|
|
512
954
|
"type": "number",
|
|
513
955
|
"description": "Weight of throughput in the commit quality composite",
|
|
514
|
-
"default": 0.
|
|
956
|
+
"default": 0.2285,
|
|
515
957
|
"min": 0,
|
|
516
958
|
"max": 1,
|
|
517
959
|
"step": 0.001
|
|
@@ -519,7 +961,7 @@
|
|
|
519
961
|
"roles.commit.weights.general": {
|
|
520
962
|
"type": "number",
|
|
521
963
|
"description": "Weight of general in the commit quality composite",
|
|
522
|
-
"default": 0.
|
|
964
|
+
"default": 0.2369,
|
|
523
965
|
"min": 0,
|
|
524
966
|
"max": 1,
|
|
525
967
|
"step": 0.001
|
|
@@ -527,7 +969,7 @@
|
|
|
527
969
|
"roles.commit.weights.code": {
|
|
528
970
|
"type": "number",
|
|
529
971
|
"description": "Weight of code in the commit quality composite",
|
|
530
|
-
"default": 0.
|
|
972
|
+
"default": 0.0846,
|
|
531
973
|
"min": 0,
|
|
532
974
|
"max": 1,
|
|
533
975
|
"step": 0.001
|
|
@@ -546,7 +988,53 @@
|
|
|
546
988
|
"type": "enum",
|
|
547
989
|
"description": "Thinking level appended to the tiny selector",
|
|
548
990
|
"default": "off",
|
|
549
|
-
"values": [
|
|
991
|
+
"values": [
|
|
992
|
+
"off",
|
|
993
|
+
"minimal",
|
|
994
|
+
"low",
|
|
995
|
+
"medium",
|
|
996
|
+
"high",
|
|
997
|
+
"xhigh",
|
|
998
|
+
"max",
|
|
999
|
+
"auto"
|
|
1000
|
+
]
|
|
1001
|
+
},
|
|
1002
|
+
"roles.tiny.providerPin": {
|
|
1003
|
+
"type": "string",
|
|
1004
|
+
"description": "Provider slug the tiny role's requests are pinned to (OpenRouter @<slug> routing; empty = default routing)"
|
|
1005
|
+
},
|
|
1006
|
+
"roles.tiny.cacheHitRate": {
|
|
1007
|
+
"type": "number",
|
|
1008
|
+
"description": "Assumed cache-hit rate (0–1) for tiny's input tokens; blends each route's cache-read price before the 3:1 blend (0 = off)",
|
|
1009
|
+
"default": 0,
|
|
1010
|
+
"min": 0,
|
|
1011
|
+
"max": 1,
|
|
1012
|
+
"step": 0.01
|
|
1013
|
+
},
|
|
1014
|
+
"roles.tiny.features.endpointCeilings": {
|
|
1015
|
+
"type": "boolean",
|
|
1016
|
+
"description": "Enable the Endpoint capability ceilings capability for the tiny role",
|
|
1017
|
+
"default": false
|
|
1018
|
+
},
|
|
1019
|
+
"roles.tiny.features.cachePricing": {
|
|
1020
|
+
"type": "boolean",
|
|
1021
|
+
"description": "Enable the Cache-read pricing capability for the tiny role",
|
|
1022
|
+
"default": false
|
|
1023
|
+
},
|
|
1024
|
+
"roles.tiny.features.providerPinning": {
|
|
1025
|
+
"type": "boolean",
|
|
1026
|
+
"description": "Enable the Best-route provider pinning capability for the tiny role",
|
|
1027
|
+
"default": false
|
|
1028
|
+
},
|
|
1029
|
+
"roles.tiny.features.costCap": {
|
|
1030
|
+
"type": "boolean",
|
|
1031
|
+
"description": "Enable the Cost cap capability for the tiny role",
|
|
1032
|
+
"default": false
|
|
1033
|
+
},
|
|
1034
|
+
"roles.tiny.preferOwnProvider": {
|
|
1035
|
+
"type": "boolean",
|
|
1036
|
+
"description": "Bind tiny requests to each model's best provider route (soft preference; never drops a model)",
|
|
1037
|
+
"default": false
|
|
550
1038
|
},
|
|
551
1039
|
"roles.tiny.required": {
|
|
552
1040
|
"type": "string",
|
|
@@ -558,6 +1046,35 @@
|
|
|
558
1046
|
"description": "Restrict the tiny pool to image-capable models",
|
|
559
1047
|
"default": false
|
|
560
1048
|
},
|
|
1049
|
+
"roles.tiny.filters.tools": {
|
|
1050
|
+
"type": "boolean",
|
|
1051
|
+
"description": "Restrict the tiny pool to models with a tool-capable route",
|
|
1052
|
+
"default": false
|
|
1053
|
+
},
|
|
1054
|
+
"roles.tiny.filters.minContextTokens": {
|
|
1055
|
+
"type": "number",
|
|
1056
|
+
"description": "Drop tiny routes whose endpoint context is below this (tokens; 0 = off)",
|
|
1057
|
+
"default": 0,
|
|
1058
|
+
"min": 0
|
|
1059
|
+
},
|
|
1060
|
+
"roles.tiny.filters.minOutputTokens": {
|
|
1061
|
+
"type": "number",
|
|
1062
|
+
"description": "Drop tiny routes whose endpoint output ceiling is below this (tokens; 0 = off)",
|
|
1063
|
+
"default": 0,
|
|
1064
|
+
"min": 0
|
|
1065
|
+
},
|
|
1066
|
+
"roles.tiny.filters.maxPriceUsdPerM": {
|
|
1067
|
+
"type": "number",
|
|
1068
|
+
"description": "Drop tiny models whose role-priced blend exceeds this ($/M; 0 = off)",
|
|
1069
|
+
"default": 0,
|
|
1070
|
+
"min": 0
|
|
1071
|
+
},
|
|
1072
|
+
"roles.tiny.filters.preferredMinThroughput": {
|
|
1073
|
+
"type": "number",
|
|
1074
|
+
"description": "Soft throughput floor for tiny routes (tok/s; 0 = off) — a below-floor route sorts last but is never dropped",
|
|
1075
|
+
"default": 0,
|
|
1076
|
+
"min": 0
|
|
1077
|
+
},
|
|
561
1078
|
"roles.tiny.lambda": {
|
|
562
1079
|
"type": "number",
|
|
563
1080
|
"description": "Explicit λ ($ per quality point) override for tiny",
|
|
@@ -601,7 +1118,53 @@
|
|
|
601
1118
|
"type": "enum",
|
|
602
1119
|
"description": "Thinking level appended to the task selector",
|
|
603
1120
|
"default": "auto",
|
|
604
|
-
"values": [
|
|
1121
|
+
"values": [
|
|
1122
|
+
"off",
|
|
1123
|
+
"minimal",
|
|
1124
|
+
"low",
|
|
1125
|
+
"medium",
|
|
1126
|
+
"high",
|
|
1127
|
+
"xhigh",
|
|
1128
|
+
"max",
|
|
1129
|
+
"auto"
|
|
1130
|
+
]
|
|
1131
|
+
},
|
|
1132
|
+
"roles.task.providerPin": {
|
|
1133
|
+
"type": "string",
|
|
1134
|
+
"description": "Provider slug the task role's requests are pinned to (OpenRouter @<slug> routing; empty = default routing)"
|
|
1135
|
+
},
|
|
1136
|
+
"roles.task.cacheHitRate": {
|
|
1137
|
+
"type": "number",
|
|
1138
|
+
"description": "Assumed cache-hit rate (0–1) for task's input tokens; blends each route's cache-read price before the 3:1 blend (0 = off)",
|
|
1139
|
+
"default": 0,
|
|
1140
|
+
"min": 0,
|
|
1141
|
+
"max": 1,
|
|
1142
|
+
"step": 0.01
|
|
1143
|
+
},
|
|
1144
|
+
"roles.task.features.endpointCeilings": {
|
|
1145
|
+
"type": "boolean",
|
|
1146
|
+
"description": "Enable the Endpoint capability ceilings capability for the task role",
|
|
1147
|
+
"default": false
|
|
1148
|
+
},
|
|
1149
|
+
"roles.task.features.cachePricing": {
|
|
1150
|
+
"type": "boolean",
|
|
1151
|
+
"description": "Enable the Cache-read pricing capability for the task role",
|
|
1152
|
+
"default": false
|
|
1153
|
+
},
|
|
1154
|
+
"roles.task.features.providerPinning": {
|
|
1155
|
+
"type": "boolean",
|
|
1156
|
+
"description": "Enable the Best-route provider pinning capability for the task role",
|
|
1157
|
+
"default": false
|
|
1158
|
+
},
|
|
1159
|
+
"roles.task.features.costCap": {
|
|
1160
|
+
"type": "boolean",
|
|
1161
|
+
"description": "Enable the Cost cap capability for the task role",
|
|
1162
|
+
"default": false
|
|
1163
|
+
},
|
|
1164
|
+
"roles.task.preferOwnProvider": {
|
|
1165
|
+
"type": "boolean",
|
|
1166
|
+
"description": "Bind task requests to each model's best provider route (soft preference; never drops a model)",
|
|
1167
|
+
"default": false
|
|
605
1168
|
},
|
|
606
1169
|
"roles.task.required": {
|
|
607
1170
|
"type": "string",
|
|
@@ -613,6 +1176,35 @@
|
|
|
613
1176
|
"description": "Restrict the task pool to image-capable models",
|
|
614
1177
|
"default": false
|
|
615
1178
|
},
|
|
1179
|
+
"roles.task.filters.tools": {
|
|
1180
|
+
"type": "boolean",
|
|
1181
|
+
"description": "Restrict the task pool to models with a tool-capable route",
|
|
1182
|
+
"default": false
|
|
1183
|
+
},
|
|
1184
|
+
"roles.task.filters.minContextTokens": {
|
|
1185
|
+
"type": "number",
|
|
1186
|
+
"description": "Drop task routes whose endpoint context is below this (tokens; 0 = off)",
|
|
1187
|
+
"default": 0,
|
|
1188
|
+
"min": 0
|
|
1189
|
+
},
|
|
1190
|
+
"roles.task.filters.minOutputTokens": {
|
|
1191
|
+
"type": "number",
|
|
1192
|
+
"description": "Drop task routes whose endpoint output ceiling is below this (tokens; 0 = off)",
|
|
1193
|
+
"default": 0,
|
|
1194
|
+
"min": 0
|
|
1195
|
+
},
|
|
1196
|
+
"roles.task.filters.maxPriceUsdPerM": {
|
|
1197
|
+
"type": "number",
|
|
1198
|
+
"description": "Drop task models whose role-priced blend exceeds this ($/M; 0 = off)",
|
|
1199
|
+
"default": 0,
|
|
1200
|
+
"min": 0
|
|
1201
|
+
},
|
|
1202
|
+
"roles.task.filters.preferredMinThroughput": {
|
|
1203
|
+
"type": "number",
|
|
1204
|
+
"description": "Soft throughput floor for task routes (tok/s; 0 = off) — a below-floor route sorts last but is never dropped",
|
|
1205
|
+
"default": 0,
|
|
1206
|
+
"min": 0
|
|
1207
|
+
},
|
|
616
1208
|
"roles.task.lambda": {
|
|
617
1209
|
"type": "number",
|
|
618
1210
|
"description": "Explicit λ ($ per quality point) override for task",
|
|
@@ -680,7 +1272,53 @@
|
|
|
680
1272
|
"type": "enum",
|
|
681
1273
|
"description": "Thinking level appended to the advisor selector",
|
|
682
1274
|
"default": "auto",
|
|
683
|
-
"values": [
|
|
1275
|
+
"values": [
|
|
1276
|
+
"off",
|
|
1277
|
+
"minimal",
|
|
1278
|
+
"low",
|
|
1279
|
+
"medium",
|
|
1280
|
+
"high",
|
|
1281
|
+
"xhigh",
|
|
1282
|
+
"max",
|
|
1283
|
+
"auto"
|
|
1284
|
+
]
|
|
1285
|
+
},
|
|
1286
|
+
"roles.advisor.providerPin": {
|
|
1287
|
+
"type": "string",
|
|
1288
|
+
"description": "Provider slug the advisor role's requests are pinned to (OpenRouter @<slug> routing; empty = default routing)"
|
|
1289
|
+
},
|
|
1290
|
+
"roles.advisor.cacheHitRate": {
|
|
1291
|
+
"type": "number",
|
|
1292
|
+
"description": "Assumed cache-hit rate (0–1) for advisor's input tokens; blends each route's cache-read price before the 3:1 blend (0 = off)",
|
|
1293
|
+
"default": 0,
|
|
1294
|
+
"min": 0,
|
|
1295
|
+
"max": 1,
|
|
1296
|
+
"step": 0.01
|
|
1297
|
+
},
|
|
1298
|
+
"roles.advisor.features.endpointCeilings": {
|
|
1299
|
+
"type": "boolean",
|
|
1300
|
+
"description": "Enable the Endpoint capability ceilings capability for the advisor role",
|
|
1301
|
+
"default": false
|
|
1302
|
+
},
|
|
1303
|
+
"roles.advisor.features.cachePricing": {
|
|
1304
|
+
"type": "boolean",
|
|
1305
|
+
"description": "Enable the Cache-read pricing capability for the advisor role",
|
|
1306
|
+
"default": false
|
|
1307
|
+
},
|
|
1308
|
+
"roles.advisor.features.providerPinning": {
|
|
1309
|
+
"type": "boolean",
|
|
1310
|
+
"description": "Enable the Best-route provider pinning capability for the advisor role",
|
|
1311
|
+
"default": false
|
|
1312
|
+
},
|
|
1313
|
+
"roles.advisor.features.costCap": {
|
|
1314
|
+
"type": "boolean",
|
|
1315
|
+
"description": "Enable the Cost cap capability for the advisor role",
|
|
1316
|
+
"default": false
|
|
1317
|
+
},
|
|
1318
|
+
"roles.advisor.preferOwnProvider": {
|
|
1319
|
+
"type": "boolean",
|
|
1320
|
+
"description": "Bind advisor requests to each model's best provider route (soft preference; never drops a model)",
|
|
1321
|
+
"default": false
|
|
684
1322
|
},
|
|
685
1323
|
"roles.advisor.required": {
|
|
686
1324
|
"type": "string",
|
|
@@ -692,23 +1330,44 @@
|
|
|
692
1330
|
"description": "Restrict the advisor pool to image-capable models",
|
|
693
1331
|
"default": false
|
|
694
1332
|
},
|
|
695
|
-
"roles.advisor.
|
|
1333
|
+
"roles.advisor.filters.tools": {
|
|
1334
|
+
"type": "boolean",
|
|
1335
|
+
"description": "Restrict the advisor pool to models with a tool-capable route",
|
|
1336
|
+
"default": false
|
|
1337
|
+
},
|
|
1338
|
+
"roles.advisor.filters.minContextTokens": {
|
|
696
1339
|
"type": "number",
|
|
697
|
-
"description": "
|
|
1340
|
+
"description": "Drop advisor routes whose endpoint context is below this (tokens; 0 = off)",
|
|
1341
|
+
"default": 0,
|
|
698
1342
|
"min": 0
|
|
699
1343
|
},
|
|
700
|
-
"roles.advisor.
|
|
1344
|
+
"roles.advisor.filters.minOutputTokens": {
|
|
701
1345
|
"type": "number",
|
|
702
|
-
"description": "
|
|
703
|
-
"default": 0
|
|
704
|
-
"min": 0
|
|
705
|
-
|
|
706
|
-
|
|
1346
|
+
"description": "Drop advisor routes whose endpoint output ceiling is below this (tokens; 0 = off)",
|
|
1347
|
+
"default": 0,
|
|
1348
|
+
"min": 0
|
|
1349
|
+
},
|
|
1350
|
+
"roles.advisor.filters.maxPriceUsdPerM": {
|
|
1351
|
+
"type": "number",
|
|
1352
|
+
"description": "Drop advisor models whose role-priced blend exceeds this ($/M; 0 = off)",
|
|
1353
|
+
"default": 0,
|
|
1354
|
+
"min": 0
|
|
1355
|
+
},
|
|
1356
|
+
"roles.advisor.filters.preferredMinThroughput": {
|
|
1357
|
+
"type": "number",
|
|
1358
|
+
"description": "Soft throughput floor for advisor routes (tok/s; 0 = off) — a below-floor route sorts last but is never dropped",
|
|
1359
|
+
"default": 0,
|
|
1360
|
+
"min": 0
|
|
1361
|
+
},
|
|
1362
|
+
"roles.advisor.lambda": {
|
|
1363
|
+
"type": "number",
|
|
1364
|
+
"description": "Explicit λ ($ per quality point) override for advisor",
|
|
1365
|
+
"min": 0
|
|
707
1366
|
},
|
|
708
1367
|
"roles.advisor.weights.general": {
|
|
709
1368
|
"type": "number",
|
|
710
1369
|
"description": "Weight of general in the advisor quality composite",
|
|
711
|
-
"default": 0.
|
|
1370
|
+
"default": 0.5947,
|
|
712
1371
|
"min": 0,
|
|
713
1372
|
"max": 1,
|
|
714
1373
|
"step": 0.001
|
|
@@ -751,7 +1410,53 @@
|
|
|
751
1410
|
"type": "enum",
|
|
752
1411
|
"description": "Thinking level appended to the designer selector",
|
|
753
1412
|
"default": "auto",
|
|
754
|
-
"values": [
|
|
1413
|
+
"values": [
|
|
1414
|
+
"off",
|
|
1415
|
+
"minimal",
|
|
1416
|
+
"low",
|
|
1417
|
+
"medium",
|
|
1418
|
+
"high",
|
|
1419
|
+
"xhigh",
|
|
1420
|
+
"max",
|
|
1421
|
+
"auto"
|
|
1422
|
+
]
|
|
1423
|
+
},
|
|
1424
|
+
"roles.designer.providerPin": {
|
|
1425
|
+
"type": "string",
|
|
1426
|
+
"description": "Provider slug the designer role's requests are pinned to (OpenRouter @<slug> routing; empty = default routing)"
|
|
1427
|
+
},
|
|
1428
|
+
"roles.designer.cacheHitRate": {
|
|
1429
|
+
"type": "number",
|
|
1430
|
+
"description": "Assumed cache-hit rate (0–1) for designer's input tokens; blends each route's cache-read price before the 3:1 blend (0 = off)",
|
|
1431
|
+
"default": 0,
|
|
1432
|
+
"min": 0,
|
|
1433
|
+
"max": 1,
|
|
1434
|
+
"step": 0.01
|
|
1435
|
+
},
|
|
1436
|
+
"roles.designer.features.endpointCeilings": {
|
|
1437
|
+
"type": "boolean",
|
|
1438
|
+
"description": "Enable the Endpoint capability ceilings capability for the designer role",
|
|
1439
|
+
"default": false
|
|
1440
|
+
},
|
|
1441
|
+
"roles.designer.features.cachePricing": {
|
|
1442
|
+
"type": "boolean",
|
|
1443
|
+
"description": "Enable the Cache-read pricing capability for the designer role",
|
|
1444
|
+
"default": false
|
|
1445
|
+
},
|
|
1446
|
+
"roles.designer.features.providerPinning": {
|
|
1447
|
+
"type": "boolean",
|
|
1448
|
+
"description": "Enable the Best-route provider pinning capability for the designer role",
|
|
1449
|
+
"default": false
|
|
1450
|
+
},
|
|
1451
|
+
"roles.designer.features.costCap": {
|
|
1452
|
+
"type": "boolean",
|
|
1453
|
+
"description": "Enable the Cost cap capability for the designer role",
|
|
1454
|
+
"default": false
|
|
1455
|
+
},
|
|
1456
|
+
"roles.designer.preferOwnProvider": {
|
|
1457
|
+
"type": "boolean",
|
|
1458
|
+
"description": "Bind designer requests to each model's best provider route (soft preference; never drops a model)",
|
|
1459
|
+
"default": false
|
|
755
1460
|
},
|
|
756
1461
|
"roles.designer.required": {
|
|
757
1462
|
"type": "string",
|
|
@@ -763,6 +1468,35 @@
|
|
|
763
1468
|
"description": "Restrict the designer pool to image-capable models",
|
|
764
1469
|
"default": true
|
|
765
1470
|
},
|
|
1471
|
+
"roles.designer.filters.tools": {
|
|
1472
|
+
"type": "boolean",
|
|
1473
|
+
"description": "Restrict the designer pool to models with a tool-capable route",
|
|
1474
|
+
"default": false
|
|
1475
|
+
},
|
|
1476
|
+
"roles.designer.filters.minContextTokens": {
|
|
1477
|
+
"type": "number",
|
|
1478
|
+
"description": "Drop designer routes whose endpoint context is below this (tokens; 0 = off)",
|
|
1479
|
+
"default": 0,
|
|
1480
|
+
"min": 0
|
|
1481
|
+
},
|
|
1482
|
+
"roles.designer.filters.minOutputTokens": {
|
|
1483
|
+
"type": "number",
|
|
1484
|
+
"description": "Drop designer routes whose endpoint output ceiling is below this (tokens; 0 = off)",
|
|
1485
|
+
"default": 0,
|
|
1486
|
+
"min": 0
|
|
1487
|
+
},
|
|
1488
|
+
"roles.designer.filters.maxPriceUsdPerM": {
|
|
1489
|
+
"type": "number",
|
|
1490
|
+
"description": "Drop designer models whose role-priced blend exceeds this ($/M; 0 = off)",
|
|
1491
|
+
"default": 0,
|
|
1492
|
+
"min": 0
|
|
1493
|
+
},
|
|
1494
|
+
"roles.designer.filters.preferredMinThroughput": {
|
|
1495
|
+
"type": "number",
|
|
1496
|
+
"description": "Soft throughput floor for designer routes (tok/s; 0 = off) — a below-floor route sorts last but is never dropped",
|
|
1497
|
+
"default": 0,
|
|
1498
|
+
"min": 0
|
|
1499
|
+
},
|
|
766
1500
|
"roles.designer.lambda": {
|
|
767
1501
|
"type": "number",
|
|
768
1502
|
"description": "Explicit λ ($ per quality point) override for designer",
|
|
@@ -779,7 +1513,7 @@
|
|
|
779
1513
|
"roles.designer.weights.code": {
|
|
780
1514
|
"type": "number",
|
|
781
1515
|
"description": "Weight of code in the designer quality composite",
|
|
782
|
-
"default": 0.
|
|
1516
|
+
"default": 0.06,
|
|
783
1517
|
"min": 0,
|
|
784
1518
|
"max": 1,
|
|
785
1519
|
"step": 0.001
|
|
@@ -795,7 +1529,7 @@
|
|
|
795
1529
|
"roles.designer.weights.throughput": {
|
|
796
1530
|
"type": "number",
|
|
797
1531
|
"description": "Weight of throughput in the designer quality composite",
|
|
798
|
-
"default": 0.
|
|
1532
|
+
"default": 0.15,
|
|
799
1533
|
"min": 0,
|
|
800
1534
|
"max": 1,
|
|
801
1535
|
"step": 0.001
|
|
@@ -803,7 +1537,7 @@
|
|
|
803
1537
|
"roles.designer.weights.price": {
|
|
804
1538
|
"type": "number",
|
|
805
1539
|
"description": "Weight of price in the designer quality composite",
|
|
806
|
-
"default": 0.
|
|
1540
|
+
"default": 0.17,
|
|
807
1541
|
"min": 0,
|
|
808
1542
|
"max": 1,
|
|
809
1543
|
"step": 0.001
|