@zephyrdeng/pi-review 0.17.3 → 0.18.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 +6 -0
- package/README.zh-CN.md +6 -0
- package/dist/args.d.ts.map +1 -1
- package/dist/args.js +4 -0
- package/dist/args.js.map +1 -1
- package/dist/args.test.js +5 -0
- package/dist/args.test.js.map +1 -1
- package/dist/panel.d.ts +5 -0
- package/dist/panel.d.ts.map +1 -1
- package/dist/panel.js +25 -13
- package/dist/panel.js.map +1 -1
- package/dist/review.d.ts +20 -0
- package/dist/review.d.ts.map +1 -1
- package/dist/review.js +50 -1
- package/dist/review.js.map +1 -1
- package/dist/rules-argv.test.d.ts +2 -0
- package/dist/rules-argv.test.d.ts.map +1 -0
- package/dist/rules-argv.test.js +69 -0
- package/dist/rules-argv.test.js.map +1 -0
- package/dist/rules-extension.d.ts +3 -0
- package/dist/rules-extension.d.ts.map +1 -0
- package/dist/rules-extension.js +68 -0
- package/dist/rules-extension.js.map +1 -0
- package/dist/rules.d.ts +39 -0
- package/dist/rules.d.ts.map +1 -0
- package/dist/rules.js +374 -0
- package/dist/rules.js.map +1 -0
- package/dist/rules.test.d.ts +2 -0
- package/dist/rules.test.d.ts.map +1 -0
- package/dist/rules.test.js +266 -0
- package/dist/rules.test.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/skills/pi-review/SKILL.md +7 -1
- package/dist/extensions/review.d.ts +0 -2
- package/dist/extensions/review.js +0 -22
- package/dist/extensions/rv-prompts.d.ts +0 -19
- package/dist/extensions/rv-prompts.js +0 -132
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { test } from "vitest";
|
|
6
|
+
import claudeRules from "./rules-extension.js";
|
|
7
|
+
import { compileGlob, discoverRules, expandBraces, findMarkdownFiles, parseRuleFile, ruleMatchesFile, splitTopLevelCommas, } from "./rules.js";
|
|
8
|
+
function matches(pattern, file) {
|
|
9
|
+
const re = compileGlob(pattern);
|
|
10
|
+
return re !== null && re.test(file);
|
|
11
|
+
}
|
|
12
|
+
test("glob: documented examples", () => {
|
|
13
|
+
assert.ok(matches("**/*.ts", "src/api/handler.ts"));
|
|
14
|
+
assert.ok(matches("**/*.ts", "lib/util.ts"));
|
|
15
|
+
assert.ok(matches("**/*.ts", "a.ts"));
|
|
16
|
+
assert.ok(!matches("**/*.ts", "a.tsx"));
|
|
17
|
+
assert.ok(matches("src/**/*", "src/api/handler.ts"));
|
|
18
|
+
assert.ok(matches("src/**/*", "src/a.ts"));
|
|
19
|
+
assert.ok(!matches("src/**/*", "lib/a.ts"));
|
|
20
|
+
assert.ok(matches("*.md", "README.md"));
|
|
21
|
+
assert.ok(!matches("*.md", "docs/README.md"));
|
|
22
|
+
assert.ok(matches("src/components/*.tsx", "src/components/Button.tsx"));
|
|
23
|
+
assert.ok(!matches("src/components/*.tsx", "src/components/nested/Button.tsx"));
|
|
24
|
+
assert.ok(matches("src/**/*.{ts,tsx}", "src/a/b.tsx"));
|
|
25
|
+
assert.ok(matches("src/**/*.{ts,tsx}", "src/b.ts"));
|
|
26
|
+
assert.ok(!matches("src/**/*.{ts,tsx}", "src/b.js"));
|
|
27
|
+
});
|
|
28
|
+
test("glob: ** boundaries, ? and bracket expressions", () => {
|
|
29
|
+
assert.ok(matches("src/**", "src/deep/nested/file.ts"));
|
|
30
|
+
assert.ok(matches("a?c.md", "abc.md"));
|
|
31
|
+
assert.ok(!matches("a?c.md", "abbc.md"));
|
|
32
|
+
assert.ok(matches("file[0-9].md", "file1.md"));
|
|
33
|
+
assert.ok(!matches("file[0-9].md", "fileA.md"));
|
|
34
|
+
assert.ok(matches("file[!0-9].md", "fileA.md"));
|
|
35
|
+
});
|
|
36
|
+
test("glob: invalid bracket expression matches nothing (v2.1.207)", () => {
|
|
37
|
+
assert.equal(compileGlob("photos [2024/**"), null);
|
|
38
|
+
assert.equal(compileGlob("foo[.md"), null);
|
|
39
|
+
});
|
|
40
|
+
test("glob: escaped [ matches literally", () => {
|
|
41
|
+
assert.ok(matches("photos \\[2024/**", "photos [2024/img.png"));
|
|
42
|
+
});
|
|
43
|
+
test("splitTopLevelCommas: commas inside braces are not splits", () => {
|
|
44
|
+
assert.deepEqual(splitTopLevelCommas("src/**/*.{ts,tsx}, docs/**"), [
|
|
45
|
+
"src/**/*.{ts,tsx}",
|
|
46
|
+
"docs/**",
|
|
47
|
+
]);
|
|
48
|
+
});
|
|
49
|
+
test("expandBraces: nested expansion", () => {
|
|
50
|
+
assert.deepEqual(expandBraces("a.{ts,tsx}"), ["a.ts", "a.tsx"]);
|
|
51
|
+
assert.deepEqual(expandBraces("{a,b{1,2}}.md"), ["a.md", "b1.md", "b2.md"]);
|
|
52
|
+
assert.deepEqual(expandBraces("plain.md"), ["plain.md"]);
|
|
53
|
+
});
|
|
54
|
+
test("frontmatter: no frontmatter → unconditional", () => {
|
|
55
|
+
const r = parseRuleFile("# title\n\nbody");
|
|
56
|
+
assert.equal(r.paths, null);
|
|
57
|
+
assert.equal(r.content, "# title\n\nbody");
|
|
58
|
+
});
|
|
59
|
+
test("frontmatter: comma-separated string", () => {
|
|
60
|
+
const r = parseRuleFile('---\npaths: "src/**/*.{ts,tsx}, docs/**"\n---\n\nbody');
|
|
61
|
+
assert.deepEqual(r.paths, ["src/**/*.{ts,tsx}", "docs/**"]);
|
|
62
|
+
assert.equal(r.content, "body");
|
|
63
|
+
});
|
|
64
|
+
test("frontmatter: inline array", () => {
|
|
65
|
+
const r = parseRuleFile('---\npaths: ["src/**", \'lib/**\']\n---\nbody');
|
|
66
|
+
assert.deepEqual(r.paths, ["src/**", "lib/**"]);
|
|
67
|
+
});
|
|
68
|
+
test("frontmatter: YAML block list", () => {
|
|
69
|
+
const r = parseRuleFile("---\npaths:\n - src/**\n - \"lib/**\"\nother: x\n---\nbody");
|
|
70
|
+
assert.deepEqual(r.paths, ["src/**", "lib/**"]);
|
|
71
|
+
assert.equal(r.content, "body");
|
|
72
|
+
});
|
|
73
|
+
test("frontmatter: present but no paths → unconditional, frontmatter stripped", () => {
|
|
74
|
+
const r = parseRuleFile("---\ntitle: x\n---\nbody");
|
|
75
|
+
assert.equal(r.paths, null);
|
|
76
|
+
assert.equal(r.content, "body");
|
|
77
|
+
});
|
|
78
|
+
test("frontmatter: unclosed → whole content", () => {
|
|
79
|
+
const r = parseRuleFile("---\npaths: src/**\nno closing");
|
|
80
|
+
assert.equal(r.paths, null);
|
|
81
|
+
assert.ok(r.content.startsWith("---"));
|
|
82
|
+
});
|
|
83
|
+
test("paths present but all globs invalid → patterns is an empty array", () => {
|
|
84
|
+
const root = fs.mkdtempSync(path.join(os.tmpdir(), "pi-review-rules-"));
|
|
85
|
+
const project = path.join(root, "p");
|
|
86
|
+
fs.mkdirSync(path.join(project, ".claude", "rules"), { recursive: true });
|
|
87
|
+
fs.writeFileSync(path.join(project, ".claude", "rules", "bad.md"), "---\npaths: foo[.md\n---\nrule");
|
|
88
|
+
const rules = discoverRules(project, path.join(root, "no-home"));
|
|
89
|
+
assert.equal(rules.length, 1);
|
|
90
|
+
assert.deepEqual(rules[0].patterns, []);
|
|
91
|
+
assert.equal(ruleMatchesFile(rules[0], path.join(project, "foo.md")), false);
|
|
92
|
+
fs.rmSync(root, { recursive: true, force: true });
|
|
93
|
+
});
|
|
94
|
+
function makeFixture() {
|
|
95
|
+
return fs.mkdtempSync(path.join(os.tmpdir(), "pi-review-rules-"));
|
|
96
|
+
}
|
|
97
|
+
test("discovery: recursive .md, non-md ignored, symlinked dirs and cycle detection", () => {
|
|
98
|
+
const root = makeFixture();
|
|
99
|
+
const rulesDir = path.join(root, ".claude", "rules");
|
|
100
|
+
fs.mkdirSync(path.join(rulesDir, "sub"), { recursive: true });
|
|
101
|
+
fs.writeFileSync(path.join(rulesDir, "a.md"), "A");
|
|
102
|
+
fs.writeFileSync(path.join(rulesDir, "sub", "b.md"), "B");
|
|
103
|
+
fs.writeFileSync(path.join(rulesDir, "ignore.txt"), "x");
|
|
104
|
+
const shared = path.join(root, "shared");
|
|
105
|
+
fs.mkdirSync(shared);
|
|
106
|
+
fs.writeFileSync(path.join(shared, "c.md"), "C");
|
|
107
|
+
fs.symlinkSync(shared, path.join(rulesDir, "linked"));
|
|
108
|
+
fs.symlinkSync(rulesDir, path.join(shared, "loop"));
|
|
109
|
+
const files = findMarkdownFiles(rulesDir).map((f) => path.basename(f)).sort();
|
|
110
|
+
assert.deepEqual(files, ["a.md", "b.md", "c.md"]);
|
|
111
|
+
fs.rmSync(root, { recursive: true, force: true });
|
|
112
|
+
});
|
|
113
|
+
test("discovery: user before project, realpath dedupe, paths compiled", () => {
|
|
114
|
+
const root = makeFixture();
|
|
115
|
+
const home = path.join(root, "home");
|
|
116
|
+
const project = path.join(root, "project");
|
|
117
|
+
fs.mkdirSync(path.join(home, ".claude", "rules"), { recursive: true });
|
|
118
|
+
fs.mkdirSync(path.join(project, ".claude", "rules"), { recursive: true });
|
|
119
|
+
fs.writeFileSync(path.join(home, ".claude", "rules", "global.md"), "G");
|
|
120
|
+
fs.writeFileSync(path.join(project, ".claude", "rules", "ts.md"), "---\npaths: \"**/*.ts\"\n---\nTS rule");
|
|
121
|
+
fs.symlinkSync(path.join(home, ".claude", "rules", "global.md"), path.join(project, ".claude", "rules", "dup.md"));
|
|
122
|
+
const rules = discoverRules(project, home);
|
|
123
|
+
assert.deepEqual(rules.map((r) => [path.basename(r.file), r.scope]), [
|
|
124
|
+
["global.md", "user"],
|
|
125
|
+
["ts.md", "project"],
|
|
126
|
+
]);
|
|
127
|
+
const tsRule = rules[1];
|
|
128
|
+
assert.equal(tsRule.patterns?.length, 1);
|
|
129
|
+
assert.ok(ruleMatchesFile(tsRule, path.join(project, "src", "a.ts")));
|
|
130
|
+
assert.ok(!ruleMatchesFile(tsRule, path.join(project, "src", "a.js")));
|
|
131
|
+
assert.ok(!ruleMatchesFile(tsRule, path.join(root, "elsewhere", "a.ts")));
|
|
132
|
+
fs.rmSync(root, { recursive: true, force: true });
|
|
133
|
+
});
|
|
134
|
+
test("discovery: cwd in a subdirectory still finds the outer project rules", () => {
|
|
135
|
+
const root = makeFixture();
|
|
136
|
+
const project = path.join(root, "proj");
|
|
137
|
+
const sub = path.join(project, "packages", "app");
|
|
138
|
+
fs.mkdirSync(path.join(project, ".claude", "rules"), { recursive: true });
|
|
139
|
+
fs.mkdirSync(sub, { recursive: true });
|
|
140
|
+
fs.writeFileSync(path.join(project, ".claude", "rules", "r.md"), "R");
|
|
141
|
+
const rules = discoverRules(sub, path.join(root, "home-not-exist"));
|
|
142
|
+
assert.equal(rules.length, 1);
|
|
143
|
+
assert.equal(rules[0].scope, "project");
|
|
144
|
+
assert.equal(rules[0].baseDir, project);
|
|
145
|
+
fs.rmSync(root, { recursive: true, force: true });
|
|
146
|
+
});
|
|
147
|
+
test("discovery: nested project scopes are outermost-first, innermost last", () => {
|
|
148
|
+
const root = makeFixture();
|
|
149
|
+
const outer = path.join(root, "outer");
|
|
150
|
+
const inner = path.join(outer, "inner");
|
|
151
|
+
for (const dir of [outer, inner]) {
|
|
152
|
+
fs.mkdirSync(path.join(dir, ".claude", "rules"), { recursive: true });
|
|
153
|
+
fs.writeFileSync(path.join(dir, ".claude", "rules", "r.md"), dir);
|
|
154
|
+
}
|
|
155
|
+
const rules = discoverRules(inner, path.join(root, "no-home"));
|
|
156
|
+
assert.deepEqual(rules.map((r) => r.baseDir), [outer, inner]);
|
|
157
|
+
fs.rmSync(root, { recursive: true, force: true });
|
|
158
|
+
});
|
|
159
|
+
test("matching: reading through a symlink path still hits (v2.1.198)", () => {
|
|
160
|
+
const root = makeFixture();
|
|
161
|
+
const project = path.join(root, "p");
|
|
162
|
+
fs.mkdirSync(path.join(project, "src"), { recursive: true });
|
|
163
|
+
fs.mkdirSync(path.join(project, ".claude", "rules"), { recursive: true });
|
|
164
|
+
fs.writeFileSync(path.join(project, "src", "real.ts"), "");
|
|
165
|
+
fs.writeFileSync(path.join(project, ".claude", "rules", "ts.md"), "---\npaths: src/**/*.ts\n---\nrule");
|
|
166
|
+
fs.symlinkSync(path.join(project, "src", "real.ts"), path.join(project, "alias.ts"));
|
|
167
|
+
const rules = discoverRules(project, path.join(root, "no-home"));
|
|
168
|
+
assert.ok(ruleMatchesFile(rules[0], path.join(project, "alias.ts")));
|
|
169
|
+
fs.rmSync(root, { recursive: true, force: true });
|
|
170
|
+
});
|
|
171
|
+
/** Minimal ExtensionAPI stub capturing the handlers this extension registers. */
|
|
172
|
+
function loadExtension() {
|
|
173
|
+
const handlers = {};
|
|
174
|
+
const pi = {
|
|
175
|
+
on(event, handler) {
|
|
176
|
+
handlers[event] = handler;
|
|
177
|
+
},
|
|
178
|
+
};
|
|
179
|
+
claudeRules(pi);
|
|
180
|
+
return handlers;
|
|
181
|
+
}
|
|
182
|
+
const ctx = (cwd) => ({ cwd });
|
|
183
|
+
/** Point os.homedir() at a temp dir so the developer's real ~/.claude/rules never leaks in. */
|
|
184
|
+
async function withTempHome(fn) {
|
|
185
|
+
const home = fs.mkdtempSync(path.join(os.tmpdir(), "pi-review-home-"));
|
|
186
|
+
const original = os.homedir;
|
|
187
|
+
os.homedir = () => home;
|
|
188
|
+
try {
|
|
189
|
+
await fn();
|
|
190
|
+
}
|
|
191
|
+
finally {
|
|
192
|
+
os.homedir = original;
|
|
193
|
+
fs.rmSync(home, { recursive: true, force: true });
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
function fixture() {
|
|
197
|
+
const project = fs.mkdtempSync(path.join(os.tmpdir(), "pi-review-ext-"));
|
|
198
|
+
fs.mkdirSync(path.join(project, ".claude", "rules"), { recursive: true });
|
|
199
|
+
fs.writeFileSync(path.join(project, ".claude", "rules", "always.md"), "ALWAYS");
|
|
200
|
+
fs.writeFileSync(path.join(project, ".claude", "rules", "ts.md"), "---\npaths: src/**/*.ts\n---\nTS SCOPED");
|
|
201
|
+
return project;
|
|
202
|
+
}
|
|
203
|
+
test("extension appends unconditional rules to the system prompt", async () => {
|
|
204
|
+
await withTempHome(async () => {
|
|
205
|
+
const project = fixture();
|
|
206
|
+
const handlers = loadExtension();
|
|
207
|
+
await handlers.session_start({}, ctx(project));
|
|
208
|
+
const result = await handlers.before_agent_start({ systemPrompt: "BASE", systemPromptOptions: { contextFiles: [] } }, ctx(project));
|
|
209
|
+
assert.ok(result.systemPrompt.startsWith("BASE"));
|
|
210
|
+
assert.match(result.systemPrompt, /# Rules/);
|
|
211
|
+
assert.match(result.systemPrompt, /ALWAYS/);
|
|
212
|
+
assert.ok(!result.systemPrompt.includes("TS SCOPED"), "path-scoped rule must not enter the prompt");
|
|
213
|
+
fs.rmSync(project, { recursive: true, force: true });
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
test("extension dedupes an unconditional rule already loaded as a built-in context file", async () => {
|
|
217
|
+
await withTempHome(async () => {
|
|
218
|
+
const project = fixture();
|
|
219
|
+
const handlers = loadExtension();
|
|
220
|
+
await handlers.session_start({}, ctx(project));
|
|
221
|
+
const ruleFile = path.join(project, ".claude", "rules", "always.md");
|
|
222
|
+
const result = await handlers.before_agent_start({ systemPrompt: "BASE", systemPromptOptions: { contextFiles: [{ path: ruleFile, content: "ALWAYS" }] } }, ctx(project));
|
|
223
|
+
assert.equal(result, undefined, "same realpath must not be injected twice");
|
|
224
|
+
fs.rmSync(project, { recursive: true, force: true });
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
test("extension injects a path-scoped rule into the matching read result exactly once", async () => {
|
|
228
|
+
await withTempHome(async () => {
|
|
229
|
+
const project = fixture();
|
|
230
|
+
fs.mkdirSync(path.join(project, "src"), { recursive: true });
|
|
231
|
+
fs.writeFileSync(path.join(project, "src", "a.ts"), "");
|
|
232
|
+
const handlers = loadExtension();
|
|
233
|
+
await handlers.session_start({}, ctx(project));
|
|
234
|
+
const event = {
|
|
235
|
+
toolName: "read",
|
|
236
|
+
input: { path: "src/a.ts" },
|
|
237
|
+
content: [{ type: "text", text: "file body" }],
|
|
238
|
+
isError: false,
|
|
239
|
+
};
|
|
240
|
+
const first = await handlers.tool_result(event, ctx(project));
|
|
241
|
+
assert.match(first.content.at(-1).text, /TS SCOPED/);
|
|
242
|
+
const second = await handlers.tool_result(event, ctx(project));
|
|
243
|
+
assert.equal(second, undefined, "same rule must inject only once per process");
|
|
244
|
+
// write/edit and read errors never trigger
|
|
245
|
+
assert.equal(await handlers.tool_result({ ...event, toolName: "write" }, ctx(project)), undefined);
|
|
246
|
+
assert.equal(await handlers.tool_result({ ...event, isError: true }, ctx(project)), undefined);
|
|
247
|
+
// compact re-arms injection
|
|
248
|
+
await handlers.session_compact({}, ctx(project));
|
|
249
|
+
assert.match((await handlers.tool_result(event, ctx(project))).content.at(-1).text, /TS SCOPED/);
|
|
250
|
+
fs.rmSync(project, { recursive: true, force: true });
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
test("extension does not match a path outside the project", async () => {
|
|
254
|
+
await withTempHome(async () => {
|
|
255
|
+
const project = fixture();
|
|
256
|
+
const outside = fs.mkdtempSync(path.join(os.tmpdir(), "pi-review-outside-"));
|
|
257
|
+
fs.writeFileSync(path.join(outside, "a.ts"), "");
|
|
258
|
+
const handlers = loadExtension();
|
|
259
|
+
await handlers.session_start({}, ctx(project));
|
|
260
|
+
const result = await handlers.tool_result({ toolName: "read", input: { path: path.join(outside, "a.ts") }, content: [], isError: false }, ctx(project));
|
|
261
|
+
assert.equal(result, undefined);
|
|
262
|
+
fs.rmSync(project, { recursive: true, force: true });
|
|
263
|
+
fs.rmSync(outside, { recursive: true, force: true });
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
//# sourceMappingURL=rules.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.test.js","sourceRoot":"","sources":["../src/rules.test.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -80,6 +80,12 @@ export interface ParsedArgs {
|
|
|
80
80
|
provider?: string;
|
|
81
81
|
thinking?: string;
|
|
82
82
|
tools?: string;
|
|
83
|
+
/**
|
|
84
|
+
* When true, reviewer children do not load the `.claude/rules` extension.
|
|
85
|
+
* Optional so existing ParsedArgs literals stay valid; only an explicit
|
|
86
|
+
* `--no-rules` sets it. `PI_REVIEW_RULES=0` is read at argv-assembly time.
|
|
87
|
+
*/
|
|
88
|
+
noRules?: boolean;
|
|
83
89
|
name?: string;
|
|
84
90
|
search?: string[];
|
|
85
91
|
/** Panel: number of independent reviewers (generic same-model panel). */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,SAAS,CAAU,CAAC;AAGlG,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,SAAS,CAAU,CAAC;AAGlG,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,CAAU,CAAC;AA+I5F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAU,CAAC;AA8C9C,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAU,CAAC;AActF,mEAAmE;AACnE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAE/B,yDAAyD;AACzD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAU,CAAC;AAE7E,mEAAmE;AACnE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAEzC,iFAAiF;AACjF,MAAM,CAAC,MAAM,mCAAmC,GAAG,GAAG,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pi-review
|
|
3
|
-
description: Use pi-review
|
|
3
|
+
description: "Use pi-review only when the user explicitly requests an independent review or review workflow: code review, review of a diff or MR, loop review, review-fix-re-review closeout, panel review gates, or review status/progress questions. Do not use it for repository inspection, spec-driven evaluation or optimization (for example, checking whether X can be optimized against a specification), implementation-oriented analysis, diagnosis, migration, or conformance fixes (for example, checking compliance and correcting the implementation) unless the user separately asks for an independent review."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Pi Review
|
|
@@ -37,6 +37,12 @@ Review children stay isolated (`--no-extensions`) unless the persistent review c
|
|
|
37
37
|
|
|
38
38
|
Before writing, tell the user the config is machine-level: every later pi-review on this machine (including bare CLI) inherits it. Write it only on acceptance; when editing an existing file, keep every unknown key and never overwrite a value the user set (invalid JSON — stop, do not overwrite). Verify on Pi with `/rv-config`, elsewhere with `cat ~/.pi/pi-review/config.json`. Isolate one run with `PI_REVIEW_CHILD_EXTENSIONS=0` (env overrides config). If a child exits with stale extension ctx after dispose/reload (issue #8), retry that one run with `PI_REVIEW_CHILD_EXTENSIONS=0`.
|
|
39
39
|
|
|
40
|
+
## Claude rules
|
|
41
|
+
|
|
42
|
+
Reviewer children load `.claude/rules/` by default, with Claude Code semantics — user-level `~/.claude/rules/` plus project-level `<dir>/.claude/rules/` from the child's working directory upward. Rules without a `paths` frontmatter key are appended to the child system prompt; rules with `paths` are injected into a `read` result only when the read file matches the glob (`write`/`edit` never trigger).
|
|
43
|
+
|
|
44
|
+
This loader is **our own extension, explicitly passed with `--extension`** — it is not host-extension discovery. Review children still run isolated (`--no-extensions`) by default, so host extensions stay off unless the user opts in above. Disable rules for one run with `--no-rules` or `PI_REVIEW_RULES=0` (also accepts `false` / `off` / `no`). The consensus adjudicator, `screen`, and `classify` never load rules.
|
|
45
|
+
|
|
40
46
|
### Setting config via the agent (preferred path)
|
|
41
47
|
|
|
42
48
|
There is no `/rv-config set` command — the agent is the config editor. When the user asks to change a pi-review setting, edit `~/.pi/pi-review/config.json` directly, with these rules:
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { buildRvOrchestrationPrompt, parseRvArgs, RV_COMPLETIONS } from "./rv-prompts.js";
|
|
2
|
-
export default function piReviewExtension(pi) {
|
|
3
|
-
pi.registerCommand("rv", {
|
|
4
|
-
description: "Delegate pi-review to the agent (English prompts). Usage: /rv [--mode plan|challenge] [--model id] [--keep-session] @file-or-text | models",
|
|
5
|
-
getArgumentCompletions: (prefix) => {
|
|
6
|
-
const filtered = RV_COMPLETIONS.filter((item) => item.value.startsWith(prefix));
|
|
7
|
-
return filtered.length
|
|
8
|
-
? filtered.map(({ value, hint }) => ({ value, label: value, description: hint }))
|
|
9
|
-
: null;
|
|
10
|
-
},
|
|
11
|
-
handler: async (rawArgs, ctx) => {
|
|
12
|
-
const trimmed = rawArgs.trim();
|
|
13
|
-
const parsed = parseRvArgs(trimmed);
|
|
14
|
-
const prompt = buildRvOrchestrationPrompt(parsed);
|
|
15
|
-
if (!trimmed && !parsed.modelsOnly) {
|
|
16
|
-
ctx.ui.notify("/rv needs a target or `models`. Try: /rv @path or /rv models", "warning");
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
pi.sendUserMessage(prompt);
|
|
20
|
-
},
|
|
21
|
-
});
|
|
22
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* English orchestration prompts for /rv — parent Pi agent runs pi-review per skill.
|
|
3
|
-
* Child review sessions use presets in resources/review-presets.json (also English).
|
|
4
|
-
*/
|
|
5
|
-
export type RvParsed = {
|
|
6
|
-
mode: "code" | "plan" | "challenge";
|
|
7
|
-
model?: string;
|
|
8
|
-
keepSession: boolean;
|
|
9
|
-
continueHandle?: string;
|
|
10
|
-
modelsOnly: boolean;
|
|
11
|
-
target: string;
|
|
12
|
-
};
|
|
13
|
-
export declare function parseRvArgs(raw: string): RvParsed;
|
|
14
|
-
export declare function buildRvOrchestrationPrompt(parsed: RvParsed): string;
|
|
15
|
-
/** Short labels for TUI completions (English). */
|
|
16
|
-
export declare const RV_COMPLETIONS: {
|
|
17
|
-
value: string;
|
|
18
|
-
hint: string;
|
|
19
|
-
}[];
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* English orchestration prompts for /rv — parent Pi agent runs pi-review per skill.
|
|
3
|
-
* Child review sessions use presets in resources/review-presets.json (also English).
|
|
4
|
-
*/
|
|
5
|
-
export function parseRvArgs(raw) {
|
|
6
|
-
const tokens = raw.match(/(?:[^\s"']+|"[^"]*"|'[^']*')+/g) ?? [];
|
|
7
|
-
const cleaned = tokens.map((t) => t.replace(/^['"]|['"]$/g, ""));
|
|
8
|
-
let mode = "code";
|
|
9
|
-
let model;
|
|
10
|
-
let keepSession = false;
|
|
11
|
-
let continueHandle;
|
|
12
|
-
let modelsOnly = false;
|
|
13
|
-
const rest = [];
|
|
14
|
-
for (let i = 0; i < cleaned.length; i++) {
|
|
15
|
-
const t = cleaned[i];
|
|
16
|
-
if (t === "models" && rest.length === 0 && i === cleaned.length - 1) {
|
|
17
|
-
modelsOnly = true;
|
|
18
|
-
continue;
|
|
19
|
-
}
|
|
20
|
-
if (t === "--keep-session") {
|
|
21
|
-
keepSession = true;
|
|
22
|
-
continue;
|
|
23
|
-
}
|
|
24
|
-
if (t === "--mode" && cleaned[i + 1]) {
|
|
25
|
-
const m = cleaned[++i];
|
|
26
|
-
if (m === "plan" || m === "challenge" || m === "code")
|
|
27
|
-
mode = m;
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
if (t === "--model" && cleaned[i + 1]) {
|
|
31
|
-
model = cleaned[++i];
|
|
32
|
-
continue;
|
|
33
|
-
}
|
|
34
|
-
if (t === "--continue" && cleaned[i + 1]) {
|
|
35
|
-
continueHandle = cleaned[++i];
|
|
36
|
-
continue;
|
|
37
|
-
}
|
|
38
|
-
rest.push(t);
|
|
39
|
-
}
|
|
40
|
-
return {
|
|
41
|
-
mode,
|
|
42
|
-
model,
|
|
43
|
-
keepSession,
|
|
44
|
-
continueHandle,
|
|
45
|
-
modelsOnly,
|
|
46
|
-
target: rest.join(" ").trim(),
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
function baseRules() {
|
|
50
|
-
return [
|
|
51
|
-
"Follow the pi-review skill.",
|
|
52
|
-
"Run pi-review in an isolated child session; return only the review conclusion.",
|
|
53
|
-
"Do not edit, patch, commit, or implement findings unless the user asks separately.",
|
|
54
|
-
"Preserve the final PI_REVIEW_META line from pi-review output.",
|
|
55
|
-
].join(" ");
|
|
56
|
-
}
|
|
57
|
-
export function buildRvOrchestrationPrompt(parsed) {
|
|
58
|
-
if (parsed.modelsOnly) {
|
|
59
|
-
return [
|
|
60
|
-
"Run the pi-review model catalog step.",
|
|
61
|
-
baseRules(),
|
|
62
|
-
"Execute: pi-review models",
|
|
63
|
-
"Present a short English summary: how many providers, suggest 2–3 IDs suited for code review vs plan/challenge.",
|
|
64
|
-
"Do not start a review until the user supplies a target (@path or text).",
|
|
65
|
-
].join("\n\n");
|
|
66
|
-
}
|
|
67
|
-
if (parsed.continueHandle) {
|
|
68
|
-
return [
|
|
69
|
-
"Continue a prior pi-review session.",
|
|
70
|
-
baseRules(),
|
|
71
|
-
`Execute: pi-review --continue ${parsed.continueHandle} -- ${parsed.target || "follow up on the previous review"}`,
|
|
72
|
-
"Answer the follow-up in English; keep the same review-only scope.",
|
|
73
|
-
].join("\n\n");
|
|
74
|
-
}
|
|
75
|
-
if (!parsed.target) {
|
|
76
|
-
return [
|
|
77
|
-
"The /rv command needs a review target.",
|
|
78
|
-
"Tell the user (in English): usage is /rv [--mode code|plan|challenge] [--model provider/model] [--keep-session] -- @files-or-brief",
|
|
79
|
-
"Examples: /rv @src/foo.ts | /rv --mode challenge @docs/design.md | /rv models",
|
|
80
|
-
].join("\n\n");
|
|
81
|
-
}
|
|
82
|
-
const modeBlock = {
|
|
83
|
-
code: [
|
|
84
|
-
"Mode: code (default).",
|
|
85
|
-
"Focus: correctness, regressions, security, concurrency, API contracts, edge cases, tests.",
|
|
86
|
-
"Use read-only inspection via pi-review; no file mutations.",
|
|
87
|
-
].join(" "),
|
|
88
|
-
plan: [
|
|
89
|
-
"Mode: plan.",
|
|
90
|
-
"Review architecture, design, or strategy through engineering, product, security, QA, ops, and DX lenses.",
|
|
91
|
-
"Identify fatal flaws, trade-offs, sequencing risks, and minimal changes to de-risk the plan.",
|
|
92
|
-
].join(" "),
|
|
93
|
-
challenge: [
|
|
94
|
-
"Mode: challenge (adversarial).",
|
|
95
|
-
"Pressure-test assumptions, boundaries, dependencies, failure modes, migration, and missing evidence.",
|
|
96
|
-
"One-shot conclusion; do not run a live Q&A interview.",
|
|
97
|
-
].join(" "),
|
|
98
|
-
};
|
|
99
|
-
const cliParts = ["pi-review"];
|
|
100
|
-
if (parsed.mode !== "code")
|
|
101
|
-
cliParts.push(`--mode ${parsed.mode}`);
|
|
102
|
-
if (parsed.model)
|
|
103
|
-
cliParts.push(`--model ${parsed.model}`);
|
|
104
|
-
if (parsed.keepSession)
|
|
105
|
-
cliParts.push("--keep-session");
|
|
106
|
-
cliParts.push("--", parsed.target);
|
|
107
|
-
const modelStep = parsed.model
|
|
108
|
-
? `Use model exactly as given: ${parsed.model} (must appear in pi-review models output).`
|
|
109
|
-
: "Run pi-review models first if needed; pick a suitable listed ID or omit --model for Pi default.";
|
|
110
|
-
return [
|
|
111
|
-
"Run pi-review for the target below.",
|
|
112
|
-
baseRules(),
|
|
113
|
-
modeBlock[parsed.mode],
|
|
114
|
-
modelStep,
|
|
115
|
-
parsed.keepSession
|
|
116
|
-
? "Use --keep-session so the user can follow up with /rv --continue <handle>."
|
|
117
|
-
: "",
|
|
118
|
-
`Execute:\n${cliParts.join(" ")}`,
|
|
119
|
-
]
|
|
120
|
-
.filter(Boolean)
|
|
121
|
-
.join("\n\n");
|
|
122
|
-
}
|
|
123
|
-
/** Short labels for TUI completions (English). */
|
|
124
|
-
export const RV_COMPLETIONS = [
|
|
125
|
-
{ value: "@", hint: "file path after @ (e.g. @src/foo.ts)" },
|
|
126
|
-
{ value: "models", hint: "list pi-review models only" },
|
|
127
|
-
{ value: "--mode code", hint: "code / diff / MR review" },
|
|
128
|
-
{ value: "--mode plan", hint: "architecture or plan review" },
|
|
129
|
-
{ value: "--mode challenge", hint: "adversarial plan review" },
|
|
130
|
-
{ value: "--model ", hint: "provider/model from pi-review models" },
|
|
131
|
-
{ value: "--keep-session", hint: "persist session for follow-up" },
|
|
132
|
-
];
|