mcp-adr-analysis-server 1.1.0 → 2.0.2
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 +367 -150
- package/dist/src/config/ai-config.d.ts +81 -0
- package/dist/src/config/ai-config.d.ts.map +1 -0
- package/dist/src/config/ai-config.js +134 -0
- package/dist/src/config/ai-config.js.map +1 -0
- package/dist/src/index.d.ts +97 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2430 -186
- package/dist/src/index.js.map +1 -1
- package/dist/src/prompts/adr-suggestion-prompts.d.ts +2 -2
- package/dist/src/prompts/adr-suggestion-prompts.d.ts.map +1 -1
- package/dist/src/prompts/adr-suggestion-prompts.js +25 -17
- package/dist/src/prompts/adr-suggestion-prompts.js.map +1 -1
- package/dist/src/prompts/analysis-prompts.js +1 -1
- package/dist/src/prompts/analysis-prompts.js.map +1 -1
- package/dist/src/resources/index.d.ts +1 -1
- package/dist/src/resources/index.d.ts.map +1 -1
- package/dist/src/resources/index.js +52 -44
- package/dist/src/resources/index.js.map +1 -1
- package/dist/src/templates/domain-knowledge-templates.d.ts +36 -0
- package/dist/src/templates/domain-knowledge-templates.d.ts.map +1 -0
- package/dist/src/templates/domain-knowledge-templates.js +376 -0
- package/dist/src/templates/domain-knowledge-templates.js.map +1 -0
- package/dist/src/tools/adr-suggestion-tool.d.ts +8 -3
- package/dist/src/tools/adr-suggestion-tool.d.ts.map +1 -1
- package/dist/src/tools/adr-suggestion-tool.js +561 -172
- package/dist/src/tools/adr-suggestion-tool.js.map +1 -1
- package/dist/src/tools/content-masking-tool.d.ts.map +1 -1
- package/dist/src/tools/content-masking-tool.js +168 -22
- package/dist/src/tools/content-masking-tool.js.map +1 -1
- package/dist/src/tools/deployment-analysis-tool.d.ts.map +1 -1
- package/dist/src/tools/deployment-analysis-tool.js +64 -27
- package/dist/src/tools/deployment-analysis-tool.js.map +1 -1
- package/dist/src/tools/environment-analysis-tool.d.ts.map +1 -1
- package/dist/src/tools/environment-analysis-tool.js +65 -29
- package/dist/src/tools/environment-analysis-tool.js.map +1 -1
- package/dist/src/tools/research-question-tool.d.ts.map +1 -1
- package/dist/src/tools/research-question-tool.js +150 -49
- package/dist/src/tools/research-question-tool.js.map +1 -1
- package/dist/src/tools/rule-generation-tool.d.ts.map +1 -1
- package/dist/src/tools/rule-generation-tool.js +328 -143
- package/dist/src/tools/rule-generation-tool.js.map +1 -1
- package/dist/src/types/ape-framework.d.ts +566 -0
- package/dist/src/types/ape-framework.d.ts.map +1 -0
- package/dist/src/types/ape-framework.js +98 -0
- package/dist/src/types/ape-framework.js.map +1 -0
- package/dist/src/types/index.d.ts +96 -93
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/knowledge-generation.d.ts +671 -0
- package/dist/src/types/knowledge-generation.d.ts.map +1 -0
- package/dist/src/types/knowledge-generation.js +107 -0
- package/dist/src/types/knowledge-generation.js.map +1 -0
- package/dist/src/types/reflexion-framework.d.ts +652 -0
- package/dist/src/types/reflexion-framework.d.ts.map +1 -0
- package/dist/src/types/reflexion-framework.js +85 -0
- package/dist/src/types/reflexion-framework.js.map +1 -0
- package/dist/src/utils/adr-suggestions.d.ts +1 -1
- package/dist/src/utils/adr-suggestions.d.ts.map +1 -1
- package/dist/src/utils/adr-suggestions.js +8 -50
- package/dist/src/utils/adr-suggestions.js.map +1 -1
- package/dist/src/utils/ai-executor.d.ts +125 -0
- package/dist/src/utils/ai-executor.d.ts.map +1 -0
- package/dist/src/utils/ai-executor.js +292 -0
- package/dist/src/utils/ai-executor.js.map +1 -0
- package/dist/src/utils/automatic-prompt-engineering.d.ts +72 -0
- package/dist/src/utils/automatic-prompt-engineering.d.ts.map +1 -0
- package/dist/src/utils/automatic-prompt-engineering.js +820 -0
- package/dist/src/utils/automatic-prompt-engineering.js.map +1 -0
- package/dist/src/utils/cache.d.ts +54 -22
- package/dist/src/utils/cache.d.ts.map +1 -1
- package/dist/src/utils/cache.js +1234 -143
- package/dist/src/utils/cache.js.map +1 -1
- package/dist/src/utils/config.d.ts +2 -2
- package/dist/src/utils/config.js +3 -3
- package/dist/src/utils/config.js.map +1 -1
- package/dist/src/utils/deployment-analysis.d.ts.map +1 -1
- package/dist/src/utils/deployment-analysis.js +57 -38
- package/dist/src/utils/deployment-analysis.js.map +1 -1
- package/dist/src/utils/environment-analysis.d.ts.map +1 -1
- package/dist/src/utils/environment-analysis.js +113 -100
- package/dist/src/utils/environment-analysis.js.map +1 -1
- package/dist/src/utils/file-system.d.ts +42 -13
- package/dist/src/utils/file-system.d.ts.map +1 -1
- package/dist/src/utils/file-system.js +795 -89
- package/dist/src/utils/file-system.js.map +1 -1
- package/dist/src/utils/index.d.ts +9 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +13 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/knowledge-generation.d.ts +79 -0
- package/dist/src/utils/knowledge-generation.d.ts.map +1 -0
- package/dist/src/utils/knowledge-generation.js +646 -0
- package/dist/src/utils/knowledge-generation.js.map +1 -0
- package/dist/src/utils/output-masking.d.ts.map +1 -1
- package/dist/src/utils/output-masking.js +2 -1
- package/dist/src/utils/output-masking.js.map +1 -1
- package/dist/src/utils/prompt-composition.d.ts +234 -0
- package/dist/src/utils/prompt-composition.d.ts.map +1 -0
- package/dist/src/utils/prompt-composition.js +379 -0
- package/dist/src/utils/prompt-composition.js.map +1 -0
- package/dist/src/utils/prompt-execution.d.ts +88 -0
- package/dist/src/utils/prompt-execution.d.ts.map +1 -0
- package/dist/src/utils/prompt-execution.js +227 -0
- package/dist/src/utils/prompt-execution.js.map +1 -0
- package/dist/src/utils/reflexion.d.ts +92 -0
- package/dist/src/utils/reflexion.d.ts.map +1 -0
- package/dist/src/utils/reflexion.js +1100 -0
- package/dist/src/utils/reflexion.js.map +1 -0
- package/dist/src/utils/research-integration.d.ts.map +1 -1
- package/dist/src/utils/research-integration.js +156 -100
- package/dist/src/utils/research-integration.js.map +1 -1
- package/dist/src/utils/research-questions.d.ts.map +1 -1
- package/dist/src/utils/research-questions.js +85 -24
- package/dist/src/utils/research-questions.js.map +1 -1
- package/dist/src/utils/rule-generation.d.ts.map +1 -1
- package/dist/src/utils/rule-generation.js +92 -108
- package/dist/src/utils/rule-generation.js.map +1 -1
- package/package.json +9 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-generation.d.ts","sourceRoot":"","sources":["../../../src/utils/rule-generation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,eAAe,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC;IAC7F,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,YAAY,CAAC;IAC5D,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;IACpD,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClC,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACjD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,UAAU,EAAE,KAAK,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,GAAE,MAAoB,EAClC,aAAa,CAAC,EAAE,iBAAiB,EAAE,GAClC,OAAO,CAAC;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"rule-generation.d.ts","sourceRoot":"","sources":["../../../src/utils/rule-generation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,eAAe,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC;IAC7F,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,YAAY,CAAC;IAC5D,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;IACpD,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClC,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACjD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,UAAU,EAAE,KAAK,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,GAAE,MAAoB,EAClC,aAAa,CAAC,EAAE,iBAAiB,EAAE,GAClC,OAAO,CAAC;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAiG7D;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,OAAO,CAAC;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CA2F7D;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,iBAAiB,EAAE,EAC1B,cAAc,GAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,QAAiB,GACpE,OAAO,CAAC;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAwE7D;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,iBAAiB,EAAE,gBAAgB,EAAE,EACrC,KAAK,EAAE,iBAAiB,EAAE,EAC1B,UAAU,GAAE,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,YAAwB,GACtE,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAkEzD"}
|
|
@@ -9,33 +9,53 @@ import { McpAdrError } from '../types/index.js';
|
|
|
9
9
|
export async function extractRulesFromAdrs(adrDirectory = 'docs/adrs', existingRules) {
|
|
10
10
|
try {
|
|
11
11
|
const { findFiles } = await import('./file-system.js');
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const adrFiles = await findFiles(process.cwd(), [`${adrDirectory}/**/*.md`], {
|
|
12
|
+
// Generate ADR file discovery prompt for AI delegation
|
|
13
|
+
const adrFileDiscoveryPrompt = await findFiles(process.cwd(), [`${adrDirectory}/**/*.md`], {
|
|
15
14
|
includeContent: true,
|
|
16
15
|
});
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
16
|
+
const extractionPrompt = `
|
|
17
|
+
# Architectural Rule Extraction
|
|
18
|
+
|
|
19
|
+
Please extract actionable architectural rules from ADRs for code validation and compliance checking.
|
|
20
|
+
|
|
21
|
+
## ADR Discovery Instructions
|
|
22
|
+
|
|
23
|
+
${adrFileDiscoveryPrompt.prompt}
|
|
24
|
+
|
|
25
|
+
## Implementation Steps
|
|
26
|
+
|
|
27
|
+
${adrFileDiscoveryPrompt.instructions}
|
|
28
|
+
|
|
29
|
+
## Existing Rules Context
|
|
30
|
+
|
|
31
|
+
${existingRules ? `
|
|
32
|
+
### Current Rules (${existingRules.length})
|
|
33
|
+
${existingRules.map((rule, index) => `
|
|
34
|
+
#### ${index + 1}. ${rule.name}
|
|
35
|
+
- **ID**: ${rule.id}
|
|
36
|
+
- **Description**: ${rule.description}
|
|
37
|
+
`).join('')}
|
|
38
|
+
` : 'No existing rules provided.'}
|
|
39
|
+
|
|
40
|
+
## Rule Extraction Requirements
|
|
41
|
+
|
|
42
|
+
For each ADR discovered:
|
|
43
|
+
1. Extract actionable architectural rules and constraints
|
|
44
|
+
2. Identify technology-specific requirements and standards
|
|
45
|
+
3. Define coding standards and best practices
|
|
46
|
+
4. Establish process and workflow requirements
|
|
47
|
+
5. Capture security and compliance rules
|
|
48
|
+
6. Define performance and scalability constraints
|
|
49
|
+
|
|
50
|
+
## Rule Categories to Extract
|
|
51
|
+
|
|
52
|
+
- **Architectural**: Component structure, dependencies, patterns
|
|
53
|
+
- **Technology**: Framework choices, library usage, platform requirements
|
|
54
|
+
- **Coding**: Style guides, naming conventions, code organization
|
|
55
|
+
- **Process**: Development workflow, review requirements, deployment
|
|
56
|
+
- **Security**: Authentication, authorization, data protection
|
|
57
|
+
- **Performance**: Response times, resource limits, scalability targets
|
|
58
|
+
`;
|
|
39
59
|
const instructions = `
|
|
40
60
|
# Rule Extraction Instructions
|
|
41
61
|
|
|
@@ -43,7 +63,7 @@ This analysis will extract actionable architectural rules from ADRs that can be
|
|
|
43
63
|
|
|
44
64
|
## Extraction Scope
|
|
45
65
|
- **ADR Directory**: ${adrDirectory}
|
|
46
|
-
- **
|
|
66
|
+
- **ADR Directory**: ${adrDirectory}
|
|
47
67
|
- **Existing Rules**: ${existingRules?.length || 0} rules
|
|
48
68
|
- **Rule Categories**: Architectural, Technology, Coding, Process, Security, Performance
|
|
49
69
|
|
|
@@ -84,14 +104,49 @@ const result = await extractRulesFromAdrs(adrDirectory, existingRules);
|
|
|
84
104
|
export async function generateRulesFromPatterns(projectPath, existingRules) {
|
|
85
105
|
try {
|
|
86
106
|
const { analyzeProjectStructure } = await import('./file-system.js');
|
|
87
|
-
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
107
|
+
// Generate project analysis prompt for AI delegation
|
|
108
|
+
const projectAnalysisPrompt = await analyzeProjectStructure(projectPath);
|
|
109
|
+
const generationPrompt = `
|
|
110
|
+
# Pattern-Based Rule Generation
|
|
111
|
+
|
|
112
|
+
Please analyze project patterns and generate architectural rules for code validation.
|
|
113
|
+
|
|
114
|
+
## Project Analysis Instructions
|
|
115
|
+
|
|
116
|
+
${projectAnalysisPrompt.prompt}
|
|
117
|
+
|
|
118
|
+
## Implementation Steps
|
|
119
|
+
|
|
120
|
+
${projectAnalysisPrompt.instructions}
|
|
121
|
+
|
|
122
|
+
## Existing Rules Context
|
|
123
|
+
|
|
124
|
+
${existingRules ? `
|
|
125
|
+
### Current Rules (${existingRules.length})
|
|
126
|
+
${existingRules.map((rule, index) => `
|
|
127
|
+
#### ${index + 1}. ${rule}
|
|
128
|
+
`).join('')}
|
|
129
|
+
` : 'No existing rules provided.'}
|
|
130
|
+
|
|
131
|
+
## Pattern Analysis Requirements
|
|
132
|
+
|
|
133
|
+
1. **Code Structure Analysis**: Examine project organization and module structure
|
|
134
|
+
2. **Dependency Pattern Detection**: Identify import/export patterns and dependencies
|
|
135
|
+
3. **Naming Convention Analysis**: Extract naming patterns for files, functions, classes
|
|
136
|
+
4. **Architecture Pattern Recognition**: Identify architectural patterns in use
|
|
137
|
+
5. **Technology Stack Analysis**: Determine technology choices and configurations
|
|
138
|
+
6. **Quality Pattern Assessment**: Analyze code quality and testing patterns
|
|
139
|
+
|
|
140
|
+
## Rule Generation Focus
|
|
141
|
+
|
|
142
|
+
Generate rules that enforce:
|
|
143
|
+
- Consistent code organization and structure
|
|
144
|
+
- Proper dependency management
|
|
145
|
+
- Naming convention compliance
|
|
146
|
+
- Architectural pattern adherence
|
|
147
|
+
- Technology stack consistency
|
|
148
|
+
- Code quality standards
|
|
149
|
+
`;
|
|
95
150
|
const instructions = `
|
|
96
151
|
# Pattern-Based Rule Generation Instructions
|
|
97
152
|
|
|
@@ -99,8 +154,7 @@ This analysis will generate architectural rules based on observed code patterns
|
|
|
99
154
|
|
|
100
155
|
## Pattern Analysis
|
|
101
156
|
- **Project Path**: ${projectPath}
|
|
102
|
-
- **
|
|
103
|
-
- **Code Patterns**: ${codePatterns.length} patterns detected
|
|
157
|
+
- **Analysis Focus**: Code structure, dependencies, naming conventions, architecture patterns
|
|
104
158
|
- **Existing Rules**: ${existingRules?.length || 0} rules
|
|
105
159
|
|
|
106
160
|
## Next Steps
|
|
@@ -255,76 +309,6 @@ const result = await generateRuleDeviationReport(validationResults, rules, repor
|
|
|
255
309
|
throw new McpAdrError(`Failed to generate rule deviation report: ${error instanceof Error ? error.message : String(error)}`, 'REPORT_GENERATION_ERROR');
|
|
256
310
|
}
|
|
257
311
|
}
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
*/
|
|
261
|
-
function extractCodePatterns(projectStructure) {
|
|
262
|
-
const patterns = [];
|
|
263
|
-
try {
|
|
264
|
-
// Extract patterns from file types
|
|
265
|
-
if (projectStructure.filesByType) {
|
|
266
|
-
Object.entries(projectStructure.filesByType).forEach(([type, files]) => {
|
|
267
|
-
if (Array.isArray(files) && files.length > 0) {
|
|
268
|
-
patterns.push({
|
|
269
|
-
pattern: `${type} file organization`,
|
|
270
|
-
frequency: files.length,
|
|
271
|
-
examples: files.slice(0, 3).map((f) => f.name || f),
|
|
272
|
-
category: 'structure',
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
});
|
|
276
|
-
}
|
|
277
|
-
// Extract patterns from directory structure
|
|
278
|
-
if (projectStructure.directories) {
|
|
279
|
-
patterns.push({
|
|
280
|
-
pattern: 'Directory organization',
|
|
281
|
-
frequency: projectStructure.directories.length,
|
|
282
|
-
examples: projectStructure.directories.slice(0, 3),
|
|
283
|
-
category: 'structure',
|
|
284
|
-
});
|
|
285
|
-
}
|
|
286
|
-
// Extract patterns from detected technologies
|
|
287
|
-
if (projectStructure.detectedTechnologies) {
|
|
288
|
-
patterns.push({
|
|
289
|
-
pattern: 'Technology stack',
|
|
290
|
-
frequency: projectStructure.detectedTechnologies.length,
|
|
291
|
-
examples: projectStructure.detectedTechnologies.slice(0, 3),
|
|
292
|
-
category: 'technology',
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
|
-
return patterns;
|
|
296
|
-
}
|
|
297
|
-
catch (error) {
|
|
298
|
-
console.warn('Failed to extract code patterns:', error);
|
|
299
|
-
return [
|
|
300
|
-
{
|
|
301
|
-
pattern: 'Basic project structure',
|
|
302
|
-
frequency: 1,
|
|
303
|
-
examples: ['Unable to extract specific patterns'],
|
|
304
|
-
category: 'general',
|
|
305
|
-
},
|
|
306
|
-
];
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* Extract ADR category from content
|
|
311
|
-
*/
|
|
312
|
-
function extractAdrCategory(content) {
|
|
313
|
-
const categoryPatterns = [
|
|
314
|
-
{ pattern: /framework|library|dependency/i, category: 'technology' },
|
|
315
|
-
{ pattern: /database|storage|persistence/i, category: 'database' },
|
|
316
|
-
{ pattern: /api|rest|graphql|endpoint/i, category: 'api' },
|
|
317
|
-
{ pattern: /security|authentication|authorization/i, category: 'security' },
|
|
318
|
-
{ pattern: /deployment|infrastructure|cloud/i, category: 'deployment' },
|
|
319
|
-
{ pattern: /test|testing|quality/i, category: 'testing' },
|
|
320
|
-
{ pattern: /architecture|pattern|design/i, category: 'architecture' },
|
|
321
|
-
{ pattern: /process|workflow|methodology/i, category: 'process' },
|
|
322
|
-
];
|
|
323
|
-
for (const { pattern, category } of categoryPatterns) {
|
|
324
|
-
if (pattern.test(content)) {
|
|
325
|
-
return category;
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
return 'general';
|
|
329
|
-
}
|
|
312
|
+
// Removed unused function extractCodePatterns
|
|
313
|
+
// Removed unused function extractAdrCategory
|
|
330
314
|
//# sourceMappingURL=rule-generation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-generation.js","sourceRoot":"","sources":["../../../src/utils/rule-generation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA0DhD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,eAAuB,WAAW,EAClC,aAAmC;IAEnC,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"rule-generation.js","sourceRoot":"","sources":["../../../src/utils/rule-generation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-adr-analysis-server",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.2",
|
|
4
4
|
"description": "MCP server for analyzing Architectural Decision Records and project architecture",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -9,14 +9,19 @@
|
|
|
9
9
|
"npm": ">=9.0.0"
|
|
10
10
|
},
|
|
11
11
|
"scripts": {
|
|
12
|
-
"build": "tsc",
|
|
12
|
+
"build": "tsc && chmod +x dist/src/index.js",
|
|
13
13
|
"dev": "tsx src/index.ts",
|
|
14
14
|
"test": "jest",
|
|
15
15
|
"test:watch": "jest --watch",
|
|
16
16
|
"test:coverage": "jest --coverage",
|
|
17
|
+
"test:advanced": "./scripts/test-advanced-prompting.sh",
|
|
18
|
+
"test:unit": "./scripts/test-advanced-prompting.sh unit",
|
|
19
|
+
"test:integration": "./scripts/test-advanced-prompting.sh integration",
|
|
20
|
+
"test:performance": "./scripts/test-advanced-prompting.sh performance",
|
|
21
|
+
"test:quality": "./scripts/test-advanced-prompting.sh quality",
|
|
17
22
|
"lint": "npm run typecheck",
|
|
18
23
|
"lint:fix": "npm run typecheck",
|
|
19
|
-
"clean": "rm -rf dist coverage .mcp-adr-cache",
|
|
24
|
+
"clean": "sudo rm -rf dist coverage .mcp-adr-cache || rm -rf dist coverage .mcp-adr-cache",
|
|
20
25
|
"prepare": "test -d src && npm run build || echo 'Skipping build - no src directory (likely packaging)'",
|
|
21
26
|
"prepublishOnly": "npm run build && npm test && npm run lint",
|
|
22
27
|
"start": "node dist/src/index.js",
|
|
@@ -30,6 +35,7 @@
|
|
|
30
35
|
"dependencies": {
|
|
31
36
|
"@modelcontextprotocol/sdk": "^1.13.3",
|
|
32
37
|
"fast-glob": "^3.3.2",
|
|
38
|
+
"openai": "^5.8.2",
|
|
33
39
|
"tslib": "^2.8.1",
|
|
34
40
|
"zod": "^3.22.4"
|
|
35
41
|
},
|