graph:
  id: ChatDev_v1
  description: ChatDev multi-agent software development workflow with planning, coding, review, and testing loops.
  log_level: DEBUG
  is_majority_voting: false
  nodes:
    - id: Code Complete All Phase Loop Counter
      type: loop_counter
      description: ''
      context_window: 0
      config:
        max_iterations: 5
        reset_on_emit: true
        message: ''
    - id: Test Phase Loop Counter
      type: loop_counter
      description: ''
      context_window: 0
      config:
        max_iterations: 3
        reset_on_emit: true
        message: ''
    - id: FINAL
      type: passthrough
      description: ''
      context_window: 0
      config: {}
    - id: USER
      type: passthrough
      description: ''
      context_window: 0
      config: {}
    - id: PSEUDO
      type: passthrough
      config: {}
      description: ''
      context_window: 0
    - id: Programmer Code Review
      type: agent
      config:
        name: gpt-4o
        role: |-
          ${COMMON_PROMPT}
          You are Programmer. we are both working at ChatDev. We share a common interest in collaborating to successfully complete a task assigned by a new customer.
          You can write/create computer software or applications by providing a specific programming language to the computer. You have extensive computing and coding experience in many varieties of programming languages and platforms, such as Python, Java, C, C++, HTML, CSS, JavaScript, XML, SQL, PHP, etc,.
          You will receive the task from user.
          To complete the task, you must call the functions to save or edit the codes that appropriately solves the requested instruction based on your expertise and customer's needs.
        provider: openai
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        params: {}
        tooling:
          - type: function
            config:
              tools:
                - name: uv_related:All
                - name: apply_text_edits
                - name: create_folder
                - name: describe_available_files
                - name: delete_path
                - name: read_file_segment
                - name: search_in_files
                - name: save_file
                - name: list_directory
              timeout:
        thinking:
        memories: []
        retry:
      description: ''
      context_window: -1
    - id: Programmer Test Modification
      type: agent
      config:
        name: gpt-4o
        role: |-
          ${COMMON_PROMPT}
          You are Programmer. we are both working at ChatDev. We share a common interest in collaborating to successfully complete a task assigned by a new customer.
          You can write/create computer software or applications by providing a specific programming language to the computer. You have extensive computing and coding experience in many varieties of programming languages and platforms, such as Python, Java, C, C++, HTML, CSS, JavaScript, XML, SQL, PHP, etc,.
          You will receive the task from user.
          To complete the task, you must call the functions to save or edit the codes that appropriately solves the requested instruction based on your expertise and customer's needs.
        provider: openai
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        params: {}
        tooling:
          - type: function
            config:
              tools:
                - name: uv_related:All
                - name: apply_text_edits
                - name: create_folder
                - name: describe_available_files
                - name: delete_path
                - name: read_file_segment
                - name: search_in_files
                - name: save_file
                - name: list_directory
              timeout:
        thinking:
        memories: []
        retry:
      description: ''
      context_window: -1
    - id: Chief Executive Officer
      type: agent
      config:
        name: gpt-4o
        provider: openai
        role: |-
          ${COMMON_PROMPT}
          You are Chief Executive Officer. Now, we are both working at ChatDev and we share a common interest in collaborating to successfully complete a task assigned by a new customer.
          Your main responsibilities include being an active decision-maker on users' demands and other key policy issues, leader, manager, and executor. Your decision-making role involves high-level decisions about policy and strategy; and your communicator role can involve speaking to the organization's management and employees.
          You will receive the task from user.
          To complete the task, I will give you one or more instructions, and you must help me to write a specific solution that appropriately solves the requested instruction based on your expertise and my needs.
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        params: {}
        tooling:
          - type: function
            config:
              tools:
                - name: uv_related:All
                - name: apply_text_edits
                - name: create_folder
                - name: describe_available_files
                - name: delete_path
                - name: read_file_segment
                - name: search_in_files
                - name: save_file
                - name: list_directory
              timeout:
        thinking:
        memories: []
        retry:
      description: ''
      context_window: 0
    - id: Code Review Comment Phase Prompt for Assistant
      type: literal
      config:
        content: |-
          According to the new user's task and our software designs:
          Task: Please refer to the input from user.
          Modality: Code.
          Programming Language: Python.
          Source Code: You should call the provided functions to load source codes.
          As the Code Reviewer, to make the software directly operable without further coding, ChatDev have formulated the following regulations:
          1) all referenced classes should be imported;
          2) all methods should be implemented;
          3) all methods need to have the necessary comments;
          4) no potential bugs;
          5) The entire project conforms to the tasks proposed by the user;
          6) most importantly, do not only check the errors in the code, but also the logic of code. Make sure that user can interact with generated software without losing any feature in the requirement;
          You should call provided function to load the codes.
          Now, you should check the above regulations one by one and review the codes in detail, propose one comment with the highest priority about the codes, and give me instructions on how to fix. Tell me your comment with the highest priority and corresponding suggestions on revision. If the codes are perfect and you have no comment on them, return only one line like "<INFO> Finished"
        role: user
      description: ''
      context_window: 0
    - id: Test Modification Phase Loop Counter
      type: loop_counter
      config:
        max_iterations: 5
        reset_on_emit: true
        message: ''
      description: ''
      context_window: 0
    - id: Programmer Code Complete
      type: agent
      config:
        name: gpt-4o
        provider: openai
        role: |-
          ${COMMON_PROMPT}
          You are Programmer. we are both working at ChatDev. We share a common interest in collaborating to successfully complete a task assigned by a new customer.
          You can write/create computer software or applications by providing a specific programming language to the computer. You have extensive computing and coding experience in many varieties of programming languages and platforms, such as Python, Java, C, C++, HTML, CSS, JavaScript, XML, SQL, PHP, etc,.
          You will receive the task from user.
          To complete the task, you must call the functions to save or edit the codes that appropriately solves the requested instruction based on your expertise and customer's needs.
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        params: {}
        tooling:
          - type: function
            config:
              tools:
                - name: uv_related:All
                - name: apply_text_edits
                - name: create_folder
                - name: describe_available_files
                - name: delete_path
                - name: read_file_segment
                - name: search_in_files
                - name: save_file
                - name: list_directory
              timeout:
        thinking:
        memories: []
        retry:
      description: ''
      context_window: 0
    - id: Code Complete Phase for Assistant
      type: literal
      config:
        content: |-
          According to the new user's task and our software designs listed below:
          Modality: Code.
          Programming Language: Python.
          Task: Please refer to the input from user.
          Source Code: Yous should call the provided functions to load the codes.
          Unimplemented File: You should find all umplemented classes and methods by calling provided functions and then, implement them. 
          As the Programmer, to satisfy the complete function of our developed software, you have to implement all methods in the unimplemented files which contains a unimplemented class. Now, implement all methods of the unimplemented files and all other codes needed.
          If you find all the files are fully implemented, output "<INFO> FINISHED"
        role: user
      description: ''
      context_window: 0
    - id: Programmer Coding
      type: agent
      config:
        name: gpt-4o
        provider: openai
        role: |-
          ${COMMON_PROMPT}
          You are Programmer. we are both working at ChatDev. We share a common interest in collaborating to successfully complete a task assigned by a new customer.
          You can write/create computer software or applications by providing a specific programming language to the computer. You have extensive computing and coding experience in many varieties of programming languages and platforms, such as Python, Java, C, C++, HTML, CSS, JavaScript, XML, SQL, PHP, etc,.
          You will receive the task from user.
          To complete the task, you must call the functions to save or edit the codes that appropriately solves the requested instruction based on your expertise and customer's needs.
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        params: {}
        tooling:
          - type: function
            config:
              tools:
                - name: uv_related:All
                - name: apply_text_edits
                - name: create_folder
                - name: describe_available_files
                - name: delete_path
                - name: read_file_segment
                - name: search_in_files
                - name: save_file
                - name: list_directory
              timeout:
        thinking:
        memories: []
        retry:
      description: ''
      context_window: 0
    - id: Test Error Summary Phase Prompt for Assistant
      type: literal
      config:
        content: |
          Programming Language: Python
          Source Codes: You should call provided the functions to load the codes.
          Test Reports of Source Codes: You should use `uv_run` function to run the code (don't forget to set timeout for the code running) and observe whether the code passed.

          [CRITICAL INSTRUCTION FOR TIMEOUTS]
          Since the target program might be an endless loop application (e.g., a Snake game, a GUI app, or a server), the test runner MUST use a timeout to terminate it.
          If the test report shows `"timed_out": True`, you must analyze the `stdout` and `stderr`:
          1. **Pass**: If the logs indicate the application started successfully (e.g., "Game started", "Listening on port", or simply running without crashing) and was eventually killed by the timeout, **DO NOT classify this as a bug**. You should consider this a successful run.
          2. **Fail**: Only classify a timeout as a bug if the program was supposed to finish quickly (like a calculation script) but hung, or if it produced no output/errors before timing out.

          According to the test reports, please locate and summarize the bugs that cause the problem. You should NEVER write or edit the codes. You should ONLY "locate and summarize the bugs that cause the problem".
        role: user
      description: ''
      context_window: 0
    - id: Chief Product Officer
      type: agent
      config:
        name: gpt-4o
        provider: openai
        role: |-
          ${COMMON_PROMPT}
          You are Chief Product Officer. we are both working at ChatDev. We share a common interest in collaborating to successfully complete a task assigned by a new customer.
          You are responsible for all product-related matters in ChatDev. Usually includes product design, product strategy, product vision, product innovation, project management and product marketing.
          You will receive the task from user.
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        params: {}
        tooling:
          - type: function
            config:
              tools:
                - name: uv_related:All
                - name: apply_text_edits
                - name: create_folder
                - name: describe_available_files
                - name: delete_path
                - name: read_file_segment
                - name: search_in_files
                - name: save_file
                - name: list_directory
              timeout:
        thinking:
        memories: []
        retry:
      description: ''
      context_window: -1
    - id: Manual Phase Prompt for Assistant
      type: literal
      config:
        content: |-
          Modality: Code.
          Programming Language: Python.
          Task: Please refer to the input from user.
          Source Code: You MUST call the provided functions to load source codes.
          You should NEVER write your own code, but only write user manual for existing code.
          As the Chief Product Officer, by using Markdown, you should write a manual.md file which is a detailed user manual to use the software, including introducing main functions of the software, how to install environment dependencies and how to use/play it.
        role: user
      description: ''
      context_window: 0
    - id: Manual Phase Prompt for User
      type: literal
      config:
        content: |-
          Modality: Code.
          Programming Language: Python.
          Task: Please refer to the input from user.
          Source Code: You MUST call the provided functions to load source codes.
          You should NEVER write your own code, but only write user manual for existing code.
          As the Chief Product Officer, by using Markdown, you should write a manual.md file which is a detailed user manual to use the software, including introducing main functions of the software, how to install environment dependencies and how to use/play it.
        role: assistant
      description: ''
      context_window: 0
    - id: Programmer Test Error Summary
      type: agent
      config:
        name: gpt-4o
        provider: openai
        role: |-
          ${COMMON_PROMPT}
          You are Programmer. we are both working at ChatDev. We share a common interest in collaborating to successfully complete a task assigned by a new customer.
          You can write/create computer software or applications by providing a specific programming language to the computer. You have extensive computing and coding experience in many varieties of programming languages and platforms, such as Python, Java, C, C++, HTML, CSS, JavaScript, XML, SQL, PHP, etc,.
          You will receive the task from user.
          To complete the task, you must call the functions to save or edit the codes that appropriately solves the requested instruction based on your expertise and customer's needs.
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        params: {}
        tooling:
          - type: function
            config:
              tools:
                - name: uv_related:All
                - name: describe_available_files
                - name: read_file_segment
                - name: search_in_files
                - name: list_directory
              timeout:
        thinking:
        memories: []
        retry:
      description: ''
      context_window: -1
    - id: Manual Phase Loop Counter
      type: loop_counter
      config:
        max_iterations: 1
        reset_on_emit: true
        message: ''
      description: ''
      context_window: 0
    - id: Code Reviewer
      type: agent
      config:
        name: gpt-4o
        provider: openai
        role: |-
          ${COMMON_PROMPT}
          You are Code Reviewer. we are both working at ChatDev. We share a common interest in collaborating to successfully complete a task assigned by a new customer.
          You can help programmers to assess source codes for software troubleshooting, fix bugs to increase code quality and robustness, and offer proposals to improve the source codes.
          You will receive the task from user.
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        params: {}
        tooling:
          - type: function
            config:
              tools:
                - name: uv_related:All
                - name: describe_available_files
                - name: read_file_segment
                - name: search_in_files
                - name: list_directory
              timeout:
        thinking:
        memories: []
        retry:
      description: ''
      context_window: -1
    - id: Code Review Modification Phase Prompt for Assistant
      type: literal
      config:
        content: |-
          Modality: Code.
          Programming Language: Python.
          Task: Please refer to the input from user.
          Comments on Codes: Please refer to the input from Reviewer.
          Source Code: You MUST firstly call the functions to load the source codes.
          As the Programmer, to satisfy the new user's demand and make the software creative, executive and robust, you should modify corresponding codes according to the comments. Then, update the codes with all bugs fixed based on the comments. You should call the provided functions to save your modification. You should modify existing codes, rather than create your own codes.
        role: user
      description: ''
      context_window: 0
    - id: Test Modification Phase Prompt for Assistant
      type: literal
      config:
        content: |-
          Modality: Code.
          Programming Language: Python.
          Task: Please refer to the input from user.
          Source Code: Yous MUST firstly call the provided functions to load the codes.
          Error Summary of Test Reports: Please refer to the input
          You MUST modify the existing codes. If you try to implement it from scratch yourself, you'll be fired!
          As the Programmer, to satisfy the new user's demand and make the software execute smoothly and robustly, you should modify the source codes based on the error summary. If no bugs are reported, please return only one line like "<INFO> Finished".
        role: user
      description: ''
      context_window: 0
    - id: Test Modification Phase Prompt for User
      type: literal
      config:
        content: |-
          Modality: Code.
          Programming Language: Python.
          Task: Please refer to the input from user.
          Source Code: Yous MUST firstly call the provided functions to load the codes.
          Error Summary of Test Reports: Please refer to the input
          You MUST modify the existing codes. If you try to implement it from scratch yourself, you'll be fired!
          As the Programmer, to satisfy the new user's demand and make the software execute smoothly and robustly, you should modify the source codes based on the error summary. If no bugs are reported, please return only one line like "<INFO> Finished".
        role: assistant
      description: ''
      context_window: 0
    - id: Coding Phase Prompt for Assistant
      type: literal
      config:
        content: |-
          According to the new user's task and our software designs listed below: 
          Modality: Code.
          Programming Language: Python.
          Task: Please refer to the input from user.
          We have decided to complete the task through a executable software with multiple files implemented via Python. As the Programmer, to satisfy the new user's demands, you should write one or multiple files and make sure that every detail of the architecture is, in the end, implemented as code.
          Think step by step and reason yourself to the right decisions to make sure we get it right.
          You will first lay out the names of the core classes, functions, methods that will be necessary, as well as a quick comment on their purpose.
          Then you will call the functions provided to firstly create Python venv, and then install packages. After that, you should implement the codes and call the functions to save them. 
          Note: the code should be equipped with doc, such as:


          """
          This is the main module to launch the program
          """
          from server import run

          if __name__ == "__main__":
              run()


          Please note that the code should be fully functional. Ensure to implement all functions. No placeholders (such as 'pass' in Python).
          You should call the provided functions to save your code.
        role: user
      description: ''
      context_window: 0
    - id: Software Test Engineer
      type: agent
      config:
        name: gpt-4o
        provider: openai
        role: |-
          ${COMMON_PROMPT}
          You are Software Test Engineer. we are both working at ChatDev. We share a common interest in collaborating to successfully complete a task assigned by a new customer.
          You can use the software as intended to analyze its functional properties, design manual and automated test procedures to evaluate each software product, build and implement software evaluation test programs, and run test programs to ensure that testing protocols evaluate the software correctly.
          You will receive the task from user.

          If you need to run the code, don't forget to set timeout.
          [CRITICAL INSTRUCTION FOR TIMEOUTS]
          Since the target program might be an endless loop application (e.g., a Snake game, a GUI app, or a server), the test runner MUST use a timeout to terminate it.
          If the test report shows `"timed_out": True`, you must analyze the `stdout` and `stderr`:
          1. **Pass**: If the logs indicate the application started successfully (e.g., "Game started", "Listening on port", or simply running without crashing) and was eventually killed by the timeout, **DO NOT classify this as a bug**. You should consider this a successful run.
          2. **Fail**: Only classify a timeout as a bug if the program was supposed to finish quickly (like a calculation script) but hung, or if it produced no output/errors before timing out.
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        params: {}
        tooling:
          - type: function
            config:
              tools:
                - name: uv_related:All
                - name: apply_text_edits
                - name: create_folder
                - name: describe_available_files
                - name: delete_path
                - name: read_file_segment
                - name: search_in_files
                - name: save_file
                - name: list_directory
              timeout:
        thinking:
        memories: []
        retry:
      description: ''
      context_window: -1
    - id: Code Review Phase Loop Counter
      type: loop_counter
      config:
        max_iterations: 10
        reset_on_emit: true
        message: ''
      description: ''
      context_window: 0
  edges:
    - from: Coding Phase Prompt for Assistant
      to: Programmer Coding
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      process:
    - from: Programmer Coding
      to: Code Complete Phase for Assistant
      trigger: true
      condition: 'true'
      carry_data: false
      keep_message: false
      process:
    - from: Programmer Code Complete
      to: Code Complete All Phase Loop Counter
      trigger: true
      condition: 'true'
      carry_data: false
      keep_message: false
      process:
    - from: Code Complete All Phase Loop Counter
      to: Code Complete Phase for Assistant
      trigger: true
      condition: 'true'
      carry_data: false
      keep_message: false
      process:
    - from: Programmer Code Complete
      to: Code Complete Phase for Assistant
      trigger: true
      condition: 'true'
      carry_data: false
      keep_message: false
      process:
    - from: Code Complete All Phase Loop Counter
      to: Code Review Comment Phase Prompt for Assistant
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Code Reviewer
      to: Code Review Modification Phase Prompt for Assistant
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Code Reviewer
      to: Programmer Code Review
      trigger: false
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Programmer Code Review
      to: Code Review Comment Phase Prompt for Assistant
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Programmer Code Review
      to: Code Review Phase Loop Counter
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Code Review Phase Loop Counter
      to: Code Review Comment Phase Prompt for Assistant
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Code Review Comment Phase Prompt for Assistant
      to: Programmer Code Review
      trigger: false
      condition: 'true'
      carry_data: false
      keep_message: false
      clear_context: true
      clear_kept_context: false
      process:
    - from: Test Error Summary Phase Prompt for Assistant
      to: Programmer Test Error Summary
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: true
      clear_kept_context: false
      process:
    - from: Test Error Summary Phase Prompt for Assistant
      to: Programmer Test Modification
      trigger: false
      condition: 'true'
      carry_data: false
      keep_message: false
      clear_context: true
      clear_kept_context: false
      process:
    - from: Programmer Test Error Summary
      to: Programmer Test Modification
      trigger: false
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Code Review Phase Loop Counter
      to: Test Error Summary Phase Prompt for Assistant
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Programmer Test Error Summary
      to: Test Modification Phase Prompt for Assistant
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Code Review Modification Phase Prompt for Assistant
      to: Programmer Code Review
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Test Phase Loop Counter
      to: Test Error Summary Phase Prompt for Assistant
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Programmer Test Modification
      to: Software Test Engineer
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Software Test Engineer
      to: Test Modification Phase Loop Counter
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Software Test Engineer
      to: Programmer Test Modification
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Test Modification Phase Loop Counter
      to: Programmer Test Modification
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Test Modification Phase Loop Counter
      to: PSEUDO
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Programmer Test Modification
      to: PSEUDO
      trigger: true
      condition:
        type: keyword
        config:
          any:
            - <INFO>
          none: []
          regex: []
          case_sensitive: true
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Software Test Engineer
      to: PSEUDO
      trigger: true
      condition:
        type: keyword
        config:
          any:
            - <INFO>
          none: []
          regex: []
          case_sensitive: true
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: USER
      to: Programmer Coding
      trigger: false
      condition: 'true'
      carry_data: true
      keep_message: true
      clear_context: false
      clear_kept_context: false
      process:
    - from: USER
      to: Programmer Code Complete
      trigger: false
      condition: 'true'
      carry_data: true
      keep_message: true
      clear_context: false
      clear_kept_context: false
      process:
    - from: USER
      to: Code Reviewer
      trigger: false
      condition: 'true'
      carry_data: true
      keep_message: true
      clear_context: false
      clear_kept_context: false
      process:
    - from: USER
      to: Programmer Code Review
      trigger: false
      condition: 'true'
      carry_data: true
      keep_message: true
      clear_context: false
      clear_kept_context: false
      process:
    - from: USER
      to: Programmer Test Error Summary
      trigger: false
      condition: 'true'
      carry_data: true
      keep_message: true
      clear_context: false
      clear_kept_context: false
      process:
    - from: USER
      to: Software Test Engineer
      trigger: false
      condition: 'true'
      carry_data: true
      keep_message: true
      clear_context: false
      clear_kept_context: false
      process:
    - from: USER
      to: Programmer Test Modification
      trigger: false
      condition: 'true'
      carry_data: true
      keep_message: true
      clear_context: false
      clear_kept_context: false
      process:
    - from: Code Complete Phase for Assistant
      to: Programmer Code Complete
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: true
      clear_kept_context: false
      process:
    - from: Code Review Comment Phase Prompt for Assistant
      to: Code Reviewer
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: true
      clear_kept_context: false
      process:
    - from: PSEUDO
      to: Test Error Summary Phase Prompt for Assistant
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: PSEUDO
      to: Test Phase Loop Counter
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Programmer Test Error Summary
      to: Test Modification Phase Prompt for User
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Manual Phase Prompt for User
      to: Chief Executive Officer
      trigger: false
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: true
      clear_kept_context: false
      process:
    - from: Manual Phase Prompt for Assistant
      to: Chief Product Officer
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: true
      clear_kept_context: false
      process:
    - from: USER
      to: Chief Executive Officer
      trigger: false
      condition: 'true'
      carry_data: true
      keep_message: true
      clear_context: false
      clear_kept_context: false
      process:
    - from: USER
      to: Chief Product Officer
      trigger: false
      condition: 'true'
      carry_data: true
      keep_message: true
      clear_context: false
      clear_kept_context: false
      process:
    - from: Chief Product Officer
      to: Chief Executive Officer
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Manual Phase Loop Counter
      to: FINAL
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: PSEUDO
      to: Manual Phase Prompt for User
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: PSEUDO
      to: Manual Phase Prompt for Assistant
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Code Reviewer
      to: Test Error Summary Phase Prompt for Assistant
      trigger: true
      condition:
        type: keyword
        config:
          any:
            - <INFO> Finished
          none: []
          regex: []
          case_sensitive: true
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Programmer Code Complete
      to: Code Review Comment Phase Prompt for Assistant
      trigger: true
      condition:
        type: keyword
        config:
          any:
            - <INFO> FINISHED
          none: []
          regex: []
          case_sensitive: true
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Chief Executive Officer
      to: Manual Phase Loop Counter
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Chief Executive Officer
      to: Chief Product Officer
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Manual Phase Loop Counter
      to: Chief Product Officer
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Test Modification Phase Prompt for Assistant
      to: Programmer Test Modification
      trigger: true
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Test Modification Phase Prompt for User
      to: Software Test Engineer
      trigger: false
      condition: 'true'
      carry_data: true
      keep_message: false
      clear_context: false
      clear_kept_context: false
      process:
    - from: Test Error Summary Phase Prompt for Assistant
      to: Software Test Engineer
      trigger: false
      condition: 'true'
      carry_data: false
      keep_message: false
      clear_context: true
      clear_kept_context: false
      process:
  memory: []
  initial_instruction: ''
  start:
    - USER
    - Coding Phase Prompt for Assistant
  end: []
vars:
  COMMON_PROMPT: ChatDev is a software company powered by multiple intelligent 
    agents, such as chief executive officer, chief human resources officer, 
    chief product officer, chief technology officer, etc, with a multi-agent 
    organizational structure and the mission of \"changing the digital world 
    through programming\".
