mcp-adr-analysis-server 2.0.11 โ†’ 2.0.13

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/README.md CHANGED
@@ -25,6 +25,7 @@ The Model Context Protocol enables seamless integration between AI assistants an
25
25
  ๐Ÿ“Š **Workflow Automation** - Todo generation, deployment tracking, and rule validation
26
26
  ๐Ÿงช **TDD Integration** - Two-phase Test-Driven Development with ADR linking and validation
27
27
  ๐Ÿ” **Mock Detection** - Sophisticated analysis to distinguish mock from production code
28
+ ๐Ÿš€ **Deployment Readiness** - Zero-tolerance test validation with deployment history tracking and hard blocking
28
29
 
29
30
 
30
31
 
@@ -296,6 +297,50 @@ const rules = await generateRules({
296
297
  });
297
298
  ```
298
299
 
300
+ ### Deployment Readiness & Safety
301
+ ```typescript
302
+ // Comprehensive deployment validation with zero tolerance
303
+ const deploymentCheck = await deploymentReadiness({
304
+ operation: "full_audit",
305
+ projectPath: "/path/to/project",
306
+ targetEnvironment: "production",
307
+
308
+ // Test validation (zero tolerance by default)
309
+ maxTestFailures: 0, // Hard block on any test failures
310
+ requireTestCoverage: 80, // Minimum coverage requirement
311
+ blockOnFailingTests: true, // Prevent deployment with failing tests
312
+
313
+ // Deployment history validation
314
+ maxRecentFailures: 2, // Max recent deployment failures
315
+ deploymentSuccessThreshold: 80, // Required success rate
316
+ rollbackFrequencyThreshold: 20, // Max rollback frequency
317
+
318
+ // Integration options
319
+ integrateTodoTasks: true, // Auto-create blocking tasks
320
+ updateHealthScoring: true, // Update project metrics
321
+ strictMode: true // Enable all safety checks
322
+ });
323
+
324
+ // Enhanced git push with deployment readiness
325
+ const pushResult = await smartGitPush({
326
+ message: "Deploy feature X",
327
+ branch: "main",
328
+
329
+ // Deployment readiness integration
330
+ checkDeploymentReadiness: true, // Validate before push
331
+ enforceDeploymentReadiness: true, // Hard block on issues
332
+ targetEnvironment: "production", // Environment-specific checks
333
+ strictDeploymentMode: true // Maximum safety
334
+ });
335
+
336
+ // Emergency override for critical fixes
337
+ const override = await deploymentReadiness({
338
+ operation: "emergency_override",
339
+ businessJustification: "Critical security patch - CVE-2024-XXXX",
340
+ approvalRequired: true
341
+ });
342
+ ```
343
+
299
344
  ## ๐ŸŽฏ Use Cases
300
345
 
301
346
  ### ๐Ÿ‘จโ€๐Ÿ’ป **AI Coding Assistants**
@@ -136,6 +136,7 @@ export declare class McpAdrAnalysisServer {
136
136
  private manageTodoJson;
137
137
  private generateDeploymentGuidance;
138
138
  private smartGitPush;
139
+ private deploymentReadiness;
139
140
  private troubleshootGuidedWorkflow;
140
141
  private smartScore;
141
142
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AA2EH;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,SAAS,CAAwB;;IAyBzC;;OAEG;YACW,qBAAqB;IAUnC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAKlC;;OAEG;IACH,OAAO,CAAC,aAAa;IA03DrB;;OAEG;YACW,sBAAsB;YAgGtB,mBAAmB;YAqMnB,sBAAsB;YAmQtB,uBAAuB;YAsUvB,uBAAuB;YA0PvB,mBAAmB;YA6RnB,eAAe;YA2Hf,kBAAkB;IAyFhC;;OAEG;YACW,+BAA+B;IA0K7C;;OAEG;IACH,OAAO,CAAC,cAAc;IAgCtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAkDtB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAyClC;;OAEG;IACH,OAAO,CAAC,+BAA+B;IAmFvC;;OAEG;YACW,sBAAsB;YAKtB,sBAAsB;YAKtB,uBAAuB;YAKvB,wBAAwB;YAKxB,sBAAsB;YAKtB,WAAW;YAkJX,sBAAsB;IAuHpC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAyDnC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyF3B;;OAEG;YACW,WAAW;YAKX,uBAAuB;YAKvB,oBAAoB;IAKlC;;OAEG;YACW,mBAAmB;YAKnB,sBAAsB;YAKtB,yBAAyB;IAKvC;;OAEG;YACW,aAAa;YAKb,aAAa;YAKb,aAAa;IAK3B;;OAEG;YACW,kBAAkB;IAKhC;;OAEG;YACW,yBAAyB;IAKvC;;OAEG;YACW,yBAAyB;IAKvC;;OAEG;IACH;;OAEG;YACW,kBAAkB;YAwFlB,kBAAkB;IAWhC;;OAEG;YACW,YAAY;IAmF1B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B;;OAEG;YACW,QAAQ;YAiCR,SAAS;YAqCT,aAAa;YAuCb,cAAc;YAiBd,0BAA0B;YAY1B,YAAY;YAYZ,0BAA0B;YAY1B,UAAU;CAWzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AA2EH;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,SAAS,CAAwB;;IAyBzC;;OAEG;YACW,qBAAqB;IAUnC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAKlC;;OAEG;IACH,OAAO,CAAC,aAAa;IAkhErB;;OAEG;YACW,sBAAsB;YAgGtB,mBAAmB;YAqMnB,sBAAsB;YAmQtB,uBAAuB;YA+VvB,uBAAuB;YA0PvB,mBAAmB;YA6RnB,eAAe;YA2Hf,kBAAkB;IAyFhC;;OAEG;YACW,+BAA+B;IA0K7C;;OAEG;IACH,OAAO,CAAC,cAAc;IAgCtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAkDtB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAyClC;;OAEG;IACH,OAAO,CAAC,+BAA+B;IAmFvC;;OAEG;YACW,sBAAsB;YAKtB,sBAAsB;YAKtB,uBAAuB;YAKvB,wBAAwB;YAKxB,sBAAsB;YAKtB,WAAW;YAkJX,sBAAsB;IAuHpC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAyDnC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyF3B;;OAEG;YACW,WAAW;YAKX,uBAAuB;YAKvB,oBAAoB;IAKlC;;OAEG;YACW,mBAAmB;YAKnB,sBAAsB;YAKtB,yBAAyB;IAKvC;;OAEG;YACW,aAAa;YAKb,aAAa;YAKb,aAAa;IAK3B;;OAEG;YACW,kBAAkB;IAKhC;;OAEG;YACW,yBAAyB;IAKvC;;OAEG;YACW,yBAAyB;IAKvC;;OAEG;IACH;;OAEG;YACW,kBAAkB;YAwFlB,kBAAkB;IAWhC;;OAEG;YACW,YAAY;IAmF1B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B;;OAEG;YACW,QAAQ;YAiCR,SAAS;YAqCT,aAAa;YAuCb,cAAc;YAiBd,0BAA0B;YAY1B,YAAY;YAYZ,mBAAmB;YAYnB,0BAA0B;YAY1B,UAAU;CAWzB"}
package/dist/src/index.js CHANGED
@@ -1513,7 +1513,7 @@ export class McpAdrAnalysisServer {
1513
1513
  },
1514
1514
  {
1515
1515
  name: 'smart_git_push',
1516
- description: 'Intelligent git push with sensitive content filtering, LLM artifact detection, and release readiness analysis',
1516
+ description: 'AI-driven security-focused git push with credential detection, file filtering, and deployment metrics tracking. Tests should be run by calling AI and results provided.',
1517
1517
  inputSchema: {
1518
1518
  type: 'object',
1519
1519
  properties: {
@@ -1525,48 +1525,197 @@ export class McpAdrAnalysisServer {
1525
1525
  type: 'string',
1526
1526
  description: 'Commit message (optional, commits staged files if provided)'
1527
1527
  },
1528
- skipValidation: {
1528
+ testResults: {
1529
+ type: 'object',
1530
+ description: 'Test results from AI-executed tests (required for proper deployment tracking)',
1531
+ properties: {
1532
+ success: {
1533
+ type: 'boolean',
1534
+ description: 'Whether all tests passed'
1535
+ },
1536
+ testsRun: {
1537
+ type: 'number',
1538
+ description: 'Total number of tests executed'
1539
+ },
1540
+ testsPassed: {
1541
+ type: 'number',
1542
+ description: 'Number of tests that passed'
1543
+ },
1544
+ testsFailed: {
1545
+ type: 'number',
1546
+ description: 'Number of tests that failed'
1547
+ },
1548
+ duration: {
1549
+ type: 'number',
1550
+ description: 'Test execution duration in seconds'
1551
+ },
1552
+ command: {
1553
+ type: 'string',
1554
+ description: 'Test command that was executed by AI'
1555
+ },
1556
+ output: {
1557
+ type: 'string',
1558
+ description: 'Test execution output'
1559
+ },
1560
+ failureDetails: {
1561
+ type: 'array',
1562
+ items: { type: 'string' },
1563
+ description: 'Details of test failures'
1564
+ },
1565
+ testTypes: {
1566
+ type: 'object',
1567
+ description: 'Results broken down by test type (unit, integration, etc.)',
1568
+ additionalProperties: {
1569
+ type: 'object',
1570
+ properties: {
1571
+ passed: { type: 'number' },
1572
+ failed: { type: 'number' }
1573
+ }
1574
+ }
1575
+ }
1576
+ },
1577
+ required: ['success', 'testsRun', 'testsPassed', 'testsFailed']
1578
+ },
1579
+ skipSecurity: {
1529
1580
  type: 'boolean',
1530
1581
  default: false,
1531
- description: 'Skip content validation'
1582
+ description: 'Skip security scanning (NOT RECOMMENDED)'
1532
1583
  },
1533
- allowedArtifacts: {
1534
- type: 'array',
1535
- items: { type: 'string' },
1536
- description: 'Files to allow despite being flagged as artifacts'
1584
+ dryRun: {
1585
+ type: 'boolean',
1586
+ default: false,
1587
+ description: 'Show what would be pushed without actually pushing'
1537
1588
  },
1538
- sensitivityLevel: {
1589
+ projectPath: {
1539
1590
  type: 'string',
1540
- enum: ['strict', 'moderate', 'permissive'],
1541
- default: 'moderate',
1542
- description: 'Sensitivity level for content detection'
1591
+ description: 'Path to project directory (defaults to current working directory)'
1543
1592
  },
1544
- interactiveMode: {
1545
- type: 'boolean',
1546
- default: true,
1547
- description: 'Enable interactive approval workflow'
1548
- },
1549
- dryRun: {
1593
+ forceUnsafe: {
1550
1594
  type: 'boolean',
1551
1595
  default: false,
1552
- description: 'Show what would be pushed without actually pushing'
1596
+ description: 'Override security blocks and test failures (DANGEROUS)'
1597
+ }
1598
+ }
1599
+ }
1600
+ },
1601
+ {
1602
+ name: 'deployment_readiness',
1603
+ description: 'Comprehensive deployment readiness validation with test failure tracking, deployment history analysis, and hard blocking for unsafe deployments. Integrates with smart_git_push for deployment gating.',
1604
+ inputSchema: {
1605
+ type: 'object',
1606
+ properties: {
1607
+ operation: {
1608
+ type: 'string',
1609
+ enum: ['check_readiness', 'validate_production', 'test_validation', 'deployment_history', 'full_audit', 'emergency_override'],
1610
+ description: 'Type of deployment readiness check to perform'
1553
1611
  },
1554
1612
  projectPath: {
1555
1613
  type: 'string',
1556
1614
  description: 'Path to project directory (defaults to current working directory)'
1557
1615
  },
1558
- checkReleaseReadiness: {
1616
+ targetEnvironment: {
1617
+ type: 'string',
1618
+ enum: ['staging', 'production', 'integration'],
1619
+ default: 'production',
1620
+ description: 'Target deployment environment'
1621
+ },
1622
+ strictMode: {
1623
+ type: 'boolean',
1624
+ default: true,
1625
+ description: 'Enable strict validation (recommended for production)'
1626
+ },
1627
+ allowMockCode: {
1559
1628
  type: 'boolean',
1560
1629
  default: false,
1561
- description: 'Analyze TODO.md and project state to determine if ready for release'
1630
+ description: 'Allow mock code in deployment (NOT RECOMMENDED)'
1631
+ },
1632
+ productionCodeThreshold: {
1633
+ type: 'number',
1634
+ default: 85,
1635
+ description: 'Minimum production code quality score (0-100)'
1562
1636
  },
1563
- releaseType: {
1637
+ mockCodeMaxAllowed: {
1638
+ type: 'number',
1639
+ default: 0,
1640
+ description: 'Maximum mock code indicators allowed'
1641
+ },
1642
+ maxTestFailures: {
1643
+ type: 'number',
1644
+ default: 0,
1645
+ description: 'Maximum test failures allowed (0 = zero tolerance)'
1646
+ },
1647
+ requireTestCoverage: {
1648
+ type: 'number',
1649
+ default: 80,
1650
+ description: 'Minimum test coverage percentage required'
1651
+ },
1652
+ blockOnFailingTests: {
1653
+ type: 'boolean',
1654
+ default: true,
1655
+ description: 'Block deployment if tests are failing'
1656
+ },
1657
+ testSuiteRequired: {
1658
+ type: 'array',
1659
+ items: { type: 'string' },
1660
+ default: [],
1661
+ description: 'Required test suites that must pass'
1662
+ },
1663
+ maxRecentFailures: {
1664
+ type: 'number',
1665
+ default: 2,
1666
+ description: 'Maximum recent deployment failures allowed'
1667
+ },
1668
+ deploymentSuccessThreshold: {
1669
+ type: 'number',
1670
+ default: 80,
1671
+ description: 'Minimum deployment success rate required (%)'
1672
+ },
1673
+ blockOnRecentFailures: {
1674
+ type: 'boolean',
1675
+ default: true,
1676
+ description: 'Block if recent deployments failed'
1677
+ },
1678
+ rollbackFrequencyThreshold: {
1679
+ type: 'number',
1680
+ default: 20,
1681
+ description: 'Maximum rollback frequency allowed (%)'
1682
+ },
1683
+ requireAdrCompliance: {
1684
+ type: 'boolean',
1685
+ default: true,
1686
+ description: 'Require ADR compliance validation'
1687
+ },
1688
+ integrateTodoTasks: {
1689
+ type: 'boolean',
1690
+ default: true,
1691
+ description: 'Auto-create blocking tasks for issues'
1692
+ },
1693
+ updateHealthScoring: {
1694
+ type: 'boolean',
1695
+ default: true,
1696
+ description: 'Update project health scores'
1697
+ },
1698
+ triggerSmartGitPush: {
1699
+ type: 'boolean',
1700
+ default: false,
1701
+ description: 'Trigger smart git push validation'
1702
+ },
1703
+ emergencyBypass: {
1704
+ type: 'boolean',
1705
+ default: false,
1706
+ description: 'Emergency bypass for critical fixes'
1707
+ },
1708
+ businessJustification: {
1564
1709
  type: 'string',
1565
- enum: ['major', 'minor', 'patch'],
1566
- default: 'minor',
1567
- description: 'Type of release to check readiness for'
1710
+ description: 'Business justification for overrides (required for emergency_override)'
1711
+ },
1712
+ approvalRequired: {
1713
+ type: 'boolean',
1714
+ default: true,
1715
+ description: 'Require approval for overrides'
1568
1716
  }
1569
- }
1717
+ },
1718
+ required: ['operation']
1570
1719
  }
1571
1720
  },
1572
1721
  {
@@ -1895,6 +2044,9 @@ export class McpAdrAnalysisServer {
1895
2044
  case 'smart_git_push':
1896
2045
  response = await this.smartGitPush(args);
1897
2046
  break;
2047
+ case 'deployment_readiness':
2048
+ response = await this.deploymentReadiness(args);
2049
+ break;
1898
2050
  case 'troubleshoot_guided_workflow':
1899
2051
  response = await this.troubleshootGuidedWorkflow(args);
1900
2052
  break;
@@ -2675,6 +2827,27 @@ ${environmentResult.content[0].text}
2675
2827
  temperature: 0.1,
2676
2828
  maxTokens: 6000,
2677
2829
  });
2830
+ // Step 6: Record project structure to knowledge graph
2831
+ try {
2832
+ this.logger.info('Recording project structure to knowledge graph');
2833
+ const projectStructureSnapshot = {
2834
+ projectPath,
2835
+ analysisDepth,
2836
+ recursiveDepth,
2837
+ technologyFocus,
2838
+ analysisScope,
2839
+ includeEnvironment,
2840
+ timestamp: new Date().toISOString(),
2841
+ structureData: baseProjectAnalysisPrompt.context || {}
2842
+ };
2843
+ await this.kgManager.recordProjectStructure(projectStructureSnapshot);
2844
+ this.logger.info('โœ… Project structure recorded to knowledge graph');
2845
+ }
2846
+ catch (kgError) {
2847
+ this.logger.warn('Failed to record project structure to knowledge graph:', kgError);
2848
+ // Don't fail the entire analysis if KG recording fails
2849
+ }
2850
+ // Return appropriate response based on execution result
2678
2851
  if (executionResult.isAIGenerated) {
2679
2852
  // AI execution successful - return actual analysis results
2680
2853
  return formatMCPResponse({
@@ -2693,6 +2866,7 @@ ${environmentResult.content[0].text}
2693
2866
  - **Reflexion Learning**: ${enhancedMode && learningEnabled ? 'โœ… Enabled' : 'โŒ Disabled'}
2694
2867
  - **Enhanced Mode**: ${enhancedMode ? 'โœ… Enabled' : 'โŒ Disabled'}
2695
2868
  - **Technology Focus**: ${technologyFocus.length > 0 ? technologyFocus.join(', ') : 'Auto-detect'}
2869
+ - **Knowledge Graph**: โœ… Project structure recorded
2696
2870
 
2697
2871
  ${knowledgeContext}
2698
2872
 
@@ -2761,6 +2935,7 @@ This comprehensive analysis provides deep recursive project understanding with i
2761
2935
  - **Enhanced Mode**: ${enhancedMode ? 'โœ… Enabled' : 'โŒ Disabled'}
2762
2936
  - **Technology Focus**: ${technologyFocus.length > 0 ? technologyFocus.join(', ') : 'Auto-detect'}
2763
2937
  - **Include Patterns**: ${includePatterns?.length ? includePatterns.join(', ') : 'Default patterns'}
2938
+ - **Knowledge Graph**: โœ… Project structure recorded
2764
2939
 
2765
2940
  ${knowledgeContext}
2766
2941
 
@@ -4556,13 +4731,22 @@ Please provide:
4556
4731
  }
4557
4732
  async smartGitPush(args) {
4558
4733
  try {
4559
- const { smartGitPush } = await import('./tools/smart-git-push-tool.js');
4734
+ const { smartGitPush } = await import('./tools/smart-git-push-tool-v2.js');
4560
4735
  return await smartGitPush(args);
4561
4736
  }
4562
4737
  catch (error) {
4563
4738
  throw new McpAdrError(`Smart git push failed: ${error instanceof Error ? error.message : String(error)}`, 'SMART_GIT_PUSH_ERROR');
4564
4739
  }
4565
4740
  }
4741
+ async deploymentReadiness(args) {
4742
+ try {
4743
+ const { deploymentReadiness } = await import('./tools/deployment-readiness-tool.js');
4744
+ return await deploymentReadiness(args);
4745
+ }
4746
+ catch (error) {
4747
+ throw new McpAdrError(`Deployment readiness check failed: ${error instanceof Error ? error.message : String(error)}`, 'DEPLOYMENT_READINESS_ERROR');
4748
+ }
4749
+ }
4566
4750
  async troubleshootGuidedWorkflow(args) {
4567
4751
  try {
4568
4752
  const { troubleshootGuidedWorkflow } = await import('./tools/troubleshoot-guided-workflow-tool.js');