@renfeng/ai-code-review 1.1.0 → 1.2.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
@@ -1,71 +1,57 @@
1
1
  # AI Code Review
2
2
 
3
- A [Kiro power](https://kiro.dev/docs/powers/) for AI-assisted code review automation with reusable skills.
3
+ A Kiro workspace for AI-assisted code review automation skills, a custom agent, and a power backed by two MCP servers.
4
4
 
5
5
  ## What's Included
6
6
 
7
- ### Power: `code-review`
7
+ ### Skills (auto-registered)
8
8
 
9
- Two MCP servers from the `ai-code-review` npm package:
9
+ | Skill | Description |
10
+ |-------|-------------|
11
+ | `code-change-review` | Platform-agnostic diff analysis. Traces callers, types, imports, tests. Produces structured findings JSON. |
12
+ | `gitlab-mr-review` | End-to-end GitLab MR review. Clones, analyzes, posts draft notes, publishes with verdict. Supports batch reviews. |
13
+ | `gitlab-todo-triage` | GitLab todo list cleanup. Marks merged/closed/draft MRs as done, delegates open MRs for review. |
14
+
15
+ ### Agent (auto-registered)
16
+
17
+ `Code Change Reviewer` — subagent used by `gitlab-mr-review` for code analysis. Reads diffs in full codebase context and produces structured findings.
18
+
19
+ ### Power (manual import)
20
+
21
+ `code-review` — two MCP servers from the `@renfeng/ai-code-review` npm package:
10
22
  - `git` — platform-agnostic git operations (clone, diff, show, log, grep)
11
23
  - `gitlab` — GitLab API tools (MR metadata, draft notes, publish, todos)
12
24
 
13
- ### Skills
14
-
15
- | Skill | Description | Install URL |
16
- |-------|-------------|-------------|
17
- | `code-change-review` | Platform-agnostic diff analysis. Traces callers, types, imports, tests. Produces structured findings JSON. | [`.kiro/skills/code-change-review`](.kiro/skills/code-change-review) |
18
- | `gitlab-mr-review` | End-to-end GitLab MR review. Clones, analyzes, posts draft notes, publishes with verdict. Supports batch reviews. | [`.kiro/skills/gitlab-mr-review`](.kiro/skills/gitlab-mr-review) |
19
- | `gitlab-todo-triage` | GitLab todo list cleanup. Marks merged/closed/draft MRs as done, delegates open MRs for review. | [`.kiro/skills/gitlab-todo-triage`](.kiro/skills/gitlab-todo-triage) |
25
+ ## Usage
20
26
 
21
- ## Installation
27
+ ### 1. Add as a workspace folder
22
28
 
23
- ### Power
29
+ Add this repo to your `.code-workspace` file:
24
30
 
25
- In Kiro: Powers panel → Add power from GitHub → paste this repo URL.
31
+ ```json
32
+ {
33
+ "folders": [
34
+ { "name": "ai-code-review", "path": "../path/to/ai-code-review" }
35
+ ]
36
+ }
37
+ ```
26
38
 
27
- Or for local development: Powers panel Add power from Local Path → select this directory.
39
+ This auto-registers the skills and the `Code Change Reviewer` agent.
28
40
 
29
- ### Skills
41
+ ### 2. Install the power
30
42
 
31
- Each skill can be imported independently:
43
+ The power provides the MCP servers that the skills depend on.
32
44
 
33
- In Kiro: Agent Steering & Skills `+` Import a skillGitHub paste the skill subdirectory URL:
45
+ In Kiro: Powers panelAdd power from Local Pathselect `.kiro/powers/code-review/` within this repo.
34
46
 
35
- - [code-change-review](.kiro/skills/code-change-review)
36
- - [gitlab-mr-review](.kiro/skills/gitlab-mr-review)
37
- - [gitlab-todo-triage](.kiro/skills/gitlab-todo-triage)
47
+ To update the power after pulling new changes: reinstall from the same path.
38
48
 
39
49
  ## Prerequisites
40
50
 
41
51
  - Node.js 18+ (for `npx` to run the MCP servers)
42
- - GitLab authentication via one of: `GITLAB_TOKEN` + `GITLAB_URL` env vars in `mcp.json`, or `glab` CLI (`glab auth login`)
52
+ - GitLab authentication via one of: `GITLAB_TOKEN` + `GITLAB_URL` env vars in the power's `mcp.json`, or `glab` CLI (`glab auth login`)
43
53
  - SSH keys configured for git clone operations
44
54
 
45
- ## MCP Server Configuration
46
-
47
- The power uses `npx @renfeng/ai-code-review@latest` to run the MCP servers. After installing the power, the servers are configured automatically:
48
-
49
- ```json
50
- {
51
- "mcpServers": {
52
- "git": {
53
- "command": "npx",
54
- "args": ["-y", "@renfeng/ai-code-review@latest", "git"]
55
- },
56
- "gitlab": {
57
- "command": "npx",
58
- "args": ["-y", "@renfeng/ai-code-review@latest", "gitlab"],
59
- "env": {}
60
- }
61
- }
62
- }
63
- ```
64
-
65
- ## Agent Setup
66
-
67
- The `gitlab-mr-review` skill delegates code analysis to a `Code Change Reviewer` subagent. The skill automatically creates the agent on first use via `custom-agent-creator`, using the definition in [`.kiro/skills/gitlab-mr-review/references/code-change-reviewer-agent.md`](.kiro/skills/gitlab-mr-review/references/code-change-reviewer-agent.md).
68
-
69
55
  ## Troubleshooting
70
56
 
71
57
  ### 401 "Token is expired" when using glab OAuth
@@ -74,22 +60,10 @@ The `gitlab` MCP server reads the token from the `glab` config file but does not
74
60
 
75
61
  Fix: run `glab auth status` — this silently refreshes the OAuth token and writes it to disk. The MCP server picks up the new token on the next call, no restart needed.
76
62
 
77
- ### Power update fails: "No name was provided for author"
78
-
79
- When installed from GitHub, Kiro clones the power repo to `~/.kiro/powers/repos/ai-code-review/` and periodically pulls updates. The pull mechanism does not read the global `~/.gitconfig` — only the repo-level `.git/config`. If `user.name` is missing there, the pull fails.
80
-
81
- Fix:
82
-
83
- ```bash
84
- git -C ~/.kiro/powers/repos/ai-code-review config user.name "your-name"
85
- ```
86
-
87
- This does not apply to local-path installations. See [kirodotdev/Kiro#6278](https://github.com/kirodotdev/Kiro/issues/6278).
88
-
89
63
  ## Contributing
90
64
 
91
- See [CONTRIBUTING.md](CONTRIBUTING.md). If this project helps you, share your experience — what worked, what could be better.
65
+ See [CONTRIBUTING.md](CONTRIBUTING.md).
92
66
 
93
67
  ## License
94
68
 
95
- MIT
69
+ MIT
@@ -1 +1 @@
1
- {"version":3,"file":"git-server.d.ts","sourceRoot":"","sources":["../../src/servers/git-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,MAAM,CAAS;;IAcvB,OAAO,CAAC,aAAa;YAoBP,cAAc;IAmBtB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAMpB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAKhC"}
1
+ {"version":3,"file":"git-server.d.ts","sourceRoot":"","sources":["../../src/servers/git-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,MAAM,CAAS;;IAcvB,OAAO,CAAC,aAAa;YAoBP,cAAc;IAkBtB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAMpB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAKhC"}
@@ -54,7 +54,6 @@ export class GitMCPServer {
54
54
  case "git_show": return this.gitToolsService.show(params);
55
55
  case "git_log": return this.gitToolsService.log(params);
56
56
  case "git_cleanup": return this.gitToolsService.cleanup(params);
57
- case "write_file": return this.gitToolsService.writeFile(params);
58
57
  case "git_grep": return this.gitToolsService.grep(params);
59
58
  default: throw ErrorHandler.validationError(`Unknown tool: ${name}`, { tool: name });
60
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"git-server.js","sourceRoot":"","sources":["../../src/servers/git-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-server.js","sourceRoot":"","sources":["../../src/servers/git-server.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@
7
7
  export declare class GitLabMCPServer {
8
8
  private server;
9
9
  private reviewToolsService;
10
+ private gitToolsService;
10
11
  private logger;
11
12
  constructor();
12
13
  private setupHandlers;
@@ -1 +1 @@
1
- {"version":3,"file":"gitlab-server.d.ts","sourceRoot":"","sources":["../../src/servers/gitlab-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqBH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,MAAM,CAAS;;IAcvB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,YAAY;YAkCN,cAAc;IAmCtB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAMpB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAKhC"}
1
+ {"version":3,"file":"gitlab-server.d.ts","sourceRoot":"","sources":["../../src/servers/gitlab-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2BH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,MAAM,CAAS;;IAevB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,YAAY;YAkCN,cAAc;IAmDtB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAMpB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAKhC"}
@@ -9,18 +9,21 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
9
9
  import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
10
10
  import { REVIEW_TOOLS } from "../tools/gitlab-tools.js";
11
11
  import { ReviewToolsService } from "../services/review-tools.service.js";
12
+ import { GitToolsService } from "../services/git-tools.service.js";
12
13
  import { loadGlabConfig } from "../config/glab-config.loader.js";
13
14
  import { Logger } from "../logging/logger.service.js";
14
15
  import { ErrorHandler } from "../errors/error-handler.js";
15
16
  export class GitLabMCPServer {
16
17
  server;
17
18
  reviewToolsService;
19
+ gitToolsService;
18
20
  logger;
19
21
  constructor() {
20
22
  const logLevel = Logger.parseLogLevel(process.env.LOG_LEVEL || 'info');
21
23
  this.logger = new Logger('GitLabServer', logLevel);
22
24
  this.server = new Server({ name: "ai-code-review-gitlab", version: "1.0.0" }, { capabilities: { tools: {} } });
23
25
  this.reviewToolsService = new ReviewToolsService(this.logger.child('ReviewTools'));
26
+ this.gitToolsService = new GitToolsService(this.logger.child('GitTools'));
24
27
  this.setupHandlers();
25
28
  this.logger.info('GitLab MCP Server initialized');
26
29
  }
@@ -72,6 +75,16 @@ export class GitLabMCPServer {
72
75
  }
73
76
  async handleToolCall(name, args) {
74
77
  const params = args;
78
+ // Tools that operate on local git repos — no GitLab token needed
79
+ switch (name) {
80
+ case "resolve_anchors":
81
+ return this.gitToolsService.resolveAnchors(params);
82
+ case "check_draft_staleness":
83
+ return this.gitToolsService.checkDraftStaleness(params);
84
+ case "compile_checklist":
85
+ return this.gitToolsService.compileChecklist(params);
86
+ }
87
+ // All remaining tools require GitLab API access
75
88
  const gitlabUrl = typeof params.gitlabUrl === 'string' ? params.gitlabUrl : undefined;
76
89
  if (!gitlabUrl) {
77
90
  throw ErrorHandler.validationError("gitlabUrl is required. Provide the GitLab instance URL (e.g. 'https://gitlab.example.com') so the correct token can be resolved from glab CLI config.", { tool: name });
@@ -84,12 +97,16 @@ export class GitLabMCPServer {
84
97
  return this.reviewToolsService.extractVersionRefs(params, gitlabUrl, token);
85
98
  case "extract_prior_discussions":
86
99
  return this.reviewToolsService.extractPriorDiscussions(params, gitlabUrl, token);
100
+ case "extract_draft_notes":
101
+ return this.reviewToolsService.extractDraftNotes(params, gitlabUrl, token);
87
102
  case "post_draft_notes":
88
103
  return this.reviewToolsService.postDraftNotes(params, gitlabUrl, token);
89
104
  case "delete_draft_notes":
90
105
  return this.reviewToolsService.deleteDraftNotes(params, gitlabUrl, token);
91
106
  case "publish_review":
92
107
  return this.reviewToolsService.publishReview(params, gitlabUrl, token);
108
+ case "post_comment":
109
+ return this.reviewToolsService.postComment(params, gitlabUrl, token);
93
110
  case "fetch_and_categorize_todos":
94
111
  return this.reviewToolsService.fetchAndCategorizeTodos(params, gitlabUrl, token);
95
112
  case "mark_todos_done":
@@ -1 +1 @@
1
- {"version":3,"file":"gitlab-server.js","sourceRoot":"","sources":["../../src/servers/gitlab-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gitlab-server.js","sourceRoot":"","sources":["../../src/servers/gitlab-server.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,11 @@
1
1
  /**
2
2
  * Git Tools Service
3
3
  *
4
- * Provides local git operations as MCP tools, eliminating the need for
5
- * shell commands that are prone to terminal hang issues (Kiro #4132).
6
- *
7
- * Uses simple-git for all git operations.
4
+ * Thin 1-to-1 wrapper over the git CLI using child_process.execFile.
5
+ * No third-party git libraries requires git to be installed.
8
6
  */
9
7
  import { Logger } from '../logging/logger.service.js';
8
+ import type { ResolveAnchorsParams, CheckDraftStalenessParams, CompileChecklistParams, DraftStalenessResult } from '../types.js';
10
9
  export interface GitCloneParams {
11
10
  url: string;
12
11
  directory: string;
@@ -49,10 +48,6 @@ export interface GitLogParams {
49
48
  export interface GitCleanupParams {
50
49
  directory: string;
51
50
  }
52
- export interface WriteFileParams {
53
- filePath: string;
54
- content: string;
55
- }
56
51
  export interface GitGrepParams {
57
52
  repoDir: string;
58
53
  pattern: string;
@@ -67,7 +62,6 @@ export interface GitResetParams {
67
62
  export declare class GitToolsService {
68
63
  private logger;
69
64
  constructor(logger?: Logger);
70
- private git;
71
65
  clone(params: GitCloneParams): Promise<{
72
66
  directory: string;
73
67
  }>;
@@ -100,12 +94,42 @@ export declare class GitToolsService {
100
94
  cleanup(params: GitCleanupParams): Promise<{
101
95
  removed: boolean;
102
96
  }>;
103
- writeFile(params: WriteFileParams): Promise<{
104
- written: boolean;
105
- }>;
106
97
  grep(params: GitGrepParams): Promise<{
107
98
  results: string;
108
99
  matchCount: number;
109
100
  }>;
101
+ /**
102
+ * Resolve anchor-based findings to line numbers by parsing the diff.
103
+ *
104
+ * Each finding has a file, hunk header, and anchor (line content).
105
+ * This method finds the anchor in the diff and sets the line number.
106
+ */
107
+ resolveAnchors(params: ResolveAnchorsParams): Promise<{
108
+ resolved: number;
109
+ fallbackToGeneral: number;
110
+ total: number;
111
+ }>;
112
+ /**
113
+ * Check which draft notes are stale by comparing their target line
114
+ * against the current file content on HEAD.
115
+ */
116
+ checkDraftStaleness(params: CheckDraftStalenessParams): Promise<{
117
+ results: DraftStalenessResult[];
118
+ staleCount: number;
119
+ freshCount: number;
120
+ }>;
121
+ /**
122
+ * Compile non-blocking findings into a markdown checklist with file links.
123
+ */
124
+ compileChecklist(params: CompileChecklistParams): Promise<{
125
+ markdown: string;
126
+ itemCount: number;
127
+ }>;
128
+ private getFileDiff;
129
+ private getFileLines;
130
+ private resolveAnchorInDiff;
131
+ private parseHunks;
132
+ private findMatchingHunk;
133
+ private findAnchorInHunk;
110
134
  }
111
135
  //# sourceMappingURL=git-tools.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-tools.service.d.ts","sourceRoot":"","sources":["../../src/services/git-tools.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-tools.service.d.ts","sourceRoot":"","sources":["../../src/services/git-tools.service.ts"],"names":[],"mappings":"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"}