Functions
Audio
Alias of ::hot::media/Audio
Image
Alias of ::hot::media/Image
Video
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 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::mediaprovider- AI provider (e.g., "openai", "elevenlabs")model- Model identifier (e.g., "tts-1", "tts-1-hd")prompt- Text prompt for speech synthesisvoice- 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::mediaprovider- AI provider (e.g., "openai", "xai", "stability")model- Model identifier (e.g., "dall-e-3", "aurora")prompt- Original prompt used to generaterevised_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 filessucceeded- Count of successful generationsfailed- Count of failed generationserrors- 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::mediaprovider- AI provider (e.g., "openai", "runway")model- Model identifierprompt- Original prompt used to generaterevised_prompt- AI-revised prompt (if applicable)