#1367

Enable MiniMax Music 3 through the Phaseo music API

OpenDanielButler1opened 3mo ago

Deferred to Q1 — 2026-10-26

Not part of the Q4 plan; stays in Backlog for Q1 planning.

Comprehensive review — 2026-10-20

Production DB readback corrects the earlier repository-only inference: canonical minimax/music-3.0 exists but its route has routing_enabled=false and phaseo_status=disabled. Music 2.6 is enabled. Music executor wiring and earlier generic music enablement do not prove Music 3.0 readiness. Returned to Backlog. Remaining: validate the current Music 3.0 offer, pricing and capabilities, enable only after contract/authenticated acceptance, and record the request/usage result.


Current review — 2026-10-20

The original disabled-route blocker is obsolete: phaseoteam/Phaseo#1941 enabled music routes and phaseoteam/Phaseo#1952 unified lifecycle handling. Current main mounts music-generate, registers the MiniMax executor and calls the native synchronous music API. Remaining: verify the paid Music 3 offer's current live catalogue status/pricing, strict public schema/error contract and authenticated internal/staging acceptance. Source wiring is not evidence of a successful Music 3 production request.


Problem

MiniMax Music 3 is available as a paid upstream offer, but Phaseo's public music routes are currently registered through disabledMusicRoutes and return 501. An executor exists, but an authored provider route must remain Phaseo unsupported and unroutable until the public contract and integration are complete.

Discovered while reviewing phaseoteam/Phaseo#1333. The explicit status and access transitions are defined by phaseoteam/Phaseo#1366. Related capability discovery work: #835.

Scope

  • replace the disabled /v1/music/generate and /v1/music/generations registrations with the implemented music surface
  • reconcile the Phaseo request schema with MiniMax's current Music API contract
  • wire the MiniMax Music 3 executor through the non-text pipeline
  • normalise successful and provider-error responses to the public Phaseo contract
  • confirm synchronous/asynchronous behaviour, timeouts, cancellation and billing finalisation
  • retain only the paid Music 3 offer for the first production rollout
  • add AIMock, route-contract, pricing and failure-path tests
  • run authenticated internal and staging smoke tests before public enablement

Status and access transitions

  1. provider available, Phaseo unsupported, access_scope: "public", but unroutable (current catalogue listing)
  2. Phaseo implementing while the public route is wired; still unroutable
  3. Phaseo testing with access_scope: "internal" after contract tests pass
  4. Phaseo enabled with access_scope: "public" only after authenticated smoke tests and routing review

Acceptance criteria

  • public music generation no longer returns the feature-disabled 501 for Music 3
  • paid Music 3 requests are accepted through the documented Phaseo endpoint
  • unsupported MiniMax request fields are rejected or documented rather than silently dropped
  • provider errors and terminal generation states map to stable Phaseo responses
  • pricing and usage are persisted against the Music 3 paid SKU
  • AIMock and integration tests cover success, validation, provider failure and timeout paths
  • internal testing requires the configured high-entropy internal token and an explicit testing-mode request
  • testing traffic can select only an explicitly internal route with a usable upstream offer
  • the catalogue route changes to phaseo_status: "enabled" and access_scope: "public", and becomes routable only after staging verification

Activity

14
linear-code[bot]3mo ago
opencode-agent[bot]3mo ago
Issue understanding MiniMax Music 3 (`minimax/music-2.6`) is the current paid upstream offer. The provider is available and an executor exists inline in `music-generate.ts`, but both `/v1/music/generate` and `/v1/music/generations` are mounted as `disabledMusicRoutes` returning 501. There is no MiniMax music provider adapter (unlike Suno and ElevenLabs). The catalog models are in `coming_soon` status. The task is to wire the MiniMax Music 3 integration end-to-end through the Phaseo non-text pipeline: mount the live handler, build a MiniMax provider adapter for the music endpoint, reconcile request schemas, normalise response contracts, update catalog/pricing/routing status, and cover with tests.

AI Agent Prompt (Copy/Paste)

Enable MiniMax Music 3 through the Phaseo music API.

The current state is: provider "available", Phaseo "unsupported" (501 from disabledMusicRoutes).

Files and areas to modify:
- **Route mounting**: `apps/api/src/routes/v1/data/index.ts` — replace `disabledMusicRoutes` at lines 48-49 with the live `musicGenerateRoutes` from `./music-generate.ts`
- **MiniMax provider adapter**: create `apps/api/src/providers/minimax/endpoints/music-generate.ts` following the pattern of `apps/api/src/providers/suno/endpoints/music-generate.ts` and `apps/api/src/providers/elevenlabs/endpoints/music-generate.ts` — the status-polling path already exists inline in `music-generate.ts` (lines 172-438), move/extract it into the adapter
- **Schema reconciliation**: review `apps/api/src/core/schemas.ts` MusicGenerateSchema (line 1211) against MiniMax's current Music 3 API contract; add/remove/validate fields
- **IR types**: `apps/api/src/core/ir.ts` lines 651-670 for request/response shapes
- **Catalog data**: update `packages/data/catalog/src/data/api_providers/minimax/models.json` — change `music-2.6` (Music 3) status from `"coming_soon"` to `"enabled"`; confirm pricing at `packages/data/catalog/src/data/pricing/minimax/minimax-minimax-music-2.6/music.generate/pricing.json`
- **Feature-disabled tests**: update `apps/api/src/routes/v1/data/index.disabled-routes.test.ts` (currently asserts 501) and `feature-disabled.test.ts`
- **New tests needed**: AIMock contract test for MiniMax music generate, route-contract test, failure-path (provider error, timeout) test, pricing test
- **Remove after verification**: the disabled routes for music once staging smoke test passes (manual step)

Actions to take:
1. Inspect all files listed above — do not rely only on this issue text
2. Understand the existing Suno/ElevenLabs adapter patterns thoroughly
3. Wire the MiniMax music adapter through the non-text pipeline (`apps/api/src/pipeline/surfaces/non-text.ts` already handles `music.generate` for minimax vendor)
4. Ensure synchronous (if possible) and async polling work, billing finalisation uses the Music 3 paid SKU
5. Run `pnpm lint`, `pnpm typecheck`, `pnpm --filter @phaseo/gateway-api test` to verify
6. Keep the free `music-2.6-free` offer as-is but retain only paid Music 3 for first production rollout (do not enable music-1.5, music-2.0, music-2.5, or free tier for initial release unless the code already does)

Clarifying Questions (Optional)

  • The existing music-generate.ts handler handles Suno, ElevenLabs, MiniMax, and Google — should Suno/ElevenLabs models also become routable in this change, or only MiniMax Music 3? (The scope says "paid Music 3 offer for first production rollout")
  • Should the disabled-route tests be removed entirely or changed to assert 422/400 instead of 501?

opencode session  |  github run

tomlycett3mo ago

I’m interested in implementing this integration. Before beginning, can you confirm whether there is any funded work, sponsorship, contractor budget, or paid implementation arrangement available for issue #1367?

I am a human contributor working with a personally designed AI-assisted development system. I remain directly involved throughout the process: analysing the issue, shaping the implementation approach, reviewing and testing the work, correcting problems, and making the final technical decisions.

If there is a commercial route for this work, I can provide a concise scoped delivery plan once the terms are clear.

opencode-agent[bot]3mo ago

User tomlycett does not have write permissions

github run

DanielButler13mo ago

@tomlycett Thanks for checking. There is no funded work, bounty, contractor budget, sponsorship, or paid implementation arrangement available for #1367. Phaseo is currently developed as an open-source project, and any community contributions are voluntary through the normal contribution process. I completely understand if that means you do not wish to proceed.

opencode-agent[bot]3mo ago
Issue understanding This task enables MiniMax Music 3 (`minimax/music-2.6`) through Phaseo's public music routes. Currently disabled (501 from `disabledMusicRoutes`), it needs: live route mounting, a MiniMax provider adapter (following Suno/ElevenLabs patterns), schema reconciliation, catalog status update to `enabled`, pricing verification, and coverage tests. The opencode-agent already ran an analysis session and posted a detailed prompt above.

The latest comment from tomlycett asks about funded/sponsored work arrangements. The opencode-agent responded noting tomlycett lacks write permissions.

AI Agent Prompt (Copy/Paste)

Enable MiniMax Music 3 through the Phaseo music API. The issue has already been analyzed — see the opencode-agent comment above which provides a detailed prompt with file paths and action items.

For the funding question from tomlycett: this repository appears to be open-source with no indication of contractor budget or paid implementation arrangements for this issue. If the maintainers have a different policy, they should respond directly.

opencode session  |  github run

admin added status/stalestatus/stalestatus/stalestatus/stale labels2mo ago
admin removed status/stalestatus/stalestatus/stalestatus/stale labels10d ago