Skip to content

Refresh MiniMax model suggestions for M3.1 Flash and M3 - #1391

Open
octo-patch wants to merge 4 commits into
VoltAgent:mainfrom
octo-patch:octo/20260801-model-add-recvqtBnXA0nzu
Open

octo-patch wants to merge 4 commits into
VoltAgent:mainfrom
octo-patch:octo/20260801-model-add-recvqtBnXA0nzu

Conversation

@octo-patch

@octo-patch octo-patch commented Aug 2, 2026 •

Copy link
Copy Markdown
Contributor

Reason: Refresh MiniMax suggestions to MiniMax-M3.1-Flash and MiniMax-M3, including the current routes available through OpenRouter and OpenCode.

  • Default native global/China suggestions to Flash followed by M3 in both the generator and runtime-generated types.
  • Filter ordinary MiniMax text suggestions in the known OpenRouter and OpenCode catalogs during generation and runtime refresh. Retain only current routes actually returned by the catalog; do not synthesize missing gateway IDs.
  • Narrowly regenerate MiniMax entries while preserving unrelated providers, nontext/embedding models and explicit saved/custom model resolution, including legacy IDs.
  • Test generation, runtime snapshots, absent current routes, custom providers, nontext preservation and explicit legacy/custom gateway resolution after refresh.
  • Include compatible SDK captures for both native models and regions. Requests omit thinking, effort and service tier, and never inject reasoning_split=false, leaving supported API defaults in effect.
  • Include the required core package changeset.

The exact gateway routes were verified in models.dev and the gateway catalogs on 2026-10-19:

  • OpenRouter: minimax/minimax-m3.1-flash:free, minimax/minimax-m3.
  • OpenCode: minimax-m3.1-flash-free, minimax-m3.

Package validation (all passed): pinned pnpm dependency installation and internal/logger prerequisite builds; 18 focused registry/catalog/wire tests; full core vitest run --typecheck (112 files, 1,410 passed, 2 skipped, 1 todo, no type errors); core pnpm typecheck; core pnpm build; scoped Biome; git diff --check; diff secret scan.

Commitlint currently reports type-empty and subject-empty for the published gateway followup commit subject.

Dependencies and checks ran without deployment credentials. No paid inference was performed. Catalog pricing and token limits are not copied or inferred from route availability.

Model reference: https://platform.minimax.io/docs/api-reference/text-chat-openai.md

@changeset-bot

changeset-bot Bot commented Aug 2, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 17b76fe

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@voltagent/core Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai

coderabbitai Bot commented Aug 2, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 3dfd1176-4609-4dec-97ca-35a29d1b2574
📥 Commits

Reviewing files that changed from the base of the PR and between 82159af and 17b76fe.

⛔ Files ignored due to path filters: 1
  • packages/core/src/registries/model-provider-types.generated.ts is excluded by !**/*.generated.*
📒 Files selected for processing: 4
  • .changeset/bright-minimax-models.md
  • packages/core/scripts/generate-model-provider-registry.js
  • packages/core/src/registries/model-provider-catalog.spec.ts
  • packages/core/src/registries/model-provider-registry.ts
🚧 Files skipped from review as they are similar to previous changes: 1
  • .changeset/bright-minimax-models.md

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 8 remain after this review.

📝 Walkthrough

The provider registry now prioritizes MiniMax-M3.1-Flash and MiniMax-M3 in native MiniMax suggestions. It also filters retired MiniMax text-model suggestions from OpenRouter and OpenCode catalogs while retaining specified model cases. Tests cover catalog generation, registry refresh, model resolution, and chat request defaults.

Changes: MiniMax model suggestions

Layer / File(s) Summary
Catalog suggestions and gateway filtering
packages/core/scripts/generate-model-provider-registry.js, packages/core/src/registries/model-provider-registry.ts, packages/core/src/registries/model-provider-catalog.spec.ts, .changeset/bright-minimax-models.md
The generator and runtime registry put MiniMax-M3.1-Flash and MiniMax-M3 first for native MiniMax providers. They filter retired matching MiniMax text models from OpenRouter and OpenCode suggestions while retaining embeddings, non-text models, and the specified M3 variants. Catalog tests cover generated suggestions, registry refresh, preserved model IDs, and checked-in declarations.
Model resolution and request defaults
packages/core/src/registries/model-provider-registry-minimax.spec.ts, packages/core/src/registries/model-provider-minimax-wire.spec.ts
Resolution tests use MiniMax-M3.1-Flash across provider configurations and adapter selection. Wire tests check request defaults for both models at both MiniMax base URLs.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Feature

Suggested reviewers: omeraplak

Merge Risk: ⚪ Minimal · up to 17b76

The updated native suggestions and gateway routes are reflected in the checked-in catalog. No issue identified here needs resolution before merge.

Pre-merge checks: Passed 4 · Failed 1

Failed 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%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 5 files. (1 skipped: 1 … Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title clearly and concisely identifies the main change: refreshing MiniMax suggestions for M3.1 Flash and M3.
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.
Description check Passed The description clearly explains the current and new behavior, test coverage, validation results, gateway routes, and included changeset. It does not include the template headings or explicit checklis…
Full details: Description check

Explanation

The description clearly explains the current and new behavior, test coverage, validation results, gateway routes, and included changeset. It does not include the template headings or explicit checklist status for the commit convention, related issue, and documentation updates. It also reports a commitlint failure, which should be addressed separately.

Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 5 files. (1 skipped: 1 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR

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.

@cubic-dev-ai cubic-dev-ai 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.

No issues found across 2 files

Re-trigger cubic

@octo-patch octo-patch changed the title Add MiniMax target model to router types Refresh native MiniMax model suggestions for M3.1 Flash and M3 Oct 19, 2026

@cubic-dev-ai cubic-dev-ai 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.

1 issue found across 7 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="packages/core/src/registries/model-provider-registry.ts">

<violation number="1" location="packages/core/src/registries/model-provider-registry.ts:123">
P3: The MiniMax suggestion list and the `/^MiniMax-M\d/i` filter are duplicated in `packages/core/scripts/generate-model-provider-registry.js` (lines 37-38 and 95). Extract them into one shared constant so the generator and the runtime types cannot drift apart.</violation>
</file>

Reply with feedback, questions, or to request a fix.

View guided diff | Re-trigger cubic

? [
"MiniMax-M3.1-Flash",
"MiniMax-M3",
...models.filter((modelId) => !/^MiniMax-M\d/i.test(modelId)).sort(),

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.

P3: The MiniMax suggestion list and the /^MiniMax-M\d/i filter are duplicated in packages/core/scripts/generate-model-provider-registry.js (lines 37-38 and 95). Extract them into one shared constant so the generator and the runtime types cannot drift apart.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At packages/core/src/registries/model-provider-registry.ts, line 123:

<comment>The MiniMax suggestion list and the `/^MiniMax-M\d/i` filter are duplicated in `packages/core/scripts/generate-model-provider-registry.js` (lines 37-38 and 95). Extract them into one shared constant so the generator and the runtime types cannot drift apart.</comment>

<file context>
@@ -115,7 +115,14 @@ const buildTypesContent = (providerModels: Record<string, string[]>): string =>
+          ? [
+              "MiniMax-M3.1-Flash",
+              "MiniMax-M3",
+              ...models.filter((modelId) => !/^MiniMax-M\d/i.test(modelId)).sort(),
+            ]
+          : [...models].sort();
</file context>

@octo-patch octo-patch changed the title Refresh native MiniMax model suggestions for M3.1 Flash and M3 Refresh MiniMax model suggestions for M3.1 Flash and M3 Oct 19, 2026

@cubic-dev-ai cubic-dev-ai 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.

2 issues found across 5 files (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="packages/core/src/registries/model-provider-catalog.spec.ts">

<violation number="1" location="packages/core/src/registries/model-provider-catalog.spec.ts:189">
P2: This test replaces the refreshed `openrouter` and `opencode` providers before resolving any models, so it does not verify explicit legacy IDs through the refreshed built-in providers. Keep the custom-provider assertion separate and resolve the built-in providers before overriding them, or inspect their refreshed loader/config directly.</violation>
</file>

<file name="packages/core/scripts/generate-model-provider-registry.js">

<violation number="1" location="packages/core/scripts/generate-model-provider-registry.js:41">
P2: This allowlist accepts non-canonical MiniMax route variants, so a refresh can suggest gateway IDs outside the verified OpenRouter and OpenCode routes. Match exact provider-specific route IDs in both implementations.</violation>
</file>

Reply with feedback, questions, or to request a fix.

View guided diff | Re-trigger cubic

const registry = ModelProviderRegistry.getInstance();
await registry.refreshRegistry(true);
for (const provider of ["openrouter", "opencode", "custom-gateway"]) {
registry.registerProvider(

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.

P2: This test replaces the refreshed openrouter and opencode providers before resolving any models, so it does not verify explicit legacy IDs through the refreshed built-in providers. Keep the custom-provider assertion separate and resolve the built-in providers before overriding them, or inspect their refreshed loader/config directly.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At packages/core/src/registries/model-provider-catalog.spec.ts, line 189:

<comment>This test replaces the refreshed `openrouter` and `opencode` providers before resolving any models, so it does not verify explicit legacy IDs through the refreshed built-in providers. Keep the custom-provider assertion separate and resolve the built-in providers before overriding them, or inspect their refreshed loader/config directly.</comment>

<file context>
@@ -66,59 +116,106 @@ afterEach(() => {
+    const registry = ModelProviderRegistry.getInstance();
+    await registry.refreshRegistry(true);
+    for (const provider of ["openrouter", "opencode", "custom-gateway"]) {
+      registry.registerProvider(
+        provider,
+        createOpenAICompatible({
</file context>

if (isEmbeddingModel(modelId, modelInfo) || (Array.isArray(output) && !output.includes("text"))) {
return false;
}
return !/^(?:minimax\/)?minimax-(?:m3\.1-flash|m3)(?::free|-free)?$/i.test(modelId);

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.

P2: This allowlist accepts non-canonical MiniMax route variants, so a refresh can suggest gateway IDs outside the verified OpenRouter and OpenCode routes. Match exact provider-specific route IDs in both implementations.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At packages/core/scripts/generate-model-provider-registry.js, line 41:

<comment>This allowlist accepts non-canonical MiniMax route variants, so a refresh can suggest gateway IDs outside the verified OpenRouter and OpenCode routes. Match exact provider-specific route IDs in both implementations.</comment>

<file context>
@@ -30,6 +30,17 @@ const isEmbeddingModel = (modelId, modelInfo) => {
+  if (isEmbeddingModel(modelId, modelInfo) || (Array.isArray(output) && !output.includes("text"))) {
+    return false;
+  }
+  return !/^(?:minimax\/)?minimax-(?:m3\.1-flash|m3)(?::free|-free)?$/i.test(modelId);
+};
+
</file context>

This branch has not been deployed

No deployments
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