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.
- package/LICENSE +21 -0
- package/README.md +123 -0
- package/dist/auth/AuthManager.d.ts +63 -0
- package/dist/auth/AuthManager.d.ts.map +1 -0
- package/dist/auth/AuthManager.js +137 -0
- package/dist/auth/AuthManager.js.map +1 -0
- package/dist/auth/index.d.ts +7 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +14 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/permissions.d.ts +60 -0
- package/dist/auth/permissions.d.ts.map +1 -0
- package/dist/auth/permissions.js +173 -0
- package/dist/auth/permissions.js.map +1 -0
- package/dist/client/VikunjaClientFactory.d.ts +41 -0
- package/dist/client/VikunjaClientFactory.d.ts.map +1 -0
- package/dist/client/VikunjaClientFactory.js +58 -0
- package/dist/client/VikunjaClientFactory.js.map +1 -0
- package/dist/client.d.ts +70 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +136 -0
- package/dist/client.js.map +1 -0
- package/dist/config/ConfigurationManager.d.ts +106 -0
- package/dist/config/ConfigurationManager.d.ts.map +1 -0
- package/dist/config/ConfigurationManager.js +509 -0
- package/dist/config/ConfigurationManager.js.map +1 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +36 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/secrets.d.ts +33 -0
- package/dist/config/secrets.d.ts.map +1 -0
- package/dist/config/secrets.js +90 -0
- package/dist/config/secrets.js.map +1 -0
- package/dist/config/types.d.ts +1113 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +189 -0
- package/dist/config/types.js.map +1 -0
- package/dist/formatters/BatchImportResponseFormatter.d.ts +89 -0
- package/dist/formatters/BatchImportResponseFormatter.d.ts.map +1 -0
- package/dist/formatters/BatchImportResponseFormatter.js +125 -0
- package/dist/formatters/BatchImportResponseFormatter.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +130 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/direct-middleware.d.ts +9 -0
- package/dist/middleware/direct-middleware.d.ts.map +1 -0
- package/dist/middleware/direct-middleware.js +49 -0
- package/dist/middleware/direct-middleware.js.map +1 -0
- package/dist/middleware/index.d.ts +8 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +21 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/simplified-rate-limit.d.ts +147 -0
- package/dist/middleware/simplified-rate-limit.d.ts.map +1 -0
- package/dist/middleware/simplified-rate-limit.js +533 -0
- package/dist/middleware/simplified-rate-limit.js.map +1 -0
- package/dist/parsers/CSVParser.d.ts +36 -0
- package/dist/parsers/CSVParser.d.ts.map +1 -0
- package/dist/parsers/CSVParser.js +69 -0
- package/dist/parsers/CSVParser.js.map +1 -0
- package/dist/parsers/InputParserFactory.d.ts +17 -0
- package/dist/parsers/InputParserFactory.d.ts.map +1 -0
- package/dist/parsers/InputParserFactory.js +137 -0
- package/dist/parsers/InputParserFactory.js.map +1 -0
- package/dist/parsers/JSONParser.d.ts +74 -0
- package/dist/parsers/JSONParser.d.ts.map +1 -0
- package/dist/parsers/JSONParser.js +69 -0
- package/dist/parsers/JSONParser.js.map +1 -0
- package/dist/services/EntityResolver.d.ts +92 -0
- package/dist/services/EntityResolver.d.ts.map +1 -0
- package/dist/services/EntityResolver.js +201 -0
- package/dist/services/EntityResolver.js.map +1 -0
- package/dist/services/TaskCreationService.d.ts +99 -0
- package/dist/services/TaskCreationService.d.ts.map +1 -0
- package/dist/services/TaskCreationService.js +392 -0
- package/dist/services/TaskCreationService.js.map +1 -0
- package/dist/storage/SimpleFilterStorage.d.ts +103 -0
- package/dist/storage/SimpleFilterStorage.d.ts.map +1 -0
- package/dist/storage/SimpleFilterStorage.js +350 -0
- package/dist/storage/SimpleFilterStorage.js.map +1 -0
- package/dist/storage/filtering/FilterSerializer.d.ts +45 -0
- package/dist/storage/filtering/FilterSerializer.d.ts.map +1 -0
- package/dist/storage/filtering/FilterSerializer.js +171 -0
- package/dist/storage/filtering/FilterSerializer.js.map +1 -0
- package/dist/storage/filtering/FilterValidator.d.ts +59 -0
- package/dist/storage/filtering/FilterValidator.d.ts.map +1 -0
- package/dist/storage/filtering/FilterValidator.js +183 -0
- package/dist/storage/filtering/FilterValidator.js.map +1 -0
- package/dist/storage/index.d.ts +61 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +125 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/templateFileStore.d.ts +62 -0
- package/dist/storage/templateFileStore.d.ts.map +1 -0
- package/dist/storage/templateFileStore.js +151 -0
- package/dist/storage/templateFileStore.js.map +1 -0
- package/dist/tools/admin.d.ts +51 -0
- package/dist/tools/admin.d.ts.map +1 -0
- package/dist/tools/admin.js +207 -0
- package/dist/tools/admin.js.map +1 -0
- package/dist/tools/auth.d.ts +9 -0
- package/dist/tools/auth.d.ts.map +1 -0
- package/dist/tools/auth.js +175 -0
- package/dist/tools/auth.js.map +1 -0
- package/dist/tools/batch-import.d.ts +5 -0
- package/dist/tools/batch-import.d.ts.map +1 -0
- package/dist/tools/batch-import.js +153 -0
- package/dist/tools/batch-import.js.map +1 -0
- package/dist/tools/caldav-tokens.d.ts +45 -0
- package/dist/tools/caldav-tokens.d.ts.map +1 -0
- package/dist/tools/caldav-tokens.js +93 -0
- package/dist/tools/caldav-tokens.js.map +1 -0
- package/dist/tools/export.d.ts +14 -0
- package/dist/tools/export.d.ts.map +1 -0
- package/dist/tools/export.js +252 -0
- package/dist/tools/export.js.map +1 -0
- package/dist/tools/filters.d.ts +50 -0
- package/dist/tools/filters.d.ts.map +1 -0
- package/dist/tools/filters.js +512 -0
- package/dist/tools/filters.js.map +1 -0
- package/dist/tools/index.d.ts +53 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +217 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/labels.d.ts +22 -0
- package/dist/tools/labels.d.ts.map +1 -0
- package/dist/tools/labels.js +206 -0
- package/dist/tools/labels.js.map +1 -0
- package/dist/tools/notifications.d.ts +17 -0
- package/dist/tools/notifications.d.ts.map +1 -0
- package/dist/tools/notifications.js +171 -0
- package/dist/tools/notifications.js.map +1 -0
- package/dist/tools/projects/backgrounds.d.ts +80 -0
- package/dist/tools/projects/backgrounds.d.ts.map +1 -0
- package/dist/tools/projects/backgrounds.js +154 -0
- package/dist/tools/projects/backgrounds.js.map +1 -0
- package/dist/tools/projects/buckets.d.ts +147 -0
- package/dist/tools/projects/buckets.d.ts.map +1 -0
- package/dist/tools/projects/buckets.js +291 -0
- package/dist/tools/projects/buckets.js.map +1 -0
- package/dist/tools/projects/crud.d.ts +145 -0
- package/dist/tools/projects/crud.d.ts.map +1 -0
- package/dist/tools/projects/crud.js +425 -0
- package/dist/tools/projects/crud.js.map +1 -0
- package/dist/tools/projects/duplicate.d.ts +41 -0
- package/dist/tools/projects/duplicate.d.ts.map +1 -0
- package/dist/tools/projects/duplicate.js +49 -0
- package/dist/tools/projects/duplicate.js.map +1 -0
- package/dist/tools/projects/hierarchy.d.ts +77 -0
- package/dist/tools/projects/hierarchy.d.ts.map +1 -0
- package/dist/tools/projects/hierarchy.js +300 -0
- package/dist/tools/projects/hierarchy.js.map +1 -0
- package/dist/tools/projects/index.d.ts +34 -0
- package/dist/tools/projects/index.d.ts.map +1 -0
- package/dist/tools/projects/index.js +522 -0
- package/dist/tools/projects/index.js.map +1 -0
- package/dist/tools/projects/permission.d.ts +26 -0
- package/dist/tools/projects/permission.d.ts.map +1 -0
- package/dist/tools/projects/permission.js +53 -0
- package/dist/tools/projects/permission.js.map +1 -0
- package/dist/tools/projects/response-formatter.d.ts +54 -0
- package/dist/tools/projects/response-formatter.d.ts.map +1 -0
- package/dist/tools/projects/response-formatter.js +139 -0
- package/dist/tools/projects/response-formatter.js.map +1 -0
- package/dist/tools/projects/sharing-access.d.ts +165 -0
- package/dist/tools/projects/sharing-access.d.ts.map +1 -0
- package/dist/tools/projects/sharing-access.js +450 -0
- package/dist/tools/projects/sharing-access.js.map +1 -0
- package/dist/tools/projects/sharing.d.ts +105 -0
- package/dist/tools/projects/sharing.d.ts.map +1 -0
- package/dist/tools/projects/sharing.js +258 -0
- package/dist/tools/projects/sharing.js.map +1 -0
- package/dist/tools/projects/validation.d.ts +51 -0
- package/dist/tools/projects/validation.d.ts.map +1 -0
- package/dist/tools/projects/validation.js +160 -0
- package/dist/tools/projects/validation.js.map +1 -0
- package/dist/tools/projects/views.d.ts +161 -0
- package/dist/tools/projects/views.d.ts.map +1 -0
- package/dist/tools/projects/views.js +234 -0
- package/dist/tools/projects/views.js.map +1 -0
- package/dist/tools/projects.d.ts +20 -0
- package/dist/tools/projects.d.ts.map +1 -0
- package/dist/tools/projects.js +66 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/reactions.d.ts +25 -0
- package/dist/tools/reactions.d.ts.map +1 -0
- package/dist/tools/reactions.js +108 -0
- package/dist/tools/reactions.js.map +1 -0
- package/dist/tools/subscriptions.d.ts +23 -0
- package/dist/tools/subscriptions.d.ts.map +1 -0
- package/dist/tools/subscriptions.js +111 -0
- package/dist/tools/subscriptions.js.map +1 -0
- package/dist/tools/task-assignees.d.ts +13 -0
- package/dist/tools/task-assignees.d.ts.map +1 -0
- package/dist/tools/task-assignees.js +74 -0
- package/dist/tools/task-assignees.js.map +1 -0
- package/dist/tools/task-bulk.d.ts +13 -0
- package/dist/tools/task-bulk.d.ts.map +1 -0
- package/dist/tools/task-bulk.js +117 -0
- package/dist/tools/task-bulk.js.map +1 -0
- package/dist/tools/task-comments.d.ts +12 -0
- package/dist/tools/task-comments.d.ts.map +1 -0
- package/dist/tools/task-comments.js +65 -0
- package/dist/tools/task-comments.js.map +1 -0
- package/dist/tools/task-crud.d.ts +13 -0
- package/dist/tools/task-crud.d.ts.map +1 -0
- package/dist/tools/task-crud.js +168 -0
- package/dist/tools/task-crud.js.map +1 -0
- package/dist/tools/task-labels.d.ts +13 -0
- package/dist/tools/task-labels.d.ts.map +1 -0
- package/dist/tools/task-labels.js +64 -0
- package/dist/tools/task-labels.js.map +1 -0
- package/dist/tools/task-relations.d.ts +13 -0
- package/dist/tools/task-relations.d.ts.map +1 -0
- package/dist/tools/task-relations.js +74 -0
- package/dist/tools/task-relations.js.map +1 -0
- package/dist/tools/task-reminders.d.ts +13 -0
- package/dist/tools/task-reminders.d.ts.map +1 -0
- package/dist/tools/task-reminders.js +69 -0
- package/dist/tools/task-reminders.js.map +1 -0
- package/dist/tools/tasks/assignees/AssigneeOperationsService.d.ts +63 -0
- package/dist/tools/tasks/assignees/AssigneeOperationsService.d.ts.map +1 -0
- package/dist/tools/tasks/assignees/AssigneeOperationsService.js +152 -0
- package/dist/tools/tasks/assignees/AssigneeOperationsService.js.map +1 -0
- package/dist/tools/tasks/assignees/AssigneeResponseFormatter.d.ts +28 -0
- package/dist/tools/tasks/assignees/AssigneeResponseFormatter.d.ts.map +1 -0
- package/dist/tools/tasks/assignees/AssigneeResponseFormatter.js +73 -0
- package/dist/tools/tasks/assignees/AssigneeResponseFormatter.js.map +1 -0
- package/dist/tools/tasks/assignees/AssigneeValidationService.d.ts +46 -0
- package/dist/tools/tasks/assignees/AssigneeValidationService.d.ts.map +1 -0
- package/dist/tools/tasks/assignees/AssigneeValidationService.js +70 -0
- package/dist/tools/tasks/assignees/AssigneeValidationService.js.map +1 -0
- package/dist/tools/tasks/assignees/index.d.ts +52 -0
- package/dist/tools/tasks/assignees/index.d.ts.map +1 -0
- package/dist/tools/tasks/assignees/index.js +103 -0
- package/dist/tools/tasks/assignees/index.js.map +1 -0
- package/dist/tools/tasks/attach.d.ts +39 -0
- package/dist/tools/tasks/attach.d.ts.map +1 -0
- package/dist/tools/tasks/attach.js +90 -0
- package/dist/tools/tasks/attach.js.map +1 -0
- package/dist/tools/tasks/attachments.d.ts +67 -0
- package/dist/tools/tasks/attachments.d.ts.map +1 -0
- package/dist/tools/tasks/attachments.js +153 -0
- package/dist/tools/tasks/attachments.js.map +1 -0
- package/dist/tools/tasks/buckets.d.ts +41 -0
- package/dist/tools/tasks/buckets.d.ts.map +1 -0
- package/dist/tools/tasks/buckets.js +75 -0
- package/dist/tools/tasks/buckets.js.map +1 -0
- package/dist/tools/tasks/bulk/BatchProcessorFactory.d.ts +30 -0
- package/dist/tools/tasks/bulk/BatchProcessorFactory.d.ts.map +1 -0
- package/dist/tools/tasks/bulk/BatchProcessorFactory.js +69 -0
- package/dist/tools/tasks/bulk/BatchProcessorFactory.js.map +1 -0
- package/dist/tools/tasks/bulk/BulkOperationErrorHandler.d.ts +50 -0
- package/dist/tools/tasks/bulk/BulkOperationErrorHandler.d.ts.map +1 -0
- package/dist/tools/tasks/bulk/BulkOperationErrorHandler.js +183 -0
- package/dist/tools/tasks/bulk/BulkOperationErrorHandler.js.map +1 -0
- package/dist/tools/tasks/bulk/BulkOperationProcessor.d.ts +101 -0
- package/dist/tools/tasks/bulk/BulkOperationProcessor.d.ts.map +1 -0
- package/dist/tools/tasks/bulk/BulkOperationProcessor.js +416 -0
- package/dist/tools/tasks/bulk/BulkOperationProcessor.js.map +1 -0
- package/dist/tools/tasks/bulk/BulkOperationTypes.d.ts +50 -0
- package/dist/tools/tasks/bulk/BulkOperationTypes.d.ts.map +1 -0
- package/dist/tools/tasks/bulk/BulkOperationTypes.js +6 -0
- package/dist/tools/tasks/bulk/BulkOperationTypes.js.map +1 -0
- package/dist/tools/tasks/bulk/BulkOperationValidator.d.ts +53 -0
- package/dist/tools/tasks/bulk/BulkOperationValidator.d.ts.map +1 -0
- package/dist/tools/tasks/bulk/BulkOperationValidator.js +216 -0
- package/dist/tools/tasks/bulk/BulkOperationValidator.js.map +1 -0
- package/dist/tools/tasks/bulk/index.d.ts +9 -0
- package/dist/tools/tasks/bulk/index.d.ts.map +1 -0
- package/dist/tools/tasks/bulk/index.js +15 -0
- package/dist/tools/tasks/bulk/index.js.map +1 -0
- package/dist/tools/tasks/bulk-operations-simplified.d.ts +62 -0
- package/dist/tools/tasks/bulk-operations-simplified.d.ts.map +1 -0
- package/dist/tools/tasks/bulk-operations-simplified.js +416 -0
- package/dist/tools/tasks/bulk-operations-simplified.js.map +1 -0
- package/dist/tools/tasks/bulk-operations.d.ts +8 -0
- package/dist/tools/tasks/bulk-operations.d.ts.map +1 -0
- package/dist/tools/tasks/bulk-operations.js +13 -0
- package/dist/tools/tasks/bulk-operations.js.map +1 -0
- package/dist/tools/tasks/by-index.d.ts +36 -0
- package/dist/tools/tasks/by-index.d.ts.map +1 -0
- package/dist/tools/tasks/by-index.js +52 -0
- package/dist/tools/tasks/by-index.js.map +1 -0
- package/dist/tools/tasks/comments/CommentOperationsService.d.ts +44 -0
- package/dist/tools/tasks/comments/CommentOperationsService.d.ts.map +1 -0
- package/dist/tools/tasks/comments/CommentOperationsService.js +86 -0
- package/dist/tools/tasks/comments/CommentOperationsService.js.map +1 -0
- package/dist/tools/tasks/comments/CommentResponseFormatter.d.ts +41 -0
- package/dist/tools/tasks/comments/CommentResponseFormatter.d.ts.map +1 -0
- package/dist/tools/tasks/comments/CommentResponseFormatter.js +114 -0
- package/dist/tools/tasks/comments/CommentResponseFormatter.js.map +1 -0
- package/dist/tools/tasks/comments/CommentValidationService.d.ts +62 -0
- package/dist/tools/tasks/comments/CommentValidationService.d.ts.map +1 -0
- package/dist/tools/tasks/comments/CommentValidationService.js +105 -0
- package/dist/tools/tasks/comments/CommentValidationService.js.map +1 -0
- package/dist/tools/tasks/comments/index.d.ts +66 -0
- package/dist/tools/tasks/comments/index.d.ts.map +1 -0
- package/dist/tools/tasks/comments/index.js +99 -0
- package/dist/tools/tasks/comments/index.js.map +1 -0
- package/dist/tools/tasks/constants.d.ts +19 -0
- package/dist/tools/tasks/constants.d.ts.map +1 -0
- package/dist/tools/tasks/constants.js +82 -0
- package/dist/tools/tasks/constants.js.map +1 -0
- package/dist/tools/tasks/crud/TaskCreationService.d.ts +29 -0
- package/dist/tools/tasks/crud/TaskCreationService.d.ts.map +1 -0
- package/dist/tools/tasks/crud/TaskCreationService.js +274 -0
- package/dist/tools/tasks/crud/TaskCreationService.js.map +1 -0
- package/dist/tools/tasks/crud/TaskDeletionService.d.ts +19 -0
- package/dist/tools/tasks/crud/TaskDeletionService.d.ts.map +1 -0
- package/dist/tools/tasks/crud/TaskDeletionService.js +96 -0
- package/dist/tools/tasks/crud/TaskDeletionService.js.map +1 -0
- package/dist/tools/tasks/crud/TaskReadService.d.ts +19 -0
- package/dist/tools/tasks/crud/TaskReadService.d.ts.map +1 -0
- package/dist/tools/tasks/crud/TaskReadService.js +66 -0
- package/dist/tools/tasks/crud/TaskReadService.js.map +1 -0
- package/dist/tools/tasks/crud/TaskResponseFormatter.d.ts +18 -0
- package/dist/tools/tasks/crud/TaskResponseFormatter.d.ts.map +1 -0
- package/dist/tools/tasks/crud/TaskResponseFormatter.js +248 -0
- package/dist/tools/tasks/crud/TaskResponseFormatter.js.map +1 -0
- package/dist/tools/tasks/crud/TaskUpdateService.d.ts +33 -0
- package/dist/tools/tasks/crud/TaskUpdateService.d.ts.map +1 -0
- package/dist/tools/tasks/crud/TaskUpdateService.js +294 -0
- package/dist/tools/tasks/crud/TaskUpdateService.js.map +1 -0
- package/dist/tools/tasks/crud/index.d.ts +17 -0
- package/dist/tools/tasks/crud/index.d.ts.map +1 -0
- package/dist/tools/tasks/crud/index.js +20 -0
- package/dist/tools/tasks/crud/index.js.map +1 -0
- package/dist/tools/tasks/duplicate.d.ts +28 -0
- package/dist/tools/tasks/duplicate.d.ts.map +1 -0
- package/dist/tools/tasks/duplicate.js +41 -0
- package/dist/tools/tasks/duplicate.js.map +1 -0
- package/dist/tools/tasks/filtering/FilterExecutor.d.ts +39 -0
- package/dist/tools/tasks/filtering/FilterExecutor.d.ts.map +1 -0
- package/dist/tools/tasks/filtering/FilterExecutor.js +214 -0
- package/dist/tools/tasks/filtering/FilterExecutor.js.map +1 -0
- package/dist/tools/tasks/filtering/FilterValidator.d.ts +59 -0
- package/dist/tools/tasks/filtering/FilterValidator.d.ts.map +1 -0
- package/dist/tools/tasks/filtering/FilterValidator.js +257 -0
- package/dist/tools/tasks/filtering/FilterValidator.js.map +1 -0
- package/dist/tools/tasks/filtering/TaskFilteringOrchestrator.d.ts +78 -0
- package/dist/tools/tasks/filtering/TaskFilteringOrchestrator.d.ts.map +1 -0
- package/dist/tools/tasks/filtering/TaskFilteringOrchestrator.js +195 -0
- package/dist/tools/tasks/filtering/TaskFilteringOrchestrator.js.map +1 -0
- package/dist/tools/tasks/filtering/evaluators.d.ts +41 -0
- package/dist/tools/tasks/filtering/evaluators.d.ts.map +1 -0
- package/dist/tools/tasks/filtering/evaluators.js +224 -0
- package/dist/tools/tasks/filtering/evaluators.js.map +1 -0
- package/dist/tools/tasks/filtering/index.d.ts +11 -0
- package/dist/tools/tasks/filtering/index.d.ts.map +1 -0
- package/dist/tools/tasks/filtering/index.js +26 -0
- package/dist/tools/tasks/filtering/index.js.map +1 -0
- package/dist/tools/tasks/index.d.ts +9 -0
- package/dist/tools/tasks/index.d.ts.map +1 -0
- package/dist/tools/tasks/index.js +337 -0
- package/dist/tools/tasks/index.js.map +1 -0
- package/dist/tools/tasks/labels.d.ts +49 -0
- package/dist/tools/tasks/labels.d.ts.map +1 -0
- package/dist/tools/tasks/labels.js +223 -0
- package/dist/tools/tasks/labels.js.map +1 -0
- package/dist/tools/tasks/mark-read.d.ts +27 -0
- package/dist/tools/tasks/mark-read.d.ts.map +1 -0
- package/dist/tools/tasks/mark-read.js +38 -0
- package/dist/tools/tasks/mark-read.js.map +1 -0
- package/dist/tools/tasks/position.d.ts +53 -0
- package/dist/tools/tasks/position.d.ts.map +1 -0
- package/dist/tools/tasks/position.js +83 -0
- package/dist/tools/tasks/position.js.map +1 -0
- package/dist/tools/tasks/reminders.d.ts +56 -0
- package/dist/tools/tasks/reminders.d.ts.map +1 -0
- package/dist/tools/tasks/reminders.js +213 -0
- package/dist/tools/tasks/reminders.js.map +1 -0
- package/dist/tools/tasks/subtasks.d.ts +85 -0
- package/dist/tools/tasks/subtasks.d.ts.map +1 -0
- package/dist/tools/tasks/subtasks.js +286 -0
- package/dist/tools/tasks/subtasks.js.map +1 -0
- package/dist/tools/tasks/types/filters.d.ts +136 -0
- package/dist/tools/tasks/types/filters.d.ts.map +1 -0
- package/dist/tools/tasks/types/filters.js +7 -0
- package/dist/tools/tasks/types/filters.js.map +1 -0
- package/dist/tools/tasks/validation.d.ts +47 -0
- package/dist/tools/tasks/validation.d.ts.map +1 -0
- package/dist/tools/tasks/validation.js +131 -0
- package/dist/tools/tasks/validation.js.map +1 -0
- package/dist/tools/tasks-relations.d.ts +25 -0
- package/dist/tools/tasks-relations.d.ts.map +1 -0
- package/dist/tools/tasks-relations.js +271 -0
- package/dist/tools/tasks-relations.js.map +1 -0
- package/dist/tools/tasks.d.ts +6 -0
- package/dist/tools/tasks.d.ts.map +1 -0
- package/dist/tools/tasks.js +10 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/tools/teams.d.ts +9 -0
- package/dist/tools/teams.d.ts.map +1 -0
- package/dist/tools/teams.js +255 -0
- package/dist/tools/teams.js.map +1 -0
- package/dist/tools/templates.d.ts +9 -0
- package/dist/tools/templates.d.ts.map +1 -0
- package/dist/tools/templates.js +450 -0
- package/dist/tools/templates.js.map +1 -0
- package/dist/tools/tokens.d.ts +37 -0
- package/dist/tools/tokens.d.ts.map +1 -0
- package/dist/tools/tokens.js +122 -0
- package/dist/tools/tokens.js.map +1 -0
- package/dist/tools/user-deletion.d.ts +41 -0
- package/dist/tools/user-deletion.d.ts.map +1 -0
- package/dist/tools/user-deletion.js +126 -0
- package/dist/tools/user-deletion.js.map +1 -0
- package/dist/tools/users.d.ts +9 -0
- package/dist/tools/users.d.ts.map +1 -0
- package/dist/tools/users.js +418 -0
- package/dist/tools/users.js.map +1 -0
- package/dist/tools/webhooks.d.ts +31 -0
- package/dist/tools/webhooks.d.ts.map +1 -0
- package/dist/tools/webhooks.js +414 -0
- package/dist/tools/webhooks.js.map +1 -0
- package/dist/transforms/base.d.ts +204 -0
- package/dist/transforms/base.d.ts.map +1 -0
- package/dist/transforms/base.js +175 -0
- package/dist/transforms/base.js.map +1 -0
- package/dist/transforms/field-selector.d.ts +27 -0
- package/dist/transforms/field-selector.d.ts.map +1 -0
- package/dist/transforms/field-selector.js +91 -0
- package/dist/transforms/field-selector.js.map +1 -0
- package/dist/transforms/index.d.ts +15 -0
- package/dist/transforms/index.d.ts.map +1 -0
- package/dist/transforms/index.js +50 -0
- package/dist/transforms/index.js.map +1 -0
- package/dist/transforms/size-calculator.d.ts +131 -0
- package/dist/transforms/size-calculator.d.ts.map +1 -0
- package/dist/transforms/size-calculator.js +284 -0
- package/dist/transforms/size-calculator.js.map +1 -0
- package/dist/transforms/task.d.ts +207 -0
- package/dist/transforms/task.d.ts.map +1 -0
- package/dist/transforms/task.js +259 -0
- package/dist/transforms/task.js.map +1 -0
- package/dist/types/errors.d.ts +65 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +44 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/filters.d.ts +149 -0
- package/dist/types/filters.d.ts.map +1 -0
- package/dist/types/filters.js +26 -0
- package/dist/types/filters.js.map +1 -0
- package/dist/types/index.d.ts +147 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +24 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/node-vikunja-extended.d.ts +36 -0
- package/dist/types/node-vikunja-extended.d.ts.map +1 -0
- package/dist/types/node-vikunja-extended.js +25 -0
- package/dist/types/node-vikunja-extended.js.map +1 -0
- package/dist/types/responses.d.ts +121 -0
- package/dist/types/responses.d.ts.map +1 -0
- package/dist/types/responses.js +26 -0
- package/dist/types/responses.js.map +1 -0
- package/dist/types/vikunja.d.ts +319 -0
- package/dist/types/vikunja.d.ts.map +1 -0
- package/dist/types/vikunja.js +7 -0
- package/dist/types/vikunja.js.map +1 -0
- package/dist/utils/auth-error-handler.d.ts +23 -0
- package/dist/utils/auth-error-handler.d.ts.map +1 -0
- package/dist/utils/auth-error-handler.js +162 -0
- package/dist/utils/auth-error-handler.js.map +1 -0
- package/dist/utils/composite-operation.d.ts +184 -0
- package/dist/utils/composite-operation.d.ts.map +1 -0
- package/dist/utils/composite-operation.js +293 -0
- package/dist/utils/composite-operation.js.map +1 -0
- package/dist/utils/error-handler.d.ts +39 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +336 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/filtering/ClientSideFilteringStrategy.d.ts +13 -0
- package/dist/utils/filtering/ClientSideFilteringStrategy.d.ts.map +1 -0
- package/dist/utils/filtering/ClientSideFilteringStrategy.js +129 -0
- package/dist/utils/filtering/ClientSideFilteringStrategy.js.map +1 -0
- package/dist/utils/filtering/FilteringContext.d.ts +40 -0
- package/dist/utils/filtering/FilteringContext.d.ts.map +1 -0
- package/dist/utils/filtering/FilteringContext.js +58 -0
- package/dist/utils/filtering/FilteringContext.js.map +1 -0
- package/dist/utils/filtering/HybridFilteringStrategy.d.ts +15 -0
- package/dist/utils/filtering/HybridFilteringStrategy.d.ts.map +1 -0
- package/dist/utils/filtering/HybridFilteringStrategy.js +55 -0
- package/dist/utils/filtering/HybridFilteringStrategy.js.map +1 -0
- package/dist/utils/filtering/RestCrossProjectFilteringStrategy.d.ts +42 -0
- package/dist/utils/filtering/RestCrossProjectFilteringStrategy.d.ts.map +1 -0
- package/dist/utils/filtering/RestCrossProjectFilteringStrategy.js +120 -0
- package/dist/utils/filtering/RestCrossProjectFilteringStrategy.js.map +1 -0
- package/dist/utils/filtering/ServerSideFilteringStrategy.d.ts +13 -0
- package/dist/utils/filtering/ServerSideFilteringStrategy.d.ts.map +1 -0
- package/dist/utils/filtering/ServerSideFilteringStrategy.js +88 -0
- package/dist/utils/filtering/ServerSideFilteringStrategy.js.map +1 -0
- package/dist/utils/filtering/TaskFilteringStrategy.d.ts +19 -0
- package/dist/utils/filtering/TaskFilteringStrategy.d.ts.map +1 -0
- package/dist/utils/filtering/TaskFilteringStrategy.js +10 -0
- package/dist/utils/filtering/TaskFilteringStrategy.js.map +1 -0
- package/dist/utils/filtering/index.d.ts +14 -0
- package/dist/utils/filtering/index.d.ts.map +1 -0
- package/dist/utils/filtering/index.js +22 -0
- package/dist/utils/filtering/index.js.map +1 -0
- package/dist/utils/filtering/types.d.ts +108 -0
- package/dist/utils/filtering/types.d.ts.map +1 -0
- package/dist/utils/filtering/types.js +6 -0
- package/dist/utils/filtering/types.js.map +1 -0
- package/dist/utils/filters.d.ts +70 -0
- package/dist/utils/filters.d.ts.map +1 -0
- package/dist/utils/filters.js +812 -0
- package/dist/utils/filters.js.map +1 -0
- package/dist/utils/http-error-detail.d.ts +28 -0
- package/dist/utils/http-error-detail.d.ts.map +1 -0
- package/dist/utils/http-error-detail.js +67 -0
- package/dist/utils/http-error-detail.js.map +1 -0
- package/dist/utils/label-bulk.d.ts +21 -0
- package/dist/utils/label-bulk.d.ts.map +1 -0
- package/dist/utils/label-bulk.js +51 -0
- package/dist/utils/label-bulk.js.map +1 -0
- package/dist/utils/logger.d.ts +20 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +66 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/memory.d.ts +73 -0
- package/dist/utils/memory.d.ts.map +1 -0
- package/dist/utils/memory.js +194 -0
- package/dist/utils/memory.js.map +1 -0
- package/dist/utils/performance/batch-processor.d.ts +77 -0
- package/dist/utils/performance/batch-processor.d.ts.map +1 -0
- package/dist/utils/performance/batch-processor.js +218 -0
- package/dist/utils/performance/batch-processor.js.map +1 -0
- package/dist/utils/performance/index.d.ts +42 -0
- package/dist/utils/performance/index.d.ts.map +1 -0
- package/dist/utils/performance/index.js +49 -0
- package/dist/utils/performance/index.js.map +1 -0
- package/dist/utils/performance/performance-monitor.d.ts +116 -0
- package/dist/utils/performance/performance-monitor.d.ts.map +1 -0
- package/dist/utils/performance/performance-monitor.js +307 -0
- package/dist/utils/performance/performance-monitor.js.map +1 -0
- package/dist/utils/read-only.d.ts +111 -0
- package/dist/utils/read-only.d.ts.map +1 -0
- package/dist/utils/read-only.js +503 -0
- package/dist/utils/read-only.js.map +1 -0
- package/dist/utils/response-factory.d.ts +81 -0
- package/dist/utils/response-factory.d.ts.map +1 -0
- package/dist/utils/response-factory.js +86 -0
- package/dist/utils/response-factory.js.map +1 -0
- package/dist/utils/retry.d.ts +160 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +316 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/security.d.ts +70 -0
- package/dist/utils/security.d.ts.map +1 -0
- package/dist/utils/security.js +358 -0
- package/dist/utils/security.js.map +1 -0
- package/dist/utils/simple-response.d.ts +75 -0
- package/dist/utils/simple-response.d.ts.map +1 -0
- package/dist/utils/simple-response.js +311 -0
- package/dist/utils/simple-response.js.map +1 -0
- package/dist/utils/storage-errors.d.ts +9 -0
- package/dist/utils/storage-errors.d.ts.map +1 -0
- package/dist/utils/storage-errors.js +20 -0
- package/dist/utils/storage-errors.js.map +1 -0
- package/dist/utils/task-rest-transport.d.ts +28 -0
- package/dist/utils/task-rest-transport.d.ts.map +1 -0
- package/dist/utils/task-rest-transport.js +33 -0
- package/dist/utils/task-rest-transport.js.map +1 -0
- package/dist/utils/unicode-fix.d.ts +19 -0
- package/dist/utils/unicode-fix.d.ts.map +1 -0
- package/dist/utils/unicode-fix.js +70 -0
- package/dist/utils/unicode-fix.js.map +1 -0
- package/dist/utils/validation.d.ts +75 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +758 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/utils/vikunja-rest.d.ts +159 -0
- package/dist/utils/vikunja-rest.d.ts.map +1 -0
- package/dist/utils/vikunja-rest.js +378 -0
- package/dist/utils/vikunja-rest.js.map +1 -0
- package/docs/CONFIGURATION.md +957 -0
- package/docs/DOCKER-DESKTOP-MCP.md +207 -0
- package/docs/TOOLS.md +422 -0
- package/package.json +145 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Instance Admin Tool
|
|
3
|
+
*
|
|
4
|
+
* Covers the Vikunja OpenAPI spec's `/admin/*` operations: instance overview,
|
|
5
|
+
* every-project listing + owner reassignment, and instance-wide user
|
|
6
|
+
* management (list/create/delete, admin-flag toggle, status change).
|
|
7
|
+
*
|
|
8
|
+
* Reserved behind TWO gates, both of which must allow the call (module
|
|
9
|
+
* config can only narrow auth, never expand it — see
|
|
10
|
+
* src/tools/index.ts):
|
|
11
|
+
* 1. The deny-by-default `admin` module config key (see
|
|
12
|
+
* src/config/types.ts DANGEROUS_MODULE_KEYS) — an operator must
|
|
13
|
+
* explicitly opt in before this tool is even registered.
|
|
14
|
+
* 2. JWT-only auth gating, matching the existing `users`/`export` precedent
|
|
15
|
+
* (src/tools/index.ts) — API-token sessions never see this tool
|
|
16
|
+
* registered, regardless of the `admin` config value.
|
|
17
|
+
*
|
|
18
|
+
* `delete-user` additionally requires an explicit `confirm: true` argument
|
|
19
|
+
* (see docs/ENDPOINT-PLAYBOOK.md §7 honesty-in-descriptions convention) —
|
|
20
|
+
* account deletion is irreversible in 'now' mode and cannot be undone by
|
|
21
|
+
* this tool.
|
|
22
|
+
*/
|
|
23
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
24
|
+
import type { AuthManager } from '../auth/AuthManager';
|
|
25
|
+
import type { VikunjaClientFactory } from '../client/VikunjaClientFactory';
|
|
26
|
+
/** `shared.AdminUser` per the OpenAPI spec. */
|
|
27
|
+
export interface AdminUser {
|
|
28
|
+
id?: number;
|
|
29
|
+
username?: string;
|
|
30
|
+
email?: string;
|
|
31
|
+
name?: string;
|
|
32
|
+
is_admin?: boolean;
|
|
33
|
+
status?: number;
|
|
34
|
+
auth_provider?: string;
|
|
35
|
+
issuer?: string;
|
|
36
|
+
subject?: string;
|
|
37
|
+
bot_owner_id?: number;
|
|
38
|
+
created?: string;
|
|
39
|
+
updated?: string;
|
|
40
|
+
}
|
|
41
|
+
/** `models.Overview` per the OpenAPI spec. */
|
|
42
|
+
export interface AdminOverview {
|
|
43
|
+
users?: number;
|
|
44
|
+
projects?: number;
|
|
45
|
+
tasks?: number;
|
|
46
|
+
teams?: number;
|
|
47
|
+
shares?: unknown;
|
|
48
|
+
license?: unknown;
|
|
49
|
+
}
|
|
50
|
+
export declare function registerAdminTool(server: McpServer, authManager: AuthManager, _clientFactory?: VikunjaClientFactory): void;
|
|
51
|
+
//# sourceMappingURL=admin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/tools/admin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAQ3E,+CAA+C;AAC/C,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8CAA8C;AAC9C,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAcD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,WAAW,EACxB,cAAc,CAAC,EAAE,oBAAoB,GACpC,IAAI,CAoSN"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Instance Admin Tool
|
|
4
|
+
*
|
|
5
|
+
* Covers the Vikunja OpenAPI spec's `/admin/*` operations: instance overview,
|
|
6
|
+
* every-project listing + owner reassignment, and instance-wide user
|
|
7
|
+
* management (list/create/delete, admin-flag toggle, status change).
|
|
8
|
+
*
|
|
9
|
+
* Reserved behind TWO gates, both of which must allow the call (module
|
|
10
|
+
* config can only narrow auth, never expand it — see
|
|
11
|
+
* src/tools/index.ts):
|
|
12
|
+
* 1. The deny-by-default `admin` module config key (see
|
|
13
|
+
* src/config/types.ts DANGEROUS_MODULE_KEYS) — an operator must
|
|
14
|
+
* explicitly opt in before this tool is even registered.
|
|
15
|
+
* 2. JWT-only auth gating, matching the existing `users`/`export` precedent
|
|
16
|
+
* (src/tools/index.ts) — API-token sessions never see this tool
|
|
17
|
+
* registered, regardless of the `admin` config value.
|
|
18
|
+
*
|
|
19
|
+
* `delete-user` additionally requires an explicit `confirm: true` argument
|
|
20
|
+
* (see docs/ENDPOINT-PLAYBOOK.md §7 honesty-in-descriptions convention) —
|
|
21
|
+
* account deletion is irreversible in 'now' mode and cannot be undone by
|
|
22
|
+
* this tool.
|
|
23
|
+
*/
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.registerAdminTool = registerAdminTool;
|
|
26
|
+
const zod_1 = require("zod");
|
|
27
|
+
const types_1 = require("../types");
|
|
28
|
+
const logger_1 = require("../utils/logger");
|
|
29
|
+
const validation_1 = require("../utils/validation");
|
|
30
|
+
const response_factory_1 = require("../utils/response-factory");
|
|
31
|
+
const vikunja_rest_1 = require("../utils/vikunja-rest");
|
|
32
|
+
const read_only_1 = require("../utils/read-only");
|
|
33
|
+
// user.Status enum per the OpenAPI spec (x-enum-varnames):
|
|
34
|
+
// 0 StatusActive, 1 StatusEmailConfirmationRequired, 2 StatusDisabled, 3 StatusAccountLocked.
|
|
35
|
+
// The MCP interface accepts readable string literals and converts to the
|
|
36
|
+
// numeric wire value, matching the repeatMode/repeatAfter convention
|
|
37
|
+
// documented in docs/API_NOTES.md.
|
|
38
|
+
const USER_STATUS_MAP = {
|
|
39
|
+
active: 0,
|
|
40
|
+
'email-confirmation-required': 1,
|
|
41
|
+
disabled: 2,
|
|
42
|
+
'account-locked': 3,
|
|
43
|
+
};
|
|
44
|
+
function registerAdminTool(server, authManager, _clientFactory) {
|
|
45
|
+
server.tool('vikunja_admin', (0, read_only_1.withReadOnlyNote)('vikunja_admin', "Instance-admin operations: overview, list every project, reassign a project's owner, list/create/delete users, and toggle a user's admin flag or status. Reserved/deny-by-default: only registered when the 'admin' module config key is explicitly enabled AND the session is JWT-authenticated (API-token sessions never see this tool, regardless of config). 'delete-user' is irreversible in 'now' mode and requires an explicit confirm: true argument."), {
|
|
46
|
+
subcommand: zod_1.z.enum([
|
|
47
|
+
'overview',
|
|
48
|
+
'list-projects',
|
|
49
|
+
'set-project-owner',
|
|
50
|
+
'list-users',
|
|
51
|
+
'create-user',
|
|
52
|
+
'delete-user',
|
|
53
|
+
'set-user-admin',
|
|
54
|
+
'set-user-status',
|
|
55
|
+
]),
|
|
56
|
+
// list-projects / list-users pagination + search
|
|
57
|
+
page: zod_1.z.number().int().positive().optional(),
|
|
58
|
+
perPage: zod_1.z.number().int().positive().max(100).optional(),
|
|
59
|
+
search: zod_1.z.string().optional(),
|
|
60
|
+
// set-project-owner
|
|
61
|
+
projectId: zod_1.z.number().int().positive().optional(),
|
|
62
|
+
ownerId: zod_1.z.number().int().positive().optional(),
|
|
63
|
+
// create-user
|
|
64
|
+
username: zod_1.z.string().min(3).max(250).optional(),
|
|
65
|
+
email: zod_1.z.string().email().max(250).optional(),
|
|
66
|
+
password: zod_1.z.string().min(8).max(72).optional(),
|
|
67
|
+
name: zod_1.z.string().optional(),
|
|
68
|
+
language: zod_1.z.string().optional(),
|
|
69
|
+
isAdmin: zod_1.z.boolean().optional(),
|
|
70
|
+
skipEmailConfirm: zod_1.z.boolean().optional(),
|
|
71
|
+
// delete-user / set-user-admin / set-user-status
|
|
72
|
+
userId: zod_1.z.number().int().positive().optional(),
|
|
73
|
+
mode: zod_1.z.enum(['now', 'scheduled']).optional(),
|
|
74
|
+
confirm: zod_1.z
|
|
75
|
+
.boolean()
|
|
76
|
+
.optional()
|
|
77
|
+
.describe('Must be true to perform delete-user — this operation is irreversible in "now" mode.'),
|
|
78
|
+
status: zod_1.z
|
|
79
|
+
.enum(['active', 'email-confirmation-required', 'disabled', 'account-locked'])
|
|
80
|
+
.optional(),
|
|
81
|
+
}, (0, read_only_1.getToolAnnotations)('vikunja_admin'), async (args) => {
|
|
82
|
+
if (!authManager.isAuthenticated()) {
|
|
83
|
+
throw new types_1.MCPError(types_1.ErrorCode.AUTH_REQUIRED, 'Authentication required. Please use vikunja_auth.connect first.');
|
|
84
|
+
}
|
|
85
|
+
if (authManager.getAuthType() !== 'jwt') {
|
|
86
|
+
throw new types_1.MCPError(types_1.ErrorCode.PERMISSION_DENIED, 'Admin operations require JWT authentication. Please reconnect using vikunja_auth.connect with JWT authentication.');
|
|
87
|
+
}
|
|
88
|
+
const subcommand = args.subcommand;
|
|
89
|
+
(0, read_only_1.assertWriteAllowed)('vikunja_admin', subcommand);
|
|
90
|
+
logger_1.logger.debug('Admin tool called', { subcommand });
|
|
91
|
+
try {
|
|
92
|
+
switch (subcommand) {
|
|
93
|
+
case 'overview': {
|
|
94
|
+
const overview = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', '/admin/overview');
|
|
95
|
+
logger_1.logger.info('Retrieved admin overview');
|
|
96
|
+
const aorpResult = (0, response_factory_1.createAorpResponse)('overview', 'Retrieved instance admin overview', { overview }, { success: true });
|
|
97
|
+
return { content: [{ type: 'text', text: aorpResult.content }] };
|
|
98
|
+
}
|
|
99
|
+
case 'list-projects': {
|
|
100
|
+
const query = new URLSearchParams();
|
|
101
|
+
if (args.page !== undefined)
|
|
102
|
+
query.set('page', String(args.page));
|
|
103
|
+
if (args.perPage !== undefined)
|
|
104
|
+
query.set('per_page', String(args.perPage));
|
|
105
|
+
if (args.search !== undefined)
|
|
106
|
+
query.set('s', args.search);
|
|
107
|
+
const qs = query.toString();
|
|
108
|
+
const projects = (await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/admin/projects${qs ? `?${qs}` : ''}`)) ?? [];
|
|
109
|
+
logger_1.logger.info('Listed all instance projects (admin)', { count: projects.length });
|
|
110
|
+
const aorpResult = (0, response_factory_1.createAorpResponse)('list-projects', `Retrieved ${projects.length} projects instance-wide`, { allProjects: projects }, { success: true, metadata: { count: projects.length } });
|
|
111
|
+
return { content: [{ type: 'text', text: aorpResult.content }] };
|
|
112
|
+
}
|
|
113
|
+
case 'set-project-owner': {
|
|
114
|
+
const projectId = (0, validation_1.validateAndConvertId)(args.projectId, 'projectId');
|
|
115
|
+
const ownerId = (0, validation_1.validateAndConvertId)(args.ownerId, 'ownerId');
|
|
116
|
+
const project = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'PATCH', `/admin/projects/${projectId}/owner`, { owner_id: ownerId });
|
|
117
|
+
logger_1.logger.info('Reassigned project owner (admin)', { projectId, ownerId });
|
|
118
|
+
const aorpResult = (0, response_factory_1.createAorpResponse)('set-project-owner', `Project ${projectId} owner reassigned to user ${ownerId}`, { project }, { success: true });
|
|
119
|
+
return { content: [{ type: 'text', text: aorpResult.content }] };
|
|
120
|
+
}
|
|
121
|
+
case 'list-users': {
|
|
122
|
+
const query = new URLSearchParams();
|
|
123
|
+
if (args.search !== undefined)
|
|
124
|
+
query.set('s', args.search);
|
|
125
|
+
if (args.page !== undefined)
|
|
126
|
+
query.set('page', String(args.page));
|
|
127
|
+
if (args.perPage !== undefined)
|
|
128
|
+
query.set('per_page', String(args.perPage));
|
|
129
|
+
const qs = query.toString();
|
|
130
|
+
const users = (await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/admin/users${qs ? `?${qs}` : ''}`)) ?? [];
|
|
131
|
+
logger_1.logger.info('Listed all instance users (admin)', { count: users.length });
|
|
132
|
+
const aorpResult = (0, response_factory_1.createAorpResponse)('list-users', `Retrieved ${users.length} users instance-wide`, { allUsers: users }, { success: true, metadata: { count: users.length } });
|
|
133
|
+
return { content: [{ type: 'text', text: aorpResult.content }] };
|
|
134
|
+
}
|
|
135
|
+
case 'create-user': {
|
|
136
|
+
if (!args.username || !args.email || !args.password) {
|
|
137
|
+
throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'username, email, and password are required for create-user');
|
|
138
|
+
}
|
|
139
|
+
const body = {
|
|
140
|
+
username: args.username,
|
|
141
|
+
email: args.email,
|
|
142
|
+
password: args.password,
|
|
143
|
+
};
|
|
144
|
+
if (args.name !== undefined)
|
|
145
|
+
body.name = args.name;
|
|
146
|
+
if (args.language !== undefined)
|
|
147
|
+
body.language = args.language;
|
|
148
|
+
if (args.isAdmin !== undefined)
|
|
149
|
+
body.is_admin = args.isAdmin;
|
|
150
|
+
if (args.skipEmailConfirm !== undefined)
|
|
151
|
+
body.skip_email_confirm = args.skipEmailConfirm;
|
|
152
|
+
const user = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'POST', '/admin/users', body);
|
|
153
|
+
logger_1.logger.info('Created user (admin)', { userId: user.id, username: user.username });
|
|
154
|
+
const aorpResult = (0, response_factory_1.createAorpResponse)('create-user', `User '${user.username ?? args.username}' created successfully`, { user }, { success: true, metadata: { count: 1 } });
|
|
155
|
+
return { content: [{ type: 'text', text: aorpResult.content }] };
|
|
156
|
+
}
|
|
157
|
+
case 'delete-user': {
|
|
158
|
+
const userId = (0, validation_1.validateAndConvertId)(args.userId, 'userId');
|
|
159
|
+
if (args.confirm !== true) {
|
|
160
|
+
throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'Deleting a user is irreversible (in "now" mode). Pass confirm: true to proceed.');
|
|
161
|
+
}
|
|
162
|
+
const query = new URLSearchParams();
|
|
163
|
+
if (args.mode !== undefined)
|
|
164
|
+
query.set('mode', args.mode);
|
|
165
|
+
const qs = query.toString();
|
|
166
|
+
await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'DELETE', `/admin/users/${userId}${qs ? `?${qs}` : ''}`);
|
|
167
|
+
logger_1.logger.info('Deleted user (admin)', { userId, mode: args.mode ?? 'scheduled' });
|
|
168
|
+
const aorpResult = (0, response_factory_1.createAorpResponse)('delete-user', `User ${userId} deletion ${args.mode === 'now' ? 'completed immediately' : 'scheduled (confirmation email sent)'}`, { userId, mode: args.mode ?? 'scheduled' }, { success: true });
|
|
169
|
+
return { content: [{ type: 'text', text: aorpResult.content }] };
|
|
170
|
+
}
|
|
171
|
+
case 'set-user-admin': {
|
|
172
|
+
const userId = (0, validation_1.validateAndConvertId)(args.userId, 'userId');
|
|
173
|
+
if (args.isAdmin === undefined) {
|
|
174
|
+
throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'isAdmin is required for set-user-admin');
|
|
175
|
+
}
|
|
176
|
+
const user = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'PATCH', `/admin/users/${userId}/admin`, { is_admin: args.isAdmin });
|
|
177
|
+
logger_1.logger.info('Set user admin flag (admin)', { userId, isAdmin: args.isAdmin });
|
|
178
|
+
const aorpResult = (0, response_factory_1.createAorpResponse)('set-user-admin', `User ${userId} admin flag set to ${args.isAdmin}`, { user }, { success: true });
|
|
179
|
+
return { content: [{ type: 'text', text: aorpResult.content }] };
|
|
180
|
+
}
|
|
181
|
+
case 'set-user-status': {
|
|
182
|
+
const userId = (0, validation_1.validateAndConvertId)(args.userId, 'userId');
|
|
183
|
+
if (!args.status) {
|
|
184
|
+
throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, 'status is required for set-user-status (one of: active, email-confirmation-required, disabled, account-locked)');
|
|
185
|
+
}
|
|
186
|
+
const user = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'PATCH', `/admin/users/${userId}/status`, { status: USER_STATUS_MAP[args.status] });
|
|
187
|
+
logger_1.logger.info('Set user status (admin)', { userId, status: args.status });
|
|
188
|
+
const aorpResult = (0, response_factory_1.createAorpResponse)('set-user-status', `User ${userId} status set to ${args.status}`, { user }, { success: true });
|
|
189
|
+
return { content: [{ type: 'text', text: aorpResult.content }] };
|
|
190
|
+
}
|
|
191
|
+
default:
|
|
192
|
+
throw new types_1.MCPError(types_1.ErrorCode.VALIDATION_ERROR, `Unknown subcommand: ${subcommand}`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
logger_1.logger.error('Admin operation failed', { error, subcommand });
|
|
197
|
+
if (error instanceof types_1.MCPError) {
|
|
198
|
+
throw error;
|
|
199
|
+
}
|
|
200
|
+
if (error instanceof Error) {
|
|
201
|
+
throw new types_1.MCPError(types_1.ErrorCode.API_ERROR, `Admin operation failed: ${error.message}`);
|
|
202
|
+
}
|
|
203
|
+
throw new types_1.MCPError(types_1.ErrorCode.INTERNAL_ERROR, 'An unexpected error occurred during admin operation');
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=admin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/tools/admin.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;AAmDH,8CAwSC;AAxVD,6BAAwB;AAGxB,oCAA+C;AAC/C,4CAAyC;AACzC,oDAA2D;AAC3D,gEAA+D;AAC/D,wDAA2D;AAC3D,kDAA8F;AA4B9F,2DAA2D;AAC3D,8FAA8F;AAC9F,yEAAyE;AACzE,qEAAqE;AACrE,mCAAmC;AACnC,MAAM,eAAe,GAA2B;IAC9C,MAAM,EAAE,CAAC;IACT,6BAA6B,EAAE,CAAC;IAChC,QAAQ,EAAE,CAAC;IACX,gBAAgB,EAAE,CAAC;CACpB,CAAC;AAEF,SAAgB,iBAAiB,CAC/B,MAAiB,EACjB,WAAwB,EACxB,cAAqC;IAErC,MAAM,CAAC,IAAI,CACT,eAAe,EACf,IAAA,4BAAgB,EACd,eAAe,EACf,+bAA+b,CAChc,EACD;QACE,UAAU,EAAE,OAAC,CAAC,IAAI,CAAC;YACjB,UAAU;YACV,eAAe;YACf,mBAAmB;YACnB,YAAY;YACZ,aAAa;YACb,aAAa;YACb,gBAAgB;YAChB,iBAAiB;SAClB,CAAC;QAEF,iDAAiD;QACjD,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAC5C,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;QACxD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAE7B,oBAAoB;QACpB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACjD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAE/C,cAAc;QACd,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;QAC/C,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;QAC7C,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC9C,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAC/B,gBAAgB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAExC,iDAAiD;QACjD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAC9C,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC7C,OAAO,EAAE,OAAC;aACP,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,qFAAqF,CAAC;QAClG,MAAM,EAAE,OAAC;aACN,IAAI,CAAC,CAAC,QAAQ,EAAE,6BAA6B,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;aAC7E,QAAQ,EAAE;KACd,EACD,IAAA,8BAAkB,EAAC,eAAe,CAAC,EACnC,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC;YACnC,MAAM,IAAI,gBAAQ,CAChB,iBAAS,CAAC,aAAa,EACvB,iEAAiE,CAClE,CAAC;QACJ,CAAC;QACD,IAAI,WAAW,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;YACxC,MAAM,IAAI,gBAAQ,CAChB,iBAAS,CAAC,iBAAiB,EAC3B,mHAAmH,CACpH,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAEnC,IAAA,8BAAkB,EAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QAEhD,eAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAElD,IAAI,CAAC;YACH,QAAQ,UAAU,EAAE,CAAC;gBACnB,KAAK,UAAU,CAAC,CAAC,CAAC;oBAChB,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAkB,EACvC,WAAW,EACX,KAAK,EACL,iBAAiB,CAClB,CAAC;oBAEF,eAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;oBAExC,MAAM,UAAU,GAAG,IAAA,qCAAkB,EACnC,UAAU,EACV,mCAAmC,EACnC,EAAE,QAAQ,EAAE,EACZ,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;oBACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC5E,CAAC;gBAED,KAAK,eAAe,CAAC,CAAC,CAAC;oBACrB,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;oBACpC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;wBAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBAClE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;wBAAE,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC5E,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;wBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3D,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAE5B,MAAM,QAAQ,GACZ,CAAC,MAAM,IAAA,iCAAkB,EACvB,WAAW,EACX,KAAK,EACL,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACvC,CAAC,IAAI,EAAE,CAAC;oBAEX,eAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;oBAEhF,MAAM,UAAU,GAAG,IAAA,qCAAkB,EACnC,eAAe,EACf,aAAa,QAAQ,CAAC,MAAM,yBAAyB,EACrD,EAAE,WAAW,EAAE,QAAQ,EAAE,EACzB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,CACxD,CAAC;oBACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC5E,CAAC;gBAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;oBACzB,MAAM,SAAS,GAAG,IAAA,iCAAoB,EAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;oBACpE,MAAM,OAAO,GAAG,IAAA,iCAAoB,EAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;oBAE9D,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAkB,EACtC,WAAW,EACX,OAAO,EACP,mBAAmB,SAAS,QAAQ,EACpC,EAAE,QAAQ,EAAE,OAAO,EAAE,CACtB,CAAC;oBAEF,eAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;oBAExE,MAAM,UAAU,GAAG,IAAA,qCAAkB,EACnC,mBAAmB,EACnB,WAAW,SAAS,6BAA6B,OAAO,EAAE,EAC1D,EAAE,OAAO,EAAE,EACX,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;oBACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC5E,CAAC;gBAED,KAAK,YAAY,CAAC,CAAC,CAAC;oBAClB,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;oBACpC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;wBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;wBAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBAClE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;wBAAE,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC5E,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAE5B,MAAM,KAAK,GACT,CAAC,MAAM,IAAA,iCAAkB,EACvB,WAAW,EACX,KAAK,EACL,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACpC,CAAC,IAAI,EAAE,CAAC;oBAEX,eAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;oBAE1E,MAAM,UAAU,GAAG,IAAA,qCAAkB,EACnC,YAAY,EACZ,aAAa,KAAK,CAAC,MAAM,sBAAsB,EAC/C,EAAE,QAAQ,EAAE,KAAK,EAAE,EACnB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CACrD,CAAC;oBACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC5E,CAAC;gBAED,KAAK,aAAa,CAAC,CAAC,CAAC;oBACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACpD,MAAM,IAAI,gBAAQ,CAChB,iBAAS,CAAC,gBAAgB,EAC1B,4DAA4D,CAC7D,CAAC;oBACJ,CAAC;oBAED,MAAM,IAAI,GAA4B;wBACpC,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;qBACxB,CAAC;oBACF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;wBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;oBACnD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;wBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;oBAC/D,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;wBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;oBAC7D,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;wBAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC;oBAEzF,MAAM,IAAI,GAAG,MAAM,IAAA,iCAAkB,EAAY,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;oBAE5F,eAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAElF,MAAM,UAAU,GAAG,IAAA,qCAAkB,EACnC,aAAa,EACb,SAAS,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,wBAAwB,EAC/D,EAAE,IAAI,EAAE,EACR,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAC1C,CAAC;oBACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC5E,CAAC;gBAED,KAAK,aAAa,CAAC,CAAC,CAAC;oBACnB,MAAM,MAAM,GAAG,IAAA,iCAAoB,EAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAE3D,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;wBAC1B,MAAM,IAAI,gBAAQ,CAChB,iBAAS,CAAC,gBAAgB,EAC1B,iFAAiF,CAClF,CAAC;oBACJ,CAAC;oBAED,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;oBACpC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;wBAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC1D,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAE5B,MAAM,IAAA,iCAAkB,EAAC,WAAW,EAAE,QAAQ,EAAE,gBAAgB,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAE/F,eAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC;oBAEhF,MAAM,UAAU,GAAG,IAAA,qCAAkB,EACnC,aAAa,EACb,QAAQ,MAAM,aAAa,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,qCAAqC,EAAE,EAClH,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,WAAW,EAAE,EAC1C,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;oBACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC5E,CAAC;gBAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;oBACtB,MAAM,MAAM,GAAG,IAAA,iCAAoB,EAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAC3D,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;wBAC/B,MAAM,IAAI,gBAAQ,CAChB,iBAAS,CAAC,gBAAgB,EAC1B,wCAAwC,CACzC,CAAC;oBACJ,CAAC;oBAED,MAAM,IAAI,GAAG,MAAM,IAAA,iCAAkB,EACnC,WAAW,EACX,OAAO,EACP,gBAAgB,MAAM,QAAQ,EAC9B,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAC3B,CAAC;oBAEF,eAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;oBAE9E,MAAM,UAAU,GAAG,IAAA,qCAAkB,EACnC,gBAAgB,EAChB,QAAQ,MAAM,sBAAsB,IAAI,CAAC,OAAO,EAAE,EAClD,EAAE,IAAI,EAAE,EACR,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;oBACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC5E,CAAC;gBAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;oBACvB,MAAM,MAAM,GAAG,IAAA,iCAAoB,EAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAC3D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;wBACjB,MAAM,IAAI,gBAAQ,CAChB,iBAAS,CAAC,gBAAgB,EAC1B,gHAAgH,CACjH,CAAC;oBACJ,CAAC;oBAED,MAAM,IAAI,GAAG,MAAM,IAAA,iCAAkB,EACnC,WAAW,EACX,OAAO,EACP,gBAAgB,MAAM,SAAS,EAC/B,EAAE,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CACzC,CAAC;oBAEF,eAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;oBAExE,MAAM,UAAU,GAAG,IAAA,qCAAkB,EACnC,iBAAiB,EACjB,QAAQ,MAAM,kBAAkB,IAAI,CAAC,MAAM,EAAE,EAC7C,EAAE,IAAI,EAAE,EACR,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;oBACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC5E,CAAC;gBAED;oBACE,MAAM,IAAI,gBAAQ,CAChB,iBAAS,CAAC,gBAAgB,EAC1B,uBAAuB,UAAoB,EAAE,CAC9C,CAAC;YACN,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YAE9D,IAAI,KAAK,YAAY,gBAAQ,EAAE,CAAC;gBAC9B,MAAM,KAAK,CAAC;YACd,CAAC;YACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,gBAAQ,CAAC,iBAAS,CAAC,SAAS,EAAE,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACtF,CAAC;YACD,MAAM,IAAI,gBAAQ,CAAC,iBAAS,CAAC,cAAc,EAAE,qDAAqD,CAAC,CAAC;QACtG,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication Tool
|
|
3
|
+
* Handles authentication operations for Vikunja
|
|
4
|
+
*/
|
|
5
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
|
+
import type { AuthManager } from '../auth/AuthManager';
|
|
7
|
+
import type { VikunjaClientFactory } from '../client/VikunjaClientFactory';
|
|
8
|
+
export declare function registerAuthTool(server: McpServer, authManager: AuthManager, _clientFactory?: VikunjaClientFactory): void;
|
|
9
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AA2F3E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAqLzH"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Authentication Tool
|
|
4
|
+
* Handles authentication operations for Vikunja
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.registerAuthTool = registerAuthTool;
|
|
8
|
+
const zod_1 = require("zod");
|
|
9
|
+
const errors_1 = require("../types/errors");
|
|
10
|
+
const client_1 = require("../client");
|
|
11
|
+
const logger_1 = require("../utils/logger");
|
|
12
|
+
const direct_middleware_1 = require("../middleware/direct-middleware");
|
|
13
|
+
const security_1 = require("../utils/security");
|
|
14
|
+
const error_handler_1 = require("../utils/error-handler");
|
|
15
|
+
const response_factory_1 = require("../utils/response-factory");
|
|
16
|
+
const simple_response_1 = require("../utils/simple-response");
|
|
17
|
+
const vikunja_rest_1 = require("../utils/vikunja-rest");
|
|
18
|
+
const read_only_1 = require("../utils/read-only");
|
|
19
|
+
/**
|
|
20
|
+
* Verifies a freshly-connected session actually works, per the audit finding
|
|
21
|
+
* that 'connect' previously never contacted the server (bad URL/token only
|
|
22
|
+
* surfaced on the first real tool call — see docs/API-COVERAGE.md, "Auth,
|
|
23
|
+
* API tokens, and service/meta info", MEDIUM severity).
|
|
24
|
+
*
|
|
25
|
+
* Two round trips, in order:
|
|
26
|
+
* 1. `GET /info` — documented as requiring no authentication, so a failure
|
|
27
|
+
* here means the URL itself is unreachable/wrong (DNS, connection
|
|
28
|
+
* refused, wrong path, non-Vikunja server), independent of credentials.
|
|
29
|
+
* Also returns the server version, surfaced in the connect response.
|
|
30
|
+
* 2. A cheap authenticated call to validate the credential itself. JWTs are
|
|
31
|
+
* verified against `GET /user`; API tokens (`tk_*`) cannot use `/user`
|
|
32
|
+
* (per docs/VIKUNJA_API_ISSUES.md #2, user-scoped endpoints reject `tk_`
|
|
33
|
+
* tokens even when valid) so `GET /projects` with `per_page=1` is used
|
|
34
|
+
* instead — a minimal authenticated call that both token types accept.
|
|
35
|
+
*
|
|
36
|
+
* On failure of either step, the caller's freshly-created session is rolled
|
|
37
|
+
* back (`authManager.disconnect()`) so a failed 'connect' does not leave a
|
|
38
|
+
* broken session behind, and a clear, actionable MCPError is thrown.
|
|
39
|
+
*/
|
|
40
|
+
async function verifyConnection(authManager, apiUrl, authType) {
|
|
41
|
+
let info;
|
|
42
|
+
try {
|
|
43
|
+
info = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', '/info');
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
authManager.disconnect();
|
|
47
|
+
throw new errors_1.MCPError(errors_1.ErrorCode.AUTH_REQUIRED, `Could not reach a Vikunja server at ${apiUrl}: ${error instanceof Error ? error.message : String(error)}. Check the URL (it should point at the API, e.g. .../api/v1) and network connectivity.`);
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
if (authType === 'jwt') {
|
|
51
|
+
await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', '/user');
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', '/projects?per_page=1');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
authManager.disconnect();
|
|
59
|
+
throw new errors_1.MCPError(errors_1.ErrorCode.AUTH_REQUIRED, `Vikunja server at ${apiUrl} was reachable, but the provided ${authType === 'jwt' ? 'JWT' : 'API'} token was rejected: ${error instanceof Error ? error.message : String(error)}`);
|
|
60
|
+
}
|
|
61
|
+
return typeof info.version === 'string' ? info.version : undefined;
|
|
62
|
+
}
|
|
63
|
+
function registerAuthTool(server, authManager, _clientFactory) {
|
|
64
|
+
server.tool('vikunja_auth', (0, read_only_1.withReadOnlyNote)('vikunja_auth', 'Manage authentication with Vikunja API (connect, status, refresh, disconnect, info)'), {
|
|
65
|
+
subcommand: zod_1.z.enum(['connect', 'status', 'refresh', 'disconnect', 'info']),
|
|
66
|
+
apiUrl: zod_1.z.string().url().optional(),
|
|
67
|
+
apiToken: zod_1.z.string().optional(),
|
|
68
|
+
}, (0, read_only_1.getToolAnnotations)('vikunja_auth'), (0, direct_middleware_1.applyRateLimiting)('vikunja_auth', async (args) => {
|
|
69
|
+
try {
|
|
70
|
+
(0, read_only_1.assertWriteAllowed)('vikunja_auth', args.subcommand);
|
|
71
|
+
switch (args.subcommand) {
|
|
72
|
+
case 'connect': {
|
|
73
|
+
if (!args.apiUrl || !args.apiToken) {
|
|
74
|
+
throw new errors_1.MCPError(errors_1.ErrorCode.VALIDATION_ERROR, 'apiUrl and apiToken are required for connect');
|
|
75
|
+
}
|
|
76
|
+
const secureMessage = (0, security_1.createSecureConnectionMessage)(args.apiUrl, args.apiToken);
|
|
77
|
+
logger_1.logger.debug('Auth connect attempt: %s', secureMessage);
|
|
78
|
+
// Check if already authenticated
|
|
79
|
+
const currentStatus = authManager.getStatus();
|
|
80
|
+
if (currentStatus.authenticated && currentStatus.apiUrl === args.apiUrl) {
|
|
81
|
+
const response = (0, response_factory_1.createStandardResponse)('auth-connect', 'Already connected to Vikunja', { authenticated: true }, { apiUrl: args.apiUrl });
|
|
82
|
+
return {
|
|
83
|
+
content: (0, simple_response_1.formatMcpResponse)(response),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
// Auto-detect auth type will be handled by AuthManager
|
|
87
|
+
logger_1.logger.info('Attempting to connect to Vikunja');
|
|
88
|
+
authManager.connect(args.apiUrl, args.apiToken);
|
|
89
|
+
const detectedAuthType = authManager.getAuthType();
|
|
90
|
+
logger_1.logger.info('Successfully connected to Vikunja - authType: %s', detectedAuthType);
|
|
91
|
+
// Verify the connection actually works before reporting success —
|
|
92
|
+
// see verifyConnection()'s doc comment for why this is a
|
|
93
|
+
// two-step round trip (unauthenticated /info, then a cheap
|
|
94
|
+
// authenticated call). Throws (and rolls back the session) on
|
|
95
|
+
// failure.
|
|
96
|
+
const serverVersion = await verifyConnection(authManager, args.apiUrl, detectedAuthType);
|
|
97
|
+
const response = (0, response_factory_1.createStandardResponse)('auth-connect', 'Successfully connected to Vikunja', { authenticated: true }, {
|
|
98
|
+
apiUrl: args.apiUrl,
|
|
99
|
+
authType: authManager.getAuthType(),
|
|
100
|
+
...(serverVersion !== undefined ? { serverVersion } : {}),
|
|
101
|
+
});
|
|
102
|
+
return {
|
|
103
|
+
content: (0, simple_response_1.formatMcpResponse)(response),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
case 'status': {
|
|
107
|
+
const status = authManager.getStatus();
|
|
108
|
+
const response = (0, response_factory_1.createStandardResponse)('auth-status', status.authenticated ? 'Authentication status retrieved' : 'Not authenticated', status, status.authenticated ? { apiUrl: status.apiUrl } : undefined);
|
|
109
|
+
return {
|
|
110
|
+
content: (0, simple_response_1.formatMcpResponse)(response),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
case 'refresh': {
|
|
114
|
+
// authManager.getAuthType() throws AUTH_REQUIRED when there is
|
|
115
|
+
// no active session, which wrapAuthError below turns into a
|
|
116
|
+
// clear "not authenticated" error.
|
|
117
|
+
const authType = authManager.getAuthType();
|
|
118
|
+
if (authType === 'jwt') {
|
|
119
|
+
// Vikunja JWTs are short-lived (unlike API tokens) and the
|
|
120
|
+
// spec documents POST /user/token/refresh to renew one. That
|
|
121
|
+
// endpoint exchanges a refresh-token cookie set at login for
|
|
122
|
+
// a new JWT -- but this server authenticates every request
|
|
123
|
+
// with a single static Bearer token supplied via
|
|
124
|
+
// vikunja_auth.connect and never establishes a cookie-based
|
|
125
|
+
// session, so it has no refresh-token cookie to send. The
|
|
126
|
+
// endpoint is therefore not usable from this server: calling
|
|
127
|
+
// it would just fail with 401 "invalid or expired refresh
|
|
128
|
+
// token". Report that accurately instead of attempting (and
|
|
129
|
+
// silently failing) the call or claiming refresh isn't
|
|
130
|
+
// needed.
|
|
131
|
+
const response = (0, response_factory_1.createStandardResponse)('auth-refresh', 'JWT tokens expire and this server cannot refresh them automatically. Vikunja\'s POST /user/token/refresh endpoint requires a refresh-token cookie issued at login, but this server authenticates with a static Bearer token and holds no such cookie. When your JWT expires, obtain a new one (e.g. by logging in to Vikunja again) and call vikunja_auth connect with the new token.', { refreshed: false, authType: 'jwt', tokenExpires: true }, {
|
|
132
|
+
reason: 'JWT refresh requires a refresh-token cookie this static-Bearer-token server does not have',
|
|
133
|
+
});
|
|
134
|
+
return {
|
|
135
|
+
content: (0, simple_response_1.formatMcpResponse)(response),
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
// API tokens (tk_*) are documented as long-lived and have no
|
|
139
|
+
// refresh mechanism in the API, so this message remains accurate.
|
|
140
|
+
const response = (0, response_factory_1.createStandardResponse)('auth-refresh', 'Token refresh not required for API tokens (tk_*) - they are long-lived and do not expire.', { refreshed: false, authType: 'api-token', tokenExpires: false }, { reason: 'API tokens do not expire' });
|
|
141
|
+
return {
|
|
142
|
+
content: (0, simple_response_1.formatMcpResponse)(response),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
case 'disconnect': {
|
|
146
|
+
authManager.disconnect();
|
|
147
|
+
await (0, client_1.clearGlobalClientFactory)();
|
|
148
|
+
const response = (0, response_factory_1.createStandardResponse)('auth-disconnect', 'Successfully disconnected from Vikunja', { authenticated: false }, { previouslyConnected: true });
|
|
149
|
+
return {
|
|
150
|
+
content: (0, simple_response_1.formatMcpResponse)(response),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
case 'info': {
|
|
154
|
+
// GET /info needs no auth server-side, but this subcommand
|
|
155
|
+
// still requires an active session (like 'refresh') so it has a
|
|
156
|
+
// server URL to ask.
|
|
157
|
+
if (!authManager.isAuthenticated()) {
|
|
158
|
+
throw new errors_1.MCPError(errors_1.ErrorCode.AUTH_REQUIRED, 'Authentication required. Please use vikunja_auth.connect first.');
|
|
159
|
+
}
|
|
160
|
+
const info = await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', '/info');
|
|
161
|
+
const response = (0, response_factory_1.createStandardResponse)('auth-info', 'Vikunja server info retrieved successfully', { info }, typeof info.version === 'string' ? { serverVersion: info.version } : undefined);
|
|
162
|
+
return {
|
|
163
|
+
content: (0, simple_response_1.formatMcpResponse)(response),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
default:
|
|
167
|
+
throw new errors_1.MCPError(errors_1.ErrorCode.VALIDATION_ERROR, `Unknown subcommand: ${args.subcommand}`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
throw (0, error_handler_1.wrapAuthError)(error, args.subcommand);
|
|
172
|
+
}
|
|
173
|
+
}));
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { AuthManager } from '../auth/AuthManager';
|
|
3
|
+
import type { VikunjaClientFactory } from '../client/VikunjaClientFactory';
|
|
4
|
+
export declare function registerBatchImportTool(server: McpServer, authManager: AuthManager, _clientFactory?: VikunjaClientFactory): void;
|
|
5
|
+
//# sourceMappingURL=batch-import.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-import.d.ts","sourceRoot":"","sources":["../../src/tools/batch-import.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAgB3E,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,CAAC,EAAE,oBAAoB,GAAG,IAAI,CA2KhI"}
|