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,450 @@
1
+ "use strict";
2
+ /**
3
+ * Direct project sharing with users & teams.
4
+ *
5
+ * Distinct from `sharing.ts` (anonymous/password link shares): this module
6
+ * grants access to specific, named users and teams. Entirely new coverage —
7
+ * this MCP server previously exposed no way to share a project with a user
8
+ * or team directly (see docs/API-COVERAGE.md, HIGH finding). Built
9
+ * direct-REST per the Wave D playbook (docs/ENDPOINT-PLAYBOOK.md); there is
10
+ * no existing legacy client call site here to migrate.
11
+ *
12
+ * Endpoints (verified against docs/vikunja-openapi.json — note the body
13
+ * field is `permission`, NOT the legacy client's stale `right`):
14
+ * - GET /projects/{id}/users list users on a project
15
+ * - PUT /projects/{id}/users add a user to a project
16
+ * - POST /projects/{projectID}/users/{userID} update a user's permission
17
+ * - DELETE /projects/{projectID}/users/{userID} remove a user
18
+ * - GET /projects/{id}/teams list teams on a project
19
+ * - PUT /projects/{id}/teams add a team to a project
20
+ * - POST /projects/{projectID}/teams/{teamID} update a team's permission
21
+ * - DELETE /projects/{projectID}/teams/{teamID} remove a team
22
+ * - GET /projects/{id}/projectusers project-scoped user search
23
+ * - GET /users global user search (by username/name/email)
24
+ * - GET /teams team search (by name)
25
+ *
26
+ * Composite-first (docs/ENDPOINT-PLAYBOOK.md §1): `share-with-user` and
27
+ * `share-with-team` are the headline subcommands — they take a username or
28
+ * team name plus a permission level, resolve it to an id internally, add
29
+ * it, then verify the grant actually landed, using `CompositeOperation`
30
+ * (src/utils/composite-operation.ts) for the multi-step write with opt-in
31
+ * atomic rollback (remove-on-failure). Primitives (list/add/update/remove
32
+ * by numeric id) remain available for fine-grained control. `list-members`
33
+ * is a read composite answering "who has access to this project" (users +
34
+ * teams + link shares) in one call.
35
+ */
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.listProjectUsers = listProjectUsers;
38
+ exports.searchProjectUsers = searchProjectUsers;
39
+ exports.addProjectUser = addProjectUser;
40
+ exports.updateProjectUserPermission = updateProjectUserPermission;
41
+ exports.removeProjectUser = removeProjectUser;
42
+ exports.listProjectTeams = listProjectTeams;
43
+ exports.addProjectTeam = addProjectTeam;
44
+ exports.updateProjectTeamPermission = updateProjectTeamPermission;
45
+ exports.removeProjectTeam = removeProjectTeam;
46
+ exports.shareProjectWithUser = shareProjectWithUser;
47
+ exports.shareProjectWithTeam = shareProjectWithTeam;
48
+ exports.listProjectMembers = listProjectMembers;
49
+ const types_1 = require("../../types");
50
+ const vikunja_rest_1 = require("../../utils/vikunja-rest");
51
+ const error_handler_1 = require("../../utils/error-handler");
52
+ const validation_1 = require("./validation");
53
+ const permission_1 = require("./permission");
54
+ const response_factory_1 = require("../../utils/response-factory");
55
+ const composite_operation_1 = require("../../utils/composite-operation");
56
+ const sharing_1 = require("./sharing");
57
+ /**
58
+ * `ResponseData` (src/utils/simple-response.ts) declares a `users?: User[]`
59
+ * field typed against this codebase's own `types/vikunja.ts` `User`, which
60
+ * predates and does not structurally match the OpenAPI-generated
61
+ * `user.User`/`models.UserWithPermission` shapes this module deals in. The
62
+ * response payload itself is fine (`createTaskResponse` only special-cases
63
+ * a literal `tasks` key and otherwise passes data through untouched) — this
64
+ * cast exists purely to satisfy that unrelated, more specific field type
65
+ * without smuggling anything past runtime behavior.
66
+ */
67
+ function toResponseData(data) {
68
+ return data;
69
+ }
70
+ function buildQuery(params) {
71
+ const search = new URLSearchParams();
72
+ for (const [key, value] of Object.entries(params)) {
73
+ if (value !== undefined)
74
+ search.set(key, String(value));
75
+ }
76
+ const query = search.toString();
77
+ return query ? `?${query}` : '';
78
+ }
79
+ /** Re-throws a project-scoped 404 as a friendly not-found MCPError; everything else passes through `transformApiError`. */
80
+ function rethrow(error, notFoundMessage, context) {
81
+ if (error instanceof types_1.MCPError) {
82
+ if (notFoundMessage && error.details?.statusCode === 404) {
83
+ throw new types_1.MCPError(types_1.ErrorCode.NOT_FOUND, notFoundMessage);
84
+ }
85
+ throw error;
86
+ }
87
+ throw (0, error_handler_1.transformApiError)(error, context);
88
+ }
89
+ /** Lists the users who have direct access to a project, with their permission. */
90
+ async function listProjectUsers(args, authManager) {
91
+ const { projectId, search, page, perPage, sessionId } = args;
92
+ (0, validation_1.validateId)(projectId, 'projectId');
93
+ try {
94
+ const users = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/projects/${projectId}/users${buildQuery({ s: search, page, per_page: perPage })}`);
95
+ const userList = Array.isArray(users) ? users : [];
96
+ const response = (0, response_factory_1.createStandardResponse)('list-project-users', `Found ${userList.length} user(s) with direct access to project ${projectId}`, toResponseData({ projectId, users: userList }), { timestamp: new Date().toISOString(), count: userList.length }, sessionId);
97
+ return { content: [{ type: 'text', text: (0, response_factory_1.formatAorpAsMarkdown)(response) }] };
98
+ }
99
+ catch (error) {
100
+ rethrow(error, `Project with ID ${projectId} not found`, 'Failed to list project users');
101
+ }
102
+ }
103
+ /** Project-scoped user search (`GET /projects/{id}/projectusers`) — for finding a user to share with, distinct from the global `/users` search. */
104
+ async function searchProjectUsers(args, authManager) {
105
+ const { projectId, search, sessionId } = args;
106
+ (0, validation_1.validateId)(projectId, 'projectId');
107
+ try {
108
+ const users = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/projects/${projectId}/projectusers${buildQuery({ s: search })}`);
109
+ const userList = Array.isArray(users) ? users : [];
110
+ const response = (0, response_factory_1.createStandardResponse)('search-project-users', `Found ${userList.length} user(s)${search ? ` matching "${search}"` : ''} for project ${projectId}`, toResponseData({ projectId, users: userList }), { timestamp: new Date().toISOString(), count: userList.length }, sessionId);
111
+ return { content: [{ type: 'text', text: (0, response_factory_1.formatAorpAsMarkdown)(response) }] };
112
+ }
113
+ catch (error) {
114
+ rethrow(error, `Project with ID ${projectId} not found`, 'Failed to search project users');
115
+ }
116
+ }
117
+ /** Grants a named user direct access to a project (`PUT /projects/{id}/users`, body `{username, permission}`). */
118
+ async function addProjectUser(args, authManager) {
119
+ const { projectId, username, right, sessionId } = args;
120
+ (0, validation_1.validateId)(projectId, 'projectId');
121
+ if (!username || username.trim().length === 0) {
122
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'username is required');
123
+ }
124
+ const permission = (0, permission_1.resolvePermission)(right);
125
+ try {
126
+ const body = { username: username.trim(), permission };
127
+ const created = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'PUT', `/projects/${projectId}/users`, body);
128
+ const response = (0, response_factory_1.createStandardResponse)('add-project-user', `Granted "${username}" permission ${permission} on project ${projectId}`, { projectId, user: created }, { timestamp: new Date().toISOString() }, sessionId);
129
+ return { content: [{ type: 'text', text: (0, response_factory_1.formatAorpAsMarkdown)(response) }] };
130
+ }
131
+ catch (error) {
132
+ rethrow(error, `Project with ID ${projectId} not found, or user "${username}" does not exist`, 'Failed to add project user');
133
+ }
134
+ }
135
+ /** Updates a user's permission on a project (`POST /projects/{projectID}/users/{userID}`, body `{permission}`). */
136
+ async function updateProjectUserPermission(args, authManager) {
137
+ const { projectId, userId, right, sessionId } = args;
138
+ (0, validation_1.validateId)(projectId, 'projectId');
139
+ (0, validation_1.validateId)(userId, 'userId');
140
+ const permission = (0, permission_1.resolvePermission)(right);
141
+ try {
142
+ const body = { permission };
143
+ const updated = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'POST', `/projects/${projectId}/users/${userId}`, body);
144
+ const response = (0, response_factory_1.createStandardResponse)('update-project-user-permission', `Updated user ${userId}'s permission on project ${projectId} to ${permission}`, { projectId, userId, user: updated }, { timestamp: new Date().toISOString() }, sessionId);
145
+ return { content: [{ type: 'text', text: (0, response_factory_1.formatAorpAsMarkdown)(response) }] };
146
+ }
147
+ catch (error) {
148
+ rethrow(error, `User ${userId} does not have access to project ${projectId}`, 'Failed to update project user permission');
149
+ }
150
+ }
151
+ /** Removes a user's direct access to a project (`DELETE /projects/{projectID}/users/{userID}`). */
152
+ async function removeProjectUser(args, authManager) {
153
+ const { projectId, userId, sessionId } = args;
154
+ (0, validation_1.validateId)(projectId, 'projectId');
155
+ (0, validation_1.validateId)(userId, 'userId');
156
+ try {
157
+ await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'DELETE', `/projects/${projectId}/users/${userId}`);
158
+ const response = (0, response_factory_1.createStandardResponse)('remove-project-user', `Removed user ${userId}'s access to project ${projectId}`, { projectId, userId, removed: true }, { timestamp: new Date().toISOString() }, sessionId);
159
+ return { content: [{ type: 'text', text: (0, response_factory_1.formatAorpAsMarkdown)(response) }] };
160
+ }
161
+ catch (error) {
162
+ rethrow(error, `User ${userId} does not have access to project ${projectId}`, 'Failed to remove project user');
163
+ }
164
+ }
165
+ /** Lists the teams with direct access to a project, with their permission. */
166
+ async function listProjectTeams(args, authManager) {
167
+ const { projectId, search, page, perPage, sessionId } = args;
168
+ (0, validation_1.validateId)(projectId, 'projectId');
169
+ try {
170
+ const teams = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/projects/${projectId}/teams${buildQuery({ s: search, page, per_page: perPage })}`);
171
+ const teamList = Array.isArray(teams) ? teams : [];
172
+ const response = (0, response_factory_1.createStandardResponse)('list-project-teams', `Found ${teamList.length} team(s) with direct access to project ${projectId}`, { projectId, teams: teamList }, { timestamp: new Date().toISOString(), count: teamList.length }, sessionId);
173
+ return { content: [{ type: 'text', text: (0, response_factory_1.formatAorpAsMarkdown)(response) }] };
174
+ }
175
+ catch (error) {
176
+ rethrow(error, `Project with ID ${projectId} not found`, 'Failed to list project teams');
177
+ }
178
+ }
179
+ /** Grants a team direct access to a project (`PUT /projects/{id}/teams`, body `{team_id, permission}`). */
180
+ async function addProjectTeam(args, authManager) {
181
+ const { projectId, teamId, right, sessionId } = args;
182
+ (0, validation_1.validateId)(projectId, 'projectId');
183
+ (0, validation_1.validateId)(teamId, 'teamId');
184
+ const permission = (0, permission_1.resolvePermission)(right);
185
+ try {
186
+ const body = { team_id: teamId, permission };
187
+ const created = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'PUT', `/projects/${projectId}/teams`, body);
188
+ const response = (0, response_factory_1.createStandardResponse)('add-project-team', `Granted team ${teamId} permission ${permission} on project ${projectId}`, { projectId, team: created }, { timestamp: new Date().toISOString() }, sessionId);
189
+ return { content: [{ type: 'text', text: (0, response_factory_1.formatAorpAsMarkdown)(response) }] };
190
+ }
191
+ catch (error) {
192
+ rethrow(error, `Project with ID ${projectId} not found, or team ${teamId} does not exist`, 'Failed to add project team');
193
+ }
194
+ }
195
+ /** Updates a team's permission on a project (`POST /projects/{projectID}/teams/{teamID}`, body `{permission}`). */
196
+ async function updateProjectTeamPermission(args, authManager) {
197
+ const { projectId, teamId, right, sessionId } = args;
198
+ (0, validation_1.validateId)(projectId, 'projectId');
199
+ (0, validation_1.validateId)(teamId, 'teamId');
200
+ const permission = (0, permission_1.resolvePermission)(right);
201
+ try {
202
+ const body = { permission };
203
+ const updated = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'POST', `/projects/${projectId}/teams/${teamId}`, body);
204
+ const response = (0, response_factory_1.createStandardResponse)('update-project-team-permission', `Updated team ${teamId}'s permission on project ${projectId} to ${permission}`, { projectId, teamId, team: updated }, { timestamp: new Date().toISOString() }, sessionId);
205
+ return { content: [{ type: 'text', text: (0, response_factory_1.formatAorpAsMarkdown)(response) }] };
206
+ }
207
+ catch (error) {
208
+ rethrow(error, `Team ${teamId} does not have access to project ${projectId}`, 'Failed to update project team permission');
209
+ }
210
+ }
211
+ /** Removes a team's direct access to a project (`DELETE /projects/{projectID}/teams/{teamID}`). */
212
+ async function removeProjectTeam(args, authManager) {
213
+ const { projectId, teamId, sessionId } = args;
214
+ (0, validation_1.validateId)(projectId, 'projectId');
215
+ (0, validation_1.validateId)(teamId, 'teamId');
216
+ try {
217
+ await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'DELETE', `/projects/${projectId}/teams/${teamId}`);
218
+ const response = (0, response_factory_1.createStandardResponse)('remove-project-team', `Removed team ${teamId}'s access to project ${projectId}`, { projectId, teamId, removed: true }, { timestamp: new Date().toISOString() }, sessionId);
219
+ return { content: [{ type: 'text', text: (0, response_factory_1.formatAorpAsMarkdown)(response) }] };
220
+ }
221
+ catch (error) {
222
+ rethrow(error, `Team ${teamId} does not have access to project ${projectId}`, 'Failed to remove project team');
223
+ }
224
+ }
225
+ // ---------------------------------------------------------------------------
226
+ // Composites
227
+ // ---------------------------------------------------------------------------
228
+ /** Finds an exact (case-insensitive) username match among global user search results. */
229
+ function findExactUsername(users, username) {
230
+ const target = username.trim().toLowerCase();
231
+ return users.find((u) => (u.username ?? '').toLowerCase() === target);
232
+ }
233
+ /** Finds an exact (case-insensitive) team name match among team search results. */
234
+ function findExactTeamName(teams, teamName) {
235
+ const target = teamName.trim().toLowerCase();
236
+ return teams.find((t) => (t.name ?? '').toLowerCase() === target);
237
+ }
238
+ /**
239
+ * Composite: share a project with a user by **username**. Resolves the
240
+ * username to a user id via the global user search (`GET /users?s=`), adds
241
+ * the user to the project, then verifies the grant actually landed by
242
+ * re-reading the project's user list. Uses `CompositeOperation` so a failed
243
+ * verification can (opt-in, `atomic: true`) remove the just-added grant
244
+ * rather than leaving a silently-unverified share in place.
245
+ */
246
+ async function shareProjectWithUser(args, authManager) {
247
+ const { projectId, username, right, atomic = false, sessionId } = args;
248
+ (0, validation_1.validateId)(projectId, 'projectId');
249
+ if (!username || username.trim().length === 0) {
250
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'username is required');
251
+ }
252
+ const permission = (0, permission_1.resolvePermission)(right);
253
+ let resolvedUserId;
254
+ const op = new composite_operation_1.CompositeOperation();
255
+ op.addStep({
256
+ name: 'resolve-user',
257
+ execute: async () => {
258
+ let candidates;
259
+ try {
260
+ candidates = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/users${buildQuery({ s: username })}`);
261
+ }
262
+ catch (error) {
263
+ rethrow(error, undefined, 'Failed to search for user');
264
+ }
265
+ const match = findExactUsername(Array.isArray(candidates) ? candidates : [], username);
266
+ if (!match || match.id === undefined) {
267
+ throw new types_1.MCPError(types_1.ErrorCode.NOT_FOUND, `No user found with username "${username}"`);
268
+ }
269
+ resolvedUserId = match.id;
270
+ return match;
271
+ },
272
+ });
273
+ op.addStep({
274
+ name: 'add-user',
275
+ execute: async (ctx) => {
276
+ const resolvedUser = ctx.results.get('resolve-user');
277
+ // `resolve-user` only ever returns a match whose `.username` compared
278
+ // equal (case-insensitively) to the non-empty target username, so it
279
+ // cannot be undefined here — `user.User.username` is merely optional
280
+ // in the schema because it's absent from *other* endpoints' responses.
281
+ const resolvedUsername = resolvedUser.username;
282
+ try {
283
+ return await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'PUT', `/projects/${projectId}/users`, { username: resolvedUsername, permission });
284
+ }
285
+ catch (error) {
286
+ rethrow(error, `Project with ID ${projectId} not found`, 'Failed to add user to project');
287
+ }
288
+ },
289
+ compensate: async () => {
290
+ if (resolvedUserId === undefined)
291
+ return undefined;
292
+ await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'DELETE', `/projects/${projectId}/users/${resolvedUserId}`);
293
+ return undefined;
294
+ },
295
+ });
296
+ op.addStep({
297
+ name: 'verify-membership',
298
+ execute: async (ctx) => {
299
+ const resolvedUser = ctx.results.get('resolve-user');
300
+ let users;
301
+ try {
302
+ users = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/projects/${projectId}/users`);
303
+ }
304
+ catch (error) {
305
+ rethrow(error, undefined, 'Failed to verify project share');
306
+ }
307
+ const found = Array.isArray(users) && users.some((u) => u.id === resolvedUser.id);
308
+ if (!found) {
309
+ throw new types_1.MCPError(types_1.ErrorCode.INTERNAL_ERROR, `User "${username}" was added to project ${projectId} but did not appear in the project's user list on verification`);
310
+ }
311
+ return true;
312
+ },
313
+ });
314
+ const result = await op.run({ atomic });
315
+ if (!result.ok) {
316
+ const err = result.error instanceof Error
317
+ ? result.error
318
+ : new Error(String(result.error));
319
+ throw new types_1.MCPError(err instanceof types_1.MCPError ? err.code : types_1.ErrorCode.API_ERROR, `share-with-user failed: ${err.message}${result.guidance ? `\n${result.guidance}` : ''}`, { vikunjaError: result });
320
+ }
321
+ const response = (0, response_factory_1.createStandardResponse)('share-with-user', `Shared project ${projectId} with user "${username}" (permission ${permission})`, { projectId, username, permission, atomic, trace: result.steps }, { timestamp: new Date().toISOString() }, sessionId);
322
+ return { content: [{ type: 'text', text: (0, response_factory_1.formatAorpAsMarkdown)(response) }] };
323
+ }
324
+ /**
325
+ * Composite: share a project with a team by **name**. Resolves the team
326
+ * name to a team id via `GET /teams?s=`, adds the team to the project, then
327
+ * verifies the grant landed by re-reading the project's team list. Same
328
+ * `CompositeOperation` + opt-in atomic rollback shape as `share-with-user`.
329
+ */
330
+ async function shareProjectWithTeam(args, authManager) {
331
+ const { projectId, teamName, right, atomic = false, sessionId } = args;
332
+ (0, validation_1.validateId)(projectId, 'projectId');
333
+ if (!teamName || teamName.trim().length === 0) {
334
+ throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'teamName is required');
335
+ }
336
+ const permission = (0, permission_1.resolvePermission)(right);
337
+ let resolvedTeamId;
338
+ const op = new composite_operation_1.CompositeOperation();
339
+ op.addStep({
340
+ name: 'resolve-team',
341
+ execute: async () => {
342
+ let candidates;
343
+ try {
344
+ candidates = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/teams${buildQuery({ s: teamName })}`);
345
+ }
346
+ catch (error) {
347
+ rethrow(error, undefined, 'Failed to search for team');
348
+ }
349
+ const match = findExactTeamName(Array.isArray(candidates) ? candidates : [], teamName);
350
+ if (!match || match.id === undefined) {
351
+ throw new types_1.MCPError(types_1.ErrorCode.NOT_FOUND, `No team found with name "${teamName}"`);
352
+ }
353
+ resolvedTeamId = match.id;
354
+ return match;
355
+ },
356
+ });
357
+ op.addStep({
358
+ name: 'add-team',
359
+ execute: async (ctx) => {
360
+ const resolvedTeam = ctx.results.get('resolve-team');
361
+ // `resolve-team` already rejected any match with an undefined `.id`
362
+ // before returning it, so this is guaranteed defined here.
363
+ const resolvedTeamIdForAdd = resolvedTeam.id;
364
+ try {
365
+ return await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'PUT', `/projects/${projectId}/teams`, { team_id: resolvedTeamIdForAdd, permission });
366
+ }
367
+ catch (error) {
368
+ rethrow(error, `Project with ID ${projectId} not found`, 'Failed to add team to project');
369
+ }
370
+ },
371
+ compensate: async () => {
372
+ if (resolvedTeamId === undefined)
373
+ return undefined;
374
+ await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'DELETE', `/projects/${projectId}/teams/${resolvedTeamId}`);
375
+ return undefined;
376
+ },
377
+ });
378
+ op.addStep({
379
+ name: 'verify-membership',
380
+ execute: async () => {
381
+ let teams;
382
+ try {
383
+ teams = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/projects/${projectId}/teams`);
384
+ }
385
+ catch (error) {
386
+ rethrow(error, undefined, 'Failed to verify project share');
387
+ }
388
+ const found = Array.isArray(teams) && teams.some((t) => t.id === resolvedTeamId);
389
+ if (!found) {
390
+ throw new types_1.MCPError(types_1.ErrorCode.INTERNAL_ERROR, `Team "${teamName}" was added to project ${projectId} but did not appear in the project's team list on verification`);
391
+ }
392
+ return true;
393
+ },
394
+ });
395
+ const result = await op.run({ atomic });
396
+ if (!result.ok) {
397
+ const err = result.error instanceof Error
398
+ ? result.error
399
+ : new Error(String(result.error));
400
+ throw new types_1.MCPError(err instanceof types_1.MCPError ? err.code : types_1.ErrorCode.API_ERROR, `share-with-team failed: ${err.message}${result.guidance ? `\n${result.guidance}` : ''}`, { vikunjaError: result });
401
+ }
402
+ const response = (0, response_factory_1.createStandardResponse)('share-with-team', `Shared project ${projectId} with team "${teamName}" (permission ${permission})`, { projectId, teamName, permission, atomic, trace: result.steps }, { timestamp: new Date().toISOString() }, sessionId);
403
+ return { content: [{ type: 'text', text: (0, response_factory_1.formatAorpAsMarkdown)(response) }] };
404
+ }
405
+ /**
406
+ * Read composite: answers "who has access to this project" in one call —
407
+ * direct users, direct teams, and link shares — instead of making the
408
+ * caller issue three separate list calls. Purely a read; no
409
+ * `CompositeOperation` needed since there is nothing to compensate.
410
+ */
411
+ async function listProjectMembers(args, authManager) {
412
+ const { projectId, sessionId } = args;
413
+ (0, validation_1.validateId)(projectId, 'projectId');
414
+ const [usersResult, teamsResult, sharesResult] = await Promise.allSettled([
415
+ (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/projects/${projectId}/users`),
416
+ (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/projects/${projectId}/teams`),
417
+ (0, sharing_1.listProjectShares)({ projectId }, authManager),
418
+ ]);
419
+ if (usersResult.status === 'rejected') {
420
+ rethrow(usersResult.reason, `Project with ID ${projectId} not found`, 'Failed to list project members');
421
+ }
422
+ const users = usersResult.status === 'fulfilled' && Array.isArray(usersResult.value) ? usersResult.value : [];
423
+ const teams = teamsResult.status === 'fulfilled' && Array.isArray(teamsResult.value) ? teamsResult.value : [];
424
+ // listProjectShares() already returns a fully-formatted MCP response, not
425
+ // raw data — extract the share count from it best-effort for the summary
426
+ // message; the caller gets the definitive list via `list-shares` if they
427
+ // need the full share objects, this composite's job is discoverability of
428
+ // *all three* access mechanisms in one read, not being the single source
429
+ // of truth for link share detail.
430
+ const shareCount = sharesResult.status === 'fulfilled' && typeof sharesResult.value.content[0]?.text === 'string'
431
+ ? (sharesResult.value.content[0].text.match(/Retrieved (\d+) shares/)?.[1] ?? '0')
432
+ : '0';
433
+ const response = (0, response_factory_1.createStandardResponse)('list-members', `Project ${projectId} has ${users.length} direct user(s), ${teams.length} direct team(s), and ${shareCount} link share(s)`, toResponseData({
434
+ projectId,
435
+ users,
436
+ teams,
437
+ linkShares: sharesResult.status === 'fulfilled'
438
+ ? { available: true, summary: sharesResult.value.content[0]?.text }
439
+ : { available: false, error: describeSettledError(sharesResult) },
440
+ }), { timestamp: new Date().toISOString() }, sessionId);
441
+ return { content: [{ type: 'text', text: (0, response_factory_1.formatAorpAsMarkdown)(response) }] };
442
+ }
443
+ function describeSettledError(result) {
444
+ if (result.status !== 'rejected')
445
+ return undefined;
446
+ // `PromiseRejectedResult.reason` is typed `any` by the built-in lib.
447
+ const reason = result.reason;
448
+ return reason instanceof Error ? reason.message : String(reason);
449
+ }
450
+ //# sourceMappingURL=sharing-access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharing-access.js","sourceRoot":"","sources":["../../../src/tools/projects/sharing-access.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Project Link Sharing Module
3
+ *
4
+ * Handles link sharing operations for projects: `create-share`,
5
+ * `list-shares`, `get-share`, `delete-share`, `auth-share`.
6
+ *
7
+ * Migrated off the legacy client (Wave D domain migration, tracking issue #28)
8
+ * onto `vikunjaRestRequest` + types generated from the vendored OpenAPI
9
+ * spec. the legacy client's `LinkSharing` type is stale — it models
10
+ * `right`/`label`/`password_enabled`/`expires`, none of which the real API
11
+ * accepts or returns; the spec's `models.LinkSharing` uses `permission` and
12
+ * `name`, and has no `expires`/`password_enabled`/`shares` field at all. See
13
+ * docs/API_NOTES.md "Project Sharing" and docs/API-COVERAGE.md.
14
+ *
15
+ * Endpoints (verified against docs/vikunja-openapi.json):
16
+ * - PUT /projects/{project}/shares create
17
+ * - GET /projects/{project}/shares list
18
+ * - GET /projects/{project}/shares/{share} get
19
+ * - DELETE /projects/{project}/shares/{share} delete
20
+ * - POST /shares/{share}/auth auth
21
+ */
22
+ import type { AuthManager } from '../../auth/AuthManager';
23
+ import { type PermissionInput } from './permission';
24
+ type McpResponse = {
25
+ content: Array<{
26
+ type: 'text';
27
+ text: string;
28
+ }>;
29
+ };
30
+ /**
31
+ * Arguments for creating a project share
32
+ */
33
+ export interface CreateShareArgs {
34
+ projectId: number;
35
+ right: PermissionInput;
36
+ name?: string;
37
+ password?: string;
38
+ verbosity?: string;
39
+ useOptimizedFormat?: boolean;
40
+ useAorp?: boolean;
41
+ }
42
+ /**
43
+ * Arguments for listing project shares
44
+ */
45
+ export interface ListSharesArgs {
46
+ projectId: number;
47
+ page?: number;
48
+ perPage?: number;
49
+ verbosity?: string;
50
+ useOptimizedFormat?: boolean;
51
+ useAorp?: boolean;
52
+ }
53
+ /**
54
+ * Arguments for getting a project share
55
+ */
56
+ export interface GetShareArgs {
57
+ shareId: string;
58
+ projectId: number;
59
+ verbosity?: string;
60
+ useOptimizedFormat?: boolean;
61
+ useAorp?: boolean;
62
+ }
63
+ /**
64
+ * Arguments for deleting a project share
65
+ */
66
+ export interface DeleteShareArgs {
67
+ shareId: string;
68
+ projectId: number;
69
+ verbosity?: string;
70
+ useOptimizedFormat?: boolean;
71
+ useAorp?: boolean;
72
+ }
73
+ /**
74
+ * Arguments for authenticating a project share
75
+ */
76
+ export interface AuthShareArgs {
77
+ shareHash: string;
78
+ projectId?: number;
79
+ password?: string;
80
+ verbosity?: string;
81
+ useOptimizedFormat?: boolean;
82
+ useAorp?: boolean;
83
+ }
84
+ /**
85
+ * Creates a new link share for a project
86
+ */
87
+ export declare function createProjectShare(args: CreateShareArgs, authManager: AuthManager): Promise<McpResponse>;
88
+ /**
89
+ * Lists all link shares for a project
90
+ */
91
+ export declare function listProjectShares(args: ListSharesArgs, authManager: AuthManager): Promise<McpResponse>;
92
+ /**
93
+ * Gets a specific link share by ID
94
+ */
95
+ export declare function getProjectShare(args: GetShareArgs, authManager: AuthManager): Promise<McpResponse>;
96
+ /**
97
+ * Deletes a link share
98
+ */
99
+ export declare function deleteProjectShare(args: DeleteShareArgs, authManager: AuthManager): Promise<McpResponse>;
100
+ /**
101
+ * Authenticates access to a shared project
102
+ */
103
+ export declare function authProjectShare(args: AuthShareArgs, authManager: AuthManager): Promise<McpResponse>;
104
+ export {};
105
+ //# sourceMappingURL=sharing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharing.d.ts","sourceRoot":"","sources":["../../../src/tools/projects/sharing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAK1D,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAWvE,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,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,eAAe,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,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,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAiBD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,eAAe,EACrB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,WAAW,CAAC,CAkEtB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,WAAW,CAAC,CA0DtB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,YAAY,EAClB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,WAAW,CAAC,CAoDtB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,eAAe,EACrB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,WAAW,CAAC,CAoEtB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,aAAa,EACnB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,WAAW,CAAC,CA6DtB"}