prreviewbuddy 0.70.2 → 0.71.2

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,55 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.71.2
4
+
5
+ **Buddy AI's opening line reads plainly.** Before your first question, Buddy AI now says "Answers
6
+ come only from the review, the diff and the repository on disk."
7
+
8
+ ## 0.71.1
9
+
10
+ **`prreviewbuddy` on its own is a front door now, not the manual.** It says what PR Review Buddy is,
11
+ the three commands you most likely want next, and where to find more, in a dozen lines.
12
+
13
+ **Help in three steps.** `prreviewbuddy help` (or `--help`) lists every command, one line each.
14
+ `prreviewbuddy <command> --help`, or `prreviewbuddy help <command>`, gives that command's options:
15
+ everything `review` takes is under `prreviewbuddy review --help`. A flag the command does not take
16
+ now points you at that command's help rather than the whole list.
17
+
18
+ **Help in the workspace explains the ideas.** What used to be paragraphs in the terminal is now in
19
+ Help, with a list of topics at the top: Getting started, Isolated checkouts, Updating and
20
+ reanalysing, Reviews and review IDs, Several pull requests at once, Review lenses, The workspace
21
+ server, and How long things are kept, beside What gets reviewed and Keyboard. Two things the
22
+ terminal help had out of date are right there: Stop server is in Settings, and reviews you saved,
23
+ marked Done or queued are kept for ninety days rather than thirty.
24
+
25
+ **A shorter npm page.** The package page now says what PR Review Buddy is for, how to start a
26
+ review, what a review gives you and what stays on your machine. Its screenshot shows the current workspace. The full
27
+ command reference moved to `prreviewbuddy help`, and the explanations to Help in the workspace.
28
+
29
+ ## 0.71.0
30
+
31
+ **Simple explanations stay on the card.** Ask Buddy → Explain simply on an issue or a question now
32
+ keeps the answer on that card, under what the finding says, in a Simple explanation you can fold
33
+ away and open again. It is still there after a reload, and when the review is updated with new
34
+ commits. Explaining the same card again replaces it, and the menu says so: Regenerate simple
35
+ explanation. If regenerating fails or you stop it, the explanation you had stays.
36
+
37
+ **Ask more → picks up where the explanation left off.** At the end of an explanation, Ask more
38
+ opens Buddy AI with the finding quoted and the cursor ready for your question. Buddy is given the
39
+ explanation along with it, however long ago it was written. Nothing is sent until you ask.
40
+
41
+ The explanation is yours, for reading the finding. It is not part of what Copy, or Prepare
42
+ feedback, gives you to send to the author. Buddy's other answers stay in the conversation.
43
+
44
+ **Copy includes what an update said.** When Update review has changed an issue or a question, Copy
45
+ and Prepare feedback now carry the update's note after the finding, with its status, for example
46
+ "After the new commits (affected): …", and a question's answer from the new changes. A pasted
47
+ finding, or feedback sent to the author, no longer reads as the original report.
48
+
49
+ **Copy includes what an investigation found.** Copy now also carries an investigation's note, with
50
+ its verdict ("Investigation (refuted): …"), and a question's answer from the investigation. That is
51
+ your own working, so Prepare feedback leaves it out.
52
+
3
53
  ## 0.70.2
4
54
 
5
55
  **Buddy AI's answers on cards of their own.** In the Buddy AI panel, your questions stay purple and
package/README.md CHANGED
@@ -1,8 +1,13 @@
1
1
  # PR Review Buddy
2
2
 
3
- **Review a branch, or a pull request, in an isolated checkout. From your terminal.**
3
+ **Understand before you approve.**
4
4
 
5
- ![The review workspace: a suggested path through the change, its findings and its questions](https://prreviewbuddy.com/npm/workspace.png)
5
+ A local review workspace that helps you understand code changes before you approve them.
6
+
7
+ Have Claude Code, Codex or Gemini CLI analyse a branch or pull request, then explore what it
8
+ found, the evidence behind it and your own follow-up questions in your browser.
9
+
10
+ ![A review in the workspace: why the change was made, what it changes, its risk and progress, a suggested review path, and Buddy AI beside it](https://prreviewbuddy.com/npm/workspace.png)
6
11
 
7
12
  ## Install
8
13
 
@@ -10,192 +15,89 @@
10
15
  npm install -g prreviewbuddy
11
16
  ```
12
17
 
13
- ## Review something
18
+ ## Start a review
19
+
20
+ In the repository you want reviewed:
14
21
 
15
22
  ```
16
23
  prreviewbuddy review
17
24
  ```
18
25
 
19
- Run it inside the repository you want reviewed. It prints a workspace URL before the analysis
20
- starts and fills in as the review is made, so you can open the link and watch it arrive.
21
-
22
- `prreviewbuddy review --pr <url>` reviews a pull request instead, and `--branch <branch>` reviews
23
- another branch without checking it out.
24
-
25
- ## What does the reviewing
26
-
27
- A coding agent you have already installed: [Claude Code](https://claude.com/claude-code),
28
- [Codex CLI](https://developers.openai.com/codex/cli) or
29
- [Gemini CLI](https://github.com/google-gemini/gemini-cli). Run `prreviewbuddy agents` to see which
30
- of them this machine has.
31
-
32
- There is no account, no API key and nothing to sign up for. PR Review Buddy uses that agent's
33
- existing authentication; it never sees a token and never asks you for one.
34
-
35
- ## How it works
36
-
37
- The analysis runs in a separate process against a git worktree pinned to one commit, so your own
38
- checkout is never read or written while it works and you can carry on using it. What you get back
39
- is a local workspace in your browser: a suggested path through the change, findings, questions, and
40
- an assistant that has read the diff. The job is durable, so closing the terminal does not stop it.
41
-
42
- ## Privacy
43
-
44
- Your code goes to the coding agent you chose, exactly as it would if you had run that agent
45
- yourself. It does not pass through us, and no server of ours is in the path of a review.
46
-
47
- PR Review Buddy sends non-identifying usage telemetry, on by default and off with one command: two
48
- event names, a random ID generated on your machine, the version, the platform, the agent and a
49
- duration. Never your code, diffs, file paths, repository names, prompts or review content.
50
- `prreviewbuddy config set telemetry-upload off` stops it.
51
- [The full field table is published](https://prreviewbuddy.com/privacy).
52
-
53
- More at [prreviewbuddy.com](https://prreviewbuddy.com).
54
-
55
- ---
56
-
57
- # Reference
58
-
59
- ## Commands
60
-
61
- A command names what to review, and what to do to it.
26
+ Or a pull request:
62
27
 
63
28
  ```
64
- prreviewbuddy review review the current branch
65
- prreviewbuddy review --branch <branch> review another branch, without checking it out
66
- prreviewbuddy review --pr <url> review a pull request
67
- prreviewbuddy review --base <ref> compare against a base of your choosing
68
- prreviewbuddy review --agent <agent> review with a named coding agent
69
-
70
- prreviewbuddy review --update bring the review of that target up to date
71
- prreviewbuddy review --reanalyse analyse the same commit again, for a fresh judgement
72
- prreviewbuddy review --fresh review the target again, keeping the existing review
73
- prreviewbuddy review --review <review> --update
74
- act on one review by its review ID
75
- prreviewbuddy review --review <review> --delete
76
- delete one review and the checkouts it was made in
77
-
78
- prreviewbuddy open list your reviews and open the index
79
- prreviewbuddy open <review> open one review
80
-
81
- prreviewbuddy agents which coding agents you have
82
- prreviewbuddy config set agent <agent> remember which to use when you do not name one
83
- prreviewbuddy config set telemetry-upload on|off
84
- send usage telemetry, or stop. On by default
85
- prreviewbuddy config get port the port the workspace runs on
86
- prreviewbuddy config set port <port> move it, from the next start onwards
87
-
88
- prreviewbuddy uninstall remove everything this put on your machine
29
+ prreviewbuddy review --pr <url>
89
30
  ```
90
31
 
91
- The two halves go together: `prreviewbuddy review --branch feat/foo --update` brings the review of
92
- `feat/foo` up to date without checking it out.
93
-
94
- `--branch` takes a branch, local or remote, so `--branch origin/feat/foo` reviews what is on the
95
- remote rather than what is in your clone. A review follows the ref it was made from and keeps
96
- following it.
32
+ It prints a link to the review straight away. Open it and the workspace fills in as the analysis
33
+ runs.
97
34
 
98
- ## What you need
99
-
100
- - **Node 20 or newer**, and **git**.
101
- - **A coding agent**, installed and signed in. It does the analysis.
102
- - **[GitHub CLI](https://cli.github.com/)** (`gh`), signed in, if you want the pull request
103
- conversation read. Without it the review still runs, on the code alone, and says so.
35
+ ## Why PR Review Buddy?
104
36
 
105
- With more than one agent installed and none chosen, the first review asks which to use and offers
106
- to remember the answer. A review keeps the agent it was made with, so a later question about it is
107
- answered by whichever agent wrote it.
37
+ Most AI review tools read a pull request, leave comments and move on. PR Review Buddy is for the
38
+ person who has to decide whether to approve it. It gives you a workspace for understanding the
39
+ change, and the decision stays yours.
108
40
 
109
- If you keep more than one Claude profile, set `CLAUDE_CONFIG_DIR` in the shell you run this from.
110
- A review pins the environment it was created in, so it will keep using whichever profile it
111
- started with.
41
+ **Understand the change, not just the findings.** A review starts with what the change is for, how
42
+ risky it is and a suggested path through it, so you know where to begin before you read a line of
43
+ diff.
112
44
 
113
- ## What to expect
45
+ **Inspect the evidence.** Issues and questions point at the code they are about. Investigate one
46
+ and the agent goes back to the repository to confirm or refute it.
114
47
 
115
- The job is durable: closing the terminal does not stop it, and running the same command again after
116
- an interruption carries on from the phase that stopped rather than starting over.
48
+ **Keep reviewing.** Ask Buddy AI about the change; it has read the diff and the repository, not
49
+ just your question. Come back to a review tomorrow, update it when the branch moves on, and keep
50
+ the ones you need.
117
51
 
118
- Reviews are kept in `~/.prreviewbuddy` for thirty days. A local server holds them open at
119
- `http://localhost:7726` and outlives the terminal that started it, so a link to a review is worth
120
- keeping: the address does not move, and the same link still opens after a restart. Run
121
- `prreviewbuddy open` from any directory to get back to the list, and
122
- `prreviewbuddy config set port <port>` if 7726 is taken on your machine.
52
+ **Your checkout is left alone.** Each analysis runs in an isolated checkout pinned to the commit
53
+ being reviewed, so your working tree is never touched and you can carry on working.
123
54
 
124
- The isolated checkout a review was made in is kept for six hours after it finishes, because that is
125
- what the assistant reads when you ask it questions, and is then removed.
55
+ ## What a review looks like
126
56
 
127
- <details>
128
- <summary><b>Which base a review is compared against</b> — <code>--base main</code> means
129
- <code>origin/main</code>, and why</summary>
57
+ **Review → Understand → Investigate → Ask → Decide**
130
58
 
131
- A base named by its short name resolves to the remote copy of it, and a base named in full resolves
132
- to exactly what was named.
133
-
134
- ```
135
- --base main -> origin/main
136
- --base refs/heads/main -> your own main, deliberately
137
- ```
59
+ - **Overview**: what the change is for, its risk, and where to start.
60
+ - **Issues** and **Questions**: what is worth checking, and what to ask the author. Investigate,
61
+ dismiss or answer each one.
62
+ - **Files**: every changed file, grouped under the part of the change it belongs to.
63
+ - **Diagrams**: a change map of how the parts of the change affect each other, and an
64
+ architecture map of where it sits in the repository.
65
+ - **Buddy AI**: follow-up questions, answered from the change itself.
66
+ - **Prepare feedback**: choose the findings you want to raise and copy them as one message for the
67
+ author.
138
68
 
139
- A local branch is behind the remote from the first day nobody pulls, and it is usually an ancestor
140
- of the branch under review, so git accepts it as a merge base without complaint and every upstream
141
- commit you have not pulled lands in the review. There is no error, only a much larger diff and
142
- findings about code the author never touched. Naming the ref in full is how you say you meant your
143
- own branch.
69
+ ## Local by design
144
70
 
145
- A pull request is stricter, because its base is not something you typed. PR Review Buddy asks the
146
- forge which commit the request is cut from and uses that; failing that, the remote-tracking copy of
147
- the base branch; and failing both it refuses and asks you to run `git fetch`. It also checks the
148
- diff it built against the number of files the forge says the request touches, and refuses if the two
149
- disagree.
71
+ PR Review Buddy uses a coding agent already installed on your machine, and that agent's existing
72
+ authentication: [Claude Code](https://claude.com/claude-code),
73
+ [Codex CLI](https://developers.openai.com/codex/cli) or
74
+ [Gemini CLI](https://github.com/google-gemini/gemini-cli). There is no PR Review Buddy account and no
75
+ model API key.
150
76
 
151
- </details>
77
+ Your code goes to the agent you chose, exactly as if you had run it yourself. It does not pass
78
+ through us. PR Review Buddy itself sends non-identifying usage telemetry, on by default: first use,
79
+ review start and finish, version, platform, agent, success and duration. Never your code, diffs,
80
+ repository names or review content. `prreviewbuddy config set telemetry-upload off` turns it off,
81
+ and [the privacy page](https://prreviewbuddy.com/privacy) lists every field.
152
82
 
153
- <details>
154
- <summary><b>Deleting a review</b></summary>
83
+ ## Commands
155
84
 
156
85
  ```
157
- prreviewbuddy review --review <review> --delete
86
+ prreviewbuddy review review this branch
87
+ prreviewbuddy review --pr <url> review a pull request
88
+ prreviewbuddy open open your previous reviews
89
+ prreviewbuddy help every command
158
90
  ```
159
91
 
160
- Reviews are kept for thirty days, and `--fresh` exists so you can review the same branch twice on
161
- purpose, so a bad run or an experiment is worth being able to clear out. Deleting removes the
162
- review and the isolated checkouts it was made in, and touches neither your branch nor its commits.
163
- It asks first; `--yes` skips that. It refuses while the review is still being analysed, and there is
164
- no flag past that: stopping an analysis and deleting its record are different decisions.
165
-
166
- The ID is the one `prreviewbuddy open` prints beside each review. It is required, because a branch
167
- can name several reviews once you have used `--fresh`.
168
-
169
- You can also delete from the list in your browser: the `...` menu on a review offers **Copy review
170
- ID** and **Delete review**, and the menu on a card deletes every review of that branch at once.
171
-
172
- </details>
92
+ Run `prreviewbuddy help` for the full command reference, and `prreviewbuddy review --help` for
93
+ every option a review takes. How reviews, updates and lenses work is under Help in the workspace.
173
94
 
174
- <details>
175
- <summary><b>Usage telemetry</b> — what is sent, and how to stop it</summary>
176
-
177
- Two events reach a server we run, on by default since 0.30.0: `review_started` and
178
- `review_finished`. Between them they carry a random UUID generated on your
179
- machine, the CLI version, the platform, which agent ran the analysis, a timestamp, whether it
180
- succeeded and how long it took. That is the whole list, and the server refuses any field that is
181
- not on it rather than accepting the request and dropping what it does not recognise.
182
-
183
- Never sent: your code, diffs, prompts, questions, findings, file paths, repository or branch names,
184
- or the counts of any of those. The identifier is an installation rather than a person, so a laptop,
185
- a desktop and a CI machine are three, and nothing joins them up. No IP address or user agent is
186
- stored against an event, and rows are deleted after 90 days.
187
-
188
- ```
189
- prreviewbuddy config get telemetry-upload what it is doing now
190
- prreviewbuddy config set telemetry-upload off
191
- PRB_TELEMETRY=off turns off the local log as well
192
- ```
193
-
194
- PR Review Buddy also keeps a fuller usage log on your own machine, at
195
- `~/.prreviewbuddy/events.jsonl`. It is yours to read or delete, and only the two events above ever
196
- leave the machine. [The published field table](https://prreviewbuddy.com/privacy) has the detail.
95
+ ## What you need
197
96
 
198
- </details>
97
+ - **Node 20 or newer**, and **git**.
98
+ - **A coding agent**, installed and signed in. `prreviewbuddy agents` shows which you have.
99
+ - **[GitHub CLI](https://cli.github.com/)** (`gh`), signed in, to read a pull request's
100
+ conversation. Without it the review still runs, on the code alone, and says so.
199
101
 
200
102
  ## Uninstall
201
103
 
@@ -204,20 +106,10 @@ prreviewbuddy uninstall
204
106
  npm rm -g prreviewbuddy
205
107
  ```
206
108
 
207
- The first line is the one worth knowing about. A review is made in an isolated checkout, and
208
- creating one writes an entry into the repository being reviewed, so deleting `~/.prreviewbuddy`
209
- yourself leaves entries pointing at nothing in repositories you had no reason to suspect.
210
- `uninstall` removes the checkouts, clears those entries in the repositories that have any, and then
211
- removes the store. It asks first, and it refuses while a review is still being made.
212
-
213
- `prreviewbuddy uninstall --keep-reviews` clears the runtime state and leaves your reviews and
214
- settings in `~/.prreviewbuddy`. `--yes` skips the confirmation, and `--force` stops a review that is
215
- still being made rather than refusing over it.
216
-
217
- Removing the package itself is the second line, and it is yours to run: a command that deleted the
218
- install it was running from would depend on whichever package manager put it there.
109
+ Run the first line first: it removes your reviews and the isolated checkouts, including the git
110
+ bookkeeping they left in your repositories.
219
111
 
220
112
  ---
221
113
 
222
- **Prefer reviewing in GitHub?** PR Review Buddy is also available as a Chrome extension that reviews
223
- pull requests in the browser. [prreviewbuddy.com](https://prreviewbuddy.com)
114
+ **Prefer to stay in GitHub?** PR Review Buddy is also a Chrome extension, for pull requests in your
115
+ browser. [prreviewbuddy.com](https://prreviewbuddy.com)
@@ -503,6 +503,7 @@ var claudeAgent = {
503
503
  displayName: "Claude Code",
504
504
  provider: "anthropic",
505
505
  modelSelectionHelp: { command: "claude --help" },
506
+ setupNotes: ["With several Claude profiles, CLAUDE_CONFIG_DIR is respected: set it in the", "shell you review from. A review keeps the profile it was started with."],
506
507
  captureEnv: captureEnv$3,
507
508
  /**
508
509
  * Which tool to sign in to, and which profile of it.
@@ -3276,6 +3277,14 @@ function describeAuthorship(changeSet, pullRequest) {
3276
3277
  }
3277
3278
  //#endregion
3278
3279
  //#region ../../packages/review-harness/src/domain/ai_review/review_session.ts
3280
+ /** The explanation of this finding, if the reviewer has asked for one. */
3281
+ function simpleExplanationOf(session, kind, id) {
3282
+ return session.simpleExplanations?.find((entry) => entry.kind === kind && entry.id === id);
3283
+ }
3284
+ /** The list with this finding's explanation replaced, never a second one beside it. */
3285
+ function withSimpleExplanation(entries, explanation) {
3286
+ return [...(entries ?? []).filter((entry) => !(entry.kind === explanation.kind && entry.id === explanation.id)), explanation];
3287
+ }
3279
3288
  /**
3280
3289
  * The session an analysis failed to produce.
3281
3290
  *
@@ -4421,9 +4430,14 @@ var WORKSPACES_DIR = join(STORE_ROOT, "workspaces");
4421
4430
  *
4422
4431
  * Named so that a long run that rewrites the session, an update above all, can put these back from
4423
4432
  * the copy on disk when it saves: the reviewer may have answered a question or dismissed a finding
4424
- * in the minutes it took. `handleState` is the only writer and writes nothing else.
4433
+ * in the minutes it took. `handleState` writes the first two and nothing else; `handleAsk` writes
4434
+ * `simpleExplanations`, and only when the reviewer asked for one.
4425
4435
  */
4426
- var REVIEWER_SESSION_FIELDS = ["answeredQuestionIds", "dismissedIssues"];
4436
+ var REVIEWER_SESSION_FIELDS = [
4437
+ "answeredQuestionIds",
4438
+ "dismissedIssues",
4439
+ "simpleExplanations"
4440
+ ];
4427
4441
  /**
4428
4442
  * A session a long run is about to write, with the reviewer's own fields taken from disk instead.
4429
4443
  *
@@ -16694,4 +16708,4 @@ function lineageIds(id) {
16694
16708
  return [.../* @__PURE__ */ new Set([id, ...lineage.map((review) => review.id)])];
16695
16709
  }
16696
16710
  //#endregion
16697
- export { MAX_WORKSPACE_PORT as $, isClaimed as $n, resolveAgent as $r, markReadForReview as $t, relativeTime as A, isWorktreeHeld as An, parseLifecycle as Ar, partFiles as At, readIndexToken as B, reviewedShaOf as Bn, issuesOutstanding as Br, isArchitectureId as Bt, track as C, originRemote as Cn, activityAttributes as Cr, mapRuntimes as Ct, endRun as D, MANAGED_ROOT as Dn, lifecycleItemLabel as Dr, ARCHITECTURE_DIR as Dt, completeRun as E, ReviewBeingDeletedError as En, lifecycleChip as Er, describeRuntimes as Et, runBatch as F, describeSubject as Fn, queueStamp as Fr, trackedFiles as Ft, reviewsUrl as G, loadJob as Gn, describeAuthorship as Gr, createArchitectureNotification as Gt, clearServerRecordOwnedBy as H, endedAt as Hn, reviewerDispositions as Hr, announceJob as Ht, activateQueued as I, findExistingReview as In, readQueue as Ir, ownersOf as It, stopChild as J, isLiveJob as Jn, resolveTarget as Jr, eventName as Jt, serverEntryExists as K, saveJob as Kn, WITHHELD_REASON as Kr, createPrState as Kt, compactQueue as L, checkCodeFreshness as Ln, doneVerb as Lr, QUOTE_LIMITS as Lt, extractPullRequestLinks as M, removeWorktree as Mn, queueAdd as Mr, repositoryKey as Mt, parsePullRequestLink as N, requestJobStop as Nn, queueAddMany as Nr, storeArchitecture as Nt, reportRun as O, createWorktree as On, lifecyclePill as Or, checkArchitecture as Ot, unsupportedReason as P, describeMovement as Pn, queueRemove as Pr, storedScopes as Pt, DEFAULT_WORKSPACE_PORT as Q, clearClaim as Qn, git as Qr, markRead as Qt, queueForReview as R, checkReview as Rn, isIssueOutstanding as Rr, REPOSITORY_SCOPE as Rt, isDriving as S, remoteHost as Sn, LIFECYCLES as Sr, waitingHistory as St, beginRun as T, modelHelpLines as Tn, isLifecycle as Tr, RUNTIME_WORDS as Tt, ensureServer as U, fail as Un, processDiscussion as Ur, branchOf as Ut, bootstrapUrl as V, allJobs as Vn, questionsOutstanding as Vr, writeJsonAtomically as Vt, readServerRecord as W, isTerminal as Wn, recommendationsOf as Wr, subjectOf as Wt, workspaceUrl as X, progressSteps as Xn, isCommitReview as Xr, listNotifications as Xt, stopServer as Y, phasesFor as Yn, DetachedHeadError as Yr, headline as Yt, writeServerRecord as Z, purposeOf as Zn, resolveBase as Zr, markAllRead as Zt, liveUpdateFor as _, extractJsonText as _n, reviewedRepositories as _r, telemetryUploadConsent as _t, wasBlocked as a, STORE_ROOT as ai, withUsageRecorded as an, kissDecisionRefusal as ar, failureOf as at, recordKissRun as b, forgeResolver as bn, workspaceRevision as br, PACKAGE_NAME as bt, RefreshUnavailableError as c, agentFor as ci, authorPreview as cn, lineagePosition as cr, reanalyseReview as ct, mergeUpdateInto as d, AgentUnavailableError as di, renderMarkdown as dn, mutateWorkspace as dr, append as dt, resolveModel as ei, pruneNotifications as en, decideKissRecommendation as er, MIN_WORKSPACE_PORT as et, updateReview as f, CODE_BLOCK_CLASS as fn, positionInLineage as fr, readEvents as ft, UpdateAlreadyRunningError as g, asString as gn, reviewedCommit as gr, recordTelemetryUploadConsent as gt, askCheckout as h, renderInlineText as hn, recentWorkspaces as hr, deliver as ht, liveJobsFor as i, CONFIG_PATH as ii, unreadCount as in, indexReviewGroups as ir, writePortPreference as it, batchIdentity as j, readMarker as jn, sectionOf as jr, readArchitecture as jt, stopRun as k, holdWorktree as kn, offersLifecycle as kr, loadArchitecture as kt, cancelUpdate as l, detectAgents as li, hasAuthorContent as ln, loadWorkspace as lr, runJob as lt, isUnchanged as m, escapeHtml as mn, previousKissResult as mr, stamp as mt, deleteReview as n, readAgentPreference as ni, removeNotification as nn, groupByLineage as nr, resolveWorkspacePort as nt, discardJob as o, AGENT_IDS as oi, EXPLAIN_SIMPLY_PROMPT as on, kissDecisionsOf as or, prepareReview as ot, refreshPrContext as p, CODE_COPY_CLASS as pn, presentedKissRunOf as pr, record as pt, spawnServer as q, PHASES as qn, kissOutcome as qr, createPrUpdate as qt, lineageIds as r, writeAgentPreference as ri, toneOf as rn, indexKeptIds as rr, statedWorkspacePort as rt, FETCH_TIMEOUT_MS as s, agentById as si, UNESTABLISHED_MOTIVATION as sn, latestKissRun as sr, settleReview as st, deleteLineage as t, clearAgentPreference as ti, readNotification as tn, followedRefName as tr, parseWorkspacePort as tt, cancellableHere as u, AgentCancelledError as ui, GITHUB_MARKDOWN as un, matchingWorkspaceIds as ur, startJob as ut, runningJobs as v, objectWithAnyOf as vn, summarise as vr, telemetryUploadEnabled as vt, RUN_KINDS as w, fillFileUrlTemplate as wn, activityLabel as wr, recordRuntimeBestEffort as wt, startKissJob as x, forgeFor as xn, workspaceStamps as xr, feedbackUrl as xt, agentEnvOf as y, claimRequestUrl as yn, touchWorkspace as yr, BUILD_VERSION as yt, settleQueue as z, followedBranch as zn, isQuestionOutstanding as zr, ancestorsOf as zt };
16711
+ export { MAX_WORKSPACE_PORT as $, isClaimed as $n, resolveBase as $r, markReadForReview as $t, relativeTime as A, isWorktreeHeld as An, parseLifecycle as Ar, partFiles as At, readIndexToken as B, reviewedShaOf as Bn, issuesOutstanding as Br, isArchitectureId as Bt, track as C, originRemote as Cn, activityAttributes as Cr, mapRuntimes as Ct, endRun as D, MANAGED_ROOT as Dn, lifecycleItemLabel as Dr, ARCHITECTURE_DIR as Dt, completeRun as E, ReviewBeingDeletedError as En, lifecycleChip as Er, describeRuntimes as Et, runBatch as F, describeSubject as Fn, queueStamp as Fr, trackedFiles as Ft, reviewsUrl as G, loadJob as Gn, simpleExplanationOf as Gr, createArchitectureNotification as Gt, clearServerRecordOwnedBy as H, endedAt as Hn, reviewerDispositions as Hr, announceJob as Ht, activateQueued as I, findExistingReview as In, readQueue as Ir, ownersOf as It, stopChild as J, isLiveJob as Jn, WITHHELD_REASON as Jr, eventName as Jt, serverEntryExists as K, saveJob as Kn, withSimpleExplanation as Kr, createPrState as Kt, compactQueue as L, checkCodeFreshness as Ln, doneVerb as Lr, QUOTE_LIMITS as Lt, extractPullRequestLinks as M, removeWorktree as Mn, queueAdd as Mr, repositoryKey as Mt, parsePullRequestLink as N, requestJobStop as Nn, queueAddMany as Nr, storeArchitecture as Nt, reportRun as O, createWorktree as On, lifecyclePill as Or, checkArchitecture as Ot, unsupportedReason as P, describeMovement as Pn, queueRemove as Pr, storedScopes as Pt, DEFAULT_WORKSPACE_PORT as Q, clearClaim as Qn, isCommitReview as Qr, markRead as Qt, queueForReview as R, checkReview as Rn, isIssueOutstanding as Rr, REPOSITORY_SCOPE as Rt, isDriving as S, remoteHost as Sn, LIFECYCLES as Sr, waitingHistory as St, beginRun as T, modelHelpLines as Tn, isLifecycle as Tr, RUNTIME_WORDS as Tt, ensureServer as U, fail as Un, processDiscussion as Ur, branchOf as Ut, bootstrapUrl as V, allJobs as Vn, questionsOutstanding as Vr, writeJsonAtomically as Vt, readServerRecord as W, isTerminal as Wn, recommendationsOf as Wr, subjectOf as Wt, workspaceUrl as X, progressSteps as Xn, resolveTarget as Xr, listNotifications as Xt, stopServer as Y, phasesFor as Yn, kissOutcome as Yr, headline as Yt, writeServerRecord as Z, purposeOf as Zn, DetachedHeadError as Zr, markAllRead as Zt, liveUpdateFor as _, extractJsonText as _n, reviewedRepositories as _r, telemetryUploadConsent as _t, wasBlocked as a, writeAgentPreference as ai, withUsageRecorded as an, kissDecisionRefusal as ar, failureOf as at, recordKissRun as b, forgeResolver as bn, workspaceRevision as br, PACKAGE_NAME as bt, RefreshUnavailableError as c, AGENT_IDS as ci, authorPreview as cn, lineagePosition as cr, reanalyseReview as ct, mergeUpdateInto as d, detectAgents as di, renderMarkdown as dn, mutateWorkspace as dr, append as dt, git as ei, pruneNotifications as en, decideKissRecommendation as er, MIN_WORKSPACE_PORT as et, updateReview as f, AgentCancelledError as fi, CODE_BLOCK_CLASS as fn, positionInLineage as fr, readEvents as ft, UpdateAlreadyRunningError as g, asString as gn, reviewedCommit as gr, recordTelemetryUploadConsent as gt, askCheckout as h, renderInlineText as hn, recentWorkspaces as hr, deliver as ht, liveJobsFor as i, readAgentPreference as ii, unreadCount as in, indexReviewGroups as ir, writePortPreference as it, batchIdentity as j, readMarker as jn, sectionOf as jr, readArchitecture as jt, stopRun as k, holdWorktree as kn, offersLifecycle as kr, loadArchitecture as kt, cancelUpdate as l, agentById as li, hasAuthorContent as ln, loadWorkspace as lr, runJob as lt, isUnchanged as m, escapeHtml as mn, previousKissResult as mr, stamp as mt, deleteReview as n, resolveModel as ni, removeNotification as nn, groupByLineage as nr, resolveWorkspacePort as nt, discardJob as o, CONFIG_PATH as oi, EXPLAIN_SIMPLY_PROMPT as on, kissDecisionsOf as or, prepareReview as ot, refreshPrContext as p, AgentUnavailableError as pi, CODE_COPY_CLASS as pn, presentedKissRunOf as pr, record as pt, spawnServer as q, PHASES as qn, describeAuthorship as qr, createPrUpdate as qt, lineageIds as r, clearAgentPreference as ri, toneOf as rn, indexKeptIds as rr, statedWorkspacePort as rt, FETCH_TIMEOUT_MS as s, STORE_ROOT as si, UNESTABLISHED_MOTIVATION as sn, latestKissRun as sr, settleReview as st, deleteLineage as t, resolveAgent as ti, readNotification as tn, followedRefName as tr, parseWorkspacePort as tt, cancellableHere as u, agentFor as ui, GITHUB_MARKDOWN as un, matchingWorkspaceIds as ur, startJob as ut, runningJobs as v, objectWithAnyOf as vn, summarise as vr, telemetryUploadEnabled as vt, RUN_KINDS as w, fillFileUrlTemplate as wn, activityLabel as wr, recordRuntimeBestEffort as wt, startKissJob as x, forgeFor as xn, workspaceStamps as xr, feedbackUrl as xt, agentEnvOf as y, claimRequestUrl as yn, touchWorkspace as yr, BUILD_VERSION as yt, settleQueue as z, followedBranch as zn, isQuestionOutstanding as zr, ancestorsOf as zt };