mcp-taskflow 0.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.
- package/CHANGELOG.md +13 -0
- package/LICENSE.md +21 -0
- package/README.md +275 -0
- package/dist/config/pathResolver.d.ts +33 -0
- package/dist/config/pathResolver.d.ts.map +1 -0
- package/dist/config/pathResolver.js +130 -0
- package/dist/config/pathResolver.js.map +1 -0
- package/dist/data/fileOperations.d.ts +43 -0
- package/dist/data/fileOperations.d.ts.map +1 -0
- package/dist/data/fileOperations.js +248 -0
- package/dist/data/fileOperations.js.map +1 -0
- package/dist/data/memoryStore.d.ts +86 -0
- package/dist/data/memoryStore.d.ts.map +1 -0
- package/dist/data/memoryStore.js +216 -0
- package/dist/data/memoryStore.js.map +1 -0
- package/dist/data/rulesStore.d.ts +63 -0
- package/dist/data/rulesStore.d.ts.map +1 -0
- package/dist/data/rulesStore.js +196 -0
- package/dist/data/rulesStore.js.map +1 -0
- package/dist/data/schemas.d.ts +840 -0
- package/dist/data/schemas.d.ts.map +1 -0
- package/dist/data/schemas.js +265 -0
- package/dist/data/schemas.js.map +1 -0
- package/dist/data/taskSearchService.d.ts +110 -0
- package/dist/data/taskSearchService.d.ts.map +1 -0
- package/dist/data/taskSearchService.js +165 -0
- package/dist/data/taskSearchService.js.map +1 -0
- package/dist/data/taskStore.d.ts +192 -0
- package/dist/data/taskStore.d.ts.map +1 -0
- package/dist/data/taskStore.js +347 -0
- package/dist/data/taskStore.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +86 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/index.d.ts +12 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +17 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/projectPromptBuilder.d.ts +13 -0
- package/dist/prompts/projectPromptBuilder.d.ts.map +1 -0
- package/dist/prompts/projectPromptBuilder.js +29 -0
- package/dist/prompts/projectPromptBuilder.js.map +1 -0
- package/dist/prompts/researchPromptBuilder.d.ts +10 -0
- package/dist/prompts/researchPromptBuilder.d.ts.map +1 -0
- package/dist/prompts/researchPromptBuilder.js +20 -0
- package/dist/prompts/researchPromptBuilder.js.map +1 -0
- package/dist/prompts/taskPromptBuilders.d.ts +87 -0
- package/dist/prompts/taskPromptBuilders.d.ts.map +1 -0
- package/dist/prompts/taskPromptBuilders.js +529 -0
- package/dist/prompts/taskPromptBuilders.js.map +1 -0
- package/dist/prompts/templateEngine.d.ts +102 -0
- package/dist/prompts/templateEngine.d.ts.map +1 -0
- package/dist/prompts/templateEngine.js +145 -0
- package/dist/prompts/templateEngine.js.map +1 -0
- package/dist/prompts/templateLoader.d.ts +61 -0
- package/dist/prompts/templateLoader.d.ts.map +1 -0
- package/dist/prompts/templateLoader.js +129 -0
- package/dist/prompts/templateLoader.js.map +1 -0
- package/dist/prompts/templates/v1/templates_en/analyzeTask/index.md +65 -0
- package/dist/prompts/templates/v1/templates_en/analyzeTask/iteration.md +12 -0
- package/dist/prompts/templates/v1/templates_en/clearAllTasks/backupInfo.md +1 -0
- package/dist/prompts/templates/v1/templates_en/clearAllTasks/cancel.md +7 -0
- package/dist/prompts/templates/v1/templates_en/clearAllTasks/empty.md +5 -0
- package/dist/prompts/templates/v1/templates_en/clearAllTasks/index.md +5 -0
- package/dist/prompts/templates/v1/templates_en/clearAllTasks/result.md +7 -0
- package/dist/prompts/templates/v1/templates_en/clearAllTasks/success.md +5 -0
- package/dist/prompts/templates/v1/templates_en/deleteTask/completed.md +5 -0
- package/dist/prompts/templates/v1/templates_en/deleteTask/index.md +5 -0
- package/dist/prompts/templates/v1/templates_en/deleteTask/notFound.md +5 -0
- package/dist/prompts/templates/v1/templates_en/deleteTask/result.md +5 -0
- package/dist/prompts/templates/v1/templates_en/deleteTask/success.md +5 -0
- package/dist/prompts/templates/v1/templates_en/executeTask/analysisResult.md +3 -0
- package/dist/prompts/templates/v1/templates_en/executeTask/complexity.md +15 -0
- package/dist/prompts/templates/v1/templates_en/executeTask/dependencies.md +3 -0
- package/dist/prompts/templates/v1/templates_en/executeTask/dependencyTasks.md +3 -0
- package/dist/prompts/templates/v1/templates_en/executeTask/implementationGuide.md +3 -0
- package/dist/prompts/templates/v1/templates_en/executeTask/index.md +39 -0
- package/dist/prompts/templates/v1/templates_en/executeTask/notes.md +1 -0
- package/dist/prompts/templates/v1/templates_en/executeTask/relatedFilesSummary.md +5 -0
- package/dist/prompts/templates/v1/templates_en/executeTask/verificationCriteria.md +3 -0
- package/dist/prompts/templates/v1/templates_en/getTaskDetail/complatedSummary.md +5 -0
- package/dist/prompts/templates/v1/templates_en/getTaskDetail/dependencies.md +1 -0
- package/dist/prompts/templates/v1/templates_en/getTaskDetail/error.md +3 -0
- package/dist/prompts/templates/v1/templates_en/getTaskDetail/implementationGuide.md +3 -0
- package/dist/prompts/templates/v1/templates_en/getTaskDetail/index.md +25 -0
- package/dist/prompts/templates/v1/templates_en/getTaskDetail/notFound.md +3 -0
- package/dist/prompts/templates/v1/templates_en/getTaskDetail/notes.md +1 -0
- package/dist/prompts/templates/v1/templates_en/getTaskDetail/relatedFiles.md +3 -0
- package/dist/prompts/templates/v1/templates_en/getTaskDetail/verificationCriteria.md +3 -0
- package/dist/prompts/templates/v1/templates_en/initProjectRules/index.md +81 -0
- package/dist/prompts/templates/v1/templates_en/listTasks/index.md +7 -0
- package/dist/prompts/templates/v1/templates_en/listTasks/notFound.md +3 -0
- package/dist/prompts/templates/v1/templates_en/listTasks/taskDetails.md +13 -0
- package/dist/prompts/templates/v1/templates_en/planTask/hasThought.md +4 -0
- package/dist/prompts/templates/v1/templates_en/planTask/index.md +96 -0
- package/dist/prompts/templates/v1/templates_en/planTask/noThought.md +4 -0
- package/dist/prompts/templates/v1/templates_en/planTask/tasks.md +17 -0
- package/dist/prompts/templates/v1/templates_en/processThought/complatedThought.md +6 -0
- package/dist/prompts/templates/v1/templates_en/processThought/index.md +13 -0
- package/dist/prompts/templates/v1/templates_en/processThought/moreThought.md +1 -0
- package/dist/prompts/templates/v1/templates_en/queryTask/index.md +24 -0
- package/dist/prompts/templates/v1/templates_en/queryTask/notFound.md +15 -0
- package/dist/prompts/templates/v1/templates_en/queryTask/taskDetails.md +5 -0
- package/dist/prompts/templates/v1/templates_en/reflectTask/index.md +57 -0
- package/dist/prompts/templates/v1/templates_en/researchMode/index.md +95 -0
- package/dist/prompts/templates/v1/templates_en/researchMode/previousState.md +9 -0
- package/dist/prompts/templates/v1/templates_en/splitTasks/index.md +34 -0
- package/dist/prompts/templates/v1/templates_en/splitTasks/taskDetails.md +12 -0
- package/dist/prompts/templates/v1/templates_en/tests/basic.md +1 -0
- package/dist/prompts/templates/v1/templates_en/toolsDescription/analyzeTask.md +1 -0
- package/dist/prompts/templates/v1/templates_en/toolsDescription/clearAllTasks.md +1 -0
- package/dist/prompts/templates/v1/templates_en/toolsDescription/deleteTask.md +1 -0
- package/dist/prompts/templates/v1/templates_en/toolsDescription/executeTask.md +1 -0
- package/dist/prompts/templates/v1/templates_en/toolsDescription/getTaskDetail.md +1 -0
- package/dist/prompts/templates/v1/templates_en/toolsDescription/initProjectRules.md +1 -0
- package/dist/prompts/templates/v1/templates_en/toolsDescription/listTasks.md +1 -0
- package/dist/prompts/templates/v1/templates_en/toolsDescription/planTask.md +3 -0
- package/dist/prompts/templates/v1/templates_en/toolsDescription/processThought.md +1 -0
- package/dist/prompts/templates/v1/templates_en/toolsDescription/queryTask.md +1 -0
- package/dist/prompts/templates/v1/templates_en/toolsDescription/reflectTask.md +1 -0
- package/dist/prompts/templates/v1/templates_en/toolsDescription/researchMode.md +1 -0
- package/dist/prompts/templates/v1/templates_en/toolsDescription/splitTasks.md +83 -0
- package/dist/prompts/templates/v1/templates_en/toolsDescription/updateTask.md +1 -0
- package/dist/prompts/templates/v1/templates_en/toolsDescription/verifyTask.md +37 -0
- package/dist/prompts/templates/v1/templates_en/updateTaskContent/emptyUpdate.md +5 -0
- package/dist/prompts/templates/v1/templates_en/updateTaskContent/fileDetails.md +1 -0
- package/dist/prompts/templates/v1/templates_en/updateTaskContent/index.md +7 -0
- package/dist/prompts/templates/v1/templates_en/updateTaskContent/notFound.md +5 -0
- package/dist/prompts/templates/v1/templates_en/updateTaskContent/success.md +9 -0
- package/dist/prompts/templates/v1/templates_en/updateTaskContent/successDetails.md +3 -0
- package/dist/prompts/templates/v1/templates_en/updateTaskContent/validation.md +5 -0
- package/dist/prompts/templates/v1/templates_en/verifyTask/index.md +19 -0
- package/dist/prompts/templates/v1/templates_en/verifyTask/noPass.md +12 -0
- package/dist/prompts/thoughtPromptBuilder.d.ts +11 -0
- package/dist/prompts/thoughtPromptBuilder.d.ts.map +1 -0
- package/dist/prompts/thoughtPromptBuilder.js +30 -0
- package/dist/prompts/thoughtPromptBuilder.js.map +1 -0
- package/dist/server/container.d.ts +111 -0
- package/dist/server/container.d.ts.map +1 -0
- package/dist/server/container.js +135 -0
- package/dist/server/container.js.map +1 -0
- package/dist/server/logger.d.ts +98 -0
- package/dist/server/logger.d.ts.map +1 -0
- package/dist/server/logger.js +295 -0
- package/dist/server/logger.js.map +1 -0
- package/dist/server/mcpServer.d.ts +162 -0
- package/dist/server/mcpServer.d.ts.map +1 -0
- package/dist/server/mcpServer.js +236 -0
- package/dist/server/mcpServer.js.map +1 -0
- package/dist/tools/project/index.d.ts +7 -0
- package/dist/tools/project/index.d.ts.map +1 -0
- package/dist/tools/project/index.js +7 -0
- package/dist/tools/project/index.js.map +1 -0
- package/dist/tools/project/projectTools.d.ts +17 -0
- package/dist/tools/project/projectTools.d.ts.map +1 -0
- package/dist/tools/project/projectTools.js +73 -0
- package/dist/tools/project/projectTools.js.map +1 -0
- package/dist/tools/research/index.d.ts +7 -0
- package/dist/tools/research/index.d.ts.map +1 -0
- package/dist/tools/research/index.js +7 -0
- package/dist/tools/research/index.js.map +1 -0
- package/dist/tools/research/researchTools.d.ts +16 -0
- package/dist/tools/research/researchTools.d.ts.map +1 -0
- package/dist/tools/research/researchTools.js +41 -0
- package/dist/tools/research/researchTools.js.map +1 -0
- package/dist/tools/task/index.d.ts +8 -0
- package/dist/tools/task/index.d.ts.map +1 -0
- package/dist/tools/task/index.js +8 -0
- package/dist/tools/task/index.js.map +1 -0
- package/dist/tools/task/taskTools.d.ts +32 -0
- package/dist/tools/task/taskTools.d.ts.map +1 -0
- package/dist/tools/task/taskTools.js +542 -0
- package/dist/tools/task/taskTools.js.map +1 -0
- package/dist/tools/thought/index.d.ts +7 -0
- package/dist/tools/thought/index.d.ts.map +1 -0
- package/dist/tools/thought/index.js +7 -0
- package/dist/tools/thought/index.js.map +1 -0
- package/dist/tools/thought/thoughtTools.d.ts +16 -0
- package/dist/tools/thought/thoughtTools.d.ts.map +1 -0
- package/dist/tools/thought/thoughtTools.js +47 -0
- package/dist/tools/thought/thoughtTools.js.map +1 -0
- package/docs/API.md +32 -0
- package/docs/ARCHITECTURE.md +44 -0
- package/docs/COMPATIBILITY_REPORT.md +26 -0
- package/docs/PERFORMANCE.md +66 -0
- package/package.json +77 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RulesStore - Project-specific coding rules management
|
|
3
|
+
*
|
|
4
|
+
* Provides:
|
|
5
|
+
* - Loading and saving project coding standards
|
|
6
|
+
* - Markdown-based rules storage
|
|
7
|
+
* - Validation and size limits
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
import { fileExists } from './fileOperations.js';
|
|
11
|
+
import { getDataPath } from '../config/pathResolver.js';
|
|
12
|
+
import fs from 'fs/promises';
|
|
13
|
+
import path from 'path';
|
|
14
|
+
/**
|
|
15
|
+
* Project rules filename
|
|
16
|
+
*/
|
|
17
|
+
const RULES_FILENAME = 'taskflow-rules.md';
|
|
18
|
+
/**
|
|
19
|
+
* Maximum rules file size (1MB) to prevent DoS
|
|
20
|
+
*/
|
|
21
|
+
const MAX_RULES_SIZE_BYTES = 1 * 1024 * 1024;
|
|
22
|
+
/**
|
|
23
|
+
* Default rules template
|
|
24
|
+
*/
|
|
25
|
+
const DEFAULT_RULES_TEMPLATE = `# Project Coding Standards
|
|
26
|
+
|
|
27
|
+
## Overview
|
|
28
|
+
Document your project-specific coding standards, patterns, and conventions here.
|
|
29
|
+
|
|
30
|
+
## Code Style
|
|
31
|
+
- Formatting rules
|
|
32
|
+
- Naming conventions
|
|
33
|
+
- File organization
|
|
34
|
+
|
|
35
|
+
## Architecture Patterns
|
|
36
|
+
- Design patterns used
|
|
37
|
+
- Module structure
|
|
38
|
+
- Dependency guidelines
|
|
39
|
+
|
|
40
|
+
## Security Guidelines
|
|
41
|
+
- Security controls applicable
|
|
42
|
+
- Authentication/authorization patterns
|
|
43
|
+
- Data validation requirements
|
|
44
|
+
|
|
45
|
+
## Testing Standards
|
|
46
|
+
- Test coverage requirements
|
|
47
|
+
- Testing patterns
|
|
48
|
+
- Mock strategies
|
|
49
|
+
|
|
50
|
+
## Documentation
|
|
51
|
+
- Comment requirements
|
|
52
|
+
- API documentation
|
|
53
|
+
- README guidelines
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
**Last Updated**: ${new Date().toISOString().split('T')[0]}
|
|
58
|
+
`;
|
|
59
|
+
/**
|
|
60
|
+
* RulesStore - Manages project-specific coding rules
|
|
61
|
+
*/
|
|
62
|
+
export class RulesStore {
|
|
63
|
+
rulesFilePath;
|
|
64
|
+
/**
|
|
65
|
+
* Create a new RulesStore
|
|
66
|
+
*
|
|
67
|
+
* @param dataDir - Optional data directory override (for testing)
|
|
68
|
+
*/
|
|
69
|
+
constructor(dataDir) {
|
|
70
|
+
this.rulesFilePath = getDataPath(RULES_FILENAME, dataDir);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Check if project rules exist
|
|
74
|
+
*
|
|
75
|
+
* @returns True if rules file exists
|
|
76
|
+
*/
|
|
77
|
+
async rulesExistAsync() {
|
|
78
|
+
return await fileExists(this.rulesFilePath);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Load project rules
|
|
82
|
+
*
|
|
83
|
+
* @returns Rules content as markdown string
|
|
84
|
+
*/
|
|
85
|
+
async loadRulesAsync() {
|
|
86
|
+
if (!(await this.rulesExistAsync())) {
|
|
87
|
+
throw new Error('Project rules not found. Initialize rules first.');
|
|
88
|
+
}
|
|
89
|
+
// Read rules file
|
|
90
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename
|
|
91
|
+
const content = await fs.readFile(this.rulesFilePath, 'utf-8');
|
|
92
|
+
// Validate size
|
|
93
|
+
if (content.length > MAX_RULES_SIZE_BYTES) {
|
|
94
|
+
throw new Error(`Rules file too large (${content.length} bytes, max ${MAX_RULES_SIZE_BYTES})`);
|
|
95
|
+
}
|
|
96
|
+
return content;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Save project rules
|
|
100
|
+
*
|
|
101
|
+
* Validates markdown content and size before saving
|
|
102
|
+
*
|
|
103
|
+
* @param content - Rules content as markdown string
|
|
104
|
+
*/
|
|
105
|
+
async saveRulesAsync(content) {
|
|
106
|
+
// Validate content
|
|
107
|
+
if (content.trim().length === 0) {
|
|
108
|
+
throw new Error('Rules content cannot be empty');
|
|
109
|
+
}
|
|
110
|
+
// Validate size
|
|
111
|
+
const sizeBytes = Buffer.byteLength(content, 'utf-8');
|
|
112
|
+
if (sizeBytes > MAX_RULES_SIZE_BYTES) {
|
|
113
|
+
throw new Error(`Rules content too large (${sizeBytes} bytes, max ${MAX_RULES_SIZE_BYTES})`);
|
|
114
|
+
}
|
|
115
|
+
// Basic markdown validation (check for common markdown headers)
|
|
116
|
+
if (!content.includes('#')) {
|
|
117
|
+
console.warn('Rules content does not contain markdown headers');
|
|
118
|
+
}
|
|
119
|
+
// Write rules file atomically
|
|
120
|
+
// Use temp file + rename pattern for atomicity
|
|
121
|
+
const tempPath = `${this.rulesFilePath}.tmp`;
|
|
122
|
+
try {
|
|
123
|
+
// Ensure parent directory exists
|
|
124
|
+
const dirPath = this.rulesFilePath.substring(0, this.rulesFilePath.lastIndexOf(path.sep));
|
|
125
|
+
await fs.mkdir(dirPath, { recursive: true });
|
|
126
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename
|
|
127
|
+
await fs.writeFile(tempPath, content, 'utf-8');
|
|
128
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename
|
|
129
|
+
await fs.rename(tempPath, this.rulesFilePath);
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
// Cleanup temp file on failure
|
|
133
|
+
try {
|
|
134
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename
|
|
135
|
+
await fs.unlink(tempPath);
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
// Ignore cleanup errors
|
|
139
|
+
}
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Initialize project rules with default template
|
|
145
|
+
*
|
|
146
|
+
* Only creates file if it doesn't already exist
|
|
147
|
+
*
|
|
148
|
+
* @returns True if created, false if already exists
|
|
149
|
+
*/
|
|
150
|
+
async initializeRulesAsync() {
|
|
151
|
+
if (await this.rulesExistAsync()) {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
await this.saveRulesAsync(DEFAULT_RULES_TEMPLATE);
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Update project rules (append or replace sections)
|
|
159
|
+
*
|
|
160
|
+
* @param updates - Markdown content to append or section replacements
|
|
161
|
+
* @param mode - 'append' to add to end, 'replace' to overwrite
|
|
162
|
+
*/
|
|
163
|
+
async updateRulesAsync(updates, mode = 'append') {
|
|
164
|
+
// Validate updates content
|
|
165
|
+
if (updates.trim().length === 0) {
|
|
166
|
+
throw new Error('Rules content cannot be empty');
|
|
167
|
+
}
|
|
168
|
+
let content;
|
|
169
|
+
if (mode === 'replace') {
|
|
170
|
+
// Replace entire content
|
|
171
|
+
content = updates;
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
// Append to existing content
|
|
175
|
+
const existing = await this.rulesExistAsync()
|
|
176
|
+
? await this.loadRulesAsync()
|
|
177
|
+
: '';
|
|
178
|
+
content = existing ? `${existing}\n\n${updates}` : updates;
|
|
179
|
+
}
|
|
180
|
+
await this.saveRulesAsync(content);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Delete project rules
|
|
184
|
+
*
|
|
185
|
+
* @returns True if deleted, false if didn't exist
|
|
186
|
+
*/
|
|
187
|
+
async deleteRulesAsync() {
|
|
188
|
+
if (!(await this.rulesExistAsync())) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename
|
|
192
|
+
await fs.unlink(this.rulesFilePath);
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=rulesStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rulesStore.js","sourceRoot":"","sources":["../../src/data/rulesStore.ts"],"names":[],"mappings":"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"}
|