Skip to content

feat(cli): restore plugin uninstall command across all hosts#1

Open
iamzimozic wants to merge 1 commit into
EverMind-AI:mainfrom
iamzimozic:main
Open

feat(cli): restore plugin uninstall command across all hosts#1
iamzimozic wants to merge 1 commit into
EverMind-AI:mainfrom
iamzimozic:main

Conversation

@iamzimozic

@iamzimozic iamzimozic commented Jun 20, 2026

Copy link
Copy Markdown

This reinstates the uninstall capability retired in V1. Implements a safe Remover interface for JSON, TOML, and YAML configurations that gracefully removes EverMe entries without destroying user data.

Summary

The uninstall command was retired during the V1 MVP slimming pass under the assumption that manual cleanup would suffice. However, community feedback indicated that tracking down tokens across multiple hidden formats (JSON, TOML, YAML) causes significant friction. This PR resurrects the feature using the existing registry architecture, allowing users to cleanly strip EverMe configurations from all supported platforms using evercli plugin uninstall [--all].

Changes

Interface Extension: Added a Remover interface to internal/plugin/types.go extending Writer.

JSON Engine (mcp.go): Implemented AST-safe map deletion for Cursor, Claude Desktop, and Gemini CLI, preserving sibling MCP servers and avoiding 0-byte file corruption via the existing atomic writer.

TOML Engine (codex.go): Mapped go-toml/v2 deletion logic to safely strip the marketplace, plugin enablement, and MCP server blocks without clobbering other Codex settings.

YAML/Physical Engine (hermes.go): Implemented logic to remove the physical embedded Python plugin directory, the everme.env credentials file, and the memory.provider YAML setting.

CLI Routing: Added the Uninstall orchestrator to service.go and wired up the evercli plugin uninstall command with an --all target flag.

Test Plan

Details: Ran local integration tests using environment overrides (e.g., EVERCLI_CURSOR_CONFIG_DIR=/tmp/everme-test) with a mock mcp.json containing sibling entries. Verified that the everme-memory block was cleanly extracted while other tools (like a mock weather-bot) remained untouched and the JSON structure was perfectly preserved.

  • CLI tests pass, if cli/ changed
  • Plugin workspace tests pass, if plugins/ changed
  • Manual verification completed, if behavior changed

Security

  • No real emk_*, evt_*, cookies, private URLs, or production logs are included

Related Issues

This reinstates the uninstall capability retired in V1. Implements a safe Remover interface for JSON, TOML, and YAML configurations that gracefully removes EverMe entries without destroying user data.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature request: official uninstall command (or an agent-ready removal prompt)

1 participant