@withbuddi/buddi 0.1.0-pre.39 → 0.1.0-pre.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/extension/manifest.json +2 -2
  2. package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
  3. package/node_modules/@buddi/cli/dist/args.d.ts +2 -0
  4. package/node_modules/@buddi/cli/dist/args.d.ts.map +1 -1
  5. package/node_modules/@buddi/cli/dist/args.js +11 -2
  6. package/node_modules/@buddi/cli/dist/args.js.map +1 -1
  7. package/node_modules/@buddi/cli/dist/backup/index.d.ts +3 -1
  8. package/node_modules/@buddi/cli/dist/backup/index.d.ts.map +1 -1
  9. package/node_modules/@buddi/cli/dist/backup/index.js +16 -1
  10. package/node_modules/@buddi/cli/dist/backup/index.js.map +1 -1
  11. package/node_modules/@buddi/cli/dist/commands.d.ts.map +1 -1
  12. package/node_modules/@buddi/cli/dist/commands.js +5 -3
  13. package/node_modules/@buddi/cli/dist/commands.js.map +1 -1
  14. package/node_modules/@buddi/cli/dist/main.d.ts +4 -1
  15. package/node_modules/@buddi/cli/dist/main.d.ts.map +1 -1
  16. package/node_modules/@buddi/cli/dist/main.js +41 -3
  17. package/node_modules/@buddi/cli/dist/main.js.map +1 -1
  18. package/node_modules/@buddi/cli/dist/mode.d.ts +41 -0
  19. package/node_modules/@buddi/cli/dist/mode.d.ts.map +1 -0
  20. package/node_modules/@buddi/cli/dist/mode.js +103 -0
  21. package/node_modules/@buddi/cli/dist/mode.js.map +1 -0
  22. package/node_modules/@buddi/cli/dist/paths.d.ts +13 -1
  23. package/node_modules/@buddi/cli/dist/paths.d.ts.map +1 -1
  24. package/node_modules/@buddi/cli/dist/paths.js +23 -2
  25. package/node_modules/@buddi/cli/dist/paths.js.map +1 -1
  26. package/node_modules/@buddi/cli/dist/uninstall-cmd.d.ts +12 -2
  27. package/node_modules/@buddi/cli/dist/uninstall-cmd.d.ts.map +1 -1
  28. package/node_modules/@buddi/cli/dist/uninstall-cmd.js +63 -12
  29. package/node_modules/@buddi/cli/dist/uninstall-cmd.js.map +1 -1
  30. package/node_modules/@buddi/cli/dist/vault-cmd.d.ts +3 -0
  31. package/node_modules/@buddi/cli/dist/vault-cmd.d.ts.map +1 -1
  32. package/node_modules/@buddi/cli/dist/vault-cmd.js +26 -5
  33. package/node_modules/@buddi/cli/dist/vault-cmd.js.map +1 -1
  34. package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
  35. package/node_modules/@buddi/core/dist/uninstall.d.ts +18 -0
  36. package/node_modules/@buddi/core/dist/uninstall.d.ts.map +1 -1
  37. package/node_modules/@buddi/core/dist/uninstall.js +47 -0
  38. package/node_modules/@buddi/core/dist/uninstall.js.map +1 -1
  39. package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
  40. package/node_modules/@buddi/gateway/dist/codex-accounts.d.ts +2 -0
  41. package/node_modules/@buddi/gateway/dist/codex-accounts.d.ts.map +1 -1
  42. package/node_modules/@buddi/gateway/dist/codex-accounts.js +4 -4
  43. package/node_modules/@buddi/gateway/dist/codex-accounts.js.map +1 -1
  44. package/node_modules/@buddi/gateway/dist/serve.d.ts.map +1 -1
  45. package/node_modules/@buddi/gateway/dist/serve.js +31 -0
  46. package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
  47. package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
  48. package/node_modules/@buddi/gateway/dist/web/api-routes.js +20 -2
  49. package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
  50. package/node_modules/@buddi/gateway/dist/web/cli-tool.d.ts +11 -0
  51. package/node_modules/@buddi/gateway/dist/web/cli-tool.d.ts.map +1 -0
  52. package/node_modules/@buddi/gateway/dist/web/cli-tool.js +27 -0
  53. package/node_modules/@buddi/gateway/dist/web/cli-tool.js.map +1 -0
  54. package/node_modules/@buddi/gateway/dist/web/extension.d.ts +14 -0
  55. package/node_modules/@buddi/gateway/dist/web/extension.d.ts.map +1 -1
  56. package/node_modules/@buddi/gateway/dist/web/extension.js +22 -1
  57. package/node_modules/@buddi/gateway/dist/web/extension.js.map +1 -1
  58. package/node_modules/@buddi/gateway/dist/web/lock.d.ts +12 -0
  59. package/node_modules/@buddi/gateway/dist/web/lock.d.ts.map +1 -1
  60. package/node_modules/@buddi/gateway/dist/web/lock.js +13 -0
  61. package/node_modules/@buddi/gateway/dist/web/lock.js.map +1 -1
  62. package/node_modules/@buddi/gateway/dist/web/onboarding.d.ts +41 -6
  63. package/node_modules/@buddi/gateway/dist/web/onboarding.d.ts.map +1 -1
  64. package/node_modules/@buddi/gateway/dist/web/onboarding.js +91 -15
  65. package/node_modules/@buddi/gateway/dist/web/onboarding.js.map +1 -1
  66. package/node_modules/@buddi/gateway/dist/web/passphrase-notice.d.ts +64 -0
  67. package/node_modules/@buddi/gateway/dist/web/passphrase-notice.d.ts.map +1 -0
  68. package/node_modules/@buddi/gateway/dist/web/passphrase-notice.js +112 -0
  69. package/node_modules/@buddi/gateway/dist/web/passphrase-notice.js.map +1 -0
  70. package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
  71. package/node_modules/@buddi/gateway/dist/web/server.js +78 -9
  72. package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
  73. package/node_modules/@buddi/gateway/dist/web/take-on.d.ts +28 -3
  74. package/node_modules/@buddi/gateway/dist/web/take-on.d.ts.map +1 -1
  75. package/node_modules/@buddi/gateway/dist/web/take-on.js +48 -3
  76. package/node_modules/@buddi/gateway/dist/web/take-on.js.map +1 -1
  77. package/node_modules/@buddi/gateway/dist/web/uninstall.d.ts +36 -0
  78. package/node_modules/@buddi/gateway/dist/web/uninstall.d.ts.map +1 -0
  79. package/node_modules/@buddi/gateway/dist/web/uninstall.js +116 -0
  80. package/node_modules/@buddi/gateway/dist/web/uninstall.js.map +1 -0
  81. package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
  82. package/node_modules/@buddi/install/dist/app-layout.d.ts +4 -0
  83. package/node_modules/@buddi/install/dist/app-layout.d.ts.map +1 -1
  84. package/node_modules/@buddi/install/dist/app-layout.js +6 -0
  85. package/node_modules/@buddi/install/dist/app-layout.js.map +1 -1
  86. package/node_modules/@buddi/install/dist/cli-shim.d.ts +76 -0
  87. package/node_modules/@buddi/install/dist/cli-shim.d.ts.map +1 -0
  88. package/node_modules/@buddi/install/dist/cli-shim.js +215 -0
  89. package/node_modules/@buddi/install/dist/cli-shim.js.map +1 -0
  90. package/node_modules/@buddi/install/dist/environment.d.ts +90 -1
  91. package/node_modules/@buddi/install/dist/environment.d.ts.map +1 -1
  92. package/node_modules/@buddi/install/dist/environment.js +216 -3
  93. package/node_modules/@buddi/install/dist/environment.js.map +1 -1
  94. package/node_modules/@buddi/install/dist/launcher.d.ts.map +1 -1
  95. package/node_modules/@buddi/install/dist/launcher.js +140 -5
  96. package/node_modules/@buddi/install/dist/launcher.js.map +1 -1
  97. package/node_modules/@buddi/install/dist/product-uninstall.d.ts +86 -0
  98. package/node_modules/@buddi/install/dist/product-uninstall.d.ts.map +1 -0
  99. package/node_modules/@buddi/install/dist/product-uninstall.js +150 -0
  100. package/node_modules/@buddi/install/dist/product-uninstall.js.map +1 -0
  101. package/node_modules/@buddi/install/dist/supervisor.d.ts +16 -1
  102. package/node_modules/@buddi/install/dist/supervisor.d.ts.map +1 -1
  103. package/node_modules/@buddi/install/dist/supervisor.js +191 -10
  104. package/node_modules/@buddi/install/dist/supervisor.js.map +1 -1
  105. package/node_modules/@buddi/install/dist/uninstall.d.ts +20 -1
  106. package/node_modules/@buddi/install/dist/uninstall.d.ts.map +1 -1
  107. package/node_modules/@buddi/install/dist/uninstall.js +84 -13
  108. package/node_modules/@buddi/install/dist/uninstall.js.map +1 -1
  109. package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
  110. package/node_modules/@buddi/runtime/dist/codex-oauth.d.ts +6 -0
  111. package/node_modules/@buddi/runtime/dist/codex-oauth.d.ts.map +1 -1
  112. package/node_modules/@buddi/runtime/dist/codex-oauth.js +15 -0
  113. package/node_modules/@buddi/runtime/dist/codex-oauth.js.map +1 -1
  114. package/node_modules/@buddi/runtime/dist/openai.d.ts +9 -2
  115. package/node_modules/@buddi/runtime/dist/openai.d.ts.map +1 -1
  116. package/node_modules/@buddi/runtime/dist/openai.js +117 -16
  117. package/node_modules/@buddi/runtime/dist/openai.js.map +1 -1
  118. package/package.json +2 -2
  119. package/packages/cli/dist/.tsbuildinfo +1 -1
  120. package/packages/cli/dist/args.d.ts +2 -0
  121. package/packages/cli/dist/args.d.ts.map +1 -1
  122. package/packages/cli/dist/args.js +11 -2
  123. package/packages/cli/dist/args.js.map +1 -1
  124. package/packages/cli/dist/backup/index.d.ts +3 -1
  125. package/packages/cli/dist/backup/index.d.ts.map +1 -1
  126. package/packages/cli/dist/backup/index.js +16 -1
  127. package/packages/cli/dist/backup/index.js.map +1 -1
  128. package/packages/cli/dist/commands.d.ts.map +1 -1
  129. package/packages/cli/dist/commands.js +5 -3
  130. package/packages/cli/dist/commands.js.map +1 -1
  131. package/packages/cli/dist/main.d.ts +4 -1
  132. package/packages/cli/dist/main.d.ts.map +1 -1
  133. package/packages/cli/dist/main.js +41 -3
  134. package/packages/cli/dist/main.js.map +1 -1
  135. package/packages/cli/dist/mode.d.ts +41 -0
  136. package/packages/cli/dist/mode.d.ts.map +1 -0
  137. package/packages/cli/dist/mode.js +103 -0
  138. package/packages/cli/dist/mode.js.map +1 -0
  139. package/packages/cli/dist/paths.d.ts +13 -1
  140. package/packages/cli/dist/paths.d.ts.map +1 -1
  141. package/packages/cli/dist/paths.js +23 -2
  142. package/packages/cli/dist/paths.js.map +1 -1
  143. package/packages/cli/dist/uninstall-cmd.d.ts +12 -2
  144. package/packages/cli/dist/uninstall-cmd.d.ts.map +1 -1
  145. package/packages/cli/dist/uninstall-cmd.js +63 -12
  146. package/packages/cli/dist/uninstall-cmd.js.map +1 -1
  147. package/packages/cli/dist/vault-cmd.d.ts +3 -0
  148. package/packages/cli/dist/vault-cmd.d.ts.map +1 -1
  149. package/packages/cli/dist/vault-cmd.js +26 -5
  150. package/packages/cli/dist/vault-cmd.js.map +1 -1
  151. package/packages/core/dist/.tsbuildinfo +1 -1
  152. package/packages/core/dist/uninstall.d.ts +18 -0
  153. package/packages/core/dist/uninstall.d.ts.map +1 -1
  154. package/packages/core/dist/uninstall.js +47 -0
  155. package/packages/core/dist/uninstall.js.map +1 -1
  156. package/packages/gateway/dist/.tsbuildinfo +1 -1
  157. package/packages/gateway/dist/codex-accounts.d.ts +2 -0
  158. package/packages/gateway/dist/codex-accounts.d.ts.map +1 -1
  159. package/packages/gateway/dist/codex-accounts.js +4 -4
  160. package/packages/gateway/dist/codex-accounts.js.map +1 -1
  161. package/packages/gateway/dist/serve.d.ts.map +1 -1
  162. package/packages/gateway/dist/serve.js +31 -0
  163. package/packages/gateway/dist/serve.js.map +1 -1
  164. package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
  165. package/packages/gateway/dist/web/api-routes.js +20 -2
  166. package/packages/gateway/dist/web/api-routes.js.map +1 -1
  167. package/packages/gateway/dist/web/cli-tool.d.ts +11 -0
  168. package/packages/gateway/dist/web/cli-tool.d.ts.map +1 -0
  169. package/packages/gateway/dist/web/cli-tool.js +27 -0
  170. package/packages/gateway/dist/web/cli-tool.js.map +1 -0
  171. package/packages/gateway/dist/web/extension.d.ts +14 -0
  172. package/packages/gateway/dist/web/extension.d.ts.map +1 -1
  173. package/packages/gateway/dist/web/extension.js +22 -1
  174. package/packages/gateway/dist/web/extension.js.map +1 -1
  175. package/packages/gateway/dist/web/lock.d.ts +12 -0
  176. package/packages/gateway/dist/web/lock.d.ts.map +1 -1
  177. package/packages/gateway/dist/web/lock.js +13 -0
  178. package/packages/gateway/dist/web/lock.js.map +1 -1
  179. package/packages/gateway/dist/web/onboarding.d.ts +41 -6
  180. package/packages/gateway/dist/web/onboarding.d.ts.map +1 -1
  181. package/packages/gateway/dist/web/onboarding.js +91 -15
  182. package/packages/gateway/dist/web/onboarding.js.map +1 -1
  183. package/packages/gateway/dist/web/passphrase-notice.d.ts +64 -0
  184. package/packages/gateway/dist/web/passphrase-notice.d.ts.map +1 -0
  185. package/packages/gateway/dist/web/passphrase-notice.js +112 -0
  186. package/packages/gateway/dist/web/passphrase-notice.js.map +1 -0
  187. package/packages/gateway/dist/web/server.d.ts.map +1 -1
  188. package/packages/gateway/dist/web/server.js +78 -9
  189. package/packages/gateway/dist/web/server.js.map +1 -1
  190. package/packages/gateway/dist/web/take-on.d.ts +28 -3
  191. package/packages/gateway/dist/web/take-on.d.ts.map +1 -1
  192. package/packages/gateway/dist/web/take-on.js +48 -3
  193. package/packages/gateway/dist/web/take-on.js.map +1 -1
  194. package/packages/gateway/dist/web/uninstall.d.ts +36 -0
  195. package/packages/gateway/dist/web/uninstall.d.ts.map +1 -0
  196. package/packages/gateway/dist/web/uninstall.js +116 -0
  197. package/packages/gateway/dist/web/uninstall.js.map +1 -0
  198. package/packages/install/dist/.tsbuildinfo +1 -1
  199. package/packages/install/dist/app-layout.d.ts +4 -0
  200. package/packages/install/dist/app-layout.d.ts.map +1 -1
  201. package/packages/install/dist/app-layout.js +6 -0
  202. package/packages/install/dist/app-layout.js.map +1 -1
  203. package/packages/install/dist/cli-shim.d.ts +76 -0
  204. package/packages/install/dist/cli-shim.d.ts.map +1 -0
  205. package/packages/install/dist/cli-shim.js +215 -0
  206. package/packages/install/dist/cli-shim.js.map +1 -0
  207. package/packages/install/dist/environment.d.ts +90 -1
  208. package/packages/install/dist/environment.d.ts.map +1 -1
  209. package/packages/install/dist/environment.js +216 -3
  210. package/packages/install/dist/environment.js.map +1 -1
  211. package/packages/install/dist/launcher.d.ts.map +1 -1
  212. package/packages/install/dist/launcher.js +140 -5
  213. package/packages/install/dist/launcher.js.map +1 -1
  214. package/packages/install/dist/product-uninstall.d.ts +86 -0
  215. package/packages/install/dist/product-uninstall.d.ts.map +1 -0
  216. package/packages/install/dist/product-uninstall.js +150 -0
  217. package/packages/install/dist/product-uninstall.js.map +1 -0
  218. package/packages/install/dist/supervisor.d.ts +16 -1
  219. package/packages/install/dist/supervisor.d.ts.map +1 -1
  220. package/packages/install/dist/supervisor.js +191 -10
  221. package/packages/install/dist/supervisor.js.map +1 -1
  222. package/packages/install/dist/uninstall.d.ts +20 -1
  223. package/packages/install/dist/uninstall.d.ts.map +1 -1
  224. package/packages/install/dist/uninstall.js +84 -13
  225. package/packages/install/dist/uninstall.js.map +1 -1
  226. package/packages/runtime/dist/.tsbuildinfo +1 -1
  227. package/packages/runtime/dist/codex-oauth.d.ts +6 -0
  228. package/packages/runtime/dist/codex-oauth.d.ts.map +1 -1
  229. package/packages/runtime/dist/codex-oauth.js +15 -0
  230. package/packages/runtime/dist/codex-oauth.js.map +1 -1
  231. package/packages/runtime/dist/openai.d.ts +9 -2
  232. package/packages/runtime/dist/openai.d.ts.map +1 -1
  233. package/packages/runtime/dist/openai.js +117 -16
  234. package/packages/runtime/dist/openai.js.map +1 -1
  235. package/packages/web/dist/assets/index-BkxHX_8g.js +146 -0
  236. package/packages/web/dist/assets/{index-DYfeUW-0.css → index-D2rOodlH.css} +1 -1
  237. package/packages/web/dist/assets/{lottie_light-BFAMYgLA.js → lottie_light-D-P1tn3V.js} +1 -1
  238. package/packages/web/dist/build.json +1 -1
  239. package/packages/web/dist/index.html +2 -2
  240. package/packages/web/dist/precache.json +4 -4
  241. package/packages/web/dist/assets/index-vpc904_b.js +0 -146
@@ -8,12 +8,15 @@
8
8
  * computed from at import time. Types are imported statically; they are erased.
9
9
  */
10
10
  import { createServer } from 'node:http';
11
- import { spawn } from 'node:child_process';
12
- import { createWriteStream } from 'node:fs';
13
- import { readFile, chmod, unlink, lstat } from 'node:fs/promises';
11
+ import { spawn, execFile } from 'node:child_process';
12
+ import { createWriteStream, existsSync, openSync, closeSync, mkdirSync, readFileSync, realpathSync, rmSync } from 'node:fs';
13
+ import { readFile, chmod, unlink, lstat, mkdir, rename, copyFile, rm, writeFile } from 'node:fs/promises';
14
+ import os from 'node:os';
14
15
  import path from 'node:path';
15
16
  import { fileURLToPath } from 'node:url';
16
- import { acquireLock, initialize, atomicJson, stopChild } from './environment.js';
17
+ import { GATEWAY_PID_FILE, acquireLock, initialize, atomicJson, stopChild, portMovedLines, launchAgentLabel, launchAgentPlist, systemdUnitPath, nativeEnvironment, SERVICE_UNIT_VAR } from './environment.js';
18
+ import { APP_UNINSTALL_EXIT, UNINSTALL_REQUEST, createProductUninstall } from './product-uninstall.js';
19
+ import { installShim, shimsFor } from './cli-shim.js';
17
20
  import { createBackupService, isIncomingPath, isSafeArchiveName, parseSchedule, sweepIncoming } from './backup.js';
18
21
  import { startDatabase } from './postgres.js';
19
22
  import { createUpgradeService, finishUpgrade, handOver, installedVersion, isVersion, recoverySentence, statusOnSocket, TICK_INTERVAL_MS } from './upgrade.js';
@@ -38,6 +41,28 @@ export function pendingUpgrade(marker) {
38
41
  export function supervisorSocket(data) {
39
42
  return path.join(data, 'supervisor.sock');
40
43
  }
44
+ /** The moved-port line for `/status`, for a day after the move. */
45
+ function portNotice(moved) {
46
+ if (!moved || Date.now() - Date.parse(moved.at) > 24 * 60 * 60_000)
47
+ return {};
48
+ const lines = portMovedLines(moved);
49
+ return lines.length === 0 ? {} : { portNotice: lines.join(' ') };
50
+ }
51
+ /** Single quotes for sh. */
52
+ function shellQuote(value) {
53
+ return `'${value.replace(/'/g, `'\\''`)}'`;
54
+ }
55
+ /**
56
+ * One shell command with macOS's administrator prompt (osascript's `with
57
+ * administrator privileges`): the owner sees the system dialog, once. Throws
58
+ * when it is declined or fails.
59
+ */
60
+ function runAsAdmin(command) {
61
+ const script = `do shell script ${JSON.stringify(command)} with administrator privileges`;
62
+ return new Promise((resolve, reject) => {
63
+ execFile('/usr/bin/osascript', ['-e', script], { timeout: 120_000 }, (error) => (error ? reject(error) : resolve()));
64
+ });
65
+ }
41
66
  export function restartDelay(failures) { return Math.min(30_000, 2000 * 2 ** Math.min(failures, 4)); }
42
67
  /**
43
68
  * How long a handed-over supervisor waits to leave on its own before it is
@@ -94,7 +119,7 @@ function optionalString(value) {
94
119
  * `<data>/incoming/`, and that is checked to be under that directory, resolved,
95
120
  * before it is passed on.
96
121
  */
97
- export function controlSocket({ status, action, backup, upgrade, data }) {
122
+ export function controlSocket({ status, action, backup, upgrade, data, uninstall, cli }) {
98
123
  return createServer((req, res) => {
99
124
  void handle(req, res).catch(() => send(res, 500, { error: 'The supervisor could not complete that action.' }));
100
125
  });
@@ -249,13 +274,55 @@ export function controlSocket({ status, action, backup, upgrade, data }) {
249
274
  return send(res, outcome.status, { error: outcome.error });
250
275
  return send(res, 202, { job: outcome });
251
276
  }
277
+ if (route === '/cli') {
278
+ if (!cli)
279
+ return send(res, 404, { error: 'no such endpoint' });
280
+ if (method === 'GET')
281
+ return send(res, 200, cli.status());
282
+ if (method === 'POST') {
283
+ const outcome = await cli.install();
284
+ return outcome.ok ? send(res, 200, { file: outcome.file, lines: outcome.lines }) : send(res, outcome.status, { error: outcome.error });
285
+ }
286
+ }
287
+ if (route === '/uninstall' && method === 'GET') {
288
+ if (!uninstall)
289
+ return send(res, 404, { error: 'no such endpoint' });
290
+ return send(res, 200, uninstall.plan());
291
+ }
292
+ if (route === '/uninstall/backup' && method === 'POST') {
293
+ if (!uninstall)
294
+ return send(res, 404, { error: 'no such endpoint' });
295
+ if (backup?.busy())
296
+ return send(res, 409, { error: 'A restore is running.' });
297
+ if (upgrade?.busy())
298
+ return send(res, 409, { error: 'An upgrade is running.' });
299
+ const started = uninstall.keepLast();
300
+ if ('status' in started)
301
+ return send(res, started.status, { error: started.error });
302
+ return send(res, 202, { job: started });
303
+ }
304
+ if (route === '/uninstall' && method === 'POST') {
305
+ if (!uninstall)
306
+ return send(res, 404, { error: 'no such endpoint' });
307
+ if (backup?.busy())
308
+ return send(res, 409, { error: 'A restore is running.' });
309
+ if (upgrade?.busy())
310
+ return send(res, 409, { error: 'An upgrade is running.' });
311
+ const body = await readBody(req);
312
+ if (body === null)
313
+ return send(res, 400, { error: 'The body has to be a JSON object.' });
314
+ if (body.keepData !== undefined && typeof body.keepData !== 'boolean')
315
+ return send(res, 400, { error: '"keepData" must be true or false.' });
316
+ const outcome = uninstall.start({ keepData: body.keepData === true });
317
+ return send(res, outcome.status, outcome.error === undefined ? { accepted: true } : { error: outcome.error });
318
+ }
252
319
  const jobRoute = /^\/jobs\/([0-9a-f-]{36})$/i.exec(route);
253
320
  if (jobRoute && method === 'GET') {
254
- if (!backup && !upgrade)
321
+ if (!backup && !upgrade && !uninstall)
255
322
  return send(res, 404, { error: 'no such endpoint' });
256
- // One job route for both stores: a client that was handed an id polls it
323
+ // One job route for every store: a client that was handed an id polls it
257
324
  // without having to remember which verb produced it.
258
- const job = backup?.job(jobRoute[1]) ?? upgrade?.job(jobRoute[1]);
325
+ const job = backup?.job(jobRoute[1]) ?? upgrade?.job(jobRoute[1]) ?? uninstall?.job(jobRoute[1]);
259
326
  return job ? send(res, 200, job) : send(res, 404, { error: 'no such job' });
260
327
  }
261
328
  if (route === '/schedule') {
@@ -344,6 +411,7 @@ export async function supervise(ctx) {
344
411
  let database, server, child, retry, log;
345
412
  let backup, scheduleTick;
346
413
  let upgrade, upgradeTick, handingOver = false;
414
+ let uninstall, leavingForUninstall = false;
347
415
  /** Has a pending upgrade been written into the history yet? */
348
416
  let resolved = false, pending;
349
417
  let desired = true, closing = false, chain = Promise.resolve();
@@ -447,10 +515,23 @@ export async function supervise(ctx) {
447
515
  const started = Date.now();
448
516
  child = spawn(process.execPath, [LAUNCHER, '__gateway'], { env: ready.env, stdio: ['ignore', 'pipe', 'pipe', 'ipc'] });
449
517
  console.error(`supervisor: gateway started (pid ${child.pid}).`);
518
+ // Recorded, so a supervisor that dies and leaves it running is not taken
519
+ // for a stranger holding the web port at the next start (environment.ts).
520
+ const pidFile = path.join(ready.data, GATEWAY_PID_FILE);
521
+ const pid = child.pid;
522
+ if (pid !== undefined)
523
+ void writeFile(pidFile, String(pid), { mode: 0o600 }).catch(() => { });
450
524
  child.stdout.pipe(log, { end: false });
451
525
  child.stderr.pipe(log, { end: false });
452
526
  child.once('error', () => console.error('Gateway could not start; check the installed Node executable.'));
453
527
  child.once('close', () => {
528
+ if (pid !== undefined && (() => { try {
529
+ return readFileSync(pidFile, 'utf8');
530
+ }
531
+ catch {
532
+ return '';
533
+ } })() === String(pid))
534
+ rmSync(pidFile, { force: true });
454
535
  if (Date.now() - started >= 60_000)
455
536
  failures = 0;
456
537
  if (desired && !closing && database.alive)
@@ -488,14 +569,107 @@ export async function supervise(ctx) {
488
569
  http: gateway.defaultHttpTransport,
489
570
  log: line => console.error(line),
490
571
  });
572
+ // Uninstall from the product: the last backup and its words first, then the removal (product-uninstall.ts).
573
+ const home = os.homedir();
574
+ const appFinishes = appLayout(process.env) !== undefined;
575
+ uninstall = createProductUninstall({
576
+ data: ready.data, home, backup, appFinishes,
577
+ plan: () => {
578
+ const unit = process.platform === 'darwin' ? launchAgentPlist(ready.data, home) : process.platform === 'linux' ? systemdUnitPath(ready.data, ready.env, home) : undefined;
579
+ const bundle = process.env.BUDDI_APP_BUNDLE?.trim();
580
+ return {
581
+ data: ready.data,
582
+ ...(core.vaultSelection({ env: ready.env }) === 'keychain' && ready.env.BUDDI_VAULT_SERVICE ? { keychain: ready.env.BUDDI_VAULT_SERVICE } : {}),
583
+ ...(unit !== undefined && existsSync(unit) ? { service: process.platform === 'darwin' ? `launchd agent ${launchAgentLabel(ready.data)}` : `systemd user unit ${launchAgentLabel(ready.data)}.service` } : {}),
584
+ ...(appFinishes && bundle ? { app: bundle } : {}),
585
+ backups: path.join(home, 'buddi-backups'),
586
+ appFinishes,
587
+ };
588
+ },
589
+ exists: existsSync,
590
+ move: async (from, to) => {
591
+ await mkdir(path.dirname(to), { recursive: true, mode: 0o700 });
592
+ try {
593
+ await rename(from, to);
594
+ }
595
+ catch {
596
+ await copyFile(from, to);
597
+ await rm(from, { force: true });
598
+ }
599
+ },
600
+ writePrivate: async (file, text) => {
601
+ await mkdir(path.dirname(file), { recursive: true, mode: 0o700 });
602
+ await writeFile(file, text, { mode: 0o600 });
603
+ await chmod(file, 0o600);
604
+ },
605
+ writeRequest: request => atomicJson(path.join(ready.data, UNINSTALL_REQUEST), request),
606
+ exitForApp: () => { console.error('supervisor: stopping so buddi.app can remove buddi.'); leavingForUninstall = true; onSignal(); },
607
+ spawnUninstall: (argv, logFile) => {
608
+ mkdirSync(path.dirname(logFile), { recursive: true, mode: 0o700 });
609
+ const fd = openSync(logFile, 'a', 0o600);
610
+ const env = { ...nativeEnvironment(startEnv), BUDDI_DATA_DIR: ready.data,
611
+ ...Object.fromEntries(['XDG_RUNTIME_DIR', 'DBUS_SESSION_BUS_ADDRESS'].filter(key => typeof startEnv[key] === 'string').map(key => [key, startEnv[key]])) };
612
+ // systemd stops every process in the unit's cgroup with it: the uninstall runs in a transient scope of its own.
613
+ const [command, args] = startEnv[SERVICE_UNIT_VAR]
614
+ ? ['systemd-run', ['--user', '--collect', '--quiet', '--scope', process.execPath, LAUNCHER, ...argv]]
615
+ : [process.execPath, [LAUNCHER, ...argv]];
616
+ console.error(`supervisor: removing buddi; the account is in ${logFile}.`);
617
+ const child = spawn(command, args, { detached: true, stdio: ['ignore', fd, fd], env, cwd: home });
618
+ child.unref();
619
+ closeSync(fd);
620
+ },
621
+ });
622
+ // buddi.app's command line tool: one code path for the app's menu and Settings → System (cli-shim.ts).
623
+ const appBundle = process.env.BUDDI_APP_BUNDLE?.trim();
624
+ const shimDeps = () => ({
625
+ home,
626
+ searchPath: (startEnv.PATH ?? '').split(':'),
627
+ exists: existsSync,
628
+ realPath: (file) => { try {
629
+ return realpathSync(file);
630
+ }
631
+ catch {
632
+ return undefined;
633
+ } },
634
+ read: (file) => { try {
635
+ return readFileSync(file, 'utf8');
636
+ }
637
+ catch {
638
+ return undefined;
639
+ } },
640
+ write: async (file, text) => {
641
+ await mkdir(path.dirname(file), { recursive: true });
642
+ await writeFile(file, text, { mode: 0o755 });
643
+ await chmod(file, 0o755);
644
+ },
645
+ writeAsAdmin: async (file, text) => {
646
+ const staged = path.join(ready.data, `.cli-shim-${process.pid}`);
647
+ await writeFile(staged, text, { mode: 0o755 });
648
+ try {
649
+ await runAsAdmin(`/bin/mkdir -p ${shellQuote(path.dirname(file))} && /usr/bin/install -m 0755 ${shellQuote(staged)} ${shellQuote(file)}`);
650
+ }
651
+ finally {
652
+ await rm(staged, { force: true });
653
+ }
654
+ },
655
+ remove: (file) => rm(file, { force: true }),
656
+ removeAsAdmin: (file) => runAsAdmin(`/bin/rm -f ${shellQuote(file)}`),
657
+ });
658
+ const cli = appFinishes && appBundle ? {
659
+ status: () => ({ available: true, installed: shimsFor(ready.data, shimDeps()) }),
660
+ install: () => installShim({ app: appBundle, data: ready.data }, shimDeps()),
661
+ } : {
662
+ status: () => ({ available: false, installed: [], reason: 'This buddi came from npm, and its buddi command is already on your PATH.' }),
663
+ install: async () => ({ ok: false, status: 409, error: 'This buddi came from npm, and its buddi command is already on your PATH.' }),
664
+ };
491
665
  server = controlSocket({
492
666
  status: () => ({ phase: ready.state.phase, supervisorPid: process.pid, installRoot: ready.root, nodePath: process.execPath, database: database.pid ? (database.alive ? 'running' : 'failed') : 'external', databasePid: database.pid,
493
667
  gateway: child && child.exitCode === null && child.signalCode === null ? 'running' : 'stopped', gatewayPid: child?.pid ?? null,
494
- current, upgrading: upgrade.busy() }),
668
+ current, upgrading: upgrade.busy(), ...portNotice(ready.state.portMoved) }),
495
669
  action: name => { console.error(`supervisor: ${name} asked for on the control socket.`); chain = chain.catch(() => { }).then(async () => { if (name !== 'start')
496
670
  await stopGateway(); if (name !== 'stop')
497
671
  start(); }); return chain; },
498
- backup, upgrade, data: ready.data,
672
+ backup, upgrade, data: ready.data, uninstall, cli,
499
673
  });
500
674
  await listenOnSocket(server, supervisorSocket(ready.data));
501
675
  if (migrationFailure === undefined)
@@ -560,6 +734,13 @@ export async function supervise(ctx) {
560
734
  process.removeListener('SIGTERM', onSignal);
561
735
  }
562
736
  }
737
+ // buddi.app finishes an uninstall the owner started in Settings → System (product-uninstall.ts).
738
+ if (leavingForUninstall) {
739
+ process.exitCode = APP_UNINSTALL_EXIT;
740
+ const grace = setTimeout(() => process.exit(APP_UNINSTALL_EXIT), HANDOVER_GRACE_MS);
741
+ grace.unref?.();
742
+ return;
743
+ }
563
744
  /*
564
745
  * The hand-over, after everything above has let go: the lock, the socket,
565
746
  * the database. It is last on purpose — the successor takes the same lock,
@@ -1 +1 @@
1
- {"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,18 @@
1
1
  import type { UninstallIo } from '@buddi/core/uninstall';
2
+ import type { InstallationState } from './environment.js';
2
3
  export interface UninstallOptions {
3
4
  yes: boolean;
4
5
  keepData: boolean;
5
6
  backup: boolean;
7
+ /** `--copy-to <dir>`: a second copy of the last backup (and its passphrase file), on the Desktop say. */
8
+ copyTo?: string;
9
+ /** `--i-have-the-passphrase`: with `--no-backup`, the owner says the words are already written down. */
10
+ havePassphrase?: boolean;
6
11
  }
7
12
  /** The flags `buddi uninstall` takes. Anything else is a usage error. */
8
13
  export declare function parseUninstallArgs(args: readonly string[]): UninstallOptions;
14
+ /** The passphrase file written when there is no archive to put it beside. */
15
+ export declare function loosePassphraseFile(dir: string, now: Date): string;
9
16
  export interface ExecResult {
10
17
  code: number;
11
18
  stdout: string;
@@ -29,8 +36,15 @@ export interface PackagedUninstallDeps {
29
36
  stopGateway: () => Promise<void>;
30
37
  /** The supervisor's backup, followed to the end: the archive's full path. */
31
38
  backup: () => Promise<string>;
32
- passphrase: () => Promise<string | undefined>;
33
39
  };
40
+ /** The backup passphrase the vault keeps, read without making one; undefined only when the vault confirms there is none, and throws when the read failed. */
41
+ passphrase: () => Promise<string | undefined>;
42
+ /** Write a private (0600) file, creating its folder. */
43
+ writePrivate: (file: string, text: string) => Promise<void>;
44
+ copy: (from: string, to: string) => Promise<void>;
45
+ /** `installation.json`, parsed; undefined when there is none. */
46
+ readState: () => InstallationState | undefined;
47
+ now?: () => Date;
34
48
  /** The pid in `supervisor.lock` while that process is alive. */
35
49
  supervisorPid: () => number | undefined;
36
50
  signal: (pid: number, signal: NodeJS.Signals) => void;
@@ -49,6 +63,11 @@ export interface PackagedUninstallDeps {
49
63
  };
50
64
  /** The dashboard app, when it exists and this installation wrote it. */
51
65
  app?: string;
66
+ /** buddi.app's command line tool shims that run this installation (cli-shim.ts), and how to remove one. */
67
+ shims?: {
68
+ files: string[];
69
+ remove: (file: string) => Promise<void>;
70
+ };
52
71
  sleep: (ms: number) => Promise<void>;
53
72
  io: UninstallIo;
54
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../src/uninstall.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAe,WAAW,EAAiB,MAAM,uBAAuB,CAAC;AAGrF,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,gBAAgB,CAS5E;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC;IACnC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,kFAAkF;IAClF,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/D,UAAU,EAAE;QACV,gEAAgE;QAChE,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,6EAA6E;QAC7E,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,UAAU,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;KAC/C,CAAC;IACF,gEAAgE;IAChE,aAAa,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACxC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;IACtD,4EAA4E;IAC5E,QAAQ,CAAC,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC3C,CAAC;IACF;;;OAGG;IACH,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;KAAE,CAAC;IAC3D,wEAAwE;IACxE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,EAAE,EAAE,WAAW,CAAC;CACjB;AAYD,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAQD,eAAO,MAAM,YAAY,8DAA8D,CAAC;AAExF,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CA+J/G"}
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../src/uninstall.ts"],"names":[],"mappings":"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"}
@@ -18,23 +18,38 @@
18
18
  * leaf `@buddi/core/uninstall` (see the note at the top of environment.ts).
19
19
  */
20
20
  import path from 'node:path';
21
- import { runUninstallPlan } from '@buddi/core/uninstall';
22
- import { launchAgentLabel, launchAgentPlist, systemdUnitPath } from './environment.js';
21
+ import { passphraseBeforeRemoval, passphraseFileFor, passphraseFileText, runUninstallPlan } from '@buddi/core/uninstall';
22
+ import { identityMismatch, launchAgentLabel, launchAgentPlist, systemdUnitPath } from './environment.js';
23
+ const UNINSTALL_FLAGS = '--yes, --keep-data, --no-backup, --i-have-the-passphrase or --copy-to <dir>';
23
24
  /** The flags `buddi uninstall` takes. Anything else is a usage error. */
24
25
  export function parseUninstallArgs(args) {
25
26
  const options = { yes: false, keepData: false, backup: true };
26
- for (const arg of args) {
27
+ for (let i = 0; i < args.length; i++) {
28
+ const arg = args[i];
27
29
  if (arg === '--yes' || arg === '-y')
28
30
  options.yes = true;
29
31
  else if (arg === '--keep-data')
30
32
  options.keepData = true;
31
33
  else if (arg === '--no-backup')
32
34
  options.backup = false;
35
+ else if (arg === '--i-have-the-passphrase')
36
+ options.havePassphrase = true;
37
+ else if (arg === '--copy-to' || arg.startsWith('--copy-to=')) {
38
+ const value = arg === '--copy-to' ? args[++i] : arg.slice('--copy-to='.length);
39
+ if (value === undefined || value === '' || value.startsWith('-'))
40
+ throw new Error('--copy-to needs a folder: buddi uninstall --copy-to ~/Desktop');
41
+ options.copyTo = value;
42
+ }
33
43
  else
34
- throw new Error(`unknown option for buddi uninstall: ${arg} (expected --yes, --keep-data or --no-backup)`);
44
+ throw new Error(`unknown option for buddi uninstall: ${arg} (expected ${UNINSTALL_FLAGS})`);
35
45
  }
36
46
  return options;
37
47
  }
48
+ /** The passphrase file written when there is no archive to put it beside. */
49
+ export function loosePassphraseFile(dir, now) {
50
+ const stamp = now.toISOString().replace(/[-:]/g, '').replace(/\..*$/, '').replace('T', '-');
51
+ return path.join(dir, `buddi-passphrase-${stamp}.txt`);
52
+ }
38
53
  /** What the data directory holds, named for the owner: only what is there. */
39
54
  const CONTENTS = [
40
55
  [['postgres'], 'the database'],
@@ -63,6 +78,28 @@ export async function uninstallPackaged(options, deps) {
63
78
  io.error(`${data} is not a buddi installation (it has no installation.json and no postgres folder), so nothing was removed. Check BUDDI_DATA_DIR.`);
64
79
  return 1;
65
80
  }
81
+ /*
82
+ * Which installation, said before anything else and checked against what
83
+ * the installation wrote about itself: the folder and the keychain
84
+ * namespace this run would empty must be the ones installation.json names.
85
+ */
86
+ let state;
87
+ try {
88
+ state = deps.readState();
89
+ }
90
+ catch {
91
+ state = undefined;
92
+ }
93
+ const mismatch = identityMismatch(state, data, deps.keychain?.service);
94
+ if (mismatch !== undefined) {
95
+ io.error(`${mismatch} Nothing was removed.`);
96
+ io.error('Run this from the app\'s menu, or set BUDDI_DATA_DIR to the installation you mean.');
97
+ return 1;
98
+ }
99
+ io.log(`Installation: ${data}`);
100
+ if (deps.keychain)
101
+ io.log(`Keychain namespace: ${deps.keychain.service}`);
102
+ const now = deps.now ?? (() => new Date());
66
103
  const machine = deps.platform === 'darwin' ? 'this Mac' : 'this machine';
67
104
  const steps = [];
68
105
  let stopped = true;
@@ -159,6 +196,12 @@ export async function uninstallPackaged(options, deps) {
159
196
  const app = deps.app;
160
197
  steps.push({ line: `the dashboard app ${app}`, run: () => deps.remove(app) });
161
198
  }
199
+ /* buddi.app's command line tool: a buddi on PATH that would run nothing once this is gone. */
200
+ if (deps.shims) {
201
+ const shims = deps.shims;
202
+ for (const file of shims.files)
203
+ steps.push({ line: `the command line tool ${file}`, bestEffort: true, run: () => shims.remove(file) });
204
+ }
162
205
  /* The extension pairing lives in the data directory; --keep-data keeps it. */
163
206
  const pairing = join('extension.json');
164
207
  if (!options.keepData && deps.exists(pairing)) {
@@ -194,29 +237,57 @@ export async function uninstallPackaged(options, deps) {
194
237
  last: PACKAGE_LINE,
195
238
  prepare: async () => {
196
239
  const lines = [];
240
+ // The vault that keeps the passphrase goes with the secrets (and with the data directory on Linux).
241
+ const vaultGoes = !options.keepData;
242
+ /** Show the words and keep them beside each archive (or in `loose` when there is none). */
243
+ const keepPhrase = async (phrase, archives, loose) => {
244
+ lines.push(`Your backup passphrase, which opens the backups and is about to leave this ${deps.platform === 'darwin' ? 'Mac' : 'machine'}'s vault: ${phrase}`);
245
+ const files = archives.length > 0 ? archives.map(passphraseFileFor) : loose !== undefined ? [loose] : [];
246
+ for (const file of files) {
247
+ await deps.writePrivate(file, passphraseFileText(phrase, archives.length > 0 ? path.basename(archives[0]) : undefined));
248
+ lines.push(`It is also in ${file} (only you can read it). Write the six words down, then delete that file.`);
249
+ }
250
+ };
197
251
  if (backingUp) {
198
252
  if (!(await deps.supervisor.answers())) {
199
253
  throw new Error('The service is not running, so the last backup could not be taken. Start it with buddi, or run buddi uninstall --no-backup.');
200
254
  }
201
255
  io.log('Taking one last backup.');
202
256
  const archive = await deps.supervisor.backup();
257
+ const envelope = archive.replace(/\.age$/, '.json');
258
+ let kept = archive;
203
259
  if (options.keepData) {
204
260
  lines.push(`The backup is ${archive}. It stays, with the rest of the data directory.`);
205
261
  }
206
262
  else {
207
- const kept = path.join(keptBackupsDir(home), path.basename(archive));
263
+ kept = path.join(keptBackupsDir(home), path.basename(archive));
208
264
  await deps.move(archive, kept);
209
- const envelope = archive.replace(/\.age$/, '.json');
210
265
  if (envelope !== archive && deps.exists(envelope))
211
266
  await deps.move(envelope, path.join(keptBackupsDir(home), path.basename(envelope)));
212
267
  lines.push(`The backup is ${kept}. It stays: uninstall does not touch that folder.`);
213
- if (archive.endsWith('.age')) {
214
- const phrase = await deps.supervisor.passphrase().catch(() => undefined);
215
- if (phrase !== undefined) {
216
- lines.push(`It is locked with your backup passphrase, and the vault that keeps it is going: ${phrase}`);
217
- lines.push('Write the six words down. Nothing else opens that backup.');
218
- }
219
- }
268
+ }
269
+ const copies = [];
270
+ if (options.copyTo !== undefined) {
271
+ const copy = path.join(options.copyTo, path.basename(kept));
272
+ await deps.copy(kept, copy);
273
+ const keptEnvelope = kept.replace(/\.age$/, '.json');
274
+ if (keptEnvelope !== kept && deps.exists(keptEnvelope))
275
+ await deps.copy(keptEnvelope, path.join(options.copyTo, path.basename(keptEnvelope)));
276
+ copies.push(copy);
277
+ lines.push(`A copy is ${copy}.`);
278
+ }
279
+ if (archive.endsWith('.age') && vaultGoes) {
280
+ const phrase = await passphraseBeforeRemoval(deps.passphrase, options.havePassphrase === true);
281
+ if (phrase !== undefined)
282
+ await keepPhrase(phrase, [kept, ...copies]);
283
+ }
284
+ }
285
+ else if (vaultGoes && !options.havePassphrase) {
286
+ // No last backup, but older ones may be locked with the words the vault is about to lose.
287
+ const phrase = await passphraseBeforeRemoval(deps.passphrase, false);
288
+ if (phrase !== undefined) {
289
+ await keepPhrase(phrase, [], loosePassphraseFile(options.copyTo ?? keptBackupsDir(home), now()));
290
+ lines.push('Pass --i-have-the-passphrase with --no-backup when you already have them.');
220
291
  }
221
292
  }
222
293
  if (deps.telegram)