llm-orchestrator 1.0.7 → 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/.claude-plugin/plugin.json +1 -1
- package/README.md +38 -1
- package/SKILL.md +6 -2
- package/adapters/hooks.mjs +192 -0
- package/bin/cli-options.mjs +5 -1
- package/bin/doctor.mjs +32 -2
- package/bin/gate.mjs +53 -0
- package/bin/install.mjs +6 -1
- package/bin/llm-orchestrator.mjs +9 -1
- package/bin/model-thinking-report.mjs +4 -1
- package/bin/run.mjs +27 -0
- package/hooks/hooks.json +38 -0
- package/lib/adapter-renderer.mjs +46 -1
- package/lib/flow-gate.mjs +395 -0
- package/lib/installation.mjs +105 -10
- package/lib/router.mjs +44 -1
- package/models/model-thinking-data.json +17 -0
- package/models/model-thinking-matrix.md +4 -0
- package/models/top-models.json +60 -2
- package/package.json +2 -1
- package/policies/routing.md +9 -4
- package/protocol.md +6 -1
- package/registries/routing-matrix.json +7 -6
- package/schemas/flow-ledger.schema.json +60 -0
- package/schemas/installation-manifest.schema.json +21 -1
- package/schemas/routing-matrix.schema.json +10 -1
- package/schemas/top-models.schema.json +10 -1
|
@@ -43,6 +43,7 @@ Benchmark cost index: `100 × observed benchmark cost / $0.50`; GPT-5.6 Sol medi
|
|
|
43
43
|
| claude-opus-5 | Claude Opus 5 | high | 48 | $3.61 | 722 | 125 | +$1.42 (1.65×); +3 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
44
44
|
| claude-opus-5 | Claude Opus 5 | xhigh | 50 | $4.88 | 976 | 125 | +$1.27 (1.35×); +2 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
45
45
|
| claude-opus-5 | Claude Opus 5 | max | 51 | $5.86 | 1172 | 125 | +$0.98 (1.20×); +1 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
46
|
+
| claude-opus-5-5 | Claude Opus 5.5 | max | 58 | $5.98 | 1196 | 100 | — | Segregate from standalone cross-model comparisons. |
|
|
46
47
|
| claude-fable-5-1 | Claude Fable 5.1 | low | 47 | $2.37 | 474 | 250 | — | Segregate from standalone cross-model comparisons. |
|
|
47
48
|
| claude-fable-5-1 | Claude Fable 5.1 | medium | 49 | $2.98 | 596 | 250 | +$0.61 (1.26×); +2 score | Segregate from standalone cross-model comparisons. |
|
|
48
49
|
| claude-fable-5-1 | Claude Fable 5.1 | high | 51 | $3.91 | 782 | 250 | +$0.93 (1.31×); +2 score | Segregate from standalone cross-model comparisons. |
|
|
@@ -88,6 +89,7 @@ Benchmark cost index: `100 × observed benchmark cost / $0.50`; GPT-5.6 Sol medi
|
|
|
88
89
|
| GPT-6 Astra | $10.000 | $50.000 | AA-observed price; not a live account tariff. |
|
|
89
90
|
| Claude Sonnet 5 | $2.000 | $10.000 | AA-observed price; not a live account tariff. |
|
|
90
91
|
| Claude Opus 5 | $5.000 | $25.000 | AA-observed price; not a live account tariff. |
|
|
92
|
+
| Claude Opus 5.5 | $4.000 | $20.000 | AA-observed price; not a live account tariff. |
|
|
91
93
|
| Claude Fable 5.1 | $10.000 | $50.000 | AA-observed price; not a live account tariff. |
|
|
92
94
|
| Claude Fable 5 | $10.000 | $50.000 | AA-observed price; not a live account tariff. |
|
|
93
95
|
| Claude Haiku 4.5 | $1.000 | $5.000 | AA-observed price; not a live account tariff. |
|
|
@@ -114,6 +116,7 @@ Benchmark cost index: `100 × observed benchmark cost / $0.50`; GPT-5.6 Sol medi
|
|
|
114
116
|
| GPT-6 Astra | `gpt-6-astra` | Canonical ID recorded in this dataset; exposure in a specific harness remains unverified. |
|
|
115
117
|
| Claude Sonnet 5 | `claude-sonnet-5` | Canonical ID recorded in this dataset; exposure in a specific harness remains unverified. |
|
|
116
118
|
| Claude Opus 5 | `claude-opus-5` | Canonical ID recorded in this dataset; exposure in a specific harness remains unverified. |
|
|
119
|
+
| Claude Opus 5.5 | `claude-opus-5-5` | Canonical ID recorded in this dataset; exposure in a specific harness remains unverified. |
|
|
117
120
|
| Claude Fable 5.1 | `claude-fable-5-1` | Canonical ID recorded in this dataset; exposure in a specific harness remains unverified. |
|
|
118
121
|
| Claude Fable 5 | `claude-fable-5` | Canonical ID recorded in this dataset; exposure in a specific harness remains unverified. |
|
|
119
122
|
| Claude Haiku 4.5 | `claude-haiku-4-5` | Canonical ID recorded in this dataset; exposure in a specific harness remains unverified. |
|
|
@@ -138,6 +141,7 @@ Benchmark cost index: `100 × observed benchmark cost / $0.50`; GPT-5.6 Sol medi
|
|
|
138
141
|
- [GPT-6 Astra](https://artificialanalysis.ai/models/gpt-6-astra)
|
|
139
142
|
- [Claude Sonnet 5](https://artificialanalysis.ai/models/claude-sonnet-5)
|
|
140
143
|
- [Claude Opus 5](https://artificialanalysis.ai/models/claude-opus-5)
|
|
144
|
+
- [Claude Opus 5.5](https://artificialanalysis.ai/models/claude-opus-5-5) — Only the max-effort configuration is published (Adaptive Reasoning, Max Effort, Default Fallback); low–xhigh are not measured. The score includes the benchmark default fallback.
|
|
141
145
|
- [Claude Fable 5.1](https://artificialanalysis.ai/models/claude-fable-5-1) — All displayed scores include the benchmark default fallback and are not standalone scores.
|
|
142
146
|
- [Claude Fable 5](https://artificialanalysis.ai/models/claude-fable-5) — AA v4.3.2 max result uses Opus 4.8 default fallback. This legacy catalog model is not in the current leaderboard filter; segregate it from standalone cross-model comparisons.
|
|
143
147
|
- [Claude Haiku 4.5](https://artificialanalysis.ai/models/claude-4-5-haiku) — Its API thinking budget is not an effort enum. The disabled score 15 is incomplete and intentionally excluded.
|
package/models/top-models.json
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"X": {"min": 45, "max": 50},
|
|
24
24
|
"F": {"min": 51, "max": null}
|
|
25
25
|
},
|
|
26
|
-
"note": "Bands are calibrated on the incumbents' measured range: Luna tops W at 37; Terra spans 38–42 in S; Sol 33–47 and Opus 39–50 straddle into X, whose seats sit at 45–50; Astra 46–53 and Fable 5.1 47–53 cover F from 51 up. They place *candidates*, which sit on no provider ladder. An incumbent's `tier` is its ladder seat and is never re-derived from a score — which is why two incumbent points fall outside their own band: Opus 5 `max` (51, above its `xhigh` policy cap) and Fable 5 `max` (50, its only measured point and above the unmeasured `high` that is the actual F default)."
|
|
26
|
+
"note": "Bands are calibrated on the incumbents' measured range: Luna tops W at 37; Terra spans 38–42 in S; Sol 33–47 and Opus 5 39–50 straddle into X, whose seats sit at 45–50; Astra 46–53 and Fable 5.1 47–53 cover F from 51 up. They place *candidates*, which sit on no provider ladder. An incumbent's `tier` is its ladder seat and is never re-derived from a score — which is why two incumbent points fall outside their own band: Opus 5 `max` (51, above its `xhigh` policy cap) and Fable 5 `max` (50, its only measured point and above the unmeasured `high` that is the actual F default)."
|
|
27
27
|
},
|
|
28
28
|
"indices_note": "`indices.thinking_cost_index` is 100 × measured $/task ÷ $0.50, the dataset's benchmark cost baseline (`index_baselines.benchmark_cost_usd`). GPT-5.6 Sol `medium` costs exactly $0.50/task, so it is index 100 by construction. `indices.marginal_thinking` holds, for each adjacent pair of fully measured efforts, the displayed-score delta and the cost multiplier of the step — the price of one more notch of thinking. Efforts with no published cost carry a null index and open no marginal pair; nothing is interpolated.",
|
|
29
29
|
"models": [
|
|
@@ -491,7 +491,7 @@
|
|
|
491
491
|
"share_max": null
|
|
492
492
|
},
|
|
493
493
|
"notes": [
|
|
494
|
-
"Opus 4.8/4.7/4.6 share the $5/$25 price and are fallback-only.",
|
|
494
|
+
"Fallback for Claude Opus 5.5 on the Claude X seat: dispatched when Opus 5.5 is not exposed, refuses (it runs without Opus 5.5 thinking blocks), or is rolled back. Opus 4.8/4.7/4.6 share the $5/$25 price and are fallback-only below it.",
|
|
495
495
|
"Every measured Opus config is dominated on $/task by a Sol or Astra config; it stays the Claude X seat for single-provider flows and retention-constrained work."
|
|
496
496
|
],
|
|
497
497
|
"sources": [
|
|
@@ -499,6 +499,64 @@
|
|
|
499
499
|
],
|
|
500
500
|
"observed_at": "2026-09-22"
|
|
501
501
|
},
|
|
502
|
+
{
|
|
503
|
+
"key": "claude-opus-5-5",
|
|
504
|
+
"display_name": "Claude Opus 5.5",
|
|
505
|
+
"provider": "anthropic",
|
|
506
|
+
"ladder": "claude",
|
|
507
|
+
"admission": "incumbent",
|
|
508
|
+
"tier": "X",
|
|
509
|
+
"eligible_tiers": ["X"],
|
|
510
|
+
"supersedes": "claude-opus-5",
|
|
511
|
+
"api_ids": {
|
|
512
|
+
"codex": null,
|
|
513
|
+
"claude": "claude-opus-5-5",
|
|
514
|
+
"opencode": null,
|
|
515
|
+
"kilo": null
|
|
516
|
+
},
|
|
517
|
+
"context_window": 1000000,
|
|
518
|
+
"max_output_tokens": 128000,
|
|
519
|
+
"thinking": {
|
|
520
|
+
"control": "effort",
|
|
521
|
+
"levels": ["low", "medium", "high", "xhigh", "max"],
|
|
522
|
+
"unmeasured_levels": ["low", "medium", "high", "xhigh"],
|
|
523
|
+
"always_on": true,
|
|
524
|
+
"default_for_tier": "high",
|
|
525
|
+
"note": "Thinking is always on: omit `thinking` or send `adaptive`; `disabled` and `budget_tokens` return 400 at every effort. The API default effort is `medium` (one below Opus 5), so X always sets effort explicitly — `high` for T3, `xhigh` for T4. Forced `tool_choice` any/tool returns 400 — use `auto` + instruction, `strict: true`, or structured outputs. Thinking blocks are model-bound; keep transcripts append-only. Computer use only via `computer_toolset_20260801`."
|
|
526
|
+
},
|
|
527
|
+
"price": {
|
|
528
|
+
"input_usd_per_mtok": 4,
|
|
529
|
+
"output_usd_per_mtok": 20,
|
|
530
|
+
"cache_read_usd_per_mtok": 0.2,
|
|
531
|
+
"cache_write_multiplier": 1.25,
|
|
532
|
+
"fast_mode_note": "`speed: \"fast\"` reprices Opus 5.5 to $8/$40 (Claude API only). Off by default; it never replaces an F dispatch."
|
|
533
|
+
},
|
|
534
|
+
"long_context_surcharge": null,
|
|
535
|
+
"measured": {
|
|
536
|
+
"max": {"score": 58, "usd_per_task": 5.98}
|
|
537
|
+
},
|
|
538
|
+
"measurement_note": "Only `max` is published (Adaptive Reasoning, Max Effort, Default Fallback); the score includes the benchmark default fallback. low–xhigh are unmeasured, so a dispatch at them carries no $/task estimate until Artificial Analysis publishes them.",
|
|
539
|
+
"indices": {
|
|
540
|
+
"thinking_cost_index": {
|
|
541
|
+
"max": 1196
|
|
542
|
+
},
|
|
543
|
+
"marginal_thinking": {}
|
|
544
|
+
},
|
|
545
|
+
"caps": {
|
|
546
|
+
"max_effort": "xhigh",
|
|
547
|
+
"share_max": null
|
|
548
|
+
},
|
|
549
|
+
"notes": [
|
|
550
|
+
"Successor to Claude Opus 5 on the Claude X seat. Every per-token price is lower (Anthropic list: input $4 vs $5, output $20 vs $25, cache read $0.20 vs $0.50, cache write $5 vs $6.25), with the same 1M context, 128K output and tokenizer, so the router ranks it ahead of Opus 5 at the same effort; Opus 5 stays routable as its fallback.",
|
|
551
|
+
"Only `max` is independently measured (Artificial Analysis 58 @ $5.98, above every other shortlisted config). Anthropic's launch table puts it above Opus 5 on every published benchmark (Terminal-Bench 4.0 66.4 vs 52.3, FrontierCode v1.1 54.4 vs 48.0, CursorBench 4.0 57.8 vs 46.6) and claims ~40% lower cost on typical workloads — vendor figures, kept as notes and never used as $/task estimates.",
|
|
552
|
+
"Seat stays X: an incumbent tier is never re-derived from a score."
|
|
553
|
+
],
|
|
554
|
+
"sources": [
|
|
555
|
+
"https://artificialanalysis.ai/models/claude-opus-5-5",
|
|
556
|
+
"https://www.anthropic.com/claude-opus-5-5"
|
|
557
|
+
],
|
|
558
|
+
"observed_at": "2026-09-22"
|
|
559
|
+
},
|
|
502
560
|
{
|
|
503
561
|
"key": "claude-fable-5",
|
|
504
562
|
"display_name": "Claude Fable 5",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "llm-orchestrator",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Write /task once — it plans the work, shards it across parallel subagents, gates every phase and verifies before claiming done. Claude Code, Codex, OpenCode, Kilo.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"LICENSE",
|
|
48
48
|
"NOTICE",
|
|
49
49
|
"skills",
|
|
50
|
+
"hooks",
|
|
50
51
|
".claude-plugin"
|
|
51
52
|
],
|
|
52
53
|
"scripts": {
|
package/policies/routing.md
CHANGED
|
@@ -76,7 +76,7 @@ the incumbents below are role mappings, not guarantees of availability.
|
|
|
76
76
|
| --- | --- | --- | --- |
|
|
77
77
|
| **W** worker | local, mechanical, repetitive, well-defined: code search, classification, extraction, small edits, boilerplate, simple tests, consistency checks, scoped transforms | Haiku 4.5 (`claude-haiku-4-5`) | `gpt-5.6-luna` |
|
|
78
78
|
| **S** standard | default software-engineering model: normal implementation, frontend/backend, moderate debugging, tests, reasonable multi-file refactors, codebase analysis, tool use | Sonnet 5 (`claude-sonnet-5`) | `gpt-5.6-terra` |
|
|
79
|
-
| **X** senior | hard debugging, architecture, concurrency, migrations, security, auth, payments, billing, backwards compatibility, critical code review, many invariants | Opus 5 (`claude-opus-5`) | `gpt-5.6-sol` |
|
|
79
|
+
| **X** senior | hard debugging, architecture, concurrency, migrations, security, auth, payments, billing, backwards compatibility, critical code review, many invariants | Opus 5.5 (`claude-opus-5-5`), falling back to Opus 5 (`claude-opus-5`) | `gpt-5.6-sol` |
|
|
80
80
|
| **F** frontier | exceptional escalation: very ambiguous, long-horizon, cross-system, major architecture, very large codebase, planning under heavy constraints, or when X fails to produce a solid solution | Fable 5 (`claude-fable-5`) — default F. Fable 5.1 (`claude-fable-5-1`) is a hard-capped exception: **≤2% of all dispatches**, explicit request or documented F-T4 failure on Fable 5 only | GPT-6 Astra (`gpt-6-astra`) — a real single-agent frontier tier, no decomposition workaround needed |
|
|
81
81
|
|
|
82
82
|
Escalation order within a provider: **W → S → X → F**.
|
|
@@ -87,15 +87,20 @@ Verified prices (Sep 2026, provider pricing pages), USD in/out per MTok:
|
|
|
87
87
|
| --- | --- | --- | --- | --- |
|
|
88
88
|
| W | Haiku 4.5 (200K ctx) | $1 / $5 | `gpt-5.6-luna` (1.05M ctx) | $0.20 / $1.20 |
|
|
89
89
|
| S | Sonnet 5 (1M ctx) | $2 / $10 | `gpt-5.6-terra` (1.05M ctx) | $2 / $12 |
|
|
90
|
-
| X | Opus 5 (1M ctx)
|
|
90
|
+
| X | Opus 5.5 (1M ctx); fallback Opus 5 $5 / $25 | $4 / $20 | `gpt-5.6-sol` (1.05M ctx) | $4 / $20 |
|
|
91
91
|
| F | Fable 5 (1M ctx) | $10 / $50 | `gpt-6-astra` (1.05M ctx) | $10 / $50 list — **but the cheapest F per completed task of any model here** |
|
|
92
92
|
| F+ (≤2%) | Fable 5.1 (1M ctx) | $10 / $50 list — **effective cost significantly higher** (always-on thinking, longer turns, more output tokens per task) | — (Astra covers F) | — |
|
|
93
93
|
|
|
94
94
|
Claude notes: Fable 5.1 shares Fable 5's list price but costs significantly more per completed task
|
|
95
95
|
— judge it on cost per task, not per token. **When F is needed, use Fable 5; Fable 5.1 is capped at
|
|
96
96
|
≤2% of dispatches.** Fable 5.1 cache reads bill at $0.25/MTok; Fable 5 uses the standard
|
|
97
|
-
10%-of-input cache-read rate. Opus 5
|
|
98
|
-
|
|
97
|
+
10%-of-input cache-read rate. Opus 5.5 is at or below Opus 5 on every per-token price (input $4 vs $5,
|
|
98
|
+
output $20 vs $25, cache read $0.20 vs $0.50, cache write $5 vs $6.25); only its `max` effort is
|
|
99
|
+
independently measured so far, so the router ranks it ahead of Opus 5 by `supersedes` price
|
|
100
|
+
succession — never by an estimated $/task — and keeps Opus 5 as the fallback when 5.5 is not exposed
|
|
101
|
+
or refuses. Opus 5.5's API default effort is `medium`, one below Opus 5, so X always sets effort
|
|
102
|
+
explicitly. Fast mode (`speed: "fast"`) reprices Opus 5.5 to $8 / $40 and Opus 5 to $10 / $50 —
|
|
103
|
+
never a replacement for an F dispatch, off by default.
|
|
99
104
|
Legacy fallbacks: Opus 4.8 / 4.7 / 4.6 $5 / $25, Sonnet 4.6 $3 / $15 (more expensive than Sonnet 5 —
|
|
100
105
|
never pick it for cost).
|
|
101
106
|
|
package/protocol.md
CHANGED
|
@@ -33,7 +33,12 @@ can target it.
|
|
|
33
33
|
|
|
34
34
|
## Pre-Evaluation (MANDATORY for every request, auto, <30s)
|
|
35
35
|
|
|
36
|
-
No dispatch, edit or shell command may precede this object.
|
|
36
|
+
No dispatch, edit or shell command may precede this object. Opening the run
|
|
37
|
+
(`llm-orchestrator run start --type <TASK_TYPE>`) follows it immediately.
|
|
38
|
+
|
|
39
|
+
**Trivial tasks.** A one-line, obviously scoped change (a typo, a version bump) may skip the full
|
|
40
|
+
flow, but only by declaring it: `llm-orchestrator run start --trivial "<reason>"`. The
|
|
41
|
+
declaration and its reason are recorded; an undeclared skip is recorded as a skipped flow.
|
|
37
42
|
|
|
38
43
|
```json
|
|
39
44
|
{
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
"X": {
|
|
19
19
|
"name": "senior",
|
|
20
20
|
"responsibility": "Hard debugging, architecture, concurrency, migrations, security, auth, payments, billing, backwards compatibility, critical code review, many invariants.",
|
|
21
|
-
"incumbents": {"claude": "claude-opus-5", "codex": "gpt-5.6-sol"}
|
|
21
|
+
"incumbents": {"claude": "claude-opus-5-5", "codex": "gpt-5.6-sol"},
|
|
22
|
+
"fallbacks": {"claude": ["claude-opus-5"]}
|
|
22
23
|
},
|
|
23
24
|
"F": {
|
|
24
25
|
"name": "frontier",
|
|
@@ -97,15 +98,15 @@
|
|
|
97
98
|
"codex": {"model": "gpt-5.6-terra", "effort": "high"}
|
|
98
99
|
},
|
|
99
100
|
"X T2": {
|
|
100
|
-
"claude": {"model": "claude-opus-5", "effort": "medium"},
|
|
101
|
+
"claude": {"model": "claude-opus-5-5", "effort": "medium"},
|
|
101
102
|
"codex": {"model": "gpt-5.6-sol", "effort": "medium"}
|
|
102
103
|
},
|
|
103
104
|
"X T3": {
|
|
104
|
-
"claude": {"model": "claude-opus-5", "effort": "high"},
|
|
105
|
+
"claude": {"model": "claude-opus-5-5", "effort": "high"},
|
|
105
106
|
"codex": {"model": "gpt-5.6-sol", "effort": "high"}
|
|
106
107
|
},
|
|
107
108
|
"X T4": {
|
|
108
|
-
"claude": {"model": "claude-opus-5", "effort": "xhigh"},
|
|
109
|
+
"claude": {"model": "claude-opus-5-5", "effort": "xhigh"},
|
|
109
110
|
"codex": {"model": "gpt-5.6-sol", "effort": "high", "independent_second_reviewer": {"model": "gpt-5.6-sol", "effort": "high"}}
|
|
110
111
|
},
|
|
111
112
|
"F T3": {
|
|
@@ -279,8 +280,8 @@
|
|
|
279
280
|
{"model": "claude-sonnet-5", "effort": "low"},
|
|
280
281
|
{"model": "claude-sonnet-5", "effort": "medium"},
|
|
281
282
|
{"model": "claude-sonnet-5", "effort": "high"},
|
|
282
|
-
{"model": "claude-opus-5", "effort": "high"},
|
|
283
|
-
{"model": "claude-opus-5", "effort": "xhigh"},
|
|
283
|
+
{"model": "claude-opus-5-5", "effort": "high"},
|
|
284
|
+
{"model": "claude-opus-5-5", "effort": "xhigh"},
|
|
284
285
|
{"model": "claude-fable-5", "effort": "high"},
|
|
285
286
|
{"model": "claude-fable-5", "effort": "xhigh"},
|
|
286
287
|
{"model": "claude-fable-5", "effort": "max"},
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_attribution": "llm-orchestrator · created by Bogdan-Gabriel Torcescu · https://www.linkedin.com/in/bogdantorcescu/ · keep this credit when copying or deriving",
|
|
3
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4
|
+
"$id": "https://raw.githubusercontent.com/tbogdan/llm-orchestrator/main/schemas/flow-ledger.schema.json",
|
|
5
|
+
"title": "Flow adherence ledger (.orchestrator-run/)",
|
|
6
|
+
"description": "Per-session state and closed-run history written by `llm-orchestrator gate`. Ids, task types, counts and timestamps only — never prompts, tool inputs or file contents.",
|
|
7
|
+
"$defs": {
|
|
8
|
+
"run": {
|
|
9
|
+
"type": "object",
|
|
10
|
+
"additionalProperties": false,
|
|
11
|
+
"required": ["task_id", "task_type", "trivial", "reason", "opened_at", "planned_shards", "subagents_started", "started_outside_flow"],
|
|
12
|
+
"properties": {
|
|
13
|
+
"task_id": { "type": "string", "minLength": 1 },
|
|
14
|
+
"task_type": { "type": ["string", "null"], "enum": ["INCIDENT", "FEATURE", "BUG_FIX", "REFACTOR", "INVESTIGATION", "DEPLOY", "CONFIG", "REVIEW", "RESEARCH", null] },
|
|
15
|
+
"trivial": { "type": "boolean" },
|
|
16
|
+
"reason": { "type": ["string", "null"] },
|
|
17
|
+
"opened_at": { "type": "number" },
|
|
18
|
+
"planned_shards": { "type": ["integer", "null"], "minimum": 1 },
|
|
19
|
+
"subagents_started": { "type": "integer", "minimum": 0 },
|
|
20
|
+
"started_outside_flow": { "type": "boolean" }
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"session": {
|
|
24
|
+
"type": "object",
|
|
25
|
+
"additionalProperties": false,
|
|
26
|
+
"required": ["version", "session", "run", "prompt_started_at", "nudged", "worked_without_run", "subagents_without_run", "entrypoint_loaded", "seen"],
|
|
27
|
+
"properties": {
|
|
28
|
+
"version": { "const": 1 },
|
|
29
|
+
"session": { "type": "string", "minLength": 1 },
|
|
30
|
+
"run": { "anyOf": [{ "type": "null" }, { "$ref": "#/$defs/run" }] },
|
|
31
|
+
"prompt_started_at": { "type": ["number", "null"] },
|
|
32
|
+
"nudged": { "type": "boolean" },
|
|
33
|
+
"worked_without_run": { "type": "boolean" },
|
|
34
|
+
"subagents_without_run": { "type": "integer", "minimum": 0 },
|
|
35
|
+
"entrypoint_loaded": { "type": "boolean" },
|
|
36
|
+
"seen": { "type": "array", "items": { "type": "string" } }
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"historyLine": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"additionalProperties": false,
|
|
42
|
+
"required": ["session", "task_id", "task_type", "trivial", "reason", "opened_at", "closed_at", "duration_s", "planned_shards", "subagents_started", "started_outside_flow", "skipped_flow", "closed_by"],
|
|
43
|
+
"properties": {
|
|
44
|
+
"session": { "type": "string", "minLength": 1 },
|
|
45
|
+
"task_id": { "type": ["string", "null"] },
|
|
46
|
+
"task_type": { "type": ["string", "null"], "enum": ["INCIDENT", "FEATURE", "BUG_FIX", "REFACTOR", "INVESTIGATION", "DEPLOY", "CONFIG", "REVIEW", "RESEARCH", null] },
|
|
47
|
+
"trivial": { "type": "boolean" },
|
|
48
|
+
"reason": { "type": ["string", "null"] },
|
|
49
|
+
"opened_at": { "type": ["string", "null"] },
|
|
50
|
+
"closed_at": { "type": "string" },
|
|
51
|
+
"duration_s": { "type": ["integer", "null"], "minimum": 0 },
|
|
52
|
+
"planned_shards": { "type": ["integer", "null"], "minimum": 1 },
|
|
53
|
+
"subagents_started": { "type": "integer", "minimum": 0 },
|
|
54
|
+
"started_outside_flow": { "type": "boolean" },
|
|
55
|
+
"skipped_flow": { "type": "boolean" },
|
|
56
|
+
"closed_by": { "enum": ["run_close", "next_prompt", "succession"] }
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -89,7 +89,8 @@
|
|
|
89
89
|
"bridge",
|
|
90
90
|
"native-command",
|
|
91
91
|
"codex-prompt",
|
|
92
|
-
"agent-file"
|
|
92
|
+
"agent-file",
|
|
93
|
+
"flow-plugin"
|
|
93
94
|
]
|
|
94
95
|
}
|
|
95
96
|
}
|
|
@@ -146,6 +147,25 @@
|
|
|
146
147
|
}
|
|
147
148
|
}
|
|
148
149
|
}
|
|
150
|
+
},
|
|
151
|
+
"flow_hooks": {
|
|
152
|
+
"type": "boolean",
|
|
153
|
+
"description": "Whether flow-adherence hooks are installed; a later install without --flow-hooks / --no-flow-hooks keeps this choice."
|
|
154
|
+
},
|
|
155
|
+
"json_entries": {
|
|
156
|
+
"type": "array",
|
|
157
|
+
"description": "Flow-hook groups merged into a user-owned hooks JSON file (.claude/settings.json, .codex/hooks.json). Only the marked groups are owned; the rest of the file is the user's.",
|
|
158
|
+
"items": {
|
|
159
|
+
"type": "object",
|
|
160
|
+
"additionalProperties": false,
|
|
161
|
+
"required": ["scope", "path", "hash", "created_file"],
|
|
162
|
+
"properties": {
|
|
163
|
+
"scope": { "const": "project" },
|
|
164
|
+
"path": { "type": "string", "minLength": 1 },
|
|
165
|
+
"hash": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
|
|
166
|
+
"created_file": { "type": "boolean" }
|
|
167
|
+
}
|
|
168
|
+
}
|
|
149
169
|
}
|
|
150
170
|
}
|
|
151
171
|
}
|
|
@@ -51,7 +51,16 @@
|
|
|
51
51
|
"codex": { "type": "string" }
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
|
-
"capped_exception": { "type": "object" }
|
|
54
|
+
"capped_exception": { "type": "object" },
|
|
55
|
+
"fallbacks": {
|
|
56
|
+
"type": "object",
|
|
57
|
+
"description": "Per-ladder models dispatched when the incumbent is not exposed, refuses, or is rolled back.",
|
|
58
|
+
"properties": {
|
|
59
|
+
"claude": { "type": "array", "items": { "type": "string" } },
|
|
60
|
+
"codex": { "type": "array", "items": { "type": "string" } }
|
|
61
|
+
},
|
|
62
|
+
"additionalProperties": false
|
|
63
|
+
}
|
|
55
64
|
},
|
|
56
65
|
"additionalProperties": false
|
|
57
66
|
}
|
|
@@ -105,7 +105,12 @@
|
|
|
105
105
|
"levels": { "type": "array", "minItems": 1, "items": { "type": "string" } },
|
|
106
106
|
"always_on": { "type": ["boolean", "null"] },
|
|
107
107
|
"default_for_tier": { "type": ["string", "null"] },
|
|
108
|
-
"note": { "type": "string" }
|
|
108
|
+
"note": { "type": "string" },
|
|
109
|
+
"unmeasured_levels": {
|
|
110
|
+
"type": "array",
|
|
111
|
+
"items": { "type": "string" },
|
|
112
|
+
"description": "Efforts the API supports that the benchmark has not measured. Declared explicitly so a dispatch at one of them carries est_usd_per_task null instead of borrowing a measured point."
|
|
113
|
+
}
|
|
109
114
|
},
|
|
110
115
|
"additionalProperties": false
|
|
111
116
|
},
|
|
@@ -149,6 +154,10 @@
|
|
|
149
154
|
}
|
|
150
155
|
},
|
|
151
156
|
"measurement_note": { "type": "string" },
|
|
157
|
+
"supersedes": {
|
|
158
|
+
"type": ["string", "null"],
|
|
159
|
+
"description": "Key of the same-ladder, same-tier model this one succeeds. The router ranks the successor directly ahead of it only while every per-token price (input, output, cache read) is at or below the predecessor's; the predecessor stays routable as the fallback."
|
|
160
|
+
},
|
|
152
161
|
"indices": {
|
|
153
162
|
"type": "object",
|
|
154
163
|
"required": ["thinking_cost_index", "marginal_thinking"],
|