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,136 @@
1
+ /**
2
+ * Task-specific filtering type definitions
3
+ * Extends the base filter types with task-specific functionality
4
+ */
5
+ import type { FilterExpression, SavedFilter, FilterValidationConfig } from '../../../types/filters';
6
+ import type { AorpBuilderConfig } from '../../../types';
7
+ import type { SimpleFilterStorage } from '../../../storage';
8
+ import type { AuthManager } from '../../../auth/AuthManager';
9
+ import type { VikunjaTask, TaskListApiParams } from '../../../utils/filtering/types';
10
+ /** `models.Task` per the OpenAPI spec. */
11
+ type Task = VikunjaTask;
12
+ /** Query params shared by the task-listing endpoints. */
13
+ type GetTasksParams = TaskListApiParams;
14
+ /**
15
+ * Arguments for filtering operations
16
+ */
17
+ export interface FilteringArgs {
18
+ projectId?: number;
19
+ page?: number;
20
+ perPage?: number;
21
+ search?: string;
22
+ sort?: string;
23
+ filter?: string;
24
+ filterId?: string;
25
+ allProjects?: boolean;
26
+ done?: boolean;
27
+ /** GET /tasks `order_by` param. Only honored for cross-project listing (direct REST). */
28
+ orderBy?: 'asc' | 'desc';
29
+ /** GET /tasks `filter_timezone` param. Only honored for cross-project listing (direct REST). */
30
+ filterTimezone?: string;
31
+ /** GET /tasks `filter_include_nulls` param. Only honored for cross-project listing (direct REST). */
32
+ filterIncludeNulls?: boolean;
33
+ /** GET /tasks `expand` param (repeatable). Only honored for cross-project listing (direct REST). */
34
+ expand?: string[];
35
+ }
36
+ /**
37
+ * Parameters passed to filtering strategies
38
+ */
39
+ export interface FilteringParams {
40
+ args: FilteringArgs;
41
+ filterExpression: FilterExpression | null;
42
+ filterString: string | undefined;
43
+ params: GetTasksParams;
44
+ /** See `utils/filtering/types.ts`'s `FilteringParams.authManager` doc comment. */
45
+ authManager?: AuthManager;
46
+ }
47
+ /**
48
+ * Metadata about the filtering operation performed
49
+ */
50
+ export interface FilteringMetadata {
51
+ serverSideFilteringUsed: boolean;
52
+ serverSideFilteringAttempted: boolean;
53
+ clientSideFiltering: boolean;
54
+ filteringNote: string;
55
+ }
56
+ /**
57
+ * Result of a filtering operation
58
+ */
59
+ export interface FilteringResult {
60
+ tasks: Task[];
61
+ metadata: FilteringMetadata;
62
+ }
63
+ /**
64
+ * Task listing arguments with filtering support
65
+ */
66
+ export interface TaskListingArgs extends FilteringArgs {
67
+ verbosity?: string;
68
+ useOptimizedFormat?: boolean;
69
+ useAorp?: boolean;
70
+ aorpConfig?: AorpBuilderConfig;
71
+ sessionId?: string;
72
+ }
73
+ /**
74
+ * Enhanced filtering parameters for task operations
75
+ */
76
+ export interface TaskFilteringParams extends FilteringParams {
77
+ args: TaskListingArgs;
78
+ }
79
+ /**
80
+ * Enhanced filtering result with task-specific metadata
81
+ */
82
+ export type TaskFilteringResult = FilteringResult;
83
+ /**
84
+ * Task filtering validation configuration
85
+ */
86
+ export interface TaskFilterValidationConfig extends FilterValidationConfig {
87
+ /** Enable memory usage validation */
88
+ enableMemoryValidation?: boolean;
89
+ /** Task count limit for validation */
90
+ maxTaskCount?: number;
91
+ }
92
+ /**
93
+ * Task filtering storage interface
94
+ */
95
+ export interface TaskFilterStorage {
96
+ list(): Promise<SavedFilter[]>;
97
+ get(id: string): Promise<SavedFilter | null>;
98
+ create(filter: Omit<SavedFilter, 'id' | 'created' | 'updated'>): Promise<SavedFilter>;
99
+ update(id: string, filter: Partial<Omit<SavedFilter, 'id' | 'created' | 'updated'>>): Promise<SavedFilter>;
100
+ delete(id: string): Promise<void>;
101
+ findByName(name: string): Promise<SavedFilter | null>;
102
+ }
103
+ /**
104
+ * Task filtering execution context
105
+ */
106
+ export interface TaskFilteringContext {
107
+ /** Vikunja API parameters */
108
+ params: GetTasksParams;
109
+ /** Filter expression if provided */
110
+ filterExpression: FilterExpression | null;
111
+ /** Raw filter string */
112
+ filterString: string | undefined;
113
+ /** Task listing arguments */
114
+ args: TaskListingArgs;
115
+ /** Storage interface for saved filters */
116
+ storage: SimpleFilterStorage;
117
+ }
118
+ /**
119
+ * Task filtering result with metadata
120
+ */
121
+ export interface TaskFilterExecutionResult {
122
+ /** Whether the filtering operation was successful */
123
+ success: boolean;
124
+ /** Filtered tasks */
125
+ tasks: Task[];
126
+ /** Filtering metadata */
127
+ metadata: FilteringMetadata;
128
+ /** Memory usage information */
129
+ memoryInfo?: {
130
+ actualCount: number;
131
+ maxAllowed: number;
132
+ estimatedMemoryMB: number;
133
+ };
134
+ }
135
+ export {};
136
+ //# sourceMappingURL=filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../../src/tools/tasks/types/filters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Task-specific filtering type definitions
4
+ * Extends the base filter types with task-specific functionality
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../../src/tools/tasks/types/filters.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Validation utilities for task operations
3
+ */
4
+ import type { components } from '../../types/generated/vikunja-openapi';
5
+ import { validateId as validateSharedId } from '../../utils/validation';
6
+ /** `models.Task` per the OpenAPI spec. */
7
+ type Task = components['schemas']['models.Task'];
8
+ /**
9
+ * Validates that a date string is in valid ISO 8601 format
10
+ */
11
+ export declare function validateDateString(date: string, fieldName: string): void;
12
+ /**
13
+ * Validates that an ID is a positive integer
14
+ * @deprecated Use validateSharedId from '../../../utils/validation' instead
15
+ */
16
+ export declare const validateId: typeof validateSharedId;
17
+ /**
18
+ * Convert repeat configuration from user-friendly format to Vikunja API format
19
+ *
20
+ * Vikunja API expects:
21
+ * - repeat_after: time in seconds
22
+ * - repeat_mode: 0 = default (use repeat_after), 1 = monthly, 2 = from current date
23
+ *
24
+ * We accept:
25
+ * - repeatAfter: number (interpreted based on repeatMode)
26
+ * - repeatMode: 'day' | 'week' | 'month' | 'year'
27
+ */
28
+ export declare function convertRepeatConfiguration(repeatAfter?: number, repeatMode?: 'day' | 'week' | 'month' | 'year'): {
29
+ repeat_after?: number;
30
+ repeat_mode?: number;
31
+ };
32
+ /**
33
+ * Process an array in batches
34
+ */
35
+ export declare function processBatches<T, R>(items: T[], batchSize: number, processor: (batch: T[]) => Promise<R[]>): Promise<R[]>;
36
+ /**
37
+ * Apply field update to a task object for bulk operations
38
+ * Maps field names to their corresponding task properties
39
+ *
40
+ * @param task - The task object to update (will be mutated)
41
+ * @param field - The field name to update (optional, will be checked)
42
+ * @param value - The new value
43
+ * @returns The same task object with the field applied
44
+ */
45
+ export declare function applyFieldUpdate(task: Task, field: string | undefined, value: unknown): Task;
46
+ export {};
47
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/tools/tasks/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAExE,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAExE,0CAA0C;AAC1C,KAAK,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC;AAEjD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAQxE;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,yBAAmB,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAC7C;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CA+BjD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,CAAC,EAAE,CAAC,EACvC,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,GACtC,OAAO,CAAC,CAAC,EAAE,CAAC,CAQd;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAyC5F"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ /**
3
+ * Validation utilities for task operations
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.validateId = void 0;
7
+ exports.validateDateString = validateDateString;
8
+ exports.convertRepeatConfiguration = convertRepeatConfiguration;
9
+ exports.processBatches = processBatches;
10
+ exports.applyFieldUpdate = applyFieldUpdate;
11
+ const types_1 = require("../../types");
12
+ const validation_1 = require("../../utils/validation");
13
+ /**
14
+ * Validates that a date string is in valid ISO 8601 format
15
+ */
16
+ function validateDateString(date, fieldName) {
17
+ const parsed = new Date(date);
18
+ if (isNaN(parsed.getTime())) {
19
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `${fieldName} must be a valid ISO 8601 date string (e.g., 2024-05-24T10:00:00Z)`);
20
+ }
21
+ }
22
+ /**
23
+ * Validates that an ID is a positive integer
24
+ * @deprecated Use validateSharedId from '../../../utils/validation' instead
25
+ */
26
+ exports.validateId = validation_1.validateId;
27
+ /**
28
+ * Convert repeat configuration from user-friendly format to Vikunja API format
29
+ *
30
+ * Vikunja API expects:
31
+ * - repeat_after: time in seconds
32
+ * - repeat_mode: 0 = default (use repeat_after), 1 = monthly, 2 = from current date
33
+ *
34
+ * We accept:
35
+ * - repeatAfter: number (interpreted based on repeatMode)
36
+ * - repeatMode: 'day' | 'week' | 'month' | 'year'
37
+ */
38
+ function convertRepeatConfiguration(repeatAfter, repeatMode) {
39
+ const result = {};
40
+ if (repeatMode === 'month') {
41
+ // For monthly repeat, use repeat_mode = 1 (ignores repeat_after)
42
+ result.repeat_mode = 1;
43
+ // Still set repeat_after for consistency, though it will be ignored
44
+ if (repeatAfter !== undefined) {
45
+ result.repeat_after = repeatAfter * 30 * 24 * 60 * 60; // Approximate month in seconds
46
+ }
47
+ }
48
+ else if (repeatAfter !== undefined) {
49
+ // For other modes, use repeat_mode = 0 and convert to seconds
50
+ result.repeat_mode = 0;
51
+ switch (repeatMode) {
52
+ case 'day':
53
+ result.repeat_after = repeatAfter * 24 * 60 * 60; // Days to seconds
54
+ break;
55
+ case 'week':
56
+ result.repeat_after = repeatAfter * 7 * 24 * 60 * 60; // Weeks to seconds
57
+ break;
58
+ case 'year':
59
+ result.repeat_after = repeatAfter * 365 * 24 * 60 * 60; // Years to seconds (approximate)
60
+ break;
61
+ default:
62
+ // If no mode specified, assume the value is already in seconds
63
+ result.repeat_after = repeatAfter;
64
+ }
65
+ }
66
+ return result;
67
+ }
68
+ /**
69
+ * Process an array in batches
70
+ */
71
+ async function processBatches(items, batchSize, processor) {
72
+ const results = [];
73
+ for (let i = 0; i < items.length; i += batchSize) {
74
+ const batch = items.slice(i, i + batchSize);
75
+ const batchResults = await processor(batch);
76
+ results.push(...batchResults);
77
+ }
78
+ return results;
79
+ }
80
+ /**
81
+ * Apply field update to a task object for bulk operations
82
+ * Maps field names to their corresponding task properties
83
+ *
84
+ * @param task - The task object to update (will be mutated)
85
+ * @param field - The field name to update (optional, will be checked)
86
+ * @param value - The new value
87
+ * @returns The same task object with the field applied
88
+ */
89
+ function applyFieldUpdate(task, field, value) {
90
+ if (!field)
91
+ return task;
92
+ switch (field) {
93
+ case 'done':
94
+ task.done = value;
95
+ break;
96
+ case 'priority':
97
+ task.priority = value;
98
+ break;
99
+ case 'due_date':
100
+ task.due_date = value;
101
+ break;
102
+ // Accept both snake_case (Vikunja API form) and camelCase (MCP schema form):
103
+ // bulk-update routes snake_case here, but per-task update may pass camelCase.
104
+ case 'start_date':
105
+ case 'startDate':
106
+ task.start_date = value;
107
+ break;
108
+ case 'end_date':
109
+ case 'endDate':
110
+ task.end_date = value;
111
+ break;
112
+ case 'project_id':
113
+ task.project_id = value;
114
+ break;
115
+ case 'repeat_after':
116
+ task.repeat_after = value;
117
+ break;
118
+ case 'repeat_mode':
119
+ task.repeat_mode = value;
120
+ break;
121
+ case 'assignees':
122
+ case 'labels':
123
+ // These are handled separately with special API calls
124
+ break;
125
+ default:
126
+ // Unknown field - leave task unchanged
127
+ break;
128
+ }
129
+ return task;
130
+ }
131
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/tools/tasks/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Task Relations Extensions
3
+ * Handles task relation operations for Vikunja
4
+ */
5
+ import { z } from 'zod';
6
+ import type { AuthManager } from '../auth/AuthManager';
7
+ export declare const relationSchema: {
8
+ otherTaskId: z.ZodOptional<z.ZodNumber>;
9
+ relationKind: z.ZodOptional<z.ZodEnum<["unknown", "subtask", "parenttask", "related", "duplicateof", "duplicates", "blocking", "blocked", "precedes", "follows", "copiedfrom", "copiedto"]>>;
10
+ };
11
+ export declare const relationSubcommands: string[];
12
+ interface RelationArgs {
13
+ subcommand: string;
14
+ id?: number | undefined;
15
+ otherTaskId?: number | undefined;
16
+ relationKind?: string | undefined;
17
+ }
18
+ export declare function handleRelationSubcommands(args: RelationArgs, authManager: AuthManager): Promise<{
19
+ content: Array<{
20
+ type: 'text';
21
+ text: string;
22
+ }>;
23
+ }>;
24
+ export {};
25
+ //# sourceMappingURL=tasks-relations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks-relations.d.ts","sourceRoot":"","sources":["../../src/tools/tasks-relations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AA0BvD,eAAO,MAAM,cAAc;;;CAmB1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAAsC,CAAC;AAEvE,UAAU,YAAY;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,YAAY,EAClB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA0Q7D"}
@@ -0,0 +1,271 @@
1
+ "use strict";
2
+ /**
3
+ * Task Relations Extensions
4
+ * Handles task relation operations for Vikunja
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.relationSubcommands = exports.relationSchema = void 0;
8
+ exports.handleRelationSubcommands = handleRelationSubcommands;
9
+ const zod_1 = require("zod");
10
+ const types_1 = require("../types");
11
+ const vikunja_rest_1 = require("../utils/vikunja-rest");
12
+ const task_rest_transport_1 = require("../utils/task-rest-transport");
13
+ const logger_1 = require("../utils/logger");
14
+ const validation_1 = require("../utils/validation");
15
+ const error_handler_1 = require("../utils/error-handler");
16
+ const response_factory_1 = require("../utils/response-factory");
17
+ // Use shared validateId from utils/validation
18
+ // Relation kind mapping - matches the legacy client RelationKind enum
19
+ const RELATION_KIND_MAP = {
20
+ unknown: 'unknown',
21
+ subtask: 'subtask',
22
+ parenttask: 'parenttask',
23
+ related: 'related',
24
+ duplicateof: 'duplicateof',
25
+ duplicates: 'duplicates',
26
+ blocking: 'blocking',
27
+ blocked: 'blocked',
28
+ precedes: 'precedes',
29
+ follows: 'follows',
30
+ copiedfrom: 'copiedfrom',
31
+ copiedto: 'copiedto',
32
+ };
33
+ exports.relationSchema = {
34
+ // Relation fields
35
+ otherTaskId: zod_1.z.number().optional(),
36
+ relationKind: zod_1.z
37
+ .enum([
38
+ 'unknown',
39
+ 'subtask',
40
+ 'parenttask',
41
+ 'related',
42
+ 'duplicateof',
43
+ 'duplicates',
44
+ 'blocking',
45
+ 'blocked',
46
+ 'precedes',
47
+ 'follows',
48
+ 'copiedfrom',
49
+ 'copiedto',
50
+ ])
51
+ .optional(),
52
+ };
53
+ exports.relationSubcommands = ['relate', 'unrelate', 'relations'];
54
+ async function handleRelationSubcommands(args, authManager) {
55
+ switch (args.subcommand) {
56
+ case 'relate': {
57
+ try {
58
+ if (!args.id) {
59
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'Task ID is required');
60
+ }
61
+ (0, validation_1.validateId)(args.id, 'Task ID');
62
+ if (!args.otherTaskId) {
63
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'Other task ID is required');
64
+ }
65
+ (0, validation_1.validateId)(args.otherTaskId, 'Other task ID');
66
+ if (!args.relationKind) {
67
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'Relation kind is required');
68
+ }
69
+ const relationKind = RELATION_KIND_MAP[args.relationKind];
70
+ if (!relationKind) {
71
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Invalid relation kind: ${args.relationKind}`);
72
+ }
73
+ // Create the relation via PUT /tasks/{taskID}/relations, body
74
+ // models.TaskRelation, per the OpenAPI spec.
75
+ await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'PUT', `/tasks/${args.id}/relations`, {
76
+ task_id: args.id,
77
+ other_task_id: args.otherTaskId,
78
+ relation_kind: relationKind,
79
+ });
80
+ // Fetch the updated task to show all relations via GET /tasks/{id}
81
+ // (direct-REST), kept only to refresh the response payload.
82
+ const updatedTask = await (0, task_rest_transport_1.getTaskViaRest)(authManager, args.id);
83
+ const response = {
84
+ success: true,
85
+ operation: 'relate',
86
+ message: `Successfully created ${args.relationKind} relation between task ${args.id} and task ${args.otherTaskId}`,
87
+ task: updatedTask,
88
+ metadata: {
89
+ timestamp: new Date().toISOString(),
90
+ affectedFields: ['related_tasks'],
91
+ },
92
+ };
93
+ logger_1.logger.debug('Task relation created', {
94
+ taskId: args.id,
95
+ otherTaskId: args.otherTaskId,
96
+ relationKind: args.relationKind,
97
+ });
98
+ // Convert StandardTaskResponse to proper AORP response before formatting
99
+ const aorpResponse = (0, response_factory_1.createStandardResponse)(response.operation || 'unknown', response.message || 'Operation completed',
100
+ // StandardTaskResponse carries the generated `models.Task` (all
101
+ // fields spec-optional); the response formatter's `ResponseData`
102
+ // wants the richer local `Task`. The formatter only reads fields
103
+ // defensively, so narrow via the parameter type.
104
+ response, response.metadata);
105
+ return {
106
+ content: [
107
+ {
108
+ type: 'text',
109
+ text: (0, response_factory_1.formatAorpAsMarkdown)(aorpResponse),
110
+ },
111
+ ],
112
+ };
113
+ }
114
+ catch (error) {
115
+ // This tool's own validation errors pass through unmodified; a
116
+ // REST-origin MCPError (e.g. the task-refresh GET failing) gets the
117
+ // conventional "Failed to ..." wrapping restored (see
118
+ // wrapIfRestOrigin's doc comment for why this distinction matters).
119
+ if (error instanceof types_1.MCPError) {
120
+ throw (0, error_handler_1.wrapIfRestOrigin)(error, 'create task relation');
121
+ }
122
+ throw (0, error_handler_1.handleStatusCodeError)(error, 'create task relation', `${args.id}-${args.otherTaskId}`);
123
+ }
124
+ }
125
+ case 'unrelate': {
126
+ try {
127
+ if (!args.id) {
128
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'Task ID is required');
129
+ }
130
+ (0, validation_1.validateId)(args.id, 'Task ID');
131
+ if (!args.otherTaskId) {
132
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'Other task ID is required');
133
+ }
134
+ (0, validation_1.validateId)(args.otherTaskId, 'Other task ID');
135
+ if (!args.relationKind) {
136
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'Relation kind is required');
137
+ }
138
+ const relationKind = RELATION_KIND_MAP[args.relationKind];
139
+ if (!relationKind) {
140
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Invalid relation kind: ${args.relationKind}`);
141
+ }
142
+ // Delete the relation via
143
+ // DELETE /tasks/{taskID}/relations/{relationKind}/{otherTaskID}. The
144
+ // spec also declares a required models.TaskRelation body for this
145
+ // endpoint (alongside the path params), so the full relation is sent
146
+ // rather than relying on the path segments alone.
147
+ await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'DELETE', `/tasks/${args.id}/relations/${relationKind}/${args.otherTaskId}`, {
148
+ task_id: args.id,
149
+ other_task_id: args.otherTaskId,
150
+ relation_kind: relationKind,
151
+ });
152
+ // Fetch the updated task to show remaining relations via
153
+ // GET /tasks/{id} (direct-REST) — see the matching comment in the
154
+ // 'relate' case above.
155
+ const updatedTask = await (0, task_rest_transport_1.getTaskViaRest)(authManager, args.id);
156
+ const response = {
157
+ success: true,
158
+ operation: 'unrelate',
159
+ message: `Successfully removed ${args.relationKind} relation between task ${args.id} and task ${args.otherTaskId}`,
160
+ task: updatedTask,
161
+ metadata: {
162
+ timestamp: new Date().toISOString(),
163
+ affectedFields: ['related_tasks'],
164
+ },
165
+ };
166
+ logger_1.logger.debug('Task relation removed', {
167
+ taskId: args.id,
168
+ otherTaskId: args.otherTaskId,
169
+ relationKind: args.relationKind,
170
+ });
171
+ // Convert StandardTaskResponse to proper AORP response before formatting
172
+ const aorpResponse = (0, response_factory_1.createStandardResponse)(response.operation || 'unknown', response.message || 'Operation completed',
173
+ // StandardTaskResponse carries the generated `models.Task` (all
174
+ // fields spec-optional); the response formatter's `ResponseData`
175
+ // wants the richer local `Task`. The formatter only reads fields
176
+ // defensively, so narrow via the parameter type.
177
+ response, response.metadata);
178
+ return {
179
+ content: [
180
+ {
181
+ type: 'text',
182
+ text: (0, response_factory_1.formatAorpAsMarkdown)(aorpResponse),
183
+ },
184
+ ],
185
+ };
186
+ }
187
+ catch (error) {
188
+ // This tool's own validation errors pass through unmodified; a
189
+ // REST-origin MCPError (e.g. the task-refresh GET failing) gets the
190
+ // conventional "Failed to ..." wrapping restored (see
191
+ // wrapIfRestOrigin's doc comment for why this distinction matters).
192
+ if (error instanceof types_1.MCPError) {
193
+ throw (0, error_handler_1.wrapIfRestOrigin)(error, 'remove task relation');
194
+ }
195
+ throw (0, error_handler_1.handleStatusCodeError)(error, 'remove task relation', `${args.id}-${args.otherTaskId}`);
196
+ }
197
+ }
198
+ case 'relations': {
199
+ try {
200
+ if (!args.id) {
201
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'Task ID is required');
202
+ }
203
+ (0, validation_1.validateId)(args.id, 'Task ID');
204
+ // Fetch the task with its relations via GET /tasks/{id} (direct-REST)
205
+ const task = await (0, task_rest_transport_1.getTaskViaRest)(authManager, args.id);
206
+ // Vikunja's API returns `related_tasks` as a map of relation kind to
207
+ // Task[] (models.RelatedTaskMap), not a flat array, so `.length` on it
208
+ // as a whole is undefined; iterate the map's entries to count.
209
+ const relatedTasksMap = (task.related_tasks ?? {});
210
+ const relationCounts = {};
211
+ let totalRelations = 0;
212
+ for (const [kind, kindTasks] of Object.entries(relatedTasksMap)) {
213
+ const count = Array.isArray(kindTasks) ? kindTasks.length : 0;
214
+ if (count > 0) {
215
+ relationCounts[kind] = count;
216
+ }
217
+ totalRelations += count;
218
+ }
219
+ const relationBreakdown = Object.entries(relationCounts)
220
+ .map(([kind, count]) => `${kind}: ${count}`)
221
+ .join(', ');
222
+ const relationsMessage = relationBreakdown
223
+ ? `Found ${totalRelations} relation(s) for task ${args.id} (${relationBreakdown})`
224
+ : `Found ${totalRelations} relation(s) for task ${args.id}`;
225
+ const response = {
226
+ success: true,
227
+ operation: 'relations',
228
+ message: relationsMessage,
229
+ task: task,
230
+ metadata: {
231
+ timestamp: new Date().toISOString(),
232
+ count: totalRelations,
233
+ },
234
+ };
235
+ logger_1.logger.debug('Task relations retrieved', {
236
+ taskId: args.id,
237
+ relationCount: totalRelations,
238
+ relationCounts,
239
+ });
240
+ // Convert StandardTaskResponse to proper AORP response before formatting
241
+ const aorpResponse = (0, response_factory_1.createStandardResponse)(response.operation || 'unknown', response.message || 'Operation completed',
242
+ // StandardTaskResponse carries the generated `models.Task` (all
243
+ // fields spec-optional); the response formatter's `ResponseData`
244
+ // wants the richer local `Task`. The formatter only reads fields
245
+ // defensively, so narrow via the parameter type.
246
+ response, response.metadata);
247
+ return {
248
+ content: [
249
+ {
250
+ type: 'text',
251
+ text: (0, response_factory_1.formatAorpAsMarkdown)(aorpResponse),
252
+ },
253
+ ],
254
+ };
255
+ }
256
+ catch (error) {
257
+ // This tool's own validation errors pass through unmodified; a
258
+ // REST-origin MCPError (e.g. the task-refresh GET failing) gets the
259
+ // conventional "Failed to ..." wrapping restored (see
260
+ // wrapIfRestOrigin's doc comment for why this distinction matters).
261
+ if (error instanceof types_1.MCPError) {
262
+ throw (0, error_handler_1.wrapIfRestOrigin)(error, 'get task relations');
263
+ }
264
+ throw (0, error_handler_1.handleStatusCodeError)(error, 'get task relations', args.id);
265
+ }
266
+ }
267
+ default:
268
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'Invalid relation subcommand');
269
+ }
270
+ }
271
+ //# sourceMappingURL=tasks-relations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks-relations.js","sourceRoot":"","sources":["../../src/tools/tasks-relations.ts"],"names":[],"mappings":"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"}