@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
@@ -0,0 +1,349 @@
1
+ // The home's real ports (src/home/ports.ts), and the one function that turns
2
+ // a process's environment into the home's options: the env shim
3
+ // (extensions/cli/home.ts) calls `homeOptionsFromEnv(process.env)`.
4
+ //
5
+ // pi login the auth file of the pi home the chat runs in: pi's own
6
+ // agent dir ($PI_CODING_AGENT_DIR, else ~/.pi/agent), read the
7
+ // way pi reads it, so the login line and the chat cannot
8
+ // disagree. Provider ids only, never a token.
9
+ // GitHub `gh`: the account, the repository's open PRs, the browser.
10
+ // repository `[github] repo` of the install's config.toml, read again on
11
+ // every refresh.
12
+ // clock Date.now.
13
+ // reviews the app's detached review runs, its review state and the
14
+ // daemon's status (src/home/reviews.ts), as the person: their
15
+ // environment, so the run uses their own pi login.
16
+ //
17
+ // auto-review, memory
18
+ // this machine's compose stack (src/home/autoreview.ts,
19
+ // src/home/memory.ts): the containers, the daemon's own
20
+ // status.json, and the switches over the wizard's steps.
21
+ // login owner
22
+ // the same pi agent dir: whether auto-review's refresher holds
23
+ // the login (its lock beside auth.json, shared into the stack)
24
+ // and whether its record says the login expired
25
+ // (src/home/loginowner.ts).
26
+ //
27
+ // spend the app's detached runs' costs and the daemon's recorded
28
+ // costs (src/home/spend.ts): unknown when either can't be read.
29
+ //
30
+ // The stack these drive is a compose project with the wizard's state under it
31
+ // (`homeStackRoot`): a checkout or the image is its own, an app installed by
32
+ // a package manager gets one in its state home, never inside the package.
33
+ import { execFile } from "node:child_process";
34
+ import { cpSync, existsSync, mkdirSync, readFileSync } from "node:fs";
35
+ import { join } from "node:path";
36
+ import { parse } from "smol-toml";
37
+ import { loginSummary } from "@quickchatai/pi-quickreview/src/engine/auth.js";
38
+ import { assetRoot } from "@quickchatai/pi-quickreview/src/assetroot.js";
39
+ import { postSavedReview } from "@quickchatai/pi-quickreview/src/savedpost.js";
40
+ import { HOME_DEFAULTS, sandboxRoot } from "../config.js";
41
+ import { loadOneShotConfig, locateConfig, stackRoot, stateHome } from "../homes.js";
42
+ import { openStepMemoryForward } from "../onboard/stepforward.js";
43
+ import { composeAutoReview, serviceState } from "./autoreview.js";
44
+ import { hostLoginOwner } from "./loginowner.js";
45
+ import { DAEMON_SERVICE } from "../onboard/steps/compose.js";
46
+ import { daemonSnapshot } from "./daemonstatus.js";
47
+ import { composeMemory } from "./memory.js";
48
+ import { realSpendPort } from "./spend.js";
49
+ import { composeAdvanced } from "./advanced.js";
50
+ import { checkoutTune } from "./tune.js";
51
+ import { stepRunner } from "./switchon.js";
52
+ import { piAgentDir } from "../piagentdir.js";
53
+ import { qcrChild, realDetachSeams, reviewsPort } from "./reviews.js";
54
+ import { known, unknown, } from "./ports.js";
55
+ /** The launch hands the child pi its model and tool set in these. */
56
+ export const HOME_MODEL_ENV = "QCR_HOME_MODEL";
57
+ export const HOME_TOOLS_ENV = "QCR_HOME_TOOLS";
58
+ export const execRunner = {
59
+ run: (cmd, args) => new Promise((resolve) => {
60
+ execFile(cmd, [...args], { timeout: 30_000, maxBuffer: 16 << 20 }, (err, stdout, stderr) => {
61
+ const e = err;
62
+ resolve({
63
+ code: e === null ? 0 : typeof e.code === "number" ? e.code : 1,
64
+ stdout: String(stdout),
65
+ stderr: e && !stderr ? String(e.message) : String(stderr),
66
+ ...(e?.code === "ENOENT" ? { missing: true } : {}),
67
+ });
68
+ });
69
+ }),
70
+ };
71
+ const firstLine = (s) => s.trim().split("\n")[0]?.trim() || "no output";
72
+ const isMissingFile = (err) => err?.code === "ENOENT";
73
+ const message = (err) => (err instanceof Error ? err.message : String(err));
74
+ /** The providers pi holds a login for in `agentDir`. No auth file is no
75
+ * login; a file that cannot be read or parsed is unknown. */
76
+ export function piLoginPort(agentDir, read = (p) => readFileSync(p, "utf8")) {
77
+ return {
78
+ providers: async () => {
79
+ const path = join(agentDir, "auth.json");
80
+ let raw;
81
+ try {
82
+ raw = read(path);
83
+ }
84
+ catch (err) {
85
+ return isMissingFile(err) ? known([]) : unknown(`can't read ${path}: ${message(err)}`);
86
+ }
87
+ try {
88
+ return known(Object.keys(loginSummary(raw)));
89
+ }
90
+ catch (err) {
91
+ return unknown(`can't parse ${path}: ${message(err)}`);
92
+ }
93
+ },
94
+ };
95
+ }
96
+ /** gh's words for "you are not signed in". */
97
+ const SIGNED_OUT = /gh auth login|not logged in|authentication required|HTTP 401|bad credentials/i;
98
+ const PR_FIELDS = "number,title,author,updatedAt,isDraft,additions,deletions,changedFiles,headRefName,headRefOid";
99
+ export function githubPort(runner) {
100
+ const why = (r) => r.missing ? "gh is not installed" : `gh failed: ${firstLine(r.stderr)}`;
101
+ return {
102
+ user: async () => {
103
+ const r = await runner.run("gh", ["api", "user", "--jq", ".login"]);
104
+ if (r.code === 0 && r.stdout.trim() !== "")
105
+ return known(r.stdout.trim());
106
+ if (!r.missing && SIGNED_OUT.test(r.stderr))
107
+ return known(null);
108
+ return unknown(why(r));
109
+ },
110
+ openPulls: async (repo) => {
111
+ const r = await runner.run("gh", [
112
+ "pr",
113
+ "list",
114
+ "-R",
115
+ repo,
116
+ "--state",
117
+ "open",
118
+ "--limit",
119
+ "200",
120
+ "--json",
121
+ PR_FIELDS,
122
+ ]);
123
+ if (r.code !== 0)
124
+ return unknown(why(r));
125
+ try {
126
+ return known(parsePulls(r.stdout));
127
+ }
128
+ catch (err) {
129
+ return unknown(`gh's answer is not a pull request list: ${message(err)}`);
130
+ }
131
+ },
132
+ openInBrowser: async (repo, pr) => {
133
+ const r = await runner.run("gh", ["pr", "view", String(pr), "-R", repo, "--web"]);
134
+ return r.code === 0 ? { ok: true } : { ok: false, why: why(r) };
135
+ },
136
+ };
137
+ }
138
+ /** `gh pr list --json` rows as OpenPulls; throws on a row of the wrong shape. */
139
+ export function parsePulls(json) {
140
+ const rows = JSON.parse(json);
141
+ if (!Array.isArray(rows))
142
+ throw new Error("not an array");
143
+ return rows.map((r) => {
144
+ if (typeof r["number"] !== "number" || typeof r["title"] !== "string")
145
+ throw new Error("a row without a number or title");
146
+ const author = r["author"];
147
+ const num = (k) => (typeof r[k] === "number" ? r[k] : 0);
148
+ return {
149
+ number: r["number"],
150
+ title: r["title"],
151
+ author: typeof author?.login === "string" ? author.login : "ghost",
152
+ updatedAt: typeof r["updatedAt"] === "string" ? r["updatedAt"] : "",
153
+ isDraft: r["isDraft"] === true,
154
+ additions: num("additions"),
155
+ deletions: num("deletions"),
156
+ changedFiles: num("changedFiles"),
157
+ headRefName: typeof r["headRefName"] === "string" ? r["headRefName"] : "",
158
+ headSha: typeof r["headRefOid"] === "string" ? r["headRefOid"] : "",
159
+ };
160
+ });
161
+ }
162
+ /** `[github] repo` of the config at `configPath()`, located again on every
163
+ * read. No config file, or an empty repo, is no repository. */
164
+ export function repoPort(configPath, read = (p) => readFileSync(p, "utf8")) {
165
+ return {
166
+ repo: async () => {
167
+ let path;
168
+ let raw;
169
+ try {
170
+ path = configPath();
171
+ raw = read(path);
172
+ }
173
+ catch (err) {
174
+ return isMissingFile(err) ? known(null) : unknown(message(err));
175
+ }
176
+ let repo;
177
+ try {
178
+ repo = parse(raw)["github"]?.["repo"];
179
+ }
180
+ catch (err) {
181
+ return unknown(`${path} is not valid TOML: ${message(err)}`);
182
+ }
183
+ if (repo === undefined || repo === "")
184
+ return known(null);
185
+ return typeof repo === "string" && /^[\w.-]+\/[\w.-]+$/.test(repo.trim())
186
+ ? known(repo.trim())
187
+ : unknown(`${path}: [github] repo is not "owner/name" (${JSON.stringify(repo)})`);
188
+ },
189
+ };
190
+ }
191
+ const NOT_YET = "the home cannot read it yet";
192
+ const notYet = async () => unknown(NOT_YET);
193
+ /** The ports that have no adapter yet: each answers unknown. */
194
+ export const unbuiltPorts = {
195
+ autoReview: { status: notYet },
196
+ memory: { status: notYet },
197
+ spend: { totals: notYet },
198
+ };
199
+ /** The reviewer as the person: the app's own bin and registry, the install's
200
+ * state home and config, in the environment the home runs in; auto-review's
201
+ * rounds from the daemon of the compose stack at `stack.root`. */
202
+ export function realReviewsPort(env, stack) {
203
+ const state = stateHome(env);
204
+ const appRoot = sandboxRoot();
205
+ // the home's own working directory (src/home/launch.ts `homePaths`)
206
+ const cwd = join(state, "home");
207
+ const proc = { execPath: process.execPath, bin: join(appRoot, "bin", "qcr.js"), cwd, env };
208
+ const config = () => loadOneShotConfig({ root: assetRoot(), env }).cfg;
209
+ return reviewsPort({
210
+ registry: join(state, "review", "detached"),
211
+ reportsDir: join(cwd, "reviews"),
212
+ reviewHome: join(state, "review"),
213
+ snapshot: () => daemonSnapshot(stack.runner, stack.root),
214
+ qcr: qcrChild(proc),
215
+ detach: realDetachSeams(proc),
216
+ post: async (file) => {
217
+ const r = await postSavedReview(file, {
218
+ config: config(),
219
+ dryrunDir: join(state, "review", "dryrun"),
220
+ github: { env },
221
+ });
222
+ return { failed: r.failed, line: r.line };
223
+ },
224
+ dryRun: () => config().dry_run,
225
+ now: () => Date.now(),
226
+ });
227
+ }
228
+ /** The wizard's adapters for switch-on's steps, over the app root. */
229
+ export function stepAdapters(root, configPath) {
230
+ return (log) => ({
231
+ fetch: (input, init) => fetch(input, init),
232
+ runner: stepRunner,
233
+ clock: () => new Date(),
234
+ host: {
235
+ nodeVersion: process.version,
236
+ uid: typeof process.getuid === "function" ? process.getuid() : null,
237
+ inContainer: existsSync("/.dockerenv"),
238
+ },
239
+ paths: { stateDir: join(root, "state"), configPath: configPath() },
240
+ log,
241
+ memoryForward: (req) => openStepMemoryForward(req),
242
+ });
243
+ }
244
+ export function realHomeAdapters(o) {
245
+ const repo = repoPort(o.configPath);
246
+ const stack = o.root === undefined
247
+ ? null
248
+ : {
249
+ root: o.root,
250
+ configPath: o.configPath,
251
+ runner: stepRunner,
252
+ stepAdapters: stepAdapters(o.root, o.configPath),
253
+ };
254
+ const daemonRuns = stack
255
+ ? async () => {
256
+ const s = await serviceState(stack.runner, stack.root, DAEMON_SERVICE);
257
+ return s.kind === "known" ? s.value !== "stopped" : null;
258
+ }
259
+ : undefined;
260
+ return {
261
+ login: piLoginPort(o.agentDir),
262
+ loginOwner: hostLoginOwner({
263
+ loginDir: o.agentDir,
264
+ now: () => Date.now(),
265
+ ...(daemonRuns ? { daemonRuns } : {}),
266
+ }),
267
+ github: githubPort(o.runner ?? execRunner),
268
+ repo,
269
+ clock: { now: () => Date.now() },
270
+ reviews: o.reviews,
271
+ ...unbuiltPorts,
272
+ ...(o.spend ? { spend: o.spend } : {}),
273
+ ...(stack
274
+ ? {
275
+ // switch-on shares the home's login with the stack (src/onboard/steps/loginshare.ts)
276
+ autoReview: composeAutoReview({ ...stack, loginDir: o.agentDir, now: () => Date.now() }),
277
+ memory: composeMemory({
278
+ ...stack,
279
+ repo: async () => {
280
+ const r = await repo.repo();
281
+ return r.kind === "known" ? r.value : null;
282
+ },
283
+ }),
284
+ }
285
+ : {}),
286
+ };
287
+ }
288
+ /** What a compose project needs from the app: the stack, the tunnel
289
+ * wrappers' build context, and the config template the steps fill from. */
290
+ export const STACK_FILES = [
291
+ "docker-compose.yml",
292
+ join("docker", "tunnel"),
293
+ "config.example.toml",
294
+ ];
295
+ /** The compose project the home's switches drive: src/homes.ts `stackRoot`,
296
+ * the one rule every surface that reads the stack uses. */
297
+ export function homeStackRoot(env, pkgRoot = sandboxRoot()) {
298
+ return stackRoot(env, pkgRoot);
299
+ }
300
+ /** Give a stack outside the package the package's own STACK_FILES, again on
301
+ * every launch, so an update brings the stack that matches the app. The
302
+ * person's state there (`.env`, `state/`) is never touched. A copy that
303
+ * fails is left to the compose-file check, which says what is missing. */
304
+ export function seedStack(root, pkgRoot) {
305
+ if (root === pkgRoot)
306
+ return;
307
+ for (const f of STACK_FILES) {
308
+ const from = join(pkgRoot, f);
309
+ if (!existsSync(from))
310
+ continue;
311
+ try {
312
+ mkdirSync(root, { recursive: true });
313
+ cpSync(from, join(root, f), { recursive: true, force: true });
314
+ }
315
+ catch {
316
+ // the compose-file check names it
317
+ }
318
+ }
319
+ }
320
+ /** The home's options from a process's environment: the env shim's one call. */
321
+ export function homeOptionsFromEnv(env) {
322
+ const model = (env[HOME_MODEL_ENV] ?? "").trim() || HOME_DEFAULTS.model;
323
+ const tools = env[HOME_TOOLS_ENV] === "full" ? "full" : "reviewer";
324
+ const root = homeStackRoot(env);
325
+ seedStack(root, sandboxRoot());
326
+ const configPath = () => locateConfig({ env }).path;
327
+ return {
328
+ adapters: realHomeAdapters({
329
+ agentDir: piAgentDir(env),
330
+ configPath,
331
+ reviews: realReviewsPort(env, { root, runner: stepRunner }),
332
+ root,
333
+ spend: realSpendPort({
334
+ registry: join(stateHome(env), "review", "detached"),
335
+ root,
336
+ runner: stepRunner,
337
+ }),
338
+ }),
339
+ model,
340
+ tools,
341
+ tune: checkoutTune({ env, root: assetRoot, configPath, runner: stepRunner }),
342
+ advanced: composeAdvanced({
343
+ root,
344
+ env,
345
+ stepAdapters: stepAdapters(root, configPath),
346
+ }),
347
+ };
348
+ }
349
+ //# sourceMappingURL=adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../../src/home/adapters.ts"],"names":[],"mappings":"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"}