@langadventurellc/task-trellis-mcp 0.1.0-rc.3 → 1.0.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 +357 -39
- 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 +281 -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 +91 -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
package/README.md
CHANGED
|
@@ -1,56 +1,358 @@
|
|
|
1
1
|
# Task Trellis MCP
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> Transform AI coding chaos into organized productivity
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
[](https://www.npmjs.com/package/@langadventurellc/task-trellis-mcp)
|
|
6
|
+
[](https://www.gnu.org/licenses/gpl-3.0)
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
An MCP (Model Context Protocol) server that greatly improves how AI coding agents handle complex projects. Task Trellis breaks down large development efforts into manageable, trackable work items with built-in workflow management, dependency handling, and progress tracking.
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
## Table of Contents
|
|
10
11
|
|
|
11
|
-
-
|
|
12
|
-
|
|
12
|
+
- [Why Task Trellis?](#why-task-trellis)
|
|
13
|
+
- [Core Benefits](#core-benefits)
|
|
14
|
+
- [Usage](#usage)
|
|
15
|
+
- [Available Tools](#available-tools)
|
|
16
|
+
- [Project Hierarchy](#project-hierarchy)
|
|
17
|
+
- [Prerequisites & Dependencies](#prerequisites--dependencies)
|
|
18
|
+
- [File Storage](#file-storage)
|
|
19
|
+
- [Installation](#installation)
|
|
20
|
+
- [Quick Test](#quick-test)
|
|
21
|
+
- [Configuration Options](#configuration-options)
|
|
22
|
+
- [Troubleshooting](#troubleshooting)
|
|
13
23
|
|
|
14
|
-
|
|
24
|
+
## Why Task Trellis?
|
|
15
25
|
|
|
16
|
-
|
|
26
|
+
### Without Task Trellis
|
|
17
27
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
28
|
+
- AI agents lose track of complex, multi-step projects
|
|
29
|
+
- Agents spin out of control with no clear task structure
|
|
30
|
+
- Tasks are often too large or vague, leading to confusion
|
|
31
|
+
- No way to manage dependencies or prerequisites
|
|
32
|
+
- No visibility into what's been completed vs. what's pending
|
|
33
|
+
- Tasks get forgotten, duplicated, or done out of order
|
|
34
|
+
- Zero coordination between multiple AI sessions
|
|
35
|
+
- Complex projects become chaotic and overwhelming
|
|
21
36
|
|
|
22
|
-
|
|
37
|
+
### With Task Trellis
|
|
23
38
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
39
|
+
- **Structured Breakdown**: Automatically organize projects into hierarchical tasks (depending on the size of the effort required)
|
|
40
|
+
- For large projects, create a project with epics, features, and tasks
|
|
41
|
+
- For medium projects, create features with tasks
|
|
42
|
+
- For small tasks, create standalone tasks
|
|
43
|
+
- **Smart Dependencies**: Prevent tasks from starting until prerequisites are complete
|
|
44
|
+
- **Progress Tracking**: Real-time visibility into what's done, in-progress, and pending
|
|
45
|
+
- **Session Continuity**: Pick up exactly where you left off across AI conversations
|
|
46
|
+
- **Workflow Management**: Built-in task claiming, completion, and validation workflows
|
|
47
|
+
- **File Change Tracking**: Automatic documentation of what files were modified for each task
|
|
27
48
|
|
|
28
|
-
|
|
29
|
-
```json
|
|
30
|
-
{
|
|
31
|
-
"mcpServers": {
|
|
32
|
-
"task-trellis": {
|
|
33
|
-
"type": "stdio",
|
|
34
|
-
"command": "npx",
|
|
35
|
-
"args": ["@langadventurellc/task-trellis-mcp"]
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
```
|
|
49
|
+
## Core Benefits
|
|
40
50
|
|
|
41
|
-
|
|
51
|
+
**Focused Execution**: AI agents work on one clearly-defined task at a time
|
|
52
|
+
**Progress Visibility**: Always know project status and what's next
|
|
53
|
+
**Dependency Management**: Automatic task ordering based on prerequisites
|
|
54
|
+
**Audit Trail**: Complete history of all work completed and changes made
|
|
55
|
+
**Multi-Session Support**: Seamlessly collaborate across different AI conversations
|
|
56
|
+
**Productivity Boost**: Reduce context switching and eliminate forgotten tasks
|
|
42
57
|
|
|
43
|
-
|
|
58
|
+
## Usage
|
|
59
|
+
|
|
60
|
+
### Basic Workflow
|
|
61
|
+
|
|
62
|
+
See sample prompts (written as Claude Code slash commands): [Sample Prompts](docs/sample_prompts/index.md)
|
|
63
|
+
|
|
64
|
+
1. **Create Tasks**
|
|
65
|
+
- For large projects
|
|
66
|
+
- Create a project
|
|
67
|
+
- Create epics to group features
|
|
68
|
+
- Create features to break down epics
|
|
69
|
+
- Create tasks for specific work items
|
|
70
|
+
- For medium-sized projects
|
|
71
|
+
- Create standalone feature
|
|
72
|
+
- Create tasks directly under the feature
|
|
73
|
+
- For small tasks
|
|
74
|
+
- Create standalone tasks
|
|
75
|
+
|
|
76
|
+
2. **Claim & Work on Tasks**
|
|
77
|
+
- AI agent claims next available task
|
|
78
|
+
- Works on the specific task requirements
|
|
79
|
+
- Marks task complete with file changes documented
|
|
80
|
+
|
|
81
|
+
3. **Track Progress**
|
|
82
|
+
- View completed vs. pending work
|
|
83
|
+
- See dependency relationships
|
|
84
|
+
- Monitor overall project health
|
|
85
|
+
|
|
86
|
+
## Available Tools
|
|
87
|
+
|
|
88
|
+
### Core Object Management
|
|
89
|
+
|
|
90
|
+
- **create_object** - Create projects, epics, features, or tasks with hierarchical relationships
|
|
91
|
+
- **update_object** - Modify object properties, status, priority, or prerequisites
|
|
92
|
+
- **get_object** - Retrieve detailed object information with history and relationships
|
|
93
|
+
- **list_objects** - Query and filter objects by type, status, priority, or scope
|
|
94
|
+
- **delete_object** - Remove objects (with dependency validation)
|
|
95
|
+
- **replace_object_body_regex** - Make targeted content edits using regex patterns
|
|
96
|
+
|
|
97
|
+
### Task Workflow Management
|
|
98
|
+
|
|
99
|
+
- **claim_task** - Claim available tasks for execution with automatic priority ordering
|
|
100
|
+
- **complete_task** - Mark tasks complete with file change documentation
|
|
101
|
+
- **append_object_log** - Add progress notes and status updates to task history
|
|
102
|
+
|
|
103
|
+
### System Management
|
|
104
|
+
|
|
105
|
+
- **activate** - Initialize the task system (if not configured via command line)
|
|
106
|
+
- **prune_closed** - Clean up old completed/cancelled objects for maintenance
|
|
107
|
+
|
|
108
|
+
## Project Hierarchy
|
|
109
|
+
|
|
110
|
+
Task Trellis supports a flexible 4-level hierarchy:
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
Project (Top-level container)
|
|
114
|
+
└── Epic (Large feature groupings)
|
|
115
|
+
└── Feature (Specific functionality)
|
|
116
|
+
└── Task (Individual work items)
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Supported Patterns:**
|
|
120
|
+
|
|
121
|
+
- Full hierarchy: `Project → Epic → Feature → Task`
|
|
122
|
+
- Simplified: `Feature → Task`
|
|
123
|
+
- Standalone: `Task` only
|
|
124
|
+
|
|
125
|
+
## Prerequisites & Dependencies
|
|
126
|
+
|
|
127
|
+
Tasks can have prerequisites that must be completed before they become available:
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
{
|
|
131
|
+
"type": "task",
|
|
132
|
+
"title": "Deploy authentication system",
|
|
133
|
+
"prerequisites": ["T-user-registration", "T-login-system", "T-email-verification"]
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## File Storage
|
|
138
|
+
|
|
139
|
+
Task Trellis uses a local file-based storage system with different hierarchy patterns:
|
|
140
|
+
|
|
141
|
+
### Full Project Hierarchy
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
your-project/
|
|
145
|
+
└── .trellis/
|
|
146
|
+
└── p/
|
|
147
|
+
└── P-project-id/
|
|
148
|
+
└── e/
|
|
149
|
+
└── E-epic-id/
|
|
150
|
+
└── f/
|
|
151
|
+
└── F-feature-id/
|
|
152
|
+
└── t/
|
|
153
|
+
├── open/
|
|
154
|
+
│ └── T-task-id.md
|
|
155
|
+
└── closed/
|
|
156
|
+
└── T-completed-task-id.md
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Feature-Only Hierarchy
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
your-project/
|
|
163
|
+
└── .trellis/
|
|
164
|
+
└── f/
|
|
165
|
+
└── F-feature-id/
|
|
166
|
+
└── t/
|
|
167
|
+
├── open/
|
|
168
|
+
│ └── T-task-id.md
|
|
169
|
+
└── closed/
|
|
170
|
+
└── T-completed-task-id.md
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Standalone Tasks
|
|
174
|
+
|
|
175
|
+
```
|
|
176
|
+
your-project/
|
|
177
|
+
└── .trellis/
|
|
178
|
+
└── t/
|
|
179
|
+
├── open/
|
|
180
|
+
│ └── T-task-id.md
|
|
181
|
+
└── closed/
|
|
182
|
+
└── T-completed-task-id.md
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Each object is stored as a Markdown file with YAML frontmatter metadata and content body.
|
|
186
|
+
|
|
187
|
+
## Installation
|
|
188
|
+
|
|
189
|
+
### Claude Code
|
|
190
|
+
|
|
191
|
+
The easiest way to install Task Trellis MCP in Claude Code:
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
claude mcp add @langadventurellc/task-trellis-mcp --projectRootFolder "$(pwd)"
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Or (you'll be required to call the activate tool once to set the project root folder):
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
claude mcp add @langadventurellc/task-trellis-mcp
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### VS Code with GitHub Copilot
|
|
204
|
+
|
|
205
|
+
1. Add Task Trellis to your VS Code settings. Open your settings JSON file and add:
|
|
206
|
+
|
|
207
|
+
```json
|
|
208
|
+
{
|
|
209
|
+
"github.copilot.chat.mcpServers": {
|
|
210
|
+
"task-trellis": {
|
|
211
|
+
"command": "npx",
|
|
212
|
+
"args": [
|
|
213
|
+
"-y",
|
|
214
|
+
"@langadventurellc/task-trellis-mcp",
|
|
215
|
+
"--projectRootFolder",
|
|
216
|
+
"${workspaceFolder}"
|
|
217
|
+
]
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Cursor
|
|
224
|
+
|
|
225
|
+
Install Task Trellis MCP in Cursor by adding to your Cursor settings:
|
|
226
|
+
|
|
227
|
+
**Method 1: Via Settings UI**
|
|
228
|
+
|
|
229
|
+
1. Open Cursor Settings (⌘/Ctrl + ,)
|
|
230
|
+
2. Search for "MCP"
|
|
231
|
+
3. Add new server with:
|
|
232
|
+
- **Name**: `task-trellis`
|
|
233
|
+
- **Command**: `npx`
|
|
234
|
+
- **Args**: `["-y", "@langadventurellc/task-trellis-mcp", "--projectRootFolder", "${workspaceFolder}"]`
|
|
235
|
+
|
|
236
|
+
**Method 2: Via Configuration File**
|
|
237
|
+
Add to your Cursor configuration:
|
|
238
|
+
|
|
239
|
+
```json
|
|
240
|
+
{
|
|
241
|
+
"mcpServers": {
|
|
242
|
+
"task-trellis": {
|
|
243
|
+
"command": "npx",
|
|
244
|
+
"args": [
|
|
245
|
+
"-y",
|
|
246
|
+
"@langadventurellc/task-trellis-mcp",
|
|
247
|
+
"--projectRootFolder",
|
|
248
|
+
"${workspaceFolder}"
|
|
249
|
+
]
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### Windsurf
|
|
256
|
+
|
|
257
|
+
Add Task Trellis to your Windsurf MCP configuration:
|
|
258
|
+
|
|
259
|
+
```json
|
|
260
|
+
{
|
|
261
|
+
"mcpServers": {
|
|
262
|
+
"task-trellis": {
|
|
263
|
+
"command": "npx",
|
|
264
|
+
"args": [
|
|
265
|
+
"-y",
|
|
266
|
+
"@langadventurellc/task-trellis-mcp",
|
|
267
|
+
"--projectRootFolder",
|
|
268
|
+
"${workspaceRoot}"
|
|
269
|
+
]
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### Cline (VS Code Extension)
|
|
276
|
+
|
|
277
|
+
1. Add Task Trellis to your Cline MCP servers in VS Code settings:
|
|
278
|
+
|
|
279
|
+
```json
|
|
280
|
+
{
|
|
281
|
+
"cline.mcpServers": {
|
|
282
|
+
"task-trellis": {
|
|
283
|
+
"command": "npx",
|
|
284
|
+
"args": [
|
|
285
|
+
"-y",
|
|
286
|
+
"@langadventurellc/task-trellis-mcp",
|
|
287
|
+
"--projectRootFolder",
|
|
288
|
+
"${workspaceFolder}"
|
|
289
|
+
]
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### Continue (VS Code Extension)
|
|
296
|
+
|
|
297
|
+
1. Add to your Continue configuration file (`~/.continue/config.json`):
|
|
298
|
+
|
|
299
|
+
```json
|
|
300
|
+
{
|
|
301
|
+
"mcpServers": {
|
|
302
|
+
"task-trellis": {
|
|
303
|
+
"command": "npx",
|
|
304
|
+
"args": [
|
|
305
|
+
"-y",
|
|
306
|
+
"@langadventurellc/task-trellis-mcp",
|
|
307
|
+
"--projectRootFolder",
|
|
308
|
+
"/path/to/your/project"
|
|
309
|
+
]
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### Other MCP Clients
|
|
316
|
+
|
|
317
|
+
For any MCP-compatible client, use this configuration:
|
|
318
|
+
|
|
319
|
+
```json
|
|
320
|
+
{
|
|
321
|
+
"mcpServers": {
|
|
322
|
+
"task-trellis": {
|
|
323
|
+
"command": "npx",
|
|
324
|
+
"args": [
|
|
325
|
+
"-y",
|
|
326
|
+
"@langadventurellc/task-trellis-mcp",
|
|
327
|
+
"--projectRootFolder",
|
|
328
|
+
"/absolute/path/to/project"
|
|
329
|
+
]
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
## Quick Test
|
|
336
|
+
|
|
337
|
+
After installation, test that Task Trellis is working by asking your AI assistant:
|
|
338
|
+
|
|
339
|
+
> "Create a new project called 'My Test Project'"
|
|
340
|
+
|
|
341
|
+
If configured correctly, the AI should respond with a confirmation and create the project structure in your specified project root folder.
|
|
342
|
+
|
|
343
|
+
## Configuration Options
|
|
344
|
+
|
|
345
|
+
The Task Trellis MCP server supports these command-line options:
|
|
44
346
|
|
|
45
347
|
- `--mode <mode>` - Server mode (default: "local")
|
|
46
348
|
- `local` - Use local file-based storage
|
|
47
|
-
- `remote` - Use remote repository (
|
|
349
|
+
- `remote` - Use remote repository (planned feature)
|
|
48
350
|
|
|
49
351
|
- `--projectRootFolder <path>` - Project root folder path
|
|
50
|
-
-
|
|
352
|
+
- Creates a `.trellis` folder inside the project root for task storage
|
|
51
353
|
- Example: `--projectRootFolder /path/to/my-project` creates `/path/to/my-project/.trellis/`
|
|
52
354
|
|
|
53
|
-
**
|
|
355
|
+
**Advanced Configuration Example:**
|
|
54
356
|
|
|
55
357
|
```json
|
|
56
358
|
{
|
|
@@ -70,12 +372,28 @@ The server accepts the following optional command line arguments:
|
|
|
70
372
|
}
|
|
71
373
|
```
|
|
72
374
|
|
|
73
|
-
|
|
375
|
+
## Troubleshooting
|
|
376
|
+
|
|
377
|
+
### Common Issues
|
|
378
|
+
|
|
379
|
+
**Tasks not appearing:**
|
|
380
|
+
|
|
381
|
+
- Ensure prerequisites are completed
|
|
382
|
+
- Check task status (should be 'open' or 'draft')
|
|
383
|
+
- Verify project scope configuration
|
|
384
|
+
|
|
385
|
+
**Configuration issues:**
|
|
386
|
+
|
|
387
|
+
- Validate JSON syntax in MCP client configuration
|
|
388
|
+
- Ensure absolute paths are used for `--projectRootFolder`
|
|
389
|
+
- Restart your MCP client after configuration changes
|
|
390
|
+
|
|
391
|
+
### Getting Help
|
|
392
|
+
|
|
393
|
+
- **Issues**: [Report bugs or feature requests](https://github.com/langadventurellc/task-trellis-mcp/issues)
|
|
394
|
+
- **Documentation**: Check this README and inline tool descriptions
|
|
395
|
+
- **Community**: Share experiences and get help from other users
|
|
74
396
|
|
|
75
|
-
|
|
397
|
+
## License
|
|
76
398
|
|
|
77
|
-
-
|
|
78
|
-
- `npm run dev` - Watch mode for development
|
|
79
|
-
- `npm test` - Run Jest tests
|
|
80
|
-
- `npm run test:watch` - Run tests in watch mode
|
|
81
|
-
- `npm run quality` - Run linting, formatting, and type checks
|
|
399
|
+
GPL-3.0-only - see [LICENSE](LICENSE) file for details.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activation.e2e.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/e2e/configuration/activation.e2e.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
|
|
7
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/client/stdio.js");
|
|
8
|
+
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
9
|
+
const utils_1 = require("../utils");
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
describe("E2E Configuration - Activation", () => {
|
|
12
|
+
let testEnv;
|
|
13
|
+
let client = null;
|
|
14
|
+
let transport = null;
|
|
15
|
+
beforeEach(() => {
|
|
16
|
+
testEnv = new utils_1.TestEnvironment();
|
|
17
|
+
testEnv.setup();
|
|
18
|
+
});
|
|
19
|
+
afterEach(async () => {
|
|
20
|
+
if (client) {
|
|
21
|
+
await client.close();
|
|
22
|
+
client = null;
|
|
23
|
+
}
|
|
24
|
+
if (transport) {
|
|
25
|
+
await transport.close();
|
|
26
|
+
transport = null;
|
|
27
|
+
}
|
|
28
|
+
testEnv?.cleanup();
|
|
29
|
+
});
|
|
30
|
+
async function connectWithoutProjectRoot() {
|
|
31
|
+
transport = new stdio_js_1.StdioClientTransport({
|
|
32
|
+
command: "node",
|
|
33
|
+
args: ["dist/server.js", "--mode", "local"], // No --projectRootFolder
|
|
34
|
+
});
|
|
35
|
+
client = new index_js_1.Client({ name: "test-client", version: "1.0.0" }, { capabilities: {} });
|
|
36
|
+
await client.connect(transport);
|
|
37
|
+
}
|
|
38
|
+
async function callTool(name, args = {}) {
|
|
39
|
+
if (!client) {
|
|
40
|
+
throw new Error("Client not connected");
|
|
41
|
+
}
|
|
42
|
+
return client.request({
|
|
43
|
+
method: "tools/call",
|
|
44
|
+
params: { name, arguments: args },
|
|
45
|
+
}, types_js_1.CallToolResultSchema);
|
|
46
|
+
}
|
|
47
|
+
describe("Local Mode Activation", () => {
|
|
48
|
+
it("should activate server with local mode and create .trellis directory", async () => {
|
|
49
|
+
await connectWithoutProjectRoot();
|
|
50
|
+
const response = await callTool("activate", {
|
|
51
|
+
mode: "local",
|
|
52
|
+
projectRoot: testEnv.projectRoot,
|
|
53
|
+
});
|
|
54
|
+
expect(response.content[0].type).toBe("text");
|
|
55
|
+
expect(response.content[0].text).toMatch(/Activated in local mode/);
|
|
56
|
+
expect(response.content[0].text).toContain(testEnv.projectRoot);
|
|
57
|
+
expect(response.content[0].text).toContain("planningRootFolder");
|
|
58
|
+
// Verify .trellis directory exists after creating an object
|
|
59
|
+
await callTool("create_object", {
|
|
60
|
+
type: "project",
|
|
61
|
+
title: "Test Project",
|
|
62
|
+
});
|
|
63
|
+
const trellisDir = path_1.default.join(testEnv.projectRoot, ".trellis");
|
|
64
|
+
expect(await (0, utils_1.pathExists)(trellisDir)).toBe(true);
|
|
65
|
+
});
|
|
66
|
+
it("should allow tool usage after activation", async () => {
|
|
67
|
+
await connectWithoutProjectRoot();
|
|
68
|
+
// Try to use tool before activation - should fail
|
|
69
|
+
const errorResponse = await callTool("list_objects", {});
|
|
70
|
+
expect(errorResponse.content[0].text).toContain("Planning root folder is not configured");
|
|
71
|
+
// Activate
|
|
72
|
+
await callTool("activate", {
|
|
73
|
+
mode: "local",
|
|
74
|
+
projectRoot: testEnv.projectRoot,
|
|
75
|
+
});
|
|
76
|
+
// Should now work
|
|
77
|
+
const response = await callTool("list_objects", { type: "project" });
|
|
78
|
+
expect(response.content[0].text).not.toContain("not configured");
|
|
79
|
+
});
|
|
80
|
+
it("should handle multiple activations with different paths", async () => {
|
|
81
|
+
await connectWithoutProjectRoot();
|
|
82
|
+
// First activation
|
|
83
|
+
await callTool("activate", {
|
|
84
|
+
mode: "local",
|
|
85
|
+
projectRoot: testEnv.projectRoot,
|
|
86
|
+
});
|
|
87
|
+
// Create an object
|
|
88
|
+
await callTool("create_object", {
|
|
89
|
+
type: "project",
|
|
90
|
+
title: "Test Project",
|
|
91
|
+
});
|
|
92
|
+
// Second activation with different path
|
|
93
|
+
const newPath = path_1.default.join(testEnv.projectRoot, "subdir");
|
|
94
|
+
await callTool("activate", {
|
|
95
|
+
mode: "local",
|
|
96
|
+
projectRoot: newPath,
|
|
97
|
+
});
|
|
98
|
+
// Objects from first activation should not be visible
|
|
99
|
+
const response = await callTool("list_objects", { type: "project" });
|
|
100
|
+
expect(response.content[0].text).toBe("[]");
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
describe("Remote Mode Activation", () => {
|
|
104
|
+
it("should activate server with remote mode parameters", async () => {
|
|
105
|
+
await connectWithoutProjectRoot();
|
|
106
|
+
const response = await callTool("activate", {
|
|
107
|
+
mode: "remote",
|
|
108
|
+
apiToken: "test-token",
|
|
109
|
+
url: "https://api.example.com",
|
|
110
|
+
remoteProjectId: "proj-123",
|
|
111
|
+
});
|
|
112
|
+
expect(response.content[0].text).toMatch(/Activated in remote mode/);
|
|
113
|
+
expect(response.content[0].text).toContain("test-token");
|
|
114
|
+
expect(response.content[0].text).toContain("https://api.example.com");
|
|
115
|
+
expect(response.content[0].text).toContain("proj-123");
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
describe("Parameter Validation", () => {
|
|
119
|
+
it("should handle local mode without projectRoot", async () => {
|
|
120
|
+
await connectWithoutProjectRoot();
|
|
121
|
+
const response = await callTool("activate", {
|
|
122
|
+
mode: "local",
|
|
123
|
+
});
|
|
124
|
+
// Should succeed but planningRootFolder will be undefined
|
|
125
|
+
expect(response.content[0].text).toContain("Activated in local mode");
|
|
126
|
+
expect(response.content[0].text).not.toContain("planningRootFolder");
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
//# sourceMappingURL=activation.e2e.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activation.e2e.test.js","sourceRoot":"","sources":["../../../../src/__tests__/e2e/configuration/activation.e2e.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commandLineArgs.e2e.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/e2e/configuration/commandLineArgs.e2e.test.ts"],"names":[],"mappings":""}
|