@quickchatai/pi-quickreview 1.1.0 → 1.3.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.
Files changed (241) hide show
  1. package/README.md +79 -27
  2. package/assets/config.example.toml +60 -14
  3. package/assets/prompts/onboarding.md +58 -18
  4. package/assets/schemas/review-result.v1.json +60 -0
  5. package/dist/extensions/quickreview.d.ts +13 -5
  6. package/dist/extensions/quickreview.d.ts.map +1 -1
  7. package/dist/extensions/quickreview.js +77 -25
  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/envmap.d.ts.map +1 -1
  14. package/dist/src/engine/envmap.js +5 -0
  15. package/dist/src/engine/envmap.js.map +1 -1
  16. package/dist/src/engine/lens/activity.d.ts +45 -0
  17. package/dist/src/engine/lens/activity.d.ts.map +1 -0
  18. package/dist/src/engine/lens/activity.js +118 -0
  19. package/dist/src/engine/lens/activity.js.map +1 -0
  20. package/dist/src/engine/lens/runlens.d.ts +7 -0
  21. package/dist/src/engine/lens/runlens.d.ts.map +1 -1
  22. package/dist/src/engine/lens/runlens.js +30 -1
  23. package/dist/src/engine/lens/runlens.js.map +1 -1
  24. package/dist/src/engine/lens/tool.d.ts +7 -0
  25. package/dist/src/engine/lens/tool.d.ts.map +1 -1
  26. package/dist/src/engine/lens/tool.js +101 -18
  27. package/dist/src/engine/lens/tool.js.map +1 -1
  28. package/dist/src/engine/lens/wave.d.ts +6 -0
  29. package/dist/src/engine/lens/wave.d.ts.map +1 -1
  30. package/dist/src/engine/lens/wave.js +16 -0
  31. package/dist/src/engine/lens/wave.js.map +1 -1
  32. package/dist/src/engine/pisdk.d.ts +9 -0
  33. package/dist/src/engine/pisdk.d.ts.map +1 -1
  34. package/dist/src/engine/pisdk.js +29 -4
  35. package/dist/src/engine/pisdk.js.map +1 -1
  36. package/dist/src/githubAuth.d.ts +39 -1
  37. package/dist/src/githubAuth.d.ts.map +1 -1
  38. package/dist/src/githubAuth.js +75 -8
  39. package/dist/src/githubAuth.js.map +1 -1
  40. package/dist/src/guards.d.ts +14 -1
  41. package/dist/src/guards.d.ts.map +1 -1
  42. package/dist/src/guards.js +61 -2
  43. package/dist/src/guards.js.map +1 -1
  44. package/dist/src/homes.js +1 -1
  45. package/dist/src/homes.js.map +1 -1
  46. package/dist/src/identity.d.ts +34 -0
  47. package/dist/src/identity.d.ts.map +1 -0
  48. package/dist/src/identity.js +67 -0
  49. package/dist/src/identity.js.map +1 -0
  50. package/dist/src/live/events.d.ts +3 -0
  51. package/dist/src/live/events.d.ts.map +1 -1
  52. package/dist/src/live/events.js.map +1 -1
  53. package/dist/src/live/lensline.d.ts +20 -0
  54. package/dist/src/live/lensline.d.ts.map +1 -0
  55. package/dist/src/live/lensline.js +70 -0
  56. package/dist/src/live/lensline.js.map +1 -0
  57. package/dist/src/live/projection.d.ts +55 -0
  58. package/dist/src/live/projection.d.ts.map +1 -0
  59. package/dist/src/live/projection.js +465 -0
  60. package/dist/src/live/projection.js.map +1 -0
  61. package/dist/src/live/read.d.ts +24 -0
  62. package/dist/src/live/read.d.ts.map +1 -0
  63. package/dist/src/live/read.js +60 -0
  64. package/dist/src/live/read.js.map +1 -0
  65. package/dist/src/live/writer.d.ts +3 -0
  66. package/dist/src/live/writer.d.ts.map +1 -1
  67. package/dist/src/live/writer.js +6 -1
  68. package/dist/src/live/writer.js.map +1 -1
  69. package/dist/src/localreview.d.ts +18 -8
  70. package/dist/src/localreview.d.ts.map +1 -1
  71. package/dist/src/localreview.js +103 -43
  72. package/dist/src/localreview.js.map +1 -1
  73. package/dist/src/modelroute.d.ts +42 -0
  74. package/dist/src/modelroute.d.ts.map +1 -0
  75. package/dist/src/modelroute.js +126 -0
  76. package/dist/src/modelroute.js.map +1 -0
  77. package/dist/src/plugin/args.d.ts +38 -7
  78. package/dist/src/plugin/args.d.ts.map +1 -1
  79. package/dist/src/plugin/args.js +134 -37
  80. package/dist/src/plugin/args.js.map +1 -1
  81. package/dist/src/plugin/login.d.ts +11 -4
  82. package/dist/src/plugin/login.d.ts.map +1 -1
  83. package/dist/src/plugin/login.js +28 -26
  84. package/dist/src/plugin/login.js.map +1 -1
  85. package/dist/src/plugin/messages.d.ts +7 -0
  86. package/dist/src/plugin/messages.d.ts.map +1 -0
  87. package/dist/src/plugin/messages.js +13 -0
  88. package/dist/src/plugin/messages.js.map +1 -0
  89. package/dist/src/plugin/review.d.ts +52 -6
  90. package/dist/src/plugin/review.d.ts.map +1 -1
  91. package/dist/src/plugin/review.js +269 -99
  92. package/dist/src/plugin/review.js.map +1 -1
  93. package/dist/src/plugin/scan.d.ts +80 -44
  94. package/dist/src/plugin/scan.d.ts.map +1 -1
  95. package/dist/src/plugin/scan.js +450 -233
  96. package/dist/src/plugin/scan.js.map +1 -1
  97. package/dist/src/plugin/scancases.d.ts +33 -0
  98. package/dist/src/plugin/scancases.d.ts.map +1 -0
  99. package/dist/src/plugin/scancases.js +153 -0
  100. package/dist/src/plugin/scancases.js.map +1 -0
  101. package/dist/src/plugin/settings.d.ts +18 -0
  102. package/dist/src/plugin/settings.d.ts.map +1 -0
  103. package/dist/src/plugin/settings.js +47 -0
  104. package/dist/src/plugin/settings.js.map +1 -0
  105. package/dist/src/plugin/setup.d.ts +35 -12
  106. package/dist/src/plugin/setup.d.ts.map +1 -1
  107. package/dist/src/plugin/setup.js +258 -118
  108. package/dist/src/plugin/setup.js.map +1 -1
  109. package/dist/src/plugin/versiongate.js +1 -1
  110. package/dist/src/plugin/versiongate.js.map +1 -1
  111. package/dist/src/profileoverrides.d.ts +3 -0
  112. package/dist/src/profileoverrides.d.ts.map +1 -1
  113. package/dist/src/profileoverrides.js +9 -2
  114. package/dist/src/profileoverrides.js.map +1 -1
  115. package/dist/src/reviewapi.d.ts +22 -31
  116. package/dist/src/reviewapi.d.ts.map +1 -1
  117. package/dist/src/reviewapi.js +90 -66
  118. package/dist/src/reviewapi.js.map +1 -1
  119. package/dist/src/reviewconfig.d.ts +12 -0
  120. package/dist/src/reviewconfig.d.ts.map +1 -1
  121. package/dist/src/reviewconfig.js +9 -1
  122. package/dist/src/reviewconfig.js.map +1 -1
  123. package/dist/src/reviewdest.d.ts +1 -1
  124. package/dist/src/reviewdest.d.ts.map +1 -1
  125. package/dist/src/reviewdest.js +4 -3
  126. package/dist/src/reviewdest.js.map +1 -1
  127. package/dist/src/reviewtarget.d.ts +36 -0
  128. package/dist/src/reviewtarget.d.ts.map +1 -0
  129. package/dist/src/reviewtarget.js +6 -0
  130. package/dist/src/reviewtarget.js.map +1 -0
  131. package/dist/src/round-progress.d.ts +5 -0
  132. package/dist/src/round-progress.d.ts.map +1 -1
  133. package/dist/src/round-progress.js.map +1 -1
  134. package/dist/src/savedpost.d.ts +65 -0
  135. package/dist/src/savedpost.d.ts.map +1 -0
  136. package/dist/src/savedpost.js +131 -0
  137. package/dist/src/savedpost.js.map +1 -0
  138. package/dist/src/scan/caseread.d.ts +84 -0
  139. package/dist/src/scan/caseread.d.ts.map +1 -0
  140. package/dist/src/scan/caseread.js +263 -0
  141. package/dist/src/scan/caseread.js.map +1 -0
  142. package/dist/src/scan/channelfs.d.ts +6 -0
  143. package/dist/src/scan/channelfs.d.ts.map +1 -0
  144. package/dist/src/scan/channelfs.js +27 -0
  145. package/dist/src/scan/channelfs.js.map +1 -0
  146. package/dist/src/scan/cutrender.d.ts +13 -0
  147. package/dist/src/scan/cutrender.d.ts.map +1 -0
  148. package/dist/src/scan/cutrender.js +51 -0
  149. package/dist/src/scan/cutrender.js.map +1 -0
  150. package/dist/src/scan/facts.d.ts +72 -0
  151. package/dist/src/scan/facts.d.ts.map +1 -0
  152. package/dist/src/scan/facts.js +593 -0
  153. package/dist/src/scan/facts.js.map +1 -0
  154. package/dist/src/scan/findings.d.ts +320 -0
  155. package/dist/src/scan/findings.d.ts.map +1 -0
  156. package/dist/src/scan/findings.js +948 -0
  157. package/dist/src/scan/findings.js.map +1 -0
  158. package/dist/src/scan/ledger.d.ts +116 -0
  159. package/dist/src/scan/ledger.d.ts.map +1 -0
  160. package/dist/src/scan/ledger.js +207 -0
  161. package/dist/src/scan/ledger.js.map +1 -0
  162. package/dist/src/scan/presentation.d.ts +19 -0
  163. package/dist/src/scan/presentation.d.ts.map +1 -0
  164. package/dist/src/scan/presentation.js +9 -0
  165. package/dist/src/scan/presentation.js.map +1 -0
  166. package/dist/src/scan/scan.d.ts +354 -0
  167. package/dist/src/scan/scan.d.ts.map +1 -0
  168. package/dist/src/scan/scan.js +725 -0
  169. package/dist/src/scan/scan.js.map +1 -0
  170. package/dist/src/scan/scanagents.d.ts +23 -0
  171. package/dist/src/scan/scanagents.d.ts.map +1 -0
  172. package/dist/src/scan/scanagents.js +99 -0
  173. package/dist/src/scan/scanagents.js.map +1 -0
  174. package/dist/src/scan/scanassemble.d.ts +65 -0
  175. package/dist/src/scan/scanassemble.d.ts.map +1 -0
  176. package/dist/src/scan/scanassemble.js +93 -0
  177. package/dist/src/scan/scanassemble.js.map +1 -0
  178. package/dist/src/scan/scanfs.d.ts +26 -0
  179. package/dist/src/scan/scanfs.d.ts.map +1 -0
  180. package/dist/src/scan/scanfs.js +229 -0
  181. package/dist/src/scan/scanfs.js.map +1 -0
  182. package/dist/src/scan/scanlease.d.ts +50 -0
  183. package/dist/src/scan/scanlease.d.ts.map +1 -0
  184. package/dist/src/scan/scanlease.js +251 -0
  185. package/dist/src/scan/scanlease.js.map +1 -0
  186. package/dist/src/scan/scanleaves.d.ts +55 -0
  187. package/dist/src/scan/scanleaves.d.ts.map +1 -0
  188. package/dist/src/scan/scanleaves.js +258 -0
  189. package/dist/src/scan/scanleaves.js.map +1 -0
  190. package/dist/src/scan/scanports.d.ts +79 -0
  191. package/dist/src/scan/scanports.d.ts.map +1 -0
  192. package/dist/src/scan/scanports.js +8 -0
  193. package/dist/src/scan/scanports.js.map +1 -0
  194. package/dist/src/scan/scanrender.d.ts +128 -0
  195. package/dist/src/scan/scanrender.d.ts.map +1 -0
  196. package/dist/src/scan/scanrender.js +527 -0
  197. package/dist/src/scan/scanrender.js.map +1 -0
  198. package/dist/src/scan/scanreport.d.ts +126 -0
  199. package/dist/src/scan/scanreport.d.ts.map +1 -0
  200. package/dist/src/scan/scanreport.js +289 -0
  201. package/dist/src/scan/scanreport.js.map +1 -0
  202. package/dist/src/scan/scanrun.d.ts +472 -0
  203. package/dist/src/scan/scanrun.d.ts.map +1 -0
  204. package/dist/src/scan/scanrun.js +1733 -0
  205. package/dist/src/scan/scanrun.js.map +1 -0
  206. package/dist/src/scan/scantree.d.ts +21 -0
  207. package/dist/src/scan/scantree.d.ts.map +1 -0
  208. package/dist/src/scan/scantree.js +297 -0
  209. package/dist/src/scan/scantree.js.map +1 -0
  210. package/dist/src/scan/scanverbs.d.ts +208 -0
  211. package/dist/src/scan/scanverbs.d.ts.map +1 -0
  212. package/dist/src/scan/scanverbs.js +689 -0
  213. package/dist/src/scan/scanverbs.js.map +1 -0
  214. package/dist/src/scan/stage2.d.ts +221 -0
  215. package/dist/src/scan/stage2.d.ts.map +1 -0
  216. package/dist/src/scan/stage2.js +617 -0
  217. package/dist/src/scan/stage2.js.map +1 -0
  218. package/dist/src/scan/stage2request.d.ts +125 -0
  219. package/dist/src/scan/stage2request.d.ts.map +1 -0
  220. package/dist/src/scan/stage2request.js +259 -0
  221. package/dist/src/scan/stage2request.js.map +1 -0
  222. package/dist/src/scan/textsniff.d.ts +14 -0
  223. package/dist/src/scan/textsniff.d.ts.map +1 -0
  224. package/dist/src/scan/textsniff.js +88 -0
  225. package/dist/src/scan/textsniff.js.map +1 -0
  226. package/dist/src/scan/unitcut.d.ts +135 -0
  227. package/dist/src/scan/unitcut.d.ts.map +1 -0
  228. package/dist/src/scan/unitcut.js +437 -0
  229. package/dist/src/scan/unitcut.js.map +1 -0
  230. package/dist/src/scan/unitcutstore.d.ts +155 -0
  231. package/dist/src/scan/unitcutstore.d.ts.map +1 -0
  232. package/dist/src/scan/unitcutstore.js +381 -0
  233. package/dist/src/scan/unitcutstore.js.map +1 -0
  234. package/dist/src/setupchecklist.d.ts +240 -0
  235. package/dist/src/setupchecklist.d.ts.map +1 -0
  236. package/dist/src/setupchecklist.js +407 -0
  237. package/dist/src/setupchecklist.js.map +1 -0
  238. package/package.json +7 -3
  239. package/skills/qcr-review/SKILL.md +24 -0
  240. package/skills/qcr-scan/SKILL.md +23 -0
  241. package/skills/qcr-setup/SKILL.md +18 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/scan/scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { type BuiltAgent } from "../include.js";
2
+ import type { CoreConfig } from "../reviewconfig.js";
3
+ import { type ProfileLookup } from "../profiles.js";
4
+ import type { ScanSettings } from "./scanrun.js";
5
+ /** Where the scan build lands, relative to the state home. */
6
+ export declare const SCAN_AGENTS_DIR = "scan/agents";
7
+ /** The scan-only lens sources, relative to the app's root. */
8
+ export declare const SCAN_AGENTS_SRC = "agents/scan";
9
+ /** The config a scan runs with: `parsed` (a config.toml, or the shipped
10
+ * defaults) with the profile's per-lens tuning and `[scan]` overrides applied
11
+ * (the profile wins). Throws on a bad profile — the caller reports it. */
12
+ export declare function scanConfigOf<C extends CoreConfig>(parsed: C, root: string, lookup: ProfileLookup): C;
13
+ /** The settings a scan run takes from a resolved config. */
14
+ export declare function scanSettings(cfg: CoreConfig): ScanSettings;
15
+ /** `pass-scan`'s model spec: the `[scan] tier`'s spec at `[scan] effort`
16
+ * (`high` = the model's ceiling), through the same per-variant hook a
17
+ * lens's `effort` uses. One variant — stage 1 runs at that tier alone. */
18
+ export declare function scanPassModels(cfg: Pick<CoreConfig, "models" | "scan">): Record<string, string>;
19
+ /** Build the scan agents into `outDir` — `buildAgents` in `"scan"` mode at
20
+ * `cfg.scan.depth`, the profile's pack and tuning composed exactly as a PR
21
+ * build composes them. */
22
+ export declare function buildScanAgents(root: string, outDir: string, cfg: CoreConfig, lookup: ProfileLookup): BuiltAgent[];
23
+ //# sourceMappingURL=scanagents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanagents.d.ts","sourceRoot":"","sources":["../../../src/scan/scanagents.ts"],"names":[],"mappings":"AAkCA,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,eAAe,CAAC;AAOvB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAML,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,8DAA8D;AAC9D,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,8DAA8D;AAC9D,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C;;0EAE0E;AAC1E,wBAAgB,YAAY,CAAC,CAAC,SAAS,UAAU,EAC/C,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,GACpB,CAAC,CAIH;AAED,4DAA4D;AAC5D,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,YAAY,CAQ1D;AAED;;0EAE0E;AAC1E,wBAAgB,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAI/F;AAED;;0BAE0B;AAC1B,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,aAAa,GACpB,UAAU,EAAE,CAyBd"}
@@ -0,0 +1,99 @@
1
+ // The scan agent build and the settings a scan runs with.
2
+ //
3
+ // A scan's leaves are the production lenses — `pass-scan` for stage 1, the
4
+ // validator when `[scan] validator` is on (the default: the scan validator is
5
+ // the skeptic, composed with the `mode: "scan"` `scan-skeptic-validate`
6
+ // addendum and run at the tier of the lens it judges, so every tier's variant
7
+ // is built), and stage 2's deep lenses (every suggestible lens the profile
8
+ // leaves on, at the tier its row names) — built by the one agent build
9
+ // (`packages/pi-plugin/src/include.ts buildAgents`) in `"scan"` mode:
10
+ //
11
+ // * the scan-mode anchor addendum composes (`mode: "scan"` in PASS_ADDENDA)
12
+ // — in this build and in no other: the daemon's, the bench's and the
13
+ // replay's builds are `"pr"` builds and never carry it;
14
+ // * `agents/scan/` joins `agents/` as a source, so `pass-scan` exists here
15
+ // and nowhere else;
16
+ // * every variant's tools are `SCAN_LEAF_TOOLS` — a scan leaf runs with no
17
+ // extensions, so there is no bash guard to stand between it and a shell;
18
+ // * a DEEP scan (`[scan] depth = "deep"`, or a stage-2 proposal made deep)
19
+ // also composes the `depth: "deep"` addenda: `scan-deep-suggest` on
20
+ // `pass-scan` (a deep lens named for every focus file) and `scan-deep-dig`
21
+ // on every lens a scan may run (follow callers and siblings, the state ×
22
+ // obligation table, what each early exit drops). A standard scan build is
23
+ // byte-identical without them.
24
+ //
25
+ // Everything a PR build composes from the repo's profile composes here too
26
+ // (the pack, the per-lens emphasis/ceiling/guide, a lens's `effort`), so a
27
+ // scan reviews the way this repo's PR rounds do. `pass-scan` itself is tuned
28
+ // by `[scan] tier`/`effort`, config.toml's defaults under the profile's
29
+ // `[scan]` table — the profile wins.
30
+ //
31
+ // The build lands in `<state home>/scan/agents/`, which the scan's case
32
+ // runner reads; it is rebuilt at every start, so a profile edit reaches the
33
+ // next run without anything else to remember.
34
+ import { join } from "node:path";
35
+ import { PASS_ADDENDA, buildAgents, configAddenda, identityVars, } from "../include.js";
36
+ import { applyProfileTuning, effortSpec, lensModelOverrides, lensTuningAddenda, } from "../lenstuning.js";
37
+ import { PASS_TIER_ORDER } from "../types.js";
38
+ import { applyProfileScan, loadProfileAddenda, loadProfileEcosystem, loadProfileLensTuning, loadProfileScan, } from "../profiles.js";
39
+ import { SCAN_PASS } from "./scan.js";
40
+ /** Where the scan build lands, relative to the state home. */
41
+ export const SCAN_AGENTS_DIR = "scan/agents";
42
+ /** The scan-only lens sources, relative to the app's root. */
43
+ export const SCAN_AGENTS_SRC = "agents/scan";
44
+ /** The config a scan runs with: `parsed` (a config.toml, or the shipped
45
+ * defaults) with the profile's per-lens tuning and `[scan]` overrides applied
46
+ * (the profile wins). Throws on a bad profile — the caller reports it. */
47
+ export function scanConfigOf(parsed, root, lookup) {
48
+ const profile = parsed.review.profile;
49
+ const tuned = applyProfileTuning(parsed, loadProfileLensTuning(root, profile, lookup));
50
+ return applyProfileScan(tuned, loadProfileScan(root, profile, lookup));
51
+ }
52
+ /** The settings a scan run takes from a resolved config. */
53
+ export function scanSettings(cfg) {
54
+ return {
55
+ scan: cfg.scan,
56
+ // Stage 2: which deep lenses run, at which tiers and effort —
57
+ // the same per-lens tuning the build composes.
58
+ lenses: cfg.lenses,
59
+ riskPasses: cfg.models.risk_passes,
60
+ };
61
+ }
62
+ /** `pass-scan`'s model spec: the `[scan] tier`'s spec at `[scan] effort`
63
+ * (`high` = the model's ceiling), through the same per-variant hook a
64
+ * lens's `effort` uses. One variant — stage 1 runs at that tier alone. */
65
+ export function scanPassModels(cfg) {
66
+ return {
67
+ [`${SCAN_PASS}--${cfg.scan.tier}`]: effortSpec(cfg.models, cfg.scan.tier, cfg.scan.effort),
68
+ };
69
+ }
70
+ /** Build the scan agents into `outDir` — `buildAgents` in `"scan"` mode at
71
+ * `cfg.scan.depth`, the profile's pack and tuning composed exactly as a PR
72
+ * build composes them. */
73
+ export function buildScanAgents(root, outDir, cfg, lookup) {
74
+ return buildAgents(join(root, "agents"), outDir, {
75
+ root,
76
+ mode: "scan",
77
+ scanDepth: cfg.scan.depth,
78
+ extraSrcDirs: [join(root, SCAN_AGENTS_SRC)],
79
+ tiers: cfg.models.tiers,
80
+ riskPasses: cfg.models.risk_passes,
81
+ // The skeptic runs at the tier of the lens it judges — stage 1's
82
+ // `[scan] tier`, a stage-2 row's own — so every tier keeps a variant
83
+ // (never `validate_tier`, never floored upward).
84
+ validateTier: PASS_TIER_ORDER[0],
85
+ vars: identityVars(cfg),
86
+ ecosystem: loadProfileEcosystem(root, cfg.review.profile, lookup),
87
+ models: { ...lensModelOverrides(cfg.models, cfg.lenses), ...scanPassModels(cfg) },
88
+ // Stage 1 runs `pass-scan--<[scan] tier>` and nothing else names it
89
+ // (stage 2 rows refuse it), so no other tier's variant is built.
90
+ onlyTiers: { [SCAN_PASS]: [cfg.scan.tier] },
91
+ addenda: [
92
+ ...PASS_ADDENDA,
93
+ ...configAddenda(cfg.review),
94
+ ...loadProfileAddenda(root, cfg.review.profile, lookup),
95
+ ...lensTuningAddenda(cfg.lenses),
96
+ ],
97
+ });
98
+ }
99
+ //# sourceMappingURL=scanagents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanagents.js","sourceRoot":"","sources":["../../../src/scan/scanagents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import type { CoreConfig } from "../reviewconfig.js";
2
+ import type { ProfileLookup } from "../profiles.js";
3
+ import { FindingsStore } from "./findings.js";
4
+ import type { CaseRunner, Refusal } from "./scanports.js";
5
+ import { type ScanLease } from "./scanlease.js";
6
+ import { ScanRunner, type ScanSettings } from "./scanrun.js";
7
+ import type { UnitCutStatusPort } from "./unitcutstore.js";
8
+ /** What a scan host hands the engine. */
9
+ export interface ScanHostPorts {
10
+ /** The state home: the run record, the ledger, the findings, the trees, the
11
+ * agent build and the transcripts all live under it. */
12
+ home: string;
13
+ /** The reviewed checkout, a git work tree, read-only. */
14
+ reviewedRepo: string;
15
+ /** The core's data root: `agents/` and `agents/scan/` are built from it. */
16
+ root: string;
17
+ /** The config the scan runs with, its profile applied (scanbuild.ts
18
+ * `scanConfigOf`), read again at every call — or why there is none. */
19
+ config: () => {
20
+ ok: true;
21
+ cfg: CoreConfig;
22
+ } | Refusal;
23
+ /** Where the repo profile is looked up. */
24
+ profiles: ProfileLookup;
25
+ /** The saved unit cut and why there is none. */
26
+ unitCut: UnitCutStatusPort;
27
+ /** The case runner over the agent build in `agentsDir`, keeping each case's
28
+ * event stream under `transcriptDir`; `stop` stops the run (a login a case
29
+ * would not outlive, say) and says why. */
30
+ cases: (o: {
31
+ agentsDir: string;
32
+ transcriptDir: string;
33
+ stop: (reason: string) => void;
34
+ }) => CaseRunner;
35
+ /** The driver lease. Omitted: the state home's file lease, shared with
36
+ * every other runner over it. */
37
+ lease?: ScanLease | null;
38
+ /** After a run's reconcile: close the tickets of the promoted findings it
39
+ * found fixed. Omitted: nothing closes. */
40
+ closeFixedTickets?: () => Promise<{
41
+ closed: readonly unknown[];
42
+ problems: readonly string[];
43
+ }>;
44
+ clock?: () => Date;
45
+ /** One diagnostics line. */
46
+ log: (line: string) => void;
47
+ }
48
+ /** The engine a host drives: the runner, its findings store and the settings
49
+ * a run would take now (null when the config cannot be read). */
50
+ export interface AssembledScan {
51
+ scan: ScanRunner;
52
+ findings: FindingsStore;
53
+ settingsOf: () => ScanSettings | null;
54
+ home: string;
55
+ }
56
+ /** The scan engine over `p`. */
57
+ export declare function assembleScan(p: ScanHostPorts): AssembledScan;
58
+ /** The runner's runs, newest first, as the triage sees them: a run left
59
+ * `running` by a driver that is gone reads as interrupted. */
60
+ export declare function scanRuns(scan: ScanRunner): Array<{
61
+ id: string;
62
+ sha: string;
63
+ state: string;
64
+ }>;
65
+ //# sourceMappingURL=scanassemble.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanassemble.d.ts","sourceRoot":"","sources":["../../../src/scan/scanassemble.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAwB,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAEnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC5B;4DACwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb;2EACuE;IACvE,MAAM,EAAE,MAAM;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,GAAG,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC;IACtD,2CAA2C;IAC3C,QAAQ,EAAE,aAAa,CAAC;IACxB,gDAAgD;IAChD,OAAO,EAAE,iBAAiB,CAAC;IAC3B;;+CAE2C;IAC3C,KAAK,EAAE,CAAC,CAAC,EAAE;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;KAChC,KAAK,UAAU,CAAC;IACjB;qCACiC;IACjC,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB;+CAC2C;IAC3C,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC;QAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC/F,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,4BAA4B;IAC5B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED;iEACiE;AACjE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,gCAAgC;AAChC,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,GAAG,aAAa,CAsD5D;AAED;8DAC8D;AAC9D,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAO5F"}
@@ -0,0 +1,93 @@
1
+ // The scan engine, assembled over its host's ports: the reviewed checkout as
2
+ // a source of trees, the state home for every record, the saved unit cut, the
3
+ // config the scan runs with, the agent build, and a case runner over that
4
+ // build. Nothing here reads the process (its env, its cwd, its home) or any
5
+ // install's config file: a host hands each fact in.
6
+ //
7
+ // Two hosts build it:
8
+ // - the app (extensions/setup-scan.ts `buildScan`): the companion's pi and
9
+ // the `qcr scan` driver, over the live config.toml and the case runner the
10
+ // scan sandbox or the host process runs (piCaseRunner, the driver's SDK
11
+ // leaves);
12
+ // - the pi plugin's /qcr-scan, over the person's config or the shipped
13
+ // defaults, with its cases on SDK sessions in the person's own pi, each
14
+ // behind the bash guard.
15
+ import { join } from "node:path";
16
+ import { FindingsStore } from "./findings.js";
17
+ import { stateHomeFs } from "./scanfs.js";
18
+ import { buildScanAgents, scanSettings, SCAN_AGENTS_DIR } from "./scanagents.js";
19
+ import { fileLease } from "./scanlease.js";
20
+ import { SCAN_TRANSCRIPTS_DIR, ScanRunner } from "./scanrun.js";
21
+ import { gitScanSource } from "./scantree.js";
22
+ /** The scan engine over `p`. */
23
+ export function assembleScan(p) {
24
+ const { home, root } = p;
25
+ const clock = p.clock ?? (() => new Date());
26
+ const state = stateHomeFs(home);
27
+ const agentsDir = join(home, SCAN_AGENTS_DIR);
28
+ const settingsOf = () => {
29
+ const loaded = p.config();
30
+ return loaded.ok ? scanSettings(loaded.cfg) : null;
31
+ };
32
+ const findings = new FindingsStore(state);
33
+ const transcriptDir = join(home, SCAN_TRANSCRIPTS_DIR);
34
+ // A token a case would not outlive stops the run, on any host.
35
+ const stop = (reason) => {
36
+ p.log(`scan: stopping — ${reason}`);
37
+ scan.stop();
38
+ };
39
+ const scan = new ScanRunner({
40
+ state,
41
+ clock,
42
+ cases: p.cases({ agentsDir, transcriptDir, stop }),
43
+ source: gitScanSource(p.reviewedRepo, home),
44
+ savedCut: () => {
45
+ const cut = p.unitCut.savedCut();
46
+ if (cut)
47
+ return { ok: true, cut };
48
+ const status = p.unitCut.status();
49
+ return {
50
+ ok: false,
51
+ errors: status.cut_file_unreadable
52
+ ? status.problems
53
+ : ["no saved unit cut — a scan reads by unit; propose, adjust and save one first"],
54
+ };
55
+ },
56
+ settings: () => {
57
+ const loaded = p.config();
58
+ return loaded.ok ? { ok: true, settings: scanSettings(loaded.cfg) } : loaded;
59
+ },
60
+ // At the depth the runner planned at — a stage-2 proposal's own, which
61
+ // its `deep` may have set apart from `[scan] depth`.
62
+ buildAgents: (settings) => {
63
+ const loaded = p.config();
64
+ if (!loaded.ok)
65
+ return loaded;
66
+ const cfg = { ...loaded.cfg, scan: { ...loaded.cfg.scan, depth: settings.scan.depth } };
67
+ try {
68
+ buildScanAgents(root, agentsDir, cfg, p.profiles);
69
+ return { ok: true };
70
+ }
71
+ catch (err) {
72
+ return { ok: false, errors: [err instanceof Error ? err.message : String(err)] };
73
+ }
74
+ },
75
+ ...(p.closeFixedTickets ? { closeFixedTickets: p.closeFixedTickets } : {}),
76
+ lease: p.lease ?? fileLease(home),
77
+ log: p.log,
78
+ });
79
+ return { scan, findings, settingsOf, home };
80
+ }
81
+ /** The runner's runs, newest first, as the triage sees them: a run left
82
+ * `running` by a driver that is gone reads as interrupted. */
83
+ export function scanRuns(scan) {
84
+ const s = scan.status();
85
+ const out = [];
86
+ if (s.run)
87
+ out.push({ id: s.run.id, sha: s.run.sha, state: s.run.display });
88
+ for (const h of s.history)
89
+ if (!out.some((r) => r.id === h.id))
90
+ out.push({ id: h.id, sha: h.sha, state: h.state });
91
+ return out;
92
+ }
93
+ //# sourceMappingURL=scanassemble.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanassemble.js","sourceRoot":"","sources":["../../../src/scan/scanassemble.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { RepoReader, StateFs } from "./scanports.js";
2
+ /** Files over this are not read for facts or counted line by line — a
3
+ * generated dump says nothing about a repo's conventions. */
4
+ export declare const MAX_READ_BYTES: number;
5
+ /** Does `back` (a `relative(root, …)`) stay under the root? A parent
6
+ * traversal is the `..` COMPONENT, never a name that merely begins with two
7
+ * dots — a tracked `..fixtures/a.ts` is an ordinary in-root file. The scan's
8
+ * tree reader holds the same rule. */
9
+ export declare function inRoot(back: string): boolean;
10
+ /**
11
+ * The reviewed checkout. Listing is `git ls-files` — what the repo tracks,
12
+ * so ignored build output never counts as the repo — with a plain walk as
13
+ * the fallback for a tree git cannot read (no `.git`, or a mount git calls
14
+ * "dubious ownership" despite the `safe.directory` override).
15
+ */
16
+ export declare function checkoutReader(root: string): RepoReader;
17
+ /** The most commits the "most-changed" count walks. */
18
+ export declare const CHANGE_LOG_COMMITS = 2000;
19
+ /** The state home as a rooted filesystem: relative paths only, never out of
20
+ * the root, every write tmp+rename atomic. */
21
+ export declare function stateHomeFs(root: string): StateFs;
22
+ /** The config home, the same way (the portrait narrative). In the
23
+ * companion only parts of it are mounted, so its callers write only under a
24
+ * mounted directory. */
25
+ export declare function configHomeFs(root: string): StateFs;
26
+ //# sourceMappingURL=scanfs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanfs.d.ts","sourceRoot":"","sources":["../../../src/scan/scanfs.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG1D;6DAC6D;AAC7D,eAAO,MAAM,cAAc,QAAc,CAAC;AAa1C;;;sCAGsC;AACtC,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE5C;AAQD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAqHvD;AAED,uDAAuD;AACvD,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC;8CAC8C;AAC9C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;wBAEwB;AACxB,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD"}
@@ -0,0 +1,229 @@
1
+ // The scan's real filesystem ports: the reviewed checkout, read-only
2
+ // (`checkoutReader`), and a home directory as a rooted filesystem
3
+ // (`stateHomeFs`, `configHomeFs`). Every port is total at its edge: a
4
+ // missing checkout lists null, and nothing throws but the state port's
5
+ // "exists but cannot be read", which its callers turn into a reported,
6
+ // write-refusing problem.
7
+ import { execFileSync } from "node:child_process";
8
+ import { randomBytes } from "node:crypto";
9
+ import { lstatSync, mkdirSync, readdirSync, readFileSync, realpathSync, renameSync, rmSync, statSync, writeFileSync, } from "node:fs";
10
+ import { dirname, isAbsolute, join, normalize, relative, sep } from "node:path";
11
+ import { isBinaryContent, textLineCount } from "./textsniff.js";
12
+ /** Files over this are not read for facts or counted line by line — a
13
+ * generated dump says nothing about a repo's conventions. */
14
+ export const MAX_READ_BYTES = 1024 * 1024;
15
+ /** Directories a walk never descends (the git-less fallback only). */
16
+ const WALK_SKIP = new Set([
17
+ ".git",
18
+ "node_modules",
19
+ ".venv",
20
+ "venv",
21
+ "__pycache__",
22
+ "dist",
23
+ "build",
24
+ ]);
25
+ /** Does `back` (a `relative(root, …)`) stay under the root? A parent
26
+ * traversal is the `..` COMPONENT, never a name that merely begins with two
27
+ * dots — a tracked `..fixtures/a.ts` is an ordinary in-root file. The scan's
28
+ * tree reader holds the same rule. */
29
+ export function inRoot(back) {
30
+ return back !== "" && back !== ".." && !back.startsWith(`..${sep}`) && !isAbsolute(back);
31
+ }
32
+ function inside(root, rel) {
33
+ if (isAbsolute(rel))
34
+ return null;
35
+ const full = normalize(join(root, rel));
36
+ return inRoot(relative(root, full)) ? full : null;
37
+ }
38
+ /**
39
+ * The reviewed checkout. Listing is `git ls-files` — what the repo tracks,
40
+ * so ignored build output never counts as the repo — with a plain walk as
41
+ * the fallback for a tree git cannot read (no `.git`, or a mount git calls
42
+ * "dubious ownership" despite the `safe.directory` override).
43
+ */
44
+ export function checkoutReader(root) {
45
+ const git = (args) => {
46
+ try {
47
+ return execFileSync("git", ["-c", `safe.directory=${root}`, "-C", root, ...args], {
48
+ encoding: "utf8",
49
+ maxBuffer: 256 * 1024 * 1024,
50
+ stdio: ["ignore", "pipe", "ignore"],
51
+ });
52
+ }
53
+ catch {
54
+ return null;
55
+ }
56
+ };
57
+ // A directory it cannot list makes the whole listing unknown (null), never
58
+ // a shorter one that reads as complete. A directory symlink is not
59
+ // descended (a link back up would list the tree forever, one out of the
60
+ // root lists another tree); a file symlink is listed like git lists it, and
61
+ // `read` decides whether its target is inside.
62
+ const walk = () => {
63
+ const out = [];
64
+ const visit = (dir) => {
65
+ let names;
66
+ try {
67
+ names = readdirSync(dir);
68
+ }
69
+ catch {
70
+ return false;
71
+ }
72
+ for (const name of names) {
73
+ if (WALK_SKIP.has(name))
74
+ continue;
75
+ const full = join(dir, name);
76
+ let st;
77
+ try {
78
+ const l = lstatSync(full);
79
+ if (l.isDirectory()) {
80
+ if (!visit(full))
81
+ return false;
82
+ continue;
83
+ }
84
+ st = l.isSymbolicLink() ? statSync(full) : l;
85
+ }
86
+ catch (err) {
87
+ if (err.code !== "ENOENT")
88
+ return false;
89
+ continue; // a dangling link names no file
90
+ }
91
+ if (st.isFile())
92
+ out.push(relative(root, full).split(sep).join("/"));
93
+ }
94
+ return true;
95
+ };
96
+ try {
97
+ if (!statSync(root).isDirectory())
98
+ return null;
99
+ }
100
+ catch {
101
+ return null;
102
+ }
103
+ return visit(root) ? out : null;
104
+ };
105
+ // The checkout's own resolved path, for the symlink check below; a root
106
+ // that cannot be resolved reads nothing.
107
+ let realRoot;
108
+ const resolvedRoot = () => {
109
+ if (realRoot === undefined) {
110
+ try {
111
+ realRoot = realpathSync(root);
112
+ }
113
+ catch {
114
+ realRoot = null;
115
+ }
116
+ }
117
+ return realRoot;
118
+ };
119
+ const readText = (rel) => {
120
+ const full = inside(root, rel);
121
+ if (full === null)
122
+ return null;
123
+ try {
124
+ // The lexical check above cannot see a symlink: a tracked link to a
125
+ // file outside the checkout is not the checkout's content.
126
+ const top = resolvedRoot();
127
+ if (top === null || !inRoot(relative(top, realpathSync(full))))
128
+ return null;
129
+ const st = statSync(full);
130
+ if (!st.isFile() || st.size > MAX_READ_BYTES)
131
+ return null;
132
+ const buf = readFileSync(full);
133
+ if (isBinaryContent(buf, rel))
134
+ return null; // binary — one stray NUL is not
135
+ return buf.toString("utf8");
136
+ }
137
+ catch {
138
+ return null;
139
+ }
140
+ };
141
+ return {
142
+ location: root,
143
+ listFiles: () => {
144
+ const listed = git(["ls-files", "-z"]);
145
+ if (listed !== null)
146
+ return listed.split("\0").filter((p) => p !== "");
147
+ return walk();
148
+ },
149
+ read: readText,
150
+ lines: (rel) => {
151
+ const text = readText(rel);
152
+ if (text === null)
153
+ return null;
154
+ return textLineCount(text);
155
+ },
156
+ head: () => git(["rev-parse", "HEAD"])?.trim() || null,
157
+ changeCounts: () => {
158
+ // Six months, bounded twice over: a busy repo's whole history is not
159
+ // what "most-changed" means, and the listing must stay cheap.
160
+ const log = git([
161
+ "log",
162
+ "--since=6.months",
163
+ "--no-merges",
164
+ "-n",
165
+ String(CHANGE_LOG_COMMITS),
166
+ "--name-only",
167
+ "-z",
168
+ "--format=",
169
+ ]);
170
+ if (log === null)
171
+ return null;
172
+ const counts = {};
173
+ for (const p of log.split("\0")) {
174
+ if (p !== "")
175
+ counts[p] = (counts[p] ?? 0) + 1;
176
+ }
177
+ return counts;
178
+ },
179
+ };
180
+ }
181
+ /** The most commits the "most-changed" count walks. */
182
+ export const CHANGE_LOG_COMMITS = 2000;
183
+ /** The state home as a rooted filesystem: relative paths only, never out of
184
+ * the root, every write tmp+rename atomic. */
185
+ export function stateHomeFs(root) {
186
+ return homeFs(root, "state home");
187
+ }
188
+ /** The config home, the same way (the portrait narrative). In the
189
+ * companion only parts of it are mounted, so its callers write only under a
190
+ * mounted directory. */
191
+ export function configHomeFs(root) {
192
+ return homeFs(root, "config home");
193
+ }
194
+ function homeFs(root, what) {
195
+ const resolve = (rel) => {
196
+ const full = inside(root, rel);
197
+ if (full === null)
198
+ throw new Error(`path ${JSON.stringify(rel)} leaves the ${what}`);
199
+ return full;
200
+ };
201
+ return {
202
+ location: root,
203
+ read: (rel) => {
204
+ const full = resolve(rel);
205
+ try {
206
+ return readFileSync(full, "utf8");
207
+ }
208
+ catch (err) {
209
+ if (err.code === "ENOENT")
210
+ return null;
211
+ throw err;
212
+ }
213
+ },
214
+ write: (rel, text) => {
215
+ const full = resolve(rel);
216
+ mkdirSync(dirname(full), { recursive: true });
217
+ const tmp = join(dirname(full), `.${full.split("/").at(-1)}.${process.pid}.${randomBytes(6).toString("hex")}.tmp`);
218
+ try {
219
+ writeFileSync(tmp, text);
220
+ renameSync(tmp, full);
221
+ }
222
+ catch (err) {
223
+ rmSync(tmp, { force: true });
224
+ throw err;
225
+ }
226
+ },
227
+ };
228
+ }
229
+ //# sourceMappingURL=scanfs.js.map