@langadventurellc/task-trellis-mcp 1.1.0 → 1.2.1

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.
Files changed (262) hide show
  1. package/README.md +37 -323
  2. package/dist/__tests__/e2e/autoPrune.e2e.test.d.ts +2 -0
  3. package/dist/__tests__/e2e/autoPrune.e2e.test.d.ts.map +1 -0
  4. package/dist/__tests__/e2e/autoPrune.e2e.test.js +533 -0
  5. package/dist/__tests__/e2e/autoPrune.e2e.test.js.map +1 -0
  6. package/dist/__tests__/e2e/configuration/activation.e2e.test.js +6 -6
  7. package/dist/__tests__/e2e/configuration/activation.e2e.test.js.map +1 -1
  8. package/dist/__tests__/e2e/configuration/commandLineArgs.e2e.test.js +55 -6
  9. package/dist/__tests__/e2e/configuration/commandLineArgs.e2e.test.js.map +1 -1
  10. package/dist/__tests__/e2e/configuration/directorySetup.e2e.test.js +19 -19
  11. package/dist/__tests__/e2e/configuration/directorySetup.e2e.test.js.map +1 -1
  12. package/dist/__tests__/e2e/configuration/invalidConfig.e2e.test.js +9 -9
  13. package/dist/__tests__/e2e/configuration/invalidConfig.e2e.test.js.map +1 -1
  14. package/dist/__tests__/e2e/configuration/preActivation.e2e.test.js +15 -15
  15. package/dist/__tests__/e2e/configuration/preActivation.e2e.test.js.map +1 -1
  16. package/dist/__tests__/e2e/crud/createObject.e2e.test.js +34 -34
  17. package/dist/__tests__/e2e/crud/createObject.e2e.test.js.map +1 -1
  18. package/dist/__tests__/e2e/crud/deleteObject.e2e.test.js +19 -19
  19. package/dist/__tests__/e2e/crud/deleteObject.e2e.test.js.map +1 -1
  20. package/dist/__tests__/e2e/crud/fileValidation.e2e.test.js +32 -32
  21. package/dist/__tests__/e2e/crud/fileValidation.e2e.test.js.map +1 -1
  22. package/dist/__tests__/e2e/crud/getObject.e2e.test.js +143 -22
  23. package/dist/__tests__/e2e/crud/getObject.e2e.test.js.map +1 -1
  24. package/dist/__tests__/e2e/crud/listObjects.e2e.test.js +561 -42
  25. package/dist/__tests__/e2e/crud/listObjects.e2e.test.js.map +1 -1
  26. package/dist/__tests__/e2e/crud/updateObject.e2e.test.js +497 -25
  27. package/dist/__tests__/e2e/crud/updateObject.e2e.test.js.map +1 -1
  28. package/dist/__tests__/e2e/hierarchicalPrerequisites.e2e.test.d.ts +2 -0
  29. package/dist/__tests__/e2e/hierarchicalPrerequisites.e2e.test.d.ts.map +1 -0
  30. package/dist/__tests__/e2e/hierarchicalPrerequisites.e2e.test.js +319 -0
  31. package/dist/__tests__/e2e/hierarchicalPrerequisites.e2e.test.js.map +1 -0
  32. package/dist/__tests__/e2e/infrastructure/client.e2e.test.js +4 -4
  33. package/dist/__tests__/e2e/infrastructure/client.e2e.test.js.map +1 -1
  34. package/dist/__tests__/e2e/infrastructure/server.e2e.test.js +6 -6
  35. package/dist/__tests__/e2e/infrastructure/server.e2e.test.js.map +1 -1
  36. package/dist/__tests__/e2e/utils/extractObjectIds.d.ts +1 -1
  37. package/dist/__tests__/e2e/utils/extractObjectIds.js +1 -1
  38. package/dist/__tests__/e2e/utils/mcpTestClient.d.ts.map +1 -1
  39. package/dist/__tests__/e2e/utils/mcpTestClient.js +3 -2
  40. package/dist/__tests__/e2e/utils/mcpTestClient.js.map +1 -1
  41. package/dist/__tests__/e2e/utils/parseListObjectsResponse.d.ts +1 -1
  42. package/dist/__tests__/e2e/utils/parseListObjectsResponse.js +1 -1
  43. package/dist/__tests__/e2e/utils/parseUpdateObjectResponse.d.ts +1 -1
  44. package/dist/__tests__/e2e/utils/parseUpdateObjectResponse.js +1 -1
  45. package/dist/__tests__/e2e/workflow/appendLog.e2e.test.js +4 -4
  46. package/dist/__tests__/e2e/workflow/appendLog.e2e.test.js.map +1 -1
  47. package/dist/__tests__/e2e/workflow/appendModifiedFiles.e2e.test.js +15 -15
  48. package/dist/__tests__/e2e/workflow/appendModifiedFiles.e2e.test.js.map +1 -1
  49. package/dist/__tests__/e2e/workflow/claimTask.e2e.test.js +44 -0
  50. package/dist/__tests__/e2e/workflow/claimTask.e2e.test.js.map +1 -1
  51. package/dist/__tests__/e2e/workflow/completeTask.e2e.test.js +4 -4
  52. package/dist/__tests__/e2e/workflow/completeTask.e2e.test.js.map +1 -1
  53. package/dist/__tests__/e2e/workflow/prerequisites.e2e.test.js +43 -43
  54. package/dist/__tests__/e2e/workflow/prerequisites.e2e.test.js.map +1 -1
  55. package/dist/__tests__/e2e/workflow/taskLifecycle.e2e.test.js +19 -19
  56. package/dist/__tests__/e2e/workflow/taskLifecycle.e2e.test.js.map +1 -1
  57. package/dist/__tests__/serverStartup.test.d.ts +2 -0
  58. package/dist/__tests__/serverStartup.test.d.ts.map +1 -0
  59. package/dist/__tests__/serverStartup.test.js +171 -0
  60. package/dist/__tests__/serverStartup.test.js.map +1 -0
  61. package/dist/configuration/ServerConfig.d.ts +2 -1
  62. package/dist/configuration/ServerConfig.d.ts.map +1 -1
  63. package/dist/repositories/Repository.d.ts +2 -1
  64. package/dist/repositories/Repository.d.ts.map +1 -1
  65. package/dist/repositories/local/LocalRepository.d.ts +2 -1
  66. package/dist/repositories/local/LocalRepository.d.ts.map +1 -1
  67. package/dist/repositories/local/LocalRepository.js +4 -0
  68. package/dist/repositories/local/LocalRepository.js.map +1 -1
  69. package/dist/repositories/local/__tests__/getChildrenOf.test.d.ts +2 -0
  70. package/dist/repositories/local/__tests__/getChildrenOf.test.d.ts.map +1 -0
  71. package/dist/repositories/local/__tests__/getChildrenOf.test.js +306 -0
  72. package/dist/repositories/local/__tests__/getChildrenOf.test.js.map +1 -0
  73. package/dist/repositories/local/__tests__/getObjects.test.js +309 -0
  74. package/dist/repositories/local/__tests__/getObjects.test.js.map +1 -1
  75. package/dist/repositories/local/deleteObjectById.d.ts.map +1 -1
  76. package/dist/repositories/local/deleteObjectById.js +2 -0
  77. package/dist/repositories/local/deleteObjectById.js.map +1 -1
  78. package/dist/repositories/local/getChildrenOf.d.ts +11 -0
  79. package/dist/repositories/local/getChildrenOf.d.ts.map +1 -0
  80. package/dist/repositories/local/getChildrenOf.js +73 -0
  81. package/dist/repositories/local/getChildrenOf.js.map +1 -0
  82. package/dist/repositories/local/getObjects.d.ts +1 -1
  83. package/dist/repositories/local/getObjects.d.ts.map +1 -1
  84. package/dist/repositories/local/getObjects.js +25 -6
  85. package/dist/repositories/local/getObjects.js.map +1 -1
  86. package/dist/server.js +39 -15
  87. package/dist/server.js.map +1 -1
  88. package/dist/services/TaskTrellisService.d.ts +4 -13
  89. package/dist/services/TaskTrellisService.d.ts.map +1 -1
  90. package/dist/services/local/LocalTaskTrellisService.d.ts +3 -9
  91. package/dist/services/local/LocalTaskTrellisService.d.ts.map +1 -1
  92. package/dist/services/local/LocalTaskTrellisService.js +4 -8
  93. package/dist/services/local/LocalTaskTrellisService.js.map +1 -1
  94. package/dist/services/local/__tests__/appendModifiedFiles.test.js +1 -0
  95. package/dist/services/local/__tests__/appendModifiedFiles.test.js.map +1 -1
  96. package/dist/services/local/__tests__/appendObjectLog.test.js +1 -0
  97. package/dist/services/local/__tests__/appendObjectLog.test.js.map +1 -1
  98. package/dist/services/local/__tests__/claimTask.test.js +127 -131
  99. package/dist/services/local/__tests__/claimTask.test.js.map +1 -1
  100. package/dist/services/local/__tests__/completeTask.test.js +30 -28
  101. package/dist/services/local/__tests__/completeTask.test.js.map +1 -1
  102. package/dist/services/local/__tests__/createObject.test.js +1 -0
  103. package/dist/services/local/__tests__/createObject.test.js.map +1 -1
  104. package/dist/services/local/__tests__/listObjects.test.js +135 -10
  105. package/dist/services/local/__tests__/listObjects.test.js.map +1 -1
  106. package/dist/services/local/__tests__/pruneClosed.test.js +446 -186
  107. package/dist/services/local/__tests__/pruneClosed.test.js.map +1 -1
  108. package/dist/services/local/__tests__/updateObject.test.js +234 -27
  109. package/dist/services/local/__tests__/updateObject.test.js.map +1 -1
  110. package/dist/services/local/claimTask.d.ts.map +1 -1
  111. package/dist/services/local/claimTask.js +25 -34
  112. package/dist/services/local/claimTask.js.map +1 -1
  113. package/dist/services/local/completeTask.d.ts +1 -1
  114. package/dist/services/local/completeTask.d.ts.map +1 -1
  115. package/dist/services/local/completeTask.js +4 -40
  116. package/dist/services/local/completeTask.js.map +1 -1
  117. package/dist/services/local/listObjects.d.ts +1 -1
  118. package/dist/services/local/listObjects.d.ts.map +1 -1
  119. package/dist/services/local/listObjects.js +10 -1
  120. package/dist/services/local/listObjects.js.map +1 -1
  121. package/dist/services/local/pruneClosed.d.ts.map +1 -1
  122. package/dist/services/local/pruneClosed.js +63 -6
  123. package/dist/services/local/pruneClosed.js.map +1 -1
  124. package/dist/services/local/updateObject.d.ts +2 -1
  125. package/dist/services/local/updateObject.d.ts.map +1 -1
  126. package/dist/services/local/updateObject.js +28 -1
  127. package/dist/services/local/updateObject.js.map +1 -1
  128. package/dist/tools/__tests__/appendModifiedFilesTool.test.js +1 -0
  129. package/dist/tools/__tests__/appendModifiedFilesTool.test.js.map +1 -1
  130. package/dist/tools/__tests__/appendObjectLogTool.test.js +1 -0
  131. package/dist/tools/__tests__/appendObjectLogTool.test.js.map +1 -1
  132. package/dist/tools/__tests__/claimTaskTool.test.js +1 -1
  133. package/dist/tools/__tests__/claimTaskTool.test.js.map +1 -1
  134. package/dist/tools/__tests__/completeTaskTool.test.js +23 -16
  135. package/dist/tools/__tests__/completeTaskTool.test.js.map +1 -1
  136. package/dist/tools/__tests__/createObjectTool.test.js +1 -0
  137. package/dist/tools/__tests__/createObjectTool.test.js.map +1 -1
  138. package/dist/tools/__tests__/deleteObjectTool.test.js +1 -0
  139. package/dist/tools/__tests__/deleteObjectTool.test.js.map +1 -1
  140. package/dist/tools/__tests__/getObjectTool.test.js +1 -0
  141. package/dist/tools/__tests__/getObjectTool.test.js.map +1 -1
  142. package/dist/tools/__tests__/listObjectsTool.test.js +160 -1
  143. package/dist/tools/__tests__/listObjectsTool.test.js.map +1 -1
  144. package/dist/tools/__tests__/updateObjectTool.test.js +39 -10
  145. package/dist/tools/__tests__/updateObjectTool.test.js.map +1 -1
  146. package/dist/tools/appendModifiedFilesTool.d.ts +2 -2
  147. package/dist/tools/appendModifiedFilesTool.js +4 -4
  148. package/dist/tools/appendModifiedFilesTool.js.map +1 -1
  149. package/dist/tools/appendObjectLogTool.d.ts +3 -3
  150. package/dist/tools/appendObjectLogTool.js +4 -4
  151. package/dist/tools/appendObjectLogTool.js.map +1 -1
  152. package/dist/tools/completeTaskTool.d.ts +1 -1
  153. package/dist/tools/completeTaskTool.d.ts.map +1 -1
  154. package/dist/tools/completeTaskTool.js +1 -1
  155. package/dist/tools/completeTaskTool.js.map +1 -1
  156. package/dist/tools/createObjectTool.d.ts +8 -8
  157. package/dist/tools/createObjectTool.js +13 -13
  158. package/dist/tools/createObjectTool.js.map +1 -1
  159. package/dist/tools/deleteObjectTool.d.ts +3 -3
  160. package/dist/tools/deleteObjectTool.js +12 -12
  161. package/dist/tools/deleteObjectTool.js.map +1 -1
  162. package/dist/tools/getObjectTool.d.ts +3 -3
  163. package/dist/tools/getObjectTool.d.ts.map +1 -1
  164. package/dist/tools/getObjectTool.js +12 -7
  165. package/dist/tools/getObjectTool.js.map +1 -1
  166. package/dist/tools/index.d.ts +7 -9
  167. package/dist/tools/index.d.ts.map +1 -1
  168. package/dist/tools/index.js +22 -28
  169. package/dist/tools/index.js.map +1 -1
  170. package/dist/tools/listObjectsTool.d.ts +20 -11
  171. package/dist/tools/listObjectsTool.d.ts.map +1 -1
  172. package/dist/tools/listObjectsTool.js +112 -40
  173. package/dist/tools/listObjectsTool.js.map +1 -1
  174. package/dist/tools/updateObjectTool.d.ts +12 -7
  175. package/dist/tools/updateObjectTool.d.ts.map +1 -1
  176. package/dist/tools/updateObjectTool.js +20 -14
  177. package/dist/tools/updateObjectTool.js.map +1 -1
  178. package/dist/utils/__tests__/checkHierarchicalPrerequisitesComplete.test.d.ts +2 -0
  179. package/dist/utils/__tests__/checkHierarchicalPrerequisitesComplete.test.d.ts.map +1 -0
  180. package/dist/utils/__tests__/checkHierarchicalPrerequisitesComplete.test.js +206 -0
  181. package/dist/utils/__tests__/checkHierarchicalPrerequisitesComplete.test.js.map +1 -0
  182. package/dist/utils/__tests__/checkPrerequisitesComplete.test.js +5 -0
  183. package/dist/utils/__tests__/checkPrerequisitesComplete.test.js.map +1 -1
  184. package/dist/utils/__tests__/filterUnavailableObjects.test.js +51 -25
  185. package/dist/utils/__tests__/filterUnavailableObjects.test.js.map +1 -1
  186. package/dist/utils/__tests__/isRequiredForOtherObjects.test.js +5 -0
  187. package/dist/utils/__tests__/isRequiredForOtherObjects.test.js.map +1 -1
  188. package/dist/utils/__tests__/updateParentHierarchy.test.d.ts +2 -0
  189. package/dist/utils/__tests__/updateParentHierarchy.test.d.ts.map +1 -0
  190. package/dist/utils/__tests__/updateParentHierarchy.test.js +137 -0
  191. package/dist/utils/__tests__/updateParentHierarchy.test.js.map +1 -0
  192. package/dist/utils/autoCompleteParentHierarchy.d.ts +11 -0
  193. package/dist/utils/autoCompleteParentHierarchy.d.ts.map +1 -0
  194. package/dist/utils/autoCompleteParentHierarchy.js +49 -0
  195. package/dist/utils/autoCompleteParentHierarchy.js.map +1 -0
  196. package/dist/utils/checkHierarchicalPrerequisitesComplete.d.ts +14 -0
  197. package/dist/utils/checkHierarchicalPrerequisitesComplete.d.ts.map +1 -0
  198. package/dist/utils/checkHierarchicalPrerequisitesComplete.js +47 -0
  199. package/dist/utils/checkHierarchicalPrerequisitesComplete.js.map +1 -0
  200. package/dist/utils/filterUnavailableObjects.d.ts +6 -4
  201. package/dist/utils/filterUnavailableObjects.d.ts.map +1 -1
  202. package/dist/utils/filterUnavailableObjects.js +16 -22
  203. package/dist/utils/filterUnavailableObjects.js.map +1 -1
  204. package/dist/utils/index.d.ts +3 -2
  205. package/dist/utils/index.d.ts.map +1 -1
  206. package/dist/utils/index.js +7 -3
  207. package/dist/utils/index.js.map +1 -1
  208. package/dist/utils/updateParentHierarchy.d.ts +11 -0
  209. package/dist/utils/updateParentHierarchy.d.ts.map +1 -0
  210. package/dist/utils/updateParentHierarchy.js +40 -0
  211. package/dist/utils/updateParentHierarchy.js.map +1 -0
  212. package/dist/validation/__tests__/validateObjectCreation.test.js +1 -0
  213. package/dist/validation/__tests__/validateObjectCreation.test.js.map +1 -1
  214. package/dist/validation/__tests__/validateParentExists.test.js +1 -0
  215. package/dist/validation/__tests__/validateParentExists.test.js.map +1 -1
  216. package/dist/validation/__tests__/validateStatusTransition.test.js +1 -0
  217. package/dist/validation/__tests__/validateStatusTransition.test.js.map +1 -1
  218. package/package.json +1 -1
  219. package/dist/__tests__/e2e/crud/replaceObjectBodyRegex.e2e.test.d.ts +0 -2
  220. package/dist/__tests__/e2e/crud/replaceObjectBodyRegex.e2e.test.d.ts.map +0 -1
  221. package/dist/__tests__/e2e/crud/replaceObjectBodyRegex.e2e.test.js +0 -693
  222. package/dist/__tests__/e2e/crud/replaceObjectBodyRegex.e2e.test.js.map +0 -1
  223. package/dist/__tests__/e2e/workflow/pruneClosed.e2e.test.d.ts +0 -2
  224. package/dist/__tests__/e2e/workflow/pruneClosed.e2e.test.d.ts.map +0 -1
  225. package/dist/__tests__/e2e/workflow/pruneClosed.e2e.test.js +0 -352
  226. package/dist/__tests__/e2e/workflow/pruneClosed.e2e.test.js.map +0 -1
  227. package/dist/services/local/__tests__/replaceObjectBodyRegex.test.d.ts +0 -2
  228. package/dist/services/local/__tests__/replaceObjectBodyRegex.test.d.ts.map +0 -1
  229. package/dist/services/local/__tests__/replaceObjectBodyRegex.test.js +0 -283
  230. package/dist/services/local/__tests__/replaceObjectBodyRegex.test.js.map +0 -1
  231. package/dist/services/local/replaceObjectBodyRegex.d.ts +0 -8
  232. package/dist/services/local/replaceObjectBodyRegex.d.ts.map +0 -1
  233. package/dist/services/local/replaceObjectBodyRegex.js +0 -85
  234. package/dist/services/local/replaceObjectBodyRegex.js.map +0 -1
  235. package/dist/tools/__tests__/pruneClosedTool.test.d.ts +0 -2
  236. package/dist/tools/__tests__/pruneClosedTool.test.d.ts.map +0 -1
  237. package/dist/tools/__tests__/pruneClosedTool.test.js +0 -112
  238. package/dist/tools/__tests__/pruneClosedTool.test.js.map +0 -1
  239. package/dist/tools/__tests__/replaceObjectBodyRegexTool.test.d.ts +0 -2
  240. package/dist/tools/__tests__/replaceObjectBodyRegexTool.test.d.ts.map +0 -1
  241. package/dist/tools/__tests__/replaceObjectBodyRegexTool.test.js +0 -89
  242. package/dist/tools/__tests__/replaceObjectBodyRegexTool.test.js.map +0 -1
  243. package/dist/tools/pruneClosedTool.d.ts +0 -27
  244. package/dist/tools/pruneClosedTool.d.ts.map +0 -1
  245. package/dist/tools/pruneClosedTool.js +0 -57
  246. package/dist/tools/pruneClosedTool.js.map +0 -1
  247. package/dist/tools/replaceObjectBodyRegexTool.d.ts +0 -36
  248. package/dist/tools/replaceObjectBodyRegexTool.d.ts.map +0 -1
  249. package/dist/tools/replaceObjectBodyRegexTool.js +0 -67
  250. package/dist/tools/replaceObjectBodyRegexTool.js.map +0 -1
  251. package/dist/utils/ReplaceStringOptions.d.ts +0 -12
  252. package/dist/utils/ReplaceStringOptions.d.ts.map +0 -1
  253. package/dist/utils/ReplaceStringOptions.js +0 -3
  254. package/dist/utils/ReplaceStringOptions.js.map +0 -1
  255. package/dist/utils/__tests__/replaceStringWithRegex.test.d.ts +0 -2
  256. package/dist/utils/__tests__/replaceStringWithRegex.test.d.ts.map +0 -1
  257. package/dist/utils/__tests__/replaceStringWithRegex.test.js +0 -281
  258. package/dist/utils/__tests__/replaceStringWithRegex.test.js.map +0 -1
  259. package/dist/utils/replaceStringWithRegex.d.ts +0 -45
  260. package/dist/utils/replaceStringWithRegex.d.ts.map +0 -1
  261. package/dist/utils/replaceStringWithRegex.js +0 -91
  262. package/dist/utils/replaceStringWithRegex.js.map +0 -1
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const TrellisObjectType_1 = require("../../models/TrellisObjectType");
4
+ const TrellisObjectStatus_1 = require("../../models/TrellisObjectStatus");
5
+ const TrellisObjectPriority_1 = require("../../models/TrellisObjectPriority");
6
+ const updateParentHierarchy_1 = require("../updateParentHierarchy");
7
+ describe("updateParentHierarchy", () => {
8
+ let mockRepository;
9
+ beforeEach(() => {
10
+ mockRepository = {
11
+ getObjectById: jest.fn(),
12
+ getObjects: jest.fn(),
13
+ saveObject: jest.fn(),
14
+ deleteObject: jest.fn(),
15
+ getChildrenOf: jest.fn(),
16
+ };
17
+ jest.clearAllMocks();
18
+ });
19
+ const createMockObject = (id, status = TrellisObjectStatus_1.TrellisObjectStatus.OPEN, parent) => ({
20
+ id,
21
+ type: TrellisObjectType_1.TrellisObjectType.TASK,
22
+ title: `Test ${id}`,
23
+ status,
24
+ priority: TrellisObjectPriority_1.TrellisObjectPriority.MEDIUM,
25
+ parent,
26
+ prerequisites: [],
27
+ affectedFiles: new Map(),
28
+ log: [],
29
+ schema: "v1.0",
30
+ childrenIds: [],
31
+ created: "2023-01-01T00:00:00.000Z",
32
+ updated: "2023-01-01T00:00:00.000Z",
33
+ body: "",
34
+ });
35
+ describe("when parentId is undefined", () => {
36
+ it("should return early without making any repository calls", async () => {
37
+ await (0, updateParentHierarchy_1.updateParentHierarchy)(undefined, mockRepository);
38
+ expect(mockRepository.getObjectById).not.toHaveBeenCalled();
39
+ expect(mockRepository.saveObject).not.toHaveBeenCalled();
40
+ });
41
+ });
42
+ describe("when parent does not exist", () => {
43
+ it("should return early without making save calls", async () => {
44
+ mockRepository.getObjectById.mockResolvedValue(null);
45
+ await (0, updateParentHierarchy_1.updateParentHierarchy)("P-parent", mockRepository);
46
+ expect(mockRepository.getObjectById).toHaveBeenCalledWith("P-parent");
47
+ expect(mockRepository.saveObject).not.toHaveBeenCalled();
48
+ });
49
+ });
50
+ describe("when parent is already in progress", () => {
51
+ it("should return early without making save calls", async () => {
52
+ const parentObject = createMockObject("P-parent", TrellisObjectStatus_1.TrellisObjectStatus.IN_PROGRESS);
53
+ mockRepository.getObjectById.mockResolvedValue(parentObject);
54
+ await (0, updateParentHierarchy_1.updateParentHierarchy)("P-parent", mockRepository);
55
+ expect(mockRepository.getObjectById).toHaveBeenCalledWith("P-parent");
56
+ expect(mockRepository.saveObject).not.toHaveBeenCalled();
57
+ });
58
+ });
59
+ describe("when parent needs to be updated", () => {
60
+ it("should update parent status to in-progress", async () => {
61
+ const parentObject = createMockObject("P-parent", TrellisObjectStatus_1.TrellisObjectStatus.OPEN);
62
+ mockRepository.getObjectById.mockResolvedValue(parentObject);
63
+ await (0, updateParentHierarchy_1.updateParentHierarchy)("P-parent", mockRepository);
64
+ expect(mockRepository.getObjectById).toHaveBeenCalledWith("P-parent");
65
+ expect(mockRepository.saveObject).toHaveBeenCalledWith({
66
+ ...parentObject,
67
+ status: TrellisObjectStatus_1.TrellisObjectStatus.IN_PROGRESS,
68
+ });
69
+ });
70
+ it("should update parent hierarchy recursively", async () => {
71
+ const grandParentObject = createMockObject("GP-grandparent", TrellisObjectStatus_1.TrellisObjectStatus.OPEN);
72
+ const parentObject = createMockObject("P-parent", TrellisObjectStatus_1.TrellisObjectStatus.OPEN, "GP-grandparent");
73
+ mockRepository.getObjectById
74
+ .mockResolvedValueOnce(parentObject)
75
+ .mockResolvedValueOnce(grandParentObject);
76
+ await (0, updateParentHierarchy_1.updateParentHierarchy)("P-parent", mockRepository);
77
+ expect(mockRepository.getObjectById).toHaveBeenCalledWith("P-parent");
78
+ expect(mockRepository.getObjectById).toHaveBeenCalledWith("GP-grandparent");
79
+ expect(mockRepository.saveObject).toHaveBeenCalledWith({
80
+ ...parentObject,
81
+ status: TrellisObjectStatus_1.TrellisObjectStatus.IN_PROGRESS,
82
+ });
83
+ expect(mockRepository.saveObject).toHaveBeenCalledWith({
84
+ ...grandParentObject,
85
+ status: TrellisObjectStatus_1.TrellisObjectStatus.IN_PROGRESS,
86
+ });
87
+ });
88
+ it("should stop recursion when encountering an already in-progress parent", async () => {
89
+ const grandParentObject = createMockObject("GP-grandparent", TrellisObjectStatus_1.TrellisObjectStatus.IN_PROGRESS);
90
+ const parentObject = createMockObject("P-parent", TrellisObjectStatus_1.TrellisObjectStatus.OPEN, "GP-grandparent");
91
+ mockRepository.getObjectById
92
+ .mockResolvedValueOnce(parentObject)
93
+ .mockResolvedValueOnce(grandParentObject);
94
+ await (0, updateParentHierarchy_1.updateParentHierarchy)("P-parent", mockRepository);
95
+ expect(mockRepository.getObjectById).toHaveBeenCalledWith("P-parent");
96
+ expect(mockRepository.getObjectById).toHaveBeenCalledWith("GP-grandparent");
97
+ expect(mockRepository.saveObject).toHaveBeenCalledTimes(1);
98
+ expect(mockRepository.saveObject).toHaveBeenCalledWith({
99
+ ...parentObject,
100
+ status: TrellisObjectStatus_1.TrellisObjectStatus.IN_PROGRESS,
101
+ });
102
+ });
103
+ });
104
+ describe("infinite recursion prevention", () => {
105
+ it("should prevent infinite recursion with visited IDs", async () => {
106
+ const parentObject = createMockObject("P-parent", TrellisObjectStatus_1.TrellisObjectStatus.OPEN, "P-parent");
107
+ mockRepository.getObjectById.mockResolvedValue(parentObject);
108
+ await (0, updateParentHierarchy_1.updateParentHierarchy)("P-parent", mockRepository);
109
+ expect(mockRepository.getObjectById).toHaveBeenCalledTimes(1);
110
+ expect(mockRepository.saveObject).toHaveBeenCalledTimes(1);
111
+ });
112
+ it("should handle circular references in parent hierarchy", async () => {
113
+ const parentA = createMockObject("P-A", TrellisObjectStatus_1.TrellisObjectStatus.OPEN, "P-B");
114
+ const parentB = createMockObject("P-B", TrellisObjectStatus_1.TrellisObjectStatus.OPEN, "P-A");
115
+ mockRepository.getObjectById.mockImplementation((id) => {
116
+ if (id === "P-A")
117
+ return Promise.resolve(parentA);
118
+ if (id === "P-B")
119
+ return Promise.resolve(parentB);
120
+ return Promise.resolve(null);
121
+ });
122
+ await (0, updateParentHierarchy_1.updateParentHierarchy)("P-A", mockRepository);
123
+ expect(mockRepository.getObjectById).toHaveBeenCalledWith("P-A");
124
+ expect(mockRepository.getObjectById).toHaveBeenCalledWith("P-B");
125
+ expect(mockRepository.saveObject).toHaveBeenCalledTimes(2);
126
+ });
127
+ });
128
+ describe("with custom visited IDs set", () => {
129
+ it("should respect pre-existing visited IDs", async () => {
130
+ const visitedIds = new Set(["P-parent"]);
131
+ await (0, updateParentHierarchy_1.updateParentHierarchy)("P-parent", mockRepository, visitedIds);
132
+ expect(mockRepository.getObjectById).not.toHaveBeenCalled();
133
+ expect(mockRepository.saveObject).not.toHaveBeenCalled();
134
+ });
135
+ });
136
+ });
137
+ //# sourceMappingURL=updateParentHierarchy.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateParentHierarchy.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/updateParentHierarchy.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { TrellisObject } from "../models";
2
+ import { Repository } from "../repositories";
3
+ /**
4
+ * Auto-completes parent objects when all their children are done or won't-do.
5
+ * This recursively moves up the hierarchy, marking parents as done when appropriate.
6
+ *
7
+ * @param repository - The repository instance
8
+ * @param completedObject - The object that was just completed
9
+ */
10
+ export declare function autoCompleteParentHierarchy(repository: Repository, completedObject: TrellisObject): Promise<void>;
11
+ //# sourceMappingURL=autoCompleteParentHierarchy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoCompleteParentHierarchy.d.ts","sourceRoot":"","sources":["../../src/utils/autoCompleteParentHierarchy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAGd,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,aAAa,GAC7B,OAAO,CAAC,IAAI,CAAC,CAsCf"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.autoCompleteParentHierarchy = autoCompleteParentHierarchy;
4
+ const models_1 = require("../models");
5
+ /**
6
+ * Auto-completes parent objects when all their children are done or won't-do.
7
+ * This recursively moves up the hierarchy, marking parents as done when appropriate.
8
+ *
9
+ * @param repository - The repository instance
10
+ * @param completedObject - The object that was just completed
11
+ */
12
+ async function autoCompleteParentHierarchy(repository, completedObject) {
13
+ // If the completed object has no parent, nothing to do
14
+ if (!completedObject.parent) {
15
+ return;
16
+ }
17
+ // Get the parent object
18
+ const parent = await repository.getObjectById(completedObject.parent);
19
+ if (!parent) {
20
+ return;
21
+ }
22
+ // Check if all children of the parent are done
23
+ const siblings = await Promise.all(parent.childrenIds.map((id) => repository.getObjectById(id)));
24
+ // Filter out null results and check if all are done
25
+ const validSiblings = siblings.filter((sibling) => sibling !== null);
26
+ const allChildrenDone = validSiblings.every((sibling) => sibling.status === models_1.TrellisObjectStatus.DONE ||
27
+ sibling.status === models_1.TrellisObjectStatus.WONT_DO);
28
+ // If all children are done, mark the parent as done and recurse up the hierarchy
29
+ if (allChildrenDone && parent.status !== models_1.TrellisObjectStatus.DONE) {
30
+ parent.status = models_1.TrellisObjectStatus.DONE;
31
+ parent.log.push(`Auto-completed: All child ${getChildTypeName(parent.type)} are complete`);
32
+ await repository.saveObject(parent);
33
+ // Recursively check the parent's parent
34
+ await autoCompleteParentHierarchy(repository, parent);
35
+ }
36
+ }
37
+ function getChildTypeName(parentType) {
38
+ switch (parentType) {
39
+ case models_1.TrellisObjectType.PROJECT:
40
+ return "epics";
41
+ case models_1.TrellisObjectType.EPIC:
42
+ return "features";
43
+ case models_1.TrellisObjectType.FEATURE:
44
+ return "tasks";
45
+ default:
46
+ return "children";
47
+ }
48
+ }
49
+ //# sourceMappingURL=autoCompleteParentHierarchy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoCompleteParentHierarchy.js","sourceRoot":"","sources":["../../src/utils/autoCompleteParentHierarchy.ts"],"names":[],"mappings":";;AAcA,kEAyCC;AAvDD,sCAImB;AAGnB;;;;;;GAMG;AACI,KAAK,UAAU,2BAA2B,CAC/C,UAAsB,EACtB,eAA8B;IAE9B,uDAAuD;IACvD,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,wBAAwB;IACxB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACtE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,+CAA+C;IAC/C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAC7D,CAAC;IAEF,oDAAoD;IACpD,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CACnC,CAAC,OAAO,EAA4B,EAAE,CAAC,OAAO,KAAK,IAAI,CACxD,CAAC;IACF,MAAM,eAAe,GAAG,aAAa,CAAC,KAAK,CACzC,CAAC,OAAO,EAAE,EAAE,CACV,OAAO,CAAC,MAAM,KAAK,4BAAmB,CAAC,IAAI;QAC3C,OAAO,CAAC,MAAM,KAAK,4BAAmB,CAAC,OAAO,CACjD,CAAC;IAEF,iFAAiF;IACjF,IAAI,eAAe,IAAI,MAAM,CAAC,MAAM,KAAK,4BAAmB,CAAC,IAAI,EAAE,CAAC;QAClE,MAAM,CAAC,MAAM,GAAG,4BAAmB,CAAC,IAAI,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,IAAI,CACb,6BAA6B,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAC1E,CAAC;QACF,MAAM,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEpC,wCAAwC;QACxC,MAAM,2BAA2B,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,UAA6B;IACrD,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,0BAAiB,CAAC,OAAO;YAC5B,OAAO,OAAO,CAAC;QACjB,KAAK,0BAAiB,CAAC,IAAI;YACzB,OAAO,UAAU,CAAC;QACpB,KAAK,0BAAiB,CAAC,OAAO;YAC5B,OAAO,OAAO,CAAC;QACjB;YACE,OAAO,UAAU,CAAC;IACtB,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { TrellisObject } from "../models/TrellisObject";
2
+ import { Repository } from "../repositories/Repository";
3
+ /**
4
+ * Checks if all prerequisites for a trellis object and its entire parent hierarchy are complete.
5
+ * This function recursively traverses up the parent hierarchy to ensure that if a parent has
6
+ * incomplete prerequisites, all its child tasks are excluded from being claimable.
7
+ *
8
+ * @param trellisObject - The trellis object to check prerequisites for
9
+ * @param repository - The repository to load prerequisite and parent objects from
10
+ * @param visitedIds - Set to prevent circular references (default: new Set())
11
+ * @returns Promise<boolean> - true if all prerequisites at all hierarchy levels are complete, false otherwise
12
+ */
13
+ export declare function checkHierarchicalPrerequisitesComplete(trellisObject: TrellisObject, repository: Repository, visitedIds?: Set<string>): Promise<boolean>;
14
+ //# sourceMappingURL=checkHierarchicalPrerequisitesComplete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkHierarchicalPrerequisitesComplete.d.ts","sourceRoot":"","sources":["../../src/utils/checkHierarchicalPrerequisitesComplete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGxD;;;;;;;;;GASG;AACH,wBAAsB,sCAAsC,CAC1D,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,UAAU,GAAE,GAAG,CAAC,MAAM,CAAa,GAClC,OAAO,CAAC,OAAO,CAAC,CA8ClB"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkHierarchicalPrerequisitesComplete = checkHierarchicalPrerequisitesComplete;
4
+ const checkPrerequisitesComplete_1 = require("./checkPrerequisitesComplete");
5
+ /**
6
+ * Checks if all prerequisites for a trellis object and its entire parent hierarchy are complete.
7
+ * This function recursively traverses up the parent hierarchy to ensure that if a parent has
8
+ * incomplete prerequisites, all its child tasks are excluded from being claimable.
9
+ *
10
+ * @param trellisObject - The trellis object to check prerequisites for
11
+ * @param repository - The repository to load prerequisite and parent objects from
12
+ * @param visitedIds - Set to prevent circular references (default: new Set())
13
+ * @returns Promise<boolean> - true if all prerequisites at all hierarchy levels are complete, false otherwise
14
+ */
15
+ async function checkHierarchicalPrerequisitesComplete(trellisObject, repository, visitedIds = new Set()) {
16
+ // Prevent infinite loops from circular references
17
+ if (visitedIds.has(trellisObject.id)) {
18
+ return true;
19
+ }
20
+ visitedIds.add(trellisObject.id);
21
+ // First check the object's own prerequisites
22
+ const ownPrerequisitesComplete = await (0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(trellisObject, repository);
23
+ if (!ownPrerequisitesComplete) {
24
+ return false;
25
+ }
26
+ // If the object has a parent, recursively check its prerequisites
27
+ if (trellisObject.parent) {
28
+ try {
29
+ const parent = await repository.getObjectById(trellisObject.parent);
30
+ // If parent doesn't exist, treat as complete (graceful handling)
31
+ if (!parent) {
32
+ return true;
33
+ }
34
+ // Recursively check parent's hierarchical prerequisites
35
+ const parentPrerequisitesComplete = await checkHierarchicalPrerequisitesComplete(parent, repository, visitedIds);
36
+ if (!parentPrerequisitesComplete) {
37
+ return false;
38
+ }
39
+ }
40
+ catch {
41
+ // If we can't load the parent, treat as complete (graceful handling)
42
+ return true;
43
+ }
44
+ }
45
+ return true;
46
+ }
47
+ //# sourceMappingURL=checkHierarchicalPrerequisitesComplete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkHierarchicalPrerequisitesComplete.js","sourceRoot":"","sources":["../../src/utils/checkHierarchicalPrerequisitesComplete.ts"],"names":[],"mappings":";;AAcA,wFAkDC;AA9DD,6EAA0E;AAE1E;;;;;;;;;GASG;AACI,KAAK,UAAU,sCAAsC,CAC1D,aAA4B,EAC5B,UAAsB,EACtB,aAA0B,IAAI,GAAG,EAAE;IAEnC,kDAAkD;IAClD,IAAI,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAEjC,6CAA6C;IAC7C,MAAM,wBAAwB,GAAG,MAAM,IAAA,uDAA0B,EAC/D,aAAa,EACb,UAAU,CACX,CAAC;IAEF,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kEAAkE;IAClE,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAEpE,iEAAiE;YACjE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAC;YACd,CAAC;YAED,wDAAwD;YACxD,MAAM,2BAA2B,GAC/B,MAAM,sCAAsC,CAC1C,MAAM,EACN,UAAU,EACV,UAAU,CACX,CAAC;YAEJ,IAAI,CAAC,2BAA2B,EAAE,CAAC;gBACjC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qEAAqE;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,13 +1,15 @@
1
1
  import { TrellisObject } from "../models/TrellisObject";
2
+ import { Repository } from "../repositories/Repository";
2
3
  /**
3
4
  * Filters a list of TrellisObjects to return only those that are available to work on.
4
5
  *
5
6
  * 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"
7
+ * 1. It doesn't have a claimable status (e.g., "open")
8
+ * 2. It has prerequisites that are incomplete (including hierarchical prerequisites)
8
9
  *
9
10
  * @param objects - Array of TrellisObjects to filter
10
- * @returns Array of available TrellisObjects
11
+ * @param repository - Repository for loading parent objects and checking prerequisites
12
+ * @returns Promise<Array<TrellisObject>> - Array of available TrellisObjects
11
13
  */
12
- export declare function filterUnavailableObjects(objects: TrellisObject[]): TrellisObject[];
14
+ export declare function filterUnavailableObjects(objects: TrellisObject[], repository: Repository): Promise<TrellisObject[]>;
13
15
  //# sourceMappingURL=filterUnavailableObjects.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filterUnavailableObjects.d.ts","sourceRoot":"","sources":["../../src/utils/filterUnavailableObjects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,aAAa,EAAE,GACvB,aAAa,EAAE,CA4BjB"}
1
+ {"version":3,"file":"filterUnavailableObjects.d.ts","sourceRoot":"","sources":["../../src/utils/filterUnavailableObjects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGxD;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,aAAa,EAAE,EACxB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,aAAa,EAAE,CAAC,CAsB1B"}
@@ -2,38 +2,32 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.filterUnavailableObjects = filterUnavailableObjects;
4
4
  const models_1 = require("../models");
5
+ const checkHierarchicalPrerequisitesComplete_1 = require("./checkHierarchicalPrerequisitesComplete");
5
6
  /**
6
7
  * Filters a list of TrellisObjects to return only those that are available to work on.
7
8
  *
8
9
  * 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"
10
+ * 1. It doesn't have a claimable status (e.g., "open")
11
+ * 2. It has prerequisites that are incomplete (including hierarchical prerequisites)
11
12
  *
12
13
  * @param objects - Array of TrellisObjects to filter
13
- * @returns Array of available TrellisObjects
14
+ * @param repository - Repository for loading parent objects and checking prerequisites
15
+ * @returns Promise<Array<TrellisObject>> - Array of available TrellisObjects
14
16
  */
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) => {
17
+ async function filterUnavailableObjects(objects, repository) {
18
+ // Filter objects asynchronously using hierarchical prerequisite checking
19
+ const availableObjects = [];
20
+ for (const obj of objects) {
20
21
  // Rule 1: Object must be claimable
21
22
  if (!(0, models_1.isClaimable)(obj)) {
22
- return false;
23
+ continue;
23
24
  }
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 open, exclude this object
32
- if ((0, models_1.isOpen)(prerequisiteObj)) {
33
- return false;
34
- }
25
+ // Rule 2: Check hierarchical prerequisites
26
+ const prereqsComplete = await (0, checkHierarchicalPrerequisitesComplete_1.checkHierarchicalPrerequisitesComplete)(obj, repository);
27
+ if (prereqsComplete) {
28
+ availableObjects.push(obj);
35
29
  }
36
- return true;
37
- });
30
+ }
31
+ return availableObjects;
38
32
  }
39
33
  //# sourceMappingURL=filterUnavailableObjects.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filterUnavailableObjects.js","sourceRoot":"","sources":["../../src/utils/filterUnavailableObjects.ts"],"names":[],"mappings":";;AAaA,4DA8BC;AA3CD,sCAAgD;AAGhD;;;;;;;;;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,mCAAmC;QACnC,IAAI,CAAC,IAAA,oBAAW,EAAC,GAAG,CAAC,EAAE,CAAC;YACtB,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,+CAA+C;YAC/C,IAAI,IAAA,eAAM,EAAC,eAAe,CAAC,EAAE,CAAC;gBAC5B,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"filterUnavailableObjects.js","sourceRoot":"","sources":["../../src/utils/filterUnavailableObjects.ts"],"names":[],"mappings":";;AAgBA,4DAyBC;AAzCD,sCAAwC;AAGxC,qGAAkG;AAElG;;;;;;;;;;GAUG;AACI,KAAK,UAAU,wBAAwB,CAC5C,OAAwB,EACxB,UAAsB;IAEtB,yEAAyE;IACzE,MAAM,gBAAgB,GAAoB,EAAE,CAAC;IAE7C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,mCAAmC;QACnC,IAAI,CAAC,IAAA,oBAAW,EAAC,GAAG,CAAC,EAAE,CAAC;YACtB,SAAS;QACX,CAAC;QAED,2CAA2C;QAC3C,MAAM,eAAe,GAAG,MAAM,IAAA,+EAAsC,EAClE,GAAG,EACH,UAAU,CACX,CAAC;QAEF,IAAI,eAAe,EAAE,CAAC;YACpB,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
@@ -1,3 +1,4 @@
1
+ export { checkHierarchicalPrerequisitesComplete } from "./checkHierarchicalPrerequisitesComplete";
1
2
  export { checkPrerequisitesComplete } from "./checkPrerequisitesComplete";
2
3
  export { deserializeTrellisObject } from "./deserializeTrellisObject";
3
4
  export { filterUnavailableObjects } from "./filterUnavailableObjects";
@@ -5,8 +6,8 @@ export { generateUniqueId } from "./generateUniqueId";
5
6
  export { inferObjectType } from "./inferObjectType";
6
7
  export { isRequiredForOtherObjects } from "./isRequiredForOtherObjects";
7
8
  export { MultipleMatchesError } from "./MultipleMatchesError";
8
- export { replaceStringWithRegex } from "./replaceStringWithRegex";
9
- export type { ReplaceStringOptions } from "./ReplaceStringOptions";
10
9
  export { serializeTrellisObject } from "./serializeTrellisObject";
11
10
  export { sortTrellisObjects } from "./sortTrellisObjects";
11
+ export { updateParentHierarchy } from "./updateParentHierarchy";
12
+ export { autoCompleteParentHierarchy } from "./autoCompleteParentHierarchy";
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sCAAsC,EAAE,MAAM,0CAA0C,CAAC;AAClG,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sortTrellisObjects = exports.serializeTrellisObject = exports.replaceStringWithRegex = exports.MultipleMatchesError = exports.isRequiredForOtherObjects = exports.inferObjectType = exports.generateUniqueId = exports.filterUnavailableObjects = exports.deserializeTrellisObject = exports.checkPrerequisitesComplete = void 0;
3
+ exports.autoCompleteParentHierarchy = exports.updateParentHierarchy = exports.sortTrellisObjects = exports.serializeTrellisObject = exports.MultipleMatchesError = exports.isRequiredForOtherObjects = exports.inferObjectType = exports.generateUniqueId = exports.filterUnavailableObjects = exports.deserializeTrellisObject = exports.checkPrerequisitesComplete = exports.checkHierarchicalPrerequisitesComplete = void 0;
4
+ var checkHierarchicalPrerequisitesComplete_1 = require("./checkHierarchicalPrerequisitesComplete");
5
+ Object.defineProperty(exports, "checkHierarchicalPrerequisitesComplete", { enumerable: true, get: function () { return checkHierarchicalPrerequisitesComplete_1.checkHierarchicalPrerequisitesComplete; } });
4
6
  var checkPrerequisitesComplete_1 = require("./checkPrerequisitesComplete");
5
7
  Object.defineProperty(exports, "checkPrerequisitesComplete", { enumerable: true, get: function () { return checkPrerequisitesComplete_1.checkPrerequisitesComplete; } });
6
8
  var deserializeTrellisObject_1 = require("./deserializeTrellisObject");
@@ -15,10 +17,12 @@ var isRequiredForOtherObjects_1 = require("./isRequiredForOtherObjects");
15
17
  Object.defineProperty(exports, "isRequiredForOtherObjects", { enumerable: true, get: function () { return isRequiredForOtherObjects_1.isRequiredForOtherObjects; } });
16
18
  var MultipleMatchesError_1 = require("./MultipleMatchesError");
17
19
  Object.defineProperty(exports, "MultipleMatchesError", { enumerable: true, get: function () { return MultipleMatchesError_1.MultipleMatchesError; } });
18
- var replaceStringWithRegex_1 = require("./replaceStringWithRegex");
19
- Object.defineProperty(exports, "replaceStringWithRegex", { enumerable: true, get: function () { return replaceStringWithRegex_1.replaceStringWithRegex; } });
20
20
  var serializeTrellisObject_1 = require("./serializeTrellisObject");
21
21
  Object.defineProperty(exports, "serializeTrellisObject", { enumerable: true, get: function () { return serializeTrellisObject_1.serializeTrellisObject; } });
22
22
  var sortTrellisObjects_1 = require("./sortTrellisObjects");
23
23
  Object.defineProperty(exports, "sortTrellisObjects", { enumerable: true, get: function () { return sortTrellisObjects_1.sortTrellisObjects; } });
24
+ var updateParentHierarchy_1 = require("./updateParentHierarchy");
25
+ Object.defineProperty(exports, "updateParentHierarchy", { enumerable: true, get: function () { return updateParentHierarchy_1.updateParentHierarchy; } });
26
+ var autoCompleteParentHierarchy_1 = require("./autoCompleteParentHierarchy");
27
+ Object.defineProperty(exports, "autoCompleteParentHierarchy", { enumerable: true, get: function () { return autoCompleteParentHierarchy_1.autoCompleteParentHierarchy; } });
24
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,2EAA0E;AAAjE,wIAAA,0BAA0B,OAAA;AACnC,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AACjC,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AACjC,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA;AAClC,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,mEAAkE;AAAzD,gIAAA,sBAAsB,OAAA;AAE/B,mEAAkE;AAAzD,gIAAA,sBAAsB,OAAA;AAC/B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,mGAAkG;AAAzF,gKAAA,sCAAsC,OAAA;AAC/C,2EAA0E;AAAjE,wIAAA,0BAA0B,OAAA;AACnC,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AACjC,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AACjC,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA;AAClC,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,mEAAkE;AAAzD,gIAAA,sBAAsB,OAAA;AAC/B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAC9B,6EAA4E;AAAnE,0IAAA,2BAA2B,OAAA"}
@@ -0,0 +1,11 @@
1
+ import { Repository } from "../repositories";
2
+ /**
3
+ * Updates the parent hierarchy to in-progress status when a task becomes in-progress.
4
+ * This ensures that parent objects reflect that work is being done on their children.
5
+ *
6
+ * @param parentId - The ID of the parent object to update
7
+ * @param repository - The repository instance
8
+ * @param visitedIds - Set of visited IDs to prevent infinite recursion
9
+ */
10
+ export declare function updateParentHierarchy(parentId: string | undefined, repository: Repository, visitedIds?: Set<string>): Promise<void>;
11
+ //# sourceMappingURL=updateParentHierarchy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateParentHierarchy.d.ts","sourceRoot":"","sources":["../../src/utils/updateParentHierarchy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,UAAU,EAAE,UAAU,EACtB,UAAU,GAAE,GAAG,CAAC,MAAM,CAAa,GAClC,OAAO,CAAC,IAAI,CAAC,CAgCf"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateParentHierarchy = updateParentHierarchy;
4
+ const models_1 = require("../models");
5
+ /**
6
+ * Updates the parent hierarchy to in-progress status when a task becomes in-progress.
7
+ * This ensures that parent objects reflect that work is being done on their children.
8
+ *
9
+ * @param parentId - The ID of the parent object to update
10
+ * @param repository - The repository instance
11
+ * @param visitedIds - Set of visited IDs to prevent infinite recursion
12
+ */
13
+ async function updateParentHierarchy(parentId, repository, visitedIds = new Set()) {
14
+ if (!parentId) {
15
+ return;
16
+ }
17
+ // Prevent infinite recursion by checking if we've already visited this ID
18
+ if (visitedIds.has(parentId)) {
19
+ return;
20
+ }
21
+ visitedIds.add(parentId);
22
+ const parent = await repository.getObjectById(parentId);
23
+ if (!parent) {
24
+ return;
25
+ }
26
+ // If parent is already in progress, we can stop here since we assume
27
+ // its parent is already in progress too
28
+ if (parent.status === models_1.TrellisObjectStatus.IN_PROGRESS) {
29
+ return;
30
+ }
31
+ // Update parent to in-progress
32
+ const updatedParent = {
33
+ ...parent,
34
+ status: models_1.TrellisObjectStatus.IN_PROGRESS,
35
+ };
36
+ await repository.saveObject(updatedParent);
37
+ // Continue up the hierarchy
38
+ await updateParentHierarchy(parent.parent, repository, visitedIds);
39
+ }
40
+ //# sourceMappingURL=updateParentHierarchy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateParentHierarchy.js","sourceRoot":"","sources":["../../src/utils/updateParentHierarchy.ts"],"names":[],"mappings":";;AAWA,sDAoCC;AA/CD,sCAAgD;AAGhD;;;;;;;GAOG;AACI,KAAK,UAAU,qBAAqB,CACzC,QAA4B,EAC5B,UAAsB,EACtB,aAA0B,IAAI,GAAG,EAAE;IAEnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,0EAA0E;IAC1E,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO;IACT,CAAC;IACD,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEzB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,qEAAqE;IACrE,wCAAwC;IACxC,IAAI,MAAM,CAAC,MAAM,KAAK,4BAAmB,CAAC,WAAW,EAAE,CAAC;QACtD,OAAO;IACT,CAAC;IAED,+BAA+B;IAC/B,MAAM,aAAa,GAAG;QACpB,GAAG,MAAM;QACT,MAAM,EAAE,4BAAmB,CAAC,WAAW;KACxC,CAAC;IAEF,MAAM,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAE3C,4BAA4B;IAC5B,MAAM,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACrE,CAAC"}
@@ -17,6 +17,7 @@ describe("validateObjectCreation", () => {
17
17
  getObjects: jest.fn(),
18
18
  saveObject: jest.fn(),
19
19
  deleteObject: jest.fn(),
20
+ getChildrenOf: jest.fn(),
20
21
  };
21
22
  testObject = {
22
23
  id: "T-test-123",
@@ -1 +1 @@
1
- {"version":3,"file":"validateObjectCreation.test.js","sourceRoot":"","sources":["../../../src/validation/__tests__/validateObjectCreation.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validateObjectCreation.test.js","sourceRoot":"","sources":["../../../src/validation/__tests__/validateObjectCreation.test.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ describe("validateParentExists", () => {
12
12
  getObjects: jest.fn(),
13
13
  saveObject: jest.fn(),
14
14
  deleteObject: jest.fn(),
15
+ getChildrenOf: jest.fn(),
15
16
  };
16
17
  jest.clearAllMocks();
17
18
  });
@@ -1 +1 @@
1
- {"version":3,"file":"validateParentExists.test.js","sourceRoot":"","sources":["../../../src/validation/__tests__/validateParentExists.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validateParentExists.test.js","sourceRoot":"","sources":["../../../src/validation/__tests__/validateParentExists.test.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ describe("validateStatusTransition", () => {
16
16
  getObjects: jest.fn(),
17
17
  saveObject: jest.fn(),
18
18
  deleteObject: jest.fn(),
19
+ getChildrenOf: jest.fn(),
19
20
  };
20
21
  jest.clearAllMocks();
21
22
  });
@@ -1 +1 @@
1
- {"version":3,"file":"validateStatusTransition.test.js","sourceRoot":"","sources":["../../../src/validation/__tests__/validateStatusTransition.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validateStatusTransition.test.js","sourceRoot":"","sources":["../../../src/validation/__tests__/validateStatusTransition.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langadventurellc/task-trellis-mcp",
3
- "version": "1.1.0",
3
+ "version": "1.2.1",
4
4
  "description": "An MCP server that helps AI coding agents break down projects into tasks and track their progress.",
5
5
  "homepage": "https://github.com/langadventurellc/task-trellis-mcp#readme",
6
6
  "bugs": {
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=replaceObjectBodyRegex.e2e.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replaceObjectBodyRegex.e2e.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/e2e/crud/replaceObjectBodyRegex.e2e.test.ts"],"names":[],"mappings":""}