feat(uninstall): one-command full uninstall with confirmation

- uninstall.sh: removes pi-kit from settings.json (string + gated object
  entries), the package clone, kit-installed public skills, ~/.config/pi-kit
  (env.sh with tokens, audit.jsonl) and the shell-rc sourcing block
- confirmation prompt by default; PI_KIT_UNINSTALL=1 for non-interactive,
  PI_KIT_KEEP_CONFIG=1 / PI_KIT_KEEP_SKILLS=1 to retain parts
- works without the pi binary (settings edited directly); notes how to
  remove pi itself
- tests: test/uninstall.test.sh against a throwaway $HOME (14 checks:
  full/partial removal, refusal without flag, idempotent re-run), wired
  into npm test
This commit is contained in:
Aleksey Shakhmatov
2026-08-06 11:45:50 +03:00
parent 7b25f0eea1
commit 035bededb0
5 changed files with 303 additions and 3 deletions
+1 -1
View File
@@ -28,7 +28,7 @@
},
"scripts": {
"typecheck": "tsc --noEmit",
"test": "node --experimental-strip-types test/guardrails.test.ts && bash test/shell.test.sh"
"test": "node --experimental-strip-types test/guardrails.test.ts && bash test/shell.test.sh && bash test/uninstall.test.sh"
},
"peerDependencies": {
"@earendil-works/pi-ai": "*",