mcp-adr-analysis-server 2.0.9 → 2.0.10

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 (60) hide show
  1. package/dist/src/index.d.ts +8 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +434 -5
  4. package/dist/src/index.js.map +1 -1
  5. package/dist/src/resources/index.d.ts.map +1 -1
  6. package/dist/src/resources/index.js +71 -1
  7. package/dist/src/resources/index.js.map +1 -1
  8. package/dist/src/tools/human-override-tool.d.ts +42 -0
  9. package/dist/src/tools/human-override-tool.d.ts.map +1 -0
  10. package/dist/src/tools/human-override-tool.js +431 -0
  11. package/dist/src/tools/human-override-tool.js.map +1 -0
  12. package/dist/src/tools/smart-git-push-tool.d.ts +5 -1
  13. package/dist/src/tools/smart-git-push-tool.d.ts.map +1 -1
  14. package/dist/src/tools/smart-git-push-tool.js +70 -25
  15. package/dist/src/tools/smart-git-push-tool.js.map +1 -1
  16. package/dist/src/tools/smart-score-tool.d.ts +138 -0
  17. package/dist/src/tools/smart-score-tool.d.ts.map +1 -0
  18. package/dist/src/tools/smart-score-tool.js +602 -0
  19. package/dist/src/tools/smart-score-tool.js.map +1 -0
  20. package/dist/src/tools/todo-management-tool.d.ts +184 -6
  21. package/dist/src/tools/todo-management-tool.d.ts.map +1 -1
  22. package/dist/src/tools/todo-management-tool.js +819 -42
  23. package/dist/src/tools/todo-management-tool.js.map +1 -1
  24. package/dist/src/tools/tool-chain-orchestrator.d.ts +164 -0
  25. package/dist/src/tools/tool-chain-orchestrator.d.ts.map +1 -0
  26. package/dist/src/tools/tool-chain-orchestrator.js +738 -0
  27. package/dist/src/tools/tool-chain-orchestrator.js.map +1 -0
  28. package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts +150 -0
  29. package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts.map +1 -0
  30. package/dist/src/tools/troubleshoot-guided-workflow-tool.js +520 -0
  31. package/dist/src/tools/troubleshoot-guided-workflow-tool.js.map +1 -0
  32. package/dist/src/types/knowledge-graph-schemas.d.ts +481 -0
  33. package/dist/src/types/knowledge-graph-schemas.d.ts.map +1 -0
  34. package/dist/src/types/knowledge-graph-schemas.js +59 -0
  35. package/dist/src/types/knowledge-graph-schemas.js.map +1 -0
  36. package/dist/src/utils/json-safe.d.ts +38 -0
  37. package/dist/src/utils/json-safe.d.ts.map +1 -0
  38. package/dist/src/utils/json-safe.js +86 -0
  39. package/dist/src/utils/json-safe.js.map +1 -0
  40. package/dist/src/utils/knowledge-graph-manager.d.ts +28 -0
  41. package/dist/src/utils/knowledge-graph-manager.d.ts.map +1 -0
  42. package/dist/src/utils/knowledge-graph-manager.js +192 -0
  43. package/dist/src/utils/knowledge-graph-manager.js.map +1 -0
  44. package/dist/src/utils/mcp-response-validator.d.ts +30 -0
  45. package/dist/src/utils/mcp-response-validator.d.ts.map +1 -0
  46. package/dist/src/utils/mcp-response-validator.js +197 -0
  47. package/dist/src/utils/mcp-response-validator.js.map +1 -0
  48. package/dist/src/utils/project-health-scoring.d.ts +177 -0
  49. package/dist/src/utils/project-health-scoring.d.ts.map +1 -0
  50. package/dist/src/utils/project-health-scoring.js +370 -0
  51. package/dist/src/utils/project-health-scoring.js.map +1 -0
  52. package/dist/src/utils/release-readiness-detector.d.ts +2 -0
  53. package/dist/src/utils/release-readiness-detector.d.ts.map +1 -1
  54. package/dist/src/utils/release-readiness-detector.js +2 -0
  55. package/dist/src/utils/release-readiness-detector.js.map +1 -1
  56. package/dist/src/utils/todo-file-watcher.d.ts +26 -0
  57. package/dist/src/utils/todo-file-watcher.d.ts.map +1 -0
  58. package/dist/src/utils/todo-file-watcher.js +163 -0
  59. package/dist/src/utils/todo-file-watcher.js.map +1 -0
  60. package/package.json +1 -1
@@ -0,0 +1,163 @@
1
+ import * as fs from 'fs/promises';
2
+ import path from 'path';
3
+ import { KnowledgeGraphManager } from './knowledge-graph-manager.js';
4
+ import { loadConfig } from './config.js';
5
+ export class TodoFileWatcher {
6
+ kgManager;
7
+ todoPath;
8
+ watcherActive = false;
9
+ lastKnownHash = '';
10
+ pollInterval = null;
11
+ constructor(todoPath) {
12
+ this.kgManager = new KnowledgeGraphManager();
13
+ const config = loadConfig();
14
+ this.todoPath = todoPath || path.join(config.projectPath, 'TODO.md');
15
+ }
16
+ async startWatching(intervalMs = 2000) {
17
+ if (this.watcherActive) {
18
+ return;
19
+ }
20
+ this.watcherActive = true;
21
+ // Initialize with current hash
22
+ this.lastKnownHash = await this.kgManager.calculateTodoMdHash(this.todoPath);
23
+ // Start polling for changes
24
+ this.pollInterval = setInterval(async () => {
25
+ try {
26
+ await this.checkForChanges();
27
+ }
28
+ catch (error) {
29
+ console.error('Error checking TODO.md changes:', error);
30
+ }
31
+ }, intervalMs);
32
+ console.error(`[TodoFileWatcher] Started watching ${this.todoPath}`);
33
+ }
34
+ async stopWatching() {
35
+ if (!this.watcherActive) {
36
+ return;
37
+ }
38
+ this.watcherActive = false;
39
+ if (this.pollInterval) {
40
+ clearInterval(this.pollInterval);
41
+ this.pollInterval = null;
42
+ }
43
+ console.error(`[TodoFileWatcher] Stopped watching ${this.todoPath}`);
44
+ }
45
+ async checkForChanges() {
46
+ if (!this.watcherActive) {
47
+ return;
48
+ }
49
+ const detection = await this.kgManager.detectTodoChanges(this.todoPath);
50
+ if (detection.hasChanges) {
51
+ console.error(`[TodoFileWatcher] TODO.md changes detected`);
52
+ // Read the new content
53
+ let todoContent = '';
54
+ try {
55
+ todoContent = await fs.readFile(this.todoPath, 'utf-8');
56
+ }
57
+ catch (error) {
58
+ console.error(`[TodoFileWatcher] Error reading TODO.md:`, error);
59
+ return;
60
+ }
61
+ // Parse changes and extract task modifications
62
+ const changes = await this.parseChanges(this.lastKnownHash, detection.currentHash, todoContent);
63
+ // Update sync state
64
+ await this.kgManager.updateSyncState({
65
+ lastSyncTimestamp: new Date().toISOString(),
66
+ todoMdHash: detection.currentHash,
67
+ syncStatus: changes.length > 0 ? 'pending' : 'synced',
68
+ lastModifiedBy: 'human',
69
+ version: (await this.kgManager.getSyncState()).version + 1
70
+ });
71
+ // Notify active intents about TODO changes
72
+ await this.notifyActiveIntents(todoContent, changes);
73
+ this.lastKnownHash = detection.currentHash;
74
+ }
75
+ }
76
+ async parseChanges(oldHash, newHash, todoContent) {
77
+ const changes = [];
78
+ // Simple change detection by analyzing the TODO content
79
+ // In a more sophisticated implementation, this would diff the actual content
80
+ const lines = todoContent.split('\n');
81
+ const taskLines = lines.filter(line => line.trim().match(/^-\s*\[[\sx]\]/) ||
82
+ line.trim().match(/^\d+\.\s*\[[\sx]\]/) ||
83
+ line.trim().match(/^##\s+/) // Section headers
84
+ );
85
+ // For now, we'll create a generic change record
86
+ if (oldHash !== newHash && taskLines.length > 0) {
87
+ changes.push({
88
+ type: 'modified',
89
+ taskId: `todo-change-${Date.now()}`,
90
+ description: 'TODO.md content modified externally',
91
+ details: {
92
+ taskCount: taskLines.length,
93
+ timestamp: new Date().toISOString(),
94
+ contentLength: todoContent.length
95
+ }
96
+ });
97
+ }
98
+ return changes;
99
+ }
100
+ async notifyActiveIntents(todoContent, changes) {
101
+ const activeIntents = await this.kgManager.getActiveIntents();
102
+ for (const intent of activeIntents) {
103
+ // Update TODO snapshot for each active intent
104
+ await this.kgManager.updateTodoSnapshot(intent.intentId, todoContent);
105
+ // Add a tool execution record for the TODO change
106
+ const changeDetails = changes.map(c => `${c.type}: ${c.description}`).join('; ');
107
+ await this.kgManager.addToolExecution(intent.intentId, 'todo_file_watcher_change_detected', { todoPath: this.todoPath }, {
108
+ changes: changes.length,
109
+ changeDetails,
110
+ todoContentLength: todoContent.length,
111
+ detectedAt: new Date().toISOString()
112
+ }, true, [], changes.map(c => c.taskId), undefined);
113
+ }
114
+ }
115
+ async manualSync() {
116
+ const detection = await this.kgManager.detectTodoChanges(this.todoPath);
117
+ if (!detection.hasChanges) {
118
+ return {
119
+ changesDetected: false,
120
+ syncStatus: 'no_changes',
121
+ activeIntentsNotified: 0
122
+ };
123
+ }
124
+ let todoContent = '';
125
+ try {
126
+ todoContent = await fs.readFile(this.todoPath, 'utf-8');
127
+ }
128
+ catch (error) {
129
+ return {
130
+ changesDetected: true,
131
+ syncStatus: 'error_reading_file',
132
+ activeIntentsNotified: 0
133
+ };
134
+ }
135
+ const changes = await this.parseChanges(this.lastKnownHash, detection.currentHash, todoContent);
136
+ await this.notifyActiveIntents(todoContent, changes);
137
+ await this.kgManager.updateSyncState({
138
+ lastSyncTimestamp: new Date().toISOString(),
139
+ todoMdHash: detection.currentHash,
140
+ syncStatus: 'synced',
141
+ lastModifiedBy: 'sync',
142
+ version: (await this.kgManager.getSyncState()).version + 1
143
+ });
144
+ this.lastKnownHash = detection.currentHash;
145
+ const activeIntents = await this.kgManager.getActiveIntents();
146
+ return {
147
+ changesDetected: true,
148
+ syncStatus: 'synced',
149
+ activeIntentsNotified: activeIntents.length
150
+ };
151
+ }
152
+ async getWatcherStatus() {
153
+ const syncState = await this.kgManager.getSyncState();
154
+ return {
155
+ isActive: this.watcherActive,
156
+ todoPath: this.todoPath,
157
+ lastKnownHash: this.lastKnownHash,
158
+ lastSyncTime: syncState.lastSyncTimestamp,
159
+ syncStatus: syncState.syncStatus
160
+ };
161
+ }
162
+ }
163
+ //# sourceMappingURL=todo-file-watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todo-file-watcher.js","sourceRoot":"","sources":["../../../src/utils/todo-file-watcher.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-adr-analysis-server",
3
- "version": "2.0.9",
3
+ "version": "2.0.10",
4
4
  "description": "MCP server for analyzing Architectural Decision Records and project architecture",
5
5
  "main": "dist/src/index.js",
6
6
  "type": "module",