Skip to content

feat(cli): wire plugin install/update/docker/link/sync/export commands#15

Merged
Emperiusm merged 7 commits intomainfrom
feature/phase3e-wiring
Apr 17, 2026
Merged

feat(cli): wire plugin install/update/docker/link/sync/export commands#15
Emperiusm merged 7 commits intomainfrom
feature/phase3e-wiring

Conversation

@Emperiusm
Copy link
Copy Markdown
Owner

Summary

Wires up the placeholder CLI commands in plugin_cli.py to orchestrate the plugin-core library. After this, the full plugin lifecycle works end-to-end from the CLI.

Now fully wired:

  • install — local path OR registry lookup + shallow git clone, transactional pipeline (stage → compose generation → integrity hash → promote → register)
  • update — clone new version, stop containers, replace, restart, update DB
  • up / down / logs / pull — Docker compose subprocess wrappers
  • exec — validates command via enforcement.validate_command() before running
  • setup — regenerates compose from stored manifest
  • link / unlink — symlink (Unix) or copy (Windows), records mode=LINKED
  • sync — lockfile or plugin set, with optional --freeze output
  • export / import — gzipped tar archives with manifest bridging

Shared _do_install helper used by install, update, sync, and import.

Test plan

  • 19 tests passing (10 existing + 9 new)
  • install from local path with full pipeline
  • link + unlink round trip
  • export + import round trip
  • Manual: install a real plugin from local path, run up against a real compose file

🤖 Generated with Claude Code

Emperiusm and others added 7 commits April 15, 2026 15:26
Apply PrimeVue dark theme variables (--p-surface-*) to CypherEditor,
QueryResultsPane, InlineQueryPanel, ChainLegend, ChainQueryView, and
ScanView task grid so all pages are visually consistent on Aura Dark.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fully implement all previously-stubbed plugin CLI commands:
- install: local-path pipeline (stage/compose/promote/register) + registry fallback via git clone
- update: clone repo, stop containers, reinstall, restart containers
- up/down/logs/pull: docker compose wrappers resolved from active compose path
- exec: sandbox-validated docker exec with enforcement.validate_command
- setup: regenerate compose file from stored manifest
- link/unlink: symlink (Unix) or copytree (Windows) dev workflow with InstallMode.LINKED
- sync: --lockfile and --set support, optional --freeze output
- export: tarball active version dir to .otp archive
- import: extract .otp, bridge manifest.yaml->opentools-plugin.yaml, run install pipeline

Add 9 new tests covering install, up-no-compose, link/unlink, export/import, sync.
All 19 tests pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@Emperiusm Emperiusm merged commit d11489f into main Apr 17, 2026
1 check failed
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.

1 participant