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,183 @@
1
+ "use strict";
2
+ /**
3
+ * Filter validation for task filtering operations
4
+ * Handles validation of filter expressions and task listing parameters
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FilterValidator = void 0;
8
+ const types_1 = require("../../types");
9
+ const filters_1 = require("../../utils/filters");
10
+ const memory_1 = require("../../utils/memory");
11
+ const logger_1 = require("../../utils/logger");
12
+ /**
13
+ * Validates filter parameters for task listing operations
14
+ */
15
+ exports.FilterValidator = {
16
+ /**
17
+ * Validates and processes filter string or filter ID
18
+ */
19
+ async validateAndParseFilter(args, storage) {
20
+ let filterExpression = null;
21
+ let filterString;
22
+ const validationWarnings = [];
23
+ try {
24
+ // Handle filter - either direct filter string or saved filter ID
25
+ if (args.filterId) {
26
+ const savedFilter = await storage.get(args.filterId);
27
+ if (!savedFilter) {
28
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Filter with id ${args.filterId} not found`);
29
+ }
30
+ filterString = savedFilter.filter;
31
+ }
32
+ else if (args.filter !== undefined) {
33
+ filterString = args.filter;
34
+ }
35
+ // Parse the filter string for client-side filtering
36
+ if (filterString) {
37
+ const parseResult = (0, filters_1.parseFilterString)(filterString);
38
+ if (parseResult.error) {
39
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Invalid filter syntax: ${parseResult.error.message}${parseResult.error.context ? `\n${parseResult.error.context}` : ''}`);
40
+ }
41
+ filterExpression = parseResult.expression;
42
+ // Log that we're preparing to attempt hybrid filtering
43
+ logger_1.logger.info('Preparing hybrid filtering (server-side attempt + client-side fallback)', {
44
+ filter: filterString,
45
+ });
46
+ }
47
+ return { filterExpression, filterString, validationWarnings };
48
+ }
49
+ catch (error) {
50
+ if (error instanceof types_1.MCPError) {
51
+ throw error;
52
+ }
53
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Filter validation failed: ${error instanceof Error ? error.message : String(error)}`);
54
+ }
55
+ },
56
+ /**
57
+ * Validates pagination and memory constraints
58
+ */
59
+ validateMemoryConstraints(args, requestedPageSize) {
60
+ const warnings = [];
61
+ // Validate pagination limits for memory protection with enhanced analysis
62
+ const taskCountValidation = (0, memory_1.validateTaskCountLimit)(requestedPageSize, undefined, args.filter ? {
63
+ filterExpression: args.filter,
64
+ operationType: 'list'
65
+ } : undefined);
66
+ if (!taskCountValidation.allowed) {
67
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Task count limit exceeded. Requested: ${requestedPageSize}, Max allowed: ${taskCountValidation.maxAllowed}. ` +
68
+ `Estimated memory usage: ${taskCountValidation.estimatedMemoryMB}MB (risk: ${taskCountValidation.riskLevel}). ` +
69
+ 'Reduce the perPage parameter, use pagination with smaller page sizes, or apply more specific filters.');
70
+ }
71
+ // Add warnings for large page sizes
72
+ if (requestedPageSize > 500) {
73
+ warnings.push(`Large page size (${requestedPageSize}) may impact performance. Consider using smaller pages or more specific filters.`);
74
+ }
75
+ // Include enhanced memory validation warnings
76
+ if (taskCountValidation.warnings.length > 0) {
77
+ warnings.push(...taskCountValidation.warnings);
78
+ }
79
+ return {
80
+ isValid: true,
81
+ warnings,
82
+ maxAllowed: taskCountValidation.maxAllowed
83
+ };
84
+ },
85
+ /**
86
+ * Validates the actual loaded task count against limits
87
+ */
88
+ validateLoadedTasks(actualTaskCount, sampleTask) {
89
+ const warnings = [];
90
+ const finalTaskCountValidation = (0, memory_1.validateTaskCountLimit)(actualTaskCount, sampleTask);
91
+ if (!finalTaskCountValidation.allowed) {
92
+ // Log warning but don't fail since tasks are already loaded
93
+ logger_1.logger.warn('Loaded task count exceeds recommended limits', {
94
+ actualCount: actualTaskCount,
95
+ maxRecommended: finalTaskCountValidation.maxAllowed,
96
+ estimatedMemoryMB: finalTaskCountValidation.estimatedMemoryMB,
97
+ riskLevel: finalTaskCountValidation.riskLevel
98
+ });
99
+ warnings.push(`Loaded ${actualTaskCount} tasks, which exceeds recommended limit of ${finalTaskCountValidation.maxAllowed}. ` +
100
+ `Estimated memory usage: ${finalTaskCountValidation.estimatedMemoryMB}MB (risk: ${finalTaskCountValidation.riskLevel}).`);
101
+ // For extremely large datasets, still enforce hard limits
102
+ if (actualTaskCount > finalTaskCountValidation.maxAllowed * 1.5) {
103
+ return {
104
+ isValid: false,
105
+ warnings,
106
+ shouldThrow: true,
107
+ riskLevel: finalTaskCountValidation.riskLevel,
108
+ estimatedMemoryMB: finalTaskCountValidation.estimatedMemoryMB
109
+ };
110
+ }
111
+ }
112
+ // Include warnings from enhanced validation
113
+ if (finalTaskCountValidation.warnings.length > 0) {
114
+ warnings.push(...finalTaskCountValidation.warnings);
115
+ }
116
+ return {
117
+ isValid: true,
118
+ warnings,
119
+ shouldThrow: false,
120
+ riskLevel: finalTaskCountValidation.riskLevel,
121
+ estimatedMemoryMB: finalTaskCountValidation.estimatedMemoryMB
122
+ };
123
+ },
124
+ /**
125
+ * Validates task listing arguments
126
+ */
127
+ validateTaskListingArgs(args) {
128
+ const errors = [];
129
+ // Validate numeric parameters
130
+ if (args.page !== undefined && (args.page < 1 || !Number.isInteger(args.page))) {
131
+ errors.push('Page number must be a positive integer');
132
+ }
133
+ if (args.perPage !== undefined && (args.perPage < 1 || !Number.isInteger(args.perPage))) {
134
+ errors.push('Per page count must be a positive integer');
135
+ }
136
+ if (args.projectId !== undefined && (args.projectId < 1 || !Number.isInteger(args.projectId))) {
137
+ errors.push('Project ID must be a positive integer');
138
+ }
139
+ // Validate boolean parameters
140
+ if (args.done !== undefined && typeof args.done !== 'boolean') {
141
+ errors.push('Done parameter must be a boolean value');
142
+ }
143
+ // Validate string parameters
144
+ if (args.search !== undefined && typeof args.search !== 'string') {
145
+ errors.push('Search parameter must be a string');
146
+ }
147
+ if (args.sort !== undefined && typeof args.sort !== 'string') {
148
+ errors.push('Sort parameter must be a string');
149
+ }
150
+ if (args.filter !== undefined && typeof args.filter !== 'string') {
151
+ errors.push('Filter parameter must be a string');
152
+ }
153
+ if (args.filterId !== undefined && typeof args.filterId !== 'string') {
154
+ errors.push('Filter ID parameter must be a string');
155
+ }
156
+ return errors;
157
+ },
158
+ /**
159
+ * Performs comprehensive validation of task filtering parameters
160
+ */
161
+ async validateTaskFiltering(args, storage, _config = {}) {
162
+ const allWarnings = [];
163
+ // Validate basic arguments
164
+ const argValidationErrors = this.validateTaskListingArgs(args);
165
+ if (argValidationErrors.length > 0) {
166
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Invalid task listing arguments: ${argValidationErrors.join(', ')}`);
167
+ }
168
+ // Validate and parse filter
169
+ const filterValidation = await this.validateAndParseFilter(args, storage);
170
+ allWarnings.push(...filterValidation.validationWarnings);
171
+ // Validate memory constraints
172
+ const pageSize = args.perPage || 1000; // Default pagination
173
+ const memoryValidation = this.validateMemoryConstraints(args, pageSize);
174
+ allWarnings.push(...memoryValidation.warnings);
175
+ return {
176
+ filterExpression: filterValidation.filterExpression,
177
+ filterString: filterValidation.filterString,
178
+ validationWarnings: allWarnings,
179
+ memoryValidation
180
+ };
181
+ }
182
+ };
183
+ //# sourceMappingURL=FilterValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterValidator.js","sourceRoot":"","sources":["../../../src/storage/filtering/FilterValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Simplified storage module - 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 { SimpleFilterStorage, storageManager, FilterStorageManager } from './SimpleFilterStorage';
10
+ import type { FilterStorage, SavedFilter } from '../types/filters';
11
+ import { StorageDataError } from '../utils/storage-errors';
12
+ export { SimpleFilterStorage, storageManager, FilterStorageManager };
13
+ export type { FilterStorage, SavedFilter };
14
+ export { resolveTemplatesPersistPath, loadTemplatesFile, writeTemplatesFileAtomic, } from './templateFileStore';
15
+ export type { PersistedTemplateRecord } from './templateFileStore';
16
+ export { StorageDataError };
17
+ /**
18
+ * Factory function to create filter storage instance
19
+ * (Maintains API compatibility with previous code)
20
+ */
21
+ export declare function createFilterStorage(sessionId: string, userId?: string, apiUrl?: string, _forcePersistent?: boolean): Promise<FilterStorage>;
22
+ /**
23
+ * Get storage statistics for all active sessions
24
+ */
25
+ export declare function getAllStorageStats(): Promise<{
26
+ persistentSessions: Array<Record<string, never>>;
27
+ memorySessions: Array<{
28
+ sessionId: string;
29
+ filterCount: number;
30
+ createdAt: Date;
31
+ lastAccessAt: Date;
32
+ memoryUsageKb: number;
33
+ }>;
34
+ totalSessions: number;
35
+ totalFilters: number;
36
+ }>;
37
+ /**
38
+ * Perform health check on storage system
39
+ */
40
+ export declare function healthCheckAllStorage(): Promise<{
41
+ overall: 'healthy' | 'degraded' | 'unhealthy';
42
+ persistent: {
43
+ healthy: boolean;
44
+ sessions: Array<Record<string, never>>;
45
+ };
46
+ memory: {
47
+ healthy: boolean;
48
+ sessionCount: number;
49
+ };
50
+ details?: Record<string, unknown>;
51
+ }>;
52
+ /**
53
+ * Migration utility (no-op in simplified version)
54
+ */
55
+ export declare function migrateMemoryToPersistent(): {
56
+ success: boolean;
57
+ migratedSessions: number;
58
+ migratedFilters: number;
59
+ errors: string[];
60
+ };
61
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,oBAAoB,EAAE,CAAC;AAGrE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;AAK3C,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAGnE,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,gBAAgB,UAAQ,GACvB,OAAO,CAAC,aAAa,CAAC,CASxB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC;IAClD,kBAAkB,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACjD,cAAc,EAAE,KAAK,CAAC;QACpB,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;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CAwBD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACrD,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;IAC9C,UAAU,EAAE;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;KACxC,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC,CAwCD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAQA"}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ /**
3
+ * Simplified storage module - eliminates over-engineering
4
+ *
5
+ * Replaces 33 files and 9,803 lines with essential functionality:
6
+ * - Session-isolated filter storage
7
+ * - Thread-safe operations with mutex
8
+ * - Same external API as before
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.StorageDataError = exports.writeTemplatesFileAtomic = exports.loadTemplatesFile = exports.resolveTemplatesPersistPath = exports.FilterStorageManager = exports.storageManager = exports.SimpleFilterStorage = void 0;
12
+ exports.createFilterStorage = createFilterStorage;
13
+ exports.getAllStorageStats = getAllStorageStats;
14
+ exports.healthCheckAllStorage = healthCheckAllStorage;
15
+ exports.migrateMemoryToPersistent = migrateMemoryToPersistent;
16
+ const logger_1 = require("../utils/logger");
17
+ const SimpleFilterStorage_1 = require("./SimpleFilterStorage");
18
+ Object.defineProperty(exports, "SimpleFilterStorage", { enumerable: true, get: function () { return SimpleFilterStorage_1.SimpleFilterStorage; } });
19
+ Object.defineProperty(exports, "storageManager", { enumerable: true, get: function () { return SimpleFilterStorage_1.storageManager; } });
20
+ Object.defineProperty(exports, "FilterStorageManager", { enumerable: true, get: function () { return SimpleFilterStorage_1.FilterStorageManager; } });
21
+ const storage_errors_1 = require("../utils/storage-errors");
22
+ Object.defineProperty(exports, "StorageDataError", { enumerable: true, get: function () { return storage_errors_1.StorageDataError; } });
23
+ // Opt-in file-backed persistence for templates (templates.ts is the only
24
+ // consumer — see templateFileStore.ts's header for why this isn't a general
25
+ // SimpleFilterStorage adapter).
26
+ var templateFileStore_1 = require("./templateFileStore");
27
+ Object.defineProperty(exports, "resolveTemplatesPersistPath", { enumerable: true, get: function () { return templateFileStore_1.resolveTemplatesPersistPath; } });
28
+ Object.defineProperty(exports, "loadTemplatesFile", { enumerable: true, get: function () { return templateFileStore_1.loadTemplatesFile; } });
29
+ Object.defineProperty(exports, "writeTemplatesFileAtomic", { enumerable: true, get: function () { return templateFileStore_1.writeTemplatesFileAtomic; } });
30
+ /**
31
+ * Factory function to create filter storage instance
32
+ * (Maintains API compatibility with previous code)
33
+ */
34
+ async function createFilterStorage(sessionId, userId, apiUrl, _forcePersistent = false) {
35
+ // Ignore forcePersistent - always use simple in-memory storage
36
+ logger_1.logger.debug('Creating simple filter storage', {
37
+ sessionId,
38
+ userId,
39
+ apiUrl,
40
+ });
41
+ return await SimpleFilterStorage_1.storageManager.getStorage(sessionId, userId, apiUrl);
42
+ }
43
+ /**
44
+ * Get storage statistics for all active sessions
45
+ */
46
+ async function getAllStorageStats() {
47
+ try {
48
+ const memoryStats = await SimpleFilterStorage_1.storageManager.getAllStats();
49
+ const totalSessions = memoryStats.length;
50
+ const totalFilters = memoryStats.reduce((sum, s) => sum + s.filterCount, 0);
51
+ return {
52
+ persistentSessions: [], // No persistent storage in simplified version
53
+ memorySessions: memoryStats,
54
+ totalSessions,
55
+ totalFilters,
56
+ };
57
+ }
58
+ catch (error) {
59
+ logger_1.logger.error('Failed to get storage statistics', {
60
+ error: error instanceof Error ? error.message : 'Unknown error',
61
+ });
62
+ return {
63
+ persistentSessions: [],
64
+ memorySessions: [],
65
+ totalSessions: 0,
66
+ totalFilters: 0,
67
+ };
68
+ }
69
+ }
70
+ /**
71
+ * Perform health check on storage system
72
+ */
73
+ async function healthCheckAllStorage() {
74
+ try {
75
+ const memoryStats = await SimpleFilterStorage_1.storageManager.getAllStats();
76
+ return {
77
+ overall: 'healthy',
78
+ persistent: {
79
+ healthy: true, // Not applicable in simplified version
80
+ sessions: [],
81
+ },
82
+ memory: {
83
+ healthy: true,
84
+ sessionCount: memoryStats.length,
85
+ },
86
+ details: {
87
+ timestamp: new Date().toISOString(),
88
+ storageType: 'memory',
89
+ },
90
+ };
91
+ }
92
+ catch (error) {
93
+ logger_1.logger.error('Failed to perform storage health check', {
94
+ error: error instanceof Error ? error.message : 'Unknown error',
95
+ });
96
+ return {
97
+ overall: 'unhealthy',
98
+ persistent: {
99
+ healthy: true,
100
+ sessions: [],
101
+ },
102
+ memory: {
103
+ healthy: false,
104
+ sessionCount: 0,
105
+ },
106
+ details: {
107
+ error: error instanceof Error ? error.message : 'Unknown error',
108
+ timestamp: new Date().toISOString(),
109
+ },
110
+ };
111
+ }
112
+ }
113
+ /**
114
+ * Migration utility (no-op in simplified version)
115
+ */
116
+ function migrateMemoryToPersistent() {
117
+ logger_1.logger.info('Migration not needed - using simplified storage');
118
+ return {
119
+ success: true,
120
+ migratedSessions: 0,
121
+ migratedFilters: 0,
122
+ errors: [],
123
+ };
124
+ }
125
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Opt-in file-backed persistence for templates.
3
+ *
4
+ * Templates are in-memory only by default (backed by `SimpleFilterStorage`,
5
+ * session-scoped, lost on process restart — see docs/STORAGE.md). When a
6
+ * persist path is configured (`templates.persistPath` config key, or the
7
+ * `VIKUNJA_MCP_TEMPLATES_FILE` env var, which wins — see
8
+ * docs/CONFIGURATION.md), `src/tools/templates.ts` write-throughs the full
9
+ * template set to that file on every mutation and reloads it the first time
10
+ * templates storage is touched in a process.
11
+ *
12
+ * This is intentionally *not* a general-purpose persistence adapter bolted
13
+ * onto `SimpleFilterStorage`: templates.ts is the only consumer of
14
+ * durability today (owner decision, see the N3-templates-persistence work
15
+ * item), so this module stays scoped to templates rather than growing into a
16
+ * second storage backend for saved filters. SQLite was evaluated for this
17
+ * and parked — native-dep cost outweighs the need for a single opt-in JSON
18
+ * file (see docs/ROADMAP.md).
19
+ */
20
+ /**
21
+ * A single persisted template entry. `data` is an opaque JSON-serialized
22
+ * blob (the `TemplateData` shape from templates.ts) — this module doesn't
23
+ * need to know its internal fields, only that it round-trips.
24
+ */
25
+ export interface PersistedTemplateRecord {
26
+ /** The template's own id (`template_<timestamp>`), used for lookups. */
27
+ id: string;
28
+ /** Same as `id` today — kept distinct for forward-compatibility with the
29
+ * underlying SavedFilter-shaped storage record. */
30
+ name: string;
31
+ data: string;
32
+ }
33
+ /**
34
+ * Resolve the effective templates persistence path.
35
+ *
36
+ * `VIKUNJA_MCP_TEMPLATES_FILE` env var wins over the `templates.persistPath`
37
+ * config value when both are set, matching ConfigurationManager's general
38
+ * env-over-config-file precedence (see docs/CONFIGURATION.md). Returns
39
+ * `undefined` when neither is set — persistence stays opt-in, and the
40
+ * in-memory-only default is byte-identical to pre-persistence behavior.
41
+ */
42
+ export declare function resolveTemplatesPersistPath(configuredPath: string | undefined): string | undefined;
43
+ /**
44
+ * Load persisted templates from disk.
45
+ *
46
+ * Never throws: a missing file (first run / fresh volume) or a corrupt /
47
+ * malformed file both fall back to an empty template set, logging a warning
48
+ * for the latter so operators can tell "opted out" from "data got mangled".
49
+ */
50
+ export declare function loadTemplatesFile(filePath: string): PersistedTemplateRecord[];
51
+ /**
52
+ * Write the full template set to `filePath` atomically: write to a temp
53
+ * file in the same directory, then rename it over the target path. Rename
54
+ * is atomic on the same filesystem (POSIX and Windows both guarantee this),
55
+ * so a reader never observes a partially-written file, and a crash mid-write
56
+ * leaves the previous good file intact.
57
+ *
58
+ * Creates the parent directory if it doesn't exist yet, so a fresh Docker
59
+ * volume mount works without a separate provisioning step.
60
+ */
61
+ export declare function writeTemplatesFileAtomic(filePath: string, records: PersistedTemplateRecord[]): void;
62
+ //# sourceMappingURL=templateFileStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templateFileStore.d.ts","sourceRoot":"","sources":["../../src/storage/templateFileStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,wEAAwE;IACxE,EAAE,EAAE,MAAM,CAAC;IACX;wDACoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAYD;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CASlG;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,uBAAuB,EAAE,CA2C7E;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,EAAE,GAAG,IAAI,CAMnG"}
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ /**
3
+ * Opt-in file-backed persistence for templates.
4
+ *
5
+ * Templates are in-memory only by default (backed by `SimpleFilterStorage`,
6
+ * session-scoped, lost on process restart — see docs/STORAGE.md). When a
7
+ * persist path is configured (`templates.persistPath` config key, or the
8
+ * `VIKUNJA_MCP_TEMPLATES_FILE` env var, which wins — see
9
+ * docs/CONFIGURATION.md), `src/tools/templates.ts` write-throughs the full
10
+ * template set to that file on every mutation and reloads it the first time
11
+ * templates storage is touched in a process.
12
+ *
13
+ * This is intentionally *not* a general-purpose persistence adapter bolted
14
+ * onto `SimpleFilterStorage`: templates.ts is the only consumer of
15
+ * durability today (owner decision, see the N3-templates-persistence work
16
+ * item), so this module stays scoped to templates rather than growing into a
17
+ * second storage backend for saved filters. SQLite was evaluated for this
18
+ * and parked — native-dep cost outweighs the need for a single opt-in JSON
19
+ * file (see docs/ROADMAP.md).
20
+ */
21
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ var desc = Object.getOwnPropertyDescriptor(m, k);
24
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
25
+ desc = { enumerable: true, get: function() { return m[k]; } };
26
+ }
27
+ Object.defineProperty(o, k2, desc);
28
+ }) : (function(o, m, k, k2) {
29
+ if (k2 === undefined) k2 = k;
30
+ o[k2] = m[k];
31
+ }));
32
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
33
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
34
+ }) : function(o, v) {
35
+ o["default"] = v;
36
+ });
37
+ var __importStar = (this && this.__importStar) || (function () {
38
+ var ownKeys = function(o) {
39
+ ownKeys = Object.getOwnPropertyNames || function (o) {
40
+ var ar = [];
41
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
42
+ return ar;
43
+ };
44
+ return ownKeys(o);
45
+ };
46
+ return function (mod) {
47
+ if (mod && mod.__esModule) return mod;
48
+ var result = {};
49
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
50
+ __setModuleDefault(result, mod);
51
+ return result;
52
+ };
53
+ })();
54
+ Object.defineProperty(exports, "__esModule", { value: true });
55
+ exports.resolveTemplatesPersistPath = resolveTemplatesPersistPath;
56
+ exports.loadTemplatesFile = loadTemplatesFile;
57
+ exports.writeTemplatesFileAtomic = writeTemplatesFileAtomic;
58
+ const fs = __importStar(require("fs"));
59
+ const path = __importStar(require("path"));
60
+ const logger_1 = require("../utils/logger");
61
+ function isPersistedTemplateRecord(value) {
62
+ if (typeof value !== 'object' || value === null) {
63
+ return false;
64
+ }
65
+ const record = value;
66
+ return (typeof record.id === 'string' && typeof record.name === 'string' && typeof record.data === 'string');
67
+ }
68
+ /**
69
+ * Resolve the effective templates persistence path.
70
+ *
71
+ * `VIKUNJA_MCP_TEMPLATES_FILE` env var wins over the `templates.persistPath`
72
+ * config value when both are set, matching ConfigurationManager's general
73
+ * env-over-config-file precedence (see docs/CONFIGURATION.md). Returns
74
+ * `undefined` when neither is set — persistence stays opt-in, and the
75
+ * in-memory-only default is byte-identical to pre-persistence behavior.
76
+ */
77
+ function resolveTemplatesPersistPath(configuredPath) {
78
+ const envPath = process.env.VIKUNJA_MCP_TEMPLATES_FILE;
79
+ if (envPath !== undefined && envPath.trim().length > 0) {
80
+ return envPath;
81
+ }
82
+ if (configuredPath !== undefined && configuredPath.trim().length > 0) {
83
+ return configuredPath;
84
+ }
85
+ return undefined;
86
+ }
87
+ /**
88
+ * Load persisted templates from disk.
89
+ *
90
+ * Never throws: a missing file (first run / fresh volume) or a corrupt /
91
+ * malformed file both fall back to an empty template set, logging a warning
92
+ * for the latter so operators can tell "opted out" from "data got mangled".
93
+ */
94
+ function loadTemplatesFile(filePath) {
95
+ let raw;
96
+ try {
97
+ raw = fs.readFileSync(filePath, 'utf-8');
98
+ }
99
+ catch (error) {
100
+ const code = error.code;
101
+ if (code !== 'ENOENT') {
102
+ logger_1.logger.warn('Failed to read templates persistence file, starting with an empty template set', {
103
+ filePath,
104
+ error: error instanceof Error ? error.message : String(error),
105
+ });
106
+ }
107
+ return [];
108
+ }
109
+ let parsed;
110
+ try {
111
+ parsed = JSON.parse(raw);
112
+ }
113
+ catch (error) {
114
+ logger_1.logger.warn('Templates persistence file is not valid JSON, starting with an empty template set', {
115
+ filePath,
116
+ error: error instanceof Error ? error.message : String(error),
117
+ });
118
+ return [];
119
+ }
120
+ if (!Array.isArray(parsed)) {
121
+ logger_1.logger.warn('Templates persistence file did not contain a JSON array, starting with an empty template set', { filePath });
122
+ return [];
123
+ }
124
+ const records = parsed.filter(isPersistedTemplateRecord);
125
+ if (records.length !== parsed.length) {
126
+ logger_1.logger.warn('Templates persistence file contained malformed entries, dropping them', {
127
+ filePath,
128
+ totalEntries: parsed.length,
129
+ validEntries: records.length,
130
+ });
131
+ }
132
+ return records;
133
+ }
134
+ /**
135
+ * Write the full template set to `filePath` atomically: write to a temp
136
+ * file in the same directory, then rename it over the target path. Rename
137
+ * is atomic on the same filesystem (POSIX and Windows both guarantee this),
138
+ * so a reader never observes a partially-written file, and a crash mid-write
139
+ * leaves the previous good file intact.
140
+ *
141
+ * Creates the parent directory if it doesn't exist yet, so a fresh Docker
142
+ * volume mount works without a separate provisioning step.
143
+ */
144
+ function writeTemplatesFileAtomic(filePath, records) {
145
+ const dir = path.dirname(filePath);
146
+ fs.mkdirSync(dir, { recursive: true });
147
+ const tmpPath = path.join(dir, `.${path.basename(filePath)}.${process.pid}.${Date.now()}.tmp`);
148
+ fs.writeFileSync(tmpPath, JSON.stringify(records, null, 2), 'utf-8');
149
+ fs.renameSync(tmpPath, filePath);
150
+ }
151
+ //# sourceMappingURL=templateFileStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templateFileStore.js","sourceRoot":"","sources":["../../src/storage/templateFileStore.ts"],"names":[],"mappings":"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"}