@agentskit/code-review 0.1.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/.doc-bridge/capabilities.json +34 -0
  2. package/.doc-bridge/index.json +94 -0
  3. package/.pre-commit-hooks.yaml +9 -0
  4. package/AGENTS.md +20 -0
  5. package/CHANGELOG.md +91 -0
  6. package/CONTRIBUTING.md +45 -0
  7. package/README.md +238 -33
  8. package/ROADMAP.md +20 -0
  9. package/SECURITY.md +16 -0
  10. package/action.yml +120 -0
  11. package/dist/agents/code-review/agent.js +454 -76
  12. package/dist/agents/code-review/agent.js.map +1 -1
  13. package/dist/agents/code-review/lenses.js +17 -1
  14. package/dist/agents/code-review/lenses.js.map +1 -1
  15. package/dist/agents/code-review/reporters.js +83 -7
  16. package/dist/agents/code-review/reporters.js.map +1 -1
  17. package/dist/agents/code-review/sources.js +324 -73
  18. package/dist/agents/code-review/sources.js.map +1 -1
  19. package/dist/src/acp-cli-adapter.js +127 -0
  20. package/dist/src/acp-cli-adapter.js.map +1 -0
  21. package/dist/src/batch-coverage.js +111 -0
  22. package/dist/src/batch-coverage.js.map +1 -0
  23. package/dist/src/claude-code-adapter.js +44 -60
  24. package/dist/src/claude-code-adapter.js.map +1 -1
  25. package/dist/src/cli.js +347 -50
  26. package/dist/src/cli.js.map +1 -1
  27. package/dist/src/codex-adapter.js +114 -69
  28. package/dist/src/codex-adapter.js.map +1 -1
  29. package/dist/src/github-review-state.js +134 -0
  30. package/dist/src/github-review-state.js.map +1 -0
  31. package/dist/src/grok-cli-adapter.js +27 -0
  32. package/dist/src/grok-cli-adapter.js.map +1 -0
  33. package/dist/src/headless-cli-adapter.js +78 -0
  34. package/dist/src/headless-cli-adapter.js.map +1 -0
  35. package/dist/src/local-cli-process.js +328 -0
  36. package/dist/src/local-cli-process.js.map +1 -0
  37. package/dist/src/local-cli-timeout.js +14 -0
  38. package/dist/src/local-cli-timeout.js.map +1 -0
  39. package/dist/src/ollama-adapter.js +155 -0
  40. package/dist/src/ollama-adapter.js.map +1 -0
  41. package/dist/src/opencode-cli-adapter.js +57 -0
  42. package/dist/src/opencode-cli-adapter.js.map +1 -0
  43. package/dist/src/provider-circuit-breaker.js +52 -0
  44. package/dist/src/provider-circuit-breaker.js.map +1 -0
  45. package/dist/src/provider-registry.js +168 -0
  46. package/dist/src/provider-registry.js.map +1 -0
  47. package/dist/src/review-config.js +145 -0
  48. package/dist/src/review-config.js.map +1 -0
  49. package/doc-bridge.config.json +116 -0
  50. package/docs/OPERATIONS.md +358 -0
  51. package/docs/assets/agentskit-mark.svg +10 -0
  52. package/docs/assets/code-review-terminal.png +0 -0
  53. package/docs/continuous-improvement.md +35 -0
  54. package/docs/for-agents/code-review-cli.md +70 -0
  55. package/docs/for-agents/index.md +5 -0
  56. package/docs/plans/ecosystem-doc-quality-code-review.md +61 -0
  57. package/docs/provider-compatibility.json +35 -0
  58. package/ecosystem-claims.json +187 -0
  59. package/ecosystem.json +277 -0
  60. package/examples/pull-request.yml +29 -0
  61. package/llms-full.txt +1055 -0
  62. package/llms.txt +24 -0
  63. package/package.json +53 -7
  64. package/scripts/generate-llms-full.mjs +68 -0
  65. package/scripts/run-cycle-benchmark.mjs +64 -0
  66. package/test/cli-smoke.test.mjs +522 -0
  67. package/test/continuous-improvement.test.mjs +20 -0
  68. package/test/documentation.test.mjs +238 -0
  69. package/test/release-workflow.test.mjs +31 -0
  70. package/dist/agents/code-review/agent.d.ts +0 -115
  71. package/dist/agents/code-review/lenses.d.ts +0 -10
  72. package/dist/agents/code-review/reporters.d.ts +0 -31
  73. package/dist/agents/code-review/sources.d.ts +0 -27
  74. package/dist/src/claude-code-adapter.d.ts +0 -4
  75. package/dist/src/cli.d.ts +0 -2
  76. package/dist/src/codex-adapter.d.ts +0 -4
package/dist/src/cli.js CHANGED
@@ -1,32 +1,25 @@
1
1
  #!/usr/bin/env node
2
- /**
3
- * Thin local CLI over the registry `code-review` agent. Provider-agnostic:
4
- * `--provider <name>` selects a local CLI or any @agentskit/adapters
5
- * factory (anthropic, openai, gemini, grok, ollama, deepseek, mistral, groq,
6
- * openrouter, together, …).
7
- *
8
- * agentskit-review --provider codex-cli # local CLI, git diff vs origin/main
9
- * code-review --pr owner/repo#42 --post # post a batched PR review (GITHUB_TOKEN)
10
- * code-review --provider openai --model gpt-4o # any provider (key via --api-key / *_API_KEY / LLM_API_KEY)
11
- * code-review --provider ollama --model llama3 --base-url http://localhost:11434
12
- * echo "const x=a.b" | code-review --stdin --lang ts
13
- *
14
- * Exit code: 1 when a finding at/above --block survives (unless --no-fail) — wire to CI.
15
- */
16
- import * as adapters from '@agentskit/adapters';
17
2
  import { createProgressObserver } from '@agentskit/ink';
18
- import { readFileSync } from 'node:fs';
19
- import { createCodeReviewAgent } from '../agents/code-review/agent.js';
20
- import { githubInlineReporter, githubSummaryReporter, markdownReporter, sarifReporter } from '../agents/code-review/reporters.js';
3
+ import { readFileSync, writeFileSync } from 'node:fs';
4
+ import { builtInLenses, createCodeReviewAgent } from '../agents/code-review/agent.js';
5
+ import { githubInlineReporter, githubSummaryReporter, markdownReporter, renderMarkdown, sarifReporter } from '../agents/code-review/reporters.js';
21
6
  import { claudeCode } from './claude-code-adapter.js';
22
7
  import { codexCli } from './codex-adapter.js';
8
+ import { grokCli, grokHeadless } from './grok-cli-adapter.js';
9
+ import { opencodeCli, opencodeHeadless } from './opencode-cli-adapter.js';
10
+ import { createAutoCliAdapter } from './headless-cli-adapter.js';
11
+ import { ollamaReview } from './ollama-adapter.js';
12
+ import { diagnoseProvider, factoryFor, providerEntry, providerRegistry, resolveProviderId } from './provider-registry.js';
13
+ import { loadReviewConfig } from './review-config.js';
14
+ import { getGithubReviewState, reviewFingerprint } from './github-review-state.js';
15
+ import { consolidateToArtifact, createBatchCoverage, partitionReviewableFiles } from './batch-coverage.js';
23
16
  const HELP = `AgentsKit Code Review — deep, low-noise review with your model
24
17
 
25
18
  Usage:
26
19
  agentskit-review --provider <name> [options]
27
20
 
28
21
  Providers:
29
- codex-cli, claude-cli, or any @agentskit/adapters provider
22
+ codex-cli, claude-cli, grok-cli, opencode-cli, or any @agentskit/adapters provider
30
23
  (anthropic, openai, gemini, ollama, openrouter, mistral, groq, ...)
31
24
 
32
25
  Examples:
@@ -43,27 +36,49 @@ Sources:
43
36
 
44
37
  Review options:
45
38
  --votes <n> Adversarial verification votes (default: 3)
39
+ --profile <full|fast> Full review, or one bounded required-lens batch (fast)
46
40
  --min-severity <level> Minimum finding severity
47
41
  --min-confidence <n> Minimum finding confidence
48
42
  --block <level> CI gate floor (default: blocker)
49
- --max-files <n> File budget
50
- --concurrency <n> Parallel model calls (default: 4)
43
+ --max-files <n> Positive file budget
44
+ --max-findings-per-file <n> Maximum verified findings per file
45
+ --max-calls <n> Provider-call budget (absolute ceiling: 1000)
46
+ --concurrency <n> Parallel model calls (default: 1 for CLI, 4 for API)
47
+ --deadline-ms <n> Global run deadline (fast default: 120000; full: 600000)
48
+ --health-check <mode> Provider smoke check: auto (default) or off
51
49
  --conventions <path> Project conventions file
50
+ --allow-incomplete Local-only exception for an explicitly incomplete profile
51
+ --allow-unredacted Local-only exception for secret redaction
52
52
  --validate-patch Validate suggested patches with git apply --check
53
53
  --sarif <file> Also write a SARIF report
54
+ --result <file> Write a private JSON review result for orchestration
54
55
  --post Post a PR review (with --pr)
55
56
  --no-fail Report findings without failing the process
57
+ --dry-run, --plan Print the provider-free preflight plan without model calls
58
+ --batch-size <n> Add a deterministic file-batch manifest to --plan --json
59
+ --batch-index <n> Review one batch; partial batches cannot use --post
60
+ --batch-manifest <file> Write the private SHA/policy-bound batch manifest during --plan
61
+ --consolidate-manifest <file> Consolidate private artifacts from --artifacts <comma-list>
62
+ --publish-result <file> Publish one consolidated artifact (requires --pr --post)
63
+ --json Emit machine-readable plan output with --plan/--dry-run
56
64
 
57
65
  Provider options:
58
66
  --model <id> Model id (required for API/local-server providers)
59
67
  --api-key <key> Or use LLM_API_KEY / <PROVIDER>_API_KEY
60
68
  --base-url <url> Custom endpoint or local gateway
69
+ --transport <name> Provider transport (doctor validates it)
61
70
  --api Back-compatible alias for --provider anthropic
62
71
 
72
+ Diagnostics:
73
+ doctor Check one provider without making a model request
74
+ --live Explicitly enable a provider smoke test for doctor
75
+ --json Emit machine-readable doctor output
76
+ --mode <mode> Configuration mode: isolated or trusted-local
77
+ --ci Apply CI version and trust checks
78
+
63
79
  --help Show this help
64
80
  --list-providers List common providers
65
81
  `;
66
- const PROVIDERS = 'codex-cli\nclaude-cli\nanthropic\nopenai\ngemini\ngrok\nollama\ndeepseek\nmistral\ngroq\nopenrouter\ntogether';
67
82
  function flag(name) {
68
83
  const i = process.argv.indexOf(`--${name}`);
69
84
  return i >= 0 ? process.argv[i + 1] : undefined;
@@ -77,7 +92,15 @@ function readStdin() {
77
92
  process.stdin.on('end', () => resolve(data));
78
93
  });
79
94
  }
80
- async function resolveSource() {
95
+ function shouldRedact(reviewConfig) {
96
+ const provider = reviewConfig.provider && resolveProviderId(reviewConfig.provider);
97
+ const boundary = provider && providerEntry(provider)?.dataBoundary;
98
+ return (boundary === 'remote' || boundary === 'unknown') && !reviewConfig.allowUnredacted;
99
+ }
100
+ async function resolveSource(reviewConfig) {
101
+ const redact = shouldRedact(reviewConfig);
102
+ const limits = { maxFiles: reviewConfig.budget.maxFiles, maxBytes: reviewConfig.budget.maxBytes };
103
+ const batchRequested = flag('batch-index') !== undefined;
81
104
  const pr = flag('pr');
82
105
  if (pr) {
83
106
  const m = pr.match(/^([^/]+)\/([^#]+)#(\d+)$/);
@@ -86,10 +109,14 @@ async function resolveSource() {
86
109
  const token = process.env.GITHUB_TOKEN;
87
110
  if (!token)
88
111
  throw new Error('--pr needs GITHUB_TOKEN');
89
- return { kind: 'github-pr', owner: m[1], repo: m[2], number: Number(m[3]), token };
112
+ const lensCount = Object.values(reviewConfig.lenses).filter((lens) => lens.enabled).length;
113
+ const maxFindingsPerFile = reviewConfig.thresholds.maxPerFile ?? lensCount;
114
+ const callsPerFile = (reviewConfig.batchLenses ? 1 : lensCount) * (1 + reviewConfig.retries) + maxFindingsPerFile * reviewConfig.votes * (1 + reviewConfig.retries);
115
+ const automaticFileBudget = Math.max(1, Math.floor(((reviewConfig.budget.maxCalls ?? 1000) - 1) / Math.max(1, callsPerFile)));
116
+ return { kind: 'github-pr', owner: m[1], repo: m[2], number: Number(m[3]), token, redact, limits: { ...limits, maxFiles: batchRequested ? 500 : (limits.maxFiles ?? automaticFileBudget) } };
90
117
  }
91
118
  if (has('stdin'))
92
- return { kind: 'stdin', content: await readStdin(), filename: `snippet.${flag('lang') ?? 'txt'}` };
119
+ return { kind: 'stdin', content: await readStdin(), filename: `snippet.${flag('lang') ?? 'txt'}`, redact, limits: { ...limits, maxFileBytes: 1024 * 1024 } };
93
120
  if (has('paths')) {
94
121
  const i = process.argv.indexOf('--paths');
95
122
  const paths = [];
@@ -97,9 +124,11 @@ async function resolveSource() {
97
124
  paths.push(process.argv[j]);
98
125
  if (!paths.length)
99
126
  throw new Error('--paths needs at least one file/dir');
100
- return { kind: 'paths', paths, cwd: process.cwd() };
127
+ return { kind: 'paths', paths, cwd: process.cwd(), redact, limits: { ...limits, maxFileBytes: 1024 * 1024 } };
101
128
  }
102
- return { kind: 'git-diff', base: flag('base') ?? 'origin/main', cwd: process.cwd() };
129
+ if (reviewConfig.context.mode === 'isolated-snapshot')
130
+ return { kind: 'isolated-snapshot', cwd: process.cwd(), patterns: reviewConfig.context.patterns, redact, limits: { ...limits, maxFileBytes: 1024 * 1024 } };
131
+ return { kind: 'git-diff', base: flag('base') ?? 'origin/main', cwd: process.cwd(), redact, limits };
103
132
  }
104
133
  async function main() {
105
134
  if (has('help') || has('h')) {
@@ -107,63 +136,331 @@ async function main() {
107
136
  return;
108
137
  }
109
138
  if (has('list-providers')) {
110
- console.log(PROVIDERS);
139
+ console.log(providerRegistry().map(formatProvider).join('\n'));
140
+ return;
141
+ }
142
+ if (process.argv.includes('doctor') || has('doctor')) {
143
+ await runDoctor();
144
+ return;
145
+ }
146
+ const consolidateManifest = flag('consolidate-manifest');
147
+ if (consolidateManifest) {
148
+ const resultFile = flag('result');
149
+ const artifactFiles = flag('artifacts')?.split(',').filter(Boolean) ?? [];
150
+ if (!resultFile || !artifactFiles.length)
151
+ throw new Error('--consolidate-manifest needs --artifacts <comma-list> and --result <file>');
152
+ const manifest = parseJsonFile(consolidateManifest, 'batch manifest');
153
+ const artifacts = artifactFiles.map((path) => parseJsonFile(path, 'batch artifact'));
154
+ const consolidated = consolidateToArtifact(manifest, artifacts);
155
+ writeFileSync(resultFile, JSON.stringify(consolidated, null, 2), { mode: 0o600 });
156
+ console.log(renderMarkdown(consolidated.review));
157
+ return;
158
+ }
159
+ const reviewConfig = loadReviewConfig(process.cwd(), {
160
+ ci: has('ci') || process.env.CI === 'true' || process.env.CI === '1',
161
+ allowIncomplete: has('allow-incomplete'),
162
+ allowUnredacted: has('allow-unredacted'),
163
+ overrides: {
164
+ provider: flag('provider') ?? (has('api') ? 'anthropic' : undefined),
165
+ model: flag('model'),
166
+ transport: flag('transport'),
167
+ votes: flag('votes') === undefined ? undefined : Number(flag('votes')),
168
+ profile: flag('profile'),
169
+ deadlineMs: flag('deadline-ms') === undefined ? undefined : Number(flag('deadline-ms')),
170
+ healthCheck: flag('health-check'),
171
+ minSeverity: flag('min-severity'),
172
+ minConfidence: flag('min-confidence') === undefined ? undefined : Number(flag('min-confidence')),
173
+ maxPerFile: flag('max-findings-per-file') === undefined ? undefined : Number(flag('max-findings-per-file')),
174
+ maxFiles: flag('max-files') === undefined ? undefined : Number(flag('max-files')),
175
+ maxCalls: flag('max-calls') === undefined ? undefined : Number(flag('max-calls')),
176
+ concurrency: flag('concurrency') === undefined ? undefined : Number(flag('concurrency')),
177
+ conventions: flag('conventions'),
178
+ },
179
+ });
180
+ let source = await resolveSource(reviewConfig);
181
+ const requestedBatch = flag('batch-index');
182
+ const resultFile = flag('result');
183
+ const publishResult = flag('publish-result');
184
+ const policyFingerprint = reviewFingerprint({
185
+ engine: `@agentskit/code-review@${packageVersion()}`,
186
+ provider: reviewConfig.provider,
187
+ model: reviewConfig.model,
188
+ transport: reviewConfig.transport,
189
+ lenses: reviewConfig.lenses,
190
+ votes: reviewConfig.votes,
191
+ retries: reviewConfig.retries,
192
+ profile: reviewConfig.profile,
193
+ thresholds: reviewConfig.thresholds,
194
+ budget: reviewConfig.budget,
195
+ context: reviewConfig.context,
196
+ redaction: reviewConfig.redaction,
197
+ conventions: reviewConfig.conventions ?? 'auto',
198
+ });
199
+ const githubState = source.kind === 'github-pr' && (has('post') || requestedBatch !== undefined || resultFile !== undefined || publishResult !== undefined || flag('batch-manifest') !== undefined)
200
+ ? await getGithubReviewState({
201
+ ...source,
202
+ fingerprint: policyFingerprint,
203
+ })
204
+ : undefined;
205
+ if (has('post') && githubState?.fork) {
206
+ console.error(`SKIPPED: fork PR ${githubState.owner}/${githubState.repo}#${githubState.number} cannot be posted from this workflow boundary`);
207
+ process.exitCode = 2;
208
+ return;
209
+ }
210
+ if (has('post') && githubState?.alreadyReviewed) {
211
+ console.log(`SKIPPED: ${githubState.owner}/${githubState.repo}#${githubState.number} already reviewed at ${githubState.sha} with the same fingerprint`);
111
212
  return;
112
213
  }
113
- const source = await resolveSource();
114
- const adapter = buildAdapter();
214
+ if (has('post') && githubState?.scope === 'incremental' && githubState.baselineSha && source.kind === 'github-pr') {
215
+ source = { ...source, baselineSha: githubState.baselineSha };
216
+ }
217
+ if (publishResult) {
218
+ if (!has('post') || source.kind !== 'github-pr' || !githubState)
219
+ throw new Error('--publish-result needs --pr, --post, and GITHUB_TOKEN');
220
+ const artifact = parseJsonFile(publishResult, 'consolidated result');
221
+ if (artifact.version !== 1 || artifact.repository !== `${source.owner}/${source.repo}` || artifact.pullNumber !== source.number || artifact.headSha !== githubState.sha || artifact.policyFingerprint !== policyFingerprint || !artifact.review || 'batch' in artifact) {
222
+ throw new Error('consolidated result is stale, mismatched, or not publishable');
223
+ }
224
+ if (artifact.review.incomplete || artifact.review.unreviewed?.length || artifact.review.missingRequiredLenses?.length || artifact.review.execution.failed || artifact.review.execution.succeeded !== artifact.review.execution.attempted || artifact.review.evidence.deadlineExceeded) {
225
+ throw new Error('consolidated result has incomplete review evidence');
226
+ }
227
+ if (githubState.fork || githubState.alreadyReviewed)
228
+ throw new Error('current PR cannot receive this consolidated result safely');
229
+ await githubInlineReporter({ owner: source.owner, repo: source.repo, number: source.number, token: source.token, commitId: githubState.sha, marker: githubState.marker }).emit(artifact.review);
230
+ await githubSummaryReporter({ owner: source.owner, repo: source.repo, number: source.number, token: source.token, marker: githubState.marker }).emit(artifact.review);
231
+ process.exit(artifact.review.blocking && !has('no-fail') ? 1 : 0);
232
+ }
115
233
  const reporters = [markdownReporter()];
116
234
  const sarif = flag('sarif');
117
235
  if (sarif)
118
236
  reporters.push(sarifReporter({ file: sarif }));
119
237
  if (has('post') && source.kind === 'github-pr') {
120
238
  const { owner, repo, number, token } = source;
121
- reporters.push(githubInlineReporter({ owner, repo, number, token }), githubSummaryReporter({ owner, repo, number, token }));
239
+ reporters.push(githubInlineReporter({ owner, repo, number, token, commitId: githubState?.sha, marker: githubState?.marker }), githubSummaryReporter({ owner, repo, number, token, marker: githubState?.marker }));
122
240
  }
123
241
  const config = {
124
- adapter,
125
242
  source,
126
243
  reporters,
127
244
  observers: [createProgressObserver()],
128
- auditVotes: flag('votes') ? Number(flag('votes')) : undefined,
245
+ lenses: builtInLenses(Object.entries(reviewConfig.lenses).filter(([, policy]) => policy.enabled).map(([key]) => key)),
246
+ incompleteProfile: reviewConfig.incompleteProfile,
247
+ auditVotes: reviewConfig.votes,
129
248
  validatePatch: has('validate-patch'),
130
249
  blockingSeverity: flag('block') ?? 'blocker',
131
- budget: { maxFiles: flag('max-files') ? Number(flag('max-files')) : undefined, concurrency: flag('concurrency') ? Number(flag('concurrency')) : 4 },
132
- conventions: flag('conventions') ? { path: flag('conventions') } : autoConventions(),
133
- thresholds: {
134
- minSeverity: flag('min-severity'),
135
- minConfidence: flag('min-confidence') ? Number(flag('min-confidence')) : undefined,
136
- },
250
+ requiredLenses: Object.entries(reviewConfig.lenses).filter(([, policy]) => policy.required).map(([key]) => key),
251
+ retries: reviewConfig.retries,
252
+ budget: { maxFiles: reviewConfig.budget.maxFiles, maxBytes: reviewConfig.budget.maxBytes, maxCalls: reviewConfig.budget.maxCalls, concurrency: reviewConfig.budget.concurrency, deadlineMs: reviewConfig.budget.deadlineMs },
253
+ profile: reviewConfig.profile,
254
+ batchLenses: reviewConfig.batchLenses,
255
+ conventions: reviewConfig.conventions ? { path: reviewConfig.conventions } : autoConventions(),
256
+ thresholds: reviewConfig.thresholds,
137
257
  };
138
- const review = await createCodeReviewAgent(config).run();
258
+ let agent = createCodeReviewAgent(config);
259
+ let plan = await agent.plan();
260
+ let selectedBatch;
261
+ if (has('dry-run') || has('plan')) {
262
+ const batchSize = flag('batch-size');
263
+ const batches = batchSize === undefined ? undefined : partitionReviewableFiles(plan.reviewableFiles, Number(batchSize));
264
+ const batchManifest = flag('batch-manifest');
265
+ if (batchManifest) {
266
+ if (!batches || source.kind !== 'github-pr' || !githubState)
267
+ throw new Error('--batch-manifest needs --pr, --batch-size, and GITHUB_TOKEN');
268
+ // codeql[js/http-to-file-access] -- This is an explicit user-selected local
269
+ // orchestration artifact. Remote PR metadata is serialized as data only and
270
+ // is never loaded as configuration or executed by this command.
271
+ writeFileSync(batchManifest, JSON.stringify(createBatchCoverage({ repository: `${source.owner}/${source.repo}`, pullNumber: source.number, headSha: githubState.sha, policyFingerprint, batches }), null, 2), { mode: 0o600 });
272
+ }
273
+ if (has('json'))
274
+ console.log(JSON.stringify({ ...plan, ...(batches ? { batches } : {}) }));
275
+ else
276
+ console.log(formatPlan(plan));
277
+ if (plan.overBudget.length)
278
+ process.exitCode = 2;
279
+ return;
280
+ }
281
+ if (requestedBatch !== undefined) {
282
+ if (has('post'))
283
+ throw new Error('--post is forbidden for a partial batch');
284
+ const size = Number(flag('batch-size'));
285
+ const batches = partitionReviewableFiles(plan.reviewableFiles, size);
286
+ selectedBatch = batches.find((item) => item.index === Number(requestedBatch));
287
+ if (!selectedBatch)
288
+ throw new Error('--batch-index is outside the planned batch manifest');
289
+ config.targetFiles = selectedBatch.files;
290
+ config.incompleteProfile = true;
291
+ config.reviewContext = `Complete PR file manifest (${plan.reviewableFiles.length} reviewable file(s)); only the selected batch source is shown:\n${plan.reviewableFiles.map((file) => `- ${file}`).join('\n')}`;
292
+ agent = createCodeReviewAgent(config);
293
+ await agent.plan();
294
+ }
295
+ await preflightProvider(reviewConfig);
296
+ agent.setAdapter(buildAdapter(reviewConfig));
297
+ const review = await agent.run();
298
+ if (resultFile) {
299
+ if (requestedBatch !== undefined) {
300
+ if (source.kind !== 'github-pr' || !githubState)
301
+ throw new Error('--batch-index result needs a GitHub PR identity');
302
+ if (!selectedBatch)
303
+ throw new Error('--batch-index selection was not retained');
304
+ const artifact = { version: 1, repository: `${source.owner}/${source.repo}`, pullNumber: source.number, headSha: githubState.sha, policyFingerprint, batch: selectedBatch, review };
305
+ // codeql[js/http-to-file-access] -- The explicit --result path is a private,
306
+ // local handoff artifact. Its remote-derived contents are serialized only.
307
+ writeFileSync(resultFile, JSON.stringify(artifact, null, 2), { mode: 0o600 });
308
+ }
309
+ else
310
+ writeFileSync(resultFile, JSON.stringify(review, null, 2), { mode: 0o600 });
311
+ }
139
312
  // --no-fail = advisory: post the review but never fail the job (exit 0). Real errors
140
313
  // still surface via the catch below (exit 2).
141
- process.exit(review.blocking && !has('no-fail') ? 1 : 0);
314
+ process.exit(review.incomplete ? 2 : review.blocking && !has('no-fail') ? 1 : 0);
142
315
  }
143
316
  /**
144
317
  * Provider-neutral adapter selection. Local CLIs are explicit choices; any other
145
318
  * name resolves to a `@agentskit/adapters` factory and is given
146
319
  * `{ apiKey, model, baseUrl? }`. `--api` is a back-compat alias for `--provider anthropic`.
147
320
  */
148
- function buildAdapter() {
149
- const provider = flag('provider') ?? (has('api') ? 'anthropic' : undefined);
321
+ function buildAdapter(reviewConfig) {
322
+ const requestedProvider = reviewConfig.provider;
323
+ const provider = requestedProvider && resolveProviderId(requestedProvider);
150
324
  if (!provider)
151
- throw new Error('choose a provider with --provider <name> (run --list-providers for common options)');
152
- const model = flag('model') ?? (has('api') ? 'claude-opus-4-8' : undefined);
325
+ throw new Error(requestedProvider ? `unknown --provider "${requestedProvider}" (run --list-providers for common options)` : 'choose a provider with --provider <name> (run --list-providers for common options)');
326
+ const model = reviewConfig.model ?? (has('api') ? 'claude-opus-4-8' : undefined);
327
+ const mode = flag('mode') === 'trusted-local' ? 'trusted-local' : 'isolated';
153
328
  if (provider === 'claude-cli')
154
- return claudeCode({ model });
329
+ return claudeCode({ model, mode, oauthToken: process.env.CLAUDE_CODE_OAUTH_TOKEN, worker: reviewConfig.worker });
155
330
  if (provider === 'codex-cli')
156
- return codexCli({ model });
157
- const make = adapters[provider];
158
- if (typeof make !== 'function') {
159
- throw new Error(`unknown --provider "${provider}". Use "claude-cli" or any @agentskit/adapters factory (anthropic, openai, gemini, grok, ollama, deepseek, mistral, groq, openrouter, together, …).`);
331
+ return codexCli({ model, mode, worker: reviewConfig.worker });
332
+ if (provider === 'grok-cli') {
333
+ const apiKey = flag('api-key') ?? process.env.XAI_API_KEY ?? process.env.LLM_API_KEY;
334
+ const options = { model, mode, apiKey, worker: reviewConfig.worker };
335
+ if ((reviewConfig.transport ?? 'acp') === 'acp')
336
+ return grokCli(options);
337
+ if (reviewConfig.transport === 'headless')
338
+ return grokHeadless(options);
339
+ if (reviewConfig.transport === 'auto') {
340
+ if (has('ci') || process.env.CI === 'true' || process.env.CI === '1')
341
+ throw new Error('--transport auto is local-only; choose acp or headless in CI');
342
+ return createAutoCliAdapter({ provider, primary: grokCli(options), fallback: grokHeadless(options), onFallback: (detail) => console.error(`warning: ${detail}; trying grok headless`) });
343
+ }
344
+ throw new Error(`grok-cli does not support --transport ${reviewConfig.transport}`);
345
+ }
346
+ if (provider === 'opencode-cli') {
347
+ const apiKey = flag('api-key') ?? process.env.OPENCODE_API_KEY ?? process.env.LLM_API_KEY;
348
+ const options = { model, mode, apiKey, worker: reviewConfig.worker };
349
+ if ((reviewConfig.transport ?? 'acp') === 'acp')
350
+ return opencodeCli(options);
351
+ if (reviewConfig.transport === 'headless')
352
+ return opencodeHeadless(options);
353
+ if (reviewConfig.transport === 'auto') {
354
+ if (has('ci') || process.env.CI === 'true' || process.env.CI === '1')
355
+ throw new Error('--transport auto is local-only; choose acp or headless in CI');
356
+ return createAutoCliAdapter({ provider, primary: opencodeCli(options), fallback: opencodeHeadless(options), onFallback: (detail) => console.error(`warning: ${detail}; trying opencode headless`) });
357
+ }
358
+ throw new Error(`opencode-cli does not support --transport ${reviewConfig.transport}`);
359
+ }
360
+ if (provider === 'ollama') {
361
+ if (!model)
362
+ throw new Error('--model is required for provider "ollama"');
363
+ return ollamaReview({ model, ...(flag('base-url') ? { baseUrl: flag('base-url') } : {}) });
160
364
  }
365
+ const entry = providerEntry(provider);
366
+ const make = entry && factoryFor(entry);
367
+ if (!entry || !make)
368
+ throw new Error(`provider "${provider}" is registered but has no local adapter yet`);
161
369
  if (!model)
162
370
  throw new Error(`--model is required for provider "${provider}"`);
163
371
  const apiKey = flag('api-key') ?? process.env.LLM_API_KEY ?? process.env[`${provider.toUpperCase()}_API_KEY`] ?? '';
164
372
  const baseUrl = flag('base-url');
165
373
  return make({ apiKey, model, ...(baseUrl ? { baseUrl } : {}) });
166
374
  }
375
+ async function preflightProvider(reviewConfig) {
376
+ const requested = reviewConfig.provider;
377
+ const id = requested && resolveProviderId(requested);
378
+ const entry = id && providerEntry(id);
379
+ if (!entry || entry.kind === 'api')
380
+ return;
381
+ const report = await diagnoseProvider({
382
+ provider: entry.id,
383
+ model: reviewConfig.model,
384
+ transport: reviewConfig.transport,
385
+ mode: flag('mode') ?? reviewConfig.trustMode,
386
+ apiKey: flag('api-key'),
387
+ ci: has('ci'),
388
+ live: reviewConfig.healthCheck === 'auto',
389
+ liveTimeoutMs: Math.min(reviewConfig.budget.deadlineMs, reviewConfig.worker.timeoutMs, 15_000),
390
+ });
391
+ const version = report.checks.find((check) => check.name === 'version');
392
+ if (version?.status === 'warn')
393
+ console.error(`warning: ${entry.id} ${version.detail}`);
394
+ if (!report.ok)
395
+ throw new Error(`${entry.id} provider preflight failed: ${report.checks.filter((check) => check.status === 'fail').map((check) => `${check.name}: ${check.detail}`).join('; ')}`);
396
+ }
397
+ async function runDoctor() {
398
+ const requested = flag('provider') ?? (has('api') ? 'anthropic' : undefined);
399
+ if (!requested)
400
+ throw new Error('doctor needs --provider <name>');
401
+ const report = await diagnoseProvider({
402
+ provider: requested,
403
+ model: flag('model'),
404
+ transport: flag('transport'),
405
+ mode: flag('mode'),
406
+ live: has('live'),
407
+ ci: has('ci'),
408
+ apiKey: flag('api-key'),
409
+ });
410
+ if (has('json'))
411
+ console.log(JSON.stringify(report));
412
+ else
413
+ console.log(formatDoctor(report));
414
+ if (!report.ok)
415
+ process.exitCode = report.checks.some((check) => check.name === 'provider' && check.status === 'fail') ? 2 : 1;
416
+ }
417
+ function formatProvider(entry) {
418
+ const aliases = entry.aliases.length ? `\taliases=${entry.aliases.join(',')}` : '';
419
+ return `${entry.id}\tkind=${entry.kind}\tsupport=${entry.support}\ttransport=${entry.defaultTransport}\tmodel=${entry.model}${aliases}`;
420
+ }
421
+ function formatDoctor(report) {
422
+ const lines = [`Provider doctor: ${report.provider} (${report.support})`];
423
+ for (const check of report.checks)
424
+ lines.push(` ${check.name}: ${check.status.toUpperCase()} — ${check.detail}`);
425
+ lines.push(`Result: ${report.ok ? 'PASS' : 'FAIL'}`);
426
+ return lines.join('\n');
427
+ }
428
+ function formatPlan(plan) {
429
+ const status = plan.overBudget.length ? 'REFUSED' : 'READY';
430
+ const lines = [
431
+ `Review preflight — ${status} · profile=${plan.profile}${plan.batched ? ' · batched' : ''}`,
432
+ `Files: ${plan.files} · Bytes: ${plan.bytes} · Unreviewed: ${plan.unreviewedFiles}`,
433
+ `Lenses: ${plan.enabledLenses.join(', ') || 'none'}`,
434
+ `Required: ${plan.requiredLenses.join(', ') || 'none'}`,
435
+ `Votes: ${plan.votes} · Retries: ${plan.retries} · Concurrency: ${plan.concurrency}`,
436
+ `Estimated provider calls: ${plan.estimatedProviderCalls}/${plan.maxCalls} (${plan.providerCallEstimate})`,
437
+ `Global deadline: ${plan.deadlineMs}ms`,
438
+ ];
439
+ for (const reason of plan.overBudget)
440
+ lines.push(`Refusal: ${reason}`);
441
+ for (const suggestion of plan.suggestions)
442
+ lines.push(`Suggestion: ${suggestion}`);
443
+ return lines.join('\n');
444
+ }
445
+ function packageVersion() {
446
+ for (const path of [new URL('../package.json', import.meta.url), new URL('../../package.json', import.meta.url)]) {
447
+ try {
448
+ const value = JSON.parse(readFileSync(path, 'utf8'));
449
+ if (typeof value.version === 'string' && value.version)
450
+ return value.version;
451
+ }
452
+ catch { /* try the package root relative to the compiled CLI */ }
453
+ }
454
+ return 'unknown';
455
+ }
456
+ function parseJsonFile(path, label) {
457
+ try {
458
+ return JSON.parse(readFileSync(path, 'utf8'));
459
+ }
460
+ catch {
461
+ throw new Error(`invalid ${label}: ${path}`);
462
+ }
463
+ }
167
464
  /** Best-effort: feed a conventions doc to every lens if one exists. */
168
465
  function autoConventions() {
169
466
  for (const f of ['CONVENTIONS.md', 'CONTRIBUTING.md', '.cursorrules', 'AGENTS.md']) {
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}