id = "trigger_reactor"
display_name = "Trigger Reactor"
when_to_use = "Perform a small reactive action in response to an external trigger: persist a memory note, mark an item read, fire a single follow-up. No planning, no delegation — one or two tool calls and done."
temperature = 0.3
max_iterations = 6
sandbox_mode = "none"

# The reactor needs the memory / workspace sections so it can ground
# its response in what the user is currently working on. Identity and
# skills catalog are omitted — the reactor is a narrow specialist
# invoked programmatically, not a front-line agent.
omit_identity = true
omit_memory_context = false
omit_safety_preamble = false
omit_skills_catalog = true
# The reactor personalises small reactive messages (e.g. a follow-up
# DM on behalf of the user) — PROFILE.md gives it the user's name,
# role, and voice so replies don't land generic.
omit_profile = false
# MEMORY.md carries curated context about the user's ongoing work so
# reactive follow-ups stay coherent with what came before. Frozen per
# session (KV-cache contract on `omit_memory_md`).
omit_memory_md = false

[model]
# Always remote. Reactive work hits write-path tools and needs
# reliable native tool-calling, which 1B-class local models do not
# deliver. The `agentic` hint routes to the backend's agentic tier
# via the normal `RouterProvider` path.
hint = "agentic"

[tools]
# Small, deliberately narrow tool surface:
#   - memory_recall / memory_store: look up and persist context
#   - read_workspace_state: understand what the user is working on
#   - spawn_subagent: escalate to a real specialist if the reaction
#     turns out to be bigger than the triage agent expected
named = [
    "memory_recall",
    "memory_store",
    "read_workspace_state",
    "spawn_subagent",
]
