mcp-adr-analysis-server 2.1.19 → 2.1.22

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 (227) hide show
  1. package/README.md +1 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/config/ai-config.d.ts +54 -6
  4. package/dist/src/config/ai-config.d.ts.map +1 -1
  5. package/dist/src/config/ai-config.js +69 -6
  6. package/dist/src/config/ai-config.js.map +1 -1
  7. package/dist/src/config/ape-descriptions.d.ts +77 -0
  8. package/dist/src/config/ape-descriptions.d.ts.map +1 -0
  9. package/dist/src/config/ape-descriptions.js +177 -0
  10. package/dist/src/config/ape-descriptions.js.map +1 -0
  11. package/dist/src/index.d.ts +40 -0
  12. package/dist/src/index.d.ts.map +1 -1
  13. package/dist/src/index.js +564 -8
  14. package/dist/src/index.js.map +1 -1
  15. package/dist/src/prompts/adr-suggestion-prompts.d.ts +5 -0
  16. package/dist/src/prompts/adr-suggestion-prompts.d.ts.map +1 -1
  17. package/dist/src/prompts/adr-suggestion-prompts.js +22 -1
  18. package/dist/src/prompts/adr-suggestion-prompts.js.map +1 -1
  19. package/dist/src/prompts/prompt-catalog.d.ts +95 -0
  20. package/dist/src/prompts/prompt-catalog.d.ts.map +1 -0
  21. package/dist/src/prompts/prompt-catalog.js +300 -0
  22. package/dist/src/prompts/prompt-catalog.js.map +1 -0
  23. package/dist/src/resources/adrs-discovered-resource.d.ts +124 -0
  24. package/dist/src/resources/adrs-discovered-resource.d.ts.map +1 -0
  25. package/dist/src/resources/adrs-discovered-resource.js +174 -0
  26. package/dist/src/resources/adrs-discovered-resource.js.map +1 -0
  27. package/dist/src/resources/adrs-review-resource.d.ts +82 -0
  28. package/dist/src/resources/adrs-review-resource.d.ts.map +1 -0
  29. package/dist/src/resources/adrs-review-resource.js +160 -0
  30. package/dist/src/resources/adrs-review-resource.js.map +1 -0
  31. package/dist/src/resources/architectural-context-resource.d.ts +95 -0
  32. package/dist/src/resources/architectural-context-resource.d.ts.map +1 -0
  33. package/dist/src/resources/architectural-context-resource.js +428 -0
  34. package/dist/src/resources/architectural-context-resource.js.map +1 -0
  35. package/dist/src/resources/conversation-snapshot-resource.d.ts +92 -0
  36. package/dist/src/resources/conversation-snapshot-resource.d.ts.map +1 -0
  37. package/dist/src/resources/conversation-snapshot-resource.js +122 -0
  38. package/dist/src/resources/conversation-snapshot-resource.js.map +1 -0
  39. package/dist/src/resources/deployment-status-resource.js +1 -1
  40. package/dist/src/resources/deployment-status-resource.js.map +1 -1
  41. package/dist/src/resources/environment-analysis-resource.js +1 -1
  42. package/dist/src/resources/environment-analysis-resource.js.map +1 -1
  43. package/dist/src/resources/knowledge-graph-resource.d.ts +129 -0
  44. package/dist/src/resources/knowledge-graph-resource.d.ts.map +1 -0
  45. package/dist/src/resources/knowledge-graph-resource.js +217 -0
  46. package/dist/src/resources/knowledge-graph-resource.js.map +1 -0
  47. package/dist/src/resources/memory-expand-resource.d.ts +90 -0
  48. package/dist/src/resources/memory-expand-resource.d.ts.map +1 -0
  49. package/dist/src/resources/memory-expand-resource.js +176 -0
  50. package/dist/src/resources/memory-expand-resource.js.map +1 -0
  51. package/dist/src/resources/memory-stats-resource.d.ts +77 -0
  52. package/dist/src/resources/memory-stats-resource.d.ts.map +1 -0
  53. package/dist/src/resources/memory-stats-resource.js +108 -0
  54. package/dist/src/resources/memory-stats-resource.js.map +1 -0
  55. package/dist/src/resources/project-metrics-resource.js +1 -1
  56. package/dist/src/resources/project-metrics-resource.js.map +1 -1
  57. package/dist/src/resources/resource-cache.d.ts.map +1 -1
  58. package/dist/src/resources/resource-cache.js +2 -1
  59. package/dist/src/resources/resource-cache.js.map +1 -1
  60. package/dist/src/resources/server-context-resource.d.ts +69 -0
  61. package/dist/src/resources/server-context-resource.d.ts.map +1 -0
  62. package/dist/src/resources/server-context-resource.js +104 -0
  63. package/dist/src/resources/server-context-resource.js.map +1 -0
  64. package/dist/src/resources/tool-catalog-resource.d.ts +122 -0
  65. package/dist/src/resources/tool-catalog-resource.d.ts.map +1 -0
  66. package/dist/src/resources/tool-catalog-resource.js +167 -0
  67. package/dist/src/resources/tool-catalog-resource.js.map +1 -0
  68. package/dist/src/tools/adr-bootstrap-validation-tool.d.ts.map +1 -1
  69. package/dist/src/tools/adr-bootstrap-validation-tool.js +7 -6
  70. package/dist/src/tools/adr-bootstrap-validation-tool.js.map +1 -1
  71. package/dist/src/tools/adr-suggestion-tool.d.ts +5 -0
  72. package/dist/src/tools/adr-suggestion-tool.d.ts.map +1 -1
  73. package/dist/src/tools/adr-suggestion-tool.js +40 -71
  74. package/dist/src/tools/adr-suggestion-tool.js.map +1 -1
  75. package/dist/src/tools/bootstrap-validation-loop-tool.d.ts +23 -1
  76. package/dist/src/tools/bootstrap-validation-loop-tool.d.ts.map +1 -1
  77. package/dist/src/tools/bootstrap-validation-loop-tool.js +15 -5
  78. package/dist/src/tools/bootstrap-validation-loop-tool.js.map +1 -1
  79. package/dist/src/tools/ce-mcp-tools.d.ts +291 -0
  80. package/dist/src/tools/ce-mcp-tools.d.ts.map +1 -0
  81. package/dist/src/tools/ce-mcp-tools.js +1188 -0
  82. package/dist/src/tools/ce-mcp-tools.js.map +1 -0
  83. package/dist/src/tools/content-masking-tool.d.ts +11 -0
  84. package/dist/src/tools/content-masking-tool.d.ts.map +1 -1
  85. package/dist/src/tools/content-masking-tool.js +13 -6
  86. package/dist/src/tools/content-masking-tool.js.map +1 -1
  87. package/dist/src/tools/deployment-readiness-tool.d.ts +11 -0
  88. package/dist/src/tools/deployment-readiness-tool.d.ts.map +1 -1
  89. package/dist/src/tools/deployment-readiness-tool.js +10 -4
  90. package/dist/src/tools/deployment-readiness-tool.js.map +1 -1
  91. package/dist/src/tools/environment-analysis-tool.d.ts +96 -1
  92. package/dist/src/tools/environment-analysis-tool.d.ts.map +1 -1
  93. package/dist/src/tools/environment-analysis-tool.js +38 -46
  94. package/dist/src/tools/environment-analysis-tool.js.map +1 -1
  95. package/dist/src/tools/research-question-tool.d.ts.map +1 -1
  96. package/dist/src/tools/research-question-tool.js +3 -2
  97. package/dist/src/tools/research-question-tool.js.map +1 -1
  98. package/dist/src/tools/review-existing-adrs-tool.d.ts +5 -0
  99. package/dist/src/tools/review-existing-adrs-tool.d.ts.map +1 -1
  100. package/dist/src/tools/review-existing-adrs-tool.js +123 -42
  101. package/dist/src/tools/review-existing-adrs-tool.js.map +1 -1
  102. package/dist/src/tools/rule-generation-tool.d.ts.map +1 -1
  103. package/dist/src/tools/rule-generation-tool.js +3 -5
  104. package/dist/src/tools/rule-generation-tool.js.map +1 -1
  105. package/dist/src/tools/search-codebase-tool.d.ts +148 -0
  106. package/dist/src/tools/search-codebase-tool.d.ts.map +1 -0
  107. package/dist/src/tools/search-codebase-tool.js +406 -0
  108. package/dist/src/tools/search-codebase-tool.js.map +1 -0
  109. package/dist/src/tools/smart-git-push-tool-v2.js +1 -1
  110. package/dist/src/tools/smart-git-push-tool-v2.js.map +1 -1
  111. package/dist/src/tools/tool-catalog.d.ts +134 -0
  112. package/dist/src/tools/tool-catalog.d.ts.map +1 -0
  113. package/dist/src/tools/tool-catalog.js +1431 -0
  114. package/dist/src/tools/tool-catalog.js.map +1 -0
  115. package/dist/src/tools/tool-chain-orchestrator.d.ts +11 -2
  116. package/dist/src/tools/tool-chain-orchestrator.d.ts.map +1 -1
  117. package/dist/src/tools/tool-chain-orchestrator.js +11 -2
  118. package/dist/src/tools/tool-chain-orchestrator.js.map +1 -1
  119. package/dist/src/tools/tool-dispatcher.d.ts +98 -0
  120. package/dist/src/tools/tool-dispatcher.d.ts.map +1 -0
  121. package/dist/src/tools/tool-dispatcher.js +225 -0
  122. package/dist/src/tools/tool-dispatcher.js.map +1 -0
  123. package/dist/src/tools/tree-sitter-code-tools.d.ts +184 -0
  124. package/dist/src/tools/tree-sitter-code-tools.d.ts.map +1 -0
  125. package/dist/src/tools/tree-sitter-code-tools.js +642 -0
  126. package/dist/src/tools/tree-sitter-code-tools.js.map +1 -0
  127. package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts +22 -0
  128. package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts.map +1 -1
  129. package/dist/src/tools/troubleshoot-guided-workflow-tool.js +20 -3
  130. package/dist/src/tools/troubleshoot-guided-workflow-tool.js.map +1 -1
  131. package/dist/src/tools/update-knowledge-tool.d.ts +89 -0
  132. package/dist/src/tools/update-knowledge-tool.d.ts.map +1 -0
  133. package/dist/src/tools/update-knowledge-tool.js +222 -0
  134. package/dist/src/tools/update-knowledge-tool.js.map +1 -0
  135. package/dist/src/types/ce-mcp.d.ts +248 -0
  136. package/dist/src/types/ce-mcp.d.ts.map +1 -0
  137. package/dist/src/types/ce-mcp.js +27 -0
  138. package/dist/src/types/ce-mcp.js.map +1 -0
  139. package/dist/src/utils/adr-context-detector.js +1 -1
  140. package/dist/src/utils/adr-context-detector.js.map +1 -1
  141. package/dist/src/utils/adr-planning-task-integration.d.ts +260 -0
  142. package/dist/src/utils/adr-planning-task-integration.d.ts.map +1 -0
  143. package/dist/src/utils/adr-planning-task-integration.js +466 -0
  144. package/dist/src/utils/adr-planning-task-integration.js.map +1 -0
  145. package/dist/src/utils/adr-timeline-extractor.d.ts.map +1 -1
  146. package/dist/src/utils/adr-timeline-extractor.js +3 -2
  147. package/dist/src/utils/adr-timeline-extractor.js.map +1 -1
  148. package/dist/src/utils/ai-executor.d.ts +10 -0
  149. package/dist/src/utils/ai-executor.d.ts.map +1 -1
  150. package/dist/src/utils/ai-executor.js +14 -3
  151. package/dist/src/utils/ai-executor.js.map +1 -1
  152. package/dist/src/utils/automatic-prompt-engineering.d.ts +5 -0
  153. package/dist/src/utils/automatic-prompt-engineering.d.ts.map +1 -1
  154. package/dist/src/utils/automatic-prompt-engineering.js +10 -90
  155. package/dist/src/utils/automatic-prompt-engineering.js.map +1 -1
  156. package/dist/src/utils/bootstrap-task-integration.d.ts +214 -0
  157. package/dist/src/utils/bootstrap-task-integration.d.ts.map +1 -0
  158. package/dist/src/utils/bootstrap-task-integration.js +365 -0
  159. package/dist/src/utils/bootstrap-task-integration.js.map +1 -0
  160. package/dist/src/utils/dag-executor.d.ts.map +1 -1
  161. package/dist/src/utils/dag-executor.js +48 -15
  162. package/dist/src/utils/dag-executor.js.map +1 -1
  163. package/dist/src/utils/deployment-task-integration.d.ts +260 -0
  164. package/dist/src/utils/deployment-task-integration.d.ts.map +1 -0
  165. package/dist/src/utils/deployment-task-integration.js +393 -0
  166. package/dist/src/utils/deployment-task-integration.js.map +1 -0
  167. package/dist/src/utils/dynamic-deployment-intelligence.js +1 -1
  168. package/dist/src/utils/dynamic-deployment-intelligence.js.map +1 -1
  169. package/dist/src/utils/enhanced-logging.d.ts +3 -0
  170. package/dist/src/utils/enhanced-logging.d.ts.map +1 -1
  171. package/dist/src/utils/enhanced-logging.js +9 -30
  172. package/dist/src/utils/enhanced-logging.js.map +1 -1
  173. package/dist/src/utils/environment-capability-registry.js +1 -1
  174. package/dist/src/utils/environment-capability-registry.js.map +1 -1
  175. package/dist/src/utils/file-system.d.ts.map +1 -1
  176. package/dist/src/utils/file-system.js +33 -3
  177. package/dist/src/utils/file-system.js.map +1 -1
  178. package/dist/src/utils/gitleaks-detector.js +1 -1
  179. package/dist/src/utils/gitleaks-detector.js.map +1 -1
  180. package/dist/src/utils/knowledge-graph-manager.d.ts +13 -0
  181. package/dist/src/utils/knowledge-graph-manager.d.ts.map +1 -1
  182. package/dist/src/utils/knowledge-graph-manager.js +13 -0
  183. package/dist/src/utils/knowledge-graph-manager.js.map +1 -1
  184. package/dist/src/utils/prompt-execution.d.ts +29 -1
  185. package/dist/src/utils/prompt-execution.d.ts.map +1 -1
  186. package/dist/src/utils/prompt-execution.js +29 -1
  187. package/dist/src/utils/prompt-execution.js.map +1 -1
  188. package/dist/src/utils/research-orchestrator.d.ts +87 -1
  189. package/dist/src/utils/research-orchestrator.d.ts.map +1 -1
  190. package/dist/src/utils/research-orchestrator.js +121 -17
  191. package/dist/src/utils/research-orchestrator.js.map +1 -1
  192. package/dist/src/utils/research-task-integration.d.ts +297 -0
  193. package/dist/src/utils/research-task-integration.d.ts.map +1 -0
  194. package/dist/src/utils/research-task-integration.js +449 -0
  195. package/dist/src/utils/research-task-integration.js.map +1 -0
  196. package/dist/src/utils/ripgrep-wrapper.d.ts.map +1 -1
  197. package/dist/src/utils/ripgrep-wrapper.js +17 -3
  198. package/dist/src/utils/ripgrep-wrapper.js.map +1 -1
  199. package/dist/src/utils/sandbox-executor.d.ts +145 -0
  200. package/dist/src/utils/sandbox-executor.d.ts.map +1 -0
  201. package/dist/src/utils/sandbox-executor.js +642 -0
  202. package/dist/src/utils/sandbox-executor.js.map +1 -0
  203. package/dist/src/utils/server-context-generator.d.ts +5 -0
  204. package/dist/src/utils/server-context-generator.d.ts.map +1 -1
  205. package/dist/src/utils/server-context-generator.js +38 -0
  206. package/dist/src/utils/server-context-generator.js.map +1 -1
  207. package/dist/src/utils/task-manager.d.ts +239 -0
  208. package/dist/src/utils/task-manager.d.ts.map +1 -0
  209. package/dist/src/utils/task-manager.js +528 -0
  210. package/dist/src/utils/task-manager.js.map +1 -0
  211. package/dist/src/utils/task-persistence.d.ts +82 -0
  212. package/dist/src/utils/task-persistence.d.ts.map +1 -0
  213. package/dist/src/utils/task-persistence.js +248 -0
  214. package/dist/src/utils/task-persistence.js.map +1 -0
  215. package/dist/src/utils/test-aware-defaults.d.ts +57 -0
  216. package/dist/src/utils/test-aware-defaults.d.ts.map +1 -0
  217. package/dist/src/utils/test-aware-defaults.js +71 -0
  218. package/dist/src/utils/test-aware-defaults.js.map +1 -0
  219. package/dist/src/utils/tree-sitter-analyzer.d.ts +42 -5
  220. package/dist/src/utils/tree-sitter-analyzer.d.ts.map +1 -1
  221. package/dist/src/utils/tree-sitter-analyzer.js +499 -17
  222. package/dist/src/utils/tree-sitter-analyzer.js.map +1 -1
  223. package/package.json +25 -20
  224. package/dist/src/tools/smart-git-push-tool.d.ts +0 -55
  225. package/dist/src/tools/smart-git-push-tool.d.ts.map +0 -1
  226. package/dist/src/tools/smart-git-push-tool.js +0 -1011
  227. package/dist/src/tools/smart-git-push-tool.js.map +0 -1
@@ -0,0 +1,260 @@
1
+ /**
2
+ * MCP Tasks Integration for Deployment Readiness Tool
3
+ *
4
+ * This module provides standardized task tracking for the deployment readiness tool,
5
+ * implementing ADR-020: MCP Tasks Integration Strategy.
6
+ *
7
+ * Key features:
8
+ * - Creates MCP Tasks for deployment validation operations
9
+ * - Tracks progress through validation phases (tests, history, code quality, ADR compliance)
10
+ * - Supports cancellation between phases
11
+ * - Provides memory integration for deployment assessment tracking
12
+ *
13
+ * @see ADR-020: MCP Tasks Integration Strategy
14
+ * @see https://modelcontextprotocol.io/specification/2025-11-25/basic/utilities/tasks
15
+ */
16
+ import { type AdrTask, type TaskResult, type TaskManager } from './task-manager.js';
17
+ /**
18
+ * Deployment validation phases that map to MCP Task phases
19
+ */
20
+ export declare const DEPLOYMENT_PHASES: readonly ["initialization", "test_validation", "code_quality_analysis", "deployment_history_analysis", "adr_compliance_check", "environment_research", "blocker_assessment", "final_report"];
21
+ export type DeploymentPhase = (typeof DEPLOYMENT_PHASES)[number];
22
+ /**
23
+ * Deployment task context for tracking state across validation steps
24
+ */
25
+ export interface DeploymentTaskContext {
26
+ taskId: string;
27
+ currentPhase: DeploymentPhase;
28
+ operation: string;
29
+ targetEnvironment: string;
30
+ cancelled: boolean;
31
+ testValidationResult?: {
32
+ passed: boolean;
33
+ failureCount: number;
34
+ coveragePercentage: number;
35
+ };
36
+ codeQualityResult?: {
37
+ score: number;
38
+ securityIssues: number;
39
+ complexity: number;
40
+ };
41
+ historyAnalysisResult?: {
42
+ successRate: number;
43
+ rollbackRate: number;
44
+ recommendedAction: string;
45
+ };
46
+ adrComplianceResult?: {
47
+ score: number;
48
+ compliantAdrs: number;
49
+ totalAdrs: number;
50
+ };
51
+ blockerCount?: number;
52
+ }
53
+ /**
54
+ * Options for creating a deployment task
55
+ */
56
+ export interface CreateDeploymentTaskOptions {
57
+ projectPath: string;
58
+ targetEnvironment: string;
59
+ operation: string;
60
+ strictMode?: boolean;
61
+ enableMemoryIntegration?: boolean;
62
+ enableTreeSitterAnalysis?: boolean;
63
+ enableResearchIntegration?: boolean;
64
+ }
65
+ /**
66
+ * Result from deployment task execution
67
+ */
68
+ export interface DeploymentTaskResult extends TaskResult {
69
+ data?: {
70
+ isDeploymentReady: boolean;
71
+ overallScore: number;
72
+ confidence: number;
73
+ blockerCount: number;
74
+ testsPassed: boolean;
75
+ gitPushStatus: 'allowed' | 'blocked' | 'conditional';
76
+ memoryEntityId?: string;
77
+ };
78
+ }
79
+ /**
80
+ * Deployment Task Manager - Provides MCP Tasks integration for deployment readiness
81
+ *
82
+ * This class wraps the TaskManager to provide deployment-specific functionality:
83
+ * - Creates tasks with deployment validation phases
84
+ * - Tracks validation progress through multiple checks
85
+ * - Supports cancellation between phases
86
+ * - Integrates with memory for assessment tracking
87
+ */
88
+ export declare class DeploymentTaskManager {
89
+ private taskManager;
90
+ private activeContexts;
91
+ constructor(taskManager?: TaskManager);
92
+ /**
93
+ * Initialize the deployment task manager
94
+ */
95
+ initialize(): Promise<void>;
96
+ /**
97
+ * Create a new deployment task
98
+ *
99
+ * @returns The created task and context
100
+ */
101
+ createDeploymentTask(options: CreateDeploymentTaskOptions): Promise<{
102
+ task: AdrTask;
103
+ context: DeploymentTaskContext;
104
+ }>;
105
+ /**
106
+ * Get deployment task context
107
+ */
108
+ getContext(taskId: string): DeploymentTaskContext | undefined;
109
+ /**
110
+ * Start a deployment phase
111
+ */
112
+ startPhase(taskId: string, phase: DeploymentPhase, message?: string): Promise<void>;
113
+ /**
114
+ * Update phase progress
115
+ */
116
+ updatePhaseProgress(taskId: string, phase: DeploymentPhase, phaseProgress: number, message?: string): Promise<void>;
117
+ /**
118
+ * Complete a deployment phase
119
+ */
120
+ completePhase(taskId: string, phase: DeploymentPhase, _message?: string): Promise<void>;
121
+ /**
122
+ * Fail a deployment phase
123
+ */
124
+ failPhase(taskId: string, phase: DeploymentPhase, error: string): Promise<void>;
125
+ /**
126
+ * Store test validation result
127
+ */
128
+ storeTestValidationResult(taskId: string, result: {
129
+ passed: boolean;
130
+ failureCount: number;
131
+ coveragePercentage: number;
132
+ }): Promise<void>;
133
+ /**
134
+ * Store code quality result
135
+ */
136
+ storeCodeQualityResult(taskId: string, result: {
137
+ score: number;
138
+ securityIssues: number;
139
+ complexity: number;
140
+ }): Promise<void>;
141
+ /**
142
+ * Store deployment history analysis result
143
+ */
144
+ storeHistoryAnalysisResult(taskId: string, result: {
145
+ successRate: number;
146
+ rollbackRate: number;
147
+ recommendedAction: string;
148
+ }): Promise<void>;
149
+ /**
150
+ * Store ADR compliance result
151
+ */
152
+ storeAdrComplianceResult(taskId: string, result: {
153
+ score: number;
154
+ compliantAdrs: number;
155
+ totalAdrs: number;
156
+ }): Promise<void>;
157
+ /**
158
+ * Store blocker count
159
+ */
160
+ storeBlockerCount(taskId: string, blockerCount: number): Promise<void>;
161
+ /**
162
+ * Check if task is cancelled
163
+ */
164
+ isCancelled(taskId: string): Promise<boolean>;
165
+ /**
166
+ * Cancel a deployment task
167
+ */
168
+ cancelTask(taskId: string, reason?: string): Promise<void>;
169
+ /**
170
+ * Complete a deployment task successfully
171
+ */
172
+ completeTask(taskId: string, result: DeploymentTaskResult): Promise<void>;
173
+ /**
174
+ * Fail a deployment task
175
+ */
176
+ failTask(taskId: string, error: string): Promise<void>;
177
+ /**
178
+ * Get task status
179
+ */
180
+ getTaskStatus(taskId: string): Promise<{
181
+ task: AdrTask | null;
182
+ context: DeploymentTaskContext | undefined;
183
+ }>;
184
+ }
185
+ export declare function getDeploymentTaskManager(): DeploymentTaskManager;
186
+ /**
187
+ * Reset the global DeploymentTaskManager (for testing)
188
+ */
189
+ export declare function resetDeploymentTaskManager(): Promise<void>;
190
+ /**
191
+ * Helper function to wrap deployment execution with task tracking
192
+ *
193
+ * This can be used by the deployment_readiness tool to automatically
194
+ * track progress through MCP Tasks.
195
+ *
196
+ * @example
197
+ * ```typescript
198
+ * const result = await executeDeploymentWithTaskTracking(
199
+ * {
200
+ * projectPath: '/path/to/project',
201
+ * targetEnvironment: 'production',
202
+ * operation: 'full_audit',
203
+ * },
204
+ * async (tracker) => {
205
+ * // Test validation phase
206
+ * await tracker.startPhase('test_validation');
207
+ * const testResult = await runTests();
208
+ * await tracker.storeTestValidationResult(testResult);
209
+ * await tracker.completePhase('test_validation');
210
+ *
211
+ * // Code quality phase
212
+ * await tracker.startPhase('code_quality_analysis');
213
+ * const qualityResult = await analyzeCodeQuality();
214
+ * await tracker.storeCodeQualityResult(qualityResult);
215
+ * await tracker.completePhase('code_quality_analysis');
216
+ *
217
+ * // Return final result
218
+ * return { isDeploymentReady: true, overallScore: 95 };
219
+ * }
220
+ * );
221
+ * ```
222
+ */
223
+ export declare function executeDeploymentWithTaskTracking<T extends DeploymentTaskResult>(options: CreateDeploymentTaskOptions, executor: (tracker: DeploymentTaskTracker) => Promise<T['data']>): Promise<{
224
+ taskId: string;
225
+ result: T;
226
+ }>;
227
+ /**
228
+ * Task tracker interface provided to deployment executor
229
+ */
230
+ export interface DeploymentTaskTracker {
231
+ taskId: string;
232
+ startPhase: (phase: DeploymentPhase, message?: string) => Promise<void>;
233
+ updatePhaseProgress: (phase: DeploymentPhase, progress: number, message?: string) => Promise<void>;
234
+ completePhase: (phase: DeploymentPhase, message?: string) => Promise<void>;
235
+ failPhase: (phase: DeploymentPhase, error: string) => Promise<void>;
236
+ storeTestValidationResult: (result: {
237
+ passed: boolean;
238
+ failureCount: number;
239
+ coveragePercentage: number;
240
+ }) => Promise<void>;
241
+ storeCodeQualityResult: (result: {
242
+ score: number;
243
+ securityIssues: number;
244
+ complexity: number;
245
+ }) => Promise<void>;
246
+ storeHistoryAnalysisResult: (result: {
247
+ successRate: number;
248
+ rollbackRate: number;
249
+ recommendedAction: string;
250
+ }) => Promise<void>;
251
+ storeAdrComplianceResult: (result: {
252
+ score: number;
253
+ compliantAdrs: number;
254
+ totalAdrs: number;
255
+ }) => Promise<void>;
256
+ storeBlockerCount: (count: number) => Promise<void>;
257
+ isCancelled: () => Promise<boolean>;
258
+ getContext: () => DeploymentTaskContext;
259
+ }
260
+ //# sourceMappingURL=deployment-task-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-task-integration.d.ts","sourceRoot":"","sources":["../../../src/utils/deployment-task-integration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,393 @@
1
+ /**
2
+ * MCP Tasks Integration for Deployment Readiness Tool
3
+ *
4
+ * This module provides standardized task tracking for the deployment readiness tool,
5
+ * implementing ADR-020: MCP Tasks Integration Strategy.
6
+ *
7
+ * Key features:
8
+ * - Creates MCP Tasks for deployment validation operations
9
+ * - Tracks progress through validation phases (tests, history, code quality, ADR compliance)
10
+ * - Supports cancellation between phases
11
+ * - Provides memory integration for deployment assessment tracking
12
+ *
13
+ * @see ADR-020: MCP Tasks Integration Strategy
14
+ * @see https://modelcontextprotocol.io/specification/2025-11-25/basic/utilities/tasks
15
+ */
16
+ import { getTaskManager } from './task-manager.js';
17
+ import { createComponentLogger } from './enhanced-logging.js';
18
+ const logger = createComponentLogger('DeploymentTaskIntegration');
19
+ /**
20
+ * Deployment validation phases that map to MCP Task phases
21
+ */
22
+ export const DEPLOYMENT_PHASES = [
23
+ 'initialization',
24
+ 'test_validation',
25
+ 'code_quality_analysis',
26
+ 'deployment_history_analysis',
27
+ 'adr_compliance_check',
28
+ 'environment_research',
29
+ 'blocker_assessment',
30
+ 'final_report',
31
+ ];
32
+ /**
33
+ * Deployment Task Manager - Provides MCP Tasks integration for deployment readiness
34
+ *
35
+ * This class wraps the TaskManager to provide deployment-specific functionality:
36
+ * - Creates tasks with deployment validation phases
37
+ * - Tracks validation progress through multiple checks
38
+ * - Supports cancellation between phases
39
+ * - Integrates with memory for assessment tracking
40
+ */
41
+ export class DeploymentTaskManager {
42
+ taskManager;
43
+ activeContexts = new Map();
44
+ constructor(taskManager) {
45
+ this.taskManager = taskManager ?? getTaskManager();
46
+ }
47
+ /**
48
+ * Initialize the deployment task manager
49
+ */
50
+ async initialize() {
51
+ await this.taskManager.initialize();
52
+ logger.info('DeploymentTaskManager initialized');
53
+ }
54
+ /**
55
+ * Create a new deployment task
56
+ *
57
+ * @returns The created task and context
58
+ */
59
+ async createDeploymentTask(options) {
60
+ const { projectPath, targetEnvironment, operation } = options;
61
+ const task = await this.taskManager.createTask({
62
+ type: 'deployment',
63
+ tool: 'deployment_readiness',
64
+ phases: [...DEPLOYMENT_PHASES],
65
+ projectPath,
66
+ ttl: 600000, // 10 minute TTL for deployment checks
67
+ pollInterval: 1000, // 1 second poll interval
68
+ });
69
+ const context = {
70
+ taskId: task.taskId,
71
+ currentPhase: 'initialization',
72
+ operation,
73
+ targetEnvironment,
74
+ cancelled: false,
75
+ };
76
+ this.activeContexts.set(task.taskId, context);
77
+ logger.info('Deployment task created', {
78
+ taskId: task.taskId,
79
+ projectPath,
80
+ targetEnvironment,
81
+ operation,
82
+ });
83
+ return { task, context };
84
+ }
85
+ /**
86
+ * Get deployment task context
87
+ */
88
+ getContext(taskId) {
89
+ return this.activeContexts.get(taskId);
90
+ }
91
+ /**
92
+ * Start a deployment phase
93
+ */
94
+ async startPhase(taskId, phase, message) {
95
+ const context = this.activeContexts.get(taskId);
96
+ if (!context) {
97
+ logger.warn('No context found for task', { taskId });
98
+ return;
99
+ }
100
+ // Check for cancellation
101
+ if (context.cancelled) {
102
+ throw new Error('Task was cancelled');
103
+ }
104
+ context.currentPhase = phase;
105
+ await this.taskManager.startPhase(taskId, phase);
106
+ // Calculate overall progress based on phase
107
+ const phaseIndex = DEPLOYMENT_PHASES.indexOf(phase);
108
+ const phaseProgress = phaseIndex >= 0 ? Math.floor((phaseIndex / DEPLOYMENT_PHASES.length) * 100) : 0;
109
+ await this.taskManager.updateProgress({
110
+ taskId,
111
+ progress: phaseProgress,
112
+ phase,
113
+ phaseProgress: 0,
114
+ message: message ?? `Starting phase: ${phase}`,
115
+ });
116
+ logger.info('Deployment phase started', { taskId, phase, progress: phaseProgress });
117
+ }
118
+ /**
119
+ * Update phase progress
120
+ */
121
+ async updatePhaseProgress(taskId, phase, phaseProgress, message) {
122
+ const context = this.activeContexts.get(taskId);
123
+ if (!context) {
124
+ return;
125
+ }
126
+ // Calculate overall progress
127
+ const phaseIndex = DEPLOYMENT_PHASES.indexOf(phase);
128
+ const phaseFraction = 100 / DEPLOYMENT_PHASES.length;
129
+ const baseProgress = phaseIndex * phaseFraction;
130
+ const overallProgress = Math.floor(baseProgress + (phaseProgress / 100) * phaseFraction);
131
+ await this.taskManager.updateProgress({
132
+ taskId,
133
+ progress: overallProgress,
134
+ phase,
135
+ phaseProgress,
136
+ ...(message !== undefined && { message }),
137
+ });
138
+ }
139
+ /**
140
+ * Complete a deployment phase
141
+ */
142
+ async completePhase(taskId, phase, _message) {
143
+ const context = this.activeContexts.get(taskId);
144
+ if (!context) {
145
+ return;
146
+ }
147
+ await this.taskManager.completePhase(taskId, phase);
148
+ logger.info('Deployment phase completed', { taskId, phase });
149
+ }
150
+ /**
151
+ * Fail a deployment phase
152
+ */
153
+ async failPhase(taskId, phase, error) {
154
+ const context = this.activeContexts.get(taskId);
155
+ if (!context) {
156
+ return;
157
+ }
158
+ await this.taskManager.failPhase(taskId, phase, error);
159
+ logger.warn('Deployment phase failed', { taskId, phase, error });
160
+ }
161
+ /**
162
+ * Store test validation result
163
+ */
164
+ async storeTestValidationResult(taskId, result) {
165
+ const context = this.activeContexts.get(taskId);
166
+ if (!context) {
167
+ return;
168
+ }
169
+ context.testValidationResult = result;
170
+ const statusMessage = result.passed
171
+ ? `Tests passed (${result.failureCount} failures, ${result.coveragePercentage}% coverage)`
172
+ : `Tests failed (${result.failureCount} failures, ${result.coveragePercentage}% coverage)`;
173
+ await this.taskManager.updateProgress({
174
+ taskId,
175
+ progress: 25,
176
+ message: statusMessage,
177
+ });
178
+ logger.info('Test validation result stored', { taskId, ...result });
179
+ }
180
+ /**
181
+ * Store code quality result
182
+ */
183
+ async storeCodeQualityResult(taskId, result) {
184
+ const context = this.activeContexts.get(taskId);
185
+ if (!context) {
186
+ return;
187
+ }
188
+ context.codeQualityResult = result;
189
+ await this.taskManager.updateProgress({
190
+ taskId,
191
+ progress: 40,
192
+ message: `Code quality score: ${result.score}% (${result.securityIssues} security issues)`,
193
+ });
194
+ logger.info('Code quality result stored', { taskId, ...result });
195
+ }
196
+ /**
197
+ * Store deployment history analysis result
198
+ */
199
+ async storeHistoryAnalysisResult(taskId, result) {
200
+ const context = this.activeContexts.get(taskId);
201
+ if (!context) {
202
+ return;
203
+ }
204
+ context.historyAnalysisResult = result;
205
+ await this.taskManager.updateProgress({
206
+ taskId,
207
+ progress: 55,
208
+ message: `Deployment history: ${result.successRate}% success, ${result.rollbackRate}% rollback`,
209
+ });
210
+ logger.info('History analysis result stored', { taskId, ...result });
211
+ }
212
+ /**
213
+ * Store ADR compliance result
214
+ */
215
+ async storeAdrComplianceResult(taskId, result) {
216
+ const context = this.activeContexts.get(taskId);
217
+ if (!context) {
218
+ return;
219
+ }
220
+ context.adrComplianceResult = result;
221
+ await this.taskManager.updateProgress({
222
+ taskId,
223
+ progress: 70,
224
+ message: `ADR compliance: ${result.score}% (${result.compliantAdrs}/${result.totalAdrs} ADRs)`,
225
+ });
226
+ logger.info('ADR compliance result stored', { taskId, ...result });
227
+ }
228
+ /**
229
+ * Store blocker count
230
+ */
231
+ async storeBlockerCount(taskId, blockerCount) {
232
+ const context = this.activeContexts.get(taskId);
233
+ if (!context) {
234
+ return;
235
+ }
236
+ context.blockerCount = blockerCount;
237
+ const statusMessage = blockerCount === 0
238
+ ? 'No deployment blockers found'
239
+ : `${blockerCount} deployment blocker(s) found`;
240
+ await this.taskManager.updateProgress({
241
+ taskId,
242
+ progress: 85,
243
+ message: statusMessage,
244
+ });
245
+ logger.info('Blocker count stored', { taskId, blockerCount });
246
+ }
247
+ /**
248
+ * Check if task is cancelled
249
+ */
250
+ async isCancelled(taskId) {
251
+ const context = this.activeContexts.get(taskId);
252
+ if (!context) {
253
+ return false;
254
+ }
255
+ // Check if task was cancelled externally
256
+ const task = await this.taskManager.getTask(taskId);
257
+ if (task?.status === 'cancelled') {
258
+ context.cancelled = true;
259
+ }
260
+ return context.cancelled;
261
+ }
262
+ /**
263
+ * Cancel a deployment task
264
+ */
265
+ async cancelTask(taskId, reason) {
266
+ const context = this.activeContexts.get(taskId);
267
+ if (context) {
268
+ context.cancelled = true;
269
+ }
270
+ await this.taskManager.cancelTask(taskId, reason ?? 'Deployment validation cancelled by user');
271
+ this.activeContexts.delete(taskId);
272
+ logger.info('Deployment task cancelled', { taskId, reason });
273
+ }
274
+ /**
275
+ * Complete a deployment task successfully
276
+ */
277
+ async completeTask(taskId, result) {
278
+ await this.taskManager.completeTask(taskId, result);
279
+ this.activeContexts.delete(taskId);
280
+ logger.info('Deployment task completed', { taskId, success: result.success });
281
+ }
282
+ /**
283
+ * Fail a deployment task
284
+ */
285
+ async failTask(taskId, error) {
286
+ await this.taskManager.failTask(taskId, error);
287
+ this.activeContexts.delete(taskId);
288
+ logger.error('Deployment task failed', undefined, { taskId, error });
289
+ }
290
+ /**
291
+ * Get task status
292
+ */
293
+ async getTaskStatus(taskId) {
294
+ const task = await this.taskManager.getTask(taskId);
295
+ const context = this.activeContexts.get(taskId);
296
+ return { task, context };
297
+ }
298
+ }
299
+ /**
300
+ * Get the global DeploymentTaskManager instance
301
+ */
302
+ let globalDeploymentTaskManager = null;
303
+ export function getDeploymentTaskManager() {
304
+ if (!globalDeploymentTaskManager) {
305
+ globalDeploymentTaskManager = new DeploymentTaskManager();
306
+ }
307
+ return globalDeploymentTaskManager;
308
+ }
309
+ /**
310
+ * Reset the global DeploymentTaskManager (for testing)
311
+ */
312
+ export async function resetDeploymentTaskManager() {
313
+ globalDeploymentTaskManager = null;
314
+ }
315
+ /**
316
+ * Helper function to wrap deployment execution with task tracking
317
+ *
318
+ * This can be used by the deployment_readiness tool to automatically
319
+ * track progress through MCP Tasks.
320
+ *
321
+ * @example
322
+ * ```typescript
323
+ * const result = await executeDeploymentWithTaskTracking(
324
+ * {
325
+ * projectPath: '/path/to/project',
326
+ * targetEnvironment: 'production',
327
+ * operation: 'full_audit',
328
+ * },
329
+ * async (tracker) => {
330
+ * // Test validation phase
331
+ * await tracker.startPhase('test_validation');
332
+ * const testResult = await runTests();
333
+ * await tracker.storeTestValidationResult(testResult);
334
+ * await tracker.completePhase('test_validation');
335
+ *
336
+ * // Code quality phase
337
+ * await tracker.startPhase('code_quality_analysis');
338
+ * const qualityResult = await analyzeCodeQuality();
339
+ * await tracker.storeCodeQualityResult(qualityResult);
340
+ * await tracker.completePhase('code_quality_analysis');
341
+ *
342
+ * // Return final result
343
+ * return { isDeploymentReady: true, overallScore: 95 };
344
+ * }
345
+ * );
346
+ * ```
347
+ */
348
+ export async function executeDeploymentWithTaskTracking(options, executor) {
349
+ const dtm = getDeploymentTaskManager();
350
+ await dtm.initialize();
351
+ const { task, context } = await dtm.createDeploymentTask(options);
352
+ const taskId = task.taskId;
353
+ // Create a tracker interface for the executor
354
+ const tracker = {
355
+ taskId,
356
+ startPhase: (phase, message) => dtm.startPhase(taskId, phase, message),
357
+ updatePhaseProgress: (phase, progress, message) => dtm.updatePhaseProgress(taskId, phase, progress, message),
358
+ completePhase: (phase, message) => dtm.completePhase(taskId, phase, message),
359
+ failPhase: (phase, error) => dtm.failPhase(taskId, phase, error),
360
+ storeTestValidationResult: result => dtm.storeTestValidationResult(taskId, result),
361
+ storeCodeQualityResult: result => dtm.storeCodeQualityResult(taskId, result),
362
+ storeHistoryAnalysisResult: result => dtm.storeHistoryAnalysisResult(taskId, result),
363
+ storeAdrComplianceResult: result => dtm.storeAdrComplianceResult(taskId, result),
364
+ storeBlockerCount: count => dtm.storeBlockerCount(taskId, count),
365
+ isCancelled: () => dtm.isCancelled(taskId),
366
+ getContext: () => context,
367
+ };
368
+ try {
369
+ const resultData = await executor(tracker);
370
+ const result = {
371
+ success: resultData?.isDeploymentReady ?? false,
372
+ data: resultData,
373
+ };
374
+ await dtm.completeTask(taskId, result);
375
+ return { taskId, result };
376
+ }
377
+ catch (error) {
378
+ const errorMessage = error instanceof Error ? error.message : String(error);
379
+ await dtm.failTask(taskId, errorMessage);
380
+ return {
381
+ taskId,
382
+ result: {
383
+ success: false,
384
+ error: {
385
+ code: 'DEPLOYMENT_READINESS_ERROR',
386
+ message: errorMessage,
387
+ recoverable: false,
388
+ },
389
+ },
390
+ };
391
+ }
392
+ }
393
+ //# sourceMappingURL=deployment-task-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-task-integration.js","sourceRoot":"","sources":["../../../src/utils/deployment-task-integration.ts"],"names":[],"mappings":"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"}