@zephyrdeng/pi-review 0.14.0 → 0.15.1

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.
Files changed (85) hide show
  1. package/README.md +77 -5
  2. package/README.zh-CN.md +72 -3
  3. package/dist/args.d.ts.map +1 -1
  4. package/dist/args.js +22 -0
  5. package/dist/args.js.map +1 -1
  6. package/dist/child-isolation.test.js +25 -7
  7. package/dist/child-isolation.test.js.map +1 -1
  8. package/dist/classify.d.ts +36 -0
  9. package/dist/classify.d.ts.map +1 -0
  10. package/dist/classify.js +171 -0
  11. package/dist/classify.js.map +1 -0
  12. package/dist/classify.test.d.ts +2 -0
  13. package/dist/classify.test.d.ts.map +1 -0
  14. package/dist/classify.test.js +76 -0
  15. package/dist/classify.test.js.map +1 -0
  16. package/dist/cli.js +41 -1
  17. package/dist/cli.js.map +1 -1
  18. package/dist/index.d.ts +9 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +5 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/jev.d.ts +100 -0
  23. package/dist/jev.d.ts.map +1 -0
  24. package/dist/jev.js +250 -0
  25. package/dist/jev.js.map +1 -0
  26. package/dist/jev.test.d.ts +2 -0
  27. package/dist/jev.test.d.ts.map +1 -0
  28. package/dist/jev.test.js +154 -0
  29. package/dist/jev.test.js.map +1 -0
  30. package/dist/loop.d.ts +18 -1
  31. package/dist/loop.d.ts.map +1 -1
  32. package/dist/loop.js +39 -0
  33. package/dist/loop.js.map +1 -1
  34. package/dist/loop.test.js +36 -0
  35. package/dist/loop.test.js.map +1 -1
  36. package/dist/matcher.d.ts +16 -3
  37. package/dist/matcher.d.ts.map +1 -1
  38. package/dist/matcher.js +31 -12
  39. package/dist/matcher.js.map +1 -1
  40. package/dist/matcher.test.js +30 -6
  41. package/dist/matcher.test.js.map +1 -1
  42. package/dist/meta-footer.d.ts.map +1 -1
  43. package/dist/meta-footer.js +6 -2
  44. package/dist/meta-footer.js.map +1 -1
  45. package/dist/panel-cli.test.js +145 -3
  46. package/dist/panel-cli.test.js.map +1 -1
  47. package/dist/panel.d.ts.map +1 -1
  48. package/dist/panel.js +41 -4
  49. package/dist/panel.js.map +1 -1
  50. package/dist/pi-config.d.ts +61 -0
  51. package/dist/pi-config.d.ts.map +1 -0
  52. package/dist/pi-config.js +95 -0
  53. package/dist/pi-config.js.map +1 -0
  54. package/dist/pi-config.test.d.ts +2 -0
  55. package/dist/pi-config.test.d.ts.map +1 -0
  56. package/dist/pi-config.test.js +78 -0
  57. package/dist/pi-config.test.js.map +1 -0
  58. package/dist/review.d.ts +14 -3
  59. package/dist/review.d.ts.map +1 -1
  60. package/dist/review.js +22 -11
  61. package/dist/review.js.map +1 -1
  62. package/dist/round-compare.d.ts +23 -0
  63. package/dist/round-compare.d.ts.map +1 -0
  64. package/dist/round-compare.js +45 -0
  65. package/dist/round-compare.js.map +1 -0
  66. package/dist/round-compare.test.d.ts +2 -0
  67. package/dist/round-compare.test.d.ts.map +1 -0
  68. package/dist/round-compare.test.js +63 -0
  69. package/dist/round-compare.test.js.map +1 -0
  70. package/dist/skill-protocol.test.js +13 -0
  71. package/dist/skill-protocol.test.js.map +1 -1
  72. package/dist/types.d.ts +17 -1
  73. package/dist/types.d.ts.map +1 -1
  74. package/dist/types.js.map +1 -1
  75. package/extensions/review.test.ts +8 -0
  76. package/extensions/review.ts +11 -0
  77. package/extensions/rv-config.test.ts +90 -0
  78. package/extensions/rv-config.ts +166 -0
  79. package/extensions/rv-prompts.ts +1 -1
  80. package/package.json +1 -1
  81. package/resources/providers/orcarouter.json +28 -0
  82. package/resources/providers/orcarouter.toml +11 -0
  83. package/skills/pi-review/SKILL.md +28 -2
  84. package/skills/pi-review/references/codex-tools.md +2 -0
  85. package/skills/pi-review/references/model-selection.md +1 -1
@@ -0,0 +1,171 @@
1
+ // pi-review classify: scope-governor classification of review findings.
2
+ //
3
+ // Given the frozen task baseline and the findings from a previous review's
4
+ // PI_REVIEW_META_JSON, classify each finding with Jev (TypeSafe System One)
5
+ // as in-scope blocker / follow-up / stop-and-escalate — the classification
6
+ // the host agent otherwise makes by judgment in the loop closeout protocol.
7
+ //
8
+ // This is a Jev-only feature: the typed classification is the entire value.
9
+ // Without a key it exits blocked with an actionable message rather than
10
+ // pretending to classify.
11
+ import fs from "node:fs";
12
+ import { evaluateChoices, resolveJevConnection } from "./jev.js";
13
+ import { expandMaybeHome, fail } from "./utils.js";
14
+ export const SCOPE_CLASSES = ["in_scope_blocker", "follow_up", "stop_and_escalate"];
15
+ /** Below this confidence the classification is advisory-only. */
16
+ export const CLASSIFY_CONFIDENCE_FLOOR = 0.5;
17
+ const CLASSIFY_CRITERIA = {
18
+ in_scope_blocker: "The finding is accepted, actionable, and required by the frozen task baseline; the host should fix it now before closeout.",
19
+ follow_up: "The finding is valid but outside the frozen baseline or not required for safe closeout; record it without drive-by edits.",
20
+ stop_and_escalate: "Ambiguous intent, architectural expansion, unsafe migration, blocked tooling, or anything requiring a human decision; stop rather than guess.",
21
+ };
22
+ /** Parse a meta file/stdin payload: a PI_REVIEW_META_JSON line or a bare meta JSON object. */
23
+ export function parseMetaFindings(text) {
24
+ const metaLine = text.split("\n").find((line) => line.startsWith("PI_REVIEW_META_JSON: "));
25
+ const raw = metaLine ? metaLine.slice("PI_REVIEW_META_JSON: ".length) : text.trim();
26
+ let meta;
27
+ try {
28
+ meta = JSON.parse(raw);
29
+ }
30
+ catch {
31
+ fail("classify: could not parse meta JSON — pipe a review's PI_REVIEW_META_JSON line or pass --meta <file>");
32
+ }
33
+ const findings = meta.findings;
34
+ if (!Array.isArray(findings)) {
35
+ fail("classify: meta JSON has no findings array — is this a review meta record?");
36
+ }
37
+ return findings;
38
+ }
39
+ /** Resolve the baseline text: @path reads the file, anything else is literal text. */
40
+ export function resolveBaseline(value) {
41
+ if (value.startsWith("@")) {
42
+ const file = expandMaybeHome(value.slice(1));
43
+ try {
44
+ return fs.readFileSync(file, "utf8");
45
+ }
46
+ catch (error) {
47
+ fail(`classify: cannot read baseline file ${file}: ${error.message}`);
48
+ }
49
+ }
50
+ return value;
51
+ }
52
+ /**
53
+ * One Jev call: a Choice question per finding, all fanned out in parallel.
54
+ * The baseline is the judge's only notion of scope; Jev never sees the code.
55
+ */
56
+ export async function classifyFindings(connection, baseline, findings, fetchImpl) {
57
+ const questions = {};
58
+ const byId = new Map();
59
+ findings.forEach((finding, index) => {
60
+ const id = finding.id ?? `F${index + 1}`;
61
+ byId.set(id, finding);
62
+ questions[id] = {
63
+ instructions: `Classify review finding ${id} against the frozen task baseline: is it an in-scope blocker, a follow-up, or stop-and-escalate? ` +
64
+ "Judge scope fit only — the finding's technical validity was already established by the reviewer.",
65
+ criteria: { ...CLASSIFY_CRITERIA },
66
+ };
67
+ });
68
+ const state = {
69
+ baseline,
70
+ findings: findings.map((finding, index) => ({
71
+ id: finding.id ?? `F${index + 1}`,
72
+ summary: finding.summary,
73
+ path: finding.path ?? null,
74
+ severity: finding.severity ?? null,
75
+ actionable: finding.actionable,
76
+ })),
77
+ };
78
+ const result = await evaluateChoices(connection, state, questions, fetchImpl);
79
+ const classified = [];
80
+ for (const [id, answer] of Object.entries(result.answers)) {
81
+ const finding = byId.get(id);
82
+ classified.push({
83
+ id,
84
+ summary: finding.summary,
85
+ classification: answer.choice,
86
+ confidence: answer.confidence,
87
+ uncertain: answer.confidence < CLASSIFY_CONFIDENCE_FLOOR,
88
+ });
89
+ }
90
+ return {
91
+ baselineChars: baseline.length,
92
+ findings: classified,
93
+ unclassified: result.missing,
94
+ ...(result.model ? { model: result.model } : {}),
95
+ ...(result.usage ? { usage: result.usage } : {}),
96
+ };
97
+ }
98
+ export function formatClassifyAscii(result) {
99
+ const lines = ["── pi-review classify " + "─".repeat(20)];
100
+ const buckets = {
101
+ in_scope_blocker: [],
102
+ follow_up: [],
103
+ stop_and_escalate: [],
104
+ };
105
+ for (const finding of result.findings)
106
+ buckets[finding.classification].push(finding);
107
+ const label = {
108
+ in_scope_blocker: "In-scope",
109
+ follow_up: "Follow-up",
110
+ stop_and_escalate: "Escalate",
111
+ };
112
+ lines.push(` Findings ${result.findings.length} classified${result.model ? ` (${result.model})` : ""}`);
113
+ for (const cls of SCOPE_CLASSES) {
114
+ const bucket = buckets[cls];
115
+ if (bucket.length > 0)
116
+ lines.push(` ${label[cls].padEnd(10)} ${bucket.map((f) => f.id).join(", ")}`);
117
+ }
118
+ if (result.unclassified.length > 0) {
119
+ lines.push(` Unclassified: ${result.unclassified.join(", ")} (missing from model response)`);
120
+ }
121
+ lines.push("");
122
+ for (const finding of result.findings) {
123
+ const flag = finding.uncertain ? " (low confidence)" : "";
124
+ lines.push(` ${finding.id} ${finding.classification.toUpperCase()} ${finding.confidence.toFixed(2)}${flag} ${finding.summary}`);
125
+ }
126
+ lines.push("─".repeat(41));
127
+ return lines.join("\n");
128
+ }
129
+ export async function runClassify(parsed, stdinText) {
130
+ const baselineRaw = parsed.baseline;
131
+ if (!baselineRaw) {
132
+ fail("classify: --baseline <text|@file> is required (the frozen task/scope)");
133
+ }
134
+ const metaText = parsed.metaFile
135
+ ? (() => {
136
+ try {
137
+ return fs.readFileSync(expandMaybeHome(parsed.metaFile), "utf8");
138
+ }
139
+ catch (error) {
140
+ fail(`classify: cannot read --meta file: ${error.message}`);
141
+ }
142
+ })()
143
+ : stdinText;
144
+ if (!metaText || !metaText.trim()) {
145
+ fail("classify: no meta input — pass --meta <file> or pipe a review's stderr/stdout in");
146
+ }
147
+ const findings = parseMetaFindings(metaText);
148
+ const actionable = findings.filter((finding) => finding.actionable);
149
+ if (actionable.length === 0) {
150
+ process.stdout.write("── pi-review classify " + "─".repeat(20) + "\n No actionable findings to classify.\n" + "─".repeat(41) + "\n");
151
+ process.exit(0);
152
+ }
153
+ const connection = resolveJevConnection(process.env);
154
+ if (!connection) {
155
+ process.stderr.write("pi-review: classify requires a TypeSafe API key: export TYPESAFE_API_KEY (see README — Jev enhancement mode).\n");
156
+ process.exit(4);
157
+ }
158
+ const baseline = resolveBaseline(baselineRaw);
159
+ let result;
160
+ try {
161
+ result = await classifyFindings(connection, baseline, actionable);
162
+ }
163
+ catch (error) {
164
+ process.stderr.write(`pi-review: classify failed: ${error.message}\n`);
165
+ process.exit(4);
166
+ }
167
+ process.stdout.write(`${formatClassifyAscii(result)}\n`);
168
+ process.stderr.write(`PI_REVIEW_CLASSIFY_JSON: ${JSON.stringify(result)}\n`);
169
+ process.exit(0);
170
+ }
171
+ //# sourceMappingURL=classify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classify.js","sourceRoot":"","sources":["../src/classify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=classify.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classify.test.d.ts","sourceRoot":"","sources":["../src/classify.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,76 @@
1
+ import assert from "node:assert/strict";
2
+ import { test } from "vitest";
3
+ import { classifyFindings, formatClassifyAscii, parseMetaFindings, CLASSIFY_CONFIDENCE_FLOOR, } from "./classify.js";
4
+ const CONN = { apiKey: "test-key", baseUrl: "https://example.test", model: "jev-test" };
5
+ function finding(id, summary) {
6
+ return { id, summary, actionable: true };
7
+ }
8
+ function choiceFetch(mapping) {
9
+ return (async (_url, init) => {
10
+ const body = JSON.parse(init.body);
11
+ const answers = {};
12
+ for (const id of Object.keys(body.questions)) {
13
+ const [choice, confidence] = mapping[id] ?? ["follow_up", 0.6];
14
+ answers[id] = { type: "choice", choice, confidence };
15
+ }
16
+ return {
17
+ ok: true,
18
+ status: 200,
19
+ json: async () => ({ model: "jev-1.13.0", answers, usage: { input_tokens: 200, output_tokens: 12 } }),
20
+ };
21
+ });
22
+ }
23
+ test("parseMetaFindings accepts a PI_REVIEW_META_JSON line", () => {
24
+ const line = `PI_REVIEW_META_JSON: ${JSON.stringify({ findings: [{ id: "F1", summary: "bug", actionable: true }] })}`;
25
+ const findings = parseMetaFindings(`some stderr\n${line}\nmore`);
26
+ assert.equal(findings.length, 1);
27
+ assert.equal(findings[0].id, "F1");
28
+ });
29
+ test("parseMetaFindings accepts a bare meta JSON object", () => {
30
+ const findings = parseMetaFindings(JSON.stringify({ findings: [{ summary: "bug", actionable: true }] }));
31
+ assert.equal(findings.length, 1);
32
+ });
33
+ test("classifyFindings fans out one Choice per finding and maps answers", async () => {
34
+ const result = await classifyFindings(CONN, "baseline: fix the login crash", [finding("F1", "login crash on empty password"), finding("F2", "sidebar color drift")], choiceFetch({ F1: ["in_scope_blocker", 0.93], F2: ["follow_up", 0.71] }));
35
+ assert.equal(result.findings.length, 2);
36
+ assert.equal(result.findings[0].classification, "in_scope_blocker");
37
+ assert.equal(result.findings[0].confidence, 0.93);
38
+ assert.equal(result.findings[0].uncertain, false);
39
+ assert.equal(result.findings[1].classification, "follow_up");
40
+ assert.equal(result.model, "jev-1.13.0");
41
+ assert.deepEqual(result.usage, { inputTokens: 200, outputTokens: 12 });
42
+ });
43
+ test("classifyFindings flags low confidence as uncertain", async () => {
44
+ const result = await classifyFindings(CONN, "baseline", [finding("F1", "murky one")], choiceFetch({ F1: ["stop_and_escalate", CLASSIFY_CONFIDENCE_FLOOR - 0.01] }));
45
+ assert.equal(result.findings[0].classification, "stop_and_escalate");
46
+ assert.equal(result.findings[0].uncertain, true);
47
+ });
48
+ test("classifyFindings rejects a choice outside the criteria (never invents a class)", async () => {
49
+ const badFetch = (async () => ({
50
+ ok: true,
51
+ status: 200,
52
+ json: async () => ({ answers: { F1: { type: "choice", choice: "made_up_class", confidence: 0.9 } } }),
53
+ }));
54
+ const result = await classifyFindings(CONN, "baseline", [finding("F1", "x")], badFetch);
55
+ assert.equal(result.findings.length, 0);
56
+ assert.deepEqual(result.unclassified, ["F1"]);
57
+ });
58
+ test("classifyFindings assigns fallback ids when findings lack them", async () => {
59
+ const result = await classifyFindings(CONN, "baseline", [{ summary: "no id", actionable: true }], choiceFetch({}));
60
+ assert.equal(result.findings[0].id, "F1");
61
+ });
62
+ test("formatClassifyAscii groups by class and marks uncertainty", () => {
63
+ const text = formatClassifyAscii({
64
+ baselineChars: 10,
65
+ findings: [
66
+ { id: "F1", summary: "crash", classification: "in_scope_blocker", confidence: 0.9, uncertain: false },
67
+ { id: "F2", summary: "murky", classification: "stop_and_escalate", confidence: 0.3, uncertain: true },
68
+ ],
69
+ unclassified: [],
70
+ model: "jev-1.13.0",
71
+ });
72
+ assert.match(text, /In-scope\s+F1/);
73
+ assert.match(text, /Escalate\s+F2/);
74
+ assert.match(text, /F2 STOP_AND_ESCALATE 0\.30 \(low confidence\)/);
75
+ });
76
+ //# sourceMappingURL=classify.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classify.test.js","sourceRoot":"","sources":["../src/classify.test.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -2,15 +2,48 @@
2
2
  import { isInstallHelp } from "./install-args.js";
3
3
  import { isPanelActive, parseArgs, usage } from "./args.js";
4
4
  import { readReviewStdin, runModels, runReview, runReviewOnce } from "./review.js";
5
+ import { normalizePayloadRefs, splitPayload } from "./prompt.js";
6
+ import path from "node:path";
5
7
  import { formatLoopSummary, runReviewLoop } from "./loop.js";
6
8
  import { runPanelReview, runPanelReviewOnce, runPanelReviewWithUi } from "./panel.js";
7
9
  import { resolveConfig } from "./config.js";
10
+ import { currentConfig } from "./pi-config.js";
11
+ import { DeterministicMatcher, SemanticMatcher } from "./matcher.js";
12
+ import { createJevAdjudicator, resolveJev, resolveJevConnection, withAdjudicationFallback } from "./jev.js";
8
13
  import { installSkill, uninstallSkill } from "./skill.js";
9
14
  import { runUpdate } from "./update.js";
10
15
  import { runInstall } from "./install.js";
16
+ import { runClassify } from "./classify.js";
11
17
  const parsed = parseArgs(process.argv.slice(2));
12
18
  if (isInstallHelp(parsed))
13
19
  usage(0);
20
+ // The config file is advisory: warn about leniently-ignored values but never
21
+ // block core functionality — a config written by a newer pi-review must not
22
+ // brick an older one.
23
+ for (const warning of currentConfig().warnings) {
24
+ process.stderr.write(`pi-review: config warning: ${warning}\n`);
25
+ }
26
+ /**
27
+ * Matcher for the loop's cross-round comparison. Jev when the enhancement is
28
+ * on and a key exists; a Jev failure degrades to deterministic-only matching
29
+ * (never an LLM adjudicator child — this is advisory bookkeeping, not a gate).
30
+ */
31
+ function loopMatcher(parsed) {
32
+ const payload = normalizePayloadRefs(splitPayload(parsed.payload));
33
+ const baseDir = payload.pathTargets && payload.pathTargets.length === 1
34
+ ? path.resolve(payload.pathTargets[0])
35
+ : undefined;
36
+ const options = baseDir ? { baseDir } : {};
37
+ const jevOn = resolveJev(process.env, currentConfig(process.env).config).enabled;
38
+ const connection = jevOn ? resolveJevConnection(process.env) : undefined;
39
+ if (!connection)
40
+ return new DeterministicMatcher(options);
41
+ const silentPiFallback = { adjudicate: async () => ({ merges: [] }) };
42
+ const wrapped = withAdjudicationFallback(createJevAdjudicator(connection), silentPiFallback, (message) => {
43
+ process.stderr.write(`pi-review: warning: ${message}\n`);
44
+ });
45
+ return new SemanticMatcher(wrapped.adjudicator, options);
46
+ }
14
47
  if (parsed.command === "models") {
15
48
  const config = resolveConfig();
16
49
  runModels(config.piBin, parsed.search || []);
@@ -18,6 +51,9 @@ if (parsed.command === "models") {
18
51
  else if (parsed.command === "update") {
19
52
  runUpdate();
20
53
  }
54
+ else if (parsed.command === "classify") {
55
+ await runClassify(parsed, readReviewStdin());
56
+ }
21
57
  else if (parsed.command === "install") {
22
58
  runInstall({
23
59
  pi: parsed.installPi !== false,
@@ -36,7 +72,11 @@ else if (parsed.command === "loop") {
36
72
  const runOne = isPanelActive(parsed)
37
73
  ? () => runPanelReviewOnce(parsed, stdinText)
38
74
  : () => runReviewOnce(parsed, stdinText);
39
- const result = await runReviewLoop({ maxRounds: parsed.maxRounds, ...(parsed.until ? { until: parsed.until } : {}) }, runOne);
75
+ const result = await runReviewLoop({
76
+ maxRounds: parsed.maxRounds,
77
+ ...(parsed.until ? { until: parsed.until } : {}),
78
+ matcher: loopMatcher(parsed),
79
+ }, runOne);
40
80
  process.stdout.write(`${formatLoopSummary(result)}\n`);
41
81
  process.exit(result.exitCode);
42
82
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ export { resolveConfig } from "./config.js";
3
3
  export type { Config } from "./config.js";
4
4
  export { loadPresets, loadPanelPresets, loadSystemPrompt } from "./presets.js";
5
5
  export { splitPayload, normalizePayloadRefs, buildPrompt, buildReviewerPrompt, buildAdjudicatorPrompt } from "./prompt.js";
6
- export { childEnv, childIsolationArgs, childRuntimeError, configBlockForProvider, extensionOnlyHintText, formatChildRuntimeDetail, parseModelCatalog, probeProviderAvailability, readReviewStdin, runModels, runReview, runReviewOnce, unknownProviderHintText, CHILD_STDERR_DIAGNOSTIC_LIMIT, } from "./review.js";
6
+ export { childEnv, childIsolationArgs, childRuntimeError, modelsArgs, configBlockForProvider, extensionOnlyHintText, formatChildRuntimeDetail, parseModelCatalog, probeProviderAvailability, readReviewStdin, runModels, runReview, runReviewOnce, unknownProviderHintText, CHILD_STDERR_DIAGNOSTIC_LIMIT, } from "./review.js";
7
7
  export { buildReviewerArgs, collectPanelExtensionHints, runPanelReview, runPanelReviewOnce, emitPanelFooter, shouldPreserveSubmissionOnAbort, resolvePanelReviewerTools, } from "./panel.js";
8
8
  export { spawnStreamingChild } from "./child-process.js";
9
9
  export { createPanelViewState, reducePanelEvent } from "./panel-view.js";
@@ -12,11 +12,17 @@ export { createReviewEventEmitter, redactReviewEventPayload, redactReviewEventTe
12
12
  export type { ReviewEvent, ReviewEventListener, ReviewerIdentity } from "./review-events.js";
13
13
  export { formatLoopSummary, runReviewLoop } from "./loop.js";
14
14
  export type { LoopReviewResult, LoopRoundSummary, LoopRoundPanelSummary, LoopStopReason, LoopUntilGoal, RunOneReview, RunReviewLoopOptions } from "./loop.js";
15
+ export { compareRoundFindings } from "./round-compare.js";
16
+ export type { RoundComparison, RoundFindingRef } from "./round-compare.js";
15
17
  export { LOOP_CLEAN_GOAL } from "./loop.js";
16
18
  export { aggregatePanel, effectiveThreshold } from "./panel-aggregate.js";
17
19
  export type { PanelAggregationInput } from "./panel-aggregate.js";
18
20
  export { DeterministicMatcher, SemanticMatcher } from "./matcher.js";
19
21
  export type { FindingMatcher, MatchResult, SemanticAdjudicator, AdjudicationRequest, AdjudicationResponse, AdjudicationMerge, AdjudicationCandidate } from "./matcher.js";
22
+ export { createJevAdjudicator, hasJevApiKey, resolveJev, resolveJevConnection, withAdjudicationFallback, evaluateNouls, evaluateChoices } from "./jev.js";
23
+ export type { JevConnection, JevDecision } from "./jev.js";
24
+ export { classifyFindings, formatClassifyAscii, parseMetaFindings, resolveBaseline, SCOPE_CLASSES, CLASSIFY_CONFIDENCE_FLOOR } from "./classify.js";
25
+ export type { ClassifiedFinding, ClassifyResult, ScopeClass } from "./classify.js";
20
26
  export { resolvePanelConfig } from "./panel-config.js";
21
27
  export type { ResolvedPanelConfig } from "./panel-config.js";
22
28
  export { makeRunSessionDir, newestJsonl } from "./session.js";
@@ -28,4 +34,6 @@ export { parseReviewResult, reviewExitCode } from "./review-result.js";
28
34
  export { formatCost, formatDurationMs, formatTokens, formatUsage, formatReviewMetaAscii, formatReviewMetaJsonLine, formatPanelMetaAscii, formatPanelFindingsMarkdown } from "./meta-footer.js";
29
35
  export { DEFAULT_AGENT_SKILL_ARGS, DEFAULT_SKILL_AGENTS, expandSkillAgentArgs, installSkill, listDirectSkillInstallTargets, resolveDirectSkillInstallTargets, runInstallSkill, runUninstallSkill, runUpdateSkill, selectedSkillAgents, uninstallSkill, } from "./skill.js";
30
36
  export type { DirectSkillInstallTarget, SkillMethod, SkillOpResult } from "./skill.js";
37
+ export { DEFAULT_CONFIG_PATH, configFilePath, currentConfig, loadReviewConfigFile, parseReviewConfig, resolveChildExtensions, } from "./pi-config.js";
38
+ export type { PiReviewConfig, ConfigSource, ChildExtensionsDecision, ReviewConfigLoad } from "./pi-config.js";
31
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,15 +2,18 @@ export { ArgsParseError, DEFAULT_MAX_ROUNDS, isPanelActive, parseArgs, parseRevi
2
2
  export { resolveConfig } from "./config.js";
3
3
  export { loadPresets, loadPanelPresets, loadSystemPrompt } from "./presets.js";
4
4
  export { splitPayload, normalizePayloadRefs, buildPrompt, buildReviewerPrompt, buildAdjudicatorPrompt } from "./prompt.js";
5
- export { childEnv, childIsolationArgs, childRuntimeError, configBlockForProvider, extensionOnlyHintText, formatChildRuntimeDetail, parseModelCatalog, probeProviderAvailability, readReviewStdin, runModels, runReview, runReviewOnce, unknownProviderHintText, CHILD_STDERR_DIAGNOSTIC_LIMIT, } from "./review.js";
5
+ export { childEnv, childIsolationArgs, childRuntimeError, modelsArgs, configBlockForProvider, extensionOnlyHintText, formatChildRuntimeDetail, parseModelCatalog, probeProviderAvailability, readReviewStdin, runModels, runReview, runReviewOnce, unknownProviderHintText, CHILD_STDERR_DIAGNOSTIC_LIMIT, } from "./review.js";
6
6
  export { buildReviewerArgs, collectPanelExtensionHints, runPanelReview, runPanelReviewOnce, emitPanelFooter, shouldPreserveSubmissionOnAbort, resolvePanelReviewerTools, } from "./panel.js";
7
7
  export { spawnStreamingChild } from "./child-process.js";
8
8
  export { createPanelViewState, reducePanelEvent } from "./panel-view.js";
9
9
  export { createReviewEventEmitter, redactReviewEventPayload, redactReviewEventText, REVIEW_EVENT_VERSION, REVIEW_EVENT_TEXT_LIMIT } from "./review-events.js";
10
10
  export { formatLoopSummary, runReviewLoop } from "./loop.js";
11
+ export { compareRoundFindings } from "./round-compare.js";
11
12
  export { LOOP_CLEAN_GOAL } from "./loop.js";
12
13
  export { aggregatePanel, effectiveThreshold } from "./panel-aggregate.js";
13
14
  export { DeterministicMatcher, SemanticMatcher } from "./matcher.js";
15
+ export { createJevAdjudicator, hasJevApiKey, resolveJev, resolveJevConnection, withAdjudicationFallback, evaluateNouls, evaluateChoices } from "./jev.js";
16
+ export { classifyFindings, formatClassifyAscii, parseMetaFindings, resolveBaseline, SCOPE_CLASSES, CLASSIFY_CONFIDENCE_FLOOR } from "./classify.js";
14
17
  export { resolvePanelConfig } from "./panel-config.js";
15
18
  export { makeRunSessionDir, newestJsonl } from "./session.js";
16
19
  export { REVIEW_STATUSES, VERDICTS, CONSENSUS_POLICIES, MAX_REVIEWERS, PANEL_READ_ONLY_TOOLS, DEFAULT_PANEL_MIN_AGREE, REVIEW_META_VERSION, } from "./types.js";
@@ -19,4 +22,5 @@ export { parseVerdict } from "./verdict.js";
19
22
  export { parseReviewResult, reviewExitCode } from "./review-result.js";
20
23
  export { formatCost, formatDurationMs, formatTokens, formatUsage, formatReviewMetaAscii, formatReviewMetaJsonLine, formatPanelMetaAscii, formatPanelFindingsMarkdown } from "./meta-footer.js";
21
24
  export { DEFAULT_AGENT_SKILL_ARGS, DEFAULT_SKILL_AGENTS, expandSkillAgentArgs, installSkill, listDirectSkillInstallTargets, resolveDirectSkillInstallTargets, runInstallSkill, runUninstallSkill, runUpdateSkill, selectedSkillAgents, uninstallSkill, } from "./skill.js";
25
+ export { DEFAULT_CONFIG_PATH, configFilePath, currentConfig, loadReviewConfigFile, parseReviewConfig, resolveChildExtensions, } from "./pi-config.js";
22
26
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,SAAS,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACzI,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC3H,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,EACzB,eAAe,EACf,SAAS,EACT,SAAS,EACT,aAAa,EACb,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,+BAA+B,EAC/B,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE9J,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAErE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA2B9D,OAAO,EACL,eAAe,EACf,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/L,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,6BAA6B,EAC7B,gCAAgC,EAChC,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,cAAc,GACf,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/jev.d.ts ADDED
@@ -0,0 +1,100 @@
1
+ import type { SemanticAdjudicator } from "./matcher.js";
2
+ import type { ConfigSource, PiReviewConfig } from "./pi-config.js";
3
+ export declare const DEFAULT_JEV_BASE_URL = "https://api.typesafe.ai";
4
+ export declare const DEFAULT_JEV_MODEL = "jev-latest";
5
+ export declare const JEV_TIMEOUT_MS = 15000;
6
+ /** Effective on/off decision for the Jev enhancement layer. */
7
+ export interface JevDecision {
8
+ enabled: boolean;
9
+ source: ConfigSource;
10
+ }
11
+ /** True when a TypeSafe API key is available in the environment. */
12
+ export declare function hasJevApiKey(env?: NodeJS.ProcessEnv): boolean;
13
+ /**
14
+ * Enhancement mode resolution, mirroring resolveChildExtensions:
15
+ * PI_REVIEW_JEV (1/true/on enable, any other set value disables) overrides the
16
+ * config file `jev` key, which overrides the default of "on when
17
+ * TYPESAFE_API_KEY is present".
18
+ */
19
+ export declare function resolveJev(env: NodeJS.ProcessEnv, cfg: PiReviewConfig): JevDecision;
20
+ /** Connection parameters for the TypeSafe System One API. */
21
+ export interface JevConnection {
22
+ apiKey: string;
23
+ baseUrl: string;
24
+ model: string;
25
+ }
26
+ /**
27
+ * Resolve connection parameters, or undefined when no key is configured.
28
+ * The key comes from TYPESAFE_API_KEY only; it is never logged or persisted.
29
+ * TYPESAFE_BASE_URL allows pointing at a compatible endpoint (e.g. an
30
+ * openjev-style local server), PI_REVIEW_JEV_MODEL pins the model id.
31
+ */
32
+ export declare function resolveJevConnection(env?: NodeJS.ProcessEnv): JevConnection | undefined;
33
+ export declare class JevError extends Error {
34
+ constructor(message: string);
35
+ }
36
+ export interface JevUsage {
37
+ inputTokens: number;
38
+ outputTokens: number;
39
+ }
40
+ export interface JevNoulResult {
41
+ /** Per-question probability that the answer is "yes"; ids with a missing or malformed answer are absent. */
42
+ probabilities: Record<string, number>;
43
+ /** Question ids the API omitted or returned in an unexpected shape. */
44
+ missing: string[];
45
+ usage?: JevUsage;
46
+ model?: string;
47
+ }
48
+ export type JevFetch = typeof fetch;
49
+ /**
50
+ * One System One call fanning out every Noul question in parallel. Throws
51
+ * JevError on transport, HTTP, or envelope-level failures; individual missing
52
+ * answers are reported in `missing` instead (treated as "no" by callers).
53
+ */
54
+ export declare function evaluateNouls(connection: JevConnection, state: unknown, questions: Record<string, string>, fetchImpl?: JevFetch): Promise<JevNoulResult>;
55
+ /** One Choice answer: the selected option plus its probability distribution peak. */
56
+ export interface JevChoiceAnswer {
57
+ choice: string;
58
+ confidence: number;
59
+ }
60
+ export interface JevChoiceResult {
61
+ /** Per-question selected option; ids with a missing or malformed answer are absent. */
62
+ answers: Record<string, JevChoiceAnswer>;
63
+ /** Question ids the API omitted or returned in an unexpected shape. */
64
+ missing: string[];
65
+ usage?: JevUsage;
66
+ model?: string;
67
+ }
68
+ /**
69
+ * One System One call fanning out Choice questions. `criteria` maps each
70
+ * option id to its plain-language description; an explicit escape option
71
+ * (e.g. "other") belongs in the caller's criteria, per the Jev docs' advice.
72
+ */
73
+ export declare function evaluateChoices(connection: JevConnection, state: unknown, questions: Record<string, {
74
+ instructions: string;
75
+ criteria: Record<string, string>;
76
+ }>, fetchImpl?: JevFetch): Promise<JevChoiceResult>;
77
+ /**
78
+ * Jev-backed SemanticAdjudicator. Every unordered finding pair inside a
79
+ * candidate group becomes one Noul question; all pairs across all groups go
80
+ * out in a single System One call. Each pair above the no-merge floor becomes
81
+ * a proposed merge whose confidence is the pair probability — the matcher's
82
+ * union-find and SEMANTIC_MATCH_CONFIDENCE_THRESHOLD stay the single policy
83
+ * point, and its provenance validation re-checks every id we emit.
84
+ */
85
+ export declare function createJevAdjudicator(connection: JevConnection, options?: {
86
+ fetchImpl?: JevFetch;
87
+ }): SemanticAdjudicator;
88
+ /** Adjudicator wrapper with its runtime-resolved engine and fallback note. */
89
+ export interface AdjudicatorWithEngine {
90
+ adjudicator: SemanticAdjudicator;
91
+ engine(): "jev" | "pi";
92
+ note(): string | undefined;
93
+ }
94
+ /**
95
+ * Enhancement wrapper: try the Jev adjudicator first; on any failure degrade
96
+ * to the Pi adjudicator so a Jev outage can never make a panel worse than the
97
+ * pre-Jev behavior. The engine/note getters settle after adjudication ran.
98
+ */
99
+ export declare function withAdjudicationFallback(primary: SemanticAdjudicator, fallback: SemanticAdjudicator, onFallback?: (message: string) => void): AdjudicatorWithEngine;
100
+ //# sourceMappingURL=jev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jev.d.ts","sourceRoot":"","sources":["../src/jev.ts"],"names":[],"mappings":"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"}