mcp-adr-analysis-server 2.0.21 → 2.1.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.
- package/README.md +94 -839
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/config/ai-config.d.ts.map +1 -1
- package/dist/src/config/ai-config.js +9 -9
- package/dist/src/config/ai-config.js.map +1 -1
- package/dist/src/index.d.ts +15 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1594 -837
- package/dist/src/index.js.map +1 -1
- package/dist/src/prompts/analysis-prompts.d.ts +4 -1
- package/dist/src/prompts/analysis-prompts.d.ts.map +1 -1
- package/dist/src/prompts/analysis-prompts.js +61 -30
- package/dist/src/prompts/analysis-prompts.js.map +1 -1
- package/dist/src/prompts/index.d.ts +17 -1
- package/dist/src/prompts/index.d.ts.map +1 -1
- package/dist/src/prompts/index.js +325 -1
- package/dist/src/prompts/index.js.map +1 -1
- package/dist/src/prompts/rule-generation-prompts.d.ts +5 -1
- package/dist/src/prompts/rule-generation-prompts.d.ts.map +1 -1
- package/dist/src/prompts/rule-generation-prompts.js +5 -1
- package/dist/src/prompts/rule-generation-prompts.js.map +1 -1
- package/dist/src/prompts/security-prompts.d.ts +6 -1
- package/dist/src/prompts/security-prompts.d.ts.map +1 -1
- package/dist/src/prompts/security-prompts.js +6 -1
- package/dist/src/prompts/security-prompts.js.map +1 -1
- package/dist/src/prompts/todo-prompts.d.ts +49 -0
- package/dist/src/prompts/todo-prompts.d.ts.map +1 -0
- package/dist/src/prompts/todo-prompts.js +824 -0
- package/dist/src/prompts/todo-prompts.js.map +1 -0
- package/dist/src/resources/index.d.ts.map +1 -1
- package/dist/src/resources/index.js +9 -7
- package/dist/src/resources/index.js.map +1 -1
- package/dist/src/tools/adr-bootstrap-validation-tool.d.ts +47 -0
- package/dist/src/tools/adr-bootstrap-validation-tool.d.ts.map +1 -0
- package/dist/src/tools/adr-bootstrap-validation-tool.js +979 -0
- package/dist/src/tools/adr-bootstrap-validation-tool.js.map +1 -0
- package/dist/src/tools/adr-suggestion-tool.d.ts +1 -0
- package/dist/src/tools/adr-suggestion-tool.d.ts.map +1 -1
- package/dist/src/tools/adr-suggestion-tool.js +330 -32
- package/dist/src/tools/adr-suggestion-tool.js.map +1 -1
- package/dist/src/tools/content-masking-tool.d.ts +5 -0
- package/dist/src/tools/content-masking-tool.d.ts.map +1 -1
- package/dist/src/tools/content-masking-tool.js +631 -28
- package/dist/src/tools/content-masking-tool.js.map +1 -1
- package/dist/src/tools/deployment-readiness-tool.d.ts +8 -5
- package/dist/src/tools/deployment-readiness-tool.d.ts.map +1 -1
- package/dist/src/tools/deployment-readiness-tool.js +1017 -93
- package/dist/src/tools/deployment-readiness-tool.js.map +1 -1
- package/dist/src/tools/environment-analysis-tool.d.ts +4 -0
- package/dist/src/tools/environment-analysis-tool.d.ts.map +1 -1
- package/dist/src/tools/environment-analysis-tool.js +568 -24
- package/dist/src/tools/environment-analysis-tool.js.map +1 -1
- package/dist/src/tools/interactive-adr-planning-tool.d.ts.map +1 -1
- package/dist/src/tools/interactive-adr-planning-tool.js +270 -108
- package/dist/src/tools/interactive-adr-planning-tool.js.map +1 -1
- package/dist/src/tools/mcp-planning-tool.d.ts.map +1 -1
- package/dist/src/tools/mcp-planning-tool.js +316 -183
- package/dist/src/tools/mcp-planning-tool.js.map +1 -1
- package/dist/src/tools/memory-loading-tool.d.ts +60 -0
- package/dist/src/tools/memory-loading-tool.d.ts.map +1 -0
- package/dist/src/tools/memory-loading-tool.js +457 -0
- package/dist/src/tools/memory-loading-tool.js.map +1 -0
- package/dist/src/tools/research-integration-tool.d.ts +4 -1
- package/dist/src/tools/research-integration-tool.d.ts.map +1 -1
- package/dist/src/tools/research-integration-tool.js +5 -1
- package/dist/src/tools/research-integration-tool.js.map +1 -1
- package/dist/src/tools/review-existing-adrs-tool.d.ts +19 -0
- package/dist/src/tools/review-existing-adrs-tool.d.ts.map +1 -0
- package/dist/src/tools/review-existing-adrs-tool.js +1204 -0
- package/dist/src/tools/review-existing-adrs-tool.js.map +1 -0
- package/dist/src/tools/rule-generation-tool.d.ts +2 -0
- package/dist/src/tools/rule-generation-tool.d.ts.map +1 -1
- package/dist/src/tools/rule-generation-tool.js +274 -33
- package/dist/src/tools/rule-generation-tool.js.map +1 -1
- package/dist/src/tools/smart-git-push-tool-v2.d.ts +4 -0
- package/dist/src/tools/smart-git-push-tool-v2.d.ts.map +1 -1
- package/dist/src/tools/smart-git-push-tool-v2.js +423 -229
- package/dist/src/tools/smart-git-push-tool-v2.js.map +1 -1
- package/dist/src/tools/smart-git-push-tool.d.ts +3 -0
- package/dist/src/tools/smart-git-push-tool.d.ts.map +1 -1
- package/dist/src/tools/smart-git-push-tool.js +241 -235
- package/dist/src/tools/smart-git-push-tool.js.map +1 -1
- package/dist/src/tools/tool-chain-orchestrator.d.ts +2 -2
- package/dist/src/tools/tool-chain-orchestrator.d.ts.map +1 -1
- package/dist/src/tools/tool-chain-orchestrator.js +152 -93
- package/dist/src/tools/tool-chain-orchestrator.js.map +1 -1
- package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts +22 -13
- package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts.map +1 -1
- package/dist/src/tools/troubleshoot-guided-workflow-tool.js +660 -28
- package/dist/src/tools/troubleshoot-guided-workflow-tool.js.map +1 -1
- package/dist/src/types/ape-framework.d.ts +93 -0
- package/dist/src/types/ape-framework.d.ts.map +1 -1
- package/dist/src/types/ape-framework.js +10 -10
- package/dist/src/types/ape-framework.js.map +1 -1
- package/dist/src/types/enhanced-errors.d.ts +173 -0
- package/dist/src/types/enhanced-errors.d.ts.map +1 -0
- package/dist/src/types/enhanced-errors.js +668 -0
- package/dist/src/types/enhanced-errors.js.map +1 -0
- package/dist/src/types/index.d.ts +129 -3
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js +15 -0
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/knowledge-generation.d.ts +78 -0
- package/dist/src/types/knowledge-generation.d.ts.map +1 -1
- package/dist/src/types/knowledge-generation.js +10 -6
- package/dist/src/types/knowledge-generation.js.map +1 -1
- package/dist/src/types/knowledge-graph-schemas.d.ts +92 -0
- package/dist/src/types/knowledge-graph-schemas.d.ts.map +1 -1
- package/dist/src/types/knowledge-graph-schemas.js +45 -17
- package/dist/src/types/knowledge-graph-schemas.js.map +1 -1
- package/dist/src/types/memory-entities.d.ts +7209 -0
- package/dist/src/types/memory-entities.d.ts.map +1 -0
- package/dist/src/types/memory-entities.js +395 -0
- package/dist/src/types/memory-entities.js.map +1 -0
- package/dist/src/types/reflexion-framework.d.ts +44 -0
- package/dist/src/types/reflexion-framework.d.ts.map +1 -1
- package/dist/src/types/reflexion-framework.js +7 -7
- package/dist/src/types/reflexion-framework.js.map +1 -1
- package/dist/src/types/todo-json-schemas.d.ts +7 -653
- package/dist/src/types/todo-json-schemas.d.ts.map +1 -1
- package/dist/src/types/todo-json-schemas.js +6 -110
- package/dist/src/types/todo-json-schemas.js.map +1 -1
- package/dist/src/types/tool-arguments.d.ts +224 -0
- package/dist/src/types/tool-arguments.d.ts.map +1 -0
- package/dist/src/types/tool-arguments.js +6 -0
- package/dist/src/types/tool-arguments.js.map +1 -0
- package/dist/src/utils/actual-file-operations.d.ts.map +1 -1
- package/dist/src/utils/actual-file-operations.js +25 -9
- package/dist/src/utils/actual-file-operations.js.map +1 -1
- package/dist/src/utils/adr-discovery.d.ts +33 -1
- package/dist/src/utils/adr-discovery.d.ts.map +1 -1
- package/dist/src/utils/adr-discovery.js +14 -9
- package/dist/src/utils/adr-discovery.js.map +1 -1
- package/dist/src/utils/adr-suggestions.d.ts +72 -0
- package/dist/src/utils/adr-suggestions.d.ts.map +1 -1
- package/dist/src/utils/adr-suggestions.js +6 -0
- package/dist/src/utils/adr-suggestions.js.map +1 -1
- package/dist/src/utils/cache.d.ts.map +1 -1
- package/dist/src/utils/cache.js +22 -19
- package/dist/src/utils/cache.js.map +1 -1
- package/dist/src/utils/chain-of-thought-template.d.ts +13 -1
- package/dist/src/utils/chain-of-thought-template.d.ts.map +1 -1
- package/dist/src/utils/chain-of-thought-template.js +31 -22
- package/dist/src/utils/chain-of-thought-template.js.map +1 -1
- package/dist/src/utils/config.d.ts.map +1 -1
- package/dist/src/utils/config.js +1 -0
- package/dist/src/utils/config.js.map +1 -1
- package/dist/src/utils/directory-compat.js +1 -1
- package/dist/src/utils/directory-compat.js.map +1 -1
- package/dist/src/utils/enhanced-logging.d.ts +195 -0
- package/dist/src/utils/enhanced-logging.d.ts.map +1 -0
- package/dist/src/utils/enhanced-logging.js +449 -0
- package/dist/src/utils/enhanced-logging.js.map +1 -0
- package/dist/src/utils/file-system.d.ts +182 -34
- package/dist/src/utils/file-system.d.ts.map +1 -1
- package/dist/src/utils/file-system.js +648 -774
- package/dist/src/utils/file-system.js.map +1 -1
- package/dist/src/utils/gitleaks-detector.d.ts +50 -0
- package/dist/src/utils/gitleaks-detector.d.ts.map +1 -0
- package/dist/src/utils/gitleaks-detector.js +334 -0
- package/dist/src/utils/gitleaks-detector.js.map +1 -0
- package/dist/src/utils/interactive-approval.d.ts +1 -1
- package/dist/src/utils/interactive-approval.d.ts.map +1 -1
- package/dist/src/utils/interactive-approval.js +22 -17
- package/dist/src/utils/interactive-approval.js.map +1 -1
- package/dist/src/utils/json-safe.d.ts.map +1 -1
- package/dist/src/utils/json-safe.js +9 -6
- package/dist/src/utils/json-safe.js.map +1 -1
- package/dist/src/utils/knowledge-graph-manager.d.ts +37 -1
- package/dist/src/utils/knowledge-graph-manager.d.ts.map +1 -1
- package/dist/src/utils/knowledge-graph-manager.js +315 -70
- package/dist/src/utils/knowledge-graph-manager.js.map +1 -1
- package/dist/src/utils/location-filter.d.ts +35 -10
- package/dist/src/utils/location-filter.d.ts.map +1 -1
- package/dist/src/utils/location-filter.js +360 -94
- package/dist/src/utils/location-filter.js.map +1 -1
- package/dist/src/utils/mcp-response-validator.d.ts.map +1 -1
- package/dist/src/utils/mcp-response-validator.js +34 -19
- package/dist/src/utils/mcp-response-validator.js.map +1 -1
- package/dist/src/utils/memory-entity-manager.d.ts +134 -0
- package/dist/src/utils/memory-entity-manager.d.ts.map +1 -0
- package/dist/src/utils/memory-entity-manager.js +851 -0
- package/dist/src/utils/memory-entity-manager.js.map +1 -0
- package/dist/src/utils/memory-health-scoring.d.ts +125 -0
- package/dist/src/utils/memory-health-scoring.d.ts.map +1 -0
- package/dist/src/utils/memory-health-scoring.js +277 -0
- package/dist/src/utils/memory-health-scoring.js.map +1 -0
- package/dist/src/utils/memory-migration-manager.d.ts +93 -0
- package/dist/src/utils/memory-migration-manager.d.ts.map +1 -0
- package/dist/src/utils/memory-migration-manager.js +842 -0
- package/dist/src/utils/memory-migration-manager.js.map +1 -0
- package/dist/src/utils/memory-relationship-mapper.d.ts +87 -0
- package/dist/src/utils/memory-relationship-mapper.d.ts.map +1 -0
- package/dist/src/utils/memory-relationship-mapper.js +482 -0
- package/dist/src/utils/memory-relationship-mapper.js.map +1 -0
- package/dist/src/utils/memory-rollback-manager.d.ts +105 -0
- package/dist/src/utils/memory-rollback-manager.d.ts.map +1 -0
- package/dist/src/utils/memory-rollback-manager.js +575 -0
- package/dist/src/utils/memory-rollback-manager.js.map +1 -0
- package/dist/src/utils/memory-transformation.d.ts +59 -0
- package/dist/src/utils/memory-transformation.d.ts.map +1 -0
- package/dist/src/utils/memory-transformation.js +742 -0
- package/dist/src/utils/memory-transformation.js.map +1 -0
- package/dist/src/utils/output-masking.d.ts +12 -0
- package/dist/src/utils/output-masking.d.ts.map +1 -1
- package/dist/src/utils/output-masking.js +5 -0
- package/dist/src/utils/output-masking.js.map +1 -1
- package/dist/src/utils/prompt-execution.d.ts.map +1 -1
- package/dist/src/utils/prompt-execution.js +72 -51
- package/dist/src/utils/prompt-execution.js.map +1 -1
- package/dist/src/utils/release-readiness-detector.d.ts.map +1 -1
- package/dist/src/utils/release-readiness-detector.js +43 -42
- package/dist/src/utils/release-readiness-detector.js.map +1 -1
- package/dist/src/utils/research-integration.d.ts.map +1 -1
- package/dist/src/utils/research-integration.js +73 -44
- 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 +40 -14
- package/dist/src/utils/research-questions.js.map +1 -1
- package/dist/src/utils/ripgrep-wrapper.d.ts +84 -0
- package/dist/src/utils/ripgrep-wrapper.d.ts.map +1 -0
- package/dist/src/utils/ripgrep-wrapper.js +255 -0
- package/dist/src/utils/ripgrep-wrapper.js.map +1 -0
- package/dist/src/utils/rule-generation.d.ts.map +1 -1
- package/dist/src/utils/rule-generation.js +26 -15
- package/dist/src/utils/rule-generation.js.map +1 -1
- package/dist/src/utils/todo-file-watcher.d.ts +11 -23
- package/dist/src/utils/todo-file-watcher.d.ts.map +1 -1
- package/dist/src/utils/todo-file-watcher.js +18 -156
- package/dist/src/utils/todo-file-watcher.js.map +1 -1
- package/dist/src/utils/tree-sitter-analyzer.d.ts +185 -0
- package/dist/src/utils/tree-sitter-analyzer.d.ts.map +1 -0
- package/dist/src/utils/tree-sitter-analyzer.js +885 -0
- package/dist/src/utils/tree-sitter-analyzer.js.map +1 -0
- package/package.json +51 -10
- package/dist/src/tools/smart-score-tool.d.ts +0 -173
- package/dist/src/tools/smart-score-tool.d.ts.map +0 -1
- package/dist/src/tools/smart-score-tool.js +0 -681
- package/dist/src/tools/smart-score-tool.js.map +0 -1
- package/dist/src/tools/todo-management-tool-v2.d.ts +0 -368
- package/dist/src/tools/todo-management-tool-v2.d.ts.map +0 -1
- package/dist/src/tools/todo-management-tool-v2.js +0 -922
- package/dist/src/tools/todo-management-tool-v2.js.map +0 -1
- package/dist/src/utils/enhanced-sensitive-detector.d.ts +0 -61
- package/dist/src/utils/enhanced-sensitive-detector.d.ts.map +0 -1
- package/dist/src/utils/enhanced-sensitive-detector.js +0 -437
- package/dist/src/utils/enhanced-sensitive-detector.js.map +0 -1
- package/dist/src/utils/project-health-scoring.d.ts +0 -177
- package/dist/src/utils/project-health-scoring.d.ts.map +0 -1
- package/dist/src/utils/project-health-scoring.js +0 -370
- package/dist/src/utils/project-health-scoring.js.map +0 -1
- package/dist/src/utils/todo-json-manager.d.ts +0 -71
- package/dist/src/utils/todo-json-manager.d.ts.map +0 -1
- package/dist/src/utils/todo-json-manager.js +0 -396
- package/dist/src/utils/todo-json-manager.js.map +0 -1
- package/dist/src/utils/todo-markdown-converter.d.ts +0 -16
- package/dist/src/utils/todo-markdown-converter.d.ts.map +0 -1
- package/dist/src/utils/todo-markdown-converter.js +0 -362
- package/dist/src/utils/todo-markdown-converter.js.map +0 -1
- package/dist/src/utils/todo-migration.d.ts +0 -47
- package/dist/src/utils/todo-migration.d.ts.map +0 -1
- package/dist/src/utils/todo-migration.js +0 -261
- package/dist/src/utils/todo-migration.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adr-bootstrap-validation-tool.js","sourceRoot":"","sources":["../../../src/tools/adr-bootstrap-validation-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adr-suggestion-tool.d.ts","sourceRoot":"","sources":["../../../src/tools/adr-suggestion-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"adr-suggestion-tool.d.ts","sourceRoot":"","sources":["../../../src/tools/adr-suggestion-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAWvE;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,oBAAoB,GAAG,cAAc,GAAG,eAAe,CAAC;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C,GAAG,OAAO,CAAC,GAAG,CAAC,CAiwBf;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE;IAClD,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,cAAc,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC9C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,GAAG,CAAC,CAkJf;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,GAAG,CAAC,CA2Kf"}
|
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { McpAdrError } from '../types/index.js';
|
|
7
7
|
import { generateArchitecturalKnowledge } from '../utils/knowledge-generation.js';
|
|
8
|
-
import { executeWithReflexion, retrieveRelevantMemories, createToolReflexionConfig } from '../utils/reflexion.js';
|
|
8
|
+
import { executeWithReflexion, retrieveRelevantMemories, createToolReflexionConfig, } from '../utils/reflexion.js';
|
|
9
9
|
import { executeADRSuggestionPrompt, formatMCPResponse } from '../utils/prompt-execution.js';
|
|
10
|
+
import { TreeSitterAnalyzer } from '../utils/tree-sitter-analyzer.js';
|
|
11
|
+
import { findRelatedCode } from '../utils/file-system.js';
|
|
10
12
|
/**
|
|
11
13
|
* Suggest ADRs based on project analysis with advanced prompting techniques
|
|
12
14
|
* Enhanced with Knowledge Generation and Reflexion learning capabilities
|
|
@@ -15,6 +17,7 @@ export async function suggestAdrs(args) {
|
|
|
15
17
|
const { projectPath = process.cwd(), analysisType = 'comprehensive', beforeCode, afterCode, changeDescription, commitMessages, existingAdrs, enhancedMode = true, // Default to enhanced mode
|
|
16
18
|
learningEnabled = true, // Default to learning enabled
|
|
17
19
|
knowledgeEnhancement = true, // Default to knowledge enhancement
|
|
20
|
+
enableTreeSitterAnalysis = true, // Default to tree-sitter enabled
|
|
18
21
|
conversationContext, // Context from calling LLM
|
|
19
22
|
} = args;
|
|
20
23
|
try {
|
|
@@ -23,6 +26,28 @@ export async function suggestAdrs(args) {
|
|
|
23
26
|
case 'implicit_decisions': {
|
|
24
27
|
let enhancedPrompt = '';
|
|
25
28
|
let enhancementInfo = '';
|
|
29
|
+
let codeContext = '';
|
|
30
|
+
// Smart Code Linking for implicit decisions
|
|
31
|
+
if (existingAdrs && existingAdrs.length > 0) {
|
|
32
|
+
try {
|
|
33
|
+
const mockAdrContent = existingAdrs.join('\n\n');
|
|
34
|
+
const relatedCodeResult = await findRelatedCode('implicit-decisions-analysis', mockAdrContent, projectPath, {
|
|
35
|
+
useAI: true,
|
|
36
|
+
useRipgrep: true,
|
|
37
|
+
maxFiles: 10,
|
|
38
|
+
includeContent: false,
|
|
39
|
+
});
|
|
40
|
+
if (relatedCodeResult.relatedFiles.length > 0) {
|
|
41
|
+
codeContext = `\n## Smart Code Linking - Implicit Decision Context\n\nAnalyzing related code for implicit architectural decisions:\n\n${relatedCodeResult.relatedFiles
|
|
42
|
+
.slice(0, 5)
|
|
43
|
+
.map((file, index) => `${index + 1}. **${file.path}** - ${file.extension} file`)
|
|
44
|
+
.join('\n')}\n\n**Code Analysis**: Found ${relatedCodeResult.relatedFiles.length} related files that may contain implicit decisions\n**Keywords Used**: ${relatedCodeResult.keywords.join(', ')}\n**Confidence**: ${(relatedCodeResult.confidence * 100).toFixed(1)}%\n`;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.warn('[WARNING] Smart Code Linking for implicit decisions failed:', error);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
26
51
|
// Apply enhancements if enabled
|
|
27
52
|
if (enhancedMode && (knowledgeEnhancement || learningEnabled)) {
|
|
28
53
|
let knowledgeContext = '';
|
|
@@ -33,11 +58,11 @@ export async function suggestAdrs(args) {
|
|
|
33
58
|
projectPath,
|
|
34
59
|
technologies: [],
|
|
35
60
|
patterns: [],
|
|
36
|
-
projectType: 'implicit-decision-detection'
|
|
61
|
+
projectType: 'implicit-decision-detection',
|
|
37
62
|
}, {
|
|
38
63
|
domains: ['api-design', 'database-design'],
|
|
39
64
|
depth: 'basic',
|
|
40
|
-
cacheEnabled: true
|
|
65
|
+
cacheEnabled: true,
|
|
41
66
|
});
|
|
42
67
|
knowledgeContext = `\n## Knowledge Enhancement\n${knowledgeResult.prompt}\n`;
|
|
43
68
|
}
|
|
@@ -53,13 +78,14 @@ export async function suggestAdrs(args) {
|
|
|
53
78
|
const reflexionResult = await executeWithReflexion({
|
|
54
79
|
prompt: baseResult.analysisPrompt + knowledgeContext,
|
|
55
80
|
instructions: baseResult.instructions,
|
|
56
|
-
context: { projectPath, analysisType: 'implicit_decisions', existingAdrs }
|
|
81
|
+
context: { projectPath, analysisType: 'implicit_decisions', existingAdrs },
|
|
57
82
|
}, reflexionConfig);
|
|
58
83
|
enhancedPrompt = reflexionResult.prompt;
|
|
59
84
|
enhancementInfo = `
|
|
60
85
|
## Enhancement Status
|
|
61
86
|
- **Knowledge Generation**: ${knowledgeEnhancement ? '✅ Applied' : '❌ Disabled'}
|
|
62
87
|
- **Reflexion Learning**: ✅ Applied
|
|
88
|
+
- **Smart Code Linking**: ${codeContext ? '✅ Applied' : '❌ No existing ADRs'}
|
|
63
89
|
- **Learning from**: Past implicit decision detection tasks
|
|
64
90
|
|
|
65
91
|
`;
|
|
@@ -77,6 +103,7 @@ export async function suggestAdrs(args) {
|
|
|
77
103
|
## Enhancement Status
|
|
78
104
|
- **Knowledge Generation**: ${knowledgeEnhancement ? '✅ Applied' : '❌ Disabled'}
|
|
79
105
|
- **Reflexion Learning**: ❌ Disabled
|
|
106
|
+
- **Smart Code Linking**: ${codeContext ? '✅ Applied' : '❌ No existing ADRs'}
|
|
80
107
|
|
|
81
108
|
`;
|
|
82
109
|
}
|
|
@@ -87,6 +114,7 @@ export async function suggestAdrs(args) {
|
|
|
87
114
|
enhancementInfo = `
|
|
88
115
|
## Enhancement Status
|
|
89
116
|
- **Enhanced Mode**: ❌ Disabled
|
|
117
|
+
- **Smart Code Linking**: ${codeContext ? '✅ Applied' : '❌ No existing ADRs'}
|
|
90
118
|
- All advanced features are disabled for this analysis
|
|
91
119
|
|
|
92
120
|
`;
|
|
@@ -99,6 +127,7 @@ export async function suggestAdrs(args) {
|
|
|
99
127
|
text: `# ADR Suggestions: Enhanced Implicit Decisions Analysis
|
|
100
128
|
|
|
101
129
|
${enhancementInfo}
|
|
130
|
+
${codeContext}
|
|
102
131
|
|
|
103
132
|
${baseResult.instructions}
|
|
104
133
|
|
|
@@ -131,7 +160,30 @@ The enhanced AI analysis will identify implicit architectural decisions and prov
|
|
|
131
160
|
}
|
|
132
161
|
let enhancedPrompt = '';
|
|
133
162
|
let enhancementInfo = '';
|
|
163
|
+
let codeContext = '';
|
|
164
|
+
// Smart Code Linking for code changes
|
|
165
|
+
if (existingAdrs && existingAdrs.length > 0) {
|
|
166
|
+
try {
|
|
167
|
+
const mockAdrContent = `${existingAdrs.join('\n\n')}\n\nCODE CHANGE:\n${changeDescription}`;
|
|
168
|
+
const relatedCodeResult = await findRelatedCode('code-changes-analysis', mockAdrContent, projectPath || process.cwd(), {
|
|
169
|
+
useAI: true,
|
|
170
|
+
useRipgrep: true,
|
|
171
|
+
maxFiles: 8,
|
|
172
|
+
includeContent: false,
|
|
173
|
+
});
|
|
174
|
+
if (relatedCodeResult.relatedFiles.length > 0) {
|
|
175
|
+
codeContext = `\n## Smart Code Linking - Code Change Context\n\nFound related code files that may be affected by this change:\n\n${relatedCodeResult.relatedFiles
|
|
176
|
+
.slice(0, 3)
|
|
177
|
+
.map((file, index) => `${index + 1}. **${file.path}** - ${file.extension} file (${file.size} bytes)`)
|
|
178
|
+
.join('\n')}\n\n**Impact Analysis**: ${relatedCodeResult.relatedFiles.length} files may be affected by this architectural change\n**Keywords Used**: ${relatedCodeResult.keywords.join(', ')}\n**Confidence**: ${(relatedCodeResult.confidence * 100).toFixed(1)}%\n`;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
console.warn('[WARNING] Smart Code Linking for code changes failed:', error);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
134
185
|
// Apply enhancements if enabled
|
|
186
|
+
let treeSitterAnalysis = '';
|
|
135
187
|
if (enhancedMode && (knowledgeEnhancement || learningEnabled)) {
|
|
136
188
|
let knowledgeContext = '';
|
|
137
189
|
// Generate domain knowledge for code change analysis
|
|
@@ -141,11 +193,11 @@ The enhanced AI analysis will identify implicit architectural decisions and prov
|
|
|
141
193
|
projectPath: projectPath || process.cwd(),
|
|
142
194
|
technologies: [],
|
|
143
195
|
patterns: [],
|
|
144
|
-
projectType: 'code-change-analysis'
|
|
196
|
+
projectType: 'code-change-analysis',
|
|
145
197
|
}, {
|
|
146
198
|
domains: ['api-design', 'performance-optimization'],
|
|
147
199
|
depth: 'basic',
|
|
148
|
-
cacheEnabled: true
|
|
200
|
+
cacheEnabled: true,
|
|
149
201
|
});
|
|
150
202
|
knowledgeContext = `\n## Knowledge Enhancement\n${knowledgeResult.prompt}\n`;
|
|
151
203
|
}
|
|
@@ -153,11 +205,65 @@ The enhanced AI analysis will identify implicit architectural decisions and prov
|
|
|
153
205
|
console.error('[WARNING] Knowledge generation failed:', error);
|
|
154
206
|
}
|
|
155
207
|
}
|
|
208
|
+
// Perform tree-sitter analysis for enhanced code change understanding
|
|
209
|
+
if (enableTreeSitterAnalysis) {
|
|
210
|
+
try {
|
|
211
|
+
const codeChangeAnalysis = await performTreeSitterCodeChangeAnalysis(beforeCode, afterCode, changeDescription);
|
|
212
|
+
if (codeChangeAnalysis.architecturalChanges.length > 0 ||
|
|
213
|
+
codeChangeAnalysis.securityImpacts.length > 0) {
|
|
214
|
+
treeSitterAnalysis = `
|
|
215
|
+
|
|
216
|
+
## 🔍 Tree-sitter Code Change Analysis
|
|
217
|
+
|
|
218
|
+
**Analysis Results:**
|
|
219
|
+
- **Architectural Changes**: ${codeChangeAnalysis.architecturalChanges.length}
|
|
220
|
+
- **Security Impacts**: ${codeChangeAnalysis.securityImpacts.length}
|
|
221
|
+
- **Complexity Change**: ${codeChangeAnalysis.complexityDelta > 0 ? '+' : ''}${codeChangeAnalysis.complexityDelta}
|
|
222
|
+
- **New Dependencies**: ${codeChangeAnalysis.newDependencies.length}
|
|
223
|
+
|
|
224
|
+
${codeChangeAnalysis.architecturalChanges.length > 0
|
|
225
|
+
? `
|
|
226
|
+
### 🏗️ Architectural Changes Detected
|
|
227
|
+
${codeChangeAnalysis.architecturalChanges.map(change => `- **${change.type}**: ${change.description} (impact: ${change.impact})`).join('\n')}
|
|
228
|
+
`
|
|
229
|
+
: ''}
|
|
230
|
+
|
|
231
|
+
${codeChangeAnalysis.securityImpacts.length > 0
|
|
232
|
+
? `
|
|
233
|
+
### 🔒 Security Impact Analysis
|
|
234
|
+
${codeChangeAnalysis.securityImpacts.map(impact => `- **${impact.type}**: ${impact.description} (severity: ${impact.severity})`).join('\n')}
|
|
235
|
+
`
|
|
236
|
+
: ''}
|
|
237
|
+
|
|
238
|
+
${codeChangeAnalysis.newDependencies.length > 0
|
|
239
|
+
? `
|
|
240
|
+
### 📦 New Dependencies
|
|
241
|
+
${codeChangeAnalysis.newDependencies.map(dep => `- **${dep.name}**: ${dep.reason} (risk: ${dep.riskLevel})`).join('\n')}
|
|
242
|
+
`
|
|
243
|
+
: ''}
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
`;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
catch (error) {
|
|
250
|
+
console.warn('Tree-sitter code change analysis failed:', error);
|
|
251
|
+
treeSitterAnalysis = `
|
|
252
|
+
|
|
253
|
+
## 🔍 Tree-sitter Code Change Analysis
|
|
254
|
+
|
|
255
|
+
**Status**: ⚠️ Analysis failed - continuing with standard analysis
|
|
256
|
+
**Error**: ${error instanceof Error ? error.message : 'Unknown error'}
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
`;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
156
262
|
// Apply learning if enabled
|
|
157
263
|
if (learningEnabled) {
|
|
158
264
|
try {
|
|
159
265
|
const reflexionConfig = createToolReflexionConfig('suggest_adrs', {
|
|
160
|
-
evaluationCriteria: ['task-success', 'accuracy', 'relevance']
|
|
266
|
+
evaluationCriteria: ['task-success', 'accuracy', 'relevance'],
|
|
161
267
|
});
|
|
162
268
|
const baseResult = await analyzeCodeChanges(beforeCode, afterCode, changeDescription, commitMessages);
|
|
163
269
|
const reflexionResult = await executeWithReflexion({
|
|
@@ -166,14 +272,15 @@ The enhanced AI analysis will identify implicit architectural decisions and prov
|
|
|
166
272
|
context: {
|
|
167
273
|
analysisType: 'code_changes',
|
|
168
274
|
changeDescription,
|
|
169
|
-
hasCommitMessages: !!commitMessages?.length
|
|
170
|
-
}
|
|
275
|
+
hasCommitMessages: !!commitMessages?.length,
|
|
276
|
+
},
|
|
171
277
|
}, reflexionConfig);
|
|
172
278
|
enhancedPrompt = reflexionResult.prompt;
|
|
173
279
|
enhancementInfo = `
|
|
174
280
|
## Enhancement Status
|
|
175
281
|
- **Knowledge Generation**: ${knowledgeEnhancement ? '✅ Applied' : '❌ Disabled'}
|
|
176
282
|
- **Reflexion Learning**: ✅ Applied
|
|
283
|
+
- **Smart Code Linking**: ${codeContext ? '✅ Applied' : '❌ No existing ADRs'}
|
|
177
284
|
- **Learning from**: Past code change analysis tasks
|
|
178
285
|
|
|
179
286
|
`;
|
|
@@ -191,6 +298,7 @@ The enhanced AI analysis will identify implicit architectural decisions and prov
|
|
|
191
298
|
## Enhancement Status
|
|
192
299
|
- **Knowledge Generation**: ${knowledgeEnhancement ? '✅ Applied' : '❌ Disabled'}
|
|
193
300
|
- **Reflexion Learning**: ❌ Disabled
|
|
301
|
+
- **Smart Code Linking**: ${codeContext ? '✅ Applied' : '❌ No existing ADRs'}
|
|
194
302
|
|
|
195
303
|
`;
|
|
196
304
|
}
|
|
@@ -201,6 +309,7 @@ The enhanced AI analysis will identify implicit architectural decisions and prov
|
|
|
201
309
|
enhancementInfo = `
|
|
202
310
|
## Enhancement Status
|
|
203
311
|
- **Enhanced Mode**: ❌ Disabled
|
|
312
|
+
- **Smart Code Linking**: ${codeContext ? '✅ Applied' : '❌ No existing ADRs'}
|
|
204
313
|
- All advanced features are disabled for this analysis
|
|
205
314
|
|
|
206
315
|
`;
|
|
@@ -213,7 +322,8 @@ The enhanced AI analysis will identify implicit architectural decisions and prov
|
|
|
213
322
|
text: `# ADR Suggestions: Enhanced Code Change Analysis
|
|
214
323
|
|
|
215
324
|
${enhancementInfo}
|
|
216
|
-
|
|
325
|
+
${codeContext}
|
|
326
|
+
${treeSitterAnalysis}
|
|
217
327
|
${baseResult.instructions}
|
|
218
328
|
|
|
219
329
|
## Enhanced AI Analysis Prompt
|
|
@@ -243,6 +353,7 @@ The enhanced AI analysis will provide:
|
|
|
243
353
|
let enhancedPrompt = '';
|
|
244
354
|
let knowledgeContext = '';
|
|
245
355
|
let reflexionContext = '';
|
|
356
|
+
let codeContext = '';
|
|
246
357
|
// Step 1: Generate domain-specific knowledge if enabled
|
|
247
358
|
if (knowledgeEnhancement) {
|
|
248
359
|
try {
|
|
@@ -251,11 +362,11 @@ The enhanced AI analysis will provide:
|
|
|
251
362
|
technologies: [], // Will be auto-detected from project
|
|
252
363
|
patterns: [],
|
|
253
364
|
projectType: 'software-architecture',
|
|
254
|
-
existingAdrs: existingAdrs || []
|
|
365
|
+
existingAdrs: existingAdrs || [],
|
|
255
366
|
}, {
|
|
256
367
|
domains: ['api-design', 'database-design', 'microservices'],
|
|
257
368
|
depth: 'intermediate',
|
|
258
|
-
cacheEnabled: true
|
|
369
|
+
cacheEnabled: true,
|
|
259
370
|
});
|
|
260
371
|
knowledgeContext = `
|
|
261
372
|
## Domain-Specific Knowledge Enhancement
|
|
@@ -272,6 +383,72 @@ ${knowledgeResult.prompt}
|
|
|
272
383
|
knowledgeContext = '<!-- Knowledge generation unavailable -->\n';
|
|
273
384
|
}
|
|
274
385
|
}
|
|
386
|
+
// Step 1a: Smart Code Linking - Analyze existing ADRs for related code
|
|
387
|
+
if (existingAdrs && existingAdrs.length > 0) {
|
|
388
|
+
try {
|
|
389
|
+
// For comprehensive analysis, we'll simulate ADR content analysis
|
|
390
|
+
// In a real scenario, this would read actual ADR files
|
|
391
|
+
const mockAdrContent = existingAdrs.join('\n\n');
|
|
392
|
+
const relatedCodeResult = await findRelatedCode('comprehensive-analysis', mockAdrContent, projectPath, {
|
|
393
|
+
useAI: true,
|
|
394
|
+
useRipgrep: true,
|
|
395
|
+
maxFiles: 15,
|
|
396
|
+
includeContent: false,
|
|
397
|
+
});
|
|
398
|
+
if (relatedCodeResult.relatedFiles.length > 0) {
|
|
399
|
+
codeContext = `
|
|
400
|
+
## Smart Code Linking Analysis
|
|
401
|
+
|
|
402
|
+
Found ${relatedCodeResult.relatedFiles.length} code files related to existing ADRs:
|
|
403
|
+
|
|
404
|
+
### Related Code Files
|
|
405
|
+
${relatedCodeResult.relatedFiles
|
|
406
|
+
.map((file, index) => `
|
|
407
|
+
${index + 1}. **${file.path}** (${file.extension} file)
|
|
408
|
+
- Size: ${file.size} bytes
|
|
409
|
+
- Directory: ${file.directory}
|
|
410
|
+
`)
|
|
411
|
+
.join('')}
|
|
412
|
+
|
|
413
|
+
### Search Information
|
|
414
|
+
- **Keywords Used**: ${relatedCodeResult.keywords.join(', ')}
|
|
415
|
+
- **Search Patterns**: ${relatedCodeResult.searchPatterns.join(', ')}
|
|
416
|
+
- **Confidence**: ${(relatedCodeResult.confidence * 100).toFixed(1)}%
|
|
417
|
+
|
|
418
|
+
**Analysis Summary**: ${relatedCodeResult.relatedFiles.length} related files found
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
`;
|
|
422
|
+
}
|
|
423
|
+
else {
|
|
424
|
+
codeContext = `
|
|
425
|
+
## Smart Code Linking Analysis
|
|
426
|
+
|
|
427
|
+
**Status**: No related code files found for existing ADRs
|
|
428
|
+
**Keywords Searched**: ${relatedCodeResult.keywords.join(', ')}
|
|
429
|
+
**Patterns Used**: ${relatedCodeResult.searchPatterns.join(', ')}
|
|
430
|
+
|
|
431
|
+
This suggests either:
|
|
432
|
+
- ADRs are high-level architectural decisions not yet implemented
|
|
433
|
+
- Code patterns don't match ADR terminology
|
|
434
|
+
- Additional implementation work may be needed
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
`;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
catch (error) {
|
|
441
|
+
console.warn('[WARNING] Smart Code Linking failed:', error);
|
|
442
|
+
codeContext = `
|
|
443
|
+
## Smart Code Linking Analysis
|
|
444
|
+
|
|
445
|
+
**Status**: ⚠️ Analysis failed - continuing without code context
|
|
446
|
+
**Error**: ${error instanceof Error ? error.message : 'Unknown error'}
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
`;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
275
452
|
// Step 2: Apply Reflexion learning if enabled
|
|
276
453
|
if (learningEnabled) {
|
|
277
454
|
try {
|
|
@@ -300,7 +477,7 @@ ${memoryResult.prompt}
|
|
|
300
477
|
const reflexionConfig = createToolReflexionConfig('suggest_adrs', {
|
|
301
478
|
reflectionDepth: 'detailed',
|
|
302
479
|
evaluationCriteria: ['task-success', 'relevance', 'clarity'],
|
|
303
|
-
learningRate: 0.7
|
|
480
|
+
learningRate: 0.7,
|
|
304
481
|
});
|
|
305
482
|
const reflexionResult = await executeWithReflexion({
|
|
306
483
|
prompt: implicitResult.analysisPrompt,
|
|
@@ -310,8 +487,8 @@ ${memoryResult.prompt}
|
|
|
310
487
|
analysisType: 'comprehensive',
|
|
311
488
|
existingAdrs,
|
|
312
489
|
knowledgeEnhanced: knowledgeEnhancement,
|
|
313
|
-
learningEnabled: true
|
|
314
|
-
}
|
|
490
|
+
learningEnabled: true,
|
|
491
|
+
},
|
|
315
492
|
}, reflexionConfig);
|
|
316
493
|
enhancedPrompt = `
|
|
317
494
|
## Enhanced Analysis with Learning
|
|
@@ -344,12 +521,15 @@ ${reflexionResult.prompt}
|
|
|
344
521
|
- **Knowledge Generation**: ${knowledgeEnhancement ? '✅ Enabled' : '❌ Disabled'}
|
|
345
522
|
- **Reflexion Learning**: ${learningEnabled ? '✅ Enabled' : '❌ Disabled'}
|
|
346
523
|
- **Enhanced Mode**: ${enhancedMode ? '✅ Enabled' : '❌ Disabled'}
|
|
524
|
+
- **Smart Code Linking**: ${existingAdrs && existingAdrs.length > 0 ? '✅ Enabled' : '❌ No existing ADRs'}
|
|
347
525
|
|
|
348
526
|
## Project Analysis
|
|
349
527
|
- **Project Path**: ${projectPath}
|
|
350
528
|
- **Existing ADRs**: ${existingAdrs?.length || 0} ADRs provided
|
|
351
529
|
- **Analysis Type**: Comprehensive (AI-driven with enhancements)
|
|
352
530
|
|
|
531
|
+
${codeContext}
|
|
532
|
+
|
|
353
533
|
${knowledgeContext}
|
|
354
534
|
|
|
355
535
|
${reflexionContext}
|
|
@@ -401,12 +581,15 @@ This enhanced analysis uses advanced prompting techniques to provide superior AD
|
|
|
401
581
|
- **Knowledge Generation**: ${knowledgeEnhancement ? '✅ Enabled' : '❌ Disabled'}
|
|
402
582
|
- **Reflexion Learning**: ${learningEnabled ? '✅ Enabled' : '❌ Disabled'}
|
|
403
583
|
- **Enhanced Mode**: ${enhancedMode ? '✅ Enabled' : '❌ Disabled'}
|
|
584
|
+
- **Smart Code Linking**: ${existingAdrs && existingAdrs.length > 0 ? '✅ Enabled' : '❌ No existing ADRs'}
|
|
404
585
|
|
|
405
586
|
## Project Analysis
|
|
406
587
|
- **Project Path**: ${projectPath}
|
|
407
588
|
- **Existing ADRs**: ${existingAdrs?.length || 0} ADRs provided
|
|
408
589
|
- **Analysis Type**: Comprehensive (AI-driven with enhancements)
|
|
409
590
|
|
|
591
|
+
${codeContext}
|
|
592
|
+
|
|
410
593
|
${knowledgeContext}
|
|
411
594
|
|
|
412
595
|
${reflexionContext}
|
|
@@ -534,7 +717,7 @@ To save this ADR to your project:
|
|
|
534
717
|
}
|
|
535
718
|
else {
|
|
536
719
|
// Fallback to prompt-only mode
|
|
537
|
-
const { ensureDirectory, writeFile } = await import('../utils/file-system.js');
|
|
720
|
+
const { ensureDirectoryCompat: ensureDirectory, writeFileCompat: writeFile } = await import('../utils/file-system.js');
|
|
538
721
|
const ensureDirPrompt = await ensureDirectory(adrDirectory);
|
|
539
722
|
const writeFilePrompt = await writeFile(fullPath, '[ADR_CONTENT_PLACEHOLDER]');
|
|
540
723
|
return {
|
|
@@ -599,15 +782,13 @@ export async function discoverExistingAdrs(args) {
|
|
|
599
782
|
try {
|
|
600
783
|
// INITIALIZE COMPLETE CACHE INFRASTRUCTURE (since this is typically the first command)
|
|
601
784
|
console.log('🚀 Initializing complete cache infrastructure...');
|
|
602
|
-
// 1.
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
await todoManager.loadTodoData(); // Creates cache dir and todo-data.json
|
|
785
|
+
// 1. TodoJsonManager removed - use mcp-shrimp-task-manager for task management
|
|
786
|
+
console.warn('⚠️ TodoJsonManager is deprecated and was removed in memory-centric transformation');
|
|
787
|
+
// Skip todo initialization - TodoJsonManager removed
|
|
606
788
|
console.log('✅ Initialized todo-data.json and cache directory');
|
|
607
|
-
// 2.
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
await healthScoring.getProjectHealthScore(); // Creates project-health-scores.json
|
|
789
|
+
// 2. ProjectHealthScoring removed - use relationship-based importance instead
|
|
790
|
+
console.warn('⚠️ ProjectHealthScoring is deprecated and was removed in memory-centric transformation');
|
|
791
|
+
// Skip health scoring initialization - ProjectHealthScoring removed
|
|
611
792
|
console.log('✅ Initialized project-health-scores.json');
|
|
612
793
|
// 3. Initialize KnowledgeGraphManager (creates knowledge-graph-snapshots.json and todo-sync-state.json)
|
|
613
794
|
// Set PROJECT_PATH temporarily for proper initialization
|
|
@@ -651,8 +832,9 @@ export async function discoverExistingAdrs(args) {
|
|
|
651
832
|
|
|
652
833
|
## Discovered ADRs
|
|
653
834
|
|
|
654
|
-
${discoveryResult.adrs.length > 0
|
|
655
|
-
discoveryResult.adrs
|
|
835
|
+
${discoveryResult.adrs.length > 0
|
|
836
|
+
? discoveryResult.adrs
|
|
837
|
+
.map(adr => `
|
|
656
838
|
### ${adr.title}
|
|
657
839
|
- **File**: ${adr.filename}
|
|
658
840
|
- **Status**: ${adr.status}
|
|
@@ -661,14 +843,17 @@ ${discoveryResult.adrs.length > 0 ?
|
|
|
661
843
|
${adr.metadata?.number ? `- **Number**: ${adr.metadata.number}` : ''}
|
|
662
844
|
${adr.metadata?.category ? `- **Category**: ${adr.metadata.category}` : ''}
|
|
663
845
|
${adr.metadata?.tags?.length ? `- **Tags**: ${adr.metadata.tags.join(', ')}` : ''}
|
|
664
|
-
${includeContent && adr.content
|
|
846
|
+
${includeContent && adr.content
|
|
847
|
+
? `
|
|
665
848
|
|
|
666
849
|
#### Content Preview
|
|
667
850
|
\`\`\`markdown
|
|
668
851
|
${adr.content.slice(0, 500)}${adr.content.length > 500 ? '...' : ''}
|
|
669
852
|
\`\`\`
|
|
670
|
-
`
|
|
671
|
-
|
|
853
|
+
`
|
|
854
|
+
: ''}
|
|
855
|
+
`)
|
|
856
|
+
.join('\n')
|
|
672
857
|
: 'No ADRs found in the specified directory.'}
|
|
673
858
|
|
|
674
859
|
## Summary Statistics
|
|
@@ -726,13 +911,126 @@ For programmatic use, the raw discovery data is:
|
|
|
726
911
|
\`\`\`json
|
|
727
912
|
${JSON.stringify(discoveryResult, null, 2)}
|
|
728
913
|
\`\`\`
|
|
729
|
-
|
|
730
|
-
}
|
|
731
|
-
]
|
|
914
|
+
`,
|
|
915
|
+
},
|
|
916
|
+
],
|
|
732
917
|
};
|
|
733
918
|
}
|
|
734
919
|
catch (error) {
|
|
735
920
|
throw new McpAdrError(`Failed to discover ADRs: ${error instanceof Error ? error.message : String(error)}`, 'DISCOVERY_ERROR');
|
|
736
921
|
}
|
|
737
922
|
}
|
|
923
|
+
/**
|
|
924
|
+
* Perform tree-sitter analysis for code change architectural impact
|
|
925
|
+
*/
|
|
926
|
+
async function performTreeSitterCodeChangeAnalysis(beforeCode, afterCode, _changeDescription) {
|
|
927
|
+
const analyzer = new TreeSitterAnalyzer();
|
|
928
|
+
const { writeFileSync, unlinkSync } = await import('fs');
|
|
929
|
+
const { join } = await import('path');
|
|
930
|
+
const { tmpdir } = await import('os');
|
|
931
|
+
const results = {
|
|
932
|
+
architecturalChanges: [],
|
|
933
|
+
securityImpacts: [],
|
|
934
|
+
complexityDelta: 0,
|
|
935
|
+
newDependencies: [],
|
|
936
|
+
};
|
|
937
|
+
try {
|
|
938
|
+
// Determine file extension based on content patterns
|
|
939
|
+
let extension = '.txt';
|
|
940
|
+
if (beforeCode.includes('import ') ||
|
|
941
|
+
beforeCode.includes('export ') ||
|
|
942
|
+
beforeCode.includes('function ')) {
|
|
943
|
+
extension =
|
|
944
|
+
beforeCode.includes('interface ') || beforeCode.includes(': string') ? '.ts' : '.js';
|
|
945
|
+
}
|
|
946
|
+
else if (beforeCode.includes('def ') || beforeCode.includes('import ')) {
|
|
947
|
+
extension = '.py';
|
|
948
|
+
}
|
|
949
|
+
// Create temporary files for analysis
|
|
950
|
+
const beforeFile = join(tmpdir(), `before-analysis-${Date.now()}${extension}`);
|
|
951
|
+
const afterFile = join(tmpdir(), `after-analysis-${Date.now()}${extension}`);
|
|
952
|
+
writeFileSync(beforeFile, beforeCode);
|
|
953
|
+
writeFileSync(afterFile, afterCode);
|
|
954
|
+
try {
|
|
955
|
+
// Analyze both versions
|
|
956
|
+
const beforeAnalysis = await analyzer.analyzeFile(beforeFile);
|
|
957
|
+
const afterAnalysis = await analyzer.analyzeFile(afterFile);
|
|
958
|
+
// Compare complexity
|
|
959
|
+
const beforeComplexity = beforeAnalysis.functions?.reduce((sum, func) => sum + func.complexity, 0) || 0;
|
|
960
|
+
const afterComplexity = afterAnalysis.functions?.reduce((sum, func) => sum + func.complexity, 0) || 0;
|
|
961
|
+
results.complexityDelta = afterComplexity - beforeComplexity;
|
|
962
|
+
// Detect new dependencies
|
|
963
|
+
const beforeImports = new Set(beforeAnalysis.imports?.map(imp => imp.module) || []);
|
|
964
|
+
const afterImports = afterAnalysis.imports?.map(imp => imp.module) || [];
|
|
965
|
+
for (const imp of afterImports) {
|
|
966
|
+
if (!beforeImports.has(imp)) {
|
|
967
|
+
const riskLevel = imp.includes('eval') || imp.includes('exec') || imp.includes('shell')
|
|
968
|
+
? 'high'
|
|
969
|
+
: imp.includes('crypto') || imp.includes('auth')
|
|
970
|
+
? 'medium'
|
|
971
|
+
: 'low';
|
|
972
|
+
results.newDependencies.push({
|
|
973
|
+
name: imp,
|
|
974
|
+
reason: `New dependency introduced in code change`,
|
|
975
|
+
riskLevel,
|
|
976
|
+
});
|
|
977
|
+
}
|
|
978
|
+
}
|
|
979
|
+
// Detect architectural changes
|
|
980
|
+
const beforeFunctions = beforeAnalysis.functions?.map(f => f.name) || [];
|
|
981
|
+
const afterFunctions = afterAnalysis.functions?.map(f => f.name) || [];
|
|
982
|
+
// New functions
|
|
983
|
+
for (const funcName of afterFunctions) {
|
|
984
|
+
if (!beforeFunctions.includes(funcName)) {
|
|
985
|
+
const funcType = funcName.toLowerCase().includes('controller')
|
|
986
|
+
? 'controller'
|
|
987
|
+
: funcName.toLowerCase().includes('service')
|
|
988
|
+
? 'service'
|
|
989
|
+
: funcName.toLowerCase().includes('repository')
|
|
990
|
+
? 'repository'
|
|
991
|
+
: 'function';
|
|
992
|
+
results.architecturalChanges.push({
|
|
993
|
+
type: 'new_component',
|
|
994
|
+
description: `New ${funcType}: ${funcName}`,
|
|
995
|
+
impact: funcType === 'controller' ? 'high' : funcType === 'service' ? 'medium' : 'low',
|
|
996
|
+
});
|
|
997
|
+
}
|
|
998
|
+
}
|
|
999
|
+
// Security impact analysis
|
|
1000
|
+
const beforeSecrets = beforeAnalysis.secrets?.length || 0;
|
|
1001
|
+
const afterSecrets = afterAnalysis.secrets?.length || 0;
|
|
1002
|
+
if (afterSecrets > beforeSecrets) {
|
|
1003
|
+
results.securityImpacts.push({
|
|
1004
|
+
type: 'secret_introduction',
|
|
1005
|
+
description: `${afterSecrets - beforeSecrets} new secrets detected in code`,
|
|
1006
|
+
severity: 'high',
|
|
1007
|
+
});
|
|
1008
|
+
}
|
|
1009
|
+
// Check for security issues
|
|
1010
|
+
if (afterAnalysis.securityIssues && afterAnalysis.securityIssues.length > 0) {
|
|
1011
|
+
for (const issue of afterAnalysis.securityIssues) {
|
|
1012
|
+
results.securityImpacts.push({
|
|
1013
|
+
type: issue.type,
|
|
1014
|
+
description: issue.message,
|
|
1015
|
+
severity: issue.severity,
|
|
1016
|
+
});
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
finally {
|
|
1021
|
+
// Clean up temp files
|
|
1022
|
+
try {
|
|
1023
|
+
unlinkSync(beforeFile);
|
|
1024
|
+
unlinkSync(afterFile);
|
|
1025
|
+
}
|
|
1026
|
+
catch {
|
|
1027
|
+
// Ignore cleanup errors
|
|
1028
|
+
}
|
|
1029
|
+
}
|
|
1030
|
+
}
|
|
1031
|
+
catch (error) {
|
|
1032
|
+
console.warn('Tree-sitter code change analysis failed:', error);
|
|
1033
|
+
}
|
|
1034
|
+
return results;
|
|
1035
|
+
}
|
|
738
1036
|
//# sourceMappingURL=adr-suggestion-tool.js.map
|