feat(provider): add minimax provider for MiniMax Token Plan models#126
Conversation
|
Codex review: needs changes before merge. Reviewed June 8, 2026, 2:18 PM ET / 18:18 UTC. Summary Reproducibility: not applicable. this is a feature PR, not a bug report. Source inspection shows current main lacks MiniMax provider dispatch and docs, while the PR body provides live terminal proof for the proposed behavior. Review metrics: 2 noteworthy metrics.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review findings
Review detailsBest possible solution: Land the provider only if maintainers accept MiniMax as core, after removing the release-owned changelog edit and syncing the timeout docs; otherwise keep the linked feature request as the product-decision record. Do we have a high-confidence way to reproduce the issue? Not applicable: this is a feature PR, not a bug report. Source inspection shows current main lacks MiniMax provider dispatch and docs, while the PR body provides live terminal proof for the proposed behavior. Is this the best way to solve the issue? Unclear until maintainer approval: the implementation is a narrow direct HTTP provider with useful proof, but accepting a new core MiniMax auth/provider surface is the remaining product decision. Full review comments:
Overall correctness: patch is correct AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against d5e764d12a82. Label changesLabel changes:
Label justifications:
Evidence reviewedAcceptance criteria:
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
… exit codes Addresses ClawSweeper review feedback on PR openclaw#126: 1. Make minimax.fix throw `unsupported-provider` (code 2). The chat- completions API has no tool or filesystem access, so fix() could only return a FixPlanOutput but never edit the worktree. Per docs/patching.md, fix() must produce real edits; we refuse early with a clear message rather than record a no-op patch attempt. The error message names the providers that do support fix (codex, acpx, claude, opencode, pi) for discoverability. 2. Map HTTP failures to documented provider exit codes via a new `minimaxExitCode(status)` helper: - 401, 403 -> 4 (provider-auth) - 429 -> 5 (provider-quota) - other -> 1 (generic provider-failure) Used in both `runMinimaxJson` and `provider.check()`. 3. Expose minimaxExitCode via `__testing` and add 4 unit tests covering the dispatch (401/403/429/other). Add 1 test asserting `provider.fix()` rejects with `unsupported-provider` and exit code 2. 4. Update README provider entry to document the supported operation set (map, review, revalidate) and the explicit fix limitation. Tests: 151/151 passing (was 146/146). Verification: pnpm typecheck && pnpm lint && pnpm format:check && pnpm test src/provider.test.ts && pnpm build all clean. Closes review blockers on PR openclaw#126.
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
@clawsweeper re-review |
|
🦞👀 Command router queued. I will update this comment with the next step. Re-review progress:
|
Addresses ClawSweeper review feedback on PR openclaw#126: - Add `minimax` to the "Provider names today" list in docs/providers.md (alphabetical, after `grok`) - Add a new `## MiniMax` section that documents: - Setup (env vars, model listing via `clawpatch doctor`) - Provider selection (`--provider minimax`, env-var override) - HTTP transport details (Bearer auth, base URL override) - Operation set: supports `map`, `review`, `revalidate`; `fix` is intentionally unsupported (exit code 2) - Structured output via `response_format.json_schema` - HTTP failure exit code mapping (401/403 -> 4, 429 -> 5, other -> 1) - Timeout knobs (`CLAWPATCH_MINIMAX_TIMEOUT_MS`, `CLAWPATCH_PROVIDER_TIMEOUT_MS`) - Permission caveat (remote API, same trust model as other read-only providers) - Update the closing summary paragraph to note that `minimax` is a direct HTTP integration, distinct from the local-CLI providers (`grok`, `opencode`, `pi`, `cursor`) and the ACP route (`acpx`) This brings the public docs into sync with the README provider entry and the actual provider dispatch surface. No code changes; no new tests needed. Verification: pnpm typecheck && pnpm lint && pnpm format:check && pnpm test src/provider.test.ts all pass (151/151).
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
Co-authored-by: Fermin Quant <ferminquant@gmail.com>
894826c to
3e02467
Compare
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
|
Landed in Verification before merge: Local results: Autoreview closeout: Required GitHub Actions on head Live MiniMax proof remains release-only blocked in this environment: exact |
Summary
Adds a rewritten
minimaxprovider formap,review,revalidate, and providercheckoperations. The provider is intentionally read-only:fixfails before provider network or filesystem side effects withunsupported-providerand exit code 2.Closes #125.
Maintainer Notes
https://api.minimax.io/v1MiniMax-M3MINIMAX_API_KEYMINIMAX_BASE_URL,MINIMAX_MODEL,CLAWPATCH_MINIMAX_TIMEOUT_MS,CLAWPATCH_PROVIDER_TIMEOUT_MSundiciwith timeout-sized dispatchers instead of Node's default fetch dispatcher.MINIMAX_BASE_URLis normalized and rejects URL credentials; non-loopback HTTP is rejected.response_format.json_schemabecause the current MiniMax M-series chat docs do not document that compatibility.preparescripts without dev dependencies.Verification
Local checks on the rewritten PR branch:
Results:
Autoreview:
GitHub Actions on head
05fba5cfe77873e243a16f583a07211519b2473f:Live MiniMax proof is not included in this landing because this maintainer environment does not have
MINIMAX_API_KEYset and no targeted 1Password item or field was provided. Per maintainer clarification, mocked fetch/source/test proof is sufficient to merge; publishing a release remains blocked until a redacted live/modelscheck plus one schema-valid supported operation is run against the exact released commit.