Files
galaxy/.agents/acp-task-list.md
T

162 lines
6.7 KiB
Markdown

# ACP Implementation Task List
Status key: `[ ]` not started · `[~]` in progress · `[x]` complete · `[!]` blocked
Execution mode: autonomous batch implementation. Continue through all phases without pausing for confirmation; stop only for a genuine external blocker or after final validation.
## Phase 1 — Shared types
- [~] Define shared normalized ACP agent metadata.
- [~] Define shared ACP capability representation.
- [x] Define shared ACP config option/value representation.
- [~] Define structured `AcpModelSelection`.
- [x] Add protocol-to-Galaxy conversion helpers.
- [ ] Add selection identity/equality helpers.
- [ ] Replace avoidable ad hoc JSON representations.
- [ ] Add conversion and ordering tests.
- [x] Persist ACP selections in `AcpConversationData`.
- [x] Preserve selections across forks while clearing session IDs.
## Phase 2 — ACP discovery
- [x] Advertise supported boolean config options during initialization.
- [x] Capture `initialize.agentInfo`.
- [x] Capture initialization capabilities.
- [x] Add manager-level metadata accessors.
- [x] Add manager-level discovery API.
- [x] Create temporary discovery sessions.
- [x] Read `configOptions` from `session/new`.
- [x] Preserve option/value ordering.
- [x] Remove placeholder synchronous config accessor once async discovery is available.
- [x] Support custom executable discovery.
- [x] Close/delete temporary sessions when supported.
- [x] Preserve last-known-good cache on failure.
- [x] Add timeout/cancellation handling.
- [~] Add fake-agent discovery tests.
## Phase 3 — Runtime config handling
- [x] Carry selected config values in `AcpTurnRequest`.
- [x] Apply selected values after `session/new`.
- [x] Export `SessionConfigOptionValue` from `galaxy_acp`.
- [x] Capture `session/set_config_option` responses.
- [x] Replace complete current config state after setting an option.
- [x] Add async runtime result channels for discovery/config state.
- [x] Emit `ConfigOptions` for `config_option_update` notifications.
- [x] Reconcile dependent options.
- [x] Reject/drop stale selections safely.
- [x] Reconcile restored sessions with current agent config.
- [x] Track latest config options in session metadata.
- [x] Enforce all capability-gated behavior.
- [x] Add runtime config tests.
## Phase 4 — Settings.toml
- [x] Add `ai.acp.agents` setting.
- [x] Store agent metadata/config options in settings.
- [~] Store capabilities in normalized form.
- [x] Store discovery timestamps/source/version.
- [x] Wire discovery results into `AISettings.acp_agents`.
- [x] Atomically persist discovery results.
- [ ] Invalidate cache on launch/version changes.
- [ ] Preserve custom launch settings during refresh.
- [x] Refresh model preferences when settings change.
- [ ] Handle malformed/stale cache values.
- [ ] Add settings schema/round-trip tests.
- [ ] Add documented settings example.
## Phase 5 — ACP Registry
- [ ] Implement registry client.
- [ ] Parse registry version and agents.
- [ ] Parse npm/npx distributions.
- [ ] Parse uvx distributions.
- [ ] Parse platform binary distributions.
- [ ] Select OS/architecture distribution.
- [ ] Preserve command/args/env/archive/checksum/icon/version metadata.
- [ ] Validate registry commands, URLs, environment names, and checksums.
- [ ] Cache last-known-good registry data.
- [ ] Add explicit user-confirmed installation flow.
- [ ] Preserve custom agents.
- [ ] Add registry tests.
## Phase 6 — Model selector
- [x] Inject ACP choices through `LLMPreferences`.
- [~] Use structured selection data instead of parsing IDs.
- [ ] Group entries by ACP agent.
- [x] Display model/mode labels such as `GPT 5.4 Sol (Ultra)`.
- [ ] Use `model` as primary selector dimension.
- [ ] Use `mode`/`thought_level` as secondary display/configuration.
- [ ] Keep `model_config`/unknown options in advanced configuration UI.
- [ ] Avoid invalid dependent combinations.
- [ ] Refresh choices after discovery/config updates.
- [ ] Propagate selected values into conversation persistence.
- [ ] Use selected identity in transcripts/usage/restoration.
- [ ] Add selector propagation tests.
## Phase 7 — Agent Settings UI
- [ ] Add registry-backed agent list.
- [ ] Show icon/name/description/version/install status.
- [ ] Add registry refresh action.
- [x] Add ACP capability discovery action.
- [x] Show discovery status/timestamp/errors.
- [ ] Show discovered models/modes/options.
- [ ] Show advanced options without duplicating selector logic.
- [ ] Add explicit install/configure confirmation.
- [ ] Preserve custom command/args.
- [ ] Use shared UI themes/components.
- [ ] Add settings UI tests.
## Phase 8 — Credentials
- [x] Keep global Keychain integration intact.
- [ ] Audit ACP/OpenAI/LiteLLM plaintext credential paths.
- [ ] Store Galaxy-managed ACP/provider credentials in secure storage.
- [ ] Keep only non-secret references in settings.toml.
- [ ] Migrate existing plaintext credentials.
- [ ] Define unavailable-secure-storage behavior.
- [ ] Keep ACP-owned credentials under ACP agent control.
- [ ] Add credential migration/security tests.
## Phase 9 — Backend/translators
- [x] Verify selection flow from UI to request creation.
- [x] Verify persistence/restoration/fork flow.
- [~] Use complete structured ACP identity in translators.
- [ ] Preserve OpenAI/LiteLLM routing.
- [ ] Preserve Bedrock routing.
- [ ] Keep ACP assumptions isolated from provider translators.
- [ ] Add OpenCode + LiteLLM integration coverage.
- [ ] Verify cancellation/steering/tools/usage/session restore.
## Phase 10 — Cleanup and validation
- [ ] Remove duplicate ACP representations.
- [ ] Remove dead/temporary ACP helpers.
- [ ] Review exhaustive matches.
- [ ] Run `./script/format`.
- [ ] Run targeted ACP/persistence/settings/model tests.
- [x] Run `cargo check --workspace`.
- [ ] Run nextest.
- [ ] Run clippy with warnings denied.
- [ ] Run doc tests.
- [ ] Review Cargo.lock changes.
- [ ] Review registry execution security.
- [ ] Review credential migration security.
- [ ] Confirm Settings, Agent screen, selector, runtime, persistence, registry, and secure storage are synchronized.
## Completion gates
- [ ] Live ACP discovery works for OpenCode and Codex.
- [ ] Discovered options persist in `ai.acp.agents`.
- [ ] Selector shows valid ACP model/config choices.
- [ ] Selected structured values reach `session/set_config_option` before prompting.
- [x] Dynamic agent config updates refresh Galaxy state.
- [ ] Restored/forked conversations retain correct ACP selections.
- [ ] Registry metadata supports known and custom agents.
- [ ] Credentials are not written to settings.toml.
- [ ] Existing Bedrock/OpenAI/LiteLLM/MCP/auth behavior is unchanged.
- [~] Core validation commands pass; `cargo-nextest` is unavailable in the environment.