@langadventurellc/task-trellis-mcp 1.0.1 → 1.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/README.md +47 -67
- package/dist/__tests__/e2e/crud/createObject.e2e.test.js +64 -12
- package/dist/__tests__/e2e/crud/createObject.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/crud/listObjects.e2e.test.js +260 -90
- package/dist/__tests__/e2e/crud/listObjects.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/utils/extractObjectIds.d.ts +5 -0
- package/dist/__tests__/e2e/utils/extractObjectIds.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/extractObjectIds.js +12 -0
- package/dist/__tests__/e2e/utils/extractObjectIds.js.map +1 -0
- package/dist/__tests__/e2e/utils/index.d.ts +1 -0
- package/dist/__tests__/e2e/utils/index.d.ts.map +1 -1
- package/dist/__tests__/e2e/utils/index.js +3 -1
- package/dist/__tests__/e2e/utils/index.js.map +1 -1
- package/dist/__tests__/e2e/utils/mcpTestClient.d.ts +2 -1
- package/dist/__tests__/e2e/utils/mcpTestClient.d.ts.map +1 -1
- package/dist/__tests__/e2e/utils/mcpTestClient.js +14 -8
- package/dist/__tests__/e2e/utils/mcpTestClient.js.map +1 -1
- package/dist/__tests__/e2e/utils/parseListObjectsResponse.d.ts +3 -1
- package/dist/__tests__/e2e/utils/parseListObjectsResponse.d.ts.map +1 -1
- package/dist/__tests__/e2e/utils/parseListObjectsResponse.js +1 -0
- package/dist/__tests__/e2e/utils/parseListObjectsResponse.js.map +1 -1
- package/dist/__tests__/e2e/workflow/appendModifiedFiles.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/workflow/appendModifiedFiles.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/workflow/appendModifiedFiles.e2e.test.js +597 -0
- package/dist/__tests__/e2e/workflow/appendModifiedFiles.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/workflow/claimTask.e2e.test.js +189 -0
- package/dist/__tests__/e2e/workflow/claimTask.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/workflow/completeTask.e2e.test.js +446 -0
- package/dist/__tests__/e2e/workflow/completeTask.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/workflow/taskLifecycle.e2e.test.js +3 -7
- package/dist/__tests__/e2e/workflow/taskLifecycle.e2e.test.js.map +1 -1
- package/dist/configuration/ServerConfig.d.ts +1 -0
- package/dist/configuration/ServerConfig.d.ts.map +1 -1
- package/dist/models/TrellisObjectSummary.d.ts +16 -0
- package/dist/models/TrellisObjectSummary.d.ts.map +1 -0
- package/dist/models/TrellisObjectSummary.js +3 -0
- package/dist/models/TrellisObjectSummary.js.map +1 -0
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js.map +1 -1
- package/dist/repositories/local/__tests__/getObjectFilePath.test.js +9 -6
- package/dist/repositories/local/__tests__/getObjectFilePath.test.js.map +1 -1
- package/dist/repositories/local/__tests__/getObjects.test.js +40 -10
- package/dist/repositories/local/__tests__/getObjects.test.js.map +1 -1
- package/dist/repositories/local/getObjectFilePath.d.ts.map +1 -1
- package/dist/repositories/local/getObjectFilePath.js +8 -4
- package/dist/repositories/local/getObjectFilePath.js.map +1 -1
- package/dist/repositories/local/getObjects.d.ts.map +1 -1
- package/dist/repositories/local/getObjects.js +6 -1
- package/dist/repositories/local/getObjects.js.map +1 -1
- package/dist/server.js +23 -9
- package/dist/server.js.map +1 -1
- package/dist/services/TaskTrellisService.d.ts +87 -0
- package/dist/services/TaskTrellisService.d.ts.map +1 -0
- package/dist/services/TaskTrellisService.js +3 -0
- package/dist/services/TaskTrellisService.js.map +1 -0
- package/dist/services/local/LocalTaskTrellisService.d.ts +61 -0
- package/dist/services/local/LocalTaskTrellisService.d.ts.map +1 -0
- package/dist/services/local/LocalTaskTrellisService.js +77 -0
- package/dist/services/local/LocalTaskTrellisService.js.map +1 -0
- package/dist/services/local/__tests__/appendAffectedFiles.test.d.ts +2 -0
- package/dist/services/local/__tests__/appendAffectedFiles.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/appendAffectedFiles.test.js +202 -0
- package/dist/services/local/__tests__/appendAffectedFiles.test.js.map +1 -0
- package/dist/services/local/__tests__/appendModifiedFiles.test.d.ts +2 -0
- package/dist/services/local/__tests__/appendModifiedFiles.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/appendModifiedFiles.test.js +161 -0
- package/dist/services/local/__tests__/appendModifiedFiles.test.js.map +1 -0
- package/dist/services/local/__tests__/appendObjectLog.test.d.ts +2 -0
- package/dist/services/local/__tests__/appendObjectLog.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/appendObjectLog.test.js +104 -0
- package/dist/services/local/__tests__/appendObjectLog.test.js.map +1 -0
- package/dist/services/local/__tests__/claimTask.test.d.ts +2 -0
- package/dist/services/local/__tests__/claimTask.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/claimTask.test.js +463 -0
- package/dist/services/local/__tests__/claimTask.test.js.map +1 -0
- package/dist/services/local/__tests__/completeTask.test.d.ts +2 -0
- package/dist/services/local/__tests__/completeTask.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/completeTask.test.js +468 -0
- package/dist/services/local/__tests__/completeTask.test.js.map +1 -0
- package/dist/services/local/__tests__/createObject.test.d.ts +2 -0
- package/dist/services/local/__tests__/createObject.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/createObject.test.js +332 -0
- package/dist/services/local/__tests__/createObject.test.js.map +1 -0
- package/dist/services/local/__tests__/listObjects.test.d.ts +2 -0
- package/dist/services/local/__tests__/listObjects.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/listObjects.test.js +226 -0
- package/dist/services/local/__tests__/listObjects.test.js.map +1 -0
- package/dist/services/local/__tests__/pruneClosed.test.d.ts +2 -0
- package/dist/services/local/__tests__/pruneClosed.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/pruneClosed.test.js +213 -0
- package/dist/services/local/__tests__/pruneClosed.test.js.map +1 -0
- package/dist/services/local/__tests__/replaceObjectBodyRegex.test.d.ts +2 -0
- package/dist/services/local/__tests__/replaceObjectBodyRegex.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/replaceObjectBodyRegex.test.js +283 -0
- package/dist/services/local/__tests__/replaceObjectBodyRegex.test.js.map +1 -0
- package/dist/services/local/__tests__/updateObject.test.d.ts +2 -0
- package/dist/services/local/__tests__/updateObject.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/updateObject.test.js +314 -0
- package/dist/services/local/__tests__/updateObject.test.js.map +1 -0
- package/dist/services/local/appendAffectedFiles.d.ts +12 -0
- package/dist/services/local/appendAffectedFiles.d.ts.map +1 -0
- package/dist/services/local/appendAffectedFiles.js +34 -0
- package/dist/services/local/appendAffectedFiles.js.map +1 -0
- package/dist/services/local/appendModifiedFiles.d.ts +15 -0
- package/dist/services/local/appendModifiedFiles.d.ts.map +1 -0
- package/dist/services/local/appendModifiedFiles.js +39 -0
- package/dist/services/local/appendModifiedFiles.js.map +1 -0
- package/dist/services/local/appendObjectLog.d.ts +8 -0
- package/dist/services/local/appendObjectLog.d.ts.map +1 -0
- package/dist/services/local/appendObjectLog.js +45 -0
- package/dist/services/local/appendObjectLog.js.map +1 -0
- package/dist/services/local/claimTask.d.ts +8 -0
- package/dist/services/local/claimTask.d.ts.map +1 -0
- package/dist/services/local/claimTask.js +118 -0
- package/dist/services/local/claimTask.js.map +1 -0
- package/dist/services/local/completeTask.d.ts +9 -0
- package/dist/services/local/completeTask.d.ts.map +1 -0
- package/dist/services/local/completeTask.js +74 -0
- package/dist/services/local/completeTask.js.map +1 -0
- package/dist/services/local/createObject.d.ts +9 -0
- package/dist/services/local/createObject.d.ts.map +1 -0
- package/dist/services/local/createObject.js +44 -0
- package/dist/services/local/createObject.js.map +1 -0
- package/dist/services/local/listObjects.d.ts +9 -0
- package/dist/services/local/listObjects.d.ts.map +1 -0
- package/dist/services/local/listObjects.js +43 -0
- package/dist/services/local/listObjects.js.map +1 -0
- package/dist/services/local/pruneClosed.d.ts +8 -0
- package/dist/services/local/pruneClosed.d.ts.map +1 -0
- package/dist/services/local/pruneClosed.js +55 -0
- package/dist/services/local/pruneClosed.js.map +1 -0
- package/dist/services/local/replaceObjectBodyRegex.d.ts +8 -0
- package/dist/services/local/replaceObjectBodyRegex.d.ts.map +1 -0
- package/dist/services/local/replaceObjectBodyRegex.js +85 -0
- package/dist/services/local/replaceObjectBodyRegex.js.map +1 -0
- package/dist/services/local/updateObject.d.ts +9 -0
- package/dist/services/local/updateObject.d.ts.map +1 -0
- package/dist/services/local/updateObject.js +53 -0
- package/dist/services/local/updateObject.js.map +1 -0
- package/dist/tools/__tests__/appendModifiedFilesTool.test.d.ts +2 -0
- package/dist/tools/__tests__/appendModifiedFilesTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/appendModifiedFilesTool.test.js +177 -0
- package/dist/tools/__tests__/appendModifiedFilesTool.test.js.map +1 -0
- package/dist/tools/__tests__/appendObjectLogTool.test.js +33 -101
- package/dist/tools/__tests__/appendObjectLogTool.test.js.map +1 -1
- package/dist/tools/__tests__/claimTaskTool.test.js +98 -311
- package/dist/tools/__tests__/claimTaskTool.test.js.map +1 -1
- package/dist/tools/__tests__/completeTaskTool.test.js +134 -184
- package/dist/tools/__tests__/completeTaskTool.test.js.map +1 -1
- package/dist/tools/__tests__/createObjectTool.test.js +61 -325
- package/dist/tools/__tests__/createObjectTool.test.js.map +1 -1
- package/dist/tools/__tests__/listObjectsTool.test.js +70 -109
- package/dist/tools/__tests__/listObjectsTool.test.js.map +1 -1
- package/dist/tools/__tests__/pruneClosedTool.test.js +87 -146
- package/dist/tools/__tests__/pruneClosedTool.test.js.map +1 -1
- package/dist/tools/__tests__/replaceObjectBodyRegexTool.test.js +56 -225
- package/dist/tools/__tests__/replaceObjectBodyRegexTool.test.js.map +1 -1
- package/dist/tools/__tests__/updateObjectTool.test.js +48 -166
- package/dist/tools/__tests__/updateObjectTool.test.js.map +1 -1
- package/dist/tools/appendModifiedFilesTool.d.ts +30 -0
- package/dist/tools/appendModifiedFilesTool.d.ts.map +1 -0
- package/dist/tools/appendModifiedFilesTool.js +55 -0
- package/dist/tools/appendModifiedFilesTool.js.map +1 -0
- package/dist/tools/appendObjectLogTool.d.ts +4 -3
- package/dist/tools/appendObjectLogTool.d.ts.map +1 -1
- package/dist/tools/appendObjectLogTool.js +2 -40
- package/dist/tools/appendObjectLogTool.js.map +1 -1
- package/dist/tools/claimTaskTool.d.ts +4 -3
- package/dist/tools/claimTaskTool.d.ts.map +1 -1
- package/dist/tools/claimTaskTool.js +2 -80
- package/dist/tools/claimTaskTool.js.map +1 -1
- package/dist/tools/completeTaskTool.d.ts +5 -3
- package/dist/tools/completeTaskTool.d.ts.map +1 -1
- package/dist/tools/completeTaskTool.js +3 -29
- package/dist/tools/completeTaskTool.js.map +1 -1
- package/dist/tools/createObjectTool.d.ts +7 -6
- package/dist/tools/createObjectTool.d.ts.map +1 -1
- package/dist/tools/createObjectTool.js +11 -44
- package/dist/tools/createObjectTool.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/listObjectsTool.d.ts +5 -4
- package/dist/tools/listObjectsTool.d.ts.map +1 -1
- package/dist/tools/listObjectsTool.js +5 -13
- package/dist/tools/listObjectsTool.js.map +1 -1
- package/dist/tools/pruneClosedTool.d.ts +4 -3
- package/dist/tools/pruneClosedTool.d.ts.map +1 -1
- package/dist/tools/pruneClosedTool.js +2 -51
- package/dist/tools/pruneClosedTool.js.map +1 -1
- package/dist/tools/replaceObjectBodyRegexTool.d.ts +4 -3
- package/dist/tools/replaceObjectBodyRegexTool.d.ts.map +1 -1
- package/dist/tools/replaceObjectBodyRegexTool.js +2 -80
- package/dist/tools/replaceObjectBodyRegexTool.js.map +1 -1
- package/dist/tools/updateObjectTool.d.ts +5 -4
- package/dist/tools/updateObjectTool.d.ts.map +1 -1
- package/dist/tools/updateObjectTool.js +3 -49
- package/dist/tools/updateObjectTool.js.map +1 -1
- package/dist/validation/__tests__/validateParentType.test.js +5 -5
- package/dist/validation/__tests__/validateParentType.test.js.map +1 -1
- package/dist/validation/validateParentType.d.ts +1 -1
- package/dist/validation/validateParentType.d.ts.map +1 -1
- package/dist/validation/validateParentType.js +2 -5
- package/dist/validation/validateParentType.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Repository } from "../repositories";
|
|
2
|
+
import { TaskTrellisService } from "../services/TaskTrellisService";
|
|
2
3
|
export declare const updateObjectTool: {
|
|
3
4
|
readonly name: "update_object";
|
|
4
|
-
readonly description: "Updates an existing object in the task trellis system\n\nUse this tool to modify properties of existing objects such as changing status, priority, prerequisites, or content. Essential for managing work item lifecycle and maintaining project state.\n\nAvailable status values:\n- 'draft': Initial state for new objects\n- 'open': Ready to begin work\n- 'in-progress': Currently being worked on\n- 'done': Completed successfully\n- 'wont-do': Cancelled or decided against\n\nAvailable priority values:\n- 'high': Critical or urgent work\n- 'medium': Standard priority\n- 'low': Nice-to-have or future work\n\nUpdatable properties:\n- 'status': Progress state (follows workflow: draft → open → in-progress → done)\n- 'priority': Importance level (high, medium, low)\n- 'prerequisites': Dependency relationships (add/remove prerequisite objects)\n- 'body': Detailed description or content of the work item\n- 'force': Bypass certain validation checks when necessary\n\nCommon update patterns:\n- Mark task as ready: status='open'\n- Start working: status='in-progress'\n- Change priority: priority='high'\n- Add dependencies: prerequisites=[...existing, 'new-prereq-id']\n- Update description: body='detailed work description'\n- Complete work: status='done'\n- Cancel work: status='wont-do'\n\nThe update maintains object integrity by validating relationships and preserving audit trail. Use 'force=true' only when bypassing standard validation is necessary for administrative operations.\n\nUpdates automatically refresh the 'updated' timestamp while preserving creation metadata and change history.";
|
|
5
|
+
readonly description: "Updates an existing object in the task trellis system\n\nUse this tool to modify properties of existing objects such as changing status, priority, prerequisites, or content. Essential for managing work item lifecycle and maintaining project state.\n\nAvailable status values:\n- 'draft': Initial state for new objects\n- 'open': Ready to begin work (default for new objects)\n- 'in-progress': Currently being worked on\n- 'done': Completed successfully\n- 'wont-do': Cancelled or decided against\n\nAvailable priority values:\n- 'high': Critical or urgent work\n- 'medium': Standard priority\n- 'low': Nice-to-have or future work\n\nUpdatable properties:\n- 'status': Progress state (follows workflow: draft → open → in-progress → done)\n- 'priority': Importance level (high, medium, low)\n- 'prerequisites': Dependency relationships (add/remove prerequisite objects)\n- 'body': Detailed description or content of the work item\n- 'force': Bypass certain validation checks when necessary\n\nCommon update patterns:\n- Mark task as ready: status='open'\n- Start working: status='in-progress'\n- Change priority: priority='high'\n- Add dependencies: prerequisites=[...existing, 'new-prereq-id']\n- Update description: body='detailed work description'\n- Complete work: status='done'\n- Cancel work: status='wont-do'\n\nThe update maintains object integrity by validating relationships and preserving audit trail. Use 'force=true' only when bypassing standard validation is necessary for administrative operations.\n\nUpdates automatically refresh the 'updated' timestamp while preserving creation metadata and change history.";
|
|
5
6
|
readonly inputSchema: {
|
|
6
7
|
readonly type: "object";
|
|
7
8
|
readonly properties: {
|
|
@@ -37,10 +38,10 @@ export declare const updateObjectTool: {
|
|
|
37
38
|
readonly required: readonly ["id"];
|
|
38
39
|
};
|
|
39
40
|
};
|
|
40
|
-
export declare function handleUpdateObject(repository: Repository, args: unknown): Promise<{
|
|
41
|
-
content: {
|
|
41
|
+
export declare function handleUpdateObject(service: TaskTrellisService, repository: Repository, args: unknown): Promise<{
|
|
42
|
+
content: Array<{
|
|
42
43
|
type: string;
|
|
43
44
|
text: string;
|
|
44
|
-
}
|
|
45
|
+
}>;
|
|
45
46
|
}>;
|
|
46
47
|
//# sourceMappingURL=updateObjectTool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateObjectTool.d.ts","sourceRoot":"","sources":["../../src/tools/updateObjectTool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"updateObjectTool.d.ts","sourceRoot":"","sources":["../../src/tools/updateObjectTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuEnB,CAAC;AAEX,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,kBAAkB,EAC3B,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,OAAO;;;;;GA2Bd"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.updateObjectTool = void 0;
|
|
4
4
|
exports.handleUpdateObject = handleUpdateObject;
|
|
5
|
-
const validateStatusTransition_1 = require("../validation/validateStatusTransition");
|
|
6
5
|
exports.updateObjectTool = {
|
|
7
6
|
name: "update_object",
|
|
8
7
|
description: `Updates an existing object in the task trellis system
|
|
@@ -11,7 +10,7 @@ Use this tool to modify properties of existing objects such as changing status,
|
|
|
11
10
|
|
|
12
11
|
Available status values:
|
|
13
12
|
- 'draft': Initial state for new objects
|
|
14
|
-
- 'open': Ready to begin work
|
|
13
|
+
- 'open': Ready to begin work (default for new objects)
|
|
15
14
|
- 'in-progress': Currently being worked on
|
|
16
15
|
- 'done': Completed successfully
|
|
17
16
|
- 'wont-do': Cancelled or decided against
|
|
@@ -75,53 +74,8 @@ Updates automatically refresh the 'updated' timestamp while preserving creation
|
|
|
75
74
|
required: ["id"],
|
|
76
75
|
},
|
|
77
76
|
};
|
|
78
|
-
async function handleUpdateObject(repository, args) {
|
|
77
|
+
async function handleUpdateObject(service, repository, args) {
|
|
79
78
|
const { id, priority, prerequisites, body, status, force = false, } = args;
|
|
80
|
-
|
|
81
|
-
// Load the existing object
|
|
82
|
-
const existingObject = await repository.getObjectById(id);
|
|
83
|
-
if (!existingObject) {
|
|
84
|
-
return {
|
|
85
|
-
content: [
|
|
86
|
-
{
|
|
87
|
-
type: "text",
|
|
88
|
-
text: `Error: Object with ID '${id}' not found`,
|
|
89
|
-
},
|
|
90
|
-
],
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
// Create updated object with new properties, ensuring proper typing
|
|
94
|
-
const updatedObject = {
|
|
95
|
-
...existingObject,
|
|
96
|
-
...(priority && { priority: priority }),
|
|
97
|
-
...(prerequisites && { prerequisites }),
|
|
98
|
-
...(body && { body }),
|
|
99
|
-
...(status && { status: status }),
|
|
100
|
-
};
|
|
101
|
-
// Validate status transition
|
|
102
|
-
if (status && !force) {
|
|
103
|
-
await (0, validateStatusTransition_1.validateStatusTransition)(updatedObject, repository);
|
|
104
|
-
}
|
|
105
|
-
// Save the updated object
|
|
106
|
-
await repository.saveObject(updatedObject);
|
|
107
|
-
return {
|
|
108
|
-
content: [
|
|
109
|
-
{
|
|
110
|
-
type: "text",
|
|
111
|
-
text: `Successfully updated object: ${JSON.stringify(updatedObject, null, 2)}`,
|
|
112
|
-
},
|
|
113
|
-
],
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
catch (error) {
|
|
117
|
-
return {
|
|
118
|
-
content: [
|
|
119
|
-
{
|
|
120
|
-
type: "text",
|
|
121
|
-
text: `Error updating object: ${error instanceof Error ? error.message : String(error)}`,
|
|
122
|
-
},
|
|
123
|
-
],
|
|
124
|
-
};
|
|
125
|
-
}
|
|
79
|
+
return service.updateObject(repository, id, priority, prerequisites, body, status, force);
|
|
126
80
|
}
|
|
127
81
|
//# sourceMappingURL=updateObjectTool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateObjectTool.js","sourceRoot":"","sources":["../../src/tools/updateObjectTool.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"updateObjectTool.js","sourceRoot":"","sources":["../../src/tools/updateObjectTool.ts"],"names":[],"mappings":";;;AA6EA,gDA8BC;AAvGY,QAAA,gBAAgB,GAAG;IAC9B,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6GAkC8F;IAC3G,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,EAAE,EAAE;gBACF,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4BAA4B;aAC1C;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,2BAA2B;aACzC;YACD,aAAa,EAAE;gBACb,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;iBACf;gBACD,WAAW,EAAE,6CAA6C;aAC3D;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uCAAuC;aACrD;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC;aAC/C;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,uCAAuC;gBACpD,OAAO,EAAE,KAAK;aACf;SACF;QACD,QAAQ,EAAE,CAAC,IAAI,CAAC;KACjB;CACO,CAAC;AAEJ,KAAK,UAAU,kBAAkB,CACtC,OAA2B,EAC3B,UAAsB,EACtB,IAAa;IAEb,MAAM,EACJ,EAAE,EACF,QAAQ,EACR,aAAa,EACb,IAAI,EACJ,MAAM,EACN,KAAK,GAAG,KAAK,GACd,GAAG,IAOH,CAAC;IAEF,OAAO,OAAO,CAAC,YAAY,CACzB,UAAU,EACV,EAAE,EACF,QAAiC,EACjC,aAAa,EACb,IAAI,EACJ,MAA6B,EAC7B,KAAK,CACN,CAAC;AACJ,CAAC"}
|
|
@@ -28,18 +28,18 @@ describe("validateParentType", () => {
|
|
|
28
28
|
});
|
|
29
29
|
});
|
|
30
30
|
describe("Epics", () => {
|
|
31
|
-
it("should
|
|
31
|
+
it("should allow epics with project parent", () => {
|
|
32
32
|
expect(() => {
|
|
33
33
|
(0, validateParentType_1.validateParentType)(TrellisObjectType_1.TrellisObjectType.EPIC, "P-project");
|
|
34
34
|
}).not.toThrow();
|
|
35
35
|
});
|
|
36
|
-
it("should
|
|
36
|
+
it("should allow epics with no parent", () => {
|
|
37
37
|
expect(() => {
|
|
38
38
|
(0, validateParentType_1.validateParentType)(TrellisObjectType_1.TrellisObjectType.EPIC, null);
|
|
39
|
-
}).toThrow(
|
|
39
|
+
}).not.toThrow();
|
|
40
40
|
expect(() => {
|
|
41
41
|
(0, validateParentType_1.validateParentType)(TrellisObjectType_1.TrellisObjectType.EPIC, undefined);
|
|
42
|
-
}).toThrow(
|
|
42
|
+
}).not.toThrow();
|
|
43
43
|
});
|
|
44
44
|
it("should reject epics with non-project parents", () => {
|
|
45
45
|
expect(() => {
|
|
@@ -118,7 +118,7 @@ describe("validateParentType", () => {
|
|
|
118
118
|
}).not.toThrow();
|
|
119
119
|
expect(() => {
|
|
120
120
|
(0, validateParentType_1.validateParentType)(TrellisObjectType_1.TrellisObjectType.EPIC, "");
|
|
121
|
-
}).toThrow(
|
|
121
|
+
}).not.toThrow();
|
|
122
122
|
});
|
|
123
123
|
});
|
|
124
124
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateParentType.test.js","sourceRoot":"","sources":["../../../src/validation/__tests__/validateParentType.test.ts"],"names":[],"mappings":";;AAAA,sEAAmE;AACnE,8DAA2D;AAE3D,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,CAAC,GAAG,EAAE;gBACV,IAAA,uCAAkB,EAAC,qCAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAEjB,MAAM,CAAC,GAAG,EAAE;gBACV,IAAA,uCAAkB,EAAC,qCAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,CAAC,GAAG,EAAE;gBACV,IAAA,uCAAkB,EAAC,qCAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;YAE3C,MAAM,CAAC,GAAG,EAAE;gBACV,IAAA,uCAAkB,EAAC,qCAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;YAE3C,MAAM,CAAC,GAAG,EAAE;gBACV,IAAA,uCAAkB,EAAC,qCAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;YAE3C,MAAM,CAAC,GAAG,EAAE;gBACV,IAAA,uCAAkB,EAAC,qCAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,EAAE,CAAC
|
|
1
|
+
{"version":3,"file":"validateParentType.test.js","sourceRoot":"","sources":["../../../src/validation/__tests__/validateParentType.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { TrellisObjectType } from "../models/TrellisObjectType.js";
|
|
|
4
4
|
*
|
|
5
5
|
* Business rules:
|
|
6
6
|
* - Projects cannot have parents
|
|
7
|
-
* - Epics
|
|
7
|
+
* - Epics can either have a project as a parent or have no parent
|
|
8
8
|
* - Features can either have an epic as a parent or have no parent
|
|
9
9
|
* - Tasks can have a feature as a parent or have no parent
|
|
10
10
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateParentType.d.ts","sourceRoot":"","sources":["../../src/validation/validateParentType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,iBAAiB,EAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,IAAI,
|
|
1
|
+
{"version":3,"file":"validateParentType.d.ts","sourceRoot":"","sources":["../../src/validation/validateParentType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,iBAAiB,EAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,IAAI,CA8BN"}
|
|
@@ -8,7 +8,7 @@ const inferObjectType_js_1 = require("../utils/inferObjectType.js");
|
|
|
8
8
|
*
|
|
9
9
|
* Business rules:
|
|
10
10
|
* - Projects cannot have parents
|
|
11
|
-
* - Epics
|
|
11
|
+
* - Epics can either have a project as a parent or have no parent
|
|
12
12
|
* - Features can either have an epic as a parent or have no parent
|
|
13
13
|
* - Tasks can have a feature as a parent or have no parent
|
|
14
14
|
*
|
|
@@ -18,10 +18,7 @@ const inferObjectType_js_1 = require("../utils/inferObjectType.js");
|
|
|
18
18
|
*/
|
|
19
19
|
function validateParentType(objectType, parentId) {
|
|
20
20
|
if (!parentId) {
|
|
21
|
-
// No parent -
|
|
22
|
-
if (objectType === TrellisObjectType_js_1.TrellisObjectType.EPIC) {
|
|
23
|
-
throw new Error("Epics must have a project as a parent");
|
|
24
|
-
}
|
|
21
|
+
// No parent - allowed for projects, epics, features, and tasks
|
|
25
22
|
return;
|
|
26
23
|
}
|
|
27
24
|
const parentType = (0, inferObjectType_js_1.inferObjectType)(parentId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateParentType.js","sourceRoot":"","sources":["../../src/validation/validateParentType.ts"],"names":[],"mappings":";;AAgBA,
|
|
1
|
+
{"version":3,"file":"validateParentType.js","sourceRoot":"","sources":["../../src/validation/validateParentType.ts"],"names":[],"mappings":";;AAgBA,gDAiCC;AAjDD,yEAAmE;AACnE,oEAA8D;AAE9D;;;;;;;;;;;;GAYG;AACH,SAAgB,kBAAkB,CAChC,UAA6B,EAC7B,QAAmC;IAEnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,+DAA+D;QAC/D,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,oCAAe,EAAC,QAAQ,CAAC,CAAC;IAE7C,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,wCAAiB,CAAC,OAAO;YAC5B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAElD,KAAK,wCAAiB,CAAC,IAAI;YACzB,IAAI,UAAU,KAAK,wCAAiB,CAAC,OAAO,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC3D,CAAC;YACD,MAAM;QAER,KAAK,wCAAiB,CAAC,OAAO;YAC5B,IAAI,UAAU,KAAK,wCAAiB,CAAC,IAAI,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YACD,MAAM;QAER,KAAK,wCAAiB,CAAC,IAAI;YACzB,IAAI,UAAU,KAAK,wCAAiB,CAAC,OAAO,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM;IACV,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@langadventurellc/task-trellis-mcp",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "An MCP server that helps AI coding agents break down projects into tasks and track their progress.",
|
|
5
5
|
"homepage": "https://github.com/langadventurellc/task-trellis-mcp#readme",
|
|
6
6
|
"bugs": {
|