Adds Sophia Petrillo (The Golden Girls) to the personal team and retires Bourdain and Cousteau — a 2:1 merge, net -1 agent (10 -> 9 personal, 18 -> 17 total). Why: the personal team casts fictional characters. Bourdain and Cousteau are real people, one with significant baggage and one who died by suicide, and neither had a dedicated MCP server or capability. Sophia is fictional, plausibly owns both domains (an Italian grandmother knows food; tending plants and the tank is housekeeping), and is the first personal agent to actuate the house via the new Hecate MCP server. Graph: Sophia inherits all 11 node types unchanged (Recipe, Restaurant, Ingredient, Meal, Technique + Species, Plant, Tank, Garden, Ecosystem, Observation). Uniqueness constraints are keyed on node label, not agent, so there is no schema or data migration. Historical Note tags (from:bourdain, to:cousteau) are deliberately left intact as an accurate record. Schema bumped to 2.5.0. Also: - New docs/tools/hecate.md + prompts/tools/hecate.md, documenting the physical-actuation discipline (never guess a room or device slug) and stating plainly what Hecate cannot do yet: no sensor readings (Demeter is REST-only), no weather, and set_timer is routine-bound with no cancel — the conversational timer is coming to Daedalus. - Shawn gains Periplus in the docs. The server was already wired in iolaus but never described in any prompt, so the model was handed a tool it was never told about — including the never-estimate-coordinates rule. - Corrected stale counts (15/16/18 assistants -> 17) and the stale "Bowie's Domain" schema heading missed when David replaced Bowie. - Removed utils/neo4j-schema-init.py.bak, a pre-Watson artifact. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2.1 KiB
2.1 KiB
Hecate (home automation)
Hecate controls the actual house — lights, plugs, the Onkyo receiver, IR devices (TV, soundbar, projector), and saved routines.
- The house is physical. A wrong call turns off the light someone is reading by or kills the receiver mid-film. Confirm before anything disruptive: whole-house changes, powering down a receiver in use, running a multi-room routine.
- Never guess a room or device id. Call
list_rooms/list_devicesfirst, every session. The registry lives in Hecate's database, is per-install, and changes — slugs likeliving_roomandlr_mainare not guessable from conversation and must not be remembered across sessions. - No obvious match means ask. If the lookup doesn't clearly contain what the user said, ask which one they mean. Do not pick the closest-sounding slug.
room=""is the whole house. Omitting the argument is how people accidentally turn off every light in the building.brightness=-1leaves brightness alone;0is a real value that dims to nothing. Outlets ignore brightness entirely.lights_coloronly affects RGB bulbs. White bulbs, dimmers, and outlets in the same room are unaffected — say so rather than claiming the room changed colour.- Use
device_powerfor one specific thing. Room-scopedlights_*hits everything light-like in the room; "turn on the fan plug" isdevice_power(device_id, state). - Name the device when something fails. "The patio blaster is offline" beats "command failed."
- Routines are best-effort.
run_routinereturns per-step outcomes and continues past a failed step — read the outcomes rather than assuming success. - You cannot read any sensor. No soil moisture, no water temperature, no room temperature, no weather — none of it is exposed. Say so plainly, ask the user what they observe, and record it in Neo4j as an
Observation. Never invent a reading. set_timeris not a kitchen timer. It fires a pre-existing routine after a delay and cannot be cancelled. There is no way to create a routine from here. Don't offer a conversational timer and don't claim to be holding one.