@quickchatai/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 (471) hide show
  1. package/README.md +137 -57
  2. package/bin/qcr.js +1 -1
  3. package/config.example.toml +60 -14
  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/login-route.js +5 -0
  11. package/dist/extensions/cli/login-route.js.map +1 -0
  12. package/dist/extensions/cli/selfimprove.js +18 -0
  13. package/dist/extensions/cli/selfimprove.js.map +1 -0
  14. package/dist/extensions/home.js +350 -0
  15. package/dist/extensions/home.js.map +1 -0
  16. package/dist/extensions/login-route.js +180 -0
  17. package/dist/extensions/login-route.js.map +1 -0
  18. package/dist/extensions/onboarding.js +35 -11
  19. package/dist/extensions/onboarding.js.map +1 -1
  20. package/dist/extensions/selfimprove.js +49 -0
  21. package/dist/extensions/selfimprove.js.map +1 -0
  22. package/dist/extensions/setup-scan.js +23 -592
  23. package/dist/extensions/setup-scan.js.map +1 -1
  24. package/dist/extensions/setup.js +2 -47
  25. package/dist/extensions/setup.js.map +1 -1
  26. package/dist/src/archive/restore.js +18 -15
  27. package/dist/src/archive/restore.js.map +1 -1
  28. package/dist/src/botworker.js +13 -2
  29. package/dist/src/botworker.js.map +1 -1
  30. package/dist/src/channelfs.js +3 -26
  31. package/dist/src/channelfs.js.map +1 -1
  32. package/dist/src/ciretry.js +2 -1
  33. package/dist/src/ciretry.js.map +1 -1
  34. package/dist/src/cli.js +54 -61
  35. package/dist/src/cli.js.map +1 -1
  36. package/dist/src/cliops.js +3 -2
  37. package/dist/src/cliops.js.map +1 -1
  38. package/dist/src/commands.js +25 -2
  39. package/dist/src/commands.js.map +1 -1
  40. package/dist/src/config.js +32 -2
  41. package/dist/src/config.js.map +1 -1
  42. package/dist/src/daemon.js +50 -8
  43. package/dist/src/daemon.js.map +1 -1
  44. package/dist/src/debuground.js +1 -0
  45. package/dist/src/debuground.js.map +1 -1
  46. package/dist/src/debugroundpi.js +6 -1
  47. package/dist/src/debugroundpi.js.map +1 -1
  48. package/dist/src/dispatch.js +5 -4
  49. package/dist/src/dispatch.js.map +1 -1
  50. package/dist/src/engine/caserunner-sdk.js +15 -251
  51. package/dist/src/engine/caserunner-sdk.js.map +1 -1
  52. package/dist/src/engine/debugpi.js +17 -5
  53. package/dist/src/engine/debugpi.js.map +1 -1
  54. package/dist/src/execboundary.js +10 -3
  55. package/dist/src/execboundary.js.map +1 -1
  56. package/dist/src/github.js +51 -16
  57. package/dist/src/github.js.map +1 -1
  58. package/dist/src/githubtoken.js +346 -0
  59. package/dist/src/githubtoken.js.map +1 -0
  60. package/dist/src/home/adapters.js +349 -0
  61. package/dist/src/home/adapters.js.map +1 -0
  62. package/dist/src/home/advanced.js +318 -0
  63. package/dist/src/home/advanced.js.map +1 -0
  64. package/dist/src/home/advancedtools.js +57 -0
  65. package/dist/src/home/advancedtools.js.map +1 -0
  66. package/dist/src/home/autoreview.js +325 -0
  67. package/dist/src/home/autoreview.js.map +1 -0
  68. package/dist/src/home/daemonstatus.js +32 -0
  69. package/dist/src/home/daemonstatus.js.map +1 -0
  70. package/dist/src/home/devicelogin.js +61 -0
  71. package/dist/src/home/devicelogin.js.map +1 -0
  72. package/dist/src/home/launch.js +202 -0
  73. package/dist/src/home/launch.js.map +1 -0
  74. package/dist/src/home/loginowner.js +205 -0
  75. package/dist/src/home/loginowner.js.map +1 -0
  76. package/dist/src/home/memory.js +122 -0
  77. package/dist/src/home/memory.js.map +1 -0
  78. package/dist/src/home/model.js +811 -0
  79. package/dist/src/home/model.js.map +1 -0
  80. package/dist/src/home/panel.js +520 -0
  81. package/dist/src/home/panel.js.map +1 -0
  82. package/dist/src/home/ports.js +19 -0
  83. package/dist/src/home/ports.js.map +1 -0
  84. package/dist/src/home/review.js +163 -0
  85. package/dist/src/home/review.js.map +1 -0
  86. package/dist/src/home/reviews.js +478 -0
  87. package/dist/src/home/reviews.js.map +1 -0
  88. package/dist/src/home/setup.js +507 -0
  89. package/dist/src/home/setup.js.map +1 -0
  90. package/dist/src/home/setupadapters.js +214 -0
  91. package/dist/src/home/setupadapters.js.map +1 -0
  92. package/dist/src/home/setupcard.js +199 -0
  93. package/dist/src/home/setupcard.js.map +1 -0
  94. package/dist/src/home/setuptools.js +45 -0
  95. package/dist/src/home/setuptools.js.map +1 -0
  96. package/dist/src/home/spend.js +160 -0
  97. package/dist/src/home/spend.js.map +1 -0
  98. package/dist/src/home/switches.js +209 -0
  99. package/dist/src/home/switches.js.map +1 -0
  100. package/dist/src/home/switchon.js +439 -0
  101. package/dist/src/home/switchon.js.map +1 -0
  102. package/dist/src/home/toolnames.js +41 -0
  103. package/dist/src/home/toolnames.js.map +1 -0
  104. package/dist/src/home/tune.js +341 -0
  105. package/dist/src/home/tune.js.map +1 -0
  106. package/dist/src/home/words.js +7 -0
  107. package/dist/src/home/words.js.map +1 -0
  108. package/dist/src/homes.js +14 -0
  109. package/dist/src/homes.js.map +1 -1
  110. package/dist/src/install.js +1 -1
  111. package/dist/src/install.js.map +1 -1
  112. package/dist/src/ipc/workerspec.js +8 -0
  113. package/dist/src/ipc/workerspec.js.map +1 -1
  114. package/dist/src/live/publish.js +1 -1
  115. package/dist/src/live/publish.js.map +1 -1
  116. package/dist/src/livecli.js +1 -1
  117. package/dist/src/livecli.js.map +1 -1
  118. package/dist/src/loginhint.js +8 -3
  119. package/dist/src/loginhint.js.map +1 -1
  120. package/dist/src/loginrefresh/handover.js +121 -0
  121. package/dist/src/loginrefresh/handover.js.map +1 -0
  122. package/dist/src/loginrefresh/lock.js +54 -3
  123. package/dist/src/loginrefresh/lock.js.map +1 -1
  124. package/dist/src/loginrefresh/pirefresh.js +3 -0
  125. package/dist/src/loginrefresh/pirefresh.js.map +1 -1
  126. package/dist/src/loginrefresh/refresher.js +33 -5
  127. package/dist/src/loginrefresh/refresher.js.map +1 -1
  128. package/dist/src/loginrefresh/supervisor.js +18 -1
  129. package/dist/src/loginrefresh/supervisor.js.map +1 -1
  130. package/dist/src/npmverbs.js +46 -14
  131. package/dist/src/npmverbs.js.map +1 -1
  132. package/dist/src/onboard/choices.js +35 -4
  133. package/dist/src/onboard/choices.js.map +1 -1
  134. package/dist/src/onboard/engine.js +32 -306
  135. package/dist/src/onboard/engine.js.map +1 -1
  136. package/dist/src/onboard/pipin.js +22 -0
  137. package/dist/src/onboard/pipin.js.map +1 -0
  138. package/dist/src/onboard/stepforward.js +41 -0
  139. package/dist/src/onboard/stepforward.js.map +1 -0
  140. package/dist/src/onboard/steps/appslug.js +4 -1
  141. package/dist/src/onboard/steps/appslug.js.map +1 -1
  142. package/dist/src/onboard/steps/bringup.js +3 -2
  143. package/dist/src/onboard/steps/bringup.js.map +1 -1
  144. package/dist/src/onboard/steps/compose.js +29 -0
  145. package/dist/src/onboard/steps/compose.js.map +1 -1
  146. package/dist/src/onboard/steps/configfill.js +120 -39
  147. package/dist/src/onboard/steps/configfill.js.map +1 -1
  148. package/dist/src/onboard/steps/githubaccount.js +595 -0
  149. package/dist/src/onboard/steps/githubaccount.js.map +1 -0
  150. package/dist/src/onboard/steps/githubapp.js +65 -7
  151. package/dist/src/onboard/steps/githubapp.js.map +1 -1
  152. package/dist/src/onboard/steps/golive.js +2 -0
  153. package/dist/src/onboard/steps/golive.js.map +1 -1
  154. package/dist/src/onboard/steps/index.js +11 -0
  155. package/dist/src/onboard/steps/index.js.map +1 -1
  156. package/dist/src/onboard/steps/ingress.js +80 -25
  157. package/dist/src/onboard/steps/ingress.js.map +1 -1
  158. package/dist/src/onboard/steps/llmauth.js +103 -30
  159. package/dist/src/onboard/steps/llmauth.js.map +1 -1
  160. package/dist/src/onboard/steps/loginshare.js +213 -0
  161. package/dist/src/onboard/steps/loginshare.js.map +1 -0
  162. package/dist/src/onboard/steps/memory.js +67 -3
  163. package/dist/src/onboard/steps/memory.js.map +1 -1
  164. package/dist/src/onboard/steps/proof.js +366 -56
  165. package/dist/src/onboard/steps/proof.js.map +1 -1
  166. package/dist/src/onboard/steps/repoconfig.js +72 -0
  167. package/dist/src/onboard/steps/repoconfig.js.map +1 -0
  168. package/dist/src/onboard/steps/topology.js +6 -6
  169. package/dist/src/onboard/steps/topology.js.map +1 -1
  170. package/dist/src/onboard/steps/transport.js +9 -1
  171. package/dist/src/onboard/steps/transport.js.map +1 -1
  172. package/dist/src/onboard/steps/tuiroute.js +102 -0
  173. package/dist/src/onboard/steps/tuiroute.js.map +1 -0
  174. package/dist/src/onboard/steps/verifyup.js +17 -1
  175. package/dist/src/onboard/steps/verifyup.js.map +1 -1
  176. package/dist/src/onboard/toolnames.js +30 -0
  177. package/dist/src/onboard/toolnames.js.map +1 -0
  178. package/dist/src/operatorwrite.js +23 -0
  179. package/dist/src/operatorwrite.js.map +1 -0
  180. package/dist/src/outcomes.js +4 -1
  181. package/dist/src/outcomes.js.map +1 -1
  182. package/dist/src/piagentdir.js +13 -0
  183. package/dist/src/piagentdir.js.map +1 -0
  184. package/dist/src/pilogin.js +31 -16
  185. package/dist/src/pilogin.js.map +1 -1
  186. package/dist/src/posting-journal.js +2 -1
  187. package/dist/src/posting-journal.js.map +1 -1
  188. package/dist/src/posting-outbox.js +6 -2
  189. package/dist/src/posting-outbox.js.map +1 -1
  190. package/dist/src/posting-receipt.js +14 -1
  191. package/dist/src/posting-receipt.js.map +1 -1
  192. package/dist/src/qcrbin.js +16 -11
  193. package/dist/src/qcrbin.js.map +1 -1
  194. package/dist/src/recheck.js +2 -1
  195. package/dist/src/recheck.js.map +1 -1
  196. package/dist/src/reconcile.js +22 -2
  197. package/dist/src/reconcile.js.map +1 -1
  198. package/dist/src/reviewargs.js +122 -0
  199. package/dist/src/reviewargs.js.map +1 -0
  200. package/dist/src/reviewcli.js +7 -161
  201. package/dist/src/reviewcli.js.map +1 -1
  202. package/dist/src/reviewdetach.js +76 -11
  203. package/dist/src/reviewdetach.js.map +1 -1
  204. package/dist/src/reviewhistory.js +32 -6
  205. package/dist/src/reviewhistory.js.map +1 -1
  206. package/dist/src/reviewnow.js +45 -0
  207. package/dist/src/reviewnow.js.map +1 -0
  208. package/dist/src/scancli.js +39 -691
  209. package/dist/src/scancli.js.map +1 -1
  210. package/dist/src/selfimprove.js +66 -0
  211. package/dist/src/selfimprove.js.map +1 -0
  212. package/dist/src/setup/adapters.js +5 -223
  213. package/dist/src/setup/adapters.js.map +1 -1
  214. package/dist/src/setup/caserunner.js +15 -249
  215. package/dist/src/setup/caserunner.js.map +1 -1
  216. package/dist/src/setup/engine.js +32 -341
  217. package/dist/src/setup/engine.js.map +1 -1
  218. package/dist/src/setup/facts.js +3 -592
  219. package/dist/src/setup/facts.js.map +1 -1
  220. package/dist/src/setup/findings.js +3 -947
  221. package/dist/src/setup/findings.js.map +1 -1
  222. package/dist/src/setup/presentation.js +3 -8
  223. package/dist/src/setup/presentation.js.map +1 -1
  224. package/dist/src/setup/scan.js +3 -724
  225. package/dist/src/setup/scan.js.map +1 -1
  226. package/dist/src/setup/scanbuild.js +9 -92
  227. package/dist/src/setup/scanbuild.js.map +1 -1
  228. package/dist/src/setup/scanlease.js +3 -250
  229. package/dist/src/setup/scanlease.js.map +1 -1
  230. package/dist/src/setup/scanreport.js +3 -288
  231. package/dist/src/setup/scanreport.js.map +1 -1
  232. package/dist/src/setup/scanrun.js +3 -1732
  233. package/dist/src/setup/scanrun.js.map +1 -1
  234. package/dist/src/setup/scantree.js +3 -256
  235. package/dist/src/setup/scantree.js.map +1 -1
  236. package/dist/src/setup/stage2request.js +3 -258
  237. package/dist/src/setup/stage2request.js.map +1 -1
  238. package/dist/src/setup/unitcut.js +3 -436
  239. package/dist/src/setup/unitcut.js.map +1 -1
  240. package/dist/src/state.js +2 -0
  241. package/dist/src/state.js.map +1 -1
  242. package/dist/src/statemachine.js +4 -1
  243. package/dist/src/statemachine.js.map +1 -1
  244. package/dist/src/takeover.js +1 -0
  245. package/dist/src/takeover.js.map +1 -1
  246. package/dist/src/takeoverpi.js +15 -1
  247. package/dist/src/takeoverpi.js.map +1 -1
  248. package/dist/src/tui/app.js +49 -0
  249. package/dist/src/tui/app.js.map +1 -1
  250. package/dist/src/tui/board.js +88 -12
  251. package/dist/src/tui/board.js.map +1 -1
  252. package/dist/src/tui/cmdbar.js +4 -1
  253. package/dist/src/tui/cmdbar.js.map +1 -1
  254. package/dist/src/tui/companion.js +76 -11
  255. package/dist/src/tui/companion.js.map +1 -1
  256. package/dist/src/tui/connect.js +7 -1
  257. package/dist/src/tui/connect.js.map +1 -1
  258. package/dist/src/tui/deploytab.js +2 -2
  259. package/dist/src/tui/deploytab.js.map +1 -1
  260. package/dist/src/tui/filters.js +5 -2
  261. package/dist/src/tui/filters.js.map +1 -1
  262. package/dist/src/tui/ghread.js +61 -5
  263. package/dist/src/tui/ghread.js.map +1 -1
  264. package/dist/src/tui/index.js +109 -20
  265. package/dist/src/tui/index.js.map +1 -1
  266. package/dist/src/tui/memforward.js +39 -2
  267. package/dist/src/tui/memforward.js.map +1 -1
  268. package/dist/src/tui/memory.js +3 -16
  269. package/dist/src/tui/memory.js.map +1 -1
  270. package/dist/src/tui/memoryurl.js +22 -0
  271. package/dist/src/tui/memoryurl.js.map +1 -0
  272. package/dist/src/tui/model.js +25 -0
  273. package/dist/src/tui/model.js.map +1 -1
  274. package/dist/src/tui/prpause.js +7 -0
  275. package/dist/src/tui/prpause.js.map +1 -1
  276. package/dist/src/tui/remote.js +7 -1
  277. package/dist/src/tui/remote.js.map +1 -1
  278. package/dist/src/tui/route.js +143 -0
  279. package/dist/src/tui/route.js.map +1 -0
  280. package/dist/src/tui/setupstate.js +32 -0
  281. package/dist/src/tui/setupstate.js.map +1 -0
  282. package/dist/src/tui/sshtriage.js +102 -5
  283. package/dist/src/tui/sshtriage.js.map +1 -1
  284. package/dist/src/tui/theme.js +2 -1
  285. package/dist/src/tui/theme.js.map +1 -1
  286. package/dist/src/tui/unwedge.js +2 -12
  287. package/dist/src/tui/unwedge.js.map +1 -1
  288. package/dist/src/verdicts.js +17 -5
  289. package/dist/src/verdicts.js.map +1 -1
  290. package/dist/src/version.js +1 -1
  291. package/dist/src/version.js.map +1 -1
  292. package/dist/src/webhook.js +12 -1
  293. package/dist/src/webhook.js.map +1 -1
  294. package/dist/src/wire.js +34 -8
  295. package/dist/src/wire.js.map +1 -1
  296. package/dist/src/workerworld.js +11 -1
  297. package/dist/src/workerworld.js.map +1 -1
  298. package/docker/README.md +1 -1
  299. package/docker/companion/entrypoint.sh +20 -1
  300. package/docker/entrypoint.sh +57 -6
  301. package/docker-compose.yml +16 -1
  302. package/extensions/cli/home.ts +14 -0
  303. package/extensions/cli/login-route.ts +10 -0
  304. package/extensions/cli/selfimprove.ts +18 -0
  305. package/extensions/home.ts +484 -0
  306. package/extensions/login-route.ts +220 -0
  307. package/extensions/onboarding.ts +41 -11
  308. package/extensions/selfimprove.ts +65 -0
  309. package/extensions/setup-scan.ts +79 -766
  310. package/extensions/setup.ts +14 -70
  311. package/package.json +6 -4
  312. package/prompts/onboarding.md +58 -18
  313. package/schemas/review-result.v1.json +60 -0
  314. package/scripts/deploy.sh +8 -6
  315. package/scripts/mint-token.sh +25 -4
  316. package/scripts/qcr-host.sh +28 -5
  317. package/scripts/vm-ghcr-login.sh +7 -4
  318. package/src/archive/restore.ts +18 -21
  319. package/src/botworker.ts +13 -2
  320. package/src/channelfs.ts +3 -26
  321. package/src/ciretry.ts +2 -1
  322. package/src/cli.ts +59 -67
  323. package/src/cliops.ts +3 -2
  324. package/src/commands.ts +28 -2
  325. package/src/config.ts +62 -4
  326. package/src/daemon.ts +58 -7
  327. package/src/debuground.ts +3 -0
  328. package/src/debugroundpi.ts +12 -1
  329. package/src/dispatch.ts +5 -4
  330. package/src/engine/caserunner-sdk.ts +29 -314
  331. package/src/engine/debugpi.ts +17 -5
  332. package/src/execboundary.ts +16 -4
  333. package/src/github.ts +57 -15
  334. package/src/githubtoken.ts +435 -0
  335. package/src/home/adapters.ts +418 -0
  336. package/src/home/advanced.ts +421 -0
  337. package/src/home/advancedtools.ts +96 -0
  338. package/src/home/autoreview.ts +385 -0
  339. package/src/home/daemonstatus.ts +55 -0
  340. package/src/home/devicelogin.ts +107 -0
  341. package/src/home/launch.ts +257 -0
  342. package/src/home/loginowner.ts +248 -0
  343. package/src/home/memory.ts +176 -0
  344. package/src/home/model.ts +965 -0
  345. package/src/home/panel.ts +666 -0
  346. package/src/home/ports.ts +338 -0
  347. package/src/home/review.ts +206 -0
  348. package/src/home/reviews.ts +565 -0
  349. package/src/home/setup.ts +689 -0
  350. package/src/home/setupadapters.ts +217 -0
  351. package/src/home/setupcard.ts +288 -0
  352. package/src/home/setuptools.ts +57 -0
  353. package/src/home/spend.ts +194 -0
  354. package/src/home/switches.ts +293 -0
  355. package/src/home/switchon.ts +554 -0
  356. package/src/home/toolnames.ts +46 -0
  357. package/src/home/tune.ts +405 -0
  358. package/src/home/words.ts +8 -0
  359. package/src/homes.ts +17 -0
  360. package/src/install.ts +1 -1
  361. package/src/ipc/workerspec.ts +15 -0
  362. package/src/live/publish.ts +4 -1
  363. package/src/livecli.ts +6 -1
  364. package/src/loginhint.ts +8 -3
  365. package/src/loginrefresh/handover.ts +138 -0
  366. package/src/loginrefresh/lock.ts +72 -3
  367. package/src/loginrefresh/pirefresh.ts +3 -0
  368. package/src/loginrefresh/refresher.ts +34 -5
  369. package/src/loginrefresh/supervisor.ts +25 -2
  370. package/src/npmverbs.ts +55 -13
  371. package/src/onboard/choices.ts +40 -4
  372. package/src/onboard/engine.ts +70 -421
  373. package/src/onboard/pipin.ts +31 -0
  374. package/src/onboard/stepforward.ts +61 -0
  375. package/src/onboard/steps/appslug.ts +4 -1
  376. package/src/onboard/steps/bringup.ts +3 -2
  377. package/src/onboard/steps/compose.ts +31 -0
  378. package/src/onboard/steps/configfill.ts +144 -40
  379. package/src/onboard/steps/githubaccount.ts +716 -0
  380. package/src/onboard/steps/githubapp.ts +92 -8
  381. package/src/onboard/steps/golive.ts +2 -0
  382. package/src/onboard/steps/index.ts +11 -0
  383. package/src/onboard/steps/ingress.ts +98 -31
  384. package/src/onboard/steps/llmauth.ts +114 -29
  385. package/src/onboard/steps/loginshare.ts +258 -0
  386. package/src/onboard/steps/memory.ts +76 -3
  387. package/src/onboard/steps/proof.ts +473 -55
  388. package/src/onboard/steps/repoconfig.ts +85 -0
  389. package/src/onboard/steps/topology.ts +7 -6
  390. package/src/onboard/steps/transport.ts +15 -0
  391. package/src/onboard/steps/tuiroute.ts +119 -0
  392. package/src/onboard/steps/verifyup.ts +20 -1
  393. package/src/onboard/toolnames.ts +34 -0
  394. package/src/operatorwrite.ts +25 -0
  395. package/src/outcomes.ts +8 -1
  396. package/src/piagentdir.ts +12 -0
  397. package/src/pilogin.ts +32 -16
  398. package/src/posting-journal.ts +6 -1
  399. package/src/posting-outbox.ts +10 -2
  400. package/src/posting-receipt.ts +17 -0
  401. package/src/qcrbin.ts +16 -11
  402. package/src/recheck.ts +2 -1
  403. package/src/reconcile.ts +29 -3
  404. package/src/reviewargs.ts +119 -0
  405. package/src/reviewcli.ts +6 -167
  406. package/src/reviewdetach.ts +107 -13
  407. package/src/reviewhistory.ts +20 -6
  408. package/src/reviewnow.ts +76 -0
  409. package/src/scancli.ts +75 -826
  410. package/src/selfimprove.ts +90 -0
  411. package/src/setup/adapters.ts +13 -221
  412. package/src/setup/caserunner.ts +34 -273
  413. package/src/setup/engine.ts +62 -496
  414. package/src/setup/facts.ts +3 -627
  415. package/src/setup/findings.ts +3 -1264
  416. package/src/setup/presentation.ts +3 -18
  417. package/src/setup/scan.ts +3 -1033
  418. package/src/setup/scanbuild.ts +20 -114
  419. package/src/setup/scanlease.ts +3 -297
  420. package/src/setup/scanreport.ts +3 -373
  421. package/src/setup/scanrun.ts +3 -2268
  422. package/src/setup/scantree.ts +3 -259
  423. package/src/setup/stage2request.ts +3 -347
  424. package/src/setup/unitcut.ts +3 -523
  425. package/src/state.ts +43 -0
  426. package/src/statemachine.ts +4 -1
  427. package/src/takeover.ts +5 -0
  428. package/src/takeoverpi.ts +16 -2
  429. package/src/tui/app.ts +47 -0
  430. package/src/tui/board.ts +111 -14
  431. package/src/tui/cmdbar.ts +4 -1
  432. package/src/tui/companion.ts +80 -11
  433. package/src/tui/connect.ts +7 -1
  434. package/src/tui/deploytab.ts +2 -2
  435. package/src/tui/filters.ts +7 -3
  436. package/src/tui/ghread.ts +74 -7
  437. package/src/tui/index.ts +117 -23
  438. package/src/tui/memforward.ts +52 -3
  439. package/src/tui/memory.ts +3 -15
  440. package/src/tui/memoryurl.ts +22 -0
  441. package/src/tui/model.ts +36 -2
  442. package/src/tui/prpause.ts +11 -2
  443. package/src/tui/remote.ts +9 -1
  444. package/src/tui/route.ts +173 -0
  445. package/src/tui/setupstate.ts +56 -0
  446. package/src/tui/sshtriage.ts +127 -6
  447. package/src/tui/theme.ts +2 -1
  448. package/src/tui/unwedge.ts +2 -14
  449. package/src/verdicts.ts +23 -5
  450. package/src/version.ts +1 -1
  451. package/src/webhook.ts +10 -1
  452. package/src/wire.ts +42 -9
  453. package/src/workerworld.ts +16 -2
  454. package/dist/src/live/projection.js +0 -450
  455. package/dist/src/live/projection.js.map +0 -1
  456. package/dist/src/live/read.js +0 -60
  457. package/dist/src/live/read.js.map +0 -1
  458. package/dist/src/onboard/launch.js +0 -83
  459. package/dist/src/onboard/launch.js.map +0 -1
  460. package/dist/src/setup/ledger.js +0 -207
  461. package/dist/src/setup/ledger.js.map +0 -1
  462. package/dist/src/setup/stage2.js +0 -617
  463. package/dist/src/setup/stage2.js.map +0 -1
  464. package/dist/src/setup/textsniff.js +0 -89
  465. package/dist/src/setup/textsniff.js.map +0 -1
  466. package/src/live/projection.ts +0 -491
  467. package/src/live/read.ts +0 -86
  468. package/src/onboard/launch.ts +0 -115
  469. package/src/setup/ledger.ts +0 -324
  470. package/src/setup/stage2.ts +0 -926
  471. package/src/setup/textsniff.ts +0 -95
@@ -18,11 +18,13 @@
18
18
  // PiSessionManager that still exists serves what has not moved yet (the overseer, for now)
19
19
  // and lends its path helpers and environment, which is what keeps a worker's session the same
20
20
  // session a tmux round saw.
21
+ import { isPersonMode } from "@quickchatai/pi-quickreview/src/identity.js";
21
22
  import { mkdirSync, readFileSync } from "node:fs";
22
23
  import { join } from "node:path";
23
24
  import { AnswerHost, answerCapsOf } from "./answerworker.js";
24
25
  import { DebugRoundManager } from "./debuground.js";
25
26
  import { identityVars } from "@quickchatai/pi-quickreview/src/include.js";
27
+ import { reviewProviders } from "@quickchatai/pi-quickreview/src/modelroute.js";
26
28
  import { CapabilityStore, LaunchFiles, capsDirOf, socketPathOf, runDirOf, } from "./ipc/capability.js";
27
29
  import { IpcServer } from "./ipc/server.js";
28
30
  import { PostingJournal } from "./posting-journal.js";
@@ -122,6 +124,8 @@ export function buildWorkerWorld(o) {
122
124
  root,
123
125
  cwd: root,
124
126
  agent_dir: o.agentDir,
127
+ ...(o.loginDir !== undefined && o.loginDir !== o.agentDir ? { login_dir: o.loginDir } : {}),
128
+ providers: reviewProviders(cfg),
125
129
  session_dir: sessions.sessionDir(row.session),
126
130
  system_prompt_file: sessions.writeSystemPrompt(row.session, prompt),
127
131
  model: cfg.models.conversation,
@@ -138,6 +142,7 @@ export function buildWorkerWorld(o) {
138
142
  const journal = new PostingJournal({
139
143
  dir: join(stateDir, "posting-receipts"),
140
144
  repo: cfg.github.repo,
145
+ personMode: isPersonMode(cfg.github),
141
146
  });
142
147
  // The takeover and debug managers are built before the supervisor (it takes their gates)
143
148
  // and need the supervisor's rows through it: the lazy references below close that loop.
@@ -164,6 +169,7 @@ export function buildWorkerWorld(o) {
164
169
  plan: (pr) => takeoverPlanFor({
165
170
  root,
166
171
  agentDir: o.agentDir,
172
+ ...(o.loginDir !== undefined ? { loginDir: o.loginDir } : {}),
167
173
  sessionsRoot: sessions.sessionsRoot(),
168
174
  model: cfg.models.conversation,
169
175
  pr,
@@ -220,7 +226,11 @@ export function buildWorkerWorld(o) {
220
226
  store,
221
227
  journal,
222
228
  cfg,
223
- botLogins: [cfg.github.bot_login, cfg.github.app_slug],
229
+ // Marker-matched (posting-outbox.ts markedReviewsOf), so the person's
230
+ // login alone is safe in person mode: there is no App slug to add.
231
+ botLogins: isPersonMode(cfg.github)
232
+ ? [cfg.github.bot_login]
233
+ : [cfg.github.bot_login, cfg.github.app_slug],
224
234
  roundOf: commandRoundOf(store, headOf),
225
235
  log,
226
236
  },
@@ -1 +1 @@
1
- {"version":3,"file":"workerworld.js","sourceRoot":"","sources":["../../src/workerworld.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workerworld.js","sourceRoot":"","sources":["../../src/workerworld.ts"],"names":[],"mappings":"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"}
package/docker/README.md CHANGED
@@ -6,7 +6,7 @@ repo-root `docker-compose.yml` is the whole stack, and the release image
6
6
  carries a copy of it. The Ansible route (`deploy/ansible/`) remains the path
7
7
  for a managed VM; both run the same daemon.
8
8
 
9
- > **`qcr onboard` drives this route for you.** The wizard's **topology** step
9
+ > **The setup wizard's steps drive this route.** The wizard's **topology** step
10
10
  > offers it as one of two first-class answers — "this computer", the zero-server
11
11
  > way to run QuickReview — and then does everything below: it captures your uid,
12
12
  > writes the version pin, `QCR_UID` and `COMPOSE_PROFILES` into the project
@@ -237,6 +237,23 @@ if (defMatch) {
237
237
  cfg.defaultProvider = defMatch[1];
238
238
  cfg.defaultModel = defMatch[2];
239
239
  if (defMatch[3]) cfg.defaultThinkingLevel = defMatch[3];
240
+ // Any OpenAI login serves the model: `openai-codex` (the legacy Codex login)
241
+ // and `openai` (Sign in with ChatGPT, or an API key) carry the same ids. When
242
+ // the named provider has no login and its twin has one, the default is the
243
+ // twin (the rule of packages/pi-plugin/src/modelroute.ts, which the companion's
244
+ // login-route extension applies again inside pi).
245
+ const twin = { "openai-codex": "openai", openai: "openai-codex" }[cfg.defaultProvider];
246
+ if (twin) {
247
+ let logins = {};
248
+ try { logins = JSON.parse(fs.readFileSync(process.env.HOME + "/.pi/agent/auth.json", "utf8")); } catch {}
249
+ const has = (p) => {
250
+ const c = logins[p];
251
+ if (c && c.type === "oauth") return true;
252
+ if (c && c.type === "api_key" && typeof c.key === "string" && c.key.trim() !== "") return true;
253
+ return p === "openai" && (process.env.OPENAI_API_KEY || "").trim() !== "";
254
+ };
255
+ if (!has(cfg.defaultProvider) && has(twin)) cfg.defaultProvider = twin;
256
+ }
240
257
  }
241
258
 
242
259
  fs.writeFileSync(path, JSON.stringify(cfg, null, 2) + "\n");
@@ -302,7 +319,9 @@ fi
302
319
  # OpenAI auth: the OAuth route (`/login` once inside a pi session) persists in
303
320
  # $PI_HOME_DIR/agent/auth.json on the volume and takes precedence over the env
304
321
  # var. OPENAI_API_KEY is honored when the caller passes one.
305
- # Provider prefix under OAuth is `openai-codex/`, not `openai/`.
322
+ # Any OpenAI login works: the shipped model prefix is `openai-codex/` (the
323
+ # legacy Codex login), and a model whose provider has no login runs on the
324
+ # other OpenAI login (`openai/`: Sign in with ChatGPT, or an API key).
306
325
 
307
326
  # Memory health watcher: probes OpenViking through the host-owned
308
327
  # forward and drops an alert file into /alerts when it stops answering (and a
@@ -9,6 +9,9 @@
9
9
  # daemon the always-on bot: dist/src/wire.js under a tmux server.
10
10
  # companion the pi companion container: a tmux server, kept alive.
11
11
  # tui the operator TUI (dist/src/cli.js tui).
12
+ # home the home: the image's pi with the plugin and the home's panel
13
+ # (dist/src/cli.js home), on the login volume's pi home, so its
14
+ # device login lands where every later call reads it.
12
15
  # login pi's own /login, typed for the user (scanbox loginInPi).
13
16
  # mint a GitHub App installation token on stdout (scripts/mint-token.sh).
14
17
  # install the host wrapper, pinned to this image (scripts/install-wrapper.sh):
@@ -62,8 +65,8 @@
62
65
  # the cli mode does. Either way the daemon opens the directories the model's
63
66
  # scripts write to its group (share_tool_dirs) and nothing else: the secrets
64
67
  # mount and pi's login stay unreadable to the tool uid.
65
- # The login and tui modes run no engine and hold no GitHub token: they are
66
- # not separated. pi holds its own OAuth token as the tools' uid, which no
68
+ # The login, home and tui modes run no engine and hold no GitHub token: they
69
+ # are not separated. pi holds its own OAuth token as the tools' uid, which no
67
70
  # split hides from the tools it runs; the split protects the GitHub token.
68
71
  #
69
72
  # The login volume outlives every uid. `login` runs as the caller and
@@ -105,7 +108,7 @@ LOGIN_GID="${QCR_LOGIN_GID:-4747}"
105
108
  mode=cli
106
109
  if [ "$#" -gt 0 ]; then
107
110
  case "$1" in
108
- install | mint | cli | daemon | worker | tui | companion | login)
111
+ install | mint | cli | daemon | worker | tui | companion | login | home)
109
112
  mode="$1"
110
113
  shift
111
114
  ;;
@@ -503,6 +506,23 @@ if (defMatch) {
503
506
  cfg.defaultProvider = defMatch[1];
504
507
  cfg.defaultModel = defMatch[2];
505
508
  if (defMatch[3]) cfg.defaultThinkingLevel = defMatch[3];
509
+ // Any OpenAI login serves the model: `openai-codex` (the legacy Codex login)
510
+ // and `openai` (Sign in with ChatGPT, or an API key) carry the same ids. When
511
+ // the named provider has no login and its twin has one, the default is the
512
+ // twin (the rule of packages/pi-plugin/src/modelroute.ts, which the
513
+ // companion's login-route extension applies again inside pi).
514
+ const twin = { "openai-codex": "openai", openai: "openai-codex" }[cfg.defaultProvider];
515
+ if (twin) {
516
+ let logins = {};
517
+ try { logins = JSON.parse(fs.readFileSync(path.join(home, ".pi", "agent", "auth.json"), "utf8")); } catch {}
518
+ const has = (p) => {
519
+ const c = logins[p];
520
+ if (c && c.type === "oauth") return true;
521
+ if (c && c.type === "api_key" && typeof c.key === "string" && c.key.trim() !== "") return true;
522
+ return p === "openai" && (process.env.OPENAI_API_KEY || "").trim() !== "";
523
+ };
524
+ if (!has(cfg.defaultProvider) && has(twin)) cfg.defaultProvider = twin;
525
+ }
506
526
  }
507
527
  fs.writeFileSync(file, JSON.stringify(cfg, null, 2) + "\n");
508
528
  console.log("pi skills registered: " + (cfg.skills.join(", ") || "none"));
@@ -648,9 +668,22 @@ mode_login() {
648
668
  exit "$rc"
649
669
  }
650
670
 
671
+ mode_home() {
672
+ # The image's one pi, as a bare `qcr` opens it (src/home/launch.ts), on
673
+ # pi's agent dir in this HOME: the login volume. Not exec: a device login
674
+ # made in the home is shared with the login group once pi has written it,
675
+ # however the session ended, as the login mode shares its own.
676
+ local rc=0
677
+ node "$APP/dist/src/cli.js" home "$@" || rc=$?
678
+ share_login
679
+ exit "$rc"
680
+ }
681
+
651
682
  # The handover between pi's /login and the bot container's login refresher
652
- #. The refresher holds an exclusive flock on <agent>/auth.json.lock for
653
- # its whole life: when that lock is held, a refresher is running, and a login
683
+ #. The refresher holds an exclusive flock on <agent>/loginrefresh.lock
684
+ # for its whole life (never <agent>/auth.json.lock: that is pi's own
685
+ # proper-lockfile path, a directory, and a plain file there makes every pi fail
686
+ # with ENOTDIR - so a leftover file from an earlier build is removed first): when that lock is held, a refresher is running, and a login
654
687
  # rewriting auth.json beside it would race its refresh. So the login asks it to
655
688
  # pause - writes <agent>/auth.json.pause - and waits for `"paused": true` in
656
689
  # its status file. A paused refresher neither refreshes nor writes, but KEEPS
@@ -661,11 +694,25 @@ mode_login() {
661
694
  LOGIN_PAUSE_FILE=""
662
695
  login_agent_dir() { printf '%s\n' "${PI_CODING_AGENT_DIR:-$HOME/.pi/agent}"; }
663
696
 
697
+ # Earlier builds' refresher locked a plain FILE at <agent>/auth.json.lock, pi's
698
+ # proper-lockfile path; pi cannot start while it is there. Remove it when it is a
699
+ # regular file (a directory is pi's own live lock) that no refresher of such a
700
+ # build still holds.
701
+ login_clear_legacy_lock() {
702
+ local legacy="$1/auth.json.lock"
703
+ [ -f "$legacy" ] && [ ! -L "$legacy" ] || return 0
704
+ command -v flock >/dev/null 2>&1 || return 0
705
+ flock -n "$legacy" true 2>/dev/null || return 0
706
+ rm -f "$legacy" && say "login: removed the old lock file $legacy (pi's own lock path)"
707
+ return 0
708
+ }
709
+
664
710
  login_handover_begin() {
665
711
  local dir lock status rc=0 waited=0 max
666
712
  dir="$(login_agent_dir)"
667
- lock="$dir/auth.json.lock"
713
+ lock="$dir/loginrefresh.lock"
668
714
  status="$dir/loginrefresh.status.json"
715
+ login_clear_legacy_lock "$dir"
669
716
  [ -e "$lock" ] || return 0
670
717
  if ! command -v flock >/dev/null 2>&1; then
671
718
  say "WARNING: flock is not installed - cannot tell whether a login refresher holds $lock"
@@ -769,6 +816,10 @@ case "$mode" in
769
816
  tui_identity
770
817
  exec node "$APP/dist/src/cli.js" tui "$@"
771
818
  ;;
819
+ home)
820
+ QCR_PI_TRUST_DIR="$APP" provision_pi_settings >&2
821
+ mode_home "$@"
822
+ ;;
772
823
  login)
773
824
  QCR_PI_TRUST_DIR="$APP" provision_pi_settings >&2
774
825
  mode_login "$@"
@@ -6,7 +6,7 @@
6
6
  # Nothing here builds the app or needs a checkout: `daemon` and `memory` are
7
7
  # pulled, `QCR_VERSION` pins them, and the project directory holds this file,
8
8
  # a .env and (for a tunnel) docker/tunnel/ -- all of which the image carries and
9
- # the onboarding wizard hands you the command to extract (qcr onboard, step 70):
9
+ # the onboarding wizard hands you the command to extract (its step 70):
10
10
  #
11
11
  # docker run --rm --entrypoint tar ghcr.io/quickchatai/quickreview:<version> \
12
12
  # -C /opt/qcr -cf - docker-compose.yml docker/tunnel | tar -xf -
@@ -170,6 +170,16 @@ services:
170
170
  # pi's home: OAuth tokens (auth.json), session JSONLs, models.json --
171
171
  # must survive container recreates (sticky sessions + /login tokens).
172
172
  - qcr-pihome:/home/qcr/.pi
173
+ # The OpenAI login, on a single box: the host pi home's agent dir, the
174
+ # one the home signed in to, so the box has one login (FT-0658). The
175
+ # home's switch-on writes QCR_PI_LOGIN_DIR into the project .env and
176
+ # turns [login_refresh] on: the daemon's refresher then owns that
177
+ # auth.json while auto-review runs, and the home's pi takes it back when
178
+ # auto-review stops (src/home/loginowner.ts). Only the login is read
179
+ # there; pi's settings stay in the volume above. Unset (the VM, a
180
+ # wizard-made stack), a volume of its own nobody reads, and the daemon
181
+ # keeps its login in pi's home above.
182
+ - ${QCR_PI_LOGIN_DIR:-qcr-login}:/opt/qcr/login
173
183
  # Everything else the daemon writes under the read-only app root, the
174
184
  # same set the VM's run spec mounts (deploy/qcr-update.sh; the two are
175
185
  # held equal by tests/compose-stack.test.ts): the PR worktrees, the
@@ -200,6 +210,9 @@ services:
200
210
  QCR_SECRETS_MOUNT: /opt/quickreview/secrets
201
211
  # The uid the model's tools run as: never QCR_UID.
202
212
  QCR_TOOLS_AS: ${QCR_TOOLS_AS:-65534}
213
+ # Where the login is (src/loginrefresh/supervisor.ts loginDirOf): the
214
+ # mount above when the host's login is shared, else empty (pi's home).
215
+ QCR_LOGIN_DIR: ${QCR_PI_LOGIN_DIR:+/opt/qcr/login}
203
216
 
204
217
  # ---- the memory sidecar --------------------------------------------------
205
218
  # OpenViking, its venv, llama-cpp-python and the pinned GGUF in a container
@@ -341,6 +354,8 @@ volumes:
341
354
  qcr-verdict:
342
355
  qcr-sessions-home:
343
356
  qcr-base-clone:
357
+ # The login mount's stand-in while no host login is shared (see the daemon).
358
+ qcr-login:
344
359
  # The memory store, the sidecar's alone.
345
360
  qcr-memory:
346
361
  # Shared by the daemon (read) and a tunnel sidecar (write): the hostname
@@ -0,0 +1,14 @@
1
+ // The env shim for the home's extension: the one place the process's env
2
+ // becomes its options (extensions/home.ts). A bare `qcr` loads it by path
3
+ // (src/home/launch.ts), with the model and tool set it launched on in the env.
4
+ import { VERSION, type ExtensionAPI } from "@earendil-works/pi-coding-agent";
5
+ import { homeOptionsFromEnv } from "../../src/home/adapters.js";
6
+ import { homeSetupFromEnv } from "../../src/home/setupadapters.js";
7
+ import { createHome } from "../home.js";
8
+
9
+ export default function activate(pi: ExtensionAPI): void {
10
+ void createHome({
11
+ ...homeOptionsFromEnv(process.env),
12
+ setup: homeSetupFromEnv(process.env, VERSION),
13
+ })(pi);
14
+ }
@@ -0,0 +1,10 @@
1
+ // The env shim for the login route (extensions/login-route.ts): the one place
2
+ // the process's env becomes its config. QCR_LOGIN_OPEN=submit opens pi's login
3
+ // menu when no model is usable; anything else leaves `/login` on the input
4
+ // line for one Enter.
5
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
6
+ import { createLoginRoute, loginRouteConfigFromEnv } from "../login-route.js";
7
+
8
+ export default function activate(pi: ExtensionAPI): void {
9
+ void createLoginRoute(loginRouteConfigFromEnv(process.env))(pi);
10
+ }
@@ -0,0 +1,18 @@
1
+ // The env shim for the app's /selfimprove (extensions/selfimprove.ts): the
2
+ // one place the process's env, home and standard output become its config.
3
+ // `qcr pi` loads this file beside the plugin.
4
+ import { homedir } from "node:os";
5
+ import { VERSION, type ExtensionAPI } from "@earendil-works/pi-coding-agent";
6
+ import { nodeRunner } from "@quickchatai/pi-quickreview/src/plugin/runner.js";
7
+ import { createSelfImprove } from "../selfimprove.js";
8
+
9
+ export default function activate(pi: ExtensionAPI): void {
10
+ const env = process.env;
11
+ createSelfImprove({
12
+ env,
13
+ home: (env["HOME"] ?? "").trim() || homedir(),
14
+ runner: nodeRunner(env),
15
+ print: (text) => void process.stdout.write(text.endsWith("\n") ? text : `${text}\n`),
16
+ piVersion: VERSION,
17
+ })(pi);
18
+ }