feat: implement cova exporter add/remove/list commands#26
Merged
Conversation
Add exporter management commands that let users configure which exporters (agents) are active, discover available built-in and external exporters, and understand what each exporter does. - Add `info` operation to the exporter protocol spec and JSON schemas - Extend Dispatcher with Info and ListAvailable methods - Add FindProgramsByPrefix to ProgramQuery for PATH scanning - Add AddAgents/RemoveAgents to config with locked read-modify-write - Add orchestration layer (exporter.Add/Remove/List) returning structured results — presentation handled by Cobra commands - Add Cobra commands: exporter (parent), add, remove, list - Update docs: exporters.md, configuration.md, AGENTS.md
Worker agent definitions hardcoded `go test ./...` and `go build ./...` in their Process section, overriding preloaded skills that wrap the project's `task` runner. Replace with a directive to use skills, and add an explicit rule against running raw Go tooling directly.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📝 Summary
Users had no way to manage which exporters are configured short of editing
config.yamlby hand. This addscova exporter add/remove/listcommands for managing theagentslist, discovering available exporters(built-in + external on PATH), and understanding what each exporter does via a new
infoprotocol operation.🔑 Key Decisions
Info Protocol Operation
Added a new
infooperation to the exporter protocol spec. External exporters can self-describe by respondingto
{"operation": "info"}with their name and description. Exporters that don't implement it get a gracefulfallback (name from binary, empty description) rather than an error.
Structured List Results
exporter.Listreturns aListResultstruct (split by built-in vs external, with configured status) insteadof writing formatted text. Presentation is handled by the Cobra command layer — the library layer has no
io.Writerdependency. This keeps the library reusable for non-CLI consumers.No-Args Discoverability
cova exporter addwith no arguments lists available exporters (same aslist). This routing lives in theCobra layer since it's a CLI affordance, not library logic.
No PATH Validation on Add
Names are stored as-is without checking if a matching exporter exists. Invalid names surface at
cova applytime. This is intentional — the exporter may not be installed yet when registering it.
Worker Agent Fix
Separated into its own commit: the Go worker agent definitions were hardcoding
go test ./...andgo build ./..., overriding the preloaded skills that wrap the project'staskrunner. Fixed by replacingwith a directive to use skills.
🔄 Before & After
config.yamleditingcova exporter add/removecommandscova exporter listshows built-in + external with descriptionsapplyandremoveoperationsinfooperation for self-descriptionGetProgramPath)FindProgramsByPrefix)AddAgents/RemoveAgentswith locked read-modify-writego test/buildcommands