Ship Paseo-equivalent provider snapshot, AgentComposerBar, ACP dispatch rewrite with streaming/persist, permission prompts, and agent commands. Follow-up: pane-scoped chat resolution, CoderMessageList tool timeline, WS user-delta replace, and inference orphan tool_call stripping. Archive openspec v2-2; update CHANGELOG and CURRENT. Co-authored-by: Cursor <cursoragent@cursor.com>
74 lines
1.8 KiB
TypeScript
74 lines
1.8 KiB
TypeScript
export interface ProviderDef {
|
|
name: string;
|
|
label: string;
|
|
transport: 'native' | 'acp' | 'pty';
|
|
modelSource: 'llama-swap' | 'static' | 'probe';
|
|
staticModels?: Array<{ id: string; label: string }>;
|
|
/** Merge llama-swap models into probed list (OpenCode). */
|
|
mergeLlamaSwap?: boolean;
|
|
}
|
|
|
|
/**
|
|
* Model discovery rules (see provider-snapshot.ts):
|
|
* - boocode: llama-swap only
|
|
* - opencode: ACP probe + mergeLlamaSwap (prefixed llama-swap/* ids)
|
|
* - qwen: ACP probe + merge ~/.qwen/settings.json; PTY fallback reads settings only
|
|
* - cursor: ACP probe + cursor-agent models CLI fallback
|
|
* - goose / copilot: ACP probe only
|
|
* - claude: static manifest models + thinking options
|
|
*/
|
|
export const PROVIDERS: ProviderDef[] = [
|
|
{
|
|
name: 'boocode',
|
|
label: 'BooCoder',
|
|
transport: 'native',
|
|
modelSource: 'llama-swap',
|
|
},
|
|
{
|
|
name: 'cursor',
|
|
label: 'Cursor Agent',
|
|
transport: 'acp',
|
|
modelSource: 'probe',
|
|
},
|
|
{
|
|
name: 'opencode',
|
|
label: 'OpenCode',
|
|
transport: 'acp',
|
|
modelSource: 'probe',
|
|
mergeLlamaSwap: true,
|
|
},
|
|
{
|
|
name: 'goose',
|
|
label: 'Goose',
|
|
transport: 'acp',
|
|
modelSource: 'probe',
|
|
},
|
|
{
|
|
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: 'acp',
|
|
modelSource: 'probe',
|
|
},
|
|
{
|
|
name: 'copilot',
|
|
label: 'GitHub Copilot',
|
|
transport: 'acp',
|
|
modelSource: 'probe',
|
|
},
|
|
];
|
|
|
|
export const PROVIDERS_BY_NAME = new Map(PROVIDERS.map((p) => [p.name, p]));
|
|
|
|
/** External agents probed on host (excludes native boocode). */
|
|
export const PROBED_AGENT_NAMES = PROVIDERS.filter((p) => p.name !== 'boocode').map((p) => p.name);
|