prreviewbuddy 0.90.0 → 0.92.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/CHANGELOG.md CHANGED
@@ -1,5 +1,63 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.92.0
4
+
5
+ **Older issues catch up on Update.** An issue from an earlier review that is still outstanding now
6
+ gains its summary the next time Update finds new commits or new discussion. The summary is written
7
+ from the evidence the review already holds plus what the update read, and may land in any of the
8
+ four groups. It is a rewording, not a re-check: confidence, severity and the technical account stay
9
+ as they were. Resolved, dismissed and closed issues keep the card they had, and an Update that finds
10
+ nothing new still makes no analysis and changes nothing.
11
+
12
+ **To fix.** Besides **To verify** and **To decide**, a card can now name the change that would
13
+ correct it, marked **To fix**, when the evidence supports one. The line above the issues counts
14
+ fixes separately. Issues are grouped by what they cause and how well that is shown, never by the
15
+ kind of file: a wrong step in a recovery runbook can be a failure.
16
+
17
+ **Questions lead with what they mean.** Each question from a new analysis opens with the question in
18
+ plain terms, why the answer matters, and what is needed. The original question, its reasoning and its
19
+ files are under **Technical context** on the card. Answers so far, including a partial one, stay in
20
+ view. Updates keep each question's framing true, restate it to name only what is still open when part
21
+ of it is answered, and write one for an older question still open.
22
+
23
+ **No leftover notes.** When an update answers a question or changes an issue's status without
24
+ saying anything new about it, the card no longer shows the previous round's note beside the new
25
+ status. Before, a question could read as answered with "this commit did not change it" underneath.
26
+
27
+ **Quieter cards.** The age of the pull request discussion is one line, "PR discussion checked 2 days
28
+ ago", with its explanation one click away and **Re-check in PR context** beside it. Cards are
29
+ tighter, and **Technical details** shares a row with the card's actions.
30
+
31
+ For coding agents, `list_findings` and `findings --json` now carry each issue's `confidence` and
32
+ each question's `framing`, and `next.kind` may be `fix`. `get_finding` carries the same, beside the
33
+ original technical text.
34
+
35
+ ## 0.91.1
36
+
37
+ **Issues lead with what they mean.** Each issue from a new analysis now opens with its consequence:
38
+ a short title saying what can happen, a sentence or two on when and how, and, when there is a
39
+ specific one, the step that would settle it, marked **To verify** or **To decide**. The technical
40
+ title, the reasoning, the code location and the history are under **Technical details** on the
41
+ card, one click (or Enter) away, with nothing to wait for.
42
+
43
+ Outstanding issues are grouped by the decision they ask of you: **Failures**, **Possible risks**,
44
+ **Intent to confirm** and **Maintenance**, each ordered by severity. The group comes from the
45
+ evidence the analysis read, not from its severity or how confident it is; both are still shown on
46
+ every card. The pane opens with one sentence on what the change touches, a count of what is
47
+ outstanding, and buttons to jump to each group. Folding a group is remembered for the next review.
48
+
49
+ Resolved and dismissed issues stay in the closed list at the bottom. An issue the new commits fixed
50
+ leads with what the code now does, when the update could see it in the code; one settled by a
51
+ comment never claims a fix. Updates keep each issue's consequence true: they are shown it, and
52
+ restate or withdraw it when the new commits change what it describes.
53
+
54
+ Reviews made before this are shown as they were, and are not rewritten. Beside the new groups their
55
+ issues sit under **Other issues**; on their own they need no heading.
56
+
57
+ For coding agents, `list_findings` and `get_finding` (and `prreviewbuddy findings --json` and
58
+ `finding --json`) carry each issue's `consequence` and, on an issue the code resolved,
59
+ `resolved_behaviour`, so a list of findings can be triaged without fetching each one.
60
+
3
61
  ## 0.90.0
4
62
 
5
63
  **Connect your coding agent from Settings.** A new **AI integrations** section in Settings shows,
package/dist/main.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { $ as readAskRequest, $i as explanationOf, Ar as attemptIdOf, At as UpdateAlreadyRunningError, Bt as append, Dt as parkedUpdateRefusal, E as relativeTime, Ea as resolveTarget, Er as forgeResolver, F as spawnRunner, Fa as git, Ft as prepareReview, G as reviewTag, Ga as AGENT_IDS, Gr as isClaimed, Gt as recordTelemetryUploadConsent, H as findingRef, Ha as writeAgentPreference, Hr as purposeOf, I as applyUpdate, It as settleReview, J as forgetAskRequest, Ja as agentIdentityOf, Ji as reviewerDispositions, Jr as followedRefName, Jt as BUILD_VERSION, Ka as agentById, Kt as telemetryUploadConsent, L as modelProvenanceOf, La as resolveAgent, Lr as PHASES, Lt as reanalyseReview, Ma as AmbiguousRefError, Mt as runningJobs, Nr as isTerminal$1, Nt as failureOf, P as runDetached, Pr as loadJob, Qa as runnableAgents, Ra as resolveModel, T as runBatch, Ta as kissOutcome, Ua as CONFIG_PATH, Ui as isIssueOutstanding, Ur as clearClaim, Ut as stamp, Va as readAgentPreference, Vr as progressSteps, Wa as STORE_ROOT, Wi as isQuestionOutstanding, Wr as driverGone, Wt as deliver, Xa as isAgentId, Y as interruption, Ya as detectAgents, Yi as verdictClosure, Yt as PACKAGE_NAME, Z as isTerminalAsk, Za as parkedReason, _t as parseWorkspacePort, at as healthyPort, br as findExistingReview, bt as writePortPreference, ca as findingAssessment, di as reviewedRepositories, dr as MANAGED_ROOT, dt as stopServer, et as recordAskAccepted, fi as summarise, ft as workspaceUrl, gr as removeWorktree, gt as MIN_WORKSPACE_PORT, hr as readMarker, ht as MAX_WORKSPACE_PORT, i as deleteReview$1, ii as matchingWorkspaceIds, it as ensureServer, j as RUNNER_KINDS, jt as liveUpdateFor, k as queueForReview, ka as TargetError, kr as allJobs, li as recentWorkspaces, mi as workspaceRevision, mt as DEFAULT_WORKSPACE_PORT, ni as lineagePosition, nt as bootstrapUrl, o as liveJobsFor, oi as positionInLineage, ot as readServerRecord, q as endAskRequest, qt as telemetryUploadEnabled, ri as loadWorkspace, s as wasBlocked, sr as modelHelpLines, st as reviewsUrl, t as MCP_SERVER_INFO_NAME, tt as readIndexToken, u as recordKissRun, ua as findingStatus, ui as reviewedCommit, vr as describeMovement, wa as WITHHELD_REASON, x as batchIdentity, xt as COMMIT_REVIEW_CANNOT_UPDATE, yr as describeSubject, yt as statedWorkspacePort, za as agentIdOf, zt as startJob } from "./mcp_tools-CSj5vcSE.js";
2
+ import { $ as readAskRequest, $a as runnableAgents, $i as explanationOf, Aa as TargetError, Ar as attemptIdOf, At as UpdateAlreadyRunningError, Ba as agentIdOf, Bt as append, Da as resolveTarget, Dt as parkedUpdateRefusal, E as relativeTime, Ea as kissOutcome, Er as forgeResolver, F as spawnRunner, Ft as prepareReview, G as reviewTag, Ga as STORE_ROOT, Gr as isClaimed, Gt as recordTelemetryUploadConsent, H as findingRef, Ha as readAgentPreference, Hr as purposeOf, I as applyUpdate, Ia as git, It as settleReview, J as forgetAskRequest, Ji as reviewerDispositions, Jr as followedRefName, Jt as BUILD_VERSION, Ka as AGENT_IDS, Kt as telemetryUploadConsent, L as modelProvenanceOf, Lr as PHASES, Lt as reanalyseReview, Mt as runningJobs, Na as AmbiguousRefError, Nr as isTerminal$1, Nt as failureOf, P as runDetached, Pr as loadJob, Qa as parkedReason, Ra as resolveAgent, T as runBatch, Ta as WITHHELD_REASON, Ua as writeAgentPreference, Ui as isIssueOutstanding, Ur as clearClaim, Ut as stamp, Vr as progressSteps, Wa as CONFIG_PATH, Wi as isQuestionOutstanding, Wr as driverGone, Wt as deliver, Xa as detectAgents, Y as interruption, Ya as agentIdentityOf, Yi as verdictClosure, Yt as PACKAGE_NAME, Z as isTerminalAsk, Za as isAgentId, _t as parseWorkspacePort, at as healthyPort, br as findExistingReview, bt as writePortPreference, ca as findingAssessment, di as reviewedRepositories, dr as MANAGED_ROOT, dt as stopServer, et as recordAskAccepted, fi as summarise, ft as workspaceUrl, gr as removeWorktree, gt as MIN_WORKSPACE_PORT, hr as readMarker, ht as MAX_WORKSPACE_PORT, i as deleteReview$1, ii as matchingWorkspaceIds, it as ensureServer, j as RUNNER_KINDS, jt as liveUpdateFor, k as queueForReview, kr as allJobs, li as recentWorkspaces, mi as workspaceRevision, mt as DEFAULT_WORKSPACE_PORT, ni as lineagePosition, nt as bootstrapUrl, o as liveJobsFor, oi as positionInLineage, ot as readServerRecord, q as endAskRequest, qa as agentById, qt as telemetryUploadEnabled, ri as loadWorkspace, s as wasBlocked, sr as modelHelpLines, st as reviewsUrl, t as MCP_SERVER_INFO_NAME, tt as readIndexToken, u as recordKissRun, ua as findingStatus, ui as reviewedCommit, vr as describeMovement, x as batchIdentity, xt as COMMIT_REVIEW_CANNOT_UPDATE, yr as describeSubject, yt as statedWorkspacePort, za as resolveModel, zt as startJob } from "./mcp_tools-BKPpd9dN.js";
3
3
  import { basename, dirname, isAbsolute, join, resolve } from "node:path";
4
4
  import { spawn } from "node:child_process";
5
5
  import { existsSync, mkdirSync, readdirSync, realpathSync, rmSync, statSync, writeFileSync } from "node:fs";
@@ -1044,6 +1044,19 @@ function summaryOf(tag, entry, judge) {
1044
1044
  ...finding.file ? { location: {
1045
1045
  path: finding.file,
1046
1046
  ...issue?.line ? { line: issue.line } : {}
1047
+ } } : {},
1048
+ ...issue?.consequence ? { consequence: {
1049
+ title: issue.consequence.title,
1050
+ scenario: issue.consequence.scenario,
1051
+ ...issue.consequence.group ? { group: issue.consequence.group } : {},
1052
+ ...issue.consequence.next ? { next: { ...issue.consequence.next } } : {}
1053
+ } } : {},
1054
+ ...issue?.resolvedBehaviour && status === "resolved" ? { resolved_behaviour: issue.resolvedBehaviour } : {},
1055
+ ...issue?.confidence ? { confidence: issue.confidence } : {},
1056
+ ...question?.framing ? { framing: {
1057
+ question: question.framing.question,
1058
+ why: question.framing.why,
1059
+ ...question.framing.needed ? { needed: question.framing.needed } : {}
1047
1060
  } } : {}
1048
1061
  };
1049
1062
  }
@@ -1081,7 +1094,6 @@ function detailOf(workspace, tag, entry, judge) {
1081
1094
  ...section ? { title: section.title } : {}
1082
1095
  } } : {},
1083
1096
  ...finding.relatedFiles?.length ? { related_files: finding.relatedFiles } : {},
1084
- ...issue?.confidence ? { confidence: issue.confidence } : {},
1085
1097
  ...question?.category ? { category: question.category } : {},
1086
1098
  ...issue?.existingDiscussion ? { existing_discussion: {
1087
1099
  thread_id: issue.existingDiscussion.threadId,