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,99 @@
1
+ import type { ImportedTask } from '../parsers/InputParserFactory';
2
+ import type { EntityResolutionResult } from './EntityResolver';
3
+ import type { AuthManager } from '../auth/AuthManager';
4
+ /**
5
+ * Result of a task creation operation
6
+ */
7
+ export interface TaskCreationResult {
8
+ success: boolean;
9
+ taskId?: number;
10
+ title: string;
11
+ error?: string;
12
+ warnings?: string[];
13
+ }
14
+ /**
15
+ * Service responsible for creating individual tasks with all associated entities
16
+ * Handles complex API interactions, error handling, and field transformations
17
+ */
18
+ export declare class TaskCreationService {
19
+ /**
20
+ * Creates a single task with all associated labels, assignees, and other properties
21
+ *
22
+ * @param task - The task data to create
23
+ * @param projectId - The project ID to create the task in
24
+ * @param authManager - Active auth manager holding the session credentials,
25
+ * used for every direct-REST call this service makes
26
+ * @param entityMaps - Resolved entity mappings for labels and users
27
+ * @param catchErrors - Whether to catch errors and return them in TaskCreationResult (default: true)
28
+ * @returns Promise<TaskCreationResult> - Result of the task creation operation
29
+ */
30
+ createTask(task: ImportedTask, projectId: number, authManager: AuthManager, entityMaps: EntityResolutionResult, catchErrors?: boolean): Promise<TaskCreationResult>;
31
+ /**
32
+ * Prepares task data for API submission
33
+ *
34
+ * @param task - The imported task
35
+ * @param projectId - The target project ID
36
+ * @returns Formatted task data for the API
37
+ */
38
+ private prepareTaskData;
39
+ /**
40
+ * Creates the base task in Vikunja via `PUT /projects/{id}/tasks`
41
+ * (direct-REST; see docs/ENDPOINT-PLAYBOOK.md §3 — legacy client is
42
+ * end-of-life for this project).
43
+ *
44
+ * @param authManager - Active auth manager holding session credentials
45
+ * @param taskData - Prepared task data
46
+ * @param taskTitle - Task title for error reporting
47
+ * @returns Created task
48
+ * @throws MCPError if creation fails or authentication error occurs
49
+ */
50
+ private createBaseTask;
51
+ /**
52
+ * Handles label assignment for a created task
53
+ *
54
+ * @param authManager - Active auth manager holding the session credentials
55
+ * @param createdTask - The task that was created
56
+ * @param task - Original task data with labels
57
+ * @param labelMap - Mapping of label names to IDs
58
+ * @returns Array of warnings from label assignment
59
+ */
60
+ private handleLabelAssignment;
61
+ /**
62
+ * Verifies that labels were actually assigned to a task
63
+ *
64
+ * @param authManager - Active auth manager holding the session credentials
65
+ * @param taskId - The task ID to verify
66
+ * @param expectedLabelIds - Labels that should be assigned
67
+ * @returns True if labels are actually assigned, false otherwise
68
+ */
69
+ private verifyLabelAssignment;
70
+ /**
71
+ * Handles errors during label assignment
72
+ *
73
+ * @param labelError - The error that occurred
74
+ * @param taskId - The task ID
75
+ * @param labelNames - The label names that were being assigned
76
+ * @returns Warning message
77
+ */
78
+ private handleLabelAssignmentError;
79
+ /**
80
+ * Handles user assignment for a created task
81
+ *
82
+ * @param authManager - Active auth manager holding the session credentials
83
+ * @param createdTask - The task that was created
84
+ * @param task - Original task data with assignees
85
+ * @param userMap - Mapping of usernames to IDs
86
+ * @param projectUsers - List of available project users
87
+ * @returns Array of warnings from user assignment
88
+ */
89
+ private handleUserAssignment;
90
+ /**
91
+ * Handles reminders for a task (API limitation)
92
+ *
93
+ * @param taskId - The task ID
94
+ * @param reminders - Array of reminder data
95
+ * @returns Warning message about API limitation
96
+ */
97
+ private handleReminders;
98
+ }
99
+ //# sourceMappingURL=TaskCreationService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskCreationService.d.ts","sourceRoot":"","sources":["../../src/services/TaskCreationService.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAmFvD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B;;;;;;;;;;OAUG;IACG,UAAU,CACd,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,sBAAsB,EAClC,WAAW,GAAE,OAAc,GAC1B,OAAO,CAAC,kBAAkB,CAAC;IA2D9B;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAmCvB;;;;;;;;;;OAUG;YACW,cAAc;IA+C5B;;;;;;;;OAQG;YACW,qBAAqB;IAkEnC;;;;;;;OAOG;YACW,qBAAqB;IAsBnC;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IAmBlC;;;;;;;;;OASG;YACW,oBAAoB;IAiElC;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;CAUxB"}
@@ -0,0 +1,392 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskCreationService = void 0;
4
+ const logger_1 = require("../utils/logger");
5
+ const types_1 = require("../types");
6
+ const auth_error_handler_1 = require("../utils/auth-error-handler");
7
+ const label_bulk_1 = require("../utils/label-bulk");
8
+ const vikunja_rest_1 = require("../utils/vikunja-rest");
9
+ const task_rest_transport_1 = require("../utils/task-rest-transport");
10
+ /**
11
+ * Converts TaskCreationData to the request body Vikunja expects for task
12
+ * creation, mapping fields and handling optional properties.
13
+ */
14
+ function convertTaskCreationDataToTask(taskData) {
15
+ const convertedTask = {
16
+ title: taskData.title,
17
+ project_id: taskData.project_id,
18
+ };
19
+ // Only include optional fields if they are provided (undefined values are excluded)
20
+ if (taskData.done !== undefined) {
21
+ convertedTask.done = taskData.done;
22
+ }
23
+ if (taskData.priority !== undefined) {
24
+ convertedTask.priority = taskData.priority;
25
+ }
26
+ if (taskData.percent_done !== undefined) {
27
+ convertedTask.percent_done = taskData.percent_done;
28
+ }
29
+ if (taskData.description !== undefined) {
30
+ convertedTask.description = taskData.description;
31
+ }
32
+ if (taskData.due_date !== undefined) {
33
+ convertedTask.due_date = taskData.due_date;
34
+ }
35
+ if (taskData.start_date !== undefined) {
36
+ convertedTask.start_date = taskData.start_date;
37
+ }
38
+ if (taskData.end_date !== undefined) {
39
+ convertedTask.end_date = taskData.end_date;
40
+ }
41
+ if (taskData.hex_color !== undefined) {
42
+ convertedTask.hex_color = taskData.hex_color;
43
+ }
44
+ if (taskData.repeat_after !== undefined) {
45
+ convertedTask.repeat_after = taskData.repeat_after;
46
+ }
47
+ if (taskData.repeat_mode !== undefined) {
48
+ // Only assign if it's a valid repeat_mode value
49
+ const validMode = taskData.repeat_mode;
50
+ if (['day', 'week', 'month', 'year'].includes(validMode)) {
51
+ convertedTask.repeat_mode = validMode;
52
+ }
53
+ }
54
+ return convertedTask;
55
+ }
56
+ /**
57
+ * Service responsible for creating individual tasks with all associated entities
58
+ * Handles complex API interactions, error handling, and field transformations
59
+ */
60
+ class TaskCreationService {
61
+ /**
62
+ * Creates a single task with all associated labels, assignees, and other properties
63
+ *
64
+ * @param task - The task data to create
65
+ * @param projectId - The project ID to create the task in
66
+ * @param authManager - Active auth manager holding the session credentials,
67
+ * used for every direct-REST call this service makes
68
+ * @param entityMaps - Resolved entity mappings for labels and users
69
+ * @param catchErrors - Whether to catch errors and return them in TaskCreationResult (default: true)
70
+ * @returns Promise<TaskCreationResult> - Result of the task creation operation
71
+ */
72
+ async createTask(task, projectId, authManager, entityMaps, catchErrors = true) {
73
+ const warnings = [];
74
+ try {
75
+ const taskData = this.prepareTaskData(task, projectId);
76
+ const createdTask = await this.createBaseTask(authManager, taskData, task.title);
77
+ const labelWarnings = await this.handleLabelAssignment(authManager, createdTask, task, entityMaps.labelMap);
78
+ warnings.push(...labelWarnings);
79
+ const assigneeWarnings = await this.handleUserAssignment(authManager, createdTask, task, entityMaps.userMap, entityMaps.projectUsers);
80
+ warnings.push(...assigneeWarnings);
81
+ if (task.reminders && task.reminders.length > 0) {
82
+ warnings.push(this.handleReminders(createdTask.id, task.reminders));
83
+ }
84
+ const result = {
85
+ success: true,
86
+ taskId: createdTask.id ?? 0,
87
+ title: createdTask.title ?? '',
88
+ };
89
+ if (warnings.length > 0) {
90
+ result.warnings = warnings;
91
+ }
92
+ return result;
93
+ }
94
+ catch (error) {
95
+ // Let MCPErrors bubble up to be handled at the batch level
96
+ if (error instanceof types_1.MCPError) {
97
+ throw error;
98
+ }
99
+ // If catchErrors is true, return error in result; otherwise, let it bubble up
100
+ if (catchErrors) {
101
+ return {
102
+ success: false,
103
+ title: task.title,
104
+ error: error instanceof Error ? error.message : 'Unknown error',
105
+ };
106
+ }
107
+ else {
108
+ throw error;
109
+ }
110
+ }
111
+ }
112
+ /**
113
+ * Prepares task data for API submission
114
+ *
115
+ * @param task - The imported task
116
+ * @param projectId - The target project ID
117
+ * @returns Formatted task data for the API
118
+ */
119
+ prepareTaskData(task, projectId) {
120
+ const taskData = {
121
+ project_id: projectId,
122
+ title: task.title,
123
+ done: task.done || false,
124
+ priority: task.priority || 0,
125
+ percent_done: task.percentDone || 0,
126
+ };
127
+ // Only add description if it's not undefined
128
+ if (task.description !== undefined) {
129
+ taskData.description = task.description;
130
+ }
131
+ // Handle dates
132
+ if (task.dueDate)
133
+ taskData.due_date = task.dueDate;
134
+ if (task.startDate)
135
+ taskData.start_date = task.startDate;
136
+ if (task.endDate)
137
+ taskData.end_date = task.endDate;
138
+ if (task.hexColor)
139
+ taskData.hex_color = task.hexColor;
140
+ if (task.repeatAfter)
141
+ taskData.repeat_after = task.repeatAfter;
142
+ if (task.repeatMode !== undefined) {
143
+ const repeatModes = ['day', 'week', 'month', 'year'];
144
+ if (task.repeatMode >= 0 && task.repeatMode < repeatModes.length) {
145
+ const repeatMode = repeatModes[task.repeatMode];
146
+ if (repeatMode) {
147
+ taskData.repeat_mode = repeatMode;
148
+ }
149
+ }
150
+ }
151
+ return taskData;
152
+ }
153
+ /**
154
+ * Creates the base task in Vikunja via `PUT /projects/{id}/tasks`
155
+ * (direct-REST; see docs/ENDPOINT-PLAYBOOK.md §3 — legacy client is
156
+ * end-of-life for this project).
157
+ *
158
+ * @param authManager - Active auth manager holding session credentials
159
+ * @param taskData - Prepared task data
160
+ * @param taskTitle - Task title for error reporting
161
+ * @returns Created task
162
+ * @throws MCPError if creation fails or authentication error occurs
163
+ */
164
+ async createBaseTask(authManager, taskData, taskTitle) {
165
+ try {
166
+ // Safely convert TaskCreationData to the request body shape Vikunja expects
167
+ const taskForApi = convertTaskCreationDataToTask(taskData);
168
+ return await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'PUT', `/projects/${taskData.project_id}/tasks`, taskForApi);
169
+ }
170
+ catch (error) {
171
+ // Check if it's an authentication error. Checked directly via
172
+ // `details.statusCode` (set by `vikunjaRestRequest` on every non-2xx
173
+ // response) alongside the shared message-pattern classifier:
174
+ // `isAuthenticationError`'s message patterns include some anchored to
175
+ // the start of the string (e.g. `/^401\b/`), which stop matching once
176
+ // `vikunjaRestRequestRaw` prefixes the message with its own "Vikunja
177
+ // REST request failed (...)" context — the statusCode check keeps a
178
+ // real 401/403 response reliably classified regardless of message
179
+ // shape.
180
+ const statusCode = error instanceof types_1.MCPError ? error.details?.statusCode : undefined;
181
+ if (statusCode === 401 || statusCode === 403 || (0, auth_error_handler_1.isAuthenticationError)(error)) {
182
+ throw new types_1.MCPError(types_1.ErrorCode.API_ERROR, `Authentication error while creating task "${taskTitle}". The token works for other endpoints but may have issues with batch operations. Original error: ${error instanceof Error ? error.message : String(error)}`);
183
+ }
184
+ // Re-throw as a plain Error, not the direct-REST helper's `MCPError`.
185
+ // `createTask`'s outer catch treats an `instanceof MCPError` as
186
+ // already-final and re-throws it unconditionally, bypassing the
187
+ // `catchErrors`-gated graceful-degradation path below — that
188
+ // short-circuit exists for OUR deliberately-thrown MCPErrors (like
189
+ // the auth one just above), not for generic transport failures.
190
+ // Pre-migration, the legacy client's `createTask` threw plain `Error`s
191
+ // here (never `MCPError`), so `catchErrors` correctly gated whether a
192
+ // non-auth API failure aborted the whole batch or was reported as a
193
+ // per-task failure; unwrapping here restores that behavior instead of
194
+ // letting every transport failure silently start behaving like an
195
+ // auth failure now that `vikunjaRestRequest` always throws MCPError.
196
+ throw error instanceof Error ? new Error(error.message) : error;
197
+ }
198
+ }
199
+ /**
200
+ * Handles label assignment for a created task
201
+ *
202
+ * @param authManager - Active auth manager holding the session credentials
203
+ * @param createdTask - The task that was created
204
+ * @param task - Original task data with labels
205
+ * @param labelMap - Mapping of label names to IDs
206
+ * @returns Array of warnings from label assignment
207
+ */
208
+ async handleLabelAssignment(authManager, createdTask, task, labelMap) {
209
+ const warnings = [];
210
+ if (!task.labels || task.labels.length === 0) {
211
+ return warnings;
212
+ }
213
+ // First, check for labels that are not found
214
+ const notFoundLabels = task.labels.filter((labelName) => !labelMap.has(labelName.toLowerCase()));
215
+ if (notFoundLabels.length > 0) {
216
+ logger_1.logger.warn('Some labels not found in project', {
217
+ taskId: createdTask.id || 'unknown',
218
+ requestedLabels: task.labels,
219
+ notFoundLabels,
220
+ availableLabels: Array.from(labelMap.keys()),
221
+ });
222
+ if (createdTask.id) {
223
+ warnings.push(`Labels not found: ${notFoundLabels.join(', ')}`);
224
+ }
225
+ }
226
+ // Get the label IDs that were found
227
+ const labelIds = task.labels
228
+ .map((labelName) => labelMap.get(labelName.toLowerCase()))
229
+ .filter((id) => id !== undefined);
230
+ if (labelIds.length > 0 && createdTask.id) {
231
+ try {
232
+ // Try to update labels
233
+ await (0, label_bulk_1.setTaskLabels)(authManager, createdTask.id, labelIds);
234
+ // Verify the labels were actually assigned (API tokens may silently fail)
235
+ const labelsActuallyAssigned = await this.verifyLabelAssignment(authManager, createdTask.id, labelIds);
236
+ if (!labelsActuallyAssigned) {
237
+ // Label assignment silently failed (common with API tokens)
238
+ logger_1.logger.warn('Label assignment may have failed silently', {
239
+ taskId: createdTask.id,
240
+ labelIds,
241
+ labelNames: task.labels,
242
+ });
243
+ warnings.push(`Labels specified but not assigned (API token limitation). Consider using JWT authentication for label support.`);
244
+ }
245
+ else {
246
+ logger_1.logger.debug('Labels assigned and verified successfully', {
247
+ taskId: createdTask.id,
248
+ labelIds,
249
+ labelNames: task.labels,
250
+ });
251
+ }
252
+ }
253
+ catch (labelError) {
254
+ const warning = this.handleLabelAssignmentError(labelError, createdTask.id, task.labels);
255
+ warnings.push(warning);
256
+ }
257
+ }
258
+ return warnings;
259
+ }
260
+ /**
261
+ * Verifies that labels were actually assigned to a task
262
+ *
263
+ * @param authManager - Active auth manager holding the session credentials
264
+ * @param taskId - The task ID to verify
265
+ * @param expectedLabelIds - Labels that should be assigned
266
+ * @returns True if labels are actually assigned, false otherwise
267
+ */
268
+ async verifyLabelAssignment(authManager, taskId, expectedLabelIds) {
269
+ try {
270
+ const updatedTask = await (0, task_rest_transport_1.getTaskViaRest)(authManager, taskId);
271
+ if (updatedTask && updatedTask.labels && Array.isArray(updatedTask.labels)) {
272
+ const assignedLabelIds = updatedTask.labels.map((l) => l.id);
273
+ return expectedLabelIds.every((id) => assignedLabelIds.includes(id));
274
+ }
275
+ return false;
276
+ }
277
+ catch (verifyError) {
278
+ // If we can't verify, assume it didn't work
279
+ logger_1.logger.debug('Could not verify label assignment', {
280
+ taskId,
281
+ error: verifyError instanceof Error ? verifyError.message : String(verifyError),
282
+ });
283
+ return false;
284
+ }
285
+ }
286
+ /**
287
+ * Handles errors during label assignment
288
+ *
289
+ * @param labelError - The error that occurred
290
+ * @param taskId - The task ID
291
+ * @param labelNames - The label names that were being assigned
292
+ * @returns Warning message
293
+ */
294
+ handleLabelAssignmentError(labelError, taskId, labelNames) {
295
+ // Check if this is an authentication error
296
+ if ((0, auth_error_handler_1.isAuthenticationError)(labelError)) {
297
+ logger_1.logger.warn('Label assignment failed due to authentication issue', {
298
+ taskId,
299
+ labelNames,
300
+ error: labelError instanceof Error ? labelError.message : (labelError?.message ?? 'Unknown error'),
301
+ });
302
+ return `Label assignment requires JWT authentication. Labels were not assigned.`;
303
+ }
304
+ else {
305
+ logger_1.logger.error('Failed to assign labels to task', {
306
+ taskId,
307
+ labelNames,
308
+ error: labelError instanceof Error ? labelError.message : (labelError?.message ?? 'Unknown error'),
309
+ });
310
+ return `Failed to assign labels: ${labelError instanceof Error ? labelError.message : 'Unknown error'}`;
311
+ }
312
+ }
313
+ /**
314
+ * Handles user assignment for a created task
315
+ *
316
+ * @param authManager - Active auth manager holding the session credentials
317
+ * @param createdTask - The task that was created
318
+ * @param task - Original task data with assignees
319
+ * @param userMap - Mapping of usernames to IDs
320
+ * @param projectUsers - List of available project users
321
+ * @returns Array of warnings from user assignment
322
+ */
323
+ async handleUserAssignment(authManager, createdTask, task, userMap, projectUsers) {
324
+ const warnings = [];
325
+ if (!task.assignees || task.assignees.length === 0) {
326
+ return warnings;
327
+ }
328
+ // Check if we have any users mapped (might be empty due to API issue)
329
+ if (projectUsers.length === 0) {
330
+ logger_1.logger.warn('Skipping assignees due to user fetch failure', {
331
+ taskId: createdTask.id || 'unknown',
332
+ assignees: task.assignees,
333
+ });
334
+ warnings.push('Assignees skipped due to user fetch failure (possible API authentication issue)');
335
+ return warnings;
336
+ }
337
+ // Check for users that are not found first
338
+ const notFoundUsers = task.assignees.filter((username) => !userMap.has(username.toLowerCase()));
339
+ if (notFoundUsers.length > 0) {
340
+ warnings.push(`Users not found: ${notFoundUsers.join(', ')}`);
341
+ }
342
+ // Get the user IDs that were found
343
+ const userIds = task.assignees
344
+ .map((username) => userMap.get(username.toLowerCase()))
345
+ .filter((id) => id !== undefined);
346
+ if (userIds.length > 0 && createdTask.id) {
347
+ try {
348
+ // Assign each user via the ADDITIVE single-assign endpoint (PUT
349
+ // /tasks/{taskID}/assignees, body { user_id }, models.TaskAssginee)
350
+ // rather than the bulk endpoint (POST .../assignees/bulk), which
351
+ // REPLACES the whole assignee list — a bulk call would silently
352
+ // unassign everyone (democratize-technology/vikunja-mcp#15).
353
+ // Sequential on purpose (post-#89 pattern sweep): concurrent
354
+ // per-user writes to the same task risk "database is locked" 500s
355
+ // on SQLite-backed instances.
356
+ const taskId = createdTask.id;
357
+ for (const userId of userIds) {
358
+ await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'PUT', `/tasks/${taskId}/assignees`, { user_id: userId });
359
+ }
360
+ }
361
+ catch (assignError) {
362
+ logger_1.logger.error('Failed to assign users to task', {
363
+ taskId: createdTask.id,
364
+ userIds,
365
+ assignees: task.assignees,
366
+ error: assignError instanceof Error ? assignError.message : String(assignError),
367
+ });
368
+ warnings.push(`Failed to assign users: ${assignError instanceof Error ? assignError.message : 'Unknown error'}`);
369
+ }
370
+ }
371
+ return warnings;
372
+ }
373
+ /**
374
+ * Handles reminders for a task (API limitation)
375
+ *
376
+ * @param taskId - The task ID
377
+ * @param reminders - Array of reminder data
378
+ * @returns Warning message about API limitation
379
+ */
380
+ handleReminders(taskId, reminders) {
381
+ // Note: The API doesn't support adding reminders separately,
382
+ // they need to be added during task creation
383
+ // This is a limitation of the current implementation
384
+ logger_1.logger.warn('Reminders cannot be added after task creation', {
385
+ taskId: taskId || 'unknown',
386
+ reminders,
387
+ });
388
+ return 'Reminders cannot be added after task creation (API limitation). Include them in the initial task data.';
389
+ }
390
+ }
391
+ exports.TaskCreationService = TaskCreationService;
392
+ //# sourceMappingURL=TaskCreationService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskCreationService.js","sourceRoot":"","sources":["../../src/services/TaskCreationService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Simple filter storage - eliminates over-engineering
3
+ *
4
+ * Replaces 33 files and 9,803 lines with essential functionality:
5
+ * - Session-isolated filter storage
6
+ * - Thread-safe operations with mutex
7
+ * - Same external API as before
8
+ */
9
+ import type { FilterStorage, SavedFilter } from '../types/filters';
10
+ /**
11
+ * Session information
12
+ */
13
+ interface StorageSession {
14
+ id: string;
15
+ userId?: string;
16
+ apiUrl?: string;
17
+ createdAt: Date;
18
+ lastAccessAt: Date;
19
+ }
20
+ /**
21
+ * Simple filter storage implementation
22
+ */
23
+ export declare class SimpleFilterStorage implements FilterStorage {
24
+ private filters;
25
+ private mutex;
26
+ private session;
27
+ constructor(sessionId: string, userId?: string, apiUrl?: string);
28
+ private updateAccessTime;
29
+ list(): Promise<SavedFilter[]>;
30
+ get(id: string): Promise<SavedFilter | null>;
31
+ create(filter: Omit<SavedFilter, 'id' | 'created' | 'updated'>): Promise<SavedFilter>;
32
+ update(id: string, filter: Partial<Omit<SavedFilter, 'id' | 'created' | 'updated'>>): Promise<SavedFilter>;
33
+ delete(id: string): Promise<void>;
34
+ findByName(name: string): Promise<SavedFilter | null>;
35
+ getByProject(projectId: number): Promise<SavedFilter[]>;
36
+ /**
37
+ * Session management
38
+ */
39
+ getSession(): StorageSession;
40
+ /**
41
+ * Get storage statistics
42
+ */
43
+ getStats(): Promise<{
44
+ filterCount: number;
45
+ sessionId: string;
46
+ createdAt: Date;
47
+ lastAccessAt: Date;
48
+ storageType: string;
49
+ additionalInfo?: Record<string, unknown>;
50
+ }>;
51
+ /**
52
+ * Clear all filters (for testing)
53
+ */
54
+ clear(): Promise<void>;
55
+ /**
56
+ * Health check
57
+ */
58
+ healthCheck(): {
59
+ healthy: boolean;
60
+ error?: string;
61
+ details?: Record<string, unknown>;
62
+ };
63
+ /**
64
+ * Close storage
65
+ */
66
+ close(): Promise<void>;
67
+ }
68
+ /**
69
+ * Storage manager
70
+ */
71
+ export declare class FilterStorageManager {
72
+ private storageInstances;
73
+ private cleanupInterval;
74
+ private mutex;
75
+ private readonly CLEANUP_INTERVAL_MS;
76
+ private readonly SESSION_TIMEOUT_MS;
77
+ constructor();
78
+ getStorage(sessionId: string, userId?: string, apiUrl?: string): Promise<SimpleFilterStorage>;
79
+ getAllStats(): Promise<Array<{
80
+ sessionId: string;
81
+ filterCount: number;
82
+ createdAt: Date;
83
+ lastAccessAt: Date;
84
+ memoryUsageKb: number;
85
+ }>>;
86
+ private startCleanupTimer;
87
+ private cleanupInactiveSessions;
88
+ /**
89
+ * Cleanup on process exit
90
+ */
91
+ destroy(): Promise<void>;
92
+ /**
93
+ * Clear all storage instances (for testing)
94
+ */
95
+ clearAll(): Promise<void>;
96
+ /**
97
+ * Stop cleanup timer (for testing)
98
+ */
99
+ stopCleanupTimer(): void;
100
+ }
101
+ export declare const storageManager: FilterStorageManager;
102
+ export {};
103
+ //# sourceMappingURL=SimpleFilterStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimpleFilterStorage.d.ts","sourceRoot":"","sources":["../../src/storage/SimpleFilterStorage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGnE;;GAEG;AACH,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,IAAI,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IACvD,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,OAAO,CAAiB;gBAEpB,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAU/D,OAAO,CAAC,gBAAgB;IAIlB,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAU9B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAU5C,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAmBrF,MAAM,CACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC,GAC/D,OAAO,CAAC,WAAW,CAAC;IAsBjB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAajC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAerD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAgB7D;;OAEG;IACH,UAAU,IAAI,cAAc;IAI5B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,IAAI,CAAC;QAChB,YAAY,EAAE,IAAI,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC1C,CAAC;IAgBF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B;;OAEG;IACH,WAAW,IAAI;QACb,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC;IAWD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ7B;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,gBAAgB,CAA0C;IAClE,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,KAAK,CAAe;IAG5B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAkB;IACtD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAkB;;IAM/C,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAc7F,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;QACjC,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,IAAI,CAAC;QAChB,YAAY,EAAE,IAAI,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;IAoBH,OAAO,CAAC,iBAAiB;YAYX,uBAAuB;IA0BrC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB9B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAY/B;;OAEG;IACH,gBAAgB,IAAI,IAAI;CAMzB;AAGD,eAAO,MAAM,cAAc,sBAA6B,CAAC"}