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,432 @@
1
+ /**
2
+ * Research integration utilities using prompt-driven AI analysis
3
+ * Implements intelligent research findings incorporation into ADRs
4
+ */
5
+ import { McpAdrError } from '../types/index.js';
6
+ /**
7
+ * Monitor research directory for files
8
+ */
9
+ export async function monitorResearchDirectory(researchPath = 'docs/research') {
10
+ try {
11
+ const { findFiles } = await import('./file-system.js');
12
+ // Find all research files
13
+ const researchFiles = await findFiles(process.cwd(), [
14
+ `${researchPath}/**/*.md`,
15
+ `${researchPath}/**/*.txt`,
16
+ `${researchPath}/**/*.pdf`,
17
+ `${researchPath}/**/*.doc`,
18
+ `${researchPath}/**/*.docx`,
19
+ ], { includeContent: true });
20
+ const instructions = `
21
+ # Research Directory Monitoring
22
+
23
+ Monitoring research directory for architectural insights and findings.
24
+
25
+ ## Directory Status
26
+ - **Research Path**: ${researchPath}
27
+ - **Files Found**: ${researchFiles.length} files
28
+ - **Total Size**: ${researchFiles.reduce((sum, f) => sum + (f.size || 0), 0)} bytes
29
+
30
+ ## Discovered Files
31
+ ${researchFiles.length === 0
32
+ ? 'No research files found in the specified directory.'
33
+ : researchFiles
34
+ .map((file, index) => `
35
+ ### ${index + 1}. ${file.name}
36
+ - **Path**: ${file.path}
37
+ - **Size**: ${file.size} bytes
38
+ - **Last Modified**: ${file.lastModified || 'Unknown'}
39
+ `)
40
+ .join('')}
41
+
42
+ ## Next Steps
43
+ 1. **Extract research topics** using the topic extraction tool
44
+ 2. **Analyze impact on existing ADRs** using the impact evaluation tool
45
+ 3. **Generate update suggestions** for affected ADRs
46
+ 4. **Monitor for new research** files and changes
47
+
48
+ ## Monitoring Recommendations
49
+ - Set up file system watchers for automatic detection
50
+ - Establish research file naming conventions
51
+ - Create research templates for consistent structure
52
+ - Schedule regular research integration reviews
53
+
54
+ ${researchFiles.length === 0
55
+ ? `
56
+ ## Getting Started
57
+ To begin using research integration:
58
+ 1. Create the research directory: \`mkdir -p ${researchPath}\`
59
+ 2. Add research files (markdown, text, or documents)
60
+ 3. Use the \`incorporate_research\` tool to analyze findings
61
+ 4. Review suggested ADR updates and implementations
62
+ `
63
+ : ''}
64
+ `;
65
+ return {
66
+ monitoringPrompt: `Research directory monitoring complete. Found ${researchFiles.length} files in ${researchPath}.`,
67
+ instructions,
68
+ };
69
+ }
70
+ catch (error) {
71
+ throw new McpAdrError(`Failed to monitor research directory: ${error instanceof Error ? error.message : String(error)}`, 'MONITORING_ERROR');
72
+ }
73
+ }
74
+ /**
75
+ * Extract research topics from files
76
+ */
77
+ export async function extractResearchTopics(researchPath = 'docs/research', existingTopics) {
78
+ try {
79
+ const { findFiles } = await import('./file-system.js');
80
+ const { generateResearchTopicExtractionPrompt } = await import('../prompts/research-integration-prompts.js');
81
+ // Find and read research files
82
+ const researchFiles = await findFiles(process.cwd(), [`${researchPath}/**/*.md`, `${researchPath}/**/*.txt`], { includeContent: true });
83
+ if (researchFiles.length === 0) {
84
+ throw new McpAdrError(`No research files found in ${researchPath}`, 'NO_RESEARCH_FILES');
85
+ }
86
+ // Prepare research file data
87
+ const fileData = researchFiles.map(file => ({
88
+ filename: file.name,
89
+ content: file.content || '',
90
+ lastModified: file.lastModified || new Date().toISOString(),
91
+ size: file.size || 0,
92
+ }));
93
+ const extractionPrompt = generateResearchTopicExtractionPrompt(fileData, existingTopics);
94
+ const instructions = `
95
+ # Research Topic Extraction Instructions
96
+
97
+ This analysis will extract key topics and findings from research files that could impact architectural decisions.
98
+
99
+ ## Research Analysis
100
+ - **Research Path**: ${researchPath}
101
+ - **Files Analyzed**: ${researchFiles.length} files
102
+ - **Existing Topics**: ${existingTopics?.length || 0} topics
103
+ - **Total Content**: ${fileData.reduce((sum, f) => sum + f.content.length, 0)} characters
104
+
105
+ ## Next Steps
106
+ 1. **Submit the extraction prompt** to an AI agent for topic analysis
107
+ 2. **Parse the JSON response** to get extracted topics and insights
108
+ 3. **Review the research findings** for architectural relevance
109
+ 4. **Use the impact evaluation tool** to assess ADR implications
110
+
111
+ ## Expected AI Response Format
112
+ The AI will return a JSON object with:
113
+ - \`extractedTopics\`: Array of research topics with findings and evidence
114
+ - \`researchSummary\`: Overall assessment of research quality and completeness
115
+ - \`keyInsights\`: Major insights that require action
116
+ - \`recommendations\`: Specific recommendations for incorporating findings
117
+ - \`gaps\`: Areas where additional research is needed
118
+
119
+ ## Usage Example
120
+ \`\`\`typescript
121
+ const result = await extractResearchTopics(researchPath, existingTopics);
122
+ // Submit result.extractionPrompt to AI agent
123
+ // Parse AI response for research topics and insights
124
+ \`\`\`
125
+ `;
126
+ return {
127
+ extractionPrompt,
128
+ instructions,
129
+ };
130
+ }
131
+ catch (error) {
132
+ throw new McpAdrError(`Failed to extract research topics: ${error instanceof Error ? error.message : String(error)}`, 'EXTRACTION_ERROR');
133
+ }
134
+ }
135
+ /**
136
+ * Evaluate research impact on existing ADRs
137
+ */
138
+ export async function evaluateResearchImpact(researchTopics, adrDirectory = 'docs/adrs') {
139
+ try {
140
+ const { findFiles } = await import('./file-system.js');
141
+ const { generateResearchImpactEvaluationPrompt } = await import('../prompts/research-integration-prompts.js');
142
+ // Find existing ADRs
143
+ const adrFiles = await findFiles(process.cwd(), [`${adrDirectory}/**/*.md`], {
144
+ includeContent: true,
145
+ });
146
+ if (adrFiles.length === 0) {
147
+ throw new McpAdrError(`No ADR files found in ${adrDirectory}`, 'NO_ADRS_FOUND');
148
+ }
149
+ // Prepare ADR data
150
+ const adrData = adrFiles.map(file => {
151
+ const titleMatch = file.content?.match(/^#\s+(.+)$/m);
152
+ const statusMatch = file.content?.match(/##\s+Status\s*\n\s*(.+)/i);
153
+ return {
154
+ id: file.name.replace(/\.md$/, ''),
155
+ title: titleMatch?.[1] || file.name.replace(/\.md$/, ''),
156
+ status: statusMatch?.[1] || 'Unknown',
157
+ content: file.content || '',
158
+ category: extractAdrCategory(file.content || ''),
159
+ };
160
+ });
161
+ const evaluationPrompt = generateResearchImpactEvaluationPrompt(researchTopics, adrData);
162
+ const instructions = `
163
+ # Research Impact Evaluation Instructions
164
+
165
+ This analysis will evaluate how research findings impact existing ADRs and suggest necessary updates.
166
+
167
+ ## Impact Analysis
168
+ - **Research Topics**: ${researchTopics.length} topics
169
+ - **Existing ADRs**: ${adrFiles.length} ADRs
170
+ - **ADR Directory**: ${adrDirectory}
171
+ - **High Relevance Topics**: ${researchTopics.filter(t => t.relevanceScore > 0.7).length} topics
172
+
173
+ ## Next Steps
174
+ 1. **Submit the evaluation prompt** to an AI agent for impact analysis
175
+ 2. **Parse the JSON response** to get impact assessments and recommendations
176
+ 3. **Review suggested updates** and prioritize based on impact level
177
+ 4. **Use the update suggestion tool** for specific ADR modifications
178
+
179
+ ## Expected AI Response Format
180
+ The AI will return a JSON object with:
181
+ - \`impactAnalysis\`: Detailed impact assessment for each ADR
182
+ - \`updateRecommendations\`: Specific update suggestions with justifications
183
+ - \`newAdrSuggestions\`: Recommendations for new ADRs based on research
184
+ - \`deprecationSuggestions\`: ADRs that should be deprecated
185
+ - \`overallAssessment\`: Summary of findings and action priorities
186
+
187
+ ## Usage Example
188
+ \`\`\`typescript
189
+ const result = await evaluateResearchImpact(researchTopics, adrDirectory);
190
+ // Submit result.evaluationPrompt to AI agent
191
+ // Parse AI response for impact analysis and recommendations
192
+ \`\`\`
193
+ `;
194
+ return {
195
+ evaluationPrompt,
196
+ instructions,
197
+ };
198
+ }
199
+ catch (error) {
200
+ throw new McpAdrError(`Failed to evaluate research impact: ${error instanceof Error ? error.message : String(error)}`, 'EVALUATION_ERROR');
201
+ }
202
+ }
203
+ /**
204
+ * Generate ADR update suggestions
205
+ */
206
+ export async function generateAdrUpdateSuggestions(adrId, researchFindings, updateType, adrDirectory = 'docs/adrs') {
207
+ try {
208
+ const { findFiles } = await import('./file-system.js');
209
+ const { generateAdrUpdateSuggestionPrompt } = await import('../prompts/research-integration-prompts.js');
210
+ // Find the specific ADR
211
+ const adrFiles = await findFiles(process.cwd(), [`${adrDirectory}/**/*.md`], {
212
+ includeContent: true,
213
+ });
214
+ const targetAdr = adrFiles.find(file => file.name.includes(adrId) || file.content?.includes(adrId) || file.path.includes(adrId));
215
+ if (!targetAdr) {
216
+ throw new McpAdrError(`ADR not found: ${adrId}`, 'ADR_NOT_FOUND');
217
+ }
218
+ // Extract ADR metadata
219
+ const titleMatch = targetAdr.content?.match(/^#\s+(.+)$/m);
220
+ const statusMatch = targetAdr.content?.match(/##\s+Status\s*\n\s*(.+)/i);
221
+ const adrData = {
222
+ id: adrId,
223
+ title: titleMatch?.[1] || targetAdr.name.replace(/\.md$/, ''),
224
+ content: targetAdr.content || '',
225
+ status: statusMatch?.[1] || 'Unknown',
226
+ };
227
+ const updatePrompt = generateAdrUpdateSuggestionPrompt(adrData, researchFindings, updateType);
228
+ const instructions = `
229
+ # ADR Update Suggestion Instructions
230
+
231
+ This will generate specific update suggestions for an ADR based on research findings.
232
+
233
+ ## Update Details
234
+ - **ADR ID**: ${adrId}
235
+ - **ADR Title**: ${adrData.title}
236
+ - **Current Status**: ${adrData.status}
237
+ - **Update Type**: ${updateType}
238
+ - **Research Findings**: ${researchFindings.length} findings
239
+
240
+ ## Next Steps
241
+ 1. **Submit the update prompt** to an AI agent for suggestion generation
242
+ 2. **Parse the JSON response** to get detailed update recommendations
243
+ 3. **Review the proposed changes** for accuracy and completeness
244
+ 4. **Apply the updates** to the ADR file with proper version control
245
+ 5. **Notify stakeholders** of the changes and rationale
246
+
247
+ ## Expected AI Response Format
248
+ The AI will return a JSON object with:
249
+ - \`updateSuggestion\`: Overall update metadata and assessment
250
+ - \`proposedChanges\`: Specific changes to make to the ADR
251
+ - \`newContent\`: Complete updated ADR content
252
+ - \`migrationGuidance\`: Implementation and rollback guidance
253
+ - \`qualityChecks\`: Quality assessment of the proposed updates
254
+ - \`reviewRecommendations\`: Suggested review and approval process
255
+
256
+ ## Usage Example
257
+ \`\`\`typescript
258
+ const result = await generateAdrUpdateSuggestions(adrId, findings, updateType);
259
+ // Submit result.updatePrompt to AI agent
260
+ // Parse AI response for update suggestions and implementation guidance
261
+ \`\`\`
262
+ `;
263
+ return {
264
+ updatePrompt,
265
+ instructions,
266
+ };
267
+ }
268
+ catch (error) {
269
+ throw new McpAdrError(`Failed to generate ADR update suggestions: ${error instanceof Error ? error.message : String(error)}`, 'UPDATE_GENERATION_ERROR');
270
+ }
271
+ }
272
+ /**
273
+ * Extract category from ADR content
274
+ */
275
+ function extractAdrCategory(content) {
276
+ const categoryPatterns = [
277
+ { pattern: /framework|library|dependency/i, category: 'technology' },
278
+ { pattern: /database|storage|persistence/i, category: 'database' },
279
+ { pattern: /api|rest|graphql|endpoint/i, category: 'api' },
280
+ { pattern: /security|authentication|authorization/i, category: 'security' },
281
+ { pattern: /deployment|infrastructure|cloud/i, category: 'deployment' },
282
+ { pattern: /test|testing|quality/i, category: 'testing' },
283
+ { pattern: /architecture|pattern|design/i, category: 'architecture' },
284
+ { pattern: /process|workflow|methodology/i, category: 'process' },
285
+ ];
286
+ for (const { pattern, category } of categoryPatterns) {
287
+ if (pattern.test(content)) {
288
+ return category;
289
+ }
290
+ }
291
+ return 'general';
292
+ }
293
+ /**
294
+ * Create research file template
295
+ */
296
+ export function createResearchTemplate(title, category = 'general') {
297
+ const date = new Date().toISOString().split('T')[0];
298
+ return `# ${title}
299
+
300
+ **Date**: ${date}
301
+ **Category**: ${category}
302
+ **Status**: In Progress
303
+
304
+ ## Research Question
305
+
306
+ [What specific question or problem is this research addressing?]
307
+
308
+ ## Background
309
+
310
+ [Provide context and background information]
311
+
312
+ ## Methodology
313
+
314
+ [Describe how the research was conducted]
315
+
316
+ ## Key Findings
317
+
318
+ ### Finding 1
319
+ - **Description**: [Detailed description]
320
+ - **Evidence**: [Supporting evidence or data]
321
+ - **Confidence**: [High/Medium/Low]
322
+ - **Source**: [Source of information]
323
+
324
+ ### Finding 2
325
+ - **Description**: [Detailed description]
326
+ - **Evidence**: [Supporting evidence or data]
327
+ - **Confidence**: [High/Medium/Low]
328
+ - **Source**: [Source of information]
329
+
330
+ ## Implications
331
+
332
+ ### Architectural Impact
333
+ [How do these findings impact architectural decisions?]
334
+
335
+ ### Technology Choices
336
+ [What technology choices are affected?]
337
+
338
+ ### Risk Assessment
339
+ [What risks are identified or mitigated?]
340
+
341
+ ## Recommendations
342
+
343
+ 1. [Specific recommendation 1]
344
+ 2. [Specific recommendation 2]
345
+ 3. [Specific recommendation 3]
346
+
347
+ ## Related ADRs
348
+
349
+ - [List any ADRs that might be affected by this research]
350
+
351
+ ## Next Steps
352
+
353
+ - [ ] [Action item 1]
354
+ - [ ] [Action item 2]
355
+ - [ ] [Action item 3]
356
+
357
+ ## References
358
+
359
+ - [Reference 1]
360
+ - [Reference 2]
361
+ - [Reference 3]
362
+ `;
363
+ }
364
+ /**
365
+ * Prompt for action confirmation before generating drafts
366
+ */
367
+ export function promptForActionConfirmation(action, details, impact) {
368
+ const confirmationPrompt = `
369
+ # Action Confirmation Required
370
+
371
+ **Action**: ${action}
372
+ **Impact Level**: ${impact.toUpperCase()}
373
+
374
+ ## Details
375
+ ${details}
376
+
377
+ ## Confirmation Required
378
+ Before proceeding with this action, please confirm:
379
+
380
+ 1. **Understanding**: Do you understand the proposed action and its implications?
381
+ 2. **Authorization**: Are you authorized to approve this type of change?
382
+ 3. **Impact Assessment**: Have you reviewed the potential impact on existing systems?
383
+ 4. **Timing**: Is this an appropriate time to implement this change?
384
+ 5. **Resources**: Are the necessary resources available for implementation?
385
+
386
+ ## Risk Assessment
387
+ ${impact === 'critical'
388
+ ? '🔴 **CRITICAL**: This action may have significant system-wide impact'
389
+ : impact === 'high'
390
+ ? '🟠 **HIGH**: This action may affect multiple components or stakeholders'
391
+ : impact === 'medium'
392
+ ? '🟡 **MEDIUM**: This action has moderate impact and should be reviewed'
393
+ : '🟢 **LOW**: This action has minimal impact but still requires confirmation'}
394
+
395
+ Please respond with:
396
+ - **APPROVED**: To proceed with the action
397
+ - **REJECTED**: To cancel the action
398
+ - **MODIFIED**: To request modifications to the proposed action
399
+ - **DEFERRED**: To postpone the action to a later time
400
+
401
+ Include any additional comments or requirements for the action.
402
+ `;
403
+ const instructions = `
404
+ # Action Confirmation Instructions
405
+
406
+ This confirmation step ensures that significant changes are properly reviewed before implementation.
407
+
408
+ ## Confirmation Process
409
+ 1. **Review the proposed action** and its details carefully
410
+ 2. **Assess the impact level** and potential consequences
411
+ 3. **Consider timing and resources** required for implementation
412
+ 4. **Provide clear approval or rejection** with reasoning
413
+ 5. **Specify any modifications** needed if not approving as-is
414
+
415
+ ## Response Options
416
+ - **APPROVED**: Action can proceed as proposed
417
+ - **REJECTED**: Action should not be implemented
418
+ - **MODIFIED**: Action needs changes before approval
419
+ - **DEFERRED**: Action should be postponed
420
+
421
+ ## Best Practices
422
+ - Always review high and critical impact actions carefully
423
+ - Consider stakeholder impact and communication needs
424
+ - Ensure proper backup and rollback plans are in place
425
+ - Document the approval decision and reasoning
426
+ `;
427
+ return {
428
+ confirmationPrompt,
429
+ instructions,
430
+ };
431
+ }
432
+ //# sourceMappingURL=research-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research-integration.js","sourceRoot":"","sources":["../../../src/utils/research-integration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA+ChD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,eAAuB,eAAe;IAEtC,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAEvD,0BAA0B;QAC1B,MAAM,aAAa,GAAG,MAAM,SAAS,CACnC,OAAO,CAAC,GAAG,EAAE,EACb;YACE,GAAG,YAAY,UAAU;YACzB,GAAG,YAAY,WAAW;YAC1B,GAAG,YAAY,WAAW;YAC1B,GAAG,YAAY,WAAW;YAC1B,GAAG,YAAY,YAAY;SAC5B,EACD,EAAE,cAAc,EAAE,IAAI,EAAE,CACzB,CAAC;QAEF,MAAM,YAAY,GAAG;;;;;;uBAMF,YAAY;qBACd,aAAa,CAAC,MAAM;oBACrB,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;;;EAI1E,aAAa,CAAC,MAAM,KAAK,CAAC;YACxB,CAAC,CAAC,qDAAqD;YACvD,CAAC,CAAC,aAAa;iBACV,GAAG,CACF,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;MACrB,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI;cACf,IAAI,CAAC,IAAI;cACT,IAAI,CAAC,IAAI;uBACC,IAAY,CAAC,YAAY,IAAI,SAAS;CAC7D,CACQ;iBACA,IAAI,CAAC,EAAE,CAChB;;;;;;;;;;;;;;EAeE,aAAa,CAAC,MAAM,KAAK,CAAC;YACxB,CAAC,CAAC;;;+CAGyC,YAAY;;;;CAI1D;YACG,CAAC,CAAC,EACN;CACC,CAAC;QAEE,OAAO;YACL,gBAAgB,EAAE,iDAAiD,aAAa,CAAC,MAAM,aAAa,YAAY,GAAG;YACnH,YAAY;SACb,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,WAAW,CACnB,yCAAyC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACjG,kBAAkB,CACnB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,eAAuB,eAAe,EACtC,cAAyB;IAEzB,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACvD,MAAM,EAAE,qCAAqC,EAAE,GAAG,MAAM,MAAM,CAC5D,4CAA4C,CAC7C,CAAC;QAEF,+BAA+B;QAC/B,MAAM,aAAa,GAAG,MAAM,SAAS,CACnC,OAAO,CAAC,GAAG,EAAE,EACb,CAAC,GAAG,YAAY,UAAU,EAAE,GAAG,YAAY,WAAW,CAAC,EACvD,EAAE,cAAc,EAAE,IAAI,EAAE,CACzB,CAAC;QAEF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,WAAW,CAAC,8BAA8B,YAAY,EAAE,EAAE,mBAAmB,CAAC,CAAC;QAC3F,CAAC;QAED,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1C,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;YAC3B,YAAY,EAAG,IAAY,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;SACrB,CAAC,CAAC,CAAC;QAEJ,MAAM,gBAAgB,GAAG,qCAAqC,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAEzF,MAAM,YAAY,GAAG;;;;;;uBAMF,YAAY;wBACX,aAAa,CAAC,MAAM;yBACnB,cAAc,EAAE,MAAM,IAAI,CAAC;uBAC7B,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;CAsB5E,CAAC;QAEE,OAAO;YACL,gBAAgB;YAChB,YAAY;SACb,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,WAAW,CACnB,sCAAsC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC9F,kBAAkB,CACnB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,cAA+B,EAC/B,eAAuB,WAAW;IAElC,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACvD,MAAM,EAAE,sCAAsC,EAAE,GAAG,MAAM,MAAM,CAC7D,4CAA4C,CAC7C,CAAC;QAEF,qBAAqB;QACrB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,YAAY,UAAU,CAAC,EAAE;YAC3E,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,WAAW,CAAC,yBAAyB,YAAY,EAAE,EAAE,eAAe,CAAC,CAAC;QAClF,CAAC;QAED,mBAAmB;QACnB,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAClC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;YACtD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAEpE,OAAO;gBACL,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;gBAClC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;gBACxD,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS;gBACrC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;gBAC3B,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;aACjD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,sCAAsC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAEzF,MAAM,YAAY,GAAG;;;;;;yBAMA,cAAc,CAAC,MAAM;uBACvB,QAAQ,CAAC,MAAM;uBACf,YAAY;+BACJ,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;CAsBvF,CAAC;QAEE,OAAO;YACL,gBAAgB;YAChB,YAAY;SACb,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,WAAW,CACnB,uCAAuC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC/F,kBAAkB,CACnB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,KAAa,EACb,gBAIE,EACF,UAAkF,EAClF,eAAuB,WAAW;IAElC,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACvD,MAAM,EAAE,iCAAiC,EAAE,GAAG,MAAM,MAAM,CACxD,4CAA4C,CAC7C,CAAC;QAEF,wBAAwB;QACxB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,YAAY,UAAU,CAAC,EAAE;YAC3E,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAC7B,IAAI,CAAC,EAAE,CACL,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC1F,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,WAAW,CAAC,kBAAkB,KAAK,EAAE,EAAE,eAAe,CAAC,CAAC;QACpE,CAAC;QAED,uBAAuB;QACvB,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAEzE,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7D,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,EAAE;YAChC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS;SACtC,CAAC;QAEF,MAAM,YAAY,GAAG,iCAAiC,CAAC,OAAO,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAE9F,MAAM,YAAY,GAAG;;;;;;gBAMT,KAAK;mBACF,OAAO,CAAC,KAAK;wBACR,OAAO,CAAC,MAAM;qBACjB,UAAU;2BACJ,gBAAgB,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;CAwBjD,CAAC;QAEE,OAAO;YACL,YAAY;YACZ,YAAY;SACb,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,WAAW,CACnB,8CAA8C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACtG,yBAAyB,CAC1B,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,OAAe;IACzC,MAAM,gBAAgB,GAAG;QACvB,EAAE,OAAO,EAAE,+BAA+B,EAAE,QAAQ,EAAE,YAAY,EAAE;QACpE,EAAE,OAAO,EAAE,+BAA+B,EAAE,QAAQ,EAAE,UAAU,EAAE;QAClE,EAAE,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,KAAK,EAAE;QAC1D,EAAE,OAAO,EAAE,wCAAwC,EAAE,QAAQ,EAAE,UAAU,EAAE;QAC3E,EAAE,OAAO,EAAE,kCAAkC,EAAE,QAAQ,EAAE,YAAY,EAAE;QACvE,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,SAAS,EAAE;QACzD,EAAE,OAAO,EAAE,8BAA8B,EAAE,QAAQ,EAAE,cAAc,EAAE;QACrE,EAAE,OAAO,EAAE,+BAA+B,EAAE,QAAQ,EAAE,SAAS,EAAE;KAClE,CAAC;IAEF,KAAK,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,gBAAgB,EAAE,CAAC;QACrD,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,WAAmB,SAAS;IAChF,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpD,OAAO,KAAK,KAAK;;YAEP,IAAI;gBACA,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6DvB,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAc,EACd,OAAe,EACf,MAA8C;IAE9C,MAAM,kBAAkB,GAAG;;;cAGf,MAAM;oBACA,MAAM,CAAC,WAAW,EAAE;;;EAGtC,OAAO;;;;;;;;;;;;EAaP,MAAM,KAAK,UAAU;QACnB,CAAC,CAAC,sEAAsE;QACxE,CAAC,CAAC,MAAM,KAAK,MAAM;YACjB,CAAC,CAAC,yEAAyE;YAC3E,CAAC,CAAC,MAAM,KAAK,QAAQ;gBACnB,CAAC,CAAC,uEAAuE;gBACzE,CAAC,CAAC,4EACV;;;;;;;;;CASC,CAAC;IAEA,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuBtB,CAAC;IAEA,OAAO;QACL,kBAAkB;QAClB,YAAY;KACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Research question generation utilities using prompt-driven AI analysis
3
+ * Implements intelligent research question generation and task tracking
4
+ */
5
+ export interface ResearchProblem {
6
+ id: string;
7
+ description: string;
8
+ category: string;
9
+ severity: string;
10
+ context: string;
11
+ }
12
+ export interface KnowledgeGraph {
13
+ technologies: Array<{
14
+ name: string;
15
+ description?: string;
16
+ category?: string;
17
+ }>;
18
+ patterns: Array<{
19
+ name: string;
20
+ description?: string;
21
+ category?: string;
22
+ }>;
23
+ adrs: Array<{
24
+ id: string;
25
+ title: string;
26
+ status: string;
27
+ content?: string;
28
+ }>;
29
+ relationships: Array<{
30
+ source: string;
31
+ target: string;
32
+ type: string;
33
+ }>;
34
+ }
35
+ export interface ResearchContext {
36
+ topic: string;
37
+ category: string;
38
+ scope: string;
39
+ objectives: string[];
40
+ constraints?: string[];
41
+ timeline?: string;
42
+ }
43
+ export interface ResearchQuestion {
44
+ id: string;
45
+ question: string;
46
+ type: string;
47
+ priority: string;
48
+ complexity: string;
49
+ timeline: string;
50
+ methodology: string;
51
+ expectedOutcome: string;
52
+ successCriteria: string[];
53
+ relatedKnowledge: string[];
54
+ resources: string[];
55
+ risks: string[];
56
+ dependencies: string[];
57
+ }
58
+ /**
59
+ * Correlate problems with knowledge graph
60
+ */
61
+ export declare function correlateProblemKnowledge(problems: ResearchProblem[], knowledgeGraph: KnowledgeGraph): Promise<{
62
+ correlationPrompt: string;
63
+ instructions: string;
64
+ }>;
65
+ /**
66
+ * Find relevant ADRs and patterns for research context
67
+ */
68
+ export declare function findRelevantAdrPatterns(researchContext: ResearchContext, adrDirectory?: string): Promise<{
69
+ relevancePrompt: string;
70
+ instructions: string;
71
+ }>;
72
+ /**
73
+ * Generate context-aware research questions
74
+ */
75
+ export declare function generateContextAwareQuestions(researchContext: ResearchContext, relevantKnowledge: {
76
+ adrs: any[];
77
+ patterns: any[];
78
+ gaps: any[];
79
+ opportunities: any[];
80
+ }, projectPath?: string): Promise<{
81
+ questionPrompt: string;
82
+ instructions: string;
83
+ }>;
84
+ /**
85
+ * Create research task tracking system
86
+ */
87
+ export declare function createResearchTaskTracking(researchQuestions: ResearchQuestion[], currentProgress?: Array<{
88
+ questionId: string;
89
+ status: string;
90
+ progress: number;
91
+ findings: string[];
92
+ blockers: string[];
93
+ }>): Promise<{
94
+ trackingPrompt: string;
95
+ instructions: string;
96
+ }>;
97
+ //# sourceMappingURL=research-questions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research-questions.d.ts","sourceRoot":"","sources":["../../../src/utils/research-questions.ts"],"names":[],"mappings":"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"}