@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.
- package/.doc-bridge/capabilities.json +34 -0
- package/.doc-bridge/index.json +94 -0
- package/.pre-commit-hooks.yaml +9 -0
- package/AGENTS.md +20 -0
- package/CHANGELOG.md +91 -0
- package/CONTRIBUTING.md +45 -0
- package/README.md +238 -33
- package/ROADMAP.md +20 -0
- package/SECURITY.md +16 -0
- package/action.yml +120 -0
- package/dist/agents/code-review/agent.js +454 -76
- package/dist/agents/code-review/agent.js.map +1 -1
- package/dist/agents/code-review/lenses.js +17 -1
- package/dist/agents/code-review/lenses.js.map +1 -1
- package/dist/agents/code-review/reporters.js +83 -7
- package/dist/agents/code-review/reporters.js.map +1 -1
- package/dist/agents/code-review/sources.js +324 -73
- package/dist/agents/code-review/sources.js.map +1 -1
- package/dist/src/acp-cli-adapter.js +127 -0
- package/dist/src/acp-cli-adapter.js.map +1 -0
- package/dist/src/batch-coverage.js +111 -0
- package/dist/src/batch-coverage.js.map +1 -0
- package/dist/src/claude-code-adapter.js +44 -60
- package/dist/src/claude-code-adapter.js.map +1 -1
- package/dist/src/cli.js +347 -50
- package/dist/src/cli.js.map +1 -1
- package/dist/src/codex-adapter.js +114 -69
- package/dist/src/codex-adapter.js.map +1 -1
- package/dist/src/github-review-state.js +134 -0
- package/dist/src/github-review-state.js.map +1 -0
- package/dist/src/grok-cli-adapter.js +27 -0
- package/dist/src/grok-cli-adapter.js.map +1 -0
- package/dist/src/headless-cli-adapter.js +78 -0
- package/dist/src/headless-cli-adapter.js.map +1 -0
- package/dist/src/local-cli-process.js +328 -0
- package/dist/src/local-cli-process.js.map +1 -0
- package/dist/src/local-cli-timeout.js +14 -0
- package/dist/src/local-cli-timeout.js.map +1 -0
- package/dist/src/ollama-adapter.js +155 -0
- package/dist/src/ollama-adapter.js.map +1 -0
- package/dist/src/opencode-cli-adapter.js +57 -0
- package/dist/src/opencode-cli-adapter.js.map +1 -0
- package/dist/src/provider-circuit-breaker.js +52 -0
- package/dist/src/provider-circuit-breaker.js.map +1 -0
- package/dist/src/provider-registry.js +168 -0
- package/dist/src/provider-registry.js.map +1 -0
- package/dist/src/review-config.js +145 -0
- package/dist/src/review-config.js.map +1 -0
- package/doc-bridge.config.json +116 -0
- package/docs/OPERATIONS.md +358 -0
- package/docs/assets/agentskit-mark.svg +10 -0
- package/docs/assets/code-review-terminal.png +0 -0
- package/docs/continuous-improvement.md +35 -0
- package/docs/for-agents/code-review-cli.md +70 -0
- package/docs/for-agents/index.md +5 -0
- package/docs/plans/ecosystem-doc-quality-code-review.md +61 -0
- package/docs/provider-compatibility.json +35 -0
- package/ecosystem-claims.json +187 -0
- package/ecosystem.json +277 -0
- package/examples/pull-request.yml +29 -0
- package/llms-full.txt +1055 -0
- package/llms.txt +24 -0
- package/package.json +53 -7
- package/scripts/generate-llms-full.mjs +68 -0
- package/scripts/run-cycle-benchmark.mjs +64 -0
- package/test/cli-smoke.test.mjs +522 -0
- package/test/continuous-improvement.test.mjs +20 -0
- package/test/documentation.test.mjs +238 -0
- package/test/release-workflow.test.mjs +31 -0
- package/dist/agents/code-review/agent.d.ts +0 -115
- package/dist/agents/code-review/lenses.d.ts +0 -10
- package/dist/agents/code-review/reporters.d.ts +0 -31
- package/dist/agents/code-review/sources.d.ts +0 -27
- package/dist/src/claude-code-adapter.d.ts +0 -4
- package/dist/src/cli.d.ts +0 -2
- 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>
|
|
50
|
-
--
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
114
|
-
|
|
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
|
-
|
|
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
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
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
|
-
|
|
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
|
|
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 =
|
|
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
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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']) {
|
package/dist/src/cli.js.map
CHANGED
|
@@ -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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"}
|