CHANGELOG entry for v2.6.7. Plus the session's doc reconciliation: roadmap shipped record synced through v2.6.7 (v2.3 lifecycle marked shipped, relicense AGPL->MIT batch, fork-sweep lift items, claude-agent-sdk SessionStore, ACP package fix); boocode_code_review_v2 (two fork sweeps, relicense decision = 3 AGPL files, jinja gate green); openspec v2-3 reconciled to shipped (v2.5.4-v2.5.13); openspec v2-6 Phase 0/1 + P1.5 shipped, F.1 done, remaining-phase plan + lift sources. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.9 KiB
v2.3 Provider lifecycle (Paseo-style registry)
Status: ✅ Shipped across v2.5.4–v2.5.13 (2026-05-29; reconciled 2026-05-31) — all 6 phases live; only the 3 optional Tier-2 items deferred
Depends on: v2.2 Paseo providers (snapshot, modes, commands, ACP dispatch)
Reference fork: /opt/forks/paseo
Related deferred work: docs/DEFERRED-WORK.md §2 (cold-probe skip)
Shipped mapping (reconciled 2026-05-31): Phase 1 →
v2.5.4, Phase 2 →v2.5.5, Phase 3 →v2.5.6, Phase 4 →v2.5.12, Phase 5 →v2.5.13, Phase 6 docs →v2.5.13/v2.5.14. Deferred (tasks O.1–O.3): WSprovider_snapshot_updatedframe,available_agents.enabledcolumn, diagnostic row-click modal — tracked indocs/DEFERRED-WORK.md. (Cursor was retired inv2.5.3, so the success-criterion mention below is historical.)
Why
BooCode v2.2 copied Paseo’s snapshot wire shape (modes, thinking, commands) but not Paseo’s provider lifecycle:
- Providers are hardcoded in
provider-registry.ts; adding one requires a code change and redeploy. - Uninstalled agents disappear from the picker instead of showing “not installed.”
- There is no enable/disable toggle — every probed binary appears.
- Every snapshot cache miss runs a full cold ACP probe for all installed agents (5–30s).
Paseo’s model (see /opt/forks/paseo/public-docs/providers.md) treats providers as registered entries in a config-backed registry, then probes the machine for readiness, then lets the user toggle visibility. That fits a one-person homelab: edit JSON, refresh, flip a switch — no TypeScript deploy for each new ACP CLI.
Scope
In scope
- Config file
/data/coder-providers.json— add/disable/custom ACP providers without code changes - Merged registry — built-ins + config overrides at runtime
- Snapshot lifecycle —
loading|ready|unavailable|error; always list registered providers;enabledflag - Two-tier probe — fast binary check vs slow ACP session (DB
last_probed_atgate) - Generic ACP dispatch — config entries spawn via
{ command, env }without newacp-spawncases - HTTP API — read/patch config, per-provider refresh, optional diagnostic
- Web UI — settings drawer: provider list, enable toggle, refresh, add-from-catalog (curated ~5–10 entries)
- Tests + docs — snapshot unit tests,
BOOCODER.mdrefresh contract
Out of scope (this batch)
- Full Paseo ACP catalog (30+ agents) — curate a small local catalog only
- React Native settings app port
- Replacing
acp-dispatch.tswith Paseo’sACPAgentClienthierarchy - Voice provider stack
- MCP
list_providers/inspect_providertools (Tier 2 follow-up) - WS push of snapshot updates (Tier 2 follow-up)
Non-goals
- Multi-user provider prefs (single-user homelab)
- Installing CLIs from the UI (link to install instructions only, like Paseo)
- Removing
available_agentstable — keep it as probe cache, extend withenabledor mirror config
Success criteria
- ✅ Add
amp-acpvia catalog → appears in picker after refresh without coder redeploy (catalog smoke-test entry; perboocode_code_review_v2.md§5m, Amp itself is paid-cloud, not a usable local provider) - ✅ Disable goose in settings → gone from picker, still visible as “Disabled” in settings
- ✅ opencode not on PATH → shows “Not installed” in settings, hidden from picker
- ✅ Second snapshot open within warm window completes in <500ms (no ACP spawns)
- ✅
POST /api/providers/refreshstill runs full cold probe - ✅ Existing v2.2 dispatch unchanged for built-ins (opencode, claude, qwen, goose — cursor + copilot retired
v2.5.3)
Deliverables
| Doc | Purpose |
|---|---|
design.md |
Full architecture, schemas, file map, Tier 3 reference |
tasks.md |
Numbered implementation checklist |