@langadventurellc/task-trellis-mcp 1.0.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -263
- package/dist/__tests__/e2e/autoPrune.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/autoPrune.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/autoPrune.e2e.test.js +533 -0
- package/dist/__tests__/e2e/autoPrune.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/configuration/activation.e2e.test.js +6 -6
- package/dist/__tests__/e2e/configuration/activation.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/configuration/commandLineArgs.e2e.test.js +55 -6
- package/dist/__tests__/e2e/configuration/commandLineArgs.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/configuration/directorySetup.e2e.test.js +19 -19
- package/dist/__tests__/e2e/configuration/directorySetup.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/configuration/invalidConfig.e2e.test.js +9 -9
- package/dist/__tests__/e2e/configuration/invalidConfig.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/configuration/preActivation.e2e.test.js +15 -15
- package/dist/__tests__/e2e/configuration/preActivation.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/crud/createObject.e2e.test.js +94 -42
- package/dist/__tests__/e2e/crud/createObject.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/crud/deleteObject.e2e.test.js +19 -19
- package/dist/__tests__/e2e/crud/deleteObject.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/crud/fileValidation.e2e.test.js +32 -32
- package/dist/__tests__/e2e/crud/fileValidation.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/crud/getObject.e2e.test.js +143 -22
- package/dist/__tests__/e2e/crud/getObject.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/crud/listObjects.e2e.test.js +810 -121
- package/dist/__tests__/e2e/crud/listObjects.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/crud/updateObject.e2e.test.js +497 -25
- package/dist/__tests__/e2e/crud/updateObject.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/hierarchicalPrerequisites.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/hierarchicalPrerequisites.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/hierarchicalPrerequisites.e2e.test.js +319 -0
- package/dist/__tests__/e2e/hierarchicalPrerequisites.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/infrastructure/client.e2e.test.js +4 -4
- package/dist/__tests__/e2e/infrastructure/client.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/infrastructure/server.e2e.test.js +6 -6
- package/dist/__tests__/e2e/infrastructure/server.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/utils/extractObjectIds.d.ts +5 -0
- package/dist/__tests__/e2e/utils/extractObjectIds.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/extractObjectIds.js +12 -0
- package/dist/__tests__/e2e/utils/extractObjectIds.js.map +1 -0
- package/dist/__tests__/e2e/utils/index.d.ts +1 -0
- package/dist/__tests__/e2e/utils/index.d.ts.map +1 -1
- package/dist/__tests__/e2e/utils/index.js +3 -1
- package/dist/__tests__/e2e/utils/index.js.map +1 -1
- package/dist/__tests__/e2e/utils/mcpTestClient.d.ts +2 -1
- package/dist/__tests__/e2e/utils/mcpTestClient.d.ts.map +1 -1
- package/dist/__tests__/e2e/utils/mcpTestClient.js +15 -8
- package/dist/__tests__/e2e/utils/mcpTestClient.js.map +1 -1
- package/dist/__tests__/e2e/utils/parseListObjectsResponse.d.ts +4 -2
- package/dist/__tests__/e2e/utils/parseListObjectsResponse.d.ts.map +1 -1
- package/dist/__tests__/e2e/utils/parseListObjectsResponse.js +2 -1
- package/dist/__tests__/e2e/utils/parseListObjectsResponse.js.map +1 -1
- package/dist/__tests__/e2e/utils/parseUpdateObjectResponse.d.ts +1 -1
- package/dist/__tests__/e2e/utils/parseUpdateObjectResponse.js +1 -1
- package/dist/__tests__/e2e/workflow/appendLog.e2e.test.js +4 -4
- package/dist/__tests__/e2e/workflow/appendLog.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/workflow/appendModifiedFiles.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/workflow/appendModifiedFiles.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/workflow/appendModifiedFiles.e2e.test.js +597 -0
- package/dist/__tests__/e2e/workflow/appendModifiedFiles.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/workflow/claimTask.e2e.test.js +233 -0
- package/dist/__tests__/e2e/workflow/claimTask.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/workflow/completeTask.e2e.test.js +447 -1
- package/dist/__tests__/e2e/workflow/completeTask.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/workflow/prerequisites.e2e.test.js +43 -43
- package/dist/__tests__/e2e/workflow/prerequisites.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/workflow/taskLifecycle.e2e.test.js +22 -26
- package/dist/__tests__/e2e/workflow/taskLifecycle.e2e.test.js.map +1 -1
- package/dist/__tests__/serverStartup.test.d.ts +2 -0
- package/dist/__tests__/serverStartup.test.d.ts.map +1 -0
- package/dist/__tests__/serverStartup.test.js +171 -0
- package/dist/__tests__/serverStartup.test.js.map +1 -0
- package/dist/configuration/ServerConfig.d.ts +2 -0
- package/dist/configuration/ServerConfig.d.ts.map +1 -1
- package/dist/models/TrellisObjectSummary.d.ts +16 -0
- package/dist/models/TrellisObjectSummary.d.ts.map +1 -0
- package/dist/{utils/ReplaceStringOptions.js → models/TrellisObjectSummary.js} +1 -1
- package/dist/models/TrellisObjectSummary.js.map +1 -0
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js.map +1 -1
- package/dist/repositories/Repository.d.ts +2 -1
- package/dist/repositories/Repository.d.ts.map +1 -1
- package/dist/repositories/local/LocalRepository.d.ts +2 -1
- package/dist/repositories/local/LocalRepository.d.ts.map +1 -1
- package/dist/repositories/local/LocalRepository.js +4 -0
- package/dist/repositories/local/LocalRepository.js.map +1 -1
- package/dist/repositories/local/__tests__/getChildrenOf.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/getChildrenOf.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/getChildrenOf.test.js +306 -0
- package/dist/repositories/local/__tests__/getChildrenOf.test.js.map +1 -0
- package/dist/repositories/local/__tests__/getObjectFilePath.test.js +9 -6
- package/dist/repositories/local/__tests__/getObjectFilePath.test.js.map +1 -1
- package/dist/repositories/local/__tests__/getObjects.test.js +349 -10
- package/dist/repositories/local/__tests__/getObjects.test.js.map +1 -1
- package/dist/repositories/local/deleteObjectById.d.ts.map +1 -1
- package/dist/repositories/local/deleteObjectById.js +2 -0
- package/dist/repositories/local/deleteObjectById.js.map +1 -1
- package/dist/repositories/local/getChildrenOf.d.ts +11 -0
- package/dist/repositories/local/getChildrenOf.d.ts.map +1 -0
- package/dist/repositories/local/getChildrenOf.js +73 -0
- package/dist/repositories/local/getChildrenOf.js.map +1 -0
- package/dist/repositories/local/getObjectFilePath.d.ts.map +1 -1
- package/dist/repositories/local/getObjectFilePath.js +8 -4
- package/dist/repositories/local/getObjectFilePath.js.map +1 -1
- package/dist/repositories/local/getObjects.d.ts +1 -1
- package/dist/repositories/local/getObjects.d.ts.map +1 -1
- package/dist/repositories/local/getObjects.js +31 -7
- package/dist/repositories/local/getObjects.js.map +1 -1
- package/dist/server.js +57 -19
- package/dist/server.js.map +1 -1
- package/dist/services/TaskTrellisService.d.ts +78 -0
- package/dist/services/TaskTrellisService.d.ts.map +1 -0
- package/dist/services/TaskTrellisService.js +3 -0
- package/dist/services/TaskTrellisService.js.map +1 -0
- package/dist/services/local/LocalTaskTrellisService.d.ts +55 -0
- package/dist/services/local/LocalTaskTrellisService.d.ts.map +1 -0
- package/dist/services/local/LocalTaskTrellisService.js +73 -0
- package/dist/services/local/LocalTaskTrellisService.js.map +1 -0
- package/dist/services/local/__tests__/appendAffectedFiles.test.d.ts +2 -0
- package/dist/services/local/__tests__/appendAffectedFiles.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/appendAffectedFiles.test.js +202 -0
- package/dist/services/local/__tests__/appendAffectedFiles.test.js.map +1 -0
- package/dist/services/local/__tests__/appendModifiedFiles.test.d.ts +2 -0
- package/dist/services/local/__tests__/appendModifiedFiles.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/appendModifiedFiles.test.js +162 -0
- package/dist/services/local/__tests__/appendModifiedFiles.test.js.map +1 -0
- package/dist/services/local/__tests__/appendObjectLog.test.d.ts +2 -0
- package/dist/services/local/__tests__/appendObjectLog.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/appendObjectLog.test.js +105 -0
- package/dist/services/local/__tests__/appendObjectLog.test.js.map +1 -0
- package/dist/services/local/__tests__/claimTask.test.d.ts +2 -0
- package/dist/services/local/__tests__/claimTask.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/claimTask.test.js +459 -0
- package/dist/services/local/__tests__/claimTask.test.js.map +1 -0
- package/dist/services/local/__tests__/completeTask.test.d.ts +2 -0
- package/dist/services/local/__tests__/completeTask.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/completeTask.test.js +470 -0
- package/dist/services/local/__tests__/completeTask.test.js.map +1 -0
- package/dist/services/local/__tests__/createObject.test.d.ts +2 -0
- package/dist/services/local/__tests__/createObject.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/createObject.test.js +333 -0
- package/dist/services/local/__tests__/createObject.test.js.map +1 -0
- package/dist/services/local/__tests__/listObjects.test.d.ts +2 -0
- package/dist/services/local/__tests__/listObjects.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/listObjects.test.js +351 -0
- package/dist/services/local/__tests__/listObjects.test.js.map +1 -0
- package/dist/services/local/__tests__/pruneClosed.test.d.ts +2 -0
- package/dist/services/local/__tests__/pruneClosed.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/pruneClosed.test.js +473 -0
- package/dist/services/local/__tests__/pruneClosed.test.js.map +1 -0
- package/dist/services/local/__tests__/updateObject.test.d.ts +2 -0
- package/dist/services/local/__tests__/updateObject.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/updateObject.test.js +521 -0
- package/dist/services/local/__tests__/updateObject.test.js.map +1 -0
- package/dist/services/local/appendAffectedFiles.d.ts +12 -0
- package/dist/services/local/appendAffectedFiles.d.ts.map +1 -0
- package/dist/services/local/appendAffectedFiles.js +34 -0
- package/dist/services/local/appendAffectedFiles.js.map +1 -0
- package/dist/services/local/appendModifiedFiles.d.ts +15 -0
- package/dist/services/local/appendModifiedFiles.d.ts.map +1 -0
- package/dist/services/local/appendModifiedFiles.js +39 -0
- package/dist/services/local/appendModifiedFiles.js.map +1 -0
- package/dist/services/local/appendObjectLog.d.ts +8 -0
- package/dist/services/local/appendObjectLog.d.ts.map +1 -0
- package/dist/services/local/appendObjectLog.js +45 -0
- package/dist/services/local/appendObjectLog.js.map +1 -0
- package/dist/services/local/claimTask.d.ts +8 -0
- package/dist/services/local/claimTask.d.ts.map +1 -0
- package/dist/services/local/claimTask.js +109 -0
- package/dist/services/local/claimTask.js.map +1 -0
- package/dist/services/local/completeTask.d.ts +9 -0
- package/dist/services/local/completeTask.d.ts.map +1 -0
- package/dist/services/local/completeTask.js +38 -0
- package/dist/services/local/completeTask.js.map +1 -0
- package/dist/services/local/createObject.d.ts +9 -0
- package/dist/services/local/createObject.d.ts.map +1 -0
- package/dist/services/local/createObject.js +44 -0
- package/dist/services/local/createObject.js.map +1 -0
- package/dist/services/local/listObjects.d.ts +9 -0
- package/dist/services/local/listObjects.d.ts.map +1 -0
- package/dist/services/local/listObjects.js +52 -0
- package/dist/services/local/listObjects.js.map +1 -0
- package/dist/services/local/pruneClosed.d.ts +8 -0
- package/dist/services/local/pruneClosed.d.ts.map +1 -0
- package/dist/services/local/pruneClosed.js +112 -0
- package/dist/services/local/pruneClosed.js.map +1 -0
- package/dist/services/local/updateObject.d.ts +10 -0
- package/dist/services/local/updateObject.d.ts.map +1 -0
- package/dist/services/local/updateObject.js +80 -0
- package/dist/services/local/updateObject.js.map +1 -0
- package/dist/tools/__tests__/appendModifiedFilesTool.test.d.ts +2 -0
- package/dist/tools/__tests__/appendModifiedFilesTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/appendModifiedFilesTool.test.js +178 -0
- package/dist/tools/__tests__/appendModifiedFilesTool.test.js.map +1 -0
- package/dist/tools/__tests__/appendObjectLogTool.test.js +34 -101
- package/dist/tools/__tests__/appendObjectLogTool.test.js.map +1 -1
- package/dist/tools/__tests__/claimTaskTool.test.js +98 -311
- package/dist/tools/__tests__/claimTaskTool.test.js.map +1 -1
- package/dist/tools/__tests__/completeTaskTool.test.js +140 -183
- package/dist/tools/__tests__/completeTaskTool.test.js.map +1 -1
- package/dist/tools/__tests__/createObjectTool.test.js +62 -325
- package/dist/tools/__tests__/createObjectTool.test.js.map +1 -1
- package/dist/tools/__tests__/deleteObjectTool.test.js +1 -0
- package/dist/tools/__tests__/deleteObjectTool.test.js.map +1 -1
- package/dist/tools/__tests__/getObjectTool.test.js +1 -0
- package/dist/tools/__tests__/getObjectTool.test.js.map +1 -1
- package/dist/tools/__tests__/listObjectsTool.test.js +228 -108
- package/dist/tools/__tests__/listObjectsTool.test.js.map +1 -1
- package/dist/tools/__tests__/updateObjectTool.test.js +78 -167
- package/dist/tools/__tests__/updateObjectTool.test.js.map +1 -1
- package/dist/tools/appendModifiedFilesTool.d.ts +30 -0
- package/dist/tools/appendModifiedFilesTool.d.ts.map +1 -0
- package/dist/tools/appendModifiedFilesTool.js +55 -0
- package/dist/tools/appendModifiedFilesTool.js.map +1 -0
- package/dist/tools/appendObjectLogTool.d.ts +7 -6
- package/dist/tools/appendObjectLogTool.d.ts.map +1 -1
- package/dist/tools/appendObjectLogTool.js +6 -44
- package/dist/tools/appendObjectLogTool.js.map +1 -1
- package/dist/tools/claimTaskTool.d.ts +4 -3
- package/dist/tools/claimTaskTool.d.ts.map +1 -1
- package/dist/tools/claimTaskTool.js +2 -80
- package/dist/tools/claimTaskTool.js.map +1 -1
- package/dist/tools/completeTaskTool.d.ts +5 -3
- package/dist/tools/completeTaskTool.d.ts.map +1 -1
- package/dist/tools/completeTaskTool.js +3 -29
- package/dist/tools/completeTaskTool.js.map +1 -1
- package/dist/tools/createObjectTool.d.ts +13 -12
- package/dist/tools/createObjectTool.d.ts.map +1 -1
- package/dist/tools/createObjectTool.js +22 -55
- package/dist/tools/createObjectTool.js.map +1 -1
- package/dist/tools/deleteObjectTool.d.ts +3 -3
- package/dist/tools/deleteObjectTool.js +12 -12
- package/dist/tools/deleteObjectTool.js.map +1 -1
- package/dist/tools/getObjectTool.d.ts +3 -3
- package/dist/tools/getObjectTool.d.ts.map +1 -1
- package/dist/tools/getObjectTool.js +12 -7
- package/dist/tools/getObjectTool.js.map +1 -1
- package/dist/tools/index.d.ts +7 -8
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +22 -25
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/listObjectsTool.d.ts +24 -14
- package/dist/tools/listObjectsTool.d.ts.map +1 -1
- package/dist/tools/listObjectsTool.js +114 -50
- package/dist/tools/listObjectsTool.js.map +1 -1
- package/dist/tools/updateObjectTool.d.ts +15 -9
- package/dist/tools/updateObjectTool.d.ts.map +1 -1
- package/dist/tools/updateObjectTool.js +20 -60
- package/dist/tools/updateObjectTool.js.map +1 -1
- package/dist/utils/__tests__/checkHierarchicalPrerequisitesComplete.test.d.ts +2 -0
- package/dist/utils/__tests__/checkHierarchicalPrerequisitesComplete.test.d.ts.map +1 -0
- package/dist/utils/__tests__/checkHierarchicalPrerequisitesComplete.test.js +206 -0
- package/dist/utils/__tests__/checkHierarchicalPrerequisitesComplete.test.js.map +1 -0
- package/dist/utils/__tests__/checkPrerequisitesComplete.test.js +5 -0
- package/dist/utils/__tests__/checkPrerequisitesComplete.test.js.map +1 -1
- package/dist/utils/__tests__/filterUnavailableObjects.test.js +51 -25
- package/dist/utils/__tests__/filterUnavailableObjects.test.js.map +1 -1
- package/dist/utils/__tests__/isRequiredForOtherObjects.test.js +5 -0
- package/dist/utils/__tests__/isRequiredForOtherObjects.test.js.map +1 -1
- package/dist/utils/__tests__/updateParentHierarchy.test.d.ts +2 -0
- package/dist/utils/__tests__/updateParentHierarchy.test.d.ts.map +1 -0
- package/dist/utils/__tests__/updateParentHierarchy.test.js +137 -0
- package/dist/utils/__tests__/updateParentHierarchy.test.js.map +1 -0
- package/dist/utils/autoCompleteParentHierarchy.d.ts +11 -0
- package/dist/utils/autoCompleteParentHierarchy.d.ts.map +1 -0
- package/dist/utils/autoCompleteParentHierarchy.js +49 -0
- package/dist/utils/autoCompleteParentHierarchy.js.map +1 -0
- package/dist/utils/checkHierarchicalPrerequisitesComplete.d.ts +14 -0
- package/dist/utils/checkHierarchicalPrerequisitesComplete.d.ts.map +1 -0
- package/dist/utils/checkHierarchicalPrerequisitesComplete.js +47 -0
- package/dist/utils/checkHierarchicalPrerequisitesComplete.js.map +1 -0
- package/dist/utils/filterUnavailableObjects.d.ts +6 -4
- package/dist/utils/filterUnavailableObjects.d.ts.map +1 -1
- package/dist/utils/filterUnavailableObjects.js +16 -22
- package/dist/utils/filterUnavailableObjects.js.map +1 -1
- package/dist/utils/index.d.ts +3 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +7 -3
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/updateParentHierarchy.d.ts +11 -0
- package/dist/utils/updateParentHierarchy.d.ts.map +1 -0
- package/dist/utils/updateParentHierarchy.js +40 -0
- package/dist/utils/updateParentHierarchy.js.map +1 -0
- package/dist/validation/__tests__/validateObjectCreation.test.js +1 -0
- package/dist/validation/__tests__/validateObjectCreation.test.js.map +1 -1
- package/dist/validation/__tests__/validateParentExists.test.js +1 -0
- package/dist/validation/__tests__/validateParentExists.test.js.map +1 -1
- package/dist/validation/__tests__/validateParentType.test.js +5 -5
- package/dist/validation/__tests__/validateParentType.test.js.map +1 -1
- package/dist/validation/__tests__/validateStatusTransition.test.js +1 -0
- package/dist/validation/__tests__/validateStatusTransition.test.js.map +1 -1
- package/dist/validation/validateParentType.d.ts +1 -1
- package/dist/validation/validateParentType.d.ts.map +1 -1
- package/dist/validation/validateParentType.js +2 -5
- package/dist/validation/validateParentType.js.map +1 -1
- package/package.json +1 -1
- package/dist/__tests__/e2e/crud/replaceObjectBodyRegex.e2e.test.d.ts +0 -2
- package/dist/__tests__/e2e/crud/replaceObjectBodyRegex.e2e.test.d.ts.map +0 -1
- package/dist/__tests__/e2e/crud/replaceObjectBodyRegex.e2e.test.js +0 -693
- package/dist/__tests__/e2e/crud/replaceObjectBodyRegex.e2e.test.js.map +0 -1
- package/dist/__tests__/e2e/workflow/pruneClosed.e2e.test.d.ts +0 -2
- package/dist/__tests__/e2e/workflow/pruneClosed.e2e.test.d.ts.map +0 -1
- package/dist/__tests__/e2e/workflow/pruneClosed.e2e.test.js +0 -352
- package/dist/__tests__/e2e/workflow/pruneClosed.e2e.test.js.map +0 -1
- package/dist/tools/__tests__/pruneClosedTool.test.d.ts +0 -2
- package/dist/tools/__tests__/pruneClosedTool.test.d.ts.map +0 -1
- package/dist/tools/__tests__/pruneClosedTool.test.js +0 -171
- package/dist/tools/__tests__/pruneClosedTool.test.js.map +0 -1
- package/dist/tools/__tests__/replaceObjectBodyRegexTool.test.d.ts +0 -2
- package/dist/tools/__tests__/replaceObjectBodyRegexTool.test.d.ts.map +0 -1
- package/dist/tools/__tests__/replaceObjectBodyRegexTool.test.js +0 -258
- package/dist/tools/__tests__/replaceObjectBodyRegexTool.test.js.map +0 -1
- package/dist/tools/pruneClosedTool.d.ts +0 -26
- package/dist/tools/pruneClosedTool.d.ts.map +0 -1
- package/dist/tools/pruneClosedTool.js +0 -106
- package/dist/tools/pruneClosedTool.js.map +0 -1
- package/dist/tools/replaceObjectBodyRegexTool.d.ts +0 -35
- package/dist/tools/replaceObjectBodyRegexTool.d.ts.map +0 -1
- package/dist/tools/replaceObjectBodyRegexTool.js +0 -145
- package/dist/tools/replaceObjectBodyRegexTool.js.map +0 -1
- package/dist/utils/ReplaceStringOptions.d.ts +0 -12
- package/dist/utils/ReplaceStringOptions.d.ts.map +0 -1
- package/dist/utils/ReplaceStringOptions.js.map +0 -1
- package/dist/utils/__tests__/replaceStringWithRegex.test.d.ts +0 -2
- package/dist/utils/__tests__/replaceStringWithRegex.test.d.ts.map +0 -1
- package/dist/utils/__tests__/replaceStringWithRegex.test.js +0 -281
- package/dist/utils/__tests__/replaceStringWithRegex.test.js.map +0 -1
- package/dist/utils/replaceStringWithRegex.d.ts +0 -45
- package/dist/utils/replaceStringWithRegex.d.ts.map +0 -1
- package/dist/utils/replaceStringWithRegex.js +0 -91
- package/dist/utils/replaceStringWithRegex.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appendModifiedFiles.d.ts","sourceRoot":"","sources":["../../../src/services/local/appendModifiedFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA+B7D"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.appendModifiedFiles = appendModifiedFiles;
|
|
4
|
+
const appendAffectedFiles_1 = require("./appendAffectedFiles");
|
|
5
|
+
/**
|
|
6
|
+
* Appends modified files information to a trellis object
|
|
7
|
+
*
|
|
8
|
+
* @param repository - The repository instance
|
|
9
|
+
* @param id - The ID of the trellis object to update
|
|
10
|
+
* @param filesChanged - Record of file paths to descriptions of modifications
|
|
11
|
+
*/
|
|
12
|
+
async function appendModifiedFiles(repository, id, filesChanged) {
|
|
13
|
+
const trellisObject = await repository.getObjectById(id);
|
|
14
|
+
if (!trellisObject) {
|
|
15
|
+
return {
|
|
16
|
+
content: [
|
|
17
|
+
{
|
|
18
|
+
type: "text",
|
|
19
|
+
text: `Object with ID ${id} not found`,
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
// Append the affected files to the trellis object
|
|
25
|
+
await (0, appendAffectedFiles_1.appendAffectedFiles)(repository, trellisObject, filesChanged);
|
|
26
|
+
// Save the updated object
|
|
27
|
+
await repository.saveObject(trellisObject);
|
|
28
|
+
const fileCount = Object.keys(filesChanged).length;
|
|
29
|
+
const fileText = fileCount === 1 ? "file" : "files";
|
|
30
|
+
return {
|
|
31
|
+
content: [
|
|
32
|
+
{
|
|
33
|
+
type: "text",
|
|
34
|
+
text: `Successfully appended ${fileCount} modified ${fileText} to object ${id}`,
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=appendModifiedFiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appendModifiedFiles.js","sourceRoot":"","sources":["../../../src/services/local/appendModifiedFiles.ts"],"names":[],"mappings":";;AAUA,kDAmCC;AA5CD,+DAA4D;AAE5D;;;;;;GAMG;AACI,KAAK,UAAU,mBAAmB,CACvC,UAAsB,EACtB,EAAU,EACV,YAAoC;IAEpC,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAEzD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,kBAAkB,EAAE,YAAY;iBACvC;aACF;SACF,CAAC;IACJ,CAAC;IAED,kDAAkD;IAClD,MAAM,IAAA,yCAAmB,EAAC,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IAEnE,0BAA0B;IAC1B,MAAM,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAE3C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;IACnD,MAAM,QAAQ,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAEpD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,yBAAyB,SAAS,aAAa,QAAQ,cAAc,EAAE,EAAE;aAChF;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Repository } from "../../repositories";
|
|
2
|
+
export declare function appendObjectLog(repository: Repository, id: string, contents: string): Promise<{
|
|
3
|
+
content: Array<{
|
|
4
|
+
type: string;
|
|
5
|
+
text: string;
|
|
6
|
+
}>;
|
|
7
|
+
}>;
|
|
8
|
+
//# sourceMappingURL=appendObjectLog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appendObjectLog.d.ts","sourceRoot":"","sources":["../../../src/services/local/appendObjectLog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,wBAAsB,eAAe,CACnC,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA8C7D"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.appendObjectLog = appendObjectLog;
|
|
4
|
+
async function appendObjectLog(repository, id, contents) {
|
|
5
|
+
try {
|
|
6
|
+
// Load the existing object
|
|
7
|
+
const existingObject = await repository.getObjectById(id);
|
|
8
|
+
if (!existingObject) {
|
|
9
|
+
return {
|
|
10
|
+
content: [
|
|
11
|
+
{
|
|
12
|
+
type: "text",
|
|
13
|
+
text: `Error: Object with ID '${id}' not found`,
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
// Create updated object with new log entry appended
|
|
19
|
+
const updatedObject = {
|
|
20
|
+
...existingObject,
|
|
21
|
+
log: [...existingObject.log, contents],
|
|
22
|
+
};
|
|
23
|
+
// Save the updated object
|
|
24
|
+
await repository.saveObject(updatedObject);
|
|
25
|
+
return {
|
|
26
|
+
content: [
|
|
27
|
+
{
|
|
28
|
+
type: "text",
|
|
29
|
+
text: `Successfully appended to object log: ${JSON.stringify({ id, contents, totalLogEntries: updatedObject.log.length }, null, 2)}`,
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
return {
|
|
36
|
+
content: [
|
|
37
|
+
{
|
|
38
|
+
type: "text",
|
|
39
|
+
text: `Error appending to object log: ${error instanceof Error ? error.message : String(error)}`,
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=appendObjectLog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appendObjectLog.js","sourceRoot":"","sources":["../../../src/services/local/appendObjectLog.ts"],"names":[],"mappings":";;AAEA,0CAkDC;AAlDM,KAAK,UAAU,eAAe,CACnC,UAAsB,EACtB,EAAU,EACV,QAAgB;IAEhB,IAAI,CAAC;QACH,2BAA2B;QAC3B,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0BAA0B,EAAE,aAAa;qBAChD;iBACF;aACF,CAAC;QACJ,CAAC;QAED,oDAAoD;QACpD,MAAM,aAAa,GAAG;YACpB,GAAG,cAAc;YACjB,GAAG,EAAE,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC;SACvC,CAAC;QAEF,0BAA0B;QAC1B,MAAM,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAE3C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,wCAAwC,IAAI,CAAC,SAAS,CAC1D,EAAE,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,EAC3D,IAAI,EACJ,CAAC,CACF,EAAE;iBACJ;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBACjG;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Repository } from "../../repositories";
|
|
2
|
+
export declare function claimTask(repository: Repository, scope?: string, taskId?: string, force?: boolean): Promise<{
|
|
3
|
+
content: Array<{
|
|
4
|
+
type: string;
|
|
5
|
+
text: string;
|
|
6
|
+
}>;
|
|
7
|
+
}>;
|
|
8
|
+
//# sourceMappingURL=claimTask.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claimTask.d.ts","sourceRoot":"","sources":["../../../src/services/local/claimTask.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOhD,wBAAsB,SAAS,CAC7B,UAAU,EAAE,UAAU,EACtB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,GAAE,OAAe,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAqC7D"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.claimTask = claimTask;
|
|
4
|
+
const models_1 = require("../../models");
|
|
5
|
+
const checkPrerequisitesComplete_1 = require("../../utils/checkPrerequisitesComplete");
|
|
6
|
+
const checkHierarchicalPrerequisitesComplete_1 = require("../../utils/checkHierarchicalPrerequisitesComplete");
|
|
7
|
+
const filterUnavailableObjects_1 = require("../../utils/filterUnavailableObjects");
|
|
8
|
+
const sortTrellisObjects_1 = require("../../utils/sortTrellisObjects");
|
|
9
|
+
const updateParentHierarchy_1 = require("../../utils/updateParentHierarchy");
|
|
10
|
+
async function claimTask(repository, scope, taskId, force = false) {
|
|
11
|
+
try {
|
|
12
|
+
let claimedTask;
|
|
13
|
+
if (taskId) {
|
|
14
|
+
claimedTask = await claimSpecificTask(taskId, force, repository);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
claimedTask = await findNextAvailableTask(scope, repository);
|
|
18
|
+
}
|
|
19
|
+
const updatedTask = await updateTaskStatus(claimedTask, repository);
|
|
20
|
+
return {
|
|
21
|
+
content: [
|
|
22
|
+
{
|
|
23
|
+
type: "text",
|
|
24
|
+
text: `Successfully claimed task: ${JSON.stringify({
|
|
25
|
+
...updatedTask,
|
|
26
|
+
affectedFiles: Object.fromEntries(updatedTask.affectedFiles),
|
|
27
|
+
}, null, 2)}`,
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
return {
|
|
34
|
+
content: [
|
|
35
|
+
{
|
|
36
|
+
type: "text",
|
|
37
|
+
text: `Error claiming task: ${error instanceof Error ? error.message : String(error)}`,
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async function claimSpecificTask(taskId, force, repository) {
|
|
44
|
+
const object = await repository.getObjectById(taskId);
|
|
45
|
+
if (!object) {
|
|
46
|
+
throw new Error(`Task with ID "${taskId}" not found`);
|
|
47
|
+
}
|
|
48
|
+
await validateTaskForClaiming(object, taskId, force, repository);
|
|
49
|
+
return object;
|
|
50
|
+
}
|
|
51
|
+
async function findNextAvailableTask(scope, repository) {
|
|
52
|
+
const objects = await repository.getObjects(false, // includeClosed
|
|
53
|
+
scope, models_1.TrellisObjectType.TASK);
|
|
54
|
+
// Filter to get only available tasks
|
|
55
|
+
const availableTasks = await (0, filterUnavailableObjects_1.filterUnavailableObjects)(objects, repository);
|
|
56
|
+
if (availableTasks.length === 0) {
|
|
57
|
+
throw new Error("No available tasks to claim");
|
|
58
|
+
}
|
|
59
|
+
// Sort by priority and return the top one
|
|
60
|
+
const sortedTasks = (0, sortTrellisObjects_1.sortTrellisObjects)(availableTasks);
|
|
61
|
+
return sortedTasks[0];
|
|
62
|
+
}
|
|
63
|
+
async function updateTaskStatus(task, repository) {
|
|
64
|
+
const updatedTask = {
|
|
65
|
+
...task,
|
|
66
|
+
status: models_1.TrellisObjectStatus.IN_PROGRESS,
|
|
67
|
+
};
|
|
68
|
+
await repository.saveObject(updatedTask);
|
|
69
|
+
// Update parent hierarchy to in-progress (don't let errors fail the task claim)
|
|
70
|
+
try {
|
|
71
|
+
await (0, updateParentHierarchy_1.updateParentHierarchy)(task.parent, repository);
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
// Log but don't propagate parent hierarchy update errors
|
|
75
|
+
console.warn("Failed to update parent hierarchy:", error);
|
|
76
|
+
}
|
|
77
|
+
// Re-read the object from repository to ensure proper Map reconstruction
|
|
78
|
+
// This is needed because the in-memory object may not have the Map properly reconstructed
|
|
79
|
+
const savedTask = await repository.getObjectById(task.id);
|
|
80
|
+
if (!savedTask) {
|
|
81
|
+
throw new Error(`Failed to retrieve saved task with ID "${task.id}"`);
|
|
82
|
+
}
|
|
83
|
+
return savedTask;
|
|
84
|
+
}
|
|
85
|
+
async function validateTaskForClaiming(task, taskId, force, repository) {
|
|
86
|
+
// Validate it's a task
|
|
87
|
+
if (task.type !== models_1.TrellisObjectType.TASK) {
|
|
88
|
+
throw new Error(`Object with ID "${taskId}" is not a task (type: ${task.type})`);
|
|
89
|
+
}
|
|
90
|
+
if (!force) {
|
|
91
|
+
// Validate status is draft or open
|
|
92
|
+
if (!(0, models_1.isClaimable)(task)) {
|
|
93
|
+
throw new Error(`Task "${taskId}" cannot be claimed (status: ${task.status}). Task must be in draft or open status.`);
|
|
94
|
+
}
|
|
95
|
+
// Validate all prerequisites are complete (including hierarchical)
|
|
96
|
+
const prerequisitesComplete = await (0, checkHierarchicalPrerequisitesComplete_1.checkHierarchicalPrerequisitesComplete)(task, repository);
|
|
97
|
+
if (!prerequisitesComplete) {
|
|
98
|
+
// Determine if it's the task's own prerequisites or a parent's
|
|
99
|
+
const ownPrerequisitesComplete = await (0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(task, repository);
|
|
100
|
+
if (ownPrerequisitesComplete) {
|
|
101
|
+
throw new Error(`Task "${taskId}" cannot be claimed. Parent hierarchy has incomplete prerequisites.`);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
throw new Error(`Task "${taskId}" cannot be claimed. Not all prerequisites are complete.`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=claimTask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claimTask.js","sourceRoot":"","sources":["../../../src/services/local/claimTask.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ServerConfig } from "../../configuration";
|
|
2
|
+
import { Repository } from "../../repositories";
|
|
3
|
+
export declare function completeTask(repository: Repository, serverConfig: ServerConfig, taskId: string, summary: string, filesChanged: Record<string, string>): Promise<{
|
|
4
|
+
content: Array<{
|
|
5
|
+
type: string;
|
|
6
|
+
text: string;
|
|
7
|
+
}>;
|
|
8
|
+
}>;
|
|
9
|
+
//# sourceMappingURL=completeTask.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completeTask.d.ts","sourceRoot":"","sources":["../../../src/services/local/completeTask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIhD,wBAAsB,YAAY,CAChC,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAuC7D"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.completeTask = completeTask;
|
|
4
|
+
const models_1 = require("../../models");
|
|
5
|
+
const utils_1 = require("../../utils");
|
|
6
|
+
const appendAffectedFiles_js_1 = require("./appendAffectedFiles.js");
|
|
7
|
+
async function completeTask(repository, serverConfig, taskId, summary, filesChanged) {
|
|
8
|
+
// Get the task object from repository
|
|
9
|
+
const task = await repository.getObjectById(taskId);
|
|
10
|
+
if (!task) {
|
|
11
|
+
throw new Error(`Task with ID "${taskId}" not found`);
|
|
12
|
+
}
|
|
13
|
+
// Check if task is in progress
|
|
14
|
+
if (task.status !== models_1.TrellisObjectStatus.IN_PROGRESS) {
|
|
15
|
+
throw new Error(`Task "${taskId}" is not in progress (current status: ${task.status})`);
|
|
16
|
+
}
|
|
17
|
+
// Update task status to done
|
|
18
|
+
task.status = models_1.TrellisObjectStatus.DONE;
|
|
19
|
+
// Append to affected files map
|
|
20
|
+
await (0, appendAffectedFiles_js_1.appendAffectedFiles)(repository, task, filesChanged);
|
|
21
|
+
// Append summary to log
|
|
22
|
+
task.log.push(summary);
|
|
23
|
+
// Save the updated task
|
|
24
|
+
await repository.saveObject(task);
|
|
25
|
+
// If auto-complete parent is enabled, check if we should complete parent objects
|
|
26
|
+
if (serverConfig.autoCompleteParent) {
|
|
27
|
+
await (0, utils_1.autoCompleteParentHierarchy)(repository, task);
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
content: [
|
|
31
|
+
{
|
|
32
|
+
type: "text",
|
|
33
|
+
text: `Task "${taskId}" completed successfully. Updated ${Object.keys(filesChanged).length} affected files.`,
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=completeTask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completeTask.js","sourceRoot":"","sources":["../../../src/services/local/completeTask.ts"],"names":[],"mappings":";;AAMA,oCA6CC;AAlDD,yCAAmD;AAEnD,uCAA0D;AAC1D,qEAA+D;AAExD,KAAK,UAAU,YAAY,CAChC,UAAsB,EACtB,YAA0B,EAC1B,MAAc,EACd,OAAe,EACf,YAAoC;IAEpC,sCAAsC;IACtC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,aAAa,CAAC,CAAC;IACxD,CAAC;IAED,+BAA+B;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,4BAAmB,CAAC,WAAW,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,SAAS,MAAM,yCAAyC,IAAI,CAAC,MAAM,GAAG,CACvE,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,MAAM,GAAG,4BAAmB,CAAC,IAAI,CAAC;IAEvC,+BAA+B;IAC/B,MAAM,IAAA,4CAAmB,EAAC,UAAU,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IAE1D,wBAAwB;IACxB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEvB,wBAAwB;IACxB,MAAM,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAElC,iFAAiF;IACjF,IAAI,YAAY,CAAC,kBAAkB,EAAE,CAAC;QACpC,MAAM,IAAA,mCAA2B,EAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS,MAAM,qCAAqC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,kBAAkB;aAC7G;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TrellisObjectPriority, TrellisObjectStatus, TrellisObjectType } from "../../models";
|
|
2
|
+
import { Repository } from "../../repositories";
|
|
3
|
+
export declare function createObject(repository: Repository, type: TrellisObjectType, title: string, parent?: string, priority?: TrellisObjectPriority, status?: TrellisObjectStatus, prerequisites?: string[], description?: string): Promise<{
|
|
4
|
+
content: Array<{
|
|
5
|
+
type: string;
|
|
6
|
+
text: string;
|
|
7
|
+
}>;
|
|
8
|
+
}>;
|
|
9
|
+
//# sourceMappingURL=createObject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createObject.d.ts","sourceRoot":"","sources":["../../../src/services/local/createObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIhD,wBAAsB,YAAY,CAChC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,GAAE,qBAAoD,EAC9D,MAAM,GAAE,mBAA8C,EACtD,aAAa,GAAE,MAAM,EAAO,EAC5B,WAAW,GAAE,MAAW,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAyC7D"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createObject = createObject;
|
|
4
|
+
const models_1 = require("../../models");
|
|
5
|
+
const utils_1 = require("../../utils");
|
|
6
|
+
const validateObjectCreation_1 = require("../../validation/validateObjectCreation");
|
|
7
|
+
async function createObject(repository, type, title, parent, priority = models_1.TrellisObjectPriority.MEDIUM, status = models_1.TrellisObjectStatus.OPEN, prerequisites = [], description = "") {
|
|
8
|
+
// Get existing objects to generate unique ID
|
|
9
|
+
const existingObjects = await repository.getObjects(true);
|
|
10
|
+
const existingIds = existingObjects.map((obj) => obj.id);
|
|
11
|
+
// Generate unique ID
|
|
12
|
+
const id = (0, utils_1.generateUniqueId)(title, type, existingIds);
|
|
13
|
+
// Create TrellisObject with current timestamp
|
|
14
|
+
const now = new Date().toISOString();
|
|
15
|
+
const trellisObject = {
|
|
16
|
+
id,
|
|
17
|
+
type,
|
|
18
|
+
title,
|
|
19
|
+
status,
|
|
20
|
+
priority,
|
|
21
|
+
parent,
|
|
22
|
+
prerequisites,
|
|
23
|
+
affectedFiles: new Map(),
|
|
24
|
+
log: [],
|
|
25
|
+
schema: "v1.0",
|
|
26
|
+
childrenIds: [],
|
|
27
|
+
created: now,
|
|
28
|
+
updated: now,
|
|
29
|
+
body: description,
|
|
30
|
+
};
|
|
31
|
+
// Validate object before saving
|
|
32
|
+
await (0, validateObjectCreation_1.validateObjectCreation)(trellisObject, repository);
|
|
33
|
+
// Save through repository
|
|
34
|
+
await repository.saveObject(trellisObject);
|
|
35
|
+
return {
|
|
36
|
+
content: [
|
|
37
|
+
{
|
|
38
|
+
type: "text",
|
|
39
|
+
text: `Created object with ID: ${id}`,
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=createObject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createObject.js","sourceRoot":"","sources":["../../../src/services/local/createObject.ts"],"names":[],"mappings":";;AAUA,oCAkDC;AA5DD,yCAKsB;AAEtB,uCAA+C;AAC/C,oFAAiF;AAE1E,KAAK,UAAU,YAAY,CAChC,UAAsB,EACtB,IAAuB,EACvB,KAAa,EACb,MAAe,EACf,WAAkC,8BAAqB,CAAC,MAAM,EAC9D,SAA8B,4BAAmB,CAAC,IAAI,EACtD,gBAA0B,EAAE,EAC5B,cAAsB,EAAE;IAExB,6CAA6C;IAC7C,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEzD,qBAAqB;IACrB,MAAM,EAAE,GAAG,IAAA,wBAAgB,EAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAEtD,8CAA8C;IAC9C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,aAAa,GAAkB;QACnC,EAAE;QACF,IAAI;QACJ,KAAK;QACL,MAAM;QACN,QAAQ;QACR,MAAM;QACN,aAAa;QACb,aAAa,EAAE,IAAI,GAAG,EAAE;QACxB,GAAG,EAAE,EAAE;QACP,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,GAAG;QACZ,IAAI,EAAE,WAAW;KAClB,CAAC;IAEF,gCAAgC;IAChC,MAAM,IAAA,+CAAsB,EAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAExD,0BAA0B;IAC1B,MAAM,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAE3C,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,2BAA2B,EAAE,EAAE;aACtC;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TrellisObjectPriority, TrellisObjectStatus, TrellisObjectType } from "../../models";
|
|
2
|
+
import { Repository } from "../../repositories";
|
|
3
|
+
export declare function listObjects(repository: Repository, type?: TrellisObjectType | TrellisObjectType[], scope?: string, status?: TrellisObjectStatus | TrellisObjectStatus[], priority?: TrellisObjectPriority | TrellisObjectPriority[], includeClosed?: boolean): Promise<{
|
|
4
|
+
content: Array<{
|
|
5
|
+
type: string;
|
|
6
|
+
text: string;
|
|
7
|
+
}>;
|
|
8
|
+
}>;
|
|
9
|
+
//# sourceMappingURL=listObjects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listObjects.d.ts","sourceRoot":"","sources":["../../../src/services/local/listObjects.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EACrB,mBAAmB,EAEnB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAsBhD,wBAAsB,WAAW,CAC/B,UAAU,EAAE,UAAU,EACtB,IAAI,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,EAC9C,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,EAAE,EACpD,QAAQ,CAAC,EAAE,qBAAqB,GAAG,qBAAqB,EAAE,EAC1D,aAAa,GAAE,OAAe,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAoC7D"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listObjects = listObjects;
|
|
4
|
+
function convertToSummary(obj) {
|
|
5
|
+
return {
|
|
6
|
+
id: obj.id,
|
|
7
|
+
type: obj.type,
|
|
8
|
+
title: obj.title,
|
|
9
|
+
status: obj.status,
|
|
10
|
+
priority: obj.priority,
|
|
11
|
+
parent: obj.parent,
|
|
12
|
+
prerequisites: obj.prerequisites,
|
|
13
|
+
childrenIds: obj.childrenIds,
|
|
14
|
+
created: obj.created,
|
|
15
|
+
updated: obj.updated,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const normalizeEnumInput = (input) => {
|
|
19
|
+
if (input === undefined)
|
|
20
|
+
return undefined;
|
|
21
|
+
return Array.isArray(input) ? input : [input];
|
|
22
|
+
};
|
|
23
|
+
async function listObjects(repository, type, scope, status, priority, includeClosed = false) {
|
|
24
|
+
try {
|
|
25
|
+
// Normalize inputs to arrays
|
|
26
|
+
const normalizedType = normalizeEnumInput(type);
|
|
27
|
+
const normalizedStatus = normalizeEnumInput(status);
|
|
28
|
+
const normalizedPriority = normalizeEnumInput(priority);
|
|
29
|
+
// Get objects from repository
|
|
30
|
+
const objects = await repository.getObjects(includeClosed, scope, normalizedType, normalizedStatus, normalizedPriority);
|
|
31
|
+
const objectSummaries = objects.map(convertToSummary);
|
|
32
|
+
return {
|
|
33
|
+
content: [
|
|
34
|
+
{
|
|
35
|
+
type: "text",
|
|
36
|
+
text: JSON.stringify(objectSummaries, null, 2),
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
return {
|
|
43
|
+
content: [
|
|
44
|
+
{
|
|
45
|
+
type: "text",
|
|
46
|
+
text: `Error listing objects: ${error instanceof Error ? error.message : String(error)}`,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=listObjects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listObjects.js","sourceRoot":"","sources":["../../../src/services/local/listObjects.ts"],"names":[],"mappings":";;AA6BA,kCA2CC;AA/DD,SAAS,gBAAgB,CAAC,GAAkB;IAC1C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;KACrB,CAAC;AACJ,CAAC;AAED,MAAM,kBAAkB,GAAG,CAAI,KAA0B,EAAmB,EAAE;IAC5E,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC,CAAC;AAEK,KAAK,UAAU,WAAW,CAC/B,UAAsB,EACtB,IAA8C,EAC9C,KAAc,EACd,MAAoD,EACpD,QAA0D,EAC1D,gBAAyB,KAAK;IAE9B,IAAI,CAAC;QACH,6BAA6B;QAC7B,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAExD,8BAA8B;QAC9B,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,CACzC,aAAa,EACb,KAAK,EACL,cAAc,EACd,gBAAgB,EAChB,kBAAkB,CACnB,CAAC;QAEF,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAEtD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC/C;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBACzF;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pruneClosed.d.ts","sourceRoot":"","sources":["../../../src/services/local/pruneClosed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AA8ChD,wBAAsB,WAAW,CAC/B,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAsF7D"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pruneClosed = pruneClosed;
|
|
4
|
+
const models_1 = require("../../models");
|
|
5
|
+
/**
|
|
6
|
+
* Recursively checks if an object has any open descendants at any level.
|
|
7
|
+
*
|
|
8
|
+
* @param objectId - The ID of the object to check for open descendants
|
|
9
|
+
* @param repository - The repository to query for children
|
|
10
|
+
* @param visited - Set to track visited objects and prevent infinite loops
|
|
11
|
+
* @returns Promise<boolean> - true if any descendant at any level is open
|
|
12
|
+
*/
|
|
13
|
+
async function hasOpenDescendants(objectId, repository, visited = new Set()) {
|
|
14
|
+
// Prevent infinite loops by tracking visited objects
|
|
15
|
+
if (visited.has(objectId)) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
visited.add(objectId);
|
|
19
|
+
try {
|
|
20
|
+
// Get all children (including closed ones)
|
|
21
|
+
const children = await repository.getChildrenOf(objectId, true);
|
|
22
|
+
// Check each child
|
|
23
|
+
for (const child of children) {
|
|
24
|
+
// If any direct child is open, return true immediately
|
|
25
|
+
if ((0, models_1.isOpen)(child)) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
// Recursively check if this child has open descendants
|
|
29
|
+
if (await hasOpenDescendants(child.id, repository, visited)) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
// If we can't check descendants, err on the side of caution
|
|
37
|
+
console.error(`Error checking descendants for ${objectId}:`, error);
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async function pruneClosed(repository, age, scope) {
|
|
42
|
+
try {
|
|
43
|
+
// Early return for disabled auto-prune
|
|
44
|
+
if (age <= 0) {
|
|
45
|
+
const message = scope
|
|
46
|
+
? `Auto-prune disabled (threshold: ${age} days) in scope ${scope}`
|
|
47
|
+
: `Auto-prune disabled (threshold: ${age} days)`;
|
|
48
|
+
return {
|
|
49
|
+
content: [{ type: "text", text: message }],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// Get all objects including closed ones
|
|
53
|
+
const objects = await repository.getObjects(true, scope);
|
|
54
|
+
// Filter to only closed objects
|
|
55
|
+
const closedObjects = objects.filter(models_1.isClosed);
|
|
56
|
+
// Calculate cutoff time (age in days ago)
|
|
57
|
+
const cutoffTime = new Date(Date.now() - age * 24 * 60 * 60 * 1000);
|
|
58
|
+
// Filter to objects older than cutoff
|
|
59
|
+
const objectsToDelete = closedObjects.filter((obj) => {
|
|
60
|
+
const updatedTime = new Date(obj.updated);
|
|
61
|
+
return updatedTime < cutoffTime;
|
|
62
|
+
});
|
|
63
|
+
// Delete each object with hierarchical child validation
|
|
64
|
+
const deletedIds = [];
|
|
65
|
+
const skippedIds = [];
|
|
66
|
+
for (const obj of objectsToDelete) {
|
|
67
|
+
try {
|
|
68
|
+
// Check if object has open descendants at any level
|
|
69
|
+
const hasOpenDescendantsResult = await hasOpenDescendants(obj.id, repository);
|
|
70
|
+
if (hasOpenDescendantsResult) {
|
|
71
|
+
// Skip deletion if object has open descendants
|
|
72
|
+
skippedIds.push(obj.id);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
// Proceed with deletion if no open children
|
|
76
|
+
await repository.deleteObject(obj.id, true);
|
|
77
|
+
deletedIds.push(obj.id);
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
// Continue with other objects even if one fails
|
|
81
|
+
console.error(`Failed to delete object ${obj.id}:`, error);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const message = scope
|
|
85
|
+
? `Pruned ${deletedIds.length} closed objects older than ${age} days in scope ${scope}`
|
|
86
|
+
: `Pruned ${deletedIds.length} closed objects older than ${age} days`;
|
|
87
|
+
const skippedMessage = skippedIds.length > 0
|
|
88
|
+
? `\nSkipped ${skippedIds.length} objects with open children: ${skippedIds.join(", ")}`
|
|
89
|
+
: "";
|
|
90
|
+
return {
|
|
91
|
+
content: [
|
|
92
|
+
{
|
|
93
|
+
type: "text",
|
|
94
|
+
text: `${message}${deletedIds.length > 0
|
|
95
|
+
? `\nDeleted objects: ${deletedIds.join(", ")}`
|
|
96
|
+
: ""}${skippedMessage}`,
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
return {
|
|
103
|
+
content: [
|
|
104
|
+
{
|
|
105
|
+
type: "text",
|
|
106
|
+
text: `Error pruning closed objects: ${error instanceof Error ? error.message : String(error)}`,
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=pruneClosed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pruneClosed.js","sourceRoot":"","sources":["../../../src/services/local/pruneClosed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ServerConfig } from "../../configuration";
|
|
2
|
+
import { TrellisObjectPriority, TrellisObjectStatus } from "../../models";
|
|
3
|
+
import { Repository } from "../../repositories";
|
|
4
|
+
export declare function updateObject(repository: Repository, serverConfig: ServerConfig, id: string, title?: string, priority?: TrellisObjectPriority, prerequisites?: string[], body?: string, status?: TrellisObjectStatus, force?: boolean): Promise<{
|
|
5
|
+
content: Array<{
|
|
6
|
+
type: string;
|
|
7
|
+
text: string;
|
|
8
|
+
}>;
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=updateObject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateObject.d.ts","sourceRoot":"","sources":["../../../src/services/local/updateObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAEL,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOhD,wBAAsB,YAAY,CAChC,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,qBAAqB,EAChC,aAAa,CAAC,EAAE,MAAM,EAAE,EACxB,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,mBAAmB,EAC5B,KAAK,GAAE,OAAe,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAmF7D"}
|