prreviewbuddy 0.86.7 → 0.88.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/CHANGELOG.md CHANGED
@@ -1,5 +1,85 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.88.1
4
+
5
+ **One change to a review at a time, from anywhere on the Reviews list.** While a change made from a
6
+ card's pills, its `…` menu or the selection bar is still being saved, that review's pills and its
7
+ menu's Mark, lifecycle and queue items are dimmed and do nothing. Before, a pill and the menu could
8
+ both send a change, and the card could end up showing the one that was not kept. A selection that
9
+ includes such a review says so and waits to be tried again.
10
+
11
+ **Pressing a pill no longer pulls focus back.** If you move to the search box or another card while
12
+ a pill's change is being saved, focus stays where you put it.
13
+
14
+ ## 0.88.0
15
+
16
+ **Status and lifecycle are pills you can press.** On every Reviews card and in a review's header,
17
+ the status pill (Not reviewed or Reviewed) and the lifecycle pill (Active, Waiting or Done) now
18
+ change what they show. Press Not reviewed to mark the review reviewed, and Reviewed to take that
19
+ back. Press Active to mark it done, and Done to move it back to active. Waiting has more than one
20
+ way out, so its pill opens a short list: Move to active or Mark done. The pill keeps its words and
21
+ dims until the change is saved, and if it could not be saved, a notice says why. Every item in the
22
+ `…` menu is still there.
23
+
24
+ **Every review shows its lifecycle.** Active now has a pill of its own, so a card always says where
25
+ it stands next: blue for Active, amber for Waiting and slate for Done. "Changed while waiting" and
26
+ "Changed since done" stay beside the pills as their own badge, a little stronger than before, so a
27
+ parked review that moved is easy to find in a long list.
28
+
29
+ **What is left on a card is easier to scan.** All issues resolved and all questions answered show
30
+ as green badges, and open issues or unanswered questions as amber ones. "Nothing flagged" stays
31
+ plain text, because a review that raised nothing has nothing to resolve. "Branch updated" is now a
32
+ small purple badge.
33
+
34
+ ## 0.87.2
35
+
36
+ **The compact sidebar shows what is left on Issues and Questions.** With the sidebar folded to its
37
+ icons, Issues and Questions now carry the same mark the expanded rows do, on the corner of the icon:
38
+ how many are still open, a green tick once every one has been dealt with, or 0 where the analysis
39
+ found none. Nothing is shown while the first analysis is still running.
40
+
41
+ **The compact sidebar has one way to see more: sliding out.** Resting the pointer on it, or tabbing
42
+ into it, slides it out to its full width as before, and it stays out while the pointer or the focus
43
+ is anywhere inside it. The small name labels that were meant to appear beside its icons could never
44
+ be seen, because the sidebar slid out first, and have been removed. Screen readers still hear every
45
+ row's name, New review's included.
46
+
47
+ ## 0.87.1
48
+
49
+ **Every page's title sits in the same place.** Reviews, Runs, Activity, Settings and Help now share
50
+ one title row of the same height, with the page's name at the left edge and its actions, like Mark
51
+ all read, at the right. Search and filters on Reviews and Runs sit on a row of their own beneath it,
52
+ lined up with the list, so moving between pages changes only whether that row is there. In a very
53
+ narrow window Activity keeps Mark all read and lets the unread line go first.
54
+
55
+ **Settings no longer has an All reviews button.** Settings is reached from the sidebar like every
56
+ other page, so it no longer offers a way back as if it sat under Reviews.
57
+
58
+ ## 0.87.0
59
+
60
+ **The sidebar keeps its places where they are.** New review, Reviews, Runs, Activity, Settings and
61
+ Help now sit at the top of the sidebar on every page, a review's included, so opening a review no
62
+ longer pushes them down. What belongs to the open review follows under a Current review heading:
63
+ Overview (Progress while the first analysis runs), the review path, Diagrams, Issues, Questions,
64
+ Files, PR context and KISS. In a short window that section scrolls by itself, and Send feedback
65
+ and Collapse sidebar stay at the bottom.
66
+
67
+ **The sidebar starts right under the top bar on every page.** A review's bar and its banners, and
68
+ the bar at the top of Reviews, Runs and the other pages, now sit beside the sidebar instead of above
69
+ it, so the sidebar's links are at exactly the same place on screen whichever page is open.
70
+
71
+ **Runs says how much is running.** A purple count beside Runs shows how many runs are in
72
+ progress, and the Runs icon at the top of the window shows it too, so it can still be seen with
73
+ the sidebar collapsed or hidden, or in a narrow window. It updates by itself as runs start and
74
+ finish, and queued work is not counted. Questions to Buddy AI, diagrams being drawn and
75
+ architecture maps being made now appear under In progress on the Runs page while they run. A map
76
+ being made says which part of the repository it covers and the step it is on, and opens the review
77
+ it was started from with that part selected.
78
+
79
+ **The collapsed sidebar keeps its bottom links in a short window.** Send feedback and Expand
80
+ sidebar stay on screen; review rows that do not fit are reached by sliding the sidebar out, where
81
+ they scroll.
82
+
3
83
  ## 0.86.7
4
84
 
5
85
  **Nothing jumps as the compact sidebar slides out.** The compact sidebar keeps room for the Review
@@ -6097,22 +6097,25 @@ function parseLifecycle(raw) {
6097
6097
  function lifecycleAction(lifecycle) {
6098
6098
  return LIFECYCLES.find((entry) => entry.id === lifecycle).action;
6099
6099
  }
6100
+ /** A lifecycle's name, which is what its pill says on the card and on the review page. */
6101
+ function lifecycleName(lifecycle) {
6102
+ return LIFECYCLES.find((entry) => entry.id === (lifecycle?.state ?? "active")).name;
6103
+ }
6100
6104
  /**
6101
- * The review page's lifecycle pill, or absent for Active, which says nothing (as an open pull
6102
- * request says nothing). A parked review that has changed since reads as the card's chip does, so
6103
- * the page and the list give one answer about the same review.
6105
+ * What pressing the lifecycle pill does. Active and Done each have one way out that the pill can
6106
+ * name, so the pill is that action. Waiting has two (back to Active, or Done) and a third once the
6107
+ * branch moved (settle it), so it opens a menu of the items `offersLifecycle` allows rather than
6108
+ * guessing one. Waiting is never collapsed into Active here: the menu is the same transitions the
6109
+ * `…` menu offers.
6104
6110
  */
6105
- function lifecyclePill(lifecycle, activity) {
6106
- if (!lifecycle) return void 0;
6107
- const chip = lifecycleChip(lifecycle, activity);
6108
- if (chip !== void 0) return {
6109
- text: chip,
6110
- changed: true
6111
- };
6112
- return {
6113
- text: LIFECYCLES.find((entry) => entry.id === lifecycle.state).name,
6114
- changed: false
6115
- };
6111
+ function lifecyclePillAction(lifecycle) {
6112
+ if (lifecycle?.state === "waiting") return "menu";
6113
+ return lifecycle?.state === "done" ? "active" : "done";
6114
+ }
6115
+ /** The pill's accessible name: the state it shows, then what pressing it does. */
6116
+ function lifecyclePillLabel(lifecycle) {
6117
+ const action = lifecyclePillAction(lifecycle);
6118
+ return `${lifecycleName(lifecycle)}. ${action === "menu" ? "Choose what happens next" : lifecycleAction(action)}`;
6116
6119
  }
6117
6120
  var ACTIVITY_LABELS = {
6118
6121
  created: "Created",
@@ -18396,6 +18399,10 @@ function endRun(run) {
18396
18399
  const key = keyOf(run.workspaceId, run.kind);
18397
18400
  if (runs.get(key) === run) runs.delete(key);
18398
18401
  }
18402
+ /** Every run held now, whatever its state. The Runs page decides which of them are executing. */
18403
+ function heldRuns() {
18404
+ return [...runs.values()];
18405
+ }
18399
18406
  /**
18400
18407
  * Whether any question or drawing is still going here, or has answered and is being saved.
18401
18408
  *
@@ -20453,4 +20460,4 @@ function lineageIds(id) {
20453
20460
  return [.../* @__PURE__ */ new Set([id, ...lineage.map((review) => review.id)])];
20454
20461
  }
20455
20462
  //#endregion
20456
- export { MIN_WORKSPACE_PORT as $, AmbiguousRefError as $i, RUN_RECORD_RETENTION_MS as $n, deleteCollection as $r, markRead as $t, batchIdentity as A, findingAssessment as Ai, escapeHtml as An, positionInLineage as Ar, loadArchitecture as At, bootstrapUrl as B, wasReassessed as Bi, readMarker as Bn, LIFECYCLES as Br, ancestorsOf as Bt, RUN_KINDS as C, withExplanation as Ci, UNESTABLISHED_MOTIVATION as Cn, kissDecisionsOf as Cr, mapRuntimes as Ct, reportRun as D, assessmentLookup as Di, renderMarkdown as Dn, loadWorkspace as Dr, formatDuration as Dt, endRun as E, analysisRefOf as Ei, GITHUB_MARKDOWN as En, lineagePosition as Er, describeRuntimes as Et, activateQueued as F, isOffered as Fi, withReviewLock as Fn, reviewedRepositories as Fr, storedScopes as Ft, serverEntryExists as G, describeAuthorship as Gi, findExistingReview as Gn, lifecycleItemLabel as Gr, subjectOf as Gt, ensureServer as H, asString$1 as Hi, requestJobStop as Hn, activityLabel as Hr, writeJsonAtomically as Ht, compactQueue as I, promptGrade as Ii, MANAGED_ROOT as In, summarise as Ir, trackedFiles as It, stopServer as J, resolveTarget as Ji, followedBranch as Jn, parseLifecycle as Jr, createPrState as Jt, spawnServer as K, WITHHELD_REASON as Ki, checkCodeFreshness as Kn, lifecyclePill as Kr, categoryOf as Kt, queueForReview as L, reassessIn as Li, createWorktree as Ln, touchWorkspace as Lr, ownersOf as Lt, parsePullRequestLink as M, findingStatus as Mi, modelHelpLines as Mn, previousKissResult as Mr, readArchitecture as Mt, unsupportedReason as N, gradeScale as Ni, ReviewBeingDeletedError as Nn, recentWorkspaces as Nr, repositoryKey as Nt, stopRun as O, closesFinding as Oi, CODE_BLOCK_CLASS as On, matchingWorkspaceIds as Or, ARCHITECTURE_DIR as Ot, runBatch as P, isGradeFor as Pi, isBusy as Pn, reviewedCommit as Pr, storeArchitecture as Pt, MAX_WORKSPACE_PORT as Q, resolveBase as Qi, fillFileUrlTemplate as Qn, createWithMembers as Qr, markAllRead as Qt, settleQueue as R, sourcePhrase as Ri, holdWorktree as Rn, workspaceRevision as Rr, QUOTE_LIMITS as Rt, track as S, isExplanationAction as Si, chatConversationSection as Sn, kissDecisionRefusal as Sr, waitingHistory as St, completeRun as T, NO_STATUS as Ti, hasAuthorContent as Tn, lineageKey as Tr, RUNTIME_WORDS as Tt, readServerRecord as U, extractJsonText as Ui, describeMovement as Un, isLifecycle as Ur, announceJob as Ut, clearServerRecordOwnedBy as V, followUpFindingId as Vi, removeWorktree as Vn, activityAttributes as Vr, isArchitectureId as Vt, reviewsUrl as W, objectWithAnyOf as Wi, describeSubject as Wn, lifecycleChip as Wr, branchOf as Wt, writeServerRecord as X, DetachedHeadError as Xi, fetchHead as Xn, collectionsStamp as Xr, eventName as Xt, workspaceUrl as Y, originRemote as Yi, reviewedShaOf as Yn, sectionOf as Yr, createPrUpdate as Yt, DEFAULT_WORKSPACE_PORT as Z, isCommitReview as Zi, forgeResolver as Zn, createCollection as Zr, listNotifications as Zt, runningJobs as _, isAgentId as _a, verdictClosure as _i, unforeseenFailure as _n, decideKissRecommendation as _r, telemetryUploadConsent as _t, wasBlocked as a, resolveModel as aa, queueAdd as ai, removeNotification as an, loadJob as ar, observeReview as at, startKissJob as b, AgentCancelledError as ba, explanationActionOf as bi, agentEnvOf as bn, indexKeptIds as br, PACKAGE_NAME as bt, RefreshUnavailableError as c, readAgentPreference as ca, queueStamp as ci, unreadAround as cn, PHASES as cr, reanalyseReview as ct, mergeUpdateInto as d, STORE_ROOT as da, isIssueOutstanding as di, existingPaths as dn, phasesFor as dr, append as dt, shortNameOf as ea, nameProblemText as ei, markReadForReview as en, allJobs as er, parseWorkspacePort as et, parkedUpdateRefusal as f, AGENT_IDS as fa, isQuestionOutstanding as fi, ASK_REREAD_CEILING_MS as fn, progressSteps as fr, readEvents as ft, liveUpdateFor as g, detectAgents as ga, reviewerDispositions as gi, storedConversation as gn, CLAIM_LEASE_MS as gr, recordTelemetryUploadConsent as gt, UpdateAlreadyRunningError as h, agentIdentityOf as ha, resolvedByConversation as hi, saveRefresh as hn, isClaimed as hr, deliver as ht, liveJobsFor as i, resolveAgent as ia, updateCollections as ii, readStateOf as in, isTerminal as ir, failureOf as it, extractPullRequestLinks as j, findingIn as ji, renderInlineText as jn, presentedKissRunOf as jr, partFiles as jt, relativeTime as k, currentGradeIn as ki, CODE_COPY_CLASS as kn, mutateWorkspace as kr, checkArchitecture as kt, cancelUpdate as l, writeAgentPreference as la, readQueue as li, unreadCount as ln, isLiveJob as lr, runJob as lt, askCheckout as m, agentFor as ma, questionsOutstanding as mi, prepareConversationWithin as mn, clearClaim as mr, stamp as mt, deleteReview as n, git as na, renameCollection as ni, pruneNotifications as nn, endedAt as nr, statedWorkspacePort as nt, discardJob as o, agentIdOf as oa, queueAddMany as oi, retireNotification as on, pruneJobResidue as or, prepareReview as ot, updateReview as p, agentById as pa, issuesOutstanding as pi, adoptLegacyBaseline as pn, purposeOf as pr, record as pt, stopChild as q, kissOutcome as qi, checkReview as qn, offersLifecycle as qr, createArchitectureNotification as qt, lineageIds as r, refExists as ra, setMembership as ri, readNotification as rn, fail as rr, writePortPreference as rt, FETCH_TIMEOUT_MS as s, clearAgentPreference as sa, queueRemove as si, toneOf as sn, saveJob as sr, settleReview as st, deleteLineage as t, shorthandOf as ta, readCollections as ti, moveIds as tn, attemptIdOf as tr, resolveWorkspacePort as tt, cancellableHere as u, CONFIG_PATH as ua, doneVerb as ui, withUsageRecorded as un, isTerminalJobPhase as ur, startJob as ut, kissAgentId as v, parkedReason as va, processDiscussion as vi, refreshPrContext as vn, followedRefName as vr, telemetryUploadEnabled as vt, beginRun as w, ANALYSIS_ONLY as wi, authorPreview as wn, latestKissRun as wr, recordRuntimeBestEffort as wt, isDriving as x, AgentUnavailableError as xa, explanationOf as xi, EXPLAIN_SIMPLY_PROMPT as xn, indexReviewGroups as xr, feedbackUrl as xt, recordKissRun as y, runnableAgents as ya, recommendationsOf as yi, isUnchanged as yn, groupByLineage as yr, BUILD_VERSION as yt, readIndexToken as z, statusLookup as zi, isWorktreeHeld as zn, workspaceStamps as zr, REPOSITORY_SCOPE as zt };
20463
+ export { MAX_WORKSPACE_PORT as $, DetachedHeadError as $i, fillFileUrlTemplate as $n, collectionsStamp as $r, markAllRead as $t, relativeTime as A, assessmentLookup as Ai, CODE_COPY_CLASS as An, mutateWorkspace as Ar, checkArchitecture as At, readIndexToken as B, reassessIn as Bi, isWorktreeHeld as Bn, workspaceStamps as Br, REPOSITORY_SCOPE as Bt, RUN_KINDS as C, AgentCancelledError as Ca, explanationActionOf as Ci, chatConversationSection as Cn, kissDecisionRefusal as Cr, waitingHistory as Ct, heldRuns as D, ANALYSIS_ONLY as Di, GITHUB_MARKDOWN as Dn, lineagePosition as Dr, describeRuntimes as Dt, endRun as E, withExplanation as Ei, hasAuthorContent as En, lineageKey as Er, RUNTIME_WORDS as Et, runBatch as F, findingStatus as Fi, isBusy as Fn, reviewedCommit as Fr, storeArchitecture as Ft, reviewsUrl as G, asString$1 as Gi, describeSubject as Gn, lifecycleChip as Gr, branchOf as Gt, clearServerRecordOwnedBy as H, statusLookup as Hi, removeWorktree as Hn, activityAttributes as Hr, isArchitectureId as Ht, activateQueued as I, gradeScale as Ii, withReviewLock as In, reviewedRepositories as Ir, storedScopes as It, stopChild as J, describeAuthorship as Ji, checkReview as Jn, lifecyclePillAction as Jr, createArchitectureNotification as Jt, serverEntryExists as K, extractJsonText as Ki, findExistingReview as Kn, lifecycleItemLabel as Kr, subjectOf as Kt, compactQueue as L, isGradeFor as Li, MANAGED_ROOT as Ln, summarise as Lr, trackedFiles as Lt, extractPullRequestLinks as M, currentGradeIn as Mi, renderInlineText as Mn, presentedKissRunOf as Mr, partFiles as Mt, parsePullRequestLink as N, findingAssessment as Ni, modelHelpLines as Nn, previousKissResult as Nr, readArchitecture as Nt, reportRun as O, NO_STATUS as Oi, renderMarkdown as On, loadWorkspace as Or, formatDuration as Ot, unsupportedReason as P, findingIn as Pi, ReviewBeingDeletedError as Pn, recentWorkspaces as Pr, repositoryKey as Pt, DEFAULT_WORKSPACE_PORT as Q, originRemote as Qi, forgeResolver as Qn, sectionOf as Qr, listNotifications as Qt, queueForReview as R, isOffered as Ri, createWorktree as Rn, touchWorkspace as Rr, ownersOf as Rt, track as S, runnableAgents as Sa, recommendationsOf as Si, EXPLAIN_SIMPLY_PROMPT as Sn, indexReviewGroups as Sr, feedbackUrl as St, completeRun as T, isExplanationAction as Ti, authorPreview as Tn, latestKissRun as Tr, recordRuntimeBestEffort as Tt, ensureServer as U, wasReassessed as Ui, requestJobStop as Un, activityLabel as Ur, writeJsonAtomically as Ut, bootstrapUrl as V, sourcePhrase as Vi, readMarker as Vn, LIFECYCLES as Vr, ancestorsOf as Vt, readServerRecord as W, followUpFindingId as Wi, describeMovement as Wn, isLifecycle as Wr, announceJob as Wt, workspaceUrl as X, kissOutcome as Xi, reviewedShaOf as Xn, offersLifecycle as Xr, createPrUpdate as Xt, stopServer as Y, WITHHELD_REASON as Yi, followedBranch as Yn, lifecyclePillLabel as Yr, createPrState as Yt, writeServerRecord as Z, resolveTarget as Zi, fetchHead as Zn, parseLifecycle as Zr, eventName as Zt, runningJobs as _, agentFor as _a, questionsOutstanding as _i, storedConversation as _n, CLAIM_LEASE_MS as _r, recordTelemetryUploadConsent as _t, wasBlocked as a, git as aa, renameCollection as ai, readStateOf as an, isTerminal as ar, failureOf as at, startKissJob as b, isAgentId as ba, verdictClosure as bi, isUnchanged as bn, groupByLineage as br, BUILD_VERSION as bt, RefreshUnavailableError as c, resolveModel as ca, queueAdd as ci, toneOf as cn, saveJob as cr, settleReview as ct, mergeUpdateInto as d, readAgentPreference as da, queueStamp as di, withUsageRecorded as dn, isTerminalJobPhase as dr, startJob as dt, isCommitReview as ea, createCollection as ei, markRead as en, RUN_RECORD_RETENTION_MS as er, MIN_WORKSPACE_PORT as et, parkedUpdateRefusal as f, writeAgentPreference as fa, readQueue as fi, existingPaths as fn, phasesFor as fr, append as ft, liveUpdateFor as g, agentById as ga, issuesOutstanding as gi, saveRefresh as gn, isClaimed as gr, deliver as gt, UpdateAlreadyRunningError as h, AGENT_IDS as ha, isQuestionOutstanding as hi, prepareConversationWithin as hn, clearClaim as hr, stamp as ht, liveJobsFor as i, shorthandOf as ia, readCollections as ii, readNotification as in, fail as ir, writePortPreference as it, batchIdentity as j, closesFinding as ji, escapeHtml as jn, positionInLineage as jr, loadArchitecture as jt, stopRun as k, analysisRefOf as ki, CODE_BLOCK_CLASS as kn, matchingWorkspaceIds as kr, ARCHITECTURE_DIR as kt, cancelUpdate as l, agentIdOf as la, queueAddMany as li, unreadAround as ln, PHASES as lr, reanalyseReview as lt, askCheckout as m, STORE_ROOT as ma, isIssueOutstanding as mi, adoptLegacyBaseline as mn, purposeOf as mr, record as mt, deleteReview as n, AmbiguousRefError as na, deleteCollection as ni, moveIds as nn, attemptIdOf as nr, resolveWorkspacePort as nt, discardJob as o, refExists as oa, setMembership as oi, removeNotification as on, loadJob as or, observeReview as ot, updateReview as p, CONFIG_PATH as pa, doneVerb as pi, ASK_REREAD_CEILING_MS as pn, progressSteps as pr, readEvents as pt, spawnServer as q, objectWithAnyOf as qi, checkCodeFreshness as qn, lifecycleName as qr, categoryOf as qt, lineageIds as r, shortNameOf as ra, nameProblemText as ri, pruneNotifications as rn, endedAt as rr, statedWorkspacePort as rt, FETCH_TIMEOUT_MS as s, resolveAgent as sa, updateCollections as si, retireNotification as sn, pruneJobResidue as sr, prepareReview as st, deleteLineage as t, resolveBase as ta, createWithMembers as ti, markReadForReview as tn, allJobs as tr, parseWorkspacePort as tt, cancellableHere as u, clearAgentPreference as ua, queueRemove as ui, unreadCount as un, isLiveJob as ur, runJob as ut, kissAgentId as v, agentIdentityOf as va, resolvedByConversation as vi, unforeseenFailure as vn, decideKissRecommendation as vr, telemetryUploadConsent as vt, beginRun as w, AgentUnavailableError as wa, explanationOf as wi, UNESTABLISHED_MOTIVATION as wn, kissDecisionsOf as wr, mapRuntimes as wt, isDriving as x, parkedReason as xa, processDiscussion as xi, agentEnvOf as xn, indexKeptIds as xr, PACKAGE_NAME as xt, recordKissRun as y, detectAgents as ya, reviewerDispositions as yi, refreshPrContext as yn, followedRefName as yr, telemetryUploadEnabled as yt, settleQueue as z, promptGrade as zi, holdWorktree as zn, workspaceRevision as zr, QUOTE_LIMITS as zt };
package/dist/main.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { $ as MIN_WORKSPACE_PORT, A as batchIdentity, Ar as positionInLineage, B as bootstrapUrl, Bn as readMarker, Dr as loadWorkspace, Fr as reviewedRepositories, Gn as findExistingReview, H as ensureServer, In as MANAGED_ROOT, Ir as summarise, J as stopServer, Ji as resolveTarget, Ki as WITHHELD_REASON, L as queueForReview, Mn as modelHelpLines, Nr as recentWorkspaces, Or as matchingWorkspaceIds, P as runBatch, Q as MAX_WORKSPACE_PORT, Un as describeMovement, Vn as removeWorktree, W as reviewsUrl, Wn as describeSubject, Y as workspaceUrl, Z as DEFAULT_WORKSPACE_PORT, Zn as forgeResolver, _ as runningJobs, _t as telemetryUploadConsent, a as wasBlocked, aa as resolveModel, ar as loadJob, bt as PACKAGE_NAME, ca as readAgentPreference, cr as PHASES, ct as reanalyseReview, d as mergeUpdateInto, da as STORE_ROOT, dt as append, er as allJobs, et as parseWorkspacePort, f as parkedUpdateRefusal, fa as AGENT_IDS, fr as progressSteps, g as liveUpdateFor, ga as detectAgents, gt as recordTelemetryUploadConsent, h as UpdateAlreadyRunningError, ht as deliver, i as liveJobsFor, ia as resolveAgent, k as relativeTime, kr as mutateWorkspace, la as writeAgentPreference, mr as clearClaim, mt as stamp, n as deleteReview$1, na as git, nt as statedWorkspacePort, ot as prepareReview, p as updateReview, pa as agentById, pr as purposeOf, pt as record$1, qi as kissOutcome, rt as writePortPreference, st as settleReview, ua as CONFIG_PATH, ut as startJob, va as parkedReason, vr as followedRefName, vt as telemetryUploadEnabled, y as recordKissRun, ya as runnableAgents, yt as BUILD_VERSION, z as readIndexToken } from "./delete_review-CwKZQlMg.js";
2
+ import { $ as MAX_WORKSPACE_PORT, A as relativeTime, Ar as mutateWorkspace, B as readIndexToken, F as runBatch, G as reviewsUrl, Gn as describeSubject, Hn as removeWorktree, Ir as reviewedRepositories, Kn as findExistingReview, Ln as MANAGED_ROOT, Lr as summarise, Nn as modelHelpLines, Or as loadWorkspace, Pr as recentWorkspaces, Q as DEFAULT_WORKSPACE_PORT, Qn as forgeResolver, R as queueForReview, Sa as runnableAgents, U as ensureServer, V as bootstrapUrl, Vn as readMarker, Wn as describeMovement, X as workspaceUrl, Xi as kissOutcome, Y as stopServer, Yi as WITHHELD_REASON, Zi as resolveTarget, _ as runningJobs, _t as recordTelemetryUploadConsent, a as wasBlocked, aa as git, bt as BUILD_VERSION, ca as resolveModel, ct as settleReview, d as mergeUpdateInto, da as readAgentPreference, dt as startJob, et as MIN_WORKSPACE_PORT, f as parkedUpdateRefusal, fa as writeAgentPreference, ft as append, g as liveUpdateFor, ga as agentById, gt as deliver, h as UpdateAlreadyRunningError, ha as AGENT_IDS, hr as clearClaim, ht as stamp, i as liveJobsFor, it as writePortPreference, j as batchIdentity, jr as positionInLineage, kr as matchingWorkspaceIds, lr as PHASES, lt as reanalyseReview, ma as STORE_ROOT, mr as purposeOf, mt as record$1, n as deleteReview$1, or as loadJob, p as updateReview, pa as CONFIG_PATH, pr as progressSteps, rt as statedWorkspacePort, sa as resolveAgent, st as prepareReview, tr as allJobs, tt as parseWorkspacePort, vt as telemetryUploadConsent, xa as parkedReason, xt as PACKAGE_NAME, y as recordKissRun, ya as detectAgents, yr as followedRefName, yt as telemetryUploadEnabled } from "./delete_review-CeiSTV7u.js";
3
3
  import { basename, dirname, 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";