Weather
Current conditions and forecast, answered as a plain fact rather than performed in character — so the numbers stay exact.
How to use it
"what's the weather"
"is it going to rain tomorrow"
"how cold is it tonight"
"what's the forecast"
How it works
- Power response (
brain/api.py,_power_response→_WEATHER_RE): weather questions are caught *before* any LLM call.whenis derived from simple substring checks ("tomorrow"/"today"/"tonight"/ default"now") and handed toweather_v2.get_weather(). - Tool fallback (
brain/tools.py,get_weather): if a weather question reaches the tool-use round-trip some other way (e.g. embedded in a longer request), the LLM can still callget_weather(when, location)directly.locationdefaults to home; common fillers like "home"/"here"/"outside" are normalized to "no location given" since the geocoder can't resolve them. - Data source:
weather_v2.py— Open-Meteo, 16-day forecast, Bay Area locations.
Status & known limits
- If
weather_v2returns an error string (starts with "sorry"), the power response falls through to the model rather than voice an error — so an occasional weather answer *does* go through character narration. - Location support beyond "home" is geocoded per-request; no saved list of named locations yet.