name: research
description: Research piece - autonomously executes research without asking questions
piece_config:
  provider_options:
    codex:
      network_access: true
    opencode:
      network_access: true

max_movements: 10
initial_movement: plan
movements:
  - name: plan
    persona: research-planner
    allowed_tools:
      - Read
      - Glob
      - Grep
      - WebSearch
      - WebFetch
    instruction_template: |
      ## Piece Status
      - Iteration: {iteration}/{max_movements} (piece-wide)
      - Movement Iteration: {movement_iteration} (times this movement has run)
      - Movement: plan

      ## Research Request
      {task}

      ## Supervisor Feedback (for re-planning)
      {previous_response}

      ## Additional User Inputs
      {user_inputs}

      ## Instructions
      Create a research plan for the above request.

      **Important**: Do not ask the user questions.
      - Make assumptions for unclear points and proceed
      - If multiple interpretations exist, include all in the research scope
      - If there is feedback from Supervisor, incorporate it into the plan
    rules:
      - condition: Planning is complete
        next: dig
      - condition: Insufficient information to create a plan
        next: ABORT
  - name: dig
    persona: research-digger
    allowed_tools:
      - Read
      - Glob
      - Grep
      - WebSearch
      - WebFetch
    instruction_template: |
      ## Piece Status
      - Iteration: {iteration}/{max_movements} (piece-wide)
      - Movement Iteration: {movement_iteration} (times this movement has run)
      - Movement: dig

      ## Original Research Request
      {task}

      ## Research Plan
      {previous_response}

      ## Additional User Inputs
      {user_inputs}

      ## Instructions
      Execute the research according to the plan above.

      **Important**: Do not ask the user questions.
      - Research within the scope of what can be investigated
      - Report items that could not be researched as "Unable to research"

      Available tools:
      - Web search
      - GitHub search (gh command)
      - Codebase search
      - File reading
    rules:
      - condition: Research is complete
        next: supervise
      - condition: Unable to conduct research
        next: ABORT
  - name: supervise
    persona: research-supervisor
    allowed_tools:
      - Read
      - Glob
      - Grep
      - WebSearch
      - WebFetch
    instruction_template: |
      ## Piece Status
      - Iteration: {iteration}/{max_movements} (piece-wide)
      - Movement Iteration: {movement_iteration} (times this movement has run)
      - Movement: supervise (research quality evaluation)

      ## Original Research Request
      {task}

      ## Digger's Research Results
      {previous_response}

      ## Instructions
      Evaluate the research results and determine if they adequately answer the original request.

      **Important**: If there are issues, include specific instructions for the Planner.
    rules:
      - condition: Research results adequately answer the original request
        next: COMPLETE
      - condition: Research results are insufficient and replanning is needed
        next: plan
