Skip to content

chat_tools.yaml

Source: config/chat_tools.yaml

# config/chat_tools.yaml
# Tool schemas for the chat tool-use agent loop.
# Each tool is auto-discovered by ToolRegistry at startup.
# See docs/superpowers/specs/2026-05-17-quick-chat-tool-agent-design.md §3 and §14.

tools:
  # ── Invocations & Logs ────────────────────────────────
  query_invocations:
    description: "Search the invocation log for LLM calls by date, model, cost, or error status"
    domain: invocations
    type: read
    handler: donna.chat.tools.invocations.query_invocations
    parameters:
      type: object
      properties:
        date_from:
          type: string
          description: "ISO date (YYYY-MM-DD) start filter"
        date_to:
          type: string
          description: "ISO date end filter"
        task_type:
          type: string
          description: "Exact match on task_type"
        model:
          type: string
          description: "Model alias or actual model ID"
        min_cost:
          type: number
          description: "Minimum cost_usd"
        min_latency:
          type: integer
          description: "Minimum latency_ms"
        has_error:
          type: boolean
          description: "Filter to errored invocations"
        sort:
          type: string
          enum: [cost, latency, timestamp, tokens_in]
          default: timestamp
        sort_dir:
          type: string
          enum: [asc, desc]
          default: desc
        limit:
          type: integer
          default: 25
          maximum: 100
      required: []

  get_invocation_detail:
    description: "Get full details for a single LLM invocation by ID"
    domain: invocations
    type: read
    handler: donna.chat.tools.invocations.get_invocation_detail
    parameters:
      type: object
      properties:
        invocation_id:
          type: string
      required: [invocation_id]

  query_invocation_stats:
    description: "Get aggregated invocation statistics grouped by task_type, model, or date"
    domain: invocations
    type: read
    handler: donna.chat.tools.invocations.query_invocation_stats
    parameters:
      type: object
      properties:
        group_by:
          type: string
          enum: [task_type, model, date]
        date_from:
          type: string
          description: "ISO date start"
        date_to:
          type: string
          description: "ISO date end"
      required: [group_by]

  # ── Tasks ─────────────────────────────────────────────
  query_tasks:
    description: "Search tasks by status, priority, domain, or title keyword"
    domain: tasks
    type: read
    handler: donna.chat.tools.tasks.query_tasks
    parameters:
      type: object
      properties:
        status:
          type: string
          description: "Filter by task status"
        priority:
          type: integer
          description: "Filter by priority (0-3)"
        domain:
          type: string
          description: "Filter by domain"
        title_search:
          type: string
          description: "Substring match on title"
        created_after:
          type: string
          description: "ISO date"
        updated_after:
          type: string
          description: "ISO date"
        sort:
          type: string
          enum: [priority, created_at, updated_at, deadline]
          default: priority
        limit:
          type: integer
          default: 25
          maximum: 100
      required: []

  get_task_detail:
    description: "Get full details for a single task by ID"
    domain: tasks
    type: read
    handler: donna.chat.tools.tasks.get_task_detail
    parameters:
      type: object
      properties:
        task_id:
          type: string
      required: [task_id]

  # ── Automations ───────────────────────────────────────
  query_automations:
    description: "List automations, optionally filtered to active only or by skill"
    domain: automations
    type: read
    handler: donna.chat.tools.automations.query_automations
    parameters:
      type: object
      properties:
        active_only:
          type: boolean
          default: true
        skill_name:
          type: string
          description: "Filter by associated skill"
        limit:
          type: integer
          default: 25
          maximum: 100
      required: []

  get_automation_detail:
    description: "Get full config and recent run history for an automation"
    domain: automations
    type: read
    handler: donna.chat.tools.automations.get_automation_detail
    parameters:
      type: object
      properties:
        automation_id:
          type: string
      required: [automation_id]

  # ── Skills ────────────────────────────────────────────
  query_skills:
    description: "List skills by status with run counts and quality scores"
    domain: skills
    type: read
    handler: donna.chat.tools.skills.query_skills
    parameters:
      type: object
      properties:
        status:
          type: string
          enum: [active, candidate, shadow, draft]
        limit:
          type: integer
          default: 25
          maximum: 100
      required: []

  get_skill_detail:
    description: "Get full config and recent runs for a skill"
    domain: skills
    type: read
    handler: donna.chat.tools.skills.get_skill_detail
    parameters:
      type: object
      properties:
        skill_name:
          type: string
      required: [skill_name]

  query_skill_candidates:
    description: "List candidate skills with confidence scores and recommendations"
    domain: skills
    type: read
    handler: donna.chat.tools.skills.query_skill_candidates
    parameters:
      type: object
      properties:
        status:
          type: string
          enum: [pending, approved, rejected]
        limit:
          type: integer
          default: 25
          maximum: 100
      required: []

  # ── Vault ─────────────────────────────────────────────
  list_vault_files:
    description: "List files in the vault, optionally within a folder"
    domain: vault
    type: read
    handler: donna.chat.tools.vault.list_vault_files
    parameters:
      type: object
      properties:
        folder:
          type: string
      required: []

  read_vault_file:
    description: "Read a file from the vault by path"
    domain: vault
    type: read
    handler: donna.chat.tools.vault.read_vault_file
    parameters:
      type: object
      properties:
        path:
          type: string
          description: "Relative path within the vault"
      required: [path]

  # ── System ────────────────────────────────────────────
  get_system_health:
    description: "Get system status overview including queue depth, errors, and uptime"
    domain: system
    type: read
    handler: donna.chat.tools.system.get_system_health
    parameters:
      type: object
      properties: {}
      required: []

  query_preferences:
    description: "List learned preference rules by type"
    domain: system
    type: read
    handler: donna.chat.tools.system.query_preferences
    parameters:
      type: object
      properties:
        rule_type:
          type: string
          description: "Filter by type (scheduling, priority, etc.)"
        enabled_only:
          type: boolean
          default: true
        limit:
          type: integer
          default: 25
          maximum: 100
      required: []

  # ── Write tools (existing action handlers) ────────────
  create_task:
    description: "Create a new task"
    domain: tasks
    type: write
    handler: donna.chat.actions.tasks.create_task
    parameters:
      type: object
      properties:
        title:
          type: string
        description:
          type: string
        priority:
          type: string
          enum: [P0, P1, P2, P3]
        domain:
          type: string
          enum: [personal, work, family]
      required: [title]

  update_task:
    description: "Update a task's status, priority, or notes"
    domain: tasks
    type: write
    handler: donna.chat.actions.tasks.update_task
    parameters:
      type: object
      properties:
        task_id:
          type: string
        status:
          type: string
        priority:
          type: string
        notes:
          type: string
      required: [task_id]

  reschedule_task:
    description: "Reschedule a task to a new date"
    domain: tasks
    type: write
    handler: donna.chat.actions.tasks.reschedule_task
    parameters:
      type: object
      properties:
        task_id:
          type: string
        scheduled_start:
          type: string
          description: "ISO 8601 date or datetime"
      required: [task_id, scheduled_start]

  create_vault_note:
    description: "Create a new note file in the vault"
    domain: vault
    type: write
    handler: donna.chat.actions.vault.create_vault_note
    parameters:
      type: object
      properties:
        title:
          type: string
        content:
          type: string
        folder:
          type: string
      required: [title, content]

  create_automation:
    description: "Create a new automation rule"
    domain: automations
    type: write
    handler: donna.chat.actions.automations.create_automation
    parameters:
      type: object
      properties:
        name:
          type: string
        trigger:
          type: string
        skill_name:
          type: string
      required: [name, trigger, skill_name]

  execute_skill:
    description: "Run a skill and report results"
    domain: skills
    type: write
    handler: donna.chat.actions.skills.execute_skill
    parameters:
      type: object
      properties:
        skill_name:
          type: string
        input_data:
          type: object
      required: [skill_name]

  create_skill_draft:
    description: "Draft a new skill definition"
    domain: skills
    type: write
    handler: donna.chat.actions.skills.create_skill_draft
    parameters:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        steps:
          type: array
          items:
            type: string
      required: [name, description]