# ═══════════════════════════════════════════════════════════════════════
# Morrowind MCP — Runtime Configuration
# ═══════════════════════════════════════════════════════════════════════
# Edit this file to tune Timmy's Morrowind gameplay without code changes.
# Hermes loads this at session start. Changes take effect next session.
#
# Location: ~/.timmy/morrowind/mcp_config.yaml
# ═══════════════════════════════════════════════════════════════════════

# ── Server Identity ───────────────────────────────────────────────────
# The key under mcp_servers in config.yaml.  Hermes prefixes every tool
# with "mcp_{server_key}_", so shorter = less room for the model to
# hallucinate.  If you rename this, also update config.yaml to match.
server_key: mw

# ── Tool Names ────────────────────────────────────────────────────────
# Exact tool names Hermes registers.  Injected into the context file
# so the model never has to guess.  Update if you add tools to
# mcp_server.py or change the server_key above.
tools:
  - name: mcp_mw_perceive
    hint: "Read game world state: position, health, nearby NPCs/doors/items"
  - name: mcp_mw_status
    hint: "Check if OpenMW is running"
  - name: mcp_mw_move
    hint: "Move player — direction: forward|backward|left|right|turn_left|turn_right, duration in seconds"
  - name: mcp_mw_action
    hint: "Game action — activate|jump|attack|journal|quicksave|quickload|sneak|wait"
  - name: mcp_mw_screenshot
    hint: "Take a screenshot for vision analysis"

# ── Gameplay Guards ───────────────────────────────────────────────────
# Caps and safety rails.  All optional — comment out to disable.
guards:
  # Max consecutive tool errors before Timmy should stop and reflect.
  # Prevents the "30 iterations of Method not found" loop.
  max_consecutive_errors: 3

  # Max total MCP calls per session.  0 = unlimited.
  max_mcp_calls_per_session: 0

  # Seconds to pause between action calls (prevents input spam).
  action_cooldown_seconds: 0.5

  # Auto-quicksave every N action cycles.  0 = never.
  auto_quicksave_interval: 25

# ── Perception ────────────────────────────────────────────────────────
perception:
  # How often the Lua engine writes perception blocks (seconds).
  # Must match the timer interval in your OpenMW Lua script.
  lua_tick_interval: 2.0

  # Path to OpenMW log (source of perception data).
  # Tilde-expanded at runtime.
  openmw_log: "~/Library/Preferences/openmw/openmw.log"

  # Screenshot directory.
  screenshot_dir: "~/.timmy/morrowind/screenshots"

# ── Gameplay Tuning ───────────────────────────────────────────────────
gameplay:
  # Default move duration when not specified.
  default_move_duration: 1.0

  # Default model for gameplay sessions (empty = use config.yaml default).
  model: ""

  # System prompt additions for gameplay sessions.
  # Injected after SOUL.md, before the conversation.
  system_prompt_suffix: |
    You are playing Morrowind via MCP tools.
    Use EXACT tool names from your context — never abbreviate or guess.
    If a tool call fails, check the name against your available tools before retrying.
    Perceive before acting. Quicksave before risky moves.

# ── Trajectory Logging ────────────────────────────────────────────────
trajectories:
  # Log every perception-action pair for DPO training.
  enabled: true

  # Directory for trajectory JSONL files.
  dir: "~/.timmy/morrowind/trajectories"

  # Max file size before rotation (MB).  0 = no rotation.
  max_file_mb: 50
