From 8ae8e526d9f46c06722c90ecc6f10ab19a4764da Mon Sep 17 00:00:00 2001 From: Nexus Dev Date: Thu, 2 Apr 2026 17:44:55 +0000 Subject: [PATCH] chore: complete v1.4 Hermes Default Provider milestone 3 phases, 6 plans, 16 requirements. Archives copied to milestones/. Co-Authored-By: Claude Opus 4.6 (1M context) --- .planning/MILESTONES.md | 15 +++ .planning/PROJECT.md | 2 +- .planning/STATE.md | 2 +- .planning/milestones/v1.4-REQUIREMENTS.md | 68 ++++++++++++ .planning/milestones/v1.4-ROADMAP.md | 100 ++++++++++++++++++ .../27-hermes-adapter/27-01-PLAN.md | 0 .../27-hermes-adapter/27-01-SUMMARY.md | 0 .../27-hermes-adapter/27-CONTEXT.md | 0 .../27-hermes-adapter/27-RESEARCH.md | 0 .../27-hermes-adapter/27-VERIFICATION.md | 0 .../28-ollama-integration/28-01-PLAN.md | 0 .../28-ollama-integration/28-01-SUMMARY.md | 0 .../28-ollama-integration/28-02-PLAN.md | 0 .../28-ollama-integration/28-02-SUMMARY.md | 0 .../28-ollama-integration/28-03-PLAN.md | 0 .../28-ollama-integration/28-03-SUMMARY.md | 0 .../28-ollama-integration/28-CONTEXT.md | 0 .../28-ollama-integration/28-RESEARCH.md | 0 .../29-default-provider/29-01-PLAN.md | 0 .../29-default-provider/29-01-SUMMARY.md | 0 .../29-default-provider/29-02-PLAN.md | 0 .../29-default-provider/29-02-SUMMARY.md | 9 ++ .../29-default-provider/29-CONTEXT.md | 0 .../29-default-provider/29-RESEARCH.md | 0 24 files changed, 194 insertions(+), 2 deletions(-) create mode 100644 .planning/milestones/v1.4-REQUIREMENTS.md create mode 100644 .planning/milestones/v1.4-ROADMAP.md rename .planning/{phases => milestones/v1.4-phases}/27-hermes-adapter/27-01-PLAN.md (100%) rename .planning/{phases => milestones/v1.4-phases}/27-hermes-adapter/27-01-SUMMARY.md (100%) rename .planning/{phases => milestones/v1.4-phases}/27-hermes-adapter/27-CONTEXT.md (100%) rename .planning/{phases => milestones/v1.4-phases}/27-hermes-adapter/27-RESEARCH.md (100%) rename .planning/{phases => milestones/v1.4-phases}/27-hermes-adapter/27-VERIFICATION.md (100%) rename .planning/{phases => milestones/v1.4-phases}/28-ollama-integration/28-01-PLAN.md (100%) rename .planning/{phases => milestones/v1.4-phases}/28-ollama-integration/28-01-SUMMARY.md (100%) rename .planning/{phases => milestones/v1.4-phases}/28-ollama-integration/28-02-PLAN.md (100%) rename .planning/{phases => milestones/v1.4-phases}/28-ollama-integration/28-02-SUMMARY.md (100%) rename .planning/{phases => milestones/v1.4-phases}/28-ollama-integration/28-03-PLAN.md (100%) rename .planning/{phases => milestones/v1.4-phases}/28-ollama-integration/28-03-SUMMARY.md (100%) rename .planning/{phases => milestones/v1.4-phases}/28-ollama-integration/28-CONTEXT.md (100%) rename .planning/{phases => milestones/v1.4-phases}/28-ollama-integration/28-RESEARCH.md (100%) rename .planning/{phases => milestones/v1.4-phases}/29-default-provider/29-01-PLAN.md (100%) rename .planning/{phases => milestones/v1.4-phases}/29-default-provider/29-01-SUMMARY.md (100%) rename .planning/{phases => milestones/v1.4-phases}/29-default-provider/29-02-PLAN.md (100%) rename .planning/{phases => milestones/v1.4-phases}/29-default-provider/29-02-SUMMARY.md (95%) rename .planning/{phases => milestones/v1.4-phases}/29-default-provider/29-CONTEXT.md (100%) rename .planning/{phases => milestones/v1.4-phases}/29-default-provider/29-RESEARCH.md (100%) diff --git a/.planning/MILESTONES.md b/.planning/MILESTONES.md index 91f67a9e..fdc68e18 100644 --- a/.planning/MILESTONES.md +++ b/.planning/MILESTONES.md @@ -1,5 +1,20 @@ # Milestones +## v1.4 Hermes Default Provider (Shipped: 2026-04-02) + +**Phases completed:** 3 phases, 6 plans, 9 tasks + +**Key accomplishments:** + +- Four HERM-01..04 integration gaps closed: hermes_local in SESSIONED_LOCAL_ADAPTERS, Toolsets field edit-only, and hermes session codec round-trip tests added +- One-liner: +- Hermes agent config gains Ollama model dropdown with install callout, and AgentSkillsTab shows purple "Hermes skill" badge for native Hermes skills +- Hermes heartbeat now persists model name + VRAM via jsonb merge, and AgentOverview renders a HermesRuntimeCard showing model, native skill count, and memory usage. +- Board-auth hermes probe route + NexusOnboardingWizard Hermes fallback + adapter-neutral agent templates in NewAgentDialog +- Hermes agents created via wizard get a promptTemplate with Nexus HEARTBEAT.md workflow instructions and Mustache variables, validated by 8 integration tests covering probe logic, template contract, and bundle loading + +--- + ## v1.3 Chat & PWA (Shipped: 2026-04-02) **Phases completed:** 6 phases, 35 plans, 51 tasks diff --git a/.planning/PROJECT.md b/.planning/PROJECT.md index edef09be..08120b77 100644 --- a/.planning/PROJECT.md +++ b/.planning/PROJECT.md @@ -145,4 +145,4 @@ After every `/gsd:complete-milestone`, perform an upstream rebase before startin - Dashboard showing Hermes-specific info --- -*Last updated: 2026-04-02 — v1.4 milestone started* +*Last updated: 2026-04-02 after v1.4 milestone* diff --git a/.planning/STATE.md b/.planning/STATE.md index fd4c236e..8fd7927d 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -4,7 +4,7 @@ milestone: v1.4 milestone_name: milestone status: verifying stopped_at: Completed 29-default-provider-29-02-PLAN.md -last_updated: "2026-04-02T17:43:53.428Z" +last_updated: "2026-04-02T17:44:25.937Z" last_activity: 2026-04-02 progress: total_phases: 3 diff --git a/.planning/milestones/v1.4-REQUIREMENTS.md b/.planning/milestones/v1.4-REQUIREMENTS.md new file mode 100644 index 00000000..f3f7dc76 --- /dev/null +++ b/.planning/milestones/v1.4-REQUIREMENTS.md @@ -0,0 +1,68 @@ +# Requirements Archive: v1.4 Hermes Default Provider + +**Archived:** 2026-04-02 +**Status:** SHIPPED + +For current requirements, see `.planning/REQUIREMENTS.md`. + +--- + +# Requirements — Milestone v1.4: Hermes Default Provider + +## Hermes Integration (7) + +- [x] **HERM-01** — Hermes adapter is installed, enabled, and appears in the "Add Agent" dropdown +- [x] **HERM-02** — User can create a Hermes agent with config options (model selection, tool permissions) +- [x] **HERM-03** — Heartbeat execution spawns `hermes chat -q`, processes task, returns result +- [x] **HERM-04** — Session persistence works across heartbeats via `--resume` flag +- [x] **HERM-05** — Nexus-managed skills are visible alongside Hermes native skills in agent config +- [x] **HERM-06** — Cost tracking captures token usage and model costs for Hermes agents +- [x] **HERM-07** — Dashboard shows Hermes-specific info (model name, memory usage, native skill count) + +## Ollama Integration (5) + +- [x] **OLLA-01** — Nexus detects whether Ollama is installed locally +- [x] **OLLA-02** — User can see a list of available Ollama models when configuring a Hermes agent +- [x] **OLLA-03** — User can configure a Hermes agent with any local Ollama model +- [x] **OLLA-04** — Model recommendation based on RAM/VRAM from a shipped catalog +- [x] **OLLA-05** — If Ollama is not present, user is offered installation instructions + +## Default Provider Logic (4) + +- [x] **DFLT-01** — If no cloud provider (Claude Code, etc.) is detected, Hermes + Ollama is offered as default during onboarding +- [x] **DFLT-02** — Default agent templates (PM, Engineer, Generalist) work correctly with Hermes runtime +- [x] **DFLT-03** — GSD workflow functions correctly with Hermes as the agent runtime +- [x] **DFLT-04** — Fresh install with only Hermes + Ollama works end-to-end (no paid subscription or API key required) + +--- + +## Future Requirements + +None deferred — all PRD items included in this milestone. + +## Out of Scope + +- Multi-provider model routing (Hermes can use OpenRouter/Anthropic/OpenAI but that's Hermes config, not Nexus) +- Hermes MCP server management (Hermes handles its own MCP connections) +- Custom Hermes skill authoring UI (skills are file-based, not GUI-managed) + +## Traceability + +| Requirement | Phase | Status | +|-------------|-------|--------| +| HERM-01 | Phase 27 | Complete | +| HERM-02 | Phase 27 | Complete | +| HERM-03 | Phase 27 | Complete | +| HERM-04 | Phase 27 | Complete | +| HERM-05 | Phase 28 | Complete | +| HERM-06 | Phase 28 | Complete | +| HERM-07 | Phase 28 | Complete | +| OLLA-01 | Phase 28 | Complete | +| OLLA-02 | Phase 28 | Complete | +| OLLA-03 | Phase 28 | Complete | +| OLLA-04 | Phase 28 | Complete | +| OLLA-05 | Phase 28 | Complete | +| DFLT-01 | Phase 29 | Complete | +| DFLT-02 | Phase 29 | Complete | +| DFLT-03 | Phase 29 | Complete | +| DFLT-04 | Phase 29 | Complete | diff --git a/.planning/milestones/v1.4-ROADMAP.md b/.planning/milestones/v1.4-ROADMAP.md new file mode 100644 index 00000000..9a24c722 --- /dev/null +++ b/.planning/milestones/v1.4-ROADMAP.md @@ -0,0 +1,100 @@ +# Roadmap: v1.4 Hermes Default Provider + +**Milestone:** v1.4 +**Status:** Active +**Phases:** 27-29 (3 phases) +**Granularity:** Coarse +**Coverage:** 16/16 requirements mapped + +--- + +## Phases + +- [x] **Phase 27: Hermes Adapter** — Install and enable the Hermes adapter, expose it in the Add Agent dialog, and deliver working heartbeat execution with session persistence (completed 2026-04-02) +- [x] **Phase 28: Ollama Integration & Agent Surface** — Detect Ollama, list and recommend models, expose skill/cost/dashboard data for Hermes agents (completed 2026-04-02) +- [x] **Phase 29: Default Provider & End-to-End** — Onboarding fallback to Hermes, agent template compatibility, GSD workflow validation, full end-to-end smoke test (completed 2026-04-02) + +--- + +## Phase Details + +### Phase 27: Hermes Adapter +**Goal**: Users can create a Hermes agent in Nexus, configure it, and have it execute heartbeats that spawn `hermes chat -q`, return a result, and persist the session across runs +**Depends on**: Nothing (first phase of v1.4; depends on v1.3 milestone being shipped) +**Requirements**: HERM-01, HERM-02, HERM-03, HERM-04 +**Success Criteria** (what must be TRUE): + 1. "Hermes" appears in the "Add Agent" dropdown and can be selected to create a new agent + 2. When creating a Hermes agent, the user can pick a model and toggle tool permissions; the agent is saved and appears in the agent list + 3. When a heartbeat fires for a Hermes agent, Nexus spawns `hermes chat -q` with the task, the process completes, and the result is written back as a task update + 4. A second heartbeat on the same Hermes agent resumes the prior session via `--resume`; context from the previous run is accessible +**Plans:** 1/1 plans complete +Plans: +- [x] 27-01-PLAN.md — Close four integration gaps: SESSIONED_LOCAL_ADAPTERS, create-mode toolsets bug, duplicate constant, session codec test + +### Phase 28: Ollama Integration & Agent Surface +**Goal**: Users can see which Ollama models are available, get a recommendation for their hardware, configure any Hermes agent to use a local model, and see Hermes-specific runtime data in the dashboard and agent config +**Depends on**: Phase 27 +**Requirements**: OLLA-01, OLLA-02, OLLA-03, OLLA-04, OLLA-05, HERM-05, HERM-06, HERM-07 +**Success Criteria** (what must be TRUE): + 1. When Ollama is installed, a status indicator in the Hermes agent config shows "Ollama detected" with the version; when Ollama is absent, the config shows installation instructions with a link + 2. A Hermes agent's model selector lists all locally available Ollama models pulled from `ollama list` + 3. User can save a Hermes agent with any Ollama model from the list; heartbeats use the selected model + 4. The model selector shows a recommended model (highlighted) based on detected RAM/VRAM, derived from a shipped catalog + 5. The agent config page shows Nexus-managed skills alongside Hermes native skills in a single unified list + 6. The dashboard agent card for a Hermes agent shows model name, memory usage, and native skill count + 7. Token usage and estimated model cost are recorded per heartbeat and surfaced in the cost tracking view +**Plans:** 3/3 plans complete +Plans: +- [x] 28-01-PLAN.md — Ollama service, routes, model catalog, and unit tests +- [x] 28-02-PLAN.md — UI model selector dropdown, install callout, Hermes skill badge +- [x] 28-03-PLAN.md — Hermes stateJson runtime data and dashboard HermesRuntimeCard +**UI hint**: yes + +### Phase 29: Default Provider & End-to-End +**Goal**: A fresh Nexus install with only Hermes and Ollama works end-to-end — onboarding offers Hermes as the default, PM and Engineer templates run correctly on the Hermes runtime, and GSD workflow tasks complete successfully +**Depends on**: Phase 28 +**Requirements**: DFLT-01, DFLT-02, DFLT-03, DFLT-04 +**Success Criteria** (what must be TRUE): + 1. During onboarding, if no cloud provider API key is detected, the setup flow offers "Use Hermes (local, free)" as the default provider with a one-click path to configure it + 2. Creating a PM agent or Engineer agent from the predefined templates and assigning it to a Hermes runtime produces a working agent — heartbeats execute and return meaningful results + 3. Running a full GSD workflow task (create issue, assign to Engineer, execute heartbeat, mark complete) with Hermes as the sole runtime completes without errors + 4. A machine with only Nexus, Hermes, and Ollama installed (no Anthropic/OpenAI key) can complete the entire onboarding-to-first-task flow with no paywalls or missing-key errors +**Plans:** 2/2 plans complete +Plans: +- [x] 29-01-PLAN.md — Adapter probe route, onboarding wizard Hermes fallback, adapter-neutral templates +- [x] 29-02-PLAN.md — Hermes skill injection via promptTemplate, integration tests + +--- + +## Coverage Validation + +All 16 v1 requirements are mapped to exactly one phase. No orphans. + +| Requirement | Phase | +|-------------|-------| +| HERM-01 | 27 | +| HERM-02 | 27 | +| HERM-03 | 27 | +| HERM-04 | 27 | +| HERM-05 | 28 | +| HERM-06 | 28 | +| HERM-07 | 28 | +| OLLA-01 | 28 | +| OLLA-02 | 28 | +| OLLA-03 | 28 | +| OLLA-04 | 28 | +| OLLA-05 | 28 | +| DFLT-01 | 29 | +| DFLT-02 | 29 | +| DFLT-03 | 29 | +| DFLT-04 | 29 | + +--- + +## Progress + +| Phase | Milestone | Plans Complete | Status | Completed | +|-------|-----------|----------------|--------|-----------| +| 27. Hermes Adapter | v1.4 | 1/1 | Complete | 2026-04-02 | +| 28. Ollama Integration & Agent Surface | v1.4 | 3/3 | Complete | 2026-04-02 | +| 29. Default Provider & End-to-End | v1.4 | 2/2 | Complete | 2026-04-02 | diff --git a/.planning/phases/27-hermes-adapter/27-01-PLAN.md b/.planning/milestones/v1.4-phases/27-hermes-adapter/27-01-PLAN.md similarity index 100% rename from .planning/phases/27-hermes-adapter/27-01-PLAN.md rename to .planning/milestones/v1.4-phases/27-hermes-adapter/27-01-PLAN.md diff --git a/.planning/phases/27-hermes-adapter/27-01-SUMMARY.md b/.planning/milestones/v1.4-phases/27-hermes-adapter/27-01-SUMMARY.md similarity index 100% rename from .planning/phases/27-hermes-adapter/27-01-SUMMARY.md rename to .planning/milestones/v1.4-phases/27-hermes-adapter/27-01-SUMMARY.md diff --git a/.planning/phases/27-hermes-adapter/27-CONTEXT.md b/.planning/milestones/v1.4-phases/27-hermes-adapter/27-CONTEXT.md similarity index 100% rename from .planning/phases/27-hermes-adapter/27-CONTEXT.md rename to .planning/milestones/v1.4-phases/27-hermes-adapter/27-CONTEXT.md diff --git a/.planning/phases/27-hermes-adapter/27-RESEARCH.md b/.planning/milestones/v1.4-phases/27-hermes-adapter/27-RESEARCH.md similarity index 100% rename from .planning/phases/27-hermes-adapter/27-RESEARCH.md rename to .planning/milestones/v1.4-phases/27-hermes-adapter/27-RESEARCH.md diff --git a/.planning/phases/27-hermes-adapter/27-VERIFICATION.md b/.planning/milestones/v1.4-phases/27-hermes-adapter/27-VERIFICATION.md similarity index 100% rename from .planning/phases/27-hermes-adapter/27-VERIFICATION.md rename to .planning/milestones/v1.4-phases/27-hermes-adapter/27-VERIFICATION.md diff --git a/.planning/phases/28-ollama-integration/28-01-PLAN.md b/.planning/milestones/v1.4-phases/28-ollama-integration/28-01-PLAN.md similarity index 100% rename from .planning/phases/28-ollama-integration/28-01-PLAN.md rename to .planning/milestones/v1.4-phases/28-ollama-integration/28-01-PLAN.md diff --git a/.planning/phases/28-ollama-integration/28-01-SUMMARY.md b/.planning/milestones/v1.4-phases/28-ollama-integration/28-01-SUMMARY.md similarity index 100% rename from .planning/phases/28-ollama-integration/28-01-SUMMARY.md rename to .planning/milestones/v1.4-phases/28-ollama-integration/28-01-SUMMARY.md diff --git a/.planning/phases/28-ollama-integration/28-02-PLAN.md b/.planning/milestones/v1.4-phases/28-ollama-integration/28-02-PLAN.md similarity index 100% rename from .planning/phases/28-ollama-integration/28-02-PLAN.md rename to .planning/milestones/v1.4-phases/28-ollama-integration/28-02-PLAN.md diff --git a/.planning/phases/28-ollama-integration/28-02-SUMMARY.md b/.planning/milestones/v1.4-phases/28-ollama-integration/28-02-SUMMARY.md similarity index 100% rename from .planning/phases/28-ollama-integration/28-02-SUMMARY.md rename to .planning/milestones/v1.4-phases/28-ollama-integration/28-02-SUMMARY.md diff --git a/.planning/phases/28-ollama-integration/28-03-PLAN.md b/.planning/milestones/v1.4-phases/28-ollama-integration/28-03-PLAN.md similarity index 100% rename from .planning/phases/28-ollama-integration/28-03-PLAN.md rename to .planning/milestones/v1.4-phases/28-ollama-integration/28-03-PLAN.md diff --git a/.planning/phases/28-ollama-integration/28-03-SUMMARY.md b/.planning/milestones/v1.4-phases/28-ollama-integration/28-03-SUMMARY.md similarity index 100% rename from .planning/phases/28-ollama-integration/28-03-SUMMARY.md rename to .planning/milestones/v1.4-phases/28-ollama-integration/28-03-SUMMARY.md diff --git a/.planning/phases/28-ollama-integration/28-CONTEXT.md b/.planning/milestones/v1.4-phases/28-ollama-integration/28-CONTEXT.md similarity index 100% rename from .planning/phases/28-ollama-integration/28-CONTEXT.md rename to .planning/milestones/v1.4-phases/28-ollama-integration/28-CONTEXT.md diff --git a/.planning/phases/28-ollama-integration/28-RESEARCH.md b/.planning/milestones/v1.4-phases/28-ollama-integration/28-RESEARCH.md similarity index 100% rename from .planning/phases/28-ollama-integration/28-RESEARCH.md rename to .planning/milestones/v1.4-phases/28-ollama-integration/28-RESEARCH.md diff --git a/.planning/phases/29-default-provider/29-01-PLAN.md b/.planning/milestones/v1.4-phases/29-default-provider/29-01-PLAN.md similarity index 100% rename from .planning/phases/29-default-provider/29-01-PLAN.md rename to .planning/milestones/v1.4-phases/29-default-provider/29-01-PLAN.md diff --git a/.planning/phases/29-default-provider/29-01-SUMMARY.md b/.planning/milestones/v1.4-phases/29-default-provider/29-01-SUMMARY.md similarity index 100% rename from .planning/phases/29-default-provider/29-01-SUMMARY.md rename to .planning/milestones/v1.4-phases/29-default-provider/29-01-SUMMARY.md diff --git a/.planning/phases/29-default-provider/29-02-PLAN.md b/.planning/milestones/v1.4-phases/29-default-provider/29-02-PLAN.md similarity index 100% rename from .planning/phases/29-default-provider/29-02-PLAN.md rename to .planning/milestones/v1.4-phases/29-default-provider/29-02-PLAN.md diff --git a/.planning/phases/29-default-provider/29-02-SUMMARY.md b/.planning/milestones/v1.4-phases/29-default-provider/29-02-SUMMARY.md similarity index 95% rename from .planning/phases/29-default-provider/29-02-SUMMARY.md rename to .planning/milestones/v1.4-phases/29-default-provider/29-02-SUMMARY.md index 428f81c9..fb185ddc 100644 --- a/.planning/phases/29-default-provider/29-02-SUMMARY.md +++ b/.planning/milestones/v1.4-phases/29-default-provider/29-02-SUMMARY.md @@ -136,6 +136,15 @@ None - no external service configuration required. - Integration tests validate the full contract from probe to bundle loading - A machine with only Hermes + Ollama can complete onboarding and get working agents with no API keys +## Self-Check: PASSED + +- `ui/src/components/NexusOnboardingWizard.tsx` — FOUND +- `server/src/__tests__/29-default-provider.test.ts` — FOUND +- `server/src/services/default-agent-instructions.ts` — FOUND +- `.planning/phases/29-default-provider/29-02-SUMMARY.md` — FOUND +- Task 1 commit `9ed3e7a1` — FOUND +- Task 2 commit `0ea6d031` — FOUND + --- *Phase: 29-default-provider* *Completed: 2026-04-01* diff --git a/.planning/phases/29-default-provider/29-CONTEXT.md b/.planning/milestones/v1.4-phases/29-default-provider/29-CONTEXT.md similarity index 100% rename from .planning/phases/29-default-provider/29-CONTEXT.md rename to .planning/milestones/v1.4-phases/29-default-provider/29-CONTEXT.md diff --git a/.planning/phases/29-default-provider/29-RESEARCH.md b/.planning/milestones/v1.4-phases/29-default-provider/29-RESEARCH.md similarity index 100% rename from .planning/phases/29-default-provider/29-RESEARCH.md rename to .planning/milestones/v1.4-phases/29-default-provider/29-RESEARCH.md