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 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/tasks/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Label operations for tasks
3
+ */
4
+ import type { AuthManager } from '../../auth/AuthManager';
5
+ /**
6
+ * Add labels to a task
7
+ *
8
+ * Idempotent: labels already on the task are skipped instead of aborting the
9
+ * whole operation. Vikunja rejects a duplicate label with "label already
10
+ * exists on the task"; treating that as fatal previously stopped the loop and
11
+ * left the remaining requested labels unapplied.
12
+ */
13
+ export declare function applyLabels(args: {
14
+ id?: number;
15
+ labels?: number[];
16
+ }, authManager: AuthManager): Promise<{
17
+ content: Array<{
18
+ type: 'text';
19
+ text: string;
20
+ }>;
21
+ }>;
22
+ /**
23
+ * Remove labels from a task
24
+ */
25
+ export declare function removeLabels(args: {
26
+ id?: number;
27
+ labels?: number[];
28
+ }, authManager: AuthManager): Promise<{
29
+ content: Array<{
30
+ type: 'text';
31
+ text: string;
32
+ }>;
33
+ }>;
34
+ /**
35
+ * List labels of a task
36
+ *
37
+ * Reads the labels from the dedicated GET /tasks/{id}/labels endpoint. The
38
+ * labels array embedded in a getTask response is not reliably populated, so
39
+ * relying on it reported zero labels on tasks that actually had some.
40
+ */
41
+ export declare function listTaskLabels(args: {
42
+ id?: number;
43
+ }, authManager: AuthManager): Promise<{
44
+ content: Array<{
45
+ type: 'text';
46
+ text: string;
47
+ }>;
48
+ }>;
49
+ //# sourceMappingURL=labels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../../src/tools/tasks/labels.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAuB1D;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE;IACJ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,EACD,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,CA+H7D;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE;IACJ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,EACD,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,CAoE7D;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE;IACJ,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,EACD,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,CAmD7D"}
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+ /**
3
+ * Label operations for tasks
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.applyLabels = applyLabels;
7
+ exports.removeLabels = removeLabels;
8
+ exports.listTaskLabels = listTaskLabels;
9
+ const types_1 = require("../../types");
10
+ const auth_error_handler_1 = require("../../utils/auth-error-handler");
11
+ const retry_1 = require("../../utils/retry");
12
+ const vikunja_rest_1 = require("../../utils/vikunja-rest");
13
+ const task_rest_transport_1 = require("../../utils/task-rest-transport");
14
+ const validation_1 = require("./validation");
15
+ const response_factory_1 = require("../../utils/response-factory");
16
+ /**
17
+ * Detects Vikunja's "label already exists on the task" response so that a
18
+ * duplicate label can be treated as a no-op rather than a fatal error.
19
+ */
20
+ function isLabelAlreadyOnTaskError(error) {
21
+ if (!(error instanceof Error)) {
22
+ return false;
23
+ }
24
+ return error.message.toLowerCase().includes('already exists');
25
+ }
26
+ /**
27
+ * Add labels to a task
28
+ *
29
+ * Idempotent: labels already on the task are skipped instead of aborting the
30
+ * whole operation. Vikunja rejects a duplicate label with "label already
31
+ * exists on the task"; treating that as fatal previously stopped the loop and
32
+ * left the remaining requested labels unapplied.
33
+ */
34
+ async function applyLabels(args, authManager) {
35
+ try {
36
+ if (!args.id) {
37
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'Task id is required for apply-label operation');
38
+ }
39
+ (0, validation_1.validateId)(args.id, 'id');
40
+ if (!args.labels || args.labels.length === 0) {
41
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'At least one label id is required');
42
+ }
43
+ // Validate label IDs
44
+ args.labels.forEach((id) => (0, validation_1.validateId)(id, 'label ID'));
45
+ const taskId = args.id;
46
+ // Deduplicate so a repeated id is not applied or counted twice
47
+ const requestedLabelIds = [...new Set(args.labels)];
48
+ // Skip labels already on the task: applying a duplicate makes Vikunja
49
+ // reject the request, so pre-filtering keeps the operation idempotent.
50
+ const alreadyPresent = [];
51
+ let toApply = requestedLabelIds;
52
+ try {
53
+ const currentLabels = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/tasks/${taskId}/labels`);
54
+ const existingIds = new Set((Array.isArray(currentLabels) ? currentLabels : [])
55
+ .map((label) => label.id)
56
+ .filter((id) => typeof id === 'number'));
57
+ toApply = requestedLabelIds.filter((id) => {
58
+ if (existingIds.has(id)) {
59
+ alreadyPresent.push(id);
60
+ return false;
61
+ }
62
+ return true;
63
+ });
64
+ }
65
+ catch {
66
+ // Current labels could not be read; attempt every requested label.
67
+ // A duplicate is still tolerated per-label below.
68
+ }
69
+ // Add the remaining labels to the task with retry logic. PUT
70
+ // /tasks/{task}/labels per the OpenAPI spec, body { label_id }
71
+ // (models.LabelTask).
72
+ const newlyApplied = [];
73
+ for (const labelId of toApply) {
74
+ try {
75
+ await (0, retry_1.withRetry)(() => (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'PUT', `/tasks/${taskId}/labels`, {
76
+ label_id: labelId,
77
+ }), {
78
+ ...retry_1.RETRY_CONFIG.AUTH_ERRORS,
79
+ shouldRetry: (error) => (0, auth_error_handler_1.isAuthenticationError)(error),
80
+ });
81
+ newlyApplied.push(labelId);
82
+ }
83
+ catch (labelError) {
84
+ // Check if it's an auth error after retries
85
+ if ((0, auth_error_handler_1.isAuthenticationError)(labelError)) {
86
+ throw new types_1.MCPError(types_1.ErrorCode.API_ERROR, `Failed to apply label to task (Retried ${retry_1.RETRY_CONFIG.AUTH_ERRORS.maxRetries} times)`);
87
+ }
88
+ // A label already on the task is not a failure: skip it and keep
89
+ // applying the rest instead of aborting the whole operation.
90
+ if (isLabelAlreadyOnTaskError(labelError)) {
91
+ alreadyPresent.push(labelId);
92
+ continue;
93
+ }
94
+ throw labelError;
95
+ }
96
+ }
97
+ // Fetch the updated task to show current labels via GET /tasks/{id}
98
+ // (direct-REST), kept only to refresh the response payload.
99
+ const task = await (0, task_rest_transport_1.getTaskViaRest)(authManager, taskId);
100
+ let message;
101
+ if (newlyApplied.length > 0) {
102
+ message = `Label${newlyApplied.length > 1 ? 's' : ''} applied to task successfully`;
103
+ if (alreadyPresent.length > 0) {
104
+ message += ` (${alreadyPresent.length} already present, skipped)`;
105
+ }
106
+ }
107
+ else {
108
+ message = `No labels applied: all ${alreadyPresent.length} requested label(s) already present on the task`;
109
+ }
110
+ const response = (0, response_factory_1.createSimpleResponse)('apply-label', message, { task }, {
111
+ metadata: {
112
+ affectedFields: ['labels'],
113
+ labelsApplied: newlyApplied,
114
+ labelsAlreadyPresent: alreadyPresent,
115
+ },
116
+ });
117
+ return {
118
+ content: [
119
+ {
120
+ type: 'text',
121
+ text: (0, response_factory_1.formatAorpAsMarkdown)(response),
122
+ },
123
+ ],
124
+ };
125
+ }
126
+ catch (error) {
127
+ if (error instanceof types_1.MCPError) {
128
+ throw error;
129
+ }
130
+ throw new types_1.MCPError(types_1.ErrorCode.API_ERROR, `Failed to apply labels to task: ${error instanceof Error ? error.message : String(error)}`);
131
+ }
132
+ }
133
+ /**
134
+ * Remove labels from a task
135
+ */
136
+ async function removeLabels(args, authManager) {
137
+ try {
138
+ if (!args.id) {
139
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'Task id is required for remove-label operation');
140
+ }
141
+ (0, validation_1.validateId)(args.id, 'id');
142
+ if (!args.labels || args.labels.length === 0) {
143
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'At least one label id is required to remove');
144
+ }
145
+ // Validate label IDs
146
+ args.labels.forEach((id) => (0, validation_1.validateId)(id, 'label ID'));
147
+ const taskId = args.id;
148
+ const labelIds = args.labels;
149
+ // Remove labels from the task with retry logic. DELETE
150
+ // /tasks/{task}/labels/{label} per the OpenAPI spec — no body.
151
+ for (const labelId of labelIds) {
152
+ try {
153
+ await (0, retry_1.withRetry)(() => (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'DELETE', `/tasks/${taskId}/labels/${labelId}`), {
154
+ ...retry_1.RETRY_CONFIG.AUTH_ERRORS,
155
+ shouldRetry: (error) => (0, auth_error_handler_1.isAuthenticationError)(error),
156
+ });
157
+ }
158
+ catch (removeError) {
159
+ // Check if it's an auth error after retries
160
+ if ((0, auth_error_handler_1.isAuthenticationError)(removeError)) {
161
+ throw new types_1.MCPError(types_1.ErrorCode.API_ERROR, `Failed to remove label from task (Retried ${retry_1.RETRY_CONFIG.AUTH_ERRORS.maxRetries} times)`);
162
+ }
163
+ throw removeError;
164
+ }
165
+ }
166
+ // Fetch the updated task to show current labels via GET /tasks/{id}
167
+ // (direct-REST) — see the matching comment in applyLabels above.
168
+ const task = await (0, task_rest_transport_1.getTaskViaRest)(authManager, args.id);
169
+ const response = (0, response_factory_1.createSimpleResponse)('remove-label', `Label${labelIds.length > 1 ? 's' : ''} removed from task successfully`, { task }, { metadata: { affectedFields: ['labels'] } });
170
+ return {
171
+ content: [
172
+ {
173
+ type: 'text',
174
+ text: (0, response_factory_1.formatAorpAsMarkdown)(response),
175
+ },
176
+ ],
177
+ };
178
+ }
179
+ catch (error) {
180
+ throw new types_1.MCPError(types_1.ErrorCode.API_ERROR, `Failed to remove labels from task: ${error instanceof Error ? error.message : String(error)}`);
181
+ }
182
+ }
183
+ /**
184
+ * List labels of a task
185
+ *
186
+ * Reads the labels from the dedicated GET /tasks/{id}/labels endpoint. The
187
+ * labels array embedded in a getTask response is not reliably populated, so
188
+ * relying on it reported zero labels on tasks that actually had some.
189
+ */
190
+ async function listTaskLabels(args, authManager) {
191
+ try {
192
+ if (args.id === undefined) {
193
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'Task id is required for list-labels operation');
194
+ }
195
+ (0, validation_1.validateId)(args.id, 'id');
196
+ // Authoritative source for a task's labels
197
+ const taskLabels = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/tasks/${args.id}/labels`);
198
+ const labels = Array.isArray(taskLabels) ? taskLabels : [];
199
+ // Fetch the task itself only for its identifying fields via GET /tasks/{id}
200
+ // (direct-REST) — see the matching comment in applyLabels above.
201
+ const task = await (0, task_rest_transport_1.getTaskViaRest)(authManager, args.id);
202
+ const minimalTask = {
203
+ ...(task.id !== undefined && { id: task.id }),
204
+ title: task.title ?? '',
205
+ };
206
+ const response = (0, response_factory_1.createSimpleResponse)('list-labels', `Task has ${labels.length} label(s)`, { task: { ...minimalTask, labels: labels } }, { metadata: { count: labels.length } });
207
+ return {
208
+ content: [
209
+ {
210
+ type: 'text',
211
+ text: (0, response_factory_1.formatAorpAsMarkdown)(response),
212
+ },
213
+ ],
214
+ };
215
+ }
216
+ catch (error) {
217
+ if (error instanceof types_1.MCPError) {
218
+ throw error;
219
+ }
220
+ throw new types_1.MCPError(types_1.ErrorCode.API_ERROR, `Failed to list task labels: ${error instanceof Error ? error.message : String(error)}`);
221
+ }
222
+ }
223
+ //# sourceMappingURL=labels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.js","sourceRoot":"","sources":["../../../src/tools/tasks/labels.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Mark a task as read
3
+ *
4
+ * Implements `mark-read` (`POST /tasks/{projecttask}/read`), which marks a
5
+ * task as read for the current user by removing its unread status entry —
6
+ * pairs with the task's `is_unread` field (see docs/ENDPOINT-TAIL-RETRIAGE.md
7
+ * item G2). The spec's path parameter is oddly named `projecttask` (not
8
+ * `taskID`, unlike every other task-scoped path in this file group) but it
9
+ * is still just the task id.
10
+ */
11
+ import type { AuthManager } from '../../auth/AuthManager';
12
+ export interface MarkTaskReadArgs {
13
+ /** Id of the task to mark as read. */
14
+ id?: number;
15
+ /** Session id for response tracking. */
16
+ sessionId?: string;
17
+ }
18
+ /**
19
+ * Marks a task as read for the current user.
20
+ */
21
+ export declare function markTaskRead(args: MarkTaskReadArgs, authManager: AuthManager): Promise<{
22
+ content: Array<{
23
+ type: 'text';
24
+ text: string;
25
+ }>;
26
+ }>;
27
+ //# sourceMappingURL=mark-read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mark-read.d.ts","sourceRoot":"","sources":["../../../src/tools/tasks/mark-read.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAU1D,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,gBAAgB,EACtB,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,CA6B7D"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /**
3
+ * Mark a task as read
4
+ *
5
+ * Implements `mark-read` (`POST /tasks/{projecttask}/read`), which marks a
6
+ * task as read for the current user by removing its unread status entry —
7
+ * pairs with the task's `is_unread` field (see docs/ENDPOINT-TAIL-RETRIAGE.md
8
+ * item G2). The spec's path parameter is oddly named `projecttask` (not
9
+ * `taskID`, unlike every other task-scoped path in this file group) but it
10
+ * is still just the task id.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.markTaskRead = markTaskRead;
14
+ const types_1 = require("../../types");
15
+ const validation_1 = require("../../utils/validation");
16
+ const response_factory_1 = require("../../utils/response-factory");
17
+ const vikunja_rest_1 = require("../../utils/vikunja-rest");
18
+ /**
19
+ * Marks a task as read for the current user.
20
+ */
21
+ async function markTaskRead(args, authManager) {
22
+ if (!args.id) {
23
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'Task id is required for mark-read operation');
24
+ }
25
+ (0, validation_1.validateId)(args.id, 'id');
26
+ // Path segment is named `projecttask` in the spec; it takes the task id.
27
+ const result = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'POST', `/tasks/${args.id}/read`);
28
+ const response = (0, response_factory_1.createStandardResponse)('mark-read', `Task ${args.id} marked as read`, {
29
+ taskId: result?.taskID ?? args.id,
30
+ userId: result?.userID,
31
+ }, {
32
+ timestamp: new Date().toISOString(),
33
+ }, args.sessionId);
34
+ return {
35
+ content: [{ type: 'text', text: (0, response_factory_1.formatAorpAsMarkdown)(response) }],
36
+ };
37
+ }
38
+ //# sourceMappingURL=mark-read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mark-read.js","sourceRoot":"","sources":["../../../src/tools/tasks/mark-read.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAsBH,oCAgCC;AAnDD,uCAAkD;AAClD,uDAAoD;AACpD,mEAA4F;AAC5F,2DAA8D;AAa9D;;GAEG;AACI,KAAK,UAAU,YAAY,CAChC,IAAsB,EACtB,WAAwB;IAExB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,MAAM,IAAI,gBAAQ,CAAC,iBAAS,CAAC,gBAAgB,EAAE,6CAA6C,CAAC,CAAC;IAChG,CAAC;IACD,IAAA,uBAAU,EAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAE1B,yEAAyE;IACzE,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAkB,EACrC,WAAW,EACX,MAAM,EACN,UAAU,IAAI,CAAC,EAAE,OAAO,CACzB,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAA,yCAAsB,EACrC,WAAW,EACX,QAAQ,IAAI,CAAC,EAAE,iBAAiB,EAChC;QACE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,EAAE;QACjC,MAAM,EAAE,MAAM,EAAE,MAAM;KACvB,EACD;QACE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAA,uCAAoB,EAAC,QAAQ,CAAC,EAAE,CAAC;KAC3E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Task position operations
3
+ *
4
+ * Implements `set-position`, which updates a task's ordering within a
5
+ * project view (`POST /tasks/{id}/position`, `models.TaskPosition`). This
6
+ * is the operation behind "move this task above/below that one" or "put
7
+ * this task first in the list view" — Vikunja stores task order per-view,
8
+ * as a float64 `position` value (see `models.TaskPosition`'s doc comment in
9
+ * docs/vikunja-openapi.json for the recommended
10
+ * `(neighbourA.position - neighbourB.position) / 2` midpoint technique for
11
+ * inserting between two existing positions).
12
+ *
13
+ * legacy client does not expose this endpoint, so this calls the Vikunja
14
+ * REST API directly via the shared `vikunja-rest` helper.
15
+ */
16
+ import type { AuthManager } from '../../auth/AuthManager';
17
+ export interface SetTaskPositionArgs {
18
+ /** Id of the task to reposition. */
19
+ id?: number;
20
+ /** New position value (float64 — see the module doc comment). */
21
+ position?: number;
22
+ /** Optional project view id. Auto-resolved from the project + viewKind when omitted. */
23
+ projectViewId?: number;
24
+ /** Optional project id. Auto-resolved from the task when omitted. */
25
+ projectId?: number;
26
+ /**
27
+ * Kind of view to resolve `projectViewId` against when it is omitted.
28
+ * Defaults to `list`, since task position ordering is most commonly a
29
+ * list-view concept (Kanban ordering is handled by `set-bucket`).
30
+ */
31
+ viewKind?: 'list' | 'gantt' | 'table' | 'kanban';
32
+ /** Session id for response tracking. */
33
+ sessionId?: string;
34
+ }
35
+ /**
36
+ * Updates a task's position within a project view.
37
+ *
38
+ * Resolution order when optional ids are omitted:
39
+ * - projectId: fetched from the task itself
40
+ * - projectViewId: resolved to the project's first view of `viewKind`
41
+ * (default `list`)
42
+ *
43
+ * @param args - Task id, new position, and optional view/project ids
44
+ * @param authManager - Active auth manager holding session credentials
45
+ * @returns MCP response describing the reposition
46
+ */
47
+ export declare function setTaskPosition(args: SetTaskPositionArgs, authManager: AuthManager): Promise<{
48
+ content: Array<{
49
+ type: 'text';
50
+ text: string;
51
+ }>;
52
+ }>;
53
+ //# sourceMappingURL=position.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/tools/tasks/position.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAM1D,MAAM,WAAW,mBAAmB;IAClC,oCAAoC;IACpC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IACjD,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,mBAAmB,EACzB,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,CAwE7D"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ /**
3
+ * Task position operations
4
+ *
5
+ * Implements `set-position`, which updates a task's ordering within a
6
+ * project view (`POST /tasks/{id}/position`, `models.TaskPosition`). This
7
+ * is the operation behind "move this task above/below that one" or "put
8
+ * this task first in the list view" — Vikunja stores task order per-view,
9
+ * as a float64 `position` value (see `models.TaskPosition`'s doc comment in
10
+ * docs/vikunja-openapi.json for the recommended
11
+ * `(neighbourA.position - neighbourB.position) / 2` midpoint technique for
12
+ * inserting between two existing positions).
13
+ *
14
+ * legacy client does not expose this endpoint, so this calls the Vikunja
15
+ * REST API directly via the shared `vikunja-rest` helper.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.setTaskPosition = setTaskPosition;
19
+ const types_1 = require("../../types");
20
+ const validation_1 = require("../../utils/validation");
21
+ const response_factory_1 = require("../../utils/response-factory");
22
+ const vikunja_rest_1 = require("../../utils/vikunja-rest");
23
+ /**
24
+ * Updates a task's position within a project view.
25
+ *
26
+ * Resolution order when optional ids are omitted:
27
+ * - projectId: fetched from the task itself
28
+ * - projectViewId: resolved to the project's first view of `viewKind`
29
+ * (default `list`)
30
+ *
31
+ * @param args - Task id, new position, and optional view/project ids
32
+ * @param authManager - Active auth manager holding session credentials
33
+ * @returns MCP response describing the reposition
34
+ */
35
+ async function setTaskPosition(args, authManager) {
36
+ if (!args.id) {
37
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'Task id is required for set-position operation');
38
+ }
39
+ if (args.position === undefined || args.position === null) {
40
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'position is required for set-position operation');
41
+ }
42
+ (0, validation_1.validateId)(args.id, 'id');
43
+ if (args.projectViewId !== undefined)
44
+ (0, validation_1.validateId)(args.projectViewId, 'projectViewId');
45
+ if (args.projectId !== undefined)
46
+ (0, validation_1.validateId)(args.projectId, 'projectId');
47
+ // Resolve the project id from the task when the caller did not supply it.
48
+ let projectId = args.projectId;
49
+ if (projectId === undefined) {
50
+ const task = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/tasks/${args.id}`);
51
+ if (!task || typeof task.project_id !== 'number') {
52
+ throw new types_1.MCPError(types_1.ErrorCode.NOT_FOUND, `Could not resolve the project of task ${args.id}`);
53
+ }
54
+ projectId = task.project_id;
55
+ }
56
+ // Resolve the project view id when the caller did not supply it.
57
+ const viewKind = args.viewKind ?? 'list';
58
+ const projectViewId = args.projectViewId !== undefined
59
+ ? args.projectViewId
60
+ : (await (0, vikunja_rest_1.resolveViewIdByKind)(authManager, projectId, viewKind)).id;
61
+ // Update the position. Vikunja's endpoint takes the full TaskPosition
62
+ // model; task_id is also part of the URL but is sent in the body too, as
63
+ // the API model documents it as a body field.
64
+ await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'POST', `/tasks/${args.id}/position`, { task_id: args.id, project_view_id: projectViewId, position: args.position });
65
+ const response = (0, response_factory_1.createStandardResponse)('set-task-position', `Task ${args.id} repositioned to ${args.position} in view ${projectViewId}`, {
66
+ taskId: args.id,
67
+ position: args.position,
68
+ projectViewId,
69
+ projectId,
70
+ }, {
71
+ timestamp: new Date().toISOString(),
72
+ affectedFields: ['position'],
73
+ }, args.sessionId);
74
+ return {
75
+ content: [
76
+ {
77
+ type: 'text',
78
+ text: (0, response_factory_1.formatAorpAsMarkdown)(response),
79
+ },
80
+ ],
81
+ };
82
+ }
83
+ //# sourceMappingURL=position.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position.js","sourceRoot":"","sources":["../../../src/tools/tasks/position.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;AA6CH,0CA2EC;AArHD,uCAAkD;AAClD,uDAAoD;AACpD,mEAA4F;AAC5F,2DAAmF;AA2BnF;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,eAAe,CACnC,IAAyB,EACzB,WAAwB;IAExB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,MAAM,IAAI,gBAAQ,CAAC,iBAAS,CAAC,gBAAgB,EAAE,gDAAgD,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,IAAI,gBAAQ,CAChB,iBAAS,CAAC,gBAAgB,EAC1B,iDAAiD,CAClD,CAAC;IACJ,CAAC;IACD,IAAA,uBAAU,EAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1B,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;QAAE,IAAA,uBAAU,EAAC,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;IACtF,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;QAAE,IAAA,uBAAU,EAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAE1E,0EAA0E;IAC1E,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAC/B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,IAAA,iCAAkB,EACnC,WAAW,EACX,KAAK,EACL,UAAU,IAAI,CAAC,EAAE,EAAE,CACpB,CAAC;QACF,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACjD,MAAM,IAAI,gBAAQ,CAChB,iBAAS,CAAC,SAAS,EACnB,yCAAyC,IAAI,CAAC,EAAE,EAAE,CACnD,CAAC;QACJ,CAAC;QACD,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;IAC9B,CAAC;IAED,iEAAiE;IACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC;IACzC,MAAM,aAAa,GACjB,IAAI,CAAC,aAAa,KAAK,SAAS;QAC9B,CAAC,CAAC,IAAI,CAAC,aAAa;QACpB,CAAC,CAAC,CAAC,MAAM,IAAA,kCAAmB,EAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvE,sEAAsE;IACtE,yEAAyE;IACzE,8CAA8C;IAC9C,MAAM,IAAA,iCAAkB,EACtB,WAAW,EACX,MAAM,EACN,UAAU,IAAI,CAAC,EAAE,WAAW,EAC5B,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC9E,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAA,yCAAsB,EACrC,mBAAmB,EACnB,QAAQ,IAAI,CAAC,EAAE,oBAAoB,IAAI,CAAC,QAAQ,YAAY,aAAa,EAAE,EAC3E;QACE,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,aAAa;QACb,SAAS;KACV,EACD;QACE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,cAAc,EAAE,CAAC,UAAU,CAAC;KAC7B,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IAEF,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAA,uCAAoB,EAAC,QAAQ,CAAC;aACrC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Reminder operations for tasks
3
+ *
4
+ * Reminders have no dedicated Vikunja sub-resource endpoint — they "ride on"
5
+ * the full task-update endpoint (`POST /tasks/{id}`, a full-model-replace).
6
+ * These operations therefore fetch the task, merge the `reminders` array,
7
+ * and POST the whole task back via the shared
8
+ * `src/utils/task-rest-transport.ts` helper, rather than the legacy client's
9
+ * `getTask`/`updateTask` (see that file's doc comment for why this is a
10
+ * standalone helper instead of a change to `TaskUpdateService.ts`).
11
+ */
12
+ import type { AuthManager } from '../../auth/AuthManager';
13
+ /**
14
+ * Add a reminder to a task
15
+ */
16
+ export declare function addReminder(args: {
17
+ id?: number;
18
+ reminderDate?: string;
19
+ }, authManager: AuthManager): Promise<{
20
+ content: Array<{
21
+ type: 'text';
22
+ text: string;
23
+ }>;
24
+ }>;
25
+ /**
26
+ * Remove a reminder from a task.
27
+ *
28
+ * Vikunja's API (models.TaskReminder) has no `id` field, so reminders cannot
29
+ * be identified the way `remove-reminder` used to (filtering by a nonexistent
30
+ * `reminder.id`, which always threw "not found" against a real server).
31
+ * Callers must instead identify the reminder to remove by its exact
32
+ * `reminder` date string (as shown by `list-reminders`) and/or its
33
+ * zero-based positional `reminderIndex` in that same listing.
34
+ */
35
+ export declare function removeReminder(args: {
36
+ id?: number | undefined;
37
+ reminderDate?: string | undefined;
38
+ reminderIndex?: number | undefined;
39
+ }, authManager: AuthManager): Promise<{
40
+ content: Array<{
41
+ type: 'text';
42
+ text: string;
43
+ }>;
44
+ }>;
45
+ /**
46
+ * List all reminders for a task
47
+ */
48
+ export declare function listReminders(args: {
49
+ id?: number;
50
+ }, authManager: AuthManager): Promise<{
51
+ content: Array<{
52
+ type: 'text';
53
+ text: string;
54
+ }>;
55
+ }>;
56
+ //# sourceMappingURL=reminders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reminders.d.ts","sourceRoot":"","sources":["../../../src/tools/tasks/reminders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAK1D;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE;IACJ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,EACD,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,CAoE7D;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE;IACJ,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,EACD,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,CAmH7D;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE;IACJ,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,EACD,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,CA0D7D"}