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,257 @@
1
+ "use strict";
2
+ /**
3
+ * Filter validation for task filtering operations
4
+ * Handles validation of filter expressions and task listing parameters
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FilterValidator = void 0;
8
+ const types_1 = require("../../../types");
9
+ const filters_1 = require("../../../utils/filters");
10
+ const memory_1 = require("../../../utils/memory");
11
+ const logger_1 = require("../../../utils/logger");
12
+ const constants_1 = require("../constants");
13
+ const VALID_SORT_FIELD_SET = new Set(constants_1.VALID_SORT_FIELDS);
14
+ /**
15
+ * Normalizes a `sort` argument (comma-separated `sort_by` field list) by
16
+ * translating this tool's camelCase field aliases to the API's snake_case
17
+ * names (`dueDate` -> `due_date`, mirroring `FILTER_FIELD_TO_API_FIELD`),
18
+ * then checks every resulting token against `VALID_SORT_FIELDS`.
19
+ *
20
+ * Without this, an unrecognized `sort_by` value is silently ignored by
21
+ * Vikunja (tasks come back in default order with no error) — exactly the
22
+ * "free-form field selector that silently no-ops" pattern this validation
23
+ * closes, per the field/enum allowlist ergonomics sweep.
24
+ */
25
+ function normalizeAndValidateSort(sort) {
26
+ const invalidTokens = [];
27
+ const normalizedTokens = sort.split(',').map((rawToken) => {
28
+ const token = rawToken.trim();
29
+ const apiField = constants_1.SORT_FIELD_ALIASES[token] ?? token;
30
+ if (!VALID_SORT_FIELD_SET.has(apiField)) {
31
+ invalidTokens.push(token);
32
+ }
33
+ return apiField;
34
+ });
35
+ return { normalized: normalizedTokens.join(','), invalidTokens };
36
+ }
37
+ /**
38
+ * Validates filter parameters for task listing operations
39
+ */
40
+ exports.FilterValidator = {
41
+ /**
42
+ * Validates and processes filter string or filter ID
43
+ */
44
+ async validateAndParseFilter(args, storage) {
45
+ let filterExpression = null;
46
+ let filterString;
47
+ const validationWarnings = [];
48
+ try {
49
+ // Resolve the user-supplied filter - either a direct filter string or a
50
+ // saved filter referenced by id.
51
+ let userFilter;
52
+ if (args.filterId) {
53
+ const savedFilter = await storage.get(args.filterId);
54
+ if (!savedFilter) {
55
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Filter with id ${args.filterId} not found`);
56
+ }
57
+ userFilter = savedFilter.filter;
58
+ }
59
+ else if (args.filter !== undefined) {
60
+ userFilter = args.filter;
61
+ }
62
+ // Parse the user-supplied filter into an expression.
63
+ if (userFilter) {
64
+ const parseResult = (0, filters_1.parseFilterString)(userFilter);
65
+ if (parseResult.error) {
66
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Invalid filter syntax: ${parseResult.error.message}${parseResult.error.context ? `\n${parseResult.error.context}` : ''}`);
67
+ }
68
+ filterExpression = parseResult.expression;
69
+ }
70
+ // Fold the `done` flag into the filter expression so it is applied
71
+ // server-side (before pagination) rather than trimming an already
72
+ // paginated page. Without this, `done=false` scattered open tasks
73
+ // unpredictably across raw pages.
74
+ if (args.done !== undefined) {
75
+ const doneGroup = {
76
+ conditions: [{ field: 'done', operator: '=', value: args.done }],
77
+ operator: '&&',
78
+ };
79
+ if (!filterExpression) {
80
+ filterExpression = { groups: [doneGroup] };
81
+ }
82
+ else if (filterExpression.groups.length === 1) {
83
+ // Single user group: AND `done` on as a second group. The user's
84
+ // group is parenthesised when serialised, so its own &&/|| operator
85
+ // is preserved.
86
+ filterExpression = {
87
+ groups: [...filterExpression.groups, doneGroup],
88
+ operator: '&&',
89
+ };
90
+ }
91
+ // Multi-group user filter: left untouched - appending a group here
92
+ // could change group-join semantics. `done` is still enforced by
93
+ // FilterExecutor.applyPostProcessingFilters in that case.
94
+ }
95
+ // Serialise the final expression for Vikunja's server-side `filter`
96
+ // query param. When `done` was not folded in, keep the user's original
97
+ // string verbatim.
98
+ if (filterExpression) {
99
+ filterString =
100
+ args.done === undefined ? userFilter : (0, filters_1.expressionToString)(filterExpression);
101
+ }
102
+ if (filterString) {
103
+ // Log that we're preparing to attempt hybrid filtering
104
+ logger_1.logger.info('Preparing hybrid filtering (server-side attempt + client-side fallback)', {
105
+ filter: filterString,
106
+ });
107
+ }
108
+ return { filterExpression, filterString, validationWarnings };
109
+ }
110
+ catch (error) {
111
+ if (error instanceof types_1.MCPError) {
112
+ throw error;
113
+ }
114
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Filter validation failed: ${error instanceof Error ? error.message : String(error)}`);
115
+ }
116
+ },
117
+ /**
118
+ * Validates pagination and memory constraints
119
+ */
120
+ validateMemoryConstraints(args, requestedPageSize) {
121
+ const warnings = [];
122
+ // Validate pagination limits for memory protection with enhanced analysis
123
+ const taskCountValidation = (0, memory_1.validateTaskCountLimit)(requestedPageSize, undefined, args.filter ? {
124
+ filterExpression: args.filter,
125
+ operationType: 'list'
126
+ } : undefined);
127
+ if (!taskCountValidation.allowed) {
128
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Task count limit exceeded. Requested: ${requestedPageSize}, Max allowed: ${taskCountValidation.maxAllowed}. ` +
129
+ `Estimated memory usage: ${taskCountValidation.estimatedMemoryMB}MB (risk: ${taskCountValidation.riskLevel}). ` +
130
+ 'Reduce the perPage parameter, use pagination with smaller page sizes, or apply more specific filters.');
131
+ }
132
+ // Add warnings for large page sizes
133
+ if (requestedPageSize > 500) {
134
+ warnings.push(`Large page size (${requestedPageSize}) may impact performance. Consider using smaller pages or more specific filters.`);
135
+ }
136
+ // Include enhanced memory validation warnings
137
+ if (taskCountValidation.warnings.length > 0) {
138
+ warnings.push(...taskCountValidation.warnings);
139
+ }
140
+ return {
141
+ isValid: true,
142
+ warnings,
143
+ maxAllowed: taskCountValidation.maxAllowed
144
+ };
145
+ },
146
+ /**
147
+ * Validates the actual loaded task count against limits
148
+ */
149
+ validateLoadedTasks(actualTaskCount, sampleTask) {
150
+ const warnings = [];
151
+ const finalTaskCountValidation = (0, memory_1.validateTaskCountLimit)(actualTaskCount, sampleTask);
152
+ if (!finalTaskCountValidation.allowed) {
153
+ // Log warning but don't fail since tasks are already loaded
154
+ logger_1.logger.warn('Loaded task count exceeds recommended limits', {
155
+ actualCount: actualTaskCount,
156
+ maxRecommended: finalTaskCountValidation.maxAllowed,
157
+ estimatedMemoryMB: finalTaskCountValidation.estimatedMemoryMB,
158
+ riskLevel: finalTaskCountValidation.riskLevel
159
+ });
160
+ warnings.push(`Loaded ${actualTaskCount} tasks, which exceeds recommended limit of ${finalTaskCountValidation.maxAllowed}. ` +
161
+ `Estimated memory usage: ${finalTaskCountValidation.estimatedMemoryMB}MB (risk: ${finalTaskCountValidation.riskLevel}).`);
162
+ // For extremely large datasets, still enforce hard limits
163
+ if (actualTaskCount > finalTaskCountValidation.maxAllowed * 1.5) {
164
+ return {
165
+ isValid: false,
166
+ warnings,
167
+ shouldThrow: true,
168
+ riskLevel: finalTaskCountValidation.riskLevel,
169
+ estimatedMemoryMB: finalTaskCountValidation.estimatedMemoryMB
170
+ };
171
+ }
172
+ }
173
+ // Include warnings from enhanced validation
174
+ if (finalTaskCountValidation.warnings.length > 0) {
175
+ warnings.push(...finalTaskCountValidation.warnings);
176
+ }
177
+ return {
178
+ isValid: true,
179
+ warnings,
180
+ shouldThrow: false,
181
+ riskLevel: finalTaskCountValidation.riskLevel,
182
+ estimatedMemoryMB: finalTaskCountValidation.estimatedMemoryMB
183
+ };
184
+ },
185
+ /**
186
+ * Validates task listing arguments
187
+ */
188
+ validateTaskListingArgs(args) {
189
+ const errors = [];
190
+ // Validate numeric parameters
191
+ if (args.page !== undefined && (args.page < 1 || !Number.isInteger(args.page))) {
192
+ errors.push('Page number must be a positive integer');
193
+ }
194
+ if (args.perPage !== undefined && (args.perPage < 1 || !Number.isInteger(args.perPage))) {
195
+ errors.push('Per page count must be a positive integer');
196
+ }
197
+ if (args.projectId !== undefined && (args.projectId < 1 || !Number.isInteger(args.projectId))) {
198
+ errors.push('Project ID must be a positive integer');
199
+ }
200
+ // Validate boolean parameters
201
+ if (args.done !== undefined && typeof args.done !== 'boolean') {
202
+ errors.push('Done parameter must be a boolean value');
203
+ }
204
+ // Validate string parameters
205
+ if (args.search !== undefined && typeof args.search !== 'string') {
206
+ errors.push('Search parameter must be a string');
207
+ }
208
+ if (args.sort !== undefined && typeof args.sort !== 'string') {
209
+ errors.push('Sort parameter must be a string');
210
+ }
211
+ else if (args.sort !== undefined && args.sort.trim() !== '') {
212
+ const { normalized, invalidTokens } = normalizeAndValidateSort(args.sort);
213
+ if (invalidTokens.length > 0) {
214
+ errors.push(`Invalid sort field(s): ${invalidTokens.join(', ')}. Valid fields: ${constants_1.VALID_SORT_FIELDS.join(', ')} ` +
215
+ `(camelCase aliases also accepted: ${Object.keys(constants_1.SORT_FIELD_ALIASES).join(', ')})`);
216
+ }
217
+ else {
218
+ // Normalize in place so the corrected (snake_case) value is what
219
+ // actually reaches the API — validation runs before
220
+ // FilterExecutor.prepareQueryParameters reads args.sort.
221
+ args.sort = normalized;
222
+ }
223
+ }
224
+ if (args.filter !== undefined && typeof args.filter !== 'string') {
225
+ errors.push('Filter parameter must be a string');
226
+ }
227
+ if (args.filterId !== undefined && typeof args.filterId !== 'string') {
228
+ errors.push('Filter ID parameter must be a string');
229
+ }
230
+ return errors;
231
+ },
232
+ /**
233
+ * Performs comprehensive validation of task filtering parameters
234
+ */
235
+ async validateTaskFiltering(args, storage, _config = {}) {
236
+ const allWarnings = [];
237
+ // Validate basic arguments
238
+ const argValidationErrors = exports.FilterValidator.validateTaskListingArgs(args);
239
+ if (argValidationErrors.length > 0) {
240
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Invalid task listing arguments: ${argValidationErrors.join(', ')}`);
241
+ }
242
+ // Validate and parse filter
243
+ const filterValidation = await exports.FilterValidator.validateAndParseFilter(args, storage);
244
+ allWarnings.push(...filterValidation.validationWarnings);
245
+ // Validate memory constraints
246
+ const pageSize = args.perPage || 1000; // Default pagination
247
+ const memoryValidation = exports.FilterValidator.validateMemoryConstraints(args, pageSize);
248
+ allWarnings.push(...memoryValidation.warnings);
249
+ return {
250
+ filterExpression: filterValidation.filterExpression,
251
+ filterString: filterValidation.filterString,
252
+ validationWarnings: allWarnings,
253
+ memoryValidation
254
+ };
255
+ },
256
+ };
257
+ //# sourceMappingURL=FilterValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterValidator.js","sourceRoot":"","sources":["../../../../src/tools/tasks/filtering/FilterValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Task Filtering Orchestrator
3
+ * Main service that coordinates all filtering operations for tasks
4
+ */
5
+ import type { TaskListingArgs, TaskFilterExecutionResult } from '../types/filters';
6
+ import type { FilterValidationConfig } from '../../../types/filters';
7
+ import type { SimpleFilterStorage } from '../../../storage';
8
+ import type { AuthManager } from '../../../auth/AuthManager';
9
+ /**
10
+ * Main orchestrator for task filtering operations
11
+ * Coordinates validation, execution, and result processing
12
+ */
13
+ export declare const TaskFilteringOrchestrator: {
14
+ /**
15
+ * Executes the complete task filtering workflow
16
+ *
17
+ * @param args - Task listing arguments including filters
18
+ * @param storage - Storage interface for saved filters
19
+ * @param config - Optional validation configuration
20
+ * @param authManager - Active auth manager, required by cross-project
21
+ * listing's direct-REST GET /tasks strategy
22
+ * @returns Promise resolving to filtering result with metadata
23
+ */
24
+ executeTaskFiltering(args: TaskListingArgs, storage: SimpleFilterStorage, config?: FilterValidationConfig, authManager?: AuthManager): Promise<TaskFilterExecutionResult>;
25
+ /**
26
+ * Validates task filtering parameters without executing the filtering
27
+ * Useful for pre-validation or UI validation scenarios
28
+ */
29
+ validateTaskFiltering(args: TaskListingArgs, storage: SimpleFilterStorage, config?: FilterValidationConfig): Promise<{
30
+ isValid: boolean;
31
+ warnings: string[];
32
+ errors: string[];
33
+ memoryValidation: {
34
+ isValid: boolean;
35
+ warnings: string[];
36
+ maxAllowed?: number;
37
+ };
38
+ }>;
39
+ /**
40
+ * Prepares filtering context information for debugging and monitoring
41
+ */
42
+ createFilteringContext(args: TaskListingArgs, result: TaskFilterExecutionResult): {
43
+ input: {
44
+ hasFilter: boolean;
45
+ hasFilterId: boolean;
46
+ projectId?: number;
47
+ page?: number;
48
+ perPage?: number;
49
+ search?: string;
50
+ sort?: string;
51
+ };
52
+ output: {
53
+ taskCount: number;
54
+ serverSideFilteringUsed: boolean;
55
+ serverSideFilteringAttempted: boolean;
56
+ clientSideFiltering: boolean;
57
+ filteringNote: string;
58
+ memoryInfo?: {
59
+ actualCount: number;
60
+ maxAllowed: number;
61
+ estimatedMemoryMB: number;
62
+ };
63
+ };
64
+ performance: {
65
+ timestamp: string;
66
+ processingTimeMs?: number;
67
+ };
68
+ };
69
+ /**
70
+ * Analyzes filtering performance and provides recommendations
71
+ */
72
+ analyzeFilteringPerformance(args: TaskListingArgs, result: TaskFilterExecutionResult): {
73
+ isOptimal: boolean;
74
+ recommendations: string[];
75
+ issues: string[];
76
+ };
77
+ };
78
+ //# sourceMappingURL=TaskFilteringOrchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskFilteringOrchestrator.d.ts","sourceRoot":"","sources":["../../../../src/tools/tasks/filtering/TaskFilteringOrchestrator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAKrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;;GAGG;AACH,eAAO,MAAM,yBAAyB;IACpC;;;;;;;;;OASG;+BAEK,eAAe,WACZ,mBAAmB,WACpB,sBAAsB,gBAChB,WAAW,GACxB,OAAO,CAAC,yBAAyB,CAAC;IA2ErC;;;OAGG;gCAEK,eAAe,WACZ,mBAAmB,WACpB,sBAAsB,GAC7B,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,gBAAgB,EAAE;YAChB,OAAO,EAAE,OAAO,CAAC;YACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;YACnB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;KACH,CAAC;IA8BF;;OAEG;iCAEK,eAAe,UACb,yBAAyB,GAChC;QACD,KAAK,EAAE;YACL,SAAS,EAAE,OAAO,CAAC;YACnB,WAAW,EAAE,OAAO,CAAC;YACrB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,IAAI,CAAC,EAAE,MAAM,CAAC;SACf,CAAC;QACF,MAAM,EAAE;YACN,SAAS,EAAE,MAAM,CAAC;YAClB,uBAAuB,EAAE,OAAO,CAAC;YACjC,4BAA4B,EAAE,OAAO,CAAC;YACtC,mBAAmB,EAAE,OAAO,CAAC;YAC7B,aAAa,EAAE,MAAM,CAAC;YACtB,UAAU,CAAC,EAAE;gBACX,WAAW,EAAE,MAAM,CAAC;gBACpB,UAAU,EAAE,MAAM,CAAC;gBACnB,iBAAiB,EAAE,MAAM,CAAC;aAC3B,CAAC;SACH,CAAC;QACF,WAAW,EAAE;YACX,SAAS,EAAE,MAAM,CAAC;YAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;SAC3B,CAAC;KACH;IAmED;;OAEG;sCAEK,eAAe,UACb,yBAAyB,GAChC;QACD,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB;CAyCF,CAAC"}
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ /**
3
+ * Task Filtering Orchestrator
4
+ * Main service that coordinates all filtering operations for tasks
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.TaskFilteringOrchestrator = void 0;
8
+ const FilterValidator_1 = require("./FilterValidator");
9
+ const FilterExecutor_1 = require("./FilterExecutor");
10
+ const types_1 = require("../../../types");
11
+ const logger_1 = require("../../../utils/logger");
12
+ /**
13
+ * Main orchestrator for task filtering operations
14
+ * Coordinates validation, execution, and result processing
15
+ */
16
+ exports.TaskFilteringOrchestrator = {
17
+ /**
18
+ * Executes the complete task filtering workflow
19
+ *
20
+ * @param args - Task listing arguments including filters
21
+ * @param storage - Storage interface for saved filters
22
+ * @param config - Optional validation configuration
23
+ * @param authManager - Active auth manager, required by cross-project
24
+ * listing's direct-REST GET /tasks strategy
25
+ * @returns Promise resolving to filtering result with metadata
26
+ */
27
+ async executeTaskFiltering(args, storage, config = {}, authManager) {
28
+ try {
29
+ logger_1.logger.debug('Starting task filtering orchestration', {
30
+ hasFilter: !!args.filter,
31
+ hasFilterId: !!args.filterId,
32
+ projectId: args.projectId,
33
+ page: args.page,
34
+ perPage: args.perPage
35
+ });
36
+ // Step 1: Validate all inputs and parse filters
37
+ const validationResult = await FilterValidator_1.FilterValidator.validateTaskFiltering(args, storage, config);
38
+ // Log any validation warnings
39
+ if (validationResult.validationWarnings.length > 0) {
40
+ logger_1.logger.warn('Task filtering validation warnings', {
41
+ warnings: validationResult.validationWarnings
42
+ });
43
+ }
44
+ // Step 2: Prepare query parameters
45
+ const params = FilterExecutor_1.FilterExecutor.prepareQueryParameters(args);
46
+ // Step 3: Execute the filtering
47
+ const filteringResult = await FilterExecutor_1.FilterExecutor.executeFiltering(args, validationResult.filterExpression, validationResult.filterString, params, storage, authManager);
48
+ // Step 4: Post-process and validate results
49
+ const finalValidation = FilterValidator_1.FilterValidator.validateLoadedTasks(filteringResult.tasks.length);
50
+ if (finalValidation.warnings.length > 0) {
51
+ logger_1.logger.warn('Task filtering result warnings', {
52
+ warnings: finalValidation.warnings
53
+ });
54
+ }
55
+ if (finalValidation.shouldThrow) {
56
+ throw new types_1.MCPError(types_1.ErrorCode.INTERNAL_ERROR, `Task filtering result validation failed: ${finalValidation.warnings.join(', ')}`);
57
+ }
58
+ logger_1.logger.debug('Task filtering orchestration completed', {
59
+ taskCount: filteringResult.tasks.length,
60
+ serverSideFilteringUsed: filteringResult.metadata.serverSideFilteringUsed,
61
+ clientSideFiltering: filteringResult.metadata.clientSideFiltering
62
+ });
63
+ return filteringResult;
64
+ }
65
+ catch (error) {
66
+ if (error instanceof types_1.MCPError) {
67
+ throw error;
68
+ }
69
+ logger_1.logger.error('Task filtering orchestration failed', {
70
+ error: error instanceof Error ? error.message : String(error),
71
+ args: {
72
+ hasFilter: !!args.filter,
73
+ hasFilterId: !!args.filterId,
74
+ projectId: args.projectId
75
+ }
76
+ });
77
+ // Re-throw original error to be handled by main function
78
+ throw error;
79
+ }
80
+ },
81
+ /**
82
+ * Validates task filtering parameters without executing the filtering
83
+ * Useful for pre-validation or UI validation scenarios
84
+ */
85
+ async validateTaskFiltering(args, storage, config = {}) {
86
+ try {
87
+ const validationResult = await FilterValidator_1.FilterValidator.validateTaskFiltering(args, storage, config);
88
+ return {
89
+ isValid: true,
90
+ warnings: validationResult.validationWarnings,
91
+ errors: [],
92
+ memoryValidation: validationResult.memoryValidation
93
+ };
94
+ }
95
+ catch (error) {
96
+ if (error instanceof types_1.MCPError) {
97
+ return {
98
+ isValid: false,
99
+ warnings: [],
100
+ errors: [error.message],
101
+ memoryValidation: { isValid: false, warnings: [] }
102
+ };
103
+ }
104
+ return {
105
+ isValid: false,
106
+ warnings: [],
107
+ errors: [`Validation failed: ${error instanceof Error ? error.message : String(error)}`],
108
+ memoryValidation: { isValid: false, warnings: [] }
109
+ };
110
+ }
111
+ },
112
+ /**
113
+ * Prepares filtering context information for debugging and monitoring
114
+ */
115
+ createFilteringContext(args, result) {
116
+ // Build input object, only including defined properties to satisfy exactOptionalPropertyTypes
117
+ const input = {
118
+ hasFilter: !!args.filter,
119
+ hasFilterId: !!args.filterId,
120
+ };
121
+ if (args.projectId !== undefined) {
122
+ input.projectId = args.projectId;
123
+ }
124
+ if (args.page !== undefined) {
125
+ input.page = args.page;
126
+ }
127
+ if (args.perPage !== undefined) {
128
+ input.perPage = args.perPage;
129
+ }
130
+ if (args.search !== undefined) {
131
+ input.search = args.search;
132
+ }
133
+ if (args.sort !== undefined) {
134
+ input.sort = args.sort;
135
+ }
136
+ const output = {
137
+ taskCount: result.tasks?.length || 0,
138
+ serverSideFilteringUsed: result.metadata?.serverSideFilteringUsed || false,
139
+ serverSideFilteringAttempted: result.metadata?.serverSideFilteringAttempted || false,
140
+ clientSideFiltering: result.metadata?.clientSideFiltering || false,
141
+ filteringNote: result.metadata?.filteringNote || '',
142
+ };
143
+ if (result.memoryInfo !== undefined) {
144
+ output.memoryInfo = result.memoryInfo;
145
+ }
146
+ return {
147
+ input,
148
+ output,
149
+ performance: {
150
+ timestamp: new Date().toISOString()
151
+ }
152
+ };
153
+ },
154
+ /**
155
+ * Analyzes filtering performance and provides recommendations
156
+ */
157
+ analyzeFilteringPerformance(args, result) {
158
+ const recommendations = [];
159
+ const issues = [];
160
+ let isOptimal = true;
161
+ // Check for server-side filtering usage
162
+ if (args.filter && !result.metadata?.serverSideFilteringUsed) {
163
+ if (result.metadata?.serverSideFilteringAttempted) {
164
+ issues.push('Server-side filtering was attempted but failed, falling back to client-side');
165
+ recommendations.push('Consider simplifying the filter syntax for better server-side compatibility');
166
+ }
167
+ else {
168
+ recommendations.push('Consider enabling server-side filtering for better performance with large datasets');
169
+ }
170
+ isOptimal = false;
171
+ }
172
+ // Check page size efficiency
173
+ if (args.perPage && args.perPage > 500) {
174
+ issues.push('Large page size may impact performance');
175
+ recommendations.push('Consider using smaller page sizes (<= 500) for better performance');
176
+ isOptimal = false;
177
+ }
178
+ // Check memory usage
179
+ if (result.memoryInfo && result.memoryInfo.actualCount > result.memoryInfo.maxAllowed) {
180
+ issues.push('Task count exceeds recommended memory limits');
181
+ recommendations.push('Apply more specific filters or use pagination to reduce memory usage');
182
+ isOptimal = false;
183
+ }
184
+ // Check search efficiency
185
+ if (args.search && args.search.length < 3) {
186
+ recommendations.push('Search terms should be at least 3 characters for better results');
187
+ }
188
+ return {
189
+ isOptimal,
190
+ recommendations,
191
+ issues
192
+ };
193
+ },
194
+ };
195
+ //# sourceMappingURL=TaskFilteringOrchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskFilteringOrchestrator.js","sourceRoot":"","sources":["../../../../src/tools/tasks/filtering/TaskFilteringOrchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Filter evaluation functions for tasks
3
+ */
4
+ import type { components } from '../../../types/generated/vikunja-openapi';
5
+ import type { FilterCondition, FilterGroup, FilterExpression } from '../../../types/filters';
6
+ /** `models.Task` per the OpenAPI spec — the task shape filters evaluate against. */
7
+ type Task = components['schemas']['models.Task'];
8
+ /**
9
+ * Evaluates a filter condition against a task
10
+ */
11
+ export declare function evaluateCondition(task: Task, condition: FilterCondition): boolean;
12
+ /**
13
+ * Evaluates comparison operators
14
+ */
15
+ export declare function evaluateComparison(actual: unknown, operator: string, expected: unknown): boolean;
16
+ /**
17
+ * Evaluates date comparisons (supports relative dates like "now+7d")
18
+ */
19
+ export declare function evaluateDateComparison(actual: string, operator: string, expected: string): boolean;
20
+ /**
21
+ * Parses relative date strings (e.g., "now+7d", "now-1w")
22
+ */
23
+ export declare function parseRelativeDate(dateStr: string): Date | null;
24
+ /**
25
+ * Evaluates string comparisons
26
+ */
27
+ export declare function evaluateStringComparison(actual: string, operator: string, expected: string): boolean;
28
+ /**
29
+ * Evaluates array comparisons (for assignees and labels)
30
+ */
31
+ export declare function evaluateArrayComparison(actual: number[], operator: string, expected: number[]): boolean;
32
+ /**
33
+ * Evaluates a filter group against a task
34
+ */
35
+ export declare function evaluateGroup(task: Task, group: FilterGroup): boolean;
36
+ /**
37
+ * Applies a filter expression to a list of tasks
38
+ */
39
+ export declare function applyFilter(tasks: Task[], expression: FilterExpression): Task[];
40
+ export {};
41
+ //# sourceMappingURL=evaluators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluators.d.ts","sourceRoot":"","sources":["../../../../src/tools/tasks/filtering/evaluators.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE7F,oFAAoF;AACpF,KAAK,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC;AAEjD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CA4EjF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAiBhG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAuBlG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CA8C9D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAYpG;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAWvG;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAMrE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,gBAAgB,GAAG,IAAI,EAAE,CAU/E"}