Problem
The CLI and dashboard plugin adapter are too chunky for contributors to reason about quickly:
src/hermes_workflows/cli.py mixes parser construction, environment handling, registry/source resolution, and command execution in one large module.
- dashboard/plugin code mixes route definitions, catalog/source discovery, artifact rendering, redaction, Review Queue actions, and runtime status projection.
This is not blocking launch, but it will slow post-launch maintenance and make small changes riskier than they need to be.
Desired outcome
Split CLI and dashboard/plugin adapter code into small composable modules with obvious ownership.
Suggested CLI shape:
cli/parser.py
cli/run.py
cli/worker.py
cli/review.py
cli/status.py
cli/registry.py
Suggested dashboard/plugin shape:
dashboard/routes.py
dashboard/catalog.py
dashboard/artifacts.py
dashboard/review_actions.py
dashboard/status_projection.py
Scope / notes
Keep command names and route behavior stable. This is a modularity/refactor issue, not a UI redesign.
Acceptance criteria
- CLI
main() becomes mostly dispatch, with each command configured/handled by a focused module.
- Dashboard/plugin adapter separates routes from catalog/artifact/review/status helpers.
- Existing CLI and plugin tests pass.
- No operator-facing command/route behavior changes unless explicitly documented.
- Add a short maintainer note explaining where to add new commands/routes.
Problem
The CLI and dashboard plugin adapter are too chunky for contributors to reason about quickly:
src/hermes_workflows/cli.pymixes parser construction, environment handling, registry/source resolution, and command execution in one large module.This is not blocking launch, but it will slow post-launch maintenance and make small changes riskier than they need to be.
Desired outcome
Split CLI and dashboard/plugin adapter code into small composable modules with obvious ownership.
Suggested CLI shape:
cli/parser.pycli/run.pycli/worker.pycli/review.pycli/status.pycli/registry.pySuggested dashboard/plugin shape:
dashboard/routes.pydashboard/catalog.pydashboard/artifacts.pydashboard/review_actions.pydashboard/status_projection.pyScope / notes
Keep command names and route behavior stable. This is a modularity/refactor issue, not a UI redesign.
Acceptance criteria
main()becomes mostly dispatch, with each command configured/handled by a focused module.