From 34e89e45bd28b5f16995ba3ec0ac07b60cbf7c45 Mon Sep 17 00:00:00 2001 From: mrT23 Date: Mon, 19 Feb 2024 20:40:24 +0200 Subject: [PATCH] help improved --- pr_agent/settings/configuration.toml | 3 +- pr_agent/tools/pr_description.py | 8 ++- pr_agent/tools/pr_help_message.py | 99 +++++++++++++++++++++++----- 3 files changed, 92 insertions(+), 18 deletions(-) diff --git a/pr_agent/settings/configuration.toml b/pr_agent/settings/configuration.toml index 5917b274e..61df54178 100644 --- a/pr_agent/settings/configuration.toml +++ b/pr_agent/settings/configuration.toml @@ -58,7 +58,8 @@ use_bullet_points=true extra_instructions = "" enable_pr_type=true final_update_message = true -enable_help_text=true +enable_help_text=false +enable_help_comment=true ## changes walkthrough section enable_semantic_files_types=true collapsible_file_list='adaptive' # true, false, 'adaptive' diff --git a/pr_agent/tools/pr_description.py b/pr_agent/tools/pr_description.py index f5dfa1a22..cf85d13fb 100644 --- a/pr_agent/tools/pr_description.py +++ b/pr_agent/tools/pr_description.py @@ -11,7 +11,7 @@ from pr_agent.algo.token_handler import TokenHandler from pr_agent.algo.utils import load_yaml, set_custom_labels, get_user_labels, ModelType from pr_agent.config_loader import get_settings -from pr_agent.git_providers import get_git_provider +from pr_agent.git_providers import get_git_provider, GithubProvider from pr_agent.git_providers.git_provider import get_main_pr_language from pr_agent.log import get_logger from pr_agent.servers.help import HelpMessage @@ -106,6 +106,12 @@ async def run(self): pr_body += "
\n\n
✨ Usage guide:
\n\n" pr_body += HelpMessage.get_describe_usage_guide() pr_body += "\n
\n" + elif get_settings().pr_description.enable_help_comment: + if isinstance(self.git_provider, GithubProvider): + pr_body +="\n\n___\n\n✨ **PR-Agent usage guide**:\n\n- [ ] Mark this checkbox :gem:, or comment `/help` on the PR, to get a list of PR-Agent tools and their descriptions. " + else: + pr_body +="\n\n___\n\n>Comment `/help` on the PR to to get a list of PR-Agent tools and their descriptions\n\n___\n\n" + # final markdown description full_markdown_description = f"## Title\n\n{pr_title}\n\n___\n{pr_body}" diff --git a/pr_agent/tools/pr_help_message.py b/pr_agent/tools/pr_help_message.py index 4189ff851..4615135fb 100644 --- a/pr_agent/tools/pr_help_message.py +++ b/pr_agent/tools/pr_help_message.py @@ -1,5 +1,5 @@ from pr_agent.config_loader import get_settings -from pr_agent.git_providers import get_git_provider +from pr_agent.git_providers import get_git_provider, GithubProvider from pr_agent.log import get_logger @@ -14,21 +14,88 @@ async def run(self): pr_comment += "🤖 Welcome to the PR Agent, an AI-powered tool for automated pull request analysis, feedback, suggestions and more.""" pr_comment += "\n\nHere is a list of tools you can use to interact with the PR Agent:\n" base_path = "https://github.com/Codium-ai/pr-agent/tree/main/docs" - pr_comment += f"" - pr_comment += f"\n" - pr_comment += f"\n" - pr_comment += f"\n" - pr_comment += f"\n" - pr_comment += f"\n" - pr_comment += f"\n" - pr_comment += f"\n" - pr_comment += f"\n" - pr_comment += f"\n" - pr_comment += f"\n" - pr_comment += f"\n" - pr_comment += f"\n" - pr_comment += "
ToolDescription
\n\n[DESCRIBE]({base_path}/DESCRIBE.md)Generates PR description - title, type, summary, code walkthrough and labels
\n\n[REVIEW]({base_path}/REVIEW.md)Adjustable feedback about the PR, possible issues, security concerns, review effort and more
\n\n[IMPROVE]({base_path}/IMPROVE.md)Code suggestions for improving the PR.
\n\n[ASK]({base_path}/ASK.md)Answering free-text questions about the PR.
\n\n[SIMILAR ISSUE]({base_path}/SIMILAR_ISSUE.md)Automatically retrieves and presents similar issues.
\n\n[UPDATE CHANGELOG]({base_path}/UPDATE_CHANGELOG.md)Automatically updates the changelog.
\n\n[ADD DOCUMENTATION]({base_path}/ADD_DOCUMENTATION.md)Generates documentation to methods/functions/classes that changed in the PR.
\n\n[GENERATE CUSTOM LABELS]({base_path}/GENERATE_CUSTOM_LABELS.md)Generates custom labels for the PR, based on specific guidelines defined by the user
\n\n[ANALYZE]({base_path}/Analyze.md)Identifies code components that changed in the PR, and enables to interactively generate tests, docs, and code suggestions for each component.
\n\n[TEST]({base_path}/TEST.md)Generates unit tests for a selected component, based on the PR code change.
\n\n[CI FEEDBACK]({base_path}/CI_FEEDBACK.md)Generates feedback and analysis for a failed CI job.
\n\n[CUSTOM SUGGESTIONS]({base_path}/CUSTOM_SUGGESTIONS.md)Generates custom suggestions for improving the PR code, based on specific guidelines defined by the user.
\n\n" - pr_comment += f"""\n\nNote that each tool be [invoked automatically](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md#github-app-automatic-tools-for-pr-actions) when a new PR is opened, or called manually by [commenting on a PR](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md#online-usage).""" + + tool_names = [] + tool_names.append(f"[DESCRIBE]({base_path}/DESCRIBE.md)") + tool_names.append(f"[REVIEW]({base_path}/REVIEW.md)") + tool_names.append(f"[IMPROVE]({base_path}/IMPROVE.md)") + tool_names.append(f"[ANALYZE]({base_path}/Analyze.md)") + tool_names.append(f"[UPDATE CHANGELOG]({base_path}/UPDATE_CHANGELOG.md)") + tool_names.append(f"[ADD DOCUMENTATION]({base_path}/ADD_DOCUMENTATION.md)") + tool_names.append(f"[ASK]({base_path}/ASK.md)") + tool_names.append(f"[GENERATE CUSTOM LABELS]({base_path}/GENERATE_CUSTOM_LABELS.md)") + tool_names.append(f"[TEST]({base_path}/TEST.md)") + tool_names.append(f"[CI FEEDBACK]({base_path}/CI_FEEDBACK.md)") + tool_names.append(f"[CUSTOM SUGGESTIONS]({base_path}/CUSTOM_SUGGESTIONS.md)") + tool_names.append(f"[SIMILAR ISSUE]({base_path}/SIMILAR_ISSUE.md)") + + descriptions = [] + descriptions.append("Generates PR description - title, type, summary, code walkthrough and labels") + descriptions.append("Adjustable feedback about the PR, possible issues, security concerns, review effort and more") + descriptions.append("Code suggestions for improving the PR.") + descriptions.append("Identifies code components that changed in the PR, and enables to interactively generate tests, docs, and code suggestions for each component.") + descriptions.append("Automatically updates the changelog.") + descriptions.append("Generates documentation to methods/functions/classes that changed in the PR.") + descriptions.append("Answering free-text questions about the PR.") + descriptions.append("Generates custom labels for the PR, based on specific guidelines defined by the user") + descriptions.append("Generates unit tests for a selected component, based on the PR code change.") + descriptions.append("Generates feedback and analysis for a failed CI job.") + descriptions.append("Generates custom suggestions for improving the PR code, based on specific guidelines defined by the user.") + descriptions.append("Automatically retrieves and presents similar issues.") + + commands =[] + commands.append("`/describe`") + commands.append("`/review`") + commands.append("`/improve`") + commands.append("`/analyze`") + commands.append("`/update_changelog`") + commands.append("`/add_docs`") + commands.append("`/ask`") + commands.append("`/generate_labels`") + commands.append("`/test`") + commands.append("`/checks`") + commands.append("`/custom_suggestions`") + commands.append("`/similar_issue`") + + checkbox_list = [] + checkbox_list.append(" - [ ] Send ") + checkbox_list.append(" - [ ] Send ") + checkbox_list.append(" - [ ] Send ") + checkbox_list.append(" - [ ] Send ") + checkbox_list.append(" - [ ] Send ") + checkbox_list.append(" - [ ] Send ") + checkbox_list.append("[*]") + checkbox_list.append("[*]") + checkbox_list.append("[*]") + checkbox_list.append("[*]") + checkbox_list.append("[*]") + checkbox_list.append("[*]") + + if isinstance(self.git_provider, GithubProvider): + pr_comment += f"" + for i in range(len(tool_names)): + pr_comment += f"\n\n\n" + pr_comment += "
ToolDescriptionRun this command :gem:
\n\n{tool_names[i]}{descriptions[i]}\n\n{checkbox_list[i]}\n
\n\n" + pr_comment += f"""\n\n(1) Note that each tool be [invoked automatically](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md#github-app-automatic-tools-for-pr-actions) when a new PR is opened, or called manually by [commenting on a PR](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md#online-usage).""" + pr_comment += f"""\n\n(2) Tools marked with [*] require additional parameters to be passed. For example, to invoke the `/ask` tool, you need to comment on a PR: `/ask "What is the purpose of this PR?"`. See the relevant documentation for each tool for more details.""" + else: + pr_comment += f"" + for i in range(len(tool_names)): + pr_comment += f"\n" + # pr_comment += f"\n" + # pr_comment += f"\n" + # pr_comment += f"\n" + # pr_comment += f"\n" + # pr_comment += f"\n" + # pr_comment += f"\n" + # pr_comment += f"\n" + # pr_comment += f"\n" + # pr_comment += f"\n" + # pr_comment += f"\n" + # pr_comment += f"\n" + # pr_comment += f"\n" + pr_comment += "
ToolCommandDescription
\n\n{tool_names[i]}{commands[i]}{descriptions[i]}
\n\n[DESCRIBE]({base_path}/DESCRIBE.md)Generates PR description - title, type, summary, code walkthrough and labels
\n\n[REVIEW]({base_path}/REVIEW.md)Adjustable feedback about the PR, possible issues, security concerns, review effort and more
\n\n[IMPROVE]({base_path}/IMPROVE.md)Code suggestions for improving the PR.
\n\n[ASK]({base_path}/ASK.md)Answering free-text questions about the PR.
\n\n[SIMILAR ISSUE]({base_path}/SIMILAR_ISSUE.md)Automatically retrieves and presents similar issues.
\n\n[UPDATE CHANGELOG]({base_path}/UPDATE_CHANGELOG.md)Automatically updates the changelog.
\n\n[ADD DOCUMENTATION]({base_path}/ADD_DOCUMENTATION.md)Generates documentation to methods/functions/classes that changed in the PR.
\n\n[GENERATE CUSTOM LABELS]({base_path}/GENERATE_CUSTOM_LABELS.md)Generates custom labels for the PR, based on specific guidelines defined by the user
\n\n[ANALYZE]({base_path}/Analyze.md)Identifies code components that changed in the PR, and enables to interactively generate tests, docs, and code suggestions for each component.
\n\n[TEST]({base_path}/TEST.md)Generates unit tests for a selected component, based on the PR code change.
\n\n[CI FEEDBACK]({base_path}/CI_FEEDBACK.md)Generates feedback and analysis for a failed CI job.
\n\n[CUSTOM SUGGESTIONS]({base_path}/CUSTOM_SUGGESTIONS.md)Generates custom suggestions for improving the PR code, based on specific guidelines defined by the user.
\n\n" + pr_comment += f"""\n\nNote that each tool be [invoked automatically](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md#github-app-automatic-tools-for-pr-actions) when a new PR is opened, or called manually by [commenting on a PR](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md#online-usage).""" if get_settings().config.publish_output: self.git_provider.publish_comment(pr_comment) except Exception as e: