@diff-review-system/drs 2.2.1 → 3.0.0-rc.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.
- package/README.md +228 -92
- package/dist/ci/runner.d.ts.map +1 -1
- package/dist/ci/runner.js +19 -22
- package/dist/ci/runner.js.map +1 -1
- package/dist/cli/describe-mr.d.ts.map +1 -1
- package/dist/cli/describe-mr.js +39 -20
- package/dist/cli/describe-mr.js.map +1 -1
- package/dist/cli/describe-pr.d.ts.map +1 -1
- package/dist/cli/describe-pr.js +39 -20
- package/dist/cli/describe-pr.js.map +1 -1
- package/dist/cli/index.js +11 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +30 -2
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/post-comments.d.ts.map +1 -1
- package/dist/cli/post-comments.js +5 -5
- package/dist/cli/post-comments.js.map +1 -1
- package/dist/cli/review-local.d.ts.map +1 -1
- package/dist/cli/review-local.integration.test.d.ts +2 -0
- package/dist/cli/review-local.integration.test.d.ts.map +1 -0
- package/dist/cli/review-local.integration.test.js +343 -0
- package/dist/cli/review-local.integration.test.js.map +1 -0
- package/dist/cli/review-local.js +5 -4
- package/dist/cli/review-local.js.map +1 -1
- package/dist/cli/review-local.live.e2e.test.d.ts +2 -0
- package/dist/cli/review-local.live.e2e.test.d.ts.map +1 -0
- package/dist/cli/review-local.live.e2e.test.js +154 -0
- package/dist/cli/review-local.live.e2e.test.js.map +1 -0
- package/dist/cli/review-local.test.d.ts +2 -0
- package/dist/cli/review-local.test.d.ts.map +1 -0
- package/dist/cli/review-local.test.js +164 -0
- package/dist/cli/review-local.test.js.map +1 -0
- package/dist/cli/review-mr.d.ts +1 -1
- package/dist/cli/review-mr.d.ts.map +1 -1
- package/dist/cli/review-mr.js +92 -17
- package/dist/cli/review-mr.js.map +1 -1
- package/dist/cli/review-mr.test.d.ts +2 -0
- package/dist/cli/review-mr.test.d.ts.map +1 -0
- package/dist/cli/review-mr.test.js +142 -0
- package/dist/cli/review-mr.test.js.map +1 -0
- package/dist/cli/review-pr.d.ts +1 -1
- package/dist/cli/review-pr.d.ts.map +1 -1
- package/dist/cli/review-pr.js +96 -13
- package/dist/cli/review-pr.js.map +1 -1
- package/dist/cli/review-pr.test.d.ts +2 -0
- package/dist/cli/review-pr.test.d.ts.map +1 -0
- package/dist/cli/review-pr.test.js +137 -0
- package/dist/cli/review-pr.test.js.map +1 -0
- package/dist/cli/show-changes.js +4 -4
- package/dist/github/platform-adapter.js +2 -2
- package/dist/gitlab/client.js +1 -1
- package/dist/lib/code-quality-report.js +1 -1
- package/dist/lib/comment-formatter.d.ts +2 -1
- package/dist/lib/comment-formatter.d.ts.map +1 -1
- package/dist/lib/comment-formatter.js +33 -1
- package/dist/lib/comment-formatter.js.map +1 -1
- package/dist/lib/comment-formatter.test.js +43 -0
- package/dist/lib/comment-formatter.test.js.map +1 -1
- package/dist/lib/comment-manager.d.ts.map +1 -1
- package/dist/lib/comment-manager.js +4 -3
- package/dist/lib/comment-manager.js.map +1 -1
- package/dist/lib/comment-poster.d.ts +2 -1
- package/dist/lib/comment-poster.d.ts.map +1 -1
- package/dist/lib/comment-poster.js +2 -2
- package/dist/lib/comment-poster.js.map +1 -1
- package/dist/lib/comment-poster.test.js +27 -11
- package/dist/lib/comment-poster.test.js.map +1 -1
- package/dist/lib/config-model-overrides.test.d.ts +1 -1
- package/dist/lib/config-model-overrides.test.js +2 -2
- package/dist/lib/config-model-overrides.test.js.map +1 -1
- package/dist/lib/config.d.ts +34 -7
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +35 -13
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/config.test.js +16 -0
- package/dist/lib/config.test.js.map +1 -1
- package/dist/lib/context-compression.d.ts +27 -1
- package/dist/lib/context-compression.d.ts.map +1 -1
- package/dist/lib/context-compression.js +106 -4
- package/dist/lib/context-compression.js.map +1 -1
- package/dist/lib/context-compression.test.js +305 -1
- package/dist/lib/context-compression.test.js.map +1 -1
- package/dist/lib/context-loader.d.ts +3 -2
- package/dist/lib/context-loader.d.ts.map +1 -1
- package/dist/lib/context-loader.js +11 -11
- package/dist/lib/context-loader.js.map +1 -1
- package/dist/lib/description-executor.d.ts +19 -2
- package/dist/lib/description-executor.d.ts.map +1 -1
- package/dist/lib/description-executor.js +52 -21
- package/dist/lib/description-executor.js.map +1 -1
- package/dist/lib/description-executor.test.d.ts +2 -0
- package/dist/lib/description-executor.test.d.ts.map +1 -0
- package/dist/lib/description-executor.test.js +120 -0
- package/dist/lib/description-executor.test.js.map +1 -0
- package/dist/lib/description-formatter.d.ts +8 -3
- package/dist/lib/description-formatter.d.ts.map +1 -1
- package/dist/lib/description-formatter.js +88 -13
- package/dist/lib/description-formatter.js.map +1 -1
- package/dist/lib/description-formatter.test.d.ts +2 -0
- package/dist/lib/description-formatter.test.d.ts.map +1 -0
- package/dist/lib/description-formatter.test.js +57 -0
- package/dist/lib/description-formatter.test.js.map +1 -0
- package/dist/lib/diff-parser.test.d.ts +2 -0
- package/dist/lib/diff-parser.test.d.ts.map +1 -0
- package/dist/lib/diff-parser.test.js +335 -0
- package/dist/lib/diff-parser.test.js.map +1 -0
- package/dist/lib/exit.d.ts +35 -0
- package/dist/lib/exit.d.ts.map +1 -0
- package/dist/lib/exit.js +53 -0
- package/dist/lib/exit.js.map +1 -0
- package/dist/lib/exit.test.d.ts +2 -0
- package/dist/lib/exit.test.d.ts.map +1 -0
- package/dist/lib/exit.test.js +120 -0
- package/dist/lib/exit.test.js.map +1 -0
- package/dist/lib/format-utils.d.ts +3 -0
- package/dist/lib/format-utils.d.ts.map +1 -0
- package/dist/lib/format-utils.js +7 -0
- package/dist/lib/format-utils.js.map +1 -0
- package/dist/lib/json-output.d.ts +4 -1
- package/dist/lib/json-output.d.ts.map +1 -1
- package/dist/lib/json-output.js +2 -1
- package/dist/lib/json-output.js.map +1 -1
- package/dist/lib/json-output.test.d.ts +2 -0
- package/dist/lib/json-output.test.d.ts.map +1 -0
- package/dist/lib/json-output.test.js +135 -0
- package/dist/lib/json-output.test.js.map +1 -0
- package/dist/lib/logger.d.ts +10 -2
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +22 -4
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/logger.test.d.ts +2 -0
- package/dist/lib/logger.test.d.ts.map +1 -0
- package/dist/lib/logger.test.js +324 -0
- package/dist/lib/logger.test.js.map +1 -0
- package/dist/lib/position-validator.test.d.ts +2 -0
- package/dist/lib/position-validator.test.d.ts.map +1 -0
- package/dist/lib/position-validator.test.js +128 -0
- package/dist/lib/position-validator.test.js.map +1 -0
- package/dist/lib/repository-validator.js +1 -1
- package/dist/lib/review-core.d.ts +9 -4
- package/dist/lib/review-core.d.ts.map +1 -1
- package/dist/lib/review-core.js +207 -112
- package/dist/lib/review-core.js.map +1 -1
- package/dist/lib/review-core.test.js +76 -30
- package/dist/lib/review-core.test.js.map +1 -1
- package/dist/lib/review-orchestrator.d.ts +12 -7
- package/dist/lib/review-orchestrator.d.ts.map +1 -1
- package/dist/lib/review-orchestrator.js +78 -22
- package/dist/lib/review-orchestrator.js.map +1 -1
- package/dist/lib/review-orchestrator.test.js +160 -42
- package/dist/lib/review-orchestrator.test.js.map +1 -1
- package/dist/lib/review-parser.test.d.ts +2 -0
- package/dist/lib/review-parser.test.d.ts.map +1 -0
- package/dist/lib/review-parser.test.js +130 -0
- package/dist/lib/review-parser.test.js.map +1 -0
- package/dist/lib/review-usage.d.ts +32 -0
- package/dist/lib/review-usage.d.ts.map +1 -0
- package/dist/lib/review-usage.js +72 -0
- package/dist/lib/review-usage.js.map +1 -0
- package/dist/lib/review-usage.test.d.ts +2 -0
- package/dist/lib/review-usage.test.d.ts.map +1 -0
- package/dist/lib/review-usage.test.js +83 -0
- package/dist/lib/review-usage.test.js.map +1 -0
- package/dist/lib/unified-review-executor.d.ts +6 -2
- package/dist/lib/unified-review-executor.d.ts.map +1 -1
- package/dist/lib/unified-review-executor.js +54 -28
- package/dist/lib/unified-review-executor.js.map +1 -1
- package/dist/lib/unified-review-executor.test.js +138 -16
- package/dist/lib/unified-review-executor.test.js.map +1 -1
- package/dist/lib/write-json-output.test.d.ts +2 -0
- package/dist/lib/write-json-output.test.d.ts.map +1 -0
- package/dist/lib/write-json-output.test.js +259 -0
- package/dist/lib/write-json-output.test.js.map +1 -0
- package/dist/pi/sdk.d.ts +94 -0
- package/dist/pi/sdk.d.ts.map +1 -0
- package/dist/pi/sdk.js +486 -0
- package/dist/pi/sdk.js.map +1 -0
- package/dist/pi/sdk.test.d.ts +2 -0
- package/dist/pi/sdk.test.d.ts.map +1 -0
- package/dist/pi/sdk.test.js +331 -0
- package/dist/pi/sdk.test.js.map +1 -0
- package/dist/{opencode → runtime}/agent-loader.d.ts +7 -5
- package/dist/runtime/agent-loader.d.ts.map +1 -0
- package/dist/{opencode → runtime}/agent-loader.js +24 -19
- package/dist/runtime/agent-loader.js.map +1 -0
- package/dist/runtime/agent-loader.test.d.ts +2 -0
- package/dist/runtime/agent-loader.test.d.ts.map +1 -0
- package/dist/runtime/agent-loader.test.js +280 -0
- package/dist/runtime/agent-loader.test.js.map +1 -0
- package/dist/runtime/built-in-paths.d.ts +2 -0
- package/dist/runtime/built-in-paths.d.ts.map +1 -0
- package/dist/runtime/built-in-paths.js +14 -0
- package/dist/runtime/built-in-paths.js.map +1 -0
- package/dist/{opencode → runtime}/client.d.ts +35 -18
- package/dist/runtime/client.d.ts.map +1 -0
- package/dist/runtime/client.js +486 -0
- package/dist/runtime/client.js.map +1 -0
- package/dist/{opencode → runtime}/client.test.d.ts.map +1 -1
- package/dist/runtime/client.test.js +392 -0
- package/dist/runtime/client.test.js.map +1 -0
- package/dist/runtime/path-config.d.ts +8 -0
- package/dist/runtime/path-config.d.ts.map +1 -0
- package/dist/runtime/path-config.js +68 -0
- package/dist/runtime/path-config.js.map +1 -0
- package/dist/runtime/path-config.test.d.ts +2 -0
- package/dist/runtime/path-config.test.d.ts.map +1 -0
- package/dist/runtime/path-config.test.js +103 -0
- package/dist/runtime/path-config.test.js.map +1 -0
- package/package.json +5 -5
- package/.opencode/opencode.jsonc +0 -15
- package/.opencode/tool/write_json_output.ts +0 -24
- package/.opencode/tools/drs_skill.ts +0 -67
- package/dist/lib/skills-prompt.d.ts +0 -3
- package/dist/lib/skills-prompt.d.ts.map +0 -1
- package/dist/lib/skills-prompt.js +0 -70
- package/dist/lib/skills-prompt.js.map +0 -1
- package/dist/opencode/agent-loader.d.ts.map +0 -1
- package/dist/opencode/agent-loader.js.map +0 -1
- package/dist/opencode/client.d.ts.map +0 -1
- package/dist/opencode/client.js +0 -456
- package/dist/opencode/client.js.map +0 -1
- package/dist/opencode/client.test.js +0 -317
- package/dist/opencode/client.test.js.map +0 -1
- package/dist/opencode/opencode-paths.d.ts +0 -2
- package/dist/opencode/opencode-paths.d.ts.map +0 -1
- package/dist/opencode/opencode-paths.js +0 -7
- package/dist/opencode/opencode-paths.js.map +0 -1
- package/dist/opencode/skill-loader.d.ts +0 -15
- package/dist/opencode/skill-loader.d.ts.map +0 -1
- package/dist/opencode/skill-loader.js +0 -88
- package/dist/opencode/skill-loader.js.map +0 -1
- /package/{.opencode/agent → .pi/agents}/describe/pr-describer.md +0 -0
- /package/{.opencode/agent → .pi/agents}/review/documentation.md +0 -0
- /package/{.opencode/agent → .pi/agents}/review/performance.md +0 -0
- /package/{.opencode/agent → .pi/agents}/review/quality.md +0 -0
- /package/{.opencode/agent → .pi/agents}/review/security.md +0 -0
- /package/{.opencode/agent → .pi/agents}/review/style.md +0 -0
- /package/{.opencode/agent → .pi/agents}/review/unified-reviewer.md +0 -0
- /package/dist/{opencode → runtime}/client.test.d.ts +0 -0
package/dist/lib/review-core.js
CHANGED
|
@@ -5,54 +5,21 @@
|
|
|
5
5
|
* between review-orchestrator.ts (local) and unified-review-executor.ts (platform).
|
|
6
6
|
*/
|
|
7
7
|
import chalk from 'chalk';
|
|
8
|
-
import { getAgentNames } from './config.js';
|
|
8
|
+
import { getAgentNames, getDefaultSkills, normalizeAgentConfig } from './config.js';
|
|
9
9
|
import { buildReviewPrompt } from './context-loader.js';
|
|
10
|
-
import { buildSkillPromptSection } from './skills-prompt.js';
|
|
11
10
|
import { parseReviewIssues } from './issue-parser.js';
|
|
12
11
|
import { parseReviewOutput } from './review-parser.js';
|
|
13
12
|
import { calculateSummary } from './comment-formatter.js';
|
|
14
|
-
import { loadReviewAgents } from '../
|
|
13
|
+
import { loadReviewAgents } from '../runtime/agent-loader.js';
|
|
15
14
|
import { createIssueFingerprint } from './comment-manager.js';
|
|
16
15
|
import { getLogger } from './logger.js';
|
|
16
|
+
import { aggregateAgentUsage, applyUsageMessage, createAgentUsageSummary, } from './review-usage.js';
|
|
17
17
|
const REVIEW_SEVERITY_ORDER = {
|
|
18
18
|
LOW: 1,
|
|
19
19
|
MEDIUM: 2,
|
|
20
20
|
HIGH: 3,
|
|
21
21
|
CRITICAL: 4,
|
|
22
22
|
};
|
|
23
|
-
/**
|
|
24
|
-
* Try to parse a tool message as a drs_skill tool result
|
|
25
|
-
* Returns the skill info if it's a skill tool call, null otherwise
|
|
26
|
-
*/
|
|
27
|
-
function parseSkillToolResult(content) {
|
|
28
|
-
try {
|
|
29
|
-
const parsed = JSON.parse(content);
|
|
30
|
-
// Check for the _tool identifier we added
|
|
31
|
-
if (parsed._tool === 'drs_skill' && parsed.skill_name) {
|
|
32
|
-
return {
|
|
33
|
-
skillName: parsed.skill_name,
|
|
34
|
-
hasInstructions: Boolean(parsed.instructions),
|
|
35
|
-
hasScripts: Boolean(parsed.has_scripts),
|
|
36
|
-
hasReferences: Boolean(parsed.has_references),
|
|
37
|
-
hasAssets: Boolean(parsed.has_assets),
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
// Fallback: check for skill_name field even without _tool marker
|
|
41
|
-
if (parsed.skill_name && parsed.instructions !== undefined) {
|
|
42
|
-
return {
|
|
43
|
-
skillName: parsed.skill_name,
|
|
44
|
-
hasInstructions: Boolean(parsed.instructions),
|
|
45
|
-
hasScripts: Boolean(parsed.has_scripts),
|
|
46
|
-
hasReferences: Boolean(parsed.has_references),
|
|
47
|
-
hasAssets: Boolean(parsed.has_assets),
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
catch {
|
|
52
|
-
// Not JSON or not a skill tool result
|
|
53
|
-
}
|
|
54
|
-
return null;
|
|
55
|
-
}
|
|
56
23
|
/**
|
|
57
24
|
* Build base review instructions for agents
|
|
58
25
|
*
|
|
@@ -123,16 +90,17 @@ ${compressionSummary ? `${compressionSummary}\n\n` : ''}Output requirements:
|
|
|
123
90
|
]
|
|
124
91
|
}
|
|
125
92
|
|
|
126
|
-
**
|
|
127
|
-
1.
|
|
128
|
-
2.
|
|
93
|
+
**Analysis approach:**
|
|
94
|
+
1. First, use Grep or Read to quickly understand the project's existing patterns relevant to the changed files (e.g., existing validation, error handling, auth patterns, naming conventions).
|
|
95
|
+
2. Then analyze the diff content above against those established patterns.
|
|
96
|
+
|
|
97
|
+
**Review rules:**
|
|
129
98
|
3. **IMPORTANT: Only report issues on lines that were actually changed or added (lines starting with + in the diff).** Do not report issues on unchanged code.
|
|
130
|
-
4.
|
|
99
|
+
4. Only flag deviations or new risks introduced by the changes.
|
|
131
100
|
5. Populate summary counts based on the issues you report (use 0 when none).
|
|
132
101
|
6. Focus on the changes - only report issues for newly added or modified lines (lines with + prefix in the diff).`;
|
|
133
102
|
}
|
|
134
|
-
// No diff content available -
|
|
135
|
-
const fallbackCommand = diffCommand || 'git diff HEAD~1 -- <file>';
|
|
103
|
+
// No diff content available - instruct agent to read files directly
|
|
136
104
|
return `Review the following changed files from ${label}:
|
|
137
105
|
|
|
138
106
|
${fileList}
|
|
@@ -181,8 +149,8 @@ Output requirements:
|
|
|
181
149
|
}
|
|
182
150
|
|
|
183
151
|
**Instructions:**
|
|
184
|
-
1.
|
|
185
|
-
2.
|
|
152
|
+
1. The diffs for these files were omitted due to size constraints. Use the Read tool to examine the changed files listed above.
|
|
153
|
+
2. Focus your review on newly added or modified code patterns.
|
|
186
154
|
3. **IMPORTANT: Only report issues on lines that were actually changed or added.** Do not report issues on existing code that was not modified.
|
|
187
155
|
4. Analyze the changed code for issues in your specialty area
|
|
188
156
|
5. Populate summary counts based on the issues you report (use 0 when none).
|
|
@@ -193,27 +161,29 @@ Output requirements:
|
|
|
193
161
|
*/
|
|
194
162
|
function getConfiguredAgentInfo(config, workingDir) {
|
|
195
163
|
const configuredNames = getAgentNames(config);
|
|
196
|
-
const allAgents = loadReviewAgents(workingDir);
|
|
164
|
+
const allAgents = loadReviewAgents(workingDir, config);
|
|
197
165
|
return configuredNames
|
|
198
166
|
.map((name) => {
|
|
199
167
|
const fullName = `review/${name}`;
|
|
200
168
|
const agent = allAgents.find((a) => a.name === fullName);
|
|
201
169
|
return {
|
|
202
170
|
name,
|
|
203
|
-
description: agent?.description
|
|
171
|
+
description: agent?.description ?? `${name} review agent`,
|
|
204
172
|
};
|
|
205
173
|
})
|
|
206
174
|
.filter((a) => a !== null);
|
|
207
175
|
}
|
|
208
|
-
function
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
|
|
176
|
+
function validateConfiguredReviewAgents(config, workingDir) {
|
|
177
|
+
const configuredNames = getAgentNames(config);
|
|
178
|
+
const availableAgents = new Set(loadReviewAgents(workingDir, config)
|
|
179
|
+
.filter((agent) => agent.name.startsWith('review/'))
|
|
180
|
+
.map((agent) => agent.name.replace(/^review\//, '')));
|
|
181
|
+
const missingAgents = configuredNames.filter((name) => !availableAgents.has(name));
|
|
182
|
+
if (missingAgents.length === 0) {
|
|
183
|
+
return;
|
|
212
184
|
}
|
|
213
|
-
const
|
|
214
|
-
|
|
215
|
-
const limitedChars = limitedLines.length > maxChars ? `${limitedLines.slice(0, maxChars)}…` : limitedLines;
|
|
216
|
-
return limitedChars;
|
|
185
|
+
const availableList = Array.from(availableAgents).sort();
|
|
186
|
+
throw new Error(`Unknown review agent(s) configured: ${missingAgents.join(', ')}. Available agents: ${availableList.join(', ')}`);
|
|
217
187
|
}
|
|
218
188
|
function resolveReviewMode(config) {
|
|
219
189
|
return config.review.mode ?? 'multi-agent';
|
|
@@ -234,14 +204,85 @@ function mergeIssues(primary, secondary) {
|
|
|
234
204
|
}
|
|
235
205
|
return merged;
|
|
236
206
|
}
|
|
237
|
-
|
|
207
|
+
function summarizeRunUsage(agentResults) {
|
|
208
|
+
const agentUsage = agentResults
|
|
209
|
+
.map((result) => {
|
|
210
|
+
const usage = result.usage ?? createAgentUsageSummary(result.agentType);
|
|
211
|
+
return {
|
|
212
|
+
...usage,
|
|
213
|
+
success: result.success,
|
|
214
|
+
};
|
|
215
|
+
})
|
|
216
|
+
.sort((a, b) => a.agentType.localeCompare(b.agentType));
|
|
217
|
+
return aggregateAgentUsage(agentUsage);
|
|
218
|
+
}
|
|
219
|
+
function getConfiguredSkillsForAgent(config, agentType) {
|
|
220
|
+
const defaultSkills = getDefaultSkills(config);
|
|
221
|
+
const normalizedAgents = normalizeAgentConfig(config.review.agents);
|
|
222
|
+
const agentConfig = normalizedAgents.find((agent) => agent.name === agentType || agent.name === `review/${agentType}`);
|
|
223
|
+
const agentSkills = (agentConfig?.skills ?? []).map(String).filter((skill) => skill.length > 0);
|
|
224
|
+
return [...new Set([...defaultSkills, ...agentSkills])];
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Detect skill loading from Pi's native flow.
|
|
228
|
+
*
|
|
229
|
+
* Pi agents load skills by reading SKILL.md files via the `read` tool.
|
|
230
|
+
* This matches tool output that contains a SKILL.md path and returns
|
|
231
|
+
* the skill name (parent directory name of SKILL.md).
|
|
232
|
+
*/
|
|
233
|
+
function extractSkillNameFromReadToolOutput(toolName, content) {
|
|
234
|
+
if (toolName !== 'read')
|
|
235
|
+
return undefined;
|
|
236
|
+
// Match a path ending in /skills/<name>/SKILL.md (case-insensitive)
|
|
237
|
+
const match = content.match(/(?:^|\n)\s*---\s*\n[\s\S]*?name:\s*([\w.-]+)[\s\S]*?---/i);
|
|
238
|
+
if (match?.[1])
|
|
239
|
+
return match[1];
|
|
240
|
+
return undefined;
|
|
241
|
+
}
|
|
242
|
+
function extractSkillNameFromToolOutput(content) {
|
|
243
|
+
const trimmed = content.trim();
|
|
244
|
+
if (!trimmed) {
|
|
245
|
+
return undefined;
|
|
246
|
+
}
|
|
247
|
+
try {
|
|
248
|
+
const parsed = JSON.parse(trimmed);
|
|
249
|
+
if (parsed && typeof parsed === 'object') {
|
|
250
|
+
const record = parsed;
|
|
251
|
+
const candidateKeys = ['name', 'skill', 'skillName', 'id'];
|
|
252
|
+
for (const key of candidateKeys) {
|
|
253
|
+
const value = record[key];
|
|
254
|
+
if (typeof value === 'string' && value.trim().length > 0) {
|
|
255
|
+
return value.trim();
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
catch {
|
|
261
|
+
// Fall through to regex extraction for plain text outputs.
|
|
262
|
+
}
|
|
263
|
+
const match = trimmed.match(/(?:^|\b)(?:skill|name)\s*[:=]\s*["']?([\w.-]+)["']?/i);
|
|
264
|
+
if (match?.[1]) {
|
|
265
|
+
return match[1];
|
|
266
|
+
}
|
|
267
|
+
if (/^[\w.-]+$/.test(trimmed)) {
|
|
268
|
+
return trimmed;
|
|
269
|
+
}
|
|
270
|
+
return undefined;
|
|
271
|
+
}
|
|
272
|
+
export async function runUnifiedReviewAgent(runtime, config, baseInstructions, reviewLabel, filteredFiles, additionalContext = {}, workingDir = process.cwd(), debug = false) {
|
|
238
273
|
const agentType = 'unified-reviewer';
|
|
239
274
|
const agentName = `review/${agentType}`;
|
|
240
275
|
console.log(chalk.bold('🎯 Selected Agents: unified-reviewer\n'));
|
|
241
276
|
console.log(chalk.gray('Running unified review...\n'));
|
|
277
|
+
let agentUsage = createAgentUsageSummary(agentType);
|
|
278
|
+
const configuredSkills = getConfiguredSkillsForAgent(config, agentType);
|
|
279
|
+
let sawSkillToolCall = false;
|
|
280
|
+
const describeSummary = typeof additionalContext.describeSummary === 'string'
|
|
281
|
+
? additionalContext.describeSummary
|
|
282
|
+
: undefined;
|
|
242
283
|
try {
|
|
243
|
-
const
|
|
244
|
-
const
|
|
284
|
+
const reviewPrompt = buildReviewPrompt(agentType, baseInstructions, reviewLabel, filteredFiles, workingDir, config, describeSummary);
|
|
285
|
+
const logger = getLogger();
|
|
245
286
|
if (debug) {
|
|
246
287
|
console.log(chalk.gray('┌── DEBUG: Message sent to review agent'));
|
|
247
288
|
console.log(chalk.gray(`│ Agent: ${agentName}`));
|
|
@@ -251,7 +292,10 @@ export async function runUnifiedReviewAgent(opencode, config, baseInstructions,
|
|
|
251
292
|
console.log(chalk.gray('─'.repeat(60)));
|
|
252
293
|
console.log(chalk.gray(`└── End message for ${agentName}\n`));
|
|
253
294
|
}
|
|
254
|
-
|
|
295
|
+
else {
|
|
296
|
+
logger.agentInput(agentType, reviewPrompt);
|
|
297
|
+
}
|
|
298
|
+
const session = await runtime.createSession({
|
|
255
299
|
agent: agentName,
|
|
256
300
|
message: reviewPrompt,
|
|
257
301
|
context: {
|
|
@@ -261,26 +305,25 @@ export async function runUnifiedReviewAgent(opencode, config, baseInstructions,
|
|
|
261
305
|
});
|
|
262
306
|
const agentIssues = [];
|
|
263
307
|
let fullResponse = '';
|
|
264
|
-
const
|
|
265
|
-
const logger = getLogger();
|
|
266
|
-
for await (const message of opencode.streamMessages(session.id)) {
|
|
308
|
+
for await (const message of runtime.streamMessages(session.id)) {
|
|
267
309
|
if (message.role === 'tool') {
|
|
268
|
-
//
|
|
269
|
-
const
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
310
|
+
// Detect skill loading: legacy 'skill' tool or Pi-native read of SKILL.md
|
|
311
|
+
const skillFromLegacy = message.toolName === 'skill'
|
|
312
|
+
? extractSkillNameFromToolOutput(message.content)
|
|
313
|
+
: undefined;
|
|
314
|
+
const skillFromRead = extractSkillNameFromReadToolOutput(message.toolName, message.content);
|
|
315
|
+
const skillName = skillFromLegacy ?? skillFromRead;
|
|
316
|
+
if (skillName) {
|
|
317
|
+
logger.skillLoaded(skillName, agentType);
|
|
318
|
+
sawSkillToolCall = true;
|
|
277
319
|
}
|
|
278
320
|
else {
|
|
279
|
-
logger.toolOutput('unknown', agentType, message.content);
|
|
321
|
+
logger.toolOutput(message.toolName ?? 'unknown', agentType, message.content);
|
|
280
322
|
}
|
|
281
323
|
continue;
|
|
282
324
|
}
|
|
283
325
|
if (message.role === 'assistant') {
|
|
326
|
+
agentUsage = applyUsageMessage(agentUsage, message);
|
|
284
327
|
if (!message.content.trim()) {
|
|
285
328
|
continue;
|
|
286
329
|
}
|
|
@@ -291,18 +334,14 @@ export async function runUnifiedReviewAgent(opencode, config, baseInstructions,
|
|
|
291
334
|
console.log(chalk.gray(`└── End response for ${agentName}\n`));
|
|
292
335
|
}
|
|
293
336
|
else {
|
|
294
|
-
|
|
295
|
-
if (snippet) {
|
|
296
|
-
console.log(chalk.gray(`[unified] ${snippet}\n`));
|
|
297
|
-
}
|
|
337
|
+
logger.agentMessage(agentType, message.content);
|
|
298
338
|
}
|
|
299
339
|
}
|
|
300
340
|
}
|
|
301
|
-
|
|
302
|
-
// Log skill usage summary if no skills were used (warning)
|
|
303
|
-
if (skillCalls.length === 0) {
|
|
341
|
+
if (configuredSkills.length > 0 && !sawSkillToolCall) {
|
|
304
342
|
logger.noSkillCalls(agentType);
|
|
305
343
|
}
|
|
344
|
+
await runtime.closeSession(session.id);
|
|
306
345
|
try {
|
|
307
346
|
const reviewOutput = await parseReviewOutput(workingDir, debug, fullResponse);
|
|
308
347
|
const parsedIssues = parseReviewIssues(JSON.stringify(reviewOutput), 'unified');
|
|
@@ -320,25 +359,50 @@ export async function runUnifiedReviewAgent(opencode, config, baseInstructions,
|
|
|
320
359
|
throw new Error(`Unified review agent did not return valid JSON output${reason}`);
|
|
321
360
|
}
|
|
322
361
|
const summary = calculateSummary(filteredFiles.length, agentIssues);
|
|
362
|
+
const agentResults = [
|
|
363
|
+
{
|
|
364
|
+
agentType,
|
|
365
|
+
success: true,
|
|
366
|
+
issues: agentIssues,
|
|
367
|
+
usage: {
|
|
368
|
+
...agentUsage,
|
|
369
|
+
success: true,
|
|
370
|
+
},
|
|
371
|
+
},
|
|
372
|
+
];
|
|
323
373
|
return {
|
|
324
374
|
issues: agentIssues,
|
|
325
375
|
summary,
|
|
326
376
|
filesReviewed: filteredFiles.length,
|
|
327
|
-
agentResults
|
|
377
|
+
agentResults,
|
|
378
|
+
usage: summarizeRunUsage(agentResults),
|
|
328
379
|
};
|
|
329
380
|
}
|
|
330
381
|
catch (error) {
|
|
331
382
|
console.error(chalk.red(`✗ unified-reviewer agent failed: ${error}`));
|
|
383
|
+
const agentResults = [
|
|
384
|
+
{
|
|
385
|
+
agentType,
|
|
386
|
+
success: false,
|
|
387
|
+
issues: [],
|
|
388
|
+
usage: {
|
|
389
|
+
...agentUsage,
|
|
390
|
+
success: false,
|
|
391
|
+
},
|
|
392
|
+
},
|
|
393
|
+
];
|
|
332
394
|
return {
|
|
333
395
|
issues: [],
|
|
334
396
|
summary: calculateSummary(filteredFiles.length, []),
|
|
335
397
|
filesReviewed: filteredFiles.length,
|
|
336
|
-
agentResults
|
|
398
|
+
agentResults,
|
|
399
|
+
usage: summarizeRunUsage(agentResults),
|
|
337
400
|
};
|
|
338
401
|
}
|
|
339
402
|
}
|
|
340
|
-
export async function runReviewAgents(
|
|
403
|
+
export async function runReviewAgents(runtime, config, baseInstructions, reviewLabel, filteredFiles, additionalContext = {}, workingDir = process.cwd(), debug = false) {
|
|
341
404
|
console.log(chalk.gray('Starting code analysis...\n'));
|
|
405
|
+
validateConfiguredReviewAgents(config, workingDir);
|
|
342
406
|
const configuredAgentInfo = getConfiguredAgentInfo(config, workingDir);
|
|
343
407
|
if (configuredAgentInfo.length > 0) {
|
|
344
408
|
console.log(chalk.bold('🧰 Available Review Agents'));
|
|
@@ -350,13 +414,19 @@ export async function runReviewAgents(opencode, config, baseInstructions, review
|
|
|
350
414
|
const agentNames = getAgentNames(config);
|
|
351
415
|
console.log(chalk.bold(`🎯 Selected Agents: ${agentNames.join(', ') || 'None'}\n`));
|
|
352
416
|
const agentResults = [];
|
|
417
|
+
const describeSummary = typeof additionalContext.describeSummary === 'string'
|
|
418
|
+
? additionalContext.describeSummary
|
|
419
|
+
: undefined;
|
|
353
420
|
for (const agentType of agentNames) {
|
|
354
421
|
const agentName = `review/${agentType}`;
|
|
355
422
|
console.log(chalk.gray(`Running ${agentType} review...\n`));
|
|
423
|
+
let agentUsage = createAgentUsageSummary(agentType);
|
|
424
|
+
const configuredSkills = getConfiguredSkillsForAgent(config, agentType);
|
|
425
|
+
let sawSkillToolCall = false;
|
|
356
426
|
try {
|
|
357
427
|
// Build prompt with global and agent-specific context
|
|
358
|
-
const
|
|
359
|
-
const
|
|
428
|
+
const reviewPrompt = buildReviewPrompt(agentType, baseInstructions, reviewLabel, filteredFiles, workingDir, config, describeSummary);
|
|
429
|
+
const logger = getLogger();
|
|
360
430
|
if (debug) {
|
|
361
431
|
console.log(chalk.gray('┌── DEBUG: Message sent to review agent'));
|
|
362
432
|
console.log(chalk.gray(`│ Agent: ${agentName}`));
|
|
@@ -366,7 +436,10 @@ export async function runReviewAgents(opencode, config, baseInstructions, review
|
|
|
366
436
|
console.log(chalk.gray('─'.repeat(60)));
|
|
367
437
|
console.log(chalk.gray(`└── End message for ${agentName}\n`));
|
|
368
438
|
}
|
|
369
|
-
|
|
439
|
+
else {
|
|
440
|
+
logger.agentInput(agentType, reviewPrompt);
|
|
441
|
+
}
|
|
442
|
+
const session = await runtime.createSession({
|
|
370
443
|
agent: agentName,
|
|
371
444
|
message: reviewPrompt,
|
|
372
445
|
context: {
|
|
@@ -376,27 +449,26 @@ export async function runReviewAgents(opencode, config, baseInstructions, review
|
|
|
376
449
|
});
|
|
377
450
|
const agentIssues = [];
|
|
378
451
|
let fullResponse = '';
|
|
379
|
-
const skillCalls = [];
|
|
380
|
-
const logger = getLogger();
|
|
381
452
|
// Collect results from this agent
|
|
382
|
-
for await (const message of
|
|
453
|
+
for await (const message of runtime.streamMessages(session.id)) {
|
|
383
454
|
if (message.role === 'tool') {
|
|
384
|
-
//
|
|
385
|
-
const
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
455
|
+
// Detect skill loading: legacy 'skill' tool or Pi-native read of SKILL.md
|
|
456
|
+
const skillFromLegacy = message.toolName === 'skill'
|
|
457
|
+
? extractSkillNameFromToolOutput(message.content)
|
|
458
|
+
: undefined;
|
|
459
|
+
const skillFromRead = extractSkillNameFromReadToolOutput(message.toolName, message.content);
|
|
460
|
+
const skillName = skillFromLegacy ?? skillFromRead;
|
|
461
|
+
if (skillName) {
|
|
462
|
+
logger.skillLoaded(skillName, agentType);
|
|
463
|
+
sawSkillToolCall = true;
|
|
393
464
|
}
|
|
394
465
|
else {
|
|
395
|
-
logger.toolOutput('unknown', agentType, message.content);
|
|
466
|
+
logger.toolOutput(message.toolName ?? 'unknown', agentType, message.content);
|
|
396
467
|
}
|
|
397
468
|
continue;
|
|
398
469
|
}
|
|
399
470
|
if (message.role === 'assistant') {
|
|
471
|
+
agentUsage = applyUsageMessage(agentUsage, message);
|
|
400
472
|
if (!message.content.trim()) {
|
|
401
473
|
continue;
|
|
402
474
|
}
|
|
@@ -407,29 +479,41 @@ export async function runReviewAgents(opencode, config, baseInstructions, review
|
|
|
407
479
|
console.log(chalk.gray(`└── End response for ${agentName}\n`));
|
|
408
480
|
}
|
|
409
481
|
else {
|
|
410
|
-
|
|
411
|
-
if (snippet) {
|
|
412
|
-
console.log(chalk.gray(`[${agentType}] ${snippet}\n`));
|
|
413
|
-
}
|
|
482
|
+
logger.agentMessage(agentType, message.content);
|
|
414
483
|
}
|
|
415
484
|
}
|
|
416
485
|
}
|
|
417
|
-
|
|
418
|
-
// Log skill usage summary if no skills were used (warning)
|
|
419
|
-
if (skillCalls.length === 0) {
|
|
486
|
+
if (configuredSkills.length > 0 && !sawSkillToolCall) {
|
|
420
487
|
logger.noSkillCalls(agentType);
|
|
421
488
|
}
|
|
489
|
+
await runtime.closeSession(session.id);
|
|
422
490
|
const reviewOutput = await parseReviewOutput(workingDir, debug, fullResponse);
|
|
423
491
|
const parsedIssues = parseReviewIssues(JSON.stringify(reviewOutput), agentType);
|
|
424
492
|
if (parsedIssues.length > 0) {
|
|
425
493
|
agentIssues.push(...parsedIssues);
|
|
426
494
|
console.log(chalk.green(`✓ [${agentType}] Found ${parsedIssues.length} issue(s)`));
|
|
427
495
|
}
|
|
428
|
-
agentResults.push({
|
|
496
|
+
agentResults.push({
|
|
497
|
+
agentType,
|
|
498
|
+
success: true,
|
|
499
|
+
issues: agentIssues,
|
|
500
|
+
usage: {
|
|
501
|
+
...agentUsage,
|
|
502
|
+
success: true,
|
|
503
|
+
},
|
|
504
|
+
});
|
|
429
505
|
}
|
|
430
506
|
catch (error) {
|
|
431
507
|
console.error(chalk.red(`✗ ${agentType} agent failed: ${error}`));
|
|
432
|
-
agentResults.push({
|
|
508
|
+
agentResults.push({
|
|
509
|
+
agentType,
|
|
510
|
+
success: false,
|
|
511
|
+
issues: [],
|
|
512
|
+
usage: {
|
|
513
|
+
...agentUsage,
|
|
514
|
+
success: false,
|
|
515
|
+
},
|
|
516
|
+
});
|
|
433
517
|
}
|
|
434
518
|
}
|
|
435
519
|
// Check agent results
|
|
@@ -456,17 +540,18 @@ export async function runReviewAgents(opencode, config, baseInstructions, review
|
|
|
456
540
|
summary,
|
|
457
541
|
filesReviewed: filteredFiles.length,
|
|
458
542
|
agentResults,
|
|
543
|
+
usage: summarizeRunUsage(agentResults),
|
|
459
544
|
};
|
|
460
545
|
}
|
|
461
|
-
export async function runReviewPipeline(
|
|
546
|
+
export async function runReviewPipeline(runtime, config, baseInstructions, reviewLabel, filteredFiles, additionalContext = {}, workingDir = process.cwd(), debug = false) {
|
|
462
547
|
const mode = resolveReviewMode(config);
|
|
463
548
|
if (mode === 'unified') {
|
|
464
|
-
return runUnifiedReviewAgent(
|
|
549
|
+
return runUnifiedReviewAgent(runtime, config, baseInstructions, reviewLabel, filteredFiles, additionalContext, workingDir, debug);
|
|
465
550
|
}
|
|
466
551
|
if (mode === 'multi-agent') {
|
|
467
|
-
return runReviewAgents(
|
|
552
|
+
return runReviewAgents(runtime, config, baseInstructions, reviewLabel, filteredFiles, additionalContext, workingDir, debug);
|
|
468
553
|
}
|
|
469
|
-
const unifiedResult = await runUnifiedReviewAgent(
|
|
554
|
+
const unifiedResult = await runUnifiedReviewAgent(runtime, config, baseInstructions, reviewLabel, filteredFiles, additionalContext, workingDir, debug);
|
|
470
555
|
const unifiedSuccess = unifiedResult.agentResults.every((result) => result.success);
|
|
471
556
|
const threshold = config.review.unified?.severityThreshold ?? 'HIGH';
|
|
472
557
|
const shouldEscalate = unifiedSuccess
|
|
@@ -482,14 +567,16 @@ export async function runReviewPipeline(opencode, config, baseInstructions, revi
|
|
|
482
567
|
else {
|
|
483
568
|
console.log(chalk.yellow('Hybrid mode: escalating to deep review agents.\n'));
|
|
484
569
|
}
|
|
485
|
-
const deepResult = await runReviewAgents(
|
|
570
|
+
const deepResult = await runReviewAgents(runtime, config, baseInstructions, reviewLabel, filteredFiles, additionalContext, workingDir, debug);
|
|
486
571
|
const mergedIssues = mergeIssues(unifiedResult.issues, deepResult.issues);
|
|
487
572
|
const summary = calculateSummary(filteredFiles.length, mergedIssues);
|
|
573
|
+
const combinedAgentResults = [...unifiedResult.agentResults, ...deepResult.agentResults];
|
|
488
574
|
return {
|
|
489
575
|
issues: mergedIssues,
|
|
490
576
|
summary,
|
|
491
577
|
filesReviewed: filteredFiles.length,
|
|
492
|
-
agentResults:
|
|
578
|
+
agentResults: combinedAgentResults,
|
|
579
|
+
usage: summarizeRunUsage(combinedAgentResults),
|
|
493
580
|
};
|
|
494
581
|
}
|
|
495
582
|
/**
|
|
@@ -512,6 +599,14 @@ export function displayReviewSummary(result) {
|
|
|
512
599
|
}
|
|
513
600
|
console.log(` Files reviewed: ${chalk.cyan(result.summary.filesReviewed)}`);
|
|
514
601
|
console.log(` Issues found: ${chalk.yellow(result.summary.issuesFound)}`);
|
|
602
|
+
if (result.usage) {
|
|
603
|
+
console.log(` Tokens (input/output): ${chalk.cyan(`${result.usage.total.input}/${result.usage.total.output}`)}`);
|
|
604
|
+
console.log(` Total tokens: ${chalk.cyan(result.usage.total.totalTokens)}`);
|
|
605
|
+
console.log(` Estimated cost: ${chalk.cyan(`$${result.usage.total.cost.toFixed(4)}`)}`);
|
|
606
|
+
if (result.usage.total.totalTokens > 0 && result.usage.total.cost === 0) {
|
|
607
|
+
console.log(chalk.gray(' Cost is $0.0000 because model pricing is unknown or configured as free. Configure pricing.models to override.'));
|
|
608
|
+
}
|
|
609
|
+
}
|
|
515
610
|
if (result.summary.issuesFound > 0) {
|
|
516
611
|
console.log(` 🔴 Critical: ${chalk.red(result.summary.bySeverity.CRITICAL)}`);
|
|
517
612
|
console.log(` 🟡 High: ${chalk.yellow(result.summary.bySeverity.HIGH)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-core.js","sourceRoot":"","sources":["../../src/lib/review-core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"review-core.js","sourceRoot":"","sources":["../../src/lib/review-core.ts"],"names":[],"mappings":"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"}
|