mcp-adr-analysis-server 2.0.21 → 2.0.24
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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/index.d.ts +9 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1380 -781
- package/dist/src/index.js.map +1 -1
- package/dist/src/tools/adr-suggestion-tool.d.ts.map +1 -1
- package/dist/src/tools/adr-suggestion-tool.js +32 -30
- package/dist/src/tools/adr-suggestion-tool.js.map +1 -1
- package/dist/src/tools/content-masking-tool.d.ts +4 -0
- package/dist/src/tools/content-masking-tool.d.ts.map +1 -1
- package/dist/src/tools/content-masking-tool.js +531 -28
- package/dist/src/tools/content-masking-tool.js.map +1 -1
- package/dist/src/tools/deployment-readiness-tool.d.ts +8 -5
- package/dist/src/tools/deployment-readiness-tool.d.ts.map +1 -1
- package/dist/src/tools/deployment-readiness-tool.js +741 -79
- package/dist/src/tools/deployment-readiness-tool.js.map +1 -1
- package/dist/src/tools/environment-analysis-tool.d.ts +4 -0
- package/dist/src/tools/environment-analysis-tool.d.ts.map +1 -1
- package/dist/src/tools/environment-analysis-tool.js +568 -24
- package/dist/src/tools/environment-analysis-tool.js.map +1 -1
- package/dist/src/tools/mcp-planning-tool.d.ts.map +1 -1
- package/dist/src/tools/mcp-planning-tool.js +298 -173
- package/dist/src/tools/mcp-planning-tool.js.map +1 -1
- package/dist/src/tools/memory-loading-tool.d.ts +60 -0
- package/dist/src/tools/memory-loading-tool.d.ts.map +1 -0
- package/dist/src/tools/memory-loading-tool.js +457 -0
- package/dist/src/tools/memory-loading-tool.js.map +1 -0
- package/dist/src/tools/smart-git-push-tool.d.ts +3 -0
- package/dist/src/tools/smart-git-push-tool.d.ts.map +1 -1
- package/dist/src/tools/smart-git-push-tool.js +177 -223
- package/dist/src/tools/smart-git-push-tool.js.map +1 -1
- package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts +20 -11
- package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts.map +1 -1
- package/dist/src/tools/troubleshoot-guided-workflow-tool.js +506 -22
- package/dist/src/tools/troubleshoot-guided-workflow-tool.js.map +1 -1
- package/dist/src/types/enhanced-errors.d.ts +173 -0
- package/dist/src/types/enhanced-errors.d.ts.map +1 -0
- package/dist/src/types/enhanced-errors.js +668 -0
- package/dist/src/types/enhanced-errors.js.map +1 -0
- package/dist/src/types/knowledge-graph-schemas.d.ts +92 -0
- package/dist/src/types/knowledge-graph-schemas.d.ts.map +1 -1
- package/dist/src/types/knowledge-graph-schemas.js +45 -17
- package/dist/src/types/knowledge-graph-schemas.js.map +1 -1
- package/dist/src/types/memory-entities.d.ts +7209 -0
- package/dist/src/types/memory-entities.d.ts.map +1 -0
- package/dist/src/types/memory-entities.js +395 -0
- package/dist/src/types/memory-entities.js.map +1 -0
- package/dist/src/types/todo-json-schemas.d.ts +7 -653
- package/dist/src/types/todo-json-schemas.d.ts.map +1 -1
- package/dist/src/types/todo-json-schemas.js +6 -110
- package/dist/src/types/todo-json-schemas.js.map +1 -1
- package/dist/src/utils/enhanced-logging.d.ts +195 -0
- package/dist/src/utils/enhanced-logging.d.ts.map +1 -0
- package/dist/src/utils/enhanced-logging.js +449 -0
- package/dist/src/utils/enhanced-logging.js.map +1 -0
- package/dist/src/utils/interactive-approval.d.ts +1 -1
- package/dist/src/utils/interactive-approval.d.ts.map +1 -1
- package/dist/src/utils/interactive-approval.js +20 -16
- package/dist/src/utils/interactive-approval.js.map +1 -1
- package/dist/src/utils/knowledge-graph-manager.d.ts +23 -1
- package/dist/src/utils/knowledge-graph-manager.d.ts.map +1 -1
- package/dist/src/utils/knowledge-graph-manager.js +297 -69
- package/dist/src/utils/knowledge-graph-manager.js.map +1 -1
- package/dist/src/utils/memory-entity-manager.d.ts +134 -0
- package/dist/src/utils/memory-entity-manager.d.ts.map +1 -0
- package/dist/src/utils/memory-entity-manager.js +848 -0
- package/dist/src/utils/memory-entity-manager.js.map +1 -0
- package/dist/src/utils/memory-health-scoring.d.ts +125 -0
- package/dist/src/utils/memory-health-scoring.d.ts.map +1 -0
- package/dist/src/utils/memory-health-scoring.js +277 -0
- package/dist/src/utils/memory-health-scoring.js.map +1 -0
- package/dist/src/utils/memory-migration-manager.d.ts +93 -0
- package/dist/src/utils/memory-migration-manager.d.ts.map +1 -0
- package/dist/src/utils/memory-migration-manager.js +834 -0
- package/dist/src/utils/memory-migration-manager.js.map +1 -0
- package/dist/src/utils/memory-relationship-mapper.d.ts +87 -0
- package/dist/src/utils/memory-relationship-mapper.d.ts.map +1 -0
- package/dist/src/utils/memory-relationship-mapper.js +481 -0
- package/dist/src/utils/memory-relationship-mapper.js.map +1 -0
- package/dist/src/utils/memory-rollback-manager.d.ts +93 -0
- package/dist/src/utils/memory-rollback-manager.d.ts.map +1 -0
- package/dist/src/utils/memory-rollback-manager.js +542 -0
- package/dist/src/utils/memory-rollback-manager.js.map +1 -0
- package/dist/src/utils/memory-transformation.d.ts +59 -0
- package/dist/src/utils/memory-transformation.d.ts.map +1 -0
- package/dist/src/utils/memory-transformation.js +742 -0
- package/dist/src/utils/memory-transformation.js.map +1 -0
- package/dist/src/utils/prompt-execution.d.ts.map +1 -1
- package/dist/src/utils/prompt-execution.js +72 -51
- package/dist/src/utils/prompt-execution.js.map +1 -1
- package/dist/src/utils/todo-file-watcher.d.ts +11 -23
- package/dist/src/utils/todo-file-watcher.d.ts.map +1 -1
- package/dist/src/utils/todo-file-watcher.js +18 -156
- package/dist/src/utils/todo-file-watcher.js.map +1 -1
- package/package.json +22 -6
- package/dist/src/tools/smart-score-tool.d.ts +0 -173
- package/dist/src/tools/smart-score-tool.d.ts.map +0 -1
- package/dist/src/tools/smart-score-tool.js +0 -681
- package/dist/src/tools/smart-score-tool.js.map +0 -1
- package/dist/src/tools/todo-management-tool-v2.d.ts +0 -368
- package/dist/src/tools/todo-management-tool-v2.d.ts.map +0 -1
- package/dist/src/tools/todo-management-tool-v2.js +0 -922
- package/dist/src/tools/todo-management-tool-v2.js.map +0 -1
- package/dist/src/utils/project-health-scoring.d.ts +0 -177
- package/dist/src/utils/project-health-scoring.d.ts.map +0 -1
- package/dist/src/utils/project-health-scoring.js +0 -370
- package/dist/src/utils/project-health-scoring.js.map +0 -1
- package/dist/src/utils/todo-json-manager.d.ts +0 -71
- package/dist/src/utils/todo-json-manager.d.ts.map +0 -1
- package/dist/src/utils/todo-json-manager.js +0 -396
- package/dist/src/utils/todo-json-manager.js.map +0 -1
- package/dist/src/utils/todo-markdown-converter.d.ts +0 -16
- package/dist/src/utils/todo-markdown-converter.d.ts.map +0 -1
- package/dist/src/utils/todo-markdown-converter.js +0 -362
- package/dist/src/utils/todo-markdown-converter.js.map +0 -1
- package/dist/src/utils/todo-migration.d.ts +0 -47
- package/dist/src/utils/todo-migration.d.ts.map +0 -1
- package/dist/src/utils/todo-migration.js +0 -261
- package/dist/src/utils/todo-migration.js.map +0 -1
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* JSON-First TODO Management System
|
|
3
|
-
*
|
|
4
|
-
* Provides consistent, structured TODO management with automatic scoring sync,
|
|
5
|
-
* knowledge graph integration, and intelligent task automation.
|
|
6
|
-
*/
|
|
7
|
-
import { TodoJsonData, TodoTask, TaskUpdateOperation, TodoScoreMetrics } from '../types/todo-json-schemas.js';
|
|
8
|
-
export declare class TodoJsonManager {
|
|
9
|
-
private todoJsonPath;
|
|
10
|
-
private todoMdPath;
|
|
11
|
-
private cacheDir;
|
|
12
|
-
private kgManager;
|
|
13
|
-
private healthScoring;
|
|
14
|
-
constructor(projectPath?: string);
|
|
15
|
-
/**
|
|
16
|
-
* Load TODO data from JSON, creating default structure if needed
|
|
17
|
-
*/
|
|
18
|
-
loadTodoData(): Promise<TodoJsonData>;
|
|
19
|
-
/**
|
|
20
|
-
* Save TODO data to JSON and optionally sync to markdown
|
|
21
|
-
*/
|
|
22
|
-
saveTodoData(data: TodoJsonData, syncToMarkdown?: boolean): Promise<void>;
|
|
23
|
-
/**
|
|
24
|
-
* Create a new task with automatic ID generation and scoring integration
|
|
25
|
-
*/
|
|
26
|
-
createTask(taskData: Partial<TodoTask> & {
|
|
27
|
-
title: string;
|
|
28
|
-
}): Promise<string>;
|
|
29
|
-
/**
|
|
30
|
-
* Update task with automatic changelog and scoring sync
|
|
31
|
-
*/
|
|
32
|
-
updateTask(operation: TaskUpdateOperation): Promise<void>;
|
|
33
|
-
/**
|
|
34
|
-
* Move task between sections automatically
|
|
35
|
-
*/
|
|
36
|
-
private moveTaskBetweenSections;
|
|
37
|
-
/**
|
|
38
|
-
* Process auto-completion rules
|
|
39
|
-
*/
|
|
40
|
-
private processAutoCompletionRules;
|
|
41
|
-
/**
|
|
42
|
-
* Update scoring system with current task data
|
|
43
|
-
*/
|
|
44
|
-
private updateScoring;
|
|
45
|
-
/**
|
|
46
|
-
* Calculate comprehensive score metrics
|
|
47
|
-
*/
|
|
48
|
-
private calculateScoreMetrics;
|
|
49
|
-
/**
|
|
50
|
-
* Link task to knowledge graph
|
|
51
|
-
*/
|
|
52
|
-
private linkToKnowledgeGraph;
|
|
53
|
-
/**
|
|
54
|
-
* Convert JSON data to markdown format
|
|
55
|
-
*/
|
|
56
|
-
convertToMarkdown(data?: TodoJsonData): Promise<void>;
|
|
57
|
-
/**
|
|
58
|
-
* Import existing TODO.md into JSON format
|
|
59
|
-
*/
|
|
60
|
-
importFromMarkdown(): Promise<void>;
|
|
61
|
-
/**
|
|
62
|
-
* Get analytics and metrics
|
|
63
|
-
*/
|
|
64
|
-
getAnalytics(): Promise<{
|
|
65
|
-
metrics: TodoScoreMetrics;
|
|
66
|
-
trends: any[];
|
|
67
|
-
recommendations: string[];
|
|
68
|
-
}>;
|
|
69
|
-
private ensureCacheDirectory;
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=todo-json-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"todo-json-manager.d.ts","sourceRoot":"","sources":["../../../src/utils/todo-json-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EACL,YAAY,EACZ,QAAQ,EAER,mBAAmB,EACnB,gBAAgB,EAEjB,MAAM,+BAA+B,CAAC;AAKvC,qBAAa,eAAe;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,aAAa,CAAuB;gBAEhC,WAAW,CAAC,EAAE,MAAM;IAYhC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC;IA6D3C;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,cAAc,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBrF;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAmElF;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+C/D;;OAEG;YACW,uBAAuB;IAkBrC;;OAEG;YACW,0BAA0B;IAsBxC;;OAEG;YACW,aAAa;IA4B3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA6D7B;;OAEG;YACW,oBAAoB;IAkBlC;;OAEG;IACG,iBAAiB,CAAC,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3D;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAazC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC;QAC5B,OAAO,EAAE,gBAAgB,CAAC;QAC1B,MAAM,EAAE,GAAG,EAAE,CAAC;QACd,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;YAsBY,oBAAoB;CAOnC"}
|
|
@@ -1,396 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* JSON-First TODO Management System
|
|
3
|
-
*
|
|
4
|
-
* Provides consistent, structured TODO management with automatic scoring sync,
|
|
5
|
-
* knowledge graph integration, and intelligent task automation.
|
|
6
|
-
*/
|
|
7
|
-
import * as fs from 'fs/promises';
|
|
8
|
-
import path from 'path';
|
|
9
|
-
import crypto from 'crypto';
|
|
10
|
-
import { TodoJsonDataSchema } from '../types/todo-json-schemas.js';
|
|
11
|
-
import { loadConfig } from './config.js';
|
|
12
|
-
import { KnowledgeGraphManager } from './knowledge-graph-manager.js';
|
|
13
|
-
import { ProjectHealthScoring } from './project-health-scoring.js';
|
|
14
|
-
export class TodoJsonManager {
|
|
15
|
-
todoJsonPath;
|
|
16
|
-
todoMdPath;
|
|
17
|
-
cacheDir;
|
|
18
|
-
kgManager;
|
|
19
|
-
healthScoring;
|
|
20
|
-
constructor(projectPath) {
|
|
21
|
-
const config = loadConfig();
|
|
22
|
-
const basePath = projectPath || config.projectPath;
|
|
23
|
-
this.cacheDir = path.join(basePath, '.mcp-adr-cache');
|
|
24
|
-
this.todoJsonPath = path.join(this.cacheDir, 'todo-data.json');
|
|
25
|
-
this.todoMdPath = path.join(basePath, 'TODO.md');
|
|
26
|
-
this.kgManager = new KnowledgeGraphManager();
|
|
27
|
-
this.healthScoring = new ProjectHealthScoring(basePath);
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Load TODO data from JSON, creating default structure if needed
|
|
31
|
-
*/
|
|
32
|
-
async loadTodoData() {
|
|
33
|
-
await this.ensureCacheDirectory();
|
|
34
|
-
try {
|
|
35
|
-
const data = await fs.readFile(this.todoJsonPath, 'utf-8');
|
|
36
|
-
const parsed = JSON.parse(data);
|
|
37
|
-
return TodoJsonDataSchema.parse(parsed);
|
|
38
|
-
}
|
|
39
|
-
catch (error) {
|
|
40
|
-
// Create default structure
|
|
41
|
-
const defaultData = {
|
|
42
|
-
version: '1.0.0',
|
|
43
|
-
metadata: {
|
|
44
|
-
lastUpdated: new Date().toISOString(),
|
|
45
|
-
totalTasks: 0,
|
|
46
|
-
completedTasks: 0,
|
|
47
|
-
autoSyncEnabled: true
|
|
48
|
-
},
|
|
49
|
-
tasks: {},
|
|
50
|
-
sections: [
|
|
51
|
-
{
|
|
52
|
-
id: 'pending',
|
|
53
|
-
title: 'Pending Tasks',
|
|
54
|
-
order: 1,
|
|
55
|
-
collapsed: false,
|
|
56
|
-
tasks: []
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
id: 'in_progress',
|
|
60
|
-
title: 'In Progress',
|
|
61
|
-
order: 2,
|
|
62
|
-
collapsed: false,
|
|
63
|
-
tasks: []
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
id: 'completed',
|
|
67
|
-
title: 'Completed',
|
|
68
|
-
order: 3,
|
|
69
|
-
collapsed: false,
|
|
70
|
-
tasks: []
|
|
71
|
-
}
|
|
72
|
-
],
|
|
73
|
-
scoringSync: {
|
|
74
|
-
lastScoreUpdate: new Date().toISOString(),
|
|
75
|
-
taskCompletionScore: 0,
|
|
76
|
-
priorityWeightedScore: 0,
|
|
77
|
-
criticalTasksRemaining: 0,
|
|
78
|
-
scoreHistory: []
|
|
79
|
-
},
|
|
80
|
-
knowledgeGraphSync: {
|
|
81
|
-
lastSync: new Date().toISOString(),
|
|
82
|
-
linkedIntents: [],
|
|
83
|
-
pendingUpdates: []
|
|
84
|
-
},
|
|
85
|
-
automationRules: []
|
|
86
|
-
};
|
|
87
|
-
await this.saveTodoData(defaultData);
|
|
88
|
-
return defaultData;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Save TODO data to JSON and optionally sync to markdown
|
|
93
|
-
*/
|
|
94
|
-
async saveTodoData(data, syncToMarkdown = true) {
|
|
95
|
-
await this.ensureCacheDirectory();
|
|
96
|
-
// Update metadata
|
|
97
|
-
data.metadata.lastUpdated = new Date().toISOString();
|
|
98
|
-
data.metadata.totalTasks = Object.keys(data.tasks).length;
|
|
99
|
-
data.metadata.completedTasks = Object.values(data.tasks).filter(t => t.status === 'completed').length;
|
|
100
|
-
// Save JSON
|
|
101
|
-
await fs.writeFile(this.todoJsonPath, JSON.stringify(data, null, 2));
|
|
102
|
-
// Auto-sync to markdown if enabled
|
|
103
|
-
if (syncToMarkdown && data.metadata.autoSyncEnabled) {
|
|
104
|
-
await this.convertToMarkdown(data);
|
|
105
|
-
data.metadata.lastSyncToMarkdown = new Date().toISOString();
|
|
106
|
-
await fs.writeFile(this.todoJsonPath, JSON.stringify(data, null, 2));
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Create a new task with automatic ID generation and scoring integration
|
|
111
|
-
*/
|
|
112
|
-
async createTask(taskData) {
|
|
113
|
-
const data = await this.loadTodoData();
|
|
114
|
-
const taskId = crypto.randomUUID();
|
|
115
|
-
const now = new Date().toISOString();
|
|
116
|
-
const task = {
|
|
117
|
-
id: taskId,
|
|
118
|
-
title: taskData.title,
|
|
119
|
-
description: taskData.description || '',
|
|
120
|
-
status: taskData.status || 'pending',
|
|
121
|
-
priority: taskData.priority || 'medium',
|
|
122
|
-
category: taskData.category,
|
|
123
|
-
assignee: taskData.assignee,
|
|
124
|
-
createdAt: now,
|
|
125
|
-
updatedAt: now,
|
|
126
|
-
completedAt: taskData.completedAt || (taskData.status === 'completed' ? now : undefined),
|
|
127
|
-
dueDate: taskData.dueDate,
|
|
128
|
-
parentTaskId: taskData.parentTaskId,
|
|
129
|
-
subtasks: taskData.subtasks || [],
|
|
130
|
-
dependencies: taskData.dependencies || [],
|
|
131
|
-
blockedBy: taskData.blockedBy || [],
|
|
132
|
-
linkedAdrs: taskData.linkedAdrs || [],
|
|
133
|
-
adrGeneratedTask: taskData.adrGeneratedTask || false,
|
|
134
|
-
intentId: taskData.intentId,
|
|
135
|
-
toolExecutions: taskData.toolExecutions || [],
|
|
136
|
-
scoreWeight: taskData.scoreWeight || 1,
|
|
137
|
-
scoreCategory: taskData.scoreCategory || 'task_completion',
|
|
138
|
-
estimatedHours: taskData.estimatedHours,
|
|
139
|
-
actualHours: taskData.actualHours,
|
|
140
|
-
progressPercentage: taskData.progressPercentage || (taskData.status === 'completed' ? 100 : 0),
|
|
141
|
-
tags: taskData.tags || [],
|
|
142
|
-
notes: taskData.notes,
|
|
143
|
-
lastModifiedBy: taskData.lastModifiedBy || 'tool',
|
|
144
|
-
autoComplete: taskData.autoComplete || false,
|
|
145
|
-
completionCriteria: taskData.completionCriteria,
|
|
146
|
-
version: 1,
|
|
147
|
-
changeLog: [{
|
|
148
|
-
timestamp: now,
|
|
149
|
-
action: 'created',
|
|
150
|
-
details: taskData.status === 'completed' ?
|
|
151
|
-
`Task created with preserved completion: ${taskData.title}` :
|
|
152
|
-
`Task created: ${taskData.title}`,
|
|
153
|
-
modifiedBy: taskData.lastModifiedBy || 'tool'
|
|
154
|
-
}]
|
|
155
|
-
};
|
|
156
|
-
// Add to tasks
|
|
157
|
-
data.tasks[taskId] = task;
|
|
158
|
-
// Add to appropriate section
|
|
159
|
-
const targetSection = data.sections.find(s => s.id === task.status) || data.sections[0];
|
|
160
|
-
if (targetSection) {
|
|
161
|
-
targetSection.tasks.push(taskId);
|
|
162
|
-
}
|
|
163
|
-
// Update knowledge graph if intentId provided
|
|
164
|
-
if (task.intentId) {
|
|
165
|
-
await this.linkToKnowledgeGraph(taskId, task.intentId, 'generated_from');
|
|
166
|
-
}
|
|
167
|
-
await this.saveTodoData(data);
|
|
168
|
-
await this.updateScoring(data);
|
|
169
|
-
return taskId;
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Update task with automatic changelog and scoring sync
|
|
173
|
-
*/
|
|
174
|
-
async updateTask(operation) {
|
|
175
|
-
const data = await this.loadTodoData();
|
|
176
|
-
const task = data.tasks[operation.taskId];
|
|
177
|
-
if (!task) {
|
|
178
|
-
throw new Error(`Task ${operation.taskId} not found`);
|
|
179
|
-
}
|
|
180
|
-
const now = new Date().toISOString();
|
|
181
|
-
const oldStatus = task.status;
|
|
182
|
-
// Apply updates
|
|
183
|
-
Object.assign(task, operation.updates);
|
|
184
|
-
task.updatedAt = now;
|
|
185
|
-
task.version += 1;
|
|
186
|
-
// Add changelog entry
|
|
187
|
-
task.changeLog.push({
|
|
188
|
-
timestamp: now,
|
|
189
|
-
action: 'updated',
|
|
190
|
-
details: operation.reason,
|
|
191
|
-
modifiedBy: operation.triggeredBy
|
|
192
|
-
});
|
|
193
|
-
// Handle status changes
|
|
194
|
-
if (operation.updates.status && operation.updates.status !== oldStatus) {
|
|
195
|
-
await this.moveTaskBetweenSections(data, operation.taskId, oldStatus, operation.updates.status);
|
|
196
|
-
// Handle completion
|
|
197
|
-
if (operation.updates.status === 'completed') {
|
|
198
|
-
task.completedAt = now;
|
|
199
|
-
task.progressPercentage = 100;
|
|
200
|
-
// Update knowledge graph
|
|
201
|
-
if (task.intentId) {
|
|
202
|
-
await this.kgManager.updateTodoSnapshot(task.intentId, `Task completed: ${task.title}`);
|
|
203
|
-
}
|
|
204
|
-
// Check for auto-completion rules
|
|
205
|
-
await this.processAutoCompletionRules(data, operation.taskId);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
await this.saveTodoData(data);
|
|
209
|
-
await this.updateScoring(data);
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Move task between sections automatically
|
|
213
|
-
*/
|
|
214
|
-
async moveTaskBetweenSections(data, taskId, fromStatus, toStatus) {
|
|
215
|
-
const fromSection = data.sections.find(s => s.id === fromStatus);
|
|
216
|
-
const toSection = data.sections.find(s => s.id === toStatus);
|
|
217
|
-
if (fromSection) {
|
|
218
|
-
fromSection.tasks = fromSection.tasks.filter(id => id !== taskId);
|
|
219
|
-
}
|
|
220
|
-
if (toSection) {
|
|
221
|
-
toSection.tasks.push(taskId);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Process auto-completion rules
|
|
226
|
-
*/
|
|
227
|
-
async processAutoCompletionRules(data, completedTaskId) {
|
|
228
|
-
// Check for dependent tasks that can now be auto-completed
|
|
229
|
-
for (const [taskId, task] of Object.entries(data.tasks)) {
|
|
230
|
-
if (task.autoComplete && task.dependencies.includes(completedTaskId)) {
|
|
231
|
-
const allDependenciesCompleted = task.dependencies.every(depId => {
|
|
232
|
-
const depTask = data.tasks[depId];
|
|
233
|
-
return depTask && depTask.status === 'completed';
|
|
234
|
-
});
|
|
235
|
-
if (allDependenciesCompleted) {
|
|
236
|
-
await this.updateTask({
|
|
237
|
-
taskId,
|
|
238
|
-
updates: { status: 'completed' },
|
|
239
|
-
reason: `Auto-completed: all dependencies satisfied`,
|
|
240
|
-
triggeredBy: 'automation'
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Update scoring system with current task data
|
|
248
|
-
*/
|
|
249
|
-
async updateScoring(data) {
|
|
250
|
-
const metrics = this.calculateScoreMetrics(data);
|
|
251
|
-
// Update scoring sync
|
|
252
|
-
data.scoringSync = {
|
|
253
|
-
lastScoreUpdate: new Date().toISOString(),
|
|
254
|
-
taskCompletionScore: metrics.completionPercentage,
|
|
255
|
-
priorityWeightedScore: metrics.priorityWeightedScore,
|
|
256
|
-
criticalTasksRemaining: metrics.criticalTasksRemaining,
|
|
257
|
-
scoreHistory: [
|
|
258
|
-
...data.scoringSync.scoreHistory,
|
|
259
|
-
{
|
|
260
|
-
timestamp: new Date().toISOString(),
|
|
261
|
-
score: metrics.completionPercentage,
|
|
262
|
-
trigger: 'task_update'
|
|
263
|
-
}
|
|
264
|
-
].slice(-50) // Keep last 50 entries
|
|
265
|
-
};
|
|
266
|
-
// Update project health scoring
|
|
267
|
-
await this.healthScoring.updateTaskCompletionScore({
|
|
268
|
-
completed: metrics.completedTasks,
|
|
269
|
-
total: metrics.totalTasks,
|
|
270
|
-
criticalTasksRemaining: metrics.criticalTasksRemaining,
|
|
271
|
-
priorityWeightedScore: metrics.priorityWeightedScore
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
/**
|
|
275
|
-
* Calculate comprehensive score metrics
|
|
276
|
-
*/
|
|
277
|
-
calculateScoreMetrics(data) {
|
|
278
|
-
const tasks = Object.values(data.tasks);
|
|
279
|
-
const totalTasks = tasks.length;
|
|
280
|
-
const completedTasks = tasks.filter(t => t.status === 'completed').length;
|
|
281
|
-
const completionPercentage = totalTasks > 0 ? (completedTasks / totalTasks) * 100 : 100;
|
|
282
|
-
// Priority-weighted scoring
|
|
283
|
-
const priorityWeights = { low: 1, medium: 2, high: 3, critical: 4 };
|
|
284
|
-
const totalWeight = tasks.reduce((sum, t) => sum + priorityWeights[t.priority], 0);
|
|
285
|
-
const completedWeight = tasks
|
|
286
|
-
.filter(t => t.status === 'completed')
|
|
287
|
-
.reduce((sum, t) => sum + priorityWeights[t.priority], 0);
|
|
288
|
-
const priorityWeightedScore = totalWeight > 0 ? (completedWeight / totalWeight) * 100 : 100;
|
|
289
|
-
// Critical tasks remaining
|
|
290
|
-
const criticalTasksRemaining = tasks.filter(t => t.priority === 'critical' && t.status !== 'completed').length;
|
|
291
|
-
// Other metrics
|
|
292
|
-
const blockedTasksCount = tasks.filter(t => t.status === 'blocked').length;
|
|
293
|
-
const now = new Date();
|
|
294
|
-
const averageTaskAge = tasks.reduce((sum, t) => {
|
|
295
|
-
const age = (now.getTime() - new Date(t.createdAt).getTime()) / (1000 * 60 * 60 * 24);
|
|
296
|
-
return sum + age;
|
|
297
|
-
}, 0) / totalTasks;
|
|
298
|
-
// Velocity metrics (last 7 days)
|
|
299
|
-
const weekAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
|
|
300
|
-
const tasksCompletedLastWeek = tasks.filter(t => t.status === 'completed' &&
|
|
301
|
-
t.completedAt &&
|
|
302
|
-
new Date(t.completedAt) > weekAgo).length;
|
|
303
|
-
const completedTasksWithDuration = tasks.filter(t => t.status === 'completed' &&
|
|
304
|
-
t.completedAt);
|
|
305
|
-
const averageCompletionTime = completedTasksWithDuration.length > 0
|
|
306
|
-
? completedTasksWithDuration.reduce((sum, t) => {
|
|
307
|
-
const duration = (new Date(t.completedAt).getTime() - new Date(t.createdAt).getTime()) / (1000 * 60 * 60);
|
|
308
|
-
return sum + duration;
|
|
309
|
-
}, 0) / completedTasksWithDuration.length
|
|
310
|
-
: 0;
|
|
311
|
-
return {
|
|
312
|
-
totalTasks,
|
|
313
|
-
completedTasks,
|
|
314
|
-
completionPercentage,
|
|
315
|
-
priorityWeightedScore,
|
|
316
|
-
criticalTasksRemaining,
|
|
317
|
-
blockedTasksCount,
|
|
318
|
-
averageTaskAge,
|
|
319
|
-
velocityMetrics: {
|
|
320
|
-
tasksCompletedLastWeek,
|
|
321
|
-
averageCompletionTime
|
|
322
|
-
}
|
|
323
|
-
};
|
|
324
|
-
}
|
|
325
|
-
/**
|
|
326
|
-
* Link task to knowledge graph
|
|
327
|
-
*/
|
|
328
|
-
async linkToKnowledgeGraph(taskId, intentId, _linkType) {
|
|
329
|
-
const data = await this.loadTodoData();
|
|
330
|
-
// Update knowledge graph sync
|
|
331
|
-
data.knowledgeGraphSync.linkedIntents.push(intentId);
|
|
332
|
-
data.knowledgeGraphSync.pendingUpdates.push({
|
|
333
|
-
taskId,
|
|
334
|
-
updateType: 'status',
|
|
335
|
-
timestamp: new Date().toISOString()
|
|
336
|
-
});
|
|
337
|
-
await this.saveTodoData(data, false); // Don't sync to markdown yet
|
|
338
|
-
}
|
|
339
|
-
/**
|
|
340
|
-
* Convert JSON data to markdown format
|
|
341
|
-
*/
|
|
342
|
-
async convertToMarkdown(data) {
|
|
343
|
-
if (!data) {
|
|
344
|
-
data = await this.loadTodoData();
|
|
345
|
-
}
|
|
346
|
-
const { generateTodoMarkdown } = await import('./todo-markdown-converter.js');
|
|
347
|
-
const markdown = await generateTodoMarkdown(data);
|
|
348
|
-
await fs.writeFile(this.todoMdPath, markdown);
|
|
349
|
-
}
|
|
350
|
-
/**
|
|
351
|
-
* Import existing TODO.md into JSON format
|
|
352
|
-
*/
|
|
353
|
-
async importFromMarkdown() {
|
|
354
|
-
try {
|
|
355
|
-
const markdownContent = await fs.readFile(this.todoMdPath, 'utf-8');
|
|
356
|
-
const { parseMarkdownToJson } = await import('./todo-markdown-converter.js');
|
|
357
|
-
const jsonData = await parseMarkdownToJson(markdownContent);
|
|
358
|
-
await this.saveTodoData(jsonData, false);
|
|
359
|
-
}
|
|
360
|
-
catch (error) {
|
|
361
|
-
// If TODO.md doesn't exist, create fresh JSON
|
|
362
|
-
await this.loadTodoData();
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
/**
|
|
366
|
-
* Get analytics and metrics
|
|
367
|
-
*/
|
|
368
|
-
async getAnalytics() {
|
|
369
|
-
const data = await this.loadTodoData();
|
|
370
|
-
const metrics = this.calculateScoreMetrics(data);
|
|
371
|
-
const recommendations = [];
|
|
372
|
-
if (metrics.criticalTasksRemaining > 0) {
|
|
373
|
-
recommendations.push(`Address ${metrics.criticalTasksRemaining} critical tasks`);
|
|
374
|
-
}
|
|
375
|
-
if (metrics.blockedTasksCount > 0) {
|
|
376
|
-
recommendations.push(`Resolve ${metrics.blockedTasksCount} blocked tasks`);
|
|
377
|
-
}
|
|
378
|
-
if (metrics.averageTaskAge > 30) {
|
|
379
|
-
recommendations.push('Consider breaking down old tasks or removing stale ones');
|
|
380
|
-
}
|
|
381
|
-
return {
|
|
382
|
-
metrics,
|
|
383
|
-
trends: data.scoringSync.scoreHistory,
|
|
384
|
-
recommendations
|
|
385
|
-
};
|
|
386
|
-
}
|
|
387
|
-
async ensureCacheDirectory() {
|
|
388
|
-
try {
|
|
389
|
-
await fs.access(this.cacheDir);
|
|
390
|
-
}
|
|
391
|
-
catch {
|
|
392
|
-
await fs.mkdir(this.cacheDir, { recursive: true });
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
//# sourceMappingURL=todo-json-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"todo-json-manager.js","sourceRoot":"","sources":["../../../src/utils/todo-json-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TODO JSON ↔ Markdown Converter
|
|
3
|
-
*
|
|
4
|
-
* Converts between structured JSON format and human-readable markdown,
|
|
5
|
-
* preserving all metadata and enabling seamless bidirectional sync.
|
|
6
|
-
*/
|
|
7
|
-
import { TodoJsonData } from '../types/todo-json-schemas.js';
|
|
8
|
-
/**
|
|
9
|
-
* Convert JSON TODO data to markdown format
|
|
10
|
-
*/
|
|
11
|
-
export declare function generateTodoMarkdown(data: TodoJsonData): Promise<string>;
|
|
12
|
-
/**
|
|
13
|
-
* Parse markdown content back to JSON format
|
|
14
|
-
*/
|
|
15
|
-
export declare function parseMarkdownToJson(markdown: string): Promise<TodoJsonData>;
|
|
16
|
-
//# sourceMappingURL=todo-markdown-converter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"todo-markdown-converter.d.ts","sourceRoot":"","sources":["../../../src/utils/todo-markdown-converter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAyB,MAAM,+BAA+B,CAAC;AAKpF;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA6D9E;AAuFD;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA+EjF"}
|