@payloadcms/plugin-mcp 4.0.0-internal.d28e9fb → 4.0.0-internal.d7d662c
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.md +1 -1
- package/bin.js +39 -0
- package/dist/defaultAccess.d.ts +3 -0
- package/dist/defaultAccess.d.ts.map +1 -0
- package/dist/defaultAccess.js +3 -0
- package/dist/defaultAccess.js.map +1 -0
- package/dist/defineTool.d.ts +26 -0
- package/dist/defineTool.d.ts.map +1 -0
- package/dist/defineTool.js +37 -0
- package/dist/defineTool.js.map +1 -0
- package/dist/endpoint/access.d.ts +17 -0
- package/dist/endpoint/access.d.ts.map +1 -0
- package/dist/endpoint/access.js +105 -0
- package/dist/endpoint/access.js.map +1 -0
- package/dist/endpoint/index.d.ts +3 -0
- package/dist/endpoint/index.d.ts.map +1 -0
- package/dist/endpoint/index.js +129 -0
- package/dist/endpoint/index.js.map +1 -0
- package/dist/endpoint/oauth.d.ts +35 -0
- package/dist/endpoint/oauth.d.ts.map +1 -0
- package/dist/endpoint/oauth.js +87 -0
- package/dist/endpoint/oauth.js.map +1 -0
- package/dist/exports/client.d.ts +2 -0
- package/dist/exports/client.d.ts.map +1 -0
- package/dist/exports/client.js +4 -0
- package/dist/exports/client.js.map +1 -0
- package/dist/exports/internal.d.ts +2 -0
- package/dist/exports/internal.d.ts.map +1 -0
- package/dist/exports/internal.js +3 -0
- package/dist/exports/internal.js.map +1 -0
- package/dist/index.d.ts +14 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +50 -67
- package/dist/index.js.map +1 -1
- package/dist/mcp/buildMcpServer.d.ts +19 -0
- package/dist/mcp/buildMcpServer.d.ts.map +1 -0
- package/dist/mcp/buildMcpServer.js +235 -0
- package/dist/mcp/buildMcpServer.js.map +1 -0
- package/dist/mcp/builtin/collections/authTools.d.ts +7 -0
- package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/authTools.js +312 -0
- package/dist/mcp/builtin/collections/authTools.js.map +1 -0
- package/dist/mcp/builtin/collections/countTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/countTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/countTool.js +63 -0
- package/dist/mcp/builtin/collections/countTool.js.map +1 -0
- package/dist/mcp/builtin/collections/countVersionsTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/countVersionsTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/countVersionsTool.js +60 -0
- package/dist/mcp/builtin/collections/countVersionsTool.js.map +1 -0
- package/dist/mcp/builtin/collections/createTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/createTool.js +137 -0
- package/dist/mcp/builtin/collections/createTool.js.map +1 -0
- package/dist/mcp/builtin/collections/deleteTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/deleteTool.js +111 -0
- package/dist/mcp/builtin/collections/deleteTool.js.map +1 -0
- package/dist/mcp/builtin/collections/duplicateTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/duplicateTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/duplicateTool.js +90 -0
- package/dist/mcp/builtin/collections/duplicateTool.js.map +1 -0
- package/dist/mcp/builtin/collections/fileInput.d.ts +28 -0
- package/dist/mcp/builtin/collections/fileInput.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/fileInput.js +88 -0
- package/dist/mcp/builtin/collections/fileInput.js.map +1 -0
- package/dist/mcp/builtin/collections/findDistinctTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/findDistinctTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/findDistinctTool.js +77 -0
- package/dist/mcp/builtin/collections/findDistinctTool.js.map +1 -0
- package/dist/mcp/builtin/collections/findTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/findTool.js +146 -0
- package/dist/mcp/builtin/collections/findTool.js.map +1 -0
- package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/findVersionByIDTool.js +74 -0
- package/dist/mcp/builtin/collections/findVersionByIDTool.js.map +1 -0
- package/dist/mcp/builtin/collections/findVersionsTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/findVersionsTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/findVersionsTool.js +84 -0
- package/dist/mcp/builtin/collections/findVersionsTool.js.map +1 -0
- package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +103 -0
- package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -0
- package/dist/mcp/builtin/collections/restoreVersionTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/restoreVersionTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/restoreVersionTool.js +69 -0
- package/dist/mcp/builtin/collections/restoreVersionTool.js.map +1 -0
- package/dist/mcp/builtin/collections/updateTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/updateTool.js +172 -0
- package/dist/mcp/builtin/collections/updateTool.js.map +1 -0
- package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts +2 -0
- package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts.map +1 -0
- package/dist/mcp/builtin/collections/uploadInstructionsTool.js +55 -0
- package/dist/mcp/builtin/collections/uploadInstructionsTool.js.map +1 -0
- package/dist/mcp/builtin/formatEntityError.d.ts +16 -0
- package/dist/mcp/builtin/formatEntityError.d.ts.map +1 -0
- package/dist/mcp/builtin/formatEntityError.js +55 -0
- package/dist/mcp/builtin/formatEntityError.js.map +1 -0
- package/dist/mcp/builtin/getConfigInfoTool.d.ts +2 -0
- package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -0
- package/dist/mcp/builtin/getConfigInfoTool.js +69 -0
- package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -0
- package/dist/mcp/builtin/globals/countVersionsTool.d.ts +2 -0
- package/dist/mcp/builtin/globals/countVersionsTool.d.ts.map +1 -0
- package/dist/mcp/builtin/globals/countVersionsTool.js +60 -0
- package/dist/mcp/builtin/globals/countVersionsTool.js.map +1 -0
- package/dist/mcp/builtin/globals/findTool.d.ts +2 -0
- package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -0
- package/dist/mcp/builtin/globals/findTool.js +67 -0
- package/dist/mcp/builtin/globals/findTool.js.map +1 -0
- package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts +2 -0
- package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts.map +1 -0
- package/dist/mcp/builtin/globals/findVersionByIDTool.js +68 -0
- package/dist/mcp/builtin/globals/findVersionByIDTool.js.map +1 -0
- package/dist/mcp/builtin/globals/findVersionsTool.d.ts +2 -0
- package/dist/mcp/builtin/globals/findVersionsTool.d.ts.map +1 -0
- package/dist/mcp/builtin/globals/findVersionsTool.js +78 -0
- package/dist/mcp/builtin/globals/findVersionsTool.js.map +1 -0
- package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts +2 -0
- package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts.map +1 -0
- package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +81 -0
- package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -0
- package/dist/mcp/builtin/globals/restoreVersionTool.d.ts +2 -0
- package/dist/mcp/builtin/globals/restoreVersionTool.d.ts.map +1 -0
- package/dist/mcp/builtin/globals/restoreVersionTool.js +70 -0
- package/dist/mcp/builtin/globals/restoreVersionTool.js.map +1 -0
- package/dist/mcp/builtin/globals/updateTool.d.ts +2 -0
- package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -0
- package/dist/mcp/builtin/globals/updateTool.js +78 -0
- package/dist/mcp/builtin/globals/updateTool.js.map +1 -0
- package/dist/mcp/builtinTools.d.ts +168 -0
- package/dist/mcp/builtinTools.d.ts.map +1 -0
- package/dist/mcp/builtinTools.js +169 -0
- package/dist/mcp/builtinTools.js.map +1 -0
- package/dist/mcp/sanitizeMCPConfig.d.ts +16 -0
- package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -0
- package/dist/mcp/sanitizeMCPConfig.js +234 -0
- package/dist/mcp/sanitizeMCPConfig.js.map +1 -0
- package/dist/stdio.d.ts +8 -0
- package/dist/stdio.d.ts.map +1 -0
- package/dist/stdio.js +128 -0
- package/dist/stdio.js.map +1 -0
- package/dist/types.d.ts +298 -446
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/getLogger.d.ts +10 -0
- package/dist/utils/getLogger.d.ts.map +1 -0
- package/dist/utils/getLogger.js +22 -0
- package/dist/utils/getLogger.js.map +1 -0
- package/dist/utils/getPluginConfig.d.ts +12 -0
- package/dist/utils/getPluginConfig.d.ts.map +1 -0
- package/dist/utils/getPluginConfig.js +15 -0
- package/dist/utils/getPluginConfig.js.map +1 -0
- package/dist/utils/resolveProjectRoot.d.ts +7 -0
- package/dist/utils/resolveProjectRoot.d.ts.map +1 -0
- package/dist/utils/resolveProjectRoot.js +15 -0
- package/dist/utils/resolveProjectRoot.js.map +1 -0
- package/dist/utils/toStandardSchema.d.ts +5 -0
- package/dist/utils/toStandardSchema.d.ts.map +1 -0
- package/dist/utils/toStandardSchema.js +4 -0
- package/dist/utils/toStandardSchema.js.map +1 -0
- package/package.json +41 -26
- package/src/defaultAccess.ts +3 -0
- package/src/defineTool.ts +44 -0
- package/src/endpoint/access.ts +120 -0
- package/src/endpoint/index.ts +115 -0
- package/src/endpoint/oauth.ts +90 -0
- package/src/exports/client.ts +3 -0
- package/src/exports/internal.ts +1 -0
- package/src/index.ts +47 -88
- package/src/mcp/buildMcpServer.ts +294 -0
- package/src/mcp/builtin/collections/authTools.ts +280 -0
- package/src/mcp/builtin/collections/countTool.ts +61 -0
- package/src/mcp/builtin/collections/countVersionsTool.ts +60 -0
- package/src/mcp/builtin/collections/createTool.ts +143 -0
- package/src/mcp/builtin/collections/deleteTool.ts +97 -0
- package/src/mcp/builtin/collections/duplicateTool.ts +84 -0
- package/src/mcp/builtin/collections/fileInput.spec.ts +93 -0
- package/src/mcp/builtin/collections/fileInput.ts +127 -0
- package/src/mcp/builtin/collections/findDistinctTool.ts +67 -0
- package/src/mcp/builtin/collections/findTool.ts +134 -0
- package/src/mcp/builtin/collections/findVersionByIDTool.ts +66 -0
- package/src/mcp/builtin/collections/findVersionsTool.ts +83 -0
- package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +91 -0
- package/src/mcp/builtin/collections/restoreVersionTool.ts +65 -0
- package/src/mcp/builtin/collections/updateTool.ts +173 -0
- package/src/mcp/builtin/collections/uploadInstructionsTool.ts +64 -0
- package/src/mcp/builtin/formatEntityError.ts +77 -0
- package/src/mcp/builtin/getConfigInfoTool.ts +68 -0
- package/src/mcp/builtin/globals/countVersionsTool.ts +60 -0
- package/src/mcp/builtin/globals/findTool.ts +66 -0
- package/src/mcp/builtin/globals/findVersionByIDTool.ts +64 -0
- package/src/mcp/builtin/globals/findVersionsTool.ts +69 -0
- package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +73 -0
- package/src/mcp/builtin/globals/restoreVersionTool.ts +68 -0
- package/src/mcp/builtin/globals/updateTool.ts +92 -0
- package/src/mcp/builtinTools.ts +161 -0
- package/src/mcp/sanitizeMCPConfig.ts +282 -0
- package/src/stdio.ts +131 -0
- package/src/types.ts +346 -486
- package/src/utils/getLogger.ts +22 -0
- package/src/utils/getPluginConfig.ts +24 -0
- package/src/utils/resolveProjectRoot.ts +17 -0
- package/src/utils/toStandardSchema.ts +9 -0
- package/dist/collections/createApiKeysCollection.d.ts +0 -7
- package/dist/collections/createApiKeysCollection.d.ts.map +0 -1
- package/dist/collections/createApiKeysCollection.js +0 -317
- package/dist/collections/createApiKeysCollection.js.map +0 -1
- package/dist/defaults.d.ts +0 -4
- package/dist/defaults.d.ts.map +0 -1
- package/dist/defaults.js +0 -5
- package/dist/defaults.js.map +0 -1
- package/dist/endpoints/mcp.d.ts +0 -4
- package/dist/endpoints/mcp.d.ts.map +0 -1
- package/dist/endpoints/mcp.js +0 -71
- package/dist/endpoints/mcp.js.map +0 -1
- package/dist/mcp/createRequest.d.ts +0 -3
- package/dist/mcp/createRequest.d.ts.map +0 -1
- package/dist/mcp/createRequest.js +0 -14
- package/dist/mcp/createRequest.js.map +0 -1
- package/dist/mcp/getMcpHandler.d.ts +0 -4
- package/dist/mcp/getMcpHandler.d.ts.map +0 -1
- package/dist/mcp/getMcpHandler.js +0 -231
- package/dist/mcp/getMcpHandler.js.map +0 -1
- package/dist/mcp/helpers/config.d.ts +0 -22
- package/dist/mcp/helpers/config.d.ts.map +0 -1
- package/dist/mcp/helpers/config.js +0 -153
- package/dist/mcp/helpers/config.js.map +0 -1
- package/dist/mcp/helpers/fields.d.ts +0 -19
- package/dist/mcp/helpers/fields.d.ts.map +0 -1
- package/dist/mcp/helpers/fields.js +0 -102
- package/dist/mcp/helpers/fields.js.map +0 -1
- package/dist/mcp/helpers/fileValidation.d.ts +0 -67
- package/dist/mcp/helpers/fileValidation.d.ts.map +0 -1
- package/dist/mcp/helpers/fileValidation.js +0 -267
- package/dist/mcp/helpers/fileValidation.js.map +0 -1
- package/dist/mcp/registerTool.d.ts +0 -6
- package/dist/mcp/registerTool.d.ts.map +0 -1
- package/dist/mcp/registerTool.js +0 -18
- package/dist/mcp/registerTool.js.map +0 -1
- package/dist/mcp/tools/auth/auth.d.ts +0 -4
- package/dist/mcp/tools/auth/auth.d.ts.map +0 -1
- package/dist/mcp/tools/auth/auth.js +0 -57
- package/dist/mcp/tools/auth/auth.js.map +0 -1
- package/dist/mcp/tools/auth/forgotPassword.d.ts +0 -4
- package/dist/mcp/tools/auth/forgotPassword.d.ts.map +0 -1
- package/dist/mcp/tools/auth/forgotPassword.js +0 -48
- package/dist/mcp/tools/auth/forgotPassword.js.map +0 -1
- package/dist/mcp/tools/auth/login.d.ts +0 -4
- package/dist/mcp/tools/auth/login.d.ts.map +0 -1
- package/dist/mcp/tools/auth/login.js +0 -51
- package/dist/mcp/tools/auth/login.js.map +0 -1
- package/dist/mcp/tools/auth/resetPassword.d.ts +0 -4
- package/dist/mcp/tools/auth/resetPassword.d.ts.map +0 -1
- package/dist/mcp/tools/auth/resetPassword.js +0 -49
- package/dist/mcp/tools/auth/resetPassword.js.map +0 -1
- package/dist/mcp/tools/auth/unlock.d.ts +0 -4
- package/dist/mcp/tools/auth/unlock.d.ts.map +0 -1
- package/dist/mcp/tools/auth/unlock.js +0 -48
- package/dist/mcp/tools/auth/unlock.js.map +0 -1
- package/dist/mcp/tools/auth/verify.d.ts +0 -4
- package/dist/mcp/tools/auth/verify.d.ts.map +0 -1
- package/dist/mcp/tools/auth/verify.js +0 -45
- package/dist/mcp/tools/auth/verify.js.map +0 -1
- package/dist/mcp/tools/collection/create.d.ts +0 -10
- package/dist/mcp/tools/collection/create.d.ts.map +0 -1
- package/dist/mcp/tools/collection/create.js +0 -139
- package/dist/mcp/tools/collection/create.js.map +0 -1
- package/dist/mcp/tools/collection/delete.d.ts +0 -10
- package/dist/mcp/tools/collection/delete.d.ts.map +0 -1
- package/dist/mcp/tools/collection/delete.js +0 -154
- package/dist/mcp/tools/collection/delete.js.map +0 -1
- package/dist/mcp/tools/collection/find.d.ts +0 -10
- package/dist/mcp/tools/collection/find.d.ts.map +0 -1
- package/dist/mcp/tools/collection/find.js +0 -165
- package/dist/mcp/tools/collection/find.js.map +0 -1
- package/dist/mcp/tools/collection/update.d.ts +0 -10
- package/dist/mcp/tools/collection/update.d.ts.map +0 -1
- package/dist/mcp/tools/collection/update.js +0 -209
- package/dist/mcp/tools/collection/update.js.map +0 -1
- package/dist/mcp/tools/config/find.d.ts +0 -10
- package/dist/mcp/tools/config/find.d.ts.map +0 -1
- package/dist/mcp/tools/config/find.js +0 -97
- package/dist/mcp/tools/config/find.js.map +0 -1
- package/dist/mcp/tools/config/update.d.ts +0 -10
- package/dist/mcp/tools/config/update.d.ts.map +0 -1
- package/dist/mcp/tools/config/update.js +0 -215
- package/dist/mcp/tools/config/update.js.map +0 -1
- package/dist/mcp/tools/global/find.d.ts +0 -5
- package/dist/mcp/tools/global/find.d.ts.map +0 -1
- package/dist/mcp/tools/global/find.js +0 -82
- package/dist/mcp/tools/global/find.js.map +0 -1
- package/dist/mcp/tools/global/update.d.ts +0 -6
- package/dist/mcp/tools/global/update.d.ts.map +0 -1
- package/dist/mcp/tools/global/update.js +0 -124
- package/dist/mcp/tools/global/update.js.map +0 -1
- package/dist/mcp/tools/job/create.d.ts +0 -10
- package/dist/mcp/tools/job/create.d.ts.map +0 -1
- package/dist/mcp/tools/job/create.js +0 -293
- package/dist/mcp/tools/job/create.js.map +0 -1
- package/dist/mcp/tools/job/run.d.ts +0 -10
- package/dist/mcp/tools/job/run.d.ts.map +0 -1
- package/dist/mcp/tools/job/run.js +0 -129
- package/dist/mcp/tools/job/run.js.map +0 -1
- package/dist/mcp/tools/job/update.d.ts +0 -11
- package/dist/mcp/tools/job/update.d.ts.map +0 -1
- package/dist/mcp/tools/job/update.js +0 -186
- package/dist/mcp/tools/job/update.js.map +0 -1
- package/dist/mcp/tools/resource/create.d.ts +0 -6
- package/dist/mcp/tools/resource/create.d.ts.map +0 -1
- package/dist/mcp/tools/resource/create.js +0 -124
- package/dist/mcp/tools/resource/create.js.map +0 -1
- package/dist/mcp/tools/resource/delete.d.ts +0 -5
- package/dist/mcp/tools/resource/delete.d.ts.map +0 -1
- package/dist/mcp/tools/resource/delete.js +0 -151
- package/dist/mcp/tools/resource/delete.js.map +0 -1
- package/dist/mcp/tools/resource/find.d.ts +0 -5
- package/dist/mcp/tools/resource/find.d.ts.map +0 -1
- package/dist/mcp/tools/resource/find.js +0 -170
- package/dist/mcp/tools/resource/find.js.map +0 -1
- package/dist/mcp/tools/resource/update.d.ts +0 -6
- package/dist/mcp/tools/resource/update.d.ts.map +0 -1
- package/dist/mcp/tools/resource/update.js +0 -256
- package/dist/mcp/tools/resource/update.js.map +0 -1
- package/dist/mcp/tools/schemas.d.ts +0 -457
- package/dist/mcp/tools/schemas.d.ts.map +0 -1
- package/dist/mcp/tools/schemas.js +0 -243
- package/dist/mcp/tools/schemas.js.map +0 -1
- package/dist/utils/adminEntitySettings.d.ts +0 -17
- package/dist/utils/adminEntitySettings.d.ts.map +0 -1
- package/dist/utils/adminEntitySettings.js +0 -41
- package/dist/utils/adminEntitySettings.js.map +0 -1
- package/dist/utils/createApiKeyFields.d.ts +0 -15
- package/dist/utils/createApiKeyFields.d.ts.map +0 -1
- package/dist/utils/createApiKeyFields.js +0 -57
- package/dist/utils/createApiKeyFields.js.map +0 -1
- package/dist/utils/getEnabledSlugs.d.ts +0 -13
- package/dist/utils/getEnabledSlugs.d.ts.map +0 -1
- package/dist/utils/getEnabledSlugs.js +0 -32
- package/dist/utils/getEnabledSlugs.js.map +0 -1
- package/dist/utils/getVirtualFieldNames.d.ts +0 -14
- package/dist/utils/getVirtualFieldNames.d.ts.map +0 -1
- package/dist/utils/getVirtualFieldNames.js +0 -35
- package/dist/utils/getVirtualFieldNames.js.map +0 -1
- package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts +0 -3
- package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts.map +0 -1
- package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js +0 -43
- package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js.map +0 -1
- package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts +0 -7
- package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts.map +0 -1
- package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js +0 -20
- package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js.map +0 -1
- package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts +0 -13
- package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts.map +0 -1
- package/dist/utils/schemaConversion/sanitizeJsonSchema.js +0 -56
- package/dist/utils/schemaConversion/sanitizeJsonSchema.js.map +0 -1
- package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts +0 -20
- package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts.map +0 -1
- package/dist/utils/schemaConversion/simplifyRelationshipFields.js +0 -53
- package/dist/utils/schemaConversion/simplifyRelationshipFields.js.map +0 -1
- package/dist/utils/schemaConversion/transformPointFields.d.ts +0 -3
- package/dist/utils/schemaConversion/transformPointFields.d.ts.map +0 -1
- package/dist/utils/schemaConversion/transformPointFields.js +0 -51
- package/dist/utils/schemaConversion/transformPointFields.js.map +0 -1
- package/dist/utils/transformPointDataToPayload.d.ts +0 -7
- package/dist/utils/transformPointDataToPayload.d.ts.map +0 -1
- package/dist/utils/transformPointDataToPayload.js +0 -28
- package/dist/utils/transformPointDataToPayload.js.map +0 -1
- package/src/collections/createApiKeysCollection.ts +0 -373
- package/src/defaults.ts +0 -3
- package/src/endpoints/mcp.ts +0 -91
- package/src/mcp/createRequest.ts +0 -13
- package/src/mcp/getMcpHandler.ts +0 -545
- package/src/mcp/helpers/config.ts +0 -213
- package/src/mcp/helpers/fields.ts +0 -154
- package/src/mcp/helpers/fileValidation.ts +0 -362
- package/src/mcp/registerTool.ts +0 -22
- package/src/mcp/tools/auth/auth.ts +0 -71
- package/src/mcp/tools/auth/forgotPassword.ts +0 -70
- package/src/mcp/tools/auth/login.ts +0 -72
- package/src/mcp/tools/auth/resetPassword.ts +0 -61
- package/src/mcp/tools/auth/unlock.ts +0 -64
- package/src/mcp/tools/auth/verify.ts +0 -57
- package/src/mcp/tools/collection/create.ts +0 -210
- package/src/mcp/tools/collection/delete.ts +0 -211
- package/src/mcp/tools/collection/find.ts +0 -224
- package/src/mcp/tools/collection/update.ts +0 -290
- package/src/mcp/tools/config/find.ts +0 -128
- package/src/mcp/tools/config/update.ts +0 -280
- package/src/mcp/tools/global/find.ts +0 -128
- package/src/mcp/tools/global/update.ts +0 -207
- package/src/mcp/tools/job/create.ts +0 -416
- package/src/mcp/tools/job/run.ts +0 -167
- package/src/mcp/tools/job/update.ts +0 -274
- package/src/mcp/tools/resource/create.ts +0 -211
- package/src/mcp/tools/resource/delete.ts +0 -218
- package/src/mcp/tools/resource/find.ts +0 -246
- package/src/mcp/tools/resource/update.ts +0 -383
- package/src/mcp/tools/schemas.ts +0 -520
- package/src/utils/adminEntitySettings.ts +0 -40
- package/src/utils/createApiKeyFields.ts +0 -72
- package/src/utils/getEnabledSlugs.ts +0 -42
- package/src/utils/getVirtualFieldNames.ts +0 -53
- package/src/utils/schemaConversion/convertCollectionSchemaToZod.ts +0 -52
- package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +0 -27
- package/src/utils/schemaConversion/sanitizeJsonSchema.ts +0 -62
- package/src/utils/schemaConversion/simplifyRelationshipFields.ts +0 -65
- package/src/utils/schemaConversion/transformPointFields.ts +0 -55
- package/src/utils/transformPointDataToPayload.ts +0 -40
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/mcp/builtin/collections/createTool.ts"],"sourcesContent":["import {\n createDocumentsInputSchema,\n getCollectionVirtualFieldNames,\n hasDraftValidationEnabled,\n stripVirtualFields,\n transformPointDataToPayload,\n validateCollectionData,\n} from 'payload'\n\nimport { defaultAccess } from '../../../defaultAccess.js'\nimport { defineCollectionTool } from '../../../defineTool.js'\nimport { getLogger } from '../../../utils/getLogger.js'\nimport { formatEntityError } from '../formatEntityError.js'\nimport { fileInputSchema, resolveFile } from './fileInput.js'\n\nconst DEFAULT_DESCRIPTION =\n 'Create one or more documents. Each can have different data or a file. Prefer uploadReference after upload, externalURL for URLs, or base64 for small local files.'\n\nexport const createDocumentsTool = defineCollectionTool({\n access: (args) =>\n defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.create),\n annotations: {\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: false,\n readOnlyHint: false,\n title: 'Create Documents',\n },\n description: DEFAULT_DESCRIPTION,\n input: createDocumentsInputSchema({ file: fileInputSchema }),\n}).handler(async ({ slug, authorizedMCP, input, req }) => {\n const payload = req.payload\n const collectionConfig = payload.collections[slug]?.config\n const logger = getLogger({ payload })\n const {\n depth,\n documents,\n draft,\n fallbackLocale,\n locale,\n populate,\n publishAllLocales,\n returning,\n select,\n } = input\n const shouldUsePartialSchema =\n draft === true && collectionConfig !== undefined && !hasDraftValidationEnabled(collectionConfig)\n\n logger.info(`Creating ${documents.length} documents in collection: ${slug}`)\n\n try {\n const virtualFieldNames = getCollectionVirtualFieldNames(payload.config, slug)\n const docs: Array<\n { doc: Record<string, unknown>; index: number } | { id: number | string; index: number }\n > = []\n const errors: Array<{ index: number; message: string }> = []\n let validationSchema: Record<string, unknown> | undefined\n\n for (const [index, document] of documents.entries()) {\n try {\n const inputData = stripVirtualFields(document.data, virtualFieldNames)\n validateCollectionData({\n slug,\n data: inputData,\n partial: shouldUsePartialSchema,\n req,\n })\n\n const parsedData = transformPointDataToPayload(inputData)\n const file = await resolveFile({ slug, input: document.file, req })\n const result = await payload.create({\n collection: slug,\n data: parsedData,\n depth,\n draft,\n overrideAccess: authorizedMCP.overrideAccess,\n populate,\n publishAllLocales,\n req,\n ...(file ? { file } : {}),\n ...(locale ? { locale } : {}),\n ...(fallbackLocale !== undefined ? { fallbackLocale } : {}),\n select: returning ? select : { id: true },\n })\n\n docs.push(returning ? { doc: result, index } : { id: result.id, index })\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Unknown error'\n const formattedError = formatEntityError({\n slug,\n action: 'creating',\n entity: 'collection',\n error,\n req,\n })\n const structuredContent = formattedError.structuredContent as\n | { schema?: unknown }\n | undefined\n const schema = structuredContent?.schema\n const errorContent = formattedError.content[0]\n const formattedMessage =\n errorContent?.type === 'text'\n ? (errorContent.text.split('\\n\\nUse this schema')[0] ?? message)\n : message\n\n if (!validationSchema && schema && typeof schema === 'object') {\n validationSchema = schema as Record<string, unknown>\n }\n\n logger.error(`Error creating document at index ${index} in ${slug}: ${message}`)\n errors.push({ index, message: formattedMessage })\n }\n }\n\n const batchResult = { docs, errors }\n const retryMessage = errors.length > 0 ? '\\nRetry failed indexes only.' : ''\n const schemaMessage = validationSchema\n ? `\\n\\nUse this schema for data:\\n\\`\\`\\`json\\n${JSON.stringify(validationSchema)}\\n\\`\\`\\``\n : ''\n const structuredContent = validationSchema\n ? { ...batchResult, schema: validationSchema }\n : batchResult\n\n logger.info(`Created ${docs.length} of ${documents.length} documents in ${slug}`)\n\n return {\n content: [\n {\n type: 'text',\n text: `Created ${docs.length} of ${documents.length} documents in collection \"${slug}\".${retryMessage}\\nResults:\\n\\`\\`\\`json\\n${JSON.stringify(batchResult)}\\n\\`\\`\\`${schemaMessage}`,\n },\n ],\n doc: structuredContent as unknown as Record<string, unknown>,\n isError: docs.length === 0 && errors.length > 0,\n structuredContent,\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Unknown error'\n\n logger.error(`Error creating documents in ${slug}: ${message}`)\n return formatEntityError({ slug, action: 'creating', entity: 'collection', error, req })\n }\n})\n"],"names":["createDocumentsInputSchema","getCollectionVirtualFieldNames","hasDraftValidationEnabled","stripVirtualFields","transformPointDataToPayload","validateCollectionData","defaultAccess","defineCollectionTool","getLogger","formatEntityError","fileInputSchema","resolveFile","DEFAULT_DESCRIPTION","createDocumentsTool","access","args","Boolean","permissions","collections","slug","create","annotations","destructiveHint","idempotentHint","openWorldHint","readOnlyHint","title","description","input","file","handler","authorizedMCP","req","payload","collectionConfig","config","logger","depth","documents","draft","fallbackLocale","locale","populate","publishAllLocales","returning","select","shouldUsePartialSchema","undefined","info","length","virtualFieldNames","docs","errors","validationSchema","index","document","entries","inputData","data","partial","parsedData","result","collection","overrideAccess","id","push","doc","error","message","Error","formattedError","action","entity","structuredContent","schema","errorContent","content","formattedMessage","type","text","split","batchResult","retryMessage","schemaMessage","JSON","stringify","isError"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deleteTool.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/collections/deleteTool.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,mBAAmB,4CAuF9B,CAAA"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { deleteDocumentsInputSchema, parseDocumentID } from 'payload';
|
|
2
|
+
import { defaultAccess } from '../../../defaultAccess.js';
|
|
3
|
+
import { defineCollectionTool } from '../../../defineTool.js';
|
|
4
|
+
import { getLogger } from '../../../utils/getLogger.js';
|
|
5
|
+
const DEFAULT_DESCRIPTION = 'Delete documents in any collection by passing the collection slug and ID or where clause.';
|
|
6
|
+
export const deleteDocumentsTool = defineCollectionTool({
|
|
7
|
+
access: (args)=>defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.delete),
|
|
8
|
+
annotations: {
|
|
9
|
+
destructiveHint: true,
|
|
10
|
+
idempotentHint: false,
|
|
11
|
+
openWorldHint: false,
|
|
12
|
+
readOnlyHint: false,
|
|
13
|
+
title: 'Delete Documents'
|
|
14
|
+
},
|
|
15
|
+
description: DEFAULT_DESCRIPTION,
|
|
16
|
+
input: deleteDocumentsInputSchema
|
|
17
|
+
}).handler(async ({ slug, authorizedMCP, input, req })=>{
|
|
18
|
+
const payload = req.payload;
|
|
19
|
+
const logger = getLogger({
|
|
20
|
+
payload
|
|
21
|
+
});
|
|
22
|
+
const { id, depth, fallbackLocale, locale, where } = input;
|
|
23
|
+
logger.info(`Deleting document from collection: ${slug}${id ? ` with ID: ${id}` : ' with where clause'}${locale ? `, locale: ${locale}` : ''}`);
|
|
24
|
+
try {
|
|
25
|
+
if (id !== undefined) {
|
|
26
|
+
const result = await payload.delete({
|
|
27
|
+
id: parseDocumentID({
|
|
28
|
+
id,
|
|
29
|
+
collectionSlug: slug,
|
|
30
|
+
payload
|
|
31
|
+
}),
|
|
32
|
+
collection: slug,
|
|
33
|
+
depth,
|
|
34
|
+
overrideAccess: authorizedMCP.overrideAccess,
|
|
35
|
+
req,
|
|
36
|
+
...locale && {
|
|
37
|
+
locale
|
|
38
|
+
},
|
|
39
|
+
...fallbackLocale !== undefined && {
|
|
40
|
+
fallbackLocale
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
return {
|
|
44
|
+
content: [
|
|
45
|
+
{
|
|
46
|
+
type: 'text',
|
|
47
|
+
text: `Document deleted successfully from collection "${slug}"!\nDeleted document:\n\`\`\`json\n${JSON.stringify(result)}\n\`\`\``
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
doc: result
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
if (where === undefined) {
|
|
54
|
+
return {
|
|
55
|
+
content: [
|
|
56
|
+
{
|
|
57
|
+
type: 'text',
|
|
58
|
+
text: 'Error: Either id or where clause must be provided'
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
const result = await payload.delete({
|
|
64
|
+
collection: slug,
|
|
65
|
+
depth,
|
|
66
|
+
overrideAccess: authorizedMCP.overrideAccess,
|
|
67
|
+
req,
|
|
68
|
+
where,
|
|
69
|
+
...locale && {
|
|
70
|
+
locale
|
|
71
|
+
},
|
|
72
|
+
...fallbackLocale !== undefined && {
|
|
73
|
+
fallbackLocale
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
const docs = result.docs || [];
|
|
77
|
+
const errors = result.errors || [];
|
|
78
|
+
let responseText = `Document deleted successfully from collection "${slug}"!\nDeleted: ${docs.length} documents\nErrors: ${errors.length}\n---`;
|
|
79
|
+
if (docs.length > 0) {
|
|
80
|
+
responseText += `\n\nDeleted documents:\n\`\`\`json\n${JSON.stringify(docs)}\n\`\`\``;
|
|
81
|
+
}
|
|
82
|
+
if (errors.length > 0) {
|
|
83
|
+
responseText += `\n\nErrors:\n\`\`\`json\n${JSON.stringify(errors)}\n\`\`\``;
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
content: [
|
|
87
|
+
{
|
|
88
|
+
type: 'text',
|
|
89
|
+
text: responseText
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
doc: {
|
|
93
|
+
docs,
|
|
94
|
+
errors
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
} catch (error) {
|
|
98
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
99
|
+
logger.error(`Error deleting document from ${slug}: ${errorMessage}`);
|
|
100
|
+
return {
|
|
101
|
+
content: [
|
|
102
|
+
{
|
|
103
|
+
type: 'text',
|
|
104
|
+
text: `Error deleting document from collection "${slug}": ${errorMessage}`
|
|
105
|
+
}
|
|
106
|
+
]
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
//# sourceMappingURL=deleteTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/mcp/builtin/collections/deleteTool.ts"],"sourcesContent":["import { deleteDocumentsInputSchema, parseDocumentID } from 'payload'\n\nimport { defaultAccess } from '../../../defaultAccess.js'\nimport { defineCollectionTool } from '../../../defineTool.js'\nimport { getLogger } from '../../../utils/getLogger.js'\n\nconst DEFAULT_DESCRIPTION =\n 'Delete documents in any collection by passing the collection slug and ID or where clause.'\n\nexport const deleteDocumentsTool = defineCollectionTool({\n access: (args) =>\n defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.delete),\n annotations: {\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: false,\n readOnlyHint: false,\n title: 'Delete Documents',\n },\n description: DEFAULT_DESCRIPTION,\n input: deleteDocumentsInputSchema,\n}).handler(async ({ slug, authorizedMCP, input, req }) => {\n const payload = req.payload\n const logger = getLogger({ payload })\n\n const { id, depth, fallbackLocale, locale, where } = input\n\n logger.info(\n `Deleting document from collection: ${slug}${id ? ` with ID: ${id}` : ' with where clause'}${locale ? `, locale: ${locale}` : ''}`,\n )\n\n try {\n if (id !== undefined) {\n const result = await payload.delete({\n id: parseDocumentID({ id, collectionSlug: slug, payload }),\n collection: slug,\n depth,\n overrideAccess: authorizedMCP.overrideAccess,\n req,\n ...(locale && { locale }),\n ...(fallbackLocale !== undefined && { fallbackLocale }),\n })\n\n return {\n content: [\n {\n type: 'text',\n text: `Document deleted successfully from collection \"${slug}\"!\\nDeleted document:\\n\\`\\`\\`json\\n${JSON.stringify(result)}\\n\\`\\`\\``,\n },\n ],\n doc: result,\n }\n }\n\n if (where === undefined) {\n return {\n content: [{ type: 'text', text: 'Error: Either id or where clause must be provided' }],\n }\n }\n\n const result = await payload.delete({\n collection: slug,\n depth,\n overrideAccess: authorizedMCP.overrideAccess,\n req,\n where,\n ...(locale && { locale }),\n ...(fallbackLocale !== undefined && { fallbackLocale }),\n })\n const docs = result.docs || []\n const errors = result.errors || []\n\n let responseText = `Document deleted successfully from collection \"${slug}\"!\\nDeleted: ${docs.length} documents\\nErrors: ${errors.length}\\n---`\n if (docs.length > 0) {\n responseText += `\\n\\nDeleted documents:\\n\\`\\`\\`json\\n${JSON.stringify(docs)}\\n\\`\\`\\``\n }\n if (errors.length > 0) {\n responseText += `\\n\\nErrors:\\n\\`\\`\\`json\\n${JSON.stringify(errors)}\\n\\`\\`\\``\n }\n\n return {\n content: [{ type: 'text', text: responseText }],\n doc: { docs, errors } as unknown as Record<string, unknown>,\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n logger.error(`Error deleting document from ${slug}: ${errorMessage}`)\n return {\n content: [\n {\n type: 'text',\n text: `Error deleting document from collection \"${slug}\": ${errorMessage}`,\n },\n ],\n }\n }\n})\n"],"names":["deleteDocumentsInputSchema","parseDocumentID","defaultAccess","defineCollectionTool","getLogger","DEFAULT_DESCRIPTION","deleteDocumentsTool","access","args","Boolean","permissions","collections","slug","delete","annotations","destructiveHint","idempotentHint","openWorldHint","readOnlyHint","title","description","input","handler","authorizedMCP","req","payload","logger","id","depth","fallbackLocale","locale","where","info","undefined","result","collectionSlug","collection","overrideAccess","content","type","text","JSON","stringify","doc","docs","errors","responseText","length","error","errorMessage","Error","message"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duplicateTool.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/collections/duplicateTool.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,qBAAqB,4CAkEhC,CAAA"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { duplicateDocumentInputSchema, getCollectionVirtualFieldNames, parseDocumentID, stripVirtualFields, transformPointDataToPayload, validateCollectionData } from 'payload';
|
|
2
|
+
import { defaultAccess } from '../../../defaultAccess.js';
|
|
3
|
+
import { defineCollectionTool } from '../../../defineTool.js';
|
|
4
|
+
import { getLogger } from '../../../utils/getLogger.js';
|
|
5
|
+
import { formatEntityError } from '../formatEntityError.js';
|
|
6
|
+
const DEFAULT_DESCRIPTION = 'Duplicate a document in any collection by passing the collection slug and source document ID.';
|
|
7
|
+
export const duplicateDocumentTool = defineCollectionTool({
|
|
8
|
+
access: (args)=>defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.create),
|
|
9
|
+
annotations: {
|
|
10
|
+
destructiveHint: false,
|
|
11
|
+
idempotentHint: false,
|
|
12
|
+
openWorldHint: false,
|
|
13
|
+
readOnlyHint: false,
|
|
14
|
+
title: 'Duplicate Document'
|
|
15
|
+
},
|
|
16
|
+
description: DEFAULT_DESCRIPTION,
|
|
17
|
+
input: duplicateDocumentInputSchema
|
|
18
|
+
}).handler(async ({ slug, authorizedMCP, input, req })=>{
|
|
19
|
+
const payload = req.payload;
|
|
20
|
+
const logger = getLogger({
|
|
21
|
+
payload
|
|
22
|
+
});
|
|
23
|
+
const { id, data, depth, draft, fallbackLocale, locale, populate, select, selectedLocales } = input;
|
|
24
|
+
logger.info(`Duplicating document in collection: ${slug} with ID: ${id}`);
|
|
25
|
+
try {
|
|
26
|
+
const virtualFieldNames = getCollectionVirtualFieldNames(payload.config, slug);
|
|
27
|
+
const inputData = data ? stripVirtualFields(data, virtualFieldNames) : undefined;
|
|
28
|
+
if (inputData) {
|
|
29
|
+
validateCollectionData({
|
|
30
|
+
slug,
|
|
31
|
+
data: inputData,
|
|
32
|
+
partial: true,
|
|
33
|
+
req
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
const parsedData = inputData ? transformPointDataToPayload(inputData) : undefined;
|
|
37
|
+
const result = await payload.duplicate({
|
|
38
|
+
id: parseDocumentID({
|
|
39
|
+
id,
|
|
40
|
+
collectionSlug: slug,
|
|
41
|
+
payload
|
|
42
|
+
}),
|
|
43
|
+
collection: slug,
|
|
44
|
+
depth,
|
|
45
|
+
draft,
|
|
46
|
+
overrideAccess: authorizedMCP.overrideAccess,
|
|
47
|
+
req,
|
|
48
|
+
...parsedData ? {
|
|
49
|
+
data: parsedData
|
|
50
|
+
} : {},
|
|
51
|
+
...locale ? {
|
|
52
|
+
locale
|
|
53
|
+
} : {},
|
|
54
|
+
...fallbackLocale !== undefined ? {
|
|
55
|
+
fallbackLocale
|
|
56
|
+
} : {},
|
|
57
|
+
...populate ? {
|
|
58
|
+
populate
|
|
59
|
+
} : {},
|
|
60
|
+
...select ? {
|
|
61
|
+
select
|
|
62
|
+
} : {},
|
|
63
|
+
...selectedLocales ? {
|
|
64
|
+
selectedLocales
|
|
65
|
+
} : {}
|
|
66
|
+
});
|
|
67
|
+
logger.info(`Successfully duplicated document in ${slug} from ID: ${id}`);
|
|
68
|
+
return {
|
|
69
|
+
content: [
|
|
70
|
+
{
|
|
71
|
+
type: 'text',
|
|
72
|
+
text: `Document duplicated successfully in collection "${slug}"!\nDuplicated document:\n\`\`\`json\n${JSON.stringify(result)}\n\`\`\``
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
doc: result
|
|
76
|
+
};
|
|
77
|
+
} catch (error) {
|
|
78
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
79
|
+
logger.error(`Error duplicating document in ${slug}: ${errorMessage}`);
|
|
80
|
+
return formatEntityError({
|
|
81
|
+
slug,
|
|
82
|
+
action: 'duplicating',
|
|
83
|
+
entity: 'collection',
|
|
84
|
+
error,
|
|
85
|
+
req
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
//# sourceMappingURL=duplicateTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/mcp/builtin/collections/duplicateTool.ts"],"sourcesContent":["import {\n duplicateDocumentInputSchema,\n getCollectionVirtualFieldNames,\n parseDocumentID,\n stripVirtualFields,\n transformPointDataToPayload,\n validateCollectionData,\n} from 'payload'\n\nimport { defaultAccess } from '../../../defaultAccess.js'\nimport { defineCollectionTool } from '../../../defineTool.js'\nimport { getLogger } from '../../../utils/getLogger.js'\nimport { formatEntityError } from '../formatEntityError.js'\n\nconst DEFAULT_DESCRIPTION =\n 'Duplicate a document in any collection by passing the collection slug and source document ID.'\n\nexport const duplicateDocumentTool = defineCollectionTool({\n access: (args) =>\n defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.create),\n annotations: {\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: false,\n readOnlyHint: false,\n title: 'Duplicate Document',\n },\n description: DEFAULT_DESCRIPTION,\n input: duplicateDocumentInputSchema,\n}).handler(async ({ slug, authorizedMCP, input, req }) => {\n const payload = req.payload\n const logger = getLogger({ payload })\n const { id, data, depth, draft, fallbackLocale, locale, populate, select, selectedLocales } =\n input\n\n logger.info(`Duplicating document in collection: ${slug} with ID: ${id}`)\n\n try {\n const virtualFieldNames = getCollectionVirtualFieldNames(payload.config, slug)\n const inputData = data ? stripVirtualFields(data, virtualFieldNames) : undefined\n\n if (inputData) {\n validateCollectionData({\n slug,\n data: inputData,\n partial: true,\n req,\n })\n }\n\n const parsedData = inputData ? transformPointDataToPayload(inputData) : undefined\n\n const result = await payload.duplicate({\n id: parseDocumentID({ id, collectionSlug: slug, payload }),\n collection: slug,\n depth,\n draft,\n overrideAccess: authorizedMCP.overrideAccess,\n req,\n ...(parsedData ? { data: parsedData } : {}),\n ...(locale ? { locale } : {}),\n ...(fallbackLocale !== undefined ? { fallbackLocale } : {}),\n ...(populate ? { populate } : {}),\n ...(select ? { select } : {}),\n ...(selectedLocales ? { selectedLocales } : {}),\n })\n\n logger.info(`Successfully duplicated document in ${slug} from ID: ${id}`)\n\n return {\n content: [\n {\n type: 'text',\n text: `Document duplicated successfully in collection \"${slug}\"!\\nDuplicated document:\\n\\`\\`\\`json\\n${JSON.stringify(result)}\\n\\`\\`\\``,\n },\n ],\n doc: result,\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n logger.error(`Error duplicating document in ${slug}: ${errorMessage}`)\n return formatEntityError({ slug, action: 'duplicating', entity: 'collection', error, req })\n }\n})\n"],"names":["duplicateDocumentInputSchema","getCollectionVirtualFieldNames","parseDocumentID","stripVirtualFields","transformPointDataToPayload","validateCollectionData","defaultAccess","defineCollectionTool","getLogger","formatEntityError","DEFAULT_DESCRIPTION","duplicateDocumentTool","access","args","Boolean","permissions","collections","slug","create","annotations","destructiveHint","idempotentHint","openWorldHint","readOnlyHint","title","description","input","handler","authorizedMCP","req","payload","logger","id","data","depth","draft","fallbackLocale","locale","populate","select","selectedLocales","info","virtualFieldNames","config","inputData","undefined","partial","parsedData","result","duplicate","collectionSlug","collection","overrideAccess","content","type","text","JSON","stringify","doc","error","errorMessage","Error","message","action","entity"],"mappings":"AAAA,SACEA,4BAA4B,EAC5BC,8BAA8B,EAC9BC,eAAe,EACfC,kBAAkB,EAClBC,2BAA2B,EAC3BC,sBAAsB,QACjB,UAAS;AAEhB,SAASC,aAAa,QAAQ,4BAA2B;AACzD,SAASC,oBAAoB,QAAQ,yBAAwB;AAC7D,SAASC,SAAS,QAAQ,8BAA6B;AACvD,SAASC,iBAAiB,QAAQ,0BAAyB;AAE3D,MAAMC,sBACJ;AAEF,OAAO,MAAMC,wBAAwBJ,qBAAqB;IACxDK,QAAQ,CAACC,OACPP,cAAcO,SAASC,QAAQD,KAAKE,WAAW,EAAEC,aAAa,CAACH,KAAKI,IAAI,CAAC,EAAEC;IAC7EC,aAAa;QACXC,iBAAiB;QACjBC,gBAAgB;QAChBC,eAAe;QACfC,cAAc;QACdC,OAAO;IACT;IACAC,aAAaf;IACbgB,OAAO1B;AACT,GAAG2B,OAAO,CAAC,OAAO,EAAEV,IAAI,EAAEW,aAAa,EAAEF,KAAK,EAAEG,GAAG,EAAE;IACnD,MAAMC,UAAUD,IAAIC,OAAO;IAC3B,MAAMC,SAASvB,UAAU;QAAEsB;IAAQ;IACnC,MAAM,EAAEE,EAAE,EAAEC,IAAI,EAAEC,KAAK,EAAEC,KAAK,EAAEC,cAAc,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,eAAe,EAAE,GACzFd;IAEFK,OAAOU,IAAI,CAAC,CAAC,oCAAoC,EAAExB,KAAK,UAAU,EAAEe,IAAI;IAExE,IAAI;QACF,MAAMU,oBAAoBzC,+BAA+B6B,QAAQa,MAAM,EAAE1B;QACzE,MAAM2B,YAAYX,OAAO9B,mBAAmB8B,MAAMS,qBAAqBG;QAEvE,IAAID,WAAW;YACbvC,uBAAuB;gBACrBY;gBACAgB,MAAMW;gBACNE,SAAS;gBACTjB;YACF;QACF;QAEA,MAAMkB,aAAaH,YAAYxC,4BAA4BwC,aAAaC;QAExE,MAAMG,SAAS,MAAMlB,QAAQmB,SAAS,CAAC;YACrCjB,IAAI9B,gBAAgB;gBAAE8B;gBAAIkB,gBAAgBjC;gBAAMa;YAAQ;YACxDqB,YAAYlC;YACZiB;YACAC;YACAiB,gBAAgBxB,cAAcwB,cAAc;YAC5CvB;YACA,GAAIkB,aAAa;gBAAEd,MAAMc;YAAW,IAAI,CAAC,CAAC;YAC1C,GAAIV,SAAS;gBAAEA;YAAO,IAAI,CAAC,CAAC;YAC5B,GAAID,mBAAmBS,YAAY;gBAAET;YAAe,IAAI,CAAC,CAAC;YAC1D,GAAIE,WAAW;gBAAEA;YAAS,IAAI,CAAC,CAAC;YAChC,GAAIC,SAAS;gBAAEA;YAAO,IAAI,CAAC,CAAC;YAC5B,GAAIC,kBAAkB;gBAAEA;YAAgB,IAAI,CAAC,CAAC;QAChD;QAEAT,OAAOU,IAAI,CAAC,CAAC,oCAAoC,EAAExB,KAAK,UAAU,EAAEe,IAAI;QAExE,OAAO;YACLqB,SAAS;gBACP;oBACEC,MAAM;oBACNC,MAAM,CAAC,gDAAgD,EAAEtC,KAAK,sCAAsC,EAAEuC,KAAKC,SAAS,CAACT,QAAQ,QAAQ,CAAC;gBACxI;aACD;YACDU,KAAKV;QACP;IACF,EAAE,OAAOW,OAAO;QACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;QAC9D/B,OAAO4B,KAAK,CAAC,CAAC,8BAA8B,EAAE1C,KAAK,EAAE,EAAE2C,cAAc;QACrE,OAAOnD,kBAAkB;YAAEQ;YAAM8C,QAAQ;YAAeC,QAAQ;YAAcL;YAAO9B;QAAI;IAC3F;AACF,GAAE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { CollectionSlug, File, PayloadRequest } from 'payload';
|
|
2
|
+
import { z } from 'payload';
|
|
3
|
+
export declare const fileInputSchema: z.ZodMiniDiscriminatedUnion<[z.ZodMiniObject<{
|
|
4
|
+
name: z.ZodMiniString<string>;
|
|
5
|
+
data: z.ZodMiniString<string>;
|
|
6
|
+
mimeType: z.ZodMiniString<string>;
|
|
7
|
+
source: z.ZodMiniLiteral<"base64">;
|
|
8
|
+
}, z.core.$strict>, z.ZodMiniObject<{
|
|
9
|
+
name: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
10
|
+
source: z.ZodMiniLiteral<"externalURL">;
|
|
11
|
+
url: z.ZodMiniURL;
|
|
12
|
+
}, z.core.$strict>, z.ZodMiniObject<{
|
|
13
|
+
file: z.ZodMiniObject<{
|
|
14
|
+
filename: z.ZodMiniString<string>;
|
|
15
|
+
mimeType: z.ZodMiniString<string>;
|
|
16
|
+
size: z.ZodMiniInt;
|
|
17
|
+
uploadReference: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnknown>;
|
|
18
|
+
}, z.core.$strict>;
|
|
19
|
+
source: z.ZodMiniLiteral<"uploadReference">;
|
|
20
|
+
}, z.core.$strict>], "source">;
|
|
21
|
+
type FileInput = z.infer<typeof fileInputSchema>;
|
|
22
|
+
export declare function resolveFile({ slug, input, req, }: {
|
|
23
|
+
input?: FileInput;
|
|
24
|
+
req: PayloadRequest;
|
|
25
|
+
slug: CollectionSlug;
|
|
26
|
+
}): Promise<File | undefined>;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=fileInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileInput.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/collections/fileInput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAEnE,OAAO,EAAY,CAAC,EAAE,MAAM,SAAS,CAAA;AAwBrC,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;8BAoBzB,CAAA;AAEH,KAAK,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAEhD,wBAAsB,WAAW,CAAC,EAChC,IAAI,EACJ,KAAK,EACL,GAAG,GACJ,EAAE;IACD,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,GAAG,EAAE,cAAc,CAAA;IACnB,IAAI,EAAE,cAAc,CAAA;CACrB,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CA2C5B"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { APIError, z } from 'payload';
|
|
2
|
+
import { externalURLInputSchema, getFileFromUploadInstructions, resolveURLUploadInput } from 'payload/internal';
|
|
3
|
+
import { sanitizeFilename } from 'payload/shared';
|
|
4
|
+
const mimeTypeSchema = z.string().check(z.regex(/^[!#$%&'*+.^`|~\w-]+\/[!#$%&'*+.^`|~\w-]+$/, 'MIME type must use the type/subtype format'));
|
|
5
|
+
const uploadFileSchema = z.strictObject({
|
|
6
|
+
filename: z.string(),
|
|
7
|
+
mimeType: z.string(),
|
|
8
|
+
size: z.int().check(z.nonnegative()),
|
|
9
|
+
uploadReference: z.record(z.string(), z.unknown())
|
|
10
|
+
});
|
|
11
|
+
export const fileInputSchema = z.discriminatedUnion('source', [
|
|
12
|
+
z.strictObject({
|
|
13
|
+
name: z.string().check(z.minLength(1), z.describe('The file name, including its extension.')),
|
|
14
|
+
data: z.string().check(z.describe('The base64-encoded file bytes, without a data URL prefix.')),
|
|
15
|
+
mimeType: mimeTypeSchema.check(z.describe('The file MIME type, for example image/png.')),
|
|
16
|
+
source: z.literal('base64')
|
|
17
|
+
}),
|
|
18
|
+
externalURLInputSchema,
|
|
19
|
+
z.strictObject({
|
|
20
|
+
file: uploadFileSchema.check(z.describe('getUploadInstructions file field post-upload.')),
|
|
21
|
+
source: z.literal('uploadReference')
|
|
22
|
+
})
|
|
23
|
+
]).check(z.describe('A file for an upload collection. Prefer uploadReference after its upload succeeds; use base64 only for small local files or externalURL for an online file.'));
|
|
24
|
+
export async function resolveFile({ slug, input, req }) {
|
|
25
|
+
if (!input) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
if (input.source === 'uploadReference') {
|
|
29
|
+
try {
|
|
30
|
+
return await getFileFromUploadInstructions({
|
|
31
|
+
collectionSlug: slug,
|
|
32
|
+
file: input.file,
|
|
33
|
+
req
|
|
34
|
+
});
|
|
35
|
+
} catch (error) {
|
|
36
|
+
if (error instanceof Error && error.message === 'Staged upload was not found.') {
|
|
37
|
+
throw new APIError('Staged upload not found. Complete the upload action first, or use base64 for small local files.', 400);
|
|
38
|
+
}
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (input.source === 'externalURL') {
|
|
43
|
+
return resolveURLUploadInput({
|
|
44
|
+
slug,
|
|
45
|
+
input,
|
|
46
|
+
req
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
const uploadConfig = req.payload.collections[slug]?.config.upload;
|
|
50
|
+
if (!uploadConfig) {
|
|
51
|
+
throw new APIError(`Collection "${slug}" does not support file uploads.`, 400);
|
|
52
|
+
}
|
|
53
|
+
const maxFileSize = req.payload.config.upload.limits?.fileSize;
|
|
54
|
+
const data = decodeBase64({
|
|
55
|
+
maxFileSize,
|
|
56
|
+
value: input.data
|
|
57
|
+
});
|
|
58
|
+
const file = {
|
|
59
|
+
name: sanitizeFilename(input.name),
|
|
60
|
+
data,
|
|
61
|
+
mimetype: input.mimeType,
|
|
62
|
+
size: data.length
|
|
63
|
+
};
|
|
64
|
+
if (maxFileSize !== undefined && Number.isFinite(maxFileSize) && file.size > maxFileSize) {
|
|
65
|
+
throw new APIError(`File exceeds the ${maxFileSize} byte upload limit.`, 400);
|
|
66
|
+
}
|
|
67
|
+
return file;
|
|
68
|
+
}
|
|
69
|
+
function decodeBase64({ maxFileSize, value }) {
|
|
70
|
+
const normalized = value.replace(/\s/g, '');
|
|
71
|
+
if (!/^[a-z0-9+/]*={0,2}$/i.test(normalized) || normalized.length % 4 === 1) {
|
|
72
|
+
throw new APIError('File data must be valid base64.', 400);
|
|
73
|
+
}
|
|
74
|
+
if (maxFileSize !== undefined && Number.isFinite(maxFileSize)) {
|
|
75
|
+
const paddingLength = normalized.endsWith('==') ? 2 : normalized.endsWith('=') ? 1 : 0;
|
|
76
|
+
const decodedSize = Math.floor(normalized.length * 3 / 4) - paddingLength;
|
|
77
|
+
if (decodedSize > maxFileSize) {
|
|
78
|
+
throw new APIError(`File exceeds the ${maxFileSize} byte upload limit.`, 400);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const data = Buffer.from(normalized, 'base64');
|
|
82
|
+
if (data.toString('base64').replace(/=+$/, '') !== normalized.replace(/=+$/, '')) {
|
|
83
|
+
throw new APIError('File data must be valid base64.', 400);
|
|
84
|
+
}
|
|
85
|
+
return data;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=fileInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/mcp/builtin/collections/fileInput.ts"],"sourcesContent":["import type { CollectionSlug, File, PayloadRequest } from 'payload'\n\nimport { APIError, z } from 'payload'\nimport {\n externalURLInputSchema,\n getFileFromUploadInstructions,\n resolveURLUploadInput,\n} from 'payload/internal'\nimport { sanitizeFilename } from 'payload/shared'\n\nconst mimeTypeSchema = z\n .string()\n .check(\n z.regex(\n /^[!#$%&'*+.^`|~\\w-]+\\/[!#$%&'*+.^`|~\\w-]+$/,\n 'MIME type must use the type/subtype format',\n ),\n )\n\nconst uploadFileSchema = z.strictObject({\n filename: z.string(),\n mimeType: z.string(),\n size: z.int().check(z.nonnegative()),\n uploadReference: z.record(z.string(), z.unknown()),\n})\n\nexport const fileInputSchema = z\n .discriminatedUnion('source', [\n z.strictObject({\n name: z.string().check(z.minLength(1), z.describe('The file name, including its extension.')),\n data: z\n .string()\n .check(z.describe('The base64-encoded file bytes, without a data URL prefix.')),\n mimeType: mimeTypeSchema.check(z.describe('The file MIME type, for example image/png.')),\n source: z.literal('base64'),\n }),\n externalURLInputSchema,\n z.strictObject({\n file: uploadFileSchema.check(z.describe('getUploadInstructions file field post-upload.')),\n source: z.literal('uploadReference'),\n }),\n ])\n .check(\n z.describe(\n 'A file for an upload collection. Prefer uploadReference after its upload succeeds; use base64 only for small local files or externalURL for an online file.',\n ),\n )\n\ntype FileInput = z.infer<typeof fileInputSchema>\n\nexport async function resolveFile({\n slug,\n input,\n req,\n}: {\n input?: FileInput\n req: PayloadRequest\n slug: CollectionSlug\n}): Promise<File | undefined> {\n if (!input) {\n return undefined\n }\n\n if (input.source === 'uploadReference') {\n try {\n return await getFileFromUploadInstructions({ collectionSlug: slug, file: input.file, req })\n } catch (error) {\n if (error instanceof Error && error.message === 'Staged upload was not found.') {\n throw new APIError(\n 'Staged upload not found. Complete the upload action first, or use base64 for small local files.',\n 400,\n )\n }\n throw error\n }\n }\n\n if (input.source === 'externalURL') {\n return resolveURLUploadInput({ slug, input, req })\n }\n\n const uploadConfig = req.payload.collections[slug]?.config.upload\n\n if (!uploadConfig) {\n throw new APIError(`Collection \"${slug}\" does not support file uploads.`, 400)\n }\n\n const maxFileSize = req.payload.config.upload.limits?.fileSize\n const data = decodeBase64({ maxFileSize, value: input.data })\n const file: File = {\n name: sanitizeFilename(input.name),\n data,\n mimetype: input.mimeType,\n size: data.length,\n }\n\n if (maxFileSize !== undefined && Number.isFinite(maxFileSize) && file.size > maxFileSize) {\n throw new APIError(`File exceeds the ${maxFileSize} byte upload limit.`, 400)\n }\n\n return file\n}\n\nfunction decodeBase64({ maxFileSize, value }: { maxFileSize?: number; value: string }): Buffer {\n const normalized = value.replace(/\\s/g, '')\n\n if (!/^[a-z0-9+/]*={0,2}$/i.test(normalized) || normalized.length % 4 === 1) {\n throw new APIError('File data must be valid base64.', 400)\n }\n\n if (maxFileSize !== undefined && Number.isFinite(maxFileSize)) {\n const paddingLength = normalized.endsWith('==') ? 2 : normalized.endsWith('=') ? 1 : 0\n const decodedSize = Math.floor((normalized.length * 3) / 4) - paddingLength\n\n if (decodedSize > maxFileSize) {\n throw new APIError(`File exceeds the ${maxFileSize} byte upload limit.`, 400)\n }\n }\n\n const data = Buffer.from(normalized, 'base64')\n\n if (data.toString('base64').replace(/=+$/, '') !== normalized.replace(/=+$/, '')) {\n throw new APIError('File data must be valid base64.', 400)\n }\n\n return data\n}\n"],"names":["APIError","z","externalURLInputSchema","getFileFromUploadInstructions","resolveURLUploadInput","sanitizeFilename","mimeTypeSchema","string","check","regex","uploadFileSchema","strictObject","filename","mimeType","size","int","nonnegative","uploadReference","record","unknown","fileInputSchema","discriminatedUnion","name","minLength","describe","data","source","literal","file","resolveFile","slug","input","req","undefined","collectionSlug","error","Error","message","uploadConfig","payload","collections","config","upload","maxFileSize","limits","fileSize","decodeBase64","value","mimetype","length","Number","isFinite","normalized","replace","test","paddingLength","endsWith","decodedSize","Math","floor","Buffer","from","toString"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findDistinctTool.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/collections/findDistinctTool.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,gBAAgB,4CAyD3B,CAAA"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { findDistinctInputSchema } from 'payload';
|
|
2
|
+
import { defaultAccess } from '../../../defaultAccess.js';
|
|
3
|
+
import { defineCollectionTool } from '../../../defineTool.js';
|
|
4
|
+
import { getLogger } from '../../../utils/getLogger.js';
|
|
5
|
+
const DEFAULT_DESCRIPTION = 'Find distinct values for a field in any collection by passing the collection slug and field path.';
|
|
6
|
+
export const findDistinctTool = defineCollectionTool({
|
|
7
|
+
access: (args)=>defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.read),
|
|
8
|
+
annotations: {
|
|
9
|
+
destructiveHint: false,
|
|
10
|
+
idempotentHint: true,
|
|
11
|
+
openWorldHint: false,
|
|
12
|
+
readOnlyHint: true,
|
|
13
|
+
title: 'Find Distinct'
|
|
14
|
+
},
|
|
15
|
+
description: DEFAULT_DESCRIPTION,
|
|
16
|
+
input: findDistinctInputSchema
|
|
17
|
+
}).handler(async ({ slug, authorizedMCP, input, req })=>{
|
|
18
|
+
const payload = req.payload;
|
|
19
|
+
const logger = getLogger({
|
|
20
|
+
payload
|
|
21
|
+
});
|
|
22
|
+
const { depth, field, limit, locale, page, populate, sort, trash, where } = input;
|
|
23
|
+
logger.info(`Finding distinct values in collection: ${slug}, field: ${field}`);
|
|
24
|
+
try {
|
|
25
|
+
const result = await payload.findDistinct({
|
|
26
|
+
collection: slug,
|
|
27
|
+
depth,
|
|
28
|
+
field,
|
|
29
|
+
overrideAccess: authorizedMCP.overrideAccess,
|
|
30
|
+
req,
|
|
31
|
+
...limit ? {
|
|
32
|
+
limit
|
|
33
|
+
} : {},
|
|
34
|
+
...locale ? {
|
|
35
|
+
locale
|
|
36
|
+
} : {},
|
|
37
|
+
...page ? {
|
|
38
|
+
page
|
|
39
|
+
} : {},
|
|
40
|
+
...populate ? {
|
|
41
|
+
populate
|
|
42
|
+
} : {},
|
|
43
|
+
...sort ? {
|
|
44
|
+
sort
|
|
45
|
+
} : {},
|
|
46
|
+
...trash !== undefined ? {
|
|
47
|
+
trash
|
|
48
|
+
} : {},
|
|
49
|
+
...where ? {
|
|
50
|
+
where
|
|
51
|
+
} : {}
|
|
52
|
+
});
|
|
53
|
+
return {
|
|
54
|
+
content: [
|
|
55
|
+
{
|
|
56
|
+
type: 'text',
|
|
57
|
+
text: `Distinct values for "${field}" in collection "${slug}":\n\`\`\`json\n${JSON.stringify(result)}\n\`\`\``
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
doc: result
|
|
61
|
+
};
|
|
62
|
+
} catch (error) {
|
|
63
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
64
|
+
logger.error(`Error finding distinct values in ${slug}: ${errorMessage}`);
|
|
65
|
+
return {
|
|
66
|
+
content: [
|
|
67
|
+
{
|
|
68
|
+
type: 'text',
|
|
69
|
+
text: `❌ **Error finding distinct values in collection "${slug}":** ${errorMessage}`
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
isError: true
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
//# sourceMappingURL=findDistinctTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/mcp/builtin/collections/findDistinctTool.ts"],"sourcesContent":["import { findDistinctInputSchema } from 'payload'\n\nimport { defaultAccess } from '../../../defaultAccess.js'\nimport { defineCollectionTool } from '../../../defineTool.js'\nimport { getLogger } from '../../../utils/getLogger.js'\n\nconst DEFAULT_DESCRIPTION =\n 'Find distinct values for a field in any collection by passing the collection slug and field path.'\n\nexport const findDistinctTool = defineCollectionTool({\n access: (args) =>\n defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.read),\n annotations: {\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n readOnlyHint: true,\n title: 'Find Distinct',\n },\n description: DEFAULT_DESCRIPTION,\n input: findDistinctInputSchema,\n}).handler(async ({ slug, authorizedMCP, input, req }) => {\n const payload = req.payload\n const logger = getLogger({ payload })\n const { depth, field, limit, locale, page, populate, sort, trash, where } = input\n\n logger.info(`Finding distinct values in collection: ${slug}, field: ${field}`)\n\n try {\n const result = await payload.findDistinct({\n collection: slug,\n depth,\n field,\n overrideAccess: authorizedMCP.overrideAccess,\n req,\n ...(limit ? { limit } : {}),\n ...(locale ? { locale } : {}),\n ...(page ? { page } : {}),\n ...(populate ? { populate } : {}),\n ...(sort ? { sort } : {}),\n ...(trash !== undefined ? { trash } : {}),\n ...(where ? { where } : {}),\n })\n\n return {\n content: [\n {\n type: 'text',\n text: `Distinct values for \"${field}\" in collection \"${slug}\":\\n\\`\\`\\`json\\n${JSON.stringify(result)}\\n\\`\\`\\``,\n },\n ],\n doc: result as unknown as Record<string, unknown>,\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n logger.error(`Error finding distinct values in ${slug}: ${errorMessage}`)\n return {\n content: [\n {\n type: 'text',\n text: `❌ **Error finding distinct values in collection \"${slug}\":** ${errorMessage}`,\n },\n ],\n isError: true,\n }\n }\n})\n"],"names":["findDistinctInputSchema","defaultAccess","defineCollectionTool","getLogger","DEFAULT_DESCRIPTION","findDistinctTool","access","args","Boolean","permissions","collections","slug","read","annotations","destructiveHint","idempotentHint","openWorldHint","readOnlyHint","title","description","input","handler","authorizedMCP","req","payload","logger","depth","field","limit","locale","page","populate","sort","trash","where","info","result","findDistinct","collection","overrideAccess","undefined","content","type","text","JSON","stringify","doc","error","errorMessage","Error","message","isError"],"mappings":"AAAA,SAASA,uBAAuB,QAAQ,UAAS;AAEjD,SAASC,aAAa,QAAQ,4BAA2B;AACzD,SAASC,oBAAoB,QAAQ,yBAAwB;AAC7D,SAASC,SAAS,QAAQ,8BAA6B;AAEvD,MAAMC,sBACJ;AAEF,OAAO,MAAMC,mBAAmBH,qBAAqB;IACnDI,QAAQ,CAACC,OACPN,cAAcM,SAASC,QAAQD,KAAKE,WAAW,EAAEC,aAAa,CAACH,KAAKI,IAAI,CAAC,EAAEC;IAC7EC,aAAa;QACXC,iBAAiB;QACjBC,gBAAgB;QAChBC,eAAe;QACfC,cAAc;QACdC,OAAO;IACT;IACAC,aAAaf;IACbgB,OAAOpB;AACT,GAAGqB,OAAO,CAAC,OAAO,EAAEV,IAAI,EAAEW,aAAa,EAAEF,KAAK,EAAEG,GAAG,EAAE;IACnD,MAAMC,UAAUD,IAAIC,OAAO;IAC3B,MAAMC,SAAStB,UAAU;QAAEqB;IAAQ;IACnC,MAAM,EAAEE,KAAK,EAAEC,KAAK,EAAEC,KAAK,EAAEC,MAAM,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,KAAK,EAAEC,KAAK,EAAE,GAAGd;IAE5EK,OAAOU,IAAI,CAAC,CAAC,uCAAuC,EAAExB,KAAK,SAAS,EAAEgB,OAAO;IAE7E,IAAI;QACF,MAAMS,SAAS,MAAMZ,QAAQa,YAAY,CAAC;YACxCC,YAAY3B;YACZe;YACAC;YACAY,gBAAgBjB,cAAciB,cAAc;YAC5ChB;YACA,GAAIK,QAAQ;gBAAEA;YAAM,IAAI,CAAC,CAAC;YAC1B,GAAIC,SAAS;gBAAEA;YAAO,IAAI,CAAC,CAAC;YAC5B,GAAIC,OAAO;gBAAEA;YAAK,IAAI,CAAC,CAAC;YACxB,GAAIC,WAAW;gBAAEA;YAAS,IAAI,CAAC,CAAC;YAChC,GAAIC,OAAO;gBAAEA;YAAK,IAAI,CAAC,CAAC;YACxB,GAAIC,UAAUO,YAAY;gBAAEP;YAAM,IAAI,CAAC,CAAC;YACxC,GAAIC,QAAQ;gBAAEA;YAAM,IAAI,CAAC,CAAC;QAC5B;QAEA,OAAO;YACLO,SAAS;gBACP;oBACEC,MAAM;oBACNC,MAAM,CAAC,qBAAqB,EAAEhB,MAAM,iBAAiB,EAAEhB,KAAK,gBAAgB,EAAEiC,KAAKC,SAAS,CAACT,QAAQ,QAAQ,CAAC;gBAChH;aACD;YACDU,KAAKV;QACP;IACF,EAAE,OAAOW,OAAO;QACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;QAC9DzB,OAAOsB,KAAK,CAAC,CAAC,iCAAiC,EAAEpC,KAAK,EAAE,EAAEqC,cAAc;QACxE,OAAO;YACLP,SAAS;gBACP;oBACEC,MAAM;oBACNC,MAAM,CAAC,iDAAiD,EAAEhC,KAAK,KAAK,EAAEqC,cAAc;gBACtF;aACD;YACDG,SAAS;QACX;IACF;AACF,GAAE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findTool.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/collections/findTool.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,iBAAiB,4CA4H5B,CAAA"}
|