diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 10cf57bd..082c0583 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,3 +1,27 @@ +## [Version 0.9] - 2023-10-29 +- codiumai/pr-agent:0.9 +- codiumai/pr-agent:0.9-github_app +- codiumai/pr-agent:0.9-bitbucket-app +- codiumai/pr-agent:0.9-gitlab_webhook +- codiumai/pr-agent:0.9-github_polling +- codiumai/pr-agent:0.9-github_action + +### Added::Algo +- New tool - [generate_labels](https://github.com/Codium-ai/pr-agent/blob/main/docs/GENERATE_CUSTOM_LABELS.md) +- New ability to use [customize labels](https://github.com/Codium-ai/pr-agent/blob/main/docs/GENERATE_CUSTOM_LABELS.md#how-to-enable-custom-labels) on the `review` and `describe` tools. +- GitHub Action: Can now use a `.pr_agent.toml` file to control configuration parameters (see [Usage Guide](./Usage.md#working-with-github-action)). +- GitHub App: Added ability to trigger tools on push events (see [link](https://github.com/Codium-ai/pr-agent/blob/main/pr_agent/settings/configuration.toml#L91)) +- Support custom domain URLs for azure devops integration (see [link](https://github.com/Codium-ai/pr-agent/pull/381)). +- PR Description default mode is now in [bullet points](https://github.com/Codium-ai/pr-agent/blob/main/pr_agent/settings/configuration.toml#L35). + +### Added::Documentation +Significant documentation updates (see [Installation Guide](https://github.com/Codium-ai/pr-agent/blob/main/INSTALL.md), [Usage Guide](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md), and [Tools Guide](https://github.com/Codium-ai/pr-agent/blob/main/docs/TOOLS_GUIDE.md)) + +### Fixed +- Fixed support for BitBucket pipeline (see [link](https://github.com/Codium-ai/pr-agent/pull/386)) +- Fixed a bug in `review -i` tool +- Added blacklist for specific file extensions in `add_docs` tool (see [link](https://github.com/Codium-ai/pr-agent/pull/385/)) + ## [Version 0.8] - 2023-09-27 - codiumai/pr-agent:0.8 - codiumai/pr-agent:0.8-github_app diff --git a/Usage.md b/Usage.md index fc5d7b3b..95b52b57 100644 --- a/Usage.md +++ b/Usage.md @@ -159,21 +159,28 @@ user=""" Note that the new prompt will need to generate an output compatible with the relevant [post-process function](./pr_agent/tools/pr_description.py#L137). ### Working with GitHub Action -You can configure settings in GitHub action by adding environment variables under the env section in `.github/workflows/pr_agent.yml` file. Some examples: +You can configure settings in GitHub action by adding environment variables under the env section in `.github/workflows/pr_agent.yml` file. +Specifically, start by setting the following environment variables: ```yaml env: - # ... previous environment values - OPENAI.ORG: "" - PR_REVIEWER.REQUIRE_TESTS_REVIEW: "false" # Disable tests review - PR_CODE_SUGGESTIONS.NUM_CODE_SUGGESTIONS: 6 # Increase number of code suggestions - github_action.auto_review: "true" # Enable auto review - github_action.auto_describe: "true" # Enable auto describe - github_action.auto_improve: "false" # Disable auto improve + OPENAI_KEY: ${{ secrets.OPENAI_KEY }} # Make sure to add your OpenAI key to your repo secrets + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Make sure to add your GitHub token to your repo secrets + github_action.auto_review: "true" # enable\disable auto review + github_action.auto_describe: "true" # enable\disable auto describe + github_action.auto_improve: "false" # enable\disable auto improve ``` -specifically, `github_action.auto_review`, `github_action.auto_describe` and `github_action.auto_improve` are used to enable/disable automatic tools that run when a new PR is opened. - +`github_action.auto_review`, `github_action.auto_describe` and `github_action.auto_improve` are used to enable/disable automatic tools that run when a new PR is opened. If not set, the default option is that only the `review` tool will run automatically when a new PR is opened. +Note that you can give additional config parameters by adding environment variables to `.github/workflows/pr_agent.yml`, or by using a `.pr_agent.toml` file in the root of your repo, similar to the GitHub App usage. + +For example, you can set an environment variable: `pr_description.add_original_user_description=false`, or add a `.pr_agent.toml` file with the following content: +``` +[pr_description] +add_original_user_description = false +``` + + ### Changing a model See [here](pr_agent/algo/__init__.py) for the list of available models. diff --git a/docs/GENERATE_CUSTOM_LABELS.md b/docs/GENERATE_CUSTOM_LABELS.md index 596ab5ba..2035b02c 100644 --- a/docs/GENERATE_CUSTOM_LABELS.md +++ b/docs/GENERATE_CUSTOM_LABELS.md @@ -14,10 +14,14 @@ When running the `generate_labels` tool on a PR that includes changes in SQL que ### How to enable custom labels + +Note that in addition to the dedicated tool `generate_labels`, the custom labels will also be used by the `review` and `describe` tools. + #### CLI To enable custom labels, you need to apply the [configuration changes](#configuration-changes) to the [custom_labels file](./../pr_agent/settings/custom_labels.toml): -#### Github Action and Gihub App -To enable custom labels, you need to apply the [configuration changes](#configuration-changes) to the `.pr_agent.toml` file in you repository. + +#### GitHub Action and GitHub App +To enable custom labels, you need to apply the [configuration changes](#configuration-changes) to the local `.pr_agent.toml` file in you repository. #### Configuration changes - Change `enable_custom_labels` to True: This will turn off the default labels and enable the custom labels provided in the custom_labels.toml file. diff --git a/pr_agent/algo/utils.py b/pr_agent/algo/utils.py index 7de31fd4..423771a3 100644 --- a/pr_agent/algo/utils.py +++ b/pr_agent/algo/utils.py @@ -307,6 +307,9 @@ def try_fix_yaml(review_text: str) -> dict: def set_custom_labels(variables): + if not get_settings().config.enable_custom_labels: + return + labels = get_settings().custom_labels if not labels: # set default labels diff --git a/pr_agent/servers/github_action_runner.py b/pr_agent/servers/github_action_runner.py index 0d02b3b3..4d35abff 100644 --- a/pr_agent/servers/github_action_runner.py +++ b/pr_agent/servers/github_action_runner.py @@ -19,10 +19,6 @@ async def run_action(): OPENAI_KEY = os.environ.get('OPENAI_KEY') or os.environ.get('OPENAI.KEY') OPENAI_ORG = os.environ.get('OPENAI_ORG') or os.environ.get('OPENAI.ORG') GITHUB_TOKEN = os.environ.get('GITHUB_TOKEN') - CUSTOM_LABELS = os.environ.get('CUSTOM_LABELS') - CUSTOM_LABELS_DESCRIPTIONS = os.environ.get('CUSTOM_LABELS_DESCRIPTIONS') - # CUSTOM_LABELS is a comma separated list of labels (string), convert to list and strip spaces - get_settings().set("CONFIG.PUBLISH_OUTPUT_PROGRESS", False) # Check if required environment variables are set @@ -38,7 +34,6 @@ async def run_action(): if not GITHUB_TOKEN: print("GITHUB_TOKEN not set") return - # CUSTOM_LABELS_DICT = handle_custom_labels(CUSTOM_LABELS, CUSTOM_LABELS_DESCRIPTIONS) # Set the environment variables in the settings get_settings().set("OPENAI.KEY", OPENAI_KEY) @@ -46,7 +41,6 @@ async def run_action(): get_settings().set("OPENAI.ORG", OPENAI_ORG) get_settings().set("GITHUB.USER_TOKEN", GITHUB_TOKEN) get_settings().set("GITHUB.DEPLOYMENT_TYPE", "user") - # get_settings().set("CUSTOM_LABELS", CUSTOM_LABELS_DICT) # Load the event payload try: @@ -104,31 +98,5 @@ async def run_action(): await PRAgent().handle_request(url, body) -def handle_custom_labels(CUSTOM_LABELS, CUSTOM_LABELS_DESCRIPTIONS): - if CUSTOM_LABELS: - CUSTOM_LABELS = [x.strip() for x in CUSTOM_LABELS.split(',')] - else: - # Set default labels - CUSTOM_LABELS = ['Bug fix', 'Tests', 'Bug fix with tests', 'Refactoring', 'Enhancement', 'Documentation', - 'Other'] - print(f"Using default labels: {CUSTOM_LABELS}") - if CUSTOM_LABELS_DESCRIPTIONS: - CUSTOM_LABELS_DESCRIPTIONS = [x.strip() for x in CUSTOM_LABELS_DESCRIPTIONS.split(',')] - else: - # Set default labels - CUSTOM_LABELS_DESCRIPTIONS = ['Fixes a bug in the code', 'Adds or modifies tests', - 'Fixes a bug in the code and adds or modifies tests', - 'Refactors the code without changing its functionality', - 'Adds new features or functionality', - 'Adds or modifies documentation', - 'Other changes that do not fit in any of the above categories'] - print(f"Using default labels: {CUSTOM_LABELS_DESCRIPTIONS}") - # create a dictionary of labels and descriptions - CUSTOM_LABELS_DICT = dict() - for i in range(len(CUSTOM_LABELS)): - CUSTOM_LABELS_DICT[CUSTOM_LABELS[i]] = {'description': CUSTOM_LABELS_DESCRIPTIONS[i]} - return CUSTOM_LABELS_DICT - - if __name__ == '__main__': asyncio.run(run_action()) \ No newline at end of file