- 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