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
+4
View File
@@ -17,6 +17,10 @@
- Пример конфига в README приведён в соответствие с реальным `config/company.json`.
### Added
- `uninstall.sh` — полное удаление кита одной командой с подтверждением
(пакет+клон, публичные скилы, `~/.config/pi-kit` с токенами, блок в shell-rc;
флаги `PI_KIT_UNINSTALL`/`PI_KIT_KEEP_CONFIG`/`PI_KIT_KEEP_SKILLS`); покрыт тестами
(`test/uninstall.test.sh`, изолированный `$HOME`).
- Тесты: company-context (normalize/fetch/truncation), mcp-bridge (disabled-путь),
табличные кейсы permission-gate, shell-тест `create-mr.sh` (парсинг remote, dry-run).
- `package-lock.json` закоммичен (воспроизводимая установка).