v2.1.0-provider-picker: BooCoder systemd migration + provider picker
- BooCoder moves from Docker to host systemd service (boocoder.service) - Agent dispatch (ACP + PTY) switches from SSH to direct spawn/exec - SSH helpers marked @deprecated (kept for one release cycle) - Provider registry (5 providers: boocode, opencode, goose, claude, qwen) - Agent probe with direct which/exec + model discovery (qwen settings, static claude models) - GET /api/providers route with installed status, models, transport fallback - ProviderPicker frontend component in CoderPane header - External provider messages route through tasks row instead of inference enqueue - Smart scroll: MessageList only auto-scrolls when near bottom (150px threshold) - DB: available_agents gets models, label, transport columns - Bug fix: loadContext SELECT includes allowed_read_paths - Bug fix: cap hit sentinel inserted before buildMessagesPayload - docker-compose.yml: boocoder service commented out, BOOCODER_URL env var added - CLAUDE.md: updated docs for systemd, provider registry, JSONB gotcha, loadContext
This commit is contained in:
46
apps/coder/src/services/provider-registry.ts
Normal file
46
apps/coder/src/services/provider-registry.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
export interface ProviderDef {
|
||||
name: string;
|
||||
label: string;
|
||||
transport: 'native' | 'acp' | 'pty';
|
||||
modelSource: 'llama-swap' | 'static';
|
||||
staticModels?: Array<{ id: string; label: string }>;
|
||||
}
|
||||
|
||||
export const PROVIDERS: ProviderDef[] = [
|
||||
{
|
||||
name: 'boocode',
|
||||
label: 'BooCoder',
|
||||
transport: 'native',
|
||||
modelSource: 'llama-swap',
|
||||
},
|
||||
{
|
||||
name: 'opencode',
|
||||
label: 'OpenCode',
|
||||
transport: 'acp',
|
||||
modelSource: 'llama-swap',
|
||||
},
|
||||
{
|
||||
name: 'goose',
|
||||
label: 'Goose',
|
||||
transport: 'acp',
|
||||
modelSource: 'llama-swap',
|
||||
},
|
||||
{
|
||||
name: 'claude',
|
||||
label: 'Claude Code',
|
||||
transport: 'pty',
|
||||
modelSource: 'static',
|
||||
staticModels: [
|
||||
{ id: 'claude-opus-4-20250514', label: 'Opus 4' },
|
||||
{ id: 'claude-sonnet-4-20250514', label: 'Sonnet 4' },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'qwen',
|
||||
label: 'Qwen Code',
|
||||
transport: 'pty',
|
||||
modelSource: 'static',
|
||||
},
|
||||
];
|
||||
|
||||
export const PROVIDERS_BY_NAME = new Map(PROVIDERS.map((p) => [p.name, p]));
|
||||
Reference in New Issue
Block a user