@quickchatai/pi-quickreview 1.2.0 → 1.3.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.
Files changed (231) hide show
  1. package/README.md +79 -27
  2. package/assets/config.example.toml +25 -7
  3. package/assets/prompts/onboarding.md +8 -7
  4. package/assets/schemas/review-result.v1.json +60 -0
  5. package/dist/extensions/quickreview.d.ts +17 -5
  6. package/dist/extensions/quickreview.d.ts.map +1 -1
  7. package/dist/extensions/quickreview.js +79 -26
  8. package/dist/extensions/quickreview.js.map +1 -1
  9. package/dist/src/engine/auth.d.ts +4 -0
  10. package/dist/src/engine/auth.d.ts.map +1 -1
  11. package/dist/src/engine/auth.js +11 -2
  12. package/dist/src/engine/auth.js.map +1 -1
  13. package/dist/src/engine/lens/activity.d.ts +45 -0
  14. package/dist/src/engine/lens/activity.d.ts.map +1 -0
  15. package/dist/src/engine/lens/activity.js +118 -0
  16. package/dist/src/engine/lens/activity.js.map +1 -0
  17. package/dist/src/engine/lens/runlens.d.ts +7 -0
  18. package/dist/src/engine/lens/runlens.d.ts.map +1 -1
  19. package/dist/src/engine/lens/runlens.js +30 -1
  20. package/dist/src/engine/lens/runlens.js.map +1 -1
  21. package/dist/src/engine/lens/tool.d.ts +7 -0
  22. package/dist/src/engine/lens/tool.d.ts.map +1 -1
  23. package/dist/src/engine/lens/tool.js +101 -18
  24. package/dist/src/engine/lens/tool.js.map +1 -1
  25. package/dist/src/engine/lens/wave.d.ts +6 -0
  26. package/dist/src/engine/lens/wave.d.ts.map +1 -1
  27. package/dist/src/engine/lens/wave.js +16 -0
  28. package/dist/src/engine/lens/wave.js.map +1 -1
  29. package/dist/src/homes.js +1 -1
  30. package/dist/src/homes.js.map +1 -1
  31. package/dist/src/live/events.d.ts +3 -0
  32. package/dist/src/live/events.d.ts.map +1 -1
  33. package/dist/src/live/events.js.map +1 -1
  34. package/dist/src/live/lensline.d.ts +20 -0
  35. package/dist/src/live/lensline.d.ts.map +1 -0
  36. package/dist/src/live/lensline.js +70 -0
  37. package/dist/src/live/lensline.js.map +1 -0
  38. package/dist/src/live/projection.d.ts +55 -0
  39. package/dist/src/live/projection.d.ts.map +1 -0
  40. package/dist/src/live/projection.js +465 -0
  41. package/dist/src/live/projection.js.map +1 -0
  42. package/dist/src/live/read.d.ts +24 -0
  43. package/dist/src/live/read.d.ts.map +1 -0
  44. package/dist/src/live/read.js +60 -0
  45. package/dist/src/live/read.js.map +1 -0
  46. package/dist/src/live/writer.d.ts +3 -0
  47. package/dist/src/live/writer.d.ts.map +1 -1
  48. package/dist/src/live/writer.js +6 -1
  49. package/dist/src/live/writer.js.map +1 -1
  50. package/dist/src/localreview.d.ts +18 -8
  51. package/dist/src/localreview.d.ts.map +1 -1
  52. package/dist/src/localreview.js +103 -43
  53. package/dist/src/localreview.js.map +1 -1
  54. package/dist/src/modelroute.d.ts +4 -0
  55. package/dist/src/modelroute.d.ts.map +1 -1
  56. package/dist/src/modelroute.js +21 -0
  57. package/dist/src/modelroute.js.map +1 -1
  58. package/dist/src/plugin/args.d.ts +38 -7
  59. package/dist/src/plugin/args.d.ts.map +1 -1
  60. package/dist/src/plugin/args.js +134 -37
  61. package/dist/src/plugin/args.js.map +1 -1
  62. package/dist/src/plugin/index.d.ts.map +1 -1
  63. package/dist/src/plugin/index.js +5 -1
  64. package/dist/src/plugin/index.js.map +1 -1
  65. package/dist/src/plugin/login.d.ts +8 -4
  66. package/dist/src/plugin/login.d.ts.map +1 -1
  67. package/dist/src/plugin/login.js +25 -32
  68. package/dist/src/plugin/login.js.map +1 -1
  69. package/dist/src/plugin/messages.d.ts +7 -0
  70. package/dist/src/plugin/messages.d.ts.map +1 -0
  71. package/dist/src/plugin/messages.js +13 -0
  72. package/dist/src/plugin/messages.js.map +1 -0
  73. package/dist/src/plugin/peers.d.ts +17 -0
  74. package/dist/src/plugin/peers.d.ts.map +1 -0
  75. package/dist/src/plugin/peers.js +55 -0
  76. package/dist/src/plugin/peers.js.map +1 -0
  77. package/dist/src/plugin/review.d.ts +52 -6
  78. package/dist/src/plugin/review.d.ts.map +1 -1
  79. package/dist/src/plugin/review.js +261 -95
  80. package/dist/src/plugin/review.js.map +1 -1
  81. package/dist/src/plugin/scan.d.ts +80 -44
  82. package/dist/src/plugin/scan.d.ts.map +1 -1
  83. package/dist/src/plugin/scan.js +450 -233
  84. package/dist/src/plugin/scan.js.map +1 -1
  85. package/dist/src/plugin/scancases.d.ts +33 -0
  86. package/dist/src/plugin/scancases.d.ts.map +1 -0
  87. package/dist/src/plugin/scancases.js +153 -0
  88. package/dist/src/plugin/scancases.js.map +1 -0
  89. package/dist/src/plugin/settings.d.ts +18 -0
  90. package/dist/src/plugin/settings.d.ts.map +1 -0
  91. package/dist/src/plugin/settings.js +47 -0
  92. package/dist/src/plugin/settings.js.map +1 -0
  93. package/dist/src/plugin/setup.d.ts +35 -12
  94. package/dist/src/plugin/setup.d.ts.map +1 -1
  95. package/dist/src/plugin/setup.js +258 -118
  96. package/dist/src/plugin/setup.js.map +1 -1
  97. package/dist/src/plugin/versiongate.d.ts +3 -0
  98. package/dist/src/plugin/versiongate.d.ts.map +1 -1
  99. package/dist/src/plugin/versiongate.js +9 -4
  100. package/dist/src/plugin/versiongate.js.map +1 -1
  101. package/dist/src/profileoverrides.d.ts +3 -0
  102. package/dist/src/profileoverrides.d.ts.map +1 -1
  103. package/dist/src/profileoverrides.js +9 -2
  104. package/dist/src/profileoverrides.js.map +1 -1
  105. package/dist/src/reviewapi.d.ts +22 -31
  106. package/dist/src/reviewapi.d.ts.map +1 -1
  107. package/dist/src/reviewapi.js +90 -66
  108. package/dist/src/reviewapi.js.map +1 -1
  109. package/dist/src/reviewdest.d.ts +1 -1
  110. package/dist/src/reviewdest.d.ts.map +1 -1
  111. package/dist/src/reviewdest.js +4 -3
  112. package/dist/src/reviewdest.js.map +1 -1
  113. package/dist/src/reviewtarget.d.ts +36 -0
  114. package/dist/src/reviewtarget.d.ts.map +1 -0
  115. package/dist/src/reviewtarget.js +6 -0
  116. package/dist/src/reviewtarget.js.map +1 -0
  117. package/dist/src/round-progress.d.ts +5 -0
  118. package/dist/src/round-progress.d.ts.map +1 -1
  119. package/dist/src/round-progress.js.map +1 -1
  120. package/dist/src/round-stage-deadlines.d.ts +26 -1
  121. package/dist/src/round-stage-deadlines.d.ts.map +1 -1
  122. package/dist/src/round-stage-deadlines.js +45 -2
  123. package/dist/src/round-stage-deadlines.js.map +1 -1
  124. package/dist/src/savedpost.d.ts +65 -0
  125. package/dist/src/savedpost.d.ts.map +1 -0
  126. package/dist/src/savedpost.js +131 -0
  127. package/dist/src/savedpost.js.map +1 -0
  128. package/dist/src/scan/caseread.d.ts +84 -0
  129. package/dist/src/scan/caseread.d.ts.map +1 -0
  130. package/dist/src/scan/caseread.js +263 -0
  131. package/dist/src/scan/caseread.js.map +1 -0
  132. package/dist/src/scan/channelfs.d.ts +6 -0
  133. package/dist/src/scan/channelfs.d.ts.map +1 -0
  134. package/dist/src/scan/channelfs.js +27 -0
  135. package/dist/src/scan/channelfs.js.map +1 -0
  136. package/dist/src/scan/cutrender.d.ts +13 -0
  137. package/dist/src/scan/cutrender.d.ts.map +1 -0
  138. package/dist/src/scan/cutrender.js +51 -0
  139. package/dist/src/scan/cutrender.js.map +1 -0
  140. package/dist/src/scan/facts.d.ts +72 -0
  141. package/dist/src/scan/facts.d.ts.map +1 -0
  142. package/dist/src/scan/facts.js +593 -0
  143. package/dist/src/scan/facts.js.map +1 -0
  144. package/dist/src/scan/findings.d.ts +320 -0
  145. package/dist/src/scan/findings.d.ts.map +1 -0
  146. package/dist/src/scan/findings.js +948 -0
  147. package/dist/src/scan/findings.js.map +1 -0
  148. package/dist/src/scan/ledger.d.ts +116 -0
  149. package/dist/src/scan/ledger.d.ts.map +1 -0
  150. package/dist/src/scan/ledger.js +207 -0
  151. package/dist/src/scan/ledger.js.map +1 -0
  152. package/dist/src/scan/presentation.d.ts +19 -0
  153. package/dist/src/scan/presentation.d.ts.map +1 -0
  154. package/dist/src/scan/presentation.js +9 -0
  155. package/dist/src/scan/presentation.js.map +1 -0
  156. package/dist/src/scan/scan.d.ts +354 -0
  157. package/dist/src/scan/scan.d.ts.map +1 -0
  158. package/dist/src/scan/scan.js +725 -0
  159. package/dist/src/scan/scan.js.map +1 -0
  160. package/dist/src/scan/scanagents.d.ts +23 -0
  161. package/dist/src/scan/scanagents.d.ts.map +1 -0
  162. package/dist/src/scan/scanagents.js +99 -0
  163. package/dist/src/scan/scanagents.js.map +1 -0
  164. package/dist/src/scan/scanassemble.d.ts +65 -0
  165. package/dist/src/scan/scanassemble.d.ts.map +1 -0
  166. package/dist/src/scan/scanassemble.js +93 -0
  167. package/dist/src/scan/scanassemble.js.map +1 -0
  168. package/dist/src/scan/scanfs.d.ts +26 -0
  169. package/dist/src/scan/scanfs.d.ts.map +1 -0
  170. package/dist/src/scan/scanfs.js +229 -0
  171. package/dist/src/scan/scanfs.js.map +1 -0
  172. package/dist/src/scan/scanlease.d.ts +50 -0
  173. package/dist/src/scan/scanlease.d.ts.map +1 -0
  174. package/dist/src/scan/scanlease.js +251 -0
  175. package/dist/src/scan/scanlease.js.map +1 -0
  176. package/dist/src/scan/scanleaves.d.ts +55 -0
  177. package/dist/src/scan/scanleaves.d.ts.map +1 -0
  178. package/dist/src/scan/scanleaves.js +258 -0
  179. package/dist/src/scan/scanleaves.js.map +1 -0
  180. package/dist/src/scan/scanports.d.ts +79 -0
  181. package/dist/src/scan/scanports.d.ts.map +1 -0
  182. package/dist/src/scan/scanports.js +8 -0
  183. package/dist/src/scan/scanports.js.map +1 -0
  184. package/dist/src/scan/scanrender.d.ts +128 -0
  185. package/dist/src/scan/scanrender.d.ts.map +1 -0
  186. package/dist/src/scan/scanrender.js +527 -0
  187. package/dist/src/scan/scanrender.js.map +1 -0
  188. package/dist/src/scan/scanreport.d.ts +126 -0
  189. package/dist/src/scan/scanreport.d.ts.map +1 -0
  190. package/dist/src/scan/scanreport.js +289 -0
  191. package/dist/src/scan/scanreport.js.map +1 -0
  192. package/dist/src/scan/scanrun.d.ts +472 -0
  193. package/dist/src/scan/scanrun.d.ts.map +1 -0
  194. package/dist/src/scan/scanrun.js +1733 -0
  195. package/dist/src/scan/scanrun.js.map +1 -0
  196. package/dist/src/scan/scantree.d.ts +21 -0
  197. package/dist/src/scan/scantree.d.ts.map +1 -0
  198. package/dist/src/scan/scantree.js +297 -0
  199. package/dist/src/scan/scantree.js.map +1 -0
  200. package/dist/src/scan/scanverbs.d.ts +208 -0
  201. package/dist/src/scan/scanverbs.d.ts.map +1 -0
  202. package/dist/src/scan/scanverbs.js +689 -0
  203. package/dist/src/scan/scanverbs.js.map +1 -0
  204. package/dist/src/scan/stage2.d.ts +221 -0
  205. package/dist/src/scan/stage2.d.ts.map +1 -0
  206. package/dist/src/scan/stage2.js +617 -0
  207. package/dist/src/scan/stage2.js.map +1 -0
  208. package/dist/src/scan/stage2request.d.ts +125 -0
  209. package/dist/src/scan/stage2request.d.ts.map +1 -0
  210. package/dist/src/scan/stage2request.js +259 -0
  211. package/dist/src/scan/stage2request.js.map +1 -0
  212. package/dist/src/scan/textsniff.d.ts +14 -0
  213. package/dist/src/scan/textsniff.d.ts.map +1 -0
  214. package/dist/src/scan/textsniff.js +88 -0
  215. package/dist/src/scan/textsniff.js.map +1 -0
  216. package/dist/src/scan/unitcut.d.ts +135 -0
  217. package/dist/src/scan/unitcut.d.ts.map +1 -0
  218. package/dist/src/scan/unitcut.js +437 -0
  219. package/dist/src/scan/unitcut.js.map +1 -0
  220. package/dist/src/scan/unitcutstore.d.ts +155 -0
  221. package/dist/src/scan/unitcutstore.d.ts.map +1 -0
  222. package/dist/src/scan/unitcutstore.js +381 -0
  223. package/dist/src/scan/unitcutstore.js.map +1 -0
  224. package/dist/src/setupchecklist.d.ts +240 -0
  225. package/dist/src/setupchecklist.d.ts.map +1 -0
  226. package/dist/src/setupchecklist.js +407 -0
  227. package/dist/src/setupchecklist.js.map +1 -0
  228. package/package.json +7 -3
  229. package/skills/qcr-review/SKILL.md +24 -0
  230. package/skills/qcr-scan/SKILL.md +23 -0
  231. package/skills/qcr-setup/SKILL.md +18 -0
package/README.md CHANGED
@@ -9,21 +9,67 @@ pi install npm:@quickchatai/pi-quickreview
9
9
 
10
10
  ## Commands
11
11
 
12
- - `/review` reviews the current branch against its base. `/review 123` (or a
13
- pull request URL) reviews a PR, and `/review --uncommitted` the uncommitted
14
- tree. `--preview` shows the plan and the price without running anything.
15
- The result is shown in the session, saved as markdown and JSON, or posted
16
- to the PR as a comment-only review (`--to pr`); pi asks each time, unless
17
- you keep an answer as the repo's default.
18
- - `/scan` scans the whole repo for defects, priced first and started only on
19
- your yes. It runs the `qcr` CLI on your machine; `--sandbox docker` runs it
20
- in the scan sandbox instead.
21
- - `/selfimprove` scans the repo, then hands the findings to this session's
22
- agent with a fix loop: triage, fix with tests, review, and a re-scan of
23
- what changed.
24
- - `/qcr-setup` checks the pi version, the login, git, GitHub access for PR
25
- targets and the `qcr` CLI, and offers to install `qcr`
26
- (`npm i -g @quickchatai/quickreview`).
12
+ Each command is also a skill of the same name, so the model in your session
13
+ knows the command and can tell you the line to type.
14
+
15
+ - `/qcr-review [preset] [target]` reviews in the background: the command
16
+ returns at once, you keep chatting, the status line shows the review's
17
+ progress, and the result arrives in the session as a message (and is kept
18
+ as markdown and JSON under the qcr state home).
19
+ - The target: nothing reviews the current branch against its base together
20
+ with its uncommitted changes, as one review; `123`, `#123` or a pull
21
+ request URL reviews a PR; a branch name reviews that branch;
22
+ `--uncommitted` reviews the uncommitted changes alone.
23
+ - The preset, first when given: `quick` (lower reasoning, about half the
24
+ cost), `full` (the whole target again at the highest reasoning) or
25
+ `security` (only the security and data-safety lenses the change
26
+ triggers).
27
+ - `--preview` shows the plan and the price without running anything;
28
+ `--stop` stops the review that is running. One review runs per session
29
+ at a time, and ending the session stops it.
30
+ - After a PR review, your posting rule decides whether it goes to the PR
31
+ as a comment-only review (see Settings).
32
+ - `/qcr-scan [--delta] [--sha REF] [--preview]` scans the whole repo for
33
+ defects, priced first and started only on your yes. It runs in the
34
+ background in this pi, like a review: a status line while it runs, the new
35
+ findings as a message when it ends, `/qcr-scan stop` to stop it. Its cases
36
+ are SDK sessions of this pi behind the same read-only bash guard as the
37
+ review's lenses. `/qcr-scan findings`, `status`, `units` and the other
38
+ scan subcommands pass through as typed. The scan sandbox (a container) and
39
+ dismissing a finding are the `qcr` app's (`qcr scan`).
40
+ - `/qcr-setup` checks the pi version, the login, git and GitHub access for
41
+ PR targets. It then offers to set up this repo's profile (`.qcr/`), No
42
+ first: on your yes, your agent in the session surveys the repo, reads its
43
+ review history, interviews you and writes the profile for you to commit.
44
+ `/qcr-setup profile` starts that straight away. Its checks are steps on a
45
+ setup checklist (`src/setupchecklist.ts`) that the `qcr` app extends with
46
+ its own steps.
47
+
48
+ `/review`, `/scan` and `/selfimprove` are gone: pi's command namespace is
49
+ shared with every other extension, so the commands carry the `qcr-` prefix.
50
+ `/review` is `/qcr-review`, `/scan` is `/qcr-scan`, and `/selfimprove` is a
51
+ command of the `qcr` app's own pi (`qcr pi`).
52
+
53
+ ## Settings
54
+
55
+ Your own defaults live in pi's settings (`~/.pi/agent/settings.json`, or the
56
+ project's `.pi/settings.json`), under `quickreview`:
57
+
58
+ ```json
59
+ {
60
+ "quickreview": {
61
+ "posting": "ask",
62
+ "preset": "quick"
63
+ }
64
+ }
65
+ ```
66
+
67
+ - `posting` decides what happens after a PR review: `ask` (the default)
68
+ asks, with "No, keep it here" offered first; `never` keeps every review in
69
+ the session; `always` posts without asking.
70
+ - `preset` is the preset a `/qcr-review` without one runs under.
71
+
72
+ Rules for one repository live in its profile, not here.
27
73
 
28
74
  ## Which pi
29
75
 
@@ -42,32 +88,38 @@ exactly instead; `qcr pi` starts that pinned pi with this plugin preloaded.
42
88
  - A pi login for the review's models (`/login` in pi). The review borrows
43
89
  it: pi refreshes it when needed, and the review only ever reads a copy.
44
90
  An API key for another provider is not used in its place: with no login
45
- for the review's provider, `/review` stops and names `/login`.
91
+ for the review's provider, `/qcr-review` stops and names `/login`. The
92
+ scan borrows it the same way.
46
93
  - For a PR: the App when a qcr install configures one, else `GITHUB_TOKEN`,
47
94
  `GH_TOKEN` or `gh auth login`, in that order.
48
- - For posting (`--to pr`): a qcr config with `dry_run = false`. The shipped
49
- defaults keep `dry_run` on, and then `/review` refuses to post and says so.
95
+ - For posting: a qcr config with `dry_run = false`. The shipped defaults keep
96
+ `dry_run` on, and then a post is recorded under the qcr state home
97
+ (`review/dryrun/`) and nothing is sent; the post question says so.
50
98
 
51
99
  ## What it never does
52
100
 
53
- - The review never writes to your checkout: it reads the tree as it is.
54
- (`/selfimprove`'s fixes are made by your own session's agent, under your
55
- pi's own tools and permissions, not by the review.)
56
- - The review never runs your code, tests or app: it reads code and CI.
57
- - It never posts unless you choose `--to pr`, and then it posts one
58
- comment-only review through the same mutation gate the bot uses. It never
59
- approves, requests changes or dismisses a review.
101
+ - The review and the scan never write to your checkout: they read the tree
102
+ as it is.
103
+ - The review and the scan never run your code, tests or app: they read code
104
+ (and the review, CI).
105
+ - It never runs the `qcr` CLI.
106
+ - It never posts unless you say yes to the post question (or your posting
107
+ rule is `always`), and then it posts one comment-only review through the
108
+ same mutation gate the bot uses. It never approves, requests changes or
109
+ dismisses a review.
60
110
  - It never refreshes your login itself, and never hands a token to the
61
111
  model's tools.
62
112
  - It never gives your session a tool. The review's lens passes run in their
63
113
  own sessions, with none of your pi extensions, skills or settings, and
64
- your session only sees the result.
114
+ your session only sees the result. The skills it ships are instructions
115
+ for your session's model, naming the commands.
65
116
  - It never sets or flips `dry_run`.
66
117
  - It never starts `claude`.
67
118
 
68
119
  ## What ships in the package
69
120
 
70
- The compiled review core and the plugin (`dist/`), and under `assets/` the
121
+ The compiled review core and the plugin (`dist/`), one skill per command
122
+ (`skills/`), and under `assets/` the
71
123
  data the core reads: the agents, prompts and seeds, the schemas, the
72
124
  profiles and the shipped config defaults. `assets/` is copied from the
73
125
  repository at pack time and checked file by file against its source, so the
@@ -6,10 +6,11 @@
6
6
  # supply are marked "← FILL (n)" — grep for FILL. Flip dry_run to false only
7
7
  # as a deliberate cutover act, never as part of setup.
8
8
  #
9
- # YOU DO NOT HAVE TO FILL THIS BY HAND: `scripts/qcr onboard` interviews you
10
- # for the few values only you can answer, derives the rest, and patches this
11
- # file in place — every comment survives, and a re-run edits only what changed.
12
- # It never writes dry_run in either direction; going live is its own explicit
9
+ # YOU DO NOT HAVE TO FILL THIS BY HAND: a bare `qcr` (the home) writes the
10
+ # repository you choose and its defaults, and the setup wizard's steps
11
+ # interview you for the rest, derive what they can, and patch this file in
12
+ # place — every comment survives, and a re-run edits only what changed.
13
+ # Neither writes dry_run in either direction; going live is its own explicit
13
14
  # step. See docs/onboarding.md.
14
15
  # ONE mutation class is exempt and executes for real even here: the App
15
16
  # re-pointing its OWN webhook URL (see [ingress] below) — it can never touch
@@ -131,7 +132,11 @@ session_command_start_lease_s = 120
131
132
  session_command_running_max_min = 45
132
133
  # Command-correlated execution milestones: no first pass, incomplete pass plan,
133
134
  # and all-passes-done/no-verdict. Absolute start-derived bounds; activity cannot
134
- # renew them.
135
+ # renew them. The first pass is any discovery lens the daemon dispatched, a
136
+ # planned one or one of the round's optional rows. A plan above 20 discovery
137
+ # rows gets a minute per row more on both the passes bound and the running cap,
138
+ # up to 20 (packages/pi-plugin/src/round-stage-deadlines.ts); it does not stack
139
+ # with the follow-up sweep's allowance.
135
140
  round_first_pass_max_min = 5
136
141
  round_passes_max_min = 35
137
142
  round_finalize_grace_min = 5
@@ -286,7 +291,7 @@ small_diff_lines = 150
286
291
  # EMPTY ssh_host), the TUI never runs `ssh ""`: on a compose project (the
287
292
  # checklist recorded the local topology, or the project .env pins
288
293
  # QCR_VERSION) it reads the local stack and says so once; otherwise every
289
- # surface says "ssh_host is empty — run qcr onboard".
294
+ # surface says "ssh_host is empty — set it to the VM's ssh alias".
290
295
  target = "ssh"
291
296
  ssh_host = "" # ← FILL (7): ssh alias of the VM running the container
292
297
  # (leave "" when target = "local" — it is unused)
@@ -367,6 +372,19 @@ session_dir = "state/pi-sessions"
367
372
  # lens_cache_stagger_ms = 2500
368
373
  # lens_pass_deadline_min = 8
369
374
 
375
+ [home]
376
+ # The home: a bare `qcr` opens the app's own pinned pi, on your own pi login
377
+ # ($PI_CODING_AGENT_DIR, default ~/.pi/agent), with a panel of the
378
+ # repository's pull requests. Every key is optional.
379
+ # model — the chat's model, "provider/id". The panel counts only this
380
+ # model's provider as signed in: a login under another provider
381
+ # cannot run the chat.
382
+ # tools — "reviewer": the model may call the plugin's tools, the home's
383
+ # own home_* tools and pi's read tools (read, grep, find, ls), and
384
+ # no MCP server starts. "full": every tool pi has.
385
+ model = "openai-codex/gpt-6.1-sol"
386
+ tools = "reviewer"
387
+
370
388
  [memory]
371
389
  # Round seeding — how much memory rides each round prompt and how
372
390
  # long the daemon waits for it. Memory NEVER blocks or delays a round: past
@@ -891,7 +909,7 @@ extra_vendored_segments = [] # extra third-party markers (case-insensitive)
891
909
  # whatever — the system BEHAVES exactly as a build without the feature.
892
910
  # (The placeholder that renders empty leaves a blank line in the prompt, like
893
911
  # the sibling notes beside it.)
894
- # `qcr onboard`'s escalation step writes this section.
912
+ # The setup wizard's escalation step writes this section.
895
913
  #
896
914
  # The configuration cannot be half-done: `enabled = true` with no `targets`,
897
915
  # or a rule pointing at a login that is not a target, or a rule that declares
@@ -94,20 +94,21 @@ the own-account route: it is skipped there.
94
94
  `onboard_go_live` are marked "after setup": setup finishes without them. Do
95
95
  not run them here unless the person asks. Say plainly that the installation
96
96
  stays in dry-run (every intended GitHub write is recorded, nothing is
97
- posted), and that going live is their decision later: re-run `qcr onboard`
98
- and ask for it once a review on the board has shown them what it says.
97
+ posted), and that going live is their decision later, from the home
98
+ (Advanced → "Dry-run or live"), once a review has shown them what it says.
99
99
 
100
100
  ## Finishing
101
101
 
102
102
  When every setup step reports done (the "after setup" ones need not be), say
103
103
  that `finish_and_exit` will re-verify the whole checklist one last time and,
104
- only if all green, close this session and open the TUI on the board: there they
105
- select a pull request and press `R` to review it now. If it returns red checks, that is the answer: explain them, fix
104
+ only if all green, close this session: the home then lists the repository's
105
+ pull requests, and they select one and press `alt+r` to review it now. If it
106
+ returns red checks, that is the answer: explain them, fix
106
107
  what can be fixed through the step tools, and try again. Never present
107
108
  onboarding as finished while anything is red, and never tell the operator to
108
109
  quit around a red check.
109
110
 
110
- Before `finish_and_exit`, pass on what comes next: the first review is `R` on
111
- a pull request on the board; then set up the repo with `qcr setup` (or `I` on
112
- the TUI board). Until then the reviewer knows nothing about this codebase. It is a
111
+ Before `finish_and_exit`, pass on what comes next: the first review is `alt+r`
112
+ on a pull request in the home; then tune the reviewer to the repository with
113
+ the home's "Tune to this repo" (`t` on the panel). Until then the reviewer knows nothing about this codebase. It is a
113
114
  recommendation, once — never start it from here.
@@ -137,6 +137,10 @@
137
137
  "post": {
138
138
  "$ref": "#/$defs/post"
139
139
  },
140
+ "post_ready": {
141
+ "type": "string",
142
+ "description": "A finished PR review that was not posted: the file it is kept in, which a host that asks the person later posts through the gate exactly as `--to pr` would have."
143
+ },
140
144
  "run_id": {
141
145
  "type": "string",
142
146
  "description": "A detached run's id (start, status, stop)."
@@ -149,6 +153,14 @@
149
153
  "type": "string",
150
154
  "description": "What a detached run reviews."
151
155
  },
156
+ "started_at": {
157
+ "type": "number",
158
+ "description": "When a detached run was started, ms since the epoch."
159
+ },
160
+ "ended_at": {
161
+ "type": "number",
162
+ "description": "When a detached run ended (its exit or its stop), ms since the epoch; absent while it runs."
163
+ },
152
164
  "elapsed_s": {
153
165
  "type": "integer",
154
166
  "minimum": 0
@@ -165,6 +177,50 @@
165
177
  "items": {
166
178
  "type": "string"
167
179
  }
180
+ },
181
+ "live": {
182
+ "type": "object",
183
+ "description": "The running round's live log, projected: what the parent and each lens are doing now.",
184
+ "properties": {
185
+ "round": { "type": "integer", "minimum": 1 },
186
+ "parent_status": { "enum": ["active", "settled"] },
187
+ "last_activity": { "type": "string" },
188
+ "updated_at": { "type": "string" },
189
+ "active_tool": { "type": "string" },
190
+ "agents": {
191
+ "type": "array",
192
+ "items": {
193
+ "type": "object",
194
+ "required": ["agent", "status", "duration_ms", "tool_count"],
195
+ "properties": {
196
+ "agent": { "type": "string" },
197
+ "status": { "enum": ["running", "completed", "failed"] },
198
+ "duration_ms": {
199
+ "type": "number",
200
+ "minimum": 0,
201
+ "description": "The lens's time so far; a running lens's counts from its start between updates."
202
+ },
203
+ "tool_count": {
204
+ "type": "number",
205
+ "minimum": 0,
206
+ "description": "Tool calls the lens has started; a finished lens keeps its final count."
207
+ },
208
+ "current_tool": {
209
+ "type": "string",
210
+ "description": "The running (or last) tool, as `<tool>: <args>` or the bare name."
211
+ },
212
+ "current_target": {
213
+ "type": "string",
214
+ "description": "While the lens runs: the path its current tool works on, when it names one."
215
+ },
216
+ "line": {
217
+ "type": "string",
218
+ "description": "The lens as one line a person reads: `security · read src/x.ts · 7 tools · 0:41`."
219
+ }
220
+ }
221
+ }
222
+ }
223
+ }
168
224
  }
169
225
  }
170
226
  },
@@ -234,6 +290,10 @@
234
290
  "kind": {
235
291
  "enum": ["pr", "branch", "uncommitted", "diff"],
236
292
  "description": "What is reviewed: a pull request, the current branch against its base, the uncommitted working tree, or a unified diff handed in (`--diff`). Only a pr target can be posted."
293
+ },
294
+ "uncommitted": {
295
+ "const": true,
296
+ "description": "A branch target reviewed together with the working tree's uncommitted edits, as one review. Absent otherwise."
237
297
  }
238
298
  }
239
299
  },
@@ -1,5 +1,7 @@
1
- import { type ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
- import type { Runner } from "../src/plugin/session.js";
1
+ import { type ExtensionAPI, type ExtensionCommandContext } from "@earendil-works/pi-coding-agent";
2
+ import type { HostAuth } from "../src/plugin/login.js";
3
+ import { type ReviewCommandDeps } from "../src/plugin/review.js";
4
+ import type { Runner, SessionUi } from "../src/plugin/session.js";
3
5
  /** What the host entry hands the plugin. */
4
6
  export interface QuickReviewConfig {
5
7
  /** The process environment, read once by the host entry. */
@@ -9,13 +11,23 @@ export interface QuickReviewConfig {
9
11
  runner: Runner;
10
12
  /** Standard output (pi's print mode shows a command's result there). */
11
13
  print: (text: string) => void;
12
- /** Test seams: the running pi's version, its agent dir, the range. */
14
+ /** Resolve pi's own packages from the running pi's package dir for what the
15
+ * plugin imports later with Node's import() (src/plugin/peers.ts). */
16
+ peers?: (piDir: string) => void;
17
+ /** Test seams: the running pi's version and package dir, its agent dir, the
18
+ * range, the review's core. */
13
19
  piVersion?: string;
20
+ piDir?: string;
14
21
  agentDir?: string;
15
22
  range?: string;
23
+ review?: ReviewCommandDeps;
16
24
  }
17
- /** The commands, in the order /qcr-setup names them. */
18
- export declare const QUICKREVIEW_COMMANDS: readonly ["review", "scan", "qcr-setup", "selfimprove"];
25
+ /** The commands, each also a skill of the same name (skills/<name>/SKILL.md). */
26
+ export declare const QUICKREVIEW_COMMANDS: readonly ["qcr-review", "qcr-scan", "qcr-setup"];
27
+ /** The host pi's auth, by the shape the plugin asks of it. */
28
+ export declare function hostAuth(ctx: ExtensionCommandContext, agentDir: string): HostAuth;
29
+ /** The session's ways to reach the person, from a command's context. */
30
+ export declare function sessionUi(pi: ExtensionAPI, ctx: ExtensionCommandContext, print: (t: string) => void): SessionUi;
19
31
  /** The plugin's extension factory over `config`. */
20
32
  export declare function createQuickReview(config: QuickReviewConfig): (pi: ExtensionAPI) => void;
21
33
  //# sourceMappingURL=quickreview.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"quickreview.d.ts","sourceRoot":"","sources":["../../extensions/quickreview.ts"],"names":[],"mappings":"AAYA,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,iCAAiC,CAAC;AAOzC,OAAO,KAAK,EAAc,MAAM,EAAa,MAAM,0BAA0B,CAAC;AAI9E,4CAA4C;AAC5C,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wDAAwD;AACxD,eAAO,MAAM,oBAAoB,yDAA0D,CAAC;AAoE5F,oDAAoD;AACpD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,CAuEvF"}
1
+ {"version":3,"file":"quickreview.d.ts","sourceRoot":"","sources":["../../extensions/quickreview.ts"],"names":[],"mappings":"AAsBA,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC7B,MAAM,iCAAiC,CAAC;AAIzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAc,MAAM,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAK9E,4CAA4C;AAC5C,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B;0EACsE;IACtE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC;mCAC+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,kDAAmD,CAAC;AAErF,8DAA8D;AAC9D,wBAAgB,QAAQ,CAAC,GAAG,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,CA8BjF;AAKD,wEAAwE;AACxE,wBAAgB,SAAS,CACvB,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,uBAAuB,EAC5B,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GACzB,SAAS,CA6BX;AAED,oDAAoD;AACpD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,CAoGvF"}
@@ -1,8 +1,18 @@
1
- // The QuickReview pi plugin: /review, /scan, /qcr-setup and /selfimprove in a
2
- // user's own pi. A factory over its config (the host entry,
1
+ // The QuickReview pi plugin: /qcr-review, /qcr-scan and /qcr-setup in a
2
+ // user's own pi, each also shipped as a skill of the same name (the
3
+ // package's skills/). A factory over its config (the host entry,
3
4
  // src/plugin/index.ts, reads the process's env and home once and hands them
4
5
  // in); the commands themselves are src/plugin/.
5
6
  //
7
+ // The names are namespaced because pi's command namespace is shared with
8
+ // every other extension: the unprefixed /review, /scan and /selfimprove are
9
+ // gone (ADR 0001), and /selfimprove is the app's (its own pi, `qcr pi`).
10
+ //
11
+ // /qcr-review and /qcr-scan run in the background: the command returns at
12
+ // once, one review and one scan run per session, and the session's end stops
13
+ // them. /qcr-setup runs in the foreground: the plugin's setup checklist
14
+ // (src/setupchecklist.ts), the plugin's own steps only.
15
+ //
6
16
  // At load the running pi's VERSION is checked against the range the package
7
17
  // declares (src/plugin/versiongate.ts). Outside it the plugin registers no
8
18
  // command and says so once, at the session's start.
@@ -10,18 +20,19 @@
10
20
  // The person's own session gets commands and messages from the plugin, never
11
21
  // a tool: the review's lens tools exist only inside the engine's own nested
12
22
  // sessions (passes are leaves: the single-shepherd invariant in AGENTS.md).
13
- import { VERSION, getAgentDir, } from "@earendil-works/pi-coding-agent";
23
+ import { VERSION, getAgentDir, getPackageDir, } from "@earendil-works/pi-coding-agent";
14
24
  import { existsSync, readFileSync } from "node:fs";
15
25
  import { join } from "node:path";
16
26
  import { loginSummary } from "../src/engine/auth.js";
17
- import { REVIEW_MESSAGE, runReviewCommand } from "../src/plugin/review.js";
18
- import { runScanCommand, runSelfImproveCommand } from "../src/plugin/scan.js";
27
+ import { REVIEW_DEPS, REVIEW_MESSAGE, ReviewSlot, startReviewCommand, } from "../src/plugin/review.js";
28
+ import { runScanCommand, ScanSessions } from "../src/plugin/scan.js";
29
+ import { readQuickReviewSettings } from "../src/plugin/settings.js";
19
30
  import { runSetupCommand } from "../src/plugin/setup.js";
20
31
  import { declaredPiRange, piGate } from "../src/plugin/versiongate.js";
21
- /** The commands, in the order /qcr-setup names them. */
22
- export const QUICKREVIEW_COMMANDS = ["review", "scan", "qcr-setup", "selfimprove"];
32
+ /** The commands, each also a skill of the same name (skills/<name>/SKILL.md). */
33
+ export const QUICKREVIEW_COMMANDS = ["qcr-review", "qcr-scan", "qcr-setup"];
23
34
  /** The host pi's auth, by the shape the plugin asks of it. */
24
- function hostAuth(ctx, agentDir) {
35
+ export function hostAuth(ctx, agentDir) {
25
36
  const registry = ctx.modelRegistry;
26
37
  return {
27
38
  logins() {
@@ -51,7 +62,8 @@ function hostAuth(ctx, agentDir) {
51
62
  }
52
63
  /** Is `data` the Esc key, as the terminal sends it? */
53
64
  const isEscape = (data) => data === "\x1b" || data === "\x1b[27u";
54
- function sessionUi(pi, ctx, print) {
65
+ /** The session's ways to reach the person, from a command's context. */
66
+ export function sessionUi(pi, ctx, print) {
55
67
  return {
56
68
  mode: ctx.mode,
57
69
  interactive: ctx.hasUI,
@@ -67,7 +79,9 @@ function sessionUi(pi, ctx, print) {
67
79
  return { consume: true };
68
80
  })
69
81
  : () => { },
70
- show: (markdown, details) => pi.sendMessage({ customType: REVIEW_MESSAGE, content: markdown, display: true, details }),
82
+ // Shown, never a turn of its own: while the agent streams, the message
83
+ // waits for the turn to end instead of steering it.
84
+ show: (markdown, details) => pi.sendMessage({ customType: REVIEW_MESSAGE, content: markdown, display: true, details }, { triggerTurn: false }),
71
85
  tellAgent: (text) => ctx.isIdle() ? pi.sendUserMessage(text) : pi.sendUserMessage(text, { deliverAs: "followUp" }),
72
86
  print,
73
87
  };
@@ -88,6 +102,7 @@ export function createQuickReview(config) {
88
102
  });
89
103
  return;
90
104
  }
105
+ config.peers?.(config.piDir ?? getPackageDir());
91
106
  // The current session's end: a run in flight stops with it.
92
107
  let shutdown = new AbortController();
93
108
  pi.on("session_start", () => {
@@ -95,6 +110,34 @@ export function createQuickReview(config) {
95
110
  shutdown = new AbortController();
96
111
  });
97
112
  pi.on("session_shutdown", () => shutdown.abort());
113
+ const hostOf = (ctx) => {
114
+ const agentDir = config.agentDir ?? getAgentDir();
115
+ return {
116
+ cwd: ctx.cwd,
117
+ env: config.env,
118
+ home: config.home,
119
+ piVersion: version,
120
+ agentDir,
121
+ auth: hostAuth(ctx, agentDir),
122
+ runner: config.runner,
123
+ shutdown: shutdown.signal,
124
+ };
125
+ };
126
+ // The person's own defaults, as pi's settings hold them now.
127
+ const settings = (ui) => {
128
+ let all;
129
+ try {
130
+ all = pi.getSettings();
131
+ }
132
+ catch {
133
+ all = undefined;
134
+ }
135
+ const read = readQuickReviewSettings(all);
136
+ for (const w of read.warnings)
137
+ ui.notify(w, "warning");
138
+ return read.settings;
139
+ };
140
+ // /qcr-setup: in the foreground, one at a time.
98
141
  let busy = false;
99
142
  const command = (name, description, run) => pi.registerCommand(name, {
100
143
  description,
@@ -105,28 +148,38 @@ export function createQuickReview(config) {
105
148
  }
106
149
  busy = true;
107
150
  try {
108
- const agentDir = config.agentDir ?? getAgentDir();
109
- const host = {
110
- cwd: ctx.cwd,
111
- env: config.env,
112
- home: config.home,
113
- piVersion: version,
114
- agentDir,
115
- auth: hostAuth(ctx, agentDir),
116
- runner: config.runner,
117
- shutdown: shutdown.signal,
118
- };
119
- await run(args.trim(), host, sessionUi(pi, ctx, config.print));
151
+ await run(args.trim(), hostOf(ctx), sessionUi(pi, ctx, config.print));
120
152
  }
121
153
  finally {
122
154
  busy = false;
123
155
  }
124
156
  },
125
157
  });
126
- command("review", "QuickReview: review a PR, this branch or the uncommitted tree (--preview prices it)", runReviewCommand);
127
- command("scan", "QuickReview: scan the whole repo (needs the qcr CLI; --sandbox docker to sandbox it)", runScanCommand);
128
- command("qcr-setup", "QuickReview: check what the plugin needs, install qcr", (_a, host, ui) => runSetupCommand(host, ui, { range }));
129
- command("selfimprove", "QuickReview: scan this repo, then have this session's agent fix the findings", runSelfImproveCommand);
158
+ // /qcr-review: in the background, one review at a time in this session.
159
+ const reviews = new ReviewSlot();
160
+ pi.registerCommand("qcr-review", {
161
+ description: "QuickReview: review this branch with its uncommitted changes, a PR, a branch or --uncommitted, in the background ([quick|full|security] first; --preview prices it, --stop stops it)",
162
+ handler: async (args, ctx) => {
163
+ const ui = sessionUi(pi, ctx, config.print);
164
+ await startReviewCommand(args.trim(), hostOf(ctx), ui, {
165
+ slot: reviews,
166
+ deps: config.review ?? REVIEW_DEPS,
167
+ settings: settings(ui),
168
+ });
169
+ },
170
+ });
171
+ // /qcr-scan: the plugin's own scan engine, in the background, one scan at
172
+ // a time in this session; a subcommand is answered in the foreground.
173
+ const scans = new ScanSessions();
174
+ pi.registerCommand("qcr-scan", {
175
+ description: "QuickReview: scan the whole repo in the background (--delta, --sha REF, --preview; or a scan subcommand: status, stop, findings, units …)",
176
+ handler: async (args, ctx) => {
177
+ await runScanCommand(args.trim(), hostOf(ctx), sessionUi(pi, ctx, config.print), {
178
+ sessions: scans,
179
+ });
180
+ },
181
+ });
182
+ command("qcr-setup", "QuickReview: check what the plugin needs (pi, login, git, GitHub); `profile` sets up this repo's profile", (args, host, ui) => runSetupCommand(args, host, ui, { range }));
130
183
  };
131
184
  }
132
185
  //# sourceMappingURL=quickreview.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quickreview.js","sourceRoot":"","sources":["../../extensions/quickreview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quickreview.js","sourceRoot":"","sources":["../../extensions/quickreview.ts"],"names":[],"mappings":"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"}
@@ -125,6 +125,10 @@ export declare function engineCredentials(o: {
125
125
  words?: AuthCopyWords;
126
126
  /** The refusal margin on top of `needMs`; default pi's refresh margin. */
127
127
  marginMs?: number;
128
+ /** Check only the logins these providers run on (each OpenAI one on the
129
+ * login that exists, modelroute.ts): a shared pi home's login for a
130
+ * provider the run never uses cannot refuse it. Omitted: every OAuth entry. */
131
+ providers?: readonly string[];
128
132
  }): EngineAuth;
129
133
  /**
130
134
  * Write the refresh-disabled copy of `srcDir/auth.json` to `dstDir/auth.json`
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/engine/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/engine/auth.ts"],"names":[],"mappings":"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"}