mcp-adr-analysis-server 1.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.
Files changed (131) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +608 -0
  3. package/dist/src/index.d.ts +10 -0
  4. package/dist/src/index.d.ts.map +1 -0
  5. package/dist/src/index.js +1722 -0
  6. package/dist/src/index.js.map +1 -0
  7. package/dist/src/prompts/adr-suggestion-prompts.d.ts +24 -0
  8. package/dist/src/prompts/adr-suggestion-prompts.d.ts.map +1 -0
  9. package/dist/src/prompts/adr-suggestion-prompts.js +383 -0
  10. package/dist/src/prompts/adr-suggestion-prompts.js.map +1 -0
  11. package/dist/src/prompts/analysis-prompts.d.ts +24 -0
  12. package/dist/src/prompts/analysis-prompts.d.ts.map +1 -0
  13. package/dist/src/prompts/analysis-prompts.js +489 -0
  14. package/dist/src/prompts/analysis-prompts.js.map +1 -0
  15. package/dist/src/prompts/deployment-analysis-prompts.d.ts +54 -0
  16. package/dist/src/prompts/deployment-analysis-prompts.d.ts.map +1 -0
  17. package/dist/src/prompts/deployment-analysis-prompts.js +712 -0
  18. package/dist/src/prompts/deployment-analysis-prompts.js.map +1 -0
  19. package/dist/src/prompts/environment-analysis-prompts.d.ts +34 -0
  20. package/dist/src/prompts/environment-analysis-prompts.d.ts.map +1 -0
  21. package/dist/src/prompts/environment-analysis-prompts.js +724 -0
  22. package/dist/src/prompts/environment-analysis-prompts.js.map +1 -0
  23. package/dist/src/prompts/index.d.ts +43 -0
  24. package/dist/src/prompts/index.d.ts.map +1 -0
  25. package/dist/src/prompts/index.js +384 -0
  26. package/dist/src/prompts/index.js.map +1 -0
  27. package/dist/src/prompts/research-integration-prompts.d.ts +43 -0
  28. package/dist/src/prompts/research-integration-prompts.d.ts.map +1 -0
  29. package/dist/src/prompts/research-integration-prompts.js +398 -0
  30. package/dist/src/prompts/research-integration-prompts.js.map +1 -0
  31. package/dist/src/prompts/research-question-prompts.d.ts +75 -0
  32. package/dist/src/prompts/research-question-prompts.d.ts.map +1 -0
  33. package/dist/src/prompts/research-question-prompts.js +695 -0
  34. package/dist/src/prompts/research-question-prompts.js.map +1 -0
  35. package/dist/src/prompts/rule-generation-prompts.d.ts +63 -0
  36. package/dist/src/prompts/rule-generation-prompts.d.ts.map +1 -0
  37. package/dist/src/prompts/rule-generation-prompts.js +630 -0
  38. package/dist/src/prompts/rule-generation-prompts.js.map +1 -0
  39. package/dist/src/prompts/security-prompts.d.ts +23 -0
  40. package/dist/src/prompts/security-prompts.d.ts.map +1 -0
  41. package/dist/src/prompts/security-prompts.js +287 -0
  42. package/dist/src/prompts/security-prompts.js.map +1 -0
  43. package/dist/src/resources/index.d.ts +24 -0
  44. package/dist/src/resources/index.d.ts.map +1 -0
  45. package/dist/src/resources/index.js +458 -0
  46. package/dist/src/resources/index.js.map +1 -0
  47. package/dist/src/tools/adr-suggestion-tool.d.ts +40 -0
  48. package/dist/src/tools/adr-suggestion-tool.d.ts.map +1 -0
  49. package/dist/src/tools/adr-suggestion-tool.js +338 -0
  50. package/dist/src/tools/adr-suggestion-tool.js.map +1 -0
  51. package/dist/src/tools/content-masking-tool.d.ts +52 -0
  52. package/dist/src/tools/content-masking-tool.d.ts.map +1 -0
  53. package/dist/src/tools/content-masking-tool.js +206 -0
  54. package/dist/src/tools/content-masking-tool.js.map +1 -0
  55. package/dist/src/tools/deployment-analysis-tool.d.ts +39 -0
  56. package/dist/src/tools/deployment-analysis-tool.d.ts.map +1 -0
  57. package/dist/src/tools/deployment-analysis-tool.js +310 -0
  58. package/dist/src/tools/deployment-analysis-tool.js.map +1 -0
  59. package/dist/src/tools/environment-analysis-tool.d.ts +16 -0
  60. package/dist/src/tools/environment-analysis-tool.d.ts.map +1 -0
  61. package/dist/src/tools/environment-analysis-tool.js +298 -0
  62. package/dist/src/tools/environment-analysis-tool.js.map +1 -0
  63. package/dist/src/tools/research-integration-tool.d.ts +44 -0
  64. package/dist/src/tools/research-integration-tool.d.ts.map +1 -0
  65. package/dist/src/tools/research-integration-tool.js +429 -0
  66. package/dist/src/tools/research-integration-tool.js.map +1 -0
  67. package/dist/src/tools/research-question-tool.d.ts +55 -0
  68. package/dist/src/tools/research-question-tool.d.ts.map +1 -0
  69. package/dist/src/tools/research-question-tool.js +333 -0
  70. package/dist/src/tools/research-question-tool.js.map +1 -0
  71. package/dist/src/tools/rule-generation-tool.d.ts +49 -0
  72. package/dist/src/tools/rule-generation-tool.d.ts.map +1 -0
  73. package/dist/src/tools/rule-generation-tool.js +432 -0
  74. package/dist/src/tools/rule-generation-tool.js.map +1 -0
  75. package/dist/src/types/index.d.ts +531 -0
  76. package/dist/src/types/index.d.ts.map +1 -0
  77. package/dist/src/types/index.js +129 -0
  78. package/dist/src/types/index.js.map +1 -0
  79. package/dist/src/utils/adr-suggestions.d.ts +104 -0
  80. package/dist/src/utils/adr-suggestions.d.ts.map +1 -0
  81. package/dist/src/utils/adr-suggestions.js +228 -0
  82. package/dist/src/utils/adr-suggestions.js.map +1 -0
  83. package/dist/src/utils/cache.d.ts +51 -0
  84. package/dist/src/utils/cache.d.ts.map +1 -0
  85. package/dist/src/utils/cache.js +243 -0
  86. package/dist/src/utils/cache.js.map +1 -0
  87. package/dist/src/utils/config.d.ts +65 -0
  88. package/dist/src/utils/config.d.ts.map +1 -0
  89. package/dist/src/utils/config.js +118 -0
  90. package/dist/src/utils/config.js.map +1 -0
  91. package/dist/src/utils/content-masking.d.ts +79 -0
  92. package/dist/src/utils/content-masking.d.ts.map +1 -0
  93. package/dist/src/utils/content-masking.js +203 -0
  94. package/dist/src/utils/content-masking.js.map +1 -0
  95. package/dist/src/utils/deployment-analysis.d.ts +67 -0
  96. package/dist/src/utils/deployment-analysis.d.ts.map +1 -0
  97. package/dist/src/utils/deployment-analysis.js +263 -0
  98. package/dist/src/utils/deployment-analysis.js.map +1 -0
  99. package/dist/src/utils/environment-analysis.d.ts +76 -0
  100. package/dist/src/utils/environment-analysis.d.ts.map +1 -0
  101. package/dist/src/utils/environment-analysis.js +329 -0
  102. package/dist/src/utils/environment-analysis.js.map +1 -0
  103. package/dist/src/utils/file-system.d.ts +63 -0
  104. package/dist/src/utils/file-system.d.ts.map +1 -0
  105. package/dist/src/utils/file-system.js +189 -0
  106. package/dist/src/utils/file-system.js.map +1 -0
  107. package/dist/src/utils/output-masking.d.ts +45 -0
  108. package/dist/src/utils/output-masking.d.ts.map +1 -0
  109. package/dist/src/utils/output-masking.js +200 -0
  110. package/dist/src/utils/output-masking.js.map +1 -0
  111. package/dist/src/utils/research-documentation.d.ts +58 -0
  112. package/dist/src/utils/research-documentation.d.ts.map +1 -0
  113. package/dist/src/utils/research-documentation.js +438 -0
  114. package/dist/src/utils/research-documentation.js.map +1 -0
  115. package/dist/src/utils/research-integration.d.ts +89 -0
  116. package/dist/src/utils/research-integration.d.ts.map +1 -0
  117. package/dist/src/utils/research-integration.js +432 -0
  118. package/dist/src/utils/research-integration.js.map +1 -0
  119. package/dist/src/utils/research-questions.d.ts +97 -0
  120. package/dist/src/utils/research-questions.d.ts.map +1 -0
  121. package/dist/src/utils/research-questions.js +319 -0
  122. package/dist/src/utils/research-questions.js.map +1 -0
  123. package/dist/src/utils/rule-format.d.ts +76 -0
  124. package/dist/src/utils/rule-format.d.ts.map +1 -0
  125. package/dist/src/utils/rule-format.js +257 -0
  126. package/dist/src/utils/rule-format.js.map +1 -0
  127. package/dist/src/utils/rule-generation.d.ts +86 -0
  128. package/dist/src/utils/rule-generation.d.ts.map +1 -0
  129. package/dist/src/utils/rule-generation.js +330 -0
  130. package/dist/src/utils/rule-generation.js.map +1 -0
  131. package/package.json +71 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-analysis.js","sourceRoot":"","sources":["../../../src/utils/environment-analysis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * File system utilities for MCP ADR Analysis Server
3
+ * Handles file discovery, reading, and analysis operations
4
+ */
5
+ export interface FileInfo {
6
+ path: string;
7
+ name: string;
8
+ extension: string;
9
+ size: number;
10
+ directory: string;
11
+ content?: string;
12
+ }
13
+ export interface ProjectStructure {
14
+ rootPath: string;
15
+ files: FileInfo[];
16
+ directories: string[];
17
+ totalFiles: number;
18
+ totalDirectories: number;
19
+ }
20
+ /**
21
+ * Discover and analyze project structure
22
+ */
23
+ export declare function analyzeProjectStructure(projectPath: string): Promise<ProjectStructure>;
24
+ /**
25
+ * Read file content safely
26
+ */
27
+ export declare function readFileContent(filePath: string): Promise<string>;
28
+ /**
29
+ * Find files matching specific patterns
30
+ */
31
+ export declare function findFiles(projectPath: string, patterns: string[], options?: {
32
+ includeContent?: boolean;
33
+ }): Promise<FileInfo[]>;
34
+ /**
35
+ * Check if file exists
36
+ */
37
+ export declare function fileExists(filePath: string): Promise<boolean>;
38
+ /**
39
+ * Ensure directory exists
40
+ */
41
+ export declare function ensureDirectory(dirPath: string): Promise<void>;
42
+ /**
43
+ * Write file with directory creation
44
+ */
45
+ export declare function writeFile(filePath: string, content: string): Promise<void>;
46
+ /**
47
+ * Get file extension patterns for different file types
48
+ */
49
+ export declare const FILE_PATTERNS: {
50
+ readonly config: readonly ["package.json", "tsconfig.json", "*.config.js", "*.config.ts", ".env*", "Dockerfile", "docker-compose.yml"];
51
+ readonly typescript: readonly ["**/*.ts", "**/*.tsx"];
52
+ readonly javascript: readonly ["**/*.js", "**/*.jsx"];
53
+ readonly python: readonly ["**/*.py"];
54
+ readonly java: readonly ["**/*.java"];
55
+ readonly csharp: readonly ["**/*.cs"];
56
+ readonly go: readonly ["**/*.go"];
57
+ readonly rust: readonly ["**/*.rs"];
58
+ readonly documentation: readonly ["**/*.md", "**/*.rst", "**/*.txt", "**/README*"];
59
+ readonly adrs: readonly ["docs/adrs/**/*.md", "adrs/**/*.md", "decisions/**/*.md"];
60
+ readonly build: readonly ["Makefile", "*.mk", "build.gradle", "pom.xml", "Cargo.toml"];
61
+ readonly ci: readonly [".github/workflows/**/*.yml", ".github/workflows/**/*.yaml", ".gitlab-ci.yml", "azure-pipelines.yml"];
62
+ };
63
+ //# sourceMappingURL=file-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../../src/utils/file-system.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiE5F;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASvE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GACzC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAuCrB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASpE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhF;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;CAmChB,CAAC"}
@@ -0,0 +1,189 @@
1
+ /**
2
+ * File system utilities for MCP ADR Analysis Server
3
+ * Handles file discovery, reading, and analysis operations
4
+ */
5
+ import { promises as fs } from 'fs';
6
+ import { extname, basename, dirname } from 'path';
7
+ import { glob } from 'fast-glob';
8
+ import { FileSystemError } from '../types/index.js';
9
+ /**
10
+ * Discover and analyze project structure
11
+ */
12
+ export async function analyzeProjectStructure(projectPath) {
13
+ try {
14
+ // Verify project path exists
15
+ const stats = await fs.stat(projectPath);
16
+ if (!stats.isDirectory()) {
17
+ throw new FileSystemError(`Path is not a directory: ${projectPath}`);
18
+ }
19
+ // Discover all files (excluding common ignore patterns)
20
+ const filePatterns = [
21
+ '**/*',
22
+ '!node_modules/**',
23
+ '!.git/**',
24
+ '!dist/**',
25
+ '!build/**',
26
+ '!coverage/**',
27
+ '!.mcp-adr-cache/**',
28
+ '!*.log',
29
+ ];
30
+ const filePaths = await glob(filePatterns, {
31
+ cwd: projectPath,
32
+ absolute: true,
33
+ onlyFiles: true,
34
+ });
35
+ const directoryPaths = await glob(['**/*'], {
36
+ cwd: projectPath,
37
+ absolute: true,
38
+ onlyDirectories: true,
39
+ });
40
+ // Process file information
41
+ const files = [];
42
+ for (const filePath of filePaths) {
43
+ try {
44
+ const fileStats = await fs.stat(filePath);
45
+ const relativePath = filePath.replace(projectPath + '/', '');
46
+ files.push({
47
+ path: relativePath,
48
+ name: basename(filePath),
49
+ extension: extname(filePath),
50
+ size: fileStats.size,
51
+ directory: dirname(relativePath),
52
+ });
53
+ }
54
+ catch (error) {
55
+ // Skip files that can't be accessed
56
+ continue;
57
+ }
58
+ }
59
+ return {
60
+ rootPath: projectPath,
61
+ files,
62
+ directories: directoryPaths.map(dir => dir.replace(projectPath + '/', '')),
63
+ totalFiles: files.length,
64
+ totalDirectories: directoryPaths.length,
65
+ };
66
+ }
67
+ catch (error) {
68
+ throw new FileSystemError(`Failed to analyze project structure: ${error instanceof Error ? error.message : String(error)}`, { projectPath });
69
+ }
70
+ }
71
+ /**
72
+ * Read file content safely
73
+ */
74
+ export async function readFileContent(filePath) {
75
+ try {
76
+ return await fs.readFile(filePath, 'utf-8');
77
+ }
78
+ catch (error) {
79
+ throw new FileSystemError(`Failed to read file: ${error instanceof Error ? error.message : String(error)}`, { filePath });
80
+ }
81
+ }
82
+ /**
83
+ * Find files matching specific patterns
84
+ */
85
+ export async function findFiles(projectPath, patterns, options = {}) {
86
+ try {
87
+ const filePaths = await glob(patterns, {
88
+ cwd: projectPath,
89
+ absolute: true,
90
+ });
91
+ const files = [];
92
+ for (const filePath of filePaths) {
93
+ try {
94
+ const fileStats = await fs.stat(filePath);
95
+ const relativePath = filePath.replace(projectPath + '/', '');
96
+ const fileInfo = {
97
+ path: relativePath,
98
+ name: basename(filePath),
99
+ extension: extname(filePath),
100
+ size: fileStats.size,
101
+ directory: dirname(relativePath),
102
+ };
103
+ if (options.includeContent) {
104
+ fileInfo.content = await readFileContent(filePath);
105
+ }
106
+ files.push(fileInfo);
107
+ }
108
+ catch (error) {
109
+ // Skip files that can't be accessed
110
+ continue;
111
+ }
112
+ }
113
+ return files;
114
+ }
115
+ catch (error) {
116
+ throw new FileSystemError(`Failed to find files: ${error instanceof Error ? error.message : String(error)}`, { projectPath, patterns });
117
+ }
118
+ }
119
+ /**
120
+ * Check if file exists
121
+ */
122
+ export async function fileExists(filePath) {
123
+ try {
124
+ await fs.access(filePath);
125
+ return true;
126
+ }
127
+ catch {
128
+ return false;
129
+ }
130
+ }
131
+ /**
132
+ * Ensure directory exists
133
+ */
134
+ export async function ensureDirectory(dirPath) {
135
+ try {
136
+ await fs.mkdir(dirPath, { recursive: true });
137
+ }
138
+ catch (error) {
139
+ throw new FileSystemError(`Failed to create directory: ${error instanceof Error ? error.message : String(error)}`, { dirPath });
140
+ }
141
+ }
142
+ /**
143
+ * Write file with directory creation
144
+ */
145
+ export async function writeFile(filePath, content) {
146
+ try {
147
+ await ensureDirectory(dirname(filePath));
148
+ await fs.writeFile(filePath, content, 'utf-8');
149
+ }
150
+ catch (error) {
151
+ throw new FileSystemError(`Failed to write file: ${error instanceof Error ? error.message : String(error)}`, { filePath });
152
+ }
153
+ }
154
+ /**
155
+ * Get file extension patterns for different file types
156
+ */
157
+ export const FILE_PATTERNS = {
158
+ // Configuration files
159
+ config: [
160
+ 'package.json',
161
+ 'tsconfig.json',
162
+ '*.config.js',
163
+ '*.config.ts',
164
+ '.env*',
165
+ 'Dockerfile',
166
+ 'docker-compose.yml',
167
+ ],
168
+ // Source code
169
+ typescript: ['**/*.ts', '**/*.tsx'],
170
+ javascript: ['**/*.js', '**/*.jsx'],
171
+ python: ['**/*.py'],
172
+ java: ['**/*.java'],
173
+ csharp: ['**/*.cs'],
174
+ go: ['**/*.go'],
175
+ rust: ['**/*.rs'],
176
+ // Documentation
177
+ documentation: ['**/*.md', '**/*.rst', '**/*.txt', '**/README*'],
178
+ // ADRs specifically
179
+ adrs: ['docs/adrs/**/*.md', 'adrs/**/*.md', 'decisions/**/*.md'],
180
+ // Build and deployment
181
+ build: ['Makefile', '*.mk', 'build.gradle', 'pom.xml', 'Cargo.toml'],
182
+ ci: [
183
+ '.github/workflows/**/*.yml',
184
+ '.github/workflows/**/*.yaml',
185
+ '.gitlab-ci.yml',
186
+ 'azure-pipelines.yml',
187
+ ],
188
+ };
189
+ //# sourceMappingURL=file-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-system.js","sourceRoot":"","sources":["../../../src/utils/file-system.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Output masking middleware for MCP responses
3
+ * Automatically applies content masking to all tool and resource outputs
4
+ */
5
+ export interface MaskingConfig {
6
+ enabled: boolean;
7
+ strategy: 'full' | 'partial' | 'placeholder' | 'environment';
8
+ customPatterns?: string[];
9
+ skipPatterns?: string[];
10
+ }
11
+ /**
12
+ * Apply content masking to MCP response content
13
+ */
14
+ export declare function maskMcpResponse(response: any, config?: MaskingConfig): Promise<any>;
15
+ /**
16
+ * Generate AI-powered masking for sensitive content
17
+ */
18
+ export declare function generateAiMasking(content: string, contentType?: 'code' | 'documentation' | 'configuration' | 'logs' | 'general'): Promise<{
19
+ maskedContent: string;
20
+ analysisPrompt: string;
21
+ }>;
22
+ /**
23
+ * Create masking configuration from environment or defaults
24
+ */
25
+ export declare function createMaskingConfig(overrides?: Partial<MaskingConfig>): MaskingConfig;
26
+ /**
27
+ * Validate masking configuration
28
+ */
29
+ export declare function validateMaskingConfig(config: MaskingConfig): {
30
+ isValid: boolean;
31
+ errors: string[];
32
+ };
33
+ /**
34
+ * Middleware wrapper for MCP tool responses
35
+ */
36
+ export declare function withContentMasking<T extends (..._args: any[]) => Promise<any>>(toolFunction: T, config?: MaskingConfig): T;
37
+ /**
38
+ * Apply progressive masking based on content sensitivity
39
+ */
40
+ export declare function applyProgressiveMasking(content: string, sensitivityLevel?: 'low' | 'medium' | 'high' | 'critical'): Promise<string>;
41
+ /**
42
+ * Detect content sensitivity level using heuristics
43
+ */
44
+ export declare function detectContentSensitivity(content: string): 'low' | 'medium' | 'high' | 'critical';
45
+ //# sourceMappingURL=output-masking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-masking.d.ts","sourceRoot":"","sources":["../../../src/utils/output-masking.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC;IAC7D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAkBD;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,GAAG,EACb,MAAM,GAAE,aAAsC,GAC7C,OAAO,CAAC,GAAG,CAAC,CAwCd;AAuBD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAM,GAAG,eAAe,GAAG,eAAe,GAAG,MAAM,GAAG,SAAqB,GACvF,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,CAuC5D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAWrF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG;IAC5D,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAuBA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EAC5E,YAAY,EAAE,CAAC,EACf,MAAM,CAAC,EAAE,aAAa,GACrB,CAAC,CAMH;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,gBAAgB,GAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAqB,GAClE,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAwBhG"}
@@ -0,0 +1,200 @@
1
+ /**
2
+ * Output masking middleware for MCP responses
3
+ * Automatically applies content masking to all tool and resource outputs
4
+ */
5
+ import { McpAdrError } from '../types/index.js';
6
+ /**
7
+ * Default masking configuration
8
+ */
9
+ const DEFAULT_MASKING_CONFIG = {
10
+ enabled: true,
11
+ strategy: 'partial',
12
+ customPatterns: [],
13
+ skipPatterns: [
14
+ '[REDACTED]',
15
+ '[API_KEY_REDACTED]',
16
+ '[PASSWORD_REDACTED]',
17
+ '[EMAIL_REDACTED]',
18
+ '[IP_ADDRESS_REDACTED]',
19
+ ],
20
+ };
21
+ /**
22
+ * Apply content masking to MCP response content
23
+ */
24
+ export async function maskMcpResponse(response, config = DEFAULT_MASKING_CONFIG) {
25
+ if (!config.enabled) {
26
+ return response;
27
+ }
28
+ try {
29
+ // Deep clone the response to avoid modifying the original
30
+ const maskedResponse = JSON.parse(JSON.stringify(response));
31
+ // Apply masking to different response types
32
+ if (maskedResponse.content && Array.isArray(maskedResponse.content)) {
33
+ // Tool response with content array
34
+ for (const contentItem of maskedResponse.content) {
35
+ if (contentItem.type === 'text' && contentItem.text) {
36
+ contentItem.text = await maskContent(contentItem.text, config);
37
+ }
38
+ }
39
+ }
40
+ else if (maskedResponse.contents && Array.isArray(maskedResponse.contents)) {
41
+ // Resource response with contents array
42
+ for (const contentItem of maskedResponse.contents) {
43
+ if (contentItem.text) {
44
+ contentItem.text = await maskContent(contentItem.text, config);
45
+ }
46
+ }
47
+ }
48
+ else if (maskedResponse.messages && Array.isArray(maskedResponse.messages)) {
49
+ // Prompt response with messages array
50
+ for (const message of maskedResponse.messages) {
51
+ if (message.content && message.content.text) {
52
+ message.content.text = await maskContent(message.content.text, config);
53
+ }
54
+ }
55
+ }
56
+ return maskedResponse;
57
+ }
58
+ catch (error) {
59
+ throw new McpAdrError(`Failed to mask MCP response: ${error instanceof Error ? error.message : String(error)}`, 'MASKING_ERROR');
60
+ }
61
+ }
62
+ /**
63
+ * Apply content masking to a text string
64
+ */
65
+ async function maskContent(content, config) {
66
+ try {
67
+ // Skip if content is already masked
68
+ if (config.skipPatterns?.some(pattern => content.includes(pattern))) {
69
+ return content;
70
+ }
71
+ // Apply basic masking patterns
72
+ const { applyBasicMasking } = await import('./content-masking.js');
73
+ const strategy = config.strategy === 'environment' ? 'placeholder' : config.strategy;
74
+ return applyBasicMasking(content, strategy);
75
+ }
76
+ catch (error) {
77
+ // If masking fails, return original content with warning
78
+ console.warn('Content masking failed:', error);
79
+ return content;
80
+ }
81
+ }
82
+ /**
83
+ * Generate AI-powered masking for sensitive content
84
+ */
85
+ export async function generateAiMasking(content, contentType = 'general') {
86
+ try {
87
+ const { generateSensitiveContentDetectionPrompt } = await import('../prompts/security-prompts.js');
88
+ const analysisPrompt = generateSensitiveContentDetectionPrompt(content, contentType);
89
+ // For now, apply basic masking as fallback
90
+ const { applyBasicMasking } = await import('./content-masking.js');
91
+ const maskedContent = applyBasicMasking(content, 'partial');
92
+ return {
93
+ maskedContent,
94
+ analysisPrompt: `
95
+ # AI-Powered Content Masking Available
96
+
97
+ The following content has been processed with basic masking. For enhanced AI-powered masking, use the analysis prompt below:
98
+
99
+ ## Basic Masked Content
100
+ \`\`\`
101
+ ${maskedContent}
102
+ \`\`\`
103
+
104
+ ## AI Analysis Prompt
105
+ ${analysisPrompt}
106
+
107
+ ## Instructions
108
+ 1. Submit the AI analysis prompt to detect sensitive information
109
+ 2. Use the results with the \`generate_content_masking\` tool for intelligent masking
110
+ 3. Apply the enhanced masking for better security
111
+ `,
112
+ };
113
+ }
114
+ catch (error) {
115
+ throw new McpAdrError(`Failed to generate AI masking: ${error instanceof Error ? error.message : String(error)}`, 'MASKING_ERROR');
116
+ }
117
+ }
118
+ /**
119
+ * Create masking configuration from environment or defaults
120
+ */
121
+ export function createMaskingConfig(overrides) {
122
+ const envConfig = {
123
+ enabled: process.env['MCP_MASKING_ENABLED'] !== 'false',
124
+ strategy: process.env['MCP_MASKING_STRATEGY'] || 'partial',
125
+ };
126
+ return {
127
+ ...DEFAULT_MASKING_CONFIG,
128
+ ...envConfig,
129
+ ...overrides,
130
+ };
131
+ }
132
+ /**
133
+ * Validate masking configuration
134
+ */
135
+ export function validateMaskingConfig(config) {
136
+ const errors = [];
137
+ if (typeof config.enabled !== 'boolean') {
138
+ errors.push('enabled must be a boolean');
139
+ }
140
+ if (!['full', 'partial', 'placeholder', 'environment'].includes(config.strategy)) {
141
+ errors.push('strategy must be one of: full, partial, placeholder, environment');
142
+ }
143
+ if (config.customPatterns && !Array.isArray(config.customPatterns)) {
144
+ errors.push('customPatterns must be an array');
145
+ }
146
+ if (config.skipPatterns && !Array.isArray(config.skipPatterns)) {
147
+ errors.push('skipPatterns must be an array');
148
+ }
149
+ return {
150
+ isValid: errors.length === 0,
151
+ errors,
152
+ };
153
+ }
154
+ /**
155
+ * Middleware wrapper for MCP tool responses
156
+ */
157
+ export function withContentMasking(toolFunction, config) {
158
+ return (async (...args) => {
159
+ const response = await toolFunction(...args);
160
+ const maskingConfig = config || createMaskingConfig();
161
+ return await maskMcpResponse(response, maskingConfig);
162
+ });
163
+ }
164
+ /**
165
+ * Apply progressive masking based on content sensitivity
166
+ */
167
+ export async function applyProgressiveMasking(content, sensitivityLevel = 'medium') {
168
+ const strategies = {
169
+ low: 'placeholder',
170
+ medium: 'partial',
171
+ high: 'full',
172
+ critical: 'full',
173
+ };
174
+ const strategy = strategies[sensitivityLevel];
175
+ const { applyBasicMasking } = await import('./content-masking.js');
176
+ return applyBasicMasking(content, strategy);
177
+ }
178
+ /**
179
+ * Detect content sensitivity level using heuristics
180
+ */
181
+ export function detectContentSensitivity(content) {
182
+ const criticalPatterns = [/password/gi, /secret/gi, /private.*key/gi, /api.*key/gi, /token/gi];
183
+ const highPatterns = [
184
+ /@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g, // emails
185
+ /\b(?:\d{1,3}\.){3}\d{1,3}\b/g, // IP addresses
186
+ /\b[A-Z0-9]{20,}\b/g, // potential keys/tokens
187
+ ];
188
+ const mediumPatterns = [/localhost/gi, /127\.0\.0\.1/g, /config/gi, /env/gi];
189
+ if (criticalPatterns.some(pattern => pattern.test(content))) {
190
+ return 'critical';
191
+ }
192
+ if (highPatterns.some(pattern => pattern.test(content))) {
193
+ return 'high';
194
+ }
195
+ if (mediumPatterns.some(pattern => pattern.test(content))) {
196
+ return 'medium';
197
+ }
198
+ return 'low';
199
+ }
200
+ //# sourceMappingURL=output-masking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-masking.js","sourceRoot":"","sources":["../../../src/utils/output-masking.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Research documentation utilities
3
+ * Creates structured research documentation in docs/research/
4
+ */
5
+ export interface ResearchDocument {
6
+ id: string;
7
+ title: string;
8
+ category: string;
9
+ status: 'planned' | 'in_progress' | 'completed' | 'cancelled';
10
+ priority: 'critical' | 'high' | 'medium' | 'low';
11
+ questions: Array<{
12
+ id: string;
13
+ question: string;
14
+ type: string;
15
+ methodology: string;
16
+ }>;
17
+ timeline: {
18
+ startDate: string;
19
+ endDate: string;
20
+ milestones: Array<{
21
+ name: string;
22
+ date: string;
23
+ description: string;
24
+ }>;
25
+ };
26
+ resources: Array<{
27
+ type: string;
28
+ description: string;
29
+ status: string;
30
+ }>;
31
+ findings: Array<{
32
+ date: string;
33
+ finding: string;
34
+ confidence: number;
35
+ impact: string;
36
+ }>;
37
+ recommendations: Array<{
38
+ recommendation: string;
39
+ rationale: string;
40
+ implementation: string;
41
+ priority: string;
42
+ }>;
43
+ }
44
+ /**
45
+ * Create perform_research.md file for a research topic
46
+ */
47
+ export declare function createResearchDocument(researchData: ResearchDocument, outputDirectory?: string): Promise<{
48
+ filePath: string;
49
+ content: string;
50
+ }>;
51
+ /**
52
+ * Create research index file
53
+ */
54
+ export declare function createResearchIndex(researchDocuments: ResearchDocument[], outputDirectory?: string): Promise<{
55
+ filePath: string;
56
+ content: string;
57
+ }>;
58
+ //# sourceMappingURL=research-documentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research-documentation.d.ts","sourceRoot":"","sources":["../../../src/utils/research-documentation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC;IAC9D,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,SAAS,EAAE,KAAK,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,KAAK,CAAC;YAChB,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,MAAM,CAAC;SACrB,CAAC,CAAC;KACJ,CAAC;IACF,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,eAAe,EAAE,KAAK,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,gBAAgB,EAC9B,eAAe,GAAE,MAAwB,GACxC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA4BhD;AAmQD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,iBAAiB,EAAE,gBAAgB,EAAE,EACrC,eAAe,GAAE,MAAwB,GACxC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA0BhD"}