@gaud_erp/paperclip-github-manager 1.9.1 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/manifest.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // src/manifest.ts
2
2
  var manifest = {
3
3
  id: "cus.github-manager",
4
- version: "1.9.1",
4
+ version: "2.0.1",
5
5
  apiVersion: 1,
6
6
  displayName: "GitHub Manager",
7
7
  description: "Manage GitHub repos, PRs, issues, agent code reviews, and knowledge graphs \u2014 all from Paperclip",
@@ -161,6 +161,34 @@ var manifest = {
161
161
  required: ["query"]
162
162
  }
163
163
  },
164
+ {
165
+ name: "github_get_pr_checks",
166
+ displayName: "Get PR CI/CD Status",
167
+ description: "Get CI/CD check runs status for a pull request (pass/fail/pending)",
168
+ parametersSchema: {
169
+ type: "object",
170
+ properties: {
171
+ owner: { type: "string" },
172
+ repo: { type: "string" },
173
+ pull_number: { type: "number" }
174
+ },
175
+ required: ["owner", "repo", "pull_number"]
176
+ }
177
+ },
178
+ {
179
+ name: "github_get_pr_comments",
180
+ displayName: "Get PR Review Comments",
181
+ description: "Get all review comments, discussions, and review verdicts on a pull request",
182
+ parametersSchema: {
183
+ type: "object",
184
+ properties: {
185
+ owner: { type: "string" },
186
+ repo: { type: "string" },
187
+ pull_number: { type: "number" }
188
+ },
189
+ required: ["owner", "repo", "pull_number"]
190
+ }
191
+ },
164
192
  {
165
193
  name: "github_get_repo_structure",
166
194
  displayName: "Get Repo Structure",
@@ -234,47 +262,37 @@ You have access to GitHub repositories through the GitHub Manager plugin tools.
234
262
 
235
263
  ## Available Tools
236
264
 
237
- ### 1. github_get_repo_structure
238
- Get the directory and file structure of a repository. **Always call this FIRST** before reading any files.
239
-
240
- Parameters:
241
- - \`repo_full_name\` (required): Repository in "owner/repo" format
242
- - \`refresh\` (optional): Set to true to regenerate from GitHub if cache is stale
243
-
244
- ### 2. github_read_file_content
245
- Read the content of a specific file from a GitHub repository.
246
-
247
- Parameters:
248
- - \`owner\` (required): Repository owner (e.g. "gauderp")
249
- - \`repo\` (required): Repository name (e.g. "gaud-erp-api")
250
- - \`path\` (required): File path (e.g. "src/main/java/com/gaud/App.java")
251
- - \`ref\` (optional): Branch or commit SHA (defaults to main branch)
252
-
253
- ### 3. github_get_pull_request_diff
254
- Get the unified diff of a pull request for code review.
255
-
256
- Parameters:
257
- - \`owner\`, \`repo\`, \`pull_number\`
258
-
259
- ### 4. github_search_issues
260
- Search GitHub issues and PRs using GitHub search syntax.
265
+ ### Codebase Navigation
266
+ - **github_get_repo_structure** \u2014 Get directory/file structure. **Call FIRST** before reading files. Params: \`repo_full_name\`, optional \`refresh=true\`
267
+ - **github_read_file_content** \u2014 Read a file. Params: \`owner\`, \`repo\`, \`path\`, optional \`ref\`
268
+ - **github_list_repositories** \u2014 List all tracked repos (no params)
269
+ - **github_search_issues** \u2014 Search issues/PRs. Params: \`query\`
261
270
 
262
- Parameters:
263
- - \`query\`: GitHub search query (e.g. "is:open label:bug")
271
+ ### PR Review
272
+ - **github_get_pull_request_diff** \u2014 Get unified diff. Params: \`owner\`, \`repo\`, \`pull_number\`
273
+ - **github_get_pr_checks** \u2014 Get CI/CD status (pass/fail/pending). Params: \`owner\`, \`repo\`, \`pull_number\`
274
+ - **github_get_pr_comments** \u2014 Get all review comments, discussions, and verdicts. Params: \`owner\`, \`repo\`, \`pull_number\`
275
+ - **github_create_review_comment** \u2014 Post inline comment. Params: \`owner\`, \`repo\`, \`pull_number\`, \`commit_id\`, \`path\`, \`line\`, \`body\`
276
+ - **github_submit_pr_review** \u2014 Submit verdict. Params: \`owner\`, \`repo\`, \`pull_number\`, \`event\` (APPROVE/REQUEST_CHANGES/COMMENT), \`body\`
264
277
 
265
- ### 5. github_list_repositories
266
- List all tracked GitHub repositories (no parameters needed).
278
+ ## PR Review Workflow
267
279
 
268
- ## Mandatory Workflow
280
+ When reviewing a PR:
281
+ 1. \`github_get_repo_structure\` \u2014 understand the codebase
282
+ 2. \`github_get_pull_request_diff\` \u2014 see what changed
283
+ 3. \`github_get_pr_checks\` \u2014 verify CI/CD passed
284
+ 4. \`github_get_pr_comments\` \u2014 check existing reviews from others
285
+ 5. \`github_read_file_content\` \u2014 read surrounding code for context
286
+ 6. \`github_create_review_comment\` \u2014 post inline comments on issues
287
+ 7. \`github_submit_pr_review\` \u2014 approve or request changes with summary
288
+ 8. If CI failed or changes needed, tag the PR author to fix
269
289
 
270
- 1. **ALWAYS** start with \`github_get_repo_structure\` to understand the codebase layout
271
- 2. Read only the files you actually need with \`github_read_file_content\`
272
- 3. If the structure seems outdated, call \`github_get_repo_structure\` with \`refresh=true\`
273
- 4. Never try to access the local filesystem for source code \u2014 always use these tools
290
+ ## Codebase Exploration Workflow
274
291
 
275
- ## Token Efficiency
276
- The structure cache returns directories and key files in a single call (~5-50KB).
277
- This replaces hundreds of file-listing API calls, saving 60-90% of tokens.
292
+ 1. **ALWAYS** start with \`github_get_repo_structure\` to understand layout
293
+ 2. Read only the files you need with \`github_read_file_content\`
294
+ 3. If structure seems outdated, call with \`refresh=true\`
295
+ 4. Never access the local filesystem \u2014 always use these tools
278
296
  `
279
297
  }
280
298
  ],
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/manifest.ts"],
4
- "sourcesContent": ["import type { PaperclipPluginManifestV1 } from \"@paperclipai/plugin-sdk\";\n\nconst manifest: PaperclipPluginManifestV1 = {\n id: \"cus.github-manager\",\n version: \"1.9.1\",\n apiVersion: 1,\n displayName: \"GitHub Manager\",\n description: \"Manage GitHub repos, PRs, issues, agent code reviews, and knowledge graphs \u2014 all from Paperclip\",\n author: \"Gaud ERP\",\n categories: [\"connector\", \"automation\"],\n\n capabilities: [\n \"events.subscribe\",\n \"events.emit\",\n \"http.outbound\",\n \"plugin.state.read\",\n \"plugin.state.write\",\n \"database.namespace.read\",\n \"database.namespace.write\",\n \"database.namespace.migrate\",\n \"jobs.schedule\",\n \"webhooks.receive\",\n \"agent.tools.register\",\n \"agents.managed\",\n \"agents.invoke\",\n \"agents.read\",\n \"issues.read\",\n \"issues.create\",\n \"companies.read\",\n \"ui.page.register\",\n \"ui.dashboardWidget.register\",\n \"ui.sidebar.register\",\n \"ui.detailTab.register\",\n \"ui.action.register\",\n \"instance.settings.register\",\n \"skills.managed\",\n ],\n\n instanceConfigSchema: {\n type: \"object\",\n required: [\"githubToken\"],\n properties: {\n githubToken: {\n type: \"string\",\n title: \"GitHub Personal Access Token\",\n description: \"Cole aqui o PAT do GitHub com permiss\u00F5es 'repo' e 'read:org'\",\n },\n defaultOrg: {\n type: \"string\",\n title: \"Default Organization\",\n description: \"GitHub organization to sync repositories from (optional)\",\n },\n syncIntervalMinutes: {\n type: \"number\",\n title: \"Sync Interval (minutes)\",\n description: \"How often to sync PRs and issues (default: 5)\",\n default: 5,\n minimum: 1,\n maximum: 1440,\n },\n },\n },\n\n entrypoints: {\n worker: \"./dist/worker.js\",\n ui: \"./dist/ui\",\n },\n\n database: {\n migrationsDir: \"src/db/migrations\",\n },\n\n jobs: [\n {\n jobKey: \"sync-github\",\n displayName: \"Sync GitHub PRs and Issues\",\n schedule: \"*/5 * * * *\",\n description: \"Incremental sync of open PRs and issues for tracked repositories\",\n },\n ],\n\n webhooks: [\n {\n endpointKey: \"github-events\",\n displayName: \"GitHub Events\",\n description: \"Receives GitHub webhook events (pull_request, issues)\",\n },\n ],\n\n tools: [\n {\n name: \"github_get_pull_request_diff\",\n displayName: \"Get PR Diff\",\n description: \"Retrieve the unified diff of a GitHub pull request\",\n parametersSchema: {\n type: \"object\",\n properties: {\n owner: { type: \"string\" },\n repo: { type: \"string\" },\n pull_number: { type: \"number\" },\n },\n required: [\"owner\", \"repo\", \"pull_number\"],\n },\n },\n {\n name: \"github_read_file_content\",\n displayName: \"Read File\",\n description: \"Read a file from a GitHub repository\",\n parametersSchema: {\n type: \"object\",\n properties: {\n owner: { type: \"string\" },\n repo: { type: \"string\" },\n path: { type: \"string\" },\n ref: { type: \"string\" },\n },\n required: [\"owner\", \"repo\", \"path\"],\n },\n },\n {\n name: \"github_create_review_comment\",\n displayName: \"Add Review Comment\",\n description: \"Post an inline review comment on a pull request\",\n parametersSchema: {\n type: \"object\",\n properties: {\n owner: { type: \"string\" },\n repo: { type: \"string\" },\n pull_number: { type: \"number\" },\n commit_id: { type: \"string\" },\n path: { type: \"string\" },\n line: { type: \"number\" },\n body: { type: \"string\" },\n },\n required: [\"owner\", \"repo\", \"pull_number\", \"commit_id\", \"path\", \"line\", \"body\"],\n },\n },\n {\n name: \"github_submit_pr_review\",\n displayName: \"Submit PR Review\",\n description: \"Submit a review verdict (approve, request changes, comment)\",\n parametersSchema: {\n type: \"object\",\n properties: {\n owner: { type: \"string\" },\n repo: { type: \"string\" },\n pull_number: { type: \"number\" },\n event: { type: \"string\", enum: [\"APPROVE\", \"REQUEST_CHANGES\", \"COMMENT\"] },\n body: { type: \"string\" },\n },\n required: [\"owner\", \"repo\", \"pull_number\", \"event\", \"body\"],\n },\n },\n {\n name: \"github_list_repositories\",\n displayName: \"List Repositories\",\n description: \"List all tracked GitHub repositories\",\n parametersSchema: { type: \"object\", properties: {} },\n },\n {\n name: \"github_search_issues\",\n displayName: \"Search Issues\",\n description: \"Search GitHub issues and PRs using search syntax\",\n parametersSchema: {\n type: \"object\",\n properties: {\n query: { type: \"string\" },\n },\n required: [\"query\"],\n },\n },\n {\n name: \"github_get_repo_structure\",\n displayName: \"Get Repo Structure\",\n description: \"Get the cached directory/file structure of a repository. Use this FIRST before reading files to understand the codebase layout and save tokens. Set refresh=true to regenerate from GitHub.\",\n parametersSchema: {\n type: \"object\",\n properties: {\n repo_full_name: { type: \"string\", description: \"owner/repo format\" },\n refresh: { type: \"boolean\", description: \"Set true to regenerate the structure from GitHub (use when cache is stale)\" },\n },\n required: [\"repo_full_name\"],\n },\n },\n ],\n\n agents: [\n {\n agentKey: \"github-reviewer\",\n displayName: \"GitHub Code Reviewer\",\n role: \"code-review\",\n title: \"Senior Code Reviewer\",\n capabilities: \"Reviews GitHub pull requests using plugin tools. Reads repo structure, analyzes diffs, posts inline comments, and submits review verdicts (approve/request changes).\",\n instructions: {\n entryFile: \"AGENTS.md\",\n content: `# GitHub Code Reviewer\n\nYou are an expert code reviewer. You review pull requests on GitHub repositories.\n\n## Available Tools\n\nYou MUST use these plugin tools to access code:\n\n1. **github_get_repo_structure** \u2014 Call FIRST to understand the codebase layout\n2. **github_get_pull_request_diff** \u2014 Get the PR diff to review\n3. **github_read_file_content** \u2014 Read specific files for context\n4. **github_create_review_comment** \u2014 Post inline comments on specific lines\n5. **github_submit_pr_review** \u2014 Submit your final verdict (APPROVE, REQUEST_CHANGES, or COMMENT)\n\n## Review Workflow\n\n1. Get the repo structure to understand the project\n2. Get the PR diff to see what changed\n3. Read surrounding files for context when needed\n4. Post inline comments on issues you find\n5. Submit your review with a summary\n\n## Review Criteria\n\n- Code correctness and logic errors\n- Security vulnerabilities (SQL injection, XSS, secrets in code)\n- Performance issues (N+1 queries, unnecessary allocations)\n- Code style and naming consistency\n- Missing error handling\n- Test coverage for changes\n- Breaking changes in public APIs\n\n## Tone\n\nBe constructive and specific. Explain WHY something is an issue and suggest a fix. Praise good patterns when you see them.\n`,\n },\n },\n ],\n\n skills: [\n {\n skillKey: \"github-codebase-access\",\n displayName: \"GitHub Codebase Access\",\n description: \"Provides agents with tools to read repository structure and files from GitHub without needing local filesystem access\",\n markdown: `# GitHub Codebase Access\n\nYou have access to GitHub repositories through the GitHub Manager plugin tools. NEVER say you don't have access to the codebase.\n\n## Available Tools\n\n### 1. github_get_repo_structure\nGet the directory and file structure of a repository. **Always call this FIRST** before reading any files.\n\nParameters:\n- \\`repo_full_name\\` (required): Repository in \"owner/repo\" format\n- \\`refresh\\` (optional): Set to true to regenerate from GitHub if cache is stale\n\n### 2. github_read_file_content\nRead the content of a specific file from a GitHub repository.\n\nParameters:\n- \\`owner\\` (required): Repository owner (e.g. \"gauderp\")\n- \\`repo\\` (required): Repository name (e.g. \"gaud-erp-api\")\n- \\`path\\` (required): File path (e.g. \"src/main/java/com/gaud/App.java\")\n- \\`ref\\` (optional): Branch or commit SHA (defaults to main branch)\n\n### 3. github_get_pull_request_diff\nGet the unified diff of a pull request for code review.\n\nParameters:\n- \\`owner\\`, \\`repo\\`, \\`pull_number\\`\n\n### 4. github_search_issues\nSearch GitHub issues and PRs using GitHub search syntax.\n\nParameters:\n- \\`query\\`: GitHub search query (e.g. \"is:open label:bug\")\n\n### 5. github_list_repositories\nList all tracked GitHub repositories (no parameters needed).\n\n## Mandatory Workflow\n\n1. **ALWAYS** start with \\`github_get_repo_structure\\` to understand the codebase layout\n2. Read only the files you actually need with \\`github_read_file_content\\`\n3. If the structure seems outdated, call \\`github_get_repo_structure\\` with \\`refresh=true\\`\n4. Never try to access the local filesystem for source code \u2014 always use these tools\n\n## Token Efficiency\nThe structure cache returns directories and key files in a single call (~5-50KB).\nThis replaces hundreds of file-listing API calls, saving 60-90% of tokens.\n`,\n },\n ],\n\n ui: {\n slots: [\n {\n type: \"sidebar\",\n id: \"github-sidebar\",\n exportName: \"GitHubSidebarLink\",\n displayName: \"GitHub\",\n },\n {\n type: \"page\",\n id: \"github-settings\",\n exportName: \"GitHubSettingsPage\",\n displayName: \"Configura\u00E7\u00F5es GitHub\",\n routePath: \"github-settings\",\n },\n {\n type: \"page\",\n id: \"github-repos\",\n exportName: \"GitHubReposPage\",\n displayName: \"Reposit\u00F3rios\",\n routePath: \"github-repos\",\n },\n {\n type: \"page\",\n id: \"github-prs\",\n exportName: \"GitHubPullRequestsPage\",\n displayName: \"Pull Requests\",\n routePath: \"github-prs\",\n },\n {\n type: \"page\",\n id: \"github-graphs\",\n exportName: \"GitHubGraphsPage\",\n displayName: \"Knowledge Graphs\",\n routePath: \"github-graphs\",\n },\n {\n type: \"dashboardWidget\",\n id: \"github-dashboard\",\n exportName: \"GitHubDashboardWidget\",\n displayName: \"GitHub Status\",\n },\n {\n type: \"detailTab\",\n id: \"github-detail\",\n exportName: \"GitHubDetailTab\",\n displayName: \"GitHub\",\n entityTypes: [\"issue\"],\n },\n {\n type: \"contextMenuItem\",\n id: \"github-context-menu\",\n exportName: \"GitHubContextMenu\",\n displayName: \"GitHub Actions\",\n entityTypes: [\"issue\"],\n },\n ],\n },\n};\n\nexport default manifest;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type { PaperclipPluginManifestV1 } from \"@paperclipai/plugin-sdk\";\n\nconst manifest: PaperclipPluginManifestV1 = {\n id: \"cus.github-manager\",\n version: \"2.0.1\",\n apiVersion: 1,\n displayName: \"GitHub Manager\",\n description: \"Manage GitHub repos, PRs, issues, agent code reviews, and knowledge graphs \u2014 all from Paperclip\",\n author: \"Gaud ERP\",\n categories: [\"connector\", \"automation\"],\n\n capabilities: [\n \"events.subscribe\",\n \"events.emit\",\n \"http.outbound\",\n \"plugin.state.read\",\n \"plugin.state.write\",\n \"database.namespace.read\",\n \"database.namespace.write\",\n \"database.namespace.migrate\",\n \"jobs.schedule\",\n \"webhooks.receive\",\n \"agent.tools.register\",\n \"agents.managed\",\n \"agents.invoke\",\n \"agents.read\",\n \"issues.read\",\n \"issues.create\",\n \"companies.read\",\n \"ui.page.register\",\n \"ui.dashboardWidget.register\",\n \"ui.sidebar.register\",\n \"ui.detailTab.register\",\n \"ui.action.register\",\n \"instance.settings.register\",\n \"skills.managed\",\n ],\n\n instanceConfigSchema: {\n type: \"object\",\n required: [\"githubToken\"],\n properties: {\n githubToken: {\n type: \"string\",\n title: \"GitHub Personal Access Token\",\n description: \"Cole aqui o PAT do GitHub com permiss\u00F5es 'repo' e 'read:org'\",\n },\n defaultOrg: {\n type: \"string\",\n title: \"Default Organization\",\n description: \"GitHub organization to sync repositories from (optional)\",\n },\n syncIntervalMinutes: {\n type: \"number\",\n title: \"Sync Interval (minutes)\",\n description: \"How often to sync PRs and issues (default: 5)\",\n default: 5,\n minimum: 1,\n maximum: 1440,\n },\n },\n },\n\n entrypoints: {\n worker: \"./dist/worker.js\",\n ui: \"./dist/ui\",\n },\n\n database: {\n migrationsDir: \"src/db/migrations\",\n },\n\n jobs: [\n {\n jobKey: \"sync-github\",\n displayName: \"Sync GitHub PRs and Issues\",\n schedule: \"*/5 * * * *\",\n description: \"Incremental sync of open PRs and issues for tracked repositories\",\n },\n ],\n\n webhooks: [\n {\n endpointKey: \"github-events\",\n displayName: \"GitHub Events\",\n description: \"Receives GitHub webhook events (pull_request, issues)\",\n },\n ],\n\n tools: [\n {\n name: \"github_get_pull_request_diff\",\n displayName: \"Get PR Diff\",\n description: \"Retrieve the unified diff of a GitHub pull request\",\n parametersSchema: {\n type: \"object\",\n properties: {\n owner: { type: \"string\" },\n repo: { type: \"string\" },\n pull_number: { type: \"number\" },\n },\n required: [\"owner\", \"repo\", \"pull_number\"],\n },\n },\n {\n name: \"github_read_file_content\",\n displayName: \"Read File\",\n description: \"Read a file from a GitHub repository\",\n parametersSchema: {\n type: \"object\",\n properties: {\n owner: { type: \"string\" },\n repo: { type: \"string\" },\n path: { type: \"string\" },\n ref: { type: \"string\" },\n },\n required: [\"owner\", \"repo\", \"path\"],\n },\n },\n {\n name: \"github_create_review_comment\",\n displayName: \"Add Review Comment\",\n description: \"Post an inline review comment on a pull request\",\n parametersSchema: {\n type: \"object\",\n properties: {\n owner: { type: \"string\" },\n repo: { type: \"string\" },\n pull_number: { type: \"number\" },\n commit_id: { type: \"string\" },\n path: { type: \"string\" },\n line: { type: \"number\" },\n body: { type: \"string\" },\n },\n required: [\"owner\", \"repo\", \"pull_number\", \"commit_id\", \"path\", \"line\", \"body\"],\n },\n },\n {\n name: \"github_submit_pr_review\",\n displayName: \"Submit PR Review\",\n description: \"Submit a review verdict (approve, request changes, comment)\",\n parametersSchema: {\n type: \"object\",\n properties: {\n owner: { type: \"string\" },\n repo: { type: \"string\" },\n pull_number: { type: \"number\" },\n event: { type: \"string\", enum: [\"APPROVE\", \"REQUEST_CHANGES\", \"COMMENT\"] },\n body: { type: \"string\" },\n },\n required: [\"owner\", \"repo\", \"pull_number\", \"event\", \"body\"],\n },\n },\n {\n name: \"github_list_repositories\",\n displayName: \"List Repositories\",\n description: \"List all tracked GitHub repositories\",\n parametersSchema: { type: \"object\", properties: {} },\n },\n {\n name: \"github_search_issues\",\n displayName: \"Search Issues\",\n description: \"Search GitHub issues and PRs using search syntax\",\n parametersSchema: {\n type: \"object\",\n properties: {\n query: { type: \"string\" },\n },\n required: [\"query\"],\n },\n },\n {\n name: \"github_get_pr_checks\",\n displayName: \"Get PR CI/CD Status\",\n description: \"Get CI/CD check runs status for a pull request (pass/fail/pending)\",\n parametersSchema: {\n type: \"object\",\n properties: {\n owner: { type: \"string\" },\n repo: { type: \"string\" },\n pull_number: { type: \"number\" },\n },\n required: [\"owner\", \"repo\", \"pull_number\"],\n },\n },\n {\n name: \"github_get_pr_comments\",\n displayName: \"Get PR Review Comments\",\n description: \"Get all review comments, discussions, and review verdicts on a pull request\",\n parametersSchema: {\n type: \"object\",\n properties: {\n owner: { type: \"string\" },\n repo: { type: \"string\" },\n pull_number: { type: \"number\" },\n },\n required: [\"owner\", \"repo\", \"pull_number\"],\n },\n },\n {\n name: \"github_get_repo_structure\",\n displayName: \"Get Repo Structure\",\n description: \"Get the cached directory/file structure of a repository. Use this FIRST before reading files to understand the codebase layout and save tokens. Set refresh=true to regenerate from GitHub.\",\n parametersSchema: {\n type: \"object\",\n properties: {\n repo_full_name: { type: \"string\", description: \"owner/repo format\" },\n refresh: { type: \"boolean\", description: \"Set true to regenerate the structure from GitHub (use when cache is stale)\" },\n },\n required: [\"repo_full_name\"],\n },\n },\n ],\n\n agents: [\n {\n agentKey: \"github-reviewer\",\n displayName: \"GitHub Code Reviewer\",\n role: \"code-review\",\n title: \"Senior Code Reviewer\",\n capabilities: \"Reviews GitHub pull requests using plugin tools. Reads repo structure, analyzes diffs, posts inline comments, and submits review verdicts (approve/request changes).\",\n instructions: {\n entryFile: \"AGENTS.md\",\n content: `# GitHub Code Reviewer\n\nYou are an expert code reviewer. You review pull requests on GitHub repositories.\n\n## Available Tools\n\nYou MUST use these plugin tools to access code:\n\n1. **github_get_repo_structure** \u2014 Call FIRST to understand the codebase layout\n2. **github_get_pull_request_diff** \u2014 Get the PR diff to review\n3. **github_read_file_content** \u2014 Read specific files for context\n4. **github_create_review_comment** \u2014 Post inline comments on specific lines\n5. **github_submit_pr_review** \u2014 Submit your final verdict (APPROVE, REQUEST_CHANGES, or COMMENT)\n\n## Review Workflow\n\n1. Get the repo structure to understand the project\n2. Get the PR diff to see what changed\n3. Read surrounding files for context when needed\n4. Post inline comments on issues you find\n5. Submit your review with a summary\n\n## Review Criteria\n\n- Code correctness and logic errors\n- Security vulnerabilities (SQL injection, XSS, secrets in code)\n- Performance issues (N+1 queries, unnecessary allocations)\n- Code style and naming consistency\n- Missing error handling\n- Test coverage for changes\n- Breaking changes in public APIs\n\n## Tone\n\nBe constructive and specific. Explain WHY something is an issue and suggest a fix. Praise good patterns when you see them.\n`,\n },\n },\n ],\n\n skills: [\n {\n skillKey: \"github-codebase-access\",\n displayName: \"GitHub Codebase Access\",\n description: \"Provides agents with tools to read repository structure and files from GitHub without needing local filesystem access\",\n markdown: `# GitHub Codebase Access\n\nYou have access to GitHub repositories through the GitHub Manager plugin tools. NEVER say you don't have access to the codebase.\n\n## Available Tools\n\n### Codebase Navigation\n- **github_get_repo_structure** \u2014 Get directory/file structure. **Call FIRST** before reading files. Params: \\`repo_full_name\\`, optional \\`refresh=true\\`\n- **github_read_file_content** \u2014 Read a file. Params: \\`owner\\`, \\`repo\\`, \\`path\\`, optional \\`ref\\`\n- **github_list_repositories** \u2014 List all tracked repos (no params)\n- **github_search_issues** \u2014 Search issues/PRs. Params: \\`query\\`\n\n### PR Review\n- **github_get_pull_request_diff** \u2014 Get unified diff. Params: \\`owner\\`, \\`repo\\`, \\`pull_number\\`\n- **github_get_pr_checks** \u2014 Get CI/CD status (pass/fail/pending). Params: \\`owner\\`, \\`repo\\`, \\`pull_number\\`\n- **github_get_pr_comments** \u2014 Get all review comments, discussions, and verdicts. Params: \\`owner\\`, \\`repo\\`, \\`pull_number\\`\n- **github_create_review_comment** \u2014 Post inline comment. Params: \\`owner\\`, \\`repo\\`, \\`pull_number\\`, \\`commit_id\\`, \\`path\\`, \\`line\\`, \\`body\\`\n- **github_submit_pr_review** \u2014 Submit verdict. Params: \\`owner\\`, \\`repo\\`, \\`pull_number\\`, \\`event\\` (APPROVE/REQUEST_CHANGES/COMMENT), \\`body\\`\n\n## PR Review Workflow\n\nWhen reviewing a PR:\n1. \\`github_get_repo_structure\\` \u2014 understand the codebase\n2. \\`github_get_pull_request_diff\\` \u2014 see what changed\n3. \\`github_get_pr_checks\\` \u2014 verify CI/CD passed\n4. \\`github_get_pr_comments\\` \u2014 check existing reviews from others\n5. \\`github_read_file_content\\` \u2014 read surrounding code for context\n6. \\`github_create_review_comment\\` \u2014 post inline comments on issues\n7. \\`github_submit_pr_review\\` \u2014 approve or request changes with summary\n8. If CI failed or changes needed, tag the PR author to fix\n\n## Codebase Exploration Workflow\n\n1. **ALWAYS** start with \\`github_get_repo_structure\\` to understand layout\n2. Read only the files you need with \\`github_read_file_content\\`\n3. If structure seems outdated, call with \\`refresh=true\\`\n4. Never access the local filesystem \u2014 always use these tools\n`,\n },\n ],\n\n ui: {\n slots: [\n {\n type: \"sidebar\",\n id: \"github-sidebar\",\n exportName: \"GitHubSidebarLink\",\n displayName: \"GitHub\",\n },\n {\n type: \"page\",\n id: \"github-settings\",\n exportName: \"GitHubSettingsPage\",\n displayName: \"Configura\u00E7\u00F5es GitHub\",\n routePath: \"github-settings\",\n },\n {\n type: \"page\",\n id: \"github-repos\",\n exportName: \"GitHubReposPage\",\n displayName: \"Reposit\u00F3rios\",\n routePath: \"github-repos\",\n },\n {\n type: \"page\",\n id: \"github-prs\",\n exportName: \"GitHubPullRequestsPage\",\n displayName: \"Pull Requests\",\n routePath: \"github-prs\",\n },\n {\n type: \"page\",\n id: \"github-graphs\",\n exportName: \"GitHubGraphsPage\",\n displayName: \"Knowledge Graphs\",\n routePath: \"github-graphs\",\n },\n {\n type: \"dashboardWidget\",\n id: \"github-dashboard\",\n exportName: \"GitHubDashboardWidget\",\n displayName: \"GitHub Status\",\n },\n {\n type: \"detailTab\",\n id: \"github-detail\",\n exportName: \"GitHubDetailTab\",\n displayName: \"GitHub\",\n entityTypes: [\"issue\"],\n },\n {\n type: \"contextMenuItem\",\n id: \"github-context-menu\",\n exportName: \"GitHubContextMenu\",\n displayName: \"GitHub Actions\",\n entityTypes: [\"issue\"],\n },\n ],\n },\n};\n\nexport default manifest;\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/dist/ui/index.js CHANGED
@@ -315,6 +315,39 @@ function GitHubSettingsPage() {
315
315
  /* @__PURE__ */ jsx3("h3", { style: { margin: "0 0 8px", fontSize: "14px" }, children: "Sincroniza\xE7\xE3o" }),
316
316
  /* @__PURE__ */ jsx3("p", { style: { margin: "0 0 8px", fontSize: "12px", opacity: 0.7 }, children: "Sync autom\xE1tico a cada 5 minutos. Use o bot\xE3o abaixo para for\xE7ar um sync completo." }),
317
317
  /* @__PURE__ */ jsx3("button", { type: "button", style: primaryButtonStyle, onClick: handleFullSync, disabled: loading, children: loading ? "Sincronizando..." : "Sync Completo" })
318
+ ] }),
319
+ /* @__PURE__ */ jsxs2("div", { style: cardStyle, children: [
320
+ /* @__PURE__ */ jsx3("h3", { style: { margin: "0 0 8px", fontSize: "14px" }, children: "Webhook (Review Autom\xE1tico)" }),
321
+ /* @__PURE__ */ jsx3("p", { style: { margin: "0 0 8px", fontSize: "12px", opacity: 0.7 }, children: "Configure um webhook no GitHub para que o plugin crie automaticamente uma issue de code review quando um PR for aberto." }),
322
+ /* @__PURE__ */ jsxs2("div", { style: { background: "rgba(128,128,128,0.08)", borderRadius: "6px", padding: "12px", fontSize: "12px", fontFamily: "monospace" }, children: [
323
+ /* @__PURE__ */ jsxs2("div", { style: { marginBottom: "12px" }, children: [
324
+ /* @__PURE__ */ jsx3("strong", { style: { fontSize: "11px", opacity: 0.6, display: "block", marginBottom: "4px" }, children: "Payload URL" }),
325
+ /* @__PURE__ */ jsxs2("div", { style: { display: "flex", gap: "8px", alignItems: "center" }, children: [
326
+ /* @__PURE__ */ jsx3("code", { style: { flex: 1, wordBreak: "break-all" }, children: typeof window !== "undefined" ? `${window.location.origin}/plugins/cus.github-manager/webhooks/github-events` : "<your-host>/plugins/cus.github-manager/webhooks/github-events" }),
327
+ /* @__PURE__ */ jsx3(
328
+ "button",
329
+ {
330
+ type: "button",
331
+ style: { ...buttonStyle, fontSize: "11px", padding: "4px 8px" },
332
+ onClick: () => {
333
+ const url = `${window.location.origin}/plugins/cus.github-manager/webhooks/github-events`;
334
+ navigator.clipboard.writeText(url).then(() => setStatus("URL copiada!"));
335
+ },
336
+ children: "Copiar"
337
+ }
338
+ )
339
+ ] })
340
+ ] }),
341
+ /* @__PURE__ */ jsxs2("div", { style: { marginBottom: "8px" }, children: [
342
+ /* @__PURE__ */ jsx3("strong", { style: { fontSize: "11px", opacity: 0.6 }, children: "Content type:" }),
343
+ " application/json"
344
+ ] }),
345
+ /* @__PURE__ */ jsxs2("div", { style: { marginBottom: "8px" }, children: [
346
+ /* @__PURE__ */ jsx3("strong", { style: { fontSize: "11px", opacity: 0.6 }, children: "Events:" }),
347
+ " Pull requests, Issues"
348
+ ] })
349
+ ] }),
350
+ /* @__PURE__ */ jsx3("p", { style: { margin: "8px 0 0", fontSize: "11px", opacity: 0.5 }, children: 'No GitHub: Settings \u2192 Webhooks \u2192 Add webhook \u2192 cole a URL acima \u2192 selecione "Let me select individual events" \u2192 marque "Pull requests" e "Issues".' })
318
351
  ] })
319
352
  ] });
320
353
  }