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":"CSVParser.js","sourceRoot":"","sources":["../../src/parsers/CSVParser.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AA2BH,oCA8BC;AAvDD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,YAAY,CAAC,IAAY;IACvC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7B,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,IAAI,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;gBACjC,gBAAgB;gBAChB,OAAO,IAAI,GAAG,CAAC;gBACf,CAAC,EAAE,CAAC,CAAC,kBAAkB;YACzB,CAAC;iBAAM,CAAC;gBACN,oBAAoB;gBACpB,QAAQ,GAAG,CAAC,QAAQ,CAAC;YACvB,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrC,eAAe;YACf,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5B,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5B,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type ImportedTask } from './JSONParser';
2
+ export interface ParseInputOptions {
3
+ format: 'csv' | 'json';
4
+ data: string;
5
+ skipErrors?: boolean;
6
+ }
7
+ export type { ImportedTask } from './JSONParser';
8
+ /**
9
+ * Factory function to parse input data based on format.
10
+ * This centralizes format detection and parser orchestration logic.
11
+ *
12
+ * @param options - Parsing options including format, data, and error handling
13
+ * @returns Array of parsed and validated ImportedTask objects
14
+ * @throws MCPError if parsing fails or validation errors occur
15
+ */
16
+ export declare function parseInputData(options: ParseInputOptions): ImportedTask[];
17
+ //# sourceMappingURL=InputParserFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputParserFactory.d.ts","sourceRoot":"","sources":["../../src/parsers/InputParserFactory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsC,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAGrF,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAGD,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,YAAY,EAAE,CAuCzE"}
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseInputData = parseInputData;
4
+ const types_1 = require("../types");
5
+ const CSVParser_1 = require("./CSVParser");
6
+ const JSONParser_1 = require("./JSONParser");
7
+ const logger_1 = require("../utils/logger");
8
+ /**
9
+ * Factory function to parse input data based on format.
10
+ * This centralizes format detection and parser orchestration logic.
11
+ *
12
+ * @param options - Parsing options including format, data, and error handling
13
+ * @returns Array of parsed and validated ImportedTask objects
14
+ * @throws MCPError if parsing fails or validation errors occur
15
+ */
16
+ function parseInputData(options) {
17
+ const { format, data, skipErrors = false } = options;
18
+ // Validate input parameters
19
+ if (!data || data.trim() === '') {
20
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'Input data cannot be empty');
21
+ }
22
+ try {
23
+ switch (format) {
24
+ case 'json':
25
+ return (0, JSONParser_1.parseJSONInput)(data);
26
+ case 'csv':
27
+ return parseCSVInput(data, skipErrors);
28
+ default: {
29
+ // Use format directly for error message
30
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Unsupported format: ${String(format)}. Supported formats are: csv, json`);
31
+ }
32
+ }
33
+ }
34
+ catch (error) {
35
+ // Re-throw MCP errors as-is
36
+ if (error instanceof types_1.MCPError) {
37
+ throw error;
38
+ }
39
+ // Wrap other errors in MCPError
40
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Failed to parse ${format} input: ${error instanceof Error ? error.message : 'Unknown error'}`);
41
+ }
42
+ }
43
+ /**
44
+ * Parse CSV input data and return array of ImportedTask objects.
45
+ * Extracted from batch-import.ts to improve modularity and testability.
46
+ *
47
+ * @param data - Raw CSV string data
48
+ * @param skipErrors - Whether to skip invalid rows or throw an error
49
+ * @returns Array of parsed and validated ImportedTask objects
50
+ * @throws MCPError if CSV structure is invalid or validation fails (when skipErrors=false)
51
+ */
52
+ function parseCSVInput(data, skipErrors = false) {
53
+ const tasks = [];
54
+ // Split into lines and filter out empty lines
55
+ const lines = data.split('\n').filter((line) => line.trim());
56
+ if (lines.length < 2) {
57
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'CSV must have at least a header row and one data row');
58
+ }
59
+ // Parse header
60
+ const headers = (0, CSVParser_1.parseCSVLine)(lines[0] || '');
61
+ const requiredHeaders = ['title'];
62
+ const missingHeaders = requiredHeaders.filter((h) => !headers.includes(h));
63
+ if (missingHeaders.length > 0) {
64
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Missing required CSV headers: ${missingHeaders.join(', ')}`);
65
+ }
66
+ // Parse data rows
67
+ for (let i = 1; i < lines.length; i++) {
68
+ const values = (0, CSVParser_1.parseCSVLine)(lines[i] || '');
69
+ // Skip empty rows
70
+ if (values.every((value) => !value || value.trim() === '')) {
71
+ continue;
72
+ }
73
+ const taskData = {};
74
+ headers.forEach((header, index) => {
75
+ const value = values[index];
76
+ if (value) {
77
+ switch (header) {
78
+ case 'title':
79
+ taskData.title = value;
80
+ break;
81
+ case 'description':
82
+ taskData.description = value;
83
+ break;
84
+ case 'done':
85
+ taskData.done = value.toLowerCase() === 'true';
86
+ break;
87
+ case 'dueDate':
88
+ taskData.dueDate = value;
89
+ break;
90
+ case 'priority':
91
+ taskData.priority = parseInt(value, 10);
92
+ break;
93
+ case 'labels':
94
+ taskData.labels = value ? value.split(';').map((l) => l.trim()).filter((l) => l.length > 0) : [];
95
+ logger_1.logger.debug('Parsed labels from CSV', {
96
+ rawValue: value,
97
+ parsedLabels: taskData.labels,
98
+ });
99
+ break;
100
+ case 'assignees':
101
+ taskData.assignees = value ? value.split(';').map((a) => a.trim()).filter((a) => a.length > 0) : [];
102
+ break;
103
+ case 'startDate':
104
+ taskData.startDate = value;
105
+ break;
106
+ case 'endDate':
107
+ taskData.endDate = value;
108
+ break;
109
+ case 'hexColor':
110
+ taskData.hexColor = value;
111
+ break;
112
+ case 'percentDone':
113
+ taskData.percentDone = parseInt(value, 10);
114
+ break;
115
+ case 'repeatAfter':
116
+ taskData.repeatAfter = parseInt(value, 10);
117
+ break;
118
+ case 'repeatMode':
119
+ taskData.repeatMode = parseInt(value, 10);
120
+ break;
121
+ }
122
+ }
123
+ });
124
+ try {
125
+ const validatedTask = JSONParser_1.importedTaskSchema.parse(taskData);
126
+ tasks.push(validatedTask);
127
+ }
128
+ catch (error) {
129
+ if (!skipErrors) {
130
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Invalid task data at row ${i + 1}: ${error instanceof Error ? error.message : 'Unknown error'}`);
131
+ }
132
+ // If skipErrors is true, we skip this row and continue
133
+ }
134
+ }
135
+ return tasks;
136
+ }
137
+ //# sourceMappingURL=InputParserFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputParserFactory.js","sourceRoot":"","sources":["../../src/parsers/InputParserFactory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Zod schema for validating imported task data from JSON
4
+ * Defines the structure and validation rules for task objects
5
+ */
6
+ export declare const importedTaskSchema: z.ZodObject<{
7
+ title: z.ZodString;
8
+ description: z.ZodOptional<z.ZodString>;
9
+ done: z.ZodOptional<z.ZodBoolean>;
10
+ dueDate: z.ZodOptional<z.ZodString>;
11
+ priority: z.ZodOptional<z.ZodNumber>;
12
+ labels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
13
+ assignees: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
14
+ startDate: z.ZodOptional<z.ZodString>;
15
+ endDate: z.ZodOptional<z.ZodString>;
16
+ hexColor: z.ZodOptional<z.ZodString>;
17
+ percentDone: z.ZodOptional<z.ZodNumber>;
18
+ repeatAfter: z.ZodOptional<z.ZodNumber>;
19
+ repeatMode: z.ZodOptional<z.ZodNumber>;
20
+ reminders: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
21
+ }, "strict", z.ZodTypeAny, {
22
+ title: string;
23
+ done?: boolean | undefined;
24
+ priority?: number | undefined;
25
+ description?: string | undefined;
26
+ labels?: string[] | undefined;
27
+ percentDone?: number | undefined;
28
+ dueDate?: string | undefined;
29
+ startDate?: string | undefined;
30
+ endDate?: string | undefined;
31
+ assignees?: string[] | undefined;
32
+ repeatAfter?: number | undefined;
33
+ hexColor?: string | undefined;
34
+ reminders?: string[] | undefined;
35
+ repeatMode?: number | undefined;
36
+ }, {
37
+ title: string;
38
+ done?: boolean | undefined;
39
+ priority?: number | undefined;
40
+ description?: string | undefined;
41
+ labels?: string[] | undefined;
42
+ percentDone?: number | undefined;
43
+ dueDate?: string | undefined;
44
+ startDate?: string | undefined;
45
+ endDate?: string | undefined;
46
+ assignees?: string[] | undefined;
47
+ repeatAfter?: number | undefined;
48
+ hexColor?: string | undefined;
49
+ reminders?: string[] | undefined;
50
+ repeatMode?: number | undefined;
51
+ }>;
52
+ /**
53
+ * TypeScript type inferred from the importedTaskSchema
54
+ * Represents a valid task object that can be imported
55
+ */
56
+ export type ImportedTask = z.infer<typeof importedTaskSchema>;
57
+ /**
58
+ * Parses JSON input and normalizes to array of ImportedTask objects.
59
+ * Handles both single task objects and arrays of tasks.
60
+ * Validates each task against importedTaskSchema.
61
+ *
62
+ * @param data - JSON string containing task data
63
+ * @returns Array of validated ImportedTask objects
64
+ * @throws {MCPError} If JSON is malformed or validation fails
65
+ *
66
+ * @example
67
+ * parseJSONInput('{"title": "Task 1"}')
68
+ * // Returns: [{title: "Task 1"}]
69
+ *
70
+ * parseJSONInput('[{"title": "Task 1"}, {"title": "Task 2"}]')
71
+ * // Returns: [{title: "Task 1"}, {title: "Task 2"}]
72
+ */
73
+ export declare function parseJSONInput(data: string): ImportedTask[];
74
+ //# sourceMappingURL=JSONParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSONParser.d.ts","sourceRoot":"","sources":["../../src/parsers/JSONParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBpB,CAAC;AAEZ;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAO9D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAiB3D"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.importedTaskSchema = void 0;
4
+ exports.parseJSONInput = parseJSONInput;
5
+ const zod_1 = require("zod");
6
+ const types_1 = require("../types");
7
+ /* ===================================================================
8
+ * TYPE DEFINITIONS & SCHEMAS
9
+ * Zod schemas and TypeScript interfaces for imported tasks from JSON
10
+ * =================================================================== */
11
+ /**
12
+ * Zod schema for validating imported task data from JSON
13
+ * Defines the structure and validation rules for task objects
14
+ */
15
+ exports.importedTaskSchema = zod_1.z.object({
16
+ title: zod_1.z.string().min(1),
17
+ description: zod_1.z.string().optional(),
18
+ done: zod_1.z.boolean().optional(),
19
+ dueDate: zod_1.z.string().optional(),
20
+ priority: zod_1.z.number().optional(),
21
+ labels: zod_1.z.array(zod_1.z.string()).optional(),
22
+ assignees: zod_1.z.array(zod_1.z.string()).optional(),
23
+ startDate: zod_1.z.string().optional(),
24
+ endDate: zod_1.z.string().optional(),
25
+ hexColor: zod_1.z
26
+ .string()
27
+ .regex(/^#[0-9A-Fa-f]{6}$/)
28
+ .optional(),
29
+ percentDone: zod_1.z.number().min(0).max(100).optional(),
30
+ repeatAfter: zod_1.z.number().optional(),
31
+ repeatMode: zod_1.z.number().optional(),
32
+ reminders: zod_1.z.array(zod_1.z.string()).optional(),
33
+ }).strict(); // Reject unknown properties
34
+ /* ===================================================================
35
+ * JSON PARSING FUNCTIONS
36
+ * Functions for parsing and validating JSON input data
37
+ * =================================================================== */
38
+ /**
39
+ * Parses JSON input and normalizes to array of ImportedTask objects.
40
+ * Handles both single task objects and arrays of tasks.
41
+ * Validates each task against importedTaskSchema.
42
+ *
43
+ * @param data - JSON string containing task data
44
+ * @returns Array of validated ImportedTask objects
45
+ * @throws {MCPError} If JSON is malformed or validation fails
46
+ *
47
+ * @example
48
+ * parseJSONInput('{"title": "Task 1"}')
49
+ * // Returns: [{title: "Task 1"}]
50
+ *
51
+ * parseJSONInput('[{"title": "Task 1"}, {"title": "Task 2"}]')
52
+ * // Returns: [{title: "Task 1"}, {title: "Task 2"}]
53
+ */
54
+ function parseJSONInput(data) {
55
+ try {
56
+ const parsed = JSON.parse(data);
57
+ const taskArray = Array.isArray(parsed) ? parsed : [parsed];
58
+ const tasks = [];
59
+ for (const task of taskArray) {
60
+ const validatedTask = exports.importedTaskSchema.parse(task);
61
+ tasks.push(validatedTask);
62
+ }
63
+ return tasks;
64
+ }
65
+ catch (error) {
66
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Invalid JSON data: ${error instanceof Error ? error.message : 'Unknown error'}`);
67
+ }
68
+ }
69
+ //# sourceMappingURL=JSONParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSONParser.js","sourceRoot":"","sources":["../../src/parsers/JSONParser.ts"],"names":[],"mappings":";;;AA2DA,wCAiBC;AA5ED,6BAAwB;AACxB,oCAA+C;AAE/C;;;yEAGyE;AAEzE;;;GAGG;AACU,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACtC,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,OAAC;SACR,MAAM,EAAE;SACR,KAAK,CAAC,mBAAmB,CAAC;SAC1B,QAAQ,EAAE;IACb,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAClD,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,4BAA4B;AAQzC;;;yEAGyE;AAEzE;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,cAAc,CAAC,IAAY;IACzC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;QAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAE5D,MAAM,KAAK,GAAmB,EAAE,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,aAAa,GAAG,0BAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrD,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,gBAAQ,CAChB,iBAAS,CAAC,gBAAgB,EAC1B,sBAAsB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACjF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Entity Resolver Service
3
+ *
4
+ * Handles label and user resolution for batch import operations.
5
+ * This service encapsulates the complex logic for fetching entities from the Vikunja API,
6
+ * handling authentication errors, and creating name-to-ID mappings.
7
+ */
8
+ import type { AuthManager } from '../auth/AuthManager';
9
+ import type { components } from '../types/generated/vikunja-openapi';
10
+ type VikunjaUser = components['schemas']['user.User'];
11
+ type VikunjaLabel = components['schemas']['models.Label'];
12
+ /**
13
+ * Result of entity resolution operations
14
+ */
15
+ export interface EntityResolutionResult {
16
+ /** Map of lowercase label names to label IDs */
17
+ labelMap: Map<string, number>;
18
+ /** Map of lowercase usernames to user IDs */
19
+ userMap: Map<string, number>;
20
+ /** Whether user fetch failed due to known authentication issues */
21
+ userFetchFailedDueToAuth: boolean;
22
+ /** Raw labels array for reference */
23
+ projectLabels: VikunjaLabel[];
24
+ /** Raw users array for reference */
25
+ projectUsers: VikunjaUser[];
26
+ }
27
+ /**
28
+ * Entity Resolver service for mapping label and user names to IDs
29
+ */
30
+ export declare class EntityResolver {
31
+ /**
32
+ * Fetches labels and users from the Vikunja API and creates resolution maps
33
+ *
34
+ * This method handles the complex logic of:
35
+ * - Fetching labels with robust error handling for malformed responses
36
+ * - Fetching users with special handling for known Vikunja API authentication issues
37
+ * - Creating case-insensitive name-to-ID mappings
38
+ * - Providing comprehensive logging for debugging
39
+ *
40
+ * @param authManager - Active auth manager holding the session credentials,
41
+ * used for the direct-REST `GET /labels` and `GET /users` calls
42
+ * @returns Promise resolving to entity resolution results
43
+ */
44
+ resolveEntities(authManager: AuthManager): Promise<EntityResolutionResult>;
45
+ /**
46
+ * Fetch labels from the API with robust error handling
47
+ *
48
+ * Handles multiple edge cases:
49
+ * - null/undefined responses
50
+ * - Non-array responses
51
+ * - Network errors
52
+ * - Auth errors (less common for labels than users)
53
+ *
54
+ * @param authManager - Active auth manager holding the session credentials
55
+ * @param result - The result object to update with fetched labels
56
+ */
57
+ private fetchLabels;
58
+ /**
59
+ * Fetch users from the API with authentication error handling
60
+ *
61
+ * KNOWN VIKUNJA API ISSUE: Users endpoint often fails with API tokens.
62
+ * This is not a bug in our code - it's a documented Vikunja API limitation.
63
+ *
64
+ * KNOWN ISSUE (Wave D migration): per the vendored OpenAPI spec,
65
+ * `GET /users` is a *search* endpoint ("Search for a user by its username,
66
+ * name or full email") that takes an `s` query parameter — it is not a
67
+ * "list all users I can see" endpoint. Called with no `s`, as this method
68
+ * does (matching the pre-migration legacy client call, which passed the
69
+ * same empty `{}` params), it likely returns an empty array on real
70
+ * servers rather than the full set of assignable project users. This
71
+ * migration moves the transport (legacy client -> `vikunjaRestRequest`)
72
+ * without changing that behavior — fixing the semantic mismatch (e.g.
73
+ * passing a search term, or resolving assignees a different way) is a
74
+ * separate, deliberately out-of-scope follow-up.
75
+ *
76
+ * @param authManager - Active auth manager for the direct-REST call
77
+ * @param result - The result object to update with fetched users
78
+ */
79
+ private fetchUsers;
80
+ /**
81
+ * Create case-insensitive resolution maps from fetched entities
82
+ *
83
+ * This method is more defensive than the original batch-import.ts implementation.
84
+ * The original code would crash on undefined/null titles, but this implementation
85
+ * handles edge cases gracefully by converting them to unique string representations.
86
+ *
87
+ * @param result - The result object to update with resolution maps
88
+ */
89
+ private createResolutionMaps;
90
+ }
91
+ export {};
92
+ //# sourceMappingURL=EntityResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityResolver.d.ts","sourceRoot":"","sources":["../../src/services/EntityResolver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAGrE,KAAK,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;AACtD,KAAK,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,gDAAgD;IAChD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,6CAA6C;IAC7C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,mEAAmE;IACnE,wBAAwB,EAAE,OAAO,CAAC;IAClC,qCAAqC;IACrC,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,oCAAoC;IACpC,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB;;;;;;;;;;;;OAYG;IACG,eAAe,CACnB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,sBAAsB,CAAC;IAyBlC;;;;;;;;;;;OAWG;YACW,WAAW;IA6CzB;;;;;;;;;;;;;;;;;;;;OAoBG;YACW,UAAU;IAwCxB;;;;;;;;OAQG;IACH,OAAO,CAAC,oBAAoB;CAuC7B"}
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ /**
3
+ * Entity Resolver Service
4
+ *
5
+ * Handles label and user resolution for batch import operations.
6
+ * This service encapsulates the complex logic for fetching entities from the Vikunja API,
7
+ * handling authentication errors, and creating name-to-ID mappings.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.EntityResolver = void 0;
11
+ const logger_1 = require("../utils/logger");
12
+ const auth_error_handler_1 = require("../utils/auth-error-handler");
13
+ const types_1 = require("../types");
14
+ const vikunja_rest_1 = require("../utils/vikunja-rest");
15
+ /**
16
+ * Entity Resolver service for mapping label and user names to IDs
17
+ */
18
+ class EntityResolver {
19
+ /**
20
+ * Fetches labels and users from the Vikunja API and creates resolution maps
21
+ *
22
+ * This method handles the complex logic of:
23
+ * - Fetching labels with robust error handling for malformed responses
24
+ * - Fetching users with special handling for known Vikunja API authentication issues
25
+ * - Creating case-insensitive name-to-ID mappings
26
+ * - Providing comprehensive logging for debugging
27
+ *
28
+ * @param authManager - Active auth manager holding the session credentials,
29
+ * used for the direct-REST `GET /labels` and `GET /users` calls
30
+ * @returns Promise resolving to entity resolution results
31
+ */
32
+ async resolveEntities(authManager) {
33
+ const result = {
34
+ labelMap: new Map(),
35
+ userMap: new Map(),
36
+ userFetchFailedDueToAuth: false,
37
+ projectLabels: [],
38
+ projectUsers: [],
39
+ };
40
+ await this.fetchLabels(authManager, result);
41
+ await this.fetchUsers(authManager, result);
42
+ this.createResolutionMaps(result);
43
+ // Log the final result for debugging
44
+ logger_1.logger.debug('Label and user maps created', {
45
+ labelMapSize: result.labelMap.size,
46
+ labelMapEntries: Array.from(result.labelMap.entries()),
47
+ userMapSize: result.userMap.size,
48
+ });
49
+ return result;
50
+ }
51
+ /**
52
+ * Fetch labels from the API with robust error handling
53
+ *
54
+ * Handles multiple edge cases:
55
+ * - null/undefined responses
56
+ * - Non-array responses
57
+ * - Network errors
58
+ * - Auth errors (less common for labels than users)
59
+ *
60
+ * @param authManager - Active auth manager holding the session credentials
61
+ * @param result - The result object to update with fetched labels
62
+ */
63
+ async fetchLabels(authManager, result) {
64
+ try {
65
+ // GET /labels per the OpenAPI spec (models.Label[]).
66
+ const labelsResponse = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', '/labels');
67
+ // Handle potential null/undefined response
68
+ if (!labelsResponse) {
69
+ logger_1.logger.warn('Labels response is null/undefined');
70
+ result.projectLabels = [];
71
+ return;
72
+ }
73
+ // Handle non-array responses
74
+ if (!Array.isArray(labelsResponse)) {
75
+ logger_1.logger.warn('Labels response is not an array', {
76
+ responseType: typeof labelsResponse,
77
+ response: labelsResponse,
78
+ });
79
+ result.projectLabels = [];
80
+ return;
81
+ }
82
+ // Valid response
83
+ result.projectLabels = labelsResponse;
84
+ logger_1.logger.debug('Labels fetched', {
85
+ count: result.projectLabels.length,
86
+ labels: result.projectLabels.map((l) => ({ id: l.id ?? 0, title: l.title ?? '' })),
87
+ });
88
+ }
89
+ catch (error) {
90
+ logger_1.logger.error('Failed to fetch labels', {
91
+ error: error instanceof Error ? error.message : String(error),
92
+ stack: error instanceof Error ? error.stack : undefined,
93
+ });
94
+ result.projectLabels = [];
95
+ // Continue without labels mapping
96
+ }
97
+ }
98
+ /**
99
+ * Fetch users from the API with authentication error handling
100
+ *
101
+ * KNOWN VIKUNJA API ISSUE: Users endpoint often fails with API tokens.
102
+ * This is not a bug in our code - it's a documented Vikunja API limitation.
103
+ *
104
+ * KNOWN ISSUE (Wave D migration): per the vendored OpenAPI spec,
105
+ * `GET /users` is a *search* endpoint ("Search for a user by its username,
106
+ * name or full email") that takes an `s` query parameter — it is not a
107
+ * "list all users I can see" endpoint. Called with no `s`, as this method
108
+ * does (matching the pre-migration legacy client call, which passed the
109
+ * same empty `{}` params), it likely returns an empty array on real
110
+ * servers rather than the full set of assignable project users. This
111
+ * migration moves the transport (legacy client -> `vikunjaRestRequest`)
112
+ * without changing that behavior — fixing the semantic mismatch (e.g.
113
+ * passing a search term, or resolving assignees a different way) is a
114
+ * separate, deliberately out-of-scope follow-up.
115
+ *
116
+ * @param authManager - Active auth manager for the direct-REST call
117
+ * @param result - The result object to update with fetched users
118
+ */
119
+ async fetchUsers(authManager, result) {
120
+ try {
121
+ const usersResponse = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', '/users');
122
+ result.projectUsers = usersResponse || [];
123
+ logger_1.logger.debug('Users fetched', { count: result.projectUsers.length });
124
+ }
125
+ catch (error) {
126
+ // This is a known limitation with Vikunja API authentication. Checked
127
+ // directly via `details.statusCode` (set by `vikunjaRestRequest` on
128
+ // every non-2xx response) alongside the shared message-pattern
129
+ // classifier: `isAuthenticationError`'s structured checks look for
130
+ // `.status`/`.response.status`, properties the legacy client's HTTP errors
131
+ // carried but a plain `MCPError` from the REST helper does not — so a
132
+ // bare 401/403 with a response body that doesn't happen to match one
133
+ // of the message-pattern fallbacks would otherwise stop being
134
+ // classified as an auth failure after this transport migration.
135
+ const statusCode = error instanceof types_1.MCPError ? error.details?.statusCode : undefined;
136
+ if (statusCode === 401 || statusCode === 403 || (0, auth_error_handler_1.isAuthenticationError)(error)) {
137
+ logger_1.logger.warn('Cannot fetch users due to known Vikunja API authentication issue. Assignees will be skipped.', {
138
+ error: error instanceof Error ? error.message : String(error),
139
+ });
140
+ result.userFetchFailedDueToAuth = true;
141
+ // Continue without user mapping - assignees will be ignored
142
+ }
143
+ else {
144
+ // Some other error - log but continue
145
+ logger_1.logger.warn('Failed to fetch users', { error });
146
+ }
147
+ result.projectUsers = [];
148
+ }
149
+ }
150
+ /**
151
+ * Create case-insensitive resolution maps from fetched entities
152
+ *
153
+ * This method is more defensive than the original batch-import.ts implementation.
154
+ * The original code would crash on undefined/null titles, but this implementation
155
+ * handles edge cases gracefully by converting them to unique string representations.
156
+ *
157
+ * @param result - The result object to update with resolution maps
158
+ */
159
+ createResolutionMaps(result) {
160
+ // Create case-insensitive label name to ID map
161
+ result.labelMap = new Map((result.projectLabels || [])
162
+ .filter((label) => label !== null && label.id !== null && label.id !== undefined)
163
+ .map((label) => {
164
+ let key;
165
+ if (!('title' in label)) {
166
+ key = '[missing]';
167
+ }
168
+ else if (label.title === null) {
169
+ key = '[null]';
170
+ }
171
+ else if (label.title === undefined) {
172
+ key = '[undefined]';
173
+ }
174
+ else {
175
+ key = String(label.title).toLowerCase();
176
+ }
177
+ return [key, label.id];
178
+ }));
179
+ // Create case-insensitive username to ID map
180
+ result.userMap = new Map((result.projectUsers || [])
181
+ .filter((user) => user !== null && user.id !== null && user.id !== undefined)
182
+ .map((user) => {
183
+ let key;
184
+ if (!('username' in user)) {
185
+ key = '[missing]';
186
+ }
187
+ else if (user.username === null) {
188
+ key = '[null]';
189
+ }
190
+ else if (user.username === undefined) {
191
+ key = '[undefined]';
192
+ }
193
+ else {
194
+ key = String(user.username).toLowerCase();
195
+ }
196
+ return [key, user.id];
197
+ }));
198
+ }
199
+ }
200
+ exports.EntityResolver = EntityResolver;
201
+ //# sourceMappingURL=EntityResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityResolver.js","sourceRoot":"","sources":["../../src/services/EntityResolver.ts"],"names":[],"mappings":"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"}