# FallnAI Autonomous Software Developer # tasks.py from crewai import Task from textwrap import dedent class SoftwareDevelopmentTasks: def __init__(self, user_prompt): self.user_prompt = user_prompt def plan_software(self, agent): return Task( description=dedent(f""" Plan the development of a software application based on the following request: "{self.user_prompt}" Break down the project into clear, executable steps for the other agents. The final output should be a detailed development plan. """), agent=agent ) def write_code(self, agent): return Task( description=dedent(""" Write the core Python code for the application based on the provided plan. Ensure the code is functional, well-commented, and includes necessary imports. The final output must be a single, complete Python script. """), agent=agent ) def write_ui(self, agent): return Task( description=dedent(""" Create a simple but functional HTML/CSS user interface to interact with the Python script. The UI should be a single HTML file with embedded CSS. The final output must be the complete HTML file content. """), agent=agent ) def review_and_test(self, agent, code_content, ui_content): return Task( description=dedent(f""" Review and test the generated Python code and UI. Identify any bugs, errors, or security vulnerabilities. If any issues are found, provide specific feedback for the Coder and UI agents to fix. The final output should be a confirmation that the code is working or a list of required fixes. Code to test: {code_content} UI to test: {ui_content} """), agent=agent ) def write_documentation(self, agent): return Task( description=dedent(""" Analyze the provided software code and the original user request. Write a detailed README.md file that includes: - A project title and a brief description. - A "How to Use" section with clear instructions. - An "Installation" section listing any required dependencies. The final output should be the complete documentation content for a single file named README.md. """), agent=agent ) def push_to_github(self, agent, repo_name): return Task( description=dedent(f""" Take the final, verified code and documentation and push it to a new GitHub repository. The repository name should be '{repo_name}'. The final output must be the URL of the repository. """), agent=agent )