@shareworker/code-review-mcp 0.1.0 → 0.1.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/README.md +150 -55
- package/dist/bundler.js +2 -2
- package/dist/bundler.js.map +1 -1
- package/dist/diff-parser.d.ts.map +1 -1
- package/dist/diff-parser.js +11 -6
- package/dist/diff-parser.js.map +1 -1
- package/dist/git.d.ts +17 -0
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +31 -0
- package/dist/git.js.map +1 -1
- package/dist/index.js +93 -2
- package/dist/index.js.map +1 -1
- package/dist/position.js +3 -3
- package/dist/position.js.map +1 -1
- package/dist/reflect.js +6 -3
- package/dist/reflect.js.map +1 -1
- package/package.json +1 -1
- package/README +0 -155
- package/skills/code +0 -139
- package/skills/code-review/SK +0 -139
- package/skills/code-review/SKILL +0 -139
package/README.md
CHANGED
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
# @shareworker/code-review-mcp
|
|
2
2
|
|
|
3
|
+
[English](#english) | [中文](#中文)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<a id="english"></a>
|
|
8
|
+
|
|
9
|
+
## English
|
|
10
|
+
|
|
3
11
|
An MCP server that exposes the deterministic engineering layer of code review as
|
|
4
12
|
tools, callable by host agents (Claude Code, Codex, Devin) within their own LLM
|
|
5
13
|
loops. The server never calls an LLM — all reasoning happens in the host session.
|
|
6
14
|
|
|
7
|
-
|
|
15
|
+
### Why
|
|
8
16
|
|
|
9
17
|
General-purpose agents doing code review via Skills suffer from: incomplete
|
|
10
18
|
coverage (skipping files on large changesets), position drift (line numbers
|
|
@@ -13,7 +21,7 @@ large quality swings). This server enforces hard constraints on the review
|
|
|
13
21
|
process — file selection, smart bundling, rule matching, comment positioning,
|
|
14
22
|
and comment reflection — so quality is stable regardless of host model variation.
|
|
15
23
|
|
|
16
|
-
|
|
24
|
+
### Tools
|
|
17
25
|
|
|
18
26
|
| Tool | Purpose |
|
|
19
27
|
|------|---------|
|
|
@@ -23,54 +31,31 @@ and comment reflection — so quality is stable regardless of host model variati
|
|
|
23
31
|
| `position_comment` | Text match + hunk align → precise line numbers |
|
|
24
32
|
| `reflect_comment` | Deterministic validation (keep/drop) — no LLM |
|
|
25
33
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
### Claude Code
|
|
29
|
-
|
|
30
|
-
Add to `.claude/mcp.json`:
|
|
31
|
-
|
|
32
|
-
```json
|
|
33
|
-
{
|
|
34
|
-
"mcpServers": {
|
|
35
|
-
"code-review": {
|
|
36
|
-
"command": "npx",
|
|
37
|
-
"args": ["-y", "@shareworker/code-review-mcp"]
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
```
|
|
34
|
+
### Installation
|
|
42
35
|
|
|
43
|
-
|
|
36
|
+
One command — auto-detects your agent, writes MCP config, installs the skill:
|
|
44
37
|
|
|
45
38
|
```bash
|
|
46
|
-
|
|
47
|
-
cp skills/code-review/SKILL.md .claude/skills/code-review/SKILL.md
|
|
39
|
+
npx @shareworker/code-review-mcp setup
|
|
48
40
|
```
|
|
49
41
|
|
|
50
|
-
|
|
42
|
+
That's it. Restart your agent and the `code-review` MCP server is available.
|
|
51
43
|
|
|
52
|
-
|
|
44
|
+
<details>
|
|
45
|
+
<summary>What does <code>setup</code> do?</summary>
|
|
53
46
|
|
|
54
|
-
|
|
55
|
-
{
|
|
56
|
-
"mcpServers": {
|
|
57
|
-
"code-review": {
|
|
58
|
-
"command": "npx",
|
|
59
|
-
"args": ["-y", "@shareworker/code-review-mcp"]
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
```
|
|
47
|
+
It detects which agents are present (`.claude/`, `.devin/`, `.codex/`) and for each:
|
|
64
48
|
|
|
65
|
-
|
|
49
|
+
1. Writes the MCP server entry into the agent's config file (merges with existing config)
|
|
50
|
+
2. Copies `SKILL.md` into the agent's skill directory
|
|
66
51
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
```
|
|
52
|
+
To set up a specific agent only: `npx @shareworker/code-review-mcp setup --agent claude`
|
|
53
|
+
</details>
|
|
70
54
|
|
|
71
|
-
|
|
55
|
+
<details>
|
|
56
|
+
<summary>Manual configuration (if you prefer)</summary>
|
|
72
57
|
|
|
73
|
-
Add to `.devin/config.json
|
|
58
|
+
Add to your agent's MCP config (`.claude/mcp.json` / `.devin/config.json` / `.codex/config.json`):
|
|
74
59
|
|
|
75
60
|
```json
|
|
76
61
|
{
|
|
@@ -82,15 +67,9 @@ Add to `.devin/config.json`:
|
|
|
82
67
|
}
|
|
83
68
|
}
|
|
84
69
|
```
|
|
70
|
+
</details>
|
|
85
71
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
mkdir -p .devin/skills/code-review
|
|
90
|
-
cp skills/code-review/SKILL.md .devin/skills/code-review/SKILL.md
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
## Configuration
|
|
72
|
+
### Configuration
|
|
94
73
|
|
|
95
74
|
Create `.code-review/rules.json` in your repo (or `~/.code-review/rules.json`
|
|
96
75
|
for global config):
|
|
@@ -114,7 +93,7 @@ for global config):
|
|
|
114
93
|
}
|
|
115
94
|
```
|
|
116
95
|
|
|
117
|
-
|
|
96
|
+
#### Configuration Resolution Priority
|
|
118
97
|
|
|
119
98
|
1. `--rule <path>` flag (highest) — not exposed via MCP, reserved for future CLI
|
|
120
99
|
2. `<repo>/.code-review/rules.json` — project-level
|
|
@@ -125,18 +104,18 @@ for global config):
|
|
|
125
104
|
For MVP, only layers 2-4 are active (no `--rule` flag since there's no CLI).
|
|
126
105
|
The first matching user rule replaces the built-in system rule at the same layer.
|
|
127
106
|
|
|
128
|
-
|
|
107
|
+
#### `filters`
|
|
129
108
|
|
|
130
109
|
- `exclude`: glob patterns for files to exclude (merged with built-in defaults)
|
|
131
110
|
- `include`: glob patterns — when present, only matching files are reviewed
|
|
132
111
|
|
|
133
|
-
|
|
112
|
+
#### `rules`
|
|
134
113
|
|
|
135
114
|
Array of `{ "path": "<glob>", "rule": "<text>" }`. First match wins. The `rule`
|
|
136
115
|
text is returned as `prompt_section` for the host LLM to inject into its review
|
|
137
116
|
prompt.
|
|
138
117
|
|
|
139
|
-
|
|
118
|
+
### Development
|
|
140
119
|
|
|
141
120
|
```bash
|
|
142
121
|
npm install
|
|
@@ -145,11 +124,127 @@ npm test # run unit tests
|
|
|
145
124
|
npm run dev # watch mode
|
|
146
125
|
```
|
|
147
126
|
|
|
148
|
-
|
|
127
|
+
### License
|
|
128
|
+
|
|
129
|
+
MIT
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
<a id="中文"></a>
|
|
134
|
+
|
|
135
|
+
## 中文
|
|
136
|
+
|
|
137
|
+
一个 MCP 服务器,将代码审查的确定性工程层封装为工具,供宿主代理(Claude Code、
|
|
138
|
+
Codex、Devin)在自身的 LLM 循环中调用。服务器自身不调用任何 LLM —— 所有推理
|
|
139
|
+
都在宿主会话中完成。
|
|
140
|
+
|
|
141
|
+
### 为什么需要
|
|
142
|
+
|
|
143
|
+
通用代理通过 Skill 做代码审查时存在三大问题:覆盖不完整(大变更集时跳过文件)、
|
|
144
|
+
定位漂移(行号与实际代码不匹配)、质量不稳定(提示词微小变化导致质量大幅波动)。
|
|
145
|
+
本服务器对审查流程施加硬约束 —— 文件选择、智能打包、规则匹配、评论定位、
|
|
146
|
+
评论反思 —— 使质量不受宿主模型变化影响。
|
|
147
|
+
|
|
148
|
+
### 工具
|
|
149
|
+
|
|
150
|
+
| 工具 | 职责 |
|
|
151
|
+
|------|------|
|
|
152
|
+
| `get_review_targets` | Git diff → 文件过滤 → 返回 `diff_ref` + 文件列表 |
|
|
153
|
+
| `get_file_bundle` | 智能打包(测试/源码配对 + i18n 配对),20000 字符上限 |
|
|
154
|
+
| `match_rules` | 路径匹配规则 → 返回 `prompt_section` 供宿主 LLM 注入 |
|
|
155
|
+
| `position_comment` | 文本匹配 + hunk 对齐 → 精确行号 |
|
|
156
|
+
| `reflect_comment` | 确定性验证(保留/丢弃)—— 不调用 LLM |
|
|
157
|
+
|
|
158
|
+
### 安装
|
|
159
|
+
|
|
160
|
+
一条命令——自动检测你的 agent,写入 MCP 配置,安装 skill:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
npx @shareworker/code-review-mcp setup
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
完成。重启 agent 即可使用 `code-review` MCP 服务器。
|
|
167
|
+
|
|
168
|
+
<details>
|
|
169
|
+
<summary><code>setup</code> 做了什么?</summary>
|
|
170
|
+
|
|
171
|
+
检测项目中存在哪些 agent(`.claude/`、`.devin/`、`.codex/`),对每个 agent:
|
|
172
|
+
|
|
173
|
+
1. 将 MCP 服务器配置写入 agent 的配置文件(与已有配置合并)
|
|
174
|
+
2. 将 `SKILL.md` 复制到 agent 的 skill 目录
|
|
175
|
+
|
|
176
|
+
仅安装指定 agent:`npx @shareworker/code-review-mcp setup --agent claude`
|
|
177
|
+
</details>
|
|
178
|
+
|
|
179
|
+
<details>
|
|
180
|
+
<summary>手动配置(如果你更喜欢)</summary>
|
|
181
|
+
|
|
182
|
+
将以下内容添加到 agent 的 MCP 配置(`.claude/mcp.json` / `.devin/config.json` / `.codex/config.json`):
|
|
183
|
+
|
|
184
|
+
```json
|
|
185
|
+
{
|
|
186
|
+
"mcpServers": {
|
|
187
|
+
"code-review": {
|
|
188
|
+
"command": "npx",
|
|
189
|
+
"args": ["-y", "@shareworker/code-review-mcp"]
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
</details>
|
|
195
|
+
|
|
196
|
+
### 配置
|
|
197
|
+
|
|
198
|
+
在仓库中创建 `.code-review/rules.json`(或 `~/.code-review/rules.json` 作为全局配置):
|
|
199
|
+
|
|
200
|
+
```json
|
|
201
|
+
{
|
|
202
|
+
"filters": {
|
|
203
|
+
"exclude": ["**/*.lock", "**/*.min.js", "**/*.map"],
|
|
204
|
+
"include": ["**/*.ts", "**/*.js"]
|
|
205
|
+
},
|
|
206
|
+
"rules": [
|
|
207
|
+
{
|
|
208
|
+
"path": "**/*.ts",
|
|
209
|
+
"rule": "检查 any 类型和空值处理"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"path": "**/*mapper*.xml",
|
|
213
|
+
"rule": "检查 SQL 注入风险和标签闭合"
|
|
214
|
+
}
|
|
215
|
+
]
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
#### 配置优先级
|
|
220
|
+
|
|
221
|
+
1. `--rule <path>` 命令行参数(最高)—— MCP 未暴露,预留给未来 CLI
|
|
222
|
+
2. `<repo>/.code-review/rules.json` —— 项目级
|
|
223
|
+
3. `~/.code-review/rules.json` —— 全局/用户级
|
|
224
|
+
4. 内置默认规则(最低)—— 覆盖正确性、安全性、性能、可维护性、测试覆盖率
|
|
225
|
+
|
|
226
|
+
MVP 版本仅启用 2-4 层(无 CLI 故无 `--rule` 参数)。同一层中首个匹配的用户规则
|
|
227
|
+
替换内置系统规则。
|
|
228
|
+
|
|
229
|
+
#### `filters`
|
|
230
|
+
|
|
231
|
+
- `exclude`:排除文件的 glob 模式(与内置默认黑名单合并)
|
|
232
|
+
- `include`:包含文件的 glob 模式 —— 存在时仅审查匹配的文件
|
|
149
233
|
|
|
150
|
-
|
|
151
|
-
|
|
234
|
+
#### `rules`
|
|
235
|
+
|
|
236
|
+
`{ "path": "<glob>", "rule": "<文本>" }` 数组。首个匹配生效。`rule` 文本作为
|
|
237
|
+
`prompt_section` 返回,供宿主 LLM 注入审查提示词。
|
|
238
|
+
|
|
239
|
+
### 开发
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
npm install
|
|
243
|
+
npm run build # 编译 TypeScript
|
|
244
|
+
npm test # 运行单元测试
|
|
245
|
+
npm run dev # 监听模式
|
|
246
|
+
```
|
|
152
247
|
|
|
153
|
-
|
|
248
|
+
### 许可证
|
|
154
249
|
|
|
155
250
|
MIT
|
package/dist/bundler.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getDiffForFileOrSynthesize } from "./git.js";
|
|
2
2
|
import { parseFileDiffs } from "./diff-parser.js";
|
|
3
3
|
/** Character cap per bundle (counting diff text only). */
|
|
4
4
|
export const BUNDLE_CHAR_CAP = 20000;
|
|
@@ -98,7 +98,7 @@ function getExt(path) {
|
|
|
98
98
|
*/
|
|
99
99
|
async function buildBundleFile(repo, path, diffRef) {
|
|
100
100
|
try {
|
|
101
|
-
const diff = await
|
|
101
|
+
const diff = await getDiffForFileOrSynthesize(repo, diffRef, path);
|
|
102
102
|
const parsed = parseFileDiffs(diff)[0];
|
|
103
103
|
return {
|
|
104
104
|
path,
|
package/dist/bundler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundler.js","sourceRoot":"","sources":["../src/bundler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"bundler.js","sourceRoot":"","sources":["../src/bundler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff-parser.d.ts","sourceRoot":"","sources":["../src/diff-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAA0B,MAAM,YAAY,CAAC;AAIzE;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAKxD;AAwBD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,CAsCtD;AAoFD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAuD3D;AAwBD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,WAAW,EAAE,CA8B5E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,WAAW,EAAE,EACxB,WAAW,EAAE,MAAM,EAAE,GACpB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"diff-parser.d.ts","sourceRoot":"","sources":["../src/diff-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAA0B,MAAM,YAAY,CAAC;AAIzE;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAKxD;AAwBD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,CAsCtD;AAoFD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAuD3D;AAwBD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,WAAW,EAAE,CA8B5E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,WAAW,EAAE,EACxB,WAAW,EAAE,MAAM,EAAE,GACpB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAyBvC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAU9D"}
|
package/dist/diff-parser.js
CHANGED
|
@@ -283,21 +283,26 @@ export function extractSideLines(hunk, newSide) {
|
|
|
283
283
|
* Mirrors open-code-review's matchConsecutive.
|
|
284
284
|
*/
|
|
285
285
|
export function matchConsecutive(sideLines, targetLines) {
|
|
286
|
-
if (targetLines.length === 0
|
|
286
|
+
if (targetLines.length === 0)
|
|
287
287
|
return null;
|
|
288
|
-
|
|
289
|
-
|
|
288
|
+
// Filter blank lines from side lines so they don't break the sliding-window
|
|
289
|
+
// match (target lines already have blanks stripped by splitAndNormalize).
|
|
290
|
+
// Mirrors matchInFileContent's blank-line skipping.
|
|
291
|
+
const nonBlank = sideLines.filter((l) => l.content !== "");
|
|
292
|
+
if (nonBlank.length < targetLines.length)
|
|
293
|
+
return null;
|
|
294
|
+
for (let i = 0; i <= nonBlank.length - targetLines.length; i++) {
|
|
290
295
|
let matched = true;
|
|
291
296
|
for (let j = 0; j < targetLines.length; j++) {
|
|
292
|
-
if (
|
|
297
|
+
if (nonBlank[i + j].content !== targetLines[j]) {
|
|
293
298
|
matched = false;
|
|
294
299
|
break;
|
|
295
300
|
}
|
|
296
301
|
}
|
|
297
302
|
if (matched) {
|
|
298
303
|
return {
|
|
299
|
-
start:
|
|
300
|
-
end:
|
|
304
|
+
start: nonBlank[i].lineNum,
|
|
305
|
+
end: nonBlank[i + targetLines.length - 1].lineNum,
|
|
301
306
|
};
|
|
302
307
|
}
|
|
303
308
|
}
|
package/dist/diff-parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff-parser.js","sourceRoot":"","sources":["../src/diff-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGlC,MAAM,cAAc,GAAG,6CAA6C,CAAC;AAErE;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACb,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACjC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,IAAI;SACR,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,KAAe;IACrC,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,EAAE;YAAE,SAAS,CAAC,uDAAuD;QAClF,IAAI,IAAI,CAAC,UAAU,CAAC,8BAA8B,CAAC;YAAE,SAAS;QAC9D,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAAE,MAAM;QAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,gFAAgF;YAChF,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,WAAmB;IAC5C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,IAAI,OAAO,GAAgB,IAAI,CAAC;IAChC,IAAI,YAAY,GAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC;YACN,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;gBAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;YACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,OAAO,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YAChE,YAAY,GAAG,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,IAAI;YAAE,SAAS;QAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,8BAA8B,CAAC;YAAE,SAAS;QAC9D,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACnC,2BAA2B;YAC3B,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,GAAG,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAeD,SAAS,aAAa,CAAC,WAAmB;IACxC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACnC,6EAA6E;YAC7E,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACtD,IAAI,CAAC,EAAE,CAAC;gBACN,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACf,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;gBAC5B,KAAK,GAAG,IAAI,CAAC;gBACb,OAAO,GAAG,EAAE,CAAC;YACf,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;gBAC5B,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO,GAAG,EAAE,CAAC;YACf,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5E,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC7C,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACjD,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC7E,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,oDAAoD;QACpD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,MAAM;IACpC,CAAC;IAED,uGAAuG;IACvG,IAAI,SAAS,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,CAAC;YACN,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACf,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;gBAAE,UAAU,EAAE,CAAC;iBACnC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;gBAAE,SAAS,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAEhC,0DAA0D;IAC1D,MAAM,UAAU,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,KAAK,GAAW,EAAE,CAAC;QAEzB,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAe,EAAE,CAAC;gBAC7B,KAAK,MAAM,OAAO,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;oBAC/B,IAAI,OAAO,KAAK,EAAE;wBAAE,SAAS;oBAC7B,IAAI,OAAO,CAAC,UAAU,CAAC,8BAA8B,CAAC;wBAAE,SAAS;oBACjE,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC3D,CAAC;yBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBACnC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC7D,CAAC;yBAAM,CAAC;wBACN,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;wBACrE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;oBAC3C,CAAC;gBACH,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC;oBACT,QAAQ,EAAE,EAAE,CAAC,QAAQ;oBACrB,QAAQ,EAAE,EAAE,CAAC,QAAQ;oBACrB,QAAQ,EAAE,EAAE,CAAC,QAAQ;oBACrB,QAAQ,EAAE,EAAE,CAAC,QAAQ;oBACrB,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;QAC1C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,SAAS,CAAC,0BAA0B;QAEjE,OAAO,CAAC,IAAI,CAAC;YACX,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,KAAK;YACX,KAAK;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU;YACV,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,OAAO,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAChC,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAaD,MAAM,UAAU,gBAAgB,CAAC,IAAU,EAAE,OAAgB;IAC3D,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC5B,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE5B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,SAAS;gBACZ,MAAM,CAAC,IAAI,CAAC;oBACV,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;oBACpC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;iBAClC,CAAC,CAAC;gBACH,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;gBACV,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACvE,CAAC;gBACD,OAAO,EAAE,CAAC;gBACV,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACvE,CAAC;gBACD,OAAO,EAAE,CAAC;gBACV,MAAM;QACV,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAwB,EACxB,WAAqB;IAErB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChE,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,IAAI,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,OAAO,GAAG,KAAK,CAAC;gBAChB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;gBACL,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO;gBAC3B,GAAG,EAAE,SAAS,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO;aACnD,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;gBAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;gBAAE,OAAO,EAAE,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"diff-parser.js","sourceRoot":"","sources":["../src/diff-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/git.d.ts
CHANGED
|
@@ -45,10 +45,27 @@ export declare function getStatus(repo: string): Promise<StatusEntry[]>;
|
|
|
45
45
|
* List untracked files (not yet `git add`-ed).
|
|
46
46
|
*/
|
|
47
47
|
export declare function getUntrackedFiles(repo: string): Promise<string[]>;
|
|
48
|
+
/**
|
|
49
|
+
* Heuristic binary-content detector for files that have no diff to summarize
|
|
50
|
+
* (e.g. untracked files, where `diffSummary`'s binary flag isn't available).
|
|
51
|
+
* Mirrors git's own "NUL byte in the first 8000 bytes" heuristic.
|
|
52
|
+
*/
|
|
53
|
+
export declare function isLikelyBinaryContent(content: string): boolean;
|
|
48
54
|
/**
|
|
49
55
|
* Synthesize a full-file-add diff for an untracked file,
|
|
50
56
|
* equivalent to `git diff --no-index /dev/null <file>`.
|
|
51
57
|
* Reads the file content and wraps it in a unified diff with all lines added.
|
|
58
|
+
* Returns an empty string for binary content (nothing meaningful to diff).
|
|
52
59
|
*/
|
|
53
60
|
export declare function synthesizeUntrackedDiff(repo: string, path: string): Promise<string>;
|
|
61
|
+
/**
|
|
62
|
+
* Get the diff for a single file at a ref, falling back to a synthesized
|
|
63
|
+
* full-file-add diff when the file is untracked.
|
|
64
|
+
*
|
|
65
|
+
* `git diff <ref> -- <path>` returns an empty string both for "file untracked"
|
|
66
|
+
* and for "file unchanged in this ref range" — those are different situations
|
|
67
|
+
* and must not be conflated. This helper disambiguates by explicitly checking
|
|
68
|
+
* `git status` rather than assuming emptiness means "untracked".
|
|
69
|
+
*/
|
|
70
|
+
export declare function getDiffForFileOrSynthesize(repo: string, ref: string, path: string): Promise<string>;
|
|
54
71
|
//# sourceMappingURL=git.d.ts.map
|
package/dist/git.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAEjD;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGxE;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,eAAe,EAAE,CAAC,CAS5B;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAcpE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAIvE;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAEjD;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGxE;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,eAAe,EAAE,CAAC,CAS5B;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAcpE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAIvE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAG9D;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAQjB"}
|
package/dist/git.js
CHANGED
|
@@ -78,10 +78,20 @@ export async function getUntrackedFiles(repo) {
|
|
|
78
78
|
const status = await git.status();
|
|
79
79
|
return status.not_added;
|
|
80
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Heuristic binary-content detector for files that have no diff to summarize
|
|
83
|
+
* (e.g. untracked files, where `diffSummary`'s binary flag isn't available).
|
|
84
|
+
* Mirrors git's own "NUL byte in the first 8000 bytes" heuristic.
|
|
85
|
+
*/
|
|
86
|
+
export function isLikelyBinaryContent(content) {
|
|
87
|
+
const sample = content.slice(0, 8000);
|
|
88
|
+
return sample.includes("\u0000");
|
|
89
|
+
}
|
|
81
90
|
/**
|
|
82
91
|
* Synthesize a full-file-add diff for an untracked file,
|
|
83
92
|
* equivalent to `git diff --no-index /dev/null <file>`.
|
|
84
93
|
* Reads the file content and wraps it in a unified diff with all lines added.
|
|
94
|
+
* Returns an empty string for binary content (nothing meaningful to diff).
|
|
85
95
|
*/
|
|
86
96
|
export async function synthesizeUntrackedDiff(repo, path) {
|
|
87
97
|
let content;
|
|
@@ -92,6 +102,8 @@ export async function synthesizeUntrackedDiff(repo, path) {
|
|
|
92
102
|
// File unreadable: return empty diff.
|
|
93
103
|
return "";
|
|
94
104
|
}
|
|
105
|
+
if (isLikelyBinaryContent(content))
|
|
106
|
+
return "";
|
|
95
107
|
const lines = content.split("\n");
|
|
96
108
|
// Drop trailing empty line from the final newline.
|
|
97
109
|
if (lines.length > 0 && lines[lines.length - 1] === "") {
|
|
@@ -108,4 +120,23 @@ export async function synthesizeUntrackedDiff(repo, path) {
|
|
|
108
120
|
const diff = lines.length > 0 ? `${header}\n${body}\n` : `${header}\n`;
|
|
109
121
|
return diff;
|
|
110
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Get the diff for a single file at a ref, falling back to a synthesized
|
|
125
|
+
* full-file-add diff when the file is untracked.
|
|
126
|
+
*
|
|
127
|
+
* `git diff <ref> -- <path>` returns an empty string both for "file untracked"
|
|
128
|
+
* and for "file unchanged in this ref range" — those are different situations
|
|
129
|
+
* and must not be conflated. This helper disambiguates by explicitly checking
|
|
130
|
+
* `git status` rather than assuming emptiness means "untracked".
|
|
131
|
+
*/
|
|
132
|
+
export async function getDiffForFileOrSynthesize(repo, ref, path) {
|
|
133
|
+
const diff = await getDiffForFile(repo, ref, path);
|
|
134
|
+
if (diff)
|
|
135
|
+
return diff;
|
|
136
|
+
const untracked = await getUntrackedFiles(repo);
|
|
137
|
+
if (untracked.includes(path)) {
|
|
138
|
+
return synthesizeUntrackedDiff(repo, path);
|
|
139
|
+
}
|
|
140
|
+
return "";
|
|
141
|
+
}
|
|
111
142
|
//# sourceMappingURL=git.js.map
|
package/dist/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9,11 +9,100 @@ import { bundleFiles } from "./bundler.js";
|
|
|
9
9
|
import { matchRules } from "./rules.js";
|
|
10
10
|
import { positionComment } from "./position.js";
|
|
11
11
|
import { reflectComment } from "./reflect.js";
|
|
12
|
+
import * as fs from "fs";
|
|
13
|
+
import * as path from "path";
|
|
14
|
+
import { fileURLToPath } from "url";
|
|
15
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
16
|
+
const MCP_CONFIG_ENTRY = {
|
|
17
|
+
command: "npx",
|
|
18
|
+
args: ["-y", "@shareworker/code-review-mcp"],
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* `setup` subcommand: one-command install.
|
|
22
|
+
* Detects which agents are present in the project, writes MCP config entries,
|
|
23
|
+
* and copies the skill file. Creates agent directories if they don't exist yet.
|
|
24
|
+
*
|
|
25
|
+
* Usage: npx @shareworker/code-review-mcp setup
|
|
26
|
+
* npx @shareworker/code-review-mcp setup --agent claude
|
|
27
|
+
*/
|
|
28
|
+
function setup() {
|
|
29
|
+
const skillSrc = path.join(__dirname, "..", "skills", "code-review", "SKILL.md");
|
|
30
|
+
if (!fs.existsSync(skillSrc)) {
|
|
31
|
+
console.error(`Skill source not found: ${skillSrc}`);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
const skillContent = fs.readFileSync(skillSrc, "utf-8");
|
|
35
|
+
// Parse --agent flag (optional). If not given, detect all.
|
|
36
|
+
const agentIdx = process.argv.indexOf("--agent");
|
|
37
|
+
const agentFlag = agentIdx !== -1 && agentIdx + 1 < process.argv.length
|
|
38
|
+
? process.argv[agentIdx + 1]
|
|
39
|
+
: null;
|
|
40
|
+
if (agentIdx !== -1 && !agentFlag) {
|
|
41
|
+
console.error("--agent requires a value (claude, devin, or codex)");
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
const agents = [
|
|
45
|
+
{ name: "claude", dir: ".claude", configFile: ".claude/mcp.json", skillDir: ".claude/skills/code-review" },
|
|
46
|
+
{ name: "devin", dir: ".devin", configFile: ".devin/config.json", skillDir: ".devin/skills/code-review" },
|
|
47
|
+
{ name: "codex", dir: ".codex", configFile: ".codex/config.json", skillDir: ".codex/skills/code-review" },
|
|
48
|
+
];
|
|
49
|
+
const selected = agentFlag
|
|
50
|
+
? agents.filter((a) => a.name === agentFlag)
|
|
51
|
+
: agents.filter((a) => fs.existsSync(a.dir));
|
|
52
|
+
// If no agent dirs exist, default to all three (user can pick later).
|
|
53
|
+
if (selected.length === 0 && !agentFlag) {
|
|
54
|
+
console.log("No agent directories detected. Setting up for all supported agents.");
|
|
55
|
+
selected.push(...agents);
|
|
56
|
+
}
|
|
57
|
+
if (selected.length === 0 && agentFlag) {
|
|
58
|
+
console.error(`Unknown agent: ${agentFlag}. Supported: claude, devin, codex`);
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
for (const agent of selected) {
|
|
62
|
+
// 1. Write MCP config (merge into existing).
|
|
63
|
+
fs.mkdirSync(path.dirname(agent.configFile), { recursive: true });
|
|
64
|
+
let config = {};
|
|
65
|
+
if (fs.existsSync(agent.configFile)) {
|
|
66
|
+
try {
|
|
67
|
+
config = JSON.parse(fs.readFileSync(agent.configFile, "utf-8"));
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
console.warn(`Warning: ${agent.configFile} is unparseable, overwriting.`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (!config.mcpServers || typeof config.mcpServers !== "object") {
|
|
74
|
+
if (config.mcpServers) {
|
|
75
|
+
console.warn(`Warning: ${agent.configFile} has invalid mcpServers field. Resetting.`);
|
|
76
|
+
}
|
|
77
|
+
config.mcpServers = {};
|
|
78
|
+
}
|
|
79
|
+
config.mcpServers["code-review"] = { ...MCP_CONFIG_ENTRY };
|
|
80
|
+
fs.writeFileSync(agent.configFile, JSON.stringify(config, null, 2) + "\n", "utf-8");
|
|
81
|
+
console.log(`[${agent.name}] MCP config written to ${agent.configFile}`);
|
|
82
|
+
// 2. Copy skill.
|
|
83
|
+
try {
|
|
84
|
+
fs.mkdirSync(agent.skillDir, { recursive: true });
|
|
85
|
+
fs.writeFileSync(path.join(agent.skillDir, "SKILL.md"), skillContent, "utf-8");
|
|
86
|
+
console.log(`[${agent.name}] Skill installed to ${agent.skillDir}/SKILL.md`);
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
console.error(`[${agent.name}] Failed to install skill: ${err?.message ?? err}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
console.log(`\nDone! Configured ${selected.length} agent(s): ${selected.map((a) => a.name).join(", ")}`);
|
|
93
|
+
console.log("Restart your agent to pick up the new MCP server.");
|
|
94
|
+
}
|
|
95
|
+
// Handle subcommands before starting the MCP server.
|
|
96
|
+
const subcommand = process.argv[2];
|
|
97
|
+
if (subcommand === "setup" || subcommand === "install-skill") {
|
|
98
|
+
setup();
|
|
99
|
+
process.exit(0);
|
|
100
|
+
}
|
|
12
101
|
/**
|
|
13
102
|
* Create and start the MCP server with 5 tools.
|
|
14
103
|
*/
|
|
15
104
|
async function main() {
|
|
16
|
-
const server = new Server({ name: "code-review-mcp", version: "0.1.
|
|
105
|
+
const server = new Server({ name: "code-review-mcp", version: "0.1.2" }, { capabilities: { tools: {} } });
|
|
17
106
|
// --- Tool definitions ---
|
|
18
107
|
server.setRequestHandler(ListToolsRequestSchema, () => ({
|
|
19
108
|
tools: [
|
|
@@ -170,9 +259,11 @@ async function handleGetReviewTargets(args, repo) {
|
|
|
170
259
|
else {
|
|
171
260
|
throw new Error(`Invalid mode: ${mode}. Use workspace, range, or commit.`);
|
|
172
261
|
}
|
|
173
|
-
// Parse diffs to get file list
|
|
262
|
+
// Parse diffs to get file list, skipping binary files (per design: binary
|
|
263
|
+
// files are not reviewable content and must not reach the host).
|
|
174
264
|
const fileDiffs = parseFileDiffs(diffText);
|
|
175
265
|
const allPaths = fileDiffs
|
|
266
|
+
.filter((d) => !d.isBinary)
|
|
176
267
|
.map((d) => d.newPath || d.oldPath)
|
|
177
268
|
.filter((p) => p && !p.includes("/dev/null"));
|
|
178
269
|
// Apply filtering.
|