@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,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const TrellisObjectStatus_1 = require("../../models/TrellisObjectStatus");
|
|
4
|
+
const TrellisObjectType_1 = require("../../models/TrellisObjectType");
|
|
5
|
+
const TrellisObjectPriority_1 = require("../../models/TrellisObjectPriority");
|
|
6
|
+
const pruneClosedTool_1 = require("../pruneClosedTool");
|
|
7
|
+
jest.mock("../../models/isClosed", () => ({
|
|
8
|
+
isClosed: jest.fn(),
|
|
9
|
+
}));
|
|
10
|
+
const { isClosed } = require("../../models/isClosed");
|
|
11
|
+
describe("pruneClosedTool", () => {
|
|
12
|
+
let mockRepository;
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
mockRepository = {
|
|
15
|
+
getObjectById: jest.fn(),
|
|
16
|
+
getObjects: jest.fn(),
|
|
17
|
+
saveObject: jest.fn(),
|
|
18
|
+
deleteObject: jest.fn(),
|
|
19
|
+
};
|
|
20
|
+
isClosed.mockClear();
|
|
21
|
+
});
|
|
22
|
+
describe("handlePruneClosed", () => {
|
|
23
|
+
const createMockObject = (id, status, updatedTime) => ({
|
|
24
|
+
id,
|
|
25
|
+
type: TrellisObjectType_1.TrellisObjectType.TASK,
|
|
26
|
+
title: `Test ${id}`,
|
|
27
|
+
status,
|
|
28
|
+
priority: TrellisObjectPriority_1.TrellisObjectPriority.MEDIUM,
|
|
29
|
+
parent: undefined,
|
|
30
|
+
prerequisites: [],
|
|
31
|
+
affectedFiles: new Map(),
|
|
32
|
+
log: [],
|
|
33
|
+
schema: "1.0",
|
|
34
|
+
childrenIds: [],
|
|
35
|
+
created: new Date().toISOString(),
|
|
36
|
+
updated: updatedTime,
|
|
37
|
+
body: "",
|
|
38
|
+
});
|
|
39
|
+
it("should prune old closed objects", async () => {
|
|
40
|
+
const oldClosedObject = createMockObject("T-old-closed", TrellisObjectStatus_1.TrellisObjectStatus.DONE, new Date(Date.now() - 2 * 60 * 60 * 1000).toISOString());
|
|
41
|
+
mockRepository.getObjects.mockResolvedValue([oldClosedObject]);
|
|
42
|
+
isClosed.mockReturnValue(true);
|
|
43
|
+
mockRepository.deleteObject.mockResolvedValue(undefined);
|
|
44
|
+
const result = await (0, pruneClosedTool_1.handlePruneClosed)(mockRepository, { age: 60 }); // 1 hour
|
|
45
|
+
expect(mockRepository.getObjects).toHaveBeenCalledWith(true, undefined);
|
|
46
|
+
expect(isClosed).toHaveBeenCalledWith(oldClosedObject, 0, [
|
|
47
|
+
oldClosedObject,
|
|
48
|
+
]);
|
|
49
|
+
expect(mockRepository.deleteObject).toHaveBeenCalledWith("T-old-closed", true);
|
|
50
|
+
expect(result.content[0].text).toContain("Pruned 1 closed objects older than 60 minutes");
|
|
51
|
+
expect(result.content[0].text).toContain("T-old-closed");
|
|
52
|
+
});
|
|
53
|
+
it("should not prune recent closed objects", async () => {
|
|
54
|
+
const recentClosedObject = createMockObject("T-recent-closed", TrellisObjectStatus_1.TrellisObjectStatus.DONE, new Date(Date.now() - 30 * 60 * 1000).toISOString());
|
|
55
|
+
mockRepository.getObjects.mockResolvedValue([recentClosedObject]);
|
|
56
|
+
isClosed.mockReturnValue(true);
|
|
57
|
+
const result = await (0, pruneClosedTool_1.handlePruneClosed)(mockRepository, { age: 60 }); // 1 hour
|
|
58
|
+
expect(mockRepository.getObjects).toHaveBeenCalledWith(true, undefined);
|
|
59
|
+
expect(isClosed).toHaveBeenCalledWith(recentClosedObject, 0, [
|
|
60
|
+
recentClosedObject,
|
|
61
|
+
]);
|
|
62
|
+
expect(mockRepository.deleteObject).not.toHaveBeenCalled();
|
|
63
|
+
expect(result.content[0].text).toContain("Pruned 0 closed objects older than 60 minutes");
|
|
64
|
+
});
|
|
65
|
+
it("should not prune open objects", async () => {
|
|
66
|
+
const openObject = createMockObject("T-open", TrellisObjectStatus_1.TrellisObjectStatus.IN_PROGRESS, new Date(Date.now() - 2 * 60 * 60 * 1000).toISOString());
|
|
67
|
+
mockRepository.getObjects.mockResolvedValue([openObject]);
|
|
68
|
+
isClosed.mockReturnValue(false);
|
|
69
|
+
const result = await (0, pruneClosedTool_1.handlePruneClosed)(mockRepository, { age: 60 }); // 1 hour
|
|
70
|
+
expect(mockRepository.getObjects).toHaveBeenCalledWith(true, undefined);
|
|
71
|
+
expect(isClosed).toHaveBeenCalledWith(openObject, 0, [openObject]);
|
|
72
|
+
expect(mockRepository.deleteObject).not.toHaveBeenCalled();
|
|
73
|
+
expect(result.content[0].text).toContain("Pruned 0 closed objects older than 60 minutes");
|
|
74
|
+
});
|
|
75
|
+
it("should handle scope parameter", async () => {
|
|
76
|
+
const oldClosedObject = createMockObject("T-scoped-closed", TrellisObjectStatus_1.TrellisObjectStatus.DONE, new Date(Date.now() - 2 * 60 * 60 * 1000).toISOString());
|
|
77
|
+
mockRepository.getObjects.mockResolvedValue([oldClosedObject]);
|
|
78
|
+
isClosed.mockReturnValue(true);
|
|
79
|
+
mockRepository.deleteObject.mockResolvedValue(undefined);
|
|
80
|
+
const result = await (0, pruneClosedTool_1.handlePruneClosed)(mockRepository, {
|
|
81
|
+
age: 60,
|
|
82
|
+
scope: "F-test-feature",
|
|
83
|
+
});
|
|
84
|
+
expect(mockRepository.getObjects).toHaveBeenCalledWith(true, "F-test-feature");
|
|
85
|
+
expect(result.content[0].text).toContain("in scope F-test-feature");
|
|
86
|
+
});
|
|
87
|
+
it("should handle mixed object types and statuses", async () => {
|
|
88
|
+
const oldDoneTask = createMockObject("T-old-done", TrellisObjectStatus_1.TrellisObjectStatus.DONE, new Date(Date.now() - 2 * 60 * 60 * 1000).toISOString());
|
|
89
|
+
const oldWontDoTask = createMockObject("T-old-wont-do", TrellisObjectStatus_1.TrellisObjectStatus.WONT_DO, new Date(Date.now() - 2 * 60 * 60 * 1000).toISOString());
|
|
90
|
+
const recentDoneTask = createMockObject("T-recent-done", TrellisObjectStatus_1.TrellisObjectStatus.DONE, new Date(Date.now() - 30 * 60 * 1000).toISOString());
|
|
91
|
+
const openTask = createMockObject("T-open", TrellisObjectStatus_1.TrellisObjectStatus.IN_PROGRESS, new Date(Date.now() - 2 * 60 * 60 * 1000).toISOString());
|
|
92
|
+
mockRepository.getObjects.mockResolvedValue([
|
|
93
|
+
oldDoneTask,
|
|
94
|
+
oldWontDoTask,
|
|
95
|
+
recentDoneTask,
|
|
96
|
+
openTask,
|
|
97
|
+
]);
|
|
98
|
+
isClosed.mockImplementation((obj) => obj.status === TrellisObjectStatus_1.TrellisObjectStatus.DONE ||
|
|
99
|
+
obj.status === TrellisObjectStatus_1.TrellisObjectStatus.WONT_DO);
|
|
100
|
+
mockRepository.deleteObject.mockResolvedValue(undefined);
|
|
101
|
+
const result = await (0, pruneClosedTool_1.handlePruneClosed)(mockRepository, { age: 60 });
|
|
102
|
+
expect(mockRepository.deleteObject).toHaveBeenCalledTimes(2);
|
|
103
|
+
expect(mockRepository.deleteObject).toHaveBeenCalledWith("T-old-done", true);
|
|
104
|
+
expect(mockRepository.deleteObject).toHaveBeenCalledWith("T-old-wont-do", true);
|
|
105
|
+
expect(result.content[0].text).toContain("Pruned 2 closed objects");
|
|
106
|
+
expect(result.content[0].text).toContain("T-old-done");
|
|
107
|
+
expect(result.content[0].text).toContain("T-old-wont-do");
|
|
108
|
+
});
|
|
109
|
+
it("should handle deletion failures gracefully", async () => {
|
|
110
|
+
const oldClosedObject1 = createMockObject("T-old-closed-1", TrellisObjectStatus_1.TrellisObjectStatus.DONE, new Date(Date.now() - 2 * 60 * 60 * 1000).toISOString());
|
|
111
|
+
const oldClosedObject2 = createMockObject("T-old-closed-2", TrellisObjectStatus_1.TrellisObjectStatus.DONE, new Date(Date.now() - 2 * 60 * 60 * 1000).toISOString());
|
|
112
|
+
mockRepository.getObjects.mockResolvedValue([
|
|
113
|
+
oldClosedObject1,
|
|
114
|
+
oldClosedObject2,
|
|
115
|
+
]);
|
|
116
|
+
isClosed.mockReturnValue(true);
|
|
117
|
+
// First deletion fails, second succeeds
|
|
118
|
+
mockRepository.deleteObject
|
|
119
|
+
.mockRejectedValueOnce(new Error("Permission denied"))
|
|
120
|
+
.mockResolvedValueOnce(undefined);
|
|
121
|
+
// Mock console.error to check error logging
|
|
122
|
+
const consoleSpy = jest.spyOn(console, "error").mockImplementation();
|
|
123
|
+
const result = await (0, pruneClosedTool_1.handlePruneClosed)(mockRepository, { age: 60 });
|
|
124
|
+
expect(mockRepository.deleteObject).toHaveBeenCalledTimes(2);
|
|
125
|
+
expect(consoleSpy).toHaveBeenCalledWith("Failed to delete object T-old-closed-1:", expect.any(Error));
|
|
126
|
+
expect(result.content[0].text).toContain("Pruned 1 closed objects");
|
|
127
|
+
expect(result.content[0].text).toContain("T-old-closed-2");
|
|
128
|
+
expect(result.content[0].text).not.toContain("T-old-closed-1");
|
|
129
|
+
consoleSpy.mockRestore();
|
|
130
|
+
});
|
|
131
|
+
it("should handle repository getObjects error", async () => {
|
|
132
|
+
const errorMessage = "Repository connection failed";
|
|
133
|
+
mockRepository.getObjects.mockRejectedValue(new Error(errorMessage));
|
|
134
|
+
const result = await (0, pruneClosedTool_1.handlePruneClosed)(mockRepository, { age: 60 });
|
|
135
|
+
expect(result.content[0].text).toContain("Error pruning closed objects");
|
|
136
|
+
expect(result.content[0].text).toContain(errorMessage);
|
|
137
|
+
});
|
|
138
|
+
it("should handle empty object list", async () => {
|
|
139
|
+
mockRepository.getObjects.mockResolvedValue([]);
|
|
140
|
+
const result = await (0, pruneClosedTool_1.handlePruneClosed)(mockRepository, { age: 60 });
|
|
141
|
+
expect(mockRepository.deleteObject).not.toHaveBeenCalled();
|
|
142
|
+
expect(result.content[0].text).toContain("Pruned 0 closed objects");
|
|
143
|
+
});
|
|
144
|
+
it("should handle zero age parameter", async () => {
|
|
145
|
+
const oldClosedObject = createMockObject("T-old-closed", TrellisObjectStatus_1.TrellisObjectStatus.DONE, new Date(Date.now() - 1000).toISOString());
|
|
146
|
+
mockRepository.getObjects.mockResolvedValue([oldClosedObject]);
|
|
147
|
+
isClosed.mockReturnValue(true);
|
|
148
|
+
mockRepository.deleteObject.mockResolvedValue(undefined);
|
|
149
|
+
const result = await (0, pruneClosedTool_1.handlePruneClosed)(mockRepository, { age: 0 });
|
|
150
|
+
expect(mockRepository.deleteObject).toHaveBeenCalledWith("T-old-closed", true);
|
|
151
|
+
expect(result.content[0].text).toContain("Pruned 1 closed objects older than 0 minutes");
|
|
152
|
+
});
|
|
153
|
+
it("should handle large age parameter", async () => {
|
|
154
|
+
const veryOldObject = createMockObject("T-ancient", TrellisObjectStatus_1.TrellisObjectStatus.DONE, new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString());
|
|
155
|
+
mockRepository.getObjects.mockResolvedValue([veryOldObject]);
|
|
156
|
+
isClosed.mockReturnValue(true);
|
|
157
|
+
mockRepository.deleteObject.mockResolvedValue(undefined);
|
|
158
|
+
const result = await (0, pruneClosedTool_1.handlePruneClosed)(mockRepository, { age: 999999 });
|
|
159
|
+
expect(mockRepository.deleteObject).not.toHaveBeenCalled();
|
|
160
|
+
expect(result.content[0].text).toContain("Pruned 0 closed objects older than 999999 minutes");
|
|
161
|
+
});
|
|
162
|
+
it("should handle non-Error exceptions", async () => {
|
|
163
|
+
const errorValue = "String error";
|
|
164
|
+
mockRepository.getObjects.mockRejectedValue(errorValue);
|
|
165
|
+
const result = await (0, pruneClosedTool_1.handlePruneClosed)(mockRepository, { age: 60 });
|
|
166
|
+
expect(result.content[0].text).toContain("Error pruning closed objects");
|
|
167
|
+
expect(result.content[0].text).toContain(errorValue);
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
//# sourceMappingURL=pruneClosedTool.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pruneClosedTool.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/pruneClosedTool.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replaceObjectBodyRegexTool.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/replaceObjectBodyRegexTool.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const models_1 = require("../../models");
|
|
4
|
+
const replaceObjectBodyRegexTool_1 = require("../replaceObjectBodyRegexTool");
|
|
5
|
+
describe("replaceObjectBodyRegexTool", () => {
|
|
6
|
+
let mockRepository;
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
mockRepository = {
|
|
9
|
+
getObjectById: jest.fn(),
|
|
10
|
+
getObjects: jest.fn(),
|
|
11
|
+
saveObject: jest.fn(),
|
|
12
|
+
deleteObject: jest.fn(),
|
|
13
|
+
};
|
|
14
|
+
jest.clearAllMocks();
|
|
15
|
+
});
|
|
16
|
+
describe("handleReplaceObjectBodyRegex", () => {
|
|
17
|
+
const mockTrellisObject = {
|
|
18
|
+
id: "T-test-task",
|
|
19
|
+
type: models_1.TrellisObjectType.TASK,
|
|
20
|
+
title: "Test Task",
|
|
21
|
+
status: models_1.TrellisObjectStatus.OPEN,
|
|
22
|
+
priority: models_1.TrellisObjectPriority.MEDIUM,
|
|
23
|
+
parent: "F-test-feature",
|
|
24
|
+
prerequisites: [],
|
|
25
|
+
affectedFiles: new Map(),
|
|
26
|
+
log: [],
|
|
27
|
+
schema: "1.0",
|
|
28
|
+
childrenIds: [],
|
|
29
|
+
body: "This is the old content that needs to be replaced with new content.",
|
|
30
|
+
created: "2025-01-15T10:00:00Z",
|
|
31
|
+
updated: "2025-01-15T10:00:00Z",
|
|
32
|
+
};
|
|
33
|
+
it("should successfully replace text using simple regex pattern", async () => {
|
|
34
|
+
mockRepository.getObjectById.mockResolvedValue(mockTrellisObject);
|
|
35
|
+
mockRepository.saveObject.mockResolvedValue();
|
|
36
|
+
const result = await (0, replaceObjectBodyRegexTool_1.handleReplaceObjectBodyRegex)(mockRepository, {
|
|
37
|
+
id: "T-test-task",
|
|
38
|
+
regex: "old content",
|
|
39
|
+
replacement: "new content",
|
|
40
|
+
});
|
|
41
|
+
const expectedUpdatedObject = {
|
|
42
|
+
...mockTrellisObject,
|
|
43
|
+
body: "This is the new content that needs to be replaced with new content.",
|
|
44
|
+
};
|
|
45
|
+
expect(mockRepository.getObjectById).toHaveBeenCalledWith("T-test-task");
|
|
46
|
+
expect(mockRepository.saveObject).toHaveBeenCalledWith(expectedUpdatedObject);
|
|
47
|
+
expect(result.content[0].text).toContain('Successfully replaced content in object body using pattern "old content"');
|
|
48
|
+
expect(result.content[0].text).toContain("T-test-task");
|
|
49
|
+
});
|
|
50
|
+
it("should successfully replace text using regex with backreferences", async () => {
|
|
51
|
+
const objectWithNames = {
|
|
52
|
+
...mockTrellisObject,
|
|
53
|
+
body: "Name: John Doe",
|
|
54
|
+
};
|
|
55
|
+
mockRepository.getObjectById.mockResolvedValue(objectWithNames);
|
|
56
|
+
mockRepository.saveObject.mockResolvedValue();
|
|
57
|
+
const result = await (0, replaceObjectBodyRegexTool_1.handleReplaceObjectBodyRegex)(mockRepository, {
|
|
58
|
+
id: "T-test-task",
|
|
59
|
+
regex: "Name: (\\w+) (\\w+)",
|
|
60
|
+
replacement: "Name: $2, $1",
|
|
61
|
+
});
|
|
62
|
+
const expectedUpdatedObject = {
|
|
63
|
+
...objectWithNames,
|
|
64
|
+
body: "Name: Doe, John",
|
|
65
|
+
};
|
|
66
|
+
expect(mockRepository.saveObject).toHaveBeenCalledWith(expectedUpdatedObject);
|
|
67
|
+
expect(result.content[0].text).toContain("Successfully replaced content");
|
|
68
|
+
});
|
|
69
|
+
it("should handle multiline regex patterns", async () => {
|
|
70
|
+
const objectWithMultilineContent = {
|
|
71
|
+
...mockTrellisObject,
|
|
72
|
+
body: `Section A:
|
|
73
|
+
This is old content
|
|
74
|
+
that spans multiple lines
|
|
75
|
+
End Section A`,
|
|
76
|
+
};
|
|
77
|
+
mockRepository.getObjectById.mockResolvedValue(objectWithMultilineContent);
|
|
78
|
+
mockRepository.saveObject.mockResolvedValue();
|
|
79
|
+
const result = await (0, replaceObjectBodyRegexTool_1.handleReplaceObjectBodyRegex)(mockRepository, {
|
|
80
|
+
id: "T-test-task",
|
|
81
|
+
regex: "Section A:.*?End Section A",
|
|
82
|
+
replacement: "Section A:\nThis is new content\nEnd Section A",
|
|
83
|
+
});
|
|
84
|
+
const expectedUpdatedObject = {
|
|
85
|
+
...objectWithMultilineContent,
|
|
86
|
+
body: "Section A:\nThis is new content\nEnd Section A",
|
|
87
|
+
};
|
|
88
|
+
expect(mockRepository.saveObject).toHaveBeenCalledWith(expectedUpdatedObject);
|
|
89
|
+
expect(result.content[0].text).toContain("Successfully replaced content");
|
|
90
|
+
});
|
|
91
|
+
it("should allow multiple occurrences when specified", async () => {
|
|
92
|
+
const objectWithRepeats = {
|
|
93
|
+
...mockTrellisObject,
|
|
94
|
+
body: "Replace this word and also replace this word again.",
|
|
95
|
+
};
|
|
96
|
+
mockRepository.getObjectById.mockResolvedValue(objectWithRepeats);
|
|
97
|
+
mockRepository.saveObject.mockResolvedValue();
|
|
98
|
+
const result = await (0, replaceObjectBodyRegexTool_1.handleReplaceObjectBodyRegex)(mockRepository, {
|
|
99
|
+
id: "T-test-task",
|
|
100
|
+
regex: "replace",
|
|
101
|
+
replacement: "update",
|
|
102
|
+
allowMultipleOccurrences: true,
|
|
103
|
+
});
|
|
104
|
+
const expectedUpdatedObject = {
|
|
105
|
+
...objectWithRepeats,
|
|
106
|
+
body: "Replace this word and also update this word again.",
|
|
107
|
+
};
|
|
108
|
+
expect(mockRepository.saveObject).toHaveBeenCalledWith(expectedUpdatedObject);
|
|
109
|
+
expect(result.content[0].text).toContain("Successfully replaced content");
|
|
110
|
+
});
|
|
111
|
+
it("should reject multiple occurrences when not allowed", async () => {
|
|
112
|
+
const objectWithRepeats = {
|
|
113
|
+
...mockTrellisObject,
|
|
114
|
+
body: "test content and more test content",
|
|
115
|
+
};
|
|
116
|
+
mockRepository.getObjectById.mockResolvedValue(objectWithRepeats);
|
|
117
|
+
const result = await (0, replaceObjectBodyRegexTool_1.handleReplaceObjectBodyRegex)(mockRepository, {
|
|
118
|
+
id: "T-test-task",
|
|
119
|
+
regex: "test",
|
|
120
|
+
replacement: "demo",
|
|
121
|
+
});
|
|
122
|
+
expect(mockRepository.saveObject).not.toHaveBeenCalled();
|
|
123
|
+
expect(result.content[0].text).toContain("Found 2 matches for pattern");
|
|
124
|
+
expect(result.content[0].text).toContain("allowMultipleOccurrences is false");
|
|
125
|
+
});
|
|
126
|
+
it("should return error when object is not found", async () => {
|
|
127
|
+
mockRepository.getObjectById.mockResolvedValue(null);
|
|
128
|
+
const result = await (0, replaceObjectBodyRegexTool_1.handleReplaceObjectBodyRegex)(mockRepository, {
|
|
129
|
+
id: "T-nonexistent",
|
|
130
|
+
regex: "old",
|
|
131
|
+
replacement: "new",
|
|
132
|
+
});
|
|
133
|
+
expect(mockRepository.getObjectById).toHaveBeenCalledWith("T-nonexistent");
|
|
134
|
+
expect(mockRepository.saveObject).not.toHaveBeenCalled();
|
|
135
|
+
expect(result.content[0].text).toBe("Error: Object with ID 'T-nonexistent' not found");
|
|
136
|
+
});
|
|
137
|
+
it("should return error when object has no body content", async () => {
|
|
138
|
+
const objectWithoutBody = {
|
|
139
|
+
...mockTrellisObject,
|
|
140
|
+
body: "",
|
|
141
|
+
};
|
|
142
|
+
mockRepository.getObjectById.mockResolvedValue(objectWithoutBody);
|
|
143
|
+
const result = await (0, replaceObjectBodyRegexTool_1.handleReplaceObjectBodyRegex)(mockRepository, {
|
|
144
|
+
id: "T-test-task",
|
|
145
|
+
regex: "old",
|
|
146
|
+
replacement: "new",
|
|
147
|
+
});
|
|
148
|
+
expect(mockRepository.saveObject).not.toHaveBeenCalled();
|
|
149
|
+
expect(result.content[0].text).toBe("Error: Object with ID 'T-test-task' has no body content to replace");
|
|
150
|
+
});
|
|
151
|
+
it("should inform user when no matches are found", async () => {
|
|
152
|
+
mockRepository.getObjectById.mockResolvedValue(mockTrellisObject);
|
|
153
|
+
const result = await (0, replaceObjectBodyRegexTool_1.handleReplaceObjectBodyRegex)(mockRepository, {
|
|
154
|
+
id: "T-test-task",
|
|
155
|
+
regex: "nonexistent pattern",
|
|
156
|
+
replacement: "new content",
|
|
157
|
+
});
|
|
158
|
+
expect(mockRepository.saveObject).not.toHaveBeenCalled();
|
|
159
|
+
expect(result.content[0].text).toBe('No matches found for pattern "nonexistent pattern" in object body. Body remains unchanged.');
|
|
160
|
+
});
|
|
161
|
+
it("should handle invalid regex patterns gracefully", async () => {
|
|
162
|
+
mockRepository.getObjectById.mockResolvedValue(mockTrellisObject);
|
|
163
|
+
const result = await (0, replaceObjectBodyRegexTool_1.handleReplaceObjectBodyRegex)(mockRepository, {
|
|
164
|
+
id: "T-test-task",
|
|
165
|
+
regex: "[invalid regex",
|
|
166
|
+
replacement: "new content",
|
|
167
|
+
});
|
|
168
|
+
expect(mockRepository.saveObject).not.toHaveBeenCalled();
|
|
169
|
+
expect(result.content[0].text).toContain("Error replacing object body:");
|
|
170
|
+
expect(result.content[0].text).toContain("Invalid regex pattern");
|
|
171
|
+
});
|
|
172
|
+
it("should handle repository errors gracefully", async () => {
|
|
173
|
+
mockRepository.getObjectById.mockRejectedValue(new Error("Database connection failed"));
|
|
174
|
+
const result = await (0, replaceObjectBodyRegexTool_1.handleReplaceObjectBodyRegex)(mockRepository, {
|
|
175
|
+
id: "T-test-task",
|
|
176
|
+
regex: "old",
|
|
177
|
+
replacement: "new",
|
|
178
|
+
});
|
|
179
|
+
expect(result.content[0].text).toBe("Error replacing object body: Database connection failed");
|
|
180
|
+
});
|
|
181
|
+
it("should handle save errors gracefully", async () => {
|
|
182
|
+
mockRepository.getObjectById.mockResolvedValue(mockTrellisObject);
|
|
183
|
+
mockRepository.saveObject.mockRejectedValue(new Error("Failed to save"));
|
|
184
|
+
const result = await (0, replaceObjectBodyRegexTool_1.handleReplaceObjectBodyRegex)(mockRepository, {
|
|
185
|
+
id: "T-test-task",
|
|
186
|
+
regex: "old content",
|
|
187
|
+
replacement: "new content",
|
|
188
|
+
});
|
|
189
|
+
expect(result.content[0].text).toBe("Error replacing object body: Failed to save");
|
|
190
|
+
});
|
|
191
|
+
it("should handle empty regex pattern", async () => {
|
|
192
|
+
mockRepository.getObjectById.mockResolvedValue(mockTrellisObject);
|
|
193
|
+
const result = await (0, replaceObjectBodyRegexTool_1.handleReplaceObjectBodyRegex)(mockRepository, {
|
|
194
|
+
id: "T-test-task",
|
|
195
|
+
regex: "",
|
|
196
|
+
replacement: "new content",
|
|
197
|
+
});
|
|
198
|
+
expect(mockRepository.saveObject).not.toHaveBeenCalled();
|
|
199
|
+
expect(result.content[0].text).toContain("Regex pattern cannot be empty");
|
|
200
|
+
});
|
|
201
|
+
it("should preserve object metadata when updating body", async () => {
|
|
202
|
+
mockRepository.getObjectById.mockResolvedValue(mockTrellisObject);
|
|
203
|
+
mockRepository.saveObject.mockResolvedValue();
|
|
204
|
+
await (0, replaceObjectBodyRegexTool_1.handleReplaceObjectBodyRegex)(mockRepository, {
|
|
205
|
+
id: "T-test-task",
|
|
206
|
+
regex: "old content",
|
|
207
|
+
replacement: "new content",
|
|
208
|
+
});
|
|
209
|
+
const savedObject = mockRepository.saveObject.mock.calls[0][0];
|
|
210
|
+
expect(savedObject.id).toBe(mockTrellisObject.id);
|
|
211
|
+
expect(savedObject.type).toBe(mockTrellisObject.type);
|
|
212
|
+
expect(savedObject.title).toBe(mockTrellisObject.title);
|
|
213
|
+
expect(savedObject.status).toBe(mockTrellisObject.status);
|
|
214
|
+
expect(savedObject.priority).toBe(mockTrellisObject.priority);
|
|
215
|
+
expect(savedObject.prerequisites).toBe(mockTrellisObject.prerequisites);
|
|
216
|
+
expect(savedObject.created).toBe(mockTrellisObject.created);
|
|
217
|
+
expect(savedObject.updated).toBe(mockTrellisObject.updated);
|
|
218
|
+
expect(savedObject.body).toBe("This is the new content that needs to be replaced with new content.");
|
|
219
|
+
});
|
|
220
|
+
it("should handle complex patterns with context", async () => {
|
|
221
|
+
const objectWithSections = {
|
|
222
|
+
...mockTrellisObject,
|
|
223
|
+
body: `# Header 1
|
|
224
|
+
Some content here
|
|
225
|
+
|
|
226
|
+
## Section to Update
|
|
227
|
+
Old implementation details
|
|
228
|
+
End of section
|
|
229
|
+
|
|
230
|
+
# Header 2
|
|
231
|
+
Other content`,
|
|
232
|
+
};
|
|
233
|
+
mockRepository.getObjectById.mockResolvedValue(objectWithSections);
|
|
234
|
+
mockRepository.saveObject.mockResolvedValue();
|
|
235
|
+
const result = await (0, replaceObjectBodyRegexTool_1.handleReplaceObjectBodyRegex)(mockRepository, {
|
|
236
|
+
id: "T-test-task",
|
|
237
|
+
regex: "(## Section to Update\\s+).*?(\\s+End of section)",
|
|
238
|
+
replacement: "$1New implementation details$2",
|
|
239
|
+
});
|
|
240
|
+
const expectedBody = `# Header 1
|
|
241
|
+
Some content here
|
|
242
|
+
|
|
243
|
+
## Section to Update
|
|
244
|
+
New implementation details
|
|
245
|
+
End of section
|
|
246
|
+
|
|
247
|
+
# Header 2
|
|
248
|
+
Other content`;
|
|
249
|
+
const expectedUpdatedObject = {
|
|
250
|
+
...objectWithSections,
|
|
251
|
+
body: expectedBody,
|
|
252
|
+
};
|
|
253
|
+
expect(mockRepository.saveObject).toHaveBeenCalledWith(expectedUpdatedObject);
|
|
254
|
+
expect(result.content[0].text).toContain("Successfully replaced content");
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
//# sourceMappingURL=replaceObjectBodyRegexTool.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replaceObjectBodyRegexTool.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/replaceObjectBodyRegexTool.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,8 @@ describe("updateObjectTool", () => {
|
|
|
33
33
|
schema: "1.0",
|
|
34
34
|
childrenIds: [],
|
|
35
35
|
body: "This is a test task",
|
|
36
|
+
created: "2025-01-15T10:00:00Z",
|
|
37
|
+
updated: "2025-01-15T10:00:00Z",
|
|
36
38
|
};
|
|
37
39
|
it("should successfully update an object with all properties", async () => {
|
|
38
40
|
mockRepository.getObjectById.mockResolvedValue(mockTrellisObject);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateObjectTool.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/updateObjectTool.test.ts"],"names":[],"mappings":";;AACA,yCAKsB;AACtB,0DAAyD;AAEzD,6CAA6C;AAC7C,IAAI,CAAC,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5D,wBAAwB,EAAE,IAAI,CAAC,EAAE,EAAE;CACpC,CAAC,CAAC,CAAC;AAEJ,wFAAqF;AAErF,MAAM,4BAA4B,GAChC,mDAEC,CAAC;AAEJ,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,cAAuC,CAAC;IAE5C,UAAU,CAAC,GAAG,EAAE;QACd,cAAc,GAAG;YACf,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE;YACxB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;YACrB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;YACrB,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;SACxB,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,MAAM,iBAAiB,GAAkB;YACvC,EAAE,EAAE,aAAa;YACjB,IAAI,EAAE,0BAAiB,CAAC,IAAI;YAC5B,KAAK,EAAE,WAAW;YAClB,MAAM,EAAE,4BAAmB,CAAC,IAAI;YAChC,QAAQ,EAAE,8BAAqB,CAAC,MAAM;YACtC,MAAM,EAAE,gBAAgB;YACxB,aAAa,EAAE,EAAE;YACjB,aAAa,EAAE,IAAI,GAAG,EAAE;YACxB,GAAG,EAAE,EAAE;YACP,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,qBAAqB;
|
|
1
|
+
{"version":3,"file":"updateObjectTool.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/updateObjectTool.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const activateTool: {
|
|
2
2
|
readonly name: "activate";
|
|
3
|
-
readonly description: "Activates the task trellis system in local or remote mode";
|
|
3
|
+
readonly description: "Activates the task trellis system in local or remote mode\n\nUse this tool to initialize and configure the task trellis system for operation. Must be called before any other task management operations can be performed.\n\nActivation modes:\n- 'local': Uses local file system for task storage and management\n- 'remote': Connects to remote task trellis service via API\n\nLocal mode requirements:\n- 'projectRoot': Absolute path to project directory where tasks will be stored\n- Creates local .task-trellis directory for data persistence\n- Suitable for single-user development workflows\n- No network dependencies once activated\n\nRemote mode requirements: \n- 'apiToken': Authentication token for remote service access\n- 'remoteProjectId': Unique identifier for remote project instance\n- 'url': Service endpoint (optional, uses default if not specified)\n- Enables collaborative task management across distributed teams\n- Requires network connectivity for all operations\n\nActivation process:\n1. Validates mode-specific parameters and connectivity\n2. Initializes data storage (local directory or remote connection)\n3. Verifies authentication and permissions\n4. Sets up task trellis schema and configuration\n5. Prepares system for task creation and management\n\nError conditions:\n- Invalid projectRoot path (local mode)\n- Authentication failure (remote mode)\n- Network connectivity issues (remote mode)\n- Insufficient file system permissions (local mode)\n\nMust be successfully completed before using any other task trellis tools. Re-activation with different parameters switches modes and resets system state.";
|
|
4
4
|
readonly inputSchema: {
|
|
5
5
|
readonly type: "object";
|
|
6
6
|
readonly properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activateTool.d.ts","sourceRoot":"","sources":["../../src/tools/activateTool.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"activateTool.d.ts","sourceRoot":"","sources":["../../src/tools/activateTool.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgEf,CAAC;AAEX,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO;;;;;EAqB3C"}
|
|
@@ -4,7 +4,41 @@ exports.activateTool = void 0;
|
|
|
4
4
|
exports.handleActivate = handleActivate;
|
|
5
5
|
exports.activateTool = {
|
|
6
6
|
name: "activate",
|
|
7
|
-
description:
|
|
7
|
+
description: `Activates the task trellis system in local or remote mode
|
|
8
|
+
|
|
9
|
+
Use this tool to initialize and configure the task trellis system for operation. Must be called before any other task management operations can be performed.
|
|
10
|
+
|
|
11
|
+
Activation modes:
|
|
12
|
+
- 'local': Uses local file system for task storage and management
|
|
13
|
+
- 'remote': Connects to remote task trellis service via API
|
|
14
|
+
|
|
15
|
+
Local mode requirements:
|
|
16
|
+
- 'projectRoot': Absolute path to project directory where tasks will be stored
|
|
17
|
+
- Creates local .task-trellis directory for data persistence
|
|
18
|
+
- Suitable for single-user development workflows
|
|
19
|
+
- No network dependencies once activated
|
|
20
|
+
|
|
21
|
+
Remote mode requirements:
|
|
22
|
+
- 'apiToken': Authentication token for remote service access
|
|
23
|
+
- 'remoteProjectId': Unique identifier for remote project instance
|
|
24
|
+
- 'url': Service endpoint (optional, uses default if not specified)
|
|
25
|
+
- Enables collaborative task management across distributed teams
|
|
26
|
+
- Requires network connectivity for all operations
|
|
27
|
+
|
|
28
|
+
Activation process:
|
|
29
|
+
1. Validates mode-specific parameters and connectivity
|
|
30
|
+
2. Initializes data storage (local directory or remote connection)
|
|
31
|
+
3. Verifies authentication and permissions
|
|
32
|
+
4. Sets up task trellis schema and configuration
|
|
33
|
+
5. Prepares system for task creation and management
|
|
34
|
+
|
|
35
|
+
Error conditions:
|
|
36
|
+
- Invalid projectRoot path (local mode)
|
|
37
|
+
- Authentication failure (remote mode)
|
|
38
|
+
- Network connectivity issues (remote mode)
|
|
39
|
+
- Insufficient file system permissions (local mode)
|
|
40
|
+
|
|
41
|
+
Must be successfully completed before using any other task trellis tools. Re-activation with different parameters switches modes and resets system state.`,
|
|
8
42
|
inputSchema: {
|
|
9
43
|
type: "object",
|
|
10
44
|
properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activateTool.js","sourceRoot":"","sources":["../../src/tools/activateTool.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"activateTool.js","sourceRoot":"","sources":["../../src/tools/activateTool.ts"],"names":[],"mappings":";;;AAkEA,wCAqBC;AAvFY,QAAA,YAAY,GAAG;IAC1B,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0JAkC2I;IACxJ,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;gBACzB,WAAW,EAAE,oCAAoC;aAClD;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6CAA6C;aAC3D;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,sCAAsC;aACpD;YACD,GAAG,EAAE;gBACH,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uDAAuD;aACrE;YACD,eAAe,EAAE;gBACf,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8CAA8C;aAC5D;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;CACO,CAAC;AAEX,SAAgB,cAAc,CAAC,IAAa;IAC1C,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,IAK5C,CAAC;IAEF,6DAA6D;IAC7D,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,cAAc,IAAI,CAAC,SAAS,CAChC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,EACpC,IAAI,EACJ,CAAC,CACF,EAAE;aACJ;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Repository } from "../repositories";
|
|
2
2
|
export declare const appendObjectLogTool: {
|
|
3
3
|
readonly name: "append_object_log";
|
|
4
|
-
readonly description: "Appends content to an object's log in the task trellis system";
|
|
4
|
+
readonly description: "Appends content to an object's log in the task trellis system\n\nUse this tool to add progress updates, notes, or activity records to an object's audit trail. Essential for tracking work history, documenting decisions, and maintaining transparency in task execution.\n\nLog entry purposes:\n- Record progress milestones and status changes\n- Document challenges encountered and solutions applied\n- Note important decisions or changes in approach\n- Track time spent or resources used\n- Log external dependencies or blockers\n- Record completion details and outcomes\n\nLog content guidelines:\n- Use clear, descriptive entries with context\n- Include timestamps (automatically added by system)\n- Reference specific files, commits, or external resources when relevant\n- Note any changes to scope, requirements, or approach\n- Document lessons learned or insights gained\n\nActivity tracking patterns:\n- Starting work: \"Started implementation of feature X\"\n- Progress updates: \"Completed database schema changes, moving to API layer\"\n- Blocking issues: \"Blocked on external API access, contacted team\"\n- Problem resolution: \"Resolved memory leak by optimizing data structure\"\n- Completion: \"Task completed, all tests passing, PR submitted\"\n\nThe log creates a permanent audit trail that helps with project retrospectives, debugging issues, and understanding work evolution over time.";
|
|
5
5
|
readonly inputSchema: {
|
|
6
6
|
readonly type: "object";
|
|
7
7
|
readonly properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appendObjectLogTool.d.ts","sourceRoot":"","sources":["../../src/tools/appendObjectLogTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"appendObjectLogTool.d.ts","sourceRoot":"","sources":["../../src/tools/appendObjectLogTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;CA2CtB,CAAC;AAEX,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,OAAO;;;;;GAoDd"}
|