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,65 @@
1
+ /**
2
+ * Configuration management for MCP ADR Analysis Server
3
+ * Handles environment variables and default settings
4
+ */
5
+ import { z } from 'zod';
6
+ /**
7
+ * Configuration schema for validation
8
+ */
9
+ declare const ConfigSchema: z.ZodObject<{
10
+ projectPath: z.ZodString;
11
+ adrDirectory: z.ZodDefault<z.ZodString>;
12
+ logLevel: z.ZodDefault<z.ZodEnum<["DEBUG", "INFO", "WARN", "ERROR"]>>;
13
+ cacheEnabled: z.ZodDefault<z.ZodBoolean>;
14
+ cacheDirectory: z.ZodDefault<z.ZodString>;
15
+ maxCacheSize: z.ZodDefault<z.ZodNumber>;
16
+ analysisTimeout: z.ZodDefault<z.ZodNumber>;
17
+ }, "strip", z.ZodTypeAny, {
18
+ projectPath: string;
19
+ adrDirectory: string;
20
+ logLevel: "DEBUG" | "INFO" | "WARN" | "ERROR";
21
+ cacheEnabled: boolean;
22
+ cacheDirectory: string;
23
+ maxCacheSize: number;
24
+ analysisTimeout: number;
25
+ }, {
26
+ projectPath: string;
27
+ adrDirectory?: string | undefined;
28
+ logLevel?: "DEBUG" | "INFO" | "WARN" | "ERROR" | undefined;
29
+ cacheEnabled?: boolean | undefined;
30
+ cacheDirectory?: string | undefined;
31
+ maxCacheSize?: number | undefined;
32
+ analysisTimeout?: number | undefined;
33
+ }>;
34
+ export type ServerConfig = z.infer<typeof ConfigSchema>;
35
+ /**
36
+ * Load and validate configuration from environment variables
37
+ */
38
+ export declare function loadConfig(): ServerConfig;
39
+ /**
40
+ * Get the absolute path for ADR directory
41
+ */
42
+ export declare function getAdrDirectoryPath(config: ServerConfig): string;
43
+ /**
44
+ * Get the absolute path for cache directory
45
+ */
46
+ export declare function getCacheDirectoryPath(config: ServerConfig): string;
47
+ /**
48
+ * Validate that the project path exists and is accessible
49
+ */
50
+ export declare function validateProjectPath(projectPath: string): Promise<void>;
51
+ /**
52
+ * Create logger with configured log level
53
+ */
54
+ export declare function createLogger(config: ServerConfig): {
55
+ debug: (message: string, ...args: any[]) => void;
56
+ info: (message: string, ...args: any[]) => void;
57
+ warn: (message: string, ...args: any[]) => void;
58
+ error: (message: string, ...args: any[]) => void;
59
+ };
60
+ /**
61
+ * Print configuration summary for debugging
62
+ */
63
+ export declare function printConfigSummary(config: ServerConfig): void;
64
+ export {};
65
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;EAQhB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD;;GAEG;AACH,wBAAgB,UAAU,IAAI,YAAY,CA4BzC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAElE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc5E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY;qBAK5B,MAAM,WAAW,GAAG,EAAE;oBAGvB,MAAM,WAAW,GAAG,EAAE;oBAGtB,MAAM,WAAW,GAAG,EAAE;qBAGrB,MAAM,WAAW,GAAG,EAAE;EAI1C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAW7D"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Configuration management for MCP ADR Analysis Server
3
+ * Handles environment variables and default settings
4
+ */
5
+ import path from 'path';
6
+ import { z } from 'zod';
7
+ /**
8
+ * Configuration schema for validation
9
+ */
10
+ const ConfigSchema = z.object({
11
+ projectPath: z.string().min(1, 'PROJECT_PATH is required'),
12
+ adrDirectory: z.string().default('docs/adrs'),
13
+ logLevel: z.enum(['DEBUG', 'INFO', 'WARN', 'ERROR']).default('INFO'),
14
+ cacheEnabled: z.boolean().default(true),
15
+ cacheDirectory: z.string().default('.mcp-adr-cache'),
16
+ maxCacheSize: z.number().default(100 * 1024 * 1024), // 100MB
17
+ analysisTimeout: z.number().default(30000), // 30 seconds
18
+ });
19
+ /**
20
+ * Load and validate configuration from environment variables
21
+ */
22
+ export function loadConfig() {
23
+ // Get PROJECT_PATH from environment or use current working directory
24
+ const projectPath = process.env['PROJECT_PATH'] || process.cwd();
25
+ // Resolve to absolute path
26
+ const absoluteProjectPath = path.resolve(projectPath);
27
+ const rawConfig = {
28
+ projectPath: absoluteProjectPath,
29
+ adrDirectory: process.env['ADR_DIRECTORY'] || 'docs/adrs',
30
+ logLevel: (process.env['LOG_LEVEL'] || 'INFO').toUpperCase(),
31
+ cacheEnabled: process.env['CACHE_ENABLED'] !== 'false',
32
+ cacheDirectory: process.env['CACHE_DIRECTORY'] || '.mcp-adr-cache',
33
+ maxCacheSize: parseInt(process.env['MAX_CACHE_SIZE'] || '104857600'), // 100MB
34
+ analysisTimeout: parseInt(process.env['ANALYSIS_TIMEOUT'] || '30000'), // 30 seconds
35
+ };
36
+ try {
37
+ return ConfigSchema.parse(rawConfig);
38
+ }
39
+ catch (error) {
40
+ if (error instanceof z.ZodError) {
41
+ const issues = error.issues
42
+ .map(issue => `${issue.path.join('.')}: ${issue.message}`)
43
+ .join(', ');
44
+ throw new Error(`Configuration validation failed: ${issues}`);
45
+ }
46
+ throw error;
47
+ }
48
+ }
49
+ /**
50
+ * Get the absolute path for ADR directory
51
+ */
52
+ export function getAdrDirectoryPath(config) {
53
+ return path.resolve(config.projectPath, config.adrDirectory);
54
+ }
55
+ /**
56
+ * Get the absolute path for cache directory
57
+ */
58
+ export function getCacheDirectoryPath(config) {
59
+ return path.resolve(config.projectPath, config.cacheDirectory);
60
+ }
61
+ /**
62
+ * Validate that the project path exists and is accessible
63
+ */
64
+ export async function validateProjectPath(projectPath) {
65
+ const fs = await import('fs/promises');
66
+ try {
67
+ const stats = await fs.stat(projectPath);
68
+ if (!stats.isDirectory()) {
69
+ throw new Error(`PROJECT_PATH is not a directory: ${projectPath}`);
70
+ }
71
+ }
72
+ catch (error) {
73
+ if (error.code === 'ENOENT') {
74
+ throw new Error(`PROJECT_PATH does not exist: ${projectPath}`);
75
+ }
76
+ throw new Error(`Cannot access PROJECT_PATH: ${projectPath} - ${error.message}`);
77
+ }
78
+ }
79
+ /**
80
+ * Create logger with configured log level
81
+ */
82
+ export function createLogger(config) {
83
+ const levels = { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3 };
84
+ const currentLevel = levels[config.logLevel] || 1;
85
+ return {
86
+ debug: (message, ...args) => {
87
+ if (currentLevel <= 0)
88
+ console.debug(`[DEBUG] ${message}`, ...args);
89
+ },
90
+ info: (message, ...args) => {
91
+ if (currentLevel <= 1)
92
+ console.info(`[INFO] ${message}`, ...args);
93
+ },
94
+ warn: (message, ...args) => {
95
+ if (currentLevel <= 2)
96
+ console.warn(`[WARN] ${message}`, ...args);
97
+ },
98
+ error: (message, ...args) => {
99
+ if (currentLevel <= 3)
100
+ console.error(`[ERROR] ${message}`, ...args);
101
+ },
102
+ };
103
+ }
104
+ /**
105
+ * Print configuration summary for debugging
106
+ */
107
+ export function printConfigSummary(config) {
108
+ const logger = createLogger(config);
109
+ logger.info('MCP ADR Analysis Server Configuration:');
110
+ logger.info(` Project Path: ${config.projectPath}`);
111
+ logger.info(` ADR Directory: ${config.adrDirectory}`);
112
+ logger.info(` Log Level: ${config.logLevel}`);
113
+ logger.info(` Cache Enabled: ${config.cacheEnabled}`);
114
+ logger.info(` Cache Directory: ${config.cacheDirectory}`);
115
+ logger.info(` Max Cache Size: ${Math.round(config.maxCacheSize / 1024 / 1024)}MB`);
116
+ logger.info(` Analysis Timeout: ${config.analysisTimeout}ms`);
117
+ }
118
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Content masking utilities using prompt-driven AI analysis
3
+ * Implements intelligent sensitive content detection and masking
4
+ */
5
+ export interface SensitiveItem {
6
+ type: string;
7
+ category: string;
8
+ content: string;
9
+ startPosition: number;
10
+ endPosition: number;
11
+ confidence: number;
12
+ reasoning: string;
13
+ severity: 'low' | 'medium' | 'high' | 'critical';
14
+ suggestedMask: string;
15
+ }
16
+ export interface SensitiveContentAnalysis {
17
+ hasSensitiveContent: boolean;
18
+ detectedItems: SensitiveItem[];
19
+ recommendations: string[];
20
+ overallRisk: 'low' | 'medium' | 'high' | 'critical';
21
+ summary: string;
22
+ }
23
+ export interface MaskingResult {
24
+ maskedContent: string;
25
+ maskingApplied: Array<{
26
+ originalContent: string;
27
+ maskedWith: string;
28
+ position: string;
29
+ reason: string;
30
+ }>;
31
+ preservedStructure: boolean;
32
+ readabilityScore: number;
33
+ securityScore: number;
34
+ recommendations: string[];
35
+ }
36
+ export interface CustomPattern {
37
+ name: string;
38
+ description: string;
39
+ regex: string;
40
+ category: string;
41
+ severity: 'low' | 'medium' | 'high' | 'critical';
42
+ examples: string[];
43
+ falsePositives: string[];
44
+ maskingStrategy: 'full' | 'partial' | 'placeholder' | 'environment';
45
+ }
46
+ /**
47
+ * Analyze content for sensitive information using AI prompts
48
+ */
49
+ export declare function analyzeSensitiveContent(content: string, contentType?: 'code' | 'documentation' | 'configuration' | 'logs' | 'general', userDefinedPatterns?: string[]): Promise<{
50
+ analysisPrompt: string;
51
+ instructions: string;
52
+ }>;
53
+ /**
54
+ * Generate content masking prompt for AI processing
55
+ */
56
+ export declare function generateMaskingInstructions(content: string, detectedSensitiveItems: SensitiveItem[], maskingStrategy?: 'full' | 'partial' | 'placeholder' | 'environment'): Promise<{
57
+ maskingPrompt: string;
58
+ instructions: string;
59
+ }>;
60
+ /**
61
+ * Generate custom pattern configuration prompt
62
+ */
63
+ export declare function generateCustomPatternConfiguration(projectContext: string, existingPatterns?: string[]): Promise<{
64
+ configurationPrompt: string;
65
+ instructions: string;
66
+ }>;
67
+ /**
68
+ * Apply basic masking patterns (fallback when AI is not available)
69
+ */
70
+ export declare function applyBasicMasking(content: string, maskingStrategy?: 'full' | 'partial' | 'placeholder'): string;
71
+ /**
72
+ * Validate that content has been properly masked
73
+ */
74
+ export declare function validateMasking(originalContent: string, maskedContent: string): {
75
+ isValid: boolean;
76
+ issues: string[];
77
+ securityScore: number;
78
+ };
79
+ //# sourceMappingURL=content-masking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-masking.d.ts","sourceRoot":"","sources":["../../../src/utils/content-masking.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Content masking utilities using prompt-driven AI analysis
3
+ * Implements intelligent sensitive content detection and masking
4
+ */
5
+ import { McpAdrError } from '../types/index.js';
6
+ /**
7
+ * Analyze content for sensitive information using AI prompts
8
+ */
9
+ export async function analyzeSensitiveContent(content, contentType = 'general', userDefinedPatterns) {
10
+ try {
11
+ const { generateSensitiveContentDetectionPrompt } = await import('../prompts/security-prompts.js');
12
+ const analysisPrompt = generateSensitiveContentDetectionPrompt(content, contentType, userDefinedPatterns);
13
+ const instructions = `
14
+ # Sensitive Content Analysis Instructions
15
+
16
+ This analysis will help identify sensitive information that should be masked or redacted.
17
+
18
+ ## Next Steps:
19
+ 1. **Review the generated prompt** for sensitive content detection
20
+ 2. **Submit the prompt to an AI agent** for analysis
21
+ 3. **Parse the JSON response** to get detected sensitive items
22
+ 4. **Apply appropriate masking** based on the results
23
+
24
+ ## Expected AI Response Format:
25
+ The AI will return a JSON object with:
26
+ - \`hasSensitiveContent\`: boolean indicating if sensitive content was found
27
+ - \`detectedItems\`: array of sensitive items with positions and severity
28
+ - \`recommendations\`: security recommendations
29
+ - \`overallRisk\`: risk assessment (low/medium/high/critical)
30
+
31
+ ## Usage Example:
32
+ \`\`\`typescript
33
+ const result = await analyzeSensitiveContent(fileContent, 'code');
34
+ // Submit result.analysisPrompt to AI agent
35
+ // Parse AI response as SensitiveContentAnalysis
36
+ \`\`\`
37
+ `;
38
+ return {
39
+ analysisPrompt,
40
+ instructions,
41
+ };
42
+ }
43
+ catch (error) {
44
+ throw new McpAdrError(`Failed to generate sensitive content analysis: ${error instanceof Error ? error.message : String(error)}`, 'ANALYSIS_ERROR');
45
+ }
46
+ }
47
+ /**
48
+ * Generate content masking prompt for AI processing
49
+ */
50
+ export async function generateMaskingInstructions(content, detectedSensitiveItems, maskingStrategy = 'full') {
51
+ try {
52
+ const { generateContentMaskingPrompt } = await import('../prompts/security-prompts.js');
53
+ const maskingPrompt = generateContentMaskingPrompt(content, detectedSensitiveItems, maskingStrategy);
54
+ const instructions = `
55
+ # Content Masking Instructions
56
+
57
+ This will apply intelligent masking to content based on detected sensitive information.
58
+
59
+ ## Masking Strategy: ${maskingStrategy}
60
+
61
+ ## Next Steps:
62
+ 1. **Review the generated masking prompt**
63
+ 2. **Submit to AI agent** for intelligent masking
64
+ 3. **Parse the JSON response** to get masked content
65
+ 4. **Validate the results** for security and usability
66
+
67
+ ## Expected AI Response Format:
68
+ The AI will return a JSON object with:
69
+ - \`maskedContent\`: the content with sensitive information masked
70
+ - \`maskingApplied\`: details of what was masked and how
71
+ - \`readabilityScore\`: how readable the masked content remains
72
+ - \`securityScore\`: how secure the masking is
73
+
74
+ ## Usage Example:
75
+ \`\`\`typescript
76
+ const result = await generateMaskingInstructions(content, sensitiveItems, 'partial');
77
+ // Submit result.maskingPrompt to AI agent
78
+ // Parse AI response as MaskingResult
79
+ \`\`\`
80
+ `;
81
+ return {
82
+ maskingPrompt,
83
+ instructions,
84
+ };
85
+ }
86
+ catch (error) {
87
+ throw new McpAdrError(`Failed to generate masking instructions: ${error instanceof Error ? error.message : String(error)}`, 'MASKING_ERROR');
88
+ }
89
+ }
90
+ /**
91
+ * Generate custom pattern configuration prompt
92
+ */
93
+ export async function generateCustomPatternConfiguration(projectContext, existingPatterns) {
94
+ try {
95
+ const { generateCustomPatternConfigurationPrompt } = await import('../prompts/security-prompts.js');
96
+ const configurationPrompt = generateCustomPatternConfigurationPrompt(projectContext, existingPatterns);
97
+ const instructions = `
98
+ # Custom Pattern Configuration Instructions
99
+
100
+ This will help configure project-specific sensitive information patterns.
101
+
102
+ ## Next Steps:
103
+ 1. **Review the generated configuration prompt**
104
+ 2. **Submit to AI agent** for pattern recommendations
105
+ 3. **Parse the JSON response** to get custom patterns
106
+ 4. **Integrate patterns** into the detection system
107
+
108
+ ## Expected AI Response Format:
109
+ The AI will return a JSON object with:
110
+ - \`customPatterns\`: array of project-specific patterns
111
+ - \`recommendations\`: additional security recommendations
112
+ - \`integrationNotes\`: notes on pattern integration
113
+
114
+ ## Usage Example:
115
+ \`\`\`typescript
116
+ const result = await generateCustomPatternConfiguration(projectInfo);
117
+ // Submit result.configurationPrompt to AI agent
118
+ // Parse AI response to get CustomPattern[]
119
+ \`\`\`
120
+ `;
121
+ return {
122
+ configurationPrompt,
123
+ instructions,
124
+ };
125
+ }
126
+ catch (error) {
127
+ throw new McpAdrError(`Failed to generate pattern configuration: ${error instanceof Error ? error.message : String(error)}`, 'CONFIGURATION_ERROR');
128
+ }
129
+ }
130
+ /**
131
+ * Apply basic masking patterns (fallback when AI is not available)
132
+ */
133
+ export function applyBasicMasking(content, maskingStrategy = 'full') {
134
+ // Basic patterns for common sensitive information
135
+ const patterns = [
136
+ // API Keys
137
+ {
138
+ pattern: /sk-[a-zA-Z0-9]{32,}/g,
139
+ replacement: maskingStrategy === 'partial' ? 'sk-...****' : '[API_KEY_REDACTED]',
140
+ },
141
+ {
142
+ pattern: /ghp_[a-zA-Z0-9]{36}/g,
143
+ replacement: maskingStrategy === 'partial' ? 'ghp_...****' : '[GITHUB_TOKEN_REDACTED]',
144
+ },
145
+ // AWS Keys
146
+ {
147
+ pattern: /AKIA[0-9A-Z]{16}/g,
148
+ replacement: maskingStrategy === 'partial' ? 'AKIA...****' : '[AWS_ACCESS_KEY_REDACTED]',
149
+ },
150
+ // Email addresses
151
+ {
152
+ pattern: /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,
153
+ replacement: maskingStrategy === 'partial' ? '***@***.***' : '[EMAIL_REDACTED]',
154
+ },
155
+ // IP Addresses (private ranges)
156
+ {
157
+ pattern: /\b(?:10\.|172\.(?:1[6-9]|2[0-9]|3[01])\.|192\.168\.)\d{1,3}\.\d{1,3}\b/g,
158
+ replacement: '[IP_ADDRESS_REDACTED]',
159
+ },
160
+ // Common password patterns
161
+ {
162
+ pattern: /password\s*[:=]\s*["']?[^"'\s]+["']?/gi,
163
+ replacement: 'password=[PASSWORD_REDACTED]',
164
+ },
165
+ ];
166
+ let maskedContent = content;
167
+ for (const { pattern, replacement } of patterns) {
168
+ maskedContent = maskedContent.replace(pattern, replacement);
169
+ }
170
+ return maskedContent;
171
+ }
172
+ /**
173
+ * Validate that content has been properly masked
174
+ */
175
+ export function validateMasking(originalContent, maskedContent) {
176
+ const issues = [];
177
+ let securityScore = 1.0;
178
+ // Check for common patterns that should have been masked
179
+ const sensitivePatterns = [
180
+ /sk-[a-zA-Z0-9]{32,}/g,
181
+ /ghp_[a-zA-Z0-9]{36}/g,
182
+ /AKIA[0-9A-Z]{16}/g,
183
+ /password\s*[:=]\s*["']?[^"'\s\\[\\]]+["']?/gi,
184
+ ];
185
+ for (const pattern of sensitivePatterns) {
186
+ const matches = maskedContent.match(pattern);
187
+ if (matches) {
188
+ issues.push(`Potential unmasked sensitive content found: ${matches[0].substring(0, 10)}...`);
189
+ securityScore -= 0.2;
190
+ }
191
+ }
192
+ // Check that masking was actually applied
193
+ if (originalContent === maskedContent) {
194
+ issues.push('No masking appears to have been applied');
195
+ securityScore = 0;
196
+ }
197
+ return {
198
+ isValid: issues.length === 0,
199
+ issues,
200
+ securityScore: Math.max(0, securityScore),
201
+ };
202
+ }
203
+ //# sourceMappingURL=content-masking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-masking.js","sourceRoot":"","sources":["../../../src/utils/content-masking.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Deployment analysis utilities using prompt-driven AI analysis
3
+ * Implements intelligent deployment progress tracking and completion verification
4
+ */
5
+ export interface DeploymentTask {
6
+ taskId: string;
7
+ taskName: string;
8
+ description: string;
9
+ category: 'infrastructure' | 'application' | 'cicd' | 'operational';
10
+ priority: 'critical' | 'high' | 'medium' | 'low';
11
+ status: 'not_started' | 'in_progress' | 'completed' | 'blocked' | 'failed';
12
+ progress: number;
13
+ verificationCriteria: string[];
14
+ expectedOutcome: string;
15
+ sourceAdr?: string;
16
+ }
17
+ export interface OutcomeRule {
18
+ ruleId: string;
19
+ description: string;
20
+ criteria: string[];
21
+ verificationMethod: string;
22
+ }
23
+ export interface DeploymentProgress {
24
+ overallProgress: number;
25
+ categoryProgress: Record<string, number>;
26
+ criticalPath: {
27
+ tasks: string[];
28
+ progress: number;
29
+ bottlenecks: string[];
30
+ };
31
+ estimatedCompletion: string;
32
+ riskLevel: 'low' | 'medium' | 'high' | 'critical';
33
+ }
34
+ /**
35
+ * Identify deployment tasks from ADRs and todo content
36
+ */
37
+ export declare function identifyDeploymentTasks(adrDirectory?: string, todoPath?: string): Promise<{
38
+ identificationPrompt: string;
39
+ instructions: string;
40
+ }>;
41
+ /**
42
+ * Analyze CI/CD logs and pipeline status
43
+ */
44
+ export declare function analyzeCiCdStatus(cicdLogs: string, pipelineConfig?: string, deploymentTasks?: DeploymentTask[]): Promise<{
45
+ analysisPrompt: string;
46
+ instructions: string;
47
+ }>;
48
+ /**
49
+ * Calculate deployment progress
50
+ */
51
+ export declare function calculateDeploymentProgress(deploymentTasks: DeploymentTask[], cicdStatus?: any, environmentStatus?: any): Promise<{
52
+ progressPrompt: string;
53
+ instructions: string;
54
+ }>;
55
+ /**
56
+ * Verify deployment completion with outcome rules
57
+ */
58
+ export declare function verifyDeploymentCompletion(deploymentTasks: DeploymentTask[], outcomeRules: OutcomeRule[], actualOutcomes?: Array<{
59
+ taskId: string;
60
+ outcome: string;
61
+ evidence: string[];
62
+ timestamp: string;
63
+ }>): Promise<{
64
+ verificationPrompt: string;
65
+ instructions: string;
66
+ }>;
67
+ //# sourceMappingURL=deployment-analysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-analysis.d.ts","sourceRoot":"","sources":["../../../src/utils/deployment-analysis.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,gBAAgB,GAAG,aAAa,GAAG,MAAM,GAAG,aAAa,CAAC;IACpE,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,MAAM,EAAE,aAAa,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;IACF,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;CACnD;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,GAAE,MAAoB,EAClC,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,oBAAoB,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAsFjE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,MAAM,EACvB,eAAe,CAAC,EAAE,cAAc,EAAE,GACjC,OAAO,CAAC;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CA8D3D;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,eAAe,EAAE,cAAc,EAAE,EACjC,UAAU,CAAC,EAAE,GAAG,EAChB,iBAAiB,CAAC,EAAE,GAAG,GACtB,OAAO,CAAC;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAqE3D;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,eAAe,EAAE,cAAc,EAAE,EACjC,YAAY,EAAE,WAAW,EAAE,EAC3B,cAAc,CAAC,EAAE,KAAK,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,GACD,OAAO,CAAC;IAAE,kBAAkB,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAmE/D"}