feat(opencode): Phase 7 - Frontend TypeScript type definitions

- Add "opencode" to AppId type in lib/api/types.ts
- Extend McpApps interface with opencode field in types.ts
- Add OpenCode-specific types: OpenCodeModel, OpenCodeProviderOptions,
  OpenCodeProviderConfig, OpenCodeMcpServerSpec
- Add opencodeConfigDir to Settings interface
- Add importOpenCodeFromLive() to providersApi
- Fix type errors across components:
  - AppSwitcher: add opencode to icon/name mappings
  - McpFormModal: add opencode to enabledApps state
  - PromptFormModal/Panel: add opencode filename mapping
  - EndpointSpeedTest: add opencode timeout config
  - useBaseUrlState: add opencode to appType union
  - ProxyToggle: add opencode label
  - App.tsx: handle opencode fallback for SkillsPage
- Update ProxyTakeoverStatus with opencode field (always false)
- Fix test mocks in tests/msw/state.ts
This commit is contained in:
Jason
2026-01-15 16:25:14 +08:00
parent 7997b2c7b3
commit 21754a7349
13 changed files with 78 additions and 11 deletions
+8 -4
View File
@@ -57,12 +57,14 @@ const createDefaultProviders = (): ProvidersByApp => ({
createdAt: Date.now(),
},
},
opencode: {},
});
const createDefaultCurrent = (): CurrentProviderState => ({
claude: "claude-1",
codex: "codex-1",
gemini: "gemini-1",
opencode: "",
});
let providers = createDefaultProviders();
@@ -82,7 +84,7 @@ let mcpConfigs: McpConfigState = {
id: "sample",
name: "Sample Claude Server",
enabled: true,
apps: { claude: true, codex: false, gemini: false },
apps: { claude: true, codex: false, gemini: false, opencode: false },
server: {
type: "stdio",
command: "claude-server",
@@ -94,7 +96,7 @@ let mcpConfigs: McpConfigState = {
id: "httpServer",
name: "HTTP Codex Server",
enabled: false,
apps: { claude: false, codex: true, gemini: false },
apps: { claude: false, codex: true, gemini: false, opencode: false },
server: {
type: "http",
url: "http://localhost:3000",
@@ -102,6 +104,7 @@ let mcpConfigs: McpConfigState = {
},
},
gemini: {},
opencode: {},
};
const cloneProviders = (value: ProvidersByApp) =>
@@ -125,7 +128,7 @@ export const resetProviderState = () => {
id: "sample",
name: "Sample Claude Server",
enabled: true,
apps: { claude: true, codex: false, gemini: false },
apps: { claude: true, codex: false, gemini: false, opencode: false },
server: {
type: "stdio",
command: "claude-server",
@@ -137,7 +140,7 @@ export const resetProviderState = () => {
id: "httpServer",
name: "HTTP Codex Server",
enabled: false,
apps: { claude: false, codex: true, gemini: false },
apps: { claude: false, codex: true, gemini: false, opencode: false },
server: {
type: "http",
url: "http://localhost:3000",
@@ -145,6 +148,7 @@ export const resetProviderState = () => {
},
},
gemini: {},
opencode: {},
};
};