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,99 @@
|
|
|
1
|
+
import type { ImportedTask } from '../parsers/InputParserFactory';
|
|
2
|
+
import type { EntityResolutionResult } from './EntityResolver';
|
|
3
|
+
import type { AuthManager } from '../auth/AuthManager';
|
|
4
|
+
/**
|
|
5
|
+
* Result of a task creation operation
|
|
6
|
+
*/
|
|
7
|
+
export interface TaskCreationResult {
|
|
8
|
+
success: boolean;
|
|
9
|
+
taskId?: number;
|
|
10
|
+
title: string;
|
|
11
|
+
error?: string;
|
|
12
|
+
warnings?: string[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Service responsible for creating individual tasks with all associated entities
|
|
16
|
+
* Handles complex API interactions, error handling, and field transformations
|
|
17
|
+
*/
|
|
18
|
+
export declare class TaskCreationService {
|
|
19
|
+
/**
|
|
20
|
+
* Creates a single task with all associated labels, assignees, and other properties
|
|
21
|
+
*
|
|
22
|
+
* @param task - The task data to create
|
|
23
|
+
* @param projectId - The project ID to create the task in
|
|
24
|
+
* @param authManager - Active auth manager holding the session credentials,
|
|
25
|
+
* used for every direct-REST call this service makes
|
|
26
|
+
* @param entityMaps - Resolved entity mappings for labels and users
|
|
27
|
+
* @param catchErrors - Whether to catch errors and return them in TaskCreationResult (default: true)
|
|
28
|
+
* @returns Promise<TaskCreationResult> - Result of the task creation operation
|
|
29
|
+
*/
|
|
30
|
+
createTask(task: ImportedTask, projectId: number, authManager: AuthManager, entityMaps: EntityResolutionResult, catchErrors?: boolean): Promise<TaskCreationResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Prepares task data for API submission
|
|
33
|
+
*
|
|
34
|
+
* @param task - The imported task
|
|
35
|
+
* @param projectId - The target project ID
|
|
36
|
+
* @returns Formatted task data for the API
|
|
37
|
+
*/
|
|
38
|
+
private prepareTaskData;
|
|
39
|
+
/**
|
|
40
|
+
* Creates the base task in Vikunja via `PUT /projects/{id}/tasks`
|
|
41
|
+
* (direct-REST; see docs/ENDPOINT-PLAYBOOK.md §3 — legacy client is
|
|
42
|
+
* end-of-life for this project).
|
|
43
|
+
*
|
|
44
|
+
* @param authManager - Active auth manager holding session credentials
|
|
45
|
+
* @param taskData - Prepared task data
|
|
46
|
+
* @param taskTitle - Task title for error reporting
|
|
47
|
+
* @returns Created task
|
|
48
|
+
* @throws MCPError if creation fails or authentication error occurs
|
|
49
|
+
*/
|
|
50
|
+
private createBaseTask;
|
|
51
|
+
/**
|
|
52
|
+
* Handles label assignment for a created task
|
|
53
|
+
*
|
|
54
|
+
* @param authManager - Active auth manager holding the session credentials
|
|
55
|
+
* @param createdTask - The task that was created
|
|
56
|
+
* @param task - Original task data with labels
|
|
57
|
+
* @param labelMap - Mapping of label names to IDs
|
|
58
|
+
* @returns Array of warnings from label assignment
|
|
59
|
+
*/
|
|
60
|
+
private handleLabelAssignment;
|
|
61
|
+
/**
|
|
62
|
+
* Verifies that labels were actually assigned to a task
|
|
63
|
+
*
|
|
64
|
+
* @param authManager - Active auth manager holding the session credentials
|
|
65
|
+
* @param taskId - The task ID to verify
|
|
66
|
+
* @param expectedLabelIds - Labels that should be assigned
|
|
67
|
+
* @returns True if labels are actually assigned, false otherwise
|
|
68
|
+
*/
|
|
69
|
+
private verifyLabelAssignment;
|
|
70
|
+
/**
|
|
71
|
+
* Handles errors during label assignment
|
|
72
|
+
*
|
|
73
|
+
* @param labelError - The error that occurred
|
|
74
|
+
* @param taskId - The task ID
|
|
75
|
+
* @param labelNames - The label names that were being assigned
|
|
76
|
+
* @returns Warning message
|
|
77
|
+
*/
|
|
78
|
+
private handleLabelAssignmentError;
|
|
79
|
+
/**
|
|
80
|
+
* Handles user assignment for a created task
|
|
81
|
+
*
|
|
82
|
+
* @param authManager - Active auth manager holding the session credentials
|
|
83
|
+
* @param createdTask - The task that was created
|
|
84
|
+
* @param task - Original task data with assignees
|
|
85
|
+
* @param userMap - Mapping of usernames to IDs
|
|
86
|
+
* @param projectUsers - List of available project users
|
|
87
|
+
* @returns Array of warnings from user assignment
|
|
88
|
+
*/
|
|
89
|
+
private handleUserAssignment;
|
|
90
|
+
/**
|
|
91
|
+
* Handles reminders for a task (API limitation)
|
|
92
|
+
*
|
|
93
|
+
* @param taskId - The task ID
|
|
94
|
+
* @param reminders - Array of reminder data
|
|
95
|
+
* @returns Warning message about API limitation
|
|
96
|
+
*/
|
|
97
|
+
private handleReminders;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=TaskCreationService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskCreationService.d.ts","sourceRoot":"","sources":["../../src/services/TaskCreationService.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAmFvD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B;;;;;;;;;;OAUG;IACG,UAAU,CACd,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,sBAAsB,EAClC,WAAW,GAAE,OAAc,GAC1B,OAAO,CAAC,kBAAkB,CAAC;IA2D9B;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAmCvB;;;;;;;;;;OAUG;YACW,cAAc;IA+C5B;;;;;;;;OAQG;YACW,qBAAqB;IAkEnC;;;;;;;OAOG;YACW,qBAAqB;IAsBnC;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IAmBlC;;;;;;;;;OASG;YACW,oBAAoB;IAiElC;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;CAUxB"}
|
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TaskCreationService = void 0;
|
|
4
|
+
const logger_1 = require("../utils/logger");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
const auth_error_handler_1 = require("../utils/auth-error-handler");
|
|
7
|
+
const label_bulk_1 = require("../utils/label-bulk");
|
|
8
|
+
const vikunja_rest_1 = require("../utils/vikunja-rest");
|
|
9
|
+
const task_rest_transport_1 = require("../utils/task-rest-transport");
|
|
10
|
+
/**
|
|
11
|
+
* Converts TaskCreationData to the request body Vikunja expects for task
|
|
12
|
+
* creation, mapping fields and handling optional properties.
|
|
13
|
+
*/
|
|
14
|
+
function convertTaskCreationDataToTask(taskData) {
|
|
15
|
+
const convertedTask = {
|
|
16
|
+
title: taskData.title,
|
|
17
|
+
project_id: taskData.project_id,
|
|
18
|
+
};
|
|
19
|
+
// Only include optional fields if they are provided (undefined values are excluded)
|
|
20
|
+
if (taskData.done !== undefined) {
|
|
21
|
+
convertedTask.done = taskData.done;
|
|
22
|
+
}
|
|
23
|
+
if (taskData.priority !== undefined) {
|
|
24
|
+
convertedTask.priority = taskData.priority;
|
|
25
|
+
}
|
|
26
|
+
if (taskData.percent_done !== undefined) {
|
|
27
|
+
convertedTask.percent_done = taskData.percent_done;
|
|
28
|
+
}
|
|
29
|
+
if (taskData.description !== undefined) {
|
|
30
|
+
convertedTask.description = taskData.description;
|
|
31
|
+
}
|
|
32
|
+
if (taskData.due_date !== undefined) {
|
|
33
|
+
convertedTask.due_date = taskData.due_date;
|
|
34
|
+
}
|
|
35
|
+
if (taskData.start_date !== undefined) {
|
|
36
|
+
convertedTask.start_date = taskData.start_date;
|
|
37
|
+
}
|
|
38
|
+
if (taskData.end_date !== undefined) {
|
|
39
|
+
convertedTask.end_date = taskData.end_date;
|
|
40
|
+
}
|
|
41
|
+
if (taskData.hex_color !== undefined) {
|
|
42
|
+
convertedTask.hex_color = taskData.hex_color;
|
|
43
|
+
}
|
|
44
|
+
if (taskData.repeat_after !== undefined) {
|
|
45
|
+
convertedTask.repeat_after = taskData.repeat_after;
|
|
46
|
+
}
|
|
47
|
+
if (taskData.repeat_mode !== undefined) {
|
|
48
|
+
// Only assign if it's a valid repeat_mode value
|
|
49
|
+
const validMode = taskData.repeat_mode;
|
|
50
|
+
if (['day', 'week', 'month', 'year'].includes(validMode)) {
|
|
51
|
+
convertedTask.repeat_mode = validMode;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return convertedTask;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Service responsible for creating individual tasks with all associated entities
|
|
58
|
+
* Handles complex API interactions, error handling, and field transformations
|
|
59
|
+
*/
|
|
60
|
+
class TaskCreationService {
|
|
61
|
+
/**
|
|
62
|
+
* Creates a single task with all associated labels, assignees, and other properties
|
|
63
|
+
*
|
|
64
|
+
* @param task - The task data to create
|
|
65
|
+
* @param projectId - The project ID to create the task in
|
|
66
|
+
* @param authManager - Active auth manager holding the session credentials,
|
|
67
|
+
* used for every direct-REST call this service makes
|
|
68
|
+
* @param entityMaps - Resolved entity mappings for labels and users
|
|
69
|
+
* @param catchErrors - Whether to catch errors and return them in TaskCreationResult (default: true)
|
|
70
|
+
* @returns Promise<TaskCreationResult> - Result of the task creation operation
|
|
71
|
+
*/
|
|
72
|
+
async createTask(task, projectId, authManager, entityMaps, catchErrors = true) {
|
|
73
|
+
const warnings = [];
|
|
74
|
+
try {
|
|
75
|
+
const taskData = this.prepareTaskData(task, projectId);
|
|
76
|
+
const createdTask = await this.createBaseTask(authManager, taskData, task.title);
|
|
77
|
+
const labelWarnings = await this.handleLabelAssignment(authManager, createdTask, task, entityMaps.labelMap);
|
|
78
|
+
warnings.push(...labelWarnings);
|
|
79
|
+
const assigneeWarnings = await this.handleUserAssignment(authManager, createdTask, task, entityMaps.userMap, entityMaps.projectUsers);
|
|
80
|
+
warnings.push(...assigneeWarnings);
|
|
81
|
+
if (task.reminders && task.reminders.length > 0) {
|
|
82
|
+
warnings.push(this.handleReminders(createdTask.id, task.reminders));
|
|
83
|
+
}
|
|
84
|
+
const result = {
|
|
85
|
+
success: true,
|
|
86
|
+
taskId: createdTask.id ?? 0,
|
|
87
|
+
title: createdTask.title ?? '',
|
|
88
|
+
};
|
|
89
|
+
if (warnings.length > 0) {
|
|
90
|
+
result.warnings = warnings;
|
|
91
|
+
}
|
|
92
|
+
return result;
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
// Let MCPErrors bubble up to be handled at the batch level
|
|
96
|
+
if (error instanceof types_1.MCPError) {
|
|
97
|
+
throw error;
|
|
98
|
+
}
|
|
99
|
+
// If catchErrors is true, return error in result; otherwise, let it bubble up
|
|
100
|
+
if (catchErrors) {
|
|
101
|
+
return {
|
|
102
|
+
success: false,
|
|
103
|
+
title: task.title,
|
|
104
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
throw error;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Prepares task data for API submission
|
|
114
|
+
*
|
|
115
|
+
* @param task - The imported task
|
|
116
|
+
* @param projectId - The target project ID
|
|
117
|
+
* @returns Formatted task data for the API
|
|
118
|
+
*/
|
|
119
|
+
prepareTaskData(task, projectId) {
|
|
120
|
+
const taskData = {
|
|
121
|
+
project_id: projectId,
|
|
122
|
+
title: task.title,
|
|
123
|
+
done: task.done || false,
|
|
124
|
+
priority: task.priority || 0,
|
|
125
|
+
percent_done: task.percentDone || 0,
|
|
126
|
+
};
|
|
127
|
+
// Only add description if it's not undefined
|
|
128
|
+
if (task.description !== undefined) {
|
|
129
|
+
taskData.description = task.description;
|
|
130
|
+
}
|
|
131
|
+
// Handle dates
|
|
132
|
+
if (task.dueDate)
|
|
133
|
+
taskData.due_date = task.dueDate;
|
|
134
|
+
if (task.startDate)
|
|
135
|
+
taskData.start_date = task.startDate;
|
|
136
|
+
if (task.endDate)
|
|
137
|
+
taskData.end_date = task.endDate;
|
|
138
|
+
if (task.hexColor)
|
|
139
|
+
taskData.hex_color = task.hexColor;
|
|
140
|
+
if (task.repeatAfter)
|
|
141
|
+
taskData.repeat_after = task.repeatAfter;
|
|
142
|
+
if (task.repeatMode !== undefined) {
|
|
143
|
+
const repeatModes = ['day', 'week', 'month', 'year'];
|
|
144
|
+
if (task.repeatMode >= 0 && task.repeatMode < repeatModes.length) {
|
|
145
|
+
const repeatMode = repeatModes[task.repeatMode];
|
|
146
|
+
if (repeatMode) {
|
|
147
|
+
taskData.repeat_mode = repeatMode;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return taskData;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Creates the base task in Vikunja via `PUT /projects/{id}/tasks`
|
|
155
|
+
* (direct-REST; see docs/ENDPOINT-PLAYBOOK.md §3 — legacy client is
|
|
156
|
+
* end-of-life for this project).
|
|
157
|
+
*
|
|
158
|
+
* @param authManager - Active auth manager holding session credentials
|
|
159
|
+
* @param taskData - Prepared task data
|
|
160
|
+
* @param taskTitle - Task title for error reporting
|
|
161
|
+
* @returns Created task
|
|
162
|
+
* @throws MCPError if creation fails or authentication error occurs
|
|
163
|
+
*/
|
|
164
|
+
async createBaseTask(authManager, taskData, taskTitle) {
|
|
165
|
+
try {
|
|
166
|
+
// Safely convert TaskCreationData to the request body shape Vikunja expects
|
|
167
|
+
const taskForApi = convertTaskCreationDataToTask(taskData);
|
|
168
|
+
return await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'PUT', `/projects/${taskData.project_id}/tasks`, taskForApi);
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
// Check if it's an authentication error. Checked directly via
|
|
172
|
+
// `details.statusCode` (set by `vikunjaRestRequest` on every non-2xx
|
|
173
|
+
// response) alongside the shared message-pattern classifier:
|
|
174
|
+
// `isAuthenticationError`'s message patterns include some anchored to
|
|
175
|
+
// the start of the string (e.g. `/^401\b/`), which stop matching once
|
|
176
|
+
// `vikunjaRestRequestRaw` prefixes the message with its own "Vikunja
|
|
177
|
+
// REST request failed (...)" context — the statusCode check keeps a
|
|
178
|
+
// real 401/403 response reliably classified regardless of message
|
|
179
|
+
// shape.
|
|
180
|
+
const statusCode = error instanceof types_1.MCPError ? error.details?.statusCode : undefined;
|
|
181
|
+
if (statusCode === 401 || statusCode === 403 || (0, auth_error_handler_1.isAuthenticationError)(error)) {
|
|
182
|
+
throw new types_1.MCPError(types_1.ErrorCode.API_ERROR, `Authentication error while creating task "${taskTitle}". The token works for other endpoints but may have issues with batch operations. Original error: ${error instanceof Error ? error.message : String(error)}`);
|
|
183
|
+
}
|
|
184
|
+
// Re-throw as a plain Error, not the direct-REST helper's `MCPError`.
|
|
185
|
+
// `createTask`'s outer catch treats an `instanceof MCPError` as
|
|
186
|
+
// already-final and re-throws it unconditionally, bypassing the
|
|
187
|
+
// `catchErrors`-gated graceful-degradation path below — that
|
|
188
|
+
// short-circuit exists for OUR deliberately-thrown MCPErrors (like
|
|
189
|
+
// the auth one just above), not for generic transport failures.
|
|
190
|
+
// Pre-migration, the legacy client's `createTask` threw plain `Error`s
|
|
191
|
+
// here (never `MCPError`), so `catchErrors` correctly gated whether a
|
|
192
|
+
// non-auth API failure aborted the whole batch or was reported as a
|
|
193
|
+
// per-task failure; unwrapping here restores that behavior instead of
|
|
194
|
+
// letting every transport failure silently start behaving like an
|
|
195
|
+
// auth failure now that `vikunjaRestRequest` always throws MCPError.
|
|
196
|
+
throw error instanceof Error ? new Error(error.message) : error;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Handles label assignment for a created task
|
|
201
|
+
*
|
|
202
|
+
* @param authManager - Active auth manager holding the session credentials
|
|
203
|
+
* @param createdTask - The task that was created
|
|
204
|
+
* @param task - Original task data with labels
|
|
205
|
+
* @param labelMap - Mapping of label names to IDs
|
|
206
|
+
* @returns Array of warnings from label assignment
|
|
207
|
+
*/
|
|
208
|
+
async handleLabelAssignment(authManager, createdTask, task, labelMap) {
|
|
209
|
+
const warnings = [];
|
|
210
|
+
if (!task.labels || task.labels.length === 0) {
|
|
211
|
+
return warnings;
|
|
212
|
+
}
|
|
213
|
+
// First, check for labels that are not found
|
|
214
|
+
const notFoundLabels = task.labels.filter((labelName) => !labelMap.has(labelName.toLowerCase()));
|
|
215
|
+
if (notFoundLabels.length > 0) {
|
|
216
|
+
logger_1.logger.warn('Some labels not found in project', {
|
|
217
|
+
taskId: createdTask.id || 'unknown',
|
|
218
|
+
requestedLabels: task.labels,
|
|
219
|
+
notFoundLabels,
|
|
220
|
+
availableLabels: Array.from(labelMap.keys()),
|
|
221
|
+
});
|
|
222
|
+
if (createdTask.id) {
|
|
223
|
+
warnings.push(`Labels not found: ${notFoundLabels.join(', ')}`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// Get the label IDs that were found
|
|
227
|
+
const labelIds = task.labels
|
|
228
|
+
.map((labelName) => labelMap.get(labelName.toLowerCase()))
|
|
229
|
+
.filter((id) => id !== undefined);
|
|
230
|
+
if (labelIds.length > 0 && createdTask.id) {
|
|
231
|
+
try {
|
|
232
|
+
// Try to update labels
|
|
233
|
+
await (0, label_bulk_1.setTaskLabels)(authManager, createdTask.id, labelIds);
|
|
234
|
+
// Verify the labels were actually assigned (API tokens may silently fail)
|
|
235
|
+
const labelsActuallyAssigned = await this.verifyLabelAssignment(authManager, createdTask.id, labelIds);
|
|
236
|
+
if (!labelsActuallyAssigned) {
|
|
237
|
+
// Label assignment silently failed (common with API tokens)
|
|
238
|
+
logger_1.logger.warn('Label assignment may have failed silently', {
|
|
239
|
+
taskId: createdTask.id,
|
|
240
|
+
labelIds,
|
|
241
|
+
labelNames: task.labels,
|
|
242
|
+
});
|
|
243
|
+
warnings.push(`Labels specified but not assigned (API token limitation). Consider using JWT authentication for label support.`);
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
logger_1.logger.debug('Labels assigned and verified successfully', {
|
|
247
|
+
taskId: createdTask.id,
|
|
248
|
+
labelIds,
|
|
249
|
+
labelNames: task.labels,
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
catch (labelError) {
|
|
254
|
+
const warning = this.handleLabelAssignmentError(labelError, createdTask.id, task.labels);
|
|
255
|
+
warnings.push(warning);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return warnings;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Verifies that labels were actually assigned to a task
|
|
262
|
+
*
|
|
263
|
+
* @param authManager - Active auth manager holding the session credentials
|
|
264
|
+
* @param taskId - The task ID to verify
|
|
265
|
+
* @param expectedLabelIds - Labels that should be assigned
|
|
266
|
+
* @returns True if labels are actually assigned, false otherwise
|
|
267
|
+
*/
|
|
268
|
+
async verifyLabelAssignment(authManager, taskId, expectedLabelIds) {
|
|
269
|
+
try {
|
|
270
|
+
const updatedTask = await (0, task_rest_transport_1.getTaskViaRest)(authManager, taskId);
|
|
271
|
+
if (updatedTask && updatedTask.labels && Array.isArray(updatedTask.labels)) {
|
|
272
|
+
const assignedLabelIds = updatedTask.labels.map((l) => l.id);
|
|
273
|
+
return expectedLabelIds.every((id) => assignedLabelIds.includes(id));
|
|
274
|
+
}
|
|
275
|
+
return false;
|
|
276
|
+
}
|
|
277
|
+
catch (verifyError) {
|
|
278
|
+
// If we can't verify, assume it didn't work
|
|
279
|
+
logger_1.logger.debug('Could not verify label assignment', {
|
|
280
|
+
taskId,
|
|
281
|
+
error: verifyError instanceof Error ? verifyError.message : String(verifyError),
|
|
282
|
+
});
|
|
283
|
+
return false;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Handles errors during label assignment
|
|
288
|
+
*
|
|
289
|
+
* @param labelError - The error that occurred
|
|
290
|
+
* @param taskId - The task ID
|
|
291
|
+
* @param labelNames - The label names that were being assigned
|
|
292
|
+
* @returns Warning message
|
|
293
|
+
*/
|
|
294
|
+
handleLabelAssignmentError(labelError, taskId, labelNames) {
|
|
295
|
+
// Check if this is an authentication error
|
|
296
|
+
if ((0, auth_error_handler_1.isAuthenticationError)(labelError)) {
|
|
297
|
+
logger_1.logger.warn('Label assignment failed due to authentication issue', {
|
|
298
|
+
taskId,
|
|
299
|
+
labelNames,
|
|
300
|
+
error: labelError instanceof Error ? labelError.message : (labelError?.message ?? 'Unknown error'),
|
|
301
|
+
});
|
|
302
|
+
return `Label assignment requires JWT authentication. Labels were not assigned.`;
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
logger_1.logger.error('Failed to assign labels to task', {
|
|
306
|
+
taskId,
|
|
307
|
+
labelNames,
|
|
308
|
+
error: labelError instanceof Error ? labelError.message : (labelError?.message ?? 'Unknown error'),
|
|
309
|
+
});
|
|
310
|
+
return `Failed to assign labels: ${labelError instanceof Error ? labelError.message : 'Unknown error'}`;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Handles user assignment for a created task
|
|
315
|
+
*
|
|
316
|
+
* @param authManager - Active auth manager holding the session credentials
|
|
317
|
+
* @param createdTask - The task that was created
|
|
318
|
+
* @param task - Original task data with assignees
|
|
319
|
+
* @param userMap - Mapping of usernames to IDs
|
|
320
|
+
* @param projectUsers - List of available project users
|
|
321
|
+
* @returns Array of warnings from user assignment
|
|
322
|
+
*/
|
|
323
|
+
async handleUserAssignment(authManager, createdTask, task, userMap, projectUsers) {
|
|
324
|
+
const warnings = [];
|
|
325
|
+
if (!task.assignees || task.assignees.length === 0) {
|
|
326
|
+
return warnings;
|
|
327
|
+
}
|
|
328
|
+
// Check if we have any users mapped (might be empty due to API issue)
|
|
329
|
+
if (projectUsers.length === 0) {
|
|
330
|
+
logger_1.logger.warn('Skipping assignees due to user fetch failure', {
|
|
331
|
+
taskId: createdTask.id || 'unknown',
|
|
332
|
+
assignees: task.assignees,
|
|
333
|
+
});
|
|
334
|
+
warnings.push('Assignees skipped due to user fetch failure (possible API authentication issue)');
|
|
335
|
+
return warnings;
|
|
336
|
+
}
|
|
337
|
+
// Check for users that are not found first
|
|
338
|
+
const notFoundUsers = task.assignees.filter((username) => !userMap.has(username.toLowerCase()));
|
|
339
|
+
if (notFoundUsers.length > 0) {
|
|
340
|
+
warnings.push(`Users not found: ${notFoundUsers.join(', ')}`);
|
|
341
|
+
}
|
|
342
|
+
// Get the user IDs that were found
|
|
343
|
+
const userIds = task.assignees
|
|
344
|
+
.map((username) => userMap.get(username.toLowerCase()))
|
|
345
|
+
.filter((id) => id !== undefined);
|
|
346
|
+
if (userIds.length > 0 && createdTask.id) {
|
|
347
|
+
try {
|
|
348
|
+
// Assign each user via the ADDITIVE single-assign endpoint (PUT
|
|
349
|
+
// /tasks/{taskID}/assignees, body { user_id }, models.TaskAssginee)
|
|
350
|
+
// rather than the bulk endpoint (POST .../assignees/bulk), which
|
|
351
|
+
// REPLACES the whole assignee list — a bulk call would silently
|
|
352
|
+
// unassign everyone (democratize-technology/vikunja-mcp#15).
|
|
353
|
+
// Sequential on purpose (post-#89 pattern sweep): concurrent
|
|
354
|
+
// per-user writes to the same task risk "database is locked" 500s
|
|
355
|
+
// on SQLite-backed instances.
|
|
356
|
+
const taskId = createdTask.id;
|
|
357
|
+
for (const userId of userIds) {
|
|
358
|
+
await (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'PUT', `/tasks/${taskId}/assignees`, { user_id: userId });
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
catch (assignError) {
|
|
362
|
+
logger_1.logger.error('Failed to assign users to task', {
|
|
363
|
+
taskId: createdTask.id,
|
|
364
|
+
userIds,
|
|
365
|
+
assignees: task.assignees,
|
|
366
|
+
error: assignError instanceof Error ? assignError.message : String(assignError),
|
|
367
|
+
});
|
|
368
|
+
warnings.push(`Failed to assign users: ${assignError instanceof Error ? assignError.message : 'Unknown error'}`);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
return warnings;
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Handles reminders for a task (API limitation)
|
|
375
|
+
*
|
|
376
|
+
* @param taskId - The task ID
|
|
377
|
+
* @param reminders - Array of reminder data
|
|
378
|
+
* @returns Warning message about API limitation
|
|
379
|
+
*/
|
|
380
|
+
handleReminders(taskId, reminders) {
|
|
381
|
+
// Note: The API doesn't support adding reminders separately,
|
|
382
|
+
// they need to be added during task creation
|
|
383
|
+
// This is a limitation of the current implementation
|
|
384
|
+
logger_1.logger.warn('Reminders cannot be added after task creation', {
|
|
385
|
+
taskId: taskId || 'unknown',
|
|
386
|
+
reminders,
|
|
387
|
+
});
|
|
388
|
+
return 'Reminders cannot be added after task creation (API limitation). Include them in the initial task data.';
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
exports.TaskCreationService = TaskCreationService;
|
|
392
|
+
//# sourceMappingURL=TaskCreationService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskCreationService.js","sourceRoot":"","sources":["../../src/services/TaskCreationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple filter storage - eliminates over-engineering
|
|
3
|
+
*
|
|
4
|
+
* Replaces 33 files and 9,803 lines with essential functionality:
|
|
5
|
+
* - Session-isolated filter storage
|
|
6
|
+
* - Thread-safe operations with mutex
|
|
7
|
+
* - Same external API as before
|
|
8
|
+
*/
|
|
9
|
+
import type { FilterStorage, SavedFilter } from '../types/filters';
|
|
10
|
+
/**
|
|
11
|
+
* Session information
|
|
12
|
+
*/
|
|
13
|
+
interface StorageSession {
|
|
14
|
+
id: string;
|
|
15
|
+
userId?: string;
|
|
16
|
+
apiUrl?: string;
|
|
17
|
+
createdAt: Date;
|
|
18
|
+
lastAccessAt: Date;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Simple filter storage implementation
|
|
22
|
+
*/
|
|
23
|
+
export declare class SimpleFilterStorage implements FilterStorage {
|
|
24
|
+
private filters;
|
|
25
|
+
private mutex;
|
|
26
|
+
private session;
|
|
27
|
+
constructor(sessionId: string, userId?: string, apiUrl?: string);
|
|
28
|
+
private updateAccessTime;
|
|
29
|
+
list(): Promise<SavedFilter[]>;
|
|
30
|
+
get(id: string): Promise<SavedFilter | null>;
|
|
31
|
+
create(filter: Omit<SavedFilter, 'id' | 'created' | 'updated'>): Promise<SavedFilter>;
|
|
32
|
+
update(id: string, filter: Partial<Omit<SavedFilter, 'id' | 'created' | 'updated'>>): Promise<SavedFilter>;
|
|
33
|
+
delete(id: string): Promise<void>;
|
|
34
|
+
findByName(name: string): Promise<SavedFilter | null>;
|
|
35
|
+
getByProject(projectId: number): Promise<SavedFilter[]>;
|
|
36
|
+
/**
|
|
37
|
+
* Session management
|
|
38
|
+
*/
|
|
39
|
+
getSession(): StorageSession;
|
|
40
|
+
/**
|
|
41
|
+
* Get storage statistics
|
|
42
|
+
*/
|
|
43
|
+
getStats(): Promise<{
|
|
44
|
+
filterCount: number;
|
|
45
|
+
sessionId: string;
|
|
46
|
+
createdAt: Date;
|
|
47
|
+
lastAccessAt: Date;
|
|
48
|
+
storageType: string;
|
|
49
|
+
additionalInfo?: Record<string, unknown>;
|
|
50
|
+
}>;
|
|
51
|
+
/**
|
|
52
|
+
* Clear all filters (for testing)
|
|
53
|
+
*/
|
|
54
|
+
clear(): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Health check
|
|
57
|
+
*/
|
|
58
|
+
healthCheck(): {
|
|
59
|
+
healthy: boolean;
|
|
60
|
+
error?: string;
|
|
61
|
+
details?: Record<string, unknown>;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Close storage
|
|
65
|
+
*/
|
|
66
|
+
close(): Promise<void>;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Storage manager
|
|
70
|
+
*/
|
|
71
|
+
export declare class FilterStorageManager {
|
|
72
|
+
private storageInstances;
|
|
73
|
+
private cleanupInterval;
|
|
74
|
+
private mutex;
|
|
75
|
+
private readonly CLEANUP_INTERVAL_MS;
|
|
76
|
+
private readonly SESSION_TIMEOUT_MS;
|
|
77
|
+
constructor();
|
|
78
|
+
getStorage(sessionId: string, userId?: string, apiUrl?: string): Promise<SimpleFilterStorage>;
|
|
79
|
+
getAllStats(): Promise<Array<{
|
|
80
|
+
sessionId: string;
|
|
81
|
+
filterCount: number;
|
|
82
|
+
createdAt: Date;
|
|
83
|
+
lastAccessAt: Date;
|
|
84
|
+
memoryUsageKb: number;
|
|
85
|
+
}>>;
|
|
86
|
+
private startCleanupTimer;
|
|
87
|
+
private cleanupInactiveSessions;
|
|
88
|
+
/**
|
|
89
|
+
* Cleanup on process exit
|
|
90
|
+
*/
|
|
91
|
+
destroy(): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Clear all storage instances (for testing)
|
|
94
|
+
*/
|
|
95
|
+
clearAll(): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* Stop cleanup timer (for testing)
|
|
98
|
+
*/
|
|
99
|
+
stopCleanupTimer(): void;
|
|
100
|
+
}
|
|
101
|
+
export declare const storageManager: FilterStorageManager;
|
|
102
|
+
export {};
|
|
103
|
+
//# sourceMappingURL=SimpleFilterStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SimpleFilterStorage.d.ts","sourceRoot":"","sources":["../../src/storage/SimpleFilterStorage.ts"],"names":[],"mappings":"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"}
|