feat: add MiniMax provider with Anthropic-compatible API#7640
feat: add MiniMax provider with Anthropic-compatible API#7640jamadeo merged 3 commits intoblock:mainfrom
Conversation
Add support for MiniMax AI models (MiniMax-M2.5 and MiniMax-M2.5-highspeed) via the Anthropic-compatible API endpoint. Includes provider implementation, registry registration, and UI logo assets. Made-with: Cursor Signed-off-by: ximi <[email protected]>
Made-with: Cursor Signed-off-by: ximi <[email protected]>
e83b120 to
34b2c3b
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 34b2c3babe
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
|
||
| let response = self | ||
| .with_retry(|| async { | ||
| let request = self.api_client.request(Some(session_id), "v1/messages"); |
There was a problem hiding this comment.
Normalize overridden MINIMAX_HOST before appending path
The stream request always appends v1/messages, but MINIMAX_HOST is used verbatim, so any override that already includes /v1 (for example the MiniMax API URL form used elsewhere in the repo: .../anthropic/v1) will resolve to /anthropic/v1/v1/messages and fail at runtime. This breaks provider connectivity specifically for users who configure MINIMAX_HOST with a versioned base URL; trimming a trailing /v1 (or separating host and base path) would make both forms work.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
The default MINIMAX_API_HOST follows MiniMax's official documentation, which does not include a trailing /v1 in the base URL. Maybe it's a not big issue.
|
Can this just be a declarative provider if it is anthropic compatible? |
Replace Rust implementation with JSON config as suggested in review. MiniMax uses Anthropic-compatible API, so declarative provider is cleaner. Signed-off-by: ximi <[email protected]> Made-with: Cursor
|
Thanks for the suggestion, @DOsinga! Since MiniMax is fully Anthropic-compatible, a declarative provider is much cleaner. I've refactored the implementation to use a JSON config file instead of the Rust provider. Please kindly help to review it when you have a moment. Thank you for your time and feedback! |
* main: (45 commits)
fix: resolve {{ recipe_dir }} in nested sub-recipe paths during secret discovery (#7797)
Add @DOsinga as CODEOWNER for documentation (#7799)
feat: Add summarize tool for deterministic reads (#7054)
fix(api): use camelCase in CallToolResponse and add type discriminators to ContentBlock (#7487)
feat: ACP providers for claude code and codex (#6605)
chore(deps): bump express-rate-limit from 8.2.1 to 8.3.0 in /evals/open-model-gym/mcp-harness (#7703)
feat(openai): capture reasoning summaries from responses API (#7375)
Fix some dependencies (#7794)
fix: improve keyring availability error detection (#7766)
feat: add MiniMax provider with Anthropic-compatible API (#7640)
feat: add Tensorix as a declarative provider (#7712)
fix(security): remove insecure default secret from GOOSE_EXTERNAL_BACKEND (#7783)
refactor: Convert Tanzu provider to declarative JSON config (#7124)
replaces https://github.com/block/goose/pull/7340/changes (#7786)
feat(summon): make skill supporting files individually loadable via load() (#7583)
Keep toast open on failed extension (#7771)
fix(ui-desktop): unify path resolution around GOOSE_PATH_ROOT (#7335)
fix: pass OAuth scopes to DCR and extract granted_scopes from token response (#7571)
fix: write to real file if config.yaml is symlink (#7669)
fix: preserve pairings when stopping gateway (#7733)
...
* main: (69 commits)
fix: resolve {{ recipe_dir }} in nested sub-recipe paths during secret discovery (#7797)
Add @DOsinga as CODEOWNER for documentation (#7799)
feat: Add summarize tool for deterministic reads (#7054)
fix(api): use camelCase in CallToolResponse and add type discriminators to ContentBlock (#7487)
feat: ACP providers for claude code and codex (#6605)
chore(deps): bump express-rate-limit from 8.2.1 to 8.3.0 in /evals/open-model-gym/mcp-harness (#7703)
feat(openai): capture reasoning summaries from responses API (#7375)
Fix some dependencies (#7794)
fix: improve keyring availability error detection (#7766)
feat: add MiniMax provider with Anthropic-compatible API (#7640)
feat: add Tensorix as a declarative provider (#7712)
fix(security): remove insecure default secret from GOOSE_EXTERNAL_BACKEND (#7783)
refactor: Convert Tanzu provider to declarative JSON config (#7124)
replaces https://github.com/block/goose/pull/7340/changes (#7786)
feat(summon): make skill supporting files individually loadable via load() (#7583)
Keep toast open on failed extension (#7771)
fix(ui-desktop): unify path resolution around GOOSE_PATH_ROOT (#7335)
fix: pass OAuth scopes to DCR and extract granted_scopes from token response (#7571)
fix: write to real file if config.yaml is symlink (#7669)
fix: preserve pairings when stopping gateway (#7733)
...
I have already test it manually, please kindly help to review it.