@quickchatai/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 (350) hide show
  1. package/README.md +116 -53
  2. package/bin/qcr.js +1 -1
  3. package/config.example.toml +25 -7
  4. package/deploy/ansible/README.md +20 -12
  5. package/deploy/ansible/inventory.example.ini +1 -1
  6. package/deploy/collect-secrets.sh +1 -1
  7. package/deploy/qcr-update.sh +1 -1
  8. package/dist/extensions/cli/home.js +14 -0
  9. package/dist/extensions/cli/home.js.map +1 -0
  10. package/dist/extensions/cli/selfimprove.js +18 -0
  11. package/dist/extensions/cli/selfimprove.js.map +1 -0
  12. package/dist/extensions/home.js +350 -0
  13. package/dist/extensions/home.js.map +1 -0
  14. package/dist/extensions/login-route.js +1 -1
  15. package/dist/extensions/login-route.js.map +1 -1
  16. package/dist/extensions/onboarding.js +8 -7
  17. package/dist/extensions/onboarding.js.map +1 -1
  18. package/dist/extensions/selfimprove.js +49 -0
  19. package/dist/extensions/selfimprove.js.map +1 -0
  20. package/dist/extensions/setup-scan.js +23 -592
  21. package/dist/extensions/setup-scan.js.map +1 -1
  22. package/dist/extensions/setup.js +2 -47
  23. package/dist/extensions/setup.js.map +1 -1
  24. package/dist/extensions/vendor/openviking-pi/index.js +4 -0
  25. package/dist/extensions/vendor/openviking-pi/index.js.map +1 -1
  26. package/dist/extensions/vendor/openviking-pi/qcr-hooks.js +3 -1
  27. package/dist/extensions/vendor/openviking-pi/qcr-hooks.js.map +1 -1
  28. package/dist/extensions/vendor/openviking-pi/sync.js +81 -0
  29. package/dist/extensions/vendor/openviking-pi/sync.js.map +1 -1
  30. package/dist/src/archive/restore.js +18 -15
  31. package/dist/src/archive/restore.js.map +1 -1
  32. package/dist/src/botworker.js +13 -2
  33. package/dist/src/botworker.js.map +1 -1
  34. package/dist/src/channelfs.js +3 -26
  35. package/dist/src/channelfs.js.map +1 -1
  36. package/dist/src/cli.js +14 -50
  37. package/dist/src/cli.js.map +1 -1
  38. package/dist/src/config.js +16 -0
  39. package/dist/src/config.js.map +1 -1
  40. package/dist/src/daemon.js +33 -4
  41. package/dist/src/daemon.js.map +1 -1
  42. package/dist/src/debuground.js +1 -0
  43. package/dist/src/debuground.js.map +1 -1
  44. package/dist/src/debugroundpi.js +1 -0
  45. package/dist/src/debugroundpi.js.map +1 -1
  46. package/dist/src/engine/caserunner-sdk.js +15 -251
  47. package/dist/src/engine/caserunner-sdk.js.map +1 -1
  48. package/dist/src/home/adapters.js +349 -0
  49. package/dist/src/home/adapters.js.map +1 -0
  50. package/dist/src/home/advanced.js +318 -0
  51. package/dist/src/home/advanced.js.map +1 -0
  52. package/dist/src/home/advancedtools.js +57 -0
  53. package/dist/src/home/advancedtools.js.map +1 -0
  54. package/dist/src/home/autoreview.js +325 -0
  55. package/dist/src/home/autoreview.js.map +1 -0
  56. package/dist/src/home/daemonstatus.js +32 -0
  57. package/dist/src/home/daemonstatus.js.map +1 -0
  58. package/dist/src/home/devicelogin.js +61 -0
  59. package/dist/src/home/devicelogin.js.map +1 -0
  60. package/dist/src/home/launch.js +202 -0
  61. package/dist/src/home/launch.js.map +1 -0
  62. package/dist/src/home/loginowner.js +205 -0
  63. package/dist/src/home/loginowner.js.map +1 -0
  64. package/dist/src/home/memory.js +122 -0
  65. package/dist/src/home/memory.js.map +1 -0
  66. package/dist/src/home/model.js +811 -0
  67. package/dist/src/home/model.js.map +1 -0
  68. package/dist/src/home/panel.js +520 -0
  69. package/dist/src/home/panel.js.map +1 -0
  70. package/dist/src/home/ports.js +19 -0
  71. package/dist/src/home/ports.js.map +1 -0
  72. package/dist/src/home/review.js +163 -0
  73. package/dist/src/home/review.js.map +1 -0
  74. package/dist/src/home/reviews.js +478 -0
  75. package/dist/src/home/reviews.js.map +1 -0
  76. package/dist/src/home/setup.js +507 -0
  77. package/dist/src/home/setup.js.map +1 -0
  78. package/dist/src/home/setupadapters.js +214 -0
  79. package/dist/src/home/setupadapters.js.map +1 -0
  80. package/dist/src/home/setupcard.js +199 -0
  81. package/dist/src/home/setupcard.js.map +1 -0
  82. package/dist/src/home/setuptools.js +45 -0
  83. package/dist/src/home/setuptools.js.map +1 -0
  84. package/dist/src/home/spend.js +160 -0
  85. package/dist/src/home/spend.js.map +1 -0
  86. package/dist/src/home/switches.js +209 -0
  87. package/dist/src/home/switches.js.map +1 -0
  88. package/dist/src/home/switchon.js +439 -0
  89. package/dist/src/home/switchon.js.map +1 -0
  90. package/dist/src/home/toolnames.js +41 -0
  91. package/dist/src/home/toolnames.js.map +1 -0
  92. package/dist/src/home/tune.js +341 -0
  93. package/dist/src/home/tune.js.map +1 -0
  94. package/dist/src/home/words.js +7 -0
  95. package/dist/src/home/words.js.map +1 -0
  96. package/dist/src/homes.js +14 -0
  97. package/dist/src/homes.js.map +1 -1
  98. package/dist/src/install.js +1 -1
  99. package/dist/src/install.js.map +1 -1
  100. package/dist/src/ipc/workerspec.js +8 -0
  101. package/dist/src/ipc/workerspec.js.map +1 -1
  102. package/dist/src/ledgercheck.js +39 -10
  103. package/dist/src/ledgercheck.js.map +1 -1
  104. package/dist/src/live/publish.js +1 -1
  105. package/dist/src/live/publish.js.map +1 -1
  106. package/dist/src/livecli.js +1 -1
  107. package/dist/src/livecli.js.map +1 -1
  108. package/dist/src/loginrefresh/handover.js +121 -0
  109. package/dist/src/loginrefresh/handover.js.map +1 -0
  110. package/dist/src/loginrefresh/lock.js +54 -3
  111. package/dist/src/loginrefresh/lock.js.map +1 -1
  112. package/dist/src/loginrefresh/refresher.js +33 -5
  113. package/dist/src/loginrefresh/refresher.js.map +1 -1
  114. package/dist/src/loginrefresh/supervisor.js +18 -1
  115. package/dist/src/loginrefresh/supervisor.js.map +1 -1
  116. package/dist/src/npmverbs.js +42 -12
  117. package/dist/src/npmverbs.js.map +1 -1
  118. package/dist/src/onboard/choices.js +6 -3
  119. package/dist/src/onboard/choices.js.map +1 -1
  120. package/dist/src/onboard/engine.js +33 -292
  121. package/dist/src/onboard/engine.js.map +1 -1
  122. package/dist/src/onboard/steps/bringup.js +3 -2
  123. package/dist/src/onboard/steps/bringup.js.map +1 -1
  124. package/dist/src/onboard/steps/configfill.js +18 -7
  125. package/dist/src/onboard/steps/configfill.js.map +1 -1
  126. package/dist/src/onboard/steps/loginshare.js +213 -0
  127. package/dist/src/onboard/steps/loginshare.js.map +1 -0
  128. package/dist/src/onboard/steps/memory.js +14 -2
  129. package/dist/src/onboard/steps/memory.js.map +1 -1
  130. package/dist/src/onboard/steps/repoconfig.js +72 -0
  131. package/dist/src/onboard/steps/repoconfig.js.map +1 -0
  132. package/dist/src/onboard/toolnames.js +2 -2
  133. package/dist/src/onboard/toolnames.js.map +1 -1
  134. package/dist/src/piagentdir.js +13 -0
  135. package/dist/src/piagentdir.js.map +1 -0
  136. package/dist/src/pilogin.js +31 -16
  137. package/dist/src/pilogin.js.map +1 -1
  138. package/dist/src/qcrbin.js +16 -11
  139. package/dist/src/qcrbin.js.map +1 -1
  140. package/dist/src/reviewargs.js +122 -0
  141. package/dist/src/reviewargs.js.map +1 -0
  142. package/dist/src/reviewcli.js +7 -161
  143. package/dist/src/reviewcli.js.map +1 -1
  144. package/dist/src/reviewdetach.js +76 -11
  145. package/dist/src/reviewdetach.js.map +1 -1
  146. package/dist/src/scancli.js +39 -691
  147. package/dist/src/scancli.js.map +1 -1
  148. package/dist/src/selfimprove.js +66 -0
  149. package/dist/src/selfimprove.js.map +1 -0
  150. package/dist/src/session-command-supervisor.js +38 -9
  151. package/dist/src/session-command-supervisor.js.map +1 -1
  152. package/dist/src/setup/adapters.js +5 -223
  153. package/dist/src/setup/adapters.js.map +1 -1
  154. package/dist/src/setup/caserunner.js +15 -249
  155. package/dist/src/setup/caserunner.js.map +1 -1
  156. package/dist/src/setup/engine.js +32 -341
  157. package/dist/src/setup/engine.js.map +1 -1
  158. package/dist/src/setup/facts.js +3 -592
  159. package/dist/src/setup/facts.js.map +1 -1
  160. package/dist/src/setup/findings.js +3 -947
  161. package/dist/src/setup/findings.js.map +1 -1
  162. package/dist/src/setup/presentation.js +3 -8
  163. package/dist/src/setup/presentation.js.map +1 -1
  164. package/dist/src/setup/scan.js +3 -724
  165. package/dist/src/setup/scan.js.map +1 -1
  166. package/dist/src/setup/scanbuild.js +9 -92
  167. package/dist/src/setup/scanbuild.js.map +1 -1
  168. package/dist/src/setup/scanlease.js +3 -250
  169. package/dist/src/setup/scanlease.js.map +1 -1
  170. package/dist/src/setup/scanreport.js +3 -288
  171. package/dist/src/setup/scanreport.js.map +1 -1
  172. package/dist/src/setup/scanrun.js +3 -1732
  173. package/dist/src/setup/scanrun.js.map +1 -1
  174. package/dist/src/setup/scantree.js +3 -256
  175. package/dist/src/setup/scantree.js.map +1 -1
  176. package/dist/src/setup/stage2request.js +3 -258
  177. package/dist/src/setup/stage2request.js.map +1 -1
  178. package/dist/src/setup/unitcut.js +3 -436
  179. package/dist/src/setup/unitcut.js.map +1 -1
  180. package/dist/src/state.js +75 -9
  181. package/dist/src/state.js.map +1 -1
  182. package/dist/src/takeover.js +1 -0
  183. package/dist/src/takeover.js.map +1 -1
  184. package/dist/src/takeoverpi.js +2 -1
  185. package/dist/src/takeoverpi.js.map +1 -1
  186. package/dist/src/tui/alerts.js +4 -1
  187. package/dist/src/tui/alerts.js.map +1 -1
  188. package/dist/src/tui/board.js +2 -2
  189. package/dist/src/tui/board.js.map +1 -1
  190. package/dist/src/tui/companion.js +2 -1
  191. package/dist/src/tui/companion.js.map +1 -1
  192. package/dist/src/tui/deploytab.js +2 -2
  193. package/dist/src/tui/deploytab.js.map +1 -1
  194. package/dist/src/tui/index.js +9 -6
  195. package/dist/src/tui/index.js.map +1 -1
  196. package/dist/src/tui/memory.js +3 -16
  197. package/dist/src/tui/memory.js.map +1 -1
  198. package/dist/src/tui/memoryurl.js +22 -0
  199. package/dist/src/tui/memoryurl.js.map +1 -0
  200. package/dist/src/tui/remote.js +1 -1
  201. package/dist/src/tui/remote.js.map +1 -1
  202. package/dist/src/tui/route.js +2 -2
  203. package/dist/src/tui/route.js.map +1 -1
  204. package/dist/src/tui/setupstate.js +8 -5
  205. package/dist/src/tui/setupstate.js.map +1 -1
  206. package/dist/src/tui/sshtriage.js +1 -1
  207. package/dist/src/tui/sshtriage.js.map +1 -1
  208. package/dist/src/verdicts.js +12 -0
  209. package/dist/src/verdicts.js.map +1 -1
  210. package/dist/src/wire.js +9 -4
  211. package/dist/src/wire.js.map +1 -1
  212. package/dist/src/workerbreaker.js +32 -5
  213. package/dist/src/workerbreaker.js.map +1 -1
  214. package/dist/src/workerworld.js +4 -0
  215. package/dist/src/workerworld.js.map +1 -1
  216. package/docker/README.md +1 -1
  217. package/docker/entrypoint.sh +40 -6
  218. package/docker-compose.yml +16 -1
  219. package/extensions/cli/home.ts +14 -0
  220. package/extensions/cli/selfimprove.ts +18 -0
  221. package/extensions/home.ts +484 -0
  222. package/extensions/login-route.ts +1 -1
  223. package/extensions/onboarding.ts +8 -7
  224. package/extensions/selfimprove.ts +65 -0
  225. package/extensions/setup-scan.ts +79 -766
  226. package/extensions/setup.ts +14 -70
  227. package/extensions/vendor/openviking-pi/NOTICE +5 -0
  228. package/extensions/vendor/openviking-pi/README.md +39 -5
  229. package/extensions/vendor/openviking-pi/index.ts +4 -0
  230. package/extensions/vendor/openviking-pi/patches/0014-one-turn-sync-in-flight.patch +239 -0
  231. package/extensions/vendor/openviking-pi/qcr-hooks.ts +3 -1
  232. package/extensions/vendor/openviking-pi/sync.ts +80 -0
  233. package/extensions/vendor/openviking-pi/upstream.json +2 -1
  234. package/package.json +6 -4
  235. package/prompts/onboarding.md +8 -7
  236. package/schemas/review-result.v1.json +60 -0
  237. package/scripts/deploy.sh +8 -6
  238. package/scripts/qcr-host.sh +28 -5
  239. package/scripts/vm-ghcr-login.sh +7 -4
  240. package/src/archive/restore.ts +18 -21
  241. package/src/botworker.ts +13 -2
  242. package/src/channelfs.ts +3 -26
  243. package/src/cli.ts +13 -54
  244. package/src/config.ts +38 -0
  245. package/src/daemon.ts +34 -4
  246. package/src/debuground.ts +3 -0
  247. package/src/debugroundpi.ts +1 -0
  248. package/src/engine/caserunner-sdk.ts +29 -314
  249. package/src/home/adapters.ts +418 -0
  250. package/src/home/advanced.ts +421 -0
  251. package/src/home/advancedtools.ts +96 -0
  252. package/src/home/autoreview.ts +385 -0
  253. package/src/home/daemonstatus.ts +55 -0
  254. package/src/home/devicelogin.ts +107 -0
  255. package/src/home/launch.ts +257 -0
  256. package/src/home/loginowner.ts +248 -0
  257. package/src/home/memory.ts +176 -0
  258. package/src/home/model.ts +965 -0
  259. package/src/home/panel.ts +666 -0
  260. package/src/home/ports.ts +338 -0
  261. package/src/home/review.ts +206 -0
  262. package/src/home/reviews.ts +565 -0
  263. package/src/home/setup.ts +689 -0
  264. package/src/home/setupadapters.ts +217 -0
  265. package/src/home/setupcard.ts +288 -0
  266. package/src/home/setuptools.ts +57 -0
  267. package/src/home/spend.ts +194 -0
  268. package/src/home/switches.ts +293 -0
  269. package/src/home/switchon.ts +554 -0
  270. package/src/home/toolnames.ts +46 -0
  271. package/src/home/tune.ts +405 -0
  272. package/src/home/words.ts +8 -0
  273. package/src/homes.ts +17 -0
  274. package/src/install.ts +1 -1
  275. package/src/ipc/workerspec.ts +15 -0
  276. package/src/ledgercheck.ts +45 -9
  277. package/src/live/publish.ts +4 -1
  278. package/src/livecli.ts +6 -1
  279. package/src/loginrefresh/handover.ts +138 -0
  280. package/src/loginrefresh/lock.ts +72 -3
  281. package/src/loginrefresh/refresher.ts +34 -5
  282. package/src/loginrefresh/supervisor.ts +25 -2
  283. package/src/npmverbs.ts +51 -11
  284. package/src/onboard/choices.ts +6 -3
  285. package/src/onboard/engine.ts +64 -434
  286. package/src/onboard/steps/bringup.ts +3 -2
  287. package/src/onboard/steps/configfill.ts +23 -7
  288. package/src/onboard/steps/loginshare.ts +258 -0
  289. package/src/onboard/steps/memory.ts +18 -2
  290. package/src/onboard/steps/repoconfig.ts +85 -0
  291. package/src/onboard/toolnames.ts +2 -2
  292. package/src/piagentdir.ts +12 -0
  293. package/src/pilogin.ts +32 -16
  294. package/src/qcrbin.ts +16 -11
  295. package/src/reviewargs.ts +119 -0
  296. package/src/reviewcli.ts +6 -167
  297. package/src/reviewdetach.ts +107 -13
  298. package/src/scancli.ts +75 -826
  299. package/src/selfimprove.ts +90 -0
  300. package/src/session-command-supervisor.ts +41 -8
  301. package/src/setup/adapters.ts +13 -221
  302. package/src/setup/caserunner.ts +34 -273
  303. package/src/setup/engine.ts +62 -496
  304. package/src/setup/facts.ts +3 -627
  305. package/src/setup/findings.ts +3 -1264
  306. package/src/setup/presentation.ts +3 -18
  307. package/src/setup/scan.ts +3 -1033
  308. package/src/setup/scanbuild.ts +20 -114
  309. package/src/setup/scanlease.ts +3 -297
  310. package/src/setup/scanreport.ts +3 -373
  311. package/src/setup/scanrun.ts +3 -2268
  312. package/src/setup/scantree.ts +3 -259
  313. package/src/setup/stage2request.ts +3 -347
  314. package/src/setup/unitcut.ts +3 -523
  315. package/src/state.ts +126 -11
  316. package/src/takeover.ts +5 -0
  317. package/src/takeoverpi.ts +3 -2
  318. package/src/tui/alerts.ts +9 -2
  319. package/src/tui/board.ts +2 -2
  320. package/src/tui/companion.ts +2 -1
  321. package/src/tui/deploytab.ts +2 -2
  322. package/src/tui/index.ts +9 -6
  323. package/src/tui/memory.ts +3 -15
  324. package/src/tui/memoryurl.ts +22 -0
  325. package/src/tui/remote.ts +1 -1
  326. package/src/tui/route.ts +2 -2
  327. package/src/tui/setupstate.ts +20 -16
  328. package/src/tui/sshtriage.ts +1 -1
  329. package/src/verdicts.ts +13 -0
  330. package/src/wire.ts +9 -4
  331. package/src/workerbreaker.ts +41 -5
  332. package/src/workerworld.ts +9 -1
  333. package/dist/src/live/projection.js +0 -450
  334. package/dist/src/live/projection.js.map +0 -1
  335. package/dist/src/live/read.js +0 -60
  336. package/dist/src/live/read.js.map +0 -1
  337. package/dist/src/onboard/launch.js +0 -75
  338. package/dist/src/onboard/launch.js.map +0 -1
  339. package/dist/src/setup/ledger.js +0 -207
  340. package/dist/src/setup/ledger.js.map +0 -1
  341. package/dist/src/setup/stage2.js +0 -617
  342. package/dist/src/setup/stage2.js.map +0 -1
  343. package/dist/src/setup/textsniff.js +0 -89
  344. package/dist/src/setup/textsniff.js.map +0 -1
  345. package/src/live/projection.ts +0 -491
  346. package/src/live/read.ts +0 -86
  347. package/src/onboard/launch.ts +0 -103
  348. package/src/setup/ledger.ts +0 -324
  349. package/src/setup/stage2.ts +0 -926
  350. package/src/setup/textsniff.ts +0 -95
@@ -1,593 +1,4 @@
1
- // Deterministic repo facts: what a repo says about itself in files, read
2
- // without a model — the stack, frameworks, CI checks, linters and formatters,
3
- // the design docs and style guides, the agent-directive files, and a
4
- // stack-aware first guess at the unit cut. Free facts must not cost model
5
- // time, and the survey lens and the portrait start from these rather than
6
- // rediscovering them.
7
- //
8
- // Pure: a listing of repo-relative paths plus a reader that answers null for
9
- // anything it cannot read. Nothing here touches a filesystem, so the engine's
10
- // repo port decides what "the repo" is (git-tracked files of the reviewed
11
- // checkout, in production) and tests hand over a map.
12
- //
13
- // Every detection is evidence-carrying: each fact names the file that proves
14
- // it, so the operator can check the facts and the companion can cite them.
15
- // Nothing is inferred from absence — a repo with no CI config has `ci: []`,
16
- // which says "no config file found", not "no CI".
17
- import { parse as parseToml } from "smol-toml";
18
- import { DEFAULT_DIRECTIVE_VOCABULARY } from "@quickchatai/pi-quickreview/src/severity.js";
19
- import { styleGuideRefsIn } from "@quickchatai/pi-quickreview/src/styleguide.js";
20
- import { escapeControls } from "./textsniff.js";
21
- /** Every unit kind — the type and the runtime check (`unitcut.ts`) read this
22
- * one list. */
23
- export const UNIT_KINDS = [
24
- "django-app",
25
- "js-package",
26
- "python-package",
27
- "go-module",
28
- "rust-crate",
29
- "directory",
30
- "rest",
31
- "custom",
32
- ];
33
- /** Stable item text shared by facts and portrait renderers. */
34
- export const evidenceText = (item) => `${item.name} — ${item.evidence}`;
35
- export const ciText = (item) => `${item.system} — ${item.path}${item.name ? ` ("${item.name}")` : ""}`;
36
- export const displayRoot = (root) => root || "(repo root)";
37
- // ---- helpers -----------------------------------------------------------------
38
- function base(path) {
39
- return path.slice(path.lastIndexOf("/") + 1);
40
- }
41
- function dirOf(path) {
42
- const i = path.lastIndexOf("/");
43
- return i < 0 ? "" : path.slice(0, i);
44
- }
45
- /** Migration files, whatever the stack calls their directory. */
46
- const MIGRATION_RE = /(^|\/)(migrations?|alembic\/versions|db\/migrate)\//i;
47
- export function isMigrationFile(path) {
48
- return MIGRATION_RE.test(path);
49
- }
50
- /** Vendored trees are someone else's repo: never evidence about this one. */
51
- export function isVendored(path) {
52
- return path
53
- .split("/")
54
- .some((s) => DEFAULT_DIRECTIVE_VOCABULARY.vendoredSegments.has(s.toLowerCase()));
55
- }
56
- const LANGUAGE_BY_EXT = {
57
- py: "Python",
58
- pyi: "Python",
59
- js: "JavaScript",
60
- jsx: "JavaScript",
61
- mjs: "JavaScript",
62
- cjs: "JavaScript",
63
- ts: "TypeScript",
64
- tsx: "TypeScript",
65
- mts: "TypeScript",
66
- cts: "TypeScript",
67
- go: "Go",
68
- rs: "Rust",
69
- rb: "Ruby",
70
- java: "Java",
71
- kt: "Kotlin",
72
- kts: "Kotlin",
73
- scala: "Scala",
74
- php: "PHP",
75
- cs: "C#",
76
- c: "C",
77
- h: "C",
78
- cc: "C++",
79
- cpp: "C++",
80
- cxx: "C++",
81
- hh: "C++",
82
- hxx: "C++",
83
- hpp: "C++",
84
- swift: "Swift",
85
- m: "Objective-C",
86
- mm: "Objective-C",
87
- dart: "Dart",
88
- ex: "Elixir",
89
- exs: "Elixir",
90
- erl: "Erlang",
91
- hs: "Haskell",
92
- clj: "Clojure",
93
- lua: "Lua",
94
- sh: "Shell",
95
- bash: "Shell",
96
- sql: "SQL",
97
- vue: "Vue",
98
- svelte: "Svelte",
99
- html: "HTML",
100
- css: "CSS",
101
- scss: "CSS",
102
- less: "CSS",
103
- tf: "Terraform",
104
- };
105
- function languages(files) {
106
- const counts = new Map();
107
- for (const f of files) {
108
- const b = base(f);
109
- const dot = b.lastIndexOf(".");
110
- if (dot <= 0)
111
- continue;
112
- const lang = LANGUAGE_BY_EXT[b.slice(dot + 1).toLowerCase()];
113
- if (lang)
114
- counts.set(lang, (counts.get(lang) ?? 0) + 1);
115
- }
116
- return [...counts.entries()]
117
- .map(([language, n]) => ({ language, files: n }))
118
- .sort((a, b) => b.files - a.files || a.language.localeCompare(b.language));
119
- }
120
- /** Manifest basename → ecosystem. */
121
- const MANIFESTS = {
122
- "package.json": "npm",
123
- "pnpm-workspace.yaml": "pnpm workspace",
124
- "pyproject.toml": "python (pyproject)",
125
- "setup.py": "python (setuptools)",
126
- "setup.cfg": "python (setuptools)",
127
- "requirements.txt": "python (pip)",
128
- Pipfile: "python (pipenv)",
129
- "go.mod": "go modules",
130
- "Cargo.toml": "cargo",
131
- Gemfile: "bundler",
132
- "pom.xml": "maven",
133
- "build.gradle": "gradle",
134
- "build.gradle.kts": "gradle",
135
- "composer.json": "composer",
136
- "mix.exs": "mix",
137
- "pubspec.yaml": "pub",
138
- "Package.swift": "swiftpm",
139
- };
140
- const isRequirementsName = (name) => /^requirements([-_.][\w.-]*)?\.txt$/.test(name);
141
- function manifests(files) {
142
- const out = [];
143
- for (const f of files) {
144
- const b = base(f);
145
- const eco = MANIFESTS[b] ?? (isRequirementsName(b) ? "python (pip)" : null);
146
- if (eco)
147
- out.push({ name: eco, evidence: f });
148
- }
149
- return out;
150
- }
151
- /** A Python dependency line naming exactly `dep` (any version spec, extras,
152
- * or a Poetry `dep = "…"` table entry) — `flask-cors` is not Flask. */
153
- function pyDep(dep) {
154
- return new RegExp(`^\\s*${dep}(\\[[^\\]]*\\])?\\s*([<>=~!;,"'@]|$)`, "im");
155
- }
156
- /** Framework → the dependency spelling that proves it, per manifest family. */
157
- const PY_FRAMEWORKS = [
158
- ["Django", pyDep("django")],
159
- ["Django REST framework", pyDep("djangorestframework")],
160
- ["Flask", pyDep("flask")],
161
- ["FastAPI", pyDep("fastapi")],
162
- ["Celery", pyDep("celery")],
163
- ["SQLAlchemy", pyDep("sqlalchemy")],
164
- ["pytest", pyDep("pytest")],
165
- ["Pydantic", pyDep("pydantic")],
166
- ];
167
- const JS_FRAMEWORKS = [
168
- ["React", "react"],
169
- ["Next.js", "next"],
170
- ["Vue", "vue"],
171
- ["Nuxt", "nuxt"],
172
- ["Svelte", "svelte"],
173
- ["SvelteKit", "@sveltejs/kit"],
174
- ["Angular", "@angular/core"],
175
- ["Express", "express"],
176
- ["NestJS", "@nestjs/core"],
177
- ["Fastify", "fastify"],
178
- ["Tailwind CSS", "tailwindcss"],
179
- ["Vite", "vite"],
180
- ["Jest", "jest"],
181
- ["Vitest", "vitest"],
182
- ["Playwright", "@playwright/test"],
183
- ["Electron", "electron"],
184
- ["React Native", "react-native"],
185
- ];
186
- const SPRING_SIGNATURE = /spring-boot|springframework/;
187
- const OTHER_FRAMEWORKS = [
188
- ["Rails", "Gemfile", /^\s*gem\s+["']rails["']/m],
189
- ["Spring", "pom.xml", SPRING_SIGNATURE],
190
- ["Spring", "build.gradle", SPRING_SIGNATURE],
191
- ["Spring", "build.gradle.kts", SPRING_SIGNATURE],
192
- ["Laravel", "composer.json", /"laravel\/framework"/],
193
- ["Phoenix", "mix.exs", /:phoenix\b/],
194
- ["Gin", "go.mod", /github\.com\/gin-gonic\/gin/],
195
- ["Echo", "go.mod", /github\.com\/labstack\/echo/],
196
- ["Actix", "Cargo.toml", /^\s*actix-web\s*=/m],
197
- ["Axum", "Cargo.toml", /^\s*axum\s*=/m],
198
- ];
199
- function packageDeps(text) {
200
- try {
201
- const pkg = JSON.parse(text);
202
- const deps = new Set();
203
- for (const key of ["dependencies", "devDependencies", "peerDependencies"]) {
204
- const block = pkg[key];
205
- if (block && typeof block === "object")
206
- for (const d of Object.keys(block))
207
- deps.add(d);
208
- }
209
- return deps;
210
- }
211
- catch {
212
- return new Set();
213
- }
214
- }
215
- /** Python dependency declarations only; project metadata is never evidence. */
216
- function pythonDependencies(name, text) {
217
- if (isRequirementsName(name))
218
- return text;
219
- if (name === "setup.py") {
220
- const declarations = [
221
- ...text.matchAll(/\b(install_requires|tests_require|extras_require)\s*=\s*(\[[\s\S]*?\]|\{[\s\S]*?\})/g),
222
- ];
223
- return declarations
224
- .flatMap((m) => {
225
- const lists = m[1] === "extras_require"
226
- ? [...m[2].matchAll(/:\s*(\[[\s\S]*?\])/g)].map((v) => v[1])
227
- : [m[2]];
228
- return lists.flatMap((list) => [...list.matchAll(/["']([^"'\n]+)["']/g)].map((v) => v[1]));
229
- })
230
- .join("\n");
231
- }
232
- if (name === "setup.cfg") {
233
- let section = "";
234
- let collecting = false;
235
- const out = [];
236
- for (const line of text.split("\n")) {
237
- const header = /^\s*\[([^\]]+)\]/.exec(line);
238
- if (header) {
239
- section = header[1];
240
- collecting = false;
241
- continue;
242
- }
243
- const key = /^([\w.-]+)\s*=\s*(.*)$/.exec(line);
244
- if (key) {
245
- collecting =
246
- section === "options.extras_require" ||
247
- (section === "options" && ["install_requires", "tests_require"].includes(key[1]));
248
- if (collecting)
249
- out.push(key[2]);
250
- }
251
- else if (collecting && /^\s+/.test(line))
252
- out.push(line.trim());
253
- }
254
- return out.join("\n");
255
- }
256
- try {
257
- const table = (v) => v !== null && typeof v === "object" && !Array.isArray(v)
258
- ? v
259
- : {};
260
- const doc = table(parseToml(text));
261
- const out = [];
262
- const strings = (v) => {
263
- if (Array.isArray(v))
264
- for (const item of v)
265
- if (typeof item === "string")
266
- out.push(item);
267
- };
268
- const tableNames = (v) => {
269
- out.push(...Object.keys(table(v)));
270
- };
271
- if (name === "Pipfile") {
272
- tableNames(doc.packages);
273
- tableNames(doc["dev-packages"]);
274
- }
275
- else {
276
- const project = table(doc.project);
277
- strings(project.dependencies);
278
- for (const values of Object.values(table(project["optional-dependencies"])))
279
- strings(values);
280
- for (const values of Object.values(table(doc["dependency-groups"])))
281
- strings(values);
282
- const poetry = table(table(doc.tool).poetry);
283
- tableNames(poetry.dependencies);
284
- tableNames(poetry["dev-dependencies"]);
285
- for (const group of Object.values(table(poetry.group)))
286
- tableNames(table(group).dependencies);
287
- }
288
- return out.join("\n");
289
- }
290
- catch {
291
- return "";
292
- }
293
- }
294
- function frameworks(files, read) {
295
- const seen = new Map();
296
- const note = (name, evidence) => {
297
- if (!seen.has(name))
298
- seen.set(name, evidence);
299
- };
300
- for (const f of files) {
301
- const b = base(f);
302
- if (b === "manage.py") {
303
- const text = read(f);
304
- if (text !== null && /django/i.test(text))
305
- note("Django", f);
306
- }
307
- else if (b === "pyproject.toml" ||
308
- b === "Pipfile" ||
309
- b === "setup.py" ||
310
- b === "setup.cfg" ||
311
- isRequirementsName(b)) {
312
- const text = read(f);
313
- if (text === null)
314
- continue;
315
- const lines = pythonDependencies(b, text);
316
- for (const [name, re] of PY_FRAMEWORKS)
317
- if (re.test(lines))
318
- note(name, f);
319
- }
320
- else if (b === "package.json") {
321
- const text = read(f);
322
- if (text === null)
323
- continue;
324
- const deps = packageDeps(text);
325
- for (const [name, dep] of JS_FRAMEWORKS)
326
- if (deps.has(dep))
327
- note(name, f);
328
- }
329
- else {
330
- for (const [name, file, re] of OTHER_FRAMEWORKS) {
331
- if (b !== file)
332
- continue;
333
- const text = read(f);
334
- if (text !== null && re.test(text))
335
- note(name, f);
336
- }
337
- }
338
- }
339
- return [...seen.entries()].map(([name, evidence]) => ({ name, evidence }));
340
- }
341
- function ciFacts(files, read) {
342
- const out = [];
343
- for (const f of files) {
344
- let system = null;
345
- if (/^\.github\/workflows\/[^/]+\.ya?ml$/.test(f))
346
- system = "GitHub Actions";
347
- else if (f === ".gitlab-ci.yml")
348
- system = "GitLab CI";
349
- else if (f === ".circleci/config.yml")
350
- system = "CircleCI";
351
- else if (f === "Jenkinsfile")
352
- system = "Jenkins";
353
- else if (f === "azure-pipelines.yml")
354
- system = "Azure Pipelines";
355
- else if (f === ".travis.yml")
356
- system = "Travis CI";
357
- else if (f === "bitbucket-pipelines.yml")
358
- system = "Bitbucket Pipelines";
359
- else if (/^\.buildkite\/[^/]+\.ya?ml$/.test(f))
360
- system = "Buildkite";
361
- if (!system)
362
- continue;
363
- const text = system === "GitHub Actions" ? read(f) : null;
364
- // The name reaches the portrait and the companion's prompt: a control
365
- // byte in the workflow file (a stray NUL is still text) is escaped.
366
- const raw = text === null ? null : (/^name:\s*["']?(.+?)["']?\s*$/m.exec(text)?.[1] ?? null);
367
- const name = raw === null ? null : escapeControls(raw);
368
- out.push({ system, path: f, name });
369
- }
370
- return out;
371
- }
372
- /** Tool → config basenames that prove it (anywhere in the tree). */
373
- const LINTER_FILES = [
374
- ["Ruff", /^\.?ruff\.toml$/],
375
- ["Flake8", /^\.flake8$/],
376
- ["Pylint", /^\.?pylintrc$/],
377
- ["mypy", /^\.?mypy\.ini$/],
378
- ["Black", /^\.black$/],
379
- ["isort", /^\.isort\.cfg$/],
380
- ["ESLint", /^(\.eslintrc(\.(js|cjs|json|ya?ml))?|eslint\.config\.(js|mjs|cjs|ts))$/],
381
- ["Prettier", /^(\.prettierrc(\.(js|cjs|json|ya?ml|toml))?|prettier\.config\.(js|mjs|cjs))$/],
382
- ["Biome", /^biome\.jsonc?$/],
383
- ["Stylelint", /^(\.stylelintrc(\.(js|json|ya?ml))?|stylelint\.config\.(js|cjs|mjs))$/],
384
- ["TypeScript compiler", /^tsconfig\.json$/],
385
- ["golangci-lint", /^\.golangci\.ya?ml$/],
386
- ["rustfmt", /^\.?rustfmt\.toml$/],
387
- ["Clippy", /^\.?clippy\.toml$/],
388
- ["RuboCop", /^\.rubocop\.yml$/],
389
- ["EditorConfig", /^\.editorconfig$/],
390
- ["pre-commit", /^\.pre-commit-config\.yaml$/],
391
- ["Checkstyle", /^checkstyle\.xml$/],
392
- ["Spotless", /^\.spotless$/],
393
- ];
394
- /** `[tool.X]` sections in a pyproject.toml / setup.cfg. */
395
- const PY_TOOL_SECTIONS = [
396
- ["Ruff", /^\[tool\.ruff[\].]/m],
397
- ["Black", /^\[tool\.black\]/m],
398
- ["isort", /^\[(tool\.)?isort\]/m],
399
- ["mypy", /^\[(tool\.)?mypy[\].-]/m],
400
- ["Pylint", /^\[tool\.pylint[\].]/m],
401
- ["Flake8", /^\[flake8\]/m],
402
- ["pyright", /^\[tool\.pyright\]/m],
403
- ];
404
- function linters(files, read) {
405
- const seen = new Map();
406
- const note = (name, evidence) => {
407
- if (!seen.has(name))
408
- seen.set(name, evidence);
409
- };
410
- for (const f of files) {
411
- const b = base(f);
412
- for (const [name, re] of LINTER_FILES)
413
- if (re.test(b))
414
- note(name, f);
415
- if (b === "pyproject.toml" || b === "setup.cfg" || b === "tox.ini") {
416
- const text = read(f);
417
- if (text !== null)
418
- for (const [name, re] of PY_TOOL_SECTIONS)
419
- if (re.test(text))
420
- note(name, f);
421
- }
422
- else if (b === "package.json") {
423
- const text = read(f);
424
- if (text === null)
425
- continue;
426
- try {
427
- const pkg = JSON.parse(text);
428
- if (pkg.eslintConfig)
429
- note("ESLint", f);
430
- if (pkg.prettier)
431
- note("Prettier", f);
432
- }
433
- catch {
434
- // Not JSON: nothing to read, and no reason to fail the whole facts call.
435
- }
436
- }
437
- }
438
- return [...seen.entries()].map(([name, evidence]) => ({ name, evidence }));
439
- }
440
- /** Design docs the survey reads in full — the repo's stated intent. */
441
- const GUIDE_RE = /^(readme|contributing|design|product|architecture|overview|development|hacking|security|conventions|styleguide|style[-_]guide)(\.[a-z]+)?$/i;
442
- function guides(files) {
443
- return files
444
- .filter((f) => {
445
- const d = dirOf(f);
446
- return (d === "" || d === "docs" || d === "doc" || d === ".github") && GUIDE_RE.test(base(f));
447
- })
448
- .sort();
449
- }
450
- /** Agent-directive files: what the repo's team already told agents. Broader
451
- * than the review's `isFirstPartyDirectivePath` on purpose — that predicate
452
- * decides a finding's provenance and keeps its shipped vocabulary; this one is
453
- * a reading list, so it also takes the other tools' rule files. */
454
- const AGENT_BASENAMES = new Set([
455
- "AGENTS.md",
456
- "AGENT.md",
457
- "CLAUDE.md",
458
- "GEMINI.md",
459
- ".cursorrules",
460
- ".windsurfrules",
461
- ".clinerules",
462
- ]);
463
- export function isAgentFile(path) {
464
- if (isVendored(path))
465
- return false;
466
- if (AGENT_BASENAMES.has(base(path)))
467
- return true;
468
- if (path === ".github/copilot-instructions.md")
469
- return true;
470
- if (/^\.github\/instructions\/.+\.md$/.test(path))
471
- return true;
472
- if (/(^|\/)\.cursor\/rules\//.test(path))
473
- return true;
474
- if (/(^|\/)\.clinerules\//.test(path))
475
- return true;
476
- if (/(^|\/)\.claude\/.+\.md$/.test(path))
477
- return true;
478
- return false;
479
- }
480
- /** The shallowest vendored directories in the listing (`web/node_modules`,
481
- * `third_party`) — what a proposed cut ignores by default. */
482
- export function vendoredRoots(files) {
483
- const roots = new Set();
484
- for (const f of files) {
485
- const segs = f.split("/");
486
- const i = segs.findIndex((s) => DEFAULT_DIRECTIVE_VOCABULARY.vendoredSegments.has(s.toLowerCase()));
487
- if (i >= 0 && i < segs.length - 1)
488
- roots.add(segs.slice(0, i + 1).join("/"));
489
- }
490
- return [...roots].filter((r) => ![...roots].some((o) => o !== r && r.startsWith(`${o}/`))).sort();
491
- }
492
- // ---- unit candidates ---------------------------------------------------------
493
- /** The longest unit name. */
494
- export const UNIT_NAME_MAX = 64;
495
- /** A unit name: one plain segment (the state files and reports key on it). */
496
- export const UNIT_NAME_RE = new RegExp(`^[A-Za-z0-9][A-Za-z0-9._-]{0,${UNIT_NAME_MAX - 1}}$`);
497
- function slug(path) {
498
- const s = path
499
- .replace(/[^A-Za-z0-9._-]+/g, "-")
500
- .replace(/\.{2,}/g, "-")
501
- .replace(/^[-._]+|-+$/g, "");
502
- return (s || "root").slice(0, UNIT_NAME_MAX);
503
- }
504
- /** Directories never offered as units of their own (they ride "rest"). */
505
- const NON_UNIT_TOP = /^(\..*|docs?|scripts?|tools?|bin|ci|examples?|fixtures|assets|static|public)$/i;
506
- /**
507
- * The stack-aware first guess at the unit cut. Markers, most specific first:
508
- * a Django app (`apps.py`), a JS package (a nested `package.json`), a Python
509
- * package with its own `pyproject.toml`/`setup.py`, a Go module, a Rust crate.
510
- * Top-level directories holding code that no marker claimed become
511
- * `directory` units, and a `rest` unit at the repo root catches the remainder
512
- * so the guess is always a complete partition. The companion reshapes this;
513
- * it is evidence, not the answer.
514
- */
515
- export function unitCandidates(files) {
516
- const out = [];
517
- const roots = new Set();
518
- const add = (root, kind, reason) => {
519
- if (roots.has(root))
520
- return;
521
- roots.add(root);
522
- out.push({ name: "", roots: [root], kind, reason });
523
- };
524
- const sorted = [...files].filter((f) => !isVendored(f)).sort();
525
- for (const f of sorted) {
526
- const b = base(f);
527
- const d = dirOf(f);
528
- if (d === "")
529
- continue;
530
- if (b === "apps.py")
531
- add(d, "django-app", `${f} declares a Django app`);
532
- else if (b === "package.json")
533
- add(d, "js-package", `${f} declares a package`);
534
- else if (b === "pyproject.toml" || b === "setup.py")
535
- add(d, "python-package", `${f} declares a Python package`);
536
- else if (b === "go.mod")
537
- add(d, "go-module", `${f} declares a Go module`);
538
- else if (b === "Cargo.toml")
539
- add(d, "rust-crate", `${f} declares a crate`);
540
- }
541
- const covered = (f) => [...roots].some((r) => f === r || f.startsWith(`${r}/`));
542
- const tops = new Map();
543
- for (const f of sorted) {
544
- const i = f.indexOf("/");
545
- if (i < 0 || covered(f) || !/\.[A-Za-z0-9]+$/.test(f))
546
- continue;
547
- const top = f.slice(0, i);
548
- if (NON_UNIT_TOP.test(top))
549
- continue;
550
- const ext = f.slice(f.lastIndexOf(".") + 1).toLowerCase();
551
- if (LANGUAGE_BY_EXT[ext])
552
- tops.set(top, (tops.get(top) ?? 0) + 1);
553
- }
554
- for (const [top, n] of [...tops.entries()].sort()) {
555
- add(top, "directory", `top-level directory with ${n} code file${n === 1 ? "" : "s"} no package marker claims`);
556
- }
557
- // Names: the last segment, widened with its parents only where two collide.
558
- const byLast = new Map();
559
- for (const c of out) {
560
- const last = base(c.roots[0]);
561
- byLast.set(last, (byLast.get(last) ?? 0) + 1);
562
- }
563
- const taken = new Set(["rest"]);
564
- for (const c of out) {
565
- const root = c.roots[0];
566
- let name = slug(byLast.get(base(root)) > 1 ? root : base(root));
567
- // The suffix must fit UNIT_NAME_MAX too, or the whole candidate cut is
568
- // refused for one long colliding path.
569
- for (let i = 2; taken.has(name); i++)
570
- name = `${slug(root).slice(0, UNIT_NAME_MAX - `-${i}`.length)}-${i}`;
571
- taken.add(name);
572
- c.name = name;
573
- }
574
- out.push({ name: "rest", roots: [""], kind: "rest", reason: "everything no other unit claims" });
575
- return out;
576
- }
577
- // ---- the whole read ----------------------------------------------------------
578
- export function repoFacts(files, read) {
579
- const own = files.filter((f) => !isVendored(f));
580
- return {
581
- files: files.length,
582
- languages: languages(own),
583
- manifests: manifests(own),
584
- frameworks: frameworks(own, read),
585
- ci: ciFacts(own, read),
586
- linters: linters(own, read),
587
- guides: guides(own),
588
- style_guides: styleGuideRefsIn(own, read),
589
- agent_files: own.filter(isAgentFile).sort(),
590
- unit_candidates: unitCandidates(own),
591
- };
592
- }
1
+ // Moved to the plugin (packages/pi-plugin/src/scan/facts.ts), the scan engine's
2
+ // home: this name stays for the app's importers.
3
+ export * from "@quickchatai/pi-quickreview/src/scan/facts.js";
593
4
  //# sourceMappingURL=facts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"facts.js","sourceRoot":"","sources":["../../../src/setup/facts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"facts.js","sourceRoot":"","sources":["../../../src/setup/facts.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,iDAAiD;AACjD,cAAc,+CAA+C,CAAC"}