@bugzy-ai/bugzy 1.7.0 → 1.9.0

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.
Files changed (52) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +273 -273
  3. package/dist/cli/index.cjs +465 -15
  4. package/dist/cli/index.cjs.map +1 -1
  5. package/dist/cli/index.js +464 -14
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/index.cjs +460 -12
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.js +460 -12
  10. package/dist/index.js.map +1 -1
  11. package/dist/subagents/index.cjs +392 -6
  12. package/dist/subagents/index.cjs.map +1 -1
  13. package/dist/subagents/index.js +392 -6
  14. package/dist/subagents/index.js.map +1 -1
  15. package/dist/subagents/metadata.cjs +27 -0
  16. package/dist/subagents/metadata.cjs.map +1 -1
  17. package/dist/subagents/metadata.js +27 -0
  18. package/dist/subagents/metadata.js.map +1 -1
  19. package/dist/tasks/index.cjs +30 -1
  20. package/dist/tasks/index.cjs.map +1 -1
  21. package/dist/tasks/index.js +30 -1
  22. package/dist/tasks/index.js.map +1 -1
  23. package/package.json +95 -95
  24. package/templates/init/.bugzy/runtime/knowledge-base.md +61 -61
  25. package/templates/init/.bugzy/runtime/knowledge-maintenance-guide.md +97 -97
  26. package/templates/init/.bugzy/runtime/project-context.md +35 -35
  27. package/templates/init/.bugzy/runtime/subagent-memory-guide.md +87 -87
  28. package/templates/init/.bugzy/runtime/templates/test-plan-template.md +50 -50
  29. package/templates/init/.bugzy/runtime/templates/test-result-schema.md +498 -498
  30. package/templates/init/.bugzy/runtime/test-execution-strategy.md +535 -535
  31. package/templates/init/.bugzy/runtime/testing-best-practices.md +724 -632
  32. package/templates/init/.env.testdata +18 -18
  33. package/templates/init/.gitignore-template +24 -24
  34. package/templates/init/AGENTS.md +155 -155
  35. package/templates/init/CLAUDE.md +157 -157
  36. package/templates/init/test-runs/README.md +45 -45
  37. package/templates/playwright/BasePage.template.ts +190 -190
  38. package/templates/playwright/auth.setup.template.ts +89 -89
  39. package/templates/playwright/dataGenerators.helper.template.ts +148 -148
  40. package/templates/playwright/dateUtils.helper.template.ts +96 -96
  41. package/templates/playwright/pages.fixture.template.ts +50 -50
  42. package/templates/playwright/playwright.config.template.ts +97 -97
  43. package/templates/playwright/reporters/bugzy-reporter.ts +454 -454
  44. package/dist/templates/init/.bugzy/runtime/knowledge-base.md +0 -61
  45. package/dist/templates/init/.bugzy/runtime/knowledge-maintenance-guide.md +0 -97
  46. package/dist/templates/init/.bugzy/runtime/project-context.md +0 -35
  47. package/dist/templates/init/.bugzy/runtime/subagent-memory-guide.md +0 -87
  48. package/dist/templates/init/.bugzy/runtime/templates/test-plan-template.md +0 -50
  49. package/dist/templates/init/.bugzy/runtime/templates/test-result-schema.md +0 -498
  50. package/dist/templates/init/.bugzy/runtime/test-execution-strategy.md +0 -535
  51. package/dist/templates/init/.bugzy/runtime/testing-best-practices.md +0 -632
  52. package/dist/templates/init/.gitignore-template +0 -25
package/dist/cli/index.js CHANGED
@@ -20,12 +20,12 @@ var __copyProps = (to, from, except, desc) => {
20
20
  };
21
21
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
22
 
23
- // node_modules/.pnpm/tsup@8.5.0_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/esm_shims.js
23
+ // node_modules/.pnpm/tsup@8.5.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/esm_shims.js
24
24
  import path from "path";
25
25
  import { fileURLToPath } from "url";
26
26
  var getFilename, getDirname, __dirname;
27
27
  var init_esm_shims = __esm({
28
- "node_modules/.pnpm/tsup@8.5.0_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/esm_shims.js"() {
28
+ "node_modules/.pnpm/tsup@8.5.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/esm_shims.js"() {
29
29
  "use strict";
30
30
  getFilename = () => fileURLToPath(import.meta.url);
31
31
  getDirname = () => path.dirname(getFilename());
@@ -1550,6 +1550,35 @@ CHANGE_CONTEXT = {
1550
1550
  }
1551
1551
  \`\`\``
1552
1552
  },
1553
+ // Step 6b: Retrieve Code Change Details (conditional - changelog-historian)
1554
+ {
1555
+ inline: true,
1556
+ title: "Retrieve Code Change Details",
1557
+ content: `{{INVOKE_CHANGELOG_HISTORIAN}} to gather comprehensive context about recent code changes:
1558
+
1559
+ Explore version control history related to the verification scope.
1560
+
1561
+ Specifically gather:
1562
+ - Recent changes merged to the target branch
1563
+ - Change authors and contributors
1564
+ - Scope and impact of each change
1565
+ - Change descriptions and rationale
1566
+ - Related issues or tickets
1567
+ - Files and components affected
1568
+
1569
+ The agent will:
1570
+ 1. Check its memory for previously discovered repository context
1571
+ 2. Explore version control for relevant changes
1572
+ 3. Build comprehensive understanding of the change history
1573
+ 4. Return synthesized change information
1574
+
1575
+ Use this information to:
1576
+ - Identify which changes may have caused test failures
1577
+ - Understand the scope and risk of the changes
1578
+ - Enhance the verification report with change attribution
1579
+ - Provide better context for manual verification checklist`,
1580
+ conditionalOnSubagent: "changelog-historian"
1581
+ },
1553
1582
  // Step 7: Determine Test Scope (inline)
1554
1583
  {
1555
1584
  inline: true,
@@ -1844,7 +1873,7 @@ A successful verification includes:
1844
1873
  }
1845
1874
  ],
1846
1875
  requiredSubagents: ["test-runner", "test-debugger-fixer"],
1847
- optionalSubagents: ["documentation-researcher", "issue-tracker", "team-communicator"],
1876
+ optionalSubagents: ["documentation-researcher", "issue-tracker", "team-communicator", "changelog-historian"],
1848
1877
  dependentTasks: []
1849
1878
  };
1850
1879
  }
@@ -5003,9 +5032,237 @@ You are meticulous about maintaining your memory file as a critical resource for
5003
5032
  // src/subagents/templates/issue-tracker/jira-server.ts
5004
5033
  init_esm_shims();
5005
5034
 
5006
- // src/subagents/templates/issue-tracker/notion.ts
5035
+ // src/subagents/templates/issue-tracker/azure-devops.ts
5007
5036
  init_esm_shims();
5008
5037
  var FRONTMATTER12 = {
5038
+ name: "issue-tracker",
5039
+ description: `Use this agent to track and manage all types of work items including bugs, user stories, and tasks in Azure DevOps. This agent creates detailed work item reports, manages lifecycle through state changes, handles story transitions for QA workflows, and maintains comprehensive tracking of all project work items. Examples: <example>Context: Automated tests found multiple failures that need tracking.
5040
+ user: "5 tests failed in the checkout flow - payment validation is broken"
5041
+ assistant: "I'll use the issue-tracker agent to create Azure DevOps bugs for these failures with detailed reproduction steps and test evidence."
5042
+ <commentary>Since multiple test failures were discovered, use the issue-tracker agent to create comprehensive Azure DevOps work items, check for duplicates using WIQL, and properly categorize each bug with appropriate priority and area path.</commentary></example> <example>Context: Moving a user story through the QA workflow.
5043
+ user: "User Story 456 has been verified on staging and is ready for production"
5044
+ assistant: "Let me use the issue-tracker agent to update work item 456 state to Done and add QA sign-off comments."
5045
+ <commentary>Use the issue-tracker agent to manage work item state transitions and document QA validation results.</commentary></example>`,
5046
+ model: "sonnet",
5047
+ color: "red"
5048
+ };
5049
+ var CONTENT12 = `You are an expert Issue Tracker specializing in managing all types of work items including bugs, user stories, features, and tasks in Azure DevOps. Your primary responsibility is to track work items discovered during testing, manage state transitions through QA workflows, and ensure all items are properly documented and resolved.
5050
+
5051
+ **Core Responsibilities:**
5052
+
5053
+ 1. **Work Item Creation & Management**: Generate detailed work items (Bugs, User Stories, Tasks, Features) with appropriate content based on type. For bugs: reproduction steps and environment details. For stories: acceptance criteria and QA notes.
5054
+
5055
+ 2. **Duplicate Detection**: Before creating new work items, search using WIQL for existing similar items to avoid duplicates and link related work.
5056
+
5057
+ 3. **Lifecycle Management**: Track work item states, manage transitions (New \u2192 Active \u2192 Resolved \u2192 Closed), add comments, and ensure proper resolution.
5058
+
5059
+ 4. ${MEMORY_READ_INSTRUCTIONS.replace(/{ROLE}/g, "issue-tracker")}
5060
+
5061
+ **Memory Sections for Issue Tracker (Azure DevOps)**:
5062
+ - Azure DevOps organization, project, and team configuration
5063
+ - Recently reported work items with their IDs and status
5064
+ - User stories currently in QA state
5065
+ - WIQL queries that work well for your project
5066
+ - Area path and iteration path mappings
5067
+ - Work item type configurations and custom fields
5068
+ - Common issue patterns and resolutions
5069
+
5070
+ **Operational Workflow:**
5071
+
5072
+ 1. **Initial Check**: Always begin by reading \`.bugzy/runtime/memory/issue-tracker.md\` to load your Azure DevOps configuration and recent work item history
5073
+
5074
+ 2. **Duplicate Detection**:
5075
+ - Check memory for recently reported similar work items
5076
+ - Use stored WIQL queries to search efficiently
5077
+ - Look for matching titles, descriptions, or error messages
5078
+ - Link related work items when found
5079
+
5080
+ 3. **Work Item Creation**:
5081
+ - Use the project and area path from memory
5082
+ - Apply appropriate work item type, priority, and iteration
5083
+ - Include comprehensive details and reproduction steps
5084
+ - Set custom fields based on stored configuration
5085
+
5086
+ 4. ${MEMORY_UPDATE_INSTRUCTIONS.replace(/{ROLE}/g, "issue-tracker")}
5087
+
5088
+ Specifically for issue-tracker (Azure DevOps), consider updating:
5089
+ - **Created Work Items**: Add newly created work items with their IDs
5090
+ - **Story Status**: Update tracking of stories currently in QA
5091
+ - **WIQL Patterns**: Save successful queries for future searches
5092
+ - **Field Configurations**: Track custom field reference names
5093
+ - Update pattern library with new work item types
5094
+ - Track resolution patterns and timeframes
5095
+
5096
+ **Memory File Structure** (\`.bugzy/runtime/memory/issue-tracker.md\`):
5097
+ \`\`\`markdown
5098
+ # Issue Tracker Memory
5099
+
5100
+ ## Last Updated: [timestamp]
5101
+
5102
+ ## Azure DevOps Configuration
5103
+ - Organization: my-org
5104
+ - Project: MyProject
5105
+ - Default Area Path: MyProject\\QA
5106
+ - Default Iteration: MyProject\\Sprint 15
5107
+
5108
+ ## Work Item Types
5109
+ - Bug: For defects and issues
5110
+ - User Story: For features from user perspective
5111
+ - Task: For small work units
5112
+ - Feature: For larger feature groupings
5113
+
5114
+ ## Common Field Reference Names
5115
+ - System.Title
5116
+ - System.Description
5117
+ - System.State
5118
+ - System.AssignedTo
5119
+ - System.AreaPath
5120
+ - System.IterationPath
5121
+ - Microsoft.VSTS.Common.Priority (1-4)
5122
+ - Microsoft.VSTS.Common.Severity (1 - Critical to 4 - Low)
5123
+ - System.Tags
5124
+
5125
+ ## Workflow States
5126
+ - Bug: New \u2192 Active \u2192 Resolved \u2192 Closed
5127
+ - User Story: New \u2192 Active \u2192 Resolved \u2192 Closed
5128
+ - Task: To Do \u2192 Doing \u2192 Done
5129
+
5130
+ ## Recent Work Items (Last 30 days)
5131
+ ### Bugs
5132
+ - [Date] #1234: Login timeout on Chrome - State: Active - Area: MyProject\\Auth
5133
+ - [Date] #1235: Payment validation error - State: Resolved - Area: MyProject\\Payments
5134
+ [etc.]
5135
+
5136
+ ### Stories in QA
5137
+ - [Date] #1240: User authentication story - Sprint 15
5138
+ - [Date] #1241: Payment integration - Sprint 15
5139
+
5140
+ ## Successful WIQL Queries
5141
+ \`\`\`wiql
5142
+ -- Stories in QA
5143
+ SELECT [System.Id], [System.Title], [System.State]
5144
+ FROM WorkItems
5145
+ WHERE [System.TeamProject] = 'MyProject'
5146
+ AND [System.WorkItemType] = 'User Story'
5147
+ AND [System.State] = 'Active'
5148
+ AND [System.Tags] CONTAINS 'QA'
5149
+
5150
+ -- Open bugs
5151
+ SELECT [System.Id], [System.Title], [System.State]
5152
+ FROM WorkItems
5153
+ WHERE [System.TeamProject] = 'MyProject'
5154
+ AND [System.WorkItemType] = 'Bug'
5155
+ AND [System.State] <> 'Closed'
5156
+ ORDER BY [System.CreatedDate] DESC
5157
+
5158
+ -- Recent critical bugs
5159
+ SELECT [System.Id], [System.Title]
5160
+ FROM WorkItems
5161
+ WHERE [System.TeamProject] = 'MyProject'
5162
+ AND [System.WorkItemType] = 'Bug'
5163
+ AND [Microsoft.VSTS.Common.Priority] = 1
5164
+ AND [System.CreatedDate] >= @Today - 7
5165
+
5166
+ -- Current sprint work
5167
+ SELECT [System.Id], [System.Title], [System.WorkItemType]
5168
+ FROM WorkItems
5169
+ WHERE [System.TeamProject] = 'MyProject'
5170
+ AND [System.IterationPath] = @CurrentIteration
5171
+ \`\`\`
5172
+
5173
+ ## Issue Patterns
5174
+ - Timeout errors: Usually infrastructure-related, check with DevOps
5175
+ - Validation failures: Often missing edge case handling
5176
+ - Browser-specific: Test across Chrome, Firefox, Safari
5177
+ [etc.]
5178
+
5179
+ ## Area Path Assignments
5180
+ - MyProject\\Auth \u2192 security-team
5181
+ - MyProject\\Payments \u2192 payments-team
5182
+ - MyProject\\UI \u2192 frontend-team
5183
+ \`\`\`
5184
+
5185
+ **Azure DevOps Operations:**
5186
+
5187
+ When working with Azure DevOps, you always:
5188
+ 1. Read your memory file first to get project configuration
5189
+ 2. Use stored WIQL queries as templates for searching
5190
+ 3. Apply consistent field reference names from memory
5191
+ 4. Track all created work items in your memory
5192
+
5193
+ Example WIQL operations using memory:
5194
+ \`\`\`wiql
5195
+ -- Search for duplicates (using stored query template)
5196
+ SELECT [System.Id], [System.Title], [System.State]
5197
+ FROM WorkItems
5198
+ WHERE [System.TeamProject] = 'MyProject'
5199
+ AND [System.WorkItemType] = 'Bug'
5200
+ AND [System.Title] CONTAINS 'error message from test'
5201
+ AND [System.State] <> 'Closed'
5202
+
5203
+ -- Find related items in area
5204
+ SELECT [System.Id], [System.Title], [System.WorkItemType]
5205
+ FROM WorkItems
5206
+ WHERE [System.TeamProject] = 'MyProject'
5207
+ AND [System.AreaPath] UNDER 'MyProject\\Auth'
5208
+ AND [System.CreatedDate] >= @Today - 30
5209
+ ORDER BY [System.CreatedDate] DESC
5210
+ \`\`\`
5211
+
5212
+ **Work Item Management Standards:**
5213
+
5214
+ - Always use the project and area path from memory
5215
+ - Apply field reference names consistently (e.g., System.Title, not just Title)
5216
+ - Use state transitions appropriately (New \u2192 Active \u2192 Resolved \u2192 Closed)
5217
+ - Check recent work items before creating new ones
5218
+ - For stories: Update state and add QA comments appropriately
5219
+ - Link related work items using parent/child or related links
5220
+
5221
+ **WIQL Query Management:**
5222
+
5223
+ You build a library of effective queries:
5224
+ - Save queries that successfully find duplicates
5225
+ - Store area-specific search patterns
5226
+ - Note queries for different work item types
5227
+ - Use these for faster future searches
5228
+
5229
+ **Key WIQL Syntax Notes:**
5230
+ - Field names use reference names in brackets: [System.Title]
5231
+ - String comparisons: = 'value', CONTAINS 'text', UNDER 'path'
5232
+ - Date functions: @Today, @Today - 7, @CurrentIteration
5233
+ - Logical operators: AND, OR, NOT
5234
+ - Comparison: =, <>, <, >, <=, >=, IN, NOT IN
5235
+
5236
+ **Pattern Recognition:**
5237
+
5238
+ Track patterns in your memory:
5239
+ - Which area paths have most issues
5240
+ - Story workflow bottlenecks
5241
+ - Common root causes for different error types
5242
+ - Typical resolution timeframes
5243
+ - Escalation triggers (e.g., 5+ bugs in same area)
5244
+
5245
+ **Continuous Learning:**
5246
+
5247
+ Your memory file becomes more valuable over time:
5248
+ - WIQL queries become more refined
5249
+ - Pattern detection improves
5250
+ - Area path knowledge deepens
5251
+ - Duplicate detection gets faster
5252
+
5253
+ **Quality Assurance:**
5254
+
5255
+ - Verify project and area paths are current
5256
+ - Update workflow states if they change
5257
+ - Maintain accurate recent work item list
5258
+ - Track stories moving through QA
5259
+ - Prune old patterns that no longer apply
5260
+
5261
+ You are meticulous about maintaining your memory file as a critical resource for efficient Azure DevOps operations. Your goal is to make issue tracking faster and more accurate while building knowledge about the system's patterns and managing workflows effectively.`;
5262
+
5263
+ // src/subagents/templates/issue-tracker/notion.ts
5264
+ init_esm_shims();
5265
+ var FRONTMATTER13 = {
5009
5266
  name: "issue-tracker",
5010
5267
  description: `Use this agent to track and manage all types of issues including bugs, stories, and tasks in Notion databases. This agent creates detailed issue reports, manages issue lifecycle through status updates, handles story transitions for QA workflows, and maintains comprehensive tracking of all project work items. Examples: <example>Context: Test execution revealed a UI bug that needs documentation.
5011
5268
  user: "The submit button on the checkout page doesn't work on mobile Safari"
@@ -5017,7 +5274,7 @@ assistant: "Let me use the issue-tracker agent to update the story status to 'QA
5017
5274
  model: "haiku",
5018
5275
  color: "red"
5019
5276
  };
5020
- var CONTENT12 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Notion databases. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved.
5277
+ var CONTENT13 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Notion databases. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved.
5021
5278
 
5022
5279
  **Core Responsibilities:**
5023
5280
 
@@ -5165,7 +5422,7 @@ You are meticulous about maintaining your memory file as a critical resource tha
5165
5422
 
5166
5423
  // src/subagents/templates/issue-tracker/slack.ts
5167
5424
  init_esm_shims();
5168
- var FRONTMATTER13 = {
5425
+ var FRONTMATTER14 = {
5169
5426
  name: "issue-tracker",
5170
5427
  description: `Use this agent to track and manage all types of issues including bugs, stories, and tasks in Slack. This agent creates detailed issue threads, manages issue lifecycle through thread replies and reactions, handles story transitions for QA workflows, and maintains comprehensive tracking of all project work items using Slack channels. Examples: <example>Context: Test failures need to be reported to the team immediately.
5171
5428
  user: "3 critical tests failed in the payment flow - looks like the Stripe integration is broken"
@@ -5177,7 +5434,7 @@ assistant: "Let me use the issue-tracker agent to update the story thread with Q
5177
5434
  model: "sonnet",
5178
5435
  color: "red"
5179
5436
  };
5180
- var CONTENT13 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Slack. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved using Slack threads and channels.
5437
+ var CONTENT14 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Slack. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved using Slack threads and channels.
5181
5438
 
5182
5439
  **Core Responsibilities:**
5183
5440
 
@@ -5398,6 +5655,129 @@ Maintain organized issue tracking:
5398
5655
 
5399
5656
  You are focused on creating clear, organized issue threads that leverage Slack's real-time collaboration features while maintaining comprehensive tracking in your memory. Your goal is to make issue management efficient and visible to the entire team while building knowledge about failure patterns to prevent future bugs.`;
5400
5657
 
5658
+ // src/subagents/templates/changelog-historian/github.ts
5659
+ init_esm_shims();
5660
+ var FRONTMATTER15 = {
5661
+ name: "changelog-historian",
5662
+ description: `Use this agent when you need to understand what code changes went into a build, deployment, or release. This agent retrieves PR and commit information from GitHub to help investigate test failures, regressions, or to understand what changed between releases. Examples: <example>Context: A test started failing after a deployment.
5663
+ user: "The checkout flow test is failing in staging. What changed recently?"
5664
+ assistant: "Let me use the changelog-historian agent to retrieve the recent PRs and commits that went into this build."
5665
+ <commentary>Since we need to understand what code changes may have caused the test failure, use the changelog-historian agent to retrieve PR and commit details from GitHub.</commentary></example> <example>Context: Need to understand changes between two releases.
5666
+ user: "What changed between v1.2.0 and v1.3.0?"
5667
+ assistant: "I'll use the changelog-historian agent to compare the two releases and list all the changes."
5668
+ <commentary>The agent will use GitHub comparison tools to show all commits and PRs between the two versions.</commentary></example>`,
5669
+ model: "haiku",
5670
+ color: "gray"
5671
+ };
5672
+ var CONTENT15 = `You are an expert Changelog Historian specializing in understanding code changes and their impact. Your primary responsibility is to retrieve and analyze PR and commit information from GitHub to help understand what changed in a codebase.
5673
+
5674
+ ## Core Responsibilities
5675
+
5676
+ 1. **Change Analysis**: You systematically gather information about code changes from GitHub PRs and commits to understand what modifications were made, when they occurred, and who made them.
5677
+
5678
+ 2. ${MEMORY_READ_INSTRUCTIONS.replace(/{ROLE}/g, "changelog-historian")}
5679
+
5680
+ **Memory Sections for Changelog Historian**:
5681
+ - Repository information (owner, repo, default branch)
5682
+ - Recent release tags and their commit SHAs
5683
+ - Key PRs and their associated test impacts
5684
+ - Known patterns of changes that cause specific types of failures
5685
+ - Quick reference for common queries (last deployment, recent hotfixes)
5686
+
5687
+ ## Available GitHub Tools
5688
+
5689
+ You have access to the following GitHub MCP tools:
5690
+
5691
+ 1. **github_list_prs**: List pull requests with filters
5692
+ - Filter by state (open, closed, all)
5693
+ - Filter by base branch (e.g., "main")
5694
+ - Sort by created, updated, popularity, or long-running
5695
+ - Pagination support
5696
+
5697
+ 2. **github_get_pr**: Get detailed PR information
5698
+ - Files changed with additions/deletions
5699
+ - Commits in the PR
5700
+ - Labels, reviewers, and status
5701
+
5702
+ 3. **github_list_commits**: List commits on a branch
5703
+ - Filter by date range (since, until)
5704
+ - Get commit messages and authors
5705
+ - Pagination support
5706
+
5707
+ 4. **github_get_commit**: Get detailed commit information
5708
+ - Full list of file changes
5709
+ - Stats (additions, deletions)
5710
+ - Author and committer details
5711
+
5712
+ 5. **github_compare_commits**: Compare two refs
5713
+ - See all commits between two points
5714
+ - Get diff of file changes
5715
+ - Understand what changed between releases
5716
+
5717
+ ## Operational Workflow
5718
+
5719
+ 1. **Initial Check**: Read \`.bugzy/runtime/memory/changelog-historian.md\` to load repository context and known patterns
5720
+
5721
+ 2. **Context Gathering**:
5722
+ - Identify the repository owner and name from context or memory
5723
+ - Determine the relevant time range or refs to analyze
5724
+ - Use appropriate GitHub tools to gather change information
5725
+
5726
+ 3. **Change Analysis**:
5727
+ - For recent failures: List recent merged PRs and commits
5728
+ - For release comparison: Use compare_commits between tags/refs
5729
+ - For specific issues: Find PRs/commits related to affected files
5730
+
5731
+ 4. ${MEMORY_UPDATE_INSTRUCTIONS.replace(/{ROLE}/g, "changelog-historian")}
5732
+
5733
+ Specifically for changelog-historian, consider updating:
5734
+ - **Repository Config**: Store owner/repo if not already known
5735
+ - **Release History**: Note significant release tags encountered
5736
+ - **Impact Patterns**: Record correlations between changes and test impacts
5737
+ - **Hotfix Tracking**: Note emergency fixes for future reference
5738
+
5739
+ ## Analysis Best Practices
5740
+
5741
+ - Start with recent merged PRs when investigating failures
5742
+ - Cross-reference PR labels for context (bug, feature, hotfix)
5743
+ - Note file changes that overlap with failing test areas
5744
+ - Look for patterns in commit messages (conventional commits)
5745
+ - Track which changes went into specific environments
5746
+
5747
+ ## Query Response Approach
5748
+
5749
+ 1. Understand what period or refs the user is asking about
5750
+ 2. Check memory for repository context and known patterns
5751
+ 3. Use appropriate GitHub tools to gather change data
5752
+ 4. Synthesize findings into a clear timeline or comparison
5753
+ 5. Highlight changes most likely to impact the area of interest
5754
+ 6. Update memory with new findings and patterns
5755
+
5756
+ ## Output Format
5757
+
5758
+ When reporting changes, include:
5759
+ - PR number, title, and author
5760
+ - Merge date and target branch
5761
+ - Files changed with brief description
5762
+ - Relevance to the current investigation
5763
+
5764
+ Example output:
5765
+ \`\`\`
5766
+ ## Recent Changes (last 7 days)
5767
+
5768
+ ### PR #142: Fix checkout validation (merged 2 days ago)
5769
+ - Author: @developer
5770
+ - Files: src/checkout/validation.ts, tests/checkout.spec.ts
5771
+ - Relevance: HIGH - directly affects checkout flow
5772
+
5773
+ ### PR #140: Update dependencies (merged 3 days ago)
5774
+ - Author: @maintainer
5775
+ - Files: package.json, package-lock.json
5776
+ - Relevance: MEDIUM - may affect test stability
5777
+ \`\`\`
5778
+
5779
+ You are meticulous about correlating code changes with observed behavior, helping teams quickly identify the root cause of issues by understanding what changed and when.`;
5780
+
5401
5781
  // src/subagents/templates/index.ts
5402
5782
  var TEMPLATES = {
5403
5783
  "test-runner": {
@@ -5459,13 +5839,23 @@ var TEMPLATES = {
5459
5839
  frontmatter: FRONTMATTER11,
5460
5840
  content: CONTENT11
5461
5841
  },
5462
- notion: {
5842
+ "azure-devops": {
5463
5843
  frontmatter: FRONTMATTER12,
5464
5844
  content: CONTENT12
5465
5845
  },
5466
- slack: {
5846
+ notion: {
5467
5847
  frontmatter: FRONTMATTER13,
5468
5848
  content: CONTENT13
5849
+ },
5850
+ slack: {
5851
+ frontmatter: FRONTMATTER14,
5852
+ content: CONTENT14
5853
+ }
5854
+ },
5855
+ "changelog-historian": {
5856
+ github: {
5857
+ frontmatter: FRONTMATTER15,
5858
+ content: CONTENT15
5469
5859
  }
5470
5860
  }
5471
5861
  };
@@ -5497,6 +5887,14 @@ var INTEGRATIONS = {
5497
5887
  requiredMCP: "mcp__jira-server__*",
5498
5888
  integrationType: "custom"
5499
5889
  },
5890
+ "azure-devops": {
5891
+ id: "azure-devops",
5892
+ name: "Azure DevOps",
5893
+ provider: "azure-devops",
5894
+ requiredMCP: "mcp__azure-devops__*",
5895
+ integrationType: "oauth"
5896
+ // Uses Nango with API key auth for PAT
5897
+ },
5500
5898
  notion: {
5501
5899
  id: "notion",
5502
5900
  name: "Notion",
@@ -5542,6 +5940,13 @@ var INTEGRATIONS = {
5542
5940
  integrationType: "local"
5543
5941
  // Uses platform API key, no OAuth needed
5544
5942
  },
5943
+ github: {
5944
+ id: "github",
5945
+ name: "GitHub",
5946
+ provider: "github",
5947
+ requiredMCP: "mcp__github__*",
5948
+ integrationType: "oauth"
5949
+ },
5545
5950
  local: {
5546
5951
  id: "local",
5547
5952
  name: "Local (Terminal)",
@@ -5586,6 +5991,7 @@ var SUBAGENTS = {
5586
5991
  // INTEGRATIONS.linear,
5587
5992
  // INTEGRATIONS.jira,
5588
5993
  INTEGRATIONS["jira-server"],
5994
+ INTEGRATIONS["azure-devops"],
5589
5995
  INTEGRATIONS.notion,
5590
5996
  INTEGRATIONS.slack
5591
5997
  ],
@@ -5629,6 +6035,17 @@ var SUBAGENTS = {
5629
6035
  isRequired: true,
5630
6036
  // Required for automated test execution and fixing
5631
6037
  version: "1.0.0"
6038
+ },
6039
+ "changelog-historian": {
6040
+ role: "changelog-historian",
6041
+ name: "Changelog Historian",
6042
+ description: "Retrieves and analyzes code changes from GitHub PRs and commits",
6043
+ icon: "git-pull-request",
6044
+ integrations: [INTEGRATIONS.github],
6045
+ model: "haiku",
6046
+ color: "gray",
6047
+ isRequired: false,
6048
+ version: "1.0.0"
5632
6049
  }
5633
6050
  };
5634
6051
  function getAllSubAgents() {
@@ -7358,7 +7775,8 @@ var TOOL_STRINGS = {
7358
7775
  INVOKE_TEAM_COMMUNICATOR: '**DELEGATE TO SUBAGENT**: Use the Task tool with `subagent_type: "team-communicator"` to send team notifications.\nThe agent will post to Slack/Teams/Email. Include message content and context in the prompt.',
7359
7776
  INLINE_TEAM_COMMUNICATOR: "**TEAM COMMUNICATION**: Read `.claude/agents/team-communicator.md` and follow its instructions to communicate with the team.\nUse the tools and guidelines specified in that file within this context. Do NOT spawn a sub-agent.",
7360
7777
  INVOKE_ISSUE_TRACKER: '**DELEGATE TO SUBAGENT**: Use the Task tool with `subagent_type: "issue-tracker"` to create/update issues.\nThe agent will interact with Jira. Include bug details and classification in the prompt.',
7361
- INVOKE_DOCUMENTATION_RESEARCHER: '**DELEGATE TO SUBAGENT**: Use the Task tool with `subagent_type: "documentation-researcher"` to search docs.\nThe agent will search Notion/Confluence. Include search query and context in the prompt.'
7778
+ INVOKE_DOCUMENTATION_RESEARCHER: '**DELEGATE TO SUBAGENT**: Use the Task tool with `subagent_type: "documentation-researcher"` to search docs.\nThe agent will search Notion/Confluence. Include search query and context in the prompt.',
7779
+ INVOKE_CHANGELOG_HISTORIAN: '**DELEGATE TO SUBAGENT**: Use the Task tool with `subagent_type: "changelog-historian"` to retrieve change history.\nThe agent will query GitHub for PRs and commits. Include repo context and date range in the prompt.'
7362
7780
  },
7363
7781
  "cursor": {
7364
7782
  INVOKE_TEST_RUNNER: 'Run the test-runner agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/test-runner.md)" --output-format text\n```',
@@ -7367,7 +7785,8 @@ var TOOL_STRINGS = {
7367
7785
  INVOKE_TEAM_COMMUNICATOR: 'Run the team-communicator agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/team-communicator.md)" --output-format text\n```',
7368
7786
  INLINE_TEAM_COMMUNICATOR: "**TEAM COMMUNICATION**: Read `.cursor/agents/team-communicator.md` and follow its instructions to communicate with the team.\nUse the tools and guidelines specified in that file within this context.",
7369
7787
  INVOKE_ISSUE_TRACKER: 'Run the issue-tracker agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/issue-tracker.md)" --output-format text\n```',
7370
- INVOKE_DOCUMENTATION_RESEARCHER: 'Run the documentation-researcher agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/documentation-researcher.md)" --output-format text\n```'
7788
+ INVOKE_DOCUMENTATION_RESEARCHER: 'Run the documentation-researcher agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/documentation-researcher.md)" --output-format text\n```',
7789
+ INVOKE_CHANGELOG_HISTORIAN: 'Run the changelog-historian agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/changelog-historian.md)" --output-format text\n```'
7371
7790
  },
7372
7791
  "codex": {
7373
7792
  INVOKE_TEST_RUNNER: 'Run the test-runner agent:\n```bash\ncodex -p "$(cat .codex/agents/test-runner.md)"\n```',
@@ -7376,7 +7795,8 @@ var TOOL_STRINGS = {
7376
7795
  INVOKE_TEAM_COMMUNICATOR: 'Run the team-communicator agent:\n```bash\ncodex -p "$(cat .codex/agents/team-communicator.md)"\n```',
7377
7796
  INLINE_TEAM_COMMUNICATOR: "**TEAM COMMUNICATION**: Read `.codex/agents/team-communicator.md` and follow its instructions to communicate with the team.\nUse the tools and guidelines specified in that file within this context.",
7378
7797
  INVOKE_ISSUE_TRACKER: 'Run the issue-tracker agent:\n```bash\ncodex -p "$(cat .codex/agents/issue-tracker.md)"\n```',
7379
- INVOKE_DOCUMENTATION_RESEARCHER: 'Run the documentation-researcher agent:\n```bash\ncodex -p "$(cat .codex/agents/documentation-researcher.md)"\n```'
7798
+ INVOKE_DOCUMENTATION_RESEARCHER: 'Run the documentation-researcher agent:\n```bash\ncodex -p "$(cat .codex/agents/documentation-researcher.md)"\n```',
7799
+ INVOKE_CHANGELOG_HISTORIAN: 'Run the changelog-historian agent:\n```bash\ncodex -p "$(cat .codex/agents/changelog-historian.md)"\n```'
7380
7800
  }
7381
7801
  };
7382
7802
  function getToolString(toolId, key) {
@@ -7398,7 +7818,8 @@ function replaceInvocationPlaceholders(content, toolId, isLocal = false) {
7398
7818
  "INVOKE_TEST_CODE_GENERATOR",
7399
7819
  "INVOKE_TEAM_COMMUNICATOR",
7400
7820
  "INVOKE_ISSUE_TRACKER",
7401
- "INVOKE_DOCUMENTATION_RESEARCHER"
7821
+ "INVOKE_DOCUMENTATION_RESEARCHER",
7822
+ "INVOKE_CHANGELOG_HISTORIAN"
7402
7823
  ];
7403
7824
  for (const key of keys) {
7404
7825
  const placeholder = `{{${key}}}`;
@@ -7652,8 +8073,37 @@ var MCP_SERVERS = {
7652
8073
  RESEND_FROM_EMAIL: "${RESEND_FROM_EMAIL}"
7653
8074
  }
7654
8075
  }
8076
+ },
8077
+ github: {
8078
+ provider: "github",
8079
+ name: "GitHub",
8080
+ description: "GitHub MCP server for PR and commit information",
8081
+ requiresCredentials: true,
8082
+ npmPackages: ["@bugzy-ai/github-mcp-server"],
8083
+ config: {
8084
+ command: "github-mcp-server",
8085
+ args: [],
8086
+ env: {
8087
+ GITHUB_TOKEN: "${GITHUB_TOKEN}"
8088
+ }
8089
+ }
8090
+ },
8091
+ "azure-devops": {
8092
+ provider: "azure-devops",
8093
+ name: "Azure DevOps",
8094
+ description: "Azure DevOps MCP server for Work Item Tracking (project specified per-request)",
8095
+ requiresCredentials: true,
8096
+ npmPackages: ["@bugzy-ai/azure-devops-mcp-server"],
8097
+ config: {
8098
+ command: "azure-devops-mcp-server",
8099
+ args: [],
8100
+ env: {
8101
+ AZURE_DEVOPS_ORG_URL: "${AZURE_DEVOPS_ORG_URL}",
8102
+ AZURE_DEVOPS_PAT: "${AZURE_DEVOPS_PAT}"
8103
+ }
8104
+ }
7655
8105
  }
7656
- // github: {
8106
+ // github-modelcontextprotocol: {
7657
8107
  // provider: 'github',
7658
8108
  // name: 'GitHub',
7659
8109
  // description: 'GitHub MCP server for repository operations',