@withbuddi/buddi 0.1.0-pre.40 → 0.1.0-pre.42
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.
- package/extension/background.js +11 -0
- package/extension/manifest.json +2 -2
- package/extension/popup.html +1 -1
- package/extension/popup.js +83 -1
- package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/cli/dist/args.d.ts +2 -0
- package/node_modules/@buddi/cli/dist/args.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/args.js +11 -2
- package/node_modules/@buddi/cli/dist/args.js.map +1 -1
- package/node_modules/@buddi/cli/dist/backup/index.d.ts +3 -1
- package/node_modules/@buddi/cli/dist/backup/index.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/backup/index.js +16 -1
- package/node_modules/@buddi/cli/dist/backup/index.js.map +1 -1
- package/node_modules/@buddi/cli/dist/commands.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/commands.js +6 -4
- package/node_modules/@buddi/cli/dist/commands.js.map +1 -1
- package/node_modules/@buddi/cli/dist/main.d.ts +4 -1
- package/node_modules/@buddi/cli/dist/main.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/main.js +41 -3
- package/node_modules/@buddi/cli/dist/main.js.map +1 -1
- package/node_modules/@buddi/cli/dist/mode.d.ts +41 -0
- package/node_modules/@buddi/cli/dist/mode.d.ts.map +1 -0
- package/node_modules/@buddi/cli/dist/mode.js +103 -0
- package/node_modules/@buddi/cli/dist/mode.js.map +1 -0
- package/node_modules/@buddi/cli/dist/paths.d.ts +13 -1
- package/node_modules/@buddi/cli/dist/paths.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/paths.js +23 -2
- package/node_modules/@buddi/cli/dist/paths.js.map +1 -1
- package/node_modules/@buddi/cli/dist/uninstall-cmd.d.ts +12 -2
- package/node_modules/@buddi/cli/dist/uninstall-cmd.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/uninstall-cmd.js +63 -12
- package/node_modules/@buddi/cli/dist/uninstall-cmd.js.map +1 -1
- package/node_modules/@buddi/cli/dist/vault-cmd.d.ts +3 -0
- package/node_modules/@buddi/cli/dist/vault-cmd.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/vault-cmd.js +26 -5
- package/node_modules/@buddi/cli/dist/vault-cmd.js.map +1 -1
- package/node_modules/@buddi/cli/package.json +4 -0
- package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/core/dist/uninstall.d.ts +18 -0
- package/node_modules/@buddi/core/dist/uninstall.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/uninstall.js +47 -0
- package/node_modules/@buddi/core/dist/uninstall.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/gateway/dist/codex-accounts.d.ts +2 -0
- package/node_modules/@buddi/gateway/dist/codex-accounts.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/codex-accounts.js +4 -4
- package/node_modules/@buddi/gateway/dist/codex-accounts.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.js +31 -0
- package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/api-routes.js +23 -3
- package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/cli-tool.d.ts +11 -0
- package/node_modules/@buddi/gateway/dist/web/cli-tool.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/cli-tool.js +27 -0
- package/node_modules/@buddi/gateway/dist/web/cli-tool.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/extension.d.ts +37 -0
- package/node_modules/@buddi/gateway/dist/web/extension.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/extension.js +138 -11
- package/node_modules/@buddi/gateway/dist/web/extension.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/lock.d.ts +18 -0
- package/node_modules/@buddi/gateway/dist/web/lock.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/lock.js +17 -2
- package/node_modules/@buddi/gateway/dist/web/lock.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/onboarding.d.ts +19 -2
- package/node_modules/@buddi/gateway/dist/web/onboarding.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/onboarding.js +9 -2
- package/node_modules/@buddi/gateway/dist/web/onboarding.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/passphrase-notice.d.ts +64 -0
- package/node_modules/@buddi/gateway/dist/web/passphrase-notice.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/passphrase-notice.js +112 -0
- package/node_modules/@buddi/gateway/dist/web/passphrase-notice.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/server.js +75 -7
- package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/signed-out.d.ts +19 -0
- package/node_modules/@buddi/gateway/dist/web/signed-out.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/signed-out.js +61 -3
- package/node_modules/@buddi/gateway/dist/web/signed-out.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/take-on.d.ts +28 -3
- package/node_modules/@buddi/gateway/dist/web/take-on.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/take-on.js +48 -3
- package/node_modules/@buddi/gateway/dist/web/take-on.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/uninstall.d.ts +36 -0
- package/node_modules/@buddi/gateway/dist/web/uninstall.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/uninstall.js +116 -0
- package/node_modules/@buddi/gateway/dist/web/uninstall.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/widgets.d.ts +2 -0
- package/node_modules/@buddi/gateway/dist/web/widgets.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/widgets.js +47 -13
- package/node_modules/@buddi/gateway/dist/web/widgets.js.map +1 -1
- package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/install/dist/app-layout.d.ts +4 -0
- package/node_modules/@buddi/install/dist/app-layout.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/app-layout.js +6 -0
- package/node_modules/@buddi/install/dist/app-layout.js.map +1 -1
- package/node_modules/@buddi/install/dist/cli-shim.d.ts +78 -0
- package/node_modules/@buddi/install/dist/cli-shim.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/cli-shim.js +219 -0
- package/node_modules/@buddi/install/dist/cli-shim.js.map +1 -0
- package/node_modules/@buddi/install/dist/doctor-timezone.js +1 -1
- package/node_modules/@buddi/install/dist/doctor-timezone.js.map +1 -1
- package/node_modules/@buddi/install/dist/environment.d.ts +90 -1
- package/node_modules/@buddi/install/dist/environment.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/environment.js +216 -3
- package/node_modules/@buddi/install/dist/environment.js.map +1 -1
- package/node_modules/@buddi/install/dist/kept-data.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/kept-data.js +3 -1
- package/node_modules/@buddi/install/dist/kept-data.js.map +1 -1
- package/node_modules/@buddi/install/dist/launcher.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/launcher.js +231 -6
- package/node_modules/@buddi/install/dist/launcher.js.map +1 -1
- package/node_modules/@buddi/install/dist/product-uninstall.d.ts +86 -0
- package/node_modules/@buddi/install/dist/product-uninstall.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/product-uninstall.js +150 -0
- package/node_modules/@buddi/install/dist/product-uninstall.js.map +1 -0
- package/node_modules/@buddi/install/dist/supervisor.d.ts +59 -1
- package/node_modules/@buddi/install/dist/supervisor.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/supervisor.js +288 -19
- package/node_modules/@buddi/install/dist/supervisor.js.map +1 -1
- package/node_modules/@buddi/install/dist/uninstall.d.ts +37 -1
- package/node_modules/@buddi/install/dist/uninstall.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/uninstall.js +150 -38
- package/node_modules/@buddi/install/dist/uninstall.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/runtime/dist/codex-oauth.d.ts +6 -0
- package/node_modules/@buddi/runtime/dist/codex-oauth.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/codex-oauth.js +15 -0
- package/node_modules/@buddi/runtime/dist/codex-oauth.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/openai.d.ts +9 -2
- package/node_modules/@buddi/runtime/dist/openai.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/openai.js +117 -16
- package/node_modules/@buddi/runtime/dist/openai.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-browser/dist/availability.d.ts +2 -2
- package/node_modules/@buddi/tool-browser/dist/availability.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/availability.js +2 -2
- package/node_modules/@buddi/tool-browser/dist/availability.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/controller.d.ts +1 -1
- package/node_modules/@buddi/tool-browser/dist/controller.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/controller.js +1 -1
- package/node_modules/@buddi/tool-browser/dist/controller.js.map +1 -1
- package/node_modules/@zone-eu/mailsplit/package.json +4 -4
- package/node_modules/imapflow/CHANGELOG.md +7 -0
- package/node_modules/imapflow/dist/cjs/package-info.d.ts +1 -1
- package/node_modules/imapflow/dist/cjs/package-info.js +1 -1
- package/node_modules/imapflow/dist/esm/package-info.d.ts +1 -1
- package/node_modules/imapflow/dist/esm/package-info.js +1 -1
- package/node_modules/imapflow/package.json +4 -4
- package/node_modules/libbase64/CHANGELOG.md +7 -0
- package/node_modules/libbase64/lib/libbase64.js +110 -58
- package/node_modules/libbase64/package.json +1 -1
- package/node_modules/libmime/CHANGELOG.md +7 -0
- package/node_modules/libmime/package.json +2 -2
- package/package.json +2 -2
- package/packages/cli/dist/.tsbuildinfo +1 -1
- package/packages/cli/dist/args.d.ts +2 -0
- package/packages/cli/dist/args.d.ts.map +1 -1
- package/packages/cli/dist/args.js +11 -2
- package/packages/cli/dist/args.js.map +1 -1
- package/packages/cli/dist/backup/index.d.ts +3 -1
- package/packages/cli/dist/backup/index.d.ts.map +1 -1
- package/packages/cli/dist/backup/index.js +16 -1
- package/packages/cli/dist/backup/index.js.map +1 -1
- package/packages/cli/dist/commands.d.ts.map +1 -1
- package/packages/cli/dist/commands.js +6 -4
- package/packages/cli/dist/commands.js.map +1 -1
- package/packages/cli/dist/main.d.ts +4 -1
- package/packages/cli/dist/main.d.ts.map +1 -1
- package/packages/cli/dist/main.js +41 -3
- package/packages/cli/dist/main.js.map +1 -1
- package/packages/cli/dist/mode.d.ts +41 -0
- package/packages/cli/dist/mode.d.ts.map +1 -0
- package/packages/cli/dist/mode.js +103 -0
- package/packages/cli/dist/mode.js.map +1 -0
- package/packages/cli/dist/paths.d.ts +13 -1
- package/packages/cli/dist/paths.d.ts.map +1 -1
- package/packages/cli/dist/paths.js +23 -2
- package/packages/cli/dist/paths.js.map +1 -1
- package/packages/cli/dist/uninstall-cmd.d.ts +12 -2
- package/packages/cli/dist/uninstall-cmd.d.ts.map +1 -1
- package/packages/cli/dist/uninstall-cmd.js +63 -12
- package/packages/cli/dist/uninstall-cmd.js.map +1 -1
- package/packages/cli/dist/vault-cmd.d.ts +3 -0
- package/packages/cli/dist/vault-cmd.d.ts.map +1 -1
- package/packages/cli/dist/vault-cmd.js +26 -5
- package/packages/cli/dist/vault-cmd.js.map +1 -1
- package/packages/cli/package.json +4 -0
- package/packages/core/dist/.tsbuildinfo +1 -1
- package/packages/core/dist/uninstall.d.ts +18 -0
- package/packages/core/dist/uninstall.d.ts.map +1 -1
- package/packages/core/dist/uninstall.js +47 -0
- package/packages/core/dist/uninstall.js.map +1 -1
- package/packages/gateway/dist/.tsbuildinfo +1 -1
- package/packages/gateway/dist/codex-accounts.d.ts +2 -0
- package/packages/gateway/dist/codex-accounts.d.ts.map +1 -1
- package/packages/gateway/dist/codex-accounts.js +4 -4
- package/packages/gateway/dist/codex-accounts.js.map +1 -1
- package/packages/gateway/dist/serve.d.ts.map +1 -1
- package/packages/gateway/dist/serve.js +31 -0
- package/packages/gateway/dist/serve.js.map +1 -1
- package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
- package/packages/gateway/dist/web/api-routes.js +23 -3
- package/packages/gateway/dist/web/api-routes.js.map +1 -1
- package/packages/gateway/dist/web/cli-tool.d.ts +11 -0
- package/packages/gateway/dist/web/cli-tool.d.ts.map +1 -0
- package/packages/gateway/dist/web/cli-tool.js +27 -0
- package/packages/gateway/dist/web/cli-tool.js.map +1 -0
- package/packages/gateway/dist/web/extension.d.ts +37 -0
- package/packages/gateway/dist/web/extension.d.ts.map +1 -1
- package/packages/gateway/dist/web/extension.js +138 -11
- package/packages/gateway/dist/web/extension.js.map +1 -1
- package/packages/gateway/dist/web/lock.d.ts +18 -0
- package/packages/gateway/dist/web/lock.d.ts.map +1 -1
- package/packages/gateway/dist/web/lock.js +17 -2
- package/packages/gateway/dist/web/lock.js.map +1 -1
- package/packages/gateway/dist/web/onboarding.d.ts +19 -2
- package/packages/gateway/dist/web/onboarding.d.ts.map +1 -1
- package/packages/gateway/dist/web/onboarding.js +9 -2
- package/packages/gateway/dist/web/onboarding.js.map +1 -1
- package/packages/gateway/dist/web/passphrase-notice.d.ts +64 -0
- package/packages/gateway/dist/web/passphrase-notice.d.ts.map +1 -0
- package/packages/gateway/dist/web/passphrase-notice.js +112 -0
- package/packages/gateway/dist/web/passphrase-notice.js.map +1 -0
- package/packages/gateway/dist/web/server.d.ts.map +1 -1
- package/packages/gateway/dist/web/server.js +75 -7
- package/packages/gateway/dist/web/server.js.map +1 -1
- package/packages/gateway/dist/web/signed-out.d.ts +19 -0
- package/packages/gateway/dist/web/signed-out.d.ts.map +1 -1
- package/packages/gateway/dist/web/signed-out.js +61 -3
- package/packages/gateway/dist/web/signed-out.js.map +1 -1
- package/packages/gateway/dist/web/take-on.d.ts +28 -3
- package/packages/gateway/dist/web/take-on.d.ts.map +1 -1
- package/packages/gateway/dist/web/take-on.js +48 -3
- package/packages/gateway/dist/web/take-on.js.map +1 -1
- package/packages/gateway/dist/web/uninstall.d.ts +36 -0
- package/packages/gateway/dist/web/uninstall.d.ts.map +1 -0
- package/packages/gateway/dist/web/uninstall.js +116 -0
- package/packages/gateway/dist/web/uninstall.js.map +1 -0
- package/packages/gateway/dist/web/widgets.d.ts +2 -0
- package/packages/gateway/dist/web/widgets.d.ts.map +1 -1
- package/packages/gateway/dist/web/widgets.js +47 -13
- package/packages/gateway/dist/web/widgets.js.map +1 -1
- package/packages/install/dist/.tsbuildinfo +1 -1
- package/packages/install/dist/app-layout.d.ts +4 -0
- package/packages/install/dist/app-layout.d.ts.map +1 -1
- package/packages/install/dist/app-layout.js +6 -0
- package/packages/install/dist/app-layout.js.map +1 -1
- package/packages/install/dist/cli-shim.d.ts +78 -0
- package/packages/install/dist/cli-shim.d.ts.map +1 -0
- package/packages/install/dist/cli-shim.js +219 -0
- package/packages/install/dist/cli-shim.js.map +1 -0
- package/packages/install/dist/doctor-timezone.js +1 -1
- package/packages/install/dist/doctor-timezone.js.map +1 -1
- package/packages/install/dist/environment.d.ts +90 -1
- package/packages/install/dist/environment.d.ts.map +1 -1
- package/packages/install/dist/environment.js +216 -3
- package/packages/install/dist/environment.js.map +1 -1
- package/packages/install/dist/kept-data.d.ts.map +1 -1
- package/packages/install/dist/kept-data.js +3 -1
- package/packages/install/dist/kept-data.js.map +1 -1
- package/packages/install/dist/launcher.d.ts.map +1 -1
- package/packages/install/dist/launcher.js +231 -6
- package/packages/install/dist/launcher.js.map +1 -1
- package/packages/install/dist/product-uninstall.d.ts +86 -0
- package/packages/install/dist/product-uninstall.d.ts.map +1 -0
- package/packages/install/dist/product-uninstall.js +150 -0
- package/packages/install/dist/product-uninstall.js.map +1 -0
- package/packages/install/dist/supervisor.d.ts +59 -1
- package/packages/install/dist/supervisor.d.ts.map +1 -1
- package/packages/install/dist/supervisor.js +288 -19
- package/packages/install/dist/supervisor.js.map +1 -1
- package/packages/install/dist/uninstall.d.ts +37 -1
- package/packages/install/dist/uninstall.d.ts.map +1 -1
- package/packages/install/dist/uninstall.js +150 -38
- package/packages/install/dist/uninstall.js.map +1 -1
- package/packages/runtime/dist/.tsbuildinfo +1 -1
- package/packages/runtime/dist/codex-oauth.d.ts +6 -0
- package/packages/runtime/dist/codex-oauth.d.ts.map +1 -1
- package/packages/runtime/dist/codex-oauth.js +15 -0
- package/packages/runtime/dist/codex-oauth.js.map +1 -1
- package/packages/runtime/dist/openai.d.ts +9 -2
- package/packages/runtime/dist/openai.d.ts.map +1 -1
- package/packages/runtime/dist/openai.js +117 -16
- package/packages/runtime/dist/openai.js.map +1 -1
- package/packages/tools/browser/dist/.tsbuildinfo +1 -1
- package/packages/tools/browser/dist/availability.d.ts +2 -2
- package/packages/tools/browser/dist/availability.d.ts.map +1 -1
- package/packages/tools/browser/dist/availability.js +2 -2
- package/packages/tools/browser/dist/availability.js.map +1 -1
- package/packages/tools/browser/dist/controller.d.ts +1 -1
- package/packages/tools/browser/dist/controller.d.ts.map +1 -1
- package/packages/tools/browser/dist/controller.js +1 -1
- package/packages/tools/browser/dist/controller.js.map +1 -1
- package/packages/web/dist/assets/{index-DYfeUW-0.css → index-BrA8nWN-.css} +1 -1
- package/packages/web/dist/assets/index-lmUTDd2T.js +146 -0
- package/packages/web/dist/assets/{lottie_light-DB7hai8n.js → lottie_light-CQmEj1as.js} +1 -1
- package/packages/web/dist/build.json +1 -1
- package/packages/web/dist/index.html +2 -2
- package/packages/web/dist/precache.json +4 -4
- package/packages/web/dist/assets/index-CO4OawAX.js +0 -146
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Uninstall from the product: Settings → System's "Remove buddi from this
|
|
3
|
+
* Mac" and buddi.app's buddi → Uninstall buddi…, as the supervisor serves it.
|
|
4
|
+
*
|
|
5
|
+
* Three verbs on the control socket:
|
|
6
|
+
*
|
|
7
|
+
* - `GET /uninstall`: what goes, named for the owner (the data directory,
|
|
8
|
+
* the keychain namespace, the background service, buddi.app).
|
|
9
|
+
* - `POST /uninstall/backup`: the last backup, followed to the end, moved out
|
|
10
|
+
* to `~/buddi-backups` with its envelope, and `<archive>.passphrase.txt`
|
|
11
|
+
* (0600) written beside it. The job's report carries the six words, so the
|
|
12
|
+
* page can show them, with Copy, before anything is deleted.
|
|
13
|
+
* - `POST /uninstall`: the removal itself, once the owner ticked "I wrote it
|
|
14
|
+
* down". It is `buddi uninstall --yes --no-backup --i-have-the-passphrase`
|
|
15
|
+
* (the backup and the words are already taken care of) run by someone who
|
|
16
|
+
* outlives this supervisor:
|
|
17
|
+
* - buddi.app: the supervisor writes `<data>/uninstall.json` and exits
|
|
18
|
+
* with `APP_UNINSTALL_EXIT`; the app runs the launcher's uninstall,
|
|
19
|
+
* moves itself to the Trash and quits.
|
|
20
|
+
* - npm: a detached launcher process (under `systemd-run --user` when
|
|
21
|
+
* systemd runs this supervisor, so `disable --now` cannot take it with
|
|
22
|
+
* the unit's cgroup), logging to `~/buddi-backups/uninstall-<stamp>.log`.
|
|
23
|
+
*
|
|
24
|
+
* Every effect is injected; the supervisor wires the real ones.
|
|
25
|
+
*/
|
|
26
|
+
import { randomUUID } from 'node:crypto';
|
|
27
|
+
import path from 'node:path';
|
|
28
|
+
import { passphraseFileFor, passphraseFileText } from '@buddi/core/uninstall';
|
|
29
|
+
import { keptBackupsDir } from './uninstall.js';
|
|
30
|
+
import { UNINSTALL_REQUEST_FILE } from './environment.js';
|
|
31
|
+
/** buddi.app reads this exit status as "run the uninstall, trash yourself, quit". */
|
|
32
|
+
export const APP_UNINSTALL_EXIT = 76;
|
|
33
|
+
/** The file that tells buddi.app what the owner chose, beside `installation.json`. */
|
|
34
|
+
export const UNINSTALL_REQUEST = UNINSTALL_REQUEST_FILE;
|
|
35
|
+
/** How long a finished job keeps the six words for the page to show: as long as the plan's token. */
|
|
36
|
+
export const PASSPHRASE_HELD_MS = 30 * 60_000;
|
|
37
|
+
function stamp(now) {
|
|
38
|
+
return now.toISOString().replace(/[-:]/g, '').replace(/\..*$/, '').replace('T', '-');
|
|
39
|
+
}
|
|
40
|
+
export function createProductUninstall(deps) {
|
|
41
|
+
const jobs = new Map();
|
|
42
|
+
const sleep = deps.sleep ?? ((ms) => new Promise(resolve => setTimeout(resolve, ms)));
|
|
43
|
+
const now = deps.now ?? (() => new Date());
|
|
44
|
+
let running;
|
|
45
|
+
let removing = false;
|
|
46
|
+
const phase = (job, name, detail) => {
|
|
47
|
+
job.phase = name;
|
|
48
|
+
if (job.phases[job.phases.length - 1] !== name)
|
|
49
|
+
job.phases.push(name);
|
|
50
|
+
if (detail === undefined)
|
|
51
|
+
delete job.detail;
|
|
52
|
+
else
|
|
53
|
+
job.detail = detail;
|
|
54
|
+
};
|
|
55
|
+
const run = async (job) => {
|
|
56
|
+
const started = deps.backup.create(true);
|
|
57
|
+
if ('status' in started)
|
|
58
|
+
throw new Error(started.error);
|
|
59
|
+
for (;;) {
|
|
60
|
+
const state = deps.backup.job(started.id);
|
|
61
|
+
if (state === undefined)
|
|
62
|
+
throw new Error('the backup job went missing');
|
|
63
|
+
phase(job, 'backup', state.detail ?? state.phase);
|
|
64
|
+
if (state.finishedAt !== undefined) {
|
|
65
|
+
const name = state.report?.archive;
|
|
66
|
+
if (state.phase !== 'done' || typeof name !== 'string')
|
|
67
|
+
throw new Error(`the last backup did not finish: ${state.error ?? 'no reason given'}`);
|
|
68
|
+
const archive = path.join(deps.backup.dir, name);
|
|
69
|
+
const kept = path.join(keptBackupsDir(deps.home), name);
|
|
70
|
+
phase(job, 'keeping', `moving it to ${keptBackupsDir(deps.home)}`);
|
|
71
|
+
await deps.move(archive, kept);
|
|
72
|
+
const envelope = archive.replace(/\.age$/, '.json');
|
|
73
|
+
if (envelope !== archive && deps.exists(envelope))
|
|
74
|
+
await deps.move(envelope, kept.replace(/\.age$/, '.json'));
|
|
75
|
+
const report = { archive: kept };
|
|
76
|
+
if (kept.endsWith('.age')) {
|
|
77
|
+
const phrase = await deps.backup.passphrase();
|
|
78
|
+
const file = passphraseFileFor(kept);
|
|
79
|
+
await deps.writePrivate(file, passphraseFileText(phrase, name));
|
|
80
|
+
report.passphraseFile = file;
|
|
81
|
+
report.passphrase = phrase;
|
|
82
|
+
}
|
|
83
|
+
job.report = report;
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
await sleep(500);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
/*
|
|
90
|
+
* The words live in a job's report only while the page needs them: until
|
|
91
|
+
* the removal starts, a new plan is asked for (the dialog opened again, or
|
|
92
|
+
* closed and reopened), or PASSPHRASE_HELD_MS after the job finished. They
|
|
93
|
+
* are in <archive>.passphrase.txt beside the archive after that.
|
|
94
|
+
*/
|
|
95
|
+
const forgetWords = (job) => {
|
|
96
|
+
if (job.report?.passphrase !== undefined)
|
|
97
|
+
delete job.report.passphrase;
|
|
98
|
+
};
|
|
99
|
+
const forgetAllWords = () => { for (const job of jobs.values())
|
|
100
|
+
forgetWords(job); };
|
|
101
|
+
const expire = (job) => {
|
|
102
|
+
if (job.finishedAt !== undefined && now().getTime() - Date.parse(job.finishedAt) >= PASSPHRASE_HELD_MS)
|
|
103
|
+
forgetWords(job);
|
|
104
|
+
return job;
|
|
105
|
+
};
|
|
106
|
+
return {
|
|
107
|
+
plan() {
|
|
108
|
+
forgetAllWords();
|
|
109
|
+
return deps.plan();
|
|
110
|
+
},
|
|
111
|
+
busy: () => removing || (running !== undefined && running.finishedAt === undefined),
|
|
112
|
+
job: id => {
|
|
113
|
+
const job = jobs.get(id);
|
|
114
|
+
return job === undefined ? undefined : expire(job);
|
|
115
|
+
},
|
|
116
|
+
keepLast() {
|
|
117
|
+
if (removing)
|
|
118
|
+
return { status: 409, error: 'buddi is being removed.' };
|
|
119
|
+
if (running && running.finishedAt === undefined)
|
|
120
|
+
return running;
|
|
121
|
+
const job = { id: randomUUID(), kind: 'uninstall-backup', phase: 'starting', phases: ['starting'], startedAt: now().toISOString() };
|
|
122
|
+
jobs.set(job.id, job);
|
|
123
|
+
running = job;
|
|
124
|
+
void run(job).then(() => {
|
|
125
|
+
phase(job, 'done');
|
|
126
|
+
job.finishedAt = now().toISOString();
|
|
127
|
+
setTimeout(() => forgetWords(job), PASSPHRASE_HELD_MS).unref?.();
|
|
128
|
+
}, (error) => { job.error = error instanceof Error ? error.message : String(error); phase(job, 'failed'); job.finishedAt = now().toISOString(); });
|
|
129
|
+
return job;
|
|
130
|
+
},
|
|
131
|
+
start({ keepData }) {
|
|
132
|
+
if (removing)
|
|
133
|
+
return { status: 409, error: 'buddi is already being removed.' };
|
|
134
|
+
const kept = running?.phase === 'done' ? running.report : undefined;
|
|
135
|
+
if (kept === undefined)
|
|
136
|
+
return { status: 409, error: 'Take the last backup first: the passphrase has to be with you before anything is deleted.' };
|
|
137
|
+
removing = true;
|
|
138
|
+
forgetAllWords();
|
|
139
|
+
const args = ['uninstall', '--yes', '--no-backup', '--i-have-the-passphrase', ...(keepData ? ['--keep-data'] : [])];
|
|
140
|
+
if (deps.appFinishes) {
|
|
141
|
+
void deps.writeRequest({ keepData, at: now().toISOString() }).then(() => deps.exitForApp(), () => { removing = false; });
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
deps.spawnUninstall(args, path.join(keptBackupsDir(deps.home), `uninstall-${stamp(now())}.log`));
|
|
145
|
+
}
|
|
146
|
+
return { status: 202 };
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=product-uninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product-uninstall.js","sourceRoot":"","sources":["../src/product-uninstall.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { Server } from 'node:http';
|
|
2
|
+
import type { ProductUninstall } from './product-uninstall.js';
|
|
3
|
+
import type { ShimOutcome } from './cli-shim.js';
|
|
2
4
|
import type { InstallContext } from './environment.js';
|
|
3
5
|
import type { BackupControl } from './backup.js';
|
|
4
6
|
import type { UpgradeControl, UpgradeInProgress } from './upgrade.js';
|
|
@@ -18,6 +20,49 @@ export declare function restartDelay(failures: number): number;
|
|
|
18
20
|
* made to. Long enough for an orderly exit, short enough that nobody notices.
|
|
19
21
|
*/
|
|
20
22
|
export declare const HANDOVER_GRACE_MS = 5000;
|
|
23
|
+
/**
|
|
24
|
+
* Set by `buddi uninstall` with the service stopped, to its own pid: the
|
|
25
|
+
* supervisor brings up the database and its control socket for the last
|
|
26
|
+
* backup, and nothing else — no gateway (no Telegram, no jobs), no scheduled
|
|
27
|
+
* backup, no version check. Any other value (a stray `1` in an env file or a
|
|
28
|
+
* plist) is ignored, so a normal service never runs without its gateway.
|
|
29
|
+
*/
|
|
30
|
+
export declare const BRIEF_SUPERVISOR_VAR = "BUDDI_SUPERVISE_BRIEFLY";
|
|
31
|
+
/** How often a brief supervisor checks that the uninstall that started it is still there. */
|
|
32
|
+
export declare const BRIEF_PARENT_POLL_MS = 3000;
|
|
33
|
+
/** The longest a brief supervisor stays up, whatever happens to its parent. */
|
|
34
|
+
export declare const BRIEF_MAX_MS: number;
|
|
35
|
+
/**
|
|
36
|
+
* The uninstall a brief supervisor serves: the pid in `BUDDI_SUPERVISE_BRIEFLY`
|
|
37
|
+
* when it is this process's parent and alive, else undefined (a normal run).
|
|
38
|
+
*/
|
|
39
|
+
export declare function briefParent(env: NodeJS.ProcessEnv, ppid?: number, alive?: (pid: number) => boolean): number | undefined;
|
|
40
|
+
/** `kill(pid, 0)`: is a process with this pid there (EPERM counts as there)? */
|
|
41
|
+
export declare function pidAlive(pid: number): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* The environment `buddi uninstall` starts a brief supervisor with: its own
|
|
44
|
+
* pid as the brief marker, and without the app's command-line-tool marker,
|
|
45
|
+
* which would otherwise make the child refuse `supervise` (cli-shim.ts).
|
|
46
|
+
*/
|
|
47
|
+
export declare function briefSupervisorEnv(env: NodeJS.ProcessEnv, parentPid: number, shimVar: string): NodeJS.ProcessEnv;
|
|
48
|
+
/**
|
|
49
|
+
* The brief supervisor's leash: every `pollMs` it asks whether the uninstall
|
|
50
|
+
* is still there, and calls `leave` once when it is gone or `maxMs` has
|
|
51
|
+
* passed — a Ctrl-C or a crash of `buddi uninstall` must not leave a database
|
|
52
|
+
* holding the lock. Returns the function that stops watching.
|
|
53
|
+
*/
|
|
54
|
+
export declare function watchBriefParent(options: {
|
|
55
|
+
parent: number;
|
|
56
|
+
leave: (why: string) => void;
|
|
57
|
+
alive?: (pid: number) => boolean;
|
|
58
|
+
pollMs?: number;
|
|
59
|
+
maxMs?: number;
|
|
60
|
+
now?: () => number;
|
|
61
|
+
every?: (fn: () => void, ms: number) => {
|
|
62
|
+
unref?: () => void;
|
|
63
|
+
} | number;
|
|
64
|
+
clear?: (handle: unknown) => void;
|
|
65
|
+
}): () => void;
|
|
21
66
|
/** What `/status` reports; the CLI prints it verbatim. */
|
|
22
67
|
export interface SupervisorStatus {
|
|
23
68
|
phase: string | undefined;
|
|
@@ -31,6 +76,8 @@ export interface SupervisorStatus {
|
|
|
31
76
|
/** The installed product version, and whether it is being replaced. */
|
|
32
77
|
current?: string;
|
|
33
78
|
upgrading?: boolean;
|
|
79
|
+
/** A recorded port another program took, moved within the last day: the app says it once. */
|
|
80
|
+
portNotice?: string;
|
|
34
81
|
}
|
|
35
82
|
export interface ControlSocketOptions {
|
|
36
83
|
status: () => SupervisorStatus;
|
|
@@ -41,6 +88,17 @@ export interface ControlSocketOptions {
|
|
|
41
88
|
upgrade?: UpgradeControl | undefined;
|
|
42
89
|
/** The data directory, for the one path clients may name: `<data>/incoming/`. */
|
|
43
90
|
data?: string | undefined;
|
|
91
|
+
/** Uninstall from the product (product-uninstall.ts). */
|
|
92
|
+
uninstall?: ProductUninstall | undefined;
|
|
93
|
+
/** buddi.app's command line tool (cli-shim.ts); absent outside the app. */
|
|
94
|
+
cli?: {
|
|
95
|
+
status: () => {
|
|
96
|
+
available: boolean;
|
|
97
|
+
installed: string[];
|
|
98
|
+
reason?: string;
|
|
99
|
+
};
|
|
100
|
+
install: () => Promise<ShimOutcome>;
|
|
101
|
+
} | undefined;
|
|
44
102
|
}
|
|
45
103
|
/**
|
|
46
104
|
* The maintenance API, served on a Unix domain socket in the data directory.
|
|
@@ -61,7 +119,7 @@ export interface ControlSocketOptions {
|
|
|
61
119
|
* `<data>/incoming/`, and that is checked to be under that directory, resolved,
|
|
62
120
|
* before it is passed on.
|
|
63
121
|
*/
|
|
64
|
-
export declare function controlSocket({ status, action, backup, upgrade, data }: ControlSocketOptions): Server;
|
|
122
|
+
export declare function controlSocket({ status, action, backup, upgrade, data, uninstall, cli }: ControlSocketOptions): Server;
|
|
65
123
|
/**
|
|
66
124
|
* Bind the control socket, replacing a stale file a killed supervisor left.
|
|
67
125
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAmB,MAAM,EAAkB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"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"}
|