Skip to content

feat(server): add plugin manager#16

Draft
Emin017 wants to merge 16 commits intoekko/resource-managerfrom
emin/feat-plugin-manager
Draft

feat(server): add plugin manager#16
Emin017 wants to merge 16 commits intoekko/resource-managerfrom
emin/feat-plugin-manager

Conversation

@Emin017
Copy link
Copy Markdown
Member

@Emin017 Emin017 commented Apr 7, 2026

No description provided.

@Emin017 Emin017 added the enhancement New feature or request label Apr 7, 2026
@Emin017 Emin017 added this to the 0.1.0-Alpha milestone Apr 29, 2026
@Emin017 Emin017 force-pushed the emin/feat-plugin-manager branch from faac9e8 to 6c07e92 Compare May 11, 2026 03:11
@Emin017 Emin017 changed the base branch from main to ekko/resource-manager May 11, 2026 03:12
@KoEkko KoEkko force-pushed the ekko/resource-manager branch from a9c9950 to 14ad148 Compare May 11, 2026 06:47
KoEkko and others added 16 commits May 11, 2026 17:08
- Added a new plugin API for managing EDA tools, including installation, uninstallation, and status tracking.
- Introduced a `PluginToolsPanel` component for displaying and interacting with available tools.
- Created a `PluginToolsView` to serve as the main interface for tool management.
- Updated routing to include a new path for the tools view.
- Enhanced the ECOS view to provide better navigation and integration with the new tools functionality.
- Implemented a store for managing tool state and progress, improving user experience during installations.
… improved UX (#64)

- Unify color system: replace hardcoded hex colors with CSS variables
(--accent-color, --text-primary, --bg-primary, --border-color, etc.)
- Add semantic status tokens (--info-*, --danger-*, --success-*,
--warn-*) with dark mode variants to index.css
- Add per-row action buttons: Install, Uninstall, Update, Retry
- Remove dead UI elements: fake pagination, non-functional Change
button, placeholder more-menu icon
- Improve empty states with icons, guidance text, and clear-filters
action
- Complete dark mode coverage via CSS variables with minimal overrides
- Refine responsive breakpoints: 3-col >1120px, tablet 768-1120px,
mobile <768px
- Optimize table: column grid, row height, uppercase headers, color-mix
hover/selected states
- Compact toolbar: pill-shaped search box aligned to 28px tab button
height, icons added to status filter tabs
- Fix selected panel layout: flex fill area for consistent button
positions
- Enlarge checkbox and fine-tune spacing throughout
- Remove Platform column and Sky130/GF180 from PDK catalog

---------

Signed-off-by: Emin <me@emin.chat>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: KoEkko <114348497+KoEkko@users.noreply.github.com>
Signed-off-by: Emin <me@emin.chat>
Signed-off-by: Emin <me@emin.chat>
Signed-off-by: Emin <me@emin.chat>
Signed-off-by: Emin <me@emin.chat>
…try services

Introduce the ecos_server.resource package with ResourceInfo/ResourceJob
schemas, a local inventory service for tool and PDK manifest management,
and a remote-first registry service with cache fallback. All 72 new tests
pass alongside the existing 29 plugin tests.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add ToolResourceService wrapping plugin installer/manager behind resource
APIs, PdkResourceService porting Tauri scan logic to Python (ics55/sky130
auto-detection), and JobTracker for SSE progress and duplicate detection.
140 tests passing (111 resource + 29 plugin, zero regressions).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Register resource router in main.py with registry URL config. Implements
list, detail, install, uninstall, PDK scan/import/activate/validate/delete,
registry refresh, and SSE event stream endpoints. 163 tests pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Prevent accidental commits of runtime registry cache and manifest JSON
files. Resource Manager data policy requires these to stay local only.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…, 409, registry, router

- Unify SSE channels on resource:{resource_id} format
- Add archive traversal validation in installer (.. and absolute path rejection)
- Return structured 409 conflict detail with job_id and event_url
- Add ResourceRegistryV1 schema with explicit version validation
- Add batch, doctor, and DELETE /api/resources/pdks/{pdk_id} endpoints
- Reorder router: static routes before dynamic /{resource_id} routes
- Make /plugin registry service remote-first without bundled JSON default
- Add 8 new tests (archive traversal, registry schema, batch, doctor, PDK delete)
- 183 total tests passing

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…odule

- Delete entire ecos_server/plugin/ (router, schemas, services, data, tests)
- Move installer service to resource module (standalone, no ManagerService dep)
- Move registry schemas (PlatformAsset, RegistryTool, ToolRegistry) to resource
- Remove plugin router from main.py
- Remove bundled tool-registry.json from pyproject.toml wheel packaging
- Fix SSE double-publish: tools.py now callback-only, JobTracker owns SSE
- Harden installer: reject tar symlinks, hardlinks, special files
- Align ResourceRegistryV1 schema_version to 2 (per design spec)
- Make PDK delete return 404 for missing entries
- Complete batch contract: support install/uninstall/activate/validate/remove
- Recreate installer tests (12) in tests/resource/
- 162 total tests passing

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ion test

- Remove generic DELETE /{resource_id} route (keep only /pdks/{pdk_id})
- Fix batch remove_reference to return 404 for missing PDKs
- Patch _tool_service.install in router install tests for determinism
- Add SSE subscription test proving one event per JobTracker.publish
- Add batch remove_reference missing 404 test
- 164 tests passing

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add batch tests: install acceptance, install unknown tool, activate, validate
- Batch install tests use _patch_installer() for determinism
- Expand .gitignore: resources/manifest.json, tools/manifest.json, manifest.json
- 168 tests passing

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ble, remove dead imports

- Extract batch_operations into dispatch table with focused per-action helpers
- Add _utc_now_iso() and _to_tool_registry() to eliminate duplicate code
- Simplify validate() in PDK service to single compute/set/return
- Use _TOOL_PREFIX/_PDK_PREFIX constants to replace magic string literals
- Remove unused imports and promote function-local imports to module level

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@Emin017 Emin017 force-pushed the emin/feat-plugin-manager branch from a3c7e1a to 044cb08 Compare May 11, 2026 09:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants