"""Single source of truth for every short, hand-authored phrase the
assistant might speak that isn't generated by the SLM.

All of the audio caches in `core/assistant.py` are built from these lists
in `_warm_and_announce`; editing a phrase here is the only step needed to
change what the user hears.
"""


# Fallback text returned when the agent emits an empty `reply` or empty
# `actions` — the caller speaks it live via the normal TTS path, so this
# is a plain string list (no pre-rendering needed).
STALL_PHRASES = [
    "Okay, let me think.",
    "Hold on a second.",
    "Got it, give me a moment.",
    "Let me see.",
]

# Single lead-in phrase played just before a note write/append/remember so
# the user hears activity during the SLM → tool → reply gap. Pre-rendered.
NOTE_WRITE_STALL_PHRASES = [
    "Writing that down.",
    "Saving that now.",
    "Got it, noting that.",
    "On it, jotting that down.",
]

# Single lead-in phrase played just before kicking off a web search +
# summary, so the user knows what's happening during the ~1s gap before
# the spoken answer. Context-specific so they hear "searching the web"
# rather than a generic "let me see". Pre-rendered at warmup.
WEB_SEARCH_STALL_PHRASES = [
    "Searching the web.",
    "Looking that up online.",
    "Let me check online.",
    "Pulling that from the web.",
]

# Single lead-in phrase played just before a thinking-mode replan begins
# — the `ThinkingWatchdog` then takes over with periodic stalls during
# the long /think run.
PRE_THINKING_STALL_PHRASES = [
    "Let me think on that.",
    "I'll think this through.",
    "Thinking it over.",
    "Working through that.",
]

# Short acknowledgement spoken in parallel with the first SLM call of an
# agent-path turn so the user knows their wakeword + utterance were heard.
# Skipped on regex fast-path turns (the tool reply itself is fast enough)
# and on replan iterations (the existing thinking/web-summary stalls cover
# those). Pre-rendered at warmup.
ACK_PHRASES = [
    "Got it.",
    "Okay.",
    "On it.",
    "Sure thing.",
    "Right.",
]

# Played by `ThinkingWatchdog` at given intervals while a thinking-mode
# chat call is in flight, so the user knows the assistant hasn't stalled
# out. Pre-rendered at warmup.
THINKING_STALL_PHRASES = [
    "Still thinking on this.",
    "Working it through, give me a moment.",
    "Almost there.",
    "Just a little more thought needed.",
]

# Topics for the startup greeting's "surprising fact" — rotated so the SLM
# isn't asked the same open-ended question every launch. 
# Specificity is increased to prevent modal collapse to common trivia.
GREETING_TOPICS = [
    # Science & Nature
    "bizarre mechanisms of animal camouflage",
    "the hidden complexities of fungal networks",
    "extreme weather phenomena on other planets",
    "deep-sea extremophiles and how they survive",
    "the aerodynamics of insect flight",
    "unusual or extinct edible plants",
    
    # History & Culture
    "forgotten ancient technologies",
    "the origins of common everyday idioms",
    "unusual historical currencies",
    "misunderstood events in medieval history",
    "the logistics of ancient trade routes",
    
    # Math, Tech & Engineering
    "counterintuitive mathematical paradoxes",
    "accidental scientific discoveries",
    "early internet and computing history",
    "the engineering of ancient aqueducts and plumbing",
    "bizarre and obsolete units of measurement",
    
    # Arts & Human Experience
    "obscure musical instruments from around the world",
    "the chemistry behind historical art supplies",
    "fascinating psychological illusions",
    "the evolution of common household objects",
]