claude-mcp-bridge 0.5.1 → 0.6.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/README.md CHANGED
@@ -17,13 +17,6 @@ Works with any MCP client: Codex CLI, Gemini CLI, Cursor, Windsurf, VS Code, or
17
17
  If you're in a terminal agent (Codex CLI, Gemini CLI) with shell access, call Claude Code CLI directly:
18
18
 
19
19
  ```bash
20
- # Quick review of current diff
21
- git diff origin/main...HEAD | claude -p --bare "Review this diff for bugs and security issues"
22
-
23
- # Agentic review (Claude reads files, follows imports, checks tests)
24
- claude -p --bare --allowed-tools "Read Grep Glob Bash(git diff:*,git log:*,git show:*)" \
25
- "Review the changes on this branch vs main"
26
-
27
20
  # Analyze specific files
28
21
  claude -p --bare --allowed-tools "Read" "Analyze src/utils/parse.ts for edge cases"
29
22
 
@@ -33,6 +26,8 @@ claude -p --bare --max-budget-usd 0.50 "Is this retry logic sound?"
33
26
 
34
27
  `--bare` skips hooks, memory, and plugins for clean subprocess use. `--allowed-tools` controls exactly what Claude can access. `--max-budget-usd` prevents runaway costs.
35
28
 
29
+ For code review, see [Code review with this CLI](#code-review-with-this-cli).
30
+
36
31
  **Use this MCP bridge instead when:**
37
32
  - Your client has no shell access (Cursor, Windsurf, Claude Desktop, VS Code)
38
33
  - You need structured output with native `--json-schema` validation
@@ -101,8 +96,7 @@ Add to your MCP settings:
101
96
 
102
97
  | Tool | Description |
103
98
  |------|-------------|
104
- | **query** | Execute prompts with file context, session resume, effort control, and budget caps. Supports text and images. |
105
- | **review** | Agentic code review. Claude explores the repo with Read, Grep, Glob, and git commands. Quick diff-only mode available. |
99
+ | **query** | Execute prompts with file context, session resume, effort control, and budget caps. Supports text and images. For code review, see [Code review with this CLI](#code-review-with-this-cli). |
106
100
  | **search** | Web search via Claude CLI's WebSearch and WebFetch tools. Returns synthesized answers with sources. |
107
101
  | **structured** | JSON Schema validated output via Claude CLI's native `--json-schema`. |
108
102
  | **ping** | Health check with CLI version, auth method, capabilities, and model config. |
@@ -114,14 +108,6 @@ Execute a prompt with optional file context. Supports session resume via `sessio
114
108
 
115
109
  Key parameters: `prompt` (required), `files`, `model` (default `sonnet`), `sessionId`, `effort`, `maxBudgetUsd`, `workingDirectory`, `timeout` (default 60s).
116
110
 
117
- ### review
118
-
119
- Two modes:
120
- - **Agentic** (default): Claude runs inside the repo with Read, Grep, Glob, and git commands. It diffs, reads files, follows imports, and checks tests. Timeout auto-scales from diff size.
121
- - **Quick** (`quick: true`): Diff-only review, no repo exploration. Faster and cheaper.
122
-
123
- Key parameters: `uncommitted` (default true), `base`, `focus`, `quick`, `model` (default `opus`), `effort` (default `high`), `maxBudgetUsd`, `workingDirectory`, `timeout`.
124
-
125
111
  ### search
126
112
 
127
113
  Web search powered by Anthropic's WebSearch tool via Claude CLI. Returns synthesized answers with source URLs.
@@ -144,6 +130,84 @@ No parameters. Returns active sessions with metadata: `sessionId`, `model`, `cre
144
130
 
145
131
  All tools attach execution metadata (`_meta`) with `durationMs`, `model`, `sessionId`, `totalCostUsd`, and token breakdowns. See [DESIGN.md](DESIGN.md) for details.
146
132
 
133
+ ## Code review with this CLI
134
+
135
+ This bridge does not bundle reviewer prompts. There are two paths for code review:
136
+
137
+ ### Claude Code built-ins (in-session)
138
+
139
+ If you're already inside Claude Code, use the built-in slash commands: `/review`, `/security-review`, `/ultrareview`. No bridge involvement.
140
+
141
+ ### Direct `claude -p` invocation (subprocess-isolated)
142
+
143
+ For shell-equipped consumers (terminal agents, CI, BYOS skills), invoke the CLI directly with hardened isolation flags:
144
+
145
+ ```bash
146
+ claude -p \
147
+ --permission-mode plan \
148
+ --bare \
149
+ --add-dir <repo-root> \
150
+ --strict-mcp-config \
151
+ --mcp-config '{"mcpServers":{}}' \
152
+ --no-session-persistence \
153
+ --max-budget-usd 0.50 \
154
+ "<your review prompt + diff or file references>"
155
+ ```
156
+
157
+ - `--permission-mode plan`: read-only.
158
+ - `--bare`: strips parent's hooks, plugins, auto-memory, and `CLAUDE.md` autoload.
159
+ - `--add-dir <repo-root>`: makes the repo's `CLAUDE.md` / `AGENTS.md` available where the diff warrants it.
160
+ - `--strict-mcp-config --mcp-config '{"mcpServers":{}}'`: blocks parent's MCP servers from leaking in. The inner `mcpServers` key is required; the schema rejects bare `'{}'`.
161
+ - `--no-session-persistence`: no session files for one-off reviews.
162
+ - `--max-budget-usd`: per-call cost cap.
163
+
164
+ ### Claude Code skill template
165
+
166
+ For Claude Code users who want a reusable command, drop this into `~/.claude/commands/review-claude.md`:
167
+
168
+ ````markdown
169
+ ---
170
+ description: Code review via subprocess-isolated claude -p
171
+ ---
172
+
173
+ Run code review on the diff between origin/main and HEAD.
174
+
175
+ ```bash
176
+ claude -p \
177
+ --permission-mode plan \
178
+ --bare \
179
+ --add-dir "$(git rev-parse --show-toplevel)" \
180
+ --strict-mcp-config \
181
+ --mcp-config '{"mcpServers":{}}' \
182
+ --no-session-persistence \
183
+ --max-budget-usd 0.50 \
184
+ "Review the diff below for bugs, missing error handling on user input, tests modified to silence failures, and security issues (injection, missing auth checks, secret leaks). For each finding cite file:line, severity, and a suggested fix. Skip style/formatting.
185
+
186
+ $(git diff origin/main...HEAD)"
187
+ ```
188
+ ````
189
+
190
+ ### Representative review prompt
191
+
192
+ A starting point; adapt freely:
193
+
194
+ ```text
195
+ Review the following diff:
196
+
197
+ <diff content>
198
+
199
+ Look for:
200
+ - Bugs that would surface in production
201
+ - Missing error handling on user-supplied input
202
+ - Tests modified to silence failures rather than verify behaviour
203
+ - Security issues (injection, missing auth checks, secret leaks)
204
+
205
+ For each finding cite file:line, severity (high/medium/low), and a suggested fix.
206
+ Skip style/formatting; assume an autoformatter handles those.
207
+ ```
208
+
209
+ The bridge has no opinion on prompt content. See [ADR-001](docs/decisions/001-remove-review-tool.md) for the rationale.
210
+
147
211
  ## Configuration
148
212
 
149
213
  ### Models
@@ -154,7 +218,6 @@ All tools attach execution metadata (`_meta`) with `durationMs`, `model`, `sessi
154
218
  | `CLAUDE_QUERY_MODEL` | `sonnet` | Default for query |
155
219
  | `CLAUDE_STRUCTURED_MODEL` | `sonnet` | Default for structured |
156
220
  | `CLAUDE_SEARCH_MODEL` | `sonnet` | Default for search |
157
- | `CLAUDE_REVIEW_MODEL` | `opus` | Default for review |
158
221
  | `CLAUDE_FALLBACK_MODEL` | `haiku` | Fallback on quota exhaustion (`none` to disable) |
159
222
 
160
223
  Model resolution: explicit parameter > tool-specific env var > `CLAUDE_DEFAULT_MODEL` > built-in default.
@@ -173,7 +236,6 @@ Model resolution: explicit parameter > tool-specific env var > `CLAUDE_DEFAULT_M
173
236
 
174
237
  | Variable | Default | Description |
175
238
  |----------|---------|-------------|
176
- | `CLAUDE_REVIEW_EFFORT` | `high` | Default effort for review |
177
239
  | `CLAUDE_SEARCH_EFFORT` | `medium` | Default effort for search |
178
240
  | `CLAUDE_QUERY_EFFORT` | | Default effort for query |
179
241
 
@@ -194,8 +256,6 @@ Claude Code CLI has minimal startup overhead. Wall time is dominated by model in
194
256
  | Scenario | Typical time |
195
257
  |----------|-------------|
196
258
  | Trivial prompt (sonnet) | 5-10s |
197
- | Quick review, small diff | 15-30s |
198
- | Agentic review (explores repo) | 30s to 10 min |
199
259
  | Web search + synthesis | 15-30s |
200
260
 
201
261
  Cost metadata (`totalCostUsd`, token breakdowns) is returned in `_meta` on every response.
@@ -208,8 +268,8 @@ Three MCP servers, same architecture, different underlying CLIs. Each wraps a te
208
268
  |---|---|---|---|
209
269
  | **CLI** | Claude Code | Gemini CLI | Codex CLI |
210
270
  | **Provider** | Anthropic | Google | OpenAI |
211
- | **Tools** | query, review, search, structured, ping, listSessions | query, review, search, structured, ping | codex, review, search, query, structured, ping, listSessions |
212
- | **Agentic review** | Claude explores repo with Read/Grep/Glob/git | Gemini explores repo with file reads and git | Codex explores repo in full-auto mode |
271
+ | **Tools** | query, search, structured, ping, listSessions | query, review, search, structured, ping | codex, search, query, structured, ping, listSessions |
272
+ | **Code review** | Built-in `/review`, `/security-review`, `/ultrareview` slash commands or direct `claude -p` invocation | `review` tool with caller-supplied prompt and hardened defaults | `codex review` (native) or `codex` tool with caller-supplied prompt |
213
273
  | **Structured output** | Native `--json-schema` (no Ajv) | Ajv validation | Ajv validation |
214
274
  | **Session resume** | Native `--resume` | Not supported | Session IDs with multi-turn |
215
275
  | **Budget caps** | Native `--max-budget-usd` | Not supported | Not supported |
@@ -5,18 +5,13 @@ import type { ToolAnnotations } from "@modelcontextprotocol/sdk/types.js";
5
5
  * Annotations are hints that help MCP clients understand tool behavior
6
6
  * for permission prompts, safety checks, and orchestration decisions.
7
7
  *
8
- * readOnly: query/review/search/structured are false because they can persist
8
+ * readOnly: query/search/structured are false because they can persist
9
9
  * Claude CLI session state to disk (~/.claude/) when sessionId is used.
10
- * ping is true (purely local, no side effects).
11
- *
12
- * review: destructive=false because the default --allowed-tools list is read-only
13
- * (Read, Grep, Glob, git). Callers that pass custom tools including write access
14
- * should treat it as potentially destructive.
10
+ * ping and listSessions are true (purely local, no side effects).
15
11
  *
16
12
  * Titles are set on the registerTool config in index.ts, not here (avoid duplication).
17
13
  */
18
14
  export declare const queryAnnotations: ToolAnnotations;
19
- export declare const reviewAnnotations: ToolAnnotations;
20
15
  export declare const searchAnnotations: ToolAnnotations;
21
16
  export declare const structuredAnnotations: ToolAnnotations;
22
17
  export declare const listSessionsAnnotations: ToolAnnotations;
@@ -1 +1 @@
1
- {"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../src/annotations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,gBAAgB,EAAE,eAK9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAK/B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAK/B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,eAKnC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAKrC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eAK7B,CAAC"}
1
+ {"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../src/annotations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,gBAAgB,EAAE,eAK9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAK/B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,eAKnC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAKrC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eAK7B,CAAC"}
@@ -4,13 +4,9 @@
4
4
  * Annotations are hints that help MCP clients understand tool behavior
5
5
  * for permission prompts, safety checks, and orchestration decisions.
6
6
  *
7
- * readOnly: query/review/search/structured are false because they can persist
7
+ * readOnly: query/search/structured are false because they can persist
8
8
  * Claude CLI session state to disk (~/.claude/) when sessionId is used.
9
- * ping is true (purely local, no side effects).
10
- *
11
- * review: destructive=false because the default --allowed-tools list is read-only
12
- * (Read, Grep, Glob, git). Callers that pass custom tools including write access
13
- * should treat it as potentially destructive.
9
+ * ping and listSessions are true (purely local, no side effects).
14
10
  *
15
11
  * Titles are set on the registerTool config in index.ts, not here (avoid duplication).
16
12
  */
@@ -20,12 +16,6 @@ export const queryAnnotations = {
20
16
  idempotentHint: false,
21
17
  openWorldHint: true,
22
18
  };
23
- export const reviewAnnotations = {
24
- readOnlyHint: false,
25
- destructiveHint: false,
26
- idempotentHint: false,
27
- openWorldHint: true,
28
- };
29
19
  export const searchAnnotations = {
30
20
  readOnlyHint: false,
31
21
  destructiveHint: false,
@@ -1 +1 @@
1
- {"version":3,"file":"annotations.js","sourceRoot":"","sources":["../src/annotations.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,KAAK;IACrB,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAoB;IAChD,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,KAAK;IACrB,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAoB;IAChD,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAoB;IACpD,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,KAAK;IACrB,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAoB;IACtD,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,KAAK;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,KAAK;CACrB,CAAC"}
1
+ {"version":3,"file":"annotations.js","sourceRoot":"","sources":["../src/annotations.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,KAAK;IACrB,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAoB;IAChD,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAoB;IACpD,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,KAAK;IACrB,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAoB;IACtD,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,KAAK;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,KAAK;CACrB,CAAC"}
@@ -7,7 +7,6 @@
7
7
  * Keep each description at or under 2048 bytes to avoid bloating tool listings.
8
8
  */
9
9
  export declare const queryDescription = "Execute a prompt via Claude Code CLI with optional file context and session resume. Claude is an AI coding agent that can generate, analyze, refactor, and explain code.\n\nCapabilities: code generation and refactoring, code analysis and explanation, file understanding (text and images), multi-turn conversations via sessionId.\n\nCost: Default model is Sonnet (~$0.01-0.10/call). Use effort=\"low\" for simple tasks, effort=\"high\" + model=\"opus\" for complex analysis. Set maxBudgetUsd to cap per-call cost (recommended for effort=\"max\" or model=\"opus\").\n\nTips:\n- Set workingDirectory to the target repo for project-aware responses.\n- Break complex tasks into focused prompts rather than one large request.\n- Resume multi-turn conversations with sessionId from a previous response's metadata.\n- Include relevant files via the files parameter for targeted context (text files inlined in prompt, images trigger allowed-tools mode).\n- Use noSessionPersistence=true for stateless one-shot calls.";
10
- export declare const reviewDescription = "Repo-aware code review powered by Claude Code CLI. Returns structured feedback on code changes with two modes:\n\n- Agentic (default): Claude explores the repo with Read, Grep, Glob, and git tools. Reads changed files, follows imports, and examines related code before reviewing. Best for thorough reviews. Default timeout: auto-scaled from diff size (3-10 minutes).\n- Quick (quick: true): Receives only the diff text. Fast single-pass review without repo exploration. Default timeout: 2 minutes.\n\nCost: Both modes default to Opus (~$0.05-0.15 quick, ~$0.25-0.50 agentic). Override with model parameter. Use maxBudgetUsd to cap cost on large diffs.\n\nTips:\n- Use the focus parameter to direct attention: \"security\", \"performance\", \"error handling\", \"test coverage\".\n- Set workingDirectory to the repo being reviewed (auto-resolves to git root).\n- Default reviews uncommitted changes (staged + unstaged). Use base to review a branch diff (e.g. base: \"main\").\n- Prefer agentic mode for important reviews, quick mode for rapid feedback during development.";
11
10
  export declare const searchDescription = "Web search via Claude Code CLI using WebSearch and WebFetch tools. Searches the web and synthesizes a comprehensive answer with source URLs.\n\nUse for: current information, documentation lookups, API references, comparing libraries, and research questions.\n\nCost: Typically ~$0.02-0.05/search with Sonnet.\n\nTips:\n- Ask specific, focused questions for best results.\n- Results include source URLs for verification.\n- Use maxResponseLength to control response verbosity.\n- Increase timeout for complex research queries that may require multiple web fetches.";
12
11
  export declare const structuredDescription = "Generate JSON conforming to a provided JSON Schema. Uses Claude CLI's native --json-schema flag for validated output (not client-side validation).\n\nUse for: data extraction from text/files, classification, entity parsing, or any task needing machine-parseable output.\n\nCost: Similar to query (~$0.01-0.10/call). Schema complexity doesn't significantly affect cost.\n\nTips:\n- Pass the JSON Schema as a JSON string in the schema parameter.\n- Schema max size: 20KB. Keep schemas focused for reliable output.\n- For extraction tasks, include source text via the files parameter or inline in the prompt.";
13
12
  export declare const listSessionsDescription = "List active Claude CLI sessions tracked by this server. Returns session metadata (IDs, models, timing, turn counts, cumulative cost) for orchestration. Use to check available sessions before resuming with sessionId. No cost (local lookup only).";
@@ -1 +1 @@
1
- {"version":3,"file":"descriptions.d.ts","sourceRoot":"","sources":["../src/descriptions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,gBAAgB,m/BAWiC,CAAC;AAE/D,eAAO,MAAM,iBAAiB,mjCAWiE,CAAC;AAEhG,eAAO,MAAM,iBAAiB,wjBAUyD,CAAC;AAExF,eAAO,MAAM,qBAAqB,kmBAS2D,CAAC;AAE9F,eAAO,MAAM,uBAAuB,yPAAyP,CAAC;AAE9R,eAAO,MAAM,eAAe,qJAAqJ,CAAC"}
1
+ {"version":3,"file":"descriptions.d.ts","sourceRoot":"","sources":["../src/descriptions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,gBAAgB,m/BAWiC,CAAC;AAE/D,eAAO,MAAM,iBAAiB,wjBAUyD,CAAC;AAExF,eAAO,MAAM,qBAAqB,kmBAS2D,CAAC;AAE9F,eAAO,MAAM,uBAAuB,yPAAyP,CAAC;AAE9R,eAAO,MAAM,eAAe,qJAAqJ,CAAC"}
@@ -18,18 +18,6 @@ Tips:
18
18
  - Resume multi-turn conversations with sessionId from a previous response's metadata.
19
19
  - Include relevant files via the files parameter for targeted context (text files inlined in prompt, images trigger allowed-tools mode).
20
20
  - Use noSessionPersistence=true for stateless one-shot calls.`;
21
- export const reviewDescription = `Repo-aware code review powered by Claude Code CLI. Returns structured feedback on code changes with two modes:
22
-
23
- - Agentic (default): Claude explores the repo with Read, Grep, Glob, and git tools. Reads changed files, follows imports, and examines related code before reviewing. Best for thorough reviews. Default timeout: auto-scaled from diff size (3-10 minutes).
24
- - Quick (quick: true): Receives only the diff text. Fast single-pass review without repo exploration. Default timeout: 2 minutes.
25
-
26
- Cost: Both modes default to Opus (~$0.05-0.15 quick, ~$0.25-0.50 agentic). Override with model parameter. Use maxBudgetUsd to cap cost on large diffs.
27
-
28
- Tips:
29
- - Use the focus parameter to direct attention: "security", "performance", "error handling", "test coverage".
30
- - Set workingDirectory to the repo being reviewed (auto-resolves to git root).
31
- - Default reviews uncommitted changes (staged + unstaged). Use base to review a branch diff (e.g. base: "main").
32
- - Prefer agentic mode for important reviews, quick mode for rapid feedback during development.`;
33
21
  export const searchDescription = `Web search via Claude Code CLI using WebSearch and WebFetch tools. Searches the web and synthesizes a comprehensive answer with source URLs.
34
22
 
35
23
  Use for: current information, documentation lookups, API references, comparing libraries, and research questions.
@@ -1 +1 @@
1
- {"version":3,"file":"descriptions.js","sourceRoot":"","sources":["../src/descriptions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;8DAW8B,CAAC;AAE/D,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;+FAW8D,CAAC;AAEhG,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;uFAUsD,CAAC;AAExF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;6FASwD,CAAC;AAE9F,MAAM,CAAC,MAAM,uBAAuB,GAAG,sPAAsP,CAAC;AAE9R,MAAM,CAAC,MAAM,eAAe,GAAG,kJAAkJ,CAAC"}
1
+ {"version":3,"file":"descriptions.js","sourceRoot":"","sources":["../src/descriptions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;8DAW8B,CAAC;AAE/D,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;uFAUsD,CAAC;AAExF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;6FASwD,CAAC;AAE9F,MAAM,CAAC,MAAM,uBAAuB,GAAG,sPAAsP,CAAC;AAE9R,MAAM,CAAC,MAAM,eAAe,GAAG,kJAAkJ,CAAC"}
package/dist/index.js CHANGED
@@ -4,14 +4,13 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
4
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5
5
  import { z } from "zod";
6
6
  import { executeQuery } from "./tools/query.js";
7
- import { executeReview } from "./tools/review.js";
8
7
  import { executeSearch } from "./tools/search.js";
9
8
  import { executePing } from "./tools/ping.js";
10
9
  import { executeStructured } from "./tools/structured.js";
11
10
  import { getErrorMessage } from "./utils/errors.js";
12
11
  import { buildMeta } from "./utils/meta.js";
13
- import { queryAnnotations, reviewAnnotations, searchAnnotations, structuredAnnotations, listSessionsAnnotations, pingAnnotations, } from "./annotations.js";
14
- import { queryDescription, reviewDescription, searchDescription, structuredDescription, listSessionsDescription, pingDescription, } from "./descriptions.js";
12
+ import { queryAnnotations, searchAnnotations, structuredAnnotations, listSessionsAnnotations, pingAnnotations, } from "./annotations.js";
13
+ import { queryDescription, searchDescription, structuredDescription, listSessionsDescription, pingDescription, } from "./descriptions.js";
15
14
  import { sessionStore, persist } from "./utils/session.js";
16
15
  import { maybeStartHeartbeat } from "./utils/progress.js";
17
16
  const require = createRequire(import.meta.url);
@@ -196,69 +195,6 @@ server.registerTool("structured", {
196
195
  };
197
196
  }
198
197
  });
199
- // --- review tool ---
200
- server.registerTool("review", {
201
- title: "Code Review",
202
- description: reviewDescription,
203
- inputSchema: {
204
- uncommitted: z.boolean().optional().describe("Review uncommitted changes. Default: true"),
205
- base: z.string().optional().describe("Base branch/ref to diff against. Overrides uncommitted."),
206
- focus: z.string().optional().describe("Optional review focus area"),
207
- quick: z.boolean().optional().describe("Use diff-only quick review mode"),
208
- model: z.string().optional().describe("Model alias or full Claude model name"),
209
- sessionId: z.string().optional().describe("Claude session ID to resume with --resume"),
210
- noSessionPersistence: z.boolean().optional().describe("Disable session persistence for ephemeral print calls"),
211
- workingDirectory: z.string().optional().describe("Repository directory"),
212
- timeout: z.number().optional().describe("Timeout in milliseconds"),
213
- maxResponseLength: z.number().int().positive().optional().describe("Soft limit on response length in words"),
214
- maxBudgetUsd: z.number().positive().optional().describe("Maximum cost budget in USD for this call (passed to --max-budget-usd)"),
215
- effort: z.string().optional().describe("Effort level: low, medium, high, or max (default: high for agentic)"),
216
- },
217
- annotations: reviewAnnotations,
218
- }, async (input, extra) => {
219
- const start = Date.now();
220
- const heartbeat = maybeStartHeartbeat(extra._meta, extra.sendNotification);
221
- try {
222
- const result = await executeReview(input);
223
- const sessionId = result.sessionId ?? input.sessionId;
224
- if (sessionId) {
225
- persist(sessionStore, sessionId, result);
226
- }
227
- const textMeta = [
228
- `Diff source: ${result.diffSource}`,
229
- `Mode: ${result.mode}`,
230
- ];
231
- if (result.base)
232
- textMeta.push(`Base: ${result.base}`);
233
- if (result.timeoutScaled)
234
- textMeta.push("Timeout: auto-scaled");
235
- if (result.timedOut)
236
- textMeta.push("(timed out)");
237
- const text = `${result.response}\n\n---\n${textMeta.join("\n")}`;
238
- return {
239
- content: [{ type: "text", text }],
240
- _meta: buildMeta({
241
- durationMs: Date.now() - start,
242
- model: result.model,
243
- sessionId: result.sessionId,
244
- totalCostUsd: result.totalCostUsd,
245
- usage: result.usage,
246
- timedOut: result.timedOut,
247
- }),
248
- };
249
- }
250
- catch (e) {
251
- console.error("[review]", e);
252
- return {
253
- content: [{ type: "text", text: `Error: ${getErrorMessage(e)}` }],
254
- isError: true,
255
- _meta: buildMeta({ durationMs: Date.now() - start }),
256
- };
257
- }
258
- finally {
259
- heartbeat.stop();
260
- }
261
- });
262
198
  // --- search tool ---
263
199
  server.registerTool("search", {
264
200
  title: "Web Search",
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type ToolName = "query" | "structured" | "search" | "review" | "ping";
1
+ export type ToolName = "query" | "structured" | "search" | "ping";
2
2
  export declare function getDefaultModel(tool?: ToolName): string;
3
3
  export declare function getFallbackModel(): string | undefined;
4
4
  export declare function resolveModel(tool: ToolName, explicit?: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/utils/model.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAU7E,wBAAgB,eAAe,CAAC,IAAI,GAAE,QAAkB,GAAG,MAAM,CAQhE;AAED,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAIrD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtE;AAOD,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMnF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAI1D"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/utils/model.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;AASlE,wBAAgB,eAAe,CAAC,IAAI,GAAE,QAAkB,GAAG,MAAM,CAQhE;AAED,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAIrD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtE;AAMD,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMnF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAI1D"}
@@ -2,7 +2,6 @@ const DEFAULT_MODELS = {
2
2
  query: "sonnet",
3
3
  structured: "sonnet",
4
4
  search: "sonnet",
5
- review: "opus",
6
5
  ping: "haiku",
7
6
  };
8
7
  export function getDefaultModel(tool = "query") {
@@ -24,7 +23,6 @@ export function resolveModel(tool, explicit) {
24
23
  return explicit?.trim() || getDefaultModel(tool);
25
24
  }
26
25
  const DEFAULT_EFFORT = {
27
- review: "high",
28
26
  search: "medium",
29
27
  };
30
28
  export function resolveEffort(tool, explicit) {
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/utils/model.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAA6B;IAC/C,KAAK,EAAE,QAAQ;IACf,UAAU,EAAE,QAAQ;IACpB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,OAAO;CACd,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,OAAiB,OAAO;IACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;IAC3E,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,CAAC;IAC3D,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,CAAC;IAC3D,IAAI,KAAK,EAAE,WAAW,EAAE,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IACtD,OAAO,KAAK,IAAI,OAAO,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAc,EAAE,QAAiB;IAC5D,OAAO,QAAQ,EAAE,IAAI,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,cAAc,GAAsC;IACxD,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,IAAc,EAAE,QAAiB;IAC7D,MAAM,KAAK,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/B,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;IAC1E,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAiB;IAChD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5D,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,GAAG,CAAC,CAAC;IACvE,OAAO,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/utils/model.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAA6B;IAC/C,KAAK,EAAE,QAAQ;IACf,UAAU,EAAE,QAAQ;IACpB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,OAAO;CACd,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,OAAiB,OAAO;IACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;IAC3E,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,CAAC;IAC3D,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,CAAC;IAC3D,IAAI,KAAK,EAAE,WAAW,EAAE,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IACtD,OAAO,KAAK,IAAI,OAAO,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAc,EAAE,QAAiB;IAC5D,OAAO,QAAQ,EAAE,IAAI,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,cAAc,GAAsC;IACxD,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,IAAc,EAAE,QAAiB;IAC7D,MAAM,KAAK,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/B,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;IAC1E,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAiB;IAChD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5D,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,GAAG,CAAC,CAAC;IACvE,OAAO,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC"}
@@ -17,7 +17,7 @@ export type ProgressNotificationSender = (notification: {
17
17
  /**
18
18
  * Start a periodic progress heartbeat that emits MCP `notifications/progress`.
19
19
  *
20
- * Used for long-running operations (review, search, query) to signal liveness
20
+ * Used for long-running operations (search, query) to signal liveness
21
21
  * to the MCP client. The first notification fires after `intervalMs`.
22
22
  * Notifications are fire-and-forget; failures are silently ignored (not all
23
23
  * clients support progress notifications).
@@ -3,7 +3,7 @@ const DEFAULT_INTERVAL_MS = 15_000;
3
3
  /**
4
4
  * Start a periodic progress heartbeat that emits MCP `notifications/progress`.
5
5
  *
6
- * Used for long-running operations (review, search, query) to signal liveness
6
+ * Used for long-running operations (search, query) to signal liveness
7
7
  * to the MCP client. The first notification fires after `intervalMs`.
8
8
  * Notifications are fire-and-forget; failures are silently ignored (not all
9
9
  * clients support progress notifications).
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "claude-mcp-bridge",
3
3
  "mcpName": "io.github.hampsterx/claude-mcp-bridge",
4
- "version": "0.5.1",
5
- "description": "MCP server that wraps Claude Code CLI for query, code review, web search, structured output, and health checks",
4
+ "version": "0.6.0",
5
+ "description": "MCP server that wraps Claude Code CLI for query, web search, structured output, and health checks",
6
6
  "author": "hampsterx",
7
7
  "license": "MIT",
8
8
  "type": "module",
@@ -32,7 +32,6 @@
32
32
  "claude",
33
33
  "claude-code",
34
34
  "anthropic",
35
- "code-review",
36
35
  "ai-tools",
37
36
  "model-context-protocol"
38
37
  ],
@@ -1,40 +0,0 @@
1
- import { type ClaudeUsage } from "../utils/parse.js";
2
- import { type DiffStat } from "../utils/git.js";
3
- export interface ReviewInput {
4
- uncommitted?: boolean;
5
- base?: string;
6
- focus?: string;
7
- quick?: boolean;
8
- model?: string;
9
- sessionId?: string;
10
- noSessionPersistence?: boolean;
11
- workingDirectory?: string;
12
- timeout?: number;
13
- maxResponseLength?: number;
14
- maxBudgetUsd?: number;
15
- effort?: string;
16
- }
17
- export interface ReviewResult {
18
- response: string;
19
- diffSource: "uncommitted" | "branch";
20
- base?: string;
21
- mode: "agentic" | "quick";
22
- model?: string;
23
- sessionId?: string;
24
- totalCostUsd?: number;
25
- usage?: ClaudeUsage;
26
- timeoutScaled: boolean;
27
- timedOut: boolean;
28
- resolvedCwd: string;
29
- }
30
- export declare function buildAgenticPrompt(diffSpec: string, focus?: string, maxResponseLength?: number): string;
31
- export declare function buildQuickPrompt(diff: string, focus?: string, maxResponseLength?: number): string;
32
- /**
33
- * Scale agentic review timeout based on diff size.
34
- * Base budget covers CLI cold start + small-diff review.
35
- * Each additional file adds budget for tool calls (Read, Grep, etc).
36
- * Capped at HARD_TIMEOUT_CAP.
37
- */
38
- export declare function scaleAgenticTimeout(stat: DiffStat): number;
39
- export declare function executeReview(input: ReviewInput): Promise<ReviewResult>;
40
- //# sourceMappingURL=review.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/tools/review.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGzF,OAAO,EAA+E,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAI7H,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,aAAa,GAAG,QAAQ,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAgBD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAMvG;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAMjG;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAE1D;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAgC7E"}
@@ -1,229 +0,0 @@
1
- import { spawnClaude, buildClaudeArgs, clampTimeout, HARD_TIMEOUT_CAP } from "../utils/spawn.js";
2
- import { parseClaudeOutput, tryParsePartial } from "../utils/parse.js";
3
- import { checkAndThrow } from "../utils/errors.js";
4
- import { loadPrompt, buildLengthLimit } from "../utils/prompts.js";
5
- import { getGitRoot, getUncommittedDiff, getBranchDiff, getDiffStat, validateBaseRef } from "../utils/git.js";
6
- import { resolveCwd } from "../utils/security.js";
7
- import { resolveModel, getFallbackModel, resolveEffort, resolveMaxBudget } from "../utils/model.js";
8
- const AGENTIC_FALLBACK_TIMEOUT = 300_000;
9
- const AGENTIC_BASE_MS = 180_000;
10
- const AGENTIC_PER_FILE_MS = 30_000;
11
- const QUICK_TIMEOUT = 120_000;
12
- const REVIEW_ALLOWED_TOOLS = [
13
- "Read",
14
- "Grep",
15
- "Glob",
16
- "Bash(git diff:*)",
17
- "Bash(git log:*)",
18
- "Bash(git show:*)",
19
- "Bash(git status:*)",
20
- ];
21
- export function buildAgenticPrompt(diffSpec, focus, maxResponseLength) {
22
- return loadPrompt("review-agentic.md", {
23
- DIFF_SPEC: diffSpec,
24
- FOCUS_SECTION: focus ? `## Focus Area\n\nPay special attention to: ${focus}` : "",
25
- LENGTH_LIMIT: buildLengthLimit(maxResponseLength),
26
- });
27
- }
28
- export function buildQuickPrompt(diff, focus, maxResponseLength) {
29
- return loadPrompt("review-quick.md", {
30
- DIFF: diff,
31
- FOCUS_SECTION: focus ? `Pay special attention to: ${focus}` : "",
32
- LENGTH_LIMIT: buildLengthLimit(maxResponseLength),
33
- });
34
- }
35
- /**
36
- * Scale agentic review timeout based on diff size.
37
- * Base budget covers CLI cold start + small-diff review.
38
- * Each additional file adds budget for tool calls (Read, Grep, etc).
39
- * Capped at HARD_TIMEOUT_CAP.
40
- */
41
- export function scaleAgenticTimeout(stat) {
42
- return Math.min(AGENTIC_BASE_MS + AGENTIC_PER_FILE_MS * stat.files, HARD_TIMEOUT_CAP);
43
- }
44
- export async function executeReview(input) {
45
- const { uncommitted = true, base, focus, quick = false, maxResponseLength, maxBudgetUsd, effort } = input;
46
- const model = resolveModel("review", input.model);
47
- const requestedDir = await resolveCwd(input.workingDirectory);
48
- const cwd = getGitRoot(requestedDir);
49
- // Validate base ref early — before any git commands use it.
50
- if (base)
51
- validateBaseRef(base);
52
- if (quick) {
53
- const timeout = clampTimeout(input.timeout, QUICK_TIMEOUT);
54
- return executeQuickReview({ cwd, uncommitted, base, focus, model, timeout, timeoutScaled: false, maxResponseLength, sessionId: input.sessionId, noSessionPersistence: input.noSessionPersistence, maxBudgetUsd, effort });
55
- }
56
- // Auto-scale agentic timeout from diff size when no explicit timeout given
57
- let timeout;
58
- let timeoutScaled = false;
59
- if (input.timeout != null) {
60
- timeout = clampTimeout(input.timeout, HARD_TIMEOUT_CAP);
61
- }
62
- else {
63
- try {
64
- const spec = base ? { type: "branch", base } : { type: "uncommitted" };
65
- const stat = getDiffStat(cwd, spec);
66
- timeout = scaleAgenticTimeout(stat);
67
- timeoutScaled = true;
68
- }
69
- catch {
70
- timeout = AGENTIC_FALLBACK_TIMEOUT;
71
- }
72
- }
73
- return executeAgenticReview({ cwd, uncommitted, base, focus, model, timeout, timeoutScaled, maxResponseLength, sessionId: input.sessionId, noSessionPersistence: input.noSessionPersistence, maxBudgetUsd, effort });
74
- }
75
- async function executeAgenticReview(input) {
76
- const { cwd, uncommitted, base, focus, model, timeout, timeoutScaled, maxResponseLength, sessionId, noSessionPersistence, maxBudgetUsd, effort } = input;
77
- let diffSpec;
78
- let diffSource;
79
- if (base) {
80
- diffSpec = `git diff ${base}...HEAD -U5`;
81
- diffSource = "branch";
82
- }
83
- else if (uncommitted) {
84
- diffSpec = "git diff HEAD -U5";
85
- diffSource = "uncommitted";
86
- }
87
- else {
88
- throw new Error("Either 'uncommitted' must be true or 'base' must be specified");
89
- }
90
- try {
91
- const diff = base ? getBranchDiff(cwd, base) : getUncommittedDiff(cwd);
92
- if (!diff.trim()) {
93
- return {
94
- response: base ? `No diff found between ${base} and HEAD.` : "No uncommitted changes found.",
95
- diffSource,
96
- base,
97
- mode: "agentic",
98
- model,
99
- timeoutScaled: false,
100
- timedOut: false,
101
- resolvedCwd: cwd,
102
- };
103
- }
104
- }
105
- catch (e) {
106
- if (e instanceof Error && (e.message.includes("No uncommitted changes") || e.message.includes("No diff found"))) {
107
- return {
108
- response: e.message,
109
- diffSource,
110
- base,
111
- mode: "agentic",
112
- model,
113
- timeoutScaled: false,
114
- timedOut: false,
115
- resolvedCwd: cwd,
116
- };
117
- }
118
- throw e;
119
- }
120
- const prompt = buildAgenticPrompt(diffSpec, focus, maxResponseLength);
121
- const args = buildClaudeArgs({
122
- model,
123
- fallbackModel: getFallbackModel(),
124
- maxBudgetUsd: resolveMaxBudget(maxBudgetUsd),
125
- effort: resolveEffort("review", effort),
126
- sessionId,
127
- noSessionPersistence,
128
- allowedTools: REVIEW_ALLOWED_TOOLS,
129
- });
130
- const result = await spawnClaude({ args, cwd, stdin: prompt, timeout });
131
- if (result.timedOut) {
132
- return {
133
- response: tryParsePartial(result.stdout, result.stderr, timeout),
134
- diffSource,
135
- base,
136
- mode: "agentic",
137
- model,
138
- timeoutScaled,
139
- timedOut: true,
140
- resolvedCwd: cwd,
141
- };
142
- }
143
- const parsed = parseClaudeOutput(result.stdout, result.stderr);
144
- checkAndThrow(result, parsed);
145
- return {
146
- response: parsed.response,
147
- diffSource,
148
- base,
149
- mode: "agentic",
150
- model,
151
- sessionId: parsed.sessionId,
152
- totalCostUsd: parsed.totalCostUsd,
153
- usage: parsed.usage,
154
- timeoutScaled,
155
- timedOut: false,
156
- resolvedCwd: cwd,
157
- };
158
- }
159
- async function executeQuickReview(input) {
160
- const { cwd, uncommitted, base, focus, model, timeout, timeoutScaled, maxResponseLength, sessionId, noSessionPersistence, maxBudgetUsd, effort } = input;
161
- let diff;
162
- let diffSource;
163
- try {
164
- if (base) {
165
- diff = getBranchDiff(cwd, base);
166
- diffSource = "branch";
167
- }
168
- else if (uncommitted) {
169
- diff = getUncommittedDiff(cwd);
170
- diffSource = "uncommitted";
171
- }
172
- else {
173
- throw new Error("Either 'uncommitted' must be true or 'base' must be specified");
174
- }
175
- }
176
- catch (e) {
177
- if (e instanceof Error && (e.message.includes("No uncommitted changes") || e.message.includes("No diff found"))) {
178
- return {
179
- response: e.message,
180
- diffSource: base ? "branch" : "uncommitted",
181
- base,
182
- mode: "quick",
183
- model,
184
- timeoutScaled,
185
- timedOut: false,
186
- resolvedCwd: cwd,
187
- };
188
- }
189
- throw e;
190
- }
191
- const prompt = buildQuickPrompt(diff, focus, maxResponseLength);
192
- const args = buildClaudeArgs({
193
- model,
194
- fallbackModel: getFallbackModel(),
195
- maxBudgetUsd: resolveMaxBudget(maxBudgetUsd),
196
- effort: resolveEffort("review", effort),
197
- sessionId,
198
- noSessionPersistence,
199
- });
200
- const result = await spawnClaude({ args, cwd, stdin: prompt, timeout });
201
- if (result.timedOut) {
202
- return {
203
- response: tryParsePartial(result.stdout, result.stderr, timeout),
204
- diffSource,
205
- base,
206
- mode: "quick",
207
- model,
208
- timeoutScaled,
209
- timedOut: true,
210
- resolvedCwd: cwd,
211
- };
212
- }
213
- const parsed = parseClaudeOutput(result.stdout, result.stderr);
214
- checkAndThrow(result, parsed);
215
- return {
216
- response: parsed.response,
217
- diffSource,
218
- base,
219
- mode: "quick",
220
- model,
221
- sessionId: parsed.sessionId,
222
- totalCostUsd: parsed.totalCostUsd,
223
- usage: parsed.usage,
224
- timeoutScaled,
225
- timedOut: false,
226
- resolvedCwd: cwd,
227
- };
228
- }
229
- //# sourceMappingURL=review.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/tools/review.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- export interface DiffStat {
2
- files: number;
3
- insertions: number;
4
- deletions: number;
5
- }
6
- export type DiffSpec = {
7
- type: "uncommitted";
8
- } | {
9
- type: "branch";
10
- base: string;
11
- };
12
- /**
13
- * Parse `git diff --numstat` output into aggregate stats.
14
- * Binary files show "-" for insertions/deletions; they count as files but contribute 0 lines.
15
- */
16
- export declare function parseNumstat(output: string): DiffStat;
17
- /**
18
- * Get diff stats (file count, insertions, deletions) for a diff spec.
19
- * Uses `git diff HEAD --numstat` for uncommitted to avoid double-counting
20
- * files with both staged and unstaged changes.
21
- */
22
- export declare function getDiffStat(cwd: string, spec: DiffSpec): DiffStat;
23
- /**
24
- * Validate a git base ref for safety.
25
- * Rejects refs that could inject arguments or traverse paths.
26
- */
27
- export declare function validateBaseRef(base: string): void;
28
- /**
29
- * Find the git repository root for a given directory.
30
- * Throws if not inside a git repo.
31
- */
32
- export declare function getGitRoot(cwd: string): string;
33
- /**
34
- * Get a unified diff of uncommitted changes (staged + unstaged).
35
- */
36
- export declare function getUncommittedDiff(cwd: string, contextLines?: number): string;
37
- /**
38
- * Get a diff between the current branch and a base branch/ref.
39
- */
40
- export declare function getBranchDiff(cwd: string, base: string, contextLines?: number): string;
41
- //# sourceMappingURL=git.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAkBrD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAWjE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAIlD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgB9C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,SAAI,GAAG,MAAM,CA2BxE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,SAAI,GAAG,MAAM,CAkBjF"}
package/dist/utils/git.js DELETED
@@ -1,113 +0,0 @@
1
- import { execFileSync } from "node:child_process";
2
- /**
3
- * Parse `git diff --numstat` output into aggregate stats.
4
- * Binary files show "-" for insertions/deletions; they count as files but contribute 0 lines.
5
- */
6
- export function parseNumstat(output) {
7
- let files = 0;
8
- let insertions = 0;
9
- let deletions = 0;
10
- for (const line of output.split("\n")) {
11
- const trimmed = line.trim();
12
- if (!trimmed)
13
- continue;
14
- const parts = trimmed.split("\t");
15
- if (parts.length < 3)
16
- continue;
17
- files++;
18
- const ins = parseInt(parts[0], 10);
19
- const del = parseInt(parts[1], 10);
20
- if (!Number.isNaN(ins))
21
- insertions += ins;
22
- if (!Number.isNaN(del))
23
- deletions += del;
24
- }
25
- return { files, insertions, deletions };
26
- }
27
- /**
28
- * Get diff stats (file count, insertions, deletions) for a diff spec.
29
- * Uses `git diff HEAD --numstat` for uncommitted to avoid double-counting
30
- * files with both staged and unstaged changes.
31
- */
32
- export function getDiffStat(cwd, spec) {
33
- const args = spec.type === "uncommitted"
34
- ? ["-C", cwd, "diff", "HEAD", "--numstat"]
35
- : ["-C", cwd, "diff", `${spec.base}...HEAD`, "--numstat"];
36
- const output = execFileSync("git", args, {
37
- encoding: "utf8",
38
- timeout: 30_000,
39
- });
40
- return parseNumstat(output);
41
- }
42
- /**
43
- * Validate a git base ref for safety.
44
- * Rejects refs that could inject arguments or traverse paths.
45
- */
46
- export function validateBaseRef(base) {
47
- if (base.startsWith("-") || base.includes("..") || base.includes("@{") || !/^[\w./-]+$/.test(base)) {
48
- throw new Error(`Invalid base ref: "${base}" — must be a valid git ref (alphanumeric, -, _, /, .)`);
49
- }
50
- }
51
- /**
52
- * Find the git repository root for a given directory.
53
- * Throws if not inside a git repo.
54
- */
55
- export function getGitRoot(cwd) {
56
- try {
57
- return execFileSync("git", ["-C", cwd, "rev-parse", "--show-toplevel"], {
58
- encoding: "utf8",
59
- timeout: 5000,
60
- }).trim();
61
- }
62
- catch (e) {
63
- const err = e;
64
- if (err.code === "ENOENT") {
65
- throw new Error("git not found. Install git and ensure it is on PATH.", { cause: e });
66
- }
67
- if (e.killed || e.signal) {
68
- throw new Error(`git timed out checking repository root: ${cwd}`, { cause: e });
69
- }
70
- throw new Error(`Not a git repository: ${cwd}`, { cause: e });
71
- }
72
- }
73
- /**
74
- * Get a unified diff of uncommitted changes (staged + unstaged).
75
- */
76
- export function getUncommittedDiff(cwd, contextLines = 5) {
77
- try {
78
- // Staged changes
79
- const staged = execFileSync("git", ["-C", cwd, "diff", "--cached", `-U${contextLines}`], { encoding: "utf8", timeout: 30000 }).trim();
80
- // Unstaged changes
81
- const unstaged = execFileSync("git", ["-C", cwd, "diff", `-U${contextLines}`], { encoding: "utf8", timeout: 30000 }).trim();
82
- const parts = [staged, unstaged].filter(Boolean);
83
- if (parts.length === 0) {
84
- throw new Error("No uncommitted changes found");
85
- }
86
- return parts.join("\n");
87
- }
88
- catch (e) {
89
- if (e instanceof Error && e.message === "No uncommitted changes found") {
90
- throw e;
91
- }
92
- throw new Error("Failed to get git diff", { cause: e });
93
- }
94
- }
95
- /**
96
- * Get a diff between the current branch and a base branch/ref.
97
- */
98
- export function getBranchDiff(cwd, base, contextLines = 5) {
99
- try {
100
- const diff = execFileSync("git", ["-C", cwd, "diff", `${base}...HEAD`, `-U${contextLines}`], { encoding: "utf8", timeout: 30000 }).trim();
101
- if (!diff) {
102
- throw new Error(`No diff found between ${base} and HEAD`);
103
- }
104
- return diff;
105
- }
106
- catch (e) {
107
- if (e instanceof Error && e.message.startsWith("No diff found")) {
108
- throw e;
109
- }
110
- throw new Error(`Failed to get branch diff against "${base}"`, { cause: e });
111
- }
112
- }
113
- //# sourceMappingURL=git.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- You are an expert code reviewer operating inside a git repository.
2
-
3
- Review the changes by using this diff command as your starting point:
4
-
5
- {{DIFF_SPEC}}
6
-
7
- Instructions:
8
- 1. Run the diff command.
9
- 2. Read the changed files and any directly relevant surrounding code.
10
- 3. Focus on real bugs, regressions, security issues, incorrect assumptions, and missing tests.
11
- 4. Prefer findings over summaries.
12
- 5. If there are no meaningful issues, say so briefly and mention any residual risk.
13
-
14
- For each issue found, provide:
15
- - **Severity**: critical / warning / suggestion
16
- - **File**: the file path
17
- - **Line**: approximate line number
18
- - **Issue**: clear description
19
- - **Suggestion**: how to fix it
20
-
21
- {{FOCUS_SECTION}}
22
-
23
- {{LENGTH_LIMIT}}
@@ -1,25 +0,0 @@
1
- You are an expert code reviewer. Review the following git diff carefully.
2
-
3
- For each issue found, provide:
4
- - **Severity**: critical / warning / suggestion
5
- - **File**: the file path
6
- - **Line**: approximate line number from the diff
7
- - **Issue**: clear description
8
- - **Suggestion**: how to fix it
9
-
10
- Focus on:
11
- - Bugs and logic errors
12
- - Security vulnerabilities
13
- - Performance issues
14
- - Missing error handling
15
- - Significant maintainability risks
16
-
17
- {{FOCUS_SECTION}}
18
-
19
- Keep the review concise. Findings first. If the diff looks good, say so briefly. Do not invent issues.
20
-
21
- {{LENGTH_LIMIT}}
22
-
23
- ---
24
-
25
- {{DIFF}}