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,503 @@
1
+ "use strict";
2
+ /**
3
+ * Global Read-Only Safety Mode + MCP Tool Annotations
4
+ *
5
+ * Single source of truth for two related things, per
6
+ * docs/ENDPOINT-PLAYBOOK.md's "one classification table per tool" guidance:
7
+ *
8
+ * 1. **Read-only gating.** When the server's `readOnly` config flag is
9
+ * active (`vikunja-mcp.config.json`'s `readOnly`, or the
10
+ * `VIKUNJA_MCP_READ_ONLY` env var — env always wins, see
11
+ * docs/CONFIGURATION.md), every write/destructive subcommand across
12
+ * every tool is rejected at dispatch with a clear, consistent error.
13
+ * Read subcommands continue to work normally. Each tool dispatcher
14
+ * calls `assertWriteAllowed(toolName, subcommand)` exactly once, right
15
+ * after its existing auth check — a single shared guard, not 24
16
+ * copy-pasted `if (readOnly) throw` checks.
17
+ *
18
+ * 2. **MCP tool annotations.** `readOnlyHint` / `destructiveHint` /
19
+ * `idempotentHint` (see the SDK's `ToolAnnotations`) are derived from
20
+ * the same per-subcommand classification tables via
21
+ * `getToolAnnotations(toolName)`, so the two features can never drift
22
+ * out of sync with each other.
23
+ *
24
+ * Classification rubric (`SubcommandClassification`):
25
+ * - 'read': never mutates Vikunja server state. Always allowed;
26
+ * never contributes to `destructiveHint`.
27
+ * - 'write': creates or updates state (create, update, set-*,
28
+ * archive, move, duplicate, subscribe, ...). Rejected
29
+ * when `readOnly` is active.
30
+ * - 'destructive': removes/deletes a resource or relationship (delete,
31
+ * remove-*, unassign, unrelate, unsubscribe,
32
+ * bulk-delete, ...). Rejected when `readOnly` is
33
+ * active; any 'destructive' entry makes the whole tool's
34
+ * `destructiveHint` true.
35
+ *
36
+ * Annotation mapping rationale: annotations are per-TOOL, but our tools
37
+ * mix read/write/destructive subcommands behind one MCP tool name, so:
38
+ * - `readOnlyHint` is true only for a tool whose *entire* subcommand
39
+ * surface is 'read' (e.g. `vikunja_auth` — see below).
40
+ * - `destructiveHint` is true if *any* subcommand is 'destructive'.
41
+ * - `idempotentHint` is only ever set true via the explicit
42
+ * `IDEMPOTENT_TOOLS` allowlist below, and only when every write
43
+ * subcommand on that tool is genuinely idempotent — see its comment.
44
+ *
45
+ * `vikunja_auth` special case: connect/status/refresh/disconnect/info only
46
+ * manage the MCP server's local in-memory session — none of them mutate a
47
+ * Vikunja resource — so every subcommand is classified 'read' and
48
+ * read-only mode never blocks it (and `readOnlyHint` is honestly true).
49
+ */
50
+ Object.defineProperty(exports, "__esModule", { value: true });
51
+ exports.TOOL_CLASSIFICATIONS = void 0;
52
+ exports.classifySubcommand = classifySubcommand;
53
+ exports.isToolReadOnly = isToolReadOnly;
54
+ exports.isToolDestructive = isToolDestructive;
55
+ exports.getToolAnnotations = getToolAnnotations;
56
+ exports.isReadOnlyModeActive = isReadOnlyModeActive;
57
+ exports.assertWriteAllowed = assertWriteAllowed;
58
+ exports.withReadOnlyNote = withReadOnlyNote;
59
+ const types_1 = require("../types");
60
+ const ConfigurationManager_1 = require("../config/ConfigurationManager");
61
+ const logger_1 = require("./logger");
62
+ // ---------------------------------------------------------------------------
63
+ // Per-tool classification tables
64
+ // ---------------------------------------------------------------------------
65
+ const AUTH = {
66
+ connect: 'read',
67
+ status: 'read',
68
+ refresh: 'read',
69
+ disconnect: 'read',
70
+ info: 'read',
71
+ };
72
+ const TASKS = {
73
+ create: 'write',
74
+ get: 'read',
75
+ update: 'write',
76
+ delete: 'destructive',
77
+ list: 'read',
78
+ assign: 'write',
79
+ unassign: 'destructive',
80
+ 'list-assignees': 'read',
81
+ attach: 'write',
82
+ 'list-attachments': 'read',
83
+ 'get-attachment-info': 'read',
84
+ 'delete-attachment': 'destructive',
85
+ 'download-attachment': 'read',
86
+ // Dual-purpose: creates a comment when `comment` text is supplied,
87
+ // otherwise falls back to listing comments (see
88
+ // src/tools/tasks/comments/index.ts handleComment). Dispatchers pass a
89
+ // dynamic override computed from `args.comment` instead of relying on
90
+ // this static default.
91
+ comment: 'write',
92
+ 'bulk-create': 'write',
93
+ 'bulk-update': 'write',
94
+ 'bulk-delete': 'destructive',
95
+ relate: 'write',
96
+ unrelate: 'destructive',
97
+ relations: 'read',
98
+ 'add-reminder': 'write',
99
+ 'remove-reminder': 'destructive',
100
+ 'list-reminders': 'read',
101
+ 'apply-label': 'write',
102
+ 'remove-label': 'destructive',
103
+ 'list-labels': 'read',
104
+ 'set-bucket': 'write',
105
+ 'set-position': 'write',
106
+ 'get-by-index': 'read',
107
+ // Subtask composites (PR #77). create-subtask performs a real task
108
+ // creation + relation write; list-subtasks is a pure read.
109
+ 'create-subtask': 'write',
110
+ 'list-subtasks': 'read',
111
+ // duplicate copies a task (labels, assignees, attachments, reminders)
112
+ // into a brand-new task — a genuine write, direct parallel to
113
+ // vikunja_projects' duplicate below.
114
+ duplicate: 'write',
115
+ // mark-read mutates state (deletes the unread-status row for the current
116
+ // user) even though the task's own fields are unchanged — a write-ish
117
+ // state change, not a pure read. Classified 'write' (not 'destructive':
118
+ // no resource/relationship is removed from the caller's perspective).
119
+ 'mark-read': 'write',
120
+ };
121
+ const TASK_BULK = {
122
+ 'bulk-create': 'write',
123
+ 'bulk-update': 'write',
124
+ 'bulk-delete': 'destructive',
125
+ };
126
+ const TASK_ASSIGNEES = {
127
+ assign: 'write',
128
+ unassign: 'destructive',
129
+ 'list-assignees': 'read',
130
+ };
131
+ const TASK_COMMENTS = {
132
+ // See TASKS.comment above — same dual-purpose create-or-list behavior.
133
+ comment: 'write',
134
+ list: 'read',
135
+ get: 'read',
136
+ update: 'write',
137
+ delete: 'destructive',
138
+ };
139
+ const TASK_REMINDERS = {
140
+ 'add-reminder': 'write',
141
+ 'remove-reminder': 'destructive',
142
+ 'list-reminders': 'read',
143
+ };
144
+ const TASK_LABELS = {
145
+ 'apply-label': 'write',
146
+ 'remove-label': 'destructive',
147
+ 'list-labels': 'read',
148
+ };
149
+ const TASK_RELATIONS = {
150
+ relate: 'write',
151
+ unrelate: 'destructive',
152
+ relations: 'read',
153
+ };
154
+ const PROJECTS = {
155
+ list: 'read',
156
+ get: 'read',
157
+ create: 'write',
158
+ update: 'write',
159
+ delete: 'destructive',
160
+ archive: 'write',
161
+ unarchive: 'write',
162
+ 'get-children': 'read',
163
+ 'get-tree': 'read',
164
+ 'get-breadcrumb': 'read',
165
+ move: 'write',
166
+ 'create-share': 'write',
167
+ 'list-shares': 'read',
168
+ 'get-share': 'read',
169
+ 'delete-share': 'destructive',
170
+ // Authenticates against a share link/password — reads project data
171
+ // through the share, does not mutate it.
172
+ 'auth-share': 'read',
173
+ 'list-project-users': 'read',
174
+ 'search-project-users': 'read',
175
+ 'add-project-user': 'write',
176
+ 'update-project-user-permission': 'write',
177
+ 'remove-project-user': 'destructive',
178
+ 'list-project-teams': 'read',
179
+ 'add-project-team': 'write',
180
+ 'update-project-team-permission': 'write',
181
+ 'remove-project-team': 'destructive',
182
+ 'share-with-user': 'write',
183
+ 'share-with-team': 'write',
184
+ 'list-members': 'read',
185
+ 'list-buckets': 'read',
186
+ 'create-bucket': 'write',
187
+ 'update-bucket': 'write',
188
+ 'delete-bucket': 'destructive',
189
+ 'list-view-tasks': 'read',
190
+ 'list-views': 'read',
191
+ 'get-view': 'read',
192
+ 'create-view': 'write',
193
+ 'update-view': 'write',
194
+ 'delete-view': 'destructive',
195
+ 'set-done-bucket': 'write',
196
+ duplicate: 'write',
197
+ // Project backgrounds (G7, opt-in `backgrounds` module — see
198
+ // src/tools/projects/backgrounds.ts). remove-background deletes the
199
+ // currently-set background (destructive); set-unsplash-background writes
200
+ // a new one; search-unsplash is a pure read (queries unsplash, never
201
+ // touches a project).
202
+ 'remove-background': 'destructive',
203
+ 'set-unsplash-background': 'write',
204
+ 'search-unsplash': 'read',
205
+ };
206
+ const LABELS = {
207
+ list: 'read',
208
+ get: 'read',
209
+ create: 'write',
210
+ update: 'write',
211
+ delete: 'destructive',
212
+ };
213
+ // vikunja_teams' 'members' subcommand fans out to a second enum
214
+ // (`memberSubcommand`). Dispatchers pass a composite key
215
+ // (`members:${memberSubcommand}`) to `assertWriteAllowed` for that case.
216
+ const TEAMS = {
217
+ list: 'read',
218
+ create: 'write',
219
+ get: 'read',
220
+ update: 'write',
221
+ delete: 'destructive',
222
+ 'members:list': 'read',
223
+ 'members:add': 'write',
224
+ 'members:remove': 'destructive',
225
+ // Flips the member's admin flag (POST .../admin takes no body) rather
226
+ // than setting it to a caller-supplied value — explicitly NOT idempotent
227
+ // (calling it twice toggles back). Still a 'write' (not 'destructive'):
228
+ // no resource or relationship is removed.
229
+ 'members:toggleAdmin': 'write',
230
+ };
231
+ const USERS = {
232
+ current: 'read',
233
+ search: 'read',
234
+ settings: 'read',
235
+ 'update-settings': 'write',
236
+ timezones: 'read',
237
+ 'get-avatar': 'read',
238
+ 'set-avatar': 'write',
239
+ 'upload-avatar': 'write',
240
+ };
241
+ const FILTERS = {
242
+ list: 'read',
243
+ get: 'read',
244
+ create: 'write',
245
+ update: 'write',
246
+ delete: 'destructive',
247
+ // Pure local utilities — construct/check a filter query string without
248
+ // contacting the server or touching any saved filter.
249
+ build: 'read',
250
+ validate: 'read',
251
+ };
252
+ const TEMPLATES = {
253
+ create: 'write',
254
+ list: 'read',
255
+ get: 'read',
256
+ update: 'write',
257
+ delete: 'destructive',
258
+ // Creates a new project/tasks from the template.
259
+ instantiate: 'write',
260
+ };
261
+ // G4 (docs/ENDPOINT-TAIL-RETRIAGE.md): vikunja_webhooks also takes a
262
+ // `scope: 'user' | 'project'` argument selecting /user/settings/webhooks*
263
+ // vs /projects/{id}/webhooks*. Scope never changes a subcommand's
264
+ // read/write/destructive nature (both scopes' `list`/`get`/`list-events`
265
+ // are pure reads, `create`/`update` are writes, `delete` is destructive),
266
+ // so one table covers every subcommand x scope combination - no
267
+ // scope-suffixed keys needed here.
268
+ const WEBHOOKS = {
269
+ list: 'read',
270
+ get: 'read',
271
+ create: 'write',
272
+ update: 'write',
273
+ delete: 'destructive',
274
+ 'list-events': 'read',
275
+ };
276
+ // vikunja_batch_import has no subcommand field (single-purpose tool).
277
+ // Dispatchers use the fixed key 'import' and pass a dynamic override:
278
+ // `dryRun: true` never writes, so it is classified 'read' for that call.
279
+ const BATCH_IMPORT = {
280
+ import: 'write',
281
+ };
282
+ // vikunja_export_project / vikunja_request_user_export /
283
+ // vikunja_download_user_export / vikunja_user_export_status have no
284
+ // subcommand field either — each is registered as its own single-purpose
285
+ // tool. Fixed keys below.
286
+ const EXPORT_PROJECT = {
287
+ // GET-only recursive walk of project/task/label data — never mutates.
288
+ export: 'read',
289
+ };
290
+ const REQUEST_USER_EXPORT = {
291
+ // POST /user/export/request asks the server to start preparing an
292
+ // export — a genuine write (triggers server-side work), even though the
293
+ // response is just a confirmation message.
294
+ request: 'write',
295
+ };
296
+ const DOWNLOAD_USER_EXPORT = {
297
+ // POST /user/export/download only confirms readiness (returns
298
+ // models.Message, never the archive) — no new state is created by this
299
+ // call, so it is classified as a read for read-only-mode purposes.
300
+ download: 'read',
301
+ };
302
+ const USER_EXPORT_STATUS = {
303
+ // GET /user/export returns models.UserExportStatus (id/created/expires/
304
+ // size) — a pure read, never mutates server state.
305
+ status: 'read',
306
+ };
307
+ const NOTIFICATIONS = {
308
+ list: 'read',
309
+ 'mark-read': 'write',
310
+ 'mark-all-read': 'write',
311
+ };
312
+ const SUBSCRIPTIONS = {
313
+ subscribe: 'write',
314
+ unsubscribe: 'destructive',
315
+ };
316
+ const REACTIONS = {
317
+ list: 'read',
318
+ add: 'write',
319
+ remove: 'destructive',
320
+ };
321
+ const TOKENS = {
322
+ list: 'read',
323
+ create: 'write',
324
+ delete: 'destructive',
325
+ };
326
+ const CALDAV_TOKENS = {
327
+ list: 'read',
328
+ create: 'write',
329
+ delete: 'destructive',
330
+ };
331
+ const ADMIN = {
332
+ overview: 'read',
333
+ 'list-projects': 'read',
334
+ 'set-project-owner': 'write',
335
+ 'list-users': 'read',
336
+ 'create-user': 'write',
337
+ 'delete-user': 'destructive',
338
+ 'set-user-admin': 'write',
339
+ 'set-user-status': 'write',
340
+ };
341
+ // vikunja_user_deletion: request/confirm move the current account
342
+ // irreversibly closer to deletion (destructiveHint applies to both, per the
343
+ // tool's design). cancel is the safe "undo" leg — classified 'write' (it
344
+ // mutates server state by aborting the pending request) but deliberately
345
+ // NOT 'destructive', since it removes nothing.
346
+ const USER_DELETION = {
347
+ request: 'destructive',
348
+ confirm: 'destructive',
349
+ cancel: 'write',
350
+ };
351
+ /** Tool name -> subcommand classification table. */
352
+ exports.TOOL_CLASSIFICATIONS = {
353
+ vikunja_auth: AUTH,
354
+ vikunja_tasks: TASKS,
355
+ vikunja_task_bulk: TASK_BULK,
356
+ vikunja_task_assignees: TASK_ASSIGNEES,
357
+ vikunja_task_comments: TASK_COMMENTS,
358
+ vikunja_task_reminders: TASK_REMINDERS,
359
+ vikunja_task_labels: TASK_LABELS,
360
+ vikunja_task_relations: TASK_RELATIONS,
361
+ vikunja_projects: PROJECTS,
362
+ vikunja_labels: LABELS,
363
+ vikunja_teams: TEAMS,
364
+ vikunja_users: USERS,
365
+ vikunja_filters: FILTERS,
366
+ vikunja_templates: TEMPLATES,
367
+ vikunja_webhooks: WEBHOOKS,
368
+ vikunja_batch_import: BATCH_IMPORT,
369
+ vikunja_export_project: EXPORT_PROJECT,
370
+ vikunja_request_user_export: REQUEST_USER_EXPORT,
371
+ vikunja_download_user_export: DOWNLOAD_USER_EXPORT,
372
+ vikunja_user_export_status: USER_EXPORT_STATUS,
373
+ vikunja_notifications: NOTIFICATIONS,
374
+ vikunja_subscriptions: SUBSCRIPTIONS,
375
+ vikunja_reactions: REACTIONS,
376
+ vikunja_tokens: TOKENS,
377
+ vikunja_caldav_tokens: CALDAV_TOKENS,
378
+ vikunja_admin: ADMIN,
379
+ vikunja_user_deletion: USER_DELETION,
380
+ };
381
+ // ---------------------------------------------------------------------------
382
+ // Classification lookups
383
+ // ---------------------------------------------------------------------------
384
+ /**
385
+ * Classify a subcommand for a given tool. Unrecognized tool/subcommand
386
+ * pairs fail closed as 'write' (rather than 'read') so an entry missing
387
+ * from the table above is blocked while read-only mode is active instead
388
+ * of silently slipping through — a table-maintenance bug should surface as
389
+ * an over-eager rejection, never as a read-only bypass.
390
+ */
391
+ function classifySubcommand(toolName, subcommand) {
392
+ return exports.TOOL_CLASSIFICATIONS[toolName]?.[subcommand] ?? 'write';
393
+ }
394
+ /** True if every subcommand on this tool is classified 'read'. */
395
+ function isToolReadOnly(toolName) {
396
+ const table = exports.TOOL_CLASSIFICATIONS[toolName];
397
+ if (!table) {
398
+ return false;
399
+ }
400
+ return Object.values(table).every((classification) => classification === 'read');
401
+ }
402
+ /** True if any subcommand on this tool is classified 'destructive'. */
403
+ function isToolDestructive(toolName) {
404
+ const table = exports.TOOL_CLASSIFICATIONS[toolName];
405
+ if (!table) {
406
+ // Unknown tool: no recorded opinion, assume the worst for the hint too.
407
+ return true;
408
+ }
409
+ return Object.values(table).some((classification) => classification === 'destructive');
410
+ }
411
+ // Tools whose entire non-read subcommand surface is genuinely idempotent
412
+ // (repeating the same call has no additional effect after the first). This
413
+ // is an explicit opt-in allowlist rather than something inferred from the
414
+ // read/write/destructive table, since idempotency is a per-operation
415
+ // semantic judgment call that the three-way classification above doesn't
416
+ // capture on its own.
417
+ const IDEMPOTENT_TOOLS = new Set([
418
+ // mark-read / mark-all-read: marking an already-read notification as
419
+ // read again is a no-op server-side. `list` is the only other
420
+ // subcommand and is read-only.
421
+ 'vikunja_notifications',
422
+ ]);
423
+ /**
424
+ * Derive this tool's MCP `ToolAnnotations` from its classification table —
425
+ * see the module doc comment for the readOnlyHint/destructiveHint/
426
+ * idempotentHint mapping rationale.
427
+ */
428
+ function getToolAnnotations(toolName) {
429
+ const annotations = {
430
+ readOnlyHint: isToolReadOnly(toolName),
431
+ destructiveHint: isToolDestructive(toolName),
432
+ };
433
+ if (IDEMPOTENT_TOOLS.has(toolName)) {
434
+ annotations.idempotentHint = true;
435
+ }
436
+ return annotations;
437
+ }
438
+ // ---------------------------------------------------------------------------
439
+ // Read-only mode guard
440
+ // ---------------------------------------------------------------------------
441
+ /**
442
+ * Whether the server's global read-only safety mode is currently active.
443
+ *
444
+ * Fails safe the same way `resolveModulesConfig` (src/tools/index.ts) does:
445
+ * a broken/unreadable config file must not crash tool registration or
446
+ * dispatch, so a `loadConfiguration()` failure here falls back to the
447
+ * schema default (`readOnly: false`) rather than propagating. This mirrors
448
+ * module gating's fail-safe precedent, not a "fail closed on ambiguity"
449
+ * choice — a config-loading error is an operator misconfiguration to
450
+ * surface via logs, not a signal about write intent.
451
+ */
452
+ function isReadOnlyModeActive() {
453
+ try {
454
+ return ConfigurationManager_1.ConfigurationManager.getInstance().loadConfiguration().readOnly;
455
+ }
456
+ catch (error) {
457
+ logger_1.logger.error('Failed to load configuration while checking read-only mode; falling back to readOnly=false:', error);
458
+ return false;
459
+ }
460
+ }
461
+ /**
462
+ * The single shared guard every tool dispatcher calls once — right after
463
+ * its existing auth check, before routing to a subcommand handler — instead
464
+ * of duplicating a read-only check per subcommand.
465
+ *
466
+ * @param toolName - the registered MCP tool name (e.g. `vikunja_tasks`).
467
+ * @param subcommand - the dispatch key for this call. For tools without a
468
+ * `subcommand`/`operation`/`action` field (batch-import, the three export
469
+ * tools), dispatchers pass the tool's single fixed key from its
470
+ * classification table above (e.g. `'import'`).
471
+ * @param classificationOverride - for the handful of subcommands whose
472
+ * classification depends on the call's arguments rather than being
473
+ * static (the comment-or-list dual-purpose `comment` subcommand;
474
+ * batch-import's `dryRun`), dispatchers compute and pass the effective
475
+ * classification directly instead of relying on the static table lookup.
476
+ */
477
+ function assertWriteAllowed(toolName, subcommand, classificationOverride) {
478
+ const classification = classificationOverride ?? classifySubcommand(toolName, subcommand);
479
+ if (classification === 'read') {
480
+ return;
481
+ }
482
+ if (isReadOnlyModeActive()) {
483
+ throw new types_1.MCPError(types_1.ErrorCode.PERMISSION_DENIED, `server is in read-only mode: '${toolName}' subcommand '${subcommand}' is a ` +
484
+ `${classification} operation and is rejected. Set 'readOnly' to false in ` +
485
+ `vikunja-mcp.config.json (or unset VIKUNJA_MCP_READ_ONLY) to allow writes.`);
486
+ }
487
+ }
488
+ /**
489
+ * Appends a short read-only note to a tool's description, but only when
490
+ * read-only mode is active AND the tool actually has write/destructive
491
+ * subcommands to warn about (a fully-exempt tool like `vikunja_auth` never
492
+ * gets the note — it would be noise, not information). Called once at
493
+ * registration time — cheap, since `isReadOnlyModeActive()` just reads the
494
+ * already-loaded, cached configuration.
495
+ */
496
+ function withReadOnlyNote(toolName, description) {
497
+ if (!isReadOnlyModeActive() || isToolReadOnly(toolName)) {
498
+ return description;
499
+ }
500
+ return (`${description} NOTE: the server is currently in read-only mode — ` +
501
+ `write/destructive subcommands on this tool will be rejected.`);
502
+ }
503
+ //# sourceMappingURL=read-only.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-only.js","sourceRoot":"","sources":["../../src/utils/read-only.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Simple Response Factory
3
+ * Replaces 2,925-line AORP system with clean, direct response formatting
4
+ */
5
+ import { type SimpleResponse } from './simple-response';
6
+ import type { ResponseMetadata } from '../types/responses';
7
+ import type { ResponseData } from '../types';
8
+ /**
9
+ * Simple response metadata
10
+ */
11
+ export interface SimpleResponseMetadata {
12
+ /** Processing information */
13
+ processing?: {
14
+ /** Processing time in ms */
15
+ processingTimeMs?: number;
16
+ /** Operation context */
17
+ operation?: string;
18
+ };
19
+ /** Timestamp */
20
+ timestamp?: string;
21
+ /** Success flag */
22
+ success?: boolean;
23
+ /** Error information */
24
+ error?: {
25
+ code: string;
26
+ message: string;
27
+ };
28
+ /** Session ID */
29
+ sessionId?: string;
30
+ /** Additional metadata */
31
+ [key: string]: unknown;
32
+ }
33
+ /**
34
+ * Create a simple response (replaces createAorpResponse)
35
+ * Direct replacement for AORP factory functions
36
+ */
37
+ export declare function createSimpleResponse(operation: string, message: string, data?: ResponseData, options?: {
38
+ success?: boolean;
39
+ metadata?: ResponseMetadata;
40
+ processingTimeMs?: number;
41
+ }): SimpleResponse;
42
+ /**
43
+ * Format response for MCP (replaces AORP formatting)
44
+ */
45
+ export declare function formatResponseForMcp(response: SimpleResponse): string;
46
+ /**
47
+ * Create task response (replaces createTaskResponse)
48
+ * Now handles flexible data for backward compatibility
49
+ */
50
+ export declare function createTaskResponse(operation: string, message: string, data: {
51
+ tasks?: ResponseData[];
52
+ } | ResponseData, metadata?: ResponseMetadata, sessionId?: string): SimpleResponse;
53
+ /**
54
+ * Create error response (replaces createAorpErrorResponse)
55
+ */
56
+ export declare function createSimpleErrorResponse(operation: string, message: string, errorCode?: string, metadata?: ResponseMetadata): SimpleResponse;
57
+ export { createTaskResponse as createStandardResponse };
58
+ export { createTaskResponse as createTaskAorpResponse };
59
+ export { createSimpleErrorResponse as createAorpErrorResponse };
60
+ export { formatResponseForMcp as formatAorpAsMarkdown };
61
+ export { createSimpleResponse as createAorpResponse };
62
+ export type { SimpleResponse } from './simple-response';
63
+ /**
64
+ * Create AORP response from data (compatibility function)
65
+ * Simple replacement for createAorpFromData
66
+ */
67
+ export declare function createAorpFromData(operation: string, message: string, success?: boolean, details?: string): SimpleResponse;
68
+ export interface AorpBuilderConfig {
69
+ confidenceMethod?: string;
70
+ enableCaching?: boolean;
71
+ maxCacheSize?: number;
72
+ [key: string]: unknown;
73
+ }
74
+ export type AorpVerbosityLevel = 'minimal' | 'standard' | 'detailed';
75
+ export interface ComplexityFactors {
76
+ dataComplexity: number;
77
+ nestingLevel: number;
78
+ itemCount: number;
79
+ hasNestedArrays: boolean;
80
+ }
81
+ //# sourceMappingURL=response-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-factory.d.ts","sourceRoot":"","sources":["../../src/utils/response-factory.ts"],"names":[],"mappings":"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"}