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,425 @@
1
+ "use strict";
2
+ /**
3
+ * Project CRUD Operations Module
4
+ * Handles basic Create, Read, Update, Delete operations for projects
5
+ *
6
+ * Migrated off the legacy client (Wave D domain migration, tracking issue #28)
7
+ * onto `vikunjaRestRequest` + types generated from the vendored OpenAPI spec.
8
+ * `POST /projects/{id}` is a full-model-replace endpoint (see
9
+ * docs/ENDPOINT-PLAYBOOK.md §4 and docs/API_NOTES.md "Project Operations"):
10
+ * `buildProjectUpdatePayload` fetches the current project and merges the
11
+ * caller's changes onto it before every update-shaped write
12
+ * (updateProject/archiveProject/unarchiveProject/moveProject) so omitted
13
+ * fields survive the round trip — this merge semantics is load-bearing and
14
+ * must not change shape during this migration.
15
+ *
16
+ * Endpoints (verified against docs/vikunja-openapi.json):
17
+ * - GET /projects list
18
+ * - PUT /projects create
19
+ * - GET /projects/{id} get
20
+ * - POST /projects/{id} update (full-model-replace)
21
+ * - DELETE /projects/{id} delete
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.buildProjectUpdatePayload = buildProjectUpdatePayload;
25
+ exports.listProjects = listProjects;
26
+ exports.getProject = getProject;
27
+ exports.createProject = createProject;
28
+ exports.updateProject = updateProject;
29
+ exports.deleteProject = deleteProject;
30
+ exports.archiveProject = archiveProject;
31
+ exports.unarchiveProject = unarchiveProject;
32
+ exports.fetchAllProjects = fetchAllProjects;
33
+ const types_1 = require("../../types");
34
+ const error_handler_1 = require("../../utils/error-handler");
35
+ const vikunja_rest_1 = require("../../utils/vikunja-rest");
36
+ const validation_1 = require("./validation");
37
+ const response_formatter_1 = require("./response-formatter");
38
+ const response_factory_1 = require("../../utils/response-factory");
39
+ /**
40
+ * Builds a project update payload by merging current project state with
41
+ * requested field changes. Vikunja's update endpoint replaces the whole
42
+ * model, so omitted fields would otherwise be cleared (e.g. parent_project_id → 0).
43
+ */
44
+ function buildProjectUpdatePayload(currentProject, updates) {
45
+ return {
46
+ ...currentProject,
47
+ ...(updates.title !== undefined && { title: updates.title.trim() }),
48
+ ...(updates.description !== undefined && { description: updates.description.trim() }),
49
+ ...(updates.parentProjectId !== undefined && { parent_project_id: updates.parentProjectId }),
50
+ ...(updates.isArchived !== undefined && { is_archived: updates.isArchived }),
51
+ ...(updates.hexColor !== undefined && { hex_color: updates.hexColor.toLowerCase() }),
52
+ };
53
+ }
54
+ /**
55
+ * Re-throws a REST-layer 404 (`vikunjaRestRequest` throws `MCPError` with
56
+ * `details.statusCode`, not the bare `.statusCode` property the legacy client's
57
+ * errors carried, so the shared `handleStatusCodeError`/`wrapToolError` 404
58
+ * detection no longer fires) as the same friendly "Project with ID X not
59
+ * found" message the legacy-client-backed implementation produced — the same
60
+ * translation `rethrowProjectNotFound` in `sharing.ts` established for this
61
+ * domain in an earlier Wave D PR. Everything else (MCPError or not) is
62
+ * rethrown/wrapped unchanged.
63
+ */
64
+ function rethrowProjectNotFound(error, id, context) {
65
+ if (error instanceof types_1.MCPError) {
66
+ if (error.details?.statusCode === 404) {
67
+ throw new types_1.MCPError(types_1.ErrorCode.NOT_FOUND, `Project with ID ${id} not found`);
68
+ }
69
+ throw error;
70
+ }
71
+ throw (0, error_handler_1.transformApiError)(error, context);
72
+ }
73
+ /**
74
+ * Fetches all projects (single large page) for hierarchy validation
75
+ * (depth/parent checks). Failures are swallowed by callers that treat this
76
+ * as best-effort — see the original legacy-client-backed behavior this
77
+ * preserves.
78
+ */
79
+ async function fetchAllProjects(authManager) {
80
+ const response = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', '/projects?per_page=1000');
81
+ return Array.isArray(response) ? response : [];
82
+ }
83
+ /**
84
+ * Lists projects with pagination and filtering
85
+ */
86
+ async function listProjects(args, authManager) {
87
+ const { page = 1, perPage = 50, search, isArchived, verbosity, useOptimizedFormat, useAorp } = args;
88
+ try {
89
+ const params = new URLSearchParams();
90
+ params.set('page', String(page));
91
+ params.set('per_page', String(perPage));
92
+ if (search !== undefined) {
93
+ params.set('s', search);
94
+ }
95
+ if (isArchived !== undefined) {
96
+ params.set('is_archived', String(isArchived));
97
+ }
98
+ const response = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/projects?${params.toString()}`);
99
+ // GET /projects returns a bare array — there is no {data, total} envelope
100
+ // (see docs/API_NOTES.md). Total item/page counts are therefore unknown;
101
+ // createProjectListResponse derives `hasMore` honestly from the page size
102
+ // instead of fabricating a total.
103
+ const responseArray = Array.isArray(response) ? response : [response];
104
+ // Build options object, only including defined properties to satisfy exactOptionalPropertyTypes
105
+ const options = {};
106
+ if (verbosity !== undefined) {
107
+ options.verbosity = verbosity;
108
+ }
109
+ if (useOptimizedFormat !== undefined) {
110
+ options.useOptimizedFormat = useOptimizedFormat;
111
+ }
112
+ if (useAorp !== undefined) {
113
+ options.useAorp = useAorp;
114
+ }
115
+ const result = (0, response_formatter_1.createProjectListResponse)(responseArray, page, perPage, options);
116
+ return {
117
+ content: [
118
+ {
119
+ type: 'text',
120
+ text: (0, response_factory_1.formatAorpAsMarkdown)(result.response),
121
+ }
122
+ ]
123
+ };
124
+ }
125
+ catch (error) {
126
+ if (error instanceof types_1.MCPError) {
127
+ throw error;
128
+ }
129
+ throw (0, error_handler_1.transformApiError)(error, 'Failed to list projects');
130
+ }
131
+ }
132
+ /**
133
+ * Gets a single project by ID
134
+ */
135
+ async function getProject(args, authManager) {
136
+ const { id, verbosity, useOptimizedFormat, useAorp } = args;
137
+ try {
138
+ (0, validation_1.validateId)(id, 'project id');
139
+ const project = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/projects/${id}`);
140
+ const result = (0, response_formatter_1.createProjectResponse)('get_project', `Retrieved project: ${project.title}`, { project }, {}, verbosity, useOptimizedFormat, useAorp);
141
+ return {
142
+ content: [
143
+ {
144
+ type: 'text',
145
+ text: (0, response_factory_1.formatAorpAsMarkdown)(result.response),
146
+ }
147
+ ]
148
+ };
149
+ }
150
+ catch (error) {
151
+ if (error instanceof types_1.MCPError && error.code === types_1.ErrorCode.VALIDATION_ERROR) {
152
+ throw error;
153
+ }
154
+ rethrowProjectNotFound(error, id, 'Failed to get project');
155
+ }
156
+ }
157
+ /**
158
+ * Creates a new project
159
+ */
160
+ async function createProject(args, authManager) {
161
+ const { title, description, parentProjectId, isArchived, hexColor, verbosity, useOptimizedFormat, useAorp } = args;
162
+ try {
163
+ // Validate input data, filter out undefined values for exactOptionalPropertyTypes
164
+ const validationData = {};
165
+ if (title !== undefined) {
166
+ validationData.title = title;
167
+ }
168
+ if (hexColor !== undefined) {
169
+ validationData.hexColor = hexColor;
170
+ }
171
+ if (parentProjectId !== undefined) {
172
+ validationData.parentProjectId = parentProjectId;
173
+ }
174
+ (0, validation_1.validateProjectData)(validationData);
175
+ // Get all projects to validate hierarchy if parent is specified
176
+ let allProjects = [];
177
+ if (parentProjectId) {
178
+ try {
179
+ allProjects = await fetchAllProjects(authManager);
180
+ }
181
+ catch {
182
+ // Continue with validation if we can't get all projects
183
+ }
184
+ (0, validation_1.validateProjectData)({ parentProjectId }, allProjects);
185
+ // Check depth constraints
186
+ if (allProjects.length > 0) {
187
+ const depth = (0, validation_1.calculateProjectDepth)(parentProjectId, allProjects);
188
+ if (depth >= 10) { // MAX_PROJECT_DEPTH
189
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'Maximum allowed depth is 10 levels');
190
+ }
191
+ }
192
+ }
193
+ // Normalize hex color if provided
194
+ let normalizedColor = hexColor;
195
+ if (hexColor) {
196
+ normalizedColor = hexColor.toLowerCase();
197
+ }
198
+ // Build projectData object, only including defined properties to satisfy exactOptionalPropertyTypes
199
+ const projectData = {
200
+ title: title.trim(),
201
+ };
202
+ if (description !== undefined) {
203
+ projectData.description = description?.trim() || '';
204
+ }
205
+ if (isArchived !== undefined) {
206
+ projectData.is_archived = isArchived;
207
+ }
208
+ if (parentProjectId !== undefined) {
209
+ projectData.parent_project_id = parentProjectId;
210
+ }
211
+ if (normalizedColor !== undefined) {
212
+ projectData.hex_color = normalizedColor;
213
+ }
214
+ const createdProject = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'PUT', '/projects', projectData);
215
+ const result = (0, response_formatter_1.createProjectResponse)('create_project', `Project "${createdProject.title}" created successfully`, { project: createdProject }, {}, verbosity, useOptimizedFormat, useAorp);
216
+ return {
217
+ content: [
218
+ {
219
+ type: 'text',
220
+ text: (0, response_factory_1.formatAorpAsMarkdown)(result.response),
221
+ }
222
+ ]
223
+ };
224
+ }
225
+ catch (error) {
226
+ if (error instanceof types_1.MCPError) {
227
+ throw error;
228
+ }
229
+ throw (0, error_handler_1.transformApiError)(error, 'Failed to create project');
230
+ }
231
+ }
232
+ /**
233
+ * Updates an existing project
234
+ */
235
+ async function updateProject(args, authManager) {
236
+ const { id, title, description, parentProjectId, isArchived, hexColor, verbosity, useOptimizedFormat, useAorp } = args;
237
+ try {
238
+ (0, validation_1.validateId)(id, 'project id');
239
+ // Check if at least one field to update is provided
240
+ const hasUpdateFields = (title !== undefined ||
241
+ description !== undefined ||
242
+ parentProjectId !== undefined ||
243
+ isArchived !== undefined ||
244
+ hexColor !== undefined);
245
+ if (!hasUpdateFields) {
246
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'No fields to update provided');
247
+ }
248
+ // Validate hex color early if provided
249
+ if (hexColor !== undefined) {
250
+ (0, validation_1.validateHexColor)(hexColor);
251
+ }
252
+ // Get current project
253
+ const currentProject = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/projects/${id}`);
254
+ // Get all projects for hierarchy validation
255
+ let allProjects = [];
256
+ if (parentProjectId !== undefined || (currentProject && currentProject.parent_project_id)) {
257
+ try {
258
+ allProjects = await fetchAllProjects(authManager);
259
+ }
260
+ catch {
261
+ // Continue if we can't get all projects
262
+ }
263
+ }
264
+ // Validate update data, filter out undefined values for exactOptionalPropertyTypes
265
+ const validationUpdateData = {};
266
+ if (title !== undefined) {
267
+ validationUpdateData.title = title;
268
+ }
269
+ if (hexColor !== undefined) {
270
+ validationUpdateData.hexColor = hexColor;
271
+ }
272
+ const resolvedParentProjectId = parentProjectId ?? (currentProject && typeof currentProject.parent_project_id === 'number' ? currentProject.parent_project_id : undefined);
273
+ if (resolvedParentProjectId !== undefined) {
274
+ validationUpdateData.parentProjectId = resolvedParentProjectId;
275
+ }
276
+ (0, validation_1.validateProjectData)(validationUpdateData, allProjects);
277
+ // Check depth constraints if parentProjectId is being updated
278
+ if (parentProjectId !== undefined && allProjects.length > 0) {
279
+ const depth = (0, validation_1.calculateProjectDepth)(parentProjectId, allProjects);
280
+ if (depth >= 10) { // MAX_PROJECT_DEPTH
281
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'Maximum allowed depth is 10 levels');
282
+ }
283
+ }
284
+ // Vikunja project update is a full-model replace. Merge with the current
285
+ // project so omitted fields (especially parent_project_id) are preserved.
286
+ // Detaching from a parent requires an explicit parentProjectId change
287
+ // (or using the move subcommand). See issue #45.
288
+ const fieldUpdates = {};
289
+ if (title !== undefined)
290
+ fieldUpdates.title = title;
291
+ if (description !== undefined)
292
+ fieldUpdates.description = description;
293
+ if (parentProjectId !== undefined)
294
+ fieldUpdates.parentProjectId = parentProjectId;
295
+ if (isArchived !== undefined)
296
+ fieldUpdates.isArchived = isArchived;
297
+ if (hexColor !== undefined)
298
+ fieldUpdates.hexColor = hexColor;
299
+ const updateData = buildProjectUpdatePayload(currentProject, fieldUpdates);
300
+ const updatedProject = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'POST', `/projects/${id}`, updateData);
301
+ const result = (0, response_formatter_1.createProjectResponse)('update_project', `Project "${updatedProject.title}" updated successfully`, { project: updatedProject }, {}, verbosity, useOptimizedFormat, useAorp);
302
+ return {
303
+ content: [
304
+ {
305
+ type: 'text',
306
+ text: (0, response_factory_1.formatAorpAsMarkdown)(result.response),
307
+ }
308
+ ]
309
+ };
310
+ }
311
+ catch (error) {
312
+ if (error instanceof types_1.MCPError && error.code === types_1.ErrorCode.VALIDATION_ERROR) {
313
+ throw error;
314
+ }
315
+ rethrowProjectNotFound(error, id, 'Failed to update project');
316
+ }
317
+ }
318
+ /**
319
+ * Deletes a project
320
+ */
321
+ async function deleteProject(args, authManager) {
322
+ const { id, verbosity, useOptimizedFormat, useAorp } = args;
323
+ try {
324
+ (0, validation_1.validateId)(id, 'project id');
325
+ // Get project details before deletion
326
+ const project = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/projects/${id}`);
327
+ await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'DELETE', `/projects/${id}`);
328
+ const result = (0, response_formatter_1.createProjectResponse)('delete_project', `Deleted project: ${project.title}`, { deleted: true, projectId: id, projectTitle: project.title }, {}, verbosity, useOptimizedFormat, useAorp);
329
+ return {
330
+ content: [
331
+ {
332
+ type: 'text',
333
+ text: (0, response_factory_1.formatAorpAsMarkdown)(result.response),
334
+ }
335
+ ]
336
+ };
337
+ }
338
+ catch (error) {
339
+ if (error instanceof types_1.MCPError && error.code === types_1.ErrorCode.VALIDATION_ERROR) {
340
+ throw error;
341
+ }
342
+ rethrowProjectNotFound(error, id, 'Failed to delete project');
343
+ }
344
+ }
345
+ /**
346
+ * Archives a project
347
+ */
348
+ async function archiveProject(args, authManager) {
349
+ const { id, verbosity, useOptimizedFormat, useAorp } = args;
350
+ try {
351
+ (0, validation_1.validateId)(id, 'project id');
352
+ // Get current project first
353
+ const currentProject = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/projects/${id}`);
354
+ // Check if project is already archived
355
+ if (currentProject.is_archived) {
356
+ const result = (0, response_formatter_1.createProjectResponse)('archive_project', `Project "${currentProject.title}" is already archived`, { project: currentProject }, {}, verbosity, useOptimizedFormat, useAorp);
357
+ return {
358
+ content: [
359
+ {
360
+ type: 'text',
361
+ text: (0, response_factory_1.formatAorpAsMarkdown)(result.response),
362
+ }
363
+ ]
364
+ };
365
+ }
366
+ // Archive the project (merge so parent/other fields are not wiped)
367
+ const project = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'POST', `/projects/${id}`, buildProjectUpdatePayload(currentProject, { isArchived: true }));
368
+ const result = (0, response_formatter_1.createProjectResponse)('archive_project', `Project "${project.title}" archived successfully`, { project }, {}, verbosity, useOptimizedFormat, useAorp);
369
+ return {
370
+ content: [
371
+ {
372
+ type: 'text',
373
+ text: (0, response_factory_1.formatAorpAsMarkdown)(result.response),
374
+ }
375
+ ]
376
+ };
377
+ }
378
+ catch (error) {
379
+ if (error instanceof types_1.MCPError && error.code === types_1.ErrorCode.VALIDATION_ERROR) {
380
+ throw error;
381
+ }
382
+ rethrowProjectNotFound(error, id, 'Failed to archive project');
383
+ }
384
+ }
385
+ /**
386
+ * Unarchives a project
387
+ */
388
+ async function unarchiveProject(args, authManager) {
389
+ const { id, verbosity, useOptimizedFormat, useAorp } = args;
390
+ try {
391
+ (0, validation_1.validateId)(id, 'project id');
392
+ // Get current project first
393
+ const currentProject = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/projects/${id}`);
394
+ // Check if project is already active (not archived)
395
+ if (!currentProject.is_archived) {
396
+ const result = (0, response_formatter_1.createProjectResponse)('unarchive_project', `Project "${currentProject.title}" is already active (not archived)`, { project: currentProject }, {}, verbosity, useOptimizedFormat, useAorp);
397
+ return {
398
+ content: [
399
+ {
400
+ type: 'text',
401
+ text: (0, response_factory_1.formatAorpAsMarkdown)(result.response),
402
+ }
403
+ ]
404
+ };
405
+ }
406
+ // Unarchive the project (merge so parent/other fields are not wiped)
407
+ const project = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'POST', `/projects/${id}`, buildProjectUpdatePayload(currentProject, { isArchived: false }));
408
+ const result = (0, response_formatter_1.createProjectResponse)('unarchive_project', `Project "${project.title}" unarchived successfully`, { project }, {}, verbosity, useOptimizedFormat, useAorp);
409
+ return {
410
+ content: [
411
+ {
412
+ type: 'text',
413
+ text: (0, response_factory_1.formatAorpAsMarkdown)(result.response),
414
+ }
415
+ ]
416
+ };
417
+ }
418
+ catch (error) {
419
+ if (error instanceof types_1.MCPError && error.code === types_1.ErrorCode.VALIDATION_ERROR) {
420
+ throw error;
421
+ }
422
+ rethrowProjectNotFound(error, id, 'Failed to unarchive project');
423
+ }
424
+ }
425
+ //# sourceMappingURL=crud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crud.js","sourceRoot":"","sources":["../../../src/tools/projects/crud.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Project duplication
3
+ *
4
+ * Implements `duplicate` (`PUT /projects/{projectID}/duplicate`), which
5
+ * copies a project along with its tasks, files, kanban data, assignees,
6
+ * comments, attachments, labels, relations, and backgrounds into a new
7
+ * project. legacy client exposes `duplicateProject`, but per
8
+ * docs/ENDPOINT-PLAYBOOK.md §3 this domain's new HTTP calls go through the
9
+ * direct-REST helper rather than adding a legacy client call site.
10
+ */
11
+ import type { AuthManager } from '../../auth/AuthManager';
12
+ export interface DuplicateProjectArgs {
13
+ /** Id of the project to duplicate. */
14
+ id?: number;
15
+ /**
16
+ * Target parent project for the copy. Omitted (or `0`) duplicates to the
17
+ * root level, matching the API's own "0 = root" convention (see
18
+ * `moveProject` in `hierarchy.ts` for the same convention on the sibling
19
+ * move endpoint).
20
+ */
21
+ parentProjectId?: number;
22
+ /**
23
+ * Whether to also copy the project's user/team shares and link shares to
24
+ * the duplicate. Defaults to `false` (Vikunja's own default) — shares are
25
+ * access grants, so copying them silently would be a security-relevant
26
+ * surprise.
27
+ */
28
+ duplicateShares?: boolean;
29
+ /** Session id for response tracking. */
30
+ sessionId?: string;
31
+ }
32
+ /**
33
+ * Duplicates a project.
34
+ */
35
+ export declare function duplicateProject(args: DuplicateProjectArgs, authManager: AuthManager): Promise<{
36
+ content: Array<{
37
+ type: 'text';
38
+ text: string;
39
+ }>;
40
+ }>;
41
+ //# sourceMappingURL=duplicate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duplicate.d.ts","sourceRoot":"","sources":["../../../src/tools/projects/duplicate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAU1D,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,oBAAoB,EAC1B,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA2C7D"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ /**
3
+ * Project duplication
4
+ *
5
+ * Implements `duplicate` (`PUT /projects/{projectID}/duplicate`), which
6
+ * copies a project along with its tasks, files, kanban data, assignees,
7
+ * comments, attachments, labels, relations, and backgrounds into a new
8
+ * project. legacy client exposes `duplicateProject`, but per
9
+ * docs/ENDPOINT-PLAYBOOK.md §3 this domain's new HTTP calls go through the
10
+ * direct-REST helper rather than adding a legacy client call site.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.duplicateProject = duplicateProject;
14
+ const types_1 = require("../../types");
15
+ const validation_1 = require("../../utils/validation");
16
+ const response_factory_1 = require("../../utils/response-factory");
17
+ const vikunja_rest_1 = require("../../utils/vikunja-rest");
18
+ /**
19
+ * Duplicates a project.
20
+ */
21
+ async function duplicateProject(args, authManager) {
22
+ if (!args.id) {
23
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'Project id is required for duplicate operation');
24
+ }
25
+ (0, validation_1.validateId)(args.id, 'id');
26
+ if (args.parentProjectId !== undefined && args.parentProjectId !== 0) {
27
+ (0, validation_1.validateId)(args.parentProjectId, 'parentProjectId');
28
+ }
29
+ const body = {
30
+ parent_project_id: args.parentProjectId ?? 0,
31
+ duplicate_shares: args.duplicateShares ?? false,
32
+ };
33
+ const result = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'PUT', `/projects/${args.id}/duplicate`, body);
34
+ const duplicated = result?.duplicated_project;
35
+ const response = (0, response_factory_1.createStandardResponse)('duplicate', duplicated?.id !== undefined
36
+ ? `Project ${args.id} duplicated as project ${duplicated.id}`
37
+ : `Project ${args.id} duplicated`, {
38
+ sourceProjectId: args.id,
39
+ parentProjectId: body.parent_project_id,
40
+ duplicateShares: body.duplicate_shares,
41
+ duplicatedProject: duplicated,
42
+ }, {
43
+ timestamp: new Date().toISOString(),
44
+ }, args.sessionId);
45
+ return {
46
+ content: [{ type: 'text', text: (0, response_factory_1.formatAorpAsMarkdown)(response) }],
47
+ };
48
+ }
49
+ //# sourceMappingURL=duplicate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duplicate.js","sourceRoot":"","sources":["../../../src/tools/projects/duplicate.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAoCH,4CA8CC;AA/ED,uCAAkD;AAClD,uDAAoD;AACpD,mEAA4F;AAC5F,2DAA8D;AA2B9D;;GAEG;AACI,KAAK,UAAU,gBAAgB,CACpC,IAA0B,EAC1B,WAAwB;IAExB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,MAAM,IAAI,gBAAQ,CAAC,iBAAS,CAAC,gBAAgB,EAAE,gDAAgD,CAAC,CAAC;IACnG,CAAC;IACD,IAAA,uBAAU,EAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1B,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,KAAK,CAAC,EAAE,CAAC;QACrE,IAAA,uBAAU,EAAC,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,IAAI,GAA4B;QACpC,iBAAiB,EAAE,IAAI,CAAC,eAAe,IAAI,CAAC;QAC5C,gBAAgB,EAAE,IAAI,CAAC,eAAe,IAAI,KAAK;KAChD,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAkB,EACrC,WAAW,EACX,KAAK,EACL,aAAa,IAAI,CAAC,EAAE,YAAY,EAChC,IAAI,CACL,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,EAAE,kBAAkB,CAAC;IAE9C,MAAM,QAAQ,GAAG,IAAA,yCAAsB,EACrC,WAAW,EACX,UAAU,EAAE,EAAE,KAAK,SAAS;QAC1B,CAAC,CAAC,WAAW,IAAI,CAAC,EAAE,0BAA0B,UAAU,CAAC,EAAE,EAAE;QAC7D,CAAC,CAAC,WAAW,IAAI,CAAC,EAAE,aAAa,EACnC;QACE,eAAe,EAAE,IAAI,CAAC,EAAE;QACxB,eAAe,EAAE,IAAI,CAAC,iBAAiB;QACvC,eAAe,EAAE,IAAI,CAAC,gBAAgB;QACtC,iBAAiB,EAAE,UAAU;KAC9B,EACD;QACE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAA,uCAAoB,EAAC,QAAQ,CAAC,EAAE,CAAC;KAC3E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Project Hierarchy Operations Module
3
+ * Handles complex hierarchical operations like tree building, breadcrumbs, and moves
4
+ *
5
+ * Migrated off the legacy client (Wave D domain migration, tracking issue #28)
6
+ * onto `vikunjaRestRequest` + types generated from the vendored OpenAPI spec.
7
+ * `moveProject` reuses `buildProjectUpdatePayload` from `crud.ts` — see that
8
+ * module's doc comment and docs/API_NOTES.md "Project Operations" for why an
9
+ * omitted `parentProjectId` on move means "move to root" rather than "leave
10
+ * untouched" (the one exception to the merge-preserves-untouched-fields
11
+ * default).
12
+ */
13
+ import type { AuthManager } from '../../auth/AuthManager';
14
+ type McpResponse = {
15
+ content: Array<{
16
+ type: 'text';
17
+ text: string;
18
+ }>;
19
+ };
20
+ /**
21
+ * Arguments for getting project children
22
+ */
23
+ export interface GetChildrenArgs {
24
+ id: number;
25
+ includeArchived?: boolean;
26
+ verbosity?: string;
27
+ useOptimizedFormat?: boolean;
28
+ useAorp?: boolean;
29
+ }
30
+ /**
31
+ * Arguments for getting project tree
32
+ */
33
+ export interface GetTreeArgs {
34
+ id?: number;
35
+ maxDepth?: number;
36
+ includeArchived?: boolean;
37
+ verbosity?: string;
38
+ useOptimizedFormat?: boolean;
39
+ useAorp?: boolean;
40
+ }
41
+ /**
42
+ * Arguments for getting project breadcrumb
43
+ */
44
+ export interface GetBreadcrumbArgs {
45
+ id: number;
46
+ verbosity?: string;
47
+ useOptimizedFormat?: boolean;
48
+ useAorp?: boolean;
49
+ }
50
+ /**
51
+ * Arguments for moving a project
52
+ */
53
+ export interface MoveProjectArgs {
54
+ id: number;
55
+ parentProjectId?: number;
56
+ verbosity?: string;
57
+ useOptimizedFormat?: boolean;
58
+ useAorp?: boolean;
59
+ }
60
+ /**
61
+ * Gets direct children of a project
62
+ */
63
+ export declare function getProjectChildren(args: GetChildrenArgs, _context: unknown, authManager: AuthManager): Promise<McpResponse>;
64
+ /**
65
+ * Builds a complete project tree
66
+ */
67
+ export declare function getProjectTree(args: GetTreeArgs, _context: unknown, authManager: AuthManager): Promise<McpResponse>;
68
+ /**
69
+ * Gets breadcrumb path from root to specified project
70
+ */
71
+ export declare function getProjectBreadcrumb(args: GetBreadcrumbArgs, _context: unknown, authManager: AuthManager): Promise<McpResponse>;
72
+ /**
73
+ * Moves a project to a new parent
74
+ */
75
+ export declare function moveProject(args: MoveProjectArgs, _context: unknown, authManager: AuthManager): Promise<McpResponse>;
76
+ export {};
77
+ //# sourceMappingURL=hierarchy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hierarchy.d.ts","sourceRoot":"","sources":["../../../src/tools/projects/hierarchy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAQ1D,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAUD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,OAAO,EACjB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,WAAW,CAAC,CA0CtB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,OAAO,EACjB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,WAAW,CAAC,CAoFtB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,OAAO,EACjB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,WAAW,CAAC,CAkDtB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,OAAO,EACjB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,WAAW,CAAC,CA0FtB"}