feat(gemini): add Gemini provider integration (#202)
* feat(gemini): add Gemini provider integration - Add gemini_config.rs module for .env file parsing - Extend AppType enum to support Gemini - Implement GeminiConfigEditor and GeminiFormFields components - Add GeminiIcon with standardized 1024x1024 viewBox - Add Gemini provider presets configuration - Update i18n translations for Gemini support - Extend ProviderService and McpService for Gemini * fix(gemini): resolve TypeScript errors, add i18n support, and fix MCP logic **Critical Fixes:** - Fix TS2741 errors in tests/msw/state.ts by adding missing Gemini type definitions - Fix ProviderCard.extractApiUrl to support GOOGLE_GEMINI_BASE_URL display - Add missing apps.gemini i18n keys (zh/en) for proper app name display - Fix MCP service Gemini cross-app duplication logic to prevent self-copy **Technical Details:** - tests/msw/state.ts: Add gemini default providers, current ID, and MCP config - ProviderCard.tsx: Check both ANTHROPIC_BASE_URL and GOOGLE_GEMINI_BASE_URL - services/mcp.rs: Skip Gemini in sync_other_side logic with unreachable!() guards - Run pnpm format to auto-fix code style issues **Verification:** - ✅ pnpm typecheck passes - ✅ pnpm format completed * feat(gemini): enhance authentication and config parsing - Add strict and lenient .env parsing modes - Implement PackyCode partner authentication detection - Support Google OAuth official authentication - Auto-configure security.auth.selectedType for PackyCode - Add comprehensive test coverage for all auth types - Update i18n for OAuth hints and Gemini config --------- Co-authored-by: Jason <farion1231@gmail.com>
This commit is contained in:
@@ -42,11 +42,27 @@ const createDefaultProviders = (): ProvidersByApp => ({
|
||||
createdAt: Date.now() + 1,
|
||||
},
|
||||
},
|
||||
gemini: {
|
||||
"gemini-1": {
|
||||
id: "gemini-1",
|
||||
name: "Gemini Default",
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GEMINI_API_KEY: "test-key",
|
||||
GOOGLE_GEMINI_BASE_URL: "https://generativelanguage.googleapis.com",
|
||||
},
|
||||
},
|
||||
category: "official",
|
||||
sortIndex: 0,
|
||||
createdAt: Date.now(),
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const createDefaultCurrent = (): CurrentProviderState => ({
|
||||
claude: "claude-1",
|
||||
codex: "codex-1",
|
||||
gemini: "gemini-1",
|
||||
});
|
||||
|
||||
let providers = createDefaultProviders();
|
||||
@@ -83,6 +99,7 @@ let mcpConfigs: McpConfigState = {
|
||||
},
|
||||
},
|
||||
},
|
||||
gemini: {},
|
||||
};
|
||||
|
||||
const cloneProviders = (value: ProvidersByApp) =>
|
||||
@@ -123,6 +140,7 @@ export const resetProviderState = () => {
|
||||
},
|
||||
},
|
||||
},
|
||||
gemini: {},
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user