opencode-magi 0.0.0-dev-20260525141349 → 0.0.0-dev-20260525164734

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
- ...Object.entries(input.outputs).map(([reviewer, output]) => `- ${reviewer}: ${output.verdict}`),
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
- ...Object.entries(input.outputs).map(([reviewer, output]) => formatReviewMarker({
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 && skippedReviewers.length) {
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 skippedReviewers) {
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-20260525141349",
3
+ "version": "0.0.0-dev-20260525164734",
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>",
@@ -28,26 +28,26 @@
28
28
  "schema.json"
29
29
  ],
30
30
  "dependencies": {
31
- "@opencode-ai/plugin": "^1.15.5",
31
+ "@opencode-ai/plugin": "^1.15.10",
32
32
  "ajv": "^8.20.0",
33
33
  "picomatch": "^4.0.4",
34
- "valibot": "^1.4.0"
34
+ "valibot": "^1.4.1"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@changesets/changelog-github": "^0.7.0",
38
38
  "@changesets/cli": "^2.30.0",
39
39
  "@commitlint/cli": "^21.0.1",
40
40
  "@commitlint/config-conventional": "^21.0.1",
41
- "@types/node": "^25.9.0",
41
+ "@types/node": "^25.9.1",
42
42
  "@types/picomatch": "^4.0.3",
43
- "@typescript/native-preview": "7.0.0-dev.20260518.1",
43
+ "@typescript/native-preview": "7.0.0-dev.20260525.1",
44
44
  "@vitest/coverage-v8": "^4.1.7",
45
45
  "@vitest/ui": "^4.1.7",
46
46
  "eslint-plugin-perfectionist": "^5.9.0",
47
47
  "eslint-plugin-unused-imports": "^4.4.1",
48
- "lefthook": "^2.1.6",
49
- "oxfmt": "^0.50.0",
50
- "oxlint": "^1.65.0",
48
+ "lefthook": "^2.1.8",
49
+ "oxfmt": "^0.51.0",
50
+ "oxlint": "^1.66.0",
51
51
  "oxlint-tsgolint": "^0.23.0",
52
52
  "rimraf": "^6.1.3",
53
53
  "vitest": "^4.1.7"