feat(v2): OpenCode agent provider

- Add OpenCodeProvider (SSE, session resume, MCP via mcp-to-opencode)
- Register opencode in factory; AGENT_PROVIDER passthrough from DB
- Host: XDG mount, NO_PROXY merge, OPENCODE_* env for opencode sessions
- Dockerfile: opencode-ai CLI; docs checklist + architecture diagram
- Skill add-opencode for v2; AgentProviderName in src/types.ts

Made-with: Cursor
This commit is contained in:
Tal Moskovich
2026-04-14 22:49:38 +02:00
committed by gavrielc
parent 7639f7b1bb
commit 22150261c5
14 changed files with 690 additions and 5 deletions

View File

@@ -0,0 +1,24 @@
import { describe, it, expect } from 'bun:test';
import { createProvider, type ProviderName } from './factory.js';
import { ClaudeProvider } from './claude.js';
import { MockProvider } from './mock.js';
import { OpenCodeProvider } from './opencode.js';
describe('createProvider', () => {
it('returns ClaudeProvider for claude', () => {
expect(createProvider('claude')).toBeInstanceOf(ClaudeProvider);
});
it('returns OpenCodeProvider for opencode', () => {
expect(createProvider('opencode')).toBeInstanceOf(OpenCodeProvider);
});
it('returns MockProvider for mock', () => {
expect(createProvider('mock')).toBeInstanceOf(MockProvider);
});
it('throws for unknown name', () => {
expect(() => createProvider('bogus' as ProviderName)).toThrow(/Unknown provider/);
});
});