Repository navigation
feat(acp): add native MiniMax Code support via ACP - #1028
Merged
Merged
Conversation
10 tasks
MiniMax Code asks for permission under its own perm_<hex> id, never the call_<n> id of the tool call it gates. Codeg then filed the approval under an id no transcript row carries, so the approval chip never showed in history, and the live view grew a second, never-settling row for the call. Rewrite the card's toolCallId to the single unsettled call whose input matches the request's rawInput. The request can overtake the call's in_progress update, which the turn loop applies on its own task, so wait up to 250 ms for that call before keeping the agent's id.
The ACP registry publishes MiniMax Code as minimax-code, while the built-in uses codeg-minimax-code. Without an alias the add-agent picker offered the registry entry as a second, redundant MiniMax Code next to the built-in.
The test read mcp_json_path() outside temp_env's lock, so a parallel test changing CODEG_HOME or CODEG_DATA_DIR could make the two reads disagree.
Note the installer-directory fallback, the 0.7.0 prompt capabilities, the offline end-to-end run through codeg-server, and that mcode sends codeg no fs/* or terminal/* requests.
Every other built-in agent in the ten READMEs shows its icon; the MiniMax Code entry was text only. The SVG mirrors the in-app MiniMaxCodeColorIcon.
The PR keeps generic provider fields off MiniMax Code's launch env, but the bind path still ran parse_provider_model, whose fallback maps the provider's model to OPENAI_MODEL and saves it in the agent's explicit env, which the launch passes through. The UI offers no provider for MiniMax Code, yet the API accepts one for any agent type. Refuse the bind like a cross-type one.
A unique in-progress call with the same input could be stale: an earlier call that was already asked about and answered, whose completion is still queued behind the newer call's announcement. The card and its approval then landed on the older call. An agent asks about a call once, so exclude calls with an unanswered card or a recorded approval. Both are read under the permission queue lock, which resolve_permission also holds while it retires a card and records the approval, so a call is never in neither.
Deriving already-asked-about calls from the permission queue and the approval log left gaps: a card withdrawn, drained or answered with an option it did not offer records no approval, and the 256-entry approval cap can evict a still-running call. Either let a later request with the same input match the stale call again. Record each match in SessionState::permission_matched_calls instead, under the same write lock as the lookup, and clear it with active_tool_calls.
Collaborator
|
codeg work task |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Related to #1026.
mcode acp; detect official POSIX and Windows launcher paths.mcp/minimax_code.jsonand forward stdio/HTTP/SSE overlays without modifying native credentials/config.Validation
Scope
Historical native CLI session import and Codeg-managed skill installation are deferred. Existing custom registrations and native skills/configuration remain separate and untouched. No dependency or lockfile changes.
Cross-platform CI passed: all 13 jobs succeeded.