## ADDED Requirements ### Requirement: Support Audio As A First-Class Generation Modality The system SHALL treat audio as a first-class generation modality across routing, task execution, and UI entry points. #### Scenario: Audio default route is configured in presets - **GIVEN** the user manages invocation presets - **WHEN** the user selects a default provider-backed model for audio generation - **THEN** the preset SHALL store an `audio` route independently from `text`, `image`, and `video` #### Scenario: Audio mode is available in the AI input bar - **GIVEN** the current workspace supports AI generation entry from the input bar - **WHEN** the user switches generation type - **THEN** the user SHALL be able to choose an `audio` mode - **AND** the request SHALL be parsed as an audio generation request rather than being routed through text or video fallbacks ### Requirement: Resolve Suno Capability Identifiers Separately From Execution Versions The system SHALL distinguish discovered Suno capability identifiers from the executable version fields required by submit requests. #### Scenario: Discovered Suno capability is not used as submit version directly - **GIVEN** a provider profile exposes discovered capabilities such as `suno_music` or `suno-continue` - **WHEN** the user submits a music generation request - **THEN** the system SHALL map the chosen capability to an executable binding - **AND** SHALL send the actual Suno version through the request field `mv` - **AND** SHALL not assume the discovered capability identifier itself is the executable version string #### Scenario: Uploaded continuation appends upload suffix to mv - **GIVEN** the selected audio action represents continuation from an uploaded clip - **WHEN** the user submits the request with a base Suno version such as `chirp-v3-5` - **THEN** the system SHALL transform the submitted version to the upload variant required by the provider - **AND** SHALL keep the rest of the request flow on the same submit endpoint ### Requirement: Submit Suno Music Requests Through Provider-Specific Audio Bindings The system SHALL submit Suno music generation requests through provider-specific audio bindings that describe the provider endpoint, request fields, and supported parameters. #### Scenario: Submit a basic music generation request - **GIVEN** the active audio binding targets Suno music generation - **WHEN** the user provides lyrics or prompt text and submits an audio request - **THEN** the system SHALL send the request to `/suno/submit/music` - **AND** SHALL include the selected `mv` - **AND** SHALL include `prompt` #### Scenario: Submit music request with optional tags and title - **GIVEN** the active audio binding supports Suno custom music generation fields - **WHEN** the user provides `tags` and `title` - **THEN** the system SHALL forward those fields in the submit request - **AND** SHALL keep them associated with the created audio task #### Scenario: Submit continuation fields when continuing a clip - **GIVEN** the user is continuing an existing clip - **WHEN** the user provides `continue_clip_id` and `continue_at` - **THEN** the system SHALL include those fields in the submit request - **AND** SHALL execute the request through the same provider-specific audio binding ### Requirement: Poll Suno Audio Tasks Through Fetch Endpoint The system SHALL poll Suno audio tasks through the provider fetch endpoint and normalize provider statuses into internal task states. #### Scenario: Audio task is queried after submit - **GIVEN** a Suno audio submit request returns a task identifier - **WHEN** the system tracks that task asynchronously - **THEN** it SHALL query `/suno/fetch/{task_id}` - **AND** SHALL update the internal audio task status based on the provider response #### Scenario: Completed Suno task returns audio output - **GIVEN** a Suno fetch response indicates success or completion - **WHEN** the result payload includes audio clip data - **THEN** the system SHALL extract at least one playable audio URL - **AND** SHALL store it in the internal task result for audio history and follow-up actions ### Requirement: Expose Audio Parameters In User-Facing Controls The system SHALL expose the audio parameters needed for Suno music generation in user-facing configuration and submission flows. #### Scenario: Audio parameters are editable before submit - **GIVEN** the user is preparing an audio generation request - **WHEN** the current binding supports Suno music generation - **THEN** the UI SHALL allow the user to review and edit `mv`, `title`, `tags`, and continuation parameters when relevant #### Scenario: Unsupported advanced Suno actions stay hidden from primary flow - **GIVEN** the provider profile exposes additional Suno capabilities beyond initial music generation - **WHEN** those capabilities are not implemented in the current product slice - **THEN** the primary audio generation flow SHALL not expose them as if they were fully supported submit actions - **AND** the runtime MAY preserve their metadata for future expansion