- on_ticket
- if sandbox
- fetch_relevant_files
- get_commit_history
- post_process_snippets
- ExternalSearcher.extract_summaries of any links mentioned in issue + replies
- extract_relevant_docs / DocumentationSearcher: get in-repo docs
- ContextPruning(HumanMessagePrompt()): chat pruning_prompt to get what context to prune
- sweet_bot = SweepBot.from_system_message_content(HumanMessagePrompt())
- bot.get_files_to_change()
- if is python issue: chat extract_files_to_change_prompt
- chat files_to_change_prompt
- returns list of checks/creates/changes
- bot.validate_sandbox(file change requests)
- check_sandbox for some file →
- validate_file_change_requests
- bot.generate_pull_request(): chat PR
- create_pr_changes()
- bot.change_files_in_github_iterator()
- switch
- handle_create_file_main()
- handle_modify_file_main()
- refactor
- test
- check
- delete
- rename
- check_sandbox(file)
- run_sandbox(file)
- start container
- clone if nec
- update files based on request
- for each, check it (i.e. lint/fmt)
- HumanMessagePrompt: just dumps a bunch of context about relevant snippets, paths, history, repo tree, repo & issue metadata
- prompts sequence
- system prompt
- pruning_prompt - what paths to keep (prune the rest), what dirs to expand
- extract_files_to_change_prompt
- files_to_change_prompt - what files to add/update, whether to use tools
- in parallel: sandbox
- draft PR
- create_file_prompt
- review_prompt
- final_review_prompt
- observations / ideas
- doesn’t work in terms of the higher level approach for a lot of cases, not very impressive
- doesn’t really work mechanically, often
- no repeated iteration
- no deep critiquing, but does review
- no tree of thought
- shallow
- find relevant other similar calls to the used functions