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
package/dist/src/index.js
CHANGED
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
10
10
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
11
|
-
import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
11
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
12
12
|
import { readFileSync } from 'fs';
|
|
13
13
|
import { join } from 'path';
|
|
14
14
|
import { getCurrentDirCompat } from './utils/directory-compat.js';
|
|
15
15
|
import { McpAdrError } from './types/index.js';
|
|
16
16
|
import { CONVERSATION_CONTEXT_SCHEMA } from './types/conversation-context.js';
|
|
17
|
-
import { maskMcpResponse, createMaskingConfig } from './utils/output-masking.js';
|
|
18
|
-
import { loadConfig, validateProjectPath, createLogger, printConfigSummary } from './utils/config.js';
|
|
17
|
+
import { maskMcpResponse, createMaskingConfig, } from './utils/output-masking.js';
|
|
18
|
+
import { loadConfig, validateProjectPath, createLogger, printConfigSummary, } from './utils/config.js';
|
|
19
19
|
import { KnowledgeGraphManager } from './utils/knowledge-graph-manager.js';
|
|
20
20
|
/**
|
|
21
21
|
* Get version from package.json
|
|
@@ -29,7 +29,7 @@ function getPackageVersion() {
|
|
|
29
29
|
join(currentDir, 'package.json'),
|
|
30
30
|
join(currentDir, '..', 'package.json'),
|
|
31
31
|
join(currentDir, '..', '..', 'package.json'),
|
|
32
|
-
join(process.cwd(), 'package.json')
|
|
32
|
+
join(process.cwd(), 'package.json'),
|
|
33
33
|
];
|
|
34
34
|
for (const packageJsonPath of possiblePaths) {
|
|
35
35
|
try {
|
|
@@ -61,7 +61,7 @@ function getPackageVersion() {
|
|
|
61
61
|
const SERVER_INFO = {
|
|
62
62
|
name: 'mcp-adr-analysis-server',
|
|
63
63
|
version: getPackageVersion(),
|
|
64
|
-
description: 'MCP server for analyzing Architectural Decision Records and project architecture'
|
|
64
|
+
description: 'MCP server for analyzing Architectural Decision Records and project architecture',
|
|
65
65
|
};
|
|
66
66
|
/**
|
|
67
67
|
* Main server class
|
|
@@ -84,8 +84,8 @@ export class McpAdrAnalysisServer {
|
|
|
84
84
|
capabilities: {
|
|
85
85
|
tools: {},
|
|
86
86
|
resources: {},
|
|
87
|
-
prompts: {}
|
|
88
|
-
}
|
|
87
|
+
prompts: {},
|
|
88
|
+
},
|
|
89
89
|
});
|
|
90
90
|
this.maskingConfig = createMaskingConfig();
|
|
91
91
|
this.setupHandlers();
|
|
@@ -99,7 +99,8 @@ export class McpAdrAnalysisServer {
|
|
|
99
99
|
this.logger.info(`Project path validated: ${this.config.projectPath}`);
|
|
100
100
|
}
|
|
101
101
|
catch (error) {
|
|
102
|
-
|
|
102
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
103
|
+
this.logger.error(`Configuration validation failed: ${errorMessage}`);
|
|
103
104
|
throw error;
|
|
104
105
|
}
|
|
105
106
|
}
|
|
@@ -126,59 +127,59 @@ export class McpAdrAnalysisServer {
|
|
|
126
127
|
properties: {
|
|
127
128
|
projectPath: {
|
|
128
129
|
type: 'string',
|
|
129
|
-
description: 'Path to the project directory to analyze (optional, uses configured PROJECT_PATH if not provided)'
|
|
130
|
+
description: 'Path to the project directory to analyze (optional, uses configured PROJECT_PATH if not provided)',
|
|
130
131
|
},
|
|
131
132
|
includePatterns: {
|
|
132
133
|
type: 'array',
|
|
133
134
|
items: { type: 'string' },
|
|
134
|
-
description: 'File patterns to include in analysis'
|
|
135
|
+
description: 'File patterns to include in analysis',
|
|
135
136
|
},
|
|
136
137
|
enhancedMode: {
|
|
137
138
|
type: 'boolean',
|
|
138
139
|
description: 'Enable advanced prompting features (Knowledge Generation + Reflexion)',
|
|
139
|
-
default: true
|
|
140
|
+
default: true,
|
|
140
141
|
},
|
|
141
142
|
knowledgeEnhancement: {
|
|
142
143
|
type: 'boolean',
|
|
143
144
|
description: 'Enable Knowledge Generation for technology-specific insights',
|
|
144
|
-
default: true
|
|
145
|
+
default: true,
|
|
145
146
|
},
|
|
146
147
|
learningEnabled: {
|
|
147
148
|
type: 'boolean',
|
|
148
149
|
description: 'Enable Reflexion learning from past analysis outcomes',
|
|
149
|
-
default: true
|
|
150
|
+
default: true,
|
|
150
151
|
},
|
|
151
152
|
technologyFocus: {
|
|
152
153
|
type: 'array',
|
|
153
154
|
items: { type: 'string' },
|
|
154
|
-
description: 'Specific technologies to focus analysis on (auto-detected if not provided)'
|
|
155
|
+
description: 'Specific technologies to focus analysis on (auto-detected if not provided)',
|
|
155
156
|
},
|
|
156
157
|
analysisDepth: {
|
|
157
158
|
type: 'string',
|
|
158
159
|
enum: ['basic', 'detailed', 'comprehensive'],
|
|
159
160
|
description: 'Depth of ecosystem analysis',
|
|
160
|
-
default: 'comprehensive'
|
|
161
|
+
default: 'comprehensive',
|
|
161
162
|
},
|
|
162
163
|
includeEnvironment: {
|
|
163
164
|
type: 'boolean',
|
|
164
165
|
description: 'Automatically include comprehensive environment analysis (default: true)',
|
|
165
|
-
default: true
|
|
166
|
+
default: true,
|
|
166
167
|
},
|
|
167
168
|
recursiveDepth: {
|
|
168
169
|
type: 'string',
|
|
169
170
|
description: 'Depth of recursive project analysis',
|
|
170
171
|
enum: ['shallow', 'moderate', 'deep', 'comprehensive'],
|
|
171
|
-
default: 'comprehensive'
|
|
172
|
+
default: 'comprehensive',
|
|
172
173
|
},
|
|
173
174
|
analysisScope: {
|
|
174
175
|
type: 'array',
|
|
175
176
|
items: { type: 'string' },
|
|
176
|
-
description: 'Specific analysis areas to focus on (e.g., ["security", "performance", "architecture", "dependencies"])'
|
|
177
|
+
description: 'Specific analysis areas to focus on (e.g., ["security", "performance", "architecture", "dependencies"])',
|
|
177
178
|
},
|
|
178
|
-
conversationContext: CONVERSATION_CONTEXT_SCHEMA
|
|
179
|
+
conversationContext: CONVERSATION_CONTEXT_SCHEMA,
|
|
179
180
|
},
|
|
180
|
-
required: []
|
|
181
|
-
}
|
|
181
|
+
required: [],
|
|
182
|
+
},
|
|
182
183
|
},
|
|
183
184
|
{
|
|
184
185
|
name: 'get_architectural_context',
|
|
@@ -188,16 +189,16 @@ export class McpAdrAnalysisServer {
|
|
|
188
189
|
properties: {
|
|
189
190
|
filePath: {
|
|
190
191
|
type: 'string',
|
|
191
|
-
description: 'Specific file path to analyze (optional, analyzes entire project if not provided)'
|
|
192
|
+
description: 'Specific file path to analyze (optional, analyzes entire project if not provided)',
|
|
192
193
|
},
|
|
193
194
|
includeCompliance: {
|
|
194
195
|
type: 'boolean',
|
|
195
196
|
description: 'Include compliance checks in the analysis',
|
|
196
|
-
default: true
|
|
197
|
+
default: true,
|
|
197
198
|
},
|
|
198
|
-
conversationContext: CONVERSATION_CONTEXT_SCHEMA
|
|
199
|
-
}
|
|
200
|
-
}
|
|
199
|
+
conversationContext: CONVERSATION_CONTEXT_SCHEMA,
|
|
200
|
+
},
|
|
201
|
+
},
|
|
201
202
|
},
|
|
202
203
|
{
|
|
203
204
|
name: 'generate_adrs_from_prd',
|
|
@@ -207,37 +208,44 @@ export class McpAdrAnalysisServer {
|
|
|
207
208
|
properties: {
|
|
208
209
|
prdPath: {
|
|
209
210
|
type: 'string',
|
|
210
|
-
description: 'Path to the PRD.md file'
|
|
211
|
+
description: 'Path to the PRD.md file',
|
|
211
212
|
},
|
|
212
213
|
outputDirectory: {
|
|
213
214
|
type: 'string',
|
|
214
|
-
description: 'Directory to output generated ADRs (optional, uses configured ADR_DIRECTORY if not provided)'
|
|
215
|
+
description: 'Directory to output generated ADRs (optional, uses configured ADR_DIRECTORY if not provided)',
|
|
215
216
|
},
|
|
216
217
|
enhancedMode: {
|
|
217
218
|
type: 'boolean',
|
|
218
219
|
description: 'Enable advanced prompting features (APE + Knowledge Generation)',
|
|
219
|
-
default: true
|
|
220
|
+
default: true,
|
|
220
221
|
},
|
|
221
222
|
promptOptimization: {
|
|
222
223
|
type: 'boolean',
|
|
223
224
|
description: 'Enable Automatic Prompt Engineering for optimized ADR generation',
|
|
224
|
-
default: true
|
|
225
|
+
default: true,
|
|
225
226
|
},
|
|
226
227
|
knowledgeEnhancement: {
|
|
227
228
|
type: 'boolean',
|
|
228
229
|
description: 'Enable Knowledge Generation for domain-specific insights',
|
|
229
|
-
default: true
|
|
230
|
+
default: true,
|
|
230
231
|
},
|
|
231
232
|
prdType: {
|
|
232
233
|
type: 'string',
|
|
233
|
-
enum: [
|
|
234
|
+
enum: [
|
|
235
|
+
'web-application',
|
|
236
|
+
'mobile-app',
|
|
237
|
+
'microservices',
|
|
238
|
+
'data-platform',
|
|
239
|
+
'api-service',
|
|
240
|
+
'general',
|
|
241
|
+
],
|
|
234
242
|
description: 'Type of PRD for optimized knowledge generation',
|
|
235
|
-
default: 'general'
|
|
243
|
+
default: 'general',
|
|
236
244
|
},
|
|
237
|
-
conversationContext: CONVERSATION_CONTEXT_SCHEMA
|
|
245
|
+
conversationContext: CONVERSATION_CONTEXT_SCHEMA,
|
|
238
246
|
},
|
|
239
|
-
required: ['prdPath']
|
|
240
|
-
}
|
|
247
|
+
required: ['prdPath'],
|
|
248
|
+
},
|
|
241
249
|
},
|
|
242
250
|
{
|
|
243
251
|
name: 'generate_adr_todo',
|
|
@@ -247,63 +255,63 @@ export class McpAdrAnalysisServer {
|
|
|
247
255
|
properties: {
|
|
248
256
|
adrDirectory: {
|
|
249
257
|
type: 'string',
|
|
250
|
-
description: 'Directory containing ADR files (optional, uses configured ADR_DIRECTORY if not provided)'
|
|
258
|
+
description: 'Directory containing ADR files (optional, uses configured ADR_DIRECTORY if not provided)',
|
|
251
259
|
},
|
|
252
260
|
scope: {
|
|
253
261
|
type: 'string',
|
|
254
262
|
enum: ['all', 'pending', 'in_progress'],
|
|
255
263
|
description: 'Scope of tasks to include',
|
|
256
|
-
default: 'all'
|
|
264
|
+
default: 'all',
|
|
257
265
|
},
|
|
258
266
|
phase: {
|
|
259
267
|
type: 'string',
|
|
260
268
|
enum: ['both', 'test', 'production'],
|
|
261
269
|
description: 'TDD phase: both (default), test (mock test generation), production (implementation after tests)',
|
|
262
|
-
default: 'both'
|
|
270
|
+
default: 'both',
|
|
263
271
|
},
|
|
264
272
|
linkAdrs: {
|
|
265
273
|
type: 'boolean',
|
|
266
274
|
description: 'Auto-detect and link ADR dependencies in task creation',
|
|
267
|
-
default: true
|
|
275
|
+
default: true,
|
|
268
276
|
},
|
|
269
277
|
includeRules: {
|
|
270
278
|
type: 'boolean',
|
|
271
279
|
description: 'Include architectural rules validation in TDD tasks',
|
|
272
|
-
default: true
|
|
280
|
+
default: true,
|
|
273
281
|
},
|
|
274
282
|
ruleSource: {
|
|
275
283
|
type: 'string',
|
|
276
284
|
enum: ['adrs', 'patterns', 'both'],
|
|
277
285
|
description: 'Source for architectural rules (only used if includeRules is true)',
|
|
278
|
-
default: 'both'
|
|
286
|
+
default: 'both',
|
|
279
287
|
},
|
|
280
288
|
todoPath: {
|
|
281
289
|
type: 'string',
|
|
282
290
|
description: 'Path to TODO.md file (relative to project root)',
|
|
283
|
-
default: 'TODO.md'
|
|
291
|
+
default: 'TODO.md',
|
|
284
292
|
},
|
|
285
293
|
preserveExisting: {
|
|
286
294
|
type: 'boolean',
|
|
287
295
|
description: 'Preserve existing TODO.md content by merging instead of overwriting',
|
|
288
|
-
default: true
|
|
296
|
+
default: true,
|
|
289
297
|
},
|
|
290
298
|
forceSyncToMarkdown: {
|
|
291
299
|
type: 'boolean',
|
|
292
300
|
description: 'Force sync JSON to markdown even if markdown is newer',
|
|
293
|
-
default: false
|
|
301
|
+
default: false,
|
|
294
302
|
},
|
|
295
303
|
intentId: {
|
|
296
304
|
type: 'string',
|
|
297
|
-
description: 'Link generated tasks to specific knowledge graph intent'
|
|
305
|
+
description: 'Link generated tasks to specific knowledge graph intent',
|
|
298
306
|
},
|
|
299
307
|
createJsonBackup: {
|
|
300
308
|
type: 'boolean',
|
|
301
309
|
description: 'Create backup of existing JSON TODO data before import',
|
|
302
|
-
default: true
|
|
310
|
+
default: true,
|
|
303
311
|
},
|
|
304
|
-
conversationContext: CONVERSATION_CONTEXT_SCHEMA
|
|
305
|
-
}
|
|
306
|
-
}
|
|
312
|
+
conversationContext: CONVERSATION_CONTEXT_SCHEMA,
|
|
313
|
+
},
|
|
314
|
+
},
|
|
307
315
|
},
|
|
308
316
|
{
|
|
309
317
|
name: 'compare_adr_progress',
|
|
@@ -314,23 +322,23 @@ export class McpAdrAnalysisServer {
|
|
|
314
322
|
todoPath: {
|
|
315
323
|
type: 'string',
|
|
316
324
|
description: 'Path to TODO.md file to analyze',
|
|
317
|
-
default: 'TODO.md'
|
|
325
|
+
default: 'TODO.md',
|
|
318
326
|
},
|
|
319
327
|
adrDirectory: {
|
|
320
328
|
type: 'string',
|
|
321
329
|
description: 'Directory containing ADR files',
|
|
322
|
-
default: 'docs/adrs'
|
|
330
|
+
default: 'docs/adrs',
|
|
323
331
|
},
|
|
324
332
|
projectPath: {
|
|
325
333
|
type: 'string',
|
|
326
334
|
description: 'Path to project root for environment analysis',
|
|
327
|
-
default: '.'
|
|
335
|
+
default: '.',
|
|
328
336
|
},
|
|
329
337
|
environment: {
|
|
330
338
|
type: 'string',
|
|
331
339
|
enum: ['development', 'staging', 'production', 'testing', 'auto-detect'],
|
|
332
340
|
description: 'Target environment context for validation (auto-detect will infer from project structure)',
|
|
333
|
-
default: 'auto-detect'
|
|
341
|
+
default: 'auto-detect',
|
|
334
342
|
},
|
|
335
343
|
environmentConfig: {
|
|
336
344
|
type: 'object',
|
|
@@ -339,87 +347,102 @@ export class McpAdrAnalysisServer {
|
|
|
339
347
|
requiredFiles: {
|
|
340
348
|
type: 'array',
|
|
341
349
|
items: { type: 'string' },
|
|
342
|
-
description: 'Files required for this environment'
|
|
350
|
+
description: 'Files required for this environment',
|
|
343
351
|
},
|
|
344
352
|
requiredServices: {
|
|
345
353
|
type: 'array',
|
|
346
354
|
items: { type: 'string' },
|
|
347
|
-
description: 'Services that must be implemented for this environment'
|
|
355
|
+
description: 'Services that must be implemented for this environment',
|
|
348
356
|
},
|
|
349
357
|
securityLevel: {
|
|
350
358
|
type: 'string',
|
|
351
359
|
enum: ['low', 'medium', 'high', 'critical'],
|
|
352
|
-
description: 'Required security level for this environment'
|
|
360
|
+
description: 'Required security level for this environment',
|
|
353
361
|
},
|
|
354
362
|
performanceRequirements: {
|
|
355
363
|
type: 'object',
|
|
356
|
-
description: 'Performance requirements for this environment'
|
|
357
|
-
}
|
|
358
|
-
}
|
|
364
|
+
description: 'Performance requirements for this environment',
|
|
365
|
+
},
|
|
366
|
+
},
|
|
359
367
|
},
|
|
360
368
|
validationType: {
|
|
361
369
|
type: 'string',
|
|
362
370
|
enum: ['full', 'todo-only', 'adr-only', 'environment-only'],
|
|
363
371
|
description: 'Type of validation to perform',
|
|
364
|
-
default: 'full'
|
|
372
|
+
default: 'full',
|
|
365
373
|
},
|
|
366
374
|
includeFileChecks: {
|
|
367
375
|
type: 'boolean',
|
|
368
376
|
description: 'Include file existence and implementation checks',
|
|
369
|
-
default: true
|
|
377
|
+
default: true,
|
|
370
378
|
},
|
|
371
379
|
includeRuleValidation: {
|
|
372
380
|
type: 'boolean',
|
|
373
381
|
description: 'Include architectural rule compliance validation',
|
|
374
|
-
default: true
|
|
382
|
+
default: true,
|
|
375
383
|
},
|
|
376
384
|
deepCodeAnalysis: {
|
|
377
385
|
type: 'boolean',
|
|
378
386
|
description: 'Perform deep code analysis to distinguish mock from production implementations',
|
|
379
|
-
default: true
|
|
387
|
+
default: true,
|
|
380
388
|
},
|
|
381
389
|
functionalValidation: {
|
|
382
390
|
type: 'boolean',
|
|
383
391
|
description: 'Validate that code actually functions according to ADR goals, not just exists',
|
|
384
|
-
default: true
|
|
392
|
+
default: true,
|
|
385
393
|
},
|
|
386
394
|
strictMode: {
|
|
387
395
|
type: 'boolean',
|
|
388
396
|
description: 'Enable strict validation mode with reality-check mechanisms against overconfident assessments',
|
|
389
|
-
default: true
|
|
397
|
+
default: true,
|
|
390
398
|
},
|
|
391
399
|
environmentValidation: {
|
|
392
400
|
type: 'boolean',
|
|
393
401
|
description: 'Enable environment-specific validation rules and checks',
|
|
394
|
-
default: true
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
}
|
|
402
|
+
default: true,
|
|
403
|
+
},
|
|
404
|
+
},
|
|
405
|
+
},
|
|
398
406
|
},
|
|
399
407
|
{
|
|
400
408
|
name: 'analyze_content_security',
|
|
401
|
-
description: 'Analyze content for sensitive information using AI-powered detection',
|
|
409
|
+
description: 'Analyze content for sensitive information using AI-powered detection with optional memory integration for security pattern learning',
|
|
402
410
|
inputSchema: {
|
|
403
411
|
type: 'object',
|
|
404
412
|
properties: {
|
|
405
413
|
content: {
|
|
406
414
|
type: 'string',
|
|
407
|
-
description: 'Content to analyze for sensitive information'
|
|
415
|
+
description: 'Content to analyze for sensitive information',
|
|
408
416
|
},
|
|
409
417
|
contentType: {
|
|
410
418
|
type: 'string',
|
|
411
419
|
enum: ['code', 'documentation', 'configuration', 'logs', 'general'],
|
|
412
420
|
description: 'Type of content being analyzed',
|
|
413
|
-
default: 'general'
|
|
421
|
+
default: 'general',
|
|
414
422
|
},
|
|
415
423
|
userDefinedPatterns: {
|
|
416
424
|
type: 'array',
|
|
417
425
|
items: { type: 'string' },
|
|
418
|
-
description: 'User-defined sensitive patterns to detect'
|
|
419
|
-
}
|
|
426
|
+
description: 'User-defined sensitive patterns to detect',
|
|
427
|
+
},
|
|
428
|
+
enableMemoryIntegration: {
|
|
429
|
+
type: 'boolean',
|
|
430
|
+
description: 'Enable memory entity storage for security pattern learning and institutional knowledge building',
|
|
431
|
+
default: true,
|
|
432
|
+
},
|
|
433
|
+
knowledgeEnhancement: {
|
|
434
|
+
type: 'boolean',
|
|
435
|
+
description: 'Enable Generated Knowledge Prompting for security and privacy expertise',
|
|
436
|
+
default: true,
|
|
437
|
+
},
|
|
438
|
+
enhancedMode: {
|
|
439
|
+
type: 'boolean',
|
|
440
|
+
description: 'Enable advanced prompting features',
|
|
441
|
+
default: true,
|
|
442
|
+
},
|
|
420
443
|
},
|
|
421
|
-
required: ['content']
|
|
422
|
-
}
|
|
444
|
+
required: ['content'],
|
|
445
|
+
},
|
|
423
446
|
},
|
|
424
447
|
{
|
|
425
448
|
name: 'generate_content_masking',
|
|
@@ -429,7 +452,7 @@ export class McpAdrAnalysisServer {
|
|
|
429
452
|
properties: {
|
|
430
453
|
content: {
|
|
431
454
|
type: 'string',
|
|
432
|
-
description: 'Content to mask'
|
|
455
|
+
description: 'Content to mask',
|
|
433
456
|
},
|
|
434
457
|
detectedItems: {
|
|
435
458
|
type: 'array',
|
|
@@ -440,20 +463,20 @@ export class McpAdrAnalysisServer {
|
|
|
440
463
|
content: { type: 'string' },
|
|
441
464
|
startPosition: { type: 'number' },
|
|
442
465
|
endPosition: { type: 'number' },
|
|
443
|
-
severity: { type: 'string' }
|
|
444
|
-
}
|
|
466
|
+
severity: { type: 'string' },
|
|
467
|
+
},
|
|
445
468
|
},
|
|
446
|
-
description: 'Detected sensitive items to mask'
|
|
469
|
+
description: 'Detected sensitive items to mask',
|
|
447
470
|
},
|
|
448
471
|
maskingStrategy: {
|
|
449
472
|
type: 'string',
|
|
450
473
|
enum: ['full', 'partial', 'placeholder', 'environment'],
|
|
451
474
|
description: 'Strategy for masking content',
|
|
452
|
-
default: 'full'
|
|
453
|
-
}
|
|
475
|
+
default: 'full',
|
|
476
|
+
},
|
|
454
477
|
},
|
|
455
|
-
required: ['content', 'detectedItems']
|
|
456
|
-
}
|
|
478
|
+
required: ['content', 'detectedItems'],
|
|
479
|
+
},
|
|
457
480
|
},
|
|
458
481
|
{
|
|
459
482
|
name: 'configure_custom_patterns',
|
|
@@ -463,16 +486,16 @@ export class McpAdrAnalysisServer {
|
|
|
463
486
|
properties: {
|
|
464
487
|
projectPath: {
|
|
465
488
|
type: 'string',
|
|
466
|
-
description: 'Path to the project directory'
|
|
489
|
+
description: 'Path to the project directory',
|
|
467
490
|
},
|
|
468
491
|
existingPatterns: {
|
|
469
492
|
type: 'array',
|
|
470
493
|
items: { type: 'string' },
|
|
471
|
-
description: 'Existing patterns to consider'
|
|
472
|
-
}
|
|
494
|
+
description: 'Existing patterns to consider',
|
|
495
|
+
},
|
|
473
496
|
},
|
|
474
|
-
required: ['projectPath']
|
|
475
|
-
}
|
|
497
|
+
required: ['projectPath'],
|
|
498
|
+
},
|
|
476
499
|
},
|
|
477
500
|
{
|
|
478
501
|
name: 'apply_basic_content_masking',
|
|
@@ -482,17 +505,17 @@ export class McpAdrAnalysisServer {
|
|
|
482
505
|
properties: {
|
|
483
506
|
content: {
|
|
484
507
|
type: 'string',
|
|
485
|
-
description: 'Content to mask'
|
|
508
|
+
description: 'Content to mask',
|
|
486
509
|
},
|
|
487
510
|
maskingStrategy: {
|
|
488
511
|
type: 'string',
|
|
489
512
|
enum: ['full', 'partial', 'placeholder'],
|
|
490
513
|
description: 'Strategy for masking content',
|
|
491
|
-
default: 'full'
|
|
492
|
-
}
|
|
514
|
+
default: 'full',
|
|
515
|
+
},
|
|
493
516
|
},
|
|
494
|
-
required: ['content']
|
|
495
|
-
}
|
|
517
|
+
required: ['content'],
|
|
518
|
+
},
|
|
496
519
|
},
|
|
497
520
|
{
|
|
498
521
|
name: 'validate_content_masking',
|
|
@@ -502,15 +525,15 @@ export class McpAdrAnalysisServer {
|
|
|
502
525
|
properties: {
|
|
503
526
|
originalContent: {
|
|
504
527
|
type: 'string',
|
|
505
|
-
description: 'Original content before masking'
|
|
528
|
+
description: 'Original content before masking',
|
|
506
529
|
},
|
|
507
530
|
maskedContent: {
|
|
508
531
|
type: 'string',
|
|
509
|
-
description: 'Content after masking'
|
|
510
|
-
}
|
|
532
|
+
description: 'Content after masking',
|
|
533
|
+
},
|
|
511
534
|
},
|
|
512
|
-
required: ['originalContent', 'maskedContent']
|
|
513
|
-
}
|
|
535
|
+
required: ['originalContent', 'maskedContent'],
|
|
536
|
+
},
|
|
514
537
|
},
|
|
515
538
|
{
|
|
516
539
|
name: 'manage_cache',
|
|
@@ -521,15 +544,15 @@ export class McpAdrAnalysisServer {
|
|
|
521
544
|
action: {
|
|
522
545
|
type: 'string',
|
|
523
546
|
enum: ['clear', 'stats', 'cleanup', 'invalidate'],
|
|
524
|
-
description: 'Cache management action to perform'
|
|
547
|
+
description: 'Cache management action to perform',
|
|
525
548
|
},
|
|
526
549
|
key: {
|
|
527
550
|
type: 'string',
|
|
528
|
-
description: 'Specific cache key to invalidate (for invalidate action)'
|
|
529
|
-
}
|
|
551
|
+
description: 'Specific cache key to invalidate (for invalidate action)',
|
|
552
|
+
},
|
|
530
553
|
},
|
|
531
|
-
required: ['action']
|
|
532
|
-
}
|
|
554
|
+
required: ['action'],
|
|
555
|
+
},
|
|
533
556
|
},
|
|
534
557
|
{
|
|
535
558
|
name: 'configure_output_masking',
|
|
@@ -539,26 +562,26 @@ export class McpAdrAnalysisServer {
|
|
|
539
562
|
properties: {
|
|
540
563
|
enabled: {
|
|
541
564
|
type: 'boolean',
|
|
542
|
-
description: 'Enable or disable output masking'
|
|
565
|
+
description: 'Enable or disable output masking',
|
|
543
566
|
},
|
|
544
567
|
strategy: {
|
|
545
568
|
type: 'string',
|
|
546
569
|
enum: ['full', 'partial', 'placeholder', 'environment'],
|
|
547
|
-
description: 'Masking strategy to use'
|
|
570
|
+
description: 'Masking strategy to use',
|
|
548
571
|
},
|
|
549
572
|
customPatterns: {
|
|
550
573
|
type: 'array',
|
|
551
574
|
items: { type: 'string' },
|
|
552
|
-
description: 'Custom patterns to mask'
|
|
575
|
+
description: 'Custom patterns to mask',
|
|
553
576
|
},
|
|
554
577
|
action: {
|
|
555
578
|
type: 'string',
|
|
556
579
|
enum: ['get', 'set', 'reset'],
|
|
557
580
|
description: 'Configuration action',
|
|
558
|
-
default: 'get'
|
|
559
|
-
}
|
|
560
|
-
}
|
|
561
|
-
}
|
|
581
|
+
default: 'get',
|
|
582
|
+
},
|
|
583
|
+
},
|
|
584
|
+
},
|
|
562
585
|
},
|
|
563
586
|
{
|
|
564
587
|
name: 'suggest_adrs',
|
|
@@ -569,54 +592,54 @@ export class McpAdrAnalysisServer {
|
|
|
569
592
|
projectPath: {
|
|
570
593
|
type: 'string',
|
|
571
594
|
description: 'Path to the project directory',
|
|
572
|
-
default: '.'
|
|
595
|
+
default: '.',
|
|
573
596
|
},
|
|
574
597
|
analysisType: {
|
|
575
598
|
type: 'string',
|
|
576
599
|
enum: ['implicit_decisions', 'code_changes', 'comprehensive'],
|
|
577
600
|
description: 'Type of analysis to perform',
|
|
578
|
-
default: 'comprehensive'
|
|
601
|
+
default: 'comprehensive',
|
|
579
602
|
},
|
|
580
603
|
beforeCode: {
|
|
581
604
|
type: 'string',
|
|
582
|
-
description: 'Code before changes (for code_changes analysis)'
|
|
605
|
+
description: 'Code before changes (for code_changes analysis)',
|
|
583
606
|
},
|
|
584
607
|
afterCode: {
|
|
585
608
|
type: 'string',
|
|
586
|
-
description: 'Code after changes (for code_changes analysis)'
|
|
609
|
+
description: 'Code after changes (for code_changes analysis)',
|
|
587
610
|
},
|
|
588
611
|
changeDescription: {
|
|
589
612
|
type: 'string',
|
|
590
|
-
description: 'Description of the changes (for code_changes analysis)'
|
|
613
|
+
description: 'Description of the changes (for code_changes analysis)',
|
|
591
614
|
},
|
|
592
615
|
commitMessages: {
|
|
593
616
|
type: 'array',
|
|
594
617
|
items: { type: 'string' },
|
|
595
|
-
description: 'Related commit messages (for code_changes analysis)'
|
|
618
|
+
description: 'Related commit messages (for code_changes analysis)',
|
|
596
619
|
},
|
|
597
620
|
existingAdrs: {
|
|
598
621
|
type: 'array',
|
|
599
622
|
items: { type: 'string' },
|
|
600
|
-
description: 'List of existing ADR titles to avoid duplication'
|
|
623
|
+
description: 'List of existing ADR titles to avoid duplication',
|
|
601
624
|
},
|
|
602
625
|
enhancedMode: {
|
|
603
626
|
type: 'boolean',
|
|
604
627
|
description: 'Enable advanced prompting features (Knowledge Generation + Reflexion)',
|
|
605
|
-
default: true
|
|
628
|
+
default: true,
|
|
606
629
|
},
|
|
607
630
|
learningEnabled: {
|
|
608
631
|
type: 'boolean',
|
|
609
632
|
description: 'Enable Reflexion learning from past experiences',
|
|
610
|
-
default: true
|
|
633
|
+
default: true,
|
|
611
634
|
},
|
|
612
635
|
knowledgeEnhancement: {
|
|
613
636
|
type: 'boolean',
|
|
614
637
|
description: 'Enable Knowledge Generation for domain-specific insights',
|
|
615
|
-
default: true
|
|
638
|
+
default: true,
|
|
616
639
|
},
|
|
617
|
-
conversationContext: CONVERSATION_CONTEXT_SCHEMA
|
|
618
|
-
}
|
|
619
|
-
}
|
|
640
|
+
conversationContext: CONVERSATION_CONTEXT_SCHEMA,
|
|
641
|
+
},
|
|
642
|
+
},
|
|
620
643
|
},
|
|
621
644
|
{
|
|
622
645
|
name: 'generate_adr_from_decision',
|
|
@@ -634,35 +657,81 @@ export class McpAdrAnalysisServer {
|
|
|
634
657
|
alternatives: {
|
|
635
658
|
type: 'array',
|
|
636
659
|
items: { type: 'string' },
|
|
637
|
-
description: 'Alternative approaches considered'
|
|
660
|
+
description: 'Alternative approaches considered',
|
|
638
661
|
},
|
|
639
662
|
evidence: {
|
|
640
663
|
type: 'array',
|
|
641
664
|
items: { type: 'string' },
|
|
642
|
-
description: 'Supporting evidence for the decision'
|
|
643
|
-
}
|
|
665
|
+
description: 'Supporting evidence for the decision',
|
|
666
|
+
},
|
|
644
667
|
},
|
|
645
|
-
required: ['title', 'context', 'decision', 'consequences']
|
|
668
|
+
required: ['title', 'context', 'decision', 'consequences'],
|
|
646
669
|
},
|
|
647
670
|
templateFormat: {
|
|
648
671
|
type: 'string',
|
|
649
672
|
enum: ['nygard', 'madr', 'custom'],
|
|
650
673
|
description: 'ADR template format to use',
|
|
651
|
-
default: 'nygard'
|
|
674
|
+
default: 'nygard',
|
|
652
675
|
},
|
|
653
676
|
existingAdrs: {
|
|
654
677
|
type: 'array',
|
|
655
678
|
items: { type: 'string' },
|
|
656
|
-
description: 'List of existing ADRs for numbering and references'
|
|
679
|
+
description: 'List of existing ADRs for numbering and references',
|
|
657
680
|
},
|
|
658
681
|
adrDirectory: {
|
|
659
682
|
type: 'string',
|
|
660
683
|
description: 'Directory where ADRs are stored',
|
|
661
|
-
default: 'docs/adrs'
|
|
662
|
-
}
|
|
684
|
+
default: 'docs/adrs',
|
|
685
|
+
},
|
|
663
686
|
},
|
|
664
|
-
required: ['decisionData']
|
|
665
|
-
}
|
|
687
|
+
required: ['decisionData'],
|
|
688
|
+
},
|
|
689
|
+
},
|
|
690
|
+
{
|
|
691
|
+
name: 'generate_adr_bootstrap',
|
|
692
|
+
description: 'Generate bootstrap.sh and validate_bootstrap.sh scripts to ensure deployed code follows ADR requirements',
|
|
693
|
+
inputSchema: {
|
|
694
|
+
type: 'object',
|
|
695
|
+
properties: {
|
|
696
|
+
projectPath: {
|
|
697
|
+
type: 'string',
|
|
698
|
+
description: 'Path to the project directory',
|
|
699
|
+
default: '.',
|
|
700
|
+
},
|
|
701
|
+
adrDirectory: {
|
|
702
|
+
type: 'string',
|
|
703
|
+
description: 'Directory where ADRs are stored',
|
|
704
|
+
default: 'docs/adrs',
|
|
705
|
+
},
|
|
706
|
+
outputPath: {
|
|
707
|
+
type: 'string',
|
|
708
|
+
description: 'Directory where to generate scripts',
|
|
709
|
+
default: '.',
|
|
710
|
+
},
|
|
711
|
+
scriptType: {
|
|
712
|
+
type: 'string',
|
|
713
|
+
enum: ['bootstrap', 'validate', 'both'],
|
|
714
|
+
description: 'Which scripts to generate',
|
|
715
|
+
default: 'both',
|
|
716
|
+
},
|
|
717
|
+
includeTests: {
|
|
718
|
+
type: 'boolean',
|
|
719
|
+
description: 'Include test execution in bootstrap',
|
|
720
|
+
default: true,
|
|
721
|
+
},
|
|
722
|
+
includeDeployment: {
|
|
723
|
+
type: 'boolean',
|
|
724
|
+
description: 'Include deployment steps in bootstrap',
|
|
725
|
+
default: true,
|
|
726
|
+
},
|
|
727
|
+
customValidations: {
|
|
728
|
+
type: 'array',
|
|
729
|
+
items: { type: 'string' },
|
|
730
|
+
description: 'Custom validation commands to include',
|
|
731
|
+
},
|
|
732
|
+
conversationContext: CONVERSATION_CONTEXT_SCHEMA,
|
|
733
|
+
},
|
|
734
|
+
},
|
|
666
735
|
},
|
|
667
736
|
{
|
|
668
737
|
name: 'discover_existing_adrs',
|
|
@@ -673,15 +742,55 @@ export class McpAdrAnalysisServer {
|
|
|
673
742
|
adrDirectory: {
|
|
674
743
|
type: 'string',
|
|
675
744
|
description: 'Directory to search for ADRs',
|
|
676
|
-
default: 'docs/adrs'
|
|
745
|
+
default: 'docs/adrs',
|
|
677
746
|
},
|
|
678
747
|
includeContent: {
|
|
679
748
|
type: 'boolean',
|
|
680
749
|
description: 'Whether to include ADR content in analysis',
|
|
681
|
-
default: false
|
|
682
|
-
}
|
|
683
|
-
}
|
|
684
|
-
}
|
|
750
|
+
default: false,
|
|
751
|
+
},
|
|
752
|
+
},
|
|
753
|
+
},
|
|
754
|
+
},
|
|
755
|
+
{
|
|
756
|
+
name: 'review_existing_adrs',
|
|
757
|
+
description: 'Review existing ADRs against actual code implementation with cloud/DevOps expertise',
|
|
758
|
+
inputSchema: {
|
|
759
|
+
type: 'object',
|
|
760
|
+
properties: {
|
|
761
|
+
adrDirectory: {
|
|
762
|
+
type: 'string',
|
|
763
|
+
description: 'Directory containing ADR files',
|
|
764
|
+
default: 'docs/adrs',
|
|
765
|
+
},
|
|
766
|
+
projectPath: {
|
|
767
|
+
type: 'string',
|
|
768
|
+
description: 'Path to the project directory',
|
|
769
|
+
default: '.',
|
|
770
|
+
},
|
|
771
|
+
specificAdr: {
|
|
772
|
+
type: 'string',
|
|
773
|
+
description: 'Specific ADR filename or title to review (optional)',
|
|
774
|
+
},
|
|
775
|
+
analysisDepth: {
|
|
776
|
+
type: 'string',
|
|
777
|
+
enum: ['basic', 'detailed', 'comprehensive'],
|
|
778
|
+
description: 'Depth of analysis to perform',
|
|
779
|
+
default: 'detailed',
|
|
780
|
+
},
|
|
781
|
+
includeTreeSitter: {
|
|
782
|
+
type: 'boolean',
|
|
783
|
+
description: 'Use tree-sitter for enhanced code analysis',
|
|
784
|
+
default: true,
|
|
785
|
+
},
|
|
786
|
+
generateUpdatePlan: {
|
|
787
|
+
type: 'boolean',
|
|
788
|
+
description: 'Generate action plan for updating non-compliant ADRs',
|
|
789
|
+
default: true,
|
|
790
|
+
},
|
|
791
|
+
conversationContext: CONVERSATION_CONTEXT_SCHEMA,
|
|
792
|
+
},
|
|
793
|
+
},
|
|
685
794
|
},
|
|
686
795
|
{
|
|
687
796
|
name: 'incorporate_research',
|
|
@@ -692,23 +801,29 @@ export class McpAdrAnalysisServer {
|
|
|
692
801
|
researchPath: {
|
|
693
802
|
type: 'string',
|
|
694
803
|
description: 'Path to research directory',
|
|
695
|
-
default: 'docs/research'
|
|
804
|
+
default: 'docs/research',
|
|
696
805
|
},
|
|
697
806
|
adrDirectory: {
|
|
698
807
|
type: 'string',
|
|
699
808
|
description: 'Path to ADR directory',
|
|
700
|
-
default: 'docs/adrs'
|
|
809
|
+
default: 'docs/adrs',
|
|
701
810
|
},
|
|
702
811
|
analysisType: {
|
|
703
812
|
type: 'string',
|
|
704
|
-
enum: [
|
|
813
|
+
enum: [
|
|
814
|
+
'monitor',
|
|
815
|
+
'extract_topics',
|
|
816
|
+
'evaluate_impact',
|
|
817
|
+
'generate_updates',
|
|
818
|
+
'comprehensive',
|
|
819
|
+
],
|
|
705
820
|
description: 'Type of research analysis to perform',
|
|
706
|
-
default: 'comprehensive'
|
|
821
|
+
default: 'comprehensive',
|
|
707
822
|
},
|
|
708
823
|
existingTopics: {
|
|
709
824
|
type: 'array',
|
|
710
825
|
items: { type: 'string' },
|
|
711
|
-
description: 'Previously identified research topics'
|
|
826
|
+
description: 'Previously identified research topics',
|
|
712
827
|
},
|
|
713
828
|
researchTopics: {
|
|
714
829
|
type: 'array',
|
|
@@ -719,19 +834,19 @@ export class McpAdrAnalysisServer {
|
|
|
719
834
|
title: { type: 'string' },
|
|
720
835
|
category: { type: 'string' },
|
|
721
836
|
keyFindings: { type: 'array', items: { type: 'string' } },
|
|
722
|
-
relevanceScore: { type: 'number' }
|
|
723
|
-
}
|
|
837
|
+
relevanceScore: { type: 'number' },
|
|
838
|
+
},
|
|
724
839
|
},
|
|
725
|
-
description: 'Research topics for impact evaluation'
|
|
840
|
+
description: 'Research topics for impact evaluation',
|
|
726
841
|
},
|
|
727
842
|
adrId: {
|
|
728
843
|
type: 'string',
|
|
729
|
-
description: 'ADR ID for update generation'
|
|
844
|
+
description: 'ADR ID for update generation',
|
|
730
845
|
},
|
|
731
846
|
updateType: {
|
|
732
847
|
type: 'string',
|
|
733
848
|
enum: ['content', 'status', 'consequences', 'alternatives', 'deprecation'],
|
|
734
|
-
description: 'Type of ADR update to generate'
|
|
849
|
+
description: 'Type of ADR update to generate',
|
|
735
850
|
},
|
|
736
851
|
researchFindings: {
|
|
737
852
|
type: 'array',
|
|
@@ -740,13 +855,13 @@ export class McpAdrAnalysisServer {
|
|
|
740
855
|
properties: {
|
|
741
856
|
finding: { type: 'string' },
|
|
742
857
|
evidence: { type: 'array', items: { type: 'string' } },
|
|
743
|
-
impact: { type: 'string' }
|
|
744
|
-
}
|
|
858
|
+
impact: { type: 'string' },
|
|
859
|
+
},
|
|
745
860
|
},
|
|
746
|
-
description: 'Research findings for update generation'
|
|
747
|
-
}
|
|
748
|
-
}
|
|
749
|
-
}
|
|
861
|
+
description: 'Research findings for update generation',
|
|
862
|
+
},
|
|
863
|
+
},
|
|
864
|
+
},
|
|
750
865
|
},
|
|
751
866
|
{
|
|
752
867
|
name: 'create_research_template',
|
|
@@ -756,21 +871,21 @@ export class McpAdrAnalysisServer {
|
|
|
756
871
|
properties: {
|
|
757
872
|
title: {
|
|
758
873
|
type: 'string',
|
|
759
|
-
description: 'Title of the research'
|
|
874
|
+
description: 'Title of the research',
|
|
760
875
|
},
|
|
761
876
|
category: {
|
|
762
877
|
type: 'string',
|
|
763
878
|
description: 'Research category',
|
|
764
|
-
default: 'general'
|
|
879
|
+
default: 'general',
|
|
765
880
|
},
|
|
766
881
|
researchPath: {
|
|
767
882
|
type: 'string',
|
|
768
883
|
description: 'Path to research directory',
|
|
769
|
-
default: 'docs/research'
|
|
770
|
-
}
|
|
884
|
+
default: 'docs/research',
|
|
885
|
+
},
|
|
771
886
|
},
|
|
772
|
-
required: ['title']
|
|
773
|
-
}
|
|
887
|
+
required: ['title'],
|
|
888
|
+
},
|
|
774
889
|
},
|
|
775
890
|
{
|
|
776
891
|
name: 'request_action_confirmation',
|
|
@@ -780,21 +895,21 @@ export class McpAdrAnalysisServer {
|
|
|
780
895
|
properties: {
|
|
781
896
|
action: {
|
|
782
897
|
type: 'string',
|
|
783
|
-
description: 'Description of the action to be performed'
|
|
898
|
+
description: 'Description of the action to be performed',
|
|
784
899
|
},
|
|
785
900
|
details: {
|
|
786
901
|
type: 'string',
|
|
787
|
-
description: 'Detailed information about the action'
|
|
902
|
+
description: 'Detailed information about the action',
|
|
788
903
|
},
|
|
789
904
|
impact: {
|
|
790
905
|
type: 'string',
|
|
791
906
|
enum: ['low', 'medium', 'high', 'critical'],
|
|
792
907
|
description: 'Impact level of the action',
|
|
793
|
-
default: 'medium'
|
|
794
|
-
}
|
|
908
|
+
default: 'medium',
|
|
909
|
+
},
|
|
795
910
|
},
|
|
796
|
-
required: ['action', 'details']
|
|
797
|
-
}
|
|
911
|
+
required: ['action', 'details'],
|
|
912
|
+
},
|
|
798
913
|
},
|
|
799
914
|
{
|
|
800
915
|
name: 'generate_rules',
|
|
@@ -806,17 +921,17 @@ export class McpAdrAnalysisServer {
|
|
|
806
921
|
type: 'string',
|
|
807
922
|
enum: ['adrs', 'patterns', 'both'],
|
|
808
923
|
description: 'Source for rule generation',
|
|
809
|
-
default: 'both'
|
|
924
|
+
default: 'both',
|
|
810
925
|
},
|
|
811
926
|
adrDirectory: {
|
|
812
927
|
type: 'string',
|
|
813
928
|
description: 'Directory containing ADR files',
|
|
814
|
-
default: 'docs/adrs'
|
|
929
|
+
default: 'docs/adrs',
|
|
815
930
|
},
|
|
816
931
|
projectPath: {
|
|
817
932
|
type: 'string',
|
|
818
933
|
description: 'Path to project for pattern analysis',
|
|
819
|
-
default: '.'
|
|
934
|
+
default: '.',
|
|
820
935
|
},
|
|
821
936
|
existingRules: {
|
|
822
937
|
type: 'array',
|
|
@@ -825,19 +940,19 @@ export class McpAdrAnalysisServer {
|
|
|
825
940
|
properties: {
|
|
826
941
|
id: { type: 'string' },
|
|
827
942
|
name: { type: 'string' },
|
|
828
|
-
description: { type: 'string' }
|
|
829
|
-
}
|
|
943
|
+
description: { type: 'string' },
|
|
944
|
+
},
|
|
830
945
|
},
|
|
831
|
-
description: 'Existing rules to avoid duplication'
|
|
946
|
+
description: 'Existing rules to avoid duplication',
|
|
832
947
|
},
|
|
833
948
|
outputFormat: {
|
|
834
949
|
type: 'string',
|
|
835
950
|
enum: ['json', 'yaml', 'both'],
|
|
836
951
|
description: 'Output format for rules',
|
|
837
|
-
default: 'json'
|
|
838
|
-
}
|
|
839
|
-
}
|
|
840
|
-
}
|
|
952
|
+
default: 'json',
|
|
953
|
+
},
|
|
954
|
+
},
|
|
955
|
+
},
|
|
841
956
|
},
|
|
842
957
|
{
|
|
843
958
|
name: 'validate_rules',
|
|
@@ -847,15 +962,15 @@ export class McpAdrAnalysisServer {
|
|
|
847
962
|
properties: {
|
|
848
963
|
filePath: {
|
|
849
964
|
type: 'string',
|
|
850
|
-
description: 'Path to file to validate'
|
|
965
|
+
description: 'Path to file to validate',
|
|
851
966
|
},
|
|
852
967
|
fileContent: {
|
|
853
968
|
type: 'string',
|
|
854
|
-
description: 'Content to validate (alternative to filePath)'
|
|
969
|
+
description: 'Content to validate (alternative to filePath)',
|
|
855
970
|
},
|
|
856
971
|
fileName: {
|
|
857
972
|
type: 'string',
|
|
858
|
-
description: 'Name of file being validated (when using fileContent)'
|
|
973
|
+
description: 'Name of file being validated (when using fileContent)',
|
|
859
974
|
},
|
|
860
975
|
rules: {
|
|
861
976
|
type: 'array',
|
|
@@ -867,27 +982,27 @@ export class McpAdrAnalysisServer {
|
|
|
867
982
|
description: { type: 'string' },
|
|
868
983
|
pattern: { type: 'string' },
|
|
869
984
|
severity: { type: 'string' },
|
|
870
|
-
message: { type: 'string' }
|
|
985
|
+
message: { type: 'string' },
|
|
871
986
|
},
|
|
872
|
-
required: ['id', 'name', 'pattern', 'severity', 'message']
|
|
987
|
+
required: ['id', 'name', 'pattern', 'severity', 'message'],
|
|
873
988
|
},
|
|
874
|
-
description: 'Rules to validate against'
|
|
989
|
+
description: 'Rules to validate against',
|
|
875
990
|
},
|
|
876
991
|
validationType: {
|
|
877
992
|
type: 'string',
|
|
878
993
|
enum: ['file', 'function', 'component', 'module'],
|
|
879
994
|
description: 'Type of validation to perform',
|
|
880
|
-
default: 'file'
|
|
995
|
+
default: 'file',
|
|
881
996
|
},
|
|
882
997
|
reportFormat: {
|
|
883
998
|
type: 'string',
|
|
884
999
|
enum: ['summary', 'detailed', 'json'],
|
|
885
1000
|
description: 'Format for validation report',
|
|
886
|
-
default: 'detailed'
|
|
887
|
-
}
|
|
1001
|
+
default: 'detailed',
|
|
1002
|
+
},
|
|
888
1003
|
},
|
|
889
|
-
required: ['rules']
|
|
890
|
-
}
|
|
1004
|
+
required: ['rules'],
|
|
1005
|
+
},
|
|
891
1006
|
},
|
|
892
1007
|
{
|
|
893
1008
|
name: 'create_rule_set',
|
|
@@ -897,80 +1012,96 @@ export class McpAdrAnalysisServer {
|
|
|
897
1012
|
properties: {
|
|
898
1013
|
name: {
|
|
899
1014
|
type: 'string',
|
|
900
|
-
description: 'Name of the rule set'
|
|
1015
|
+
description: 'Name of the rule set',
|
|
901
1016
|
},
|
|
902
1017
|
description: {
|
|
903
1018
|
type: 'string',
|
|
904
1019
|
description: 'Description of the rule set',
|
|
905
|
-
default: 'Generated architectural rule set'
|
|
1020
|
+
default: 'Generated architectural rule set',
|
|
906
1021
|
},
|
|
907
1022
|
adrRules: {
|
|
908
1023
|
type: 'array',
|
|
909
1024
|
items: { type: 'object' },
|
|
910
|
-
description: 'Rules extracted from ADRs'
|
|
1025
|
+
description: 'Rules extracted from ADRs',
|
|
911
1026
|
},
|
|
912
1027
|
patternRules: {
|
|
913
1028
|
type: 'array',
|
|
914
1029
|
items: { type: 'object' },
|
|
915
|
-
description: 'Rules generated from code patterns'
|
|
1030
|
+
description: 'Rules generated from code patterns',
|
|
916
1031
|
},
|
|
917
1032
|
rules: {
|
|
918
1033
|
type: 'array',
|
|
919
1034
|
items: { type: 'object' },
|
|
920
|
-
description: 'Additional rules to include'
|
|
1035
|
+
description: 'Additional rules to include',
|
|
921
1036
|
},
|
|
922
1037
|
outputFormat: {
|
|
923
1038
|
type: 'string',
|
|
924
1039
|
enum: ['json', 'yaml', 'both'],
|
|
925
1040
|
description: 'Output format for rule set',
|
|
926
|
-
default: 'json'
|
|
1041
|
+
default: 'json',
|
|
927
1042
|
},
|
|
928
1043
|
author: {
|
|
929
1044
|
type: 'string',
|
|
930
1045
|
description: 'Author of the rule set',
|
|
931
|
-
default: 'MCP ADR Analysis Server'
|
|
932
|
-
}
|
|
1046
|
+
default: 'MCP ADR Analysis Server',
|
|
1047
|
+
},
|
|
933
1048
|
},
|
|
934
|
-
required: ['name']
|
|
935
|
-
}
|
|
1049
|
+
required: ['name'],
|
|
1050
|
+
},
|
|
936
1051
|
},
|
|
937
1052
|
{
|
|
938
1053
|
name: 'analyze_environment',
|
|
939
|
-
description: 'Analyze environment context and provide optimization recommendations',
|
|
1054
|
+
description: 'Analyze environment context and provide optimization recommendations with optional memory integration for environment snapshot tracking',
|
|
940
1055
|
inputSchema: {
|
|
941
1056
|
type: 'object',
|
|
942
1057
|
properties: {
|
|
943
1058
|
projectPath: {
|
|
944
1059
|
type: 'string',
|
|
945
1060
|
description: 'Path to project directory',
|
|
946
|
-
default: '.'
|
|
1061
|
+
default: '.',
|
|
947
1062
|
},
|
|
948
1063
|
adrDirectory: {
|
|
949
1064
|
type: 'string',
|
|
950
1065
|
description: 'Directory containing ADR files',
|
|
951
|
-
default: 'docs/adrs'
|
|
1066
|
+
default: 'docs/adrs',
|
|
952
1067
|
},
|
|
953
1068
|
analysisType: {
|
|
954
1069
|
type: 'string',
|
|
955
|
-
enum: [
|
|
1070
|
+
enum: [
|
|
1071
|
+
'specs',
|
|
1072
|
+
'containerization',
|
|
1073
|
+
'requirements',
|
|
1074
|
+
'compliance',
|
|
1075
|
+
'comprehensive',
|
|
1076
|
+
],
|
|
956
1077
|
description: 'Type of environment analysis to perform',
|
|
957
|
-
default: 'comprehensive'
|
|
1078
|
+
default: 'comprehensive',
|
|
958
1079
|
},
|
|
959
1080
|
currentEnvironment: {
|
|
960
1081
|
type: 'object',
|
|
961
|
-
description: 'Current environment specifications (for compliance analysis)'
|
|
1082
|
+
description: 'Current environment specifications (for compliance analysis)',
|
|
962
1083
|
},
|
|
963
1084
|
requirements: {
|
|
964
1085
|
type: 'object',
|
|
965
|
-
description: 'Environment requirements (for compliance analysis)'
|
|
1086
|
+
description: 'Environment requirements (for compliance analysis)',
|
|
966
1087
|
},
|
|
967
1088
|
industryStandards: {
|
|
968
1089
|
type: 'array',
|
|
969
1090
|
items: { type: 'string' },
|
|
970
|
-
description: 'Industry standards to assess compliance against'
|
|
971
|
-
}
|
|
972
|
-
|
|
973
|
-
|
|
1091
|
+
description: 'Industry standards to assess compliance against',
|
|
1092
|
+
},
|
|
1093
|
+
enableMemoryIntegration: {
|
|
1094
|
+
type: 'boolean',
|
|
1095
|
+
description: 'Enable memory entity storage for environment snapshot tracking and historical analysis',
|
|
1096
|
+
default: true,
|
|
1097
|
+
},
|
|
1098
|
+
enableTrendAnalysis: {
|
|
1099
|
+
type: 'boolean',
|
|
1100
|
+
description: 'Enable analysis of environment changes over time using stored snapshots',
|
|
1101
|
+
default: true,
|
|
1102
|
+
},
|
|
1103
|
+
},
|
|
1104
|
+
},
|
|
974
1105
|
},
|
|
975
1106
|
{
|
|
976
1107
|
name: 'generate_research_questions',
|
|
@@ -982,7 +1113,7 @@ export class McpAdrAnalysisServer {
|
|
|
982
1113
|
type: 'string',
|
|
983
1114
|
enum: ['correlation', 'relevance', 'questions', 'tracking', 'comprehensive'],
|
|
984
1115
|
description: 'Type of research analysis to perform',
|
|
985
|
-
default: 'comprehensive'
|
|
1116
|
+
default: 'comprehensive',
|
|
986
1117
|
},
|
|
987
1118
|
researchContext: {
|
|
988
1119
|
type: 'object',
|
|
@@ -992,9 +1123,9 @@ export class McpAdrAnalysisServer {
|
|
|
992
1123
|
scope: { type: 'string' },
|
|
993
1124
|
objectives: { type: 'array', items: { type: 'string' } },
|
|
994
1125
|
constraints: { type: 'array', items: { type: 'string' } },
|
|
995
|
-
timeline: { type: 'string' }
|
|
1126
|
+
timeline: { type: 'string' },
|
|
996
1127
|
},
|
|
997
|
-
description: 'Research context and objectives'
|
|
1128
|
+
description: 'Research context and objectives',
|
|
998
1129
|
},
|
|
999
1130
|
problems: {
|
|
1000
1131
|
type: 'array',
|
|
@@ -1005,10 +1136,10 @@ export class McpAdrAnalysisServer {
|
|
|
1005
1136
|
description: { type: 'string' },
|
|
1006
1137
|
category: { type: 'string' },
|
|
1007
1138
|
severity: { type: 'string' },
|
|
1008
|
-
context: { type: 'string' }
|
|
1009
|
-
}
|
|
1139
|
+
context: { type: 'string' },
|
|
1140
|
+
},
|
|
1010
1141
|
},
|
|
1011
|
-
description: 'Problems to correlate with knowledge graph'
|
|
1142
|
+
description: 'Problems to correlate with knowledge graph',
|
|
1012
1143
|
},
|
|
1013
1144
|
knowledgeGraph: {
|
|
1014
1145
|
type: 'object',
|
|
@@ -1016,9 +1147,9 @@ export class McpAdrAnalysisServer {
|
|
|
1016
1147
|
technologies: { type: 'array', items: { type: 'object' } },
|
|
1017
1148
|
patterns: { type: 'array', items: { type: 'object' } },
|
|
1018
1149
|
adrs: { type: 'array', items: { type: 'object' } },
|
|
1019
|
-
relationships: { type: 'array', items: { type: 'object' } }
|
|
1150
|
+
relationships: { type: 'array', items: { type: 'object' } },
|
|
1020
1151
|
},
|
|
1021
|
-
description: 'Architectural knowledge graph'
|
|
1152
|
+
description: 'Architectural knowledge graph',
|
|
1022
1153
|
},
|
|
1023
1154
|
relevantKnowledge: {
|
|
1024
1155
|
type: 'object',
|
|
@@ -1026,9 +1157,9 @@ export class McpAdrAnalysisServer {
|
|
|
1026
1157
|
adrs: { type: 'array', items: { type: 'object' } },
|
|
1027
1158
|
patterns: { type: 'array', items: { type: 'object' } },
|
|
1028
1159
|
gaps: { type: 'array', items: { type: 'object' } },
|
|
1029
|
-
opportunities: { type: 'array', items: { type: 'object' } }
|
|
1160
|
+
opportunities: { type: 'array', items: { type: 'object' } },
|
|
1030
1161
|
},
|
|
1031
|
-
description: 'Relevant knowledge for question generation'
|
|
1162
|
+
description: 'Relevant knowledge for question generation',
|
|
1032
1163
|
},
|
|
1033
1164
|
researchQuestions: {
|
|
1034
1165
|
type: 'array',
|
|
@@ -1040,10 +1171,10 @@ export class McpAdrAnalysisServer {
|
|
|
1040
1171
|
type: { type: 'string' },
|
|
1041
1172
|
priority: { type: 'string' },
|
|
1042
1173
|
timeline: { type: 'string' },
|
|
1043
|
-
methodology: { type: 'string' }
|
|
1044
|
-
}
|
|
1174
|
+
methodology: { type: 'string' },
|
|
1175
|
+
},
|
|
1045
1176
|
},
|
|
1046
|
-
description: 'Research questions for task tracking'
|
|
1177
|
+
description: 'Research questions for task tracking',
|
|
1047
1178
|
},
|
|
1048
1179
|
currentProgress: {
|
|
1049
1180
|
type: 'array',
|
|
@@ -1054,23 +1185,23 @@ export class McpAdrAnalysisServer {
|
|
|
1054
1185
|
status: { type: 'string' },
|
|
1055
1186
|
progress: { type: 'number' },
|
|
1056
1187
|
findings: { type: 'array', items: { type: 'string' } },
|
|
1057
|
-
blockers: { type: 'array', items: { type: 'string' } }
|
|
1058
|
-
}
|
|
1188
|
+
blockers: { type: 'array', items: { type: 'string' } },
|
|
1189
|
+
},
|
|
1059
1190
|
},
|
|
1060
|
-
description: 'Current research progress'
|
|
1191
|
+
description: 'Current research progress',
|
|
1061
1192
|
},
|
|
1062
1193
|
projectPath: {
|
|
1063
1194
|
type: 'string',
|
|
1064
1195
|
description: 'Path to project directory',
|
|
1065
|
-
default: '.'
|
|
1196
|
+
default: '.',
|
|
1066
1197
|
},
|
|
1067
1198
|
adrDirectory: {
|
|
1068
1199
|
type: 'string',
|
|
1069
1200
|
description: 'Directory containing ADR files',
|
|
1070
|
-
default: 'docs/adrs'
|
|
1071
|
-
}
|
|
1072
|
-
}
|
|
1073
|
-
}
|
|
1201
|
+
default: 'docs/adrs',
|
|
1202
|
+
},
|
|
1203
|
+
},
|
|
1204
|
+
},
|
|
1074
1205
|
},
|
|
1075
1206
|
{
|
|
1076
1207
|
name: 'analyze_deployment_progress',
|
|
@@ -1082,25 +1213,25 @@ export class McpAdrAnalysisServer {
|
|
|
1082
1213
|
type: 'string',
|
|
1083
1214
|
enum: ['tasks', 'cicd', 'progress', 'completion', 'comprehensive'],
|
|
1084
1215
|
description: 'Type of deployment analysis to perform',
|
|
1085
|
-
default: 'comprehensive'
|
|
1216
|
+
default: 'comprehensive',
|
|
1086
1217
|
},
|
|
1087
1218
|
adrDirectory: {
|
|
1088
1219
|
type: 'string',
|
|
1089
1220
|
description: 'Directory containing ADR files',
|
|
1090
|
-
default: 'docs/adrs'
|
|
1221
|
+
default: 'docs/adrs',
|
|
1091
1222
|
},
|
|
1092
1223
|
todoPath: {
|
|
1093
1224
|
type: 'string',
|
|
1094
1225
|
description: 'Path to TODO.md file for task identification',
|
|
1095
|
-
default: 'TODO.md'
|
|
1226
|
+
default: 'TODO.md',
|
|
1096
1227
|
},
|
|
1097
1228
|
cicdLogs: {
|
|
1098
1229
|
type: 'string',
|
|
1099
|
-
description: 'CI/CD pipeline logs for analysis'
|
|
1230
|
+
description: 'CI/CD pipeline logs for analysis',
|
|
1100
1231
|
},
|
|
1101
1232
|
pipelineConfig: {
|
|
1102
1233
|
type: 'string',
|
|
1103
|
-
description: 'CI/CD pipeline configuration'
|
|
1234
|
+
description: 'CI/CD pipeline configuration',
|
|
1104
1235
|
},
|
|
1105
1236
|
deploymentTasks: {
|
|
1106
1237
|
type: 'array',
|
|
@@ -1114,10 +1245,10 @@ export class McpAdrAnalysisServer {
|
|
|
1114
1245
|
category: { type: 'string' },
|
|
1115
1246
|
priority: { type: 'string' },
|
|
1116
1247
|
verificationCriteria: { type: 'array', items: { type: 'string' } },
|
|
1117
|
-
expectedOutcome: { type: 'string' }
|
|
1118
|
-
}
|
|
1248
|
+
expectedOutcome: { type: 'string' },
|
|
1249
|
+
},
|
|
1119
1250
|
},
|
|
1120
|
-
description: 'Deployment tasks for progress calculation'
|
|
1251
|
+
description: 'Deployment tasks for progress calculation',
|
|
1121
1252
|
},
|
|
1122
1253
|
outcomeRules: {
|
|
1123
1254
|
type: 'array',
|
|
@@ -1127,10 +1258,10 @@ export class McpAdrAnalysisServer {
|
|
|
1127
1258
|
ruleId: { type: 'string' },
|
|
1128
1259
|
description: { type: 'string' },
|
|
1129
1260
|
criteria: { type: 'array', items: { type: 'string' } },
|
|
1130
|
-
verificationMethod: { type: 'string' }
|
|
1131
|
-
}
|
|
1261
|
+
verificationMethod: { type: 'string' },
|
|
1262
|
+
},
|
|
1132
1263
|
},
|
|
1133
|
-
description: 'Outcome rules for completion verification'
|
|
1264
|
+
description: 'Outcome rules for completion verification',
|
|
1134
1265
|
},
|
|
1135
1266
|
actualOutcomes: {
|
|
1136
1267
|
type: 'array',
|
|
@@ -1140,21 +1271,21 @@ export class McpAdrAnalysisServer {
|
|
|
1140
1271
|
taskId: { type: 'string' },
|
|
1141
1272
|
outcome: { type: 'string' },
|
|
1142
1273
|
evidence: { type: 'array', items: { type: 'string' } },
|
|
1143
|
-
timestamp: { type: 'string' }
|
|
1144
|
-
}
|
|
1274
|
+
timestamp: { type: 'string' },
|
|
1275
|
+
},
|
|
1145
1276
|
},
|
|
1146
|
-
description: 'Actual deployment outcomes'
|
|
1277
|
+
description: 'Actual deployment outcomes',
|
|
1147
1278
|
},
|
|
1148
1279
|
cicdStatus: {
|
|
1149
1280
|
type: 'object',
|
|
1150
|
-
description: 'CI/CD pipeline status data'
|
|
1281
|
+
description: 'CI/CD pipeline status data',
|
|
1151
1282
|
},
|
|
1152
1283
|
environmentStatus: {
|
|
1153
1284
|
type: 'object',
|
|
1154
|
-
description: 'Environment status data'
|
|
1155
|
-
}
|
|
1156
|
-
}
|
|
1157
|
-
}
|
|
1285
|
+
description: 'Environment status data',
|
|
1286
|
+
},
|
|
1287
|
+
},
|
|
1288
|
+
},
|
|
1158
1289
|
},
|
|
1159
1290
|
{
|
|
1160
1291
|
name: 'check_ai_execution_status',
|
|
@@ -1162,8 +1293,8 @@ export class McpAdrAnalysisServer {
|
|
|
1162
1293
|
inputSchema: {
|
|
1163
1294
|
type: 'object',
|
|
1164
1295
|
properties: {},
|
|
1165
|
-
required: []
|
|
1166
|
-
}
|
|
1296
|
+
required: [],
|
|
1297
|
+
},
|
|
1167
1298
|
},
|
|
1168
1299
|
{
|
|
1169
1300
|
name: 'get_workflow_guidance',
|
|
@@ -1173,31 +1304,44 @@ export class McpAdrAnalysisServer {
|
|
|
1173
1304
|
properties: {
|
|
1174
1305
|
goal: {
|
|
1175
1306
|
type: 'string',
|
|
1176
|
-
description: 'What you want to accomplish (e.g., "analyze new project", "document existing decisions", "security audit", "modernize legacy system")'
|
|
1307
|
+
description: 'What you want to accomplish (e.g., "analyze new project", "document existing decisions", "security audit", "modernize legacy system")',
|
|
1177
1308
|
},
|
|
1178
1309
|
projectContext: {
|
|
1179
1310
|
type: 'string',
|
|
1180
1311
|
description: 'Current state of your project (e.g., "new project", "existing project with ADRs", "legacy codebase", "greenfield development")',
|
|
1181
|
-
enum: [
|
|
1312
|
+
enum: [
|
|
1313
|
+
'new_project',
|
|
1314
|
+
'existing_with_adrs',
|
|
1315
|
+
'existing_without_adrs',
|
|
1316
|
+
'legacy_codebase',
|
|
1317
|
+
'greenfield',
|
|
1318
|
+
'maintenance_mode',
|
|
1319
|
+
'unknown',
|
|
1320
|
+
],
|
|
1182
1321
|
},
|
|
1183
1322
|
availableAssets: {
|
|
1184
1323
|
type: 'array',
|
|
1185
1324
|
items: { type: 'string' },
|
|
1186
|
-
description: 'What assets you already have (e.g., ["PRD.md", "existing ADRs", "codebase", "documentation", "test suite"])'
|
|
1325
|
+
description: 'What assets you already have (e.g., ["PRD.md", "existing ADRs", "codebase", "documentation", "test suite"])',
|
|
1187
1326
|
},
|
|
1188
1327
|
timeframe: {
|
|
1189
1328
|
type: 'string',
|
|
1190
1329
|
description: 'Available time/effort level',
|
|
1191
|
-
enum: [
|
|
1330
|
+
enum: [
|
|
1331
|
+
'quick_analysis',
|
|
1332
|
+
'thorough_review',
|
|
1333
|
+
'comprehensive_audit',
|
|
1334
|
+
'ongoing_process',
|
|
1335
|
+
],
|
|
1192
1336
|
},
|
|
1193
1337
|
primaryConcerns: {
|
|
1194
1338
|
type: 'array',
|
|
1195
1339
|
items: { type: 'string' },
|
|
1196
|
-
description: 'Main areas of concern (e.g., ["security", "performance", "maintainability", "scalability", "compliance"])'
|
|
1197
|
-
}
|
|
1340
|
+
description: 'Main areas of concern (e.g., ["security", "performance", "maintainability", "scalability", "compliance"])',
|
|
1341
|
+
},
|
|
1198
1342
|
},
|
|
1199
|
-
required: ['goal', 'projectContext']
|
|
1200
|
-
}
|
|
1343
|
+
required: ['goal', 'projectContext'],
|
|
1344
|
+
},
|
|
1201
1345
|
},
|
|
1202
1346
|
{
|
|
1203
1347
|
name: 'get_development_guidance',
|
|
@@ -1208,47 +1352,55 @@ export class McpAdrAnalysisServer {
|
|
|
1208
1352
|
developmentPhase: {
|
|
1209
1353
|
type: 'string',
|
|
1210
1354
|
description: 'Current development phase',
|
|
1211
|
-
enum: [
|
|
1355
|
+
enum: [
|
|
1356
|
+
'planning',
|
|
1357
|
+
'setup',
|
|
1358
|
+
'implementation',
|
|
1359
|
+
'testing',
|
|
1360
|
+
'deployment',
|
|
1361
|
+
'maintenance',
|
|
1362
|
+
'refactoring',
|
|
1363
|
+
],
|
|
1212
1364
|
},
|
|
1213
1365
|
adrsToImplement: {
|
|
1214
1366
|
type: 'array',
|
|
1215
1367
|
items: { type: 'string' },
|
|
1216
|
-
description: 'List of ADR titles or file paths that need to be implemented in code'
|
|
1368
|
+
description: 'List of ADR titles or file paths that need to be implemented in code',
|
|
1217
1369
|
},
|
|
1218
1370
|
technologyStack: {
|
|
1219
1371
|
type: 'array',
|
|
1220
1372
|
items: { type: 'string' },
|
|
1221
|
-
description: 'Current technology stack (e.g., ["TypeScript", "React", "Node.js", "PostgreSQL", "Docker"])'
|
|
1373
|
+
description: 'Current technology stack (e.g., ["TypeScript", "React", "Node.js", "PostgreSQL", "Docker"])',
|
|
1222
1374
|
},
|
|
1223
1375
|
currentProgress: {
|
|
1224
1376
|
type: 'string',
|
|
1225
|
-
description: 'What has already been implemented or current state of development'
|
|
1377
|
+
description: 'What has already been implemented or current state of development',
|
|
1226
1378
|
},
|
|
1227
1379
|
teamContext: {
|
|
1228
1380
|
type: 'object',
|
|
1229
1381
|
properties: {
|
|
1230
1382
|
size: {
|
|
1231
1383
|
type: 'string',
|
|
1232
|
-
enum: ['solo', 'small_team', 'medium_team', 'large_team']
|
|
1384
|
+
enum: ['solo', 'small_team', 'medium_team', 'large_team'],
|
|
1233
1385
|
},
|
|
1234
1386
|
experienceLevel: {
|
|
1235
1387
|
type: 'string',
|
|
1236
|
-
enum: ['junior', 'mixed', 'senior', 'expert']
|
|
1237
|
-
}
|
|
1238
|
-
}
|
|
1388
|
+
enum: ['junior', 'mixed', 'senior', 'expert'],
|
|
1389
|
+
},
|
|
1390
|
+
},
|
|
1239
1391
|
},
|
|
1240
1392
|
timeline: {
|
|
1241
1393
|
type: 'string',
|
|
1242
|
-
description: 'Development timeline or deadline constraints'
|
|
1394
|
+
description: 'Development timeline or deadline constraints',
|
|
1243
1395
|
},
|
|
1244
1396
|
focusAreas: {
|
|
1245
1397
|
type: 'array',
|
|
1246
1398
|
items: { type: 'string' },
|
|
1247
|
-
description: 'Specific areas to focus on (e.g., ["API design", "database schema", "testing strategy", "deployment pipeline"])'
|
|
1248
|
-
}
|
|
1399
|
+
description: 'Specific areas to focus on (e.g., ["API design", "database schema", "testing strategy", "deployment pipeline"])',
|
|
1400
|
+
},
|
|
1249
1401
|
},
|
|
1250
|
-
required: ['developmentPhase']
|
|
1251
|
-
}
|
|
1402
|
+
required: ['developmentPhase'],
|
|
1403
|
+
},
|
|
1252
1404
|
},
|
|
1253
1405
|
{
|
|
1254
1406
|
name: 'read_file',
|
|
@@ -1258,11 +1410,11 @@ export class McpAdrAnalysisServer {
|
|
|
1258
1410
|
properties: {
|
|
1259
1411
|
path: {
|
|
1260
1412
|
type: 'string',
|
|
1261
|
-
description: 'Path to the file to read'
|
|
1262
|
-
}
|
|
1413
|
+
description: 'Path to the file to read',
|
|
1414
|
+
},
|
|
1263
1415
|
},
|
|
1264
|
-
required: ['path']
|
|
1265
|
-
}
|
|
1416
|
+
required: ['path'],
|
|
1417
|
+
},
|
|
1266
1418
|
},
|
|
1267
1419
|
{
|
|
1268
1420
|
name: 'write_file',
|
|
@@ -1272,15 +1424,15 @@ export class McpAdrAnalysisServer {
|
|
|
1272
1424
|
properties: {
|
|
1273
1425
|
path: {
|
|
1274
1426
|
type: 'string',
|
|
1275
|
-
description: 'Path to the file to write'
|
|
1427
|
+
description: 'Path to the file to write',
|
|
1276
1428
|
},
|
|
1277
1429
|
content: {
|
|
1278
1430
|
type: 'string',
|
|
1279
|
-
description: 'Content to write to the file'
|
|
1280
|
-
}
|
|
1431
|
+
description: 'Content to write to the file',
|
|
1432
|
+
},
|
|
1281
1433
|
},
|
|
1282
|
-
required: ['path', 'content']
|
|
1283
|
-
}
|
|
1434
|
+
required: ['path', 'content'],
|
|
1435
|
+
},
|
|
1284
1436
|
},
|
|
1285
1437
|
{
|
|
1286
1438
|
name: 'list_directory',
|
|
@@ -1290,11 +1442,11 @@ export class McpAdrAnalysisServer {
|
|
|
1290
1442
|
properties: {
|
|
1291
1443
|
path: {
|
|
1292
1444
|
type: 'string',
|
|
1293
|
-
description: 'Path to the directory to list'
|
|
1294
|
-
}
|
|
1445
|
+
description: 'Path to the directory to list',
|
|
1446
|
+
},
|
|
1295
1447
|
},
|
|
1296
|
-
required: ['path']
|
|
1297
|
-
}
|
|
1448
|
+
required: ['path'],
|
|
1449
|
+
},
|
|
1298
1450
|
},
|
|
1299
1451
|
{
|
|
1300
1452
|
name: 'manage_todo_json',
|
|
@@ -1304,175 +1456,191 @@ export class McpAdrAnalysisServer {
|
|
|
1304
1456
|
properties: {
|
|
1305
1457
|
operation: {
|
|
1306
1458
|
type: 'string',
|
|
1307
|
-
enum: [
|
|
1308
|
-
|
|
1459
|
+
enum: [
|
|
1460
|
+
'create_task',
|
|
1461
|
+
'update_task',
|
|
1462
|
+
'bulk_update',
|
|
1463
|
+
'get_tasks',
|
|
1464
|
+
'get_analytics',
|
|
1465
|
+
'import_adr_tasks',
|
|
1466
|
+
'sync_knowledge_graph',
|
|
1467
|
+
'sync_to_markdown',
|
|
1468
|
+
'import_from_markdown',
|
|
1469
|
+
],
|
|
1470
|
+
description: 'Operation to perform on TODO JSON backend',
|
|
1309
1471
|
},
|
|
1310
1472
|
projectPath: {
|
|
1311
1473
|
type: 'string',
|
|
1312
|
-
description: 'Project root path (uses configured PROJECT_PATH if not provided)'
|
|
1474
|
+
description: 'Project root path (uses configured PROJECT_PATH if not provided)',
|
|
1313
1475
|
},
|
|
1314
1476
|
taskId: {
|
|
1315
1477
|
type: 'string',
|
|
1316
|
-
description: 'Task ID for update operations'
|
|
1478
|
+
description: 'Task ID for update operations',
|
|
1317
1479
|
},
|
|
1318
1480
|
title: {
|
|
1319
1481
|
type: 'string',
|
|
1320
|
-
description: 'Task title for create operations'
|
|
1482
|
+
description: 'Task title for create operations',
|
|
1321
1483
|
},
|
|
1322
1484
|
description: {
|
|
1323
1485
|
type: 'string',
|
|
1324
|
-
description: 'Task description'
|
|
1486
|
+
description: 'Task description',
|
|
1325
1487
|
},
|
|
1326
1488
|
priority: {
|
|
1327
1489
|
type: 'string',
|
|
1328
1490
|
enum: ['low', 'medium', 'high', 'critical'],
|
|
1329
1491
|
default: 'medium',
|
|
1330
|
-
description: 'Task priority level'
|
|
1492
|
+
description: 'Task priority level',
|
|
1331
1493
|
},
|
|
1332
1494
|
assignee: {
|
|
1333
1495
|
type: 'string',
|
|
1334
|
-
description: 'Task assignee'
|
|
1496
|
+
description: 'Task assignee',
|
|
1335
1497
|
},
|
|
1336
1498
|
dueDate: {
|
|
1337
1499
|
type: 'string',
|
|
1338
|
-
description: 'Due date (ISO string format)'
|
|
1500
|
+
description: 'Due date (ISO string format)',
|
|
1339
1501
|
},
|
|
1340
1502
|
category: {
|
|
1341
1503
|
type: 'string',
|
|
1342
|
-
description: 'Task category'
|
|
1504
|
+
description: 'Task category',
|
|
1343
1505
|
},
|
|
1344
1506
|
tags: {
|
|
1345
1507
|
type: 'array',
|
|
1346
1508
|
items: { type: 'string' },
|
|
1347
|
-
description: 'Task tags'
|
|
1509
|
+
description: 'Task tags',
|
|
1348
1510
|
},
|
|
1349
1511
|
dependencies: {
|
|
1350
1512
|
type: 'array',
|
|
1351
1513
|
items: { type: 'string' },
|
|
1352
|
-
description: 'Task dependencies (task IDs)'
|
|
1514
|
+
description: 'Task dependencies (task IDs)',
|
|
1353
1515
|
},
|
|
1354
1516
|
intentId: {
|
|
1355
1517
|
type: 'string',
|
|
1356
|
-
description: 'Link to knowledge graph intent'
|
|
1518
|
+
description: 'Link to knowledge graph intent',
|
|
1357
1519
|
},
|
|
1358
1520
|
linkedAdrs: {
|
|
1359
1521
|
type: 'array',
|
|
1360
1522
|
items: { type: 'string' },
|
|
1361
|
-
description: 'Related ADR files'
|
|
1523
|
+
description: 'Related ADR files',
|
|
1362
1524
|
},
|
|
1363
1525
|
autoComplete: {
|
|
1364
1526
|
type: 'boolean',
|
|
1365
1527
|
default: false,
|
|
1366
|
-
description: 'Auto-complete when criteria are met'
|
|
1528
|
+
description: 'Auto-complete when criteria are met',
|
|
1367
1529
|
},
|
|
1368
1530
|
completionCriteria: {
|
|
1369
1531
|
type: 'string',
|
|
1370
|
-
description: 'Auto-completion rules'
|
|
1532
|
+
description: 'Auto-completion rules',
|
|
1371
1533
|
},
|
|
1372
1534
|
updates: {
|
|
1373
1535
|
type: 'object',
|
|
1374
1536
|
properties: {
|
|
1375
1537
|
title: { type: 'string' },
|
|
1376
1538
|
description: { type: 'string' },
|
|
1377
|
-
status: {
|
|
1539
|
+
status: {
|
|
1540
|
+
type: 'string',
|
|
1541
|
+
enum: ['pending', 'in_progress', 'completed', 'blocked', 'cancelled'],
|
|
1542
|
+
},
|
|
1378
1543
|
priority: { type: 'string', enum: ['low', 'medium', 'high', 'critical'] },
|
|
1379
1544
|
assignee: { type: 'string' },
|
|
1380
1545
|
dueDate: { type: 'string' },
|
|
1381
1546
|
progressPercentage: { type: 'number', minimum: 0, maximum: 100 },
|
|
1382
1547
|
notes: { type: 'string' },
|
|
1383
|
-
tags: { type: 'array', items: { type: 'string' } }
|
|
1548
|
+
tags: { type: 'array', items: { type: 'string' } },
|
|
1384
1549
|
},
|
|
1385
|
-
description: 'Fields to update for update operations'
|
|
1550
|
+
description: 'Fields to update for update operations',
|
|
1386
1551
|
},
|
|
1387
1552
|
reason: {
|
|
1388
1553
|
type: 'string',
|
|
1389
|
-
description: 'Reason for update (for changelog)'
|
|
1554
|
+
description: 'Reason for update (for changelog)',
|
|
1390
1555
|
},
|
|
1391
1556
|
filters: {
|
|
1392
1557
|
type: 'object',
|
|
1393
1558
|
properties: {
|
|
1394
|
-
status: {
|
|
1559
|
+
status: {
|
|
1560
|
+
type: 'string',
|
|
1561
|
+
enum: ['pending', 'in_progress', 'completed', 'blocked', 'cancelled'],
|
|
1562
|
+
},
|
|
1395
1563
|
priority: { type: 'string', enum: ['low', 'medium', 'high', 'critical'] },
|
|
1396
1564
|
assignee: { type: 'string' },
|
|
1397
1565
|
category: { type: 'string' },
|
|
1398
1566
|
hasDeadline: { type: 'boolean' },
|
|
1399
1567
|
overdue: { type: 'boolean' },
|
|
1400
|
-
tags: { type: 'array', items: { type: 'string' } }
|
|
1568
|
+
tags: { type: 'array', items: { type: 'string' } },
|
|
1401
1569
|
},
|
|
1402
|
-
description: 'Filter criteria for get_tasks operation'
|
|
1570
|
+
description: 'Filter criteria for get_tasks operation',
|
|
1403
1571
|
},
|
|
1404
1572
|
sortBy: {
|
|
1405
1573
|
type: 'string',
|
|
1406
1574
|
enum: ['priority', 'dueDate', 'createdAt', 'updatedAt'],
|
|
1407
1575
|
default: 'priority',
|
|
1408
|
-
description: 'Sort field for get_tasks operation'
|
|
1576
|
+
description: 'Sort field for get_tasks operation',
|
|
1409
1577
|
},
|
|
1410
1578
|
sortOrder: {
|
|
1411
1579
|
type: 'string',
|
|
1412
1580
|
enum: ['asc', 'desc'],
|
|
1413
1581
|
default: 'desc',
|
|
1414
|
-
description: 'Sort order for get_tasks operation'
|
|
1582
|
+
description: 'Sort order for get_tasks operation',
|
|
1415
1583
|
},
|
|
1416
1584
|
limit: {
|
|
1417
1585
|
type: 'number',
|
|
1418
|
-
description: 'Maximum number of tasks to return'
|
|
1586
|
+
description: 'Maximum number of tasks to return',
|
|
1419
1587
|
},
|
|
1420
1588
|
timeframe: {
|
|
1421
1589
|
type: 'string',
|
|
1422
1590
|
enum: ['day', 'week', 'month', 'all'],
|
|
1423
1591
|
default: 'week',
|
|
1424
|
-
description: 'Analysis timeframe for analytics'
|
|
1592
|
+
description: 'Analysis timeframe for analytics',
|
|
1425
1593
|
},
|
|
1426
1594
|
includeVelocity: {
|
|
1427
1595
|
type: 'boolean',
|
|
1428
1596
|
default: true,
|
|
1429
|
-
description: 'Include velocity metrics in analytics'
|
|
1597
|
+
description: 'Include velocity metrics in analytics',
|
|
1430
1598
|
},
|
|
1431
1599
|
includeScoring: {
|
|
1432
1600
|
type: 'boolean',
|
|
1433
1601
|
default: true,
|
|
1434
|
-
description: 'Include scoring metrics in analytics'
|
|
1602
|
+
description: 'Include scoring metrics in analytics',
|
|
1435
1603
|
},
|
|
1436
1604
|
adrDirectory: {
|
|
1437
1605
|
type: 'string',
|
|
1438
1606
|
default: 'docs/adrs',
|
|
1439
|
-
description: 'ADR directory path for imports'
|
|
1607
|
+
description: 'ADR directory path for imports',
|
|
1440
1608
|
},
|
|
1441
1609
|
preserveExisting: {
|
|
1442
1610
|
type: 'boolean',
|
|
1443
1611
|
default: true,
|
|
1444
|
-
description: 'Keep existing tasks during imports'
|
|
1612
|
+
description: 'Keep existing tasks during imports',
|
|
1445
1613
|
},
|
|
1446
1614
|
autoLinkDependencies: {
|
|
1447
1615
|
type: 'boolean',
|
|
1448
1616
|
default: true,
|
|
1449
|
-
description: 'Auto-detect task dependencies'
|
|
1617
|
+
description: 'Auto-detect task dependencies',
|
|
1450
1618
|
},
|
|
1451
1619
|
direction: {
|
|
1452
1620
|
type: 'string',
|
|
1453
1621
|
enum: ['to_kg', 'from_kg', 'bidirectional'],
|
|
1454
1622
|
default: 'bidirectional',
|
|
1455
|
-
description: 'Knowledge graph sync direction'
|
|
1623
|
+
description: 'Knowledge graph sync direction',
|
|
1456
1624
|
},
|
|
1457
1625
|
force: {
|
|
1458
1626
|
type: 'boolean',
|
|
1459
1627
|
default: false,
|
|
1460
|
-
description: 'Force operation even if conflicts exist'
|
|
1628
|
+
description: 'Force operation even if conflicts exist',
|
|
1461
1629
|
},
|
|
1462
1630
|
mergeStrategy: {
|
|
1463
1631
|
type: 'string',
|
|
1464
1632
|
enum: ['overwrite', 'merge', 'preserve_json'],
|
|
1465
1633
|
default: 'merge',
|
|
1466
|
-
description: 'Merge strategy for imports'
|
|
1634
|
+
description: 'Merge strategy for imports',
|
|
1467
1635
|
},
|
|
1468
1636
|
backupExisting: {
|
|
1469
1637
|
type: 'boolean',
|
|
1470
1638
|
default: true,
|
|
1471
|
-
description: 'Create backup before destructive operations'
|
|
1472
|
-
}
|
|
1639
|
+
description: 'Create backup before destructive operations',
|
|
1640
|
+
},
|
|
1473
1641
|
},
|
|
1474
|
-
required: ['operation']
|
|
1475
|
-
}
|
|
1642
|
+
required: ['operation'],
|
|
1643
|
+
},
|
|
1476
1644
|
},
|
|
1477
1645
|
{
|
|
1478
1646
|
name: 'generate_deployment_guidance',
|
|
@@ -1483,65 +1651,75 @@ export class McpAdrAnalysisServer {
|
|
|
1483
1651
|
adrDirectory: {
|
|
1484
1652
|
type: 'string',
|
|
1485
1653
|
default: 'docs/adrs',
|
|
1486
|
-
description: 'Directory containing ADR files'
|
|
1654
|
+
description: 'Directory containing ADR files',
|
|
1487
1655
|
},
|
|
1488
1656
|
environment: {
|
|
1489
1657
|
type: 'string',
|
|
1490
1658
|
enum: ['development', 'staging', 'production', 'all'],
|
|
1491
1659
|
default: 'production',
|
|
1492
|
-
description: 'Target deployment environment'
|
|
1660
|
+
description: 'Target deployment environment',
|
|
1493
1661
|
},
|
|
1494
1662
|
format: {
|
|
1495
1663
|
type: 'string',
|
|
1496
1664
|
enum: ['markdown', 'scripts', 'structured', 'all'],
|
|
1497
1665
|
default: 'markdown',
|
|
1498
|
-
description: 'Output format for guidance'
|
|
1666
|
+
description: 'Output format for guidance',
|
|
1499
1667
|
},
|
|
1500
1668
|
projectPath: {
|
|
1501
1669
|
type: 'string',
|
|
1502
|
-
description: 'Project root path (optional, uses configured PROJECT_PATH if not provided)'
|
|
1670
|
+
description: 'Project root path (optional, uses configured PROJECT_PATH if not provided)',
|
|
1503
1671
|
},
|
|
1504
1672
|
includeScripts: {
|
|
1505
1673
|
type: 'boolean',
|
|
1506
1674
|
default: true,
|
|
1507
|
-
description: 'Generate deployment scripts'
|
|
1675
|
+
description: 'Generate deployment scripts',
|
|
1508
1676
|
},
|
|
1509
1677
|
includeConfigs: {
|
|
1510
1678
|
type: 'boolean',
|
|
1511
1679
|
default: true,
|
|
1512
|
-
description: 'Generate configuration files'
|
|
1680
|
+
description: 'Generate configuration files',
|
|
1513
1681
|
},
|
|
1514
1682
|
includeValidation: {
|
|
1515
1683
|
type: 'boolean',
|
|
1516
1684
|
default: true,
|
|
1517
|
-
description: 'Include validation and health checks'
|
|
1685
|
+
description: 'Include validation and health checks',
|
|
1518
1686
|
},
|
|
1519
1687
|
technologyFilter: {
|
|
1520
1688
|
type: 'array',
|
|
1521
1689
|
items: {
|
|
1522
1690
|
type: 'string',
|
|
1523
|
-
enum: [
|
|
1691
|
+
enum: [
|
|
1692
|
+
'containerization',
|
|
1693
|
+
'database',
|
|
1694
|
+
'web-server',
|
|
1695
|
+
'cache',
|
|
1696
|
+
'message-queue',
|
|
1697
|
+
'monitoring',
|
|
1698
|
+
'security',
|
|
1699
|
+
'ci-cd',
|
|
1700
|
+
'infrastructure',
|
|
1701
|
+
],
|
|
1524
1702
|
},
|
|
1525
|
-
description: 'Filter by specific technology categories'
|
|
1703
|
+
description: 'Filter by specific technology categories',
|
|
1526
1704
|
},
|
|
1527
1705
|
customRequirements: {
|
|
1528
1706
|
type: 'array',
|
|
1529
1707
|
items: { type: 'string' },
|
|
1530
|
-
description: 'Additional custom requirements'
|
|
1708
|
+
description: 'Additional custom requirements',
|
|
1531
1709
|
},
|
|
1532
1710
|
includeRollback: {
|
|
1533
1711
|
type: 'boolean',
|
|
1534
1712
|
default: true,
|
|
1535
|
-
description: 'Include rollback procedures'
|
|
1713
|
+
description: 'Include rollback procedures',
|
|
1536
1714
|
},
|
|
1537
1715
|
generateFiles: {
|
|
1538
1716
|
type: 'boolean',
|
|
1539
1717
|
default: false,
|
|
1540
|
-
description: 'Actually generate files (vs just guidance)'
|
|
1541
|
-
}
|
|
1718
|
+
description: 'Actually generate files (vs just guidance)',
|
|
1719
|
+
},
|
|
1542
1720
|
},
|
|
1543
|
-
required: []
|
|
1544
|
-
}
|
|
1721
|
+
required: [],
|
|
1722
|
+
},
|
|
1545
1723
|
},
|
|
1546
1724
|
{
|
|
1547
1725
|
name: 'smart_git_push',
|
|
@@ -1551,11 +1729,11 @@ export class McpAdrAnalysisServer {
|
|
|
1551
1729
|
properties: {
|
|
1552
1730
|
branch: {
|
|
1553
1731
|
type: 'string',
|
|
1554
|
-
description: 'Target branch for push (optional, uses current branch if not specified)'
|
|
1732
|
+
description: 'Target branch for push (optional, uses current branch if not specified)',
|
|
1555
1733
|
},
|
|
1556
1734
|
message: {
|
|
1557
1735
|
type: 'string',
|
|
1558
|
-
description: 'Commit message (optional, commits staged files if provided)'
|
|
1736
|
+
description: 'Commit message (optional, commits staged files if provided)',
|
|
1559
1737
|
},
|
|
1560
1738
|
testResults: {
|
|
1561
1739
|
type: 'object',
|
|
@@ -1563,36 +1741,36 @@ export class McpAdrAnalysisServer {
|
|
|
1563
1741
|
properties: {
|
|
1564
1742
|
success: {
|
|
1565
1743
|
type: 'boolean',
|
|
1566
|
-
description: 'Whether all tests passed'
|
|
1744
|
+
description: 'Whether all tests passed',
|
|
1567
1745
|
},
|
|
1568
1746
|
testsRun: {
|
|
1569
1747
|
type: 'number',
|
|
1570
|
-
description: 'Total number of tests executed'
|
|
1748
|
+
description: 'Total number of tests executed',
|
|
1571
1749
|
},
|
|
1572
1750
|
testsPassed: {
|
|
1573
1751
|
type: 'number',
|
|
1574
|
-
description: 'Number of tests that passed'
|
|
1752
|
+
description: 'Number of tests that passed',
|
|
1575
1753
|
},
|
|
1576
1754
|
testsFailed: {
|
|
1577
1755
|
type: 'number',
|
|
1578
|
-
description: 'Number of tests that failed'
|
|
1756
|
+
description: 'Number of tests that failed',
|
|
1579
1757
|
},
|
|
1580
1758
|
duration: {
|
|
1581
1759
|
type: 'number',
|
|
1582
|
-
description: 'Test execution duration in seconds'
|
|
1760
|
+
description: 'Test execution duration in seconds',
|
|
1583
1761
|
},
|
|
1584
1762
|
command: {
|
|
1585
1763
|
type: 'string',
|
|
1586
|
-
description: 'Test command that was executed by AI'
|
|
1764
|
+
description: 'Test command that was executed by AI',
|
|
1587
1765
|
},
|
|
1588
1766
|
output: {
|
|
1589
1767
|
type: 'string',
|
|
1590
|
-
description: 'Test execution output'
|
|
1768
|
+
description: 'Test execution output',
|
|
1591
1769
|
},
|
|
1592
1770
|
failureDetails: {
|
|
1593
1771
|
type: 'array',
|
|
1594
1772
|
items: { type: 'string' },
|
|
1595
|
-
description: 'Details of test failures'
|
|
1773
|
+
description: 'Details of test failures',
|
|
1596
1774
|
},
|
|
1597
1775
|
testTypes: {
|
|
1598
1776
|
type: 'object',
|
|
@@ -1601,34 +1779,34 @@ export class McpAdrAnalysisServer {
|
|
|
1601
1779
|
type: 'object',
|
|
1602
1780
|
properties: {
|
|
1603
1781
|
passed: { type: 'number' },
|
|
1604
|
-
failed: { type: 'number' }
|
|
1605
|
-
}
|
|
1606
|
-
}
|
|
1607
|
-
}
|
|
1782
|
+
failed: { type: 'number' },
|
|
1783
|
+
},
|
|
1784
|
+
},
|
|
1785
|
+
},
|
|
1608
1786
|
},
|
|
1609
|
-
required: ['success', 'testsRun', 'testsPassed', 'testsFailed']
|
|
1787
|
+
required: ['success', 'testsRun', 'testsPassed', 'testsFailed'],
|
|
1610
1788
|
},
|
|
1611
1789
|
skipSecurity: {
|
|
1612
1790
|
type: 'boolean',
|
|
1613
1791
|
default: false,
|
|
1614
|
-
description: 'Skip security scanning (NOT RECOMMENDED)'
|
|
1792
|
+
description: 'Skip security scanning (NOT RECOMMENDED)',
|
|
1615
1793
|
},
|
|
1616
1794
|
dryRun: {
|
|
1617
1795
|
type: 'boolean',
|
|
1618
1796
|
default: false,
|
|
1619
|
-
description: 'Show what would be pushed without actually pushing'
|
|
1797
|
+
description: 'Show what would be pushed without actually pushing',
|
|
1620
1798
|
},
|
|
1621
1799
|
projectPath: {
|
|
1622
1800
|
type: 'string',
|
|
1623
|
-
description: 'Path to project directory (defaults to current working directory)'
|
|
1801
|
+
description: 'Path to project directory (defaults to current working directory)',
|
|
1624
1802
|
},
|
|
1625
1803
|
forceUnsafe: {
|
|
1626
1804
|
type: 'boolean',
|
|
1627
1805
|
default: false,
|
|
1628
|
-
description: 'Override security blocks and test failures (DANGEROUS)'
|
|
1629
|
-
}
|
|
1630
|
-
}
|
|
1631
|
-
}
|
|
1806
|
+
description: 'Override security blocks and test failures (DANGEROUS)',
|
|
1807
|
+
},
|
|
1808
|
+
},
|
|
1809
|
+
},
|
|
1632
1810
|
},
|
|
1633
1811
|
{
|
|
1634
1812
|
name: 'deployment_readiness',
|
|
@@ -1638,222 +1816,267 @@ export class McpAdrAnalysisServer {
|
|
|
1638
1816
|
properties: {
|
|
1639
1817
|
operation: {
|
|
1640
1818
|
type: 'string',
|
|
1641
|
-
enum: [
|
|
1642
|
-
|
|
1819
|
+
enum: [
|
|
1820
|
+
'check_readiness',
|
|
1821
|
+
'validate_production',
|
|
1822
|
+
'test_validation',
|
|
1823
|
+
'deployment_history',
|
|
1824
|
+
'full_audit',
|
|
1825
|
+
'emergency_override',
|
|
1826
|
+
],
|
|
1827
|
+
description: 'Type of deployment readiness check to perform',
|
|
1643
1828
|
},
|
|
1644
1829
|
projectPath: {
|
|
1645
1830
|
type: 'string',
|
|
1646
|
-
description: 'Path to project directory (defaults to current working directory)'
|
|
1831
|
+
description: 'Path to project directory (defaults to current working directory)',
|
|
1647
1832
|
},
|
|
1648
1833
|
targetEnvironment: {
|
|
1649
1834
|
type: 'string',
|
|
1650
1835
|
enum: ['staging', 'production', 'integration'],
|
|
1651
1836
|
default: 'production',
|
|
1652
|
-
description: 'Target deployment environment'
|
|
1837
|
+
description: 'Target deployment environment',
|
|
1653
1838
|
},
|
|
1654
1839
|
strictMode: {
|
|
1655
1840
|
type: 'boolean',
|
|
1656
1841
|
default: true,
|
|
1657
|
-
description: 'Enable strict validation (recommended for production)'
|
|
1842
|
+
description: 'Enable strict validation (recommended for production)',
|
|
1658
1843
|
},
|
|
1659
1844
|
allowMockCode: {
|
|
1660
1845
|
type: 'boolean',
|
|
1661
1846
|
default: false,
|
|
1662
|
-
description: 'Allow mock code in deployment (NOT RECOMMENDED)'
|
|
1847
|
+
description: 'Allow mock code in deployment (NOT RECOMMENDED)',
|
|
1663
1848
|
},
|
|
1664
1849
|
productionCodeThreshold: {
|
|
1665
1850
|
type: 'number',
|
|
1666
1851
|
default: 85,
|
|
1667
|
-
description: 'Minimum production code quality score (0-100)'
|
|
1852
|
+
description: 'Minimum production code quality score (0-100)',
|
|
1668
1853
|
},
|
|
1669
1854
|
mockCodeMaxAllowed: {
|
|
1670
1855
|
type: 'number',
|
|
1671
1856
|
default: 0,
|
|
1672
|
-
description: 'Maximum mock code indicators allowed'
|
|
1857
|
+
description: 'Maximum mock code indicators allowed',
|
|
1673
1858
|
},
|
|
1674
1859
|
maxTestFailures: {
|
|
1675
1860
|
type: 'number',
|
|
1676
1861
|
default: 0,
|
|
1677
|
-
description: 'Maximum test failures allowed (0 = zero tolerance)'
|
|
1862
|
+
description: 'Maximum test failures allowed (0 = zero tolerance)',
|
|
1678
1863
|
},
|
|
1679
1864
|
requireTestCoverage: {
|
|
1680
1865
|
type: 'number',
|
|
1681
1866
|
default: 80,
|
|
1682
|
-
description: 'Minimum test coverage percentage required'
|
|
1867
|
+
description: 'Minimum test coverage percentage required',
|
|
1683
1868
|
},
|
|
1684
1869
|
blockOnFailingTests: {
|
|
1685
1870
|
type: 'boolean',
|
|
1686
1871
|
default: true,
|
|
1687
|
-
description: 'Block deployment if tests are failing'
|
|
1872
|
+
description: 'Block deployment if tests are failing',
|
|
1688
1873
|
},
|
|
1689
1874
|
testSuiteRequired: {
|
|
1690
1875
|
type: 'array',
|
|
1691
1876
|
items: { type: 'string' },
|
|
1692
1877
|
default: [],
|
|
1693
|
-
description: 'Required test suites that must pass'
|
|
1878
|
+
description: 'Required test suites that must pass',
|
|
1694
1879
|
},
|
|
1695
1880
|
maxRecentFailures: {
|
|
1696
1881
|
type: 'number',
|
|
1697
1882
|
default: 2,
|
|
1698
|
-
description: 'Maximum recent deployment failures allowed'
|
|
1883
|
+
description: 'Maximum recent deployment failures allowed',
|
|
1699
1884
|
},
|
|
1700
1885
|
deploymentSuccessThreshold: {
|
|
1701
1886
|
type: 'number',
|
|
1702
1887
|
default: 80,
|
|
1703
|
-
description: 'Minimum deployment success rate required (%)'
|
|
1888
|
+
description: 'Minimum deployment success rate required (%)',
|
|
1704
1889
|
},
|
|
1705
1890
|
blockOnRecentFailures: {
|
|
1706
1891
|
type: 'boolean',
|
|
1707
1892
|
default: true,
|
|
1708
|
-
description: 'Block if recent deployments failed'
|
|
1893
|
+
description: 'Block if recent deployments failed',
|
|
1709
1894
|
},
|
|
1710
1895
|
rollbackFrequencyThreshold: {
|
|
1711
1896
|
type: 'number',
|
|
1712
1897
|
default: 20,
|
|
1713
|
-
description: 'Maximum rollback frequency allowed (%)'
|
|
1898
|
+
description: 'Maximum rollback frequency allowed (%)',
|
|
1714
1899
|
},
|
|
1715
1900
|
requireAdrCompliance: {
|
|
1716
1901
|
type: 'boolean',
|
|
1717
1902
|
default: true,
|
|
1718
|
-
description: 'Require ADR compliance validation'
|
|
1903
|
+
description: 'Require ADR compliance validation',
|
|
1719
1904
|
},
|
|
1720
1905
|
integrateTodoTasks: {
|
|
1721
1906
|
type: 'boolean',
|
|
1722
1907
|
default: true,
|
|
1723
|
-
description: 'Auto-create blocking tasks for issues'
|
|
1908
|
+
description: 'Auto-create blocking tasks for issues',
|
|
1724
1909
|
},
|
|
1725
1910
|
updateHealthScoring: {
|
|
1726
1911
|
type: 'boolean',
|
|
1727
1912
|
default: true,
|
|
1728
|
-
description: 'Update project health scores'
|
|
1913
|
+
description: 'Update project health scores',
|
|
1729
1914
|
},
|
|
1730
1915
|
triggerSmartGitPush: {
|
|
1731
1916
|
type: 'boolean',
|
|
1732
1917
|
default: false,
|
|
1733
|
-
description: 'Trigger smart git push validation'
|
|
1918
|
+
description: 'Trigger smart git push validation',
|
|
1734
1919
|
},
|
|
1735
1920
|
emergencyBypass: {
|
|
1736
1921
|
type: 'boolean',
|
|
1737
1922
|
default: false,
|
|
1738
|
-
description: 'Emergency bypass for critical fixes'
|
|
1923
|
+
description: 'Emergency bypass for critical fixes',
|
|
1739
1924
|
},
|
|
1740
1925
|
businessJustification: {
|
|
1741
1926
|
type: 'string',
|
|
1742
|
-
description: 'Business justification for overrides (required for emergency_override)'
|
|
1927
|
+
description: 'Business justification for overrides (required for emergency_override)',
|
|
1743
1928
|
},
|
|
1744
1929
|
approvalRequired: {
|
|
1745
1930
|
type: 'boolean',
|
|
1746
1931
|
default: true,
|
|
1747
|
-
description: 'Require approval for overrides'
|
|
1748
|
-
}
|
|
1932
|
+
description: 'Require approval for overrides',
|
|
1933
|
+
},
|
|
1934
|
+
enableMemoryIntegration: {
|
|
1935
|
+
type: 'boolean',
|
|
1936
|
+
description: 'Enable memory entity storage for deployment assessment tracking and historical analysis',
|
|
1937
|
+
default: true,
|
|
1938
|
+
},
|
|
1939
|
+
migrateExistingHistory: {
|
|
1940
|
+
type: 'boolean',
|
|
1941
|
+
description: 'Migrate existing JSON-based deployment history to memory entities',
|
|
1942
|
+
default: true,
|
|
1943
|
+
},
|
|
1749
1944
|
},
|
|
1750
|
-
required: ['operation']
|
|
1751
|
-
}
|
|
1945
|
+
required: ['operation'],
|
|
1946
|
+
},
|
|
1752
1947
|
},
|
|
1753
1948
|
{
|
|
1754
1949
|
name: 'troubleshoot_guided_workflow',
|
|
1755
|
-
description: 'Structured failure analysis and test plan generation - provide JSON failure info to get specific test commands',
|
|
1950
|
+
description: 'Structured failure analysis and test plan generation with memory integration for troubleshooting session tracking and intelligent ADR/research suggestion capabilities - provide JSON failure info to get specific test commands',
|
|
1756
1951
|
inputSchema: {
|
|
1757
1952
|
type: 'object',
|
|
1758
1953
|
properties: {
|
|
1759
1954
|
operation: {
|
|
1760
1955
|
type: 'string',
|
|
1761
1956
|
enum: ['analyze_failure', 'generate_test_plan', 'full_workflow'],
|
|
1762
|
-
description: 'Type of troubleshooting operation'
|
|
1957
|
+
description: 'Type of troubleshooting operation',
|
|
1763
1958
|
},
|
|
1764
1959
|
failure: {
|
|
1765
1960
|
type: 'object',
|
|
1766
1961
|
properties: {
|
|
1767
1962
|
failureType: {
|
|
1768
1963
|
type: 'string',
|
|
1769
|
-
enum: [
|
|
1770
|
-
|
|
1964
|
+
enum: [
|
|
1965
|
+
'test_failure',
|
|
1966
|
+
'deployment_failure',
|
|
1967
|
+
'build_failure',
|
|
1968
|
+
'runtime_error',
|
|
1969
|
+
'performance_issue',
|
|
1970
|
+
'security_issue',
|
|
1971
|
+
'other',
|
|
1972
|
+
],
|
|
1973
|
+
description: 'Type of failure',
|
|
1771
1974
|
},
|
|
1772
1975
|
failureDetails: {
|
|
1773
1976
|
type: 'object',
|
|
1774
1977
|
properties: {
|
|
1775
1978
|
command: {
|
|
1776
1979
|
type: 'string',
|
|
1777
|
-
description: 'Command that failed (optional)'
|
|
1980
|
+
description: 'Command that failed (optional)',
|
|
1778
1981
|
},
|
|
1779
1982
|
exitCode: {
|
|
1780
1983
|
type: 'number',
|
|
1781
|
-
description: 'Exit code of failed process (optional)'
|
|
1984
|
+
description: 'Exit code of failed process (optional)',
|
|
1782
1985
|
},
|
|
1783
1986
|
errorMessage: {
|
|
1784
1987
|
type: 'string',
|
|
1785
|
-
description: 'Primary error message'
|
|
1988
|
+
description: 'Primary error message',
|
|
1786
1989
|
},
|
|
1787
1990
|
stackTrace: {
|
|
1788
1991
|
type: 'string',
|
|
1789
|
-
description: 'Stack trace if available (optional)'
|
|
1992
|
+
description: 'Stack trace if available (optional)',
|
|
1790
1993
|
},
|
|
1791
1994
|
logOutput: {
|
|
1792
1995
|
type: 'string',
|
|
1793
|
-
description: 'Relevant log output (optional)'
|
|
1996
|
+
description: 'Relevant log output (optional)',
|
|
1794
1997
|
},
|
|
1795
1998
|
environment: {
|
|
1796
1999
|
type: 'string',
|
|
1797
|
-
description: 'Environment where failure occurred (optional)'
|
|
2000
|
+
description: 'Environment where failure occurred (optional)',
|
|
1798
2001
|
},
|
|
1799
2002
|
timestamp: {
|
|
1800
2003
|
type: 'string',
|
|
1801
|
-
description: 'When the failure occurred (optional)'
|
|
2004
|
+
description: 'When the failure occurred (optional)',
|
|
1802
2005
|
},
|
|
1803
2006
|
affectedFiles: {
|
|
1804
2007
|
type: 'array',
|
|
1805
2008
|
items: { type: 'string' },
|
|
1806
|
-
description: 'Files involved in the failure (optional)'
|
|
1807
|
-
}
|
|
2009
|
+
description: 'Files involved in the failure (optional)',
|
|
2010
|
+
},
|
|
1808
2011
|
},
|
|
1809
2012
|
required: ['errorMessage'],
|
|
1810
|
-
description: 'Detailed failure information'
|
|
2013
|
+
description: 'Detailed failure information',
|
|
1811
2014
|
},
|
|
1812
2015
|
context: {
|
|
1813
2016
|
type: 'object',
|
|
1814
2017
|
properties: {
|
|
1815
2018
|
recentChanges: {
|
|
1816
2019
|
type: 'string',
|
|
1817
|
-
description: 'Recent changes that might be related (optional)'
|
|
2020
|
+
description: 'Recent changes that might be related (optional)',
|
|
1818
2021
|
},
|
|
1819
2022
|
reproducible: {
|
|
1820
2023
|
type: 'boolean',
|
|
1821
|
-
description: 'Whether the failure is reproducible (optional)'
|
|
2024
|
+
description: 'Whether the failure is reproducible (optional)',
|
|
1822
2025
|
},
|
|
1823
2026
|
frequency: {
|
|
1824
2027
|
type: 'string',
|
|
1825
|
-
description: 'How often this failure occurs (optional)'
|
|
2028
|
+
description: 'How often this failure occurs (optional)',
|
|
1826
2029
|
},
|
|
1827
2030
|
impact: {
|
|
1828
2031
|
type: 'string',
|
|
1829
2032
|
enum: ['low', 'medium', 'high', 'critical'],
|
|
1830
|
-
description: 'Impact level of the failure (optional)'
|
|
1831
|
-
}
|
|
2033
|
+
description: 'Impact level of the failure (optional)',
|
|
2034
|
+
},
|
|
1832
2035
|
},
|
|
1833
|
-
description: 'Additional context about the failure (optional)'
|
|
1834
|
-
}
|
|
2036
|
+
description: 'Additional context about the failure (optional)',
|
|
2037
|
+
},
|
|
1835
2038
|
},
|
|
1836
2039
|
required: ['failureType', 'failureDetails'],
|
|
1837
|
-
description: 'Structured failure information (required for analyze_failure and generate_test_plan)'
|
|
2040
|
+
description: 'Structured failure information (required for analyze_failure and generate_test_plan)',
|
|
1838
2041
|
},
|
|
1839
2042
|
projectPath: {
|
|
1840
2043
|
type: 'string',
|
|
1841
|
-
description: 'Path to project directory (optional)'
|
|
2044
|
+
description: 'Path to project directory (optional)',
|
|
1842
2045
|
},
|
|
1843
2046
|
adrDirectory: {
|
|
1844
2047
|
type: 'string',
|
|
1845
2048
|
description: 'ADR directory path',
|
|
1846
|
-
default: 'docs/adrs'
|
|
2049
|
+
default: 'docs/adrs',
|
|
1847
2050
|
},
|
|
1848
2051
|
todoPath: {
|
|
1849
2052
|
type: 'string',
|
|
1850
2053
|
description: 'Path to TODO.md file',
|
|
1851
|
-
default: 'TODO.md'
|
|
2054
|
+
default: 'TODO.md',
|
|
2055
|
+
},
|
|
2056
|
+
enableMemoryIntegration: {
|
|
2057
|
+
type: 'boolean',
|
|
2058
|
+
description: 'Enable memory entity storage for troubleshooting session tracking and pattern recognition',
|
|
2059
|
+
default: true,
|
|
2060
|
+
},
|
|
2061
|
+
enablePatternRecognition: {
|
|
2062
|
+
type: 'boolean',
|
|
2063
|
+
description: 'Enable automatic pattern recognition and failure classification',
|
|
2064
|
+
default: true,
|
|
2065
|
+
},
|
|
2066
|
+
enableAdrSuggestion: {
|
|
2067
|
+
type: 'boolean',
|
|
2068
|
+
description: 'Enable automatic ADR suggestion based on recurring failures',
|
|
2069
|
+
default: true,
|
|
2070
|
+
},
|
|
2071
|
+
enableResearchGeneration: {
|
|
2072
|
+
type: 'boolean',
|
|
2073
|
+
description: 'Enable automatic research question generation for persistent problems',
|
|
2074
|
+
default: true,
|
|
1852
2075
|
},
|
|
1853
|
-
conversationContext: CONVERSATION_CONTEXT_SCHEMA
|
|
2076
|
+
conversationContext: CONVERSATION_CONTEXT_SCHEMA,
|
|
1854
2077
|
},
|
|
1855
|
-
required: ['operation']
|
|
1856
|
-
}
|
|
2078
|
+
required: ['operation'],
|
|
2079
|
+
},
|
|
1857
2080
|
},
|
|
1858
2081
|
{
|
|
1859
2082
|
name: 'smart_score',
|
|
@@ -1863,70 +2086,91 @@ export class McpAdrAnalysisServer {
|
|
|
1863
2086
|
properties: {
|
|
1864
2087
|
operation: {
|
|
1865
2088
|
type: 'string',
|
|
1866
|
-
enum: [
|
|
1867
|
-
|
|
2089
|
+
enum: [
|
|
2090
|
+
'recalculate_scores',
|
|
2091
|
+
'sync_scores',
|
|
2092
|
+
'diagnose_scores',
|
|
2093
|
+
'optimize_weights',
|
|
2094
|
+
'reset_scores',
|
|
2095
|
+
'get_score_trends',
|
|
2096
|
+
'get_intent_scores',
|
|
2097
|
+
],
|
|
2098
|
+
description: 'Smart scoring operation to perform',
|
|
1868
2099
|
},
|
|
1869
2100
|
projectPath: {
|
|
1870
2101
|
type: 'string',
|
|
1871
|
-
description: 'Path to project directory'
|
|
2102
|
+
description: 'Path to project directory',
|
|
1872
2103
|
},
|
|
1873
2104
|
components: {
|
|
1874
2105
|
type: 'array',
|
|
1875
2106
|
items: {
|
|
1876
2107
|
type: 'string',
|
|
1877
|
-
enum: [
|
|
2108
|
+
enum: [
|
|
2109
|
+
'task_completion',
|
|
2110
|
+
'deployment_readiness',
|
|
2111
|
+
'architecture_compliance',
|
|
2112
|
+
'security_posture',
|
|
2113
|
+
'code_quality',
|
|
2114
|
+
'all',
|
|
2115
|
+
],
|
|
1878
2116
|
},
|
|
1879
2117
|
default: ['all'],
|
|
1880
|
-
description: 'Score components to recalculate (for recalculate_scores operation)'
|
|
2118
|
+
description: 'Score components to recalculate (for recalculate_scores operation)',
|
|
1881
2119
|
},
|
|
1882
2120
|
forceUpdate: {
|
|
1883
2121
|
type: 'boolean',
|
|
1884
2122
|
default: false,
|
|
1885
|
-
description: 'Force update even if data is fresh'
|
|
2123
|
+
description: 'Force update even if data is fresh',
|
|
1886
2124
|
},
|
|
1887
2125
|
updateSources: {
|
|
1888
2126
|
type: 'boolean',
|
|
1889
2127
|
default: true,
|
|
1890
|
-
description: 'Trigger source tool updates before recalculating'
|
|
2128
|
+
description: 'Trigger source tool updates before recalculating',
|
|
1891
2129
|
},
|
|
1892
2130
|
todoPath: {
|
|
1893
2131
|
type: 'string',
|
|
1894
2132
|
default: 'TODO.md',
|
|
1895
|
-
description: 'Path to TODO.md file (for sync_scores operation)'
|
|
2133
|
+
description: 'Path to TODO.md file (for sync_scores operation)',
|
|
1896
2134
|
},
|
|
1897
2135
|
triggerTools: {
|
|
1898
2136
|
type: 'array',
|
|
1899
2137
|
items: {
|
|
1900
2138
|
type: 'string',
|
|
1901
|
-
enum: [
|
|
2139
|
+
enum: [
|
|
2140
|
+
'manage_todo_json',
|
|
2141
|
+
'smart_git_push',
|
|
2142
|
+
'compare_adr_progress',
|
|
2143
|
+
'analyze_content_security',
|
|
2144
|
+
'validate_rules',
|
|
2145
|
+
],
|
|
1902
2146
|
},
|
|
1903
|
-
description: 'Tools to trigger for fresh data (for sync_scores operation)'
|
|
2147
|
+
description: 'Tools to trigger for fresh data (for sync_scores operation)',
|
|
1904
2148
|
},
|
|
1905
2149
|
rebalanceWeights: {
|
|
1906
2150
|
type: 'boolean',
|
|
1907
2151
|
default: false,
|
|
1908
|
-
description: 'Recalculate optimal scoring weights (for sync_scores operation)'
|
|
2152
|
+
description: 'Recalculate optimal scoring weights (for sync_scores operation)',
|
|
1909
2153
|
},
|
|
1910
2154
|
includeHistory: {
|
|
1911
2155
|
type: 'boolean',
|
|
1912
2156
|
default: true,
|
|
1913
|
-
description: 'Include score history analysis (for diagnose_scores operation)'
|
|
2157
|
+
description: 'Include score history analysis (for diagnose_scores operation)',
|
|
1914
2158
|
},
|
|
1915
2159
|
checkDataFreshness: {
|
|
1916
2160
|
type: 'boolean',
|
|
1917
2161
|
default: true,
|
|
1918
|
-
description: 'Validate data freshness across tools (for diagnose_scores operation)'
|
|
2162
|
+
description: 'Validate data freshness across tools (for diagnose_scores operation)',
|
|
1919
2163
|
},
|
|
1920
2164
|
suggestImprovements: {
|
|
1921
2165
|
type: 'boolean',
|
|
1922
2166
|
default: true,
|
|
1923
|
-
description: 'Provide score improvement suggestions (for diagnose_scores operation)'
|
|
2167
|
+
description: 'Provide score improvement suggestions (for diagnose_scores operation)',
|
|
1924
2168
|
},
|
|
1925
2169
|
analysisMode: {
|
|
1926
2170
|
type: 'string',
|
|
1927
2171
|
enum: ['current_state', 'historical_data', 'project_type'],
|
|
1928
2172
|
default: 'current_state',
|
|
1929
|
-
description: 'Method for weight optimization (for optimize_weights operation)'
|
|
2173
|
+
description: 'Method for weight optimization (for optimize_weights operation)',
|
|
1930
2174
|
},
|
|
1931
2175
|
customWeights: {
|
|
1932
2176
|
type: 'object',
|
|
@@ -1935,38 +2179,45 @@ export class McpAdrAnalysisServer {
|
|
|
1935
2179
|
deploymentReadiness: { type: 'number', minimum: 0, maximum: 1 },
|
|
1936
2180
|
architectureCompliance: { type: 'number', minimum: 0, maximum: 1 },
|
|
1937
2181
|
securityPosture: { type: 'number', minimum: 0, maximum: 1 },
|
|
1938
|
-
codeQuality: { type: 'number', minimum: 0, maximum: 1 }
|
|
2182
|
+
codeQuality: { type: 'number', minimum: 0, maximum: 1 },
|
|
1939
2183
|
},
|
|
1940
|
-
description: 'Custom weight overrides (for optimize_weights operation)'
|
|
2184
|
+
description: 'Custom weight overrides (for optimize_weights operation)',
|
|
1941
2185
|
},
|
|
1942
2186
|
previewOnly: {
|
|
1943
2187
|
type: 'boolean',
|
|
1944
2188
|
default: false,
|
|
1945
|
-
description: 'Preview changes without applying (for optimize_weights operation)'
|
|
2189
|
+
description: 'Preview changes without applying (for optimize_weights operation)',
|
|
1946
2190
|
},
|
|
1947
2191
|
component: {
|
|
1948
2192
|
type: 'string',
|
|
1949
|
-
enum: [
|
|
2193
|
+
enum: [
|
|
2194
|
+
'task_completion',
|
|
2195
|
+
'deployment_readiness',
|
|
2196
|
+
'architecture_compliance',
|
|
2197
|
+
'security_posture',
|
|
2198
|
+
'code_quality',
|
|
2199
|
+
'all',
|
|
2200
|
+
],
|
|
1950
2201
|
default: 'all',
|
|
1951
|
-
description: 'Score component to reset (for reset_scores operation)'
|
|
2202
|
+
description: 'Score component to reset (for reset_scores operation)',
|
|
1952
2203
|
},
|
|
1953
2204
|
preserveHistory: {
|
|
1954
2205
|
type: 'boolean',
|
|
1955
2206
|
default: true,
|
|
1956
|
-
description: 'Preserve score history in backup (for reset_scores operation)'
|
|
2207
|
+
description: 'Preserve score history in backup (for reset_scores operation)',
|
|
1957
2208
|
},
|
|
1958
2209
|
recalculateAfterReset: {
|
|
1959
2210
|
type: 'boolean',
|
|
1960
2211
|
default: true,
|
|
1961
|
-
description: 'Immediately recalculate after reset (for reset_scores operation)'
|
|
2212
|
+
description: 'Immediately recalculate after reset (for reset_scores operation)',
|
|
1962
2213
|
},
|
|
1963
2214
|
intentId: {
|
|
1964
2215
|
type: 'string',
|
|
1965
|
-
description: 'Intent ID to get score trends for (for get_intent_scores operation)'
|
|
1966
|
-
}
|
|
2216
|
+
description: 'Intent ID to get score trends for (for get_intent_scores operation)',
|
|
2217
|
+
},
|
|
1967
2218
|
},
|
|
1968
|
-
required: ['operation', 'projectPath']
|
|
1969
|
-
}
|
|
2219
|
+
required: ['operation', 'projectPath'],
|
|
2220
|
+
},
|
|
1970
2221
|
},
|
|
1971
2222
|
{
|
|
1972
2223
|
name: 'mcp_planning',
|
|
@@ -1976,20 +2227,27 @@ export class McpAdrAnalysisServer {
|
|
|
1976
2227
|
properties: {
|
|
1977
2228
|
operation: {
|
|
1978
2229
|
type: 'string',
|
|
1979
|
-
enum: [
|
|
1980
|
-
|
|
2230
|
+
enum: [
|
|
2231
|
+
'create_project',
|
|
2232
|
+
'manage_phases',
|
|
2233
|
+
'track_progress',
|
|
2234
|
+
'manage_resources',
|
|
2235
|
+
'risk_analysis',
|
|
2236
|
+
'generate_reports',
|
|
2237
|
+
],
|
|
2238
|
+
description: 'Project planning operation to perform',
|
|
1981
2239
|
},
|
|
1982
2240
|
projectPath: {
|
|
1983
2241
|
type: 'string',
|
|
1984
|
-
description: 'Project root path'
|
|
2242
|
+
description: 'Project root path',
|
|
1985
2243
|
},
|
|
1986
2244
|
projectName: {
|
|
1987
2245
|
type: 'string',
|
|
1988
|
-
description: 'Project name (for create_project operation)'
|
|
2246
|
+
description: 'Project name (for create_project operation)',
|
|
1989
2247
|
},
|
|
1990
2248
|
description: {
|
|
1991
2249
|
type: 'string',
|
|
1992
|
-
description: 'Project description (for create_project operation)'
|
|
2250
|
+
description: 'Project description (for create_project operation)',
|
|
1993
2251
|
},
|
|
1994
2252
|
phases: {
|
|
1995
2253
|
type: 'array',
|
|
@@ -2001,17 +2259,17 @@ export class McpAdrAnalysisServer {
|
|
|
2001
2259
|
dependencies: {
|
|
2002
2260
|
type: 'array',
|
|
2003
2261
|
items: { type: 'string' },
|
|
2004
|
-
default: []
|
|
2262
|
+
default: [],
|
|
2005
2263
|
},
|
|
2006
2264
|
milestones: {
|
|
2007
2265
|
type: 'array',
|
|
2008
2266
|
items: { type: 'string' },
|
|
2009
|
-
default: []
|
|
2010
|
-
}
|
|
2267
|
+
default: [],
|
|
2268
|
+
},
|
|
2011
2269
|
},
|
|
2012
|
-
required: ['name', 'duration']
|
|
2270
|
+
required: ['name', 'duration'],
|
|
2013
2271
|
},
|
|
2014
|
-
description: 'Initial project phases (for create_project operation)'
|
|
2272
|
+
description: 'Initial project phases (for create_project operation)',
|
|
2015
2273
|
},
|
|
2016
2274
|
team: {
|
|
2017
2275
|
type: 'array',
|
|
@@ -2023,33 +2281,43 @@ export class McpAdrAnalysisServer {
|
|
|
2023
2281
|
skills: {
|
|
2024
2282
|
type: 'array',
|
|
2025
2283
|
items: { type: 'string' },
|
|
2026
|
-
default: []
|
|
2284
|
+
default: [],
|
|
2027
2285
|
},
|
|
2028
|
-
capacity: { type: 'string' }
|
|
2286
|
+
capacity: { type: 'string' },
|
|
2029
2287
|
},
|
|
2030
|
-
required: ['name', 'role', 'capacity']
|
|
2288
|
+
required: ['name', 'role', 'capacity'],
|
|
2031
2289
|
},
|
|
2032
2290
|
default: [],
|
|
2033
|
-
description: 'Team structure (for create_project operation)'
|
|
2291
|
+
description: 'Team structure (for create_project operation)',
|
|
2034
2292
|
},
|
|
2035
2293
|
importFromAdrs: {
|
|
2036
2294
|
type: 'boolean',
|
|
2037
2295
|
default: true,
|
|
2038
|
-
description: 'Import phases from existing ADRs (for create_project operation)'
|
|
2296
|
+
description: 'Import phases from existing ADRs (for create_project operation)',
|
|
2039
2297
|
},
|
|
2040
2298
|
importFromTodos: {
|
|
2041
2299
|
type: 'boolean',
|
|
2042
2300
|
default: true,
|
|
2043
|
-
description: 'Import tasks from TODO system (for create_project operation)'
|
|
2301
|
+
description: 'Import tasks from TODO system (for create_project operation)',
|
|
2044
2302
|
},
|
|
2045
2303
|
action: {
|
|
2046
2304
|
type: 'string',
|
|
2047
|
-
enum: [
|
|
2048
|
-
|
|
2305
|
+
enum: [
|
|
2306
|
+
'list',
|
|
2307
|
+
'create',
|
|
2308
|
+
'update',
|
|
2309
|
+
'delete',
|
|
2310
|
+
'transition',
|
|
2311
|
+
'add',
|
|
2312
|
+
'remove',
|
|
2313
|
+
'allocate',
|
|
2314
|
+
'optimize',
|
|
2315
|
+
],
|
|
2316
|
+
description: 'Management action (for manage_phases/manage_resources operations)',
|
|
2049
2317
|
},
|
|
2050
2318
|
phaseId: {
|
|
2051
2319
|
type: 'string',
|
|
2052
|
-
description: 'Phase ID for phase operations'
|
|
2320
|
+
description: 'Phase ID for phase operations',
|
|
2053
2321
|
},
|
|
2054
2322
|
phaseData: {
|
|
2055
2323
|
type: 'object',
|
|
@@ -2059,49 +2327,69 @@ export class McpAdrAnalysisServer {
|
|
|
2059
2327
|
estimatedDuration: { type: 'string' },
|
|
2060
2328
|
dependencies: {
|
|
2061
2329
|
type: 'array',
|
|
2062
|
-
items: { type: 'string' }
|
|
2330
|
+
items: { type: 'string' },
|
|
2063
2331
|
},
|
|
2064
2332
|
milestones: {
|
|
2065
2333
|
type: 'array',
|
|
2066
|
-
items: { type: 'string' }
|
|
2334
|
+
items: { type: 'string' },
|
|
2067
2335
|
},
|
|
2068
2336
|
linkedAdrs: {
|
|
2069
2337
|
type: 'array',
|
|
2070
|
-
items: { type: 'string' }
|
|
2071
|
-
}
|
|
2338
|
+
items: { type: 'string' },
|
|
2339
|
+
},
|
|
2072
2340
|
},
|
|
2073
|
-
description: 'Phase data for create/update operations'
|
|
2341
|
+
description: 'Phase data for create/update operations',
|
|
2074
2342
|
},
|
|
2075
2343
|
targetStatus: {
|
|
2076
2344
|
type: 'string',
|
|
2077
2345
|
enum: ['planning', 'active', 'completed', 'blocked', 'cancelled'],
|
|
2078
|
-
description: 'Target status for phase transition'
|
|
2346
|
+
description: 'Target status for phase transition',
|
|
2079
2347
|
},
|
|
2080
2348
|
reportType: {
|
|
2081
2349
|
type: 'string',
|
|
2082
|
-
enum: [
|
|
2350
|
+
enum: [
|
|
2351
|
+
'summary',
|
|
2352
|
+
'detailed',
|
|
2353
|
+
'gantt',
|
|
2354
|
+
'milestones',
|
|
2355
|
+
'risks',
|
|
2356
|
+
'executive',
|
|
2357
|
+
'status',
|
|
2358
|
+
'health',
|
|
2359
|
+
'team_performance',
|
|
2360
|
+
'milestone_tracking',
|
|
2361
|
+
],
|
|
2083
2362
|
default: 'summary',
|
|
2084
|
-
description: 'Type of progress report or generated report'
|
|
2363
|
+
description: 'Type of progress report or generated report',
|
|
2085
2364
|
},
|
|
2086
2365
|
timeframe: {
|
|
2087
2366
|
type: 'string',
|
|
2088
|
-
enum: [
|
|
2367
|
+
enum: [
|
|
2368
|
+
'current',
|
|
2369
|
+
'weekly',
|
|
2370
|
+
'monthly',
|
|
2371
|
+
'quarterly',
|
|
2372
|
+
'week',
|
|
2373
|
+
'month',
|
|
2374
|
+
'quarter',
|
|
2375
|
+
'project',
|
|
2376
|
+
],
|
|
2089
2377
|
default: 'current',
|
|
2090
|
-
description: 'Time frame for reports and tracking'
|
|
2378
|
+
description: 'Time frame for reports and tracking',
|
|
2091
2379
|
},
|
|
2092
2380
|
includeVisuals: {
|
|
2093
2381
|
type: 'boolean',
|
|
2094
2382
|
default: true,
|
|
2095
|
-
description: 'Include visual progress indicators'
|
|
2383
|
+
description: 'Include visual progress indicators',
|
|
2096
2384
|
},
|
|
2097
2385
|
updateTaskProgress: {
|
|
2098
2386
|
type: 'boolean',
|
|
2099
2387
|
default: true,
|
|
2100
|
-
description: 'Sync progress from TODO system'
|
|
2388
|
+
description: 'Sync progress from TODO system',
|
|
2101
2389
|
},
|
|
2102
2390
|
memberId: {
|
|
2103
2391
|
type: 'string',
|
|
2104
|
-
description: 'Team member ID for resource operations'
|
|
2392
|
+
description: 'Team member ID for resource operations',
|
|
2105
2393
|
},
|
|
2106
2394
|
memberData: {
|
|
2107
2395
|
type: 'object',
|
|
@@ -2110,11 +2398,11 @@ export class McpAdrAnalysisServer {
|
|
|
2110
2398
|
role: { type: 'string' },
|
|
2111
2399
|
skills: {
|
|
2112
2400
|
type: 'array',
|
|
2113
|
-
items: { type: 'string' }
|
|
2401
|
+
items: { type: 'string' },
|
|
2114
2402
|
},
|
|
2115
|
-
capacity: { type: 'string' }
|
|
2403
|
+
capacity: { type: 'string' },
|
|
2116
2404
|
},
|
|
2117
|
-
description: 'Team member data for resource operations'
|
|
2405
|
+
description: 'Team member data for resource operations',
|
|
2118
2406
|
},
|
|
2119
2407
|
allocationData: {
|
|
2120
2408
|
type: 'object',
|
|
@@ -2123,52 +2411,52 @@ export class McpAdrAnalysisServer {
|
|
|
2123
2411
|
allocation: {
|
|
2124
2412
|
type: 'number',
|
|
2125
2413
|
minimum: 0,
|
|
2126
|
-
maximum: 100
|
|
2127
|
-
}
|
|
2414
|
+
maximum: 100,
|
|
2415
|
+
},
|
|
2128
2416
|
},
|
|
2129
2417
|
required: ['phaseId', 'allocation'],
|
|
2130
|
-
description: 'Resource allocation data'
|
|
2418
|
+
description: 'Resource allocation data',
|
|
2131
2419
|
},
|
|
2132
2420
|
analysisType: {
|
|
2133
2421
|
type: 'string',
|
|
2134
2422
|
enum: ['automated', 'manual', 'comprehensive'],
|
|
2135
2423
|
default: 'comprehensive',
|
|
2136
|
-
description: 'Type of risk analysis'
|
|
2424
|
+
description: 'Type of risk analysis',
|
|
2137
2425
|
},
|
|
2138
2426
|
includeAdrRisks: {
|
|
2139
2427
|
type: 'boolean',
|
|
2140
2428
|
default: true,
|
|
2141
|
-
description: 'Analyze risks from ADR complexity'
|
|
2429
|
+
description: 'Analyze risks from ADR complexity',
|
|
2142
2430
|
},
|
|
2143
2431
|
includeDependencyRisks: {
|
|
2144
2432
|
type: 'boolean',
|
|
2145
2433
|
default: true,
|
|
2146
|
-
description: 'Analyze dependency chain risks'
|
|
2434
|
+
description: 'Analyze dependency chain risks',
|
|
2147
2435
|
},
|
|
2148
2436
|
includeResourceRisks: {
|
|
2149
2437
|
type: 'boolean',
|
|
2150
2438
|
default: true,
|
|
2151
|
-
description: 'Analyze resource allocation risks'
|
|
2439
|
+
description: 'Analyze resource allocation risks',
|
|
2152
2440
|
},
|
|
2153
2441
|
generateMitigation: {
|
|
2154
2442
|
type: 'boolean',
|
|
2155
2443
|
default: true,
|
|
2156
|
-
description: 'Generate mitigation strategies'
|
|
2444
|
+
description: 'Generate mitigation strategies',
|
|
2157
2445
|
},
|
|
2158
2446
|
format: {
|
|
2159
2447
|
type: 'string',
|
|
2160
2448
|
enum: ['markdown', 'json', 'html'],
|
|
2161
2449
|
default: 'markdown',
|
|
2162
|
-
description: 'Report output format'
|
|
2450
|
+
description: 'Report output format',
|
|
2163
2451
|
},
|
|
2164
2452
|
includeCharts: {
|
|
2165
2453
|
type: 'boolean',
|
|
2166
2454
|
default: true,
|
|
2167
|
-
description: 'Include progress charts and graphs'
|
|
2168
|
-
}
|
|
2455
|
+
description: 'Include progress charts and graphs',
|
|
2456
|
+
},
|
|
2169
2457
|
},
|
|
2170
|
-
required: ['operation', 'projectPath']
|
|
2171
|
-
}
|
|
2458
|
+
required: ['operation', 'projectPath'],
|
|
2459
|
+
},
|
|
2172
2460
|
},
|
|
2173
2461
|
{
|
|
2174
2462
|
name: 'interactive_adr_planning',
|
|
@@ -2191,37 +2479,228 @@ export class McpAdrAnalysisServer {
|
|
|
2191
2479
|
'update_todos',
|
|
2192
2480
|
'get_guidance',
|
|
2193
2481
|
'save_session',
|
|
2194
|
-
'complete_session'
|
|
2482
|
+
'complete_session',
|
|
2195
2483
|
],
|
|
2196
|
-
description: 'Interactive planning operation to perform'
|
|
2484
|
+
description: 'Interactive planning operation to perform',
|
|
2197
2485
|
},
|
|
2198
2486
|
sessionId: {
|
|
2199
2487
|
type: 'string',
|
|
2200
|
-
description: 'Planning session ID (required for all operations except start_session)'
|
|
2488
|
+
description: 'Planning session ID (required for all operations except start_session)',
|
|
2201
2489
|
},
|
|
2202
2490
|
input: {
|
|
2203
2491
|
type: 'string',
|
|
2204
|
-
description: 'User input for the current phase (varies by phase)'
|
|
2492
|
+
description: 'User input for the current phase (varies by phase)',
|
|
2205
2493
|
},
|
|
2206
2494
|
projectPath: {
|
|
2207
2495
|
type: 'string',
|
|
2208
|
-
description: 'Project root path'
|
|
2496
|
+
description: 'Project root path',
|
|
2209
2497
|
},
|
|
2210
2498
|
autoResearch: {
|
|
2211
2499
|
type: 'boolean',
|
|
2212
2500
|
default: true,
|
|
2213
|
-
description: 'Automatically trigger research when needed'
|
|
2501
|
+
description: 'Automatically trigger research when needed',
|
|
2214
2502
|
},
|
|
2215
2503
|
generateTodos: {
|
|
2216
2504
|
type: 'boolean',
|
|
2217
2505
|
default: true,
|
|
2218
|
-
description: 'Automatically generate TODO items from decisions'
|
|
2219
|
-
}
|
|
2506
|
+
description: 'Automatically generate TODO items from decisions',
|
|
2507
|
+
},
|
|
2220
2508
|
},
|
|
2221
|
-
required: ['operation', 'projectPath']
|
|
2222
|
-
}
|
|
2223
|
-
}
|
|
2224
|
-
|
|
2509
|
+
required: ['operation', 'projectPath'],
|
|
2510
|
+
},
|
|
2511
|
+
},
|
|
2512
|
+
{
|
|
2513
|
+
name: 'memory_loading',
|
|
2514
|
+
description: 'Advanced memory loading tool for the memory-centric architecture. Query, explore, and manage memory entities and relationships. Load ADRs into memory system and perform intelligent queries.',
|
|
2515
|
+
inputSchema: {
|
|
2516
|
+
type: 'object',
|
|
2517
|
+
properties: {
|
|
2518
|
+
action: {
|
|
2519
|
+
type: 'string',
|
|
2520
|
+
enum: [
|
|
2521
|
+
'load_adrs',
|
|
2522
|
+
'query_entities',
|
|
2523
|
+
'get_entity',
|
|
2524
|
+
'find_related',
|
|
2525
|
+
'get_intelligence',
|
|
2526
|
+
'create_snapshot',
|
|
2527
|
+
],
|
|
2528
|
+
description: 'Memory operation to perform',
|
|
2529
|
+
default: 'query_entities',
|
|
2530
|
+
},
|
|
2531
|
+
query: {
|
|
2532
|
+
type: 'object',
|
|
2533
|
+
properties: {
|
|
2534
|
+
entityTypes: {
|
|
2535
|
+
type: 'array',
|
|
2536
|
+
items: {
|
|
2537
|
+
type: 'string',
|
|
2538
|
+
enum: [
|
|
2539
|
+
'architectural_decision',
|
|
2540
|
+
'code_component',
|
|
2541
|
+
'business_requirement',
|
|
2542
|
+
'technical_constraint',
|
|
2543
|
+
'quality_concern',
|
|
2544
|
+
'implementation_pattern',
|
|
2545
|
+
'environmental_factor',
|
|
2546
|
+
'stakeholder_input',
|
|
2547
|
+
'knowledge_artifact',
|
|
2548
|
+
'decision_context',
|
|
2549
|
+
],
|
|
2550
|
+
},
|
|
2551
|
+
description: 'Filter by entity types',
|
|
2552
|
+
},
|
|
2553
|
+
tags: {
|
|
2554
|
+
type: 'array',
|
|
2555
|
+
items: { type: 'string' },
|
|
2556
|
+
description: 'Filter by tags',
|
|
2557
|
+
},
|
|
2558
|
+
textQuery: {
|
|
2559
|
+
type: 'string',
|
|
2560
|
+
description: 'Full-text search query',
|
|
2561
|
+
},
|
|
2562
|
+
relationshipTypes: {
|
|
2563
|
+
type: 'array',
|
|
2564
|
+
items: {
|
|
2565
|
+
type: 'string',
|
|
2566
|
+
enum: [
|
|
2567
|
+
'depends_on',
|
|
2568
|
+
'influences',
|
|
2569
|
+
'conflicts_with',
|
|
2570
|
+
'implements',
|
|
2571
|
+
'supersedes',
|
|
2572
|
+
'relates_to',
|
|
2573
|
+
'originated_from',
|
|
2574
|
+
'impacts',
|
|
2575
|
+
'constrains',
|
|
2576
|
+
],
|
|
2577
|
+
},
|
|
2578
|
+
description: 'Filter by relationship types',
|
|
2579
|
+
},
|
|
2580
|
+
confidenceThreshold: {
|
|
2581
|
+
type: 'number',
|
|
2582
|
+
minimum: 0,
|
|
2583
|
+
maximum: 1,
|
|
2584
|
+
description: 'Minimum confidence threshold',
|
|
2585
|
+
},
|
|
2586
|
+
relevanceThreshold: {
|
|
2587
|
+
type: 'number',
|
|
2588
|
+
minimum: 0,
|
|
2589
|
+
maximum: 1,
|
|
2590
|
+
description: 'Minimum relevance threshold',
|
|
2591
|
+
},
|
|
2592
|
+
timeRange: {
|
|
2593
|
+
type: 'object',
|
|
2594
|
+
properties: {
|
|
2595
|
+
from: { type: 'string', description: 'Start date (ISO 8601)' },
|
|
2596
|
+
to: { type: 'string', description: 'End date (ISO 8601)' },
|
|
2597
|
+
},
|
|
2598
|
+
description: 'Filter by time range',
|
|
2599
|
+
},
|
|
2600
|
+
contextFilters: {
|
|
2601
|
+
type: 'object',
|
|
2602
|
+
properties: {
|
|
2603
|
+
projectPhase: { type: 'string', description: 'Project phase filter' },
|
|
2604
|
+
businessDomain: { type: 'string', description: 'Business domain filter' },
|
|
2605
|
+
technicalStack: {
|
|
2606
|
+
type: 'array',
|
|
2607
|
+
items: { type: 'string' },
|
|
2608
|
+
description: 'Technical stack filter',
|
|
2609
|
+
},
|
|
2610
|
+
environmentalFactors: {
|
|
2611
|
+
type: 'array',
|
|
2612
|
+
items: { type: 'string' },
|
|
2613
|
+
description: 'Environmental factors filter',
|
|
2614
|
+
},
|
|
2615
|
+
},
|
|
2616
|
+
description: 'Context-based filters',
|
|
2617
|
+
},
|
|
2618
|
+
limit: {
|
|
2619
|
+
type: 'number',
|
|
2620
|
+
minimum: 1,
|
|
2621
|
+
description: 'Maximum number of results',
|
|
2622
|
+
},
|
|
2623
|
+
sortBy: {
|
|
2624
|
+
type: 'string',
|
|
2625
|
+
enum: ['relevance', 'confidence', 'lastModified', 'created', 'accessCount'],
|
|
2626
|
+
description: 'Sort field',
|
|
2627
|
+
default: 'relevance',
|
|
2628
|
+
},
|
|
2629
|
+
includeRelated: {
|
|
2630
|
+
type: 'boolean',
|
|
2631
|
+
description: 'Include related entities and relationships',
|
|
2632
|
+
default: false,
|
|
2633
|
+
},
|
|
2634
|
+
relationshipDepth: {
|
|
2635
|
+
type: 'number',
|
|
2636
|
+
minimum: 1,
|
|
2637
|
+
maximum: 5,
|
|
2638
|
+
description: 'Maximum relationship traversal depth',
|
|
2639
|
+
default: 2,
|
|
2640
|
+
},
|
|
2641
|
+
},
|
|
2642
|
+
description: 'Query parameters for entity search',
|
|
2643
|
+
},
|
|
2644
|
+
entityId: {
|
|
2645
|
+
type: 'string',
|
|
2646
|
+
description: 'Entity ID for get_entity and find_related actions',
|
|
2647
|
+
},
|
|
2648
|
+
maxDepth: {
|
|
2649
|
+
type: 'number',
|
|
2650
|
+
minimum: 1,
|
|
2651
|
+
maximum: 5,
|
|
2652
|
+
description: 'Maximum depth for relationship traversal (find_related action)',
|
|
2653
|
+
default: 2,
|
|
2654
|
+
},
|
|
2655
|
+
forceReload: {
|
|
2656
|
+
type: 'boolean',
|
|
2657
|
+
description: 'Force reload of ADRs (load_adrs action)',
|
|
2658
|
+
default: false,
|
|
2659
|
+
},
|
|
2660
|
+
},
|
|
2661
|
+
},
|
|
2662
|
+
},
|
|
2663
|
+
{
|
|
2664
|
+
name: 'tool_chain_orchestrator',
|
|
2665
|
+
description: 'AI-powered dynamic tool sequencing - intelligently analyze user requests and generate structured tool execution plans',
|
|
2666
|
+
inputSchema: {
|
|
2667
|
+
type: 'object',
|
|
2668
|
+
properties: {
|
|
2669
|
+
userRequest: {
|
|
2670
|
+
type: 'string',
|
|
2671
|
+
description: 'User request to analyze and create tool execution plan for',
|
|
2672
|
+
},
|
|
2673
|
+
availableTools: {
|
|
2674
|
+
type: 'array',
|
|
2675
|
+
items: { type: 'string' },
|
|
2676
|
+
description: 'List of available MCP tools to orchestrate',
|
|
2677
|
+
},
|
|
2678
|
+
executionMode: {
|
|
2679
|
+
type: 'string',
|
|
2680
|
+
enum: ['plan_only', 'plan_and_execute', 'validate_plan'],
|
|
2681
|
+
description: 'Orchestration mode',
|
|
2682
|
+
default: 'plan_only',
|
|
2683
|
+
},
|
|
2684
|
+
maxSteps: {
|
|
2685
|
+
type: 'number',
|
|
2686
|
+
description: 'Maximum number of steps in the execution plan',
|
|
2687
|
+
default: 10,
|
|
2688
|
+
},
|
|
2689
|
+
allowParallel: {
|
|
2690
|
+
type: 'boolean',
|
|
2691
|
+
description: 'Allow parallel execution of independent steps',
|
|
2692
|
+
default: true,
|
|
2693
|
+
},
|
|
2694
|
+
contextHints: {
|
|
2695
|
+
type: 'array',
|
|
2696
|
+
items: { type: 'string' },
|
|
2697
|
+
description: 'Additional context hints for better plan generation',
|
|
2698
|
+
},
|
|
2699
|
+
},
|
|
2700
|
+
required: ['userRequest'],
|
|
2701
|
+
},
|
|
2702
|
+
},
|
|
2703
|
+
],
|
|
2225
2704
|
};
|
|
2226
2705
|
});
|
|
2227
2706
|
// Tool execution handler
|
|
@@ -2229,120 +2708,133 @@ export class McpAdrAnalysisServer {
|
|
|
2229
2708
|
const { name, arguments: args } = request.params;
|
|
2230
2709
|
try {
|
|
2231
2710
|
let response;
|
|
2711
|
+
const safeArgs = args || {};
|
|
2232
2712
|
switch (name) {
|
|
2233
2713
|
case 'analyze_project_ecosystem':
|
|
2234
|
-
response = await this.analyzeProjectEcosystem(
|
|
2714
|
+
response = await this.analyzeProjectEcosystem(safeArgs);
|
|
2235
2715
|
break;
|
|
2236
2716
|
case 'get_architectural_context':
|
|
2237
|
-
response = await this.getArchitecturalContext(
|
|
2717
|
+
response = await this.getArchitecturalContext(safeArgs);
|
|
2238
2718
|
break;
|
|
2239
2719
|
case 'generate_adrs_from_prd':
|
|
2240
|
-
response = await this.generateAdrsFromPrd(
|
|
2720
|
+
response = await this.generateAdrsFromPrd(safeArgs);
|
|
2241
2721
|
break;
|
|
2242
2722
|
case 'generate_adr_todo':
|
|
2243
|
-
response = await this.generateAdrTodo(
|
|
2723
|
+
response = await this.generateAdrTodo(safeArgs);
|
|
2244
2724
|
break;
|
|
2245
2725
|
case 'compare_adr_progress':
|
|
2246
|
-
response = await this.compareAdrProgress(
|
|
2726
|
+
response = await this.compareAdrProgress(safeArgs);
|
|
2247
2727
|
break;
|
|
2248
2728
|
case 'analyze_content_security':
|
|
2249
|
-
response = await this.analyzeContentSecurity(
|
|
2729
|
+
response = await this.analyzeContentSecurity(safeArgs);
|
|
2250
2730
|
break;
|
|
2251
2731
|
case 'generate_content_masking':
|
|
2252
|
-
response = await this.generateContentMasking(
|
|
2732
|
+
response = await this.generateContentMasking(safeArgs);
|
|
2253
2733
|
break;
|
|
2254
2734
|
case 'configure_custom_patterns':
|
|
2255
|
-
response = await this.configureCustomPatterns(
|
|
2735
|
+
response = await this.configureCustomPatterns(safeArgs);
|
|
2256
2736
|
break;
|
|
2257
2737
|
case 'apply_basic_content_masking':
|
|
2258
|
-
response = await this.applyBasicContentMasking(
|
|
2738
|
+
response = await this.applyBasicContentMasking(safeArgs);
|
|
2259
2739
|
break;
|
|
2260
2740
|
case 'validate_content_masking':
|
|
2261
|
-
response = await this.validateContentMasking(
|
|
2741
|
+
response = await this.validateContentMasking(safeArgs);
|
|
2262
2742
|
break;
|
|
2263
2743
|
case 'manage_cache':
|
|
2264
|
-
response = await this.manageCache(
|
|
2744
|
+
response = await this.manageCache(safeArgs);
|
|
2265
2745
|
break;
|
|
2266
2746
|
case 'configure_output_masking':
|
|
2267
|
-
response = await this.configureOutputMasking(
|
|
2747
|
+
response = await this.configureOutputMasking(safeArgs);
|
|
2268
2748
|
break;
|
|
2269
2749
|
case 'suggest_adrs':
|
|
2270
|
-
response = await this.suggestAdrs(
|
|
2750
|
+
response = await this.suggestAdrs(safeArgs);
|
|
2271
2751
|
break;
|
|
2272
2752
|
case 'generate_adr_from_decision':
|
|
2273
|
-
response = await this.generateAdrFromDecision(
|
|
2753
|
+
response = await this.generateAdrFromDecision(safeArgs);
|
|
2754
|
+
break;
|
|
2755
|
+
case 'generate_adr_bootstrap':
|
|
2756
|
+
response = await this.generateAdrBootstrap(safeArgs);
|
|
2274
2757
|
break;
|
|
2275
2758
|
case 'discover_existing_adrs':
|
|
2276
|
-
response = await this.discoverExistingAdrs(
|
|
2759
|
+
response = await this.discoverExistingAdrs(safeArgs);
|
|
2760
|
+
break;
|
|
2761
|
+
case 'review_existing_adrs':
|
|
2762
|
+
response = await this.reviewExistingAdrs(safeArgs);
|
|
2277
2763
|
break;
|
|
2278
2764
|
case 'incorporate_research':
|
|
2279
|
-
response = await this.incorporateResearch(
|
|
2765
|
+
response = await this.incorporateResearch(safeArgs);
|
|
2280
2766
|
break;
|
|
2281
2767
|
case 'create_research_template':
|
|
2282
|
-
response = await this.createResearchTemplate(
|
|
2768
|
+
response = await this.createResearchTemplate(safeArgs);
|
|
2283
2769
|
break;
|
|
2284
2770
|
case 'request_action_confirmation':
|
|
2285
|
-
response = await this.requestActionConfirmation(
|
|
2771
|
+
response = await this.requestActionConfirmation(safeArgs);
|
|
2286
2772
|
break;
|
|
2287
2773
|
case 'generate_rules':
|
|
2288
|
-
response = await this.generateRules(
|
|
2774
|
+
response = await this.generateRules(safeArgs);
|
|
2289
2775
|
break;
|
|
2290
2776
|
case 'validate_rules':
|
|
2291
|
-
response = await this.validateRules(
|
|
2777
|
+
response = await this.validateRules(safeArgs);
|
|
2292
2778
|
break;
|
|
2293
2779
|
case 'create_rule_set':
|
|
2294
|
-
response = await this.createRuleSet(
|
|
2780
|
+
response = await this.createRuleSet(safeArgs);
|
|
2295
2781
|
break;
|
|
2296
2782
|
case 'analyze_environment':
|
|
2297
|
-
response = await this.analyzeEnvironment(
|
|
2783
|
+
response = await this.analyzeEnvironment(safeArgs);
|
|
2298
2784
|
break;
|
|
2299
2785
|
case 'generate_research_questions':
|
|
2300
|
-
response = await this.generateResearchQuestions(
|
|
2786
|
+
response = await this.generateResearchQuestions(safeArgs);
|
|
2301
2787
|
break;
|
|
2302
2788
|
case 'analyze_deployment_progress':
|
|
2303
|
-
response = await this.analyzeDeploymentProgress(
|
|
2789
|
+
response = await this.analyzeDeploymentProgress(safeArgs);
|
|
2304
2790
|
break;
|
|
2305
2791
|
case 'check_ai_execution_status':
|
|
2306
|
-
response = await this.checkAIExecutionStatus(
|
|
2792
|
+
response = await this.checkAIExecutionStatus(safeArgs);
|
|
2307
2793
|
break;
|
|
2308
2794
|
case 'get_workflow_guidance':
|
|
2309
|
-
response = await this.getWorkflowGuidance(
|
|
2795
|
+
response = await this.getWorkflowGuidance(safeArgs);
|
|
2310
2796
|
break;
|
|
2311
2797
|
case 'get_development_guidance':
|
|
2312
|
-
response = await this.getDevelopmentGuidance(
|
|
2798
|
+
response = await this.getDevelopmentGuidance(safeArgs);
|
|
2313
2799
|
break;
|
|
2314
2800
|
case 'read_file':
|
|
2315
|
-
response = await this.readFile(
|
|
2801
|
+
response = await this.readFile(safeArgs);
|
|
2316
2802
|
break;
|
|
2317
2803
|
case 'write_file':
|
|
2318
|
-
response = await this.writeFile(
|
|
2804
|
+
response = await this.writeFile(safeArgs);
|
|
2319
2805
|
break;
|
|
2320
2806
|
case 'list_directory':
|
|
2321
|
-
response = await this.listDirectory(
|
|
2807
|
+
response = await this.listDirectory(safeArgs);
|
|
2322
2808
|
break;
|
|
2323
2809
|
case 'manage_todo_json':
|
|
2324
|
-
response = await this.manageTodoJson(
|
|
2810
|
+
response = await this.manageTodoJson(safeArgs);
|
|
2325
2811
|
break;
|
|
2326
2812
|
case 'generate_deployment_guidance':
|
|
2327
|
-
response = await this.generateDeploymentGuidance(
|
|
2813
|
+
response = await this.generateDeploymentGuidance(safeArgs);
|
|
2328
2814
|
break;
|
|
2329
2815
|
case 'smart_git_push':
|
|
2330
|
-
response = await this.smartGitPush(
|
|
2816
|
+
response = await this.smartGitPush(safeArgs);
|
|
2331
2817
|
break;
|
|
2332
2818
|
case 'deployment_readiness':
|
|
2333
|
-
response = await this.deploymentReadiness(
|
|
2819
|
+
response = await this.deploymentReadiness(safeArgs);
|
|
2334
2820
|
break;
|
|
2335
2821
|
case 'troubleshoot_guided_workflow':
|
|
2336
|
-
response = await this.troubleshootGuidedWorkflow(
|
|
2822
|
+
response = await this.troubleshootGuidedWorkflow(safeArgs);
|
|
2337
2823
|
break;
|
|
2338
2824
|
case 'smart_score':
|
|
2339
|
-
response = await this.smartScore(
|
|
2825
|
+
response = await this.smartScore(safeArgs);
|
|
2340
2826
|
break;
|
|
2341
2827
|
case 'mcp_planning':
|
|
2342
|
-
response = await this.mcpPlanning(
|
|
2828
|
+
response = await this.mcpPlanning(safeArgs);
|
|
2829
|
+
break;
|
|
2830
|
+
case 'memory_loading':
|
|
2831
|
+
response = await this.memoryLoading(safeArgs);
|
|
2343
2832
|
break;
|
|
2344
2833
|
case 'interactive_adr_planning':
|
|
2345
|
-
response = await this.interactiveAdrPlanning(
|
|
2834
|
+
response = await this.interactiveAdrPlanning(safeArgs);
|
|
2835
|
+
break;
|
|
2836
|
+
case 'tool_chain_orchestrator':
|
|
2837
|
+
response = await this.toolChainOrchestrator(safeArgs);
|
|
2346
2838
|
break;
|
|
2347
2839
|
default:
|
|
2348
2840
|
throw new McpAdrError(`Unknown tool: ${name}`, 'UNKNOWN_TOOL');
|
|
@@ -2369,21 +2861,21 @@ export class McpAdrAnalysisServer {
|
|
|
2369
2861
|
uri: 'adr://architectural_knowledge_graph',
|
|
2370
2862
|
name: 'Architectural Knowledge Graph',
|
|
2371
2863
|
description: 'Complete architectural knowledge graph of the project',
|
|
2372
|
-
mimeType: 'application/json'
|
|
2864
|
+
mimeType: 'application/json',
|
|
2373
2865
|
},
|
|
2374
2866
|
{
|
|
2375
2867
|
uri: 'adr://analysis_report',
|
|
2376
2868
|
name: 'Analysis Report',
|
|
2377
2869
|
description: 'Comprehensive project analysis report',
|
|
2378
|
-
mimeType: 'application/json'
|
|
2870
|
+
mimeType: 'application/json',
|
|
2379
2871
|
},
|
|
2380
2872
|
{
|
|
2381
2873
|
uri: 'adr://adr_list',
|
|
2382
2874
|
name: 'ADR List',
|
|
2383
2875
|
description: 'List of all Architectural Decision Records',
|
|
2384
|
-
mimeType: 'application/json'
|
|
2385
|
-
}
|
|
2386
|
-
]
|
|
2876
|
+
mimeType: 'application/json',
|
|
2877
|
+
},
|
|
2878
|
+
],
|
|
2387
2879
|
};
|
|
2388
2880
|
});
|
|
2389
2881
|
// Resource reading handler
|
|
@@ -2407,8 +2899,8 @@ export class McpAdrAnalysisServer {
|
|
|
2407
2899
|
prompts: allPrompts.map(prompt => ({
|
|
2408
2900
|
name: prompt.name,
|
|
2409
2901
|
description: prompt.description,
|
|
2410
|
-
arguments: prompt.arguments
|
|
2411
|
-
}))
|
|
2902
|
+
arguments: prompt.arguments,
|
|
2903
|
+
})),
|
|
2412
2904
|
};
|
|
2413
2905
|
});
|
|
2414
2906
|
// Prompt execution handler
|
|
@@ -2435,10 +2927,10 @@ export class McpAdrAnalysisServer {
|
|
|
2435
2927
|
role: 'user',
|
|
2436
2928
|
content: {
|
|
2437
2929
|
type: 'text',
|
|
2438
|
-
text: renderedTemplate
|
|
2439
|
-
}
|
|
2440
|
-
}
|
|
2441
|
-
]
|
|
2930
|
+
text: renderedTemplate,
|
|
2931
|
+
},
|
|
2932
|
+
},
|
|
2933
|
+
],
|
|
2442
2934
|
};
|
|
2443
2935
|
return await this.applyOutputMasking(response);
|
|
2444
2936
|
}
|
|
@@ -2469,11 +2961,13 @@ export class McpAdrAnalysisServer {
|
|
|
2469
2961
|
- **Execution Mode**: ${status.executionMode}
|
|
2470
2962
|
- **AI Model**: ${status.model}
|
|
2471
2963
|
|
|
2472
|
-
${status.reason
|
|
2964
|
+
${status.reason
|
|
2965
|
+
? `## ⚠️ Issue Detected
|
|
2473
2966
|
**Problem**: ${status.reason}
|
|
2474
2967
|
|
|
2475
2968
|
## Solution
|
|
2476
|
-
${!status.hasApiKey
|
|
2969
|
+
${!status.hasApiKey
|
|
2970
|
+
? `
|
|
2477
2971
|
1. Get an OpenRouter API key from https://openrouter.ai/keys
|
|
2478
2972
|
2. Add it to your MCP configuration:
|
|
2479
2973
|
\`\`\`json
|
|
@@ -2491,7 +2985,9 @@ ${!status.hasApiKey ? `
|
|
|
2491
2985
|
}
|
|
2492
2986
|
\`\`\`
|
|
2493
2987
|
3. Restart your MCP client (Claude Desktop, etc.)
|
|
2494
|
-
`
|
|
2988
|
+
`
|
|
2989
|
+
: status.executionMode !== 'full'
|
|
2990
|
+
? `
|
|
2495
2991
|
1. Update your MCP configuration to set EXECUTION_MODE to "full":
|
|
2496
2992
|
\`\`\`json
|
|
2497
2993
|
{
|
|
@@ -2505,7 +3001,9 @@ ${!status.hasApiKey ? `
|
|
|
2505
3001
|
}
|
|
2506
3002
|
\`\`\`
|
|
2507
3003
|
2. Restart your MCP client
|
|
2508
|
-
`
|
|
3004
|
+
`
|
|
3005
|
+
: ''}`
|
|
3006
|
+
: `## ✅ Configuration Looks Good!
|
|
2509
3007
|
|
|
2510
3008
|
AI execution is properly configured. Tools should return actual results instead of prompts.
|
|
2511
3009
|
|
|
@@ -2521,9 +3019,9 @@ If you're still seeing prompts instead of results, try:
|
|
|
2521
3019
|
|
|
2522
3020
|
## Testing
|
|
2523
3021
|
After fixing the configuration, try calling \`suggest_adrs\` - it should return actual ADR suggestions instead of prompts.
|
|
2524
|
-
|
|
2525
|
-
}
|
|
2526
|
-
]
|
|
3022
|
+
`,
|
|
3023
|
+
},
|
|
3024
|
+
],
|
|
2527
3025
|
};
|
|
2528
3026
|
}
|
|
2529
3027
|
catch (error) {
|
|
@@ -2542,14 +3040,14 @@ Verify these environment variables are set in your MCP configuration:
|
|
|
2542
3040
|
- OPENROUTER_API_KEY
|
|
2543
3041
|
- EXECUTION_MODE=full
|
|
2544
3042
|
- AI_MODEL (optional)
|
|
2545
|
-
|
|
2546
|
-
}
|
|
2547
|
-
]
|
|
3043
|
+
`,
|
|
3044
|
+
},
|
|
3045
|
+
],
|
|
2548
3046
|
};
|
|
2549
3047
|
}
|
|
2550
3048
|
}
|
|
2551
3049
|
async getWorkflowGuidance(args) {
|
|
2552
|
-
const { goal, projectContext, availableAssets = [], timeframe = 'thorough_review', primaryConcerns = [] } = args;
|
|
3050
|
+
const { goal, projectContext, availableAssets = [], timeframe = 'thorough_review', primaryConcerns = [], } = args;
|
|
2553
3051
|
try {
|
|
2554
3052
|
const workflowPrompt = `
|
|
2555
3053
|
# Workflow Guidance & Tool Recommendation System
|
|
@@ -2674,7 +3172,7 @@ Make the guidance **actionable, specific, and outcome-focused** so the user can
|
|
|
2674
3172
|
systemPrompt: `You are an expert workflow advisor for the MCP ADR Analysis Server.
|
|
2675
3173
|
Your role is to analyze user goals and project context, then recommend the optimal sequence of tools to achieve their objectives efficiently.
|
|
2676
3174
|
Provide specific, actionable guidance with clear tool sequences, expected outcomes, and success criteria.
|
|
2677
|
-
Focus on practical workflows that deliver measurable results
|
|
3175
|
+
Focus on practical workflows that deliver measurable results.`,
|
|
2678
3176
|
});
|
|
2679
3177
|
if (executionResult.isAIGenerated) {
|
|
2680
3178
|
// AI execution successful - return actual workflow guidance
|
|
@@ -2720,9 +3218,9 @@ This guidance is tailored to your specific context and goals for maximum effecti
|
|
|
2720
3218
|
content: [
|
|
2721
3219
|
{
|
|
2722
3220
|
type: 'text',
|
|
2723
|
-
text: workflowPrompt
|
|
2724
|
-
}
|
|
2725
|
-
]
|
|
3221
|
+
text: workflowPrompt,
|
|
3222
|
+
},
|
|
3223
|
+
],
|
|
2726
3224
|
};
|
|
2727
3225
|
}
|
|
2728
3226
|
}
|
|
@@ -2731,7 +3229,7 @@ This guidance is tailored to your specific context and goals for maximum effecti
|
|
|
2731
3229
|
}
|
|
2732
3230
|
}
|
|
2733
3231
|
async getDevelopmentGuidance(args) {
|
|
2734
|
-
const { developmentPhase, adrsToImplement = [], technologyStack = [], currentProgress = '', teamContext = { size: 'small_team', experienceLevel: 'mixed' }, timeline = '', focusAreas = [] } = args;
|
|
3232
|
+
const { developmentPhase, adrsToImplement = [], technologyStack = [], currentProgress = '', teamContext = { size: 'small_team', experienceLevel: 'mixed' }, timeline = '', focusAreas = [], } = args;
|
|
2735
3233
|
try {
|
|
2736
3234
|
// Use actual ADR discovery if ADRs are specified
|
|
2737
3235
|
let adrAnalysisPrompt = '';
|
|
@@ -2750,14 +3248,16 @@ This guidance is tailored to your specific context and goals for maximum effecti
|
|
|
2750
3248
|
**ADR Directory**: ${absoluteAdrPath}
|
|
2751
3249
|
**Found ${targetAdrs.length} matching ADRs**
|
|
2752
3250
|
|
|
2753
|
-
${targetAdrs
|
|
3251
|
+
${targetAdrs
|
|
3252
|
+
.map(adr => `
|
|
2754
3253
|
### ${adr.title}
|
|
2755
3254
|
- **File**: ${adr.filename}
|
|
2756
3255
|
- **Status**: ${adr.status}
|
|
2757
3256
|
- **Context**: ${adr.context}
|
|
2758
3257
|
- **Decision**: ${adr.decision}
|
|
2759
3258
|
- **Consequences**: ${adr.consequences}
|
|
2760
|
-
`)
|
|
3259
|
+
`)
|
|
3260
|
+
.join('\n')}
|
|
2761
3261
|
`;
|
|
2762
3262
|
}
|
|
2763
3263
|
const developmentPrompt = `
|
|
@@ -2895,7 +3395,7 @@ Make the guidance **actionable, specific, and immediately implementable** so dev
|
|
|
2895
3395
|
Your role is to bridge the gap between architectural planning and actual code development.
|
|
2896
3396
|
Provide specific, actionable development guidance with clear implementation steps, code patterns, and quality criteria.
|
|
2897
3397
|
Focus on practical guidance that ensures architectural decisions are properly implemented in code.
|
|
2898
|
-
Consider team context, technology stack, and development phase to provide tailored recommendations
|
|
3398
|
+
Consider team context, technology stack, and development phase to provide tailored recommendations.`,
|
|
2899
3399
|
});
|
|
2900
3400
|
if (executionResult.isAIGenerated) {
|
|
2901
3401
|
// AI execution successful - return actual development guidance
|
|
@@ -2953,9 +3453,9 @@ This guidance ensures your development work is **architecturally aligned**, **qu
|
|
|
2953
3453
|
content: [
|
|
2954
3454
|
{
|
|
2955
3455
|
type: 'text',
|
|
2956
|
-
text: developmentPrompt
|
|
2957
|
-
}
|
|
2958
|
-
]
|
|
3456
|
+
text: developmentPrompt,
|
|
3457
|
+
},
|
|
3458
|
+
],
|
|
2959
3459
|
};
|
|
2960
3460
|
}
|
|
2961
3461
|
}
|
|
@@ -2966,7 +3466,7 @@ This guidance ensures your development work is **architecturally aligned**, **qu
|
|
|
2966
3466
|
async analyzeProjectEcosystem(args) {
|
|
2967
3467
|
// Use configured project path if not provided in args
|
|
2968
3468
|
const projectPath = args.projectPath || this.config.projectPath;
|
|
2969
|
-
const { includePatterns, enhancedMode = true, knowledgeEnhancement = true, learningEnabled = true, technologyFocus = [], analysisDepth = 'comprehensive', includeEnvironment = true, recursiveDepth = 'comprehensive', analysisScope = []
|
|
3469
|
+
const { includePatterns, enhancedMode = true, knowledgeEnhancement = true, learningEnabled = true, technologyFocus = [], analysisDepth = 'comprehensive', includeEnvironment = true, recursiveDepth = 'comprehensive', analysisScope = [],
|
|
2970
3470
|
// conversationContext - TODO: implement context integration for ecosystem analysis
|
|
2971
3471
|
} = args;
|
|
2972
3472
|
this.logger.info(`Generating comprehensive ecosystem analysis for project at: ${projectPath}`);
|
|
@@ -2975,7 +3475,7 @@ This guidance ensures your development work is **architecturally aligned**, **qu
|
|
|
2975
3475
|
this.logger.info(`Analysis scope: ${analysisScope.length > 0 ? analysisScope.join(', ') : 'Full ecosystem analysis'}`);
|
|
2976
3476
|
try {
|
|
2977
3477
|
// Import utilities dynamically to avoid circular dependencies
|
|
2978
|
-
const { analyzeProjectStructure } = await import('./utils/file-system.js');
|
|
3478
|
+
const { analyzeProjectStructureCompat: analyzeProjectStructure } = await import('./utils/file-system.js');
|
|
2979
3479
|
// Import advanced prompting utilities if enhanced mode is enabled
|
|
2980
3480
|
let generateArchitecturalKnowledge = null;
|
|
2981
3481
|
let executeWithReflexion = null;
|
|
@@ -3002,11 +3502,11 @@ This guidance ensures your development work is **architecturally aligned**, **qu
|
|
|
3002
3502
|
technologies: technologyFocus,
|
|
3003
3503
|
patterns: [],
|
|
3004
3504
|
projectType: 'ecosystem-analysis',
|
|
3005
|
-
existingAdrs: []
|
|
3505
|
+
existingAdrs: [],
|
|
3006
3506
|
}, {
|
|
3007
3507
|
domains: this.getEcosystemAnalysisDomains(technologyFocus),
|
|
3008
3508
|
depth: analysisDepth === 'basic' ? 'basic' : 'intermediate',
|
|
3009
|
-
cacheEnabled: true
|
|
3509
|
+
cacheEnabled: true,
|
|
3010
3510
|
});
|
|
3011
3511
|
knowledgeContext = `
|
|
3012
3512
|
## Technology-Specific Knowledge Enhancement
|
|
@@ -3055,7 +3555,7 @@ ${memoryResult.prompt}
|
|
|
3055
3555
|
const environmentResult = await analyzeEnvironment({
|
|
3056
3556
|
projectPath,
|
|
3057
3557
|
adrDirectory: this.config.adrDirectory,
|
|
3058
|
-
analysisType: 'comprehensive'
|
|
3558
|
+
analysisType: 'comprehensive',
|
|
3059
3559
|
});
|
|
3060
3560
|
// Extract environment analysis content
|
|
3061
3561
|
if (environmentResult.content && environmentResult.content[0]) {
|
|
@@ -3085,7 +3585,7 @@ ${environmentResult.content[0].text}
|
|
|
3085
3585
|
const reflexionConfig = createToolReflexionConfig('analyze_project_ecosystem', {
|
|
3086
3586
|
reflectionDepth: analysisDepth === 'basic' ? 'basic' : 'detailed',
|
|
3087
3587
|
evaluationCriteria: ['task-success', 'accuracy', 'completeness'],
|
|
3088
|
-
learningRate: 0.7
|
|
3588
|
+
learningRate: 0.7,
|
|
3089
3589
|
});
|
|
3090
3590
|
const reflexionResult = await executeWithReflexion({
|
|
3091
3591
|
prompt: baseProjectAnalysisPrompt.prompt + knowledgeContext + environmentAnalysisContext,
|
|
@@ -3099,18 +3599,20 @@ ${environmentResult.content[0].text}
|
|
|
3099
3599
|
includeEnvironment,
|
|
3100
3600
|
analysisScope,
|
|
3101
3601
|
knowledgeEnhanced: knowledgeEnhancement,
|
|
3102
|
-
learningEnabled: true
|
|
3103
|
-
}
|
|
3602
|
+
learningEnabled: true,
|
|
3603
|
+
},
|
|
3104
3604
|
}, reflexionConfig);
|
|
3105
3605
|
enhancedAnalysisPrompt = reflexionResult.prompt;
|
|
3106
3606
|
}
|
|
3107
3607
|
catch (error) {
|
|
3108
3608
|
this.logger.warn('Reflexion execution failed:', error);
|
|
3109
|
-
enhancedAnalysisPrompt =
|
|
3609
|
+
enhancedAnalysisPrompt =
|
|
3610
|
+
baseProjectAnalysisPrompt.prompt + knowledgeContext + environmentAnalysisContext;
|
|
3110
3611
|
}
|
|
3111
3612
|
}
|
|
3112
3613
|
else {
|
|
3113
|
-
enhancedAnalysisPrompt =
|
|
3614
|
+
enhancedAnalysisPrompt =
|
|
3615
|
+
baseProjectAnalysisPrompt.prompt + knowledgeContext + environmentAnalysisContext;
|
|
3114
3616
|
}
|
|
3115
3617
|
// Execute the analysis with AI if enabled, otherwise return prompt
|
|
3116
3618
|
const { executeEcosystemAnalysisPrompt, formatMCPResponse } = await import('./utils/prompt-execution.js');
|
|
@@ -3129,7 +3631,7 @@ ${environmentResult.content[0].text}
|
|
|
3129
3631
|
analysisScope,
|
|
3130
3632
|
includeEnvironment,
|
|
3131
3633
|
timestamp: new Date().toISOString(),
|
|
3132
|
-
structureData: baseProjectAnalysisPrompt.context || {}
|
|
3634
|
+
structureData: baseProjectAnalysisPrompt.context || {},
|
|
3133
3635
|
};
|
|
3134
3636
|
await this.kgManager.recordProjectStructure(projectStructureSnapshot);
|
|
3135
3637
|
this.logger.info('✅ Project structure recorded to knowledge graph');
|
|
@@ -3167,7 +3669,8 @@ ${reflexionContext}
|
|
|
3167
3669
|
|
|
3168
3670
|
${executionResult.content}
|
|
3169
3671
|
|
|
3170
|
-
${includeEnvironment
|
|
3672
|
+
${includeEnvironment
|
|
3673
|
+
? `
|
|
3171
3674
|
|
|
3172
3675
|
## Environment Integration Summary
|
|
3173
3676
|
|
|
@@ -3178,7 +3681,8 @@ The analysis above includes comprehensive environment analysis covering:
|
|
|
3178
3681
|
- **Compliance Assessment**: Security and regulatory compliance evaluation
|
|
3179
3682
|
|
|
3180
3683
|
This integrated approach provides complete understanding of both codebase patterns AND operational environment.
|
|
3181
|
-
`
|
|
3684
|
+
`
|
|
3685
|
+
: ''}
|
|
3182
3686
|
|
|
3183
3687
|
## Next Steps: Complete Ecosystem Understanding
|
|
3184
3688
|
|
|
@@ -3242,19 +3746,23 @@ ${baseProjectAnalysisPrompt.instructions}
|
|
|
3242
3746
|
|
|
3243
3747
|
### Enhancement-Specific Instructions
|
|
3244
3748
|
|
|
3245
|
-
${enhancedMode && knowledgeEnhancement
|
|
3749
|
+
${enhancedMode && knowledgeEnhancement
|
|
3750
|
+
? `
|
|
3246
3751
|
#### Knowledge Enhancement
|
|
3247
3752
|
- Apply technology-specific knowledge to ecosystem analysis
|
|
3248
3753
|
- Use domain expertise to identify patterns and anti-patterns
|
|
3249
3754
|
- Leverage architectural best practices for technology stack evaluation
|
|
3250
|
-
`
|
|
3755
|
+
`
|
|
3756
|
+
: ''}
|
|
3251
3757
|
|
|
3252
|
-
${enhancedMode && learningEnabled
|
|
3758
|
+
${enhancedMode && learningEnabled
|
|
3759
|
+
? `
|
|
3253
3760
|
#### Learning Integration
|
|
3254
3761
|
- Apply lessons learned from past ecosystem analyses
|
|
3255
3762
|
- Use memory insights to improve pattern recognition accuracy
|
|
3256
3763
|
- Incorporate feedback from previous analysis outcomes
|
|
3257
|
-
`
|
|
3764
|
+
`
|
|
3765
|
+
: ''}
|
|
3258
3766
|
|
|
3259
3767
|
## Expected Enhanced Output
|
|
3260
3768
|
|
|
@@ -3270,9 +3778,9 @@ The enhanced analysis should provide:
|
|
|
3270
3778
|
- Ensure analysis leverages all available enhancement features
|
|
3271
3779
|
- Verify technology-specific knowledge is properly applied
|
|
3272
3780
|
- Confirm learning insights improve analysis accuracy
|
|
3273
|
-
- Validate recommendations align with domain best practices
|
|
3274
|
-
}
|
|
3275
|
-
]
|
|
3781
|
+
- Validate recommendations align with domain best practices`,
|
|
3782
|
+
},
|
|
3783
|
+
],
|
|
3276
3784
|
};
|
|
3277
3785
|
}
|
|
3278
3786
|
}
|
|
@@ -3283,10 +3791,12 @@ The enhanced analysis should provide:
|
|
|
3283
3791
|
async getArchitecturalContext(args) {
|
|
3284
3792
|
const { filePath, includeCompliance = true } = args;
|
|
3285
3793
|
try {
|
|
3286
|
-
const { analyzeProjectStructure, fileExists, ensureDirectory } = await import('./utils/file-system.js');
|
|
3794
|
+
const { analyzeProjectStructureCompat: analyzeProjectStructure, fileExistsCompat: fileExists, ensureDirectoryCompat: ensureDirectory, } = await import('./utils/file-system.js');
|
|
3287
3795
|
const path = await import('path');
|
|
3288
3796
|
// Determine project path
|
|
3289
|
-
const projectPath = filePath
|
|
3797
|
+
const projectPath = filePath
|
|
3798
|
+
? filePath.split('/').slice(0, -1).join('/')
|
|
3799
|
+
: this.config.projectPath;
|
|
3290
3800
|
const adrDirectory = path.join(projectPath, this.config.adrDirectory);
|
|
3291
3801
|
// Generate prompts for ADR directory setup
|
|
3292
3802
|
const adrDirectoryCheckPrompt = await fileExists(adrDirectory);
|
|
@@ -3345,12 +3855,14 @@ ${filePath ? `- **File-specific Context**: How ${filePath} fits into the overall
|
|
|
3345
3855
|
- **Technology Rationale**: Understand selection criteria and trade-offs
|
|
3346
3856
|
- **Evolution Path**: How the architecture has changed over time
|
|
3347
3857
|
|
|
3348
|
-
${includeCompliance
|
|
3858
|
+
${includeCompliance
|
|
3859
|
+
? `### 5. Compliance & Standards Assessment
|
|
3349
3860
|
- **Industry Standards**: Adherence to relevant industry standards and best practices
|
|
3350
3861
|
- **Security Compliance**: Security standards compliance (OWASP, SOC2, etc.)
|
|
3351
3862
|
- **Code Standards**: Coding standards and style guide compliance
|
|
3352
3863
|
- **Architectural Compliance**: Adherence to established architectural principles
|
|
3353
|
-
- **Regulatory Requirements**: Any regulatory compliance requirements (GDPR, HIPAA, etc.)`
|
|
3864
|
+
- **Regulatory Requirements**: Any regulatory compliance requirements (GDPR, HIPAA, etc.)`
|
|
3865
|
+
: ''}
|
|
3354
3866
|
|
|
3355
3867
|
## Expected Output: Outcome-Focused Architectural Context
|
|
3356
3868
|
|
|
@@ -3451,7 +3963,7 @@ This approach ensures that architectural work is **grounded in measurable outcom
|
|
|
3451
3963
|
maxTokens: 5000,
|
|
3452
3964
|
systemPrompt: `You are a senior software architect specializing in architectural context analysis.
|
|
3453
3965
|
Analyze the provided project to understand its architectural patterns, design decisions, and structural organization.
|
|
3454
|
-
Focus on providing actionable insights about the architecture that can guide development decisions
|
|
3966
|
+
Focus on providing actionable insights about the architecture that can guide development decisions.`,
|
|
3455
3967
|
});
|
|
3456
3968
|
if (executionResult.isAIGenerated) {
|
|
3457
3969
|
// AI execution successful - return actual analysis results
|
|
@@ -3507,9 +4019,9 @@ This **outcome-focused approach** ensures architectural work delivers **measurab
|
|
|
3507
4019
|
content: [
|
|
3508
4020
|
{
|
|
3509
4021
|
type: 'text',
|
|
3510
|
-
text: architecturalPrompt
|
|
3511
|
-
}
|
|
3512
|
-
]
|
|
4022
|
+
text: architecturalPrompt,
|
|
4023
|
+
},
|
|
4024
|
+
],
|
|
3513
4025
|
};
|
|
3514
4026
|
}
|
|
3515
4027
|
}
|
|
@@ -3518,12 +4030,12 @@ This **outcome-focused approach** ensures architectural work delivers **measurab
|
|
|
3518
4030
|
}
|
|
3519
4031
|
}
|
|
3520
4032
|
async generateAdrsFromPrd(args) {
|
|
3521
|
-
const { prdPath, enhancedMode = true, promptOptimization = true, knowledgeEnhancement = true, prdType = 'general' } = args;
|
|
3522
|
-
const outputDirectory = args
|
|
4033
|
+
const { prdPath, enhancedMode = true, promptOptimization = true, knowledgeEnhancement = true, prdType = 'general', } = args;
|
|
4034
|
+
const outputDirectory = args['outputDirectory'] || this.config.adrDirectory;
|
|
3523
4035
|
this.logger.info(`Generating enhanced ADRs from PRD: ${prdPath} to ${outputDirectory}`);
|
|
3524
4036
|
this.logger.info(`Enhancement features - APE: ${promptOptimization}, Knowledge: ${knowledgeEnhancement}, Type: ${prdType}`);
|
|
3525
4037
|
try {
|
|
3526
|
-
const { readFileContent, fileExists } = await import('./utils/file-system.js');
|
|
4038
|
+
const { readFileContentCompat: readFileContent, fileExistsCompat: fileExists } = await import('./utils/file-system.js');
|
|
3527
4039
|
// Import advanced prompting utilities if enhanced mode is enabled
|
|
3528
4040
|
let generateArchitecturalKnowledge = null;
|
|
3529
4041
|
let optimizePromptWithAPE = null;
|
|
@@ -3552,11 +4064,11 @@ This **outcome-focused approach** ensures architectural work delivers **measurab
|
|
|
3552
4064
|
technologies: [],
|
|
3553
4065
|
patterns: [],
|
|
3554
4066
|
projectType: prdType,
|
|
3555
|
-
existingAdrs: []
|
|
4067
|
+
existingAdrs: [],
|
|
3556
4068
|
}, {
|
|
3557
4069
|
domains: this.getPrdTypeDomains(prdType),
|
|
3558
4070
|
depth: 'intermediate',
|
|
3559
|
-
cacheEnabled: true
|
|
4071
|
+
cacheEnabled: true,
|
|
3560
4072
|
});
|
|
3561
4073
|
knowledgeContext = `
|
|
3562
4074
|
## Domain-Specific Knowledge Enhancement
|
|
@@ -3583,12 +4095,17 @@ ${knowledgeResult.prompt}
|
|
|
3583
4095
|
candidateCount: 5,
|
|
3584
4096
|
evaluationCriteria: ['task-completion', 'clarity', 'specificity'],
|
|
3585
4097
|
optimizationRounds: 2,
|
|
3586
|
-
qualityThreshold: 0.75
|
|
4098
|
+
qualityThreshold: 0.75,
|
|
3587
4099
|
});
|
|
3588
4100
|
const apeResult = await optimizePromptWithAPE({
|
|
3589
4101
|
prompt: baseAdrPrompt,
|
|
3590
4102
|
instructions: 'Generate comprehensive ADRs from PRD analysis',
|
|
3591
|
-
context: {
|
|
4103
|
+
context: {
|
|
4104
|
+
prdPath,
|
|
4105
|
+
outputDirectory,
|
|
4106
|
+
prdType,
|
|
4107
|
+
knowledgeEnhanced: knowledgeEnhancement,
|
|
4108
|
+
},
|
|
3592
4109
|
}, apeConfig);
|
|
3593
4110
|
finalAdrPrompt = apeResult.prompt;
|
|
3594
4111
|
}
|
|
@@ -3621,12 +4138,14 @@ ${fileContentPrompt.prompt}
|
|
|
3621
4138
|
|
|
3622
4139
|
## Step 3: Enhanced ADR Generation
|
|
3623
4140
|
|
|
3624
|
-
${enhancedMode && promptOptimization
|
|
4141
|
+
${enhancedMode && promptOptimization
|
|
4142
|
+
? `
|
|
3625
4143
|
### APE-Optimized Analysis
|
|
3626
4144
|
This prompt has been optimized using Automatic Prompt Engineering for superior ADR generation quality.
|
|
3627
4145
|
The optimization focused on task completion, clarity, and specificity for PRD analysis.
|
|
3628
4146
|
|
|
3629
|
-
`
|
|
4147
|
+
`
|
|
4148
|
+
: ''}
|
|
3630
4149
|
|
|
3631
4150
|
${finalAdrPrompt}
|
|
3632
4151
|
|
|
@@ -3653,7 +4172,7 @@ For each generated ADR, create a file creation prompt using the following patter
|
|
|
3653
4172
|
maxTokens: 8000,
|
|
3654
4173
|
systemPrompt: `You are an expert software architect who creates comprehensive Architectural Decision Records (ADRs) from Product Requirements Documents (PRDs).
|
|
3655
4174
|
Generate well-structured ADRs that follow best practices and include all necessary sections.
|
|
3656
|
-
Focus on extracting architectural decisions from the PRD and creating actionable ADRs with clear reasoning
|
|
4175
|
+
Focus on extracting architectural decisions from the PRD and creating actionable ADRs with clear reasoning.`,
|
|
3657
4176
|
});
|
|
3658
4177
|
if (executionResult.isAIGenerated) {
|
|
3659
4178
|
// AI execution successful - return actual ADR generation results
|
|
@@ -3734,19 +4253,23 @@ ${adrPrompt}
|
|
|
3734
4253
|
|
|
3735
4254
|
## Advanced Features
|
|
3736
4255
|
|
|
3737
|
-
${enhancedMode && knowledgeEnhancement
|
|
4256
|
+
${enhancedMode && knowledgeEnhancement
|
|
4257
|
+
? `
|
|
3738
4258
|
### Knowledge Enhancement
|
|
3739
4259
|
- Domain-specific architectural knowledge has been generated
|
|
3740
4260
|
- PRD analysis is enhanced with ${prdType} domain expertise
|
|
3741
4261
|
- ADR decisions leverage domain best practices and patterns
|
|
3742
|
-
`
|
|
4262
|
+
`
|
|
4263
|
+
: ''}
|
|
3743
4264
|
|
|
3744
|
-
${enhancedMode && promptOptimization
|
|
4265
|
+
${enhancedMode && promptOptimization
|
|
4266
|
+
? `
|
|
3745
4267
|
### APE Optimization
|
|
3746
4268
|
- Prompts have been automatically optimized for quality
|
|
3747
4269
|
- Enhanced evaluation criteria ensure superior ADR generation
|
|
3748
4270
|
- Optimization focused on task completion, clarity, and specificity
|
|
3749
|
-
`
|
|
4271
|
+
`
|
|
4272
|
+
: ''}
|
|
3750
4273
|
|
|
3751
4274
|
## Security and Validation
|
|
3752
4275
|
|
|
@@ -3766,9 +4289,9 @@ ${enhancedMode && promptOptimization ? `
|
|
|
3766
4289
|
6. Create file creation prompts for each enhanced ADR
|
|
3767
4290
|
7. Confirm with user before writing files to: ${outputDirectory}
|
|
3768
4291
|
|
|
3769
|
-
The enhanced process maintains full traceability from PRD requirements to generated ADRs while providing superior quality through advanced prompting techniques and ensuring security and user control over file operations
|
|
3770
|
-
}
|
|
3771
|
-
]
|
|
4292
|
+
The enhanced process maintains full traceability from PRD requirements to generated ADRs while providing superior quality through advanced prompting techniques and ensuring security and user control over file operations.`,
|
|
4293
|
+
},
|
|
4294
|
+
],
|
|
3772
4295
|
};
|
|
3773
4296
|
}
|
|
3774
4297
|
}
|
|
@@ -3777,53 +4300,53 @@ The enhanced process maintains full traceability from PRD requirements to genera
|
|
|
3777
4300
|
}
|
|
3778
4301
|
}
|
|
3779
4302
|
async generateAdrTodo(args) {
|
|
3780
|
-
const { scope = 'all', phase = 'both', linkAdrs = true, includeRules = true, ruleSource = 'both', preserveExisting = true, forceSyncToMarkdown = false, intentId, createJsonBackup = true } = args;
|
|
4303
|
+
const { scope = 'all', phase = 'both', linkAdrs = true, includeRules = true, ruleSource = 'both', preserveExisting = true, forceSyncToMarkdown = false, intentId, createJsonBackup = true, } = args;
|
|
3781
4304
|
const { getAdrDirectoryPath } = await import('./utils/config.js');
|
|
3782
4305
|
const path = await import('path');
|
|
3783
4306
|
// Use absolute ADR path relative to project
|
|
3784
|
-
const absoluteAdrPath = args
|
|
3785
|
-
path.resolve(this.config.projectPath, args
|
|
3786
|
-
getAdrDirectoryPath(this.config);
|
|
4307
|
+
const absoluteAdrPath = args['adrDirectory']
|
|
4308
|
+
? path.resolve(this.config.projectPath, args['adrDirectory'])
|
|
4309
|
+
: getAdrDirectoryPath(this.config);
|
|
3787
4310
|
// Keep relative path for display purposes
|
|
3788
|
-
const adrDirectory = args
|
|
4311
|
+
const adrDirectory = args['adrDirectory'] || this.config.adrDirectory;
|
|
3789
4312
|
this.logger.info(`Generating JSON-first TODO for ADRs in: ${absoluteAdrPath} (phase: ${phase})`);
|
|
3790
4313
|
try {
|
|
3791
4314
|
// Always use JSON-first TODO system
|
|
3792
4315
|
this.logger.info('Using JSON-first TODO system for ADR task generation');
|
|
3793
|
-
|
|
4316
|
+
// TODO management has been deprecated and moved to mcp-shrimp-task-manager
|
|
4317
|
+
this.logger.warn('⚠️ TODO management has been deprecated - use mcp-shrimp-task-manager instead');
|
|
3794
4318
|
// Optional: Create backup if requested and JSON exists
|
|
3795
4319
|
if (createJsonBackup) {
|
|
3796
4320
|
try {
|
|
3797
|
-
|
|
3798
|
-
operation: 'import_from_markdown',
|
|
3799
|
-
projectPath: this.config.projectPath,
|
|
3800
|
-
mergeStrategy: 'preserve_json',
|
|
3801
|
-
backupExisting: true
|
|
3802
|
-
});
|
|
3803
|
-
this.logger.info('Created backup of existing JSON TODO data');
|
|
4321
|
+
this.logger.info('Backup feature deprecated - use mcp-shrimp-task-manager for task management');
|
|
3804
4322
|
}
|
|
3805
|
-
catch
|
|
4323
|
+
catch {
|
|
3806
4324
|
// Continue if backup fails - might be first time setup
|
|
3807
4325
|
this.logger.debug('No existing JSON data to backup');
|
|
3808
4326
|
}
|
|
3809
4327
|
}
|
|
3810
|
-
// Import ADR tasks into JSON system
|
|
3811
|
-
const importResult =
|
|
3812
|
-
|
|
3813
|
-
|
|
3814
|
-
|
|
3815
|
-
|
|
3816
|
-
|
|
3817
|
-
|
|
3818
|
-
|
|
3819
|
-
|
|
3820
|
-
|
|
3821
|
-
|
|
3822
|
-
|
|
3823
|
-
|
|
3824
|
-
|
|
4328
|
+
// Import ADR tasks into JSON system has been deprecated
|
|
4329
|
+
const importResult = {
|
|
4330
|
+
content: [
|
|
4331
|
+
{
|
|
4332
|
+
type: 'text',
|
|
4333
|
+
text: `⚠️ **TODO Management Deprecated**
|
|
4334
|
+
|
|
4335
|
+
This feature has been moved to mcp-shrimp-task-manager.
|
|
4336
|
+
|
|
4337
|
+
**Replacement:** Use the external \`mcp-shrimp-task-manager\` for:
|
|
4338
|
+
- Task planning and breaking down from ADRs
|
|
4339
|
+
- Task tracking and status updates
|
|
4340
|
+
- Task dependencies and priorities
|
|
4341
|
+
- Task completion and verification
|
|
4342
|
+
|
|
4343
|
+
**Migration:** The system now uses memory-centric architecture where task management is handled by external MCP servers.`,
|
|
4344
|
+
},
|
|
4345
|
+
],
|
|
4346
|
+
};
|
|
3825
4347
|
return {
|
|
3826
|
-
content: [
|
|
4348
|
+
content: [
|
|
4349
|
+
{
|
|
3827
4350
|
type: 'text',
|
|
3828
4351
|
text: `# ✅ JSON-First TODO Generated from ADRs
|
|
3829
4352
|
|
|
@@ -3850,7 +4373,7 @@ The enhanced process maintains full traceability from PRD requirements to genera
|
|
|
3850
4373
|
✅ **Backup Protection**: Automatic data preservation during updates
|
|
3851
4374
|
✅ **No Manual Setup**: All cache files auto-generated, tests can immediately validate
|
|
3852
4375
|
|
|
3853
|
-
${importResult.content[0]
|
|
4376
|
+
${importResult.content?.[0]?.text || 'TODO management feature has been deprecated'}
|
|
3854
4377
|
|
|
3855
4378
|
## Available Operations (use manage_todo_v2 tool)
|
|
3856
4379
|
1. **View Tasks**: \`get_tasks\` operation with filtering and sorting
|
|
@@ -3870,8 +4393,9 @@ ${importResult.content[0].text}
|
|
|
3870
4393
|
- **Dependencies**: ADR relationships mapped to task dependencies
|
|
3871
4394
|
- **Validation**: Architectural rules integrated into task criteria
|
|
3872
4395
|
|
|
3873
|
-
*All TODO data is now managed in JSON format with automatic markdown sync
|
|
3874
|
-
}
|
|
4396
|
+
*All TODO data is now managed in JSON format with automatic markdown sync*`,
|
|
4397
|
+
},
|
|
4398
|
+
],
|
|
3875
4399
|
};
|
|
3876
4400
|
}
|
|
3877
4401
|
catch (error) {
|
|
@@ -3879,19 +4403,20 @@ ${importResult.content[0].text}
|
|
|
3879
4403
|
}
|
|
3880
4404
|
}
|
|
3881
4405
|
async compareAdrProgress(args) {
|
|
3882
|
-
const { todoPath = 'TODO.md', adrDirectory = this.config.adrDirectory, projectPath = this.config.projectPath, environment = 'auto-detect', environmentConfig = {}, validationType = 'full', includeFileChecks = true, includeRuleValidation = true, deepCodeAnalysis = true, functionalValidation = true, strictMode = true, environmentValidation = true } = args;
|
|
4406
|
+
const { todoPath = 'TODO.md', adrDirectory = this.config.adrDirectory, projectPath = this.config.projectPath, environment = 'auto-detect', environmentConfig = {}, validationType = 'full', includeFileChecks = true, includeRuleValidation = true, deepCodeAnalysis = true, functionalValidation = true, strictMode = true, environmentValidation = true, } = args;
|
|
3883
4407
|
const { getAdrDirectoryPath } = await import('./utils/config.js');
|
|
3884
4408
|
const path = await import('path');
|
|
3885
4409
|
// Resolve paths
|
|
3886
4410
|
const absoluteTodoPath = path.resolve(projectPath, todoPath);
|
|
3887
|
-
const absoluteAdrPath = adrDirectory
|
|
3888
|
-
path.resolve(projectPath, adrDirectory)
|
|
3889
|
-
getAdrDirectoryPath(this.config);
|
|
4411
|
+
const absoluteAdrPath = adrDirectory
|
|
4412
|
+
? path.resolve(projectPath, adrDirectory)
|
|
4413
|
+
: getAdrDirectoryPath(this.config);
|
|
3890
4414
|
this.logger.info(`Comparing ADR progress: TODO(${absoluteTodoPath}) vs ADRs(${absoluteAdrPath}) vs Environment(${projectPath}) [env: ${environment}]`);
|
|
3891
4415
|
// Environment validation and auto-detection
|
|
3892
4416
|
let detectedEnvironment = environment;
|
|
3893
4417
|
let finalEnvironmentConfig = { ...environmentConfig };
|
|
3894
|
-
if (environmentValidation &&
|
|
4418
|
+
if (environmentValidation &&
|
|
4419
|
+
(validationType === 'full' || validationType === 'environment-only')) {
|
|
3895
4420
|
try {
|
|
3896
4421
|
const envResult = await this.detectAndValidateEnvironment(projectPath, environment, environmentConfig);
|
|
3897
4422
|
detectedEnvironment = envResult.detectedEnvironment;
|
|
@@ -3922,7 +4447,7 @@ ${importResult.content[0].text}
|
|
|
3922
4447
|
const includeContent = deepCodeAnalysis || functionalValidation;
|
|
3923
4448
|
projectStructure = await scanProjectStructure(projectPath, {
|
|
3924
4449
|
readContent: includeContent,
|
|
3925
|
-
maxFileSize: includeContent ? 10000 : 0
|
|
4450
|
+
maxFileSize: includeContent ? 10000 : 0,
|
|
3926
4451
|
});
|
|
3927
4452
|
}
|
|
3928
4453
|
catch (error) {
|
|
@@ -3941,24 +4466,24 @@ ${importResult.content[0].text}
|
|
|
3941
4466
|
discoveredAdrs: discoveryResult?.adrs || [],
|
|
3942
4467
|
adrDirectory: absoluteAdrPath,
|
|
3943
4468
|
projectStructure: projectStructure || null,
|
|
3944
|
-
projectPath,
|
|
3945
|
-
validationType,
|
|
3946
|
-
includeFileChecks,
|
|
3947
|
-
includeRuleValidation,
|
|
3948
|
-
deepCodeAnalysis,
|
|
3949
|
-
functionalValidation,
|
|
3950
|
-
strictMode,
|
|
4469
|
+
projectPath: projectPath,
|
|
4470
|
+
validationType: validationType,
|
|
4471
|
+
includeFileChecks: includeFileChecks,
|
|
4472
|
+
includeRuleValidation: includeRuleValidation,
|
|
4473
|
+
deepCodeAnalysis: deepCodeAnalysis,
|
|
4474
|
+
functionalValidation: functionalValidation,
|
|
4475
|
+
strictMode: strictMode,
|
|
3951
4476
|
environment: detectedEnvironment,
|
|
3952
4477
|
environmentConfig: finalEnvironmentConfig,
|
|
3953
|
-
environmentValidation
|
|
4478
|
+
environmentValidation: environmentValidation,
|
|
3954
4479
|
});
|
|
3955
4480
|
return {
|
|
3956
4481
|
content: [
|
|
3957
4482
|
{
|
|
3958
4483
|
type: 'text',
|
|
3959
|
-
text: analysis
|
|
3960
|
-
}
|
|
3961
|
-
]
|
|
4484
|
+
text: analysis,
|
|
4485
|
+
},
|
|
4486
|
+
],
|
|
3962
4487
|
};
|
|
3963
4488
|
}
|
|
3964
4489
|
catch (error) {
|
|
@@ -3984,7 +4509,7 @@ ${importResult.content[0].text}
|
|
|
3984
4509
|
'.env.test',
|
|
3985
4510
|
'package.json',
|
|
3986
4511
|
'docker-compose.yml',
|
|
3987
|
-
'Dockerfile'
|
|
4512
|
+
'Dockerfile',
|
|
3988
4513
|
];
|
|
3989
4514
|
const existingFiles = [];
|
|
3990
4515
|
for (const file of envFiles) {
|
|
@@ -4017,7 +4542,7 @@ ${importResult.content[0].text}
|
|
|
4017
4542
|
requiredFiles: ['package.json', 'README.md'],
|
|
4018
4543
|
requiredServices: ['monitoring', 'logging'],
|
|
4019
4544
|
performanceRequirements: { minUptime: 99.9 },
|
|
4020
|
-
...finalConfig
|
|
4545
|
+
...finalConfig,
|
|
4021
4546
|
};
|
|
4022
4547
|
break;
|
|
4023
4548
|
case 'staging':
|
|
@@ -4026,7 +4551,7 @@ ${importResult.content[0].text}
|
|
|
4026
4551
|
requiredFiles: ['package.json'],
|
|
4027
4552
|
requiredServices: ['testing', 'monitoring'],
|
|
4028
4553
|
performanceRequirements: { minUptime: 95 },
|
|
4029
|
-
...finalConfig
|
|
4554
|
+
...finalConfig,
|
|
4030
4555
|
};
|
|
4031
4556
|
break;
|
|
4032
4557
|
case 'testing':
|
|
@@ -4035,7 +4560,7 @@ ${importResult.content[0].text}
|
|
|
4035
4560
|
requiredFiles: ['package.json'],
|
|
4036
4561
|
requiredServices: ['testing'],
|
|
4037
4562
|
performanceRequirements: {},
|
|
4038
|
-
...finalConfig
|
|
4563
|
+
...finalConfig,
|
|
4039
4564
|
};
|
|
4040
4565
|
break;
|
|
4041
4566
|
default: // development
|
|
@@ -4044,7 +4569,7 @@ ${importResult.content[0].text}
|
|
|
4044
4569
|
requiredFiles: ['package.json'],
|
|
4045
4570
|
requiredServices: [],
|
|
4046
4571
|
performanceRequirements: {},
|
|
4047
|
-
...finalConfig
|
|
4572
|
+
...finalConfig,
|
|
4048
4573
|
};
|
|
4049
4574
|
}
|
|
4050
4575
|
}
|
|
@@ -4059,7 +4584,7 @@ ${importResult.content[0].text}
|
|
|
4059
4584
|
* Perform local ADR progress analysis without relying on AI execution
|
|
4060
4585
|
*/
|
|
4061
4586
|
async performLocalAdrProgressAnalysis(params) {
|
|
4062
|
-
const { todoContent, todoPath, discoveredAdrs, adrDirectory, projectStructure, projectPath, validationType, includeFileChecks, includeRuleValidation, deepCodeAnalysis, functionalValidation, strictMode, environment, environmentConfig, environmentValidation } = params;
|
|
4587
|
+
const { todoContent, todoPath, discoveredAdrs, adrDirectory, projectStructure, projectPath, validationType, includeFileChecks, includeRuleValidation, deepCodeAnalysis, functionalValidation, strictMode, environment, environmentConfig, environmentValidation, } = params;
|
|
4063
4588
|
const currentDate = new Date().toISOString().split('T')[0];
|
|
4064
4589
|
// Parse TODO content to extract tasks
|
|
4065
4590
|
const todoTasks = this.parseTodoTasks(todoContent);
|
|
@@ -4123,31 +4648,39 @@ ${importResult.content[0].text}
|
|
|
4123
4648
|
- **Required Services**: ${environmentConfig.requiredServices?.length || 0} services
|
|
4124
4649
|
|
|
4125
4650
|
## ADR Discovery Results
|
|
4126
|
-
${totalAdrs > 0
|
|
4127
|
-
`Found ${totalAdrs} ADRs:\n${discoveredAdrs
|
|
4128
|
-
|
|
4651
|
+
${totalAdrs > 0
|
|
4652
|
+
? `Found ${totalAdrs} ADRs:\n${discoveredAdrs
|
|
4653
|
+
.map((adr, i) => `${i + 1}. **${adr.title}** (${adr.status}) - ${adr.filename}`)
|
|
4654
|
+
.join('\n')}`
|
|
4655
|
+
: 'No ADRs found in the specified directory.'}
|
|
4129
4656
|
|
|
4130
4657
|
## TODO Task Analysis
|
|
4131
|
-
${totalTasks > 0
|
|
4132
|
-
`Found ${totalTasks} tasks:\n${todoTasks
|
|
4133
|
-
|
|
4658
|
+
${totalTasks > 0
|
|
4659
|
+
? `Found ${totalTasks} tasks:\n${todoTasks
|
|
4660
|
+
.map((task, i) => `${i + 1}. ${task.completed ? '✅' : '⏳'} ${task.title}`)
|
|
4661
|
+
.join('\n')}`
|
|
4662
|
+
: 'No tasks found in TODO.md file.'}
|
|
4134
4663
|
|
|
4135
4664
|
## Alignment Analysis
|
|
4136
4665
|
|
|
4137
4666
|
### ✅ Properly Aligned Tasks
|
|
4138
|
-
${adrTaskMapping.aligned.length > 0
|
|
4139
|
-
adrTaskMapping.aligned
|
|
4140
|
-
|
|
4667
|
+
${adrTaskMapping.aligned.length > 0
|
|
4668
|
+
? adrTaskMapping.aligned
|
|
4669
|
+
.map(task => `- ${task.title}: Corresponds to ADR requirements`)
|
|
4670
|
+
.join('\n')
|
|
4671
|
+
: '- No aligned tasks identified'}
|
|
4141
4672
|
|
|
4142
4673
|
### ⚠️ Misaligned Tasks
|
|
4143
|
-
${adrTaskMapping.misaligned.length > 0
|
|
4144
|
-
adrTaskMapping.misaligned
|
|
4145
|
-
|
|
4674
|
+
${adrTaskMapping.misaligned.length > 0
|
|
4675
|
+
? adrTaskMapping.misaligned
|
|
4676
|
+
.map(task => `- ${task.title}: May not fully align with ADR specifications`)
|
|
4677
|
+
.join('\n')
|
|
4678
|
+
: '- No misaligned tasks identified'}
|
|
4146
4679
|
|
|
4147
4680
|
### ❌ Missing Tasks
|
|
4148
|
-
${adrTaskMapping.missing.length > 0
|
|
4149
|
-
adrTaskMapping.missing.map(gap => `- ${gap}: Required by ADRs but not in TODO`).join('\n')
|
|
4150
|
-
'- No obvious missing tasks identified'}
|
|
4681
|
+
${adrTaskMapping.missing.length > 0
|
|
4682
|
+
? adrTaskMapping.missing.map(gap => `- ${gap}: Required by ADRs but not in TODO`).join('\n')
|
|
4683
|
+
: '- No obvious missing tasks identified'}
|
|
4151
4684
|
|
|
4152
4685
|
## Implementation Status
|
|
4153
4686
|
|
|
@@ -4160,19 +4693,22 @@ ${mockAnalysisResults || ''}
|
|
|
4160
4693
|
## Recommendations
|
|
4161
4694
|
|
|
4162
4695
|
### High Priority Actions
|
|
4163
|
-
${alignmentScore < 70
|
|
4164
|
-
'1. **Improve ADR-TODO Alignment**: Review TODO tasks against ADR requirements\n2. **Add Missing Tasks**: Identify and add tasks required by ADRs'
|
|
4165
|
-
'1. **Maintain Current Alignment**: Continue following ADR specifications'}
|
|
4166
|
-
${completedTasks < totalTasks * 0.5
|
|
4167
|
-
'\n3. **Accelerate Implementation**: Focus on completing pending tasks'
|
|
4168
|
-
|
|
4169
|
-
|
|
4696
|
+
${alignmentScore < 70
|
|
4697
|
+
? '1. **Improve ADR-TODO Alignment**: Review TODO tasks against ADR requirements\n2. **Add Missing Tasks**: Identify and add tasks required by ADRs'
|
|
4698
|
+
: '1. **Maintain Current Alignment**: Continue following ADR specifications'}
|
|
4699
|
+
${completedTasks < totalTasks * 0.5
|
|
4700
|
+
? '\n3. **Accelerate Implementation**: Focus on completing pending tasks'
|
|
4701
|
+
: ''}
|
|
4702
|
+
${environmentValidation && environment === 'production' && alignmentScore < 90
|
|
4703
|
+
? '\n4. **⚠️ Production Environment Warning**: Current alignment may not meet production requirements'
|
|
4704
|
+
: ''}
|
|
4170
4705
|
|
|
4171
4706
|
### Medium Priority Actions
|
|
4172
4707
|
1. **Review Implementation Quality**: ${strictMode ? 'Strict mode analysis above shows' : 'Consider enabling strict mode for'} detailed quality assessment
|
|
4173
4708
|
2. **Update Documentation**: Ensure TODO.md reflects current project state
|
|
4174
|
-
${environmentValidation
|
|
4175
|
-
`3. **Environment Compliance**: Ensure ${environment} environment requirements are met`
|
|
4709
|
+
${environmentValidation
|
|
4710
|
+
? `3. **Environment Compliance**: Ensure ${environment} environment requirements are met`
|
|
4711
|
+
: ''}
|
|
4176
4712
|
|
|
4177
4713
|
### Low Priority Actions
|
|
4178
4714
|
1. **Optimize Workflow**: Consider tools for automated ADR-TODO synchronization
|
|
@@ -4231,16 +4767,17 @@ To re-run this validation with strict mode:
|
|
|
4231
4767
|
const title = taskMatch[2];
|
|
4232
4768
|
tasks.push({
|
|
4233
4769
|
title: title.trim(),
|
|
4234
|
-
completed: checkbox.toLowerCase() === 'x'
|
|
4770
|
+
completed: checkbox.toLowerCase() === 'x',
|
|
4235
4771
|
});
|
|
4236
4772
|
}
|
|
4237
4773
|
// Also look for simple list items that might be tasks
|
|
4238
4774
|
else if (line.match(/^\s*[-*]\s+\w+/)) {
|
|
4239
4775
|
const title = line.replace(/^\s*[-*]\s+/, '').trim();
|
|
4240
|
-
if (title.length > 3) {
|
|
4776
|
+
if (title.length > 3) {
|
|
4777
|
+
// Avoid very short items
|
|
4241
4778
|
tasks.push({
|
|
4242
4779
|
title,
|
|
4243
|
-
completed: false
|
|
4780
|
+
completed: false,
|
|
4244
4781
|
});
|
|
4245
4782
|
}
|
|
4246
4783
|
}
|
|
@@ -4257,8 +4794,14 @@ To re-run this validation with strict mode:
|
|
|
4257
4794
|
// Simple keyword matching for alignment detection
|
|
4258
4795
|
const adrKeywords = adrs.flatMap(adr => [
|
|
4259
4796
|
adr.title.toLowerCase(),
|
|
4260
|
-
...(adr.decision || '')
|
|
4261
|
-
|
|
4797
|
+
...(adr.decision || '')
|
|
4798
|
+
.toLowerCase()
|
|
4799
|
+
.split(/\s+/)
|
|
4800
|
+
.filter((w) => w.length > 4),
|
|
4801
|
+
...(adr.context || '')
|
|
4802
|
+
.toLowerCase()
|
|
4803
|
+
.split(/\s+/)
|
|
4804
|
+
.filter((w) => w.length > 4),
|
|
4262
4805
|
]);
|
|
4263
4806
|
// Environment-specific keywords that should be prioritized
|
|
4264
4807
|
const envKeywords = [];
|
|
@@ -4289,7 +4832,15 @@ To re-run this validation with strict mode:
|
|
|
4289
4832
|
for (const adr of adrs) {
|
|
4290
4833
|
if (adr.status === 'accepted' && adr.decision) {
|
|
4291
4834
|
const decisionWords = adr.decision.toLowerCase().split(/\s+/);
|
|
4292
|
-
const implementationWords = [
|
|
4835
|
+
const implementationWords = [
|
|
4836
|
+
'implement',
|
|
4837
|
+
'create',
|
|
4838
|
+
'build',
|
|
4839
|
+
'develop',
|
|
4840
|
+
'add',
|
|
4841
|
+
'setup',
|
|
4842
|
+
'configure',
|
|
4843
|
+
];
|
|
4293
4844
|
if (implementationWords.some(word => decisionWords.includes(word))) {
|
|
4294
4845
|
const hasCorrespondingTask = tasks.some(task => task.title.toLowerCase().includes(adr.title.toLowerCase().split(' ')[0]));
|
|
4295
4846
|
if (!hasCorrespondingTask) {
|
|
@@ -4326,12 +4877,12 @@ To re-run this validation with strict mode:
|
|
|
4326
4877
|
if (!projectStructure)
|
|
4327
4878
|
return '- Project structure not available';
|
|
4328
4879
|
const allFiles = [
|
|
4329
|
-
...projectStructure.packageFiles || [],
|
|
4330
|
-
...projectStructure.configFiles || [],
|
|
4331
|
-
...projectStructure.buildFiles || [],
|
|
4332
|
-
...projectStructure.dockerFiles || [],
|
|
4333
|
-
...projectStructure.ciFiles || [],
|
|
4334
|
-
...projectStructure.scriptFiles || []
|
|
4880
|
+
...(projectStructure.packageFiles || []),
|
|
4881
|
+
...(projectStructure.configFiles || []),
|
|
4882
|
+
...(projectStructure.buildFiles || []),
|
|
4883
|
+
...(projectStructure.dockerFiles || []),
|
|
4884
|
+
...(projectStructure.ciFiles || []),
|
|
4885
|
+
...(projectStructure.scriptFiles || []),
|
|
4335
4886
|
];
|
|
4336
4887
|
let results = '### File Existence Validation\n';
|
|
4337
4888
|
let checkCount = 0;
|
|
@@ -4345,7 +4896,9 @@ To re-run this validation with strict mode:
|
|
|
4345
4896
|
results += `- ✅ **${task.title}**: Found related files (${mentionedFiles.map(f => f.filename).join(', ')})\n`;
|
|
4346
4897
|
checkCount++;
|
|
4347
4898
|
}
|
|
4348
|
-
else if (taskLower.includes('file') ||
|
|
4899
|
+
else if (taskLower.includes('file') ||
|
|
4900
|
+
taskLower.includes('create') ||
|
|
4901
|
+
taskLower.includes('implement')) {
|
|
4349
4902
|
results += `- ⚠️ **${task.title}**: No clearly related files found\n`;
|
|
4350
4903
|
checkCount++;
|
|
4351
4904
|
}
|
|
@@ -4363,8 +4916,8 @@ To re-run this validation with strict mode:
|
|
|
4363
4916
|
if (!projectStructure)
|
|
4364
4917
|
return '';
|
|
4365
4918
|
const codeFiles = [
|
|
4366
|
-
...projectStructure.buildFiles || [],
|
|
4367
|
-
...projectStructure.configFiles || []
|
|
4919
|
+
...(projectStructure.buildFiles || []),
|
|
4920
|
+
...(projectStructure.configFiles || []),
|
|
4368
4921
|
].filter(file => file.content && file.content !== '[Binary or unreadable file]');
|
|
4369
4922
|
if (codeFiles.length === 0)
|
|
4370
4923
|
return '';
|
|
@@ -4382,7 +4935,7 @@ To re-run this validation with strict mode:
|
|
|
4382
4935
|
/return\s+null;/gi,
|
|
4383
4936
|
/return\s+""/gi,
|
|
4384
4937
|
/return\s+\[\]/gi,
|
|
4385
|
-
/return\s+{}/gi
|
|
4938
|
+
/return\s+{}/gi,
|
|
4386
4939
|
];
|
|
4387
4940
|
const productionPatterns = [
|
|
4388
4941
|
/error\s+handling/gi,
|
|
@@ -4393,18 +4946,21 @@ To re-run this validation with strict mode:
|
|
|
4393
4946
|
/authorization/gi,
|
|
4394
4947
|
/database/gi,
|
|
4395
4948
|
/api/gi,
|
|
4396
|
-
/config/gi
|
|
4949
|
+
/config/gi,
|
|
4397
4950
|
];
|
|
4398
|
-
for (const file of codeFiles.slice(0, 10)) {
|
|
4951
|
+
for (const file of codeFiles.slice(0, 10)) {
|
|
4952
|
+
// Limit analysis to prevent overwhelming output
|
|
4399
4953
|
const content = file.content;
|
|
4400
4954
|
const fileMockCount = mockPatterns.reduce((count, pattern) => count + (content.match(pattern) || []).length, 0);
|
|
4401
4955
|
const fileProdCount = productionPatterns.reduce((count, pattern) => count + (content.match(pattern) || []).length, 0);
|
|
4402
4956
|
mockIndicators += fileMockCount;
|
|
4403
4957
|
productionIndicators += fileProdCount;
|
|
4404
4958
|
if (fileMockCount > 0 || fileProdCount > 2) {
|
|
4405
|
-
const status = fileMockCount > fileProdCount
|
|
4406
|
-
|
|
4407
|
-
|
|
4959
|
+
const status = fileMockCount > fileProdCount
|
|
4960
|
+
? '❌ **Mock/Stub**'
|
|
4961
|
+
: fileProdCount > fileMockCount * 2
|
|
4962
|
+
? '✅ **Production Ready**'
|
|
4963
|
+
: '⚠️ **Partial Implementation**';
|
|
4408
4964
|
results += `- ${status}: ${file.filename} `;
|
|
4409
4965
|
if (fileMockCount > 0) {
|
|
4410
4966
|
results += `(${fileMockCount} mock indicators) `;
|
|
@@ -4419,8 +4975,11 @@ To re-run this validation with strict mode:
|
|
|
4419
4975
|
results += `- **Mock Indicators Found**: ${mockIndicators} instances\n`;
|
|
4420
4976
|
results += `- **Production Indicators Found**: ${productionIndicators} instances\n`;
|
|
4421
4977
|
if (strictMode) {
|
|
4422
|
-
const qualityScore = productionIndicators > mockIndicators * 2
|
|
4423
|
-
|
|
4978
|
+
const qualityScore = productionIndicators > mockIndicators * 2
|
|
4979
|
+
? 'Good'
|
|
4980
|
+
: productionIndicators > mockIndicators
|
|
4981
|
+
? 'Fair'
|
|
4982
|
+
: 'Needs Improvement';
|
|
4424
4983
|
results += `- **Quality Assessment**: ${qualityScore}\n`;
|
|
4425
4984
|
if (mockIndicators > 0) {
|
|
4426
4985
|
results += `- **⚠️ Strict Mode Warning**: Found ${mockIndicators} potential mock/stub indicators\n`;
|
|
@@ -4438,12 +4997,12 @@ To re-run this validation with strict mode:
|
|
|
4438
4997
|
// Check required files
|
|
4439
4998
|
if (environmentConfig.requiredFiles) {
|
|
4440
4999
|
const allFiles = [
|
|
4441
|
-
...projectStructure.packageFiles || [],
|
|
4442
|
-
...projectStructure.configFiles || [],
|
|
4443
|
-
...projectStructure.buildFiles || [],
|
|
4444
|
-
...projectStructure.dockerFiles || [],
|
|
4445
|
-
...projectStructure.ciFiles || [],
|
|
4446
|
-
...projectStructure.scriptFiles || []
|
|
5000
|
+
...(projectStructure.packageFiles || []),
|
|
5001
|
+
...(projectStructure.configFiles || []),
|
|
5002
|
+
...(projectStructure.buildFiles || []),
|
|
5003
|
+
...(projectStructure.dockerFiles || []),
|
|
5004
|
+
...(projectStructure.ciFiles || []),
|
|
5005
|
+
...(projectStructure.scriptFiles || []),
|
|
4447
5006
|
];
|
|
4448
5007
|
const existingFiles = allFiles.map(f => f.filename);
|
|
4449
5008
|
const missingFiles = environmentConfig.requiredFiles.filter((file) => !existingFiles.includes(file));
|
|
@@ -4472,12 +5031,12 @@ To re-run this validation with strict mode:
|
|
|
4472
5031
|
if (environmentConfig.requiredFiles) {
|
|
4473
5032
|
results += `#### Required Files for ${environment} Environment\n`;
|
|
4474
5033
|
const allFiles = [
|
|
4475
|
-
...projectStructure.packageFiles || [],
|
|
4476
|
-
...projectStructure.configFiles || [],
|
|
4477
|
-
...projectStructure.buildFiles || [],
|
|
4478
|
-
...projectStructure.dockerFiles || [],
|
|
4479
|
-
...projectStructure.ciFiles || [],
|
|
4480
|
-
...projectStructure.scriptFiles || []
|
|
5034
|
+
...(projectStructure.packageFiles || []),
|
|
5035
|
+
...(projectStructure.configFiles || []),
|
|
5036
|
+
...(projectStructure.buildFiles || []),
|
|
5037
|
+
...(projectStructure.dockerFiles || []),
|
|
5038
|
+
...(projectStructure.ciFiles || []),
|
|
5039
|
+
...(projectStructure.scriptFiles || []),
|
|
4481
5040
|
];
|
|
4482
5041
|
const existingFiles = allFiles.map(f => f.filename);
|
|
4483
5042
|
for (const requiredFile of environmentConfig.requiredFiles) {
|
|
@@ -4495,11 +5054,13 @@ To re-run this validation with strict mode:
|
|
|
4495
5054
|
results += `\n#### ${environment} Environment Recommendations\n`;
|
|
4496
5055
|
switch (environment) {
|
|
4497
5056
|
case 'production':
|
|
4498
|
-
results +=
|
|
5057
|
+
results +=
|
|
5058
|
+
'- ⚠️ **Production Critical**: Ensure monitoring, logging, and backup strategies are implemented\n';
|
|
4499
5059
|
results += '- 🔒 **Security**: Implement comprehensive security measures\n';
|
|
4500
5060
|
results += '- 📊 **Performance**: Monitor and optimize for production workloads\n';
|
|
4501
5061
|
if (strictMode) {
|
|
4502
|
-
results +=
|
|
5062
|
+
results +=
|
|
5063
|
+
'- 🔍 **Strict Mode**: Enhanced validation enabled for production environment\n';
|
|
4503
5064
|
}
|
|
4504
5065
|
break;
|
|
4505
5066
|
case 'staging':
|
|
@@ -4519,8 +5080,8 @@ To re-run this validation with strict mode:
|
|
|
4519
5080
|
analyzeSecurityCompliance(projectStructure, securityLevel) {
|
|
4520
5081
|
let results = '';
|
|
4521
5082
|
const securityFiles = [
|
|
4522
|
-
...projectStructure.configFiles || [],
|
|
4523
|
-
...projectStructure.dockerFiles || []
|
|
5083
|
+
...(projectStructure.configFiles || []),
|
|
5084
|
+
...(projectStructure.dockerFiles || []),
|
|
4524
5085
|
].filter(file => file.filename.includes('security') ||
|
|
4525
5086
|
file.filename.includes('auth') ||
|
|
4526
5087
|
file.filename.includes('.env') ||
|
|
@@ -4592,9 +5153,9 @@ ${clearPrompt.instructions}
|
|
|
4592
5153
|
|
|
4593
5154
|
## Expected Result
|
|
4594
5155
|
|
|
4595
|
-
After successful execution, all cache entries will be removed while preserving the cache directory structure and metadata.json file
|
|
4596
|
-
}
|
|
4597
|
-
]
|
|
5156
|
+
After successful execution, all cache entries will be removed while preserving the cache directory structure and metadata.json file.`,
|
|
5157
|
+
},
|
|
5158
|
+
],
|
|
4598
5159
|
};
|
|
4599
5160
|
}
|
|
4600
5161
|
case 'stats': {
|
|
@@ -4635,9 +5196,9 @@ The AI agent will provide:
|
|
|
4635
5196
|
Use \`manage_cache\` tool with different actions:
|
|
4636
5197
|
- \`clear\`: Remove all cache entries
|
|
4637
5198
|
- \`cleanup\`: Remove expired entries only
|
|
4638
|
-
- \`invalidate\`: Remove specific cache entry
|
|
4639
|
-
}
|
|
4640
|
-
]
|
|
5199
|
+
- \`invalidate\`: Remove specific cache entry`,
|
|
5200
|
+
},
|
|
5201
|
+
],
|
|
4641
5202
|
};
|
|
4642
5203
|
}
|
|
4643
5204
|
case 'cleanup': {
|
|
@@ -4660,9 +5221,9 @@ ${cleanupPrompt.instructions}
|
|
|
4660
5221
|
|
|
4661
5222
|
## Expected Result
|
|
4662
5223
|
|
|
4663
|
-
The AI agent will remove expired cache entries and provide a count of cleaned files
|
|
4664
|
-
}
|
|
4665
|
-
]
|
|
5224
|
+
The AI agent will remove expired cache entries and provide a count of cleaned files.`,
|
|
5225
|
+
},
|
|
5226
|
+
],
|
|
4666
5227
|
};
|
|
4667
5228
|
}
|
|
4668
5229
|
case 'invalidate': {
|
|
@@ -4690,9 +5251,9 @@ ${invalidatePrompt.instructions}
|
|
|
4690
5251
|
|
|
4691
5252
|
**Cache Key**: ${key}
|
|
4692
5253
|
|
|
4693
|
-
The AI agent will safely remove the specified cache entry
|
|
4694
|
-
}
|
|
4695
|
-
]
|
|
5254
|
+
The AI agent will safely remove the specified cache entry.`,
|
|
5255
|
+
},
|
|
5256
|
+
],
|
|
4696
5257
|
};
|
|
4697
5258
|
}
|
|
4698
5259
|
default:
|
|
@@ -4734,9 +5295,9 @@ Use \`configure_output_masking\` tool with:
|
|
|
4734
5295
|
|
|
4735
5296
|
## Current Status
|
|
4736
5297
|
${this.maskingConfig.enabled ? '✅ Output masking is ACTIVE' : '⚠️ Output masking is DISABLED'}
|
|
4737
|
-
|
|
4738
|
-
}
|
|
4739
|
-
]
|
|
5298
|
+
`,
|
|
5299
|
+
},
|
|
5300
|
+
],
|
|
4740
5301
|
};
|
|
4741
5302
|
}
|
|
4742
5303
|
case 'set': {
|
|
@@ -4744,7 +5305,8 @@ ${this.maskingConfig.enabled ? '✅ Output masking is ACTIVE' : '⚠️ Output m
|
|
|
4744
5305
|
if (typeof enabled === 'boolean') {
|
|
4745
5306
|
newConfig.enabled = enabled;
|
|
4746
5307
|
}
|
|
4747
|
-
if (strategy &&
|
|
5308
|
+
if (strategy &&
|
|
5309
|
+
['full', 'partial', 'placeholder', 'environment'].includes(strategy)) {
|
|
4748
5310
|
newConfig.strategy = strategy;
|
|
4749
5311
|
}
|
|
4750
5312
|
if (Array.isArray(customPatterns)) {
|
|
@@ -4766,12 +5328,12 @@ ${this.maskingConfig.enabled ? '✅ Output masking is ACTIVE' : '⚠️ Output m
|
|
|
4766
5328
|
- **Strategy**: ${newConfig.strategy}
|
|
4767
5329
|
- **Custom Patterns**: ${newConfig.customPatterns?.length || 0} patterns
|
|
4768
5330
|
|
|
4769
|
-
${newConfig.enabled
|
|
4770
|
-
'🔒 All MCP tool and resource outputs will now be masked according to the new configuration.'
|
|
4771
|
-
'⚠️ Output masking is disabled. Sensitive information may be exposed in responses.'}
|
|
4772
|
-
|
|
4773
|
-
}
|
|
4774
|
-
]
|
|
5331
|
+
${newConfig.enabled
|
|
5332
|
+
? '🔒 All MCP tool and resource outputs will now be masked according to the new configuration.'
|
|
5333
|
+
: '⚠️ Output masking is disabled. Sensitive information may be exposed in responses.'}
|
|
5334
|
+
`,
|
|
5335
|
+
},
|
|
5336
|
+
],
|
|
4775
5337
|
};
|
|
4776
5338
|
}
|
|
4777
5339
|
case 'reset': {
|
|
@@ -4790,9 +5352,9 @@ ${newConfig.enabled ?
|
|
|
4790
5352
|
- **Skip Patterns**: ${this.maskingConfig.skipPatterns?.length || 0} patterns
|
|
4791
5353
|
|
|
4792
5354
|
🔒 Default masking is now active for all outputs.
|
|
4793
|
-
|
|
4794
|
-
}
|
|
4795
|
-
]
|
|
5355
|
+
`,
|
|
5356
|
+
},
|
|
5357
|
+
],
|
|
4796
5358
|
};
|
|
4797
5359
|
}
|
|
4798
5360
|
default:
|
|
@@ -4810,12 +5372,17 @@ ${newConfig.enabled ?
|
|
|
4810
5372
|
const domainMap = {
|
|
4811
5373
|
'web-application': ['api-design', 'frontend-architecture', 'database-design', 'security'],
|
|
4812
5374
|
'mobile-app': ['mobile-architecture', 'api-design', 'performance-optimization', 'security'],
|
|
4813
|
-
|
|
4814
|
-
'data-platform': [
|
|
5375
|
+
microservices: ['microservices', 'api-design', 'distributed-systems', 'database-design'],
|
|
5376
|
+
'data-platform': [
|
|
5377
|
+
'database-design',
|
|
5378
|
+
'data-architecture',
|
|
5379
|
+
'performance-optimization',
|
|
5380
|
+
'scalability',
|
|
5381
|
+
],
|
|
4815
5382
|
'api-service': ['api-design', 'microservices', 'security', 'performance-optimization'],
|
|
4816
|
-
|
|
5383
|
+
general: ['api-design', 'database-design', 'security'],
|
|
4817
5384
|
};
|
|
4818
|
-
return domainMap[prdType] || domainMap['general'] || ['api-design', 'database-design', 'security'];
|
|
5385
|
+
return (domainMap[prdType] || domainMap['general'] || ['api-design', 'database-design', 'security']);
|
|
4819
5386
|
}
|
|
4820
5387
|
/**
|
|
4821
5388
|
* Helper method to get domains for ecosystem analysis based on technology focus
|
|
@@ -4825,35 +5392,35 @@ ${newConfig.enabled ?
|
|
|
4825
5392
|
const baseDomains = ['api-design', 'database-design', 'security', 'performance-optimization'];
|
|
4826
5393
|
// Technology-specific domain mapping
|
|
4827
5394
|
const technologyDomainMap = {
|
|
4828
|
-
|
|
4829
|
-
|
|
4830
|
-
|
|
4831
|
-
|
|
4832
|
-
|
|
4833
|
-
|
|
4834
|
-
|
|
4835
|
-
|
|
4836
|
-
|
|
4837
|
-
|
|
4838
|
-
|
|
4839
|
-
|
|
4840
|
-
|
|
4841
|
-
|
|
4842
|
-
|
|
4843
|
-
|
|
4844
|
-
|
|
4845
|
-
|
|
4846
|
-
|
|
4847
|
-
|
|
4848
|
-
|
|
4849
|
-
|
|
4850
|
-
|
|
4851
|
-
|
|
4852
|
-
|
|
4853
|
-
|
|
4854
|
-
|
|
5395
|
+
react: ['frontend-architecture', 'web-applications'],
|
|
5396
|
+
vue: ['frontend-architecture', 'web-applications'],
|
|
5397
|
+
angular: ['frontend-architecture', 'web-applications'],
|
|
5398
|
+
node: ['api-design', 'microservices'],
|
|
5399
|
+
express: ['api-design', 'web-applications'],
|
|
5400
|
+
fastify: ['api-design', 'performance-optimization'],
|
|
5401
|
+
nestjs: ['api-design', 'microservices'],
|
|
5402
|
+
spring: ['api-design', 'microservices'],
|
|
5403
|
+
django: ['api-design', 'web-applications'],
|
|
5404
|
+
flask: ['api-design', 'web-applications'],
|
|
5405
|
+
rails: ['api-design', 'web-applications'],
|
|
5406
|
+
laravel: ['api-design', 'web-applications'],
|
|
5407
|
+
docker: ['containerization', 'microservices'],
|
|
5408
|
+
kubernetes: ['containerization', 'distributed-systems'],
|
|
5409
|
+
mongodb: ['database-design', 'data-architecture'],
|
|
5410
|
+
postgresql: ['database-design', 'data-architecture'],
|
|
5411
|
+
mysql: ['database-design', 'data-architecture'],
|
|
5412
|
+
redis: ['database-design', 'performance-optimization'],
|
|
5413
|
+
elasticsearch: ['database-design', 'data-architecture'],
|
|
5414
|
+
kafka: ['distributed-systems', 'data-architecture'],
|
|
5415
|
+
rabbitmq: ['distributed-systems', 'microservices'],
|
|
5416
|
+
aws: ['cloud-architecture', 'scalability'],
|
|
5417
|
+
azure: ['cloud-architecture', 'scalability'],
|
|
5418
|
+
gcp: ['cloud-architecture', 'scalability'],
|
|
5419
|
+
terraform: ['infrastructure-as-code', 'cloud-architecture'],
|
|
5420
|
+
ansible: ['infrastructure-as-code', 'automation'],
|
|
5421
|
+
jenkins: ['ci-cd', 'automation'],
|
|
4855
5422
|
'github-actions': ['ci-cd', 'automation'],
|
|
4856
|
-
'gitlab-ci': ['ci-cd', 'automation']
|
|
5423
|
+
'gitlab-ci': ['ci-cd', 'automation'],
|
|
4857
5424
|
};
|
|
4858
5425
|
// Collect domains based on technology focus
|
|
4859
5426
|
const technologyDomains = new Set();
|
|
@@ -4973,10 +5540,18 @@ Please provide:
|
|
|
4973
5540
|
const { generateAdrFromDecision } = await import('./tools/adr-suggestion-tool.js');
|
|
4974
5541
|
return await generateAdrFromDecision(args);
|
|
4975
5542
|
}
|
|
5543
|
+
async generateAdrBootstrap(args) {
|
|
5544
|
+
const { default: generateAdrBootstrapScripts } = await import('./tools/adr-bootstrap-validation-tool.js');
|
|
5545
|
+
return await generateAdrBootstrapScripts(args);
|
|
5546
|
+
}
|
|
4976
5547
|
async discoverExistingAdrs(args) {
|
|
4977
5548
|
const { discoverExistingAdrs } = await import('./tools/adr-suggestion-tool.js');
|
|
4978
5549
|
return await discoverExistingAdrs(args);
|
|
4979
5550
|
}
|
|
5551
|
+
async reviewExistingAdrs(args) {
|
|
5552
|
+
const { reviewExistingAdrs } = await import('./tools/review-existing-adrs-tool.js');
|
|
5553
|
+
return await reviewExistingAdrs(args);
|
|
5554
|
+
}
|
|
4980
5555
|
/**
|
|
4981
5556
|
* Research integration tool implementations
|
|
4982
5557
|
*/
|
|
@@ -5031,6 +5606,129 @@ Please provide:
|
|
|
5031
5606
|
/**
|
|
5032
5607
|
* Apply content masking to MCP response
|
|
5033
5608
|
*/
|
|
5609
|
+
/**
|
|
5610
|
+
* Track memory operations performed by tools
|
|
5611
|
+
*/
|
|
5612
|
+
async trackMemoryOperations(toolName, parameters, result, success) {
|
|
5613
|
+
try {
|
|
5614
|
+
// Check if memory integration was enabled and used
|
|
5615
|
+
if (parameters?.enableMemoryIntegration === false) {
|
|
5616
|
+
return; // Memory integration was explicitly disabled
|
|
5617
|
+
}
|
|
5618
|
+
// Extract memory operation information from result
|
|
5619
|
+
const memoryOps = this.extractMemoryOperations(toolName, parameters, result);
|
|
5620
|
+
if (memoryOps.length > 0) {
|
|
5621
|
+
// Store memory operation tracking in knowledge graph
|
|
5622
|
+
for (const op of memoryOps) {
|
|
5623
|
+
await this.kgManager.addMemoryExecution(toolName, op.action, op.entityType, success && op.success, op.details);
|
|
5624
|
+
}
|
|
5625
|
+
}
|
|
5626
|
+
}
|
|
5627
|
+
catch (error) {
|
|
5628
|
+
// Don't let memory tracking errors break execution
|
|
5629
|
+
console.error('[WARN] Memory operation tracking failed:', error);
|
|
5630
|
+
}
|
|
5631
|
+
}
|
|
5632
|
+
/**
|
|
5633
|
+
* Extract memory operation details from tool execution
|
|
5634
|
+
*/
|
|
5635
|
+
extractMemoryOperations(toolName, parameters, result) {
|
|
5636
|
+
const operations = [];
|
|
5637
|
+
// Define memory-enabled tools and their expected operations
|
|
5638
|
+
const memoryEnabledTools = {
|
|
5639
|
+
analyze_content_security: {
|
|
5640
|
+
entityType: 'security_pattern',
|
|
5641
|
+
actions: ['store_pattern', 'analyze_institutional_security', 'track_evolution'],
|
|
5642
|
+
},
|
|
5643
|
+
analyze_environment: {
|
|
5644
|
+
entityType: 'environment_snapshot',
|
|
5645
|
+
actions: ['store_snapshot', 'analyze_trends', 'compare_configurations'],
|
|
5646
|
+
},
|
|
5647
|
+
deployment_readiness: {
|
|
5648
|
+
entityType: 'deployment_assessment',
|
|
5649
|
+
actions: ['store_assessment', 'migrate_history', 'analyze_patterns'],
|
|
5650
|
+
},
|
|
5651
|
+
troubleshoot_guided_workflow: {
|
|
5652
|
+
entityType: 'troubleshooting_session',
|
|
5653
|
+
actions: ['store_session', 'pattern_recognition', 'suggest_adrs', 'generate_research'],
|
|
5654
|
+
},
|
|
5655
|
+
};
|
|
5656
|
+
// Check if this tool supports memory operations
|
|
5657
|
+
const toolConfig = memoryEnabledTools[toolName];
|
|
5658
|
+
if (!toolConfig) {
|
|
5659
|
+
return operations; // Tool doesn't support memory operations
|
|
5660
|
+
}
|
|
5661
|
+
// Extract memory operation details from result
|
|
5662
|
+
if (result?.memoryIntegration) {
|
|
5663
|
+
const memoryInfo = result.memoryIntegration;
|
|
5664
|
+
// Pattern entity storage operation
|
|
5665
|
+
if (memoryInfo.entityStored || memoryInfo.patternStored) {
|
|
5666
|
+
operations.push({
|
|
5667
|
+
action: 'entity_storage',
|
|
5668
|
+
entityType: toolConfig.entityType,
|
|
5669
|
+
success: memoryInfo.storageSuccess !== false,
|
|
5670
|
+
details: {
|
|
5671
|
+
entityId: memoryInfo.entityId || memoryInfo.patternId,
|
|
5672
|
+
entityCount: memoryInfo.entityCount || 1,
|
|
5673
|
+
storageMethod: memoryInfo.storageMethod || 'standard',
|
|
5674
|
+
},
|
|
5675
|
+
});
|
|
5676
|
+
}
|
|
5677
|
+
// Historical analysis operation
|
|
5678
|
+
if (memoryInfo.historicalAnalysis || memoryInfo.trendAnalysis) {
|
|
5679
|
+
operations.push({
|
|
5680
|
+
action: 'historical_analysis',
|
|
5681
|
+
entityType: toolConfig.entityType,
|
|
5682
|
+
success: memoryInfo.analysisSuccess !== false,
|
|
5683
|
+
details: {
|
|
5684
|
+
analysisType: memoryInfo.analysisType || 'trend_analysis',
|
|
5685
|
+
entitiesAnalyzed: memoryInfo.entitiesAnalyzed || 0,
|
|
5686
|
+
insights: memoryInfo.insights || [],
|
|
5687
|
+
},
|
|
5688
|
+
});
|
|
5689
|
+
}
|
|
5690
|
+
// Evolution tracking operation
|
|
5691
|
+
if (memoryInfo.evolutionTracking) {
|
|
5692
|
+
operations.push({
|
|
5693
|
+
action: 'evolution_tracking',
|
|
5694
|
+
entityType: toolConfig.entityType,
|
|
5695
|
+
success: memoryInfo.evolutionSuccess !== false,
|
|
5696
|
+
details: {
|
|
5697
|
+
improvements: memoryInfo.improvements || [],
|
|
5698
|
+
degradations: memoryInfo.degradations || [],
|
|
5699
|
+
recommendations: memoryInfo.recommendations || [],
|
|
5700
|
+
},
|
|
5701
|
+
});
|
|
5702
|
+
}
|
|
5703
|
+
// Migration operation (for deployment readiness)
|
|
5704
|
+
if (memoryInfo.migrationCompleted) {
|
|
5705
|
+
operations.push({
|
|
5706
|
+
action: 'data_migration',
|
|
5707
|
+
entityType: toolConfig.entityType,
|
|
5708
|
+
success: memoryInfo.migrationSuccess !== false,
|
|
5709
|
+
details: {
|
|
5710
|
+
migratedRecords: memoryInfo.migratedRecords || 0,
|
|
5711
|
+
migrationMethod: memoryInfo.migrationMethod || 'json_to_memory',
|
|
5712
|
+
},
|
|
5713
|
+
});
|
|
5714
|
+
}
|
|
5715
|
+
}
|
|
5716
|
+
// If no specific memory integration info, infer from parameters
|
|
5717
|
+
if (operations.length === 0 && parameters?.enableMemoryIntegration !== false) {
|
|
5718
|
+
// Default assumption: entity was stored
|
|
5719
|
+
operations.push({
|
|
5720
|
+
action: 'entity_storage',
|
|
5721
|
+
entityType: toolConfig.entityType,
|
|
5722
|
+
success: true, // Assume success if no explicit info
|
|
5723
|
+
details: {
|
|
5724
|
+
entityCount: 1,
|
|
5725
|
+
storageMethod: 'inferred',
|
|
5726
|
+
note: 'Memory operation inferred from tool execution',
|
|
5727
|
+
},
|
|
5728
|
+
});
|
|
5729
|
+
}
|
|
5730
|
+
return operations;
|
|
5731
|
+
}
|
|
5034
5732
|
/**
|
|
5035
5733
|
* Track tool execution in knowledge graph
|
|
5036
5734
|
*/
|
|
@@ -5076,6 +5774,8 @@ Please provide:
|
|
|
5076
5774
|
todoTasksModified.push(...result.metadata.taskIds);
|
|
5077
5775
|
}
|
|
5078
5776
|
}
|
|
5777
|
+
// Track memory operations if present
|
|
5778
|
+
await this.trackMemoryOperations(toolName, parameters, result, success);
|
|
5079
5779
|
// Store execution in knowledge graph
|
|
5080
5780
|
await this.kgManager.addToolExecution(intentId, toolName, parameters, result, success, todoTasksCreated, todoTasksModified, error);
|
|
5081
5781
|
// If execution completed successfully, update intent status
|
|
@@ -5127,9 +5827,9 @@ Please provide:
|
|
|
5127
5827
|
{
|
|
5128
5828
|
uri,
|
|
5129
5829
|
mimeType: result.contentType,
|
|
5130
|
-
text: JSON.stringify(result.data, null, 2)
|
|
5131
|
-
}
|
|
5132
|
-
]
|
|
5830
|
+
text: JSON.stringify(result.data, null, 2),
|
|
5831
|
+
},
|
|
5832
|
+
],
|
|
5133
5833
|
};
|
|
5134
5834
|
}
|
|
5135
5835
|
case 'analysis_report': {
|
|
@@ -5143,9 +5843,9 @@ Please provide:
|
|
|
5143
5843
|
{
|
|
5144
5844
|
uri,
|
|
5145
5845
|
mimeType: result.contentType,
|
|
5146
|
-
text: JSON.stringify(result.data, null, 2)
|
|
5147
|
-
}
|
|
5148
|
-
]
|
|
5846
|
+
text: JSON.stringify(result.data, null, 2),
|
|
5847
|
+
},
|
|
5848
|
+
],
|
|
5149
5849
|
};
|
|
5150
5850
|
}
|
|
5151
5851
|
case 'adr_list': {
|
|
@@ -5153,9 +5853,9 @@ Please provide:
|
|
|
5153
5853
|
const { getAdrDirectoryPath } = await import('./utils/config.js');
|
|
5154
5854
|
const path = await import('path');
|
|
5155
5855
|
// Use absolute ADR path relative to project
|
|
5156
|
-
const absoluteAdrPath = params['adrDirectory']
|
|
5157
|
-
path.resolve(this.config.projectPath, params['adrDirectory'])
|
|
5158
|
-
getAdrDirectoryPath(this.config);
|
|
5856
|
+
const absoluteAdrPath = params['adrDirectory']
|
|
5857
|
+
? path.resolve(this.config.projectPath, params['adrDirectory'])
|
|
5858
|
+
: getAdrDirectoryPath(this.config);
|
|
5159
5859
|
// Generate resource directly (caching is now handled through AI delegation)
|
|
5160
5860
|
const result = await generateAdrList(absoluteAdrPath, this.config.projectPath);
|
|
5161
5861
|
return {
|
|
@@ -5163,9 +5863,9 @@ Please provide:
|
|
|
5163
5863
|
{
|
|
5164
5864
|
uri,
|
|
5165
5865
|
mimeType: result.contentType,
|
|
5166
|
-
text: JSON.stringify(result.data, null, 2)
|
|
5167
|
-
}
|
|
5168
|
-
]
|
|
5866
|
+
text: JSON.stringify(result.data, null, 2),
|
|
5867
|
+
},
|
|
5868
|
+
],
|
|
5169
5869
|
};
|
|
5170
5870
|
}
|
|
5171
5871
|
default:
|
|
@@ -5197,7 +5897,7 @@ Please provide:
|
|
|
5197
5897
|
* File system tool implementations
|
|
5198
5898
|
*/
|
|
5199
5899
|
async readFile(args) {
|
|
5200
|
-
const {
|
|
5900
|
+
const { filePath } = args;
|
|
5201
5901
|
try {
|
|
5202
5902
|
const fs = await import('fs/promises');
|
|
5203
5903
|
const path = await import('path');
|
|
@@ -5212,9 +5912,9 @@ Please provide:
|
|
|
5212
5912
|
content: [
|
|
5213
5913
|
{
|
|
5214
5914
|
type: 'text',
|
|
5215
|
-
text: content
|
|
5216
|
-
}
|
|
5217
|
-
]
|
|
5915
|
+
text: content,
|
|
5916
|
+
},
|
|
5917
|
+
],
|
|
5218
5918
|
};
|
|
5219
5919
|
}
|
|
5220
5920
|
catch (error) {
|
|
@@ -5222,7 +5922,7 @@ Please provide:
|
|
|
5222
5922
|
}
|
|
5223
5923
|
}
|
|
5224
5924
|
async writeFile(args) {
|
|
5225
|
-
const {
|
|
5925
|
+
const { filePath, content } = args;
|
|
5226
5926
|
try {
|
|
5227
5927
|
const fs = await import('fs/promises');
|
|
5228
5928
|
const path = await import('path');
|
|
@@ -5240,9 +5940,9 @@ Please provide:
|
|
|
5240
5940
|
content: [
|
|
5241
5941
|
{
|
|
5242
5942
|
type: 'text',
|
|
5243
|
-
text: `Successfully wrote to ${filePath}
|
|
5244
|
-
}
|
|
5245
|
-
]
|
|
5943
|
+
text: `Successfully wrote to ${filePath}`,
|
|
5944
|
+
},
|
|
5945
|
+
],
|
|
5246
5946
|
};
|
|
5247
5947
|
}
|
|
5248
5948
|
catch (error) {
|
|
@@ -5264,32 +5964,52 @@ Please provide:
|
|
|
5264
5964
|
const fileList = entries.map(entry => ({
|
|
5265
5965
|
name: entry.name,
|
|
5266
5966
|
type: entry.isDirectory() ? 'directory' : 'file',
|
|
5267
|
-
path: path.join(dirPath, entry.name)
|
|
5967
|
+
path: path.join(dirPath, entry.name),
|
|
5268
5968
|
}));
|
|
5269
5969
|
return {
|
|
5270
5970
|
content: [
|
|
5271
5971
|
{
|
|
5272
5972
|
type: 'text',
|
|
5273
|
-
text: JSON.stringify(fileList, null, 2)
|
|
5274
|
-
}
|
|
5275
|
-
]
|
|
5973
|
+
text: JSON.stringify(fileList, null, 2),
|
|
5974
|
+
},
|
|
5975
|
+
],
|
|
5276
5976
|
};
|
|
5277
5977
|
}
|
|
5278
5978
|
catch (error) {
|
|
5279
5979
|
throw new McpAdrError(`Failed to list directory: ${error instanceof Error ? error.message : String(error)}`, 'DIRECTORY_LIST_ERROR');
|
|
5280
5980
|
}
|
|
5281
5981
|
}
|
|
5282
|
-
async manageTodoJson(
|
|
5982
|
+
async manageTodoJson(_args) {
|
|
5283
5983
|
try {
|
|
5284
|
-
|
|
5285
|
-
|
|
5286
|
-
|
|
5287
|
-
|
|
5288
|
-
|
|
5984
|
+
// TODO management has been deprecated and moved to mcp-shrimp-task-manager
|
|
5985
|
+
this.logger.warn('⚠️ manageTodoJson deprecated - use mcp-shrimp-task-manager instead');
|
|
5986
|
+
return {
|
|
5987
|
+
content: [
|
|
5988
|
+
{
|
|
5989
|
+
type: 'text',
|
|
5990
|
+
text: `⚠️ **TODO Management Tool Deprecated**
|
|
5991
|
+
|
|
5992
|
+
This tool (manageTodoJson) has been deprecated and is no longer functional.
|
|
5993
|
+
|
|
5994
|
+
**Replacement:** Use the external \`mcp-shrimp-task-manager\` for task management:
|
|
5995
|
+
- Task planning and breaking down
|
|
5996
|
+
- Task tracking and status updates
|
|
5997
|
+
- Task dependencies and priorities
|
|
5998
|
+
- Task completion and verification
|
|
5999
|
+
|
|
6000
|
+
**Migration:** The system has moved to a memory-centric architecture where task management is handled by external MCP servers rather than internal JSON files.
|
|
6001
|
+
|
|
6002
|
+
**Error:** TodoJsonManager was removed - use mcp-shrimp-task-manager for task management`,
|
|
6003
|
+
},
|
|
6004
|
+
],
|
|
6005
|
+
isError: false,
|
|
5289
6006
|
};
|
|
5290
|
-
return await manageTodoV2(argsWithPath);
|
|
5291
6007
|
}
|
|
5292
6008
|
catch (error) {
|
|
6009
|
+
// If it's already a McpAdrError with good details, re-throw it as-is
|
|
6010
|
+
if (error instanceof Error && error.name === 'McpAdrError') {
|
|
6011
|
+
throw error;
|
|
6012
|
+
}
|
|
5293
6013
|
throw new McpAdrError(`JSON TODO management failed: ${error instanceof Error ? error.message : String(error)}`, 'TODO_JSON_MANAGEMENT_ERROR');
|
|
5294
6014
|
}
|
|
5295
6015
|
}
|
|
@@ -5329,14 +6049,28 @@ Please provide:
|
|
|
5329
6049
|
throw new McpAdrError(`Troubleshoot guided workflow failed: ${error instanceof Error ? error.message : String(error)}`, 'TROUBLESHOOT_GUIDED_WORKFLOW_ERROR');
|
|
5330
6050
|
}
|
|
5331
6051
|
}
|
|
5332
|
-
async smartScore(
|
|
5333
|
-
|
|
5334
|
-
|
|
5335
|
-
|
|
5336
|
-
|
|
5337
|
-
|
|
5338
|
-
|
|
5339
|
-
|
|
6052
|
+
async smartScore(_args) {
|
|
6053
|
+
// Smart score tool was removed - return deprecation message
|
|
6054
|
+
return {
|
|
6055
|
+
content: [
|
|
6056
|
+
{
|
|
6057
|
+
type: 'text',
|
|
6058
|
+
text: `⚠️ **Smart Score Tool Deprecated**
|
|
6059
|
+
|
|
6060
|
+
This tool has been deprecated and replaced with memory-centric health scoring.
|
|
6061
|
+
|
|
6062
|
+
**Replacement:** The new MemoryHealthScoring system tracks:
|
|
6063
|
+
- Memory quality and relevance
|
|
6064
|
+
- Retrieval performance
|
|
6065
|
+
- Entity relationship coherence
|
|
6066
|
+
- Context utilization
|
|
6067
|
+
- Decision alignment
|
|
6068
|
+
|
|
6069
|
+
**Migration:** Health scoring is now integrated into the knowledge graph and automatically calculated based on memory usage patterns.`,
|
|
6070
|
+
},
|
|
6071
|
+
],
|
|
6072
|
+
isError: false,
|
|
6073
|
+
};
|
|
5340
6074
|
}
|
|
5341
6075
|
async mcpPlanning(args) {
|
|
5342
6076
|
try {
|
|
@@ -5347,6 +6081,16 @@ Please provide:
|
|
|
5347
6081
|
throw new McpAdrError(`MCP planning failed: ${error instanceof Error ? error.message : String(error)}`, 'MCP_PLANNING_ERROR');
|
|
5348
6082
|
}
|
|
5349
6083
|
}
|
|
6084
|
+
async memoryLoading(args) {
|
|
6085
|
+
try {
|
|
6086
|
+
const { MemoryLoadingTool } = await import('./tools/memory-loading-tool.js');
|
|
6087
|
+
const memoryTool = new MemoryLoadingTool();
|
|
6088
|
+
return await memoryTool.execute(args);
|
|
6089
|
+
}
|
|
6090
|
+
catch (error) {
|
|
6091
|
+
throw new McpAdrError(`Memory loading failed: ${error instanceof Error ? error.message : String(error)}`, 'MEMORY_LOADING_ERROR');
|
|
6092
|
+
}
|
|
6093
|
+
}
|
|
5350
6094
|
async interactiveAdrPlanning(args) {
|
|
5351
6095
|
try {
|
|
5352
6096
|
const { interactiveAdrPlanning } = await import('./tools/interactive-adr-planning-tool.js');
|
|
@@ -5356,6 +6100,18 @@ Please provide:
|
|
|
5356
6100
|
throw new McpAdrError(`Interactive ADR planning failed: ${error instanceof Error ? error.message : String(error)}`, 'INTERACTIVE_ADR_PLANNING_ERROR');
|
|
5357
6101
|
}
|
|
5358
6102
|
}
|
|
6103
|
+
/**
|
|
6104
|
+
* Tool chain orchestrator implementation
|
|
6105
|
+
*/
|
|
6106
|
+
async toolChainOrchestrator(args) {
|
|
6107
|
+
try {
|
|
6108
|
+
const { toolChainOrchestrator } = await import('./tools/tool-chain-orchestrator.js');
|
|
6109
|
+
return await toolChainOrchestrator(args);
|
|
6110
|
+
}
|
|
6111
|
+
catch (error) {
|
|
6112
|
+
throw new McpAdrError(`Tool chain orchestration failed: ${error instanceof Error ? error.message : String(error)}`, 'TOOL_CHAIN_ORCHESTRATOR_ERROR');
|
|
6113
|
+
}
|
|
6114
|
+
}
|
|
5359
6115
|
}
|
|
5360
6116
|
/**
|
|
5361
6117
|
* Main execution
|
|
@@ -5416,10 +6172,11 @@ Examples:
|
|
|
5416
6172
|
// Start the server if this file is run directly
|
|
5417
6173
|
// Jest-compatible check: avoid import.meta.url which Jest cannot handle
|
|
5418
6174
|
// Handle both direct execution and npm global package symlinks
|
|
5419
|
-
if (process.argv[1] &&
|
|
5420
|
-
process.argv[1].endsWith('index.
|
|
5421
|
-
|
|
5422
|
-
|
|
6175
|
+
if (process.argv[1] &&
|
|
6176
|
+
(process.argv[1].endsWith('index.js') ||
|
|
6177
|
+
process.argv[1].endsWith('index.ts') ||
|
|
6178
|
+
process.argv[1].endsWith('mcp-adr-analysis-server'))) {
|
|
6179
|
+
main().catch(error => {
|
|
5423
6180
|
console.error('Unhandled error:', error);
|
|
5424
6181
|
process.exit(1);
|
|
5425
6182
|
});
|