opencode-magi 0.0.0-dev-20260525141349 → 0.0.0-dev-20260525154011
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.
|
@@ -218,7 +218,6 @@ async function runRereview(input, worktreePath, previousHeadSha, cycle, sessionI
|
|
|
218
218
|
const singleModeThreads = singleReviewMode
|
|
219
219
|
? assignThreadsByReviewFindingMarker({
|
|
220
220
|
fallbackReviewerKeys: reviewerKeys,
|
|
221
|
-
headSha,
|
|
222
221
|
pr: input.pr,
|
|
223
222
|
reviewerKeys,
|
|
224
223
|
threads: options.dryRunThreads == null
|
|
@@ -531,13 +531,29 @@ function outputFindings(reviewer, output) {
|
|
|
531
531
|
}));
|
|
532
532
|
}
|
|
533
533
|
function singleReviewBody(input) {
|
|
534
|
+
const outputs = Object.entries(input.outputs).sort(([a], [b]) => a.localeCompare(b));
|
|
535
|
+
const closeReasons = outputs.flatMap(([reviewer, output]) => output.verdict === "CLOSE"
|
|
536
|
+
? [`- ${reviewer}: ${output.reason ?? "Close requested."}`]
|
|
537
|
+
: []);
|
|
538
|
+
const acceptedFindings = outputs.flatMap(([reviewer, output]) => outputFindings(reviewer, output).map(({ finding, index }) => {
|
|
539
|
+
const line = finding.startLine == null || finding.startLine === finding.line
|
|
540
|
+
? String(finding.line)
|
|
541
|
+
: `${finding.startLine}-${finding.line}`;
|
|
542
|
+
return `- ${reviewer} #${index + 1} ${finding.path}:${line}: ${finding.issue} Fix: ${finding.fix}`;
|
|
543
|
+
}));
|
|
534
544
|
const lines = [
|
|
535
545
|
`Magi single-account review result: ${input.verdict}.`,
|
|
536
546
|
"",
|
|
537
547
|
"Logical reviewer verdicts:",
|
|
538
|
-
...
|
|
548
|
+
...outputs.map(([reviewer, output]) => `- ${reviewer}: ${output.verdict}`),
|
|
549
|
+
...(input.verdict === "CLOSE" && closeReasons.length
|
|
550
|
+
? ["", "Close reasons:", ...closeReasons]
|
|
551
|
+
: []),
|
|
552
|
+
...(input.verdict === "CHANGES_REQUESTED" && acceptedFindings.length
|
|
553
|
+
? ["", "Accepted change requests:", ...acceptedFindings]
|
|
554
|
+
: []),
|
|
539
555
|
"",
|
|
540
|
-
...
|
|
556
|
+
...outputs.map(([reviewer, output]) => formatReviewMarker({
|
|
541
557
|
head: input.headSha,
|
|
542
558
|
pr: input.pr,
|
|
543
559
|
reviewer,
|
|
@@ -925,19 +941,21 @@ export async function runReview(input) {
|
|
|
925
941
|
const skippedReviewers = input.repository.agents.reviewers.filter((reviewer) => {
|
|
926
942
|
return (preliminaryMode.assignments.get(reviewAssignmentKey(input.repository, reviewer))?.type === "skip");
|
|
927
943
|
});
|
|
928
|
-
if (singleReviewMode
|
|
944
|
+
if (singleReviewMode) {
|
|
929
945
|
const account = input.repository.review?.account ?? "";
|
|
930
946
|
const threads = await fetchUnresolvedThreads(exec, input.repository, input.pr, account);
|
|
931
947
|
const assigned = assignThreadsByReviewFindingMarker({
|
|
932
948
|
fallbackReviewerKeys: reviewerKeys,
|
|
933
|
-
headSha: meta.headRefOid,
|
|
934
949
|
pr: input.pr,
|
|
935
950
|
reviewerKeys,
|
|
936
951
|
threads,
|
|
937
952
|
});
|
|
938
|
-
for (const reviewer of
|
|
953
|
+
for (const reviewer of input.repository.agents.reviewers) {
|
|
939
954
|
const reviewerThreads = assigned[reviewer.key] ?? [];
|
|
940
955
|
unresolvedThreadsByReviewer.set(reviewer.key, reviewerThreads);
|
|
956
|
+
if (preliminaryMode.assignments.get(reviewer.key)?.type !== "skip") {
|
|
957
|
+
continue;
|
|
958
|
+
}
|
|
941
959
|
if (hasPendingThreadReply(reviewerThreads, account)) {
|
|
942
960
|
pendingThreadReplyReviewers.add(reviewer.key);
|
|
943
961
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-magi",
|
|
3
|
-
"version": "0.0.0-dev-
|
|
3
|
+
"version": "0.0.0-dev-20260525154011",
|
|
4
4
|
"description": "Multi-agent PR review and merge orchestration plugin for OpenCode.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Hirotomo Yamada <hirotomo.yamada@avap.co.jp>",
|