agent-feedbacker 0.1.0 → 0.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/.claude-plugin/plugin.json +1 -1
- package/README.md +12 -4
- package/bin/feedbacker.mjs +8 -1
- package/hooks/hooks.json +13 -0
- package/package.json +2 -1
- package/skills/review/SKILL.md +1 -3
- package/src/baseline.mjs +122 -0
- package/src/core.mjs +24 -6
- package/src/dist/app.css +1 -1
- package/src/dist/app.js +14 -14
- package/src/mcp.mjs +5 -2
package/src/mcp.mjs
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
// Minimal MCP server over stdio (newline-delimited JSON-RPC 2.0) with one tool,
|
|
2
2
|
// request_review, which blocks until the user submits the review page.
|
|
3
3
|
|
|
4
|
+
import fs from 'node:fs';
|
|
4
5
|
import readline from 'node:readline';
|
|
5
6
|
import { buildReview, hasChanges, startReview, toMarkdown } from './core.mjs';
|
|
6
7
|
|
|
7
|
-
const VERSION = '
|
|
8
|
+
const { version: VERSION } = JSON.parse(fs.readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
|
|
8
9
|
const PROTOCOL = '2025-06-18';
|
|
9
10
|
|
|
10
11
|
const TOOL = {
|
|
@@ -28,6 +29,8 @@ const TOOL = {
|
|
|
28
29
|
properties: {
|
|
29
30
|
path: { type: 'string', description: 'Absolute path to the repo (or any folder inside it).' },
|
|
30
31
|
base: { type: 'string', description: 'Commit, branch or tag to diff against. Default HEAD (uncommitted changes only). With a branch, the diff starts where HEAD forked from it, like a merge request.' },
|
|
32
|
+
exact: { type: 'boolean', description: 'Diff against base itself, not the point where HEAD forked from it. Set by the session-baseline hook; rarely needed by hand.' },
|
|
33
|
+
session: { type: 'boolean', description: 'Set by the session-baseline hook: base is where the repo stood when this session started.' },
|
|
31
34
|
worktrees: { type: 'boolean', description: 'Also review every other git worktree of this repo (e.g. parallel agents\' work), each against the same base.' },
|
|
32
35
|
},
|
|
33
36
|
required: ['path'],
|
|
@@ -59,7 +62,7 @@ async function callTool(id, params) {
|
|
|
59
62
|
return toolError('`repos` must be a non-empty array of { path, base? }.');
|
|
60
63
|
}
|
|
61
64
|
const review = buildReview({
|
|
62
|
-
repos: args.repos.map((r) => (typeof r === 'string' ? r : { path: r.path, base: r.base, worktrees: r.worktrees })),
|
|
65
|
+
repos: args.repos.map((r) => (typeof r === 'string' ? r : { path: r.path, base: r.base, worktrees: r.worktrees, exact: r.exact, session: r.session })),
|
|
63
66
|
summary: args.summary || '',
|
|
64
67
|
questions: Array.isArray(args.questions) ? args.questions.map(String) : [],
|
|
65
68
|
});
|