Skip to content

feat(providers): add MiniMax support - #1058

Open
octo-patch wants to merge 1 commit into
siteboon:mainfrom
octo-patch:octo/20260727-provider-add-recvpdr8LPLPMD
Open

feat(providers): add MiniMax support#1058
octo-patch wants to merge 1 commit into
siteboon:mainfrom
octo-patch:octo/20260727-provider-add-recvpdr8LPLPMD

Conversation

@octo-patch

@octo-patch octo-patch commented Jul 27, 2026

Copy link
Copy Markdown

Reason: Add MiniMax provider support with configured models and regional API endpoints.

Summary:

  • Register MiniMax with MiniMax-M3 and MiniMax-M2.7 model selection.
  • Apply global and China endpoint selection, credentials, and model-specific context windows.
  • Surface MiniMax in provider selection, configuration, session history, conversation search, MCP, skills, and API routes.
  • Add focused model, endpoint, runtime, and transcript detection coverage.

Checks:

  • ELECTRON_SKIP_BINARY_DOWNLOAD=1 npm ci
  • npm run typecheck
  • TSX_TSCONFIG_PATH=server/tsconfig.json node --import tsx --test server/modules/providers/tests/*.test.ts (47 passed)
  • npm run lint (0 errors; existing warnings)
  • npm run build (passed with existing build warnings)
  • git diff --check
  • Configured secret scan against the diff

Summary by CodeRabbit

  • New Features
    • Added MiniMax as a supported AI provider for chat and agent workflows.
    • Added MiniMax model selection, authentication, regional configuration, and session support.
    • Added MiniMax branding throughout provider selectors, settings, onboarding, messages, and MCP tools.
    • Updated API documentation to include MiniMax provider and model options.

@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

MiniMax is integrated as a provider across server runtime execution, authentication, models, session synchronization, API routing, chat state, provider selection, settings, MCP, skills, documentation, and UI rendering.

Changes

MiniMax provider

Layer / File(s) Summary
Provider core and configuration
server/shared/types.ts, server/modules/providers/list/minimax/*, server/modules/providers/provider.*, server/modules/providers/services/provider-capabilities.service.ts, server/modules/providers/tests/minimax-provider.test.ts
Adds MiniMax models, endpoint and credential resolution, authentication, delegated provider services, registry support, capabilities, routing, and tests.
Runtime execution and route wiring
server/claude-sdk.js, server/minimax-sdk.ts, server/index.js, server/routes/agent.js, server/routes/commands.js, .env.example, public/api-docs.html
Adds provider-aware SDK execution, MiniMax session startup and cancellation, route validation, model selection, environment configuration, and API documentation.
Session detection and search
server/modules/providers/list/claude/claude-session-synchronizer.provider.ts, server/modules/providers/services/session-conversations-search.service.ts, server/modules/providers/services/session-synchronizer.service.ts
Detects MiniMax transcripts and preserves the provider through session synchronization, search results, and processed-provider counts.
Chat provider state and selection
src/components/chat/**, src/components/llm-logo-provider/*
Adds MiniMax model persistence, generalized provider-model state, selection UI support, labels, message rendering, and a MiniMax logo.
Authentication and settings surfaces
src/components/provider-auth/**, src/components/settings/**, src/components/mcp/constants.ts, src/components/onboarding/**, src/components/skills/**, src/types/app.ts, server/modules/providers/tests/mcp.test.ts
Adds MiniMax authentication status, onboarding and settings entries, MCP and skills mappings, shared types, styling, and MCP coverage.

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant AgentRoute
  participant MiniMaxSDK
  participant ClaudeSDK
  Client->>AgentRoute: Request provider=minimax
  AgentRoute->>MiniMaxSDK: Start MiniMax session
  MiniMaxSDK->>ClaudeSDK: Execute with MiniMax runtime configuration
  ClaudeSDK-->>Client: Stream provider-scoped events
Loading

Possibly related PRs

Suggested reviewers: viper151, blackmammoth

Poem

I’m a rabbit with a MiniMax key,
Hopping through models happily.
Routes bloom, sessions stream,
Red logos glow and gleam—
Provider carrots for you and me.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: adding MiniMax provider support.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
server/claude-sdk.js (1)

308-324: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Apply the override in the legacy usage fallback too.

The modelUsage branch still reads process.env.CONTEXT_WINDOW, so fallback MiniMax events report the wrong total context window.

Proposed fix
-  const contextWindow = parseInt(process.env.CONTEXT_WINDOW, 10) || 160000;
+  const contextWindow = Number.isFinite(contextWindowOverride)
+    ? contextWindowOverride
+    : parseInt(process.env.CONTEXT_WINDOW, 10) || 160000;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@server/claude-sdk.js` around lines 308 - 324, The context window override is
not applied in the legacy modelUsage fallback of extractTokenBudget. Update that
fallback to use contextWindowOverride when it is finite, matching the existing
messageUsage branch, and only read process.env.CONTEXT_WINDOW when no valid
override is provided.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@server/modules/providers/list/minimax/minimax-auth.provider.ts`:
- Around line 12-19: Update checkInstalled() to retain the result returned by
spawn.sync and return false when its error property indicates the executable
failed to launch; preserve the existing true result for successful execution and
catch-based handling for thrown failures.

In `@server/modules/providers/list/minimax/minimax-models.provider.ts`:
- Around line 62-69: Update getCurrentActiveModel to read the persisted session
model override before falling back to
buildDefaultProviderCurrentActiveModel(MINIMAX_MODELS), ensuring the model
selected by changeActiveModel is returned for the current session while
retaining the catalog default when no override exists.

In `@server/modules/providers/list/minimax/minimax.provider.ts`:
- Around line 106-114: Implement MiniMaxSessionSynchronizer.synchronize() and
synchronizeFile() so MiniMax transcripts are discovered rather than returning
hardcoded no-op values. Reuse the ClaudeProvider session synchronizer/file
indexer when MiniMax transcripts share Claude artifacts; otherwise add
MiniMax-specific scanning, ensuring synchronize() reports discovered sessions
and synchronizeFile() returns the synchronized file path.

In `@src/components/provider-auth/view/ProviderLoginModal.tsx`:
- Around line 44-46: Update the MiniMax branch in the provider
command/configuration logic so its absent-customCommand default performs the
actual MiniMax credential setup or presents the API-key form, rather than
executing the diagnostic `claude --version` command. Preserve customCommand
handling for configured providers and ensure the default flow stores or applies
the MiniMax API endpoint and token required for authentication.

In
`@src/components/settings/view/tabs/agents-settings/sections/AgentCategoryContentSection.tsx`:
- Line 32: Update the permissions branch in AgentCategoryContentSection so
MiniMax does not reuse Claude’s provider context: add MiniMax-specific
permission state and handlers, pass selectedAgent through to the permissions UI,
and read/write MiniMax permissions independently. If that contract is
unavailable, restrict the branch to Claude instead of rendering MiniMax with
Claude state.

---

Outside diff comments:
In `@server/claude-sdk.js`:
- Around line 308-324: The context window override is not applied in the legacy
modelUsage fallback of extractTokenBudget. Update that fallback to use
contextWindowOverride when it is finite, matching the existing messageUsage
branch, and only read process.env.CONTEXT_WINDOW when no valid override is
provided.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 70b2e5e8-9206-4c3e-8c33-d3cc16303c81

📥 Commits

Reviewing files that changed from the base of the PR and between 27eaf01 and d080265.

📒 Files selected for processing (41)
  • .env.example
  • public/api-docs.html
  • server/claude-sdk.js
  • server/index.js
  • server/minimax-sdk.ts
  • server/modules/providers/list/claude/claude-session-synchronizer.provider.ts
  • server/modules/providers/list/minimax/minimax-auth.provider.ts
  • server/modules/providers/list/minimax/minimax-config.ts
  • server/modules/providers/list/minimax/minimax-models.provider.ts
  • server/modules/providers/list/minimax/minimax.provider.ts
  • server/modules/providers/provider.registry.ts
  • server/modules/providers/provider.routes.ts
  • server/modules/providers/services/provider-capabilities.service.ts
  • server/modules/providers/services/session-conversations-search.service.ts
  • server/modules/providers/services/session-synchronizer.service.ts
  • server/modules/providers/tests/mcp.test.ts
  • server/modules/providers/tests/minimax-provider.test.ts
  • server/routes/agent.js
  • server/routes/commands.js
  • server/shared/types.ts
  • src/components/chat/hooks/useChatComposerState.ts
  • src/components/chat/hooks/useChatProviderState.ts
  • src/components/chat/view/ChatInterface.tsx
  • src/components/chat/view/subcomponents/ChatMessagesPane.tsx
  • src/components/chat/view/subcomponents/CommandResultModal.tsx
  • src/components/chat/view/subcomponents/MessageComponent.tsx
  • src/components/chat/view/subcomponents/ProviderSelectionEmptyState.tsx
  • src/components/llm-logo-provider/MiniMaxLogo.tsx
  • src/components/llm-logo-provider/SessionProviderLogo.tsx
  • src/components/mcp/constants.ts
  • src/components/onboarding/view/subcomponents/AgentConnectionsStep.tsx
  • src/components/provider-auth/types.ts
  • src/components/provider-auth/view/ProviderLoginModal.tsx
  • src/components/settings/constants/constants.ts
  • src/components/settings/view/tabs/agents-settings/AgentListItem.tsx
  • src/components/settings/view/tabs/agents-settings/AgentsSettingsTab.tsx
  • src/components/settings/view/tabs/agents-settings/sections/AgentCategoryContentSection.tsx
  • src/components/settings/view/tabs/agents-settings/sections/AgentSelectorSection.tsx
  • src/components/settings/view/tabs/agents-settings/sections/content/AccountContent.tsx
  • src/components/skills/view/ProviderSkills.tsx
  • src/types/app.ts

Comment on lines +12 to +19
private checkInstalled(): boolean {
const cliPath = resolveClaudeCodeExecutablePath(process.env.CLAUDE_CLI_PATH);
try {
spawn.sync(cliPath, ['--version'], { stdio: 'ignore', timeout: 5000 });
return true;
} catch {
return false;
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail
tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT
curl -fsSL https://registry.npmjs.org/cross-spawn/7.0.3 \
  | jq -r '.dist.tarball' \
  | xargs -I{} curl -fsSL "{}" \
  | tar -xz -C "$tmp"
rg -n -C3 'spawnSync|result\.error|spawn\.sync' "$tmp/package"

Repository: siteboon/claudecodeui

Length of output: 4446


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Locate and inspect the referenced file and related spawn checks without running repo code.
file="server/modules/providers/list/minimax/minimax-auth.provider.ts"
if [ -f "$file" ]; then
  echo "=== referenced file outline ==="
  ast-grep outline "$file" --view expanded || true
  echo "=== referenced file lines 1-80 ==="
  sed -n '1,80p' "$file" | cat -n
else
  echo "Referenced file not found: $file"
fi

echo "=== usages of checkInstalled / resolveClaudeCodeExecutablePath / CLAUDE_CLI_PATH ==="
rg -n "checkInstalled|resolveClaudeCodeExecutablePath|CLAUDE_CLI_PATH|spawn\.sync|spawnSync|error" server/modules/providers/library server/modules/providers/list/minimax -S || true

echo "=== deterministic probe of Node child_process.spawnSync behavior for missing executable ==="
node - <<'JS'
const { spawnSync } = require('child_process');
const result = spawnSync('/tmp/coderabbit-shell-logs/shell-output-SHOULD_NOT_EXIST_MISSING_EXECUTABLE_FOR_PROBE', ['--version'], { stdio: 'ignore', timeout: 5000 });
console.log(JSON.stringify({
  status: result.status,
  hasCode: Object.hasOwn(result, 'status'),
  hasError: Object.hasOwn(result, 'error'),
  errorName: result.error && result.error.name,
  code: result.error && result.error.code,
  errno: result.error && result.error.errno
}, null, 2));
JS

Repository: siteboon/claudecodeui

Length of output: 3558


Check the synchronous spawn result for launch failures.

spawn.sync() returns a result with error when the executable cannot be launched, so checkInstalled() currently reports the CLI as installed even when it is missing.

Proposed fix
-      spawn.sync(cliPath, ['--version'], { stdio: 'ignore', timeout: 5000 });
-      return true;
+      const result = spawn.sync(cliPath, ['--version'], { stdio: 'ignore', timeout: 5000 });
+      return !result.error;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
private checkInstalled(): boolean {
const cliPath = resolveClaudeCodeExecutablePath(process.env.CLAUDE_CLI_PATH);
try {
spawn.sync(cliPath, ['--version'], { stdio: 'ignore', timeout: 5000 });
return true;
} catch {
return false;
}
private checkInstalled(): boolean {
const cliPath = resolveClaudeCodeExecutablePath(process.env.CLAUDE_CLI_PATH);
try {
const result = spawn.sync(cliPath, ['--version'], { stdio: 'ignore', timeout: 5000 });
return !result.error;
} catch {
return false;
}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@server/modules/providers/list/minimax/minimax-auth.provider.ts` around lines
12 - 19, Update checkInstalled() to retain the result returned by spawn.sync and
return false when its error property indicates the executable failed to launch;
preserve the existing true result for successful execution and catch-based
handling for thrown failures.

Comment on lines +62 to +69
async getCurrentActiveModel(): Promise<ProviderCurrentActiveModel> {
return buildDefaultProviderCurrentActiveModel(MINIMAX_MODELS);
}

async changeActiveModel(
input: ProviderChangeActiveModelInput,
): Promise<ProviderSessionActiveModelChange> {
return writeProviderSessionActiveModelChange('minimax', input);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Read the persisted session model override.

changeActiveModel stores the requested model, but getCurrentActiveModel unconditionally returns MINIMAX_MODELS.DEFAULT. After selecting MiniMax-M2.7, active-model reads will still report MiniMax-M3. Resolve the session-scoped override before falling back to the catalog default.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@server/modules/providers/list/minimax/minimax-models.provider.ts` around
lines 62 - 69, Update getCurrentActiveModel to read the persisted session model
override before falling back to
buildDefaultProviderCurrentActiveModel(MINIMAX_MODELS), ensuring the model
selected by changeActiveModel is returned for the current session while
retaining the catalog default when no override exists.

Comment on lines +106 to +114
class MiniMaxSessionSynchronizer implements IProviderSessionSynchronizer {
async synchronize(): Promise<number> {
return 0;
}

async synchronizeFile(): Promise<string | null> {
return null;
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail
fd -t f 'session-synchronizer.*|synchronizer.*service.*' server/modules/providers \
  -x sh -c 'echo "=== $1 ==="; rg -n -C3 "sessionSynchronizer|\\.synchronize\\(" "$1"' sh {}

Repository: siteboon/claudecodeui

Length of output: 1467


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== provider files mentioning MiniMax ==="
rg -n -i "MiniMax|max" server/server/modules/providers -g '*.ts' || true

echo
echo "=== providerRegistry / provider registration ==="
fd -t f 'provider.*registry|provider.*list|registry' server/modules/providers -x sh -c 'echo "=== $1 ==="; rg -n -C4 "registerProvider|listProviders|MiniMax|minimax|sessionSynchronizer" "$1" || true' sh {}

echo
echo "=== MiniMax provider file outline ==="
f=$(fd -t f 'minimax\.provider\.ts$' server | head -n1 || true)
if [ -n "${f:-}" ]; then
  echo "FILE=$f"
  wc -l "$f"
  ast-grep outline "$f" --view expanded || true
  sed -n '1,180p' "$f" | cat -n
fi

Repository: siteboon/claudecodeui

Length of output: 8594


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== session synchronizer service ==="
sed -n '1,140p' server/modules/providers/services/session-synchronizer.service.ts | cat -n

echo
echo "=== MiniMax and Claude provider registrations ==="
sed -n '1,180p' server/modules/providers/list/minimax/minimax.provider.ts | cat -n >/tmp/minimax.ts
sed -n '1,140p' server/modules/providers/list/claude/claude.provider.ts | cat -n >/tmp/claude.ts
printf '\n=== MiniMax imports/exports ===\n'
sed -n '1,40p' /tmp/minimax.ts >/tmp/minimax_header.ts
cat /tmp/minimax_header.ts
printf '\n=== Claude imports/exports ===\n'
sed -n '1,40p' /tmp/claude.ts >/tmp/claude_header.ts
cat /tmp/claude_header.ts

echo
echo "=== all provider registration points ==="
rg -n "new .*Provider\(\)|providerRegistry|listProviders|sessionSynchronizer" server/modules/providers server -g '*.ts' | head -n 220

Repository: siteboon/claudecodeui

Length of output: 24691


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== MiniMax provider tests ==="
sed -n '1,220p' server/modules/providers/tests/minimax-provider.test.ts | cat -n

echo
echo "=== references to MiniMax provider/sessions/synchronizer outside list ==="
rg -n "MiniMaxProvider|minimax|minimax-provider|minimax\\.|MiniMax.*Sessions|MiniMax.*Synchronizers|minimax" server/modules -g '*.ts' | rg -v "provider.registry|list/minimax|minimax.provider.ts|minimax-provider.test.ts|claude.provider.ts|shared/interfaces.ts|shared/types.ts" || true

Repository: siteboon/claudecodeui

Length of output: 4416


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Claude session synchronizer relevant sections ==="
sed -n '1,240p' server/modules/providers/list/claude/claude-session-synchronizer.provider.ts | cat -n

echo
echo "=== Claude provider relevant sections ==="
sed -n '1,160p' server/modules/providers/list/claude/claude.provider.ts | cat -n

echo
echo "=== provider registry ==="
sed -n '1,80p' server/modules/providers/provider.registry.ts | cat -n

Repository: siteboon/claudecodeui

Length of output: 12684


Update MiniMax sync so it is not the only no-op provider.

sessionSynchronizerService.synchronizeSessions() calls MiniMaxProvider.sessionSynchronizer.synchronize(), so MiniMax transcript discovery will always return 0 unless MiniMax files are copied/shared through Claude artifacts and handled by ClaudeProvider.sessionSynchronizer. If MiniMax is an independent transcript source, wire its synchronizer to the Claude file indexer or implement MiniMax-specific scan logic.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@server/modules/providers/list/minimax/minimax.provider.ts` around lines 106 -
114, Implement MiniMaxSessionSynchronizer.synchronize() and synchronizeFile() so
MiniMax transcripts are discovered rather than returning hardcoded no-op values.
Reuse the ClaudeProvider session synchronizer/file indexer when MiniMax
transcripts share Claude artifacts; otherwise add MiniMax-specific scanning,
ensuring synchronize() reports discovered sessions and synchronizeFile() returns
the synchronized file path.

Comment on lines +44 to +46
if (provider === 'minimax') {
return 'claude --version';
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -eu

ast-grep outline src/components/provider-auth/view/ProviderLoginModal.tsx --items all
rg -n -C3 '\b(ProviderLoginModal|onOpenProviderLogin|customCommand)\b' src
fd -i 'minimax-auth.provider.ts' server/modules/providers/list \
  -x sh -c 'echo "== $1 =="; sed -n "1,240p" "$1"' sh {}

Repository: siteboon/claudecodeui

Length of output: 10816


🏁 Script executed:

#!/usr/bin/env bash
set -eu

echo "== ProviderLoginModal relevant section =="
sed -n '1,120p' src/components/provider-auth/view/ProviderLoginModal.tsx

echo
echo "== Provider auth references =="
rg -n -C4 "minimax|MiniMax|customCommand|handleProviderLoginOpen|setActiveLoginProvider|showLoginModal|setLoginProvider|onOpen" src/components provider-auth || true

echo
echo "== MiniMax provider implementation =="
fd -i 'minimax-.*provider.*\.(ts|js)$|minimax.*\.(ts|js)$' . \
  -x sh -c 'echo "== $1 =="; sed -n "1,260p" "$1"' sh {}

echo
echo "== MiniMax config implementation references =="
fd -i 'minimax-config.*\.(ts|js)$' . \
  -x sh -c 'echo "== $1 =="; sed -n "1,260p" "$1"' sh {}

Repository: siteboon/claudecodeui

Length of output: 50378


🏁 Script executed:

#!/usr/bin/env bash
set -eu

echo "== miniMax provider files =="
fd -i 'minimax.*\.(ts|tsx|js)$' . \
  -type f \
  -print \
  | sort | while read -r f; do
      echo
      echo "== $f =="
      sed -n '1,260p' "$f"
    done

echo
echo "== ProviderLoginModal customCommand call sites =="
rg -n -C6 "ProviderLoginModal|customCommand" src/components src/types src/hooks | sed -n '1,220p'

Repository: siteboon/claudecodeui

Length of output: 9645


Use a real MiniMax setup action.

When customCommand is absent, this default login only prints claude --version and exits; MiniMax authentication is API-key endpoint/token based, so the MiniMax configuration flow cannot authenticate the provider this way. Replace it with the intended MiniMax credential/configuration flow or an API-key form.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/provider-auth/view/ProviderLoginModal.tsx` around lines 44 -
46, Update the MiniMax branch in the provider command/configuration logic so its
absent-customCommand default performs the actual MiniMax credential setup or
presents the API-key form, rather than executing the diagnostic `claude
--version` command. Preserve customCommand handling for configured providers and
ensure the default flow stores or applies the MiniMax API endpoint and token
required for authentication.

)}

{selectedCategory === 'permissions' && selectedAgent === 'claude' && (
{selectedCategory === 'permissions' && (selectedAgent === 'claude' || selectedAgent === 'minimax') && (

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Do not route MiniMax permissions through Claude state.

When selectedAgent === 'minimax', this branch still renders agent="claude" and reads/writes claudePermissions. Selecting MiniMax therefore edits Claude’s configuration and presents the wrong provider context. Add MiniMax-specific permission state/handlers and pass the selected provider, or keep MiniMax out of the permissions category until that contract exists.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@src/components/settings/view/tabs/agents-settings/sections/AgentCategoryContentSection.tsx`
at line 32, Update the permissions branch in AgentCategoryContentSection so
MiniMax does not reuse Claude’s provider context: add MiniMax-specific
permission state and handlers, pass selectedAgent through to the permissions UI,
and read/write MiniMax permissions independently. If that contract is
unavailable, restrict the branch to Claude instead of rendering MiniMax with
Claude state.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant