{"id":13564044,"url":"https://github.com/PR-Pilot-AI/pr-pilot","last_synced_at":"2025-04-03T20:32:45.575Z","repository":{"id":230471082,"uuid":"766333146","full_name":"arc-eng/engine","owner":"arc-eng","description":"An AI agent for your development workflow that can search and manipulate the code base, browse the internet and interact with Github issues and pull requests","archived":false,"fork":false,"pushed_at":"2024-09-19T22:37:23.000Z","size":3506,"stargazers_count":149,"open_issues_count":21,"forks_count":16,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-09-19T23:29:07.471Z","etag":null,"topics":["agent","ai","bot","chatgpt","collaboration","generative-ai","gpt-4","language-model","llm","openai"],"latest_commit_sha":null,"homepage":"https://www.pr-pilot.ai","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arc-eng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-03T00:53:37.000Z","updated_at":"2024-09-19T22:37:26.000Z","dependencies_parsed_at":"2024-04-14T20:43:21.428Z","dependency_job_id":"57fe5b8f-94bd-4bd9-a7e2-437151fbdfe3","html_url":"https://github.com/arc-eng/engine","commit_stats":null,"previous_names":["pr-pilot-ai/pr-pilot","arc-eng/engine"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arc-eng%2Fengine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arc-eng%2Fengine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arc-eng%2Fengine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arc-eng%2Fengine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arc-eng","download_url":"https://codeload.github.com/arc-eng/engine/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223030865,"owners_count":17076515,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","ai","bot","chatgpt","collaboration","generative-ai","gpt-4","language-model","llm","openai"],"created_at":"2024-08-01T13:01:25.918Z","updated_at":"2024-11-04T16:31:44.885Z","avatar_url":"https://github.com/arc-eng.png","language":"Python","funding_links":[],"categories":["Python","Code Review \u0026 Collaboration"],"sub_categories":["Other IDEs"],"readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/ml/17635?s=140\u0026v=\" width=\"100\" alt=\"PR Pilot Logo\"\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/apps/pr-pilot-ai/installations/new\"\u003e\u003cb\u003eInstall\u003c/b\u003e\u003c/a\u003e |\n  \u003ca href=\"https://docs.pr-pilot.ai\"\u003eDocumentation\u003c/a\u003e | \n  \u003ca href=\"https://www.pr-pilot.ai/blog\"\u003eBlog\u003c/a\u003e | \n  \u003ca href=\"https://www.pr-pilot.ai\"\u003eWebsite\u003c/a\u003e\n\u003c/p\u003e\n\n# PR Pilot\n\n[![Build Status](https://github.com/PR-Pilot-AI/pr-pilot/actions/workflows/unit_tests.yml/badge.svg?branch=main)](https://github.com/PR-Pilot-AI/pr-pilot/actions/workflows/unit_tests.yml)                                    │\n![Python](https://img.shields.io/badge/Python-3.8%2B-blue)                                                                                                                                                                     │\n![Django](https://img.shields.io/badge/Django-5.0.3-green)                                                                                                                                                                     │\n![License](https://img.shields.io/badge/License-GPL--3.0-blue)                                                                                                                                                                 │\n![Version](https://img.shields.io/badge/Version-1.4.10-orange)\n\nSave time and stay in the flow by delegating routine work to AI with confidence and predictability. PR Pilot assist you in your daily workflow and works with the dev tools you trust and love - exactly when and where you want it.\n\n[![asciicast](https://asciinema.org/a/664029.svg)](https://asciinema.org/a/664029)\n\nGet started now with our [User Guide](https://docs.pr-pilot.ai/user_guide.html).\n\n\n### Hand of work to PR Pilot from anywhere\n\nYou can interact with PR Pilot in a variety of ways:\n\n#### Using the **[Command-Line Interface](https://github.com/PR-Pilot-AI/pr-pilot-cli)**\n\n```bash\npilot edit main.py \"Add docstrings to all functions and classes\"\n```\n\nWith [prompt templates](https://github.com/PR-Pilot-AI/pr-pilot-cli/tree/main/prompts), you can create powerful,\nreusable commands:\n\n```markdown\nI've made some changes and opened a new PR: #{{ env('PR_NUMBER') }}.\n\nI need a PR title and a description that summarizes these changes in short, concise bullet points.\nThe PR description will also be used as merge commit message, so it should be clear and informative.\n\nUse the following guidelines:\n\n- Start title with a verb in the imperative mood (e.g., \"Add\", \"Fix\", \"Update\").\n- At the very top, provide 1-sentence summary of the changes and their impact.\n- Below, list the changes made in bullet points.\n\n# Your task\nEdit PR #{{ env('PR_NUMBER') }} title and description to reflect the changes made in this PR.\n```\n\nSend PR Pilot off to give any PR a title and description according to your guidelines:\n\n```bash\nPR_NUMBER=153 pilot task -f generate-pr-description.md.jinja2\n```\n\n#### Using the **[Python SDK](https://github.com/PR-Pilot-AI/pr-pilot-python)**:\n\n```python\nfrom pr_pilot.util import create_task, wait_for_result\n\nprompt = \"\"\"\n1. Find all 'bug' issues created yesterday on Slack and Linear.\n2. Summarize and post them to #bugs-daily on Slack\n3. Save the summary in `reports/\u003cdate\u003e.md`\n\"\"\"\n\ngithub_repo = \"PR-Pilot-AI/pr-pilot\"\ntask = create_task(github_repo, prompt)\nresult = wait_for_result(task)\n\nprint(result)\n```\n\n#### Using the **[REST API](https://app.pr-pilot.ai/api/redoc/)**:\n\n```bash \ncurl -X POST 'https://app.pr-pilot.ai/api/tasks/' \\\n-H 'Content-Type: application/json' \\\n-H 'X-Api-Key: YOUR_API_KEY_HERE' \\\n-d '{\n    \"prompt\": \"Properly format the README.md and add emojis\",\n    \"github_repo\": \"owner/repo\"\n}'\n```\n\n\n#### Using **[Smart Workflows](https://github.com/PR-Pilot-AI/smart-workflows)**:\n\n```yaml\n# .github/workflows/chat_bot.yaml`\n\nname: \"🤖 My Project's Custom Chat Bot\"\n\non:\n  issues:\n    types: [labeled, commented]\n  issue_comment:\n    types: [created]\n\njobs:\n  handle-chat:\n    if: \u003e\n      (github.event.label.name == 'chat' || contains(github.event.issue.labels.*.name, 'chat')) \u0026\u0026\n      github.event.sender.login != 'pr-pilot-ai[bot]'\n    runs-on: ubuntu-latest\n    steps:\n      - name: AI Chat Response\n        uses: PR-Pilot-AI/smart-actions/quick-task@v1\n        with:\n          api-key: ${{ secrets.PR_PILOT_API_KEY }}\n          agent-instructions: |\n              @${{ github.event.sender.login }} commented on issue #${{ github.event.issue.number }}.\n              Read the content of issue #${{ github.event.issue.number }}.\n              If there are no comments yet, add a comment that makes sense in the context of the issue.\n              If there are comments, provide a response to the latest comment.\n```\n\n\n#### or talk to PR Pilot directly on **[Github issues and PRs](https://github.com/PR-Pilot-AI/pr-pilot/issues?q=label:demo+)**:\n\n![First pilot command](docs/source/img/first_command.png)\n\n## 🛠️ Installation\n\nTo get started, follow our [User Guide](https://docs.pr-pilot.ai/user_guide.html).\n\n## 🚀 Run Locally\n\nSet the following environment variables:\n\n| Variable                | Description                                                     |\n|-------------------------|-----------------------------------------------------------------|\n| `GITHUB_APP_CLIENT_ID`  | GitHub App Client ID                                            |\n| `GITHUB_APP_SECRET`     | GitHub App Secret                                               |\n| `GITHUB_WEBHOOK_SECRET` | Secret for securing webhooks                                    |\n| `GITHUB_APP_ID`         | GitHub App ID                                                   |\n| `OPENAI_API_KEY`        | API key for OpenAI services                                     |\n| `REPO_DIR`              | Directory for storing repository data                           |\n| `TAVILY_API_KEY`        | API key for Tavily search engine                                |\n| `STRIPE_API_KEY`        | Stripe API key for handling payments                            |\n| `STRIPE_WEBHOOK_SECRET` | Secret for securing Stripe webhook endpoints                    |\n| `DJANGO_SECRET_KEY`     | Secret key for Django                                           |\n| `SENTRY_DSN`            | (Optional) Sentry DSN for error monitoring                      |\n| `JOB_STRATEGY`          | (Optional) Strategy for running jobs ('thread', 'redis', 'log') |\n| `REDIS_HOST`            | (Optional) Redis host for job scheduling                        |\n| `REDIS_PORT`            | (Optional) Redis port for job scheduling                        |\n| `REPO_CACHE_DIR`        | (Optional) Directory for storing repository cache               |\n| `REPO_DIR`              | (Optional) Workspace for storing repo in worker                 |\n| `SLACK_APP_ID`          | Slack App ID               |\n| `SLACK_CLIENT_ID`       | Slack Client ID            |\n| `SLACK_CLIENT_SECRET`   | Slack Client Secret        |\n| `SLACK_SIGNING_SECRET`  | Slack Signing Secret       |\n\nTo get PR Pilot up and running on your own machine, follow these steps:\n\n\n```bash\n# Clone the repository\ngit clone https://github.com/PR-Pilot-AI/pr-pilot.git\n\n# Change directory\ncd pr-pilot\n\n# Install dependencies\npip install -r requirements.txt\n\n# Apply migrations\npython manage.py migrate\n\n# Create a superuser\npython manage.py createsuperuser\n\n# Start the development server\npython manage.py runserver\n```\n\nTo expose your local server to the internet, you can use `ngrok`:\n\n```bash\nngrok http 8000\n```\n\n## 🧪 Unit Tests\n\nPR Pilot uses `tox` for managing unit tests. The test setup is configured in the `tox.ini` file, and tests are written using `pytest`.\n\nTo run the tests, execute:\n\n```bash\ntox\n```\n\nThis will run all the tests defined in the project, ensuring that your changes do not break existing functionality.\n\n## 📚 Code Documentation\n\nFor more information on the code structure and documentation, please visit [docs/code](docs/code).\n\n## 🤝 Contributing\n\nWe welcome contributions to PR Pilot! Please check out our [contributing guidelines](CONTRIBUTING.md) for more information on how to get involved.\n\n## 📄 License\n\nPR Pilot is open source and available under the GPL-3 License. See the [LICENSE](LICENSE) file for more info.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPR-Pilot-AI%2Fpr-pilot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPR-Pilot-AI%2Fpr-pilot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPR-Pilot-AI%2Fpr-pilot/lists"}