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,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thought Tools Implementation
|
|
3
|
+
*
|
|
4
|
+
* Implements MCP tools for structured thinking and reasoning processes.
|
|
5
|
+
*
|
|
6
|
+
* Tools:
|
|
7
|
+
* - process_thought: Record and structure reasoning steps
|
|
8
|
+
*/
|
|
9
|
+
import { zodToJsonSchema } from 'zod-to-json-schema';
|
|
10
|
+
import { ProcessThoughtParamsSchema, } from '../../data/schemas.js';
|
|
11
|
+
import { ProcessThoughtPromptBuilder, } from '../../prompts/thoughtPromptBuilder.js';
|
|
12
|
+
/**
|
|
13
|
+
* Register all thought tools with the MCP server
|
|
14
|
+
*
|
|
15
|
+
* @param server - MCP server instance
|
|
16
|
+
*/
|
|
17
|
+
export function registerThoughtTools(server) {
|
|
18
|
+
const container = server.getContainer();
|
|
19
|
+
registerProcessThought(server, container);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Register process_thought tool
|
|
23
|
+
*/
|
|
24
|
+
function registerProcessThought(server, container) {
|
|
25
|
+
server.registerTool({
|
|
26
|
+
name: 'process_thought',
|
|
27
|
+
description: 'Record a structured thought step in a reasoning process with stage tracking.',
|
|
28
|
+
inputSchema: zodToJsonSchema(ProcessThoughtParamsSchema, { $refStrategy: 'none' }),
|
|
29
|
+
execute: async (args) => {
|
|
30
|
+
const params = ProcessThoughtParamsSchema.parse(args);
|
|
31
|
+
const { logger } = container;
|
|
32
|
+
logger.info({
|
|
33
|
+
thoughtNumber: params.thoughtNumber,
|
|
34
|
+
totalThoughts: params.totalThoughts,
|
|
35
|
+
stage: params.stage,
|
|
36
|
+
}, 'Processing thought');
|
|
37
|
+
const builder = new ProcessThoughtPromptBuilder();
|
|
38
|
+
const result = await builder.build(params.thought, params.thoughtNumber, params.totalThoughts, params.stage, params.nextThoughtNeeded, params.tags ?? undefined, params.axiomsUsed ?? undefined, params.assumptionsChallenged ?? undefined);
|
|
39
|
+
logger.info({
|
|
40
|
+
thoughtNumber: params.thoughtNumber,
|
|
41
|
+
nextNeeded: params.nextThoughtNeeded,
|
|
42
|
+
}, 'Thought processed');
|
|
43
|
+
return result;
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=thoughtTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thoughtTools.js","sourceRoot":"","sources":["../../../src/tools/thought/thoughtTools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EACL,0BAA0B,GAE3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,2BAA2B,GAC5B,MAAM,uCAAuC,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;IAExC,sBAAsB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,MAAiB,EAAE,SAA2B;IAC5E,MAAM,CAAC,YAAY,CAAC;QAClB,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,8EAA8E;QAC3F,WAAW,EAAE,eAAe,CAAC,0BAA0B,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAIhF;QACD,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;YAC/B,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAyB,CAAC;YAC9E,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;YAE7B,MAAM,CAAC,IAAI,CAAC;gBACV,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,EAAE,oBAAoB,CAAC,CAAC;YAEzB,MAAM,OAAO,GAAG,IAAI,2BAA2B,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAChC,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,IAAI,IAAI,SAAS,EACxB,MAAM,CAAC,UAAU,IAAI,SAAS,EAC9B,MAAM,CAAC,qBAAqB,IAAI,SAAS,CAC1C,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC;gBACV,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,UAAU,EAAE,MAAM,CAAC,iBAAiB;aACrC,EAAE,mBAAmB,CAAC,CAAC;YAExB,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/docs/API.md
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# API Reference
|
|
2
|
+
|
|
3
|
+
TaskFlow MCP exposes tools over MCP. This document summarizes the tool set at a high level.
|
|
4
|
+
|
|
5
|
+
## Task Planning
|
|
6
|
+
|
|
7
|
+
- `plan_task`: turn a goal into a structured plan
|
|
8
|
+
- `split_tasks`: split a plan into discrete tasks
|
|
9
|
+
- `analyze_task`: capture analysis state for a task
|
|
10
|
+
- `reflect_task`: record a reflection on a task
|
|
11
|
+
|
|
12
|
+
## Task Management
|
|
13
|
+
|
|
14
|
+
- `list_tasks`: list tasks by status
|
|
15
|
+
- `get_task_detail`: detailed view of a task
|
|
16
|
+
- `query_task`: search tasks
|
|
17
|
+
- `create_task`: create a new task
|
|
18
|
+
- `update_task`: update fields/status
|
|
19
|
+
- `delete_task`: remove a task
|
|
20
|
+
- `clear_all_tasks`: remove all tasks
|
|
21
|
+
|
|
22
|
+
## Workflow
|
|
23
|
+
|
|
24
|
+
- `execute_task`: mark a task in progress and capture execution notes
|
|
25
|
+
- `verify_task`: score and mark a task complete
|
|
26
|
+
|
|
27
|
+
## Research and Project
|
|
28
|
+
|
|
29
|
+
- `research_mode`: guided research with state tracking
|
|
30
|
+
- `process_thought`: record a reasoning step
|
|
31
|
+
- `init_project_rules`: create default project rules
|
|
32
|
+
- `get_server_info`: server status and counts
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
TaskFlow MCP is a local MCP server with a small, layered design.
|
|
4
|
+
|
|
5
|
+
```mermaid
|
|
6
|
+
flowchart TD
|
|
7
|
+
A[MCP Client] -->|STDIO JSON-RPC| B[MCP Server]
|
|
8
|
+
B --> C[Tools Layer]
|
|
9
|
+
C --> D[Data Layer]
|
|
10
|
+
C --> E[Prompt Templates]
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Layers
|
|
14
|
+
|
|
15
|
+
1. **Server**: MCP protocol handling and tool registration
|
|
16
|
+
2. **Tools**: business logic for task planning, workflow, and research
|
|
17
|
+
3. **Data**: task persistence and queries
|
|
18
|
+
4. **Prompts**: templates used by planning and research tools
|
|
19
|
+
|
|
20
|
+
## Data Model
|
|
21
|
+
|
|
22
|
+
Tasks are stored in a JSON document under the configured `DATA_DIR`. The schema is validated at runtime and includes fields for status, timestamps, dependencies, notes, and summaries.
|
|
23
|
+
|
|
24
|
+
```mermaid
|
|
25
|
+
classDiagram
|
|
26
|
+
class TaskDocument {
|
|
27
|
+
string version
|
|
28
|
+
TaskItem[] tasks
|
|
29
|
+
}
|
|
30
|
+
class TaskItem {
|
|
31
|
+
string id
|
|
32
|
+
string name
|
|
33
|
+
string description
|
|
34
|
+
string status
|
|
35
|
+
string createdAt
|
|
36
|
+
string updatedAt
|
|
37
|
+
string completedAt
|
|
38
|
+
}
|
|
39
|
+
TaskDocument "1" --> "*" TaskItem
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Transport
|
|
43
|
+
|
|
44
|
+
The server uses STDIO transport. Clients call `tools/list` to discover tools and `tools/call` to execute them.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Compatibility Report
|
|
2
|
+
|
|
3
|
+
This report summarizes final verification for TaskFlow MCP.
|
|
4
|
+
|
|
5
|
+
## Summary
|
|
6
|
+
|
|
7
|
+
- ✅ MCP JSON-RPC flow verified via integration tests
|
|
8
|
+
- ✅ All MCP tools list and execute correctly
|
|
9
|
+
- ✅ Changesets release workflow configured
|
|
10
|
+
- ✅ Package builds and runs from `dist`
|
|
11
|
+
- ✅ Performance benchmarks and tests documented
|
|
12
|
+
|
|
13
|
+
## Evidence
|
|
14
|
+
|
|
15
|
+
- Protocol and workflow coverage: `tests/integration/mcpProtocol.test.ts`
|
|
16
|
+
- Performance coverage: `tests/integration/performance.test.ts`
|
|
17
|
+
- Release workflow: `.github/workflows/release-workflow.yml`
|
|
18
|
+
- Changesets config: `.changeset/config.json`
|
|
19
|
+
- Build output: `dist/index.js`
|
|
20
|
+
|
|
21
|
+
## Latest Verification (2026-02-04)
|
|
22
|
+
|
|
23
|
+
- `pnpm test` passed (27 test files, 593 tests).
|
|
24
|
+
- `pnpm build` succeeded and templates copied to `dist/prompts/templates`.
|
|
25
|
+
|
|
26
|
+
## Notes
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Performance Guide
|
|
2
|
+
|
|
3
|
+
This document describes how to measure TaskFlow MCP performance, expected baselines, and how to interpret results. Performance will vary by machine, disk, and OS. Use these numbers as target SLOs, not absolute guarantees.
|
|
4
|
+
|
|
5
|
+
## What We Measure
|
|
6
|
+
|
|
7
|
+
- Task CRUD latency
|
|
8
|
+
- Search performance on 1,000+ tasks
|
|
9
|
+
- Template rendering speed
|
|
10
|
+
- JSON parse/serialize time
|
|
11
|
+
- Sustained load behavior
|
|
12
|
+
- Memory growth under repeated operations
|
|
13
|
+
|
|
14
|
+
## Benchmarking
|
|
15
|
+
|
|
16
|
+
Run the benchmark script after building:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
pnpm build
|
|
20
|
+
pnpm run benchmark
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The script creates a temporary dataset and prints timings for task creation, list operations, search, planning, and JSON parse/serialize.
|
|
24
|
+
|
|
25
|
+
## Integration Performance Tests
|
|
26
|
+
|
|
27
|
+
The integration test suite includes performance checks:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pnpm test tests/integration/performance.test.ts
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
These tests validate latency and sustained load characteristics against the targets below.
|
|
34
|
+
|
|
35
|
+
## Profiling
|
|
36
|
+
|
|
37
|
+
For deeper profiling, run Node with built-in profiling:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
node --prof dist/index.js
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
You can also profile the benchmark script:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
node --prof benchmarks/run-benchmarks.mjs
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The generated `isolate-*.log` can be inspected with `node --prof-process`.
|
|
50
|
+
|
|
51
|
+
## Target SLOs
|
|
52
|
+
|
|
53
|
+
These are the performance objectives for typical developer machines:
|
|
54
|
+
|
|
55
|
+
- Task operations: < 50ms for 1,000 tasks
|
|
56
|
+
- Search: < 100ms for 1,000 tasks
|
|
57
|
+
- Template rendering: < 10ms
|
|
58
|
+
- JSON parse/serialize: < 20ms for 1,000 tasks
|
|
59
|
+
- Memory: < 100MB during steady load
|
|
60
|
+
- Sustained load: < 100ms average list time on 500 tasks
|
|
61
|
+
|
|
62
|
+
## Notes
|
|
63
|
+
|
|
64
|
+
- Cold runs are slower due to disk caches and module initialization.
|
|
65
|
+
- Disk speed impacts CRUD and list performance the most.
|
|
66
|
+
- Use the benchmark output to compare improvements across releases.
|
package/package.json
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mcp-taskflow",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MCP server for workflow orchestration, planning, and structured development",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"engines": {
|
|
7
|
+
"node": ">=18.0.0"
|
|
8
|
+
},
|
|
9
|
+
"main": "dist/index.js",
|
|
10
|
+
"bin": {
|
|
11
|
+
"mcp-taskflow": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [
|
|
14
|
+
"mcp",
|
|
15
|
+
"model-context-protocol",
|
|
16
|
+
"task-management",
|
|
17
|
+
"research",
|
|
18
|
+
"ai-assistant"
|
|
19
|
+
],
|
|
20
|
+
"author": "Caleb German",
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
24
|
+
"dotenv": "^16.3.1",
|
|
25
|
+
"pino": "^8.21.0",
|
|
26
|
+
"pino-pretty": "^13.1.3",
|
|
27
|
+
"zod": "^3.22.4",
|
|
28
|
+
"zod-to-json-schema": "^3.22.4"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@jazzer.js/core": "^2.1.0",
|
|
32
|
+
"@types/node": "^20.19.30",
|
|
33
|
+
"@typescript-eslint/eslint-plugin": "^8.53.0",
|
|
34
|
+
"@typescript-eslint/parser": "^8.53.0",
|
|
35
|
+
"@vitest/coverage-v8": "^4.0.17",
|
|
36
|
+
"eslint": "^9.39.2",
|
|
37
|
+
"eslint-config-prettier": "^10.1.8",
|
|
38
|
+
"eslint-plugin-security": "^3.0.1",
|
|
39
|
+
"prettier": "^3.8.0",
|
|
40
|
+
"tsx": "^4.7.0",
|
|
41
|
+
"typescript": "^5.3.3",
|
|
42
|
+
"vitest": "^4.0.17",
|
|
43
|
+
"@changesets/cli": "^2.27.11",
|
|
44
|
+
"rimraf": "^6.0.1"
|
|
45
|
+
},
|
|
46
|
+
"files": [
|
|
47
|
+
"dist",
|
|
48
|
+
"README.md",
|
|
49
|
+
"LICENSE.md",
|
|
50
|
+
"CHANGELOG.md",
|
|
51
|
+
"docs"
|
|
52
|
+
],
|
|
53
|
+
"publishConfig": {
|
|
54
|
+
"access": "public"
|
|
55
|
+
},
|
|
56
|
+
"scripts": {
|
|
57
|
+
"build": "pnpm run clean && tsc",
|
|
58
|
+
"postbuild": "node scripts/copy-templates.mjs",
|
|
59
|
+
"dev": "tsx src/index.ts",
|
|
60
|
+
"test": "vitest run",
|
|
61
|
+
"test:watch": "vitest",
|
|
62
|
+
"test:coverage": "vitest run --coverage",
|
|
63
|
+
"audit": "pnpm audit --audit-level=moderate",
|
|
64
|
+
"type-check": "tsc --noEmit",
|
|
65
|
+
"lint": "eslint src/**/*.ts",
|
|
66
|
+
"lint:fix": "eslint src/**/*.ts --fix",
|
|
67
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
68
|
+
"format:check": "prettier --check \"src/**/*.ts\"",
|
|
69
|
+
"start": "node dist/index.js",
|
|
70
|
+
"benchmark": "node benchmarks/run-benchmarks.mjs",
|
|
71
|
+
"fuzz:pathResolver": "jazzer tests/security/fuzz/pathResolver.fuzz.mjs",
|
|
72
|
+
"clean": "pnpm rimraf dist",
|
|
73
|
+
"changeset": "changeset",
|
|
74
|
+
"changeset:version": "changeset version",
|
|
75
|
+
"check": "changeset status"
|
|
76
|
+
}
|
|
77
|
+
}
|