@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
@@ -1,283 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const models_1 = require("../../../models");
4
- const replaceObjectBodyRegex_1 = require("../replaceObjectBodyRegex");
5
- describe("replaceObjectBodyRegex", () => {
6
- let mockRepository;
7
- beforeEach(() => {
8
- mockRepository = {
9
- getObjectById: jest.fn(),
10
- getObjects: jest.fn(),
11
- saveObject: jest.fn(),
12
- deleteObject: jest.fn(),
13
- };
14
- jest.clearAllMocks();
15
- });
16
- const mockTrellisObject = {
17
- id: "T-test-task",
18
- type: models_1.TrellisObjectType.TASK,
19
- title: "Test Task",
20
- status: models_1.TrellisObjectStatus.OPEN,
21
- priority: models_1.TrellisObjectPriority.MEDIUM,
22
- parent: "F-test-feature",
23
- prerequisites: [],
24
- affectedFiles: new Map(),
25
- log: [],
26
- schema: "1.0",
27
- childrenIds: [],
28
- body: "This is the old content that needs to be replaced with new content.",
29
- created: "2025-01-15T10:00:00Z",
30
- updated: "2025-01-15T10:00:00Z",
31
- };
32
- describe("successful regex replacements", () => {
33
- it("should successfully replace text using simple regex pattern", async () => {
34
- mockRepository.getObjectById.mockResolvedValue(mockTrellisObject);
35
- mockRepository.saveObject.mockResolvedValue();
36
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "old content", "new content", false);
37
- const expectedUpdatedObject = {
38
- ...mockTrellisObject,
39
- body: "This is the new content that needs to be replaced with new content.",
40
- };
41
- expect(mockRepository.getObjectById).toHaveBeenCalledWith("T-test-task");
42
- expect(mockRepository.saveObject).toHaveBeenCalledWith(expectedUpdatedObject);
43
- expect(result.content[0].text).toContain('Successfully replaced content in object body using pattern "old content"');
44
- expect(result.content[0].text).toContain("T-test-task");
45
- });
46
- it("should successfully replace text using regex with backreferences", async () => {
47
- const objectWithNames = {
48
- ...mockTrellisObject,
49
- body: "Name: John Doe",
50
- };
51
- mockRepository.getObjectById.mockResolvedValue(objectWithNames);
52
- mockRepository.saveObject.mockResolvedValue();
53
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "Name: (\\w+) (\\w+)", "Name: $2, $1", false);
54
- const expectedUpdatedObject = {
55
- ...objectWithNames,
56
- body: "Name: Doe, John",
57
- };
58
- expect(mockRepository.saveObject).toHaveBeenCalledWith(expectedUpdatedObject);
59
- expect(result.content[0].text).toContain("Successfully replaced content");
60
- });
61
- it("should handle multiline regex patterns", async () => {
62
- const objectWithMultilineContent = {
63
- ...mockTrellisObject,
64
- body: `Section A:
65
- This is old content
66
- that spans multiple lines
67
- End Section A`,
68
- };
69
- mockRepository.getObjectById.mockResolvedValue(objectWithMultilineContent);
70
- mockRepository.saveObject.mockResolvedValue();
71
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "Section A:.*?End Section A", "Section A:\nThis is new content\nEnd Section A", false);
72
- const expectedUpdatedObject = {
73
- ...objectWithMultilineContent,
74
- body: "Section A:\nThis is new content\nEnd Section A",
75
- };
76
- expect(mockRepository.saveObject).toHaveBeenCalledWith(expectedUpdatedObject);
77
- expect(result.content[0].text).toContain("Successfully replaced content");
78
- });
79
- it("should handle complex patterns with context", async () => {
80
- const objectWithSections = {
81
- ...mockTrellisObject,
82
- body: `# Header 1
83
- Some content here
84
-
85
- ## Section to Update
86
- Old implementation details
87
- End of section
88
-
89
- # Header 2
90
- Other content`,
91
- };
92
- mockRepository.getObjectById.mockResolvedValue(objectWithSections);
93
- mockRepository.saveObject.mockResolvedValue();
94
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "(## Section to Update\\s+).*?(\\s+End of section)", "$1New implementation details$2", false);
95
- const expectedBody = `# Header 1
96
- Some content here
97
-
98
- ## Section to Update
99
- New implementation details
100
- End of section
101
-
102
- # Header 2
103
- Other content`;
104
- const expectedUpdatedObject = {
105
- ...objectWithSections,
106
- body: expectedBody,
107
- };
108
- expect(mockRepository.saveObject).toHaveBeenCalledWith(expectedUpdatedObject);
109
- expect(result.content[0].text).toContain("Successfully replaced content");
110
- });
111
- it("should preserve object metadata when updating body", async () => {
112
- mockRepository.getObjectById.mockResolvedValue(mockTrellisObject);
113
- mockRepository.saveObject.mockResolvedValue();
114
- await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "old content", "new content", false);
115
- const savedObject = mockRepository.saveObject.mock.calls[0][0];
116
- expect(savedObject.id).toBe(mockTrellisObject.id);
117
- expect(savedObject.type).toBe(mockTrellisObject.type);
118
- expect(savedObject.title).toBe(mockTrellisObject.title);
119
- expect(savedObject.status).toBe(mockTrellisObject.status);
120
- expect(savedObject.priority).toBe(mockTrellisObject.priority);
121
- expect(savedObject.prerequisites).toBe(mockTrellisObject.prerequisites);
122
- expect(savedObject.created).toBe(mockTrellisObject.created);
123
- expect(savedObject.updated).toBe(mockTrellisObject.updated);
124
- expect(savedObject.body).toBe("This is the new content that needs to be replaced with new content.");
125
- });
126
- });
127
- describe("multiple occurrences handling", () => {
128
- it("should allow multiple occurrences when specified", async () => {
129
- const objectWithRepeats = {
130
- ...mockTrellisObject,
131
- body: "Replace this word and also replace this word again.",
132
- };
133
- mockRepository.getObjectById.mockResolvedValue(objectWithRepeats);
134
- mockRepository.saveObject.mockResolvedValue();
135
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "replace", "update", true);
136
- const expectedUpdatedObject = {
137
- ...objectWithRepeats,
138
- body: "Replace this word and also update this word again.",
139
- };
140
- expect(mockRepository.saveObject).toHaveBeenCalledWith(expectedUpdatedObject);
141
- expect(result.content[0].text).toContain("Successfully replaced content");
142
- });
143
- it("should reject multiple occurrences when not allowed", async () => {
144
- const objectWithRepeats = {
145
- ...mockTrellisObject,
146
- body: "test content and more test content",
147
- };
148
- mockRepository.getObjectById.mockResolvedValue(objectWithRepeats);
149
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "test", "demo", false);
150
- expect(mockRepository.saveObject).not.toHaveBeenCalled();
151
- expect(result.content[0].text).toContain("Found 2 matches for pattern");
152
- expect(result.content[0].text).toContain("allowMultipleOccurrences is false");
153
- });
154
- });
155
- describe("error handling", () => {
156
- it("should return error when object is not found", async () => {
157
- mockRepository.getObjectById.mockResolvedValue(null);
158
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-nonexistent", "old", "new", false);
159
- expect(mockRepository.getObjectById).toHaveBeenCalledWith("T-nonexistent");
160
- expect(mockRepository.saveObject).not.toHaveBeenCalled();
161
- expect(result.content[0].text).toBe("Error: Object with ID 'T-nonexistent' not found");
162
- });
163
- it("should return error when object has no body content", async () => {
164
- const objectWithoutBody = {
165
- ...mockTrellisObject,
166
- body: "",
167
- };
168
- mockRepository.getObjectById.mockResolvedValue(objectWithoutBody);
169
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "old", "new", false);
170
- expect(mockRepository.saveObject).not.toHaveBeenCalled();
171
- expect(result.content[0].text).toBe("Error: Object with ID 'T-test-task' has no body content to replace");
172
- });
173
- it("should handle invalid regex patterns gracefully", async () => {
174
- mockRepository.getObjectById.mockResolvedValue(mockTrellisObject);
175
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "[invalid regex", "new content", false);
176
- expect(mockRepository.saveObject).not.toHaveBeenCalled();
177
- expect(result.content[0].text).toContain("Error replacing object body:");
178
- expect(result.content[0].text).toContain("Invalid regex pattern");
179
- });
180
- it("should handle repository errors gracefully", async () => {
181
- mockRepository.getObjectById.mockRejectedValue(new Error("Database connection failed"));
182
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "old", "new", false);
183
- expect(result.content[0].text).toBe("Error replacing object body: Database connection failed");
184
- });
185
- it("should handle save errors gracefully", async () => {
186
- mockRepository.getObjectById.mockResolvedValue(mockTrellisObject);
187
- mockRepository.saveObject.mockRejectedValue(new Error("Failed to save"));
188
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "old content", "new content", false);
189
- expect(result.content[0].text).toBe("Error replacing object body: Failed to save");
190
- });
191
- it("should handle empty regex pattern", async () => {
192
- mockRepository.getObjectById.mockResolvedValue(mockTrellisObject);
193
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "", "new content", false);
194
- expect(mockRepository.saveObject).not.toHaveBeenCalled();
195
- expect(result.content[0].text).toContain("Regex pattern cannot be empty");
196
- });
197
- });
198
- describe("edge cases", () => {
199
- it("should inform user when no matches are found", async () => {
200
- mockRepository.getObjectById.mockResolvedValue(mockTrellisObject);
201
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "nonexistent pattern", "new content", false);
202
- expect(mockRepository.saveObject).not.toHaveBeenCalled();
203
- expect(result.content[0].text).toBe('No matches found for pattern "nonexistent pattern" in object body. Body remains unchanged.');
204
- });
205
- it("should handle empty replacement string", async () => {
206
- mockRepository.getObjectById.mockResolvedValue(mockTrellisObject);
207
- mockRepository.saveObject.mockResolvedValue();
208
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "old content", "", false);
209
- const expectedUpdatedObject = {
210
- ...mockTrellisObject,
211
- body: "This is the that needs to be replaced with new content.",
212
- };
213
- expect(mockRepository.saveObject).toHaveBeenCalledWith(expectedUpdatedObject);
214
- expect(result.content[0].text).toContain("Successfully replaced content");
215
- });
216
- it("should handle null body property", async () => {
217
- const objectWithNullBody = {
218
- ...mockTrellisObject,
219
- body: null,
220
- };
221
- mockRepository.getObjectById.mockResolvedValue(objectWithNullBody);
222
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "old", "new", false);
223
- expect(mockRepository.saveObject).not.toHaveBeenCalled();
224
- expect(result.content[0].text).toBe("Error: Object with ID 'T-test-task' has no body content to replace");
225
- });
226
- it("should handle undefined body property", async () => {
227
- const objectWithUndefinedBody = {
228
- ...mockTrellisObject,
229
- };
230
- delete objectWithUndefinedBody.body;
231
- mockRepository.getObjectById.mockResolvedValue(objectWithUndefinedBody);
232
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "old", "new", false);
233
- expect(mockRepository.saveObject).not.toHaveBeenCalled();
234
- expect(result.content[0].text).toBe("Error: Object with ID 'T-test-task' has no body content to replace");
235
- });
236
- });
237
- describe("parameter handling", () => {
238
- it("should handle allowMultipleOccurrences default parameter", async () => {
239
- mockRepository.getObjectById.mockResolvedValue(mockTrellisObject);
240
- mockRepository.saveObject.mockResolvedValue();
241
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "old content", "new content");
242
- const expectedUpdatedObject = {
243
- ...mockTrellisObject,
244
- body: "This is the new content that needs to be replaced with new content.",
245
- };
246
- expect(mockRepository.saveObject).toHaveBeenCalledWith(expectedUpdatedObject);
247
- expect(result.content[0].text).toContain("Successfully replaced content");
248
- });
249
- it("should handle special regex characters correctly", async () => {
250
- const objectWithSpecialChars = {
251
- ...mockTrellisObject,
252
- body: "Price: $100.50",
253
- };
254
- mockRepository.getObjectById.mockResolvedValue(objectWithSpecialChars);
255
- mockRepository.saveObject.mockResolvedValue();
256
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "\\$\\d+\\.\\d+", "$200.75", false);
257
- const expectedUpdatedObject = {
258
- ...objectWithSpecialChars,
259
- body: "Price: $200.75",
260
- };
261
- expect(mockRepository.saveObject).toHaveBeenCalledWith(expectedUpdatedObject);
262
- expect(result.content[0].text).toContain("Successfully replaced content");
263
- });
264
- it("should handle large text bodies efficiently", async () => {
265
- const largeBody = "x".repeat(10000) + "target text" + "y".repeat(10000);
266
- const objectWithLargeBody = {
267
- ...mockTrellisObject,
268
- body: largeBody,
269
- };
270
- mockRepository.getObjectById.mockResolvedValue(objectWithLargeBody);
271
- mockRepository.saveObject.mockResolvedValue();
272
- const result = await (0, replaceObjectBodyRegex_1.replaceObjectBodyRegex)(mockRepository, "T-test-task", "target text", "replacement text", false);
273
- const expectedBody = "x".repeat(10000) + "replacement text" + "y".repeat(10000);
274
- const expectedUpdatedObject = {
275
- ...objectWithLargeBody,
276
- body: expectedBody,
277
- };
278
- expect(mockRepository.saveObject).toHaveBeenCalledWith(expectedUpdatedObject);
279
- expect(result.content[0].text).toContain("Successfully replaced content");
280
- });
281
- });
282
- });
283
- //# sourceMappingURL=replaceObjectBodyRegex.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replaceObjectBodyRegex.test.js","sourceRoot":"","sources":["../../../../src/services/local/__tests__/replaceObjectBodyRegex.test.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { Repository } from "../../repositories";
2
- export declare function replaceObjectBodyRegex(repository: Repository, id: string, regex: string, replacement: string, allowMultipleOccurrences?: boolean): Promise<{
3
- content: Array<{
4
- type: string;
5
- text: string;
6
- }>;
7
- }>;
8
- //# sourceMappingURL=replaceObjectBodyRegex.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replaceObjectBodyRegex.d.ts","sourceRoot":"","sources":["../../../src/services/local/replaceObjectBodyRegex.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIhD,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,wBAAwB,GAAE,OAAe,GACxC,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAoF7D"}
@@ -1,85 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.replaceObjectBodyRegex = replaceObjectBodyRegex;
4
- const MultipleMatchesError_1 = require("../../utils/MultipleMatchesError");
5
- const replaceStringWithRegex_1 = require("../../utils/replaceStringWithRegex");
6
- async function replaceObjectBodyRegex(repository, id, regex, replacement, allowMultipleOccurrences = false) {
7
- try {
8
- // Load the existing object
9
- const existingObject = await repository.getObjectById(id);
10
- if (!existingObject) {
11
- return {
12
- content: [
13
- {
14
- type: "text",
15
- text: `Error: Object with ID '${id}' not found`,
16
- },
17
- ],
18
- };
19
- }
20
- // Check if the object has a body to replace
21
- if (!existingObject.body) {
22
- return {
23
- content: [
24
- {
25
- type: "text",
26
- text: `Error: Object with ID '${id}' has no body content to replace`,
27
- },
28
- ],
29
- };
30
- }
31
- // Perform the regex replacement on the body
32
- const updatedBody = (0, replaceStringWithRegex_1.replaceStringWithRegex)(existingObject.body, {
33
- regex,
34
- replacement,
35
- allowMultipleOccurrences,
36
- });
37
- // If the body didn't change, inform the user
38
- if (updatedBody === existingObject.body) {
39
- return {
40
- content: [
41
- {
42
- type: "text",
43
- text: `No matches found for pattern "${regex}" in object body. Body remains unchanged.`,
44
- },
45
- ],
46
- };
47
- }
48
- // Create updated object with the new body
49
- const updatedObject = {
50
- ...existingObject,
51
- body: updatedBody,
52
- };
53
- // Save the updated object
54
- await repository.saveObject(updatedObject);
55
- return {
56
- content: [
57
- {
58
- type: "text",
59
- text: `Successfully replaced content in object body using pattern "${regex}". Object ID: ${id}`,
60
- },
61
- ],
62
- };
63
- }
64
- catch (error) {
65
- if (error instanceof MultipleMatchesError_1.MultipleMatchesError) {
66
- return {
67
- content: [
68
- {
69
- type: "text",
70
- text: `Error: ${error.message}`,
71
- },
72
- ],
73
- };
74
- }
75
- return {
76
- content: [
77
- {
78
- type: "text",
79
- text: `Error replacing object body: ${error instanceof Error ? error.message : String(error)}`,
80
- },
81
- ],
82
- };
83
- }
84
- }
85
- //# sourceMappingURL=replaceObjectBodyRegex.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replaceObjectBodyRegex.js","sourceRoot":"","sources":["../../../src/services/local/replaceObjectBodyRegex.ts"],"names":[],"mappings":";;AAKA,wDA0FC;AA7FD,2EAAwE;AACxE,+EAA4E;AAErE,KAAK,UAAU,sBAAsB,CAC1C,UAAsB,EACtB,EAAU,EACV,KAAa,EACb,WAAmB,EACnB,2BAAoC,KAAK;IAEzC,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,4CAA4C;QAC5C,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0BAA0B,EAAE,kCAAkC;qBACrE;iBACF;aACF,CAAC;QACJ,CAAC;QAED,4CAA4C;QAC5C,MAAM,WAAW,GAAG,IAAA,+CAAsB,EAAC,cAAc,CAAC,IAAI,EAAE;YAC9D,KAAK;YACL,WAAW;YACX,wBAAwB;SACzB,CAAC,CAAC;QAEH,6CAA6C;QAC7C,IAAI,WAAW,KAAK,cAAc,CAAC,IAAI,EAAE,CAAC;YACxC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,iCAAiC,KAAK,2CAA2C;qBACxF;iBACF;aACF,CAAC;QACJ,CAAC;QAED,0CAA0C;QAC1C,MAAM,aAAa,GAAkB;YACnC,GAAG,cAAc;YACjB,IAAI,EAAE,WAAW;SAClB,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,+DAA+D,KAAK,iBAAiB,EAAE,EAAE;iBAChG;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,2CAAoB,EAAE,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,UAAU,KAAK,CAAC,OAAO,EAAE;qBAChC;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBAC/F;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=pruneClosedTool.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pruneClosedTool.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/pruneClosedTool.test.ts"],"names":[],"mappings":""}
@@ -1,112 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const pruneClosedTool_1 = require("../pruneClosedTool");
4
- describe("pruneClosedTool", () => {
5
- let mockService;
6
- let mockRepository;
7
- let pruneClosedSpy;
8
- beforeEach(() => {
9
- pruneClosedSpy = jest.fn();
10
- mockService = {
11
- pruneClosed: pruneClosedSpy,
12
- };
13
- mockRepository = {
14
- getObjectById: jest.fn(),
15
- getObjects: jest.fn(),
16
- saveObject: jest.fn(),
17
- deleteObject: jest.fn(),
18
- };
19
- jest.clearAllMocks();
20
- });
21
- describe("handlePruneClosed", () => {
22
- it("should call service.pruneClosed with correct parameters", async () => {
23
- const mockResult = {
24
- content: [
25
- {
26
- type: "text",
27
- text: "Pruned 2 closed objects older than 60 minutes",
28
- },
29
- ],
30
- };
31
- pruneClosedSpy.mockResolvedValue(mockResult);
32
- const args = {
33
- age: 60,
34
- scope: "F-test-feature",
35
- };
36
- const result = await (0, pruneClosedTool_1.handlePruneClosed)(mockService, mockRepository, args);
37
- expect(pruneClosedSpy).toHaveBeenCalledWith(mockRepository, 60, "F-test-feature");
38
- expect(result).toBe(mockResult);
39
- });
40
- it("should call service.pruneClosed without scope parameter", async () => {
41
- const mockResult = {
42
- content: [
43
- {
44
- type: "text",
45
- text: "Pruned 0 closed objects older than 120 minutes",
46
- },
47
- ],
48
- };
49
- pruneClosedSpy.mockResolvedValue(mockResult);
50
- const args = {
51
- age: 120,
52
- };
53
- const result = await (0, pruneClosedTool_1.handlePruneClosed)(mockService, mockRepository, args);
54
- expect(pruneClosedSpy).toHaveBeenCalledWith(mockRepository, 120, undefined);
55
- expect(result).toBe(mockResult);
56
- });
57
- it("should handle arguments correctly with type coercion", async () => {
58
- const mockResult = {
59
- content: [
60
- {
61
- type: "text",
62
- text: "Pruned 1 closed objects older than 30 minutes",
63
- },
64
- ],
65
- };
66
- pruneClosedSpy.mockResolvedValue(mockResult);
67
- // Test that args are properly typed
68
- const args = {
69
- age: "30", // String that should be coerced to number in real usage
70
- scope: "P-project-1",
71
- };
72
- const result = await (0, pruneClosedTool_1.handlePruneClosed)(mockService, mockRepository, args);
73
- expect(pruneClosedSpy).toHaveBeenCalledWith(mockRepository, "30", // The function passes through the value as-is, service handles conversion
74
- "P-project-1");
75
- expect(result).toBe(mockResult);
76
- });
77
- it("should propagate service results", async () => {
78
- const mockResult = {
79
- content: [
80
- {
81
- type: "text",
82
- text: "Error pruning closed objects: Database connection failed",
83
- },
84
- ],
85
- };
86
- pruneClosedSpy.mockResolvedValue(mockResult);
87
- const args = {
88
- age: 60,
89
- };
90
- const result = await (0, pruneClosedTool_1.handlePruneClosed)(mockService, mockRepository, args);
91
- expect(result).toBe(mockResult);
92
- });
93
- it("should handle zero age parameter", async () => {
94
- const mockResult = {
95
- content: [
96
- {
97
- type: "text",
98
- text: "Pruned 5 closed objects older than 0 minutes",
99
- },
100
- ],
101
- };
102
- pruneClosedSpy.mockResolvedValue(mockResult);
103
- const args = {
104
- age: 0,
105
- };
106
- const result = await (0, pruneClosedTool_1.handlePruneClosed)(mockService, mockRepository, args);
107
- expect(pruneClosedSpy).toHaveBeenCalledWith(mockRepository, 0, undefined);
108
- expect(result).toBe(mockResult);
109
- });
110
- });
111
- });
112
- //# sourceMappingURL=pruneClosedTool.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pruneClosedTool.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/pruneClosedTool.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=replaceObjectBodyRegexTool.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replaceObjectBodyRegexTool.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/replaceObjectBodyRegexTool.test.ts"],"names":[],"mappings":""}
@@ -1,89 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const replaceObjectBodyRegexTool_1 = require("../replaceObjectBodyRegexTool");
4
- describe("replaceObjectBodyRegexTool", () => {
5
- let mockService;
6
- let mockRepository;
7
- beforeEach(() => {
8
- mockService = {
9
- createObject: jest.fn(),
10
- updateObject: jest.fn(),
11
- claimTask: jest.fn(),
12
- completeTask: jest.fn(),
13
- listObjects: jest.fn(),
14
- appendObjectLog: jest.fn(),
15
- pruneClosed: jest.fn(),
16
- replaceObjectBodyRegex: jest.fn(),
17
- appendModifiedFiles: jest.fn(),
18
- };
19
- mockRepository = {
20
- getObjectById: jest.fn(),
21
- getObjects: jest.fn(),
22
- saveObject: jest.fn(),
23
- deleteObject: jest.fn(),
24
- };
25
- jest.clearAllMocks();
26
- });
27
- describe("handleReplaceObjectBodyRegex", () => {
28
- it("should call service.replaceObjectBodyRegex with correct parameters", async () => {
29
- const expectedResult = {
30
- content: [
31
- {
32
- type: "text",
33
- text: 'Successfully replaced content in object body using pattern "test". Object ID: T-test-task',
34
- },
35
- ],
36
- };
37
- mockService.replaceObjectBodyRegex.mockResolvedValue(expectedResult);
38
- const result = await (0, replaceObjectBodyRegexTool_1.handleReplaceObjectBodyRegex)(mockService, mockRepository, {
39
- id: "T-test-task",
40
- regex: "test",
41
- replacement: "new text",
42
- allowMultipleOccurrences: true,
43
- });
44
- expect(mockService.replaceObjectBodyRegex).toHaveBeenCalledWith(mockRepository, "T-test-task", "test", "new text", true);
45
- expect(result).toEqual(expectedResult);
46
- });
47
- it("should use default value for allowMultipleOccurrences when not provided", async () => {
48
- const expectedResult = {
49
- content: [{ type: "text", text: "Success" }],
50
- };
51
- mockService.replaceObjectBodyRegex.mockResolvedValue(expectedResult);
52
- await (0, replaceObjectBodyRegexTool_1.handleReplaceObjectBodyRegex)(mockService, mockRepository, {
53
- id: "T-test-task",
54
- regex: "pattern",
55
- replacement: "replacement",
56
- });
57
- expect(mockService.replaceObjectBodyRegex).toHaveBeenCalledWith(mockRepository, "T-test-task", "pattern", "replacement", false);
58
- });
59
- it("should pass through service result directly", async () => {
60
- const serviceResult = {
61
- content: [
62
- {
63
- type: "text",
64
- text: "Error: Object with ID 'T-nonexistent' not found",
65
- },
66
- ],
67
- };
68
- mockService.replaceObjectBodyRegex.mockResolvedValue(serviceResult);
69
- const result = await (0, replaceObjectBodyRegexTool_1.handleReplaceObjectBodyRegex)(mockService, mockRepository, {
70
- id: "T-nonexistent",
71
- regex: "test",
72
- replacement: "new",
73
- });
74
- expect(result).toEqual(serviceResult);
75
- });
76
- it("should handle different parameter combinations", async () => {
77
- const serviceResult = { content: [{ type: "text", text: "Success" }] };
78
- mockService.replaceObjectBodyRegex.mockResolvedValue(serviceResult);
79
- await (0, replaceObjectBodyRegexTool_1.handleReplaceObjectBodyRegex)(mockService, mockRepository, {
80
- id: "T-another-task",
81
- regex: "complex (\\w+) pattern",
82
- replacement: "simple $1 replacement",
83
- allowMultipleOccurrences: false,
84
- });
85
- expect(mockService.replaceObjectBodyRegex).toHaveBeenCalledWith(mockRepository, "T-another-task", "complex (\\w+) pattern", "simple $1 replacement", false);
86
- });
87
- });
88
- });
89
- //# sourceMappingURL=replaceObjectBodyRegexTool.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replaceObjectBodyRegexTool.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/replaceObjectBodyRegexTool.test.ts"],"names":[],"mappings":"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"}