docs(29-01): complete default-provider plan 01 — hermes probe route and adapter-neutral templates
This commit is contained in:
parent
fb4a2066c3
commit
372df3919a
4 changed files with 137 additions and 18 deletions
|
|
@ -20,8 +20,8 @@
|
|||
|
||||
## Default Provider Logic (4)
|
||||
|
||||
- [ ] **DFLT-01** — If no cloud provider (Claude Code, etc.) is detected, Hermes + Ollama is offered as default during onboarding
|
||||
- [ ] **DFLT-02** — Default agent templates (PM, Engineer, Generalist) work correctly with Hermes runtime
|
||||
- [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
|
||||
- [ ] **DFLT-03** — GSD workflow functions correctly with Hermes as the agent runtime
|
||||
- [ ] **DFLT-04** — Fresh install with only Hermes + Ollama works end-to-end (no paid subscription or API key required)
|
||||
|
||||
|
|
@ -53,7 +53,7 @@ None deferred — all PRD items included in this milestone.
|
|||
| OLLA-03 | Phase 28 | Complete |
|
||||
| OLLA-04 | Phase 28 | Complete |
|
||||
| OLLA-05 | Phase 28 | Complete |
|
||||
| DFLT-01 | Phase 29 | Pending |
|
||||
| DFLT-02 | Phase 29 | Pending |
|
||||
| DFLT-01 | Phase 29 | Complete |
|
||||
| DFLT-02 | Phase 29 | Complete |
|
||||
| DFLT-03 | Phase 29 | Pending |
|
||||
| DFLT-04 | Phase 29 | Pending |
|
||||
|
|
|
|||
|
|
@ -59,9 +59,9 @@ Plans:
|
|||
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 plans
|
||||
**Plans:** 1/2 plans executed
|
||||
Plans:
|
||||
- [ ] 29-01-PLAN.md — Adapter probe route, onboarding wizard Hermes fallback, adapter-neutral templates
|
||||
- [x] 29-01-PLAN.md — Adapter probe route, onboarding wizard Hermes fallback, adapter-neutral templates
|
||||
- [ ] 29-02-PLAN.md — Hermes skill injection via promptTemplate, integration tests
|
||||
|
||||
---
|
||||
|
|
@ -97,4 +97,4 @@ All 16 v1 requirements are mapped to exactly one phase. No orphans.
|
|||
|-------|-----------|----------------|--------|-----------|
|
||||
| 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 | 0/2 | In progress | - |
|
||||
| 29. Default Provider & End-to-End | v1.4 | 1/2 | In Progress| |
|
||||
|
|
|
|||
|
|
@ -2,15 +2,15 @@
|
|||
gsd_state_version: 1.0
|
||||
milestone: v1.4
|
||||
milestone_name: milestone
|
||||
status: verifying
|
||||
stopped_at: Completed 28-ollama-integration-28-02-PLAN.md
|
||||
last_updated: "2026-04-02T17:09:04.787Z"
|
||||
status: executing
|
||||
stopped_at: Completed 29-default-provider-29-01-PLAN.md
|
||||
last_updated: "2026-04-02T17:33:37.897Z"
|
||||
last_activity: 2026-04-02
|
||||
progress:
|
||||
total_phases: 3
|
||||
completed_phases: 2
|
||||
total_plans: 4
|
||||
completed_plans: 4
|
||||
total_plans: 6
|
||||
completed_plans: 5
|
||||
percent: 0
|
||||
---
|
||||
|
||||
|
|
@ -21,13 +21,13 @@ progress:
|
|||
See: .planning/PROJECT.md (updated 2026-04-02)
|
||||
|
||||
**Core value:** Nexus works out of the box without any paid subscription or API key.
|
||||
**Current focus:** Phase 28 — ollama-integration
|
||||
**Current focus:** Phase 29 — default-provider
|
||||
|
||||
## Current Position
|
||||
|
||||
Phase: 29
|
||||
Plan: Not started
|
||||
Status: Phase complete — ready for verification
|
||||
Phase: 29 (default-provider) — EXECUTING
|
||||
Plan: 2 of 2
|
||||
Status: Ready to execute
|
||||
Last activity: 2026-04-02
|
||||
|
||||
Progress: [__________] 0%
|
||||
|
|
@ -94,6 +94,7 @@ Progress: [__________] 0%
|
|||
| Phase 28-ollama-integration P01 | 3 | 2 tasks | 6 files |
|
||||
| Phase 28 P03 | 12 | 2 tasks | 3 files |
|
||||
| Phase 28-ollama-integration P02 | 5min | 2 tasks | 3 files |
|
||||
| Phase 29-default-provider P01 | 8 | 2 tasks | 4 files |
|
||||
|
||||
## Accumulated Context
|
||||
|
||||
|
|
@ -189,6 +190,9 @@ Recent decisions affecting current work:
|
|||
- [Phase 28]: COALESCE jsonb concat pattern used for stateJson merge in hermes_local heartbeat — prevents overwriting existing fields
|
||||
- [Phase 28-ollama-integration]: Used useCompany() hook for companyId in hermes config-fields — consistent with AgentConfigForm pattern
|
||||
- [Phase 28-ollama-integration]: Create mode only sets model (not provider/base_url) — CreateConfigValues lacks those fields; buildHermesConfig resolves provider at runtime
|
||||
- [Phase 29-default-provider]: Probe route uses board auth (no companyId) — adapter availability is instance-level, not company-level
|
||||
- [Phase 29-default-provider]: hermes_local makes directory optional — Hermes runtime does not require cwd to operate
|
||||
- [Phase 29-default-provider]: AGENT_TEMPLATES in NewAgentDialog are adapter-neutral — /agents/new form handles adapter default logic independently
|
||||
|
||||
### Pending Todos
|
||||
|
||||
|
|
@ -200,6 +204,6 @@ None identified yet.
|
|||
|
||||
## Session Continuity
|
||||
|
||||
Last session: 2026-04-02T17:05:50.617Z
|
||||
Stopped at: Completed 28-ollama-integration-28-02-PLAN.md
|
||||
Last session: 2026-04-02T17:33:37.894Z
|
||||
Stopped at: Completed 29-default-provider-29-01-PLAN.md
|
||||
Resume file: None
|
||||
|
|
|
|||
115
.planning/phases/29-default-provider/29-01-SUMMARY.md
Normal file
115
.planning/phases/29-default-provider/29-01-SUMMARY.md
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
---
|
||||
phase: 29-default-provider
|
||||
plan: 01
|
||||
subsystem: ui
|
||||
tags: [hermes, adapter, onboarding, probe, wizard, agents]
|
||||
|
||||
# Dependency graph
|
||||
requires:
|
||||
- phase: 27-hermes-adapter
|
||||
provides: hermes_local adapter with testEnvironment method
|
||||
- phase: 28-ollama-integration
|
||||
provides: Hermes session and heartbeat integration
|
||||
provides:
|
||||
- Board-auth GET /adapters/:type/probe route with no companyId required
|
||||
- agentsApi.probeAdapter(type) client method
|
||||
- NexusOnboardingWizard auto-detects Hermes and falls back to hermes_local
|
||||
- Directory input optional when hermes_local is selected
|
||||
- NewAgentDialog AGENT_TEMPLATES adapter-neutral (role+name only, no adapterType)
|
||||
affects: [30-agent-templates, default-provider-ux, onboarding]
|
||||
|
||||
# Tech tracking
|
||||
tech-stack:
|
||||
added: []
|
||||
patterns:
|
||||
- Board-auth probe route pattern for adapter availability detection without companyId
|
||||
- useEffect probe-on-open pattern for runtime adapter detection in wizard
|
||||
- Adapter-neutral template navigation (role+name only, no adapterType in URL)
|
||||
|
||||
key-files:
|
||||
created: []
|
||||
modified:
|
||||
- server/src/routes/agents.ts
|
||||
- ui/src/api/agents.ts
|
||||
- ui/src/components/NexusOnboardingWizard.tsx
|
||||
- ui/src/components/NewAgentDialog.tsx
|
||||
|
||||
key-decisions:
|
||||
- "Probe route uses board auth (not company-scoped) — adapter availability is instance-level, not company-level"
|
||||
- "graceful probe failure keeps claude_local default — network errors or missing adapter don't break onboarding"
|
||||
- "hermes_local makes directory optional (not required) — Hermes doesn't need a cwd to operate"
|
||||
- "AGENT_TEMPLATES in NewAgentDialog are now adapter-neutral — /agents/new form handles its own adapter default logic"
|
||||
|
||||
patterns-established:
|
||||
- "Probe-on-open pattern: useEffect with effectiveOnboardingOpen trigger for lazy adapter detection"
|
||||
- "Board-auth adapter route: /adapters/:type/probe — no companyId, board auth guard only"
|
||||
|
||||
requirements-completed: [DFLT-01, DFLT-02]
|
||||
|
||||
# Metrics
|
||||
duration: 8min
|
||||
completed: 2026-04-02
|
||||
---
|
||||
|
||||
# Phase 29 Plan 01: Default Provider Summary
|
||||
|
||||
**Board-auth hermes probe route + NexusOnboardingWizard Hermes fallback + adapter-neutral agent templates in NewAgentDialog**
|
||||
|
||||
## Performance
|
||||
|
||||
- **Duration:** ~8 min
|
||||
- **Started:** 2026-04-02T17:29:41Z
|
||||
- **Completed:** 2026-04-02T17:37:00Z
|
||||
- **Tasks:** 2
|
||||
- **Files modified:** 4
|
||||
|
||||
## Accomplishments
|
||||
- Added GET /adapters/:type/probe route with board auth guard — returns {available, status, checks} without requiring a companyId
|
||||
- Added agentsApi.probeAdapter(type) client method that calls the new probe route
|
||||
- NexusOnboardingWizard now probes for hermes_local on open and uses it as defaultAdapter when available
|
||||
- Directory input is optional when hermes_local is selected; description text updated for local AI path
|
||||
- NewAgentDialog AGENT_TEMPLATES no longer hardcode adapterType — handleTemplateSelect navigates with role+name only
|
||||
|
||||
## Task Commits
|
||||
|
||||
Each task was committed atomically:
|
||||
|
||||
1. **Task 1: Add board-auth adapter probe route and frontend client** - `f85ced58` (feat)
|
||||
2. **Task 2: Update NexusOnboardingWizard and NewAgentDialog** - `a2f54282` (feat)
|
||||
|
||||
## Files Created/Modified
|
||||
- `server/src/routes/agents.ts` - Added GET /adapters/:type/probe with board auth guard
|
||||
- `ui/src/api/agents.ts` - Added agentsApi.probeAdapter(type) method
|
||||
- `ui/src/components/NexusOnboardingWizard.tsx` - Hermes probe on open, defaultAdapter state, optional directory, updated UI text
|
||||
- `ui/src/components/NewAgentDialog.tsx` - Removed adapterType from AGENT_TEMPLATES, updated handleTemplateSelect
|
||||
|
||||
## Decisions Made
|
||||
- Probe route uses board auth only (no companyId) — adapter availability is an instance-level concern
|
||||
- Probe failure is silent (catches error, keeps claude_local) — graceful degradation for missing adapter or network issues
|
||||
- hermes_local makes directory optional, not required — Hermes runtime doesn't need cwd
|
||||
- AGENT_TEMPLATES stripped of adapterType — /agents/new form is responsible for resolving the adapter default
|
||||
|
||||
## Deviations from Plan
|
||||
|
||||
None - plan executed exactly as written.
|
||||
|
||||
## Issues Encountered
|
||||
|
||||
None. Pre-existing TypeScript module resolution errors (missing @paperclipai/shared, @paperclipai/adapter-utils etc.) were already present in the codebase and unrelated to these changes.
|
||||
|
||||
## Known Stubs
|
||||
|
||||
None. All data paths are wired — probeAdapter calls the real route, defaultAdapter flows into all three agent creates.
|
||||
|
||||
## User Setup Required
|
||||
|
||||
None - no external service configuration required.
|
||||
|
||||
## Next Phase Readiness
|
||||
- Probe route is ready; Plan 02 can use it for any additional default provider logic
|
||||
- NexusOnboardingWizard now self-selects hermes_local when Hermes is installed
|
||||
- NewAgentDialog templates are adapter-neutral and ready for any future adapter default logic in /agents/new
|
||||
|
||||
---
|
||||
*Phase: 29-default-provider*
|
||||
*Completed: 2026-04-02*
|
||||
Loading…
Add table
Reference in a new issue