Light Dark

Types

AIAudio

AIAudio type {
    media: Audio,
    provider: Str?,
    model: Str?,
    prompt: Str?,
    voice: Str?,
    language: Str?
}

AI-generated audio with generation metadata.

Fields

  • media - Pure audio data from ::hot::media
  • provider - AI provider (e.g., "openai", "elevenlabs")
  • model - Model identifier (e.g., "tts-1", "tts-1-hd")
  • prompt - Text prompt for speech synthesis
  • voice - Voice identifier used (e.g., "alloy", "shimmer")
  • language - Language code (e.g., "en", "es")

AIImage

AIImage type {
    media: Image,
    provider: Str?,
    model: Str?,
    prompt: Str?,
    revised_prompt: Str?,
    style: Str?,
    quality: Str?
}

AI-generated image with generation metadata.

Fields

  • media - Pure image data from ::hot::media
  • provider - AI provider (e.g., "openai", "grok", "stability")
  • model - Model identifier (e.g., "dall-e-3", "grok-2-image")
  • prompt - Original prompt used to generate
  • revised_prompt - AI-revised prompt (if applicable)
  • style - Style parameter (e.g., "vivid", "natural")
  • quality - Quality parameter (e.g., "standard", "hd")

AIMedia

Unified enum for AI-generated media files.

Wraps pure media types with AI generation metadata.

Usage

import ::hot::ai::media

// Pattern match on AI media type
describe-ai-media fn (ai: AIMedia): Str {
    match ai {
        AIMedia.Image => { `AI Image: ${ai.prompt} via ${ai.provider}` }
        AIMedia.Audio => { `AI Audio: ${ai.voice} voice via ${ai.provider}` }
        AIMedia.Video => { `AI Video: ${ai.prompt} via ${ai.provider}` }
    }
}

// Access underlying pure media
pure-media ai.media

AIMediaBatch

AIMediaBatch type {
    items: Vec,
    succeeded: Int,
    failed: Int,
    errors: Vec?
}

Result of batch AI media generation.

Fields

  • items - Successfully generated AI media files
  • succeeded - Count of successful generations
  • failed - Count of failed generations
  • errors - List of errors (if any)

AIMediaError

AIMediaError type {
    index: Int,
    message: Str
}

Error that occurred during batch AI media generation.

AIVideo

AIVideo type {
    media: Video,
    provider: Str?,
    model: Str?,
    prompt: Str?,
    revised_prompt: Str?
}

AI-generated video with generation metadata.

Fields

  • media - Pure video data from ::hot::media
  • provider - AI provider (e.g., "openai", "runway")
  • model - Model identifier
  • prompt - Original prompt used to generate
  • revised_prompt - AI-revised prompt (if applicable)

Functions

audio

fn (data: AIAudio): AIMedia

Create an AIMedia.Audio from AIAudio data.

Example

ai audio(AIAudio({media: aud, voice: "alloy", provider: "openai"}))

duration

fn (ai: AIMedia): Dec?

Get duration in seconds for AI audio/video. Returns null for images.

Example

seconds duration(ai-audio)  // 3.5
seconds duration(ai-image)  // null

has-duration

fn (ai: AIMedia): Bool

Check if AI media has a duration (audio or video).

image

fn (data: AIImage): AIMedia

Create an AIMedia.Image from AIImage data.

Example

ai image(AIImage({media: img, prompt: "A sunset", provider: "grok"}))

is-audio

fn (ai: AIMedia): Bool

Check if AI media is an Audio variant.

is-image

fn (ai: AIMedia): Bool

Check if AI media is an Image variant.

is-video

fn (ai: AIMedia): Bool

Check if AI media is a Video variant.

video

fn (data: AIVideo): AIMedia

Create an AIMedia.Video from AIVideo data.

Example

ai video(AIVideo({media: vid, prompt: "A timelapse", provider: "openai"}))