Light Dark

Functions

Audio alias

Alias of ::hot::media/Audio

Image alias

Alias of ::hot::media/Image

Video alias

Alias of ::hot::media/Video

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: "xai"}))

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.

ns alias

Alias of ::ai::media/

Types for AI-generated media files (images, audio, video).

These types wrap pure media types from ::hot::media with AI generation metadata like prompts, models, and provider information.

Usage

import ::hot::media
import ::ai::media

// Create AI-generated image
ai-image AIImage({
    media: Image({file: file-meta, width: 1024, height: 1024, format: "png"}),
    provider: "openai",
    model: "dall-e-3",
    prompt: "A sunset over mountains",
    style: "vivid",
    quality: "hd"
})

// Access the underlying media
pure-image ai-image.media
file-path ai-image.media.file.path

video

fn (data: AIVideo): AIMedia

Create an AIMedia.Video from AIVideo data.

Example

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

Types

AIAudio

AIAudio type {
    media: ::hot::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: ::hot::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", "xai", "stability")
  • model - Model identifier (e.g., "dall-e-3", "aurora")
  • 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. Declared enum open so applications can register additional AI-generated kinds (e.g., a custom AIDocument or AI3DModel) via arrow enrollment without forking this type:

AIDocument type { file: FileMeta, prompt: Str, model: Str }
AIDocument -> AIMedia.Document

Because the variant set is open-ended, match on AIMedia MUST include a _ default arm (open-enum-match-missing-default otherwise).

Usage

import ::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}` }
        _ => { "unknown AI media kind" }
    }
}

// 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: ::hot::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)