Files
koios/prompts/tools/hecate.md
Robert Helewka db59266527 feat(personal): Sophia replaces Bourdain and Cousteau
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>
2026-07-26 19:24:16 -04:00

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_devices first, every session. The registry lives in Hecate's database, is per-install, and changes — slugs like living_room and lr_main are 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=-1 leaves brightness alone; 0 is a real value that dims to nothing. Outlets ignore brightness entirely.
  • lights_color only 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_power for one specific thing. Room-scoped lights_* hits everything light-like in the room; "turn on the fan plug" is device_power(device_id, state).
  • Name the device when something fails. "The patio blaster is offline" beats "command failed."
  • Routines are best-effort. run_routine returns 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_timer is 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.