@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spend.js","sourceRoot":"","sources":["../../../src/home/spend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,209 @@
1
+ import { known } from "./ports.js";
2
+ import { runningWarning } from "./autoreview.js";
3
+ /** The answers the person picks from, each its own words. */
4
+ export const CHOICE = {
5
+ cancel: "Cancel",
6
+ turnOn: "Turn on auto-review",
7
+ here: "This machine",
8
+ elsewhere: "Another server, over ssh (advanced)",
9
+ notNow: "Not now",
10
+ memoryOn: "Turn on memory",
11
+ keepOn: "Keep it on",
12
+ switchOff: "Switch it off",
13
+ goLive: "Go live",
14
+ proofRound: "Review it now, in dry-run",
15
+ };
16
+ const NEEDS_PERSON = "this switch asks the person in the home, and no one can answer here; nothing changed";
17
+ /** What auto-review picks up: the trigger label (unknown when it can't be
18
+ * read) or a review request. */
19
+ export function pickUpPhrase(trigger) {
20
+ return trigger === null
21
+ ? "pull requests with the trigger label (which one is unknown) or a review request"
22
+ : `pull requests labelled "${trigger}" or with a review request`;
23
+ }
24
+ /** The same, as a sentence. */
25
+ export function pickUpLine(trigger) {
26
+ return `It picks up ${pickUpPhrase(trigger)}.`;
27
+ }
28
+ /** Is auto-review, as last read, something to switch off? */
29
+ function isOn(s) {
30
+ return s.kind === "known" && s.value.state !== "off";
31
+ }
32
+ export async function switchAutoReview(host, adapters, ask) {
33
+ const control = adapters.autoReview.control;
34
+ if (!control)
35
+ return "auto-review can't be switched from this home";
36
+ if (!ask)
37
+ return NEEDS_PERSON;
38
+ return isOn(host.autoReview())
39
+ ? switchOff(host, control, ask)
40
+ : switchOn(host, adapters, control, ask);
41
+ }
42
+ async function switchOn(host, adapters, control, ask) {
43
+ // 1. the machine checks, before anything is asked
44
+ host.say("Checking this machine: Docker, disk, ports…");
45
+ const checks = await control.machineChecks();
46
+ if (!checks.ok) {
47
+ host.say(`Auto-review can't run on this machine yet: ${checks.detail}`, "warn");
48
+ return `machine checks failed: ${checks.detail}`;
49
+ }
50
+ // 2. where it runs
51
+ const where = await ask.select("Where should auto-review run?", [
52
+ `${CHOICE.here} — ${checks.detail}`,
53
+ CHOICE.elsewhere,
54
+ ]);
55
+ if (where === undefined)
56
+ return cancelled(host);
57
+ if (where === CHOICE.elsewhere) {
58
+ host.say('Auto-review on another server is set up in the advanced steps: Advanced (alt+x), "Auto-review on another server, over ssh". Nothing changed here.');
59
+ return "another server: the advanced steps set it up";
60
+ }
61
+ // 3. the memory offer, when memory is off
62
+ let memory = null;
63
+ const mem = host.memory();
64
+ const memoryControl = adapters.memory.control;
65
+ if (memoryControl && mem.kind === "known" && mem.value === "off") {
66
+ const m = await ask.select(`Turn on memory too? Reviews learn this repository. It uses ${memoryControl.ramCost()}.`, [CHOICE.notNow, CHOICE.memoryOn]);
67
+ if (m === undefined)
68
+ return cancelled(host);
69
+ memory = m === CHOICE.memoryOn;
70
+ }
71
+ // 4. the one confirm: it comes up in dry-run unless the config is live
72
+ const dry = await control.dryRun();
73
+ const repo = host.repo() ?? "your repository";
74
+ const picks = pickUpPhrase(host.trigger());
75
+ const posture = dry.kind === "unknown"
76
+ ? `Auto-review reviews ${picks} in ${repo}. Whether it posts to GitHub is unknown: ${dry.why}.`
77
+ : !dry.value
78
+ ? `Auto-review reviews ${picks} in ${repo}, and posts each review to GitHub.`
79
+ : `Auto-review starts in dry-run: it reviews ${picks} in ${repo}, and records what it would post instead of posting it. Going live is its own step later: one review you read, then one more confirm.`;
80
+ const go = await ask.select(`${posture} It keeps running, across reboots, until you switch it off.`, [CHOICE.cancel, CHOICE.turnOn]);
81
+ if (go !== CHOICE.turnOn)
82
+ return cancelled(host);
83
+ // the steps
84
+ host.hold("autoReview", known({ state: "starting" }));
85
+ if (memory === true)
86
+ host.hold("memory", known("starting"));
87
+ host.say("Starting auto-review…");
88
+ let outcome;
89
+ try {
90
+ outcome = await control.switchOn({ memory, confirmed: true }, (l) => host.say(l));
91
+ }
92
+ catch (err) {
93
+ outcome = { ok: false, live: null, detail: String(err), steps: [] };
94
+ }
95
+ finally {
96
+ host.release("autoReview");
97
+ host.release("memory");
98
+ }
99
+ await host.refresh();
100
+ if (outcome.ok)
101
+ host.say(`${outcome.detail} ${pickUpLine(host.trigger())}`, "ok");
102
+ else
103
+ host.say(`Auto-review did not start: ${outcome.detail}`, "warn");
104
+ return outcome.ok
105
+ ? `${outcome.detail}\n${outcome.steps.join("\n")}`
106
+ : `auto-review did not start: ${outcome.detail}\n${outcome.steps.join("\n")}`;
107
+ }
108
+ async function switchOff(host, control, ask) {
109
+ const a = host.autoReview();
110
+ const dry = a.kind === "known" && a.value.state === "on-dry";
111
+ const warning = runningWarning(await control.running());
112
+ const answer = await ask.select(`Switch auto-review off? ${warning} All its data is kept, so switching it on again is quick.`, [CHOICE.keepOn, ...(dry ? [CHOICE.goLive] : []), CHOICE.switchOff]);
113
+ if (answer === CHOICE.goLive)
114
+ return goLive(host, control, ask);
115
+ if (answer !== CHOICE.switchOff)
116
+ return cancelled(host);
117
+ const r = await control.switchOff();
118
+ await host.refresh();
119
+ if (!r.ok) {
120
+ host.say(`Couldn't switch auto-review off: ${r.detail}`, "warn");
121
+ return `couldn't switch auto-review off: ${r.detail}`;
122
+ }
123
+ host.say("Auto-review is off. Its data is kept, and memory is as it was.", "ok");
124
+ return `auto-review is off (${r.detail}). ${warning}`;
125
+ }
126
+ /**
127
+ * Go live, from dry-run: a proof round first, then one more confirm, then
128
+ * the go-live step (which re-checks the proof against the daemon's own
129
+ * state). The proof round is the wizard's: the daemon reviews one real pull
130
+ * request now, in dry-run, and the person reads what it would have posted.
131
+ * A proof already recorded stands; the go-live step judges it.
132
+ */
133
+ export async function goLive(host, control, ask) {
134
+ let proven = (await control.proof())?.pr ?? null;
135
+ if (proven === null) {
136
+ const pr = host.selected();
137
+ if (pr === null) {
138
+ const said = "Going live needs a proof round first: one pull request reviewed in dry-run, which you read before anything posts. Select a pull request, then choose Go live again.";
139
+ host.say(said, "warn");
140
+ return "not live: no proof round yet, and no pull request is selected";
141
+ }
142
+ const run = await ask.select(`Going live needs a proof round first: auto-review reviews #${pr} now, in dry-run, and shows you what it would post. Nothing is posted.`, [CHOICE.cancel, CHOICE.proofRound]);
143
+ if (run !== CHOICE.proofRound)
144
+ return cancelled(host);
145
+ host.say(`Reviewing #${pr} in dry-run: the proof round…`);
146
+ let r;
147
+ try {
148
+ r = await control.proofRound(pr, (l) => host.say(l));
149
+ }
150
+ catch (err) {
151
+ r = { ok: false, detail: String(err) };
152
+ }
153
+ if (!r.ok) {
154
+ host.say(`The proof round did not finish: ${r.detail}`, "warn");
155
+ return `not live: the proof round did not finish: ${r.detail}`;
156
+ }
157
+ host.say(r.detail, "ok");
158
+ proven = pr;
159
+ }
160
+ const go = await ask.select(`Go live? You have read the review of #${proven}. Auto-review then posts each review to GitHub under your name.`, [CHOICE.cancel, CHOICE.goLive]);
161
+ if (go !== CHOICE.goLive)
162
+ return cancelled(host);
163
+ const r = await control.goLive({ confirmed: true });
164
+ await host.refresh();
165
+ host.say(r.ok ? r.detail : `Not live: ${r.detail}`, r.ok ? "ok" : "warn");
166
+ return r.ok ? r.detail : `not live: ${r.detail}`;
167
+ }
168
+ function cancelled(host) {
169
+ host.say("Nothing changed.");
170
+ return "cancelled: nothing changed";
171
+ }
172
+ export async function switchMemory(host, adapters, ask) {
173
+ const control = adapters.memory.control;
174
+ if (!control)
175
+ return "memory can't be switched from this home";
176
+ if (!ask)
177
+ return NEEDS_PERSON;
178
+ const s = host.memory();
179
+ if (s.kind === "known" && s.value !== "off") {
180
+ const a = await ask.select("Switch memory off? What it learned is kept.", [
181
+ CHOICE.keepOn,
182
+ CHOICE.switchOff,
183
+ ]);
184
+ if (a !== CHOICE.switchOff)
185
+ return cancelled(host);
186
+ const r = await control.switchOff();
187
+ await host.refresh();
188
+ host.say(r.ok ? r.detail : `Couldn't switch memory off: ${r.detail}`, r.ok ? "ok" : "warn");
189
+ return r.ok ? "memory is off" : `couldn't switch memory off: ${r.detail}`;
190
+ }
191
+ const a = await ask.select(`Turn on memory? Reviews remember this repository's conventions and past findings. It uses ${control.ramCost()}.`, [CHOICE.notNow, CHOICE.memoryOn]);
192
+ if (a !== CHOICE.memoryOn)
193
+ return cancelled(host);
194
+ host.hold("memory", known("starting"));
195
+ let r;
196
+ try {
197
+ r = await control.switchOn((l) => host.say(l));
198
+ }
199
+ catch (err) {
200
+ r = { ok: false, detail: String(err) };
201
+ }
202
+ finally {
203
+ host.release("memory");
204
+ }
205
+ await host.refresh();
206
+ host.say(r.ok ? r.detail : `Memory did not start: ${r.detail}`, r.ok ? "ok" : "warn");
207
+ return r.ok ? "memory is on" : `memory did not start: ${r.detail}`;
208
+ }
209
+ //# sourceMappingURL=switches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switches.js","sourceRoot":"","sources":["../../../src/home/switches.ts"],"names":[],"mappings":"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"}