@humanbased/crosscheck 1.9.2-beta.7 → 1.10.0-beta.16

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.
Files changed (122) hide show
  1. package/crosscheck.config.example.yml +33 -16
  2. package/dist/__tests__/agent-model-scan.test.d.ts +2 -0
  3. package/dist/__tests__/agent-model-scan.test.d.ts.map +1 -0
  4. package/dist/__tests__/agent-model-scan.test.js +77 -0
  5. package/dist/__tests__/agent-model-scan.test.js.map +1 -0
  6. package/dist/__tests__/detector.test.js +21 -0
  7. package/dist/__tests__/detector.test.js.map +1 -1
  8. package/dist/__tests__/init-review-strategy.test.d.ts +2 -0
  9. package/dist/__tests__/init-review-strategy.test.d.ts.map +1 -0
  10. package/dist/__tests__/init-review-strategy.test.js +67 -0
  11. package/dist/__tests__/init-review-strategy.test.js.map +1 -0
  12. package/dist/__tests__/onboard-preservation.test.js +4 -4
  13. package/dist/__tests__/onboard-preservation.test.js.map +1 -1
  14. package/dist/__tests__/opencode-process.test.js +17 -1
  15. package/dist/__tests__/opencode-process.test.js.map +1 -1
  16. package/dist/__tests__/review-escalation.test.d.ts +2 -0
  17. package/dist/__tests__/review-escalation.test.d.ts.map +1 -0
  18. package/dist/__tests__/review-escalation.test.js +56 -0
  19. package/dist/__tests__/review-escalation.test.js.map +1 -0
  20. package/dist/__tests__/review-models.test.js +22 -8
  21. package/dist/__tests__/review-models.test.js.map +1 -1
  22. package/dist/__tests__/review-runtime-policy.test.d.ts +2 -0
  23. package/dist/__tests__/review-runtime-policy.test.d.ts.map +1 -0
  24. package/dist/__tests__/review-runtime-policy.test.js +97 -0
  25. package/dist/__tests__/review-runtime-policy.test.js.map +1 -0
  26. package/dist/__tests__/review-selection.test.d.ts +2 -0
  27. package/dist/__tests__/review-selection.test.d.ts.map +1 -0
  28. package/dist/__tests__/review-selection.test.js +38 -0
  29. package/dist/__tests__/review-selection.test.js.map +1 -0
  30. package/dist/__tests__/review-strategy.test.js +42 -12
  31. package/dist/__tests__/review-strategy.test.js.map +1 -1
  32. package/dist/__tests__/runner.test.js +2 -1
  33. package/dist/__tests__/runner.test.js.map +1 -1
  34. package/dist/__tests__/test-gate.test.d.ts +2 -0
  35. package/dist/__tests__/test-gate.test.d.ts.map +1 -0
  36. package/dist/__tests__/test-gate.test.js +39 -0
  37. package/dist/__tests__/test-gate.test.js.map +1 -0
  38. package/dist/__tests__/watch-models.test.d.ts +2 -0
  39. package/dist/__tests__/watch-models.test.d.ts.map +1 -0
  40. package/dist/__tests__/watch-models.test.js +74 -0
  41. package/dist/__tests__/watch-models.test.js.map +1 -0
  42. package/dist/commands/init-review-strategy.d.ts +13 -0
  43. package/dist/commands/init-review-strategy.d.ts.map +1 -0
  44. package/dist/commands/init-review-strategy.js +140 -0
  45. package/dist/commands/init-review-strategy.js.map +1 -0
  46. package/dist/commands/init.d.ts.map +1 -1
  47. package/dist/commands/init.js +6 -2
  48. package/dist/commands/init.js.map +1 -1
  49. package/dist/commands/onboard.d.ts +6 -6
  50. package/dist/commands/onboard.d.ts.map +1 -1
  51. package/dist/commands/onboard.js +6 -11
  52. package/dist/commands/onboard.js.map +1 -1
  53. package/dist/commands/review.d.ts.map +1 -1
  54. package/dist/commands/review.js +9 -3
  55. package/dist/commands/review.js.map +1 -1
  56. package/dist/commands/watch.d.ts.map +1 -1
  57. package/dist/commands/watch.js +5 -2
  58. package/dist/commands/watch.js.map +1 -1
  59. package/dist/config/loader.d.ts +6 -0
  60. package/dist/config/loader.d.ts.map +1 -1
  61. package/dist/config/loader.js +11 -0
  62. package/dist/config/loader.js.map +1 -1
  63. package/dist/config/review-model-tiers.json +7 -7
  64. package/dist/config/review-strategy.json +136 -48
  65. package/dist/config/schema.d.ts +150 -0
  66. package/dist/config/schema.d.ts.map +1 -1
  67. package/dist/config/schema.js +27 -3
  68. package/dist/config/schema.js.map +1 -1
  69. package/dist/github/detector.d.ts.map +1 -1
  70. package/dist/github/detector.js +9 -7
  71. package/dist/github/detector.js.map +1 -1
  72. package/dist/lib/agent-model-scan.d.ts +28 -0
  73. package/dist/lib/agent-model-scan.d.ts.map +1 -0
  74. package/dist/lib/agent-model-scan.js +188 -0
  75. package/dist/lib/agent-model-scan.js.map +1 -0
  76. package/dist/lib/codex-model-fallback.d.ts +1 -1
  77. package/dist/lib/codex-model-fallback.d.ts.map +1 -1
  78. package/dist/lib/codex-model-fallback.js +9 -3
  79. package/dist/lib/codex-model-fallback.js.map +1 -1
  80. package/dist/lib/review-models.d.ts +1 -1
  81. package/dist/lib/review-models.d.ts.map +1 -1
  82. package/dist/lib/review-models.js +3 -7
  83. package/dist/lib/review-models.js.map +1 -1
  84. package/dist/lib/review-selection.d.ts +13 -0
  85. package/dist/lib/review-selection.d.ts.map +1 -0
  86. package/dist/lib/review-selection.js +107 -0
  87. package/dist/lib/review-selection.js.map +1 -0
  88. package/dist/lib/review-strategy.d.ts +5 -1
  89. package/dist/lib/review-strategy.d.ts.map +1 -1
  90. package/dist/lib/review-strategy.js +8 -2
  91. package/dist/lib/review-strategy.js.map +1 -1
  92. package/dist/lib/runner.d.ts +5 -2
  93. package/dist/lib/runner.d.ts.map +1 -1
  94. package/dist/lib/runner.js +53 -31
  95. package/dist/lib/runner.js.map +1 -1
  96. package/dist/lib/watch-models.d.ts +16 -0
  97. package/dist/lib/watch-models.d.ts.map +1 -0
  98. package/dist/lib/watch-models.js +69 -0
  99. package/dist/lib/watch-models.js.map +1 -0
  100. package/dist/reviewers/claude.d.ts.map +1 -1
  101. package/dist/reviewers/claude.js +13 -7
  102. package/dist/reviewers/claude.js.map +1 -1
  103. package/dist/reviewers/codex.d.ts.map +1 -1
  104. package/dist/reviewers/codex.js +8 -5
  105. package/dist/reviewers/codex.js.map +1 -1
  106. package/dist/reviewers/conflict-resolve.js +2 -2
  107. package/dist/reviewers/conflict-resolve.js.map +1 -1
  108. package/dist/reviewers/fix.d.ts.map +1 -1
  109. package/dist/reviewers/fix.js +3 -5
  110. package/dist/reviewers/fix.js.map +1 -1
  111. package/dist/reviewers/opencode-process.d.ts +2 -1
  112. package/dist/reviewers/opencode-process.d.ts.map +1 -1
  113. package/dist/reviewers/opencode-process.js +18 -2
  114. package/dist/reviewers/opencode-process.js.map +1 -1
  115. package/dist/reviewers/opencode.d.ts +4 -1
  116. package/dist/reviewers/opencode.d.ts.map +1 -1
  117. package/dist/reviewers/opencode.js +35 -8
  118. package/dist/reviewers/opencode.js.map +1 -1
  119. package/docs/dynamic-thoroughness.md +50 -51
  120. package/docs/research/review-models-2026-11-01.md +100 -0
  121. package/get-started.md +77 -23
  122. package/package.json +2 -1
@@ -1,35 +1,49 @@
1
1
  {
2
2
  "schema_version": 1,
3
- "version": "1.2.0",
4
- "_version_note": "1.2.0 — trivial and test_only gained `recheck`. They declared `fix` without it, so the fix step pushed a commit that nothing then judged: on crosscheck-proof-fixture#2 the fix restored a dropped ownership filter and left a test asserting the old query shape, CI went red, and the workflow reported `completed`. `fix` is the only step that mutates the PR and `recheck` is the only one that judges the result, so the pair is now a schema invariant in review-strategy.ts rather than a convention. Routing changed, so the version changes with it: a comment citing 1.1.0 has to stay explicable by 1.1.0.",
5
- "updated": "2026-09-08",
3
+ "version": "1.4.0",
4
+ "_version_note": "1.4.0 — ck init discovers user model pools and strategy preferences. Every provider flagship is excluded from review; thoroughness raises effort on eligible models. PR classes and step sets are unchanged.",
5
+ "updated": "2026-11-01",
6
6
  "generated_at": "2026-08-07T05:00:00Z",
7
- "review_interval_days": 60,
7
+ "review_interval_days": 30,
8
8
  "report": "docs/dynamic-thoroughness.md",
9
9
  "runtime_status": "active",
10
- "_tier_map_note": "resolveClaudeModel/resolveCodexModel read tier->model from review-model-tiers.json, not from `vendors` below. The two agree today and CI verifies both against the same provider docs; `vendors` here is the documented policy and the tier map is the runtime lookup.",
10
+ "_tier_map_note": "Built-in base tier maps live in review-model-tiers.json. Saved quality.review_models pools control reviews ahead of base authoring/fixing pins. OpenCode has no automatic paid-provider map; ck init discovers the user inventory.",
11
11
  "_runtime_status_note": "Read at runtime by src/lib/review-strategy.ts. The runner classifies each PR from the cloned working copy and folds the result into the quality config the reviewers receive; the version, class, and tier are stamped into every annotation.",
12
- "_comment": "Single source of truth for how crosscheck picks a model, effort, and step set. Every review comment cites `version` so a past review can be explained by the policy in force when it ran. Supersedes review-model-tiers.json, which is retained for backwards compat. Re-verify every review_interval_days with `npm run verify:strategy`.",
13
-
12
+ "_comment": "Versioned review policy and model evidence. Runtime default maps remain in review-model-tiers.json and are checked for agreement. OpenCode tiers are recommendations, applied only through operator-supplied model_tiers. Re-verify with npm run verify:strategy.",
14
13
  "sources": [
15
14
  {
16
- "name": "Anthropic model catalog",
17
- "url": "https://platform.claude.com/docs/en/about-claude/models/overview",
18
- "checks": ["claude-opus-5", "claude-sonnet-5", "claude-haiku-5-5"]
15
+ "name": "Anthropic models",
16
+ "url": "https://platform.claude.com/docs/en/models/overview",
17
+ "checks": ["claude-opus-5-5", "claude-sonnet-5-5", "claude-haiku-5-5"]
18
+ },
19
+ {
20
+ "name": "Anthropic prices",
21
+ "url": "https://platform.claude.com/docs/en/about-claude/pricing",
22
+ "checks": ["Claude Opus 5.5", "Claude Sonnet 5.5", "100,000"]
19
23
  },
20
24
  {
21
- "name": "Anthropic effort parameter",
25
+ "name": "Anthropic effort",
22
26
  "url": "https://platform.claude.com/docs/en/build-with-claude/effort",
23
- "checks": ["xhigh", "effort"]
27
+ "checks": ["xhigh", "claude-opus-5-5"]
28
+ },
29
+ {
30
+ "name": "OpenAI prices",
31
+ "url": "https://developers.openai.com/api/docs/pricing",
32
+ "checks": ["gpt-6-astra", "gpt-6.1-sol", "gpt-6.1-terra", "272K"]
24
33
  },
25
34
  {
26
- "name": "OpenAI model catalog",
27
- "url": "https://developers.openai.com/api/docs/models",
28
- "checks": ["gpt-6-luna", "gpt-6.1-sol", "gpt-6-astra"]
35
+ "name": "OpenCode Console models and prices",
36
+ "url": "https://opencode.ai/v2/docs/console/models/",
37
+ "checks": ["glm-5.3-flash", "glm-5.3", "minimax-m3", "deepseek-v4.1-flash", "deepseek-v4-pro", "kimi-k3"]
38
+ },
39
+ {
40
+ "name": "DeepSeek model lifecycle",
41
+ "url": "https://api-docs.deepseek.com/quick_start/pricing/",
42
+ "checks": ["deepseek-flash", "deepseek-v4-pro"]
29
43
  }
30
44
  ],
31
-
32
45
  "benchmarks": {
46
+ "_status": "Historical August generation/issue-resolution evidence only; not used to rank current review models",
33
47
  "swe_bench_verified": {
34
48
  "measures": "Resolving real GitHub issues in Python repositories. Backend/general proxy only.",
35
49
  "source": "https://benchlm.ai/benchmarks/sweVerified",
@@ -43,63 +57,137 @@
43
57
  "caveat": "Measures generation, not defect detection. Claude Opus 5 is absent from the retrieved leaderboard - a missing measurement, not a low score."
44
58
  }
45
59
  },
46
-
47
60
  "models": {
48
- "claude-opus-5": { "vendor": "claude", "license": "closed", "in_usd_mtok": 5, "out_usd_mtok": 25, "context": 1000000, "swe_bench_verified": 0.960, "frontend_elo": null, "effort_levels": ["low","medium","high","xhigh","max"] },
49
- "claude-sonnet-5": { "vendor": "claude", "license": "closed", "in_usd_mtok": 3, "out_usd_mtok": 15, "context": 1000000, "swe_bench_verified": 0.852, "frontend_elo": null, "effort_levels": ["low","medium","high","xhigh","max"] },
50
- "claude-haiku-5-5": { "vendor": "claude", "license": "closed", "in_usd_mtok": 0.1, "out_usd_mtok": 0.5, "context": 1000000, "swe_bench_verified": null, "frontend_elo": null, "effort_levels": ["low","medium","high","xhigh","max"] },
51
- "gpt-6-astra": { "vendor": "codex", "license": "closed", "in_usd_mtok": 10, "out_usd_mtok": 50, "context": 1050000, "swe_bench_verified": null, "frontend_elo": null, "effort_levels": ["low","medium","high","xhigh","max"] },
52
- "gpt-6.1-sol": { "vendor": "codex", "license": "closed", "in_usd_mtok": 2, "out_usd_mtok": 10, "context": 1050000, "swe_bench_verified": null, "frontend_elo": null, "effort_levels": ["low","medium","high","xhigh","max"] },
53
- "gpt-6-luna": { "vendor": "codex", "license": "closed", "in_usd_mtok": 0.1, "out_usd_mtok": 0.5, "context": 1050000, "swe_bench_verified": null, "frontend_elo": null, "effort_levels": ["none","low","medium","high","xhigh","max"] },
54
-
55
- "kimi-k3": { "vendor": "opencode", "license": "Modified MIT", "in_usd_mtok": 3, "out_usd_mtok": 15, "context": 1000000, "swe_bench_verified": null, "frontend_elo": 1679, "effort_levels": [], "status": "planned" },
56
- "glm-5.2": { "vendor": "opencode", "license": "MIT", "in_usd_mtok": 1.4, "out_usd_mtok": 4.4, "context": 1000000, "swe_bench_verified": null, "frontend_elo": 1587, "effort_levels": [], "status": "planned" },
57
- "deepseek-v4-pro": { "vendor": "opencode", "license": "MIT", "in_usd_mtok": 0.435, "out_usd_mtok": 0.87, "context": 1000000, "swe_bench_verified": 0.806, "frontend_elo": null, "effort_levels": ["none","high","max"], "status": "planned" },
58
- "deepseek-v4-flash": { "vendor": "opencode", "license": "MIT", "in_usd_mtok": 0.14, "out_usd_mtok": 0.28, "context": 1000000, "swe_bench_verified": 0.790, "frontend_elo": null, "effort_levels": ["none","high","max"], "status": "planned" }
61
+ "claude-opus-5": {"vendor": "claude", "license": "closed", "in_usd_mtok": 5, "out_usd_mtok": 25, "context": 1000000, "swe_bench_verified": null, "frontend_elo": null, "effort_levels": ["low", "medium", "high", "xhigh", "max"]},
62
+ "claude-sonnet-5": {"vendor": "claude", "license": "closed", "in_usd_mtok": 2, "out_usd_mtok": 10, "context": 1000000, "swe_bench_verified": null, "frontend_elo": null, "effort_levels": ["low", "medium", "high", "xhigh", "max"]},
63
+ "claude-haiku-5-5": {"vendor": "claude", "license": "closed", "in_usd_mtok": 0.1, "out_usd_mtok": 0.5, "context": 1000000, "swe_bench_verified": null, "frontend_elo": null, "effort_levels": ["low", "medium", "high", "xhigh", "max"], "cache_read_usd_mtok": 0.01, "long_context": {"input_tokens_gt": 100000, "in_usd_mtok": 0.5, "out_usd_mtok": 2.5, "cache_read_usd_mtok": 0.05}},
64
+ "gpt-6-astra": {"vendor": "codex", "license": "closed", "in_usd_mtok": 10, "out_usd_mtok": 50, "context": 1050000, "swe_bench_verified": null, "frontend_elo": null, "effort_levels": ["low", "medium", "high", "xhigh", "max"], "cache_read_usd_mtok": 1, "long_context": {"input_tokens_gt": 272000, "in_usd_mtok": 20, "out_usd_mtok": 75.0, "cache_read_usd_mtok": 2}},
65
+ "gpt-6.1-sol": {"vendor": "codex", "license": "closed", "in_usd_mtok": 2, "out_usd_mtok": 10, "context": 1050000, "swe_bench_verified": null, "frontend_elo": null, "effort_levels": ["low", "medium", "high", "xhigh", "max"], "cache_read_usd_mtok": 0.1, "long_context": {"input_tokens_gt": 272000, "in_usd_mtok": 4, "out_usd_mtok": 15.0, "cache_read_usd_mtok": 0.2}},
66
+ "gpt-6-luna": {"vendor": "codex", "license": "closed", "in_usd_mtok": 0.1, "out_usd_mtok": 0.5, "context": 1050000, "swe_bench_verified": null, "frontend_elo": null, "effort_levels": ["none", "low", "medium", "high", "xhigh", "max"], "cache_read_usd_mtok": 0.01, "long_context": {"input_tokens_gt": 272000, "in_usd_mtok": 0.2, "out_usd_mtok": 0.75, "cache_read_usd_mtok": 0.02}},
67
+ "claude-opus-5-5": {"vendor": "claude", "provider": "anthropic", "in_usd_mtok": 4, "out_usd_mtok": 20, "cache_read_usd_mtok": 0.2, "context": 1000000, "effort_levels": ["low", "medium", "high", "xhigh", "max"]},
68
+ "claude-sonnet-5-5": {"vendor": "claude", "provider": "anthropic", "in_usd_mtok": 2, "out_usd_mtok": 10, "cache_read_usd_mtok": 0.1, "context": 1000000, "effort_levels": ["low", "medium", "high", "xhigh", "max"]},
69
+ "gpt-6.1-terra": {"vendor": "codex", "provider": "openai", "in_usd_mtok": 1, "out_usd_mtok": 5, "cache_read_usd_mtok": 0.05, "effort_levels": ["low", "medium", "high", "xhigh", "max"], "status": "evaluation_candidate", "long_context": {"input_tokens_gt": 272000, "in_usd_mtok": 2, "out_usd_mtok": 7.5, "cache_read_usd_mtok": 0.1}},
70
+ "opencode/glm-5.3-flash": {"vendor": "opencode", "provider": "opencode", "in_usd_mtok": 0.15, "out_usd_mtok": 0.5, "cache_read_usd_mtok": 0.03, "effort_levels": [], "opencode_variants": [], "status": "evaluation_candidate"},
71
+ "opencode/minimax-m3": {"vendor": "opencode", "provider": "opencode", "in_usd_mtok": 0.3, "out_usd_mtok": 1.2, "cache_read_usd_mtok": 0.06, "effort_levels": [], "opencode_variants": [], "status": "evaluation_candidate"},
72
+ "opencode/deepseek-v4.1-flash": {"vendor": "opencode", "provider": "opencode", "in_usd_mtok": 0.3, "out_usd_mtok": 1.2, "cache_read_usd_mtok": 0.006, "effort_levels": ["none", "low", "high", "max"], "opencode_variants": [], "status": "evaluation_candidate"},
73
+ "opencode/glm-5.3": {"vendor": "opencode", "provider": "opencode", "in_usd_mtok": 1.4, "out_usd_mtok": 4.4, "cache_read_usd_mtok": 0.26, "effort_levels": [], "opencode_variants": [], "status": "evaluation_candidate"},
74
+ "opencode/deepseek-v4-pro": {"vendor": "opencode", "provider": "opencode", "in_usd_mtok": 1.74, "out_usd_mtok": 3.48, "cache_read_usd_mtok": 0.145, "effort_levels": ["none", "low", "high", "max"], "opencode_variants": [], "status": "evaluation_candidate"},
75
+ "opencode/kimi-k3": {"vendor": "opencode", "provider": "opencode", "in_usd_mtok": 3, "out_usd_mtok": 15, "cache_read_usd_mtok": 0.3, "effort_levels": ["low", "high", "max"], "opencode_variants": [], "status": "evaluation_candidate", "cache_write_usd_mtok": 3}
59
76
  },
60
-
61
77
  "banned_models": [
62
78
  {
63
79
  "model": "claude-fable-5",
64
- "reason": "Banned from code review on cost. $50/MTok output is 2x claude-opus-5 for a LOWER SWE-bench Verified score (95.0 vs 96.0). At the measured 48k output tokens per review that is $2.40 a call with no capability justification.",
65
- "banned_on": "2026-08-07"
80
+ "reason": "Excluded from code review by the user-requested ceiling on every provider flagship.",
81
+ "banned_on": "2026-11-01"
82
+ },
83
+ {
84
+ "model": "claude-fable-5-1",
85
+ "reason": "Excluded from code review by the user-requested ceiling on every provider flagship.",
86
+ "banned_on": "2026-11-01"
87
+ },
88
+ {
89
+ "model": "claude-opus-5",
90
+ "reason": "Excluded from code review by the user-requested ceiling on every provider flagship.",
91
+ "banned_on": "2026-11-01"
92
+ },
93
+ {
94
+ "model": "claude-opus-5-5",
95
+ "reason": "Excluded from code review by the user-requested ceiling on every provider flagship.",
96
+ "banned_on": "2026-11-01"
97
+ },
98
+ {
99
+ "model": "gpt-6-astra",
100
+ "reason": "Excluded from code review by the user-requested ceiling on every provider flagship.",
101
+ "banned_on": "2026-11-01"
102
+ },
103
+ {
104
+ "model": "opencode/kimi-k3",
105
+ "reason": "Excluded from code review by the user-requested ceiling on every provider flagship.",
106
+ "banned_on": "2026-11-01"
107
+ },
108
+ {
109
+ "model": "opencode/glm-5.3",
110
+ "reason": "Excluded from code review by the user-requested ceiling on every provider flagship.",
111
+ "banned_on": "2026-11-01"
112
+ },
113
+ {
114
+ "model": "opencode/deepseek-v4-pro",
115
+ "reason": "Excluded from code review by the user-requested ceiling on every provider flagship.",
116
+ "banned_on": "2026-11-01"
117
+ },
118
+ {
119
+ "model": "opencode/minimax-m3",
120
+ "reason": "Excluded from code review by the user-requested ceiling on every provider flagship.",
121
+ "banned_on": "2026-11-01"
66
122
  }
67
123
  ],
68
-
69
124
  "vendors": {
70
125
  "claude": {
71
- "cli": "claude", "honors_model_under_subscription": true, "min_cli_version": null,
72
- "tiers": { "fast": "claude-haiku-5-5", "balanced": "claude-sonnet-5", "thorough": "claude-opus-5" }
126
+ "cli": "claude",
127
+ "honors_model_under_subscription": true,
128
+ "min_cli_version": null,
129
+ "tiers": {
130
+ "fast": "claude-haiku-5-5",
131
+ "balanced": "claude-sonnet-5-5",
132
+ "thorough": "claude-sonnet-5-5"
133
+ }
73
134
  },
74
135
  "codex": {
75
- "cli": "codex", "honors_model_under_subscription": true, "min_cli_version": "0.147.0",
136
+ "cli": "codex",
137
+ "honors_model_under_subscription": true,
138
+ "min_cli_version": "0.147.0",
76
139
  "_min_cli_version_note": "gpt-5.6-* return HTTP 400 'requires a newer version of Codex' below this. The CLI accepts --model under subscription auth; the old auth!=api-key guard in resolveCodexModel was wrong and dropped the configured model.",
77
- "tiers": { "fast": "gpt-6-luna", "balanced": "gpt-6.1-sol", "thorough": "gpt-6-astra" }
140
+ "tiers": {
141
+ "fast": "gpt-6-luna",
142
+ "balanced": "gpt-6.1-sol",
143
+ "thorough": "gpt-6.1-sol"
144
+ }
78
145
  },
79
146
  "opencode": {
80
- "cli": "opencode", "honors_model_under_subscription": true, "min_cli_version": null,
81
- "status": "planned",
82
- "tiers": { "fast": "deepseek-v4-flash", "balanced": "glm-5.2", "thorough": "kimi-k3" }
147
+ "cli": "opencode",
148
+ "honors_model_under_subscription": true,
149
+ "min_cli_version": null,
150
+ "status": "active_opt_in",
151
+ "tiers": {
152
+ "fast": "opencode/glm-5.3-flash",
153
+ "balanced": "opencode/deepseek-v4.1-flash",
154
+ "thorough": "opencode/deepseek-v4.1-flash"
155
+ },
156
+ "_note": "Candidate profile, not automatic routing. Confirm account access and local defect-detection quality. opencode_variants=[] preserves provider defaults; native API effort support alone is not OpenCode wire evidence."
83
157
  }
84
158
  },
85
-
86
159
  "domains": {
87
- "_comment": "Capability is domain-shaped, not scalar. claude-opus-5 leads backend defect resolution; kimi-k3 leads frontend. A single tier ladder cannot express that. Detected from changed-file extensions; `mixed` and `unknown` both fall back to `backend`, the conservative default.",
160
+ "_comment": "Domain lists are evaluation hypotheses only; detectDomain records the domain but runtime vendor assignment follows routing and agent_priority, not these lists. Generation scores are not review-quality evidence.",
88
161
  "frontend": {
89
162
  "match_extensions": ["tsx", "jsx", "vue", "svelte", "css", "scss", "less", "html"],
90
163
  "threshold": "more frontend files than backend files",
91
- "preferred": { "thorough": ["kimi-k3", "gpt-6-astra", "claude-opus-5"], "balanced": ["glm-5.2", "claude-sonnet-5"], "fast": ["gpt-6-luna", "deepseek-v4-flash"] },
92
- "basis": "Frontend Code Arena Elo: kimi-k3 1679 > glm-5.2 1587 (gpt-6-* scores re-verified pending). Falls back to installed vendors when opencode is unavailable.",
93
- "confidence": "hypothesis - the benchmark measures generation, not review. Pending local A/B."
164
+ "preferred": {
165
+ "thorough": ["claude-sonnet-5-5", "gpt-6.1-sol", "opencode/deepseek-v4.1-flash"],
166
+ "balanced": ["claude-sonnet-5-5", "gpt-6.1-sol"],
167
+ "fast": ["claude-haiku-5-5", "gpt-6-luna", "opencode/glm-5.3-flash"]
168
+ },
169
+ "basis": "Current catalog and cost candidates; no matched local review-quality evaluation for this lineup.",
170
+ "confidence": "hypothesis — not a runtime vendor selector"
94
171
  },
95
172
  "backend": {
96
173
  "match_extensions": ["py", "go", "rs", "java", "rb", "php", "sql", "ts"],
97
- "preferred": { "thorough": ["claude-opus-5", "gpt-6-astra"], "balanced": ["claude-sonnet-5", "gpt-6.1-sol"], "fast": ["deepseek-v4-flash", "gpt-6-luna", "claude-haiku-5-5"] },
98
- "basis": "SWE-bench Verified: claude-opus-5 0.960 > claude-sonnet-5 0.852 > deepseek-v4-pro 0.806 (claude-haiku-5-5 and gpt-6-* re-verified pending).",
99
- "confidence": "measured"
174
+ "preferred": {
175
+ "thorough": ["claude-sonnet-5-5", "gpt-6.1-sol", "opencode/deepseek-v4.1-flash"],
176
+ "balanced": ["claude-sonnet-5-5", "gpt-6.1-sol"],
177
+ "fast": ["claude-haiku-5-5", "gpt-6-luna", "opencode/glm-5.3-flash"]
178
+ },
179
+ "basis": "Current catalog and cost candidates; no matched local review-quality evaluation for this lineup.",
180
+ "confidence": "hypothesis — not a runtime vendor selector"
100
181
  }
101
182
  },
102
-
183
+ "pricing_basis": {
184
+ "as_of": "2026-11-01",
185
+ "currency": "USD",
186
+ "unit": "per million tokens",
187
+ "mode": "standard, synchronous, uncached input unless stated",
188
+ "formula": "uncached_input_mtok * input_rate + cache_read_mtok * cache_read_rate + cache_write_mtok * cache_write_rate + output_mtok * output_rate + tool/provider fees",
189
+ "caveat": "API-equivalent estimates are not subscription invoices. Tokenizers, repeated context, reasoning output, long-context tiers, cache writes, provider markups and retries change total cost. OpenCode Console prices do not apply to direct providers."
190
+ },
103
191
  "_pr_classes_note": "ORDER IS THE ROUTING LOGIC - first match wins. `risky` sits second, immediately after `generated`, so consequence-based promotion dominates every cheapening rule below it: a deletion-only PR that removes auth code, or a 2-file change to a migration, must not fall through to `fast`.",
104
192
  "pr_classes": [
105
193
  {
@@ -57,8 +57,92 @@ export declare const OpenCodeVendorConfigSchema: z.ZodObject<{
57
57
  max: "max";
58
58
  none: "none";
59
59
  }>>;
60
+ model_tiers: z.ZodOptional<z.ZodObject<{
61
+ fast: z.ZodOptional<z.ZodString>;
62
+ balanced: z.ZodOptional<z.ZodString>;
63
+ thorough: z.ZodOptional<z.ZodString>;
64
+ }, z.core.$strip>>;
60
65
  }, z.core.$strip>;
66
+ export declare const ReviewModelSchema: z.ZodObject<{
67
+ id: z.ZodString;
68
+ model_class: z.ZodEnum<{
69
+ fast: "fast";
70
+ standard: "standard";
71
+ }>;
72
+ source: z.ZodEnum<{
73
+ cli: "cli";
74
+ configured: "configured";
75
+ catalog: "catalog";
76
+ }>;
77
+ auto_free: z.ZodOptional<z.ZodBoolean>;
78
+ efforts: z.ZodArray<z.ZodString>;
79
+ input_usd_mtok: z.ZodOptional<z.ZodNumber>;
80
+ output_usd_mtok: z.ZodOptional<z.ZodNumber>;
81
+ family: z.ZodOptional<z.ZodString>;
82
+ }, z.core.$strip>;
83
+ export type ReviewModel = z.infer<typeof ReviewModelSchema>;
61
84
  export declare const QualityConfigSchema: z.ZodObject<{
85
+ refresh_free_models: z.ZodOptional<z.ZodBoolean>;
86
+ excluded_models: z.ZodOptional<z.ZodArray<z.ZodString>>;
87
+ model_refresh_sec: z.ZodOptional<z.ZodNumber>;
88
+ preference: z.ZodOptional<z.ZodEnum<{
89
+ balanced: "balanced";
90
+ "speed-max": "speed-max";
91
+ "cost-min": "cost-min";
92
+ }>>;
93
+ review_models: z.ZodOptional<z.ZodObject<{
94
+ claude: z.ZodOptional<z.ZodArray<z.ZodObject<{
95
+ id: z.ZodString;
96
+ model_class: z.ZodEnum<{
97
+ fast: "fast";
98
+ standard: "standard";
99
+ }>;
100
+ source: z.ZodEnum<{
101
+ cli: "cli";
102
+ configured: "configured";
103
+ catalog: "catalog";
104
+ }>;
105
+ auto_free: z.ZodOptional<z.ZodBoolean>;
106
+ efforts: z.ZodArray<z.ZodString>;
107
+ input_usd_mtok: z.ZodOptional<z.ZodNumber>;
108
+ output_usd_mtok: z.ZodOptional<z.ZodNumber>;
109
+ family: z.ZodOptional<z.ZodString>;
110
+ }, z.core.$strip>>>;
111
+ codex: z.ZodOptional<z.ZodArray<z.ZodObject<{
112
+ id: z.ZodString;
113
+ model_class: z.ZodEnum<{
114
+ fast: "fast";
115
+ standard: "standard";
116
+ }>;
117
+ source: z.ZodEnum<{
118
+ cli: "cli";
119
+ configured: "configured";
120
+ catalog: "catalog";
121
+ }>;
122
+ auto_free: z.ZodOptional<z.ZodBoolean>;
123
+ efforts: z.ZodArray<z.ZodString>;
124
+ input_usd_mtok: z.ZodOptional<z.ZodNumber>;
125
+ output_usd_mtok: z.ZodOptional<z.ZodNumber>;
126
+ family: z.ZodOptional<z.ZodString>;
127
+ }, z.core.$strip>>>;
128
+ opencode: z.ZodOptional<z.ZodArray<z.ZodObject<{
129
+ id: z.ZodString;
130
+ model_class: z.ZodEnum<{
131
+ fast: "fast";
132
+ standard: "standard";
133
+ }>;
134
+ source: z.ZodEnum<{
135
+ cli: "cli";
136
+ configured: "configured";
137
+ catalog: "catalog";
138
+ }>;
139
+ auto_free: z.ZodOptional<z.ZodBoolean>;
140
+ efforts: z.ZodArray<z.ZodString>;
141
+ input_usd_mtok: z.ZodOptional<z.ZodNumber>;
142
+ output_usd_mtok: z.ZodOptional<z.ZodNumber>;
143
+ family: z.ZodOptional<z.ZodString>;
144
+ }, z.core.$strip>>>;
145
+ }, z.core.$strip>>;
62
146
  tier: z.ZodDefault<z.ZodEnum<{
63
147
  fast: "fast";
64
148
  balanced: "balanced";
@@ -367,9 +451,75 @@ export declare const ConfigSchema: z.ZodObject<{
367
451
  max: "max";
368
452
  none: "none";
369
453
  }>>;
454
+ model_tiers: z.ZodOptional<z.ZodObject<{
455
+ fast: z.ZodOptional<z.ZodString>;
456
+ balanced: z.ZodOptional<z.ZodString>;
457
+ thorough: z.ZodOptional<z.ZodString>;
458
+ }, z.core.$strip>>;
370
459
  }, z.core.$strip>>;
371
460
  }, z.core.$strip>>;
372
461
  quality: z.ZodPrefault<z.ZodObject<{
462
+ refresh_free_models: z.ZodOptional<z.ZodBoolean>;
463
+ excluded_models: z.ZodOptional<z.ZodArray<z.ZodString>>;
464
+ model_refresh_sec: z.ZodOptional<z.ZodNumber>;
465
+ preference: z.ZodOptional<z.ZodEnum<{
466
+ balanced: "balanced";
467
+ "speed-max": "speed-max";
468
+ "cost-min": "cost-min";
469
+ }>>;
470
+ review_models: z.ZodOptional<z.ZodObject<{
471
+ claude: z.ZodOptional<z.ZodArray<z.ZodObject<{
472
+ id: z.ZodString;
473
+ model_class: z.ZodEnum<{
474
+ fast: "fast";
475
+ standard: "standard";
476
+ }>;
477
+ source: z.ZodEnum<{
478
+ cli: "cli";
479
+ configured: "configured";
480
+ catalog: "catalog";
481
+ }>;
482
+ auto_free: z.ZodOptional<z.ZodBoolean>;
483
+ efforts: z.ZodArray<z.ZodString>;
484
+ input_usd_mtok: z.ZodOptional<z.ZodNumber>;
485
+ output_usd_mtok: z.ZodOptional<z.ZodNumber>;
486
+ family: z.ZodOptional<z.ZodString>;
487
+ }, z.core.$strip>>>;
488
+ codex: z.ZodOptional<z.ZodArray<z.ZodObject<{
489
+ id: z.ZodString;
490
+ model_class: z.ZodEnum<{
491
+ fast: "fast";
492
+ standard: "standard";
493
+ }>;
494
+ source: z.ZodEnum<{
495
+ cli: "cli";
496
+ configured: "configured";
497
+ catalog: "catalog";
498
+ }>;
499
+ auto_free: z.ZodOptional<z.ZodBoolean>;
500
+ efforts: z.ZodArray<z.ZodString>;
501
+ input_usd_mtok: z.ZodOptional<z.ZodNumber>;
502
+ output_usd_mtok: z.ZodOptional<z.ZodNumber>;
503
+ family: z.ZodOptional<z.ZodString>;
504
+ }, z.core.$strip>>>;
505
+ opencode: z.ZodOptional<z.ZodArray<z.ZodObject<{
506
+ id: z.ZodString;
507
+ model_class: z.ZodEnum<{
508
+ fast: "fast";
509
+ standard: "standard";
510
+ }>;
511
+ source: z.ZodEnum<{
512
+ cli: "cli";
513
+ configured: "configured";
514
+ catalog: "catalog";
515
+ }>;
516
+ auto_free: z.ZodOptional<z.ZodBoolean>;
517
+ efforts: z.ZodArray<z.ZodString>;
518
+ input_usd_mtok: z.ZodOptional<z.ZodNumber>;
519
+ output_usd_mtok: z.ZodOptional<z.ZodNumber>;
520
+ family: z.ZodOptional<z.ZodString>;
521
+ }, z.core.$strip>>>;
522
+ }, z.core.$strip>>;
373
523
  tier: z.ZodDefault<z.ZodEnum<{
374
524
  fast: "fast";
375
525
  balanced: "balanced";
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -42,9 +42,9 @@ export const CodexVendorConfigSchema = VendorConfigSchema.extend({
42
42
  thorough: z.string().optional(),
43
43
  }).optional(),
44
44
  });
45
- // OpenCode vendor config. OpenCode has no `medium` effort (its `--model
46
- // provider/model#variant` suffix accepts none/low/high/max), so this extends the
47
- // shared schema and narrows `effort` to that vocabulary. Auth is always via the
45
+ // OpenCode retains its legacy effort vocabulary for custom providers. Catalog
46
+ // routes use verified variants or the provider default; explicit #variants win.
47
+ // Auth is always via the
48
48
  // local OpenCode background service (`opencode auth login`), so `auth` from the
49
49
  // shared schema is not meaningful here and stays at its default.
50
50
  //
@@ -54,8 +54,32 @@ export const CodexVendorConfigSchema = VendorConfigSchema.extend({
54
54
  export const OpenCodeVendorConfigSchema = VendorConfigSchema.extend({
55
55
  enabled: z.boolean().default(false),
56
56
  effort: z.enum(OPENCODE_EFFORT_LEVELS).default('high'),
57
+ model_tiers: z.object({
58
+ fast: z.string().optional(),
59
+ balanced: z.string().optional(),
60
+ thorough: z.string().optional(),
61
+ }).optional(),
62
+ });
63
+ export const ReviewModelSchema = z.object({
64
+ id: z.string().min(1),
65
+ model_class: z.enum(['fast', 'standard']),
66
+ source: z.enum(['cli', 'configured', 'catalog']),
67
+ auto_free: z.boolean().optional(),
68
+ efforts: z.array(z.string()),
69
+ input_usd_mtok: z.number().nonnegative().optional(),
70
+ output_usd_mtok: z.number().nonnegative().optional(),
71
+ family: z.string().optional(),
57
72
  });
58
73
  export const QualityConfigSchema = z.object({
74
+ refresh_free_models: z.boolean().optional(),
75
+ excluded_models: z.array(z.string()).optional(),
76
+ model_refresh_sec: z.number().int().min(30).max(86400).optional(),
77
+ preference: z.enum(['balanced', 'speed-max', 'cost-min']).optional(),
78
+ review_models: z.object({
79
+ claude: z.array(ReviewModelSchema).optional(),
80
+ codex: z.array(ReviewModelSchema).optional(),
81
+ opencode: z.array(ReviewModelSchema).optional(),
82
+ }).optional(),
59
83
  // The tier when `mode: fixed`, and the fallback under `mode: smart` whenever a
60
84
  // PR's file list cannot be read from its clone, or when an explicit request
61
85
  // (`crosscheck review`, `run --steps`) overrides a class that would skip the PR.
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,0EAA0E;AAC1E,8EAA8E;AAC9E,4EAA4E;AAC5E,2EAA2E;AAC3E,6EAA6E;AAC7E,mFAAmF;AACnF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAU,CAAA;AAC7E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAU,CAAA;AAC9F,iEAAiE;AACjE,2EAA2E;AAC3E,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAU,CAAA;AAEtE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IACjE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACtD,0EAA0E;IAC1E,2EAA2E;IAC3E,sEAAsE;IACtE,oEAAoE;IACpE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAClE,CAAC,CAAA;AAEF,oEAAoE;AACpE,kFAAkF;AAClF,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAC/D,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC5D,8EAA8E;IAC9E,8EAA8E;IAC9E,yDAAyD;IACzD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACrD,gFAAgF;IAChF,+EAA+E;IAC/E,wCAAwC;IACxC,oFAAoF;IACpF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAChC,CAAC,CAAC,QAAQ,EAAE;CACd,CAAC,CAAA;AAEF,wEAAwE;AACxE,iFAAiF;AACjF,gFAAgF;AAChF,gFAAgF;AAChF,iEAAiE;AACjE,EAAE;AACF,0EAA0E;AAC1E,8EAA8E;AAC9E,uEAAuE;AACvE,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAClE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;CACvD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,+EAA+E;IAC/E,4EAA4E;IAC5E,iFAAiF;IACjF,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAClE,6EAA6E;IAC7E,6EAA6E;IAC7E,+EAA+E;IAC/E,2EAA2E;IAC3E,yEAAyE;IACzE,+EAA+E;IAC/E,2DAA2D;IAC3D,EAAE;IACF,6EAA6E;IAC7E,0EAA0E;IAC1E,uEAAuE;IACvE,EAAE;IACF,yEAAyE;IACzE,4EAA4E;IAC5E,yEAAyE;IACzE,yEAAyE;IACzE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACjD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACzC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,8EAA8E;IAC9E,+EAA+E;IAC/E,8EAA8E;IAC9E,6EAA6E;IAC7E,+EAA+E;IAC/E,8EAA8E;IAC9E,0EAA0E;IAC1E,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAC9C,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACtD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;CACxC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAA;AAG1E,iFAAiF;AACjF,6CAA6C;AAC7C,uEAAuE;AACvE,yEAAyE;AACzE,2BAA2B;AAC3B,+EAA+E;AAC/E,MAAM,CAAC,MAAM,wBAAwB,GAAgC,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;AAEjG,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACvG,MAAM,IAAI,GAAG,CAAC,OAAe,EAAQ,EAAE;QACrC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;IACxD,CAAC,CAAA;IACD,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QACzC,IAAI,CAAC,4CAA4C,CAAC,CAAA;QAClD,OAAM;IACR,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,yCAAyC,CAAC,CAAA;QAC/C,OAAM;IACR,CAAC;IACD,MAAM,SAAS,GAAG,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IAC/E,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,oEAAoE,CAAC,CAAA;IAC5E,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,+EAA+E;IAC/E,+EAA+E;IAC/E,+EAA+E;CAChF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,mEAAmE;IACnE,2EAA2E;IAC3E,4EAA4E;IAC5E,sEAAsE;IACtE,yDAAyD;IACzD,8EAA8E;IAC9E,+CAA+C;IAC/C,sBAAsB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;QAClD,kCAAkC,EAAG,6BAA6B;QAClE,wBAAwB,EAAa,sCAAsC;KAC5E,CAAC;IACF,uBAAuB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;QACnD,mCAAmC,EAAE,6BAA6B;QAClE,uBAAuB,EAAc,gCAAgC;KACtE,CAAC;IACF,yBAAyB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;QACrD,+BAA+B,EAAM,6BAA6B;QAClE,0BAA0B,EAAW,mCAAmC;KACzE,CAAC;IACF,6EAA6E;IAC7E,6EAA6E;IAC7E,gDAAgD;IAChD,sBAAsB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC;IAChE,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC9D,wBAAwB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC;IACpE,iDAAiD;IACjD,iFAAiF;IACjF,uFAAuF;IACvF,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAChD,sEAAsE;IACtE,qCAAqC;IACrC,mFAAmF;IACnF,4EAA4E;IAC5E,EAAE;IACF,kFAAkF;IAClF,qFAAqF;IACrF,iFAAiF;IACjF,sDAAsD;IACtD,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACxF,qFAAqF;IACrF,8BAA8B;IAC9B,kFAAkF;IAClF,mEAAmE;IACnE,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;CAC9F,CAAC,CAAA;AAEF,0EAA0E;AAC1E,4EAA4E;AAC5E,wCAAwC;AACxC,EAAE;AACF,8EAA8E;AAC9E,mEAAmE;AACnE,+EAA+E;AAC/E,0EAA0E;AAC1E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACpE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACjE,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC/E,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAA;AAEzD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC9B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;CAC7C,CAAC,CAAA;AAEF,qFAAqF;AACrF,iFAAiF;AACjF,EAAE;AACF,iFAAiF;AACjF,qFAAqF;AACrF,mFAAmF;AACnF,uDAAuD;AACvD,EAAE;AACF,yDAAyD;AACzD,yEAAyE;AACzE,EAAE;AACF,mFAAmF;AACnF,yCAAyC;AACzC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACpC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5D,0DAA0D;IAC1D,QAAQ,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;CAC7C,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,wFAAwF;IACxF,qFAAqF;IACrF,8EAA8E;IAC9E,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;IACnE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CACrC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,4BAA4B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACjE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IAC/C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;CAChD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,0EAA0E;IAC1E,4EAA4E;IAC5E,2EAA2E;IAC3E,6DAA6D;IAC7D,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC9C,2EAA2E;IAC3E,4EAA4E;IAC5E,2EAA2E;IAC3E,qCAAqC;IACrC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,2EAA2E;IAC3E,sBAAsB;IACtB,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;CAC7D,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,+DAA+D;IAC/D,4FAA4F;IAC5F,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,uEAAuE;IACvE,4EAA4E;IAC5E,4EAA4E;IAC5E,wEAAwE;IACxE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,6EAA6E;IAC7E,2DAA2D;IAC3D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;CAChD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,kFAAkF;IAClF,wFAAwF;IACxF,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACjD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,UAAU,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;CAC9C,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,oFAAoF;IACpF,wFAAwF;IACxF,qFAAqF;IACrF,iFAAiF;IACjF,gFAAgF;IAChF,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IAC3E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC;IAC9E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;CACxC,CAAC,CAAA;AAEF,+EAA+E;AAC/E,6EAA6E;AAC7E,0FAA0F;AAC1F,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC/C,wFAAwF;IACxF,+EAA+E;IAC/E,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7D,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACvC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;CACrC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,KAAK,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;CACvC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;IAC9C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC7C,CAAC,CAAA;AAEF,8EAA8E;AAC9E,2DAA2D;AAC3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,oEAAoE;IACpE,qFAAqF;IACrF,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAClE,oFAAoF;IACpF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACjD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC;IACrD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,sBAAsB,CAAC;IAC7D,6EAA6E;IAC7E,iEAAiE;IACjE,oEAAoE;IACpE,0EAA0E;IAC1E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;CACzC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,mFAAmF;IACnF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;IACvC,gFAAgF;IAChF,gEAAgE;IAChE,EAAE;IACF,+EAA+E;IAC/E,iFAAiF;IACjF,8CAA8C;IAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,sBAAsB,CAAC;IACrD,gFAAgF;IAChF,mFAAmF;IACnF,qEAAqE;IACrE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAChC,gFAAgF;IAChF,8EAA8E;IAC9E,0DAA0D;IAC1D,0CAA0C;IAC1C,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAC1C,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;AAG9F,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,IAAI,EAAE,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzC,QAAQ,EAAE,0BAA0B,CAAC,QAAQ,CAAC,EAAE,CAAC;IACjD,+EAA+E;IAC/E,kFAAkF;IAClF,gFAAgF;IAChF,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC/E,+EAA+E;IAC/E,iFAAiF;IACjF,yDAAyD;IACzD,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,qEAAqE;IACrE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IACvE,6CAA6C;IAC7C,8DAA8D;IAC9D,yFAAyF;IACzF,gFAAgF;IAChF,oEAAoE;IACpE,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACvD,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,KAAK,EAAE,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,QAAQ,EAAE,0BAA0B,CAAC,QAAQ,CAAC,EAAE,CAAC;KAClD,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;IACf,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5C,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzC,cAAc,EAAE,yBAAyB;IACzC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACnC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvC,SAAS,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC7C,gBAAgB,EAAE,2BAA2B,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC1D,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACrC,WAAW,EAAE,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAChD,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzC,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACrC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;CACxC,CAAC,CAAA"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/github/detector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAMjD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAA;AA+ChE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAEpF;AAGD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAM3F;AAGD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAWvF;AAaD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA4B/C;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAIxF;AAmBD,wBAAsB,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC,CAqBtH"}
1
+ {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/github/detector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAMjD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAA;AA+ChE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAEpF;AAGD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAM3F;AAGD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAWvF;AAaD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA4B/C;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAIxF;AAmBD,wBAAsB,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC,CAwBtH"}
@@ -1,3 +1,4 @@
1
+ import { eligibleReviewConfig, reviewModelExcluded } from '../lib/review-selection.js';
1
2
  import { getPRCommits } from './client.js';
2
3
  import { checkCodexAuth } from '../reviewers/codex.js';
3
4
  import { checkClaudeAuth } from '../reviewers/claude.js';
@@ -139,15 +140,16 @@ async function resolveFallback(config) {
139
140
  // OpenCode is opt-in, so its auth check alone is not enough — a configured
140
141
  // opt-out must never be overridden by an authenticated CLI.
141
142
  const [codexAuth, claudeAuth, opencodeAuth] = await Promise.all([checkCodexAuth(), checkClaudeAuth(), checkOpenCodeAuth()]);
142
- if (codexAuth.ok)
143
- return 'codex';
144
- if (claudeAuth.ok)
145
- return 'claude';
146
- if (opencodeAuth.ok && config.vendors.opencode.enabled)
147
- return 'opencode';
148
- return null;
143
+ const free = config.quality.review_models?.opencode?.some(model => model.input_usd_mtok === 0 && model.output_usd_mtok === 0 && !reviewModelExcluded(model.id)) ?? false;
144
+ const ready = { codex: codexAuth.ok, claude: claudeAuth.ok, opencode: opencodeAuth.ok || free };
145
+ const ordered = [...config.agent_priority.review, ...['codex', 'claude', 'opencode']];
146
+ return ordered.find(vendor => config.vendors[vendor].enabled && ready[vendor]) ?? null;
149
147
  }
150
148
  export async function assignReviewer(origin, config) {
149
+ config = eligibleReviewConfig(config);
150
+ const preferred = config.agent_priority.review.filter(vendor => config.vendors[vendor].enabled && (config.mode === 'single-vendor' || vendor !== origin));
151
+ if (preferred.length > 0 && (origin !== 'human' || config.mode === 'single-vendor'))
152
+ return preferred[0];
151
153
  if (config.mode === 'single-vendor') {
152
154
  if (config.vendors.codex.enabled)
153
155
  return 'codex';