Skip to content

feat: implement cova exporter add/remove/list commands#26

Merged
MrPointer merged 3 commits into
mainfrom
feature/cova-exporters
Apr 11, 2026
Merged

feat: implement cova exporter add/remove/list commands#26
MrPointer merged 3 commits into
mainfrom
feature/cova-exporters

Conversation

@MrPointer

Copy link
Copy Markdown
Owner

📝 Summary

Users had no way to manage which exporters are configured short of editing config.yaml by hand. This adds
cova exporter add/remove/list commands for managing the agents list, discovering available exporters
(built-in + external on PATH), and understanding what each exporter does via a new info protocol operation.

🔑 Key Decisions

Info Protocol Operation

Added a new info operation to the exporter protocol spec. External exporters can self-describe by responding
to {"operation": "info"} with their name and description. Exporters that don't implement it get a graceful
fallback (name from binary, empty description) rather than an error.

Structured List Results

exporter.List returns a ListResult struct (split by built-in vs external, with configured status) instead
of writing formatted text. Presentation is handled by the Cobra command layer — the library layer has no
io.Writer dependency. This keeps the library reusable for non-CLI consumers.

No-Args Discoverability

cova exporter add with no arguments lists available exporters (same as list). This routing lives in the
Cobra 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 apply
time. 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 ./... and
go build ./..., overriding the preloaded skills that wrap the project's task runner. Fixed by replacing
with a directive to use skills.

🔄 Before & After

Area Before After
Agent management Manual config.yaml editing cova exporter add/remove commands
Exporter discovery None cova exporter list shows built-in + external with descriptions
Exporter protocol apply and remove operations + info operation for self-description
PATH scanning Exact-name lookup only (GetProgramPath) + prefix scanning (FindProgramsByPrefix)
Config mutations Subscriptions only + AddAgents/RemoveAgents with locked read-modify-write
Worker agents Hardcoded go test/build commands Defer to preloaded skills for project tooling

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.
@MrPointer MrPointer enabled auto-merge (squash) April 11, 2026 15:51
@MrPointer MrPointer merged commit 30f07ec into main Apr 11, 2026
2 checks passed
@MrPointer MrPointer deleted the feature/cova-exporters branch April 11, 2026 15:52
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