@langadventurellc/task-trellis-mcp 0.1.0-rc.3 → 1.0.0-rc.2
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 +60 -6
- package/dist/__tests__/e2e/configuration/activation.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/configuration/activation.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/configuration/activation.e2e.test.js +130 -0
- package/dist/__tests__/e2e/configuration/activation.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/configuration/commandLineArgs.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/configuration/commandLineArgs.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/configuration/commandLineArgs.e2e.test.js +125 -0
- package/dist/__tests__/e2e/configuration/commandLineArgs.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/configuration/directorySetup.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/configuration/directorySetup.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/configuration/directorySetup.e2e.test.js +262 -0
- package/dist/__tests__/e2e/configuration/directorySetup.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/configuration/invalidConfig.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/configuration/invalidConfig.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/configuration/invalidConfig.e2e.test.js +243 -0
- package/dist/__tests__/e2e/configuration/invalidConfig.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/configuration/preActivation.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/configuration/preActivation.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/configuration/preActivation.e2e.test.js +123 -0
- package/dist/__tests__/e2e/configuration/preActivation.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/crud/createObject.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/crud/createObject.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/crud/createObject.e2e.test.js +376 -0
- package/dist/__tests__/e2e/crud/createObject.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/crud/deleteObject.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/crud/deleteObject.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/crud/deleteObject.e2e.test.js +391 -0
- package/dist/__tests__/e2e/crud/deleteObject.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/crud/fileValidation.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/crud/fileValidation.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/crud/fileValidation.e2e.test.js +409 -0
- package/dist/__tests__/e2e/crud/fileValidation.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/crud/getObject.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/crud/getObject.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/crud/getObject.e2e.test.js +447 -0
- package/dist/__tests__/e2e/crud/getObject.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/crud/listObjects.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/crud/listObjects.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/crud/listObjects.e2e.test.js +593 -0
- package/dist/__tests__/e2e/crud/listObjects.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/crud/replaceObjectBodyRegex.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/crud/replaceObjectBodyRegex.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/crud/replaceObjectBodyRegex.e2e.test.js +693 -0
- package/dist/__tests__/e2e/crud/replaceObjectBodyRegex.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/crud/updateObject.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/crud/updateObject.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/crud/updateObject.e2e.test.js +662 -0
- package/dist/__tests__/e2e/crud/updateObject.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/infrastructure/client.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/infrastructure/client.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/infrastructure/client.e2e.test.js +68 -0
- package/dist/__tests__/e2e/infrastructure/client.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/infrastructure/server.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/infrastructure/server.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/infrastructure/server.e2e.test.js +37 -0
- package/dist/__tests__/e2e/infrastructure/server.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/utils/HierarchyOptions.d.ts +7 -0
- package/dist/__tests__/e2e/utils/HierarchyOptions.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/HierarchyOptions.js +3 -0
- package/dist/__tests__/e2e/utils/HierarchyOptions.js.map +1 -0
- package/dist/__tests__/e2e/utils/ObjectData.d.ts +17 -0
- package/dist/__tests__/e2e/utils/ObjectData.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/ObjectData.js +3 -0
- package/dist/__tests__/e2e/utils/ObjectData.js.map +1 -0
- package/dist/__tests__/e2e/utils/cleanup.d.ts +10 -0
- package/dist/__tests__/e2e/utils/cleanup.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/cleanup.js +99 -0
- package/dist/__tests__/e2e/utils/cleanup.js.map +1 -0
- package/dist/__tests__/e2e/utils/createObjectContent.d.ts +6 -0
- package/dist/__tests__/e2e/utils/createObjectContent.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/createObjectContent.js +34 -0
- package/dist/__tests__/e2e/utils/createObjectContent.js.map +1 -0
- package/dist/__tests__/e2e/utils/createObjectFile.d.ts +6 -0
- package/dist/__tests__/e2e/utils/createObjectFile.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/createObjectFile.js +88 -0
- package/dist/__tests__/e2e/utils/createObjectFile.js.map +1 -0
- package/dist/__tests__/e2e/utils/fileExists.d.ts +5 -0
- package/dist/__tests__/e2e/utils/fileExists.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/fileExists.js +52 -0
- package/dist/__tests__/e2e/utils/fileExists.js.map +1 -0
- package/dist/__tests__/e2e/utils/folderExists.d.ts +5 -0
- package/dist/__tests__/e2e/utils/folderExists.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/folderExists.js +52 -0
- package/dist/__tests__/e2e/utils/folderExists.js.map +1 -0
- package/dist/__tests__/e2e/utils/index.d.ts +15 -0
- package/dist/__tests__/e2e/utils/index.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/index.js +32 -0
- package/dist/__tests__/e2e/utils/index.js.map +1 -0
- package/dist/__tests__/e2e/utils/mcpTestClient.d.ts +13 -0
- package/dist/__tests__/e2e/utils/mcpTestClient.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/mcpTestClient.js +79 -0
- package/dist/__tests__/e2e/utils/mcpTestClient.js.map +1 -0
- package/dist/__tests__/e2e/utils/parseGetObjectResponse.d.ts +5 -0
- package/dist/__tests__/e2e/utils/parseGetObjectResponse.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/parseGetObjectResponse.js +15 -0
- package/dist/__tests__/e2e/utils/parseGetObjectResponse.js.map +1 -0
- package/dist/__tests__/e2e/utils/parseListObjectsResponse.d.ts +5 -0
- package/dist/__tests__/e2e/utils/parseListObjectsResponse.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/parseListObjectsResponse.js +15 -0
- package/dist/__tests__/e2e/utils/parseListObjectsResponse.js.map +1 -0
- package/dist/__tests__/e2e/utils/parseReplaceObjectBodyRegexResponse.d.ts +10 -0
- package/dist/__tests__/e2e/utils/parseReplaceObjectBodyRegexResponse.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/parseReplaceObjectBodyRegexResponse.js +40 -0
- package/dist/__tests__/e2e/utils/parseReplaceObjectBodyRegexResponse.js.map +1 -0
- package/dist/__tests__/e2e/utils/parseUpdateObjectResponse.d.ts +5 -0
- package/dist/__tests__/e2e/utils/parseUpdateObjectResponse.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/parseUpdateObjectResponse.js +15 -0
- package/dist/__tests__/e2e/utils/parseUpdateObjectResponse.js.map +1 -0
- package/dist/__tests__/e2e/utils/pathExists.d.ts +5 -0
- package/dist/__tests__/e2e/utils/pathExists.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/pathExists.js +50 -0
- package/dist/__tests__/e2e/utils/pathExists.js.map +1 -0
- package/dist/__tests__/e2e/utils/readObjectFile.d.ts +10 -0
- package/dist/__tests__/e2e/utils/readObjectFile.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/readObjectFile.js +54 -0
- package/dist/__tests__/e2e/utils/readObjectFile.js.map +1 -0
- package/dist/__tests__/e2e/utils/serverProcess.d.ts +11 -0
- package/dist/__tests__/e2e/utils/serverProcess.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/serverProcess.js +119 -0
- package/dist/__tests__/e2e/utils/serverProcess.js.map +1 -0
- package/dist/__tests__/e2e/utils/testEnvironment.d.ts +9 -0
- package/dist/__tests__/e2e/utils/testEnvironment.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/testEnvironment.js +74 -0
- package/dist/__tests__/e2e/utils/testEnvironment.js.map +1 -0
- package/dist/__tests__/e2e/workflow/appendLog.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/workflow/appendLog.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/workflow/appendLog.e2e.test.js +175 -0
- package/dist/__tests__/e2e/workflow/appendLog.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/workflow/claimTask.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/workflow/claimTask.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/workflow/claimTask.e2e.test.js +154 -0
- package/dist/__tests__/e2e/workflow/claimTask.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/workflow/completeTask.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/workflow/completeTask.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/workflow/completeTask.e2e.test.js +129 -0
- package/dist/__tests__/e2e/workflow/completeTask.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/workflow/prerequisites.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/workflow/prerequisites.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/workflow/prerequisites.e2e.test.js +547 -0
- package/dist/__tests__/e2e/workflow/prerequisites.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/workflow/pruneClosed.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/workflow/pruneClosed.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/workflow/pruneClosed.e2e.test.js +352 -0
- package/dist/__tests__/e2e/workflow/pruneClosed.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/workflow/taskLifecycle.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/workflow/taskLifecycle.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/workflow/taskLifecycle.e2e.test.js +385 -0
- package/dist/__tests__/e2e/workflow/taskLifecycle.e2e.test.js.map +1 -0
- package/dist/models/TrellisObject.d.ts +2 -0
- package/dist/models/TrellisObject.d.ts.map +1 -1
- package/dist/models/__tests__/isClaimable.test.js +8 -0
- package/dist/models/__tests__/isClaimable.test.js.map +1 -1
- package/dist/models/__tests__/isClosed.test.js +6 -0
- package/dist/models/__tests__/isClosed.test.js.map +1 -1
- package/dist/models/__tests__/isOpen.test.js +6 -0
- package/dist/models/__tests__/isOpen.test.js.map +1 -1
- package/dist/repositories/local/__tests__/getChildrenByFilePath.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/getChildrenByFilePath.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/getChildrenByFilePath.test.js +118 -0
- package/dist/repositories/local/__tests__/getChildrenByFilePath.test.js.map +1 -0
- package/dist/repositories/local/__tests__/getObjectByFilePath.test.js +13 -1
- package/dist/repositories/local/__tests__/getObjectByFilePath.test.js.map +1 -1
- package/dist/repositories/local/__tests__/getObjectById.test.js +2 -0
- package/dist/repositories/local/__tests__/getObjectById.test.js.map +1 -1
- package/dist/repositories/local/__tests__/getObjectFilePath.test.js +2 -0
- package/dist/repositories/local/__tests__/getObjectFilePath.test.js.map +1 -1
- package/dist/repositories/local/deleteObjectById.js +2 -2
- package/dist/repositories/local/deleteObjectById.js.map +1 -1
- package/dist/repositories/local/findMarkdownFiles.d.ts.map +1 -1
- package/dist/repositories/local/findMarkdownFiles.js +6 -1
- package/dist/repositories/local/findMarkdownFiles.js.map +1 -1
- package/dist/repositories/local/getChildrenByFilePath.d.ts +14 -0
- package/dist/repositories/local/getChildrenByFilePath.d.ts.map +1 -0
- package/dist/repositories/local/getChildrenByFilePath.js +93 -0
- package/dist/repositories/local/getChildrenByFilePath.js.map +1 -0
- package/dist/repositories/local/getObjectByFilePath.d.ts.map +1 -1
- package/dist/repositories/local/getObjectByFilePath.js +5 -1
- package/dist/repositories/local/getObjectByFilePath.js.map +1 -1
- package/dist/repositories/local/getObjectById.d.ts.map +1 -1
- package/dist/repositories/local/getObjectById.js +4 -1
- package/dist/repositories/local/getObjectById.js.map +1 -1
- package/dist/repositories/local/getObjects.js +1 -1
- package/dist/repositories/local/getObjects.js.map +1 -1
- package/dist/repositories/local/saveObject.d.ts +1 -0
- package/dist/repositories/local/saveObject.d.ts.map +1 -1
- package/dist/repositories/local/saveObject.js +46 -0
- package/dist/repositories/local/saveObject.js.map +1 -1
- package/dist/server.js +52 -17
- package/dist/server.js.map +1 -1
- package/dist/tools/__tests__/appendObjectLogTool.test.js +2 -0
- package/dist/tools/__tests__/appendObjectLogTool.test.js.map +1 -1
- package/dist/tools/__tests__/claimTaskTool.test.js +4 -0
- package/dist/tools/__tests__/claimTaskTool.test.js.map +1 -1
- package/dist/tools/__tests__/completeTaskTool.test.js +2 -0
- package/dist/tools/__tests__/completeTaskTool.test.js.map +1 -1
- package/dist/tools/__tests__/createObjectTool.test.js +18 -0
- package/dist/tools/__tests__/createObjectTool.test.js.map +1 -1
- package/dist/tools/__tests__/getObjectTool.test.js +4 -0
- package/dist/tools/__tests__/getObjectTool.test.js.map +1 -1
- package/dist/tools/__tests__/listObjectsTool.test.js +4 -0
- package/dist/tools/__tests__/listObjectsTool.test.js.map +1 -1
- package/dist/tools/__tests__/pruneClosedTool.test.d.ts +2 -0
- package/dist/tools/__tests__/pruneClosedTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/pruneClosedTool.test.js +171 -0
- package/dist/tools/__tests__/pruneClosedTool.test.js.map +1 -0
- package/dist/tools/__tests__/replaceObjectBodyRegexTool.test.d.ts +2 -0
- package/dist/tools/__tests__/replaceObjectBodyRegexTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/replaceObjectBodyRegexTool.test.js +258 -0
- package/dist/tools/__tests__/replaceObjectBodyRegexTool.test.js.map +1 -0
- package/dist/tools/__tests__/updateObjectTool.test.js +2 -0
- package/dist/tools/__tests__/updateObjectTool.test.js.map +1 -1
- package/dist/tools/activateTool.d.ts +1 -1
- package/dist/tools/activateTool.d.ts.map +1 -1
- package/dist/tools/activateTool.js +35 -1
- package/dist/tools/activateTool.js.map +1 -1
- package/dist/tools/appendObjectLogTool.d.ts +1 -1
- package/dist/tools/appendObjectLogTool.d.ts.map +1 -1
- package/dist/tools/appendObjectLogTool.js +27 -1
- package/dist/tools/appendObjectLogTool.js.map +1 -1
- package/dist/tools/claimTaskTool.d.ts +1 -1
- package/dist/tools/claimTaskTool.d.ts.map +1 -1
- package/dist/tools/claimTaskTool.js +34 -5
- package/dist/tools/claimTaskTool.js.map +1 -1
- package/dist/tools/completeTaskTool.d.ts +1 -1
- package/dist/tools/completeTaskTool.d.ts.map +1 -1
- package/dist/tools/completeTaskTool.js +30 -1
- package/dist/tools/completeTaskTool.js.map +1 -1
- package/dist/tools/createObjectTool.d.ts +1 -1
- package/dist/tools/createObjectTool.d.ts.map +1 -1
- package/dist/tools/createObjectTool.js +43 -2
- package/dist/tools/createObjectTool.js.map +1 -1
- package/dist/tools/deleteObjectTool.d.ts +1 -1
- package/dist/tools/deleteObjectTool.d.ts.map +1 -1
- package/dist/tools/deleteObjectTool.js +23 -1
- package/dist/tools/deleteObjectTool.js.map +1 -1
- package/dist/tools/getObjectTool.d.ts +1 -1
- package/dist/tools/getObjectTool.d.ts.map +1 -1
- package/dist/tools/getObjectTool.js +21 -1
- package/dist/tools/getObjectTool.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 +1 -1
- package/dist/tools/listObjectsTool.d.ts.map +1 -1
- package/dist/tools/listObjectsTool.js +37 -1
- package/dist/tools/listObjectsTool.js.map +1 -1
- package/dist/tools/pruneClosedTool.d.ts +3 -3
- package/dist/tools/pruneClosedTool.d.ts.map +1 -1
- package/dist/tools/pruneClosedTool.js +82 -11
- package/dist/tools/pruneClosedTool.js.map +1 -1
- package/dist/tools/replaceObjectBodyRegexTool.d.ts +35 -0
- package/dist/tools/replaceObjectBodyRegexTool.d.ts.map +1 -0
- package/dist/tools/replaceObjectBodyRegexTool.js +145 -0
- package/dist/tools/replaceObjectBodyRegexTool.js.map +1 -0
- package/dist/tools/updateObjectTool.d.ts +1 -1
- package/dist/tools/updateObjectTool.d.ts.map +1 -1
- package/dist/tools/updateObjectTool.js +35 -1
- package/dist/tools/updateObjectTool.js.map +1 -1
- package/dist/utils/MultipleMatchesError.d.ts +7 -0
- package/dist/utils/MultipleMatchesError.d.ts.map +1 -0
- package/dist/utils/MultipleMatchesError.js +15 -0
- package/dist/utils/MultipleMatchesError.js.map +1 -0
- package/dist/utils/ReplaceStringOptions.d.ts +12 -0
- package/dist/utils/ReplaceStringOptions.d.ts.map +1 -0
- package/dist/utils/ReplaceStringOptions.js +3 -0
- package/dist/utils/ReplaceStringOptions.js.map +1 -0
- package/dist/utils/__tests__/checkPrerequisitesComplete.test.js +2 -0
- package/dist/utils/__tests__/checkPrerequisitesComplete.test.js.map +1 -1
- package/dist/utils/__tests__/deserializeTrellisObject.test.js +48 -0
- package/dist/utils/__tests__/deserializeTrellisObject.test.js.map +1 -1
- package/dist/utils/__tests__/filterUnavailableObjects.test.js +11 -10
- package/dist/utils/__tests__/filterUnavailableObjects.test.js.map +1 -1
- package/dist/utils/__tests__/isRequiredForOtherObjects.test.js +2 -0
- package/dist/utils/__tests__/isRequiredForOtherObjects.test.js.map +1 -1
- package/dist/utils/__tests__/replaceStringWithRegex.test.d.ts +2 -0
- package/dist/utils/__tests__/replaceStringWithRegex.test.d.ts.map +1 -0
- package/dist/utils/__tests__/replaceStringWithRegex.test.js +263 -0
- package/dist/utils/__tests__/replaceStringWithRegex.test.js.map +1 -0
- package/dist/utils/__tests__/serializationRoundTrip.test.js +24 -0
- package/dist/utils/__tests__/serializationRoundTrip.test.js.map +1 -1
- package/dist/utils/__tests__/serializeTrellisObject.test.js +40 -0
- package/dist/utils/__tests__/serializeTrellisObject.test.js.map +1 -1
- package/dist/utils/__tests__/sortTrellisObjects.test.js +2 -0
- package/dist/utils/__tests__/sortTrellisObjects.test.js.map +1 -1
- package/dist/utils/checkPrerequisitesComplete.d.ts.map +1 -1
- package/dist/utils/checkPrerequisitesComplete.js +3 -4
- package/dist/utils/checkPrerequisitesComplete.js.map +1 -1
- package/dist/utils/deserializeTrellisObject.d.ts.map +1 -1
- package/dist/utils/deserializeTrellisObject.js +5 -0
- package/dist/utils/deserializeTrellisObject.js.map +1 -1
- package/dist/utils/filterUnavailableObjects.d.ts.map +1 -1
- package/dist/utils/filterUnavailableObjects.js +5 -6
- package/dist/utils/filterUnavailableObjects.js.map +1 -1
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +5 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/isRequiredForOtherObjects.d.ts.map +1 -1
- package/dist/utils/isRequiredForOtherObjects.js +2 -4
- package/dist/utils/isRequiredForOtherObjects.js.map +1 -1
- package/dist/utils/replaceStringWithRegex.d.ts +45 -0
- package/dist/utils/replaceStringWithRegex.d.ts.map +1 -0
- package/dist/utils/replaceStringWithRegex.js +82 -0
- package/dist/utils/replaceStringWithRegex.js.map +1 -0
- package/dist/utils/serializeTrellisObject.d.ts.map +1 -1
- package/dist/utils/serializeTrellisObject.js +3 -0
- package/dist/utils/serializeTrellisObject.js.map +1 -1
- package/dist/validation/__tests__/validateObjectCreation.test.js +2 -0
- package/dist/validation/__tests__/validateObjectCreation.test.js.map +1 -1
- package/dist/validation/__tests__/validateParentExists.test.js +2 -0
- package/dist/validation/__tests__/validateParentExists.test.js.map +1 -1
- package/dist/validation/__tests__/validateStatusTransition.test.js +2 -0
- package/dist/validation/__tests__/validateStatusTransition.test.js.map +1 -1
- package/package.json +8 -3
|
@@ -0,0 +1,547 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("../utils");
|
|
4
|
+
describe("E2E Workflow - Prerequisites", () => {
|
|
5
|
+
let testEnv;
|
|
6
|
+
let client;
|
|
7
|
+
beforeEach(async () => {
|
|
8
|
+
testEnv = new utils_1.TestEnvironment();
|
|
9
|
+
testEnv.setup();
|
|
10
|
+
client = new utils_1.McpTestClient(testEnv.projectRoot);
|
|
11
|
+
await client.connect();
|
|
12
|
+
await client.callTool("activate", {
|
|
13
|
+
mode: "local",
|
|
14
|
+
projectRoot: testEnv.projectRoot,
|
|
15
|
+
});
|
|
16
|
+
}, 30000);
|
|
17
|
+
afterEach(async () => {
|
|
18
|
+
await client?.disconnect();
|
|
19
|
+
testEnv?.cleanup();
|
|
20
|
+
});
|
|
21
|
+
describe("Simple Prerequisite Chains", () => {
|
|
22
|
+
it("should handle linear dependency chain A -> B -> C", async () => {
|
|
23
|
+
// Create tasks A, B, C with dependencies
|
|
24
|
+
const taskA = await client.callTool("create_object", {
|
|
25
|
+
type: "task",
|
|
26
|
+
title: "Task A - Foundation",
|
|
27
|
+
status: "open",
|
|
28
|
+
});
|
|
29
|
+
const taskAId = taskA.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
30
|
+
const taskB = await client.callTool("create_object", {
|
|
31
|
+
type: "task",
|
|
32
|
+
title: "Task B - Middle",
|
|
33
|
+
status: "open",
|
|
34
|
+
prerequisites: [taskAId],
|
|
35
|
+
});
|
|
36
|
+
const taskBId = taskB.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
37
|
+
const taskC = await client.callTool("create_object", {
|
|
38
|
+
type: "task",
|
|
39
|
+
title: "Task C - Final",
|
|
40
|
+
status: "open",
|
|
41
|
+
prerequisites: [taskBId],
|
|
42
|
+
});
|
|
43
|
+
const taskCId = taskC.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
44
|
+
// Try to claim C (should fail)
|
|
45
|
+
let result = await client.callTool("claim_task", { taskId: taskCId });
|
|
46
|
+
expect(result.content[0].text).toContain("Not all prerequisites");
|
|
47
|
+
// Try to claim B (should fail)
|
|
48
|
+
result = await client.callTool("claim_task", { taskId: taskBId });
|
|
49
|
+
expect(result.content[0].text).toContain("Not all prerequisites");
|
|
50
|
+
// Claim and complete A
|
|
51
|
+
await client.callTool("claim_task", { taskId: taskAId });
|
|
52
|
+
await client.callTool("complete_task", {
|
|
53
|
+
taskId: taskAId,
|
|
54
|
+
summary: "Foundation complete",
|
|
55
|
+
filesChanged: {},
|
|
56
|
+
});
|
|
57
|
+
// Now claim and complete B
|
|
58
|
+
await client.callTool("claim_task", { taskId: taskBId });
|
|
59
|
+
await client.callTool("complete_task", {
|
|
60
|
+
taskId: taskBId,
|
|
61
|
+
summary: "Middle layer complete",
|
|
62
|
+
filesChanged: {},
|
|
63
|
+
});
|
|
64
|
+
// Finally claim and complete C
|
|
65
|
+
result = await client.callTool("claim_task", { taskId: taskCId });
|
|
66
|
+
expect(result.content[0].text).toContain("Successfully claimed");
|
|
67
|
+
await client.callTool("complete_task", {
|
|
68
|
+
taskId: taskCId,
|
|
69
|
+
summary: "Final task complete",
|
|
70
|
+
filesChanged: {},
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
it("should handle parallel prerequisites", async () => {
|
|
74
|
+
// Create two independent prerequisites
|
|
75
|
+
const prereq1 = await client.callTool("create_object", {
|
|
76
|
+
type: "task",
|
|
77
|
+
title: "Prerequisite 1",
|
|
78
|
+
status: "open",
|
|
79
|
+
});
|
|
80
|
+
const prereq1Id = prereq1.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
81
|
+
const prereq2 = await client.callTool("create_object", {
|
|
82
|
+
type: "task",
|
|
83
|
+
title: "Prerequisite 2",
|
|
84
|
+
status: "open",
|
|
85
|
+
});
|
|
86
|
+
const prereq2Id = prereq2.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
87
|
+
// Create task depending on both
|
|
88
|
+
const mainTask = await client.callTool("create_object", {
|
|
89
|
+
type: "task",
|
|
90
|
+
title: "Task with Multiple Prerequisites",
|
|
91
|
+
status: "open",
|
|
92
|
+
prerequisites: [prereq1Id, prereq2Id],
|
|
93
|
+
});
|
|
94
|
+
const mainTaskId = mainTask.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
95
|
+
// Try to claim main task (should fail)
|
|
96
|
+
const failResult = await client.callTool("claim_task", {
|
|
97
|
+
taskId: mainTaskId,
|
|
98
|
+
});
|
|
99
|
+
expect(failResult.content[0].text).toContain("Not all prerequisites");
|
|
100
|
+
// Complete only prereq1
|
|
101
|
+
await client.callTool("claim_task", { taskId: prereq1Id });
|
|
102
|
+
await client.callTool("complete_task", {
|
|
103
|
+
taskId: prereq1Id,
|
|
104
|
+
summary: "First prerequisite done",
|
|
105
|
+
filesChanged: {},
|
|
106
|
+
});
|
|
107
|
+
// Try to claim main task (should still fail)
|
|
108
|
+
const failResult2 = await client.callTool("claim_task", {
|
|
109
|
+
taskId: mainTaskId,
|
|
110
|
+
});
|
|
111
|
+
expect(failResult2.content[0].text).toContain("Not all prerequisites");
|
|
112
|
+
// Complete prereq2
|
|
113
|
+
await client.callTool("claim_task", { taskId: prereq2Id });
|
|
114
|
+
await client.callTool("complete_task", {
|
|
115
|
+
taskId: prereq2Id,
|
|
116
|
+
summary: "Second prerequisite done",
|
|
117
|
+
filesChanged: {},
|
|
118
|
+
});
|
|
119
|
+
// Now can claim main task
|
|
120
|
+
const result = await client.callTool("claim_task", {
|
|
121
|
+
taskId: mainTaskId,
|
|
122
|
+
});
|
|
123
|
+
expect(result.content[0].text).toContain("Successfully claimed");
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
describe("Complex Dependency Graphs", () => {
|
|
127
|
+
it("should handle diamond dependency pattern", async () => {
|
|
128
|
+
// A
|
|
129
|
+
// / \
|
|
130
|
+
// B C
|
|
131
|
+
// \ /
|
|
132
|
+
// D
|
|
133
|
+
const taskA = await client.callTool("create_object", {
|
|
134
|
+
type: "task",
|
|
135
|
+
title: "Task A - Root",
|
|
136
|
+
status: "open",
|
|
137
|
+
});
|
|
138
|
+
const taskAId = taskA.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
139
|
+
const taskB = await client.callTool("create_object", {
|
|
140
|
+
type: "task",
|
|
141
|
+
title: "Task B - Left Branch",
|
|
142
|
+
status: "open",
|
|
143
|
+
prerequisites: [taskAId],
|
|
144
|
+
});
|
|
145
|
+
const taskBId = taskB.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
146
|
+
const taskC = await client.callTool("create_object", {
|
|
147
|
+
type: "task",
|
|
148
|
+
title: "Task C - Right Branch",
|
|
149
|
+
status: "open",
|
|
150
|
+
prerequisites: [taskAId],
|
|
151
|
+
});
|
|
152
|
+
const taskCId = taskC.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
153
|
+
const taskD = await client.callTool("create_object", {
|
|
154
|
+
type: "task",
|
|
155
|
+
title: "Task D - Convergence",
|
|
156
|
+
status: "open",
|
|
157
|
+
prerequisites: [taskBId, taskCId],
|
|
158
|
+
});
|
|
159
|
+
const taskDId = taskD.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
160
|
+
// Complete A
|
|
161
|
+
await client.callTool("claim_task", { taskId: taskAId });
|
|
162
|
+
await client.callTool("complete_task", {
|
|
163
|
+
taskId: taskAId,
|
|
164
|
+
summary: "Root complete",
|
|
165
|
+
filesChanged: {},
|
|
166
|
+
});
|
|
167
|
+
// B and C can now be claimed in parallel
|
|
168
|
+
await client.callTool("claim_task", { taskId: taskBId });
|
|
169
|
+
await client.callTool("claim_task", { taskId: taskCId });
|
|
170
|
+
// Try to claim D (should fail)
|
|
171
|
+
let result = await client.callTool("claim_task", { taskId: taskDId });
|
|
172
|
+
expect(result.content[0].text).toContain("Not all prerequisites");
|
|
173
|
+
// Complete B and C
|
|
174
|
+
await client.callTool("complete_task", {
|
|
175
|
+
taskId: taskBId,
|
|
176
|
+
summary: "Left branch complete",
|
|
177
|
+
filesChanged: {},
|
|
178
|
+
});
|
|
179
|
+
await client.callTool("complete_task", {
|
|
180
|
+
taskId: taskCId,
|
|
181
|
+
summary: "Right branch complete",
|
|
182
|
+
filesChanged: {},
|
|
183
|
+
});
|
|
184
|
+
// Now D can be claimed
|
|
185
|
+
result = await client.callTool("claim_task", { taskId: taskDId });
|
|
186
|
+
expect(result.content[0].text).toContain("Successfully claimed");
|
|
187
|
+
});
|
|
188
|
+
it("should handle cross-type dependencies", async () => {
|
|
189
|
+
// Create project -> epic -> feature hierarchy
|
|
190
|
+
const projectResult = await client.callTool("create_object", {
|
|
191
|
+
type: "project",
|
|
192
|
+
title: "Cross-Type Project",
|
|
193
|
+
status: "open",
|
|
194
|
+
});
|
|
195
|
+
const projectId = projectResult.content[0].text.match(/ID: (P-[a-z0-9-]+)/)[1];
|
|
196
|
+
const epicResult = await client.callTool("create_object", {
|
|
197
|
+
type: "epic",
|
|
198
|
+
title: "Cross-Type Epic",
|
|
199
|
+
parent: projectId,
|
|
200
|
+
status: "open",
|
|
201
|
+
});
|
|
202
|
+
const epicId = epicResult.content[0].text.match(/ID: (E-[a-z0-9-]+)/)[1];
|
|
203
|
+
const featureResult = await client.callTool("create_object", {
|
|
204
|
+
type: "feature",
|
|
205
|
+
title: "Cross-Type Feature",
|
|
206
|
+
parent: epicId,
|
|
207
|
+
status: "open",
|
|
208
|
+
});
|
|
209
|
+
const featureId = featureResult.content[0].text.match(/ID: (F-[a-z0-9-]+)/)[1];
|
|
210
|
+
// Create task1 under feature
|
|
211
|
+
const task1Result = await client.callTool("create_object", {
|
|
212
|
+
type: "task",
|
|
213
|
+
title: "Task 1 - Under Feature",
|
|
214
|
+
parent: featureId,
|
|
215
|
+
status: "open",
|
|
216
|
+
});
|
|
217
|
+
const task1Id = task1Result.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
218
|
+
// Create standalone task2 depending on task1
|
|
219
|
+
const task2Result = await client.callTool("create_object", {
|
|
220
|
+
type: "task",
|
|
221
|
+
title: "Task 2 - Standalone",
|
|
222
|
+
status: "open",
|
|
223
|
+
prerequisites: [task1Id],
|
|
224
|
+
});
|
|
225
|
+
const task2Id = task2Result.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
226
|
+
// Try to claim task2 (should fail)
|
|
227
|
+
const crossTypeFailResult = await client.callTool("claim_task", {
|
|
228
|
+
taskId: task2Id,
|
|
229
|
+
});
|
|
230
|
+
expect(crossTypeFailResult.content[0].text).toContain("Not all prerequisites");
|
|
231
|
+
// Complete task1
|
|
232
|
+
await client.callTool("claim_task", { taskId: task1Id });
|
|
233
|
+
await client.callTool("complete_task", {
|
|
234
|
+
taskId: task1Id,
|
|
235
|
+
summary: "Feature task complete",
|
|
236
|
+
filesChanged: {},
|
|
237
|
+
});
|
|
238
|
+
// Now task2 can be claimed
|
|
239
|
+
const result = await client.callTool("claim_task", { taskId: task2Id });
|
|
240
|
+
expect(result.content[0].text).toContain("Successfully claimed");
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
describe("Circular Dependency Detection", () => {
|
|
244
|
+
it("should handle self-referencing prerequisites gracefully", async () => {
|
|
245
|
+
// Create task with self-reference (should be prevented at creation)
|
|
246
|
+
const result = await client.callTool("create_object", {
|
|
247
|
+
type: "task",
|
|
248
|
+
title: "Self-Referencing Task",
|
|
249
|
+
status: "open",
|
|
250
|
+
prerequisites: ["T-self-ref"], // Its own ID
|
|
251
|
+
});
|
|
252
|
+
const taskId = result.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
253
|
+
// The task gets created but prerequisite won't exist
|
|
254
|
+
// Try to claim (prerequisite doesn't exist so should succeed)
|
|
255
|
+
const claimResult = await client.callTool("claim_task", { taskId });
|
|
256
|
+
expect(claimResult.content[0].text).toContain("Successfully claimed");
|
|
257
|
+
});
|
|
258
|
+
it("should handle mutual dependencies", async () => {
|
|
259
|
+
// Create task A
|
|
260
|
+
const taskA = await client.callTool("create_object", {
|
|
261
|
+
type: "task",
|
|
262
|
+
title: "Task A - Mutual",
|
|
263
|
+
status: "open",
|
|
264
|
+
});
|
|
265
|
+
const taskAId = taskA.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
266
|
+
// Create task B depending on A
|
|
267
|
+
const taskB = await client.callTool("create_object", {
|
|
268
|
+
type: "task",
|
|
269
|
+
title: "Task B - Mutual",
|
|
270
|
+
status: "open",
|
|
271
|
+
prerequisites: [taskAId],
|
|
272
|
+
});
|
|
273
|
+
const taskBId = taskB.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
274
|
+
// Try to update A to depend on B (creating cycle)
|
|
275
|
+
await client.callTool("update_object", {
|
|
276
|
+
id: taskAId,
|
|
277
|
+
prerequisites: [taskBId],
|
|
278
|
+
});
|
|
279
|
+
// Both tasks should now be unclaimable
|
|
280
|
+
let result = await client.callTool("claim_task", { taskId: taskAId });
|
|
281
|
+
expect(result.content[0].text).toContain("Not all prerequisites");
|
|
282
|
+
result = await client.callTool("claim_task", { taskId: taskBId });
|
|
283
|
+
expect(result.content[0].text).toContain("Not all prerequisites");
|
|
284
|
+
// Force claim should work
|
|
285
|
+
result = await client.callTool("claim_task", {
|
|
286
|
+
taskId: taskAId,
|
|
287
|
+
force: true,
|
|
288
|
+
});
|
|
289
|
+
expect(result.content[0].text).toContain("Successfully claimed");
|
|
290
|
+
});
|
|
291
|
+
});
|
|
292
|
+
describe("Partial Prerequisites", () => {
|
|
293
|
+
it("should handle wont-do prerequisites", async () => {
|
|
294
|
+
// Create prerequisite that will be marked wont-do
|
|
295
|
+
const prereqResult = await client.callTool("create_object", {
|
|
296
|
+
type: "task",
|
|
297
|
+
title: "Prerequisite - Will Cancel",
|
|
298
|
+
status: "open",
|
|
299
|
+
});
|
|
300
|
+
const prereqId = prereqResult.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
301
|
+
// Create dependent task
|
|
302
|
+
const mainResult = await client.callTool("create_object", {
|
|
303
|
+
type: "task",
|
|
304
|
+
title: "Task with Cancelled Prerequisite",
|
|
305
|
+
status: "open",
|
|
306
|
+
prerequisites: [prereqId],
|
|
307
|
+
});
|
|
308
|
+
const mainId = mainResult.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
309
|
+
// Mark prerequisite as wont-do
|
|
310
|
+
await client.callTool("update_object", {
|
|
311
|
+
id: prereqId,
|
|
312
|
+
status: "wont-do",
|
|
313
|
+
});
|
|
314
|
+
// Main task should now be claimable
|
|
315
|
+
const result = await client.callTool("claim_task", { taskId: mainId });
|
|
316
|
+
expect(result.content[0].text).toContain("Successfully claimed");
|
|
317
|
+
});
|
|
318
|
+
it("should handle external prerequisites", async () => {
|
|
319
|
+
// Create task with external (non-existent) prerequisite
|
|
320
|
+
const result = await client.callTool("create_object", {
|
|
321
|
+
type: "task",
|
|
322
|
+
title: "Task with External Dependency",
|
|
323
|
+
status: "open",
|
|
324
|
+
prerequisites: ["EXTERNAL-API-READY", "EXTERNAL-DOCS-COMPLETE"],
|
|
325
|
+
});
|
|
326
|
+
const taskId = result.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
327
|
+
// Should be claimable since external prerequisites are assumed complete
|
|
328
|
+
const claimResult = await client.callTool("claim_task", { taskId });
|
|
329
|
+
expect(claimResult.content[0].text).toContain("Successfully claimed");
|
|
330
|
+
});
|
|
331
|
+
it("should handle mixed internal and external prerequisites", async () => {
|
|
332
|
+
// Create internal prerequisite
|
|
333
|
+
const internalResult = await client.callTool("create_object", {
|
|
334
|
+
type: "task",
|
|
335
|
+
title: "Internal Prerequisite",
|
|
336
|
+
status: "open",
|
|
337
|
+
});
|
|
338
|
+
const internalId = internalResult.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
339
|
+
// Create task with both internal and external prerequisites
|
|
340
|
+
const mainResult = await client.callTool("create_object", {
|
|
341
|
+
type: "task",
|
|
342
|
+
title: "Mixed Prerequisites Task",
|
|
343
|
+
status: "open",
|
|
344
|
+
prerequisites: [internalId, "EXTERNAL-APPROVAL"],
|
|
345
|
+
});
|
|
346
|
+
const mainId = mainResult.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
347
|
+
// Should not be claimable (internal not complete)
|
|
348
|
+
let result = await client.callTool("claim_task", { taskId: mainId });
|
|
349
|
+
expect(result.content[0].text).toContain("Not all prerequisites");
|
|
350
|
+
// Complete internal prerequisite
|
|
351
|
+
await client.callTool("claim_task", { taskId: internalId });
|
|
352
|
+
await client.callTool("complete_task", {
|
|
353
|
+
taskId: internalId,
|
|
354
|
+
summary: "Internal work done",
|
|
355
|
+
filesChanged: {},
|
|
356
|
+
});
|
|
357
|
+
// Now should be claimable
|
|
358
|
+
result = await client.callTool("claim_task", { taskId: mainId });
|
|
359
|
+
expect(result.content[0].text).toContain("Successfully claimed");
|
|
360
|
+
});
|
|
361
|
+
});
|
|
362
|
+
describe("Prerequisites Edge Cases", () => {
|
|
363
|
+
it("should handle empty prerequisites array", async () => {
|
|
364
|
+
const result = await client.callTool("create_object", {
|
|
365
|
+
type: "task",
|
|
366
|
+
title: "No Prerequisites Task",
|
|
367
|
+
status: "open",
|
|
368
|
+
prerequisites: [],
|
|
369
|
+
});
|
|
370
|
+
const taskId = result.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
371
|
+
// Should be immediately claimable
|
|
372
|
+
const claimResult = await client.callTool("claim_task", { taskId });
|
|
373
|
+
expect(claimResult.content[0].text).toContain("Successfully claimed");
|
|
374
|
+
});
|
|
375
|
+
it("should handle prerequisites on different object types", async () => {
|
|
376
|
+
// Create feature with prerequisites
|
|
377
|
+
const task1Result = await client.callTool("create_object", {
|
|
378
|
+
type: "task",
|
|
379
|
+
title: "Prerequisite Task for Feature",
|
|
380
|
+
status: "open",
|
|
381
|
+
});
|
|
382
|
+
const task1Id = task1Result.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
383
|
+
const featureResult = await client.callTool("create_object", {
|
|
384
|
+
type: "feature",
|
|
385
|
+
title: "Feature with Prerequisites",
|
|
386
|
+
status: "open",
|
|
387
|
+
prerequisites: [task1Id],
|
|
388
|
+
});
|
|
389
|
+
const featureId = featureResult.content[0].text.match(/ID: (F-[a-z0-9-]+)/)[1];
|
|
390
|
+
// Create task depending on feature
|
|
391
|
+
const task2Result = await client.callTool("create_object", {
|
|
392
|
+
type: "task",
|
|
393
|
+
title: "Task Depending on Feature",
|
|
394
|
+
status: "open",
|
|
395
|
+
prerequisites: [featureId],
|
|
396
|
+
});
|
|
397
|
+
const task2Id = task2Result.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
398
|
+
// Complete task1
|
|
399
|
+
await client.callTool("claim_task", { taskId: task1Id });
|
|
400
|
+
await client.callTool("complete_task", {
|
|
401
|
+
taskId: task1Id,
|
|
402
|
+
summary: "Prerequisite for feature done",
|
|
403
|
+
filesChanged: {},
|
|
404
|
+
});
|
|
405
|
+
// Mark feature as done
|
|
406
|
+
await client.callTool("update_object", {
|
|
407
|
+
id: featureId,
|
|
408
|
+
status: "done",
|
|
409
|
+
});
|
|
410
|
+
// Now task2 should be claimable
|
|
411
|
+
const result = await client.callTool("claim_task", { taskId: task2Id });
|
|
412
|
+
expect(result.content[0].text).toContain("Successfully claimed");
|
|
413
|
+
});
|
|
414
|
+
});
|
|
415
|
+
describe("Dynamic Prerequisite Updates", () => {
|
|
416
|
+
it("should handle adding prerequisites to existing tasks", async () => {
|
|
417
|
+
// Create tasks
|
|
418
|
+
const task1Result = await client.callTool("create_object", {
|
|
419
|
+
type: "task",
|
|
420
|
+
title: "Task 1 - Independent",
|
|
421
|
+
status: "open",
|
|
422
|
+
});
|
|
423
|
+
const task1Id = task1Result.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
424
|
+
const task2Result = await client.callTool("create_object", {
|
|
425
|
+
type: "task",
|
|
426
|
+
title: "Task 2 - Initially Independent",
|
|
427
|
+
status: "open",
|
|
428
|
+
prerequisites: [],
|
|
429
|
+
});
|
|
430
|
+
const task2Id = task2Result.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
431
|
+
// Task 2 should be claimable initially
|
|
432
|
+
let result = await client.callTool("claim_task", { taskId: task2Id });
|
|
433
|
+
expect(result.content[0].text).toContain("Successfully claimed");
|
|
434
|
+
// Reset task 2 to open
|
|
435
|
+
await client.callTool("update_object", {
|
|
436
|
+
id: task2Id,
|
|
437
|
+
status: "open",
|
|
438
|
+
});
|
|
439
|
+
// Add prerequisite to task 2
|
|
440
|
+
await client.callTool("update_object", {
|
|
441
|
+
id: task2Id,
|
|
442
|
+
prerequisites: [task1Id],
|
|
443
|
+
});
|
|
444
|
+
// Now task 2 should not be claimable
|
|
445
|
+
result = await client.callTool("claim_task", { taskId: task2Id });
|
|
446
|
+
expect(result.content[0].text).toContain("Not all prerequisites");
|
|
447
|
+
// Complete task 1
|
|
448
|
+
await client.callTool("claim_task", { taskId: task1Id });
|
|
449
|
+
await client.callTool("complete_task", {
|
|
450
|
+
taskId: task1Id,
|
|
451
|
+
summary: "Prerequisite completed",
|
|
452
|
+
filesChanged: {},
|
|
453
|
+
});
|
|
454
|
+
// Now task 2 should be claimable
|
|
455
|
+
result = await client.callTool("claim_task", { taskId: task2Id });
|
|
456
|
+
expect(result.content[0].text).toContain("Successfully claimed");
|
|
457
|
+
});
|
|
458
|
+
it("should handle removing prerequisites from existing tasks", async () => {
|
|
459
|
+
// Create prerequisite task
|
|
460
|
+
const prereqResult = await client.callTool("create_object", {
|
|
461
|
+
type: "task",
|
|
462
|
+
title: "Prerequisite Task",
|
|
463
|
+
status: "open",
|
|
464
|
+
});
|
|
465
|
+
const prereqId = prereqResult.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
466
|
+
// Create dependent task
|
|
467
|
+
const dependentResult = await client.callTool("create_object", {
|
|
468
|
+
type: "task",
|
|
469
|
+
title: "Dependent Task",
|
|
470
|
+
status: "open",
|
|
471
|
+
prerequisites: [prereqId],
|
|
472
|
+
});
|
|
473
|
+
const dependentId = dependentResult.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
474
|
+
// Should not be claimable initially
|
|
475
|
+
let result = await client.callTool("claim_task", { taskId: dependentId });
|
|
476
|
+
expect(result.content[0].text).toContain("Not all prerequisites");
|
|
477
|
+
// Remove prerequisite
|
|
478
|
+
await client.callTool("update_object", {
|
|
479
|
+
id: dependentId,
|
|
480
|
+
prerequisites: [],
|
|
481
|
+
});
|
|
482
|
+
// Now should be claimable
|
|
483
|
+
result = await client.callTool("claim_task", { taskId: dependentId });
|
|
484
|
+
expect(result.content[0].text).toContain("Successfully claimed");
|
|
485
|
+
});
|
|
486
|
+
});
|
|
487
|
+
describe("Priority with Prerequisites", () => {
|
|
488
|
+
it("should claim highest priority task among available tasks", async () => {
|
|
489
|
+
// Create prerequisite
|
|
490
|
+
const prereqResult = await client.callTool("create_object", {
|
|
491
|
+
type: "task",
|
|
492
|
+
title: "Completed Prerequisite",
|
|
493
|
+
status: "done",
|
|
494
|
+
});
|
|
495
|
+
const prereqId = prereqResult.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
496
|
+
// Create high priority task with completed prerequisite
|
|
497
|
+
await client.callTool("create_object", {
|
|
498
|
+
type: "task",
|
|
499
|
+
title: "High Priority Available",
|
|
500
|
+
priority: "high",
|
|
501
|
+
status: "open",
|
|
502
|
+
prerequisites: [prereqId],
|
|
503
|
+
});
|
|
504
|
+
// Create medium priority task without prerequisites
|
|
505
|
+
await client.callTool("create_object", {
|
|
506
|
+
type: "task",
|
|
507
|
+
title: "Medium Priority Independent",
|
|
508
|
+
priority: "medium",
|
|
509
|
+
status: "open",
|
|
510
|
+
prerequisites: [],
|
|
511
|
+
});
|
|
512
|
+
// Auto-claim should get high priority task
|
|
513
|
+
const result = await client.callTool("claim_task", {});
|
|
514
|
+
expect(result.content[0].text).toContain("High Priority Available");
|
|
515
|
+
});
|
|
516
|
+
it("should skip blocked high priority tasks and claim available lower priority", async () => {
|
|
517
|
+
// Create incomplete prerequisite
|
|
518
|
+
const prereqResult = await client.callTool("create_object", {
|
|
519
|
+
type: "task",
|
|
520
|
+
title: "Incomplete Prerequisite",
|
|
521
|
+
status: "open",
|
|
522
|
+
priority: "low",
|
|
523
|
+
});
|
|
524
|
+
const prereqId = prereqResult.content[0].text.match(/ID: (T-[a-z0-9-]+)/)[1];
|
|
525
|
+
// Create high priority task with incomplete prerequisite
|
|
526
|
+
await client.callTool("create_object", {
|
|
527
|
+
type: "task",
|
|
528
|
+
title: "High Priority Blocked",
|
|
529
|
+
priority: "high",
|
|
530
|
+
status: "open",
|
|
531
|
+
prerequisites: [prereqId],
|
|
532
|
+
});
|
|
533
|
+
// Create medium priority task without prerequisites
|
|
534
|
+
await client.callTool("create_object", {
|
|
535
|
+
type: "task",
|
|
536
|
+
title: "Medium Priority Available",
|
|
537
|
+
priority: "medium",
|
|
538
|
+
status: "open",
|
|
539
|
+
prerequisites: [],
|
|
540
|
+
});
|
|
541
|
+
// Auto-claim should get medium priority task (high is blocked)
|
|
542
|
+
const result = await client.callTool("claim_task", {});
|
|
543
|
+
expect(result.content[0].text).toContain("Medium Priority Available");
|
|
544
|
+
});
|
|
545
|
+
});
|
|
546
|
+
});
|
|
547
|
+
//# sourceMappingURL=prerequisites.e2e.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prerequisites.e2e.test.js","sourceRoot":"","sources":["../../../../src/__tests__/e2e/workflow/prerequisites.e2e.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pruneClosed.e2e.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/e2e/workflow/pruneClosed.e2e.test.ts"],"names":[],"mappings":""}
|