@agentskit/code-review 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +199 -0
- package/dist/agents/code-review/agent.d.ts +115 -0
- package/dist/agents/code-review/agent.js +328 -0
- package/dist/agents/code-review/agent.js.map +1 -0
- package/dist/agents/code-review/lenses.d.ts +10 -0
- package/dist/agents/code-review/lenses.js +111 -0
- package/dist/agents/code-review/lenses.js.map +1 -0
- package/dist/agents/code-review/reporters.d.ts +31 -0
- package/dist/agents/code-review/reporters.js +162 -0
- package/dist/agents/code-review/reporters.js.map +1 -0
- package/dist/agents/code-review/sources.d.ts +27 -0
- package/dist/agents/code-review/sources.js +126 -0
- package/dist/agents/code-review/sources.js.map +1 -0
- package/dist/src/claude-code-adapter.d.ts +4 -0
- package/dist/src/claude-code-adapter.js +88 -0
- package/dist/src/claude-code-adapter.js.map +1 -0
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.js +183 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/codex-adapter.d.ts +4 -0
- package/dist/src/codex-adapter.js +94 -0
- package/dist/src/codex-adapter.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-adapter.js","sourceRoot":"","sources":["../../src/claude-code-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli.js
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
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
|
+
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';
|
|
21
|
+
import { claudeCode } from './claude-code-adapter.js';
|
|
22
|
+
import { codexCli } from './codex-adapter.js';
|
|
23
|
+
const HELP = `AgentsKit Code Review — deep, low-noise review with your model
|
|
24
|
+
|
|
25
|
+
Usage:
|
|
26
|
+
agentskit-review --provider <name> [options]
|
|
27
|
+
|
|
28
|
+
Providers:
|
|
29
|
+
codex-cli, claude-cli, or any @agentskit/adapters provider
|
|
30
|
+
(anthropic, openai, gemini, ollama, openrouter, mistral, groq, ...)
|
|
31
|
+
|
|
32
|
+
Examples:
|
|
33
|
+
agentskit-review --provider codex-cli
|
|
34
|
+
agentskit-review --provider claude-cli --base main
|
|
35
|
+
agentskit-review --provider openai --model gpt-4o
|
|
36
|
+
agentskit-review --provider ollama --model llama3 --base-url http://localhost:11434
|
|
37
|
+
|
|
38
|
+
Sources:
|
|
39
|
+
--base <ref> Review the git diff against a base (default: origin/main)
|
|
40
|
+
--pr <owner/repo#N> Review a GitHub PR (requires GITHUB_TOKEN)
|
|
41
|
+
--paths <paths...> Review complete files or directories
|
|
42
|
+
--stdin [--lang <ext>] Review source from stdin
|
|
43
|
+
|
|
44
|
+
Review options:
|
|
45
|
+
--votes <n> Adversarial verification votes (default: 3)
|
|
46
|
+
--min-severity <level> Minimum finding severity
|
|
47
|
+
--min-confidence <n> Minimum finding confidence
|
|
48
|
+
--block <level> CI gate floor (default: blocker)
|
|
49
|
+
--max-files <n> File budget
|
|
50
|
+
--concurrency <n> Parallel model calls (default: 4)
|
|
51
|
+
--conventions <path> Project conventions file
|
|
52
|
+
--validate-patch Validate suggested patches with git apply --check
|
|
53
|
+
--sarif <file> Also write a SARIF report
|
|
54
|
+
--post Post a PR review (with --pr)
|
|
55
|
+
--no-fail Report findings without failing the process
|
|
56
|
+
|
|
57
|
+
Provider options:
|
|
58
|
+
--model <id> Model id (required for API/local-server providers)
|
|
59
|
+
--api-key <key> Or use LLM_API_KEY / <PROVIDER>_API_KEY
|
|
60
|
+
--base-url <url> Custom endpoint or local gateway
|
|
61
|
+
--api Back-compatible alias for --provider anthropic
|
|
62
|
+
|
|
63
|
+
--help Show this help
|
|
64
|
+
--list-providers List common providers
|
|
65
|
+
`;
|
|
66
|
+
const PROVIDERS = 'codex-cli\nclaude-cli\nanthropic\nopenai\ngemini\ngrok\nollama\ndeepseek\nmistral\ngroq\nopenrouter\ntogether';
|
|
67
|
+
function flag(name) {
|
|
68
|
+
const i = process.argv.indexOf(`--${name}`);
|
|
69
|
+
return i >= 0 ? process.argv[i + 1] : undefined;
|
|
70
|
+
}
|
|
71
|
+
const has = (name) => process.argv.includes(`--${name}`);
|
|
72
|
+
function readStdin() {
|
|
73
|
+
return new Promise((resolve) => {
|
|
74
|
+
let data = '';
|
|
75
|
+
process.stdin.setEncoding('utf8');
|
|
76
|
+
process.stdin.on('data', (c) => (data += c));
|
|
77
|
+
process.stdin.on('end', () => resolve(data));
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
async function resolveSource() {
|
|
81
|
+
const pr = flag('pr');
|
|
82
|
+
if (pr) {
|
|
83
|
+
const m = pr.match(/^([^/]+)\/([^#]+)#(\d+)$/);
|
|
84
|
+
if (!m)
|
|
85
|
+
throw new Error('--pr must be owner/repo#number');
|
|
86
|
+
const token = process.env.GITHUB_TOKEN;
|
|
87
|
+
if (!token)
|
|
88
|
+
throw new Error('--pr needs GITHUB_TOKEN');
|
|
89
|
+
return { kind: 'github-pr', owner: m[1], repo: m[2], number: Number(m[3]), token };
|
|
90
|
+
}
|
|
91
|
+
if (has('stdin'))
|
|
92
|
+
return { kind: 'stdin', content: await readStdin(), filename: `snippet.${flag('lang') ?? 'txt'}` };
|
|
93
|
+
if (has('paths')) {
|
|
94
|
+
const i = process.argv.indexOf('--paths');
|
|
95
|
+
const paths = [];
|
|
96
|
+
for (let j = i + 1; j < process.argv.length && !process.argv[j].startsWith('--'); j++)
|
|
97
|
+
paths.push(process.argv[j]);
|
|
98
|
+
if (!paths.length)
|
|
99
|
+
throw new Error('--paths needs at least one file/dir');
|
|
100
|
+
return { kind: 'paths', paths, cwd: process.cwd() };
|
|
101
|
+
}
|
|
102
|
+
return { kind: 'git-diff', base: flag('base') ?? 'origin/main', cwd: process.cwd() };
|
|
103
|
+
}
|
|
104
|
+
async function main() {
|
|
105
|
+
if (has('help') || has('h')) {
|
|
106
|
+
console.log(HELP);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (has('list-providers')) {
|
|
110
|
+
console.log(PROVIDERS);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const source = await resolveSource();
|
|
114
|
+
const adapter = buildAdapter();
|
|
115
|
+
const reporters = [markdownReporter()];
|
|
116
|
+
const sarif = flag('sarif');
|
|
117
|
+
if (sarif)
|
|
118
|
+
reporters.push(sarifReporter({ file: sarif }));
|
|
119
|
+
if (has('post') && source.kind === 'github-pr') {
|
|
120
|
+
const { owner, repo, number, token } = source;
|
|
121
|
+
reporters.push(githubInlineReporter({ owner, repo, number, token }), githubSummaryReporter({ owner, repo, number, token }));
|
|
122
|
+
}
|
|
123
|
+
const config = {
|
|
124
|
+
adapter,
|
|
125
|
+
source,
|
|
126
|
+
reporters,
|
|
127
|
+
observers: [createProgressObserver()],
|
|
128
|
+
auditVotes: flag('votes') ? Number(flag('votes')) : undefined,
|
|
129
|
+
validatePatch: has('validate-patch'),
|
|
130
|
+
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
|
+
},
|
|
137
|
+
};
|
|
138
|
+
const review = await createCodeReviewAgent(config).run();
|
|
139
|
+
// --no-fail = advisory: post the review but never fail the job (exit 0). Real errors
|
|
140
|
+
// still surface via the catch below (exit 2).
|
|
141
|
+
process.exit(review.blocking && !has('no-fail') ? 1 : 0);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Provider-neutral adapter selection. Local CLIs are explicit choices; any other
|
|
145
|
+
* name resolves to a `@agentskit/adapters` factory and is given
|
|
146
|
+
* `{ apiKey, model, baseUrl? }`. `--api` is a back-compat alias for `--provider anthropic`.
|
|
147
|
+
*/
|
|
148
|
+
function buildAdapter() {
|
|
149
|
+
const provider = flag('provider') ?? (has('api') ? 'anthropic' : undefined);
|
|
150
|
+
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);
|
|
153
|
+
if (provider === 'claude-cli')
|
|
154
|
+
return claudeCode({ model });
|
|
155
|
+
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, …).`);
|
|
160
|
+
}
|
|
161
|
+
if (!model)
|
|
162
|
+
throw new Error(`--model is required for provider "${provider}"`);
|
|
163
|
+
const apiKey = flag('api-key') ?? process.env.LLM_API_KEY ?? process.env[`${provider.toUpperCase()}_API_KEY`] ?? '';
|
|
164
|
+
const baseUrl = flag('base-url');
|
|
165
|
+
return make({ apiKey, model, ...(baseUrl ? { baseUrl } : {}) });
|
|
166
|
+
}
|
|
167
|
+
/** Best-effort: feed a conventions doc to every lens if one exists. */
|
|
168
|
+
function autoConventions() {
|
|
169
|
+
for (const f of ['CONVENTIONS.md', 'CONTRIBUTING.md', '.cursorrules', 'AGENTS.md']) {
|
|
170
|
+
try {
|
|
171
|
+
return readFileSync(f, 'utf8').slice(0, 6000);
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
/* next */
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return undefined;
|
|
178
|
+
}
|
|
179
|
+
main().catch((e) => {
|
|
180
|
+
console.error(e instanceof Error ? e.message : e);
|
|
181
|
+
process.exit(2);
|
|
182
|
+
});
|
|
183
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentsKit adapter backed by the local OpenAI **Codex CLI** (`codex exec`) — the
|
|
3
|
+
* codex equivalent of the claude -p adapter. Uses your logged-in Codex session
|
|
4
|
+
* (ChatGPT subscription), no OPENAI_API_KEY, no per-call API cost. Headless: the
|
|
5
|
+
* prompt goes in as an arg, the final message is written to a temp file via
|
|
6
|
+
* `-o`, sandbox is read-only (the agent only emits JSON, runs no tools).
|
|
7
|
+
*/
|
|
8
|
+
import { execFile } from "node:child_process";
|
|
9
|
+
import { mkdtempSync, readFileSync, rmSync } from "node:fs";
|
|
10
|
+
import { tmpdir } from "node:os";
|
|
11
|
+
import { join } from "node:path";
|
|
12
|
+
/** Pull the JSON object out of a reply: first `{` to last `}` over the whole output. */
|
|
13
|
+
function extractJson(text) {
|
|
14
|
+
const start = text.indexOf("{");
|
|
15
|
+
const end = text.lastIndexOf("}");
|
|
16
|
+
if (start === -1 || end === -1 || end < start) {
|
|
17
|
+
throw new Error(`no JSON object in codex output:\n${text.slice(0, 400)}`);
|
|
18
|
+
}
|
|
19
|
+
return text.slice(start, end + 1);
|
|
20
|
+
}
|
|
21
|
+
/** Run `codex exec` and return its final message (captured via -o). */
|
|
22
|
+
function runCodex(prompt, model) {
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
const dir = mkdtempSync(join(tmpdir(), "cr-codex-"));
|
|
25
|
+
const outFile = join(dir, "out.txt");
|
|
26
|
+
const args = [
|
|
27
|
+
"exec",
|
|
28
|
+
"--skip-git-repo-check",
|
|
29
|
+
"-s",
|
|
30
|
+
"read-only",
|
|
31
|
+
"-C",
|
|
32
|
+
process.env.HOME ?? process.cwd(),
|
|
33
|
+
"-o",
|
|
34
|
+
outFile,
|
|
35
|
+
];
|
|
36
|
+
if (model)
|
|
37
|
+
args.push("-m", model);
|
|
38
|
+
args.push(prompt);
|
|
39
|
+
const child = execFile("codex", args, { maxBuffer: 20 * 1024 * 1024 }, (err, _stdout, stderr) => {
|
|
40
|
+
let message = "";
|
|
41
|
+
try {
|
|
42
|
+
message = readFileSync(outFile, "utf8");
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
/* no output file */
|
|
46
|
+
}
|
|
47
|
+
rmSync(dir, { recursive: true, force: true });
|
|
48
|
+
if (message.trim())
|
|
49
|
+
return resolve(message);
|
|
50
|
+
const e = (err ?? new Error("codex produced no output"));
|
|
51
|
+
e.stderr = stderr;
|
|
52
|
+
e.stdout = _stdout;
|
|
53
|
+
reject(e);
|
|
54
|
+
});
|
|
55
|
+
child.stdin?.end(); // headless: don't let codex wait on stdin
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
export function codexCli(opts = {}) {
|
|
59
|
+
return {
|
|
60
|
+
capabilities: { streaming: false, tools: true, structuredOutput: true },
|
|
61
|
+
createSource: (request) => ({
|
|
62
|
+
stream: async function* () {
|
|
63
|
+
try {
|
|
64
|
+
const system = request.messages.find((m) => m.role === "system")?.content ?? "";
|
|
65
|
+
const convo = request.messages
|
|
66
|
+
.filter((m) => m.role !== "system")
|
|
67
|
+
.map((m) => `${m.role.toUpperCase()}: ${m.content}`)
|
|
68
|
+
.join("\n\n");
|
|
69
|
+
const tools = request.context?.tools ?? [];
|
|
70
|
+
let prompt = `${system}\n\n${convo}`;
|
|
71
|
+
if (tools.length === 1) {
|
|
72
|
+
const t = tools[0];
|
|
73
|
+
prompt += `\n\nReturn ONLY a JSON object that is the argument to the "${t.name}" tool, matching this JSON Schema exactly. No prose, no code fences:\n${JSON.stringify(t.schema)}`;
|
|
74
|
+
}
|
|
75
|
+
const out = (await runCodex(prompt, opts.model)).trim();
|
|
76
|
+
if (tools.length === 1) {
|
|
77
|
+
yield { type: "tool_call", toolCall: { id: `tc-${Date.now()}`, name: tools[0].name, args: extractJson(out) } };
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
yield { type: "text", content: out };
|
|
81
|
+
}
|
|
82
|
+
yield { type: "done" };
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
const e = err;
|
|
86
|
+
const detail = [e.stderr, e.stdout].filter(Boolean).join(" ").trim();
|
|
87
|
+
yield { type: "error", content: `codex exec failed${detail ? `: ${detail.slice(0, 400)}` : ` (no output): ${(e.message ?? "").split("\n")[0]}`}` };
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
abort: () => { },
|
|
91
|
+
}),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=codex-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-adapter.js","sourceRoot":"","sources":["../../src/codex-adapter.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@agentskit/code-review",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "Provider-agnostic, low-noise AI code review for local development and GitHub Actions.",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"bin": {
|
|
8
|
+
"agentskit-review": "dist/src/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"README.md",
|
|
13
|
+
"LICENSE"
|
|
14
|
+
],
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/AgentsKit-io/code-review-cli.git"
|
|
18
|
+
},
|
|
19
|
+
"homepage": "https://github.com/AgentsKit-io/code-review-cli#readme",
|
|
20
|
+
"bugs": "https://github.com/AgentsKit-io/code-review-cli/issues",
|
|
21
|
+
"keywords": [
|
|
22
|
+
"ai-code-review",
|
|
23
|
+
"code-review",
|
|
24
|
+
"github-action",
|
|
25
|
+
"llm",
|
|
26
|
+
"ollama"
|
|
27
|
+
],
|
|
28
|
+
"scripts": {
|
|
29
|
+
"review": "tsx src/cli.ts",
|
|
30
|
+
"build": "tsc -p tsconfig.build.json",
|
|
31
|
+
"typecheck": "tsc --noEmit",
|
|
32
|
+
"check": "npm run typecheck && npm run build && node dist/src/cli.js --help",
|
|
33
|
+
"prepare": "npm run build",
|
|
34
|
+
"prepack": "npm run build"
|
|
35
|
+
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@agentskit/adapters": "^0.12.2",
|
|
38
|
+
"@agentskit/core": "^1.9.0",
|
|
39
|
+
"@agentskit/ink": "^0.9.0",
|
|
40
|
+
"@agentskit/runtime": "^0.7.3",
|
|
41
|
+
"@agentskit/tools": "^0.9.4",
|
|
42
|
+
"zod": "^3.25.0",
|
|
43
|
+
"zod-to-json-schema": "^3.24.0"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@types/json-schema": "^7.0.15",
|
|
47
|
+
"@types/node": "^22.10.0",
|
|
48
|
+
"tsx": "^4.19.0",
|
|
49
|
+
"typescript": "^5.7.2"
|
|
50
|
+
},
|
|
51
|
+
"engines": {
|
|
52
|
+
"node": ">=20"
|
|
53
|
+
}
|
|
54
|
+
}
|