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::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: 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", "grok", "stability")model- Model identifier (e.g., "dall-e-3", "grok-2-image")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.
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 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: 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)
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"}))