@humanbased/crosscheck 1.9.2-beta.9 → 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 (118) 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__/watch-models.test.d.ts +2 -0
  35. package/dist/__tests__/watch-models.test.d.ts.map +1 -0
  36. package/dist/__tests__/watch-models.test.js +74 -0
  37. package/dist/__tests__/watch-models.test.js.map +1 -0
  38. package/dist/commands/init-review-strategy.d.ts +13 -0
  39. package/dist/commands/init-review-strategy.d.ts.map +1 -0
  40. package/dist/commands/init-review-strategy.js +140 -0
  41. package/dist/commands/init-review-strategy.js.map +1 -0
  42. package/dist/commands/init.d.ts.map +1 -1
  43. package/dist/commands/init.js +6 -2
  44. package/dist/commands/init.js.map +1 -1
  45. package/dist/commands/onboard.d.ts +6 -6
  46. package/dist/commands/onboard.d.ts.map +1 -1
  47. package/dist/commands/onboard.js +6 -11
  48. package/dist/commands/onboard.js.map +1 -1
  49. package/dist/commands/review.d.ts.map +1 -1
  50. package/dist/commands/review.js +9 -3
  51. package/dist/commands/review.js.map +1 -1
  52. package/dist/commands/watch.d.ts.map +1 -1
  53. package/dist/commands/watch.js +5 -2
  54. package/dist/commands/watch.js.map +1 -1
  55. package/dist/config/loader.d.ts +6 -0
  56. package/dist/config/loader.d.ts.map +1 -1
  57. package/dist/config/loader.js +11 -0
  58. package/dist/config/loader.js.map +1 -1
  59. package/dist/config/review-model-tiers.json +7 -7
  60. package/dist/config/review-strategy.json +136 -48
  61. package/dist/config/schema.d.ts +150 -0
  62. package/dist/config/schema.d.ts.map +1 -1
  63. package/dist/config/schema.js +27 -3
  64. package/dist/config/schema.js.map +1 -1
  65. package/dist/github/detector.d.ts.map +1 -1
  66. package/dist/github/detector.js +9 -7
  67. package/dist/github/detector.js.map +1 -1
  68. package/dist/lib/agent-model-scan.d.ts +28 -0
  69. package/dist/lib/agent-model-scan.d.ts.map +1 -0
  70. package/dist/lib/agent-model-scan.js +188 -0
  71. package/dist/lib/agent-model-scan.js.map +1 -0
  72. package/dist/lib/codex-model-fallback.d.ts +1 -1
  73. package/dist/lib/codex-model-fallback.d.ts.map +1 -1
  74. package/dist/lib/codex-model-fallback.js +9 -3
  75. package/dist/lib/codex-model-fallback.js.map +1 -1
  76. package/dist/lib/review-models.d.ts +1 -1
  77. package/dist/lib/review-models.d.ts.map +1 -1
  78. package/dist/lib/review-models.js +3 -7
  79. package/dist/lib/review-models.js.map +1 -1
  80. package/dist/lib/review-selection.d.ts +13 -0
  81. package/dist/lib/review-selection.d.ts.map +1 -0
  82. package/dist/lib/review-selection.js +107 -0
  83. package/dist/lib/review-selection.js.map +1 -0
  84. package/dist/lib/review-strategy.d.ts +5 -1
  85. package/dist/lib/review-strategy.d.ts.map +1 -1
  86. package/dist/lib/review-strategy.js +8 -2
  87. package/dist/lib/review-strategy.js.map +1 -1
  88. package/dist/lib/runner.d.ts +5 -2
  89. package/dist/lib/runner.d.ts.map +1 -1
  90. package/dist/lib/runner.js +53 -31
  91. package/dist/lib/runner.js.map +1 -1
  92. package/dist/lib/watch-models.d.ts +16 -0
  93. package/dist/lib/watch-models.d.ts.map +1 -0
  94. package/dist/lib/watch-models.js +69 -0
  95. package/dist/lib/watch-models.js.map +1 -0
  96. package/dist/reviewers/claude.d.ts.map +1 -1
  97. package/dist/reviewers/claude.js +13 -7
  98. package/dist/reviewers/claude.js.map +1 -1
  99. package/dist/reviewers/codex.d.ts.map +1 -1
  100. package/dist/reviewers/codex.js +8 -5
  101. package/dist/reviewers/codex.js.map +1 -1
  102. package/dist/reviewers/conflict-resolve.js +2 -2
  103. package/dist/reviewers/conflict-resolve.js.map +1 -1
  104. package/dist/reviewers/fix.d.ts.map +1 -1
  105. package/dist/reviewers/fix.js +3 -5
  106. package/dist/reviewers/fix.js.map +1 -1
  107. package/dist/reviewers/opencode-process.d.ts +2 -1
  108. package/dist/reviewers/opencode-process.d.ts.map +1 -1
  109. package/dist/reviewers/opencode-process.js +18 -2
  110. package/dist/reviewers/opencode-process.js.map +1 -1
  111. package/dist/reviewers/opencode.d.ts +4 -1
  112. package/dist/reviewers/opencode.d.ts.map +1 -1
  113. package/dist/reviewers/opencode.js +35 -8
  114. package/dist/reviewers/opencode.js.map +1 -1
  115. package/docs/dynamic-thoroughness.md +50 -51
  116. package/docs/research/review-models-2026-11-01.md +100 -0
  117. package/get-started.md +77 -23
  118. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/github/detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/github/detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { ReviewModel } from '../config/schema.js';
2
+ import { type ReviewerReadiness } from './reviewer-setup.js';
3
+ import type { Vendor } from './vendor.js';
4
+ export interface ScannedModel extends Omit<ReviewModel, 'model_class'> {
5
+ model_class?: ReviewModel['model_class'];
6
+ excluded: boolean;
7
+ }
8
+ export interface AgentModelScan extends ReviewerReadiness {
9
+ vendor: Vendor;
10
+ models: ScannedModel[];
11
+ warnings: string[];
12
+ }
13
+ export declare function parseCodexModels(raw: string): ScannedModel[];
14
+ /** OpenCode emits a provider/model header followed by a pretty-printed JSON object. */
15
+ export declare function parseOpenCodeModels(raw: string): ScannedModel[];
16
+ export declare function parseClaudeModels(raw: string, environment?: Record<string, string>): ScannedModel[];
17
+ export interface AgentScanDependencies {
18
+ probe: (vendor: Vendor) => Promise<ReviewerReadiness>;
19
+ read: (path: string) => Promise<string | undefined>;
20
+ run: (vendor: Vendor, args: string[], cwd: string) => Promise<string>;
21
+ paths: {
22
+ claude: string;
23
+ codex: string;
24
+ };
25
+ claudeEnvironment: Record<string, string>;
26
+ }
27
+ export declare function scanAgentModels(deps?: AgentScanDependencies): Promise<AgentModelScan[]>;
28
+ //# sourceMappingURL=agent-model-scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-model-scan.d.ts","sourceRoot":"","sources":["../../src/lib/agent-model-scan.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEpF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAIzC,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC;IACpE,WAAW,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,CAAA;IACxC,QAAQ,EAAE,OAAO,CAAA;CAClB;AACD,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,YAAY,EAAE,CAAA;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAuBD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAU5D;AAED,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CA2B/D;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,YAAY,EAAE,CA8BvG;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACrD,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IACnD,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACrE,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACxC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC1C;AAcD,wBAAsB,eAAe,CAAC,IAAI,GAAE,qBAAoC,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA8C3G"}
@@ -0,0 +1,188 @@
1
+ import { execa } from 'execa';
2
+ import { readFile, mkdtemp, rm } from 'fs/promises';
3
+ import { join } from 'path';
4
+ import { tmpdir } from 'os';
5
+ import { parse as parseToml } from 'smol-toml';
6
+ import { stripVTControlCharacters } from 'util';
7
+ import { createRequire } from 'module';
8
+ import { getAgentModelConfigPaths, getClaudeModelEnvironment } from '../config/loader.js';
9
+ import { probeReviewerReadiness } from './reviewer-setup.js';
10
+ import { reviewModelClass, reviewModelExcluded } from './review-selection.js';
11
+ const require = createRequire(import.meta.url);
12
+ const catalog = require('../config/review-strategy.json');
13
+ function record(value) {
14
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
15
+ }
16
+ function id(value) {
17
+ return typeof value === 'string' && /^(?:[\w./:@+#-]|\[|\]){1,200}$/.test(value) ? value : undefined;
18
+ }
19
+ function strings(value) {
20
+ return Array.isArray(value) ? value.flatMap(entry => id(entry) ? [entry] : []) : [];
21
+ }
22
+ function candidate(name, source, family) {
23
+ const known = catalog.models[name];
24
+ return {
25
+ id: name, source, ...(family && { family }), model_class: reviewModelClass(family ?? name),
26
+ excluded: reviewModelExcluded(name) || reviewModelExcluded(family ?? ''),
27
+ efforts: known?.effort_levels ?? [],
28
+ ...(known && { input_usd_mtok: known.in_usd_mtok, output_usd_mtok: known.out_usd_mtok }),
29
+ };
30
+ }
31
+ function numeric(value) {
32
+ return typeof value === 'number' && Number.isFinite(value) && value >= 0 ? value : undefined;
33
+ }
34
+ export function parseCodexModels(raw) {
35
+ const parsed = JSON.parse(raw);
36
+ if (!record(parsed) || !Array.isArray(parsed.models))
37
+ throw new Error('Unrecognized Codex model catalog');
38
+ return parsed.models.flatMap(entry => {
39
+ if (!record(entry) || entry.visibility === 'hide' || entry.hidden === true)
40
+ return [];
41
+ const name = id(entry.slug ?? entry.model);
42
+ if (!name)
43
+ return [];
44
+ const levels = Array.isArray(entry.supported_reasoning_levels) ? entry.supported_reasoning_levels : [];
45
+ return [{ ...candidate(name, 'cli'), efforts: levels.flatMap(level => record(level) && id(level.effort) ? [level.effort] : []) }];
46
+ });
47
+ }
48
+ /** OpenCode emits a provider/model header followed by a pretty-printed JSON object. */
49
+ export function parseOpenCodeModels(raw) {
50
+ const clean = stripVTControlCharacters(raw);
51
+ const headers = [...clean.matchAll(/^([\w.-]+\/[^\s]+)\r?\n(?=\{)/gm)];
52
+ if (headers.length === 0)
53
+ throw new Error('Unrecognized OpenCode model catalog');
54
+ return headers.flatMap((header, index) => {
55
+ const name = id(header[1]);
56
+ if (!name)
57
+ return [];
58
+ const metadata = JSON.parse(clean.slice(header.index + header[0].length, headers[index + 1]?.index).trim());
59
+ if (!record(metadata))
60
+ return [];
61
+ if (record(metadata.capabilities) && metadata.capabilities.toolcall === false)
62
+ return [];
63
+ const cost = record(metadata.cost) ? metadata.cost : {};
64
+ const variants = record(metadata.variants) ? Object.keys(metadata.variants).filter(level => id(level)) : [];
65
+ const input = numeric(cost.input), output = numeric(cost.output);
66
+ const ambiguousZero = input === 0 && output === 0 && !name.startsWith('opencode/') && !/(?:^|[/_.:-])free(?:$|[/_.:-])/i.test(name);
67
+ const family = id(metadata.family);
68
+ const actual = record(metadata.api) ? id(metadata.api.id) : undefined;
69
+ const native = name.split('/').at(-1);
70
+ const knownClass = actual && catalog.models[actual] ? reviewModelClass(actual) : undefined;
71
+ const modelClass = knownClass ?? (name.startsWith('opencode/') || catalog.models[native] ? reviewModelClass(name) : undefined);
72
+ return [{
73
+ ...candidate(name, 'cli', family),
74
+ excluded: reviewModelExcluded(name) || reviewModelExcluded(family ?? '') || reviewModelExcluded(actual ?? ''),
75
+ model_class: modelClass,
76
+ efforts: variants,
77
+ input_usd_mtok: ambiguousZero ? undefined : input, output_usd_mtok: ambiguousZero ? undefined : output,
78
+ }];
79
+ });
80
+ }
81
+ export function parseClaudeModels(raw, environment = {}) {
82
+ const settings = JSON.parse(raw);
83
+ if (!record(settings))
84
+ throw new Error('Unrecognized Claude settings');
85
+ const env = { ...(record(settings.env) ? settings.env : {}), ...environment };
86
+ const aliases = {
87
+ haiku: id(env.ANTHROPIC_DEFAULT_HAIKU_MODEL) ?? 'claude-haiku-5-5',
88
+ sonnet: id(env.ANTHROPIC_DEFAULT_SONNET_MODEL) ?? 'claude-sonnet-5-5',
89
+ };
90
+ const configured = id(env.ANTHROPIC_MODEL) ?? id(settings.model) ?? id(env.ANTHROPIC_DEFAULT_MODEL);
91
+ const custom = id(env.ANTHROPIC_CUSTOM_MODEL_OPTION);
92
+ const picker = record(settings.modelPicker) && Array.isArray(settings.modelPicker.options) ? settings.modelPicker.options : [];
93
+ const names = Array.isArray(settings.availableModels) ? strings(settings.availableModels)
94
+ : [...Object.keys(aliases), ...(configured ? [configured] : []), ...(custom ? [custom] : []), ...picker.flatMap(option => record(option) && id(option.model) ? [option.model] : [])];
95
+ const overrides = record(settings.modelOverrides) ? settings.modelOverrides : {};
96
+ const denied = Array.isArray(settings.deniedModels) ? settings.deniedModels.filter((value) => typeof value === 'string' && value.length <= 200) : [];
97
+ const models = names.flatMap(name => {
98
+ const canonical = aliases[name] ?? name;
99
+ const requested = id(overrides[canonical]) ?? canonical;
100
+ const option = picker.find(entry => record(entry) && entry.model === name);
101
+ const family = record(option) ? id(option.behavesAs) : undefined;
102
+ const blocked = denied.some(pattern => new RegExp('^' + pattern.replace(/[.+?^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '.*') + '$').test(requested));
103
+ if (blocked)
104
+ return [];
105
+ const entry = candidate(requested, configured === name || requested !== canonical ? 'configured' : 'catalog', family ?? canonical);
106
+ // Pricing a private deployment by its underlying public model would invent its rate.
107
+ if (requested !== canonical) {
108
+ delete entry.input_usd_mtok;
109
+ delete entry.output_usd_mtok;
110
+ }
111
+ const cap = ['low', 'medium', 'high', 'xhigh', 'max'].indexOf(String(settings.maxEffortLevel));
112
+ if (cap >= 0)
113
+ entry.efforts = entry.efforts.filter(level => ['low', 'medium', 'high', 'xhigh', 'max'].indexOf(level) <= cap);
114
+ return [entry];
115
+ });
116
+ return [...new Map(models.map(entry => [entry.id, entry])).values()];
117
+ }
118
+ const dependencies = {
119
+ probe: probeReviewerReadiness,
120
+ read: async (path) => {
121
+ try {
122
+ return await readFile(path, 'utf8');
123
+ }
124
+ catch (err) {
125
+ if (err.code === 'ENOENT')
126
+ return undefined;
127
+ throw new Error('Could not read agent model settings');
128
+ }
129
+ },
130
+ run: async (vendor, args, cwd) => (await execa(vendor, args, { cwd, timeout: 15_000, maxBuffer: 8 * 1024 * 1024 })).stdout,
131
+ paths: getAgentModelConfigPaths(),
132
+ claudeEnvironment: getClaudeModelEnvironment(),
133
+ };
134
+ export async function scanAgentModels(deps = dependencies) {
135
+ const directory = await mkdtemp(join(tmpdir(), 'crosscheck-model-scan-'));
136
+ try {
137
+ return await Promise.all(['claude', 'codex', 'opencode'].map(async (vendor) => {
138
+ const readiness = await deps.probe(vendor);
139
+ const scan = { vendor, ...readiness, models: [], warnings: [] };
140
+ if (!readiness.installed || (!readiness.authenticated && vendor !== 'opencode'))
141
+ return scan;
142
+ if (vendor === 'opencode' && !readiness.authenticated && /does not support|could not read|capability probe failed/i.test(readiness.detail)) {
143
+ scan.warnings.push('OpenCode needs CLI/auth-probe repair before free-tier discovery can enable it.');
144
+ return scan;
145
+ }
146
+ try {
147
+ if (vendor === 'claude') {
148
+ scan.models = parseClaudeModels(await deps.read(deps.paths.claude) ?? '{}', deps.claudeEnvironment);
149
+ }
150
+ else if (vendor === 'codex') {
151
+ const raw = await deps.read(deps.paths.codex);
152
+ const config = raw ? parseToml(raw) : {};
153
+ const profiles = record(config.profiles) ? config.profiles : {};
154
+ const selectedProfile = typeof config.profile === 'string' ? profiles[config.profile] : undefined;
155
+ const profile = record(selectedProfile) ? selectedProfile : {};
156
+ const active = { ...config, ...profile };
157
+ if (typeof active.model_provider === 'string' && active.model_provider !== 'openai') {
158
+ scan.warnings.push('Custom Codex provider is configured-only: the isolated review runner does not load provider definitions. Use its OpenCode route instead.');
159
+ return scan;
160
+ }
161
+ scan.models = parseCodexModels(await deps.run(vendor, ['debug', 'models'], directory));
162
+ const selected = id(active.model);
163
+ if (selected && !scan.models.some(model => model.id === selected))
164
+ scan.models.push(candidate(selected, 'configured'));
165
+ }
166
+ else {
167
+ // --pure refuses plugin loading; never retry without it against user configuration.
168
+ scan.models = parseOpenCodeModels(await deps.run(vendor, ['models', '--verbose', '--pure'], directory));
169
+ const raw = await deps.run(vendor, ['debug', 'config', '--pure'], directory);
170
+ const configured = JSON.parse(raw);
171
+ if (record(configured)) {
172
+ const selected = id(configured.model);
173
+ if (selected)
174
+ scan.models = scan.models.map(model => model.id === selected ? { ...model, source: 'configured' } : model);
175
+ }
176
+ }
177
+ }
178
+ catch {
179
+ scan.warnings.push('Model discovery was incomplete; repair the agent configuration and rerun ck init. Raw diagnostics are withheld because they may contain credentials.');
180
+ }
181
+ return scan;
182
+ }));
183
+ }
184
+ finally {
185
+ await rm(directory, { recursive: true, force: true });
186
+ }
187
+ }
188
+ //# sourceMappingURL=agent-model-scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-model-scan.js","sourceRoot":"","sources":["../../src/lib/agent-model-scan.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@ export declare function codexTurnFailureMessage(jsonl: unknown): string | null;
3
3
  export declare function codexModelRejection(err: unknown): string | null;
4
4
  export declare function withCodexJsonlOutput<T>(run: () => Promise<T>): Promise<T>;
5
5
  export declare function codexFallbackModel(model: string): string | null;
6
- export declare function withCodexModelFallback<T>(model: string, step: string, run: (model: string) => Promise<T>, onFallback?: (msg: string) => void): Promise<T>;
6
+ export declare function withCodexModelFallback<T>(model: string, step: string, run: (model: string) => Promise<T>, onFallback?: (msg: string) => void, allowedModels?: readonly string[]): Promise<T>;
7
7
  //# sourceMappingURL=codex-model-fallback.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex-model-fallback.d.ts","sourceRoot":"","sources":["../../src/lib/codex-model-fallback.ts"],"names":[],"mappings":"AAOA,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAQD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAUrE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAM/D;AAID,wBAAsB,oBAAoB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAY/E;AAUD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK/D;AAED,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAClC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACjC,OAAO,CAAC,CAAC,CAAC,CAoBZ"}
1
+ {"version":3,"file":"codex-model-fallback.d.ts","sourceRoot":"","sources":["../../src/lib/codex-model-fallback.ts"],"names":[],"mappings":"AAOA,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAQD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAUrE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAM/D;AAID,wBAAsB,oBAAoB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAY/E;AAUD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK/D;AAED,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAClC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAClC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAChC,OAAO,CAAC,CAAC,CAAC,CAyBZ"}
@@ -67,10 +67,16 @@ export function codexFallbackModel(model) {
67
67
  return twin;
68
68
  return 'default';
69
69
  }
70
- export async function withCodexModelFallback(model, step, run, onFallback) {
70
+ export async function withCodexModelFallback(model, step, run, onFallback, allowedModels) {
71
+ const nextModel = (current) => {
72
+ if (!allowedModels)
73
+ return codexFallbackModel(current);
74
+ const twin = subscriptionTwin(current);
75
+ return [twin, ...allowedModels].find(candidate => candidate !== undefined && candidate !== current && allowedModels.includes(candidate) && !rejectedModels.has(candidate)) ?? null;
76
+ };
71
77
  let current = model;
72
78
  while (rejectedModels.has(current)) {
73
- const next = codexFallbackModel(current);
79
+ const next = nextModel(current);
74
80
  if (!next)
75
81
  break;
76
82
  current = next;
@@ -81,7 +87,7 @@ export async function withCodexModelFallback(model, step, run, onFallback) {
81
87
  }
82
88
  catch (err) {
83
89
  const rejection = codexModelRejection(err);
84
- const next = rejection ? codexFallbackModel(current) : null;
90
+ const next = rejection ? nextModel(current) : null;
85
91
  if (!rejection || !next)
86
92
  throw err;
87
93
  rejectedModels.add(current);
@@ -1 +1 @@
1
- {"version":3,"file":"codex-model-fallback.js","sourceRoot":"","sources":["../../src/lib/codex-model-fallback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-model-fallback.js","sourceRoot":"","sources":["../../src/lib/codex-model-fallback.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ export declare function resolveClaudeModel(quality: QualityConfig, vendor?: Vend
17
17
  export declare function resolveCodexModel(quality: QualityConfig, vendor: CodexVendorConfig, strategy?: {
18
18
  tier: QualityConfig['tier'] | null;
19
19
  } | null): string;
20
- export declare function resolveOpenCodeModel(_quality: QualityConfig, vendor: OpenCodeVendorConfig, _strategy?: {
20
+ export declare function resolveOpenCodeModel(quality: QualityConfig, vendor: OpenCodeVendorConfig, strategy?: {
21
21
  tier: QualityConfig['tier'] | null;
22
22
  } | null): string | undefined;
23
23
  export declare function modelDisplayName(model: string): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"review-models.d.ts","sourceRoot":"","sources":["../../src/lib/review-models.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAmB/G,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAgC,CAAA;AACrG,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAmC,CAAA;AAE3G,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAA4C,CAAA;AAE7H;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,aAAa,EACtB,QAAQ,CAAC,EAAE;IAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GACvD,aAAa,CAAC,MAAM,CAAC,CAGvB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,aAAa,EACtB,MAAM,CAAC,EAAE,YAAY,EACrB,QAAQ,CAAC,EAAE;IAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GACvD,MAAM,CAMR;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,iBAAiB,EACzB,QAAQ,CAAC,EAAE;IAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GACvD,MAAM,CAWR;AAOD,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,oBAAoB,EAC5B,SAAS,CAAC,EAAE;IAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GACxD,MAAM,GAAG,SAAS,CAEpB;AAcD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7D;AAQD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAgBxE"}
1
+ {"version":3,"file":"review-models.d.ts","sourceRoot":"","sources":["../../src/lib/review-models.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAmB/G,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAgC,CAAA;AACrG,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAmC,CAAA;AAE3G,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAA4C,CAAA;AAE7H;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,aAAa,EACtB,QAAQ,CAAC,EAAE;IAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GACvD,aAAa,CAAC,MAAM,CAAC,CAGvB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,aAAa,EACtB,MAAM,CAAC,EAAE,YAAY,EACrB,QAAQ,CAAC,EAAE;IAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GACvD,MAAM,CAMR;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,iBAAiB,EACzB,QAAQ,CAAC,EAAE;IAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GACvD,MAAM,CAWR;AAGD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,CAAC,EAAE;IAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GACvD,MAAM,GAAG,SAAS,CAEpB;AAcD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7D;AAQD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAgBxE"}
@@ -50,13 +50,9 @@ export function resolveCodexModel(quality, vendor, strategy) {
50
50
  return 'default';
51
51
  return CODEX_TIER_MODELS_API[tier] || CODEX_TIER_MODELS_API.balanced;
52
52
  }
53
- // OpenCode's model is user-configured in opencode.json, not a vendor catalog
54
- // crosscheck ships. So there is no built-in tier mapping: crosscheck only pins
55
- // a model when `vendors.opencode.model` is set, and otherwise leaves the choice
56
- // to the OpenCode CLI (which reads the user's configured default). Tier drives
57
- // effort — the `--model provider/model#variant` suffix — in opencodeEffort.
58
- export function resolveOpenCodeModel(_quality, vendor, _strategy) {
59
- return vendor?.model ?? undefined;
53
+ // No built-in provider choice: operators opt into tier IDs their account serves.
54
+ export function resolveOpenCodeModel(quality, vendor, strategy) {
55
+ return vendor.model ?? vendor.model_tiers?.[effectiveTier(quality, strategy)];
60
56
  }
61
57
  // Derives a display name from the regular claude model ID shape:
62
58
  // claude-{family}-{major}[-{minor}][-YYYYMMDD]. New models then render
@@ -1 +1 @@
1
- {"version":3,"file":"review-models.js","sourceRoot":"","sources":["../../src/lib/review-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAE9C,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAA;AAEF,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,eAAe;IACvB,SAAS,EAAE,eAAe;IAC1B,kBAAkB,EAAE,eAAe;CACpC,CAAC,CAAA;AAEF,MAAM,wBAAwB,GAAY,OAAO,CAAC,mCAAmC,CAAC,CAAA;AACtF,MAAM,qBAAqB,GAAG,2BAA2B,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;AAEzF,MAAM,CAAC,MAAM,kBAAkB,GAA0C,qBAAqB,CAAC,MAAM,CAAA;AACrG,MAAM,CAAC,MAAM,qBAAqB,GAA0C,qBAAqB,CAAC,SAAS,CAAA;AAC3G,+EAA+E;AAC/E,MAAM,CAAC,MAAM,8BAA8B,GAA0C,qBAAqB,CAAC,kBAAkB,CAAA;AAE7H;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAsB,EACtB,QAAwD;IAExD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,EAAE,IAAI;QAAE,OAAO,QAAQ,CAAC,IAAI,CAAA;IACpE,OAAO,OAAO,CAAC,IAAI,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAsB,EACtB,MAAqB,EACrB,QAAwD;IAExD,8EAA8E;IAC9E,2EAA2E;IAC3E,sDAAsD;IACtD,IAAI,MAAM,EAAE,KAAK;QAAE,OAAO,MAAM,CAAC,KAAK,CAAA;IACtC,OAAO,kBAAkB,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAA;AAC5F,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAAsB,EACtB,MAAyB,EACzB,QAAwD;IAExD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC7C,wEAAwE;IACxE,4EAA4E;IAC5E,yEAAyE;IACzE,yEAAyE;IACzE,kDAAkD;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAA;IAC3D,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC7B,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAC/C,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,QAAQ,CAAA;AACtE,CAAC;AAED,6EAA6E;AAC7E,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,4EAA4E;AAC5E,MAAM,UAAU,oBAAoB,CAClC,QAAuB,EACvB,MAA4B,EAC5B,SAAyD;IAEzD,OAAO,MAAM,EAAE,KAAK,IAAI,SAAS,CAAA;AACnC,CAAC;AAED,iEAAiE;AACjE,uEAAuE;AACvE,mEAAmE;AACnE,6EAA6E;AAC7E,+CAA+C;AAC/C,SAAS,gBAAgB,CAAC,KAAa;IACrC,MAAM,CAAC,GAAG,+CAA+C,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACrE,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IACnB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACpD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AACjE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACpC,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAA;AACzC,CAAC;AAED,4EAA4E;AAC5E,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,2BAA2B;AAC3B,MAAM,UAAU,qBAAqB,CAAC,UAAmB;IACvD,6EAA6E;IAC7E,0CAA0C;IAC1C,IAAI,UAAU,KAAK,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAA;IACnG,IAAI,IAAI,GAAkB,IAAI,CAAA;IAC9B,6EAA6E;IAC7E,IAAI,UAAU,GAAG,CAAC,CAAC,CAAA;IACnB,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,MAAM,GAAG,GAAI,KAA2C,EAAE,YAAY,CAAA;QACtE,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAChD,IAAI,MAAM,GAAG,UAAU,EAAE,CAAC;YACxB,UAAU,GAAG,MAAM,CAAA;YACnB,IAAI,GAAG,EAAE,CAAA;QACX,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"review-models.js","sourceRoot":"","sources":["../../src/lib/review-models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { CodexVendorConfig, OpenCodeVendorConfig, QualityConfig, ReviewModel, VendorConfig, Config } from '../config/schema.js';
2
+ import type { Vendor } from './vendor.js';
3
+ export declare function reviewModelExcluded(id: string): boolean;
4
+ export declare function reviewModelClass(id: string): ReviewModel['model_class'] | undefined;
5
+ export declare function reviewCost(model: ReviewModel): number;
6
+ /** The exact effort controls a review may send, including the profile ceiling. */
7
+ export declare function reviewEffortLevels(vendor: Vendor, quality: QualityConfig, model: string): string[];
8
+ export declare function selectReviewModel(vendor: Vendor, quality: QualityConfig, config: VendorConfig | CodexVendorConfig | OpenCodeVendorConfig): {
9
+ model: string;
10
+ effort?: string;
11
+ };
12
+ export declare function eligibleReviewConfig(config: Config): Config;
13
+ //# sourceMappingURL=review-selection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-selection.d.ts","sourceRoot":"","sources":["../../src/lib/review-selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAEpI,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAIzC,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAKvD;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,SAAS,CAKnF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAGrD;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAOlG;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,YAAY,GAAG,iBAAiB,GAAG,oBAAoB,GAC9D;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAsCpC;AAGD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAwB3D"}
@@ -0,0 +1,107 @@
1
+ import { CLAUDE_EFFORT_LEVELS, CODEX_EFFORT_LEVELS } from '../config/schema.js';
2
+ import { resolveClaudeModel, resolveCodexModel, resolveOpenCodeModel, CODEX_TIER_MODELS_SUBSCRIPTION } from './review-models.js';
3
+ import { clampToLevels, isModelBanned, openCodeVariantsFor } from './review-strategy.js';
4
+ export function reviewModelExcluded(id) {
5
+ const name = id.toLowerCase().split('#')[0];
6
+ if (isModelBanned(name) || isModelBanned(name.split('/').at(-1) ?? name))
7
+ return true;
8
+ return /(^|[/_.:-])(fable|mythos|opus(?:plan)?|astra|best)([\W_]|$)/.test(name)
9
+ || /kimi-k[3-9]|glm-5(?:\.\d+)?(?![\w.-]*flash)(?:$|[-#:/])|deepseek-[\w.-]*pro|minimax-m[3-9](?:$|[.:/-])|gemini-(?![\w.-]*flash)[\w.-]*(?:pro|argon|ultra)|qwen[\w.-]*max|grok-[4-9]|gpt-[\w.-]*-pro/.test(name);
10
+ }
11
+ export function reviewModelClass(id) {
12
+ if (reviewModelExcluded(id))
13
+ return undefined;
14
+ if (/flash|haiku|luna|terra|mini|lite/i.test(id))
15
+ return 'fast';
16
+ if (/sonnet|(?:^|-)sol(?:$|[.-])/i.test(id))
17
+ return 'standard';
18
+ return undefined;
19
+ }
20
+ export function reviewCost(model) {
21
+ if (model.input_usd_mtok === undefined || model.output_usd_mtok === undefined)
22
+ return Infinity;
23
+ return .1 * model.input_usd_mtok + .048 * model.output_usd_mtok;
24
+ }
25
+ /** The exact effort controls a review may send, including the profile ceiling. */
26
+ export function reviewEffortLevels(vendor, quality, model) {
27
+ if (model.includes('#'))
28
+ return []; // An explicit OpenCode variant is already fixed.
29
+ const discovered = quality.review_models?.[vendor]?.find(entry => entry.id === model)?.efforts;
30
+ const accepted = discovered ?? (vendor === 'claude' ? CLAUDE_EFFORT_LEVELS
31
+ : vendor === 'codex' ? CODEX_EFFORT_LEVELS : openCodeVariantsFor(model) ?? []);
32
+ const ceiling = quality.preference === 'speed-max' ? ['none', 'low', 'medium'] : ['none', 'low', 'medium', 'high'];
33
+ return accepted.filter(level => ceiling.includes(level));
34
+ }
35
+ export function selectReviewModel(vendor, quality, config) {
36
+ const saved = quality.review_models?.[vendor];
37
+ let model;
38
+ let candidate;
39
+ if (config.model && saved === undefined) {
40
+ model = config.model;
41
+ }
42
+ else if (saved !== undefined) {
43
+ const pool = saved.filter(entry => !reviewModelExcluded(entry.id) && !reviewModelExcluded(entry.family ?? ''));
44
+ if (pool.length === 0)
45
+ throw new Error(`No eligible ${vendor} review models; run ck init.`);
46
+ const preference = quality.preference ?? 'balanced';
47
+ const ordered = [...pool].sort((a, b) => {
48
+ if (preference === 'cost-min')
49
+ return reviewCost(a) - reviewCost(b) || a.id.localeCompare(b.id);
50
+ return Number(a.model_class === 'standard') - Number(b.model_class === 'standard')
51
+ || reviewCost(a) - reviewCost(b) || a.id.localeCompare(b.id);
52
+ });
53
+ candidate = preference === 'balanced' && quality.tier !== 'fast'
54
+ ? ordered.find(entry => entry.model_class === 'standard') ?? ordered[0]
55
+ : ordered[0];
56
+ model = candidate.id;
57
+ }
58
+ else {
59
+ model = vendor === 'claude' ? resolveClaudeModel(quality, config)
60
+ : vendor === 'codex' ? resolveCodexModel(quality, config)
61
+ : resolveOpenCodeModel(quality, config) ?? 'default';
62
+ if (model === 'default' && vendor === 'codex')
63
+ model = CODEX_TIER_MODELS_SUBSCRIPTION[quality.tier];
64
+ }
65
+ if (reviewModelExcluded(model) || reviewModelExcluded(candidate?.family ?? '')) {
66
+ throw new Error(`Review model ${model} is excluded by the flagship ceiling; run ck init.`);
67
+ }
68
+ if (saved === undefined && !reviewModelClass(model) && model !== 'default')
69
+ throw new Error(`Unknown custom review model ${model}; classify its non-flagship deployment with ck init.`);
70
+ // OpenCode keeps working with no pin: 'default' leaves the model configured in
71
+ // opencode.json in charge. Claude resolves a tier model and Codex maps its own
72
+ // default before this point, so only OpenCode reaches it.
73
+ const preference = quality.preference ?? 'balanced';
74
+ let target = quality.tier === 'thorough' ? preference === 'speed-max' ? 'medium' : 'high'
75
+ : quality.tier === 'fast' || preference === 'speed-max' ? 'low' : 'medium';
76
+ if (['high', 'xhigh', 'max', 'ultra'].includes(config.effort))
77
+ target = preference === 'speed-max' ? 'medium' : 'high';
78
+ const effort = clampToLevels(target, reviewEffortLevels(vendor, quality, model)) ?? undefined;
79
+ return { model, effort };
80
+ }
81
+ export function eligibleReviewConfig(config) {
82
+ const eligible = (vendor) => {
83
+ const pool = config.quality.review_models?.[vendor];
84
+ return config.vendors[vendor].enabled && (pool === undefined || pool.some(model => !reviewModelExcluded(model.id) && !reviewModelExcluded(model.family ?? '')));
85
+ };
86
+ const selected = { ...config, vendors: {
87
+ claude: { ...config.vendors.claude, enabled: eligible('claude') },
88
+ codex: { ...config.vendors.codex, enabled: eligible('codex') },
89
+ opencode: { ...config.vendors.opencode, enabled: eligible('opencode') },
90
+ } };
91
+ if (!config.quality.preference)
92
+ return selected;
93
+ const order = [...new Set([...config.agent_priority.review, ...['codex', 'claude', 'opencode']])];
94
+ const pool = order.filter(vendor => eligible(vendor) && config.quality.review_models?.[vendor]?.length);
95
+ const chosen = (vendor) => {
96
+ const pick = selectReviewModel(vendor, config.quality, { ...config.vendors[vendor], model: null });
97
+ return config.quality.review_models[vendor].find(model => model.id === pick.model);
98
+ };
99
+ pool.sort((a, b) => {
100
+ const first = chosen(a), second = chosen(b);
101
+ const capacity = Number(first.model_class === 'standard') - Number(second.model_class === 'standard');
102
+ const direction = config.quality.preference === 'balanced' && config.quality.tier !== 'fast' ? -1 : 1;
103
+ return (config.quality.preference === 'cost-min' ? 0 : direction * capacity) || reviewCost(first) - reviewCost(second);
104
+ });
105
+ return { ...selected, agent_priority: { ...config.agent_priority, review: [...pool, ...order.filter(vendor => eligible(vendor) && !pool.includes(vendor))] } };
106
+ }
107
+ //# sourceMappingURL=review-selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-selection.js","sourceRoot":"","sources":["../../src/lib/review-selection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAE/E,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAA;AAChI,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAExF,MAAM,UAAU,mBAAmB,CAAC,EAAU;IAC5C,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3C,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACrF,OAAO,6DAA6D,CAAC,IAAI,CAAC,IAAI,CAAC;WAC1E,oMAAoM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACtN,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,IAAI,mBAAmB,CAAC,EAAE,CAAC;QAAE,OAAO,SAAS,CAAA;IAC7C,IAAI,mCAAmC,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO,MAAM,CAAA;IAC/D,IAAI,8BAA8B,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO,UAAU,CAAA;IAC9D,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAkB;IAC3C,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAA;IAC9F,OAAO,EAAE,GAAG,KAAK,CAAC,cAAc,GAAG,IAAI,GAAG,KAAK,CAAC,eAAe,CAAA;AACjE,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,OAAsB,EAAE,KAAa;IACtF,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA,CAAC,iDAAiD;IACpF,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,OAAO,CAAA;IAC9F,MAAM,QAAQ,GAAG,UAAU,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB;QACxE,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;IAChF,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IAClH,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;AAC1D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAc,EACd,OAAsB,EACtB,MAA+D;IAE/D,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAA;IAC7C,IAAI,KAAa,CAAA;IACjB,IAAI,SAAkC,CAAA;IACtC,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;IACtB,CAAC;SAAM,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAA;QAC9G,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,eAAe,MAAM,8BAA8B,CAAC,CAAA;QAC3F,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,UAAU,CAAA;QACnD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,UAAU,KAAK,UAAU;gBAAE,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YAC/F,OAAO,MAAM,CAAC,CAAC,CAAC,WAAW,KAAK,UAAU,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,KAAK,UAAU,CAAC;mBAC7E,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAChE,CAAC,CAAC,CAAA;QACF,SAAS,GAAG,UAAU,KAAK,UAAU,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;YAC9D,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC;YACvE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACd,KAAK,GAAG,SAAS,CAAC,EAAE,CAAA;IACtB,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAsB,CAAC;YAC/E,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAA2B,CAAC;gBAC9E,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAA8B,CAAC,IAAI,SAAS,CAAA;QAC9E,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,OAAO;YAAE,KAAK,GAAG,8BAA8B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACrG,CAAC;IACD,IAAI,mBAAmB,CAAC,KAAK,CAAC,IAAI,mBAAmB,CAAC,SAAS,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,oDAAoD,CAAC,CAAA;IAC5F,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,sDAAsD,CAAC,CAAA;IACvL,+EAA+E;IAC/E,+EAA+E;IAC/E,0DAA0D;IAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,UAAU,CAAA;IACnD,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;QACvF,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC5E,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QAAE,MAAM,GAAG,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAA;IACtH,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,SAAS,CAAA;IAC7F,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AAC1B,CAAC;AAGD,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAW,EAAE;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAA;QACnD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACjK,CAAC,CAAA;IACD,MAAM,QAAQ,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE;YACrC,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACjE,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC9D,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;SACxE,EAAE,CAAA;IACH,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU;QAAE,OAAO,QAAQ,CAAA;IAC/C,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAW,CAAC,CAAC,CAAC,CAAA;IAC5G,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;IACvG,MAAM,MAAM,GAAG,CAAC,MAAc,EAAe,EAAE;QAC7C,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAClG,OAAO,MAAM,CAAC,OAAO,CAAC,aAAc,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAE,CAAA;IACvF,CAAC,CAAA;IACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,UAAU,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,KAAK,UAAU,CAAC,CAAA;QACrG,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,KAAK,UAAU,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACrG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IACxH,CAAC,CAAC,CAAA;IACF,OAAO,EAAE,GAAG,QAAQ,EAAE,cAAc,EAAE,EAAE,GAAG,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AAChK,CAAC"}
@@ -46,8 +46,10 @@ export declare function isDocOnlyChange(files: string[]): boolean;
46
46
  export declare function detectDomain(files: string[]): Domain;
47
47
  /** Classifies a PR against the strategy's ordered class list. First match wins. */
48
48
  export declare function resolveReviewStrategy(pr: PRContext): ResolvedStrategy;
49
- /** Effort levels a model accepts. Empty array = the model has no effort control. */
49
+ /** Verified native effort ladder; empty means no ladder is established here. */
50
50
  export declare function effortLevelsFor(model: string): string[];
51
+ /** Undefined = custom provider; [] = leave the provider's variant default intact. */
52
+ export declare function openCodeVariantsFor(model: string): string[] | undefined;
51
53
  export declare function isModelBanned(model: string): boolean;
52
54
  export declare function strategyModelFor(vendor: string, tier: Tier): string | null;
53
55
  export declare function strategyVersion(): string;
@@ -62,6 +64,8 @@ export interface EscalationLane {
62
64
  model: string;
63
65
  /** The vendor CLI's effort flags. Omitted = judge on model capability alone. */
64
66
  accepted?: readonly string[];
67
+ /** Live review capabilities, already bounded by profile policy; overrides the catalog. */
68
+ efforts?: readonly string[];
65
69
  }
66
70
  /**
67
71
  * Escalation for round N. Raises effort where the vendor that will actually run
@@ -1 +1 @@
1
- {"version":3,"file":"review-strategy.d.ts","sourceRoot":"","sources":["../../src/lib/review-strategy.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAIxD,MAAM,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;AACxC,MAAM,MAAM,MAAM,GAAG,UAAU,GAAG,SAAS,CAAA;AA8F3C,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,2FAA2F;IAC3F,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAA;IACd,oCAAoC;IACpC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAUD;;;;GAIG;AACH;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAExD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAIpD;AAsDD,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,SAAS,GAAG,gBAAgB,CAerE;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAEvD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAE1E;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,YAAY,IAAI;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAMlG;AAYD,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAA;IACb,gFAAgF;IAChF,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC3C,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GAAG,SAAS,cAAc,EAAE,GACxC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAkCvC;AAED,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAE/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAW7F"}
1
+ {"version":3,"file":"review-strategy.d.ts","sourceRoot":"","sources":["../../src/lib/review-strategy.ts"],"names":[],"mappings":"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"}