vikunja-mcp-ng 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (582) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +123 -0
  3. package/dist/auth/AuthManager.d.ts +63 -0
  4. package/dist/auth/AuthManager.d.ts.map +1 -0
  5. package/dist/auth/AuthManager.js +137 -0
  6. package/dist/auth/AuthManager.js.map +1 -0
  7. package/dist/auth/index.d.ts +7 -0
  8. package/dist/auth/index.d.ts.map +1 -0
  9. package/dist/auth/index.js +14 -0
  10. package/dist/auth/index.js.map +1 -0
  11. package/dist/auth/permissions.d.ts +60 -0
  12. package/dist/auth/permissions.d.ts.map +1 -0
  13. package/dist/auth/permissions.js +173 -0
  14. package/dist/auth/permissions.js.map +1 -0
  15. package/dist/client/VikunjaClientFactory.d.ts +41 -0
  16. package/dist/client/VikunjaClientFactory.d.ts.map +1 -0
  17. package/dist/client/VikunjaClientFactory.js +58 -0
  18. package/dist/client/VikunjaClientFactory.js.map +1 -0
  19. package/dist/client.d.ts +70 -0
  20. package/dist/client.d.ts.map +1 -0
  21. package/dist/client.js +136 -0
  22. package/dist/client.js.map +1 -0
  23. package/dist/config/ConfigurationManager.d.ts +106 -0
  24. package/dist/config/ConfigurationManager.d.ts.map +1 -0
  25. package/dist/config/ConfigurationManager.js +509 -0
  26. package/dist/config/ConfigurationManager.js.map +1 -0
  27. package/dist/config/index.d.ts +9 -0
  28. package/dist/config/index.d.ts.map +1 -0
  29. package/dist/config/index.js +36 -0
  30. package/dist/config/index.js.map +1 -0
  31. package/dist/config/secrets.d.ts +33 -0
  32. package/dist/config/secrets.d.ts.map +1 -0
  33. package/dist/config/secrets.js +90 -0
  34. package/dist/config/secrets.js.map +1 -0
  35. package/dist/config/types.d.ts +1113 -0
  36. package/dist/config/types.d.ts.map +1 -0
  37. package/dist/config/types.js +189 -0
  38. package/dist/config/types.js.map +1 -0
  39. package/dist/formatters/BatchImportResponseFormatter.d.ts +89 -0
  40. package/dist/formatters/BatchImportResponseFormatter.d.ts.map +1 -0
  41. package/dist/formatters/BatchImportResponseFormatter.js +125 -0
  42. package/dist/formatters/BatchImportResponseFormatter.js.map +1 -0
  43. package/dist/index.d.ts +20 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +130 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/middleware/direct-middleware.d.ts +9 -0
  48. package/dist/middleware/direct-middleware.d.ts.map +1 -0
  49. package/dist/middleware/direct-middleware.js +49 -0
  50. package/dist/middleware/direct-middleware.js.map +1 -0
  51. package/dist/middleware/index.d.ts +8 -0
  52. package/dist/middleware/index.d.ts.map +1 -0
  53. package/dist/middleware/index.js +21 -0
  54. package/dist/middleware/index.js.map +1 -0
  55. package/dist/middleware/simplified-rate-limit.d.ts +147 -0
  56. package/dist/middleware/simplified-rate-limit.d.ts.map +1 -0
  57. package/dist/middleware/simplified-rate-limit.js +533 -0
  58. package/dist/middleware/simplified-rate-limit.js.map +1 -0
  59. package/dist/parsers/CSVParser.d.ts +36 -0
  60. package/dist/parsers/CSVParser.d.ts.map +1 -0
  61. package/dist/parsers/CSVParser.js +69 -0
  62. package/dist/parsers/CSVParser.js.map +1 -0
  63. package/dist/parsers/InputParserFactory.d.ts +17 -0
  64. package/dist/parsers/InputParserFactory.d.ts.map +1 -0
  65. package/dist/parsers/InputParserFactory.js +137 -0
  66. package/dist/parsers/InputParserFactory.js.map +1 -0
  67. package/dist/parsers/JSONParser.d.ts +74 -0
  68. package/dist/parsers/JSONParser.d.ts.map +1 -0
  69. package/dist/parsers/JSONParser.js +69 -0
  70. package/dist/parsers/JSONParser.js.map +1 -0
  71. package/dist/services/EntityResolver.d.ts +92 -0
  72. package/dist/services/EntityResolver.d.ts.map +1 -0
  73. package/dist/services/EntityResolver.js +201 -0
  74. package/dist/services/EntityResolver.js.map +1 -0
  75. package/dist/services/TaskCreationService.d.ts +99 -0
  76. package/dist/services/TaskCreationService.d.ts.map +1 -0
  77. package/dist/services/TaskCreationService.js +392 -0
  78. package/dist/services/TaskCreationService.js.map +1 -0
  79. package/dist/storage/SimpleFilterStorage.d.ts +103 -0
  80. package/dist/storage/SimpleFilterStorage.d.ts.map +1 -0
  81. package/dist/storage/SimpleFilterStorage.js +350 -0
  82. package/dist/storage/SimpleFilterStorage.js.map +1 -0
  83. package/dist/storage/filtering/FilterSerializer.d.ts +45 -0
  84. package/dist/storage/filtering/FilterSerializer.d.ts.map +1 -0
  85. package/dist/storage/filtering/FilterSerializer.js +171 -0
  86. package/dist/storage/filtering/FilterSerializer.js.map +1 -0
  87. package/dist/storage/filtering/FilterValidator.d.ts +59 -0
  88. package/dist/storage/filtering/FilterValidator.d.ts.map +1 -0
  89. package/dist/storage/filtering/FilterValidator.js +183 -0
  90. package/dist/storage/filtering/FilterValidator.js.map +1 -0
  91. package/dist/storage/index.d.ts +61 -0
  92. package/dist/storage/index.d.ts.map +1 -0
  93. package/dist/storage/index.js +125 -0
  94. package/dist/storage/index.js.map +1 -0
  95. package/dist/storage/templateFileStore.d.ts +62 -0
  96. package/dist/storage/templateFileStore.d.ts.map +1 -0
  97. package/dist/storage/templateFileStore.js +151 -0
  98. package/dist/storage/templateFileStore.js.map +1 -0
  99. package/dist/tools/admin.d.ts +51 -0
  100. package/dist/tools/admin.d.ts.map +1 -0
  101. package/dist/tools/admin.js +207 -0
  102. package/dist/tools/admin.js.map +1 -0
  103. package/dist/tools/auth.d.ts +9 -0
  104. package/dist/tools/auth.d.ts.map +1 -0
  105. package/dist/tools/auth.js +175 -0
  106. package/dist/tools/auth.js.map +1 -0
  107. package/dist/tools/batch-import.d.ts +5 -0
  108. package/dist/tools/batch-import.d.ts.map +1 -0
  109. package/dist/tools/batch-import.js +153 -0
  110. package/dist/tools/batch-import.js.map +1 -0
  111. package/dist/tools/caldav-tokens.d.ts +45 -0
  112. package/dist/tools/caldav-tokens.d.ts.map +1 -0
  113. package/dist/tools/caldav-tokens.js +93 -0
  114. package/dist/tools/caldav-tokens.js.map +1 -0
  115. package/dist/tools/export.d.ts +14 -0
  116. package/dist/tools/export.d.ts.map +1 -0
  117. package/dist/tools/export.js +252 -0
  118. package/dist/tools/export.js.map +1 -0
  119. package/dist/tools/filters.d.ts +50 -0
  120. package/dist/tools/filters.d.ts.map +1 -0
  121. package/dist/tools/filters.js +512 -0
  122. package/dist/tools/filters.js.map +1 -0
  123. package/dist/tools/index.d.ts +53 -0
  124. package/dist/tools/index.d.ts.map +1 -0
  125. package/dist/tools/index.js +217 -0
  126. package/dist/tools/index.js.map +1 -0
  127. package/dist/tools/labels.d.ts +22 -0
  128. package/dist/tools/labels.d.ts.map +1 -0
  129. package/dist/tools/labels.js +206 -0
  130. package/dist/tools/labels.js.map +1 -0
  131. package/dist/tools/notifications.d.ts +17 -0
  132. package/dist/tools/notifications.d.ts.map +1 -0
  133. package/dist/tools/notifications.js +171 -0
  134. package/dist/tools/notifications.js.map +1 -0
  135. package/dist/tools/projects/backgrounds.d.ts +80 -0
  136. package/dist/tools/projects/backgrounds.d.ts.map +1 -0
  137. package/dist/tools/projects/backgrounds.js +154 -0
  138. package/dist/tools/projects/backgrounds.js.map +1 -0
  139. package/dist/tools/projects/buckets.d.ts +147 -0
  140. package/dist/tools/projects/buckets.d.ts.map +1 -0
  141. package/dist/tools/projects/buckets.js +291 -0
  142. package/dist/tools/projects/buckets.js.map +1 -0
  143. package/dist/tools/projects/crud.d.ts +145 -0
  144. package/dist/tools/projects/crud.d.ts.map +1 -0
  145. package/dist/tools/projects/crud.js +425 -0
  146. package/dist/tools/projects/crud.js.map +1 -0
  147. package/dist/tools/projects/duplicate.d.ts +41 -0
  148. package/dist/tools/projects/duplicate.d.ts.map +1 -0
  149. package/dist/tools/projects/duplicate.js +49 -0
  150. package/dist/tools/projects/duplicate.js.map +1 -0
  151. package/dist/tools/projects/hierarchy.d.ts +77 -0
  152. package/dist/tools/projects/hierarchy.d.ts.map +1 -0
  153. package/dist/tools/projects/hierarchy.js +300 -0
  154. package/dist/tools/projects/hierarchy.js.map +1 -0
  155. package/dist/tools/projects/index.d.ts +34 -0
  156. package/dist/tools/projects/index.d.ts.map +1 -0
  157. package/dist/tools/projects/index.js +522 -0
  158. package/dist/tools/projects/index.js.map +1 -0
  159. package/dist/tools/projects/permission.d.ts +26 -0
  160. package/dist/tools/projects/permission.d.ts.map +1 -0
  161. package/dist/tools/projects/permission.js +53 -0
  162. package/dist/tools/projects/permission.js.map +1 -0
  163. package/dist/tools/projects/response-formatter.d.ts +54 -0
  164. package/dist/tools/projects/response-formatter.d.ts.map +1 -0
  165. package/dist/tools/projects/response-formatter.js +139 -0
  166. package/dist/tools/projects/response-formatter.js.map +1 -0
  167. package/dist/tools/projects/sharing-access.d.ts +165 -0
  168. package/dist/tools/projects/sharing-access.d.ts.map +1 -0
  169. package/dist/tools/projects/sharing-access.js +450 -0
  170. package/dist/tools/projects/sharing-access.js.map +1 -0
  171. package/dist/tools/projects/sharing.d.ts +105 -0
  172. package/dist/tools/projects/sharing.d.ts.map +1 -0
  173. package/dist/tools/projects/sharing.js +258 -0
  174. package/dist/tools/projects/sharing.js.map +1 -0
  175. package/dist/tools/projects/validation.d.ts +51 -0
  176. package/dist/tools/projects/validation.d.ts.map +1 -0
  177. package/dist/tools/projects/validation.js +160 -0
  178. package/dist/tools/projects/validation.js.map +1 -0
  179. package/dist/tools/projects/views.d.ts +161 -0
  180. package/dist/tools/projects/views.d.ts.map +1 -0
  181. package/dist/tools/projects/views.js +234 -0
  182. package/dist/tools/projects/views.js.map +1 -0
  183. package/dist/tools/projects.d.ts +20 -0
  184. package/dist/tools/projects.d.ts.map +1 -0
  185. package/dist/tools/projects.js +66 -0
  186. package/dist/tools/projects.js.map +1 -0
  187. package/dist/tools/reactions.d.ts +25 -0
  188. package/dist/tools/reactions.d.ts.map +1 -0
  189. package/dist/tools/reactions.js +108 -0
  190. package/dist/tools/reactions.js.map +1 -0
  191. package/dist/tools/subscriptions.d.ts +23 -0
  192. package/dist/tools/subscriptions.d.ts.map +1 -0
  193. package/dist/tools/subscriptions.js +111 -0
  194. package/dist/tools/subscriptions.js.map +1 -0
  195. package/dist/tools/task-assignees.d.ts +13 -0
  196. package/dist/tools/task-assignees.d.ts.map +1 -0
  197. package/dist/tools/task-assignees.js +74 -0
  198. package/dist/tools/task-assignees.js.map +1 -0
  199. package/dist/tools/task-bulk.d.ts +13 -0
  200. package/dist/tools/task-bulk.d.ts.map +1 -0
  201. package/dist/tools/task-bulk.js +117 -0
  202. package/dist/tools/task-bulk.js.map +1 -0
  203. package/dist/tools/task-comments.d.ts +12 -0
  204. package/dist/tools/task-comments.d.ts.map +1 -0
  205. package/dist/tools/task-comments.js +65 -0
  206. package/dist/tools/task-comments.js.map +1 -0
  207. package/dist/tools/task-crud.d.ts +13 -0
  208. package/dist/tools/task-crud.d.ts.map +1 -0
  209. package/dist/tools/task-crud.js +168 -0
  210. package/dist/tools/task-crud.js.map +1 -0
  211. package/dist/tools/task-labels.d.ts +13 -0
  212. package/dist/tools/task-labels.d.ts.map +1 -0
  213. package/dist/tools/task-labels.js +64 -0
  214. package/dist/tools/task-labels.js.map +1 -0
  215. package/dist/tools/task-relations.d.ts +13 -0
  216. package/dist/tools/task-relations.d.ts.map +1 -0
  217. package/dist/tools/task-relations.js +74 -0
  218. package/dist/tools/task-relations.js.map +1 -0
  219. package/dist/tools/task-reminders.d.ts +13 -0
  220. package/dist/tools/task-reminders.d.ts.map +1 -0
  221. package/dist/tools/task-reminders.js +69 -0
  222. package/dist/tools/task-reminders.js.map +1 -0
  223. package/dist/tools/tasks/assignees/AssigneeOperationsService.d.ts +63 -0
  224. package/dist/tools/tasks/assignees/AssigneeOperationsService.d.ts.map +1 -0
  225. package/dist/tools/tasks/assignees/AssigneeOperationsService.js +152 -0
  226. package/dist/tools/tasks/assignees/AssigneeOperationsService.js.map +1 -0
  227. package/dist/tools/tasks/assignees/AssigneeResponseFormatter.d.ts +28 -0
  228. package/dist/tools/tasks/assignees/AssigneeResponseFormatter.d.ts.map +1 -0
  229. package/dist/tools/tasks/assignees/AssigneeResponseFormatter.js +73 -0
  230. package/dist/tools/tasks/assignees/AssigneeResponseFormatter.js.map +1 -0
  231. package/dist/tools/tasks/assignees/AssigneeValidationService.d.ts +46 -0
  232. package/dist/tools/tasks/assignees/AssigneeValidationService.d.ts.map +1 -0
  233. package/dist/tools/tasks/assignees/AssigneeValidationService.js +70 -0
  234. package/dist/tools/tasks/assignees/AssigneeValidationService.js.map +1 -0
  235. package/dist/tools/tasks/assignees/index.d.ts +52 -0
  236. package/dist/tools/tasks/assignees/index.d.ts.map +1 -0
  237. package/dist/tools/tasks/assignees/index.js +103 -0
  238. package/dist/tools/tasks/assignees/index.js.map +1 -0
  239. package/dist/tools/tasks/attach.d.ts +39 -0
  240. package/dist/tools/tasks/attach.d.ts.map +1 -0
  241. package/dist/tools/tasks/attach.js +90 -0
  242. package/dist/tools/tasks/attach.js.map +1 -0
  243. package/dist/tools/tasks/attachments.d.ts +67 -0
  244. package/dist/tools/tasks/attachments.d.ts.map +1 -0
  245. package/dist/tools/tasks/attachments.js +153 -0
  246. package/dist/tools/tasks/attachments.js.map +1 -0
  247. package/dist/tools/tasks/buckets.d.ts +41 -0
  248. package/dist/tools/tasks/buckets.d.ts.map +1 -0
  249. package/dist/tools/tasks/buckets.js +75 -0
  250. package/dist/tools/tasks/buckets.js.map +1 -0
  251. package/dist/tools/tasks/bulk/BatchProcessorFactory.d.ts +30 -0
  252. package/dist/tools/tasks/bulk/BatchProcessorFactory.d.ts.map +1 -0
  253. package/dist/tools/tasks/bulk/BatchProcessorFactory.js +69 -0
  254. package/dist/tools/tasks/bulk/BatchProcessorFactory.js.map +1 -0
  255. package/dist/tools/tasks/bulk/BulkOperationErrorHandler.d.ts +50 -0
  256. package/dist/tools/tasks/bulk/BulkOperationErrorHandler.d.ts.map +1 -0
  257. package/dist/tools/tasks/bulk/BulkOperationErrorHandler.js +183 -0
  258. package/dist/tools/tasks/bulk/BulkOperationErrorHandler.js.map +1 -0
  259. package/dist/tools/tasks/bulk/BulkOperationProcessor.d.ts +101 -0
  260. package/dist/tools/tasks/bulk/BulkOperationProcessor.d.ts.map +1 -0
  261. package/dist/tools/tasks/bulk/BulkOperationProcessor.js +416 -0
  262. package/dist/tools/tasks/bulk/BulkOperationProcessor.js.map +1 -0
  263. package/dist/tools/tasks/bulk/BulkOperationTypes.d.ts +50 -0
  264. package/dist/tools/tasks/bulk/BulkOperationTypes.d.ts.map +1 -0
  265. package/dist/tools/tasks/bulk/BulkOperationTypes.js +6 -0
  266. package/dist/tools/tasks/bulk/BulkOperationTypes.js.map +1 -0
  267. package/dist/tools/tasks/bulk/BulkOperationValidator.d.ts +53 -0
  268. package/dist/tools/tasks/bulk/BulkOperationValidator.d.ts.map +1 -0
  269. package/dist/tools/tasks/bulk/BulkOperationValidator.js +216 -0
  270. package/dist/tools/tasks/bulk/BulkOperationValidator.js.map +1 -0
  271. package/dist/tools/tasks/bulk/index.d.ts +9 -0
  272. package/dist/tools/tasks/bulk/index.d.ts.map +1 -0
  273. package/dist/tools/tasks/bulk/index.js +15 -0
  274. package/dist/tools/tasks/bulk/index.js.map +1 -0
  275. package/dist/tools/tasks/bulk-operations-simplified.d.ts +62 -0
  276. package/dist/tools/tasks/bulk-operations-simplified.d.ts.map +1 -0
  277. package/dist/tools/tasks/bulk-operations-simplified.js +416 -0
  278. package/dist/tools/tasks/bulk-operations-simplified.js.map +1 -0
  279. package/dist/tools/tasks/bulk-operations.d.ts +8 -0
  280. package/dist/tools/tasks/bulk-operations.d.ts.map +1 -0
  281. package/dist/tools/tasks/bulk-operations.js +13 -0
  282. package/dist/tools/tasks/bulk-operations.js.map +1 -0
  283. package/dist/tools/tasks/by-index.d.ts +36 -0
  284. package/dist/tools/tasks/by-index.d.ts.map +1 -0
  285. package/dist/tools/tasks/by-index.js +52 -0
  286. package/dist/tools/tasks/by-index.js.map +1 -0
  287. package/dist/tools/tasks/comments/CommentOperationsService.d.ts +44 -0
  288. package/dist/tools/tasks/comments/CommentOperationsService.d.ts.map +1 -0
  289. package/dist/tools/tasks/comments/CommentOperationsService.js +86 -0
  290. package/dist/tools/tasks/comments/CommentOperationsService.js.map +1 -0
  291. package/dist/tools/tasks/comments/CommentResponseFormatter.d.ts +41 -0
  292. package/dist/tools/tasks/comments/CommentResponseFormatter.d.ts.map +1 -0
  293. package/dist/tools/tasks/comments/CommentResponseFormatter.js +114 -0
  294. package/dist/tools/tasks/comments/CommentResponseFormatter.js.map +1 -0
  295. package/dist/tools/tasks/comments/CommentValidationService.d.ts +62 -0
  296. package/dist/tools/tasks/comments/CommentValidationService.d.ts.map +1 -0
  297. package/dist/tools/tasks/comments/CommentValidationService.js +105 -0
  298. package/dist/tools/tasks/comments/CommentValidationService.js.map +1 -0
  299. package/dist/tools/tasks/comments/index.d.ts +66 -0
  300. package/dist/tools/tasks/comments/index.d.ts.map +1 -0
  301. package/dist/tools/tasks/comments/index.js +99 -0
  302. package/dist/tools/tasks/comments/index.js.map +1 -0
  303. package/dist/tools/tasks/constants.d.ts +19 -0
  304. package/dist/tools/tasks/constants.d.ts.map +1 -0
  305. package/dist/tools/tasks/constants.js +82 -0
  306. package/dist/tools/tasks/constants.js.map +1 -0
  307. package/dist/tools/tasks/crud/TaskCreationService.d.ts +29 -0
  308. package/dist/tools/tasks/crud/TaskCreationService.d.ts.map +1 -0
  309. package/dist/tools/tasks/crud/TaskCreationService.js +274 -0
  310. package/dist/tools/tasks/crud/TaskCreationService.js.map +1 -0
  311. package/dist/tools/tasks/crud/TaskDeletionService.d.ts +19 -0
  312. package/dist/tools/tasks/crud/TaskDeletionService.d.ts.map +1 -0
  313. package/dist/tools/tasks/crud/TaskDeletionService.js +96 -0
  314. package/dist/tools/tasks/crud/TaskDeletionService.js.map +1 -0
  315. package/dist/tools/tasks/crud/TaskReadService.d.ts +19 -0
  316. package/dist/tools/tasks/crud/TaskReadService.d.ts.map +1 -0
  317. package/dist/tools/tasks/crud/TaskReadService.js +66 -0
  318. package/dist/tools/tasks/crud/TaskReadService.js.map +1 -0
  319. package/dist/tools/tasks/crud/TaskResponseFormatter.d.ts +18 -0
  320. package/dist/tools/tasks/crud/TaskResponseFormatter.d.ts.map +1 -0
  321. package/dist/tools/tasks/crud/TaskResponseFormatter.js +248 -0
  322. package/dist/tools/tasks/crud/TaskResponseFormatter.js.map +1 -0
  323. package/dist/tools/tasks/crud/TaskUpdateService.d.ts +33 -0
  324. package/dist/tools/tasks/crud/TaskUpdateService.d.ts.map +1 -0
  325. package/dist/tools/tasks/crud/TaskUpdateService.js +294 -0
  326. package/dist/tools/tasks/crud/TaskUpdateService.js.map +1 -0
  327. package/dist/tools/tasks/crud/index.d.ts +17 -0
  328. package/dist/tools/tasks/crud/index.d.ts.map +1 -0
  329. package/dist/tools/tasks/crud/index.js +20 -0
  330. package/dist/tools/tasks/crud/index.js.map +1 -0
  331. package/dist/tools/tasks/duplicate.d.ts +28 -0
  332. package/dist/tools/tasks/duplicate.d.ts.map +1 -0
  333. package/dist/tools/tasks/duplicate.js +41 -0
  334. package/dist/tools/tasks/duplicate.js.map +1 -0
  335. package/dist/tools/tasks/filtering/FilterExecutor.d.ts +39 -0
  336. package/dist/tools/tasks/filtering/FilterExecutor.d.ts.map +1 -0
  337. package/dist/tools/tasks/filtering/FilterExecutor.js +214 -0
  338. package/dist/tools/tasks/filtering/FilterExecutor.js.map +1 -0
  339. package/dist/tools/tasks/filtering/FilterValidator.d.ts +59 -0
  340. package/dist/tools/tasks/filtering/FilterValidator.d.ts.map +1 -0
  341. package/dist/tools/tasks/filtering/FilterValidator.js +257 -0
  342. package/dist/tools/tasks/filtering/FilterValidator.js.map +1 -0
  343. package/dist/tools/tasks/filtering/TaskFilteringOrchestrator.d.ts +78 -0
  344. package/dist/tools/tasks/filtering/TaskFilteringOrchestrator.d.ts.map +1 -0
  345. package/dist/tools/tasks/filtering/TaskFilteringOrchestrator.js +195 -0
  346. package/dist/tools/tasks/filtering/TaskFilteringOrchestrator.js.map +1 -0
  347. package/dist/tools/tasks/filtering/evaluators.d.ts +41 -0
  348. package/dist/tools/tasks/filtering/evaluators.d.ts.map +1 -0
  349. package/dist/tools/tasks/filtering/evaluators.js +224 -0
  350. package/dist/tools/tasks/filtering/evaluators.js.map +1 -0
  351. package/dist/tools/tasks/filtering/index.d.ts +11 -0
  352. package/dist/tools/tasks/filtering/index.d.ts.map +1 -0
  353. package/dist/tools/tasks/filtering/index.js +26 -0
  354. package/dist/tools/tasks/filtering/index.js.map +1 -0
  355. package/dist/tools/tasks/index.d.ts +9 -0
  356. package/dist/tools/tasks/index.d.ts.map +1 -0
  357. package/dist/tools/tasks/index.js +337 -0
  358. package/dist/tools/tasks/index.js.map +1 -0
  359. package/dist/tools/tasks/labels.d.ts +49 -0
  360. package/dist/tools/tasks/labels.d.ts.map +1 -0
  361. package/dist/tools/tasks/labels.js +223 -0
  362. package/dist/tools/tasks/labels.js.map +1 -0
  363. package/dist/tools/tasks/mark-read.d.ts +27 -0
  364. package/dist/tools/tasks/mark-read.d.ts.map +1 -0
  365. package/dist/tools/tasks/mark-read.js +38 -0
  366. package/dist/tools/tasks/mark-read.js.map +1 -0
  367. package/dist/tools/tasks/position.d.ts +53 -0
  368. package/dist/tools/tasks/position.d.ts.map +1 -0
  369. package/dist/tools/tasks/position.js +83 -0
  370. package/dist/tools/tasks/position.js.map +1 -0
  371. package/dist/tools/tasks/reminders.d.ts +56 -0
  372. package/dist/tools/tasks/reminders.d.ts.map +1 -0
  373. package/dist/tools/tasks/reminders.js +213 -0
  374. package/dist/tools/tasks/reminders.js.map +1 -0
  375. package/dist/tools/tasks/subtasks.d.ts +85 -0
  376. package/dist/tools/tasks/subtasks.d.ts.map +1 -0
  377. package/dist/tools/tasks/subtasks.js +286 -0
  378. package/dist/tools/tasks/subtasks.js.map +1 -0
  379. package/dist/tools/tasks/types/filters.d.ts +136 -0
  380. package/dist/tools/tasks/types/filters.d.ts.map +1 -0
  381. package/dist/tools/tasks/types/filters.js +7 -0
  382. package/dist/tools/tasks/types/filters.js.map +1 -0
  383. package/dist/tools/tasks/validation.d.ts +47 -0
  384. package/dist/tools/tasks/validation.d.ts.map +1 -0
  385. package/dist/tools/tasks/validation.js +131 -0
  386. package/dist/tools/tasks/validation.js.map +1 -0
  387. package/dist/tools/tasks-relations.d.ts +25 -0
  388. package/dist/tools/tasks-relations.d.ts.map +1 -0
  389. package/dist/tools/tasks-relations.js +271 -0
  390. package/dist/tools/tasks-relations.js.map +1 -0
  391. package/dist/tools/tasks.d.ts +6 -0
  392. package/dist/tools/tasks.d.ts.map +1 -0
  393. package/dist/tools/tasks.js +10 -0
  394. package/dist/tools/tasks.js.map +1 -0
  395. package/dist/tools/teams.d.ts +9 -0
  396. package/dist/tools/teams.d.ts.map +1 -0
  397. package/dist/tools/teams.js +255 -0
  398. package/dist/tools/teams.js.map +1 -0
  399. package/dist/tools/templates.d.ts +9 -0
  400. package/dist/tools/templates.d.ts.map +1 -0
  401. package/dist/tools/templates.js +450 -0
  402. package/dist/tools/templates.js.map +1 -0
  403. package/dist/tools/tokens.d.ts +37 -0
  404. package/dist/tools/tokens.d.ts.map +1 -0
  405. package/dist/tools/tokens.js +122 -0
  406. package/dist/tools/tokens.js.map +1 -0
  407. package/dist/tools/user-deletion.d.ts +41 -0
  408. package/dist/tools/user-deletion.d.ts.map +1 -0
  409. package/dist/tools/user-deletion.js +126 -0
  410. package/dist/tools/user-deletion.js.map +1 -0
  411. package/dist/tools/users.d.ts +9 -0
  412. package/dist/tools/users.d.ts.map +1 -0
  413. package/dist/tools/users.js +418 -0
  414. package/dist/tools/users.js.map +1 -0
  415. package/dist/tools/webhooks.d.ts +31 -0
  416. package/dist/tools/webhooks.d.ts.map +1 -0
  417. package/dist/tools/webhooks.js +414 -0
  418. package/dist/tools/webhooks.js.map +1 -0
  419. package/dist/transforms/base.d.ts +204 -0
  420. package/dist/transforms/base.d.ts.map +1 -0
  421. package/dist/transforms/base.js +175 -0
  422. package/dist/transforms/base.js.map +1 -0
  423. package/dist/transforms/field-selector.d.ts +27 -0
  424. package/dist/transforms/field-selector.d.ts.map +1 -0
  425. package/dist/transforms/field-selector.js +91 -0
  426. package/dist/transforms/field-selector.js.map +1 -0
  427. package/dist/transforms/index.d.ts +15 -0
  428. package/dist/transforms/index.d.ts.map +1 -0
  429. package/dist/transforms/index.js +50 -0
  430. package/dist/transforms/index.js.map +1 -0
  431. package/dist/transforms/size-calculator.d.ts +131 -0
  432. package/dist/transforms/size-calculator.d.ts.map +1 -0
  433. package/dist/transforms/size-calculator.js +284 -0
  434. package/dist/transforms/size-calculator.js.map +1 -0
  435. package/dist/transforms/task.d.ts +207 -0
  436. package/dist/transforms/task.d.ts.map +1 -0
  437. package/dist/transforms/task.js +259 -0
  438. package/dist/transforms/task.js.map +1 -0
  439. package/dist/types/errors.d.ts +65 -0
  440. package/dist/types/errors.d.ts.map +1 -0
  441. package/dist/types/errors.js +44 -0
  442. package/dist/types/errors.js.map +1 -0
  443. package/dist/types/filters.d.ts +149 -0
  444. package/dist/types/filters.d.ts.map +1 -0
  445. package/dist/types/filters.js +26 -0
  446. package/dist/types/filters.js.map +1 -0
  447. package/dist/types/index.d.ts +147 -0
  448. package/dist/types/index.d.ts.map +1 -0
  449. package/dist/types/index.js +24 -0
  450. package/dist/types/index.js.map +1 -0
  451. package/dist/types/node-vikunja-extended.d.ts +36 -0
  452. package/dist/types/node-vikunja-extended.d.ts.map +1 -0
  453. package/dist/types/node-vikunja-extended.js +25 -0
  454. package/dist/types/node-vikunja-extended.js.map +1 -0
  455. package/dist/types/responses.d.ts +121 -0
  456. package/dist/types/responses.d.ts.map +1 -0
  457. package/dist/types/responses.js +26 -0
  458. package/dist/types/responses.js.map +1 -0
  459. package/dist/types/vikunja.d.ts +319 -0
  460. package/dist/types/vikunja.d.ts.map +1 -0
  461. package/dist/types/vikunja.js +7 -0
  462. package/dist/types/vikunja.js.map +1 -0
  463. package/dist/utils/auth-error-handler.d.ts +23 -0
  464. package/dist/utils/auth-error-handler.d.ts.map +1 -0
  465. package/dist/utils/auth-error-handler.js +162 -0
  466. package/dist/utils/auth-error-handler.js.map +1 -0
  467. package/dist/utils/composite-operation.d.ts +184 -0
  468. package/dist/utils/composite-operation.d.ts.map +1 -0
  469. package/dist/utils/composite-operation.js +293 -0
  470. package/dist/utils/composite-operation.js.map +1 -0
  471. package/dist/utils/error-handler.d.ts +39 -0
  472. package/dist/utils/error-handler.d.ts.map +1 -0
  473. package/dist/utils/error-handler.js +336 -0
  474. package/dist/utils/error-handler.js.map +1 -0
  475. package/dist/utils/filtering/ClientSideFilteringStrategy.d.ts +13 -0
  476. package/dist/utils/filtering/ClientSideFilteringStrategy.d.ts.map +1 -0
  477. package/dist/utils/filtering/ClientSideFilteringStrategy.js +129 -0
  478. package/dist/utils/filtering/ClientSideFilteringStrategy.js.map +1 -0
  479. package/dist/utils/filtering/FilteringContext.d.ts +40 -0
  480. package/dist/utils/filtering/FilteringContext.d.ts.map +1 -0
  481. package/dist/utils/filtering/FilteringContext.js +58 -0
  482. package/dist/utils/filtering/FilteringContext.js.map +1 -0
  483. package/dist/utils/filtering/HybridFilteringStrategy.d.ts +15 -0
  484. package/dist/utils/filtering/HybridFilteringStrategy.d.ts.map +1 -0
  485. package/dist/utils/filtering/HybridFilteringStrategy.js +55 -0
  486. package/dist/utils/filtering/HybridFilteringStrategy.js.map +1 -0
  487. package/dist/utils/filtering/RestCrossProjectFilteringStrategy.d.ts +42 -0
  488. package/dist/utils/filtering/RestCrossProjectFilteringStrategy.d.ts.map +1 -0
  489. package/dist/utils/filtering/RestCrossProjectFilteringStrategy.js +120 -0
  490. package/dist/utils/filtering/RestCrossProjectFilteringStrategy.js.map +1 -0
  491. package/dist/utils/filtering/ServerSideFilteringStrategy.d.ts +13 -0
  492. package/dist/utils/filtering/ServerSideFilteringStrategy.d.ts.map +1 -0
  493. package/dist/utils/filtering/ServerSideFilteringStrategy.js +88 -0
  494. package/dist/utils/filtering/ServerSideFilteringStrategy.js.map +1 -0
  495. package/dist/utils/filtering/TaskFilteringStrategy.d.ts +19 -0
  496. package/dist/utils/filtering/TaskFilteringStrategy.d.ts.map +1 -0
  497. package/dist/utils/filtering/TaskFilteringStrategy.js +10 -0
  498. package/dist/utils/filtering/TaskFilteringStrategy.js.map +1 -0
  499. package/dist/utils/filtering/index.d.ts +14 -0
  500. package/dist/utils/filtering/index.d.ts.map +1 -0
  501. package/dist/utils/filtering/index.js +22 -0
  502. package/dist/utils/filtering/index.js.map +1 -0
  503. package/dist/utils/filtering/types.d.ts +108 -0
  504. package/dist/utils/filtering/types.d.ts.map +1 -0
  505. package/dist/utils/filtering/types.js +6 -0
  506. package/dist/utils/filtering/types.js.map +1 -0
  507. package/dist/utils/filters.d.ts +70 -0
  508. package/dist/utils/filters.d.ts.map +1 -0
  509. package/dist/utils/filters.js +812 -0
  510. package/dist/utils/filters.js.map +1 -0
  511. package/dist/utils/http-error-detail.d.ts +28 -0
  512. package/dist/utils/http-error-detail.d.ts.map +1 -0
  513. package/dist/utils/http-error-detail.js +67 -0
  514. package/dist/utils/http-error-detail.js.map +1 -0
  515. package/dist/utils/label-bulk.d.ts +21 -0
  516. package/dist/utils/label-bulk.d.ts.map +1 -0
  517. package/dist/utils/label-bulk.js +51 -0
  518. package/dist/utils/label-bulk.js.map +1 -0
  519. package/dist/utils/logger.d.ts +20 -0
  520. package/dist/utils/logger.d.ts.map +1 -0
  521. package/dist/utils/logger.js +66 -0
  522. package/dist/utils/logger.js.map +1 -0
  523. package/dist/utils/memory.d.ts +73 -0
  524. package/dist/utils/memory.d.ts.map +1 -0
  525. package/dist/utils/memory.js +194 -0
  526. package/dist/utils/memory.js.map +1 -0
  527. package/dist/utils/performance/batch-processor.d.ts +77 -0
  528. package/dist/utils/performance/batch-processor.d.ts.map +1 -0
  529. package/dist/utils/performance/batch-processor.js +218 -0
  530. package/dist/utils/performance/batch-processor.js.map +1 -0
  531. package/dist/utils/performance/index.d.ts +42 -0
  532. package/dist/utils/performance/index.d.ts.map +1 -0
  533. package/dist/utils/performance/index.js +49 -0
  534. package/dist/utils/performance/index.js.map +1 -0
  535. package/dist/utils/performance/performance-monitor.d.ts +116 -0
  536. package/dist/utils/performance/performance-monitor.d.ts.map +1 -0
  537. package/dist/utils/performance/performance-monitor.js +307 -0
  538. package/dist/utils/performance/performance-monitor.js.map +1 -0
  539. package/dist/utils/read-only.d.ts +111 -0
  540. package/dist/utils/read-only.d.ts.map +1 -0
  541. package/dist/utils/read-only.js +503 -0
  542. package/dist/utils/read-only.js.map +1 -0
  543. package/dist/utils/response-factory.d.ts +81 -0
  544. package/dist/utils/response-factory.d.ts.map +1 -0
  545. package/dist/utils/response-factory.js +86 -0
  546. package/dist/utils/response-factory.js.map +1 -0
  547. package/dist/utils/retry.d.ts +160 -0
  548. package/dist/utils/retry.d.ts.map +1 -0
  549. package/dist/utils/retry.js +316 -0
  550. package/dist/utils/retry.js.map +1 -0
  551. package/dist/utils/security.d.ts +70 -0
  552. package/dist/utils/security.d.ts.map +1 -0
  553. package/dist/utils/security.js +358 -0
  554. package/dist/utils/security.js.map +1 -0
  555. package/dist/utils/simple-response.d.ts +75 -0
  556. package/dist/utils/simple-response.d.ts.map +1 -0
  557. package/dist/utils/simple-response.js +311 -0
  558. package/dist/utils/simple-response.js.map +1 -0
  559. package/dist/utils/storage-errors.d.ts +9 -0
  560. package/dist/utils/storage-errors.d.ts.map +1 -0
  561. package/dist/utils/storage-errors.js +20 -0
  562. package/dist/utils/storage-errors.js.map +1 -0
  563. package/dist/utils/task-rest-transport.d.ts +28 -0
  564. package/dist/utils/task-rest-transport.d.ts.map +1 -0
  565. package/dist/utils/task-rest-transport.js +33 -0
  566. package/dist/utils/task-rest-transport.js.map +1 -0
  567. package/dist/utils/unicode-fix.d.ts +19 -0
  568. package/dist/utils/unicode-fix.d.ts.map +1 -0
  569. package/dist/utils/unicode-fix.js +70 -0
  570. package/dist/utils/unicode-fix.js.map +1 -0
  571. package/dist/utils/validation.d.ts +75 -0
  572. package/dist/utils/validation.d.ts.map +1 -0
  573. package/dist/utils/validation.js +758 -0
  574. package/dist/utils/validation.js.map +1 -0
  575. package/dist/utils/vikunja-rest.d.ts +159 -0
  576. package/dist/utils/vikunja-rest.d.ts.map +1 -0
  577. package/dist/utils/vikunja-rest.js +378 -0
  578. package/dist/utils/vikunja-rest.js.map +1 -0
  579. package/docs/CONFIGURATION.md +957 -0
  580. package/docs/DOCKER-DESKTOP-MCP.md +207 -0
  581. package/docs/TOOLS.md +422 -0
  582. package/package.json +145 -0
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ /**
3
+ * Filter evaluation functions for tasks
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.evaluateCondition = evaluateCondition;
7
+ exports.evaluateComparison = evaluateComparison;
8
+ exports.evaluateDateComparison = evaluateDateComparison;
9
+ exports.parseRelativeDate = parseRelativeDate;
10
+ exports.evaluateStringComparison = evaluateStringComparison;
11
+ exports.evaluateArrayComparison = evaluateArrayComparison;
12
+ exports.evaluateGroup = evaluateGroup;
13
+ exports.applyFilter = applyFilter;
14
+ /**
15
+ * Evaluates a filter condition against a task
16
+ */
17
+ function evaluateCondition(task, condition) {
18
+ const { field, operator, value } = condition;
19
+ switch (field) {
20
+ case 'done':
21
+ return evaluateComparison(task.done, operator, value === true || value === 'true');
22
+ case 'priority':
23
+ return evaluateComparison(task.priority || 0, operator, Number(value));
24
+ case 'percentDone':
25
+ return evaluateComparison(task.percent_done || 0, operator, Number(value));
26
+ case 'dueDate':
27
+ if (!task.due_date) {
28
+ // Null due dates are only matched by != operator
29
+ return operator === '!=';
30
+ }
31
+ return evaluateDateComparison(task.due_date, operator, String(value));
32
+ case 'startDate': {
33
+ // Vikunja returns '0001-01-01T00:00:00Z' for unset dates instead of null.
34
+ const sd = task.start_date;
35
+ const isUnset = !sd || sd.startsWith('0001-');
36
+ if (isUnset)
37
+ return operator === '!=';
38
+ return evaluateDateComparison(sd, operator, String(value));
39
+ }
40
+ case 'endDate': {
41
+ const ed = task.end_date;
42
+ const isUnset = !ed || ed.startsWith('0001-');
43
+ if (isUnset)
44
+ return operator === '!=';
45
+ return evaluateDateComparison(ed, operator, String(value));
46
+ }
47
+ case 'doneAt': {
48
+ const da = task.done_at;
49
+ const isUnset = !da || da.startsWith('0001-');
50
+ if (isUnset)
51
+ return operator === '!=';
52
+ return evaluateDateComparison(da, operator, String(value));
53
+ }
54
+ case 'project':
55
+ return evaluateComparison(task.project_id || 0, operator, Number(value));
56
+ case 'created':
57
+ if (!task.created)
58
+ return false;
59
+ return evaluateDateComparison(task.created, operator, String(value));
60
+ case 'updated':
61
+ if (!task.updated)
62
+ return false;
63
+ return evaluateDateComparison(task.updated, operator, String(value));
64
+ case 'title':
65
+ return evaluateStringComparison(task.title ?? '', operator, String(value));
66
+ case 'description':
67
+ return evaluateStringComparison(task.description || '', operator, String(value));
68
+ case 'assignees':
69
+ return evaluateArrayComparison(task.assignees?.map((a) => a.id).filter((id) => id !== undefined) || [], operator, Array.isArray(value) ? value.map((v) => Number(v)) : [Number(value)]);
70
+ case 'labels':
71
+ return evaluateArrayComparison(task.labels?.map((l) => l.id).filter((id) => id !== undefined) || [], operator, Array.isArray(value) ? value.map((v) => Number(v)) : [Number(value)]);
72
+ default:
73
+ return false;
74
+ }
75
+ }
76
+ /**
77
+ * Evaluates comparison operators
78
+ */
79
+ function evaluateComparison(actual, operator, expected) {
80
+ switch (operator) {
81
+ case '=':
82
+ return actual === expected;
83
+ case '!=':
84
+ return actual !== expected;
85
+ case '>':
86
+ return Number(actual) > Number(expected);
87
+ case '>=':
88
+ return Number(actual) >= Number(expected);
89
+ case '<':
90
+ return Number(actual) < Number(expected);
91
+ case '<=':
92
+ return Number(actual) <= Number(expected);
93
+ default:
94
+ return false;
95
+ }
96
+ }
97
+ /**
98
+ * Evaluates date comparisons (supports relative dates like "now+7d")
99
+ */
100
+ function evaluateDateComparison(actual, operator, expected) {
101
+ const actualDate = new Date(actual);
102
+ const expectedDate = parseRelativeDate(expected);
103
+ if (!expectedDate)
104
+ return false;
105
+ switch (operator) {
106
+ case '=':
107
+ // For date equality, compare only the date part
108
+ return actualDate.toDateString() === expectedDate.toDateString();
109
+ case '!=':
110
+ return actualDate.toDateString() !== expectedDate.toDateString();
111
+ case '>':
112
+ return actualDate > expectedDate;
113
+ case '>=':
114
+ return actualDate >= expectedDate;
115
+ case '<':
116
+ return actualDate < expectedDate;
117
+ case '<=':
118
+ return actualDate <= expectedDate;
119
+ default:
120
+ return false;
121
+ }
122
+ }
123
+ /**
124
+ * Parses relative date strings (e.g., "now+7d", "now-1w")
125
+ */
126
+ function parseRelativeDate(dateStr) {
127
+ // ISO date format
128
+ if (/^\d{4}-\d{2}-\d{2}/.test(dateStr)) {
129
+ return new Date(dateStr);
130
+ }
131
+ // Relative date format
132
+ const relativeMatch = dateStr.match(/^now([+-]\d+)([smhdwMy])?$/);
133
+ if (relativeMatch && relativeMatch[1]) {
134
+ const amount = parseInt(relativeMatch[1]);
135
+ const unit = relativeMatch[2] || 'd';
136
+ const now = new Date();
137
+ switch (unit) {
138
+ case 's':
139
+ now.setSeconds(now.getSeconds() + amount);
140
+ break;
141
+ case 'm':
142
+ now.setMinutes(now.getMinutes() + amount);
143
+ break;
144
+ case 'h':
145
+ now.setHours(now.getHours() + amount);
146
+ break;
147
+ case 'd':
148
+ now.setDate(now.getDate() + amount);
149
+ break;
150
+ case 'w':
151
+ now.setDate(now.getDate() + amount * 7);
152
+ break;
153
+ case 'M':
154
+ now.setMonth(now.getMonth() + amount);
155
+ break;
156
+ case 'y':
157
+ now.setFullYear(now.getFullYear() + amount);
158
+ break;
159
+ }
160
+ return now;
161
+ }
162
+ // "now" without offset
163
+ if (dateStr === 'now') {
164
+ return new Date();
165
+ }
166
+ return null;
167
+ }
168
+ /**
169
+ * Evaluates string comparisons
170
+ */
171
+ function evaluateStringComparison(actual, operator, expected) {
172
+ switch (operator) {
173
+ case '=':
174
+ return actual === expected;
175
+ case '!=':
176
+ return actual !== expected;
177
+ case 'like':
178
+ // Simple pattern matching - case insensitive
179
+ return actual.toLowerCase().includes(expected.toLowerCase());
180
+ default:
181
+ return false;
182
+ }
183
+ }
184
+ /**
185
+ * Evaluates array comparisons (for assignees and labels)
186
+ */
187
+ function evaluateArrayComparison(actual, operator, expected) {
188
+ switch (operator) {
189
+ case 'in':
190
+ // Check if any expected value is in the actual array
191
+ return expected.some((e) => actual.includes(e));
192
+ case 'not in':
193
+ // Check if none of the expected values are in the actual array
194
+ return !expected.some((e) => actual.includes(e));
195
+ default:
196
+ return false;
197
+ }
198
+ }
199
+ /**
200
+ * Evaluates a filter group against a task
201
+ */
202
+ function evaluateGroup(task, group) {
203
+ if (group.operator === '&&') {
204
+ return group.conditions.every((condition) => evaluateCondition(task, condition));
205
+ }
206
+ else {
207
+ return group.conditions.some((condition) => evaluateCondition(task, condition));
208
+ }
209
+ }
210
+ /**
211
+ * Applies a filter expression to a list of tasks
212
+ */
213
+ function applyFilter(tasks, expression) {
214
+ return tasks.filter((task) => {
215
+ const groupOperator = expression.operator || '&&';
216
+ if (groupOperator === '&&') {
217
+ return expression.groups.every((group) => evaluateGroup(task, group));
218
+ }
219
+ else {
220
+ return expression.groups.some((group) => evaluateGroup(task, group));
221
+ }
222
+ });
223
+ }
224
+ //# sourceMappingURL=evaluators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluators.js","sourceRoot":"","sources":["../../../../src/tools/tasks/filtering/evaluators.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAWH,8CA4EC;AAKD,gDAiBC;AAKD,wDAuBC;AAKD,8CA8CC;AAKD,4DAYC;AAKD,0DAWC;AAKD,sCAMC;AAKD,kCAUC;AA/OD;;GAEG;AACH,SAAgB,iBAAiB,CAAC,IAAU,EAAE,SAA0B;IACtE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;IAE7C,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,MAAM;YACT,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC;QAErF,KAAK,UAAU;YACb,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAEzE,KAAK,aAAa;YAChB,OAAO,kBAAkB,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAE7E,KAAK,SAAS;YACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,iDAAiD;gBACjD,OAAO,QAAQ,KAAK,IAAI,CAAC;YAC3B,CAAC;YACD,OAAO,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAExE,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,0EAA0E;YAC1E,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;YAC3B,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC9C,IAAI,OAAO;gBAAE,OAAO,QAAQ,KAAK,IAAI,CAAC;YACtC,OAAO,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;YACzB,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC9C,IAAI,OAAO;gBAAE,OAAO,QAAQ,KAAK,IAAI,CAAC;YACtC,OAAO,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YACxB,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC9C,IAAI,OAAO;gBAAE,OAAO,QAAQ,KAAK,IAAI,CAAC;YACtC,OAAO,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,KAAK,SAAS;YACZ,OAAO,kBAAkB,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAE3E,KAAK,SAAS;YACZ,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAChC,OAAO,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAEvE,KAAK,SAAS;YACZ,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAChC,OAAO,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAEvE,KAAK,OAAO;YACV,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAE7E,KAAK,aAAa;YAChB,OAAO,wBAAwB,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAEnF,KAAK,WAAW;YACd,OAAO,uBAAuB,CAC5B,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,IAAI,EAAE,EACrF,QAAQ,EACR,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CACrE,CAAC;QAEJ,KAAK,QAAQ;YACX,OAAO,uBAAuB,CAC5B,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,IAAI,EAAE,EAClF,QAAQ,EACR,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CACrE,CAAC;QAEJ;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,MAAe,EAAE,QAAgB,EAAE,QAAiB;IACrF,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,GAAG;YACN,OAAO,MAAM,KAAK,QAAQ,CAAC;QAC7B,KAAK,IAAI;YACP,OAAO,MAAM,KAAK,QAAQ,CAAC;QAC7B,KAAK,GAAG;YACN,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3C,KAAK,IAAI;YACP,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,KAAK,GAAG;YACN,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3C,KAAK,IAAI;YACP,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,MAAc,EAAE,QAAgB,EAAE,QAAgB;IACvF,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAEjD,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IAEhC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,GAAG;YACN,gDAAgD;YAChD,OAAO,UAAU,CAAC,YAAY,EAAE,KAAK,YAAY,CAAC,YAAY,EAAE,CAAC;QACnE,KAAK,IAAI;YACP,OAAO,UAAU,CAAC,YAAY,EAAE,KAAK,YAAY,CAAC,YAAY,EAAE,CAAC;QACnE,KAAK,GAAG;YACN,OAAO,UAAU,GAAG,YAAY,CAAC;QACnC,KAAK,IAAI;YACP,OAAO,UAAU,IAAI,YAAY,CAAC;QACpC,KAAK,GAAG;YACN,OAAO,UAAU,GAAG,YAAY,CAAC;QACnC,KAAK,IAAI;YACP,OAAO,UAAU,IAAI,YAAY,CAAC;QACpC;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,kBAAkB;IAClB,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,uBAAuB;IACvB,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAClE,IAAI,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,GAAG;gBACN,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,GAAG;gBACN,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,GAAG;gBACN,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,CAAC;gBACtC,MAAM;YACR,KAAK,GAAG;gBACN,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;gBACpC,MAAM;YACR,KAAK,GAAG;gBACN,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;gBACxC,MAAM;YACR,KAAK,GAAG;gBACN,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,CAAC;gBACtC,MAAM;YACR,KAAK,GAAG;gBACN,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC;gBAC5C,MAAM;QACV,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,uBAAuB;IACvB,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO,IAAI,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,MAAc,EAAE,QAAgB,EAAE,QAAgB;IACzF,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,GAAG;YACN,OAAO,MAAM,KAAK,QAAQ,CAAC;QAC7B,KAAK,IAAI;YACP,OAAO,MAAM,KAAK,QAAQ,CAAC;QAC7B,KAAK,MAAM;YACT,6CAA6C;YAC7C,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/D;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CAAC,MAAgB,EAAE,QAAgB,EAAE,QAAkB;IAC5F,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,IAAI;YACP,qDAAqD;YACrD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,KAAK,QAAQ;YACX,+DAA+D;YAC/D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,IAAU,EAAE,KAAkB;IAC1D,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACnF,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAClF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,KAAa,EAAE,UAA4B;IACrE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC;QAElD,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Task Filtering Module
3
+ * Provides comprehensive filtering capabilities for task operations
4
+ */
5
+ export { TaskFilteringOrchestrator } from './TaskFilteringOrchestrator';
6
+ export { FilterValidator } from './FilterValidator';
7
+ export { FilterExecutor } from './FilterExecutor';
8
+ export { evaluateCondition, evaluateComparison, evaluateDateComparison, parseRelativeDate, evaluateStringComparison, evaluateArrayComparison, evaluateGroup, applyFilter } from './evaluators';
9
+ export type { TaskListingArgs, TaskFilteringParams, TaskFilteringResult, TaskFilterValidationConfig, TaskFilteringContext, TaskFilterExecutionResult, TaskFilterStorage } from '../types/filters';
10
+ export type { FilterExpression, FilterValidationResult, SavedFilter } from '../../../types/filters';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tools/tasks/filtering/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAGxE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB,EACvB,aAAa,EACb,WAAW,EACZ,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,WAAW,EACZ,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /**
3
+ * Task Filtering Module
4
+ * Provides comprehensive filtering capabilities for task operations
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.applyFilter = exports.evaluateGroup = exports.evaluateArrayComparison = exports.evaluateStringComparison = exports.parseRelativeDate = exports.evaluateDateComparison = exports.evaluateComparison = exports.evaluateCondition = exports.FilterExecutor = exports.FilterValidator = exports.TaskFilteringOrchestrator = void 0;
8
+ // Main orchestrator
9
+ var TaskFilteringOrchestrator_1 = require("./TaskFilteringOrchestrator");
10
+ Object.defineProperty(exports, "TaskFilteringOrchestrator", { enumerable: true, get: function () { return TaskFilteringOrchestrator_1.TaskFilteringOrchestrator; } });
11
+ // Core components
12
+ var FilterValidator_1 = require("./FilterValidator");
13
+ Object.defineProperty(exports, "FilterValidator", { enumerable: true, get: function () { return FilterValidator_1.FilterValidator; } });
14
+ var FilterExecutor_1 = require("./FilterExecutor");
15
+ Object.defineProperty(exports, "FilterExecutor", { enumerable: true, get: function () { return FilterExecutor_1.FilterExecutor; } });
16
+ // Filter evaluators (moved from original filters.ts)
17
+ var evaluators_1 = require("./evaluators");
18
+ Object.defineProperty(exports, "evaluateCondition", { enumerable: true, get: function () { return evaluators_1.evaluateCondition; } });
19
+ Object.defineProperty(exports, "evaluateComparison", { enumerable: true, get: function () { return evaluators_1.evaluateComparison; } });
20
+ Object.defineProperty(exports, "evaluateDateComparison", { enumerable: true, get: function () { return evaluators_1.evaluateDateComparison; } });
21
+ Object.defineProperty(exports, "parseRelativeDate", { enumerable: true, get: function () { return evaluators_1.parseRelativeDate; } });
22
+ Object.defineProperty(exports, "evaluateStringComparison", { enumerable: true, get: function () { return evaluators_1.evaluateStringComparison; } });
23
+ Object.defineProperty(exports, "evaluateArrayComparison", { enumerable: true, get: function () { return evaluators_1.evaluateArrayComparison; } });
24
+ Object.defineProperty(exports, "evaluateGroup", { enumerable: true, get: function () { return evaluators_1.evaluateGroup; } });
25
+ Object.defineProperty(exports, "applyFilter", { enumerable: true, get: function () { return evaluators_1.applyFilter; } });
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tools/tasks/filtering/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,oBAAoB;AACpB,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA;AAElC,kBAAkB;AAClB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AAEvB,qDAAqD;AACrD,2CASsB;AARpB,+GAAA,iBAAiB,OAAA;AACjB,gHAAA,kBAAkB,OAAA;AAClB,oHAAA,sBAAsB,OAAA;AACtB,+GAAA,iBAAiB,OAAA;AACjB,sHAAA,wBAAwB,OAAA;AACxB,qHAAA,uBAAuB,OAAA;AACvB,2GAAA,aAAa,OAAA;AACb,yGAAA,WAAW,OAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Tasks Tool
3
+ * Handles task operations for Vikunja
4
+ */
5
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
+ import type { AuthManager } from '../../auth/AuthManager';
7
+ import type { VikunjaClientFactory } from '../../client/VikunjaClientFactory';
8
+ export declare function registerTasksTool(server: McpServer, authManager: AuthManager, clientFactory?: VikunjaClientFactory): void;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/tasks/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAuH9E,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,WAAW,EACxB,aAAa,CAAC,EAAE,oBAAoB,GACnC,IAAI,CA0SN"}
@@ -0,0 +1,337 @@
1
+ "use strict";
2
+ /**
3
+ * Tasks Tool
4
+ * Handles task operations for Vikunja
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.registerTasksTool = registerTasksTool;
8
+ const zod_1 = require("zod");
9
+ const types_1 = require("../../types");
10
+ const client_1 = require("../../client");
11
+ const logger_1 = require("../../utils/logger");
12
+ const storage_1 = require("../../storage");
13
+ const tasks_relations_1 = require("../tasks-relations");
14
+ const filtering_1 = require("./filtering");
15
+ const error_handler_1 = require("../../utils/error-handler");
16
+ const response_factory_1 = require("../../utils/response-factory");
17
+ const read_only_1 = require("../../utils/read-only");
18
+ // Import all operation handlers
19
+ const crud_1 = require("./crud");
20
+ const bulk_operations_1 = require("./bulk-operations");
21
+ const assignees_1 = require("./assignees");
22
+ const comments_1 = require("./comments");
23
+ const reminders_1 = require("./reminders");
24
+ const labels_1 = require("./labels");
25
+ const attach_1 = require("./attach");
26
+ const attachments_1 = require("./attachments");
27
+ const buckets_1 = require("./buckets");
28
+ const position_1 = require("./position");
29
+ const by_index_1 = require("./by-index");
30
+ const subtasks_1 = require("./subtasks");
31
+ const duplicate_1 = require("./duplicate");
32
+ const mark_read_1 = require("./mark-read");
33
+ /**
34
+ * Get session-scoped storage instance
35
+ */
36
+ async function getSessionStorage(authManager) {
37
+ const session = authManager.getSession();
38
+ const sessionId = session.apiToken ? `${session.apiUrl}:${session.apiToken.substring(0, 8)}` : 'anonymous';
39
+ return storage_1.storageManager.getStorage(sessionId, session.userId, session.apiUrl);
40
+ }
41
+ /**
42
+ * List tasks with optional filtering
43
+ */
44
+ async function listTasks(args, storage, authManager) {
45
+ try {
46
+ // Execute the complete filtering workflow using the orchestrator.
47
+ // authManager is threaded through for cross-project listing's
48
+ // direct-REST GET /tasks strategy (RestCrossProjectFilteringStrategy).
49
+ const filteringResult = await filtering_1.TaskFilteringOrchestrator.executeTaskFiltering(args, storage, {}, authManager);
50
+ // Determine filtering method message
51
+ let filteringMessage = '';
52
+ if (args.filter) {
53
+ if (filteringResult.metadata?.serverSideFilteringUsed) {
54
+ filteringMessage = ' (filtered server-side)';
55
+ }
56
+ else if (filteringResult.metadata?.serverSideFilteringAttempted) {
57
+ filteringMessage = ' (filtered client-side - server-side fallback)';
58
+ }
59
+ else {
60
+ filteringMessage = ' (filtered client-side)';
61
+ }
62
+ }
63
+ const taskCount = filteringResult.tasks?.length || 0;
64
+ const response = (0, crud_1.createTaskResponse)('list-tasks', `Found ${taskCount} tasks${filteringMessage}`, { tasks: filteringResult.tasks || [] }, {
65
+ timestamp: new Date().toISOString(),
66
+ count: taskCount,
67
+ ...(filteringResult.metadata || {}),
68
+ }, undefined, // verbosity (ignored - using standard AORP)
69
+ undefined, // useOptimizedFormat (ignored - using standard AORP)
70
+ undefined, // useAorp (ignored - always using AORP)
71
+ undefined, // aorpConfig (using auto-generated)
72
+ args.sessionId);
73
+ logger_1.logger.debug('Tasks tool response', { subcommand: 'list', itemCount: taskCount });
74
+ return {
75
+ content: [
76
+ {
77
+ type: 'text',
78
+ text: (0, response_factory_1.formatAorpAsMarkdown)(response.response),
79
+ },
80
+ ],
81
+ };
82
+ }
83
+ catch (error) {
84
+ if (error instanceof types_1.MCPError) {
85
+ throw error;
86
+ }
87
+ // Log the full error for debugging filter issues
88
+ logger_1.logger.error('Task list error:', {
89
+ error: error instanceof Error ? error.message : String(error),
90
+ filter: args.filter,
91
+ filterId: args.filterId,
92
+ });
93
+ throw (0, error_handler_1.handleFetchError)(error, 'list tasks');
94
+ }
95
+ }
96
+ function registerTasksTool(server, authManager, clientFactory) {
97
+ server.tool('vikunja_tasks', (0, read_only_1.withReadOnlyNote)('vikunja_tasks', 'Manage tasks with comprehensive operations (create, update, delete, list, assign, attach/list/delete files, comment, bulk operations, set Kanban bucket, set position, lookup by per-project index, create/list subtasks, duplicate, mark-read). ' +
98
+ 'download-attachment cannot deliver file bytes through MCP (no binary channel) — it returns the direct download URL and auth guidance instead. ' +
99
+ 'create-subtask is a composite (resolve parent -> create task -> relate -> verify) with opt-in atomic rollback via `atomic: true` (default best-effort — see docs/ENDPOINT-PLAYBOOK.md §5). ' +
100
+ 'duplicate copies a task (labels, assignees, attachments, reminders) into the same project (PUT /tasks/{taskID}/duplicate, no body). ' +
101
+ 'mark-read removes the current unread status entry for a task (POST /tasks/{projecttask}/read).'), {
102
+ subcommand: zod_1.z.enum([
103
+ 'create',
104
+ 'get',
105
+ 'update',
106
+ 'delete',
107
+ 'list',
108
+ 'assign',
109
+ 'unassign',
110
+ 'list-assignees',
111
+ 'attach',
112
+ 'list-attachments',
113
+ 'get-attachment-info',
114
+ 'delete-attachment',
115
+ 'download-attachment',
116
+ 'comment',
117
+ 'bulk-create',
118
+ 'bulk-update',
119
+ 'bulk-delete',
120
+ 'relate',
121
+ 'unrelate',
122
+ 'relations',
123
+ 'add-reminder',
124
+ 'remove-reminder',
125
+ 'list-reminders',
126
+ 'apply-label',
127
+ 'remove-label',
128
+ 'list-labels',
129
+ 'set-bucket',
130
+ 'set-position',
131
+ 'get-by-index',
132
+ 'create-subtask',
133
+ 'list-subtasks',
134
+ 'duplicate',
135
+ 'mark-read',
136
+ ]),
137
+ // Task creation/update fields
138
+ title: zod_1.z.string().optional(),
139
+ description: zod_1.z.string().optional(),
140
+ projectId: zod_1.z.number().optional(),
141
+ dueDate: zod_1.z.string().optional(),
142
+ startDate: zod_1.z.string().optional(),
143
+ endDate: zod_1.z.string().optional(),
144
+ priority: zod_1.z.number().min(0).max(5).optional(),
145
+ percentDone: zod_1.z.number().min(0).max(1).optional(),
146
+ labels: zod_1.z.array(zod_1.z.number()).optional(),
147
+ assignees: zod_1.z.array(zod_1.z.number()).optional(),
148
+ // Kanban bucket fields (set-bucket subcommand).
149
+ // z.coerce tolerates MCP clients whose cached tool schema predates
150
+ // these params and therefore send them as strings over JSON-RPC.
151
+ bucketId: zod_1.z.coerce.number().optional(),
152
+ viewId: zod_1.z.coerce.number().optional(),
153
+ // Task position fields (set-position subcommand). position is a
154
+ // float64 per the API (see models.TaskPosition) - see docs on
155
+ // spreading tasks between two positions - so it is not coerced to an
156
+ // integer. projectViewId is auto-resolved from projectId + viewKind
157
+ // when omitted, mirroring set-bucket's resolve-by-name friendliness.
158
+ position: zod_1.z.coerce.number().optional(),
159
+ projectViewId: zod_1.z.coerce.number().optional(),
160
+ viewKind: zod_1.z.enum(['list', 'gantt', 'table', 'kanban']).optional(),
161
+ // By-index lookup field (get-by-index subcommand): the task's
162
+ // human-facing per-project index (e.g. the "42" in "PROJ-42").
163
+ index: zod_1.z.coerce.number().optional(),
164
+ // Recurring task fields
165
+ repeatAfter: zod_1.z.number().min(0).optional(),
166
+ repeatMode: zod_1.z.enum(['day', 'week', 'month', 'year']).optional(),
167
+ // Query fields
168
+ id: zod_1.z.number().optional(),
169
+ filter: zod_1.z.string().optional(),
170
+ filterId: zod_1.z.string().optional(),
171
+ page: zod_1.z.number().optional(),
172
+ perPage: zod_1.z.number().optional(),
173
+ sort: zod_1.z.string().optional(),
174
+ search: zod_1.z.string().optional(),
175
+ // List specific filters
176
+ allProjects: zod_1.z.boolean().optional(),
177
+ done: zod_1.z.boolean().optional(),
178
+ // GET /tasks query params honored for cross-project listing (direct
179
+ // REST — see RestCrossProjectFilteringStrategy). Single-project
180
+ // listing (ClientSideFilteringStrategy/ServerSideFilteringStrategy)
181
+ // calls GET /projects/{id}/tasks, which never supported these extra
182
+ // params, so they are silently unused in that case.
183
+ orderBy: zod_1.z.enum(['asc', 'desc']).optional(),
184
+ filterTimezone: zod_1.z.string().optional(),
185
+ filterIncludeNulls: zod_1.z.boolean().optional(),
186
+ expand: zod_1.z.array(zod_1.z.enum(['subtasks', 'buckets', 'reactions', 'comments'])).optional(),
187
+ // Comment fields
188
+ comment: zod_1.z.string().optional(),
189
+ commentId: zod_1.z.number().optional(),
190
+ // Bulk operation fields
191
+ taskIds: zod_1.z.array(zod_1.z.number()).optional(),
192
+ field: zod_1.z.string().optional(),
193
+ value: zod_1.z.unknown().optional(),
194
+ tasks: zod_1.z
195
+ .array(zod_1.z.object({
196
+ title: zod_1.z.string(),
197
+ description: zod_1.z.string().optional(),
198
+ dueDate: zod_1.z.string().optional(),
199
+ startDate: zod_1.z.string().optional(),
200
+ endDate: zod_1.z.string().optional(),
201
+ priority: zod_1.z.number().min(0).max(5).optional(),
202
+ labels: zod_1.z.array(zod_1.z.number()).optional(),
203
+ assignees: zod_1.z.array(zod_1.z.number()).optional(),
204
+ repeatAfter: zod_1.z.number().min(0).optional(),
205
+ repeatMode: zod_1.z.enum(['day', 'week', 'month', 'year']).optional(),
206
+ }))
207
+ .optional(),
208
+ // Reminder fields
209
+ reminderDate: zod_1.z.string().optional(),
210
+ // Vikunja's API has no reminder id — remove-reminder identifies the
211
+ // reminder to remove by its reminderDate string and/or its zero-based
212
+ // reminderIndex, both shown by list-reminders.
213
+ reminderIndex: zod_1.z.number().optional(),
214
+ // Attach subcommand fields (filePath, fileContent, filename)
215
+ ...attach_1.attachSchemaFields,
216
+ // Attachments read-side fields (list-attachments, get-attachment-info,
217
+ // delete-attachment, download-attachment). page/perPage are shared
218
+ // with the generic query fields above.
219
+ attachmentId: zod_1.z.number().optional(),
220
+ previewSize: zod_1.z.enum(['sm', 'md', 'lg', 'xl']).optional(),
221
+ // Add relation schema
222
+ ...tasks_relations_1.relationSchema,
223
+ // Subtask composite fields (create-subtask). title/description/dueDate/
224
+ // priority/labels/assignees/bucketId are shared with the generic
225
+ // create/set-bucket fields above.
226
+ parentTaskId: zod_1.z.number().optional(),
227
+ // Opt into atomic rollback for create-subtask (default best-effort) —
228
+ // see docs/ENDPOINT-PLAYBOOK.md §5.
229
+ atomic: zod_1.z.boolean().optional(),
230
+ // Session ID for AORP response tracking
231
+ sessionId: zod_1.z.string().optional(),
232
+ }, (0, read_only_1.getToolAnnotations)('vikunja_tasks'), async (args) => {
233
+ try {
234
+ logger_1.logger.debug('Executing tasks tool', { subcommand: args.subcommand, args });
235
+ // Check authentication with enhanced error message
236
+ if (!authManager.isAuthenticated()) {
237
+ throw (0, error_handler_1.createAuthRequiredError)('access task management features');
238
+ }
239
+ // Global read-only safety mode gate. 'comment' is dual-purpose
240
+ // (creates a comment when text is supplied, otherwise lists
241
+ // comments — see handleComment) so its effective classification
242
+ // depends on whether `comment` text was actually provided.
243
+ (0, read_only_1.assertWriteAllowed)('vikunja_tasks', args.subcommand, args.subcommand === 'comment' ? (args.comment ? 'write' : 'read') : undefined);
244
+ // Set the client factory for this request if provided
245
+ if (clientFactory) {
246
+ await (0, client_1.setGlobalClientFactory)(clientFactory);
247
+ }
248
+ // Test client connection
249
+ await (0, client_1.getAuthManagerFromContext)();
250
+ switch (args.subcommand) {
251
+ case 'list': {
252
+ // Get session-scoped storage for filter operations (only when needed)
253
+ const storage = await getSessionStorage(authManager);
254
+ return listTasks(args, storage, authManager);
255
+ }
256
+ case 'create':
257
+ return (0, crud_1.createTask)(args, authManager);
258
+ case 'get':
259
+ return (0, crud_1.getTask)(args, authManager);
260
+ case 'update':
261
+ return (0, crud_1.updateTask)(args, authManager);
262
+ case 'delete':
263
+ return (0, crud_1.deleteTask)(args, authManager);
264
+ case 'assign':
265
+ return (0, assignees_1.assignUsers)(args, authManager);
266
+ case 'unassign':
267
+ return (0, assignees_1.unassignUsers)(args, authManager);
268
+ case 'list-assignees':
269
+ return (0, assignees_1.listAssignees)(args, authManager);
270
+ case 'comment':
271
+ return (0, comments_1.handleComment)(args, authManager);
272
+ case 'attach':
273
+ return (0, attach_1.handleAttach)(args, authManager);
274
+ case 'list-attachments':
275
+ return (0, attachments_1.listAttachments)(args, authManager);
276
+ case 'get-attachment-info':
277
+ return (0, attachments_1.getAttachmentInfo)(args, authManager);
278
+ case 'delete-attachment':
279
+ return (0, attachments_1.deleteAttachment)(args, authManager);
280
+ case 'download-attachment':
281
+ return (0, attachments_1.downloadAttachment)(args, authManager);
282
+ case 'bulk-update':
283
+ return (0, bulk_operations_1.bulkUpdateTasks)(args, authManager);
284
+ case 'bulk-delete':
285
+ return (0, bulk_operations_1.bulkDeleteTasks)(args, authManager);
286
+ case 'bulk-create':
287
+ return (0, bulk_operations_1.bulkCreateTasks)(args, authManager);
288
+ // Handle relation subcommands
289
+ case 'relate':
290
+ case 'unrelate':
291
+ case 'relations':
292
+ return (0, tasks_relations_1.handleRelationSubcommands)({
293
+ subcommand: args.subcommand,
294
+ id: args.id,
295
+ otherTaskId: args.otherTaskId,
296
+ relationKind: args.relationKind,
297
+ }, authManager);
298
+ // Handle reminder operations
299
+ case 'add-reminder':
300
+ return (0, reminders_1.addReminder)(args, authManager);
301
+ case 'remove-reminder':
302
+ return (0, reminders_1.removeReminder)(args, authManager);
303
+ case 'list-reminders':
304
+ return (0, reminders_1.listReminders)(args, authManager);
305
+ case 'apply-label':
306
+ return (0, labels_1.applyLabels)(args, authManager);
307
+ case 'remove-label':
308
+ return (0, labels_1.removeLabels)(args, authManager);
309
+ case 'list-labels':
310
+ return (0, labels_1.listTaskLabels)(args, authManager);
311
+ case 'set-bucket':
312
+ return (0, buckets_1.setTaskBucket)(args, authManager);
313
+ case 'set-position':
314
+ return (0, position_1.setTaskPosition)(args, authManager);
315
+ case 'get-by-index':
316
+ return (0, by_index_1.getTaskByIndex)(args, authManager);
317
+ case 'create-subtask':
318
+ return (0, subtasks_1.createSubtask)(args, authManager);
319
+ case 'list-subtasks':
320
+ return (0, subtasks_1.listSubtasks)(args, authManager);
321
+ case 'duplicate':
322
+ return (0, duplicate_1.duplicateTask)(args, authManager);
323
+ case 'mark-read':
324
+ return (0, mark_read_1.markTaskRead)(args, authManager);
325
+ default:
326
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Unknown subcommand: ${args.subcommand}`);
327
+ }
328
+ }
329
+ catch (error) {
330
+ if (error instanceof types_1.MCPError) {
331
+ throw error;
332
+ }
333
+ throw new types_1.MCPError(types_1.ErrorCode.INTERNAL_ERROR, `Task operation error: ${error instanceof Error ? error.message : String(error)}`);
334
+ }
335
+ });
336
+ }
337
+ //# sourceMappingURL=index.js.map