feat(acp): add MiniMax Code as a builtin Registry npx agent - #990
Open
kaizhou-lab wants to merge 4 commits into
Open
kaizhou-lab wants to merge 4 commits into
kaizhou-lab wants to merge 4 commits into
Conversation
added 4 commits
September 14, 2026 11:26
MiniMax Code was listed on the ACP Registry (snapshot v2026.09.12-e6ee445) with an npx distribution, @minimax-ai/code@0.2.7 with args ["acp"]. Seed it as a builtin ACP agent and pin the Registry version in the release lock. Identity: public card "MiniMax Code" (agent.minimax.io); the npm package installs the product CLI `mcode`, whose documented ACP server is `mcode acp`. backend is `minimax-code` from the product name and the agent's own agentInfo.name, following the mimo-code precedent; binary_name is `mcode`. Probe at 0.2.7: initialize ok (protocolVersion 1), session/new returns -32000 "Authentication required: Run `mcode login`". agent_capabilities is seeded snake_case from that handshake; auth_methods stays NULL because initialize advertised none. yolo_id stays NULL: the ACP server's session modes are default/plan only, and its permission levels are a config option (permissionMode), not a session mode. native_skills_dirs stays NULL: the source scans only the user data dir and bundled skills. Also: Registry icon under acp-registry/minimax-code.svg, lock guard count 12 -> 13, seed row count 43 -> 44, team-capability expectations, and a migration test covering launch fields, handshake columns, the lock pin and an alias bad path.
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
Adds MiniMax Code as a builtin ACP agent. It was listed on the ACP Registry in snapshot
v2026.09.12-e6ee445(the Registry's 41st id) with an npx distribution, which makes it the first new agent since the Registry sync started that qualifies for automatic integration under the standing rules — the two earlier arrivals (antigravity-acp,kimchi) were binary-only and remain deferred.This PR is intentionally separate from today's lock-only bump (#989) so that bump kept its routine self-merge shape. This PR is for human review: it adds a migration, a logo, and a lock entry.
registry.mdcard; CDN JSONid: minimax-code,name: MiniMax Code,license: MIT@minimax-ai/code@0.2.7, args["acp"]binary_name)mcodenpm install -g @minimax-ai/code→mcode;mcode --versiondocumented, so the default PATH probe applies (noskip_version_probe)mcode acpacpargbackendminimax-codeagentInfo.namefrom the live handshake; follows themimo-codeprecedent (029) for " Code" products. Not a copy of the JSON lookup id, which merely coincides@minimax-ai/code, binmcodeat 0.2.7; engines>=22.19 <23 || >=24 <27npm view; AionCore's managed Node is 24.11.0 (MANAGED_NODE_VERSION), inside the rangeagentInfo {name: minimax-code, title: MiniMax Code, version: 0.2.7}acp_probe.mjsagainstnpx -y @minimax-ai/code@0.2.7 acp, clean temporary HOME, no inherited credentials-32000"Authentication required: Runmcode loginand try again."loadSession: true;mcpCapabilities {http: true, sse: true};promptCapabilitiesall false;sessionCapabilities {list, fork, resume, close}initializeauth_methodsleft NULL — nothing is synthesized. The session error itself tells the user to runmcode loginWhat the migration seeds and why each nullable field is what it is
044_add_minimax_code_builtin_agent.sql(template: 031, policy shape: 034):id/agent_id=ec619063(mirrored per the post-030 NOT NULL + UNIQUE rule),user_idNULL.command: npx,args: ["-y","@minimax-ai/code","acp"],env: []. The exact version is not stored here;pin_registry_npx_argsrewrites the package token to@minimax-ai/code@0.2.7from the lock at spawn.agent_source_info: {"binary_name":"mcode","bridge_binary":"npx"}— noregistry_json_id/package_namein metadata.agent_capabilities: seeded from the probe (snake_case). Not in theON CONFLICT DO UPDATElist, nor isauth_methods, so a re-seed can never reset what a live handshake later learns.yolo_id: NULL. Source-verified against the 0.2.7 ACP server chunk (run-acp-command-*.js):availableModesis exactlydefaultandplan. The README's Ask / Auto / Full access levels are exposed as a_permission-category config option (permissionMode=default|auto|bypassPermissions), not as a session mode, and AionCore's yolo channel resolves throughsession/set_mode— the same chunk rejects unknown mode ids with "Unsupported Session mode" — so storingbypassPermissionswould break unattended runs rather than enable them. See open question 1.native_skills_dirs: NULL. The 0.2.7 source scans only$MINIMAX_DATA_DIR/skills(user data dir) and the bundledassets/skills; no project-relative skills directory exists, and the README documents none.behavior_policy: {"supports_side_question":false}— nosupports_team, noteam_capable_override(retired by 033). Team capability derives from the seededmcp_capabilities.Other files:
crates/aionui-runtime/resources/acp-registry-npx-lock.json— new entryminimax-code→@minimax-ai/code0.2.7withregistry_json_idalias.crates/aionui-assets/assets/logos/acp-registry/minimax-code.svg— the Registry's official icon (…/registry/v1/latest/minimax-code.svg, 169 bytes,currentColorfill), keyed by backend; added toregistry_agent_logos_are_embedded_as_svg.crates/aionui-db/tests/minimax_code_builtin_agent_migration.rs— new: launch fields, handshake columns (seeded caps, NULL auth/yolo/skills, policy shape), lock pin is an exact semver under the backend key, and a bad-path test thatmcode/minimax/minimax-ai/@minimax-ai/codedo not resolve to a builtin row.crates/aionui-db/tests/team_capability_criteria_migration.rs—minimax-codeadded to the mcp-capabilities table (http+sse) and to the NULL-auth-methods-by-design list.crates/aionui-db/src/repository/sqlite_agent_metadata.rs— seed row count 43 → 44.crates/aionui-runtime/src/registry_npx_lock.rs— theevery_lock_entry_has_an_exact_versionguard counts lock entries; 12 → 13. Its exact-semver check now also covers the new entry.crates/aionui-ai-agent/src/registry.rs— three more count guards:hydrate_loads_seed_rows(43 → 44),every_builtin_npx_agent_has_a_release_lock(12 → 13 pinned npx builtins),diagnostic_snapshot_pairs_rows_with_reasons(43 → 44), andlist_by_agent_type_counts_seed_rows(ACP rows 39 → 40). CI surfaced these one fail-fast round at a time (753/9388, then 772/9388 tests run); the wholeregistry::testsmodule was then run locally by filter (30 passed) before the final push.Open questions for review
yolo_idNULL,AgentType::full_auto_mode_idfalls to its_ => "yolo"default, which this agent will reject as an unsupported mode — identical to the current situation for omp, dimcode, kilo, dirac, grok and every other Registry agent seeded without ayolo_id. The vendor's actual unattended switch is thepermissionMode=bypassPermissionsconfig option; supporting that would be an AionCore launch-configuration/config-option path, not a metadata value, and is out of scope here.initializeadvertises noauthMethods, the UI cannot offer a login button until the runtime learns otherwise; the user gets the agent's own actionable error ("Runmcode login"). If a later version starts advertising methods, the live handshake will populate the column.latestis already 0.4.5 (the vendor ships several times a day); the Registry declares 0.2.7 and the lock follows the Registry, as for every other agent. The nightly sync will bump it as the Registry moves.mcode-tools. Newer package versions (≥0.3.x) add a second bin; 0.2.7 shipsmcodeonly. Nothing here depends on it.AionUi issues
None linked. Per the workflow, issue linking requires an explicit request; no AionUi issue was searched, edited, or closed.
Validation
just migration-check— passcargo test -p aionui-db --test minimax_code_builtin_agent_migrationcargo test -p aionui-db --test team_capability_criteria_migrationcargo test -p aionui-db --lib seed_rows_populated_after_migrationscargo test -p aionui-assets --lib registry_agent_logos_are_embedded_as_svgcargo test -p aionui-runtime --lib registry_npx_lockcargo test -p aionui-ai-agent --lib -- registry::tests(whole module, 30 passed)just lint-fix(cargo fix+clippy --fix --workspace -D warnings) — cleanjust fmt— cleancargo nextestwas not run: this PR was prepared during working hours, when the full workspace suite is not permitted on this host; the Test check on this PR is the authority. This is the reason the PR is left open for review rather than self-merged, in addition to it not being a lock-only change.Logging
No logging changes: metadata-only integration. Existing startup/session error paths already identify a failing agent by backend, and the agent's own
session/newerror carries the actionable instruction.