diff --git a/README.md b/README.md index caed85d..73df5ec 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,7 @@ View the code for the node. ### LLM providers -OpenAI, Anthropic (Claude), Google Gemini, Groq, xAI (Grok), OpenRouter, Ollama (local) +OpenAI, Anthropic (Claude), Google Gemini, Groq, xAI (Grok), MiniMax, OpenRouter, Ollama (local) - API keys encrypted and stored locally via Electron `safeStorage` — never sent anywhere except the provider's own API - Test connection button per provider @@ -252,6 +252,7 @@ API keys are encrypted and stored locally using Electron's `safeStorage`. They a | Google Gemini | [aistudio.google.com/app/apikey](https://aistudio.google.com/app/apikey) | | Groq | [console.groq.com/keys](https://console.groq.com/keys) | | xAI (Grok) | [console.x.ai](https://console.x.ai) | +| MiniMax | [platform.minimaxi.com](https://platform.minimaxi.com) | | OpenRouter | [openrouter.ai/keys](https://openrouter.ai/keys) | | Ollama (local) | No key needed — install [Ollama](https://ollama.com) and pull a model | @@ -274,7 +275,7 @@ ComfyNodeDesigner/ │ │ ├── index.ts # Window creation and IPC registration │ │ ├── ipc/ │ │ │ ├── fileHandlers.ts # Save/load/export/import — uses Electron dialogs + fs -│ │ │ └── llmHandlers.ts # All 7 LLM provider adapters with abort support +│ │ │ └── llmHandlers.ts # All 8 LLM provider adapters with abort support │ │ └── generators/ │ │ ├── codeGenerator.ts # Python code generation logic │ │ └── nodeImporter.ts # Python node pack parser (folder + file import) diff --git a/src/main/ipc/llmHandlers.ts b/src/main/ipc/llmHandlers.ts index 25dc7b7..66c39dd 100644 --- a/src/main/ipc/llmHandlers.ts +++ b/src/main/ipc/llmHandlers.ts @@ -238,6 +238,8 @@ function getAdapter(req: LLMGenerateRequest, apiKey: string): LLMAdapter { return getGroqAdapter(apiKey) case 'xai': return getOpenAICompatibleAdapter(apiKey, req.baseUrl ?? 'https://api.x.ai/v1') + case 'minimax': + return getOpenAICompatibleAdapter(apiKey, req.baseUrl ?? 'https://api.minimax.io/v1') case 'openrouter': return getOpenAICompatibleAdapter(apiKey, req.baseUrl ?? 'https://openrouter.ai/api/v1') case 'ollama': diff --git a/src/renderer/src/components/modals/SettingsModal.tsx b/src/renderer/src/components/modals/SettingsModal.tsx index 9395bc7..1c09fe8 100644 --- a/src/renderer/src/components/modals/SettingsModal.tsx +++ b/src/renderer/src/components/modals/SettingsModal.tsx @@ -20,7 +20,7 @@ interface SettingsModalProps { onClose: () => void } -const PROVIDERS: LLMProvider[] = ['openai', 'anthropic', 'google', 'groq', 'xai', 'openrouter', 'ollama'] +const PROVIDERS: LLMProvider[] = ['openai', 'anthropic', 'google', 'groq', 'xai', 'minimax', 'openrouter', 'ollama'] export function SettingsModal({ open, onClose }: SettingsModalProps): JSX.Element { const { llm, setProviderModel, setProviderBaseUrl, ollamaModels, fetchOllamaModels } = useSettingsStore() @@ -152,8 +152,8 @@ export function SettingsModal({ open, onClose }: SettingsModalProps): JSX.Elemen )} - {/* Base URL (Ollama / OpenRouter / xAI) */} - {(provider === 'ollama' || provider === 'openrouter' || provider === 'xai') && ( + {/* Base URL (Ollama / OpenRouter / xAI / MiniMax) */} + {(provider === 'ollama' || provider === 'openrouter' || provider === 'xai' || provider === 'minimax') && (