@langadventurellc/task-trellis-mcp 0.1.0-rc.3
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/LICENSE +674 -0
- package/README.md +81 -0
- package/dist/configuration/ServerConfig.d.ts +8 -0
- package/dist/configuration/ServerConfig.d.ts.map +1 -0
- package/dist/configuration/ServerConfig.js +3 -0
- package/dist/configuration/ServerConfig.js.map +1 -0
- package/dist/configuration/index.d.ts +2 -0
- package/dist/configuration/index.d.ts.map +1 -0
- package/dist/configuration/index.js +18 -0
- package/dist/configuration/index.js.map +1 -0
- package/dist/models/TrellisObject.d.ts +18 -0
- package/dist/models/TrellisObject.d.ts.map +1 -0
- package/dist/models/TrellisObject.js +3 -0
- package/dist/models/TrellisObject.js.map +1 -0
- package/dist/models/TrellisObjectPriority.d.ts +6 -0
- package/dist/models/TrellisObjectPriority.d.ts.map +1 -0
- package/dist/models/TrellisObjectPriority.js +10 -0
- package/dist/models/TrellisObjectPriority.js.map +1 -0
- package/dist/models/TrellisObjectStatus.d.ts +8 -0
- package/dist/models/TrellisObjectStatus.d.ts.map +1 -0
- package/dist/models/TrellisObjectStatus.js +12 -0
- package/dist/models/TrellisObjectStatus.js.map +1 -0
- package/dist/models/TrellisObjectType.d.ts +7 -0
- package/dist/models/TrellisObjectType.d.ts.map +1 -0
- package/dist/models/TrellisObjectType.js +11 -0
- package/dist/models/TrellisObjectType.js.map +1 -0
- package/dist/models/__tests__/isClaimable.test.d.ts +2 -0
- package/dist/models/__tests__/isClaimable.test.d.ts.map +1 -0
- package/dist/models/__tests__/isClaimable.test.js +101 -0
- package/dist/models/__tests__/isClaimable.test.js.map +1 -0
- package/dist/models/__tests__/isClosed.test.d.ts +2 -0
- package/dist/models/__tests__/isClosed.test.d.ts.map +1 -0
- package/dist/models/__tests__/isClosed.test.js +84 -0
- package/dist/models/__tests__/isClosed.test.js.map +1 -0
- package/dist/models/__tests__/isOpen.test.d.ts +2 -0
- package/dist/models/__tests__/isOpen.test.d.ts.map +1 -0
- package/dist/models/__tests__/isOpen.test.js +84 -0
- package/dist/models/__tests__/isOpen.test.js.map +1 -0
- package/dist/models/index.d.ts +8 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +16 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/isClaimable.d.ts +10 -0
- package/dist/models/isClaimable.d.ts.map +1 -0
- package/dist/models/isClaimable.js +16 -0
- package/dist/models/isClaimable.js.map +1 -0
- package/dist/models/isClosed.d.ts +10 -0
- package/dist/models/isClosed.d.ts.map +1 -0
- package/dist/models/isClosed.js +16 -0
- package/dist/models/isClosed.js.map +1 -0
- package/dist/models/isOpen.d.ts +10 -0
- package/dist/models/isOpen.d.ts.map +1 -0
- package/dist/models/isOpen.js +16 -0
- package/dist/models/isOpen.js.map +1 -0
- package/dist/repositories/Repository.d.ts +8 -0
- package/dist/repositories/Repository.d.ts.map +1 -0
- package/dist/repositories/Repository.js +3 -0
- package/dist/repositories/Repository.js.map +1 -0
- package/dist/repositories/index.d.ts +3 -0
- package/dist/repositories/index.d.ts.map +1 -0
- package/dist/repositories/index.js +19 -0
- package/dist/repositories/index.js.map +1 -0
- package/dist/repositories/local/LocalRepository.d.ts +21 -0
- package/dist/repositories/local/LocalRepository.d.ts.map +1 -0
- package/dist/repositories/local/LocalRepository.js +75 -0
- package/dist/repositories/local/LocalRepository.js.map +1 -0
- package/dist/repositories/local/__tests__/deleteObjectById.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/deleteObjectById.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/deleteObjectById.test.js +228 -0
- package/dist/repositories/local/__tests__/deleteObjectById.test.js.map +1 -0
- package/dist/repositories/local/__tests__/extractMarkdownIds.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/extractMarkdownIds.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/extractMarkdownIds.test.js +135 -0
- package/dist/repositories/local/__tests__/extractMarkdownIds.test.js.map +1 -0
- package/dist/repositories/local/__tests__/findMarkdownFiles.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/findMarkdownFiles.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/findMarkdownFiles.test.js +236 -0
- package/dist/repositories/local/__tests__/findMarkdownFiles.test.js.map +1 -0
- package/dist/repositories/local/__tests__/getObjectByFilePath.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/getObjectByFilePath.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/getObjectByFilePath.test.js +96 -0
- package/dist/repositories/local/__tests__/getObjectByFilePath.test.js.map +1 -0
- package/dist/repositories/local/__tests__/getObjectById.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/getObjectById.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/getObjectById.test.js +46 -0
- package/dist/repositories/local/__tests__/getObjectById.test.js.map +1 -0
- package/dist/repositories/local/__tests__/getObjectFilePath.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/getObjectFilePath.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/getObjectFilePath.test.js +172 -0
- package/dist/repositories/local/__tests__/getObjectFilePath.test.js.map +1 -0
- package/dist/repositories/local/__tests__/getObjects.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/getObjects.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/getObjects.test.js +351 -0
- package/dist/repositories/local/__tests__/getObjects.test.js.map +1 -0
- package/dist/repositories/local/__tests__/scopeFilter.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/scopeFilter.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/scopeFilter.test.js +109 -0
- package/dist/repositories/local/__tests__/scopeFilter.test.js.map +1 -0
- package/dist/repositories/local/deleteObjectById.d.ts +16 -0
- package/dist/repositories/local/deleteObjectById.d.ts.map +1 -0
- package/dist/repositories/local/deleteObjectById.js +108 -0
- package/dist/repositories/local/deleteObjectById.js.map +1 -0
- package/dist/repositories/local/extractMarkdownIds.d.ts +17 -0
- package/dist/repositories/local/extractMarkdownIds.d.ts.map +1 -0
- package/dist/repositories/local/extractMarkdownIds.js +34 -0
- package/dist/repositories/local/extractMarkdownIds.js.map +1 -0
- package/dist/repositories/local/filterByScope.d.ts +8 -0
- package/dist/repositories/local/filterByScope.d.ts.map +1 -0
- package/dist/repositories/local/filterByScope.js +17 -0
- package/dist/repositories/local/filterByScope.js.map +1 -0
- package/dist/repositories/local/findMarkdownFiles.d.ts +9 -0
- package/dist/repositories/local/findMarkdownFiles.d.ts.map +1 -0
- package/dist/repositories/local/findMarkdownFiles.js +47 -0
- package/dist/repositories/local/findMarkdownFiles.js.map +1 -0
- package/dist/repositories/local/getObjectByFilePath.d.ts +9 -0
- package/dist/repositories/local/getObjectByFilePath.d.ts.map +1 -0
- package/dist/repositories/local/getObjectByFilePath.js +16 -0
- package/dist/repositories/local/getObjectByFilePath.js.map +1 -0
- package/dist/repositories/local/getObjectById.d.ts +10 -0
- package/dist/repositories/local/getObjectById.d.ts.map +1 -0
- package/dist/repositories/local/getObjectById.js +36 -0
- package/dist/repositories/local/getObjectById.js.map +1 -0
- package/dist/repositories/local/getObjectFilePath.d.ts +7 -0
- package/dist/repositories/local/getObjectFilePath.d.ts.map +1 -0
- package/dist/repositories/local/getObjectFilePath.js +90 -0
- package/dist/repositories/local/getObjectFilePath.js.map +1 -0
- package/dist/repositories/local/getObjects.d.ts +3 -0
- package/dist/repositories/local/getObjects.d.ts.map +1 -0
- package/dist/repositories/local/getObjects.js +64 -0
- package/dist/repositories/local/getObjects.js.map +1 -0
- package/dist/repositories/local/index.d.ts +8 -0
- package/dist/repositories/local/index.d.ts.map +1 -0
- package/dist/repositories/local/index.js +24 -0
- package/dist/repositories/local/index.js.map +1 -0
- package/dist/repositories/local/saveObject.d.ts +12 -0
- package/dist/repositories/local/saveObject.d.ts.map +1 -0
- package/dist/repositories/local/saveObject.js +27 -0
- package/dist/repositories/local/saveObject.js.map +1 -0
- package/dist/repositories/local/scopeFilter.d.ts +12 -0
- package/dist/repositories/local/scopeFilter.d.ts.map +1 -0
- package/dist/repositories/local/scopeFilter.js +21 -0
- package/dist/repositories/local/scopeFilter.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +138 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/__tests__/appendObjectLogTool.test.d.ts +2 -0
- package/dist/tools/__tests__/appendObjectLogTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/appendObjectLogTool.test.js +125 -0
- package/dist/tools/__tests__/appendObjectLogTool.test.js.map +1 -0
- package/dist/tools/__tests__/claimTaskTool.test.d.ts +2 -0
- package/dist/tools/__tests__/claimTaskTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/claimTaskTool.test.js +348 -0
- package/dist/tools/__tests__/claimTaskTool.test.js.map +1 -0
- package/dist/tools/__tests__/completeTaskTool.test.d.ts +2 -0
- package/dist/tools/__tests__/completeTaskTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/completeTaskTool.test.js +221 -0
- package/dist/tools/__tests__/completeTaskTool.test.js.map +1 -0
- package/dist/tools/__tests__/createObjectTool.test.d.ts +2 -0
- package/dist/tools/__tests__/createObjectTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/createObjectTool.test.js +387 -0
- package/dist/tools/__tests__/createObjectTool.test.js.map +1 -0
- package/dist/tools/__tests__/deleteObjectTool.test.d.ts +2 -0
- package/dist/tools/__tests__/deleteObjectTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/deleteObjectTool.test.js +169 -0
- package/dist/tools/__tests__/deleteObjectTool.test.js.map +1 -0
- package/dist/tools/__tests__/getObjectTool.test.d.ts +2 -0
- package/dist/tools/__tests__/getObjectTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/getObjectTool.test.js +124 -0
- package/dist/tools/__tests__/getObjectTool.test.js.map +1 -0
- package/dist/tools/__tests__/listObjectsTool.test.d.ts +2 -0
- package/dist/tools/__tests__/listObjectsTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/listObjectsTool.test.js +266 -0
- package/dist/tools/__tests__/listObjectsTool.test.js.map +1 -0
- package/dist/tools/__tests__/updateObjectTool.test.d.ts +2 -0
- package/dist/tools/__tests__/updateObjectTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/updateObjectTool.test.js +208 -0
- package/dist/tools/__tests__/updateObjectTool.test.js.map +1 -0
- package/dist/tools/activateTool.d.ts +38 -0
- package/dist/tools/activateTool.d.ts.map +1 -0
- package/dist/tools/activateTool.js +48 -0
- package/dist/tools/activateTool.js.map +1 -0
- package/dist/tools/appendObjectLogTool.d.ts +26 -0
- package/dist/tools/appendObjectLogTool.d.ts.map +1 -0
- package/dist/tools/appendObjectLogTool.js +65 -0
- package/dist/tools/appendObjectLogTool.js.map +1 -0
- package/dist/tools/claimTaskTool.d.ts +30 -0
- package/dist/tools/claimTaskTool.d.ts.map +1 -0
- package/dist/tools/claimTaskTool.js +109 -0
- package/dist/tools/claimTaskTool.js.map +1 -0
- package/dist/tools/completeTaskTool.d.ts +33 -0
- package/dist/tools/completeTaskTool.d.ts.map +1 -0
- package/dist/tools/completeTaskTool.js +61 -0
- package/dist/tools/completeTaskTool.js.map +1 -0
- package/dist/tools/createObjectTool.d.ts +52 -0
- package/dist/tools/createObjectTool.d.ts.map +1 -0
- package/dist/tools/createObjectTool.js +87 -0
- package/dist/tools/createObjectTool.js.map +1 -0
- package/dist/tools/deleteObjectTool.d.ts +27 -0
- package/dist/tools/deleteObjectTool.d.ts.map +1 -0
- package/dist/tools/deleteObjectTool.js +48 -0
- package/dist/tools/deleteObjectTool.js.map +1 -0
- package/dist/tools/getObjectTool.d.ts +22 -0
- package/dist/tools/getObjectTool.d.ts.map +1 -0
- package/dist/tools/getObjectTool.js +53 -0
- package/dist/tools/getObjectTool.js.map +1 -0
- package/dist/tools/index.d.ts +11 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +34 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/listObjectsTool.d.ts +39 -0
- package/dist/tools/listObjectsTool.d.ts.map +1 -0
- package/dist/tools/listObjectsTool.js +87 -0
- package/dist/tools/listObjectsTool.js.map +1 -0
- package/dist/tools/pruneClosedTool.d.ts +26 -0
- package/dist/tools/pruneClosedTool.d.ts.map +1 -0
- package/dist/tools/pruneClosedTool.js +35 -0
- package/dist/tools/pruneClosedTool.js.map +1 -0
- package/dist/tools/updateObjectTool.d.ts +46 -0
- package/dist/tools/updateObjectTool.d.ts.map +1 -0
- package/dist/tools/updateObjectTool.js +93 -0
- package/dist/tools/updateObjectTool.js.map +1 -0
- package/dist/utils/__tests__/checkPrerequisitesComplete.test.d.ts +2 -0
- package/dist/utils/__tests__/checkPrerequisitesComplete.test.d.ts.map +1 -0
- package/dist/utils/__tests__/checkPrerequisitesComplete.test.js +200 -0
- package/dist/utils/__tests__/checkPrerequisitesComplete.test.js.map +1 -0
- package/dist/utils/__tests__/deserializeTrellisObject.test.d.ts +2 -0
- package/dist/utils/__tests__/deserializeTrellisObject.test.d.ts.map +1 -0
- package/dist/utils/__tests__/deserializeTrellisObject.test.js +329 -0
- package/dist/utils/__tests__/deserializeTrellisObject.test.js.map +1 -0
- package/dist/utils/__tests__/filterUnavailableObjects.test.d.ts +2 -0
- package/dist/utils/__tests__/filterUnavailableObjects.test.d.ts.map +1 -0
- package/dist/utils/__tests__/filterUnavailableObjects.test.js +172 -0
- package/dist/utils/__tests__/filterUnavailableObjects.test.js.map +1 -0
- package/dist/utils/__tests__/generateUniqueId.test.d.ts +2 -0
- package/dist/utils/__tests__/generateUniqueId.test.d.ts.map +1 -0
- package/dist/utils/__tests__/generateUniqueId.test.js +186 -0
- package/dist/utils/__tests__/generateUniqueId.test.js.map +1 -0
- package/dist/utils/__tests__/inferObjectType.test.d.ts +2 -0
- package/dist/utils/__tests__/inferObjectType.test.d.ts.map +1 -0
- package/dist/utils/__tests__/inferObjectType.test.js +43 -0
- package/dist/utils/__tests__/inferObjectType.test.js.map +1 -0
- package/dist/utils/__tests__/isRequiredForOtherObjects.test.d.ts +2 -0
- package/dist/utils/__tests__/isRequiredForOtherObjects.test.d.ts.map +1 -0
- package/dist/utils/__tests__/isRequiredForOtherObjects.test.js +229 -0
- package/dist/utils/__tests__/isRequiredForOtherObjects.test.js.map +1 -0
- package/dist/utils/__tests__/serializationRoundTrip.test.d.ts +2 -0
- package/dist/utils/__tests__/serializationRoundTrip.test.d.ts.map +1 -0
- package/dist/utils/__tests__/serializationRoundTrip.test.js +389 -0
- package/dist/utils/__tests__/serializationRoundTrip.test.js.map +1 -0
- package/dist/utils/__tests__/serializeTrellisObject.test.d.ts +2 -0
- package/dist/utils/__tests__/serializeTrellisObject.test.d.ts.map +1 -0
- package/dist/utils/__tests__/serializeTrellisObject.test.js +192 -0
- package/dist/utils/__tests__/serializeTrellisObject.test.js.map +1 -0
- package/dist/utils/__tests__/sortTrellisObjects.test.d.ts +2 -0
- package/dist/utils/__tests__/sortTrellisObjects.test.d.ts.map +1 -0
- package/dist/utils/__tests__/sortTrellisObjects.test.js +114 -0
- package/dist/utils/__tests__/sortTrellisObjects.test.js.map +1 -0
- package/dist/utils/checkPrerequisitesComplete.d.ts +12 -0
- package/dist/utils/checkPrerequisitesComplete.d.ts.map +1 -0
- package/dist/utils/checkPrerequisitesComplete.js +38 -0
- package/dist/utils/checkPrerequisitesComplete.js.map +1 -0
- package/dist/utils/deserializeTrellisObject.d.ts +9 -0
- package/dist/utils/deserializeTrellisObject.d.ts.map +1 -0
- package/dist/utils/deserializeTrellisObject.js +134 -0
- package/dist/utils/deserializeTrellisObject.js.map +1 -0
- package/dist/utils/filterUnavailableObjects.d.ts +13 -0
- package/dist/utils/filterUnavailableObjects.d.ts.map +1 -0
- package/dist/utils/filterUnavailableObjects.js +40 -0
- package/dist/utils/filterUnavailableObjects.js.map +1 -0
- package/dist/utils/generateUniqueId.d.ts +10 -0
- package/dist/utils/generateUniqueId.d.ts.map +1 -0
- package/dist/utils/generateUniqueId.js +67 -0
- package/dist/utils/generateUniqueId.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +20 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/inferObjectType.d.ts +3 -0
- package/dist/utils/inferObjectType.d.ts.map +1 -0
- package/dist/utils/inferObjectType.js +26 -0
- package/dist/utils/inferObjectType.js.map +1 -0
- package/dist/utils/isRequiredForOtherObjects.d.ts +12 -0
- package/dist/utils/isRequiredForOtherObjects.d.ts.map +1 -0
- package/dist/utils/isRequiredForOtherObjects.js +33 -0
- package/dist/utils/isRequiredForOtherObjects.js.map +1 -0
- package/dist/utils/serializeTrellisObject.d.ts +8 -0
- package/dist/utils/serializeTrellisObject.d.ts.map +1 -0
- package/dist/utils/serializeTrellisObject.js +35 -0
- package/dist/utils/serializeTrellisObject.js.map +1 -0
- package/dist/utils/sortTrellisObjects.d.ts +8 -0
- package/dist/utils/sortTrellisObjects.d.ts.map +1 -0
- package/dist/utils/sortTrellisObjects.js +20 -0
- package/dist/utils/sortTrellisObjects.js.map +1 -0
- package/dist/validation/ValidationError.d.ts +9 -0
- package/dist/validation/ValidationError.d.ts.map +1 -0
- package/dist/validation/ValidationError.js +18 -0
- package/dist/validation/ValidationError.js.map +1 -0
- package/dist/validation/ValidationErrorCode.d.ts +3 -0
- package/dist/validation/ValidationErrorCode.d.ts.map +1 -0
- package/dist/validation/ValidationErrorCode.js +3 -0
- package/dist/validation/ValidationErrorCode.js.map +1 -0
- package/dist/validation/ValidationErrorCodes.d.ts +8 -0
- package/dist/validation/ValidationErrorCodes.d.ts.map +1 -0
- package/dist/validation/ValidationErrorCodes.js +11 -0
- package/dist/validation/ValidationErrorCodes.js.map +1 -0
- package/dist/validation/__tests__/ValidationError.test.d.ts +2 -0
- package/dist/validation/__tests__/ValidationError.test.d.ts.map +1 -0
- package/dist/validation/__tests__/ValidationError.test.js +32 -0
- package/dist/validation/__tests__/ValidationError.test.js.map +1 -0
- package/dist/validation/__tests__/validateObjectCreation.test.d.ts +2 -0
- package/dist/validation/__tests__/validateObjectCreation.test.d.ts.map +1 -0
- package/dist/validation/__tests__/validateObjectCreation.test.js +93 -0
- package/dist/validation/__tests__/validateObjectCreation.test.js.map +1 -0
- package/dist/validation/__tests__/validateParentExists.test.d.ts +2 -0
- package/dist/validation/__tests__/validateParentExists.test.d.ts.map +1 -0
- package/dist/validation/__tests__/validateParentExists.test.js +62 -0
- package/dist/validation/__tests__/validateParentExists.test.js.map +1 -0
- package/dist/validation/__tests__/validateParentType.test.d.ts +2 -0
- package/dist/validation/__tests__/validateParentType.test.d.ts.map +1 -0
- package/dist/validation/__tests__/validateParentType.test.js +125 -0
- package/dist/validation/__tests__/validateParentType.test.js.map +1 -0
- package/dist/validation/__tests__/validateStatusTransition.test.d.ts +2 -0
- package/dist/validation/__tests__/validateStatusTransition.test.d.ts.map +1 -0
- package/dist/validation/__tests__/validateStatusTransition.test.js +103 -0
- package/dist/validation/__tests__/validateStatusTransition.test.js.map +1 -0
- package/dist/validation/validateObjectCreation.d.ts +12 -0
- package/dist/validation/validateObjectCreation.d.ts.map +1 -0
- package/dist/validation/validateObjectCreation.js +24 -0
- package/dist/validation/validateObjectCreation.js.map +1 -0
- package/dist/validation/validateParentExists.d.ts +10 -0
- package/dist/validation/validateParentExists.d.ts.map +1 -0
- package/dist/validation/validateParentExists.js +23 -0
- package/dist/validation/validateParentExists.js.map +1 -0
- package/dist/validation/validateParentType.d.ts +16 -0
- package/dist/validation/validateParentType.d.ts.map +1 -0
- package/dist/validation/validateParentType.js +48 -0
- package/dist/validation/validateParentType.js.map +1 -0
- package/dist/validation/validateStatusTransition.d.ts +12 -0
- package/dist/validation/validateStatusTransition.d.ts.map +1 -0
- package/dist/validation/validateStatusTransition.js +29 -0
- package/dist/validation/validateStatusTransition.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeTrellisObject.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/serializeTrellisObject.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const yaml_1 = require("yaml");
|
|
4
|
+
const models_1 = require("../../models");
|
|
5
|
+
const serializeTrellisObject_1 = require("../serializeTrellisObject");
|
|
6
|
+
describe("serializeTrellisObject", () => {
|
|
7
|
+
it("should serialize a basic TrellisObject to markdown with YAML frontmatter", () => {
|
|
8
|
+
const trellisObject = {
|
|
9
|
+
id: "test-id-123",
|
|
10
|
+
title: "Test Task",
|
|
11
|
+
status: models_1.TrellisObjectStatus.IN_PROGRESS,
|
|
12
|
+
priority: models_1.TrellisObjectPriority.HIGH,
|
|
13
|
+
prerequisites: ["prereq-1", "prereq-2"],
|
|
14
|
+
affectedFiles: new Map([
|
|
15
|
+
["src/file1.ts", "modified"],
|
|
16
|
+
["src/file2.ts", "created"],
|
|
17
|
+
]),
|
|
18
|
+
log: ["Initial commit", "Updated implementation"],
|
|
19
|
+
schema: "v1.0",
|
|
20
|
+
childrenIds: ["child-1", "child-2"],
|
|
21
|
+
body: "This is the main content of the task.",
|
|
22
|
+
type: models_1.TrellisObjectType.PROJECT,
|
|
23
|
+
};
|
|
24
|
+
const result = (0, serializeTrellisObject_1.serializeTrellisObject)(trellisObject);
|
|
25
|
+
// Check that it starts and ends correctly
|
|
26
|
+
expect(result).toMatch(/^---\n/);
|
|
27
|
+
expect(result).toMatch(/\n---\n\nThis is the main content of the task\.$/);
|
|
28
|
+
// Parse the YAML frontmatter to verify structure
|
|
29
|
+
const yamlPart = result.split("---\n")[1];
|
|
30
|
+
const parsedYaml = (0, yaml_1.parse)(yamlPart);
|
|
31
|
+
expect(parsedYaml).toEqual({
|
|
32
|
+
id: "test-id-123",
|
|
33
|
+
title: "Test Task",
|
|
34
|
+
status: models_1.TrellisObjectStatus.IN_PROGRESS,
|
|
35
|
+
priority: models_1.TrellisObjectPriority.HIGH,
|
|
36
|
+
prerequisites: ["prereq-1", "prereq-2"],
|
|
37
|
+
affectedFiles: {
|
|
38
|
+
"src/file1.ts": "modified",
|
|
39
|
+
"src/file2.ts": "created",
|
|
40
|
+
},
|
|
41
|
+
log: ["Initial commit", "Updated implementation"],
|
|
42
|
+
schema: "v1.0",
|
|
43
|
+
childrenIds: ["child-1", "child-2"],
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
it("should handle multi-line log entries correctly", () => {
|
|
47
|
+
const trellisObject = {
|
|
48
|
+
id: "multiline-test",
|
|
49
|
+
title: "Multi-line Log Test",
|
|
50
|
+
status: models_1.TrellisObjectStatus.OPEN,
|
|
51
|
+
priority: models_1.TrellisObjectPriority.MEDIUM,
|
|
52
|
+
prerequisites: [],
|
|
53
|
+
affectedFiles: new Map(),
|
|
54
|
+
log: [
|
|
55
|
+
"Single line entry",
|
|
56
|
+
"Multi-line entry:\nThis spans multiple lines\nWith various details\nAnd even more information",
|
|
57
|
+
"Another single line",
|
|
58
|
+
"Complex multi-line:\n- Bullet point 1\n- Bullet point 2\n - Nested point\n- Final point",
|
|
59
|
+
],
|
|
60
|
+
schema: "v1.0",
|
|
61
|
+
childrenIds: [],
|
|
62
|
+
body: "Test body content",
|
|
63
|
+
type: models_1.TrellisObjectType.PROJECT,
|
|
64
|
+
};
|
|
65
|
+
const result = (0, serializeTrellisObject_1.serializeTrellisObject)(trellisObject);
|
|
66
|
+
// Parse the YAML frontmatter
|
|
67
|
+
const yamlPart = result.split("---\n")[1];
|
|
68
|
+
const parsedYaml = (0, yaml_1.parse)(yamlPart);
|
|
69
|
+
// Verify that multi-line log entries are preserved correctly
|
|
70
|
+
expect(parsedYaml.log).toHaveLength(4);
|
|
71
|
+
expect(parsedYaml.log[0]).toBe("Single line entry");
|
|
72
|
+
expect(parsedYaml.log[1]).toBe("Multi-line entry:\nThis spans multiple lines\nWith various details\nAnd even more information");
|
|
73
|
+
expect(parsedYaml.log[2]).toBe("Another single line");
|
|
74
|
+
expect(parsedYaml.log[3]).toBe("Complex multi-line:\n- Bullet point 1\n- Bullet point 2\n - Nested point\n- Final point");
|
|
75
|
+
// Verify the structure is still valid YAML
|
|
76
|
+
expect(() => (0, yaml_1.parse)(yamlPart)).not.toThrow();
|
|
77
|
+
});
|
|
78
|
+
it("should handle empty arrays and Map correctly", () => {
|
|
79
|
+
const trellisObject = {
|
|
80
|
+
id: "empty-test",
|
|
81
|
+
title: "Empty Collections Test",
|
|
82
|
+
status: models_1.TrellisObjectStatus.DRAFT,
|
|
83
|
+
priority: models_1.TrellisObjectPriority.LOW,
|
|
84
|
+
prerequisites: [],
|
|
85
|
+
affectedFiles: new Map(),
|
|
86
|
+
log: [],
|
|
87
|
+
schema: "v1.0",
|
|
88
|
+
childrenIds: [],
|
|
89
|
+
body: "",
|
|
90
|
+
type: models_1.TrellisObjectType.PROJECT,
|
|
91
|
+
};
|
|
92
|
+
const result = (0, serializeTrellisObject_1.serializeTrellisObject)(trellisObject);
|
|
93
|
+
const yamlPart = result.split("---\n")[1];
|
|
94
|
+
const parsedYaml = (0, yaml_1.parse)(yamlPart);
|
|
95
|
+
expect(parsedYaml.prerequisites).toEqual([]);
|
|
96
|
+
expect(parsedYaml.affectedFiles).toEqual({});
|
|
97
|
+
expect(parsedYaml.log).toEqual([]);
|
|
98
|
+
expect(parsedYaml.childrenIds).toEqual([]);
|
|
99
|
+
});
|
|
100
|
+
it("should handle special characters in strings", () => {
|
|
101
|
+
const trellisObject = {
|
|
102
|
+
id: "special-chars-test",
|
|
103
|
+
title: 'Title with "quotes" and symbols: @#$%',
|
|
104
|
+
status: models_1.TrellisObjectStatus.IN_PROGRESS,
|
|
105
|
+
priority: models_1.TrellisObjectPriority.HIGH,
|
|
106
|
+
prerequisites: ["prereq with spaces", "prereq-with-dashes"],
|
|
107
|
+
affectedFiles: new Map([
|
|
108
|
+
["src/file with spaces.ts", 'status with "quotes"'],
|
|
109
|
+
["src/file-with-dashes.ts", "status: with: colons"],
|
|
110
|
+
]),
|
|
111
|
+
log: [
|
|
112
|
+
'Log entry with "double quotes"',
|
|
113
|
+
"Log entry with 'single quotes'",
|
|
114
|
+
"Log entry with: colons and @symbols",
|
|
115
|
+
],
|
|
116
|
+
schema: "v2.0-beta",
|
|
117
|
+
childrenIds: ["child-with-dashes", "child with spaces"],
|
|
118
|
+
body: 'Body with "quotes", symbols: @#$%, and other special characters!',
|
|
119
|
+
type: models_1.TrellisObjectType.PROJECT,
|
|
120
|
+
};
|
|
121
|
+
const result = (0, serializeTrellisObject_1.serializeTrellisObject)(trellisObject);
|
|
122
|
+
const yamlPart = result.split("---\n")[1];
|
|
123
|
+
// Should parse without errors
|
|
124
|
+
expect(() => (0, yaml_1.parse)(yamlPart)).not.toThrow();
|
|
125
|
+
const parsedYaml = (0, yaml_1.parse)(yamlPart);
|
|
126
|
+
expect(parsedYaml.title).toBe('Title with "quotes" and symbols: @#$%');
|
|
127
|
+
expect(parsedYaml.affectedFiles["src/file with spaces.ts"]).toBe('status with "quotes"');
|
|
128
|
+
expect(parsedYaml.log[0]).toBe('Log entry with "double quotes"');
|
|
129
|
+
});
|
|
130
|
+
it("should preserve the body content separately from frontmatter", () => {
|
|
131
|
+
const bodyContent = `# Main Task Description
|
|
132
|
+
|
|
133
|
+
This is a detailed description of the task.
|
|
134
|
+
|
|
135
|
+
## Steps to Complete
|
|
136
|
+
|
|
137
|
+
1. First step
|
|
138
|
+
2. Second step
|
|
139
|
+
3. Final step
|
|
140
|
+
|
|
141
|
+
> Important note about the implementation`;
|
|
142
|
+
const trellisObject = {
|
|
143
|
+
id: "body-test",
|
|
144
|
+
title: "Body Content Test",
|
|
145
|
+
status: models_1.TrellisObjectStatus.OPEN,
|
|
146
|
+
priority: models_1.TrellisObjectPriority.MEDIUM,
|
|
147
|
+
prerequisites: [],
|
|
148
|
+
affectedFiles: new Map(),
|
|
149
|
+
log: [],
|
|
150
|
+
schema: "v1.0",
|
|
151
|
+
childrenIds: [],
|
|
152
|
+
body: bodyContent,
|
|
153
|
+
type: models_1.TrellisObjectType.PROJECT,
|
|
154
|
+
};
|
|
155
|
+
const result = (0, serializeTrellisObject_1.serializeTrellisObject)(trellisObject);
|
|
156
|
+
// Check that body is not in the YAML frontmatter
|
|
157
|
+
const yamlPart = result.split("---\n")[1];
|
|
158
|
+
const parsedYaml = (0, yaml_1.parse)(yamlPart);
|
|
159
|
+
expect(parsedYaml.body).toBeUndefined();
|
|
160
|
+
// Check that body appears after the frontmatter
|
|
161
|
+
const bodyPart = result.split(/---\n.*?\n---\n\n/s)[1];
|
|
162
|
+
expect(bodyPart).toBe(bodyContent);
|
|
163
|
+
});
|
|
164
|
+
it("should handle Map with complex keys and values", () => {
|
|
165
|
+
const trellisObject = {
|
|
166
|
+
id: "complex-map-test",
|
|
167
|
+
title: "Complex Map Test",
|
|
168
|
+
status: models_1.TrellisObjectStatus.IN_PROGRESS,
|
|
169
|
+
priority: models_1.TrellisObjectPriority.HIGH,
|
|
170
|
+
prerequisites: [],
|
|
171
|
+
affectedFiles: new Map([
|
|
172
|
+
["path/to/complex file name.ts", "created"],
|
|
173
|
+
["another/path/file.js", "modified"],
|
|
174
|
+
["config/settings.json", "deleted"],
|
|
175
|
+
]),
|
|
176
|
+
log: [],
|
|
177
|
+
schema: "v1.0",
|
|
178
|
+
childrenIds: [],
|
|
179
|
+
body: "Test content",
|
|
180
|
+
type: models_1.TrellisObjectType.PROJECT,
|
|
181
|
+
};
|
|
182
|
+
const result = (0, serializeTrellisObject_1.serializeTrellisObject)(trellisObject);
|
|
183
|
+
const yamlPart = result.split("---\n")[1];
|
|
184
|
+
const parsedYaml = (0, yaml_1.parse)(yamlPart);
|
|
185
|
+
expect(parsedYaml.affectedFiles).toEqual({
|
|
186
|
+
"path/to/complex file name.ts": "created",
|
|
187
|
+
"another/path/file.js": "modified",
|
|
188
|
+
"config/settings.json": "deleted",
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
//# sourceMappingURL=serializeTrellisObject.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeTrellisObject.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/serializeTrellisObject.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sortTrellisObjects.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/sortTrellisObjects.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const models_1 = require("../../models");
|
|
4
|
+
const sortTrellisObjects_1 = require("../sortTrellisObjects");
|
|
5
|
+
describe("sortTrellisObjects", () => {
|
|
6
|
+
const createMockObject = (id, priority) => ({
|
|
7
|
+
id,
|
|
8
|
+
title: `Task ${id}`,
|
|
9
|
+
status: models_1.TrellisObjectStatus.OPEN,
|
|
10
|
+
priority,
|
|
11
|
+
prerequisites: [],
|
|
12
|
+
affectedFiles: new Map(),
|
|
13
|
+
log: [],
|
|
14
|
+
schema: "v1.0",
|
|
15
|
+
childrenIds: [],
|
|
16
|
+
body: `Body for ${id}`,
|
|
17
|
+
type: models_1.TrellisObjectType.TASK,
|
|
18
|
+
});
|
|
19
|
+
it("should sort objects by priority: high, medium, low", () => {
|
|
20
|
+
const objects = [
|
|
21
|
+
createMockObject("low-1", models_1.TrellisObjectPriority.LOW),
|
|
22
|
+
createMockObject("high-1", models_1.TrellisObjectPriority.HIGH),
|
|
23
|
+
createMockObject("medium-1", models_1.TrellisObjectPriority.MEDIUM),
|
|
24
|
+
createMockObject("low-2", models_1.TrellisObjectPriority.LOW),
|
|
25
|
+
createMockObject("high-2", models_1.TrellisObjectPriority.HIGH),
|
|
26
|
+
];
|
|
27
|
+
const sorted = (0, sortTrellisObjects_1.sortTrellisObjects)(objects);
|
|
28
|
+
expect(sorted).toHaveLength(5);
|
|
29
|
+
expect(sorted[0].priority).toBe(models_1.TrellisObjectPriority.HIGH);
|
|
30
|
+
expect(sorted[1].priority).toBe(models_1.TrellisObjectPriority.HIGH);
|
|
31
|
+
expect(sorted[2].priority).toBe(models_1.TrellisObjectPriority.MEDIUM);
|
|
32
|
+
expect(sorted[3].priority).toBe(models_1.TrellisObjectPriority.LOW);
|
|
33
|
+
expect(sorted[4].priority).toBe(models_1.TrellisObjectPriority.LOW);
|
|
34
|
+
expect(sorted[0].id).toBe("high-1");
|
|
35
|
+
expect(sorted[1].id).toBe("high-2");
|
|
36
|
+
expect(sorted[2].id).toBe("medium-1");
|
|
37
|
+
expect(sorted[3].id).toBe("low-1");
|
|
38
|
+
expect(sorted[4].id).toBe("low-2");
|
|
39
|
+
});
|
|
40
|
+
it("should return a new array without modifying the original", () => {
|
|
41
|
+
const objects = [
|
|
42
|
+
createMockObject("low", models_1.TrellisObjectPriority.LOW),
|
|
43
|
+
createMockObject("high", models_1.TrellisObjectPriority.HIGH),
|
|
44
|
+
];
|
|
45
|
+
const originalOrder = objects.map((obj) => obj.id);
|
|
46
|
+
const sorted = (0, sortTrellisObjects_1.sortTrellisObjects)(objects);
|
|
47
|
+
expect(objects.map((obj) => obj.id)).toEqual(originalOrder);
|
|
48
|
+
expect(sorted).not.toBe(objects);
|
|
49
|
+
expect(sorted[0].id).toBe("high");
|
|
50
|
+
expect(sorted[1].id).toBe("low");
|
|
51
|
+
});
|
|
52
|
+
it("should handle empty array", () => {
|
|
53
|
+
const result = (0, sortTrellisObjects_1.sortTrellisObjects)([]);
|
|
54
|
+
expect(result).toEqual([]);
|
|
55
|
+
});
|
|
56
|
+
it("should handle single object", () => {
|
|
57
|
+
const objects = [createMockObject("single", models_1.TrellisObjectPriority.MEDIUM)];
|
|
58
|
+
const result = (0, sortTrellisObjects_1.sortTrellisObjects)(objects);
|
|
59
|
+
expect(result).toHaveLength(1);
|
|
60
|
+
expect(result[0].id).toBe("single");
|
|
61
|
+
expect(result[0].priority).toBe(models_1.TrellisObjectPriority.MEDIUM);
|
|
62
|
+
});
|
|
63
|
+
it("should handle all objects with same priority", () => {
|
|
64
|
+
const objects = [
|
|
65
|
+
createMockObject("first", models_1.TrellisObjectPriority.HIGH),
|
|
66
|
+
createMockObject("second", models_1.TrellisObjectPriority.HIGH),
|
|
67
|
+
createMockObject("third", models_1.TrellisObjectPriority.HIGH),
|
|
68
|
+
];
|
|
69
|
+
const result = (0, sortTrellisObjects_1.sortTrellisObjects)(objects);
|
|
70
|
+
expect(result).toHaveLength(3);
|
|
71
|
+
result.forEach((obj) => {
|
|
72
|
+
expect(obj.priority).toBe(models_1.TrellisObjectPriority.HIGH);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
it("should maintain stable sort for objects with same priority", () => {
|
|
76
|
+
const objects = [
|
|
77
|
+
createMockObject("high-first", models_1.TrellisObjectPriority.HIGH),
|
|
78
|
+
createMockObject("high-second", models_1.TrellisObjectPriority.HIGH),
|
|
79
|
+
createMockObject("medium-first", models_1.TrellisObjectPriority.MEDIUM),
|
|
80
|
+
createMockObject("medium-second", models_1.TrellisObjectPriority.MEDIUM),
|
|
81
|
+
];
|
|
82
|
+
const result = (0, sortTrellisObjects_1.sortTrellisObjects)(objects);
|
|
83
|
+
expect(result[0].id).toBe("high-first");
|
|
84
|
+
expect(result[1].id).toBe("high-second");
|
|
85
|
+
expect(result[2].id).toBe("medium-first");
|
|
86
|
+
expect(result[3].id).toBe("medium-second");
|
|
87
|
+
});
|
|
88
|
+
it("should work with mixed object types", () => {
|
|
89
|
+
const objects = [
|
|
90
|
+
{
|
|
91
|
+
...createMockObject("project", models_1.TrellisObjectPriority.LOW),
|
|
92
|
+
type: models_1.TrellisObjectType.PROJECT,
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
...createMockObject("epic", models_1.TrellisObjectPriority.HIGH),
|
|
96
|
+
type: models_1.TrellisObjectType.EPIC,
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
...createMockObject("feature", models_1.TrellisObjectPriority.MEDIUM),
|
|
100
|
+
type: models_1.TrellisObjectType.FEATURE,
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
...createMockObject("task", models_1.TrellisObjectPriority.HIGH),
|
|
104
|
+
type: models_1.TrellisObjectType.TASK,
|
|
105
|
+
},
|
|
106
|
+
];
|
|
107
|
+
const result = (0, sortTrellisObjects_1.sortTrellisObjects)(objects);
|
|
108
|
+
expect(result[0].priority).toBe(models_1.TrellisObjectPriority.HIGH);
|
|
109
|
+
expect(result[1].priority).toBe(models_1.TrellisObjectPriority.HIGH);
|
|
110
|
+
expect(result[2].priority).toBe(models_1.TrellisObjectPriority.MEDIUM);
|
|
111
|
+
expect(result[3].priority).toBe(models_1.TrellisObjectPriority.LOW);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
//# sourceMappingURL=sortTrellisObjects.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sortTrellisObjects.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/sortTrellisObjects.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TrellisObject } from "../models/TrellisObject";
|
|
2
|
+
import { Repository } from "../repositories/Repository";
|
|
3
|
+
/**
|
|
4
|
+
* Checks if all prerequisites for a trellis object are complete (closed).
|
|
5
|
+
* A prerequisite is considered complete if its status is DONE or WONT_DO.
|
|
6
|
+
*
|
|
7
|
+
* @param trellisObject - The trellis object to check prerequisites for
|
|
8
|
+
* @param repository - The repository to load prerequisite objects from
|
|
9
|
+
* @returns Promise<boolean> - true if all prerequisites are complete or no prerequisites exist, false otherwise
|
|
10
|
+
*/
|
|
11
|
+
export declare function checkPrerequisitesComplete(trellisObject: TrellisObject, repository: Repository): Promise<boolean>;
|
|
12
|
+
//# sourceMappingURL=checkPrerequisitesComplete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkPrerequisitesComplete.d.ts","sourceRoot":"","sources":["../../src/utils/checkPrerequisitesComplete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAC9C,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,OAAO,CAAC,CAiClB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkPrerequisitesComplete = checkPrerequisitesComplete;
|
|
4
|
+
const TrellisObjectStatus_1 = require("../models/TrellisObjectStatus");
|
|
5
|
+
/**
|
|
6
|
+
* Checks if all prerequisites for a trellis object are complete (closed).
|
|
7
|
+
* A prerequisite is considered complete if its status is DONE or WONT_DO.
|
|
8
|
+
*
|
|
9
|
+
* @param trellisObject - The trellis object to check prerequisites for
|
|
10
|
+
* @param repository - The repository to load prerequisite objects from
|
|
11
|
+
* @returns Promise<boolean> - true if all prerequisites are complete or no prerequisites exist, false otherwise
|
|
12
|
+
*/
|
|
13
|
+
async function checkPrerequisitesComplete(trellisObject, repository) {
|
|
14
|
+
// If no prerequisites, return true
|
|
15
|
+
if (!trellisObject.prerequisites ||
|
|
16
|
+
trellisObject.prerequisites.length === 0) {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
// Use bulk getObjects call for better performance
|
|
20
|
+
const allObjects = await repository.getObjects();
|
|
21
|
+
const objectMap = new Map();
|
|
22
|
+
allObjects.forEach((obj) => objectMap.set(obj.id, obj));
|
|
23
|
+
// Check if any prerequisite that exists in our system is not complete
|
|
24
|
+
for (const prerequisiteId of trellisObject.prerequisites) {
|
|
25
|
+
const prerequisiteObj = objectMap.get(prerequisiteId);
|
|
26
|
+
// If prerequisite is not in our system, it's fine (external dependency)
|
|
27
|
+
if (!prerequisiteObj) {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
// If prerequisite is in our system but not done or wont-do, it's blocking
|
|
31
|
+
if (prerequisiteObj.status !== TrellisObjectStatus_1.TrellisObjectStatus.DONE &&
|
|
32
|
+
prerequisiteObj.status !== TrellisObjectStatus_1.TrellisObjectStatus.WONT_DO) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=checkPrerequisitesComplete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkPrerequisitesComplete.js","sourceRoot":"","sources":["../../src/utils/checkPrerequisitesComplete.ts"],"names":[],"mappings":";;AAYA,gEAoCC;AA/CD,uEAAoE;AAGpE;;;;;;;GAOG;AACI,KAAK,UAAU,0BAA0B,CAC9C,aAA4B,EAC5B,UAAsB;IAEtB,mCAAmC;IACnC,IACE,CAAC,aAAa,CAAC,aAAa;QAC5B,aAAa,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EACxC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kDAAkD;IAClD,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;IACjD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;IACnD,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IAExD,sEAAsE;IACtE,KAAK,MAAM,cAAc,IAAI,aAAa,CAAC,aAAa,EAAE,CAAC;QACzD,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAEtD,wEAAwE;QACxE,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,SAAS;QACX,CAAC;QAED,0EAA0E;QAC1E,IACE,eAAe,CAAC,MAAM,KAAK,yCAAmB,CAAC,IAAI;YACnD,eAAe,CAAC,MAAM,KAAK,yCAAmB,CAAC,OAAO,EACtD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TrellisObject } from "../models";
|
|
2
|
+
/**
|
|
3
|
+
* Deserializes a markdown string with YAML frontmatter back to a TrellisObject
|
|
4
|
+
* @param markdownString - The markdown string with YAML frontmatter to deserialize
|
|
5
|
+
* @returns A TrellisObject reconstructed from the markdown string
|
|
6
|
+
* @throws Error if the input string is not properly formatted or missing required fields
|
|
7
|
+
*/
|
|
8
|
+
export declare function deserializeTrellisObject(markdownString: string): TrellisObject;
|
|
9
|
+
//# sourceMappingURL=deserializeTrellisObject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deserializeTrellisObject.d.ts","sourceRoot":"","sources":["../../src/utils/deserializeTrellisObject.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EAGd,MAAM,WAAW,CAAC;AA4InB;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,MAAM,GACrB,aAAa,CAuBf"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deserializeTrellisObject = deserializeTrellisObject;
|
|
4
|
+
const yaml_1 = require("yaml");
|
|
5
|
+
const models_1 = require("../models");
|
|
6
|
+
const inferObjectType_1 = require("./inferObjectType");
|
|
7
|
+
/**
|
|
8
|
+
* Extracts frontmatter and body content from markdown string
|
|
9
|
+
*/
|
|
10
|
+
function extractFrontmatterAndBody(markdownString) {
|
|
11
|
+
const frontmatterStart = markdownString.indexOf("---");
|
|
12
|
+
if (frontmatterStart === -1) {
|
|
13
|
+
throw new Error("Invalid format: Expected YAML frontmatter delimited by --- markers");
|
|
14
|
+
}
|
|
15
|
+
const frontmatterEnd = markdownString.indexOf("---", frontmatterStart + 3);
|
|
16
|
+
if (frontmatterEnd === -1) {
|
|
17
|
+
throw new Error("Invalid format: Expected YAML frontmatter delimited by --- markers");
|
|
18
|
+
}
|
|
19
|
+
const yamlContent = markdownString
|
|
20
|
+
.substring(frontmatterStart + 3, frontmatterEnd)
|
|
21
|
+
.trim();
|
|
22
|
+
const bodyContent = markdownString
|
|
23
|
+
.substring(frontmatterEnd + 3)
|
|
24
|
+
.replace(/^\n+/, "");
|
|
25
|
+
return { yamlContent, bodyContent };
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Parses YAML content and validates it's an object
|
|
29
|
+
*/
|
|
30
|
+
function parseFrontmatter(yamlContent) {
|
|
31
|
+
let frontmatter;
|
|
32
|
+
try {
|
|
33
|
+
frontmatter = (0, yaml_1.parse)(yamlContent);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
throw new Error(`Invalid YAML frontmatter: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
37
|
+
}
|
|
38
|
+
if (typeof frontmatter !== "object" || frontmatter === null) {
|
|
39
|
+
throw new Error("Invalid frontmatter: Expected an object");
|
|
40
|
+
}
|
|
41
|
+
return frontmatter;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Validates required fields in frontmatter
|
|
45
|
+
*/
|
|
46
|
+
function validateRequiredFields(fm) {
|
|
47
|
+
const requiredFields = [
|
|
48
|
+
"id",
|
|
49
|
+
"title",
|
|
50
|
+
"status",
|
|
51
|
+
"priority",
|
|
52
|
+
"schema",
|
|
53
|
+
];
|
|
54
|
+
for (const field of requiredFields) {
|
|
55
|
+
if (fm[field] === undefined || fm[field] === null) {
|
|
56
|
+
throw new Error(`Missing required field: ${field}`);
|
|
57
|
+
}
|
|
58
|
+
if (typeof fm[field] !== "string") {
|
|
59
|
+
throw new Error(`Invalid type for field ${field}: Expected string`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Converts affectedFiles object to Map
|
|
65
|
+
*/
|
|
66
|
+
function processAffectedFiles(fm) {
|
|
67
|
+
const affectedFilesMap = new Map();
|
|
68
|
+
if (fm.affectedFiles &&
|
|
69
|
+
typeof fm.affectedFiles === "object" &&
|
|
70
|
+
fm.affectedFiles !== null) {
|
|
71
|
+
for (const [key, value] of Object.entries(fm.affectedFiles)) {
|
|
72
|
+
if (typeof value === "string") {
|
|
73
|
+
affectedFilesMap.set(key, value);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return affectedFilesMap;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Safely converts value to string array
|
|
81
|
+
*/
|
|
82
|
+
function toStringArray(value) {
|
|
83
|
+
if (Array.isArray(value)) {
|
|
84
|
+
return value.filter((item) => typeof item === "string");
|
|
85
|
+
}
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Converts status string to enum
|
|
90
|
+
*/
|
|
91
|
+
function toStatus(statusString) {
|
|
92
|
+
const status = statusString;
|
|
93
|
+
if (Object.values(models_1.TrellisObjectStatus).includes(status)) {
|
|
94
|
+
return status;
|
|
95
|
+
}
|
|
96
|
+
throw new Error(`Invalid status value: ${status}`);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Converts priority string to enum
|
|
100
|
+
*/
|
|
101
|
+
function toPriority(priorityString) {
|
|
102
|
+
const priority = priorityString;
|
|
103
|
+
if (Object.values(models_1.TrellisObjectPriority).includes(priority)) {
|
|
104
|
+
return priority;
|
|
105
|
+
}
|
|
106
|
+
throw new Error(`Invalid priority value: ${priority}`);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Deserializes a markdown string with YAML frontmatter back to a TrellisObject
|
|
110
|
+
* @param markdownString - The markdown string with YAML frontmatter to deserialize
|
|
111
|
+
* @returns A TrellisObject reconstructed from the markdown string
|
|
112
|
+
* @throws Error if the input string is not properly formatted or missing required fields
|
|
113
|
+
*/
|
|
114
|
+
function deserializeTrellisObject(markdownString) {
|
|
115
|
+
const { yamlContent, bodyContent } = extractFrontmatterAndBody(markdownString);
|
|
116
|
+
const fm = parseFrontmatter(yamlContent);
|
|
117
|
+
validateRequiredFields(fm);
|
|
118
|
+
const affectedFilesMap = processAffectedFiles(fm);
|
|
119
|
+
const trellisObject = {
|
|
120
|
+
id: fm.id,
|
|
121
|
+
type: (0, inferObjectType_1.inferObjectType)(fm.id),
|
|
122
|
+
title: fm.title,
|
|
123
|
+
status: toStatus(fm.status),
|
|
124
|
+
priority: toPriority(fm.priority),
|
|
125
|
+
prerequisites: toStringArray(fm.prerequisites),
|
|
126
|
+
affectedFiles: affectedFilesMap,
|
|
127
|
+
log: toStringArray(fm.log),
|
|
128
|
+
schema: fm.schema,
|
|
129
|
+
childrenIds: toStringArray(fm.childrenIds),
|
|
130
|
+
body: bodyContent,
|
|
131
|
+
};
|
|
132
|
+
return trellisObject;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=deserializeTrellisObject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deserializeTrellisObject.js","sourceRoot":"","sources":["../../src/utils/deserializeTrellisObject.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TrellisObject } from "../models/TrellisObject";
|
|
2
|
+
/**
|
|
3
|
+
* Filters a list of TrellisObjects to return only those that are available to work on.
|
|
4
|
+
*
|
|
5
|
+
* An object is considered unavailable if:
|
|
6
|
+
* 1. It doesn't have a status of "open"
|
|
7
|
+
* 2. It has prerequisites that refer to objects in the same list that are not "done" or "wont-do"
|
|
8
|
+
*
|
|
9
|
+
* @param objects - Array of TrellisObjects to filter
|
|
10
|
+
* @returns Array of available TrellisObjects
|
|
11
|
+
*/
|
|
12
|
+
export declare function filterUnavailableObjects(objects: TrellisObject[]): TrellisObject[];
|
|
13
|
+
//# sourceMappingURL=filterUnavailableObjects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterUnavailableObjects.d.ts","sourceRoot":"","sources":["../../src/utils/filterUnavailableObjects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,aAAa,EAAE,GACvB,aAAa,EAAE,CA+BjB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.filterUnavailableObjects = filterUnavailableObjects;
|
|
4
|
+
const TrellisObjectStatus_1 = require("../models/TrellisObjectStatus");
|
|
5
|
+
/**
|
|
6
|
+
* Filters a list of TrellisObjects to return only those that are available to work on.
|
|
7
|
+
*
|
|
8
|
+
* An object is considered unavailable if:
|
|
9
|
+
* 1. It doesn't have a status of "open"
|
|
10
|
+
* 2. It has prerequisites that refer to objects in the same list that are not "done" or "wont-do"
|
|
11
|
+
*
|
|
12
|
+
* @param objects - Array of TrellisObjects to filter
|
|
13
|
+
* @returns Array of available TrellisObjects
|
|
14
|
+
*/
|
|
15
|
+
function filterUnavailableObjects(objects) {
|
|
16
|
+
// Create a map for quick lookup of objects by ID
|
|
17
|
+
const objectMap = new Map();
|
|
18
|
+
objects.forEach((obj) => objectMap.set(obj.id, obj));
|
|
19
|
+
return objects.filter((obj) => {
|
|
20
|
+
// Rule 1: Object must have status "open"
|
|
21
|
+
if (obj.status !== TrellisObjectStatus_1.TrellisObjectStatus.OPEN) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
// Rule 2: Check prerequisites
|
|
25
|
+
for (const prerequisiteId of obj.prerequisites) {
|
|
26
|
+
const prerequisiteObj = objectMap.get(prerequisiteId);
|
|
27
|
+
// If prerequisite is not in the list, it's fine (external dependency)
|
|
28
|
+
if (!prerequisiteObj) {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
// If prerequisite is in the list but not done or wont-do, exclude this object
|
|
32
|
+
if (prerequisiteObj.status !== TrellisObjectStatus_1.TrellisObjectStatus.DONE &&
|
|
33
|
+
prerequisiteObj.status !== TrellisObjectStatus_1.TrellisObjectStatus.WONT_DO) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=filterUnavailableObjects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterUnavailableObjects.js","sourceRoot":"","sources":["../../src/utils/filterUnavailableObjects.ts"],"names":[],"mappings":";;AAaA,4DAiCC;AA7CD,uEAAoE;AAEpE;;;;;;;;;GASG;AACH,SAAgB,wBAAwB,CACtC,OAAwB;IAExB,iDAAiD;IACjD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;IACnD,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IAErD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QAC5B,yCAAyC;QACzC,IAAI,GAAG,CAAC,MAAM,KAAK,yCAAmB,CAAC,IAAI,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,8BAA8B;QAC9B,KAAK,MAAM,cAAc,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;YAC/C,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAEtD,sEAAsE;YACtE,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,SAAS;YACX,CAAC;YAED,8EAA8E;YAC9E,IACE,eAAe,CAAC,MAAM,KAAK,yCAAmB,CAAC,IAAI;gBACnD,eAAe,CAAC,MAAM,KAAK,yCAAmB,CAAC,OAAO,EACtD,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TrellisObjectType } from "../models/TrellisObjectType";
|
|
2
|
+
/**
|
|
3
|
+
* Generates a unique ID for a Trellis object
|
|
4
|
+
* @param title - The title to generate an ID from
|
|
5
|
+
* @param type - The type of Trellis object
|
|
6
|
+
* @param existingIds - List of existing IDs to avoid duplicates
|
|
7
|
+
* @returns A unique ID with appropriate prefix
|
|
8
|
+
*/
|
|
9
|
+
export declare function generateUniqueId(title: string, type: TrellisObjectType, existingIds: string[]): string;
|
|
10
|
+
//# sourceMappingURL=generateUniqueId.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateUniqueId.d.ts","sourceRoot":"","sources":["../../src/utils/generateUniqueId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AA4ChE;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,iBAAiB,EACvB,WAAW,EAAE,MAAM,EAAE,GACpB,MAAM,CAyBR"}
|