Implements dual-editor pattern for Gemini providers, following the Codex architecture:
- Environment variables (.env format) editor
- Extended configuration (config.json) editor with common config support
New Components:
- GeminiConfigSections: Separate sections for env and config editing
- GeminiCommonConfigModal: Modal for editing common config snippets
New Hooks:
- useGeminiConfigState: Manages env/config separation and conversion
- Converts between .env string format and JSON object
- Validates JSON config structure
- Extracts API Key and Base URL from env
- useGeminiCommonConfig: Handles common config snippets
- Deep merge algorithm for combining configs
- Remove common config logic for toggling off
- localStorage persistence for snippets
Features:
- Format buttons for both env and config editors
- Common config toggle with deep merge/remove
- Error validation and display
- Auto-open modal on common config errors
Configuration Structure:
{
"env": {
"GOOGLE_GEMINI_BASE_URL": "https://...",
"GEMINI_API_KEY": "sk-...",
"GEMINI_MODEL": "gemini-2.5-pro"
},
"config": {
"timeout": 30000,
"maxRetries": 3
}
}
This brings Gemini providers to feature parity with Claude and Codex.
15 lines
830 B
TypeScript
15 lines
830 B
TypeScript
export { useProviderCategory } from "./useProviderCategory";
|
|
export { useApiKeyState } from "./useApiKeyState";
|
|
export { useBaseUrlState } from "./useBaseUrlState";
|
|
export { useModelState } from "./useModelState";
|
|
export { useCodexConfigState } from "./useCodexConfigState";
|
|
export { useApiKeyLink } from "./useApiKeyLink";
|
|
export { useCustomEndpoints } from "./useCustomEndpoints";
|
|
export { useTemplateValues } from "./useTemplateValues";
|
|
export { useCommonConfigSnippet } from "./useCommonConfigSnippet";
|
|
export { useCodexCommonConfig } from "./useCodexCommonConfig";
|
|
export { useSpeedTestEndpoints } from "./useSpeedTestEndpoints";
|
|
export { useCodexTomlValidation } from "./useCodexTomlValidation";
|
|
export { useGeminiConfigState } from "./useGeminiConfigState";
|
|
export { useGeminiCommonConfig } from "./useGeminiCommonConfig";
|