Skip to content

task_types.yaml

Source: config/task_types.yaml

# Task type registry
# See docs/task-system.md for full documentation
#
# Each task type specifies:
#   - prompt_template: path to externalized prompt (Jinja2 or markdown)
#   - output_schema: JSON schema for structured LLM output
#   - model: model alias from donna_models.yaml
#   - tools: list of tools the model may request for this task type
#   - shadow: (optional) secondary model for production monitoring

task_types:
  parse_task:
    description: "Extract structured task fields from natural language"
    model: parser
    prompt_template: prompts/parse_task.md
    output_schema: schemas/task_parse_output.json
    tools: []

  classify_priority:
    description: "Assign priority 1-5 based on content and context"
    model: parser
    prompt_template: prompts/classify_priority.md
    output_schema: schemas/priority_output.json
    tools: [task_db_read]

  generate_digest:
    description: "Generate morning digest in Donna persona"
    model: parser
    shadow: reasoner
    prompt_template: prompts/morning_digest.md
    output_schema: schemas/digest_output.json
    tools: [calendar_read, task_db_read, cost_summary]

  prep_research:
    description: "Research and compile prep materials for a flagged task"
    model: reasoner
    prompt_template: prompts/prep_research.md
    output_schema: schemas/prep_output.json
    tools: [web_search, email_read, notes_read, fs_read]

  dedup_check:
    description: "Determine if two tasks are the same, related, or different"
    model: parser
    prompt_template: prompts/dedup_check.md
    output_schema: schemas/dedup_output.json
    tools: []

  task_decompose:
    description: "Break a complex task into subtasks with dependencies"
    model: reasoner
    prompt_template: prompts/task_decompose.md
    output_schema: schemas/decompose_output.json
    tools: [task_db_read]

  extract_preferences:
    description: "Extract learned preference rules from correction history"
    model: reasoner
    prompt_template: prompts/extract_preferences.md
    output_schema: schemas/extract_preferences_output.json
    tools: []

  generate_nudge:
    description: "Generate a contextual nudge message in Donna persona"
    model: local_parser
    prompt_template: prompts/generate_nudge.md
    output_schema: schemas/nudge_output.json
    tools: []

  generate_reminder:
    description: "Generate a pre-task reminder message in Donna persona"
    model: local_parser
    prompt_template: prompts/generate_reminder.md
    output_schema: schemas/reminder_output.json
    tools: []

  challenge_task:
    description: "Evaluate task quality and generate follow-up questions"
    model: local_parser
    prompt_template: prompts/challenge_task.md
    # F-W3-H: schema points at challenger_parse.json (the Wave 3 unified
    # intent + capability parse shape). ChallengerAgent.execute's legacy
    # {needs_clarification, questions, reasoning} output reads the raw
    # LLM response directly and does not run through validate_output, so
    # this swap does not affect that path.
    output_schema: schemas/challenger_parse.json
    tools: []

  generate_weekly_digest:
    description: "Generate weekly efficiency report in Donna persona"
    model: local_parser
    prompt_template: prompts/weekly_digest.md
    output_schema: schemas/weekly_digest_output.json
    tools: []

  classify_chat_intent:
    description: "Classify user chat message intent"
    model: local_parser
    prompt_template: prompts/chat/classify_intent.md
    output_schema: schemas/chat_intent_output.json
    tools: []

  chat_respond:
    description: "Generate chat response based on intent and context"
    model: local_parser
    prompt_template: prompts/chat/chat_respond.md
    output_schema: schemas/chat_respond_output.json
    tools: []

  chat_summarize:
    description: "Summarize a chat session on close or expiry"
    model: local_parser
    prompt_template: prompts/chat/chat_summarize.md
    output_schema: schemas/chat_summarize_output.json
    tools: []

  chat_escalation:
    description: "Chat response via Claude when local LLM cannot answer"
    model: parser
    prompt_template: prompts/chat/chat_respond.md
    output_schema: schemas/chat_respond_output.json
    tools: []

  triage_failure:
    description: "Decide how to handle a skill runtime failure"
    model: local_parser
    prompt_template: ""
    output_schema: ""
    tools: []

  skill_equivalence_judge:
    description: "Compare two skill outputs for semantic equivalence during shadow sampling"
    model: reasoner
    prompt_template: prompts/skill_equivalence_judge.md
    output_schema: schemas/skill_equivalence_output.json
    tools: []

  skill_auto_draft:
    description: "Claude generates a skill YAML + fixtures for a candidate capability"
    model: reasoner
    prompt_template: prompts/skill_auto_draft.md
    output_schema: schemas/skill_auto_draft_output.json
    tools: []

  skill_evolution:
    description: "Claude regenerates a degraded skill with divergence case studies + correction log"
    model: reasoner
    prompt_template: prompts/skill_evolution.md
    output_schema: schemas/skill_evolution_output.json
    tools: []

  claude_novelty:
    description: "Claude judges no-capability-match messages and emits execution-ready intent + skill reuse verdict"
    model: reasoner
    prompt_template: prompts/claude_novelty.md
    output_schema: schemas/claude_novelty.json
    tools: []

  # Slice 15 — template-driven vault writes
  draft_meeting_note:
    description: "Draft a meeting-note scaffold from calendar + memory context"
    model: reasoner
    prompt_template: prompts/skills/draft_meeting_note.md.j2
    output_schema: schemas/draft_meeting_note.json
    tools: []

  # Slice 16 — cadence-driven template writes
  draft_daily_reflection:
    description: "Draft an end-of-day reflection from today's meetings, tasks, and chats"
    model: reasoner
    prompt_template: prompts/skills/draft_daily_reflection.md.j2
    output_schema: schemas/draft_daily_reflection.json
    tools: []

  draft_weekly_review:
    description: "Draft a weekly self-review from the week's meetings, commitments, and tasks"
    model: reasoner
    prompt_template: prompts/skills/draft_weekly_review.md.j2
    output_schema: schemas/draft_weekly_review.json
    tools: []

  draft_person_profile:
    description: "Draft or refresh a People/{name}.md profile from cross-source context"
    model: reasoner
    prompt_template: prompts/skills/draft_person_profile.md.j2
    output_schema: schemas/draft_person_profile.json
    tools: []

  extract_commitments:
    description: "Extract commitments (speech-act classification) from today's chats and task mutations"
    model: reasoner
    prompt_template: prompts/skills/extract_commitments.md.j2
    output_schema: schemas/extract_commitments.json
    tools: []

# Schema versioning: output schemas use semantic versioning
# e.g., task_parse_output_v2.json
# Orchestrator handles both old and new formats during transitions