2024-01-07 09:56:09 +02:00
class HelpMessage :
@staticmethod
def get_general_commands_text ( ) :
commands_text = " > - **/review**: Request a review of your Pull Request. \n " \
2023-12-26 08:26:18 +02:00
" > - **/describe**: Update the PR title and description based on the contents of the PR. \n " \
" > - **/improve [--extended]**: Suggest code improvements. Extended mode provides a higher quality feedback. \n " \
" > - **/ask \\ <QUESTION \\ >**: Ask a question about the PR. \n " \
" > - **/update_changelog**: Update the changelog based on the PR ' s contents. \n " \
" > - **/add_docs** 💎: Generate docstring for new components introduced in the PR. \n " \
" > - **/generate_labels** 💎: Generate labels for the PR based on the PR ' s contents. \n " \
" > - **/analyze** 💎: Automatically analyzes the PR, and presents changes walkthrough for each component. \n \n " \
2024-03-12 17:27:26 +02:00
" >See the [tools guide](https://pr-agent-docs.codium.ai/tools/) for more details. \n " \
2024-01-07 09:56:09 +02:00
" >To list the possible configuration parameters, add a **/config** comment. \n "
return commands_text
2023-07-16 15:00:13 +03:00
2024-01-07 09:56:09 +02:00
@staticmethod
def get_general_bot_help_text ( ) :
output = f " > To invoke the PR-Agent, add a comment using one of the following commands: \n { HelpMessage . get_general_commands_text ( ) } \n "
return output
2023-07-16 15:00:13 +03:00
2024-01-07 09:56:09 +02:00
@staticmethod
def get_review_usage_guide ( ) :
output = " **Overview:** \n "
2024-03-25 08:53:13 +02:00
output + = ( " The `review` tool scans the PR code changes, and generates a PR review which includes several types of feedbacks, such as possible PR issues, security threats and relevant test in the PR. More feedbacks can be [added](https://pr-agent-docs.codium.ai/tools/review/#general-configurations) by configuring the tool. \n \n "
2024-03-25 08:51:59 +02:00
" The tool can be triggered [automatically](https://pr-agent-docs.codium.ai/usage-guide/automations_and_usage/#github-app-automatic-tools-when-a-new-pr-is-opened) every time a new PR is opened, or can be invoked manually by commenting on any PR. \n " )
2024-01-07 09:56:09 +02:00
output + = """ \
2024-03-25 08:51:59 +02:00
- When commenting , to edit [ configurations ] ( https : / / github . com / Codium - ai / pr - agent / blob / main / pr_agent / settings / configuration . toml #L23) related to the review tool (`pr_reviewer` section), use the following template:
2024-01-07 09:56:09 +02:00
` ` `
/ review - - pr_reviewer . some_config1 = . . . - - pr_reviewer . some_config2 = . . .
2024-01-08 09:28:44 +02:00
` ` `
2024-03-25 08:51:59 +02:00
- With a [ configuration file ] ( https : / / pr - agent - docs . codium . ai / usage - guide / configuration_options / ) , use the following template :
2024-01-08 09:28:44 +02:00
` ` `
[ pr_reviewer ]
some_config1 = . . .
some_config2 = . . .
2024-01-07 09:56:09 +02:00
` ` `
"""
2024-03-25 08:51:59 +02:00
output + = f " \n \n See the review [usage page](https://pr-agent-docs.codium.ai/tools/review/) for a comprehensive guide on using this tool. \n \n "
2024-01-07 09:56:09 +02:00
return output
@staticmethod
def get_describe_usage_guide ( ) :
output = " **Overview:** \n "
output + = " The `describe` tool scans the PR code changes, and generates a description for the PR - title, type, summary, walkthrough and labels. "
2024-03-12 17:27:26 +02:00
output + = " The tool can be triggered [automatically](https://pr-agent-docs.codium.ai/usage-guide/automations_and_usage/#github-app-automatic-tools-when-a-new-pr-is-opened) every time a new PR is opened, or can be invoked manually by commenting on a PR. \n "
2024-01-07 09:56:09 +02:00
output + = """ \
2024-01-08 09:28:44 +02:00
When commenting , to edit [ configurations ] ( https : / / github . com / Codium - ai / pr - agent / blob / main / pr_agent / settings / configuration . toml #L46) related to the describe tool (`pr_description` section), use the following template:
2024-01-07 09:56:09 +02:00
` ` `
/ describe - - pr_description . some_config1 = . . . - - pr_description . some_config2 = . . .
` ` `
2024-03-12 17:27:26 +02:00
With a [ configuration file ] ( https : / / pr - agent - docs . codium . ai / usage - guide / configuration_options / ) , use the following template :
2024-01-08 09:28:44 +02:00
` ` `
[ pr_description ]
some_config1 = . . .
some_config2 = . . .
` ` `
2024-01-07 09:56:09 +02:00
"""
output + = " \n \n <table> "
# automation
output + = " <tr><td><details> <summary><strong> Enabling \\ disabling automation </strong></summary><hr> \n \n "
output + = """ \
2024-03-12 17:27:26 +02:00
- When you first install the app , the [ default mode ] ( https : / / pr - agent - docs . codium . ai / usage - guide / automations_and_usage / #github-app-automatic-tools-when-a-new-pr-is-opened) for the describe tool is:
2024-01-07 09:56:09 +02:00
` ` `
2024-04-17 16:29:12 +03:00
pr_commands = [ " /describe --pr_description.add_original_user_description=true ... " ]
2024-01-07 09:56:09 +02:00
` ` `
2024-04-17 16:29:12 +03:00
meaning the ` describe ` tool will run automatically on every PR , and will add the original user description above the generated description .
2024-01-07 09:56:09 +02:00
- Markers are an alternative way to control the generated description , to give maximal control to the user . If you set :
` ` `
pr_commands = [ " /describe --pr_description.use_description_markers=true " , . . . ]
` ` `
the tool will replace every marker of the form ` pr_agent : marker_name ` in the PR description with the relevant content , where ` marker_name ` is one of the following :
- ` type ` : the PR type .
- ` summary ` : the PR summary .
- ` walkthrough ` : the PR walkthrough .
Note that when markers are enabled , if the original PR description does not contain any markers , the tool will not alter the description at all .
"""
output + = " \n \n </details></td></tr> \n \n "
2024-01-09 22:09:48 +02:00
# custom labels
2024-01-07 09:56:09 +02:00
output + = " <tr><td><details> <summary><strong> Custom labels </strong></summary><hr> \n \n "
output + = """ \
The default labels of the ` describe ` tool are quite generic : [ ` Bug fix ` , ` Tests ` , ` Enhancement ` , ` Documentation ` , ` Other ` ] .
2024-03-12 17:27:26 +02:00
If you specify [ custom labels ] ( https : / / pr - agent - docs . codium . ai / tools / describe / #handle-custom-labels-from-the-repos-labels-page) in the repo's labels page or via configuration file, you can get tailored labels for your use cases.
2024-01-07 09:56:09 +02:00
Examples for custom labels :
- ` Main topic : performance ` - pr_agent : The main topic of this PR is performance
- ` New endpoint ` - pr_agent : A new endpoint was added in this PR
- ` SQL query ` - pr_agent : A new SQL query was added in this PR
- ` Dockerfile changes ` - pr_agent : The PR contains changes in the Dockerfile
- . . .
The list above is eclectic , and aims to give an idea of different possibilities . Define custom labels that are relevant for your repo and use cases .
Note that Labels are not mutually exclusive , so you can add multiple label categories .
Make sure to provide proper title , and a detailed and well - phrased description for each label , so the tool will know when to suggest it .
"""
output + = " \n \n </details></td></tr> \n \n "
2024-01-23 17:58:55 +02:00
# Inline File Walkthrough
output + = " <tr><td><details> <summary><strong> Inline File Walkthrough 💎</strong></summary><hr> \n \n "
output + = """ \
For enhanced user experience , the ` describe ` tool can add file summaries directly to the " Files changed " tab in the PR page .
This will enable you to quickly understand the changes in each file , while reviewing the code changes ( diffs ) .
To enable inline file summary , set ` pr_description . inline_file_summary ` in the configuration file , possible values are :
2024-01-23 18:13:08 +02:00
- ` ' table ' ` : File changes walkthrough table will be displayed on the top of the " Files changed " tab , in addition to the " Conversation " tab .
- ` true ` : A collapsable file comment with changes title and a changes summary for each file in the PR .
- ` false ` ( default ) : File changes walkthrough will be added only to the " Conversation " tab .
2024-01-23 17:58:55 +02:00
"""
2024-02-06 08:31:36 +02:00
2024-01-09 22:09:48 +02:00
# extra instructions
output + = " <tr><td><details> <summary><strong> Utilizing extra instructions</strong></summary><hr> \n \n "
output + = ''' \
2024-01-09 22:49:26 +02:00
The ` describe ` tool can be configured with extra instructions , to guide the model to a feedback tailored to the needs of your project .
2024-01-09 22:09:48 +02:00
2024-01-09 22:49:26 +02:00
Be specific , clear , and concise in the instructions . With extra instructions , you are the prompter . Notice that the general structure of the description is fixed , and cannot be changed . Extra instructions can change the content or style of each sub - section of the PR description .
Examples for extra instructions :
` ` `
[ pr_description ]
2024-04-07 16:28:30 +03:00
extra_instructions = """ \
2024-01-09 22:56:25 +02:00
- The PR title should be in the format : ' <PR type>: <title> '
- The title should be short and concise ( up to 10 words )
2024-01-09 22:49:26 +02:00
- . . .
"""
` ` `
Use triple quotes to write multi - line instructions . Use bullet points to make the instructions more readable .
'''
output + = " \n \n </details></td></tr> \n \n "
2024-01-09 22:09:48 +02:00
2024-01-07 09:56:09 +02:00
# general
output + = " \n \n <tr><td><details> <summary><strong> More PR-Agent commands</strong></summary><hr> \n \n "
output + = HelpMessage . get_general_bot_help_text ( )
output + = " \n \n </details></td></tr> \n \n "
output + = " </table> "
2024-03-12 17:27:26 +02:00
output + = f " \n \n See the [describe usage](https://pr-agent-docs.codium.ai/tools/describe/) page for a comprehensive guide on using this tool. \n \n "
2024-01-07 09:56:09 +02:00
return output
2024-01-09 16:25:23 +02:00
@staticmethod
def get_ask_usage_guide ( ) :
output = " **Overview:** \n "
output + = """ \
2024-01-09 16:36:39 +02:00
The ` ask ` tool answers questions about the PR , based on the PR code changes .
2024-01-09 16:25:23 +02:00
It can be invoked manually by commenting on any PR :
` ` `
/ ask " ... "
2024-01-09 16:36:39 +02:00
` ` `
2024-04-14 12:43:26 +03:00
Note that the tool does not have " memory " of previous questions , and answers each question independently .
You can ask questions about the entire PR , about specific code lines , or about an image related to the PR code changes .
2024-01-09 16:25:23 +02:00
"""
2024-04-14 12:43:26 +03:00
# output += "\n\n<table>"
#
# # # general
# # output += "\n\n<tr><td><details> <summary><strong> More PR-Agent commands</strong></summary><hr> \n\n"
# # output += HelpMessage.get_general_bot_help_text()
# # output += "\n\n</details></td></tr>\n\n"
#
# output += "</table>"
2024-01-09 16:25:23 +02:00
2024-03-12 17:27:26 +02:00
output + = f " \n \n See the [ask usage](https://pr-agent-docs.codium.ai/tools/ask/) page for a comprehensive guide on using this tool. \n \n "
2024-01-09 16:25:23 +02:00
return output
2024-01-17 09:50:48 +02:00
@staticmethod
def get_improve_usage_guide ( ) :
output = " **Overview:** \n "
2024-01-17 15:51:42 +02:00
output + = " The `improve` tool scans the PR code changes, and automatically generates suggestions for improving the PR code. "
2024-03-12 17:27:26 +02:00
output + = " The tool can be triggered [automatically](https://pr-agent-docs.codium.ai/usage-guide/automations_and_usage/#github-app-automatic-tools-when-a-new-pr-is-opened) every time a new PR is opened, or can be invoked manually by commenting on a PR. \n "
2024-01-17 09:50:48 +02:00
output + = """ \
2024-03-25 08:51:59 +02:00
- When commenting , to edit [ configurations ] ( https : / / github . com / Codium - ai / pr - agent / blob / main / pr_agent / settings / configuration . toml #L78) related to the improve tool (`pr_code_suggestions` section), use the following template:
2024-01-17 09:50:48 +02:00
` ` `
/ improve - - pr_code_suggestions . some_config1 = . . . - - pr_code_suggestions . some_config2 = . . .
` ` `
2024-03-25 08:51:59 +02:00
- With a [ configuration file ] ( https : / / pr - agent - docs . codium . ai / usage - guide / configuration_options / ) , use the following template :
2024-01-17 09:50:48 +02:00
` ` `
[ pr_code_suggestions ]
some_config1 = . . .
some_config2 = . . .
` ` `
"""
2024-03-25 08:51:59 +02:00
output + = f " \n \n See the improve [usage page](https://pr-agent-docs.codium.ai/tools/improve/) for a comprehensive guide on using this tool. \n \n "
2024-01-17 09:50:48 +02:00
return output