Skip to content

Conversation

@nikomatsakis
Copy link
Member

Summary

This PR adds agent registry support to the VSCode extension, allowing users to discover and install agents from a central registry. It also includes a built-in ElizACP agent for testing purposes.

Changes

Agent Registry Integration

  • Registry types and schema: Added Distribution types supporting npx, pipx, binary, and new symposium distribution methods
  • Built-in agents: Claude Code, Codex, and Gemini are now defined as built-in agents with their distribution configs
  • Add from registry: Users can click "+ Add agent from registry..." in the settings view to browse and install agents from the ACP registry
  • Check for updates: Manual "Check for updates" link fetches the latest registry and updates any registry-sourced agents
  • Version display: Agent versions now shown in the settings view

Built-in ElizACP Agent

  • New eliza subcommand: symposium-acp-agent eliza runs the elizacp crate directly as an ACP agent
  • symposium distribution type: For agents built into the symposium binary itself (no external spawning needed)
  • Test infrastructure: Tests now use ElizACP by default, eliminating external dependencies for the test suite

Cleanup

  • Removed component toggles: The enableSparkle and enableCrateResearcher settings have been removed - all Symposium components are now always enabled. The only user choice is which backend agent to use.

Testing

All VSCode extension tests pass, including conversation tests with ElizACP responding correctly.

Design Documentation

See md/design/vscode-extension/agent-registry.md for the design details.

nikomatsakis and others added 7 commits December 30, 2025 18:04
Describes how the VSCode extension will support multiple ACP agents:
- Settings schema storing registry-format AgentConfig entries
- Built-in agents (Claude Code, Codex, Gemini) as defaults
- Import agents from ACP registry with automatic updates
- Spawn-time resolution: npx → pipx → binary download
- Binary caching in ~/.symposium/bin/{id}/{version}/

Co-authored-by: Claude <[email protected]>
Add agent registry system that supports multiple distribution methods
(npx, pipx, binary) and merges built-in agents with user settings.

New agentRegistry.ts module provides:
- AgentConfig interface matching registry format
- Three built-in agents: zed-claude-code, zed-codex, google-gemini
- Distribution resolver (npx → pipx → binary with caching)
- Platform detection for binary downloads
- Binary caching at ~/.symposium/bin/{id}/{version}/

Settings changes:
- symposium.agents now uses distribution-based schema (breaking change)
- symposium.currentAgentId replaces symposium.currentAgent
- Built-ins live in code, settings only stores overrides/additions

Co-authored-by: Claude <[email protected]>
- Add fetchRegistry() and fetchAvailableRegistryAgents() to fetch from
  GitHub releases URL
- Add addAgentFromRegistry() to save registry entries to settings with
  _source: 'registry'
- Add showAddAgentFromRegistryDialog() with QuickPick UI showing
  available agents (filters out already-configured ones)
- Register symposium.addAgentFromRegistry command
- Add '+ Add agent from registry...' link in settings view

Co-authored-by: Claude <[email protected]>
- Registry JSON is { version, agents: [...] }, not a direct array
- Binary distribution uses 'archive' and 'cmd', not 'url' and 'executable'
- Add version display next to agent names in settings view

Co-authored-by: Claude <[email protected]>
- Add checkForRegistryUpdates() that fetches registry and updates
  any _source: 'registry' agents with newer versions
- Add '↻ Check for updates' link in settings view
- Shows progress notification while checking
- Reports which agents were updated or if all are current

Co-authored-by: Claude <[email protected]>
Remove enableSparkle and enableCrateResearcher settings from the VSCode
extension. All Symposium components (Sparkle, Ferris) are now always
enabled - the only user choice is which backend agent to use.

- Remove settings from package.json
- Remove Components section from Settings webview
- Simplify AgentConfiguration class
- Remove outdated CLI flags from agent spawning
- Update tests to remove references to removed settings
- Update symposium-acp-agent README to reflect current state

Co-authored-by: Claude <[email protected]>
- Add 'eliza' subcommand to symposium-acp-agent that runs elizacp directly
- Add 'symposium' distribution type for built-in agents
- Add ElizACP to built-in agents list
- Update test workspace to use elizacp as default agent
- Refactor agent spawning to handle symposium builtins without wrapping

Co-authored-by: Claude <[email protected]>
@nikomatsakis nikomatsakis merged commit 757d0dd into main Dec 31, 2025
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants