@payloadcms/plugin-mcp 4.0.0-canary.3 → 4.0.0-canary.31
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 +7 -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 +8 -8
- package/dist/defineTool.d.ts.map +1 -1
- package/dist/endpoint/access.d.ts +12 -5
- package/dist/endpoint/access.d.ts.map +1 -1
- package/dist/endpoint/access.js +74 -103
- package/dist/endpoint/access.js.map +1 -1
- package/dist/endpoint/index.d.ts +1 -1
- package/dist/endpoint/index.d.ts.map +1 -1
- package/dist/endpoint/index.js +68 -17
- package/dist/endpoint/index.js.map +1 -1
- package/dist/exports/client.d.ts +1 -4
- package/dist/exports/client.d.ts.map +1 -1
- package/dist/exports/client.js +1 -4
- package/dist/exports/client.js.map +1 -1
- 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 +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -56
- package/dist/index.js.map +1 -1
- package/dist/mcp/buildMcpServer.d.ts +5 -5
- package/dist/mcp/buildMcpServer.d.ts.map +1 -1
- package/dist/mcp/buildMcpServer.js +67 -33
- package/dist/mcp/buildMcpServer.js.map +1 -1
- package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -1
- package/dist/mcp/builtin/collections/authTools.js +79 -56
- package/dist/mcp/builtin/collections/authTools.js.map +1 -1
- 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 +1 -1
- package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -1
- package/dist/mcp/builtin/collections/createTool.js +105 -53
- package/dist/mcp/builtin/collections/createTool.js.map +1 -1
- package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -1
- package/dist/mcp/builtin/collections/deleteTool.js +46 -44
- package/dist/mcp/builtin/collections/deleteTool.js.map +1 -1
- 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 +123 -0
- package/dist/mcp/builtin/collections/fileInput.js.map +1 -0
- package/dist/mcp/builtin/collections/fileInput.spec.js +86 -0
- package/dist/mcp/builtin/collections/fileInput.spec.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.map +1 -1
- package/dist/mcp/builtin/collections/findTool.js +30 -47
- package/dist/mcp/builtin/collections/findTool.js.map +1 -1
- 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.map +1 -1
- package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +54 -9
- package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -1
- 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.map +1 -1
- package/dist/mcp/builtin/collections/updateTool.js +68 -86
- package/dist/mcp/builtin/collections/updateTool.js.map +1 -1
- 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.map +1 -1
- package/dist/mcp/builtin/getConfigInfoTool.js +23 -10
- package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -1
- 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.map +1 -1
- package/dist/mcp/builtin/globals/findTool.js +13 -17
- package/dist/mcp/builtin/globals/findTool.js.map +1 -1
- 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.map +1 -1
- package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +31 -8
- package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -1
- 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.map +1 -1
- package/dist/mcp/builtin/globals/updateTool.js +29 -36
- package/dist/mcp/builtin/globals/updateTool.js.map +1 -1
- package/dist/mcp/builtinTools.d.ts +73 -2
- package/dist/mcp/builtinTools.d.ts.map +1 -1
- package/dist/mcp/builtinTools.js +73 -3
- package/dist/mcp/builtinTools.js.map +1 -1
- package/dist/mcp/sanitizeMCPConfig.d.ts +0 -1
- package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -1
- package/dist/mcp/sanitizeMCPConfig.js +48 -17
- package/dist/mcp/sanitizeMCPConfig.js.map +1 -1
- package/dist/stdio.d.ts +3 -3
- package/dist/stdio.d.ts.map +1 -1
- package/dist/stdio.js +84 -46
- package/dist/stdio.js.map +1 -1
- package/dist/types.d.ts +95 -89
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -4
- package/dist/types.js.map +1 -1
- package/dist/utils/camelCase.d.ts.map +1 -1
- package/dist/utils/getPluginConfig.d.ts +1 -1
- package/dist/utils/getPluginConfig.js +1 -1
- package/dist/utils/getPluginConfig.js.map +1 -1
- package/dist/utils/resolveProjectRoot.d.ts.map +1 -1
- package/dist/utils/toStandardSchema.d.ts.map +1 -1
- package/package.json +10 -18
- package/src/defaultAccess.ts +3 -0
- package/src/endpoint/access.ts +79 -112
- package/src/endpoint/index.ts +58 -16
- package/src/exports/client.ts +2 -4
- package/src/exports/internal.ts +1 -0
- package/src/index.ts +5 -62
- package/src/mcp/buildMcpServer.ts +85 -50
- package/src/mcp/builtin/collections/authTools.ts +77 -69
- 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 +112 -76
- package/src/mcp/builtin/collections/deleteTool.ts +38 -64
- 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 +169 -0
- package/src/mcp/builtin/collections/findDistinctTool.ts +67 -0
- package/src/mcp/builtin/collections/findTool.ts +27 -107
- 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 +51 -6
- package/src/mcp/builtin/collections/restoreVersionTool.ts +65 -0
- package/src/mcp/builtin/collections/updateTool.ts +65 -100
- package/src/mcp/builtin/collections/uploadInstructionsTool.ts +64 -0
- package/src/mcp/builtin/formatEntityError.ts +77 -0
- package/src/mcp/builtin/getConfigInfoTool.ts +22 -5
- package/src/mcp/builtin/globals/countVersionsTool.ts +60 -0
- package/src/mcp/builtin/globals/findTool.ts +15 -51
- 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 +34 -6
- package/src/mcp/builtin/globals/restoreVersionTool.ts +68 -0
- package/src/mcp/builtin/globals/updateTool.ts +40 -60
- package/src/mcp/builtinTools.ts +72 -6
- package/src/mcp/sanitizeMCPConfig.ts +36 -19
- package/src/stdio.ts +79 -46
- package/src/types.ts +103 -93
- package/src/utils/getPluginConfig.ts +1 -1
- package/dist/collection/getAccessField.d.ts +0 -12
- package/dist/collection/getAccessField.d.ts.map +0 -1
- package/dist/collection/getAccessField.js +0 -72
- package/dist/collection/getAccessField.js.map +0 -1
- package/dist/collection/index.d.ts +0 -6
- package/dist/collection/index.d.ts.map +0 -1
- package/dist/collection/index.js +0 -105
- package/dist/collection/index.js.map +0 -1
- package/dist/components/APIKeyField/index.client.d.ts +0 -9
- package/dist/components/APIKeyField/index.client.d.ts.map +0 -1
- package/dist/components/APIKeyField/index.client.js +0 -85
- package/dist/components/APIKeyField/index.client.js.map +0 -1
- package/dist/components/APIKeyField/index.css +0 -105
- package/dist/components/APIKeysEmptyState/index.client.d.ts +0 -4
- package/dist/components/APIKeysEmptyState/index.client.d.ts.map +0 -1
- package/dist/components/APIKeysEmptyState/index.client.js +0 -21
- package/dist/components/APIKeysEmptyState/index.client.js.map +0 -1
- package/dist/components/AccessField/index.client.d.ts +0 -10
- package/dist/components/AccessField/index.client.d.ts.map +0 -1
- package/dist/components/AccessField/index.client.js +0 -247
- package/dist/components/AccessField/index.client.js.map +0 -1
- package/dist/components/AccessField/index.css +0 -99
- package/dist/components/SettingsMenu/index.client.d.ts +0 -8
- package/dist/components/SettingsMenu/index.client.d.ts.map +0 -1
- package/dist/components/SettingsMenu/index.client.js +0 -24
- package/dist/components/SettingsMenu/index.client.js.map +0 -1
- package/dist/mcp/builtin/collections/formatCollectionError.d.ts +0 -9
- package/dist/mcp/builtin/collections/formatCollectionError.d.ts.map +0 -1
- package/dist/mcp/builtin/collections/formatCollectionError.js +0 -60
- package/dist/mcp/builtin/collections/formatCollectionError.js.map +0 -1
- package/dist/mcp/builtin/validateEntityData.d.ts +0 -14
- package/dist/mcp/builtin/validateEntityData.d.ts.map +0 -1
- package/dist/mcp/builtin/validateEntityData.js +0 -82
- package/dist/mcp/builtin/validateEntityData.js.map +0 -1
- package/dist/translations/index.d.ts +0 -11
- package/dist/translations/index.d.ts.map +0 -1
- package/dist/translations/index.js +0 -92
- package/dist/translations/index.js.map +0 -1
- package/dist/translations/languages/ar.d.ts +0 -31
- package/dist/translations/languages/ar.d.ts.map +0 -1
- package/dist/translations/languages/ar.js +0 -34
- package/dist/translations/languages/ar.js.map +0 -1
- package/dist/translations/languages/az.d.ts +0 -31
- package/dist/translations/languages/az.d.ts.map +0 -1
- package/dist/translations/languages/az.js +0 -34
- package/dist/translations/languages/az.js.map +0 -1
- package/dist/translations/languages/bg.d.ts +0 -31
- package/dist/translations/languages/bg.d.ts.map +0 -1
- package/dist/translations/languages/bg.js +0 -34
- package/dist/translations/languages/bg.js.map +0 -1
- package/dist/translations/languages/bnBd.d.ts +0 -31
- package/dist/translations/languages/bnBd.d.ts.map +0 -1
- package/dist/translations/languages/bnBd.js +0 -34
- package/dist/translations/languages/bnBd.js.map +0 -1
- package/dist/translations/languages/bnIn.d.ts +0 -31
- package/dist/translations/languages/bnIn.d.ts.map +0 -1
- package/dist/translations/languages/bnIn.js +0 -34
- package/dist/translations/languages/bnIn.js.map +0 -1
- package/dist/translations/languages/ca.d.ts +0 -31
- package/dist/translations/languages/ca.d.ts.map +0 -1
- package/dist/translations/languages/ca.js +0 -34
- package/dist/translations/languages/ca.js.map +0 -1
- package/dist/translations/languages/cs.d.ts +0 -31
- package/dist/translations/languages/cs.d.ts.map +0 -1
- package/dist/translations/languages/cs.js +0 -34
- package/dist/translations/languages/cs.js.map +0 -1
- package/dist/translations/languages/da.d.ts +0 -31
- package/dist/translations/languages/da.d.ts.map +0 -1
- package/dist/translations/languages/da.js +0 -34
- package/dist/translations/languages/da.js.map +0 -1
- package/dist/translations/languages/de.d.ts +0 -31
- package/dist/translations/languages/de.d.ts.map +0 -1
- package/dist/translations/languages/de.js +0 -34
- package/dist/translations/languages/de.js.map +0 -1
- package/dist/translations/languages/en.d.ts +0 -31
- package/dist/translations/languages/en.d.ts.map +0 -1
- package/dist/translations/languages/en.js +0 -34
- package/dist/translations/languages/en.js.map +0 -1
- package/dist/translations/languages/es.d.ts +0 -31
- package/dist/translations/languages/es.d.ts.map +0 -1
- package/dist/translations/languages/es.js +0 -34
- package/dist/translations/languages/es.js.map +0 -1
- package/dist/translations/languages/et.d.ts +0 -31
- package/dist/translations/languages/et.d.ts.map +0 -1
- package/dist/translations/languages/et.js +0 -34
- package/dist/translations/languages/et.js.map +0 -1
- package/dist/translations/languages/fa.d.ts +0 -31
- package/dist/translations/languages/fa.d.ts.map +0 -1
- package/dist/translations/languages/fa.js +0 -34
- package/dist/translations/languages/fa.js.map +0 -1
- package/dist/translations/languages/fr.d.ts +0 -31
- package/dist/translations/languages/fr.d.ts.map +0 -1
- package/dist/translations/languages/fr.js +0 -34
- package/dist/translations/languages/fr.js.map +0 -1
- package/dist/translations/languages/he.d.ts +0 -31
- package/dist/translations/languages/he.d.ts.map +0 -1
- package/dist/translations/languages/he.js +0 -34
- package/dist/translations/languages/he.js.map +0 -1
- package/dist/translations/languages/hr.d.ts +0 -31
- package/dist/translations/languages/hr.d.ts.map +0 -1
- package/dist/translations/languages/hr.js +0 -34
- package/dist/translations/languages/hr.js.map +0 -1
- package/dist/translations/languages/hu.d.ts +0 -31
- package/dist/translations/languages/hu.d.ts.map +0 -1
- package/dist/translations/languages/hu.js +0 -34
- package/dist/translations/languages/hu.js.map +0 -1
- package/dist/translations/languages/hy.d.ts +0 -31
- package/dist/translations/languages/hy.d.ts.map +0 -1
- package/dist/translations/languages/hy.js +0 -34
- package/dist/translations/languages/hy.js.map +0 -1
- package/dist/translations/languages/id.d.ts +0 -31
- package/dist/translations/languages/id.d.ts.map +0 -1
- package/dist/translations/languages/id.js +0 -34
- package/dist/translations/languages/id.js.map +0 -1
- package/dist/translations/languages/is.d.ts +0 -31
- package/dist/translations/languages/is.d.ts.map +0 -1
- package/dist/translations/languages/is.js +0 -34
- package/dist/translations/languages/is.js.map +0 -1
- package/dist/translations/languages/it.d.ts +0 -31
- package/dist/translations/languages/it.d.ts.map +0 -1
- package/dist/translations/languages/it.js +0 -34
- package/dist/translations/languages/it.js.map +0 -1
- package/dist/translations/languages/ja.d.ts +0 -31
- package/dist/translations/languages/ja.d.ts.map +0 -1
- package/dist/translations/languages/ja.js +0 -34
- package/dist/translations/languages/ja.js.map +0 -1
- package/dist/translations/languages/ko.d.ts +0 -31
- package/dist/translations/languages/ko.d.ts.map +0 -1
- package/dist/translations/languages/ko.js +0 -34
- package/dist/translations/languages/ko.js.map +0 -1
- package/dist/translations/languages/lt.d.ts +0 -31
- package/dist/translations/languages/lt.d.ts.map +0 -1
- package/dist/translations/languages/lt.js +0 -34
- package/dist/translations/languages/lt.js.map +0 -1
- package/dist/translations/languages/lv.d.ts +0 -31
- package/dist/translations/languages/lv.d.ts.map +0 -1
- package/dist/translations/languages/lv.js +0 -34
- package/dist/translations/languages/lv.js.map +0 -1
- package/dist/translations/languages/my.d.ts +0 -31
- package/dist/translations/languages/my.d.ts.map +0 -1
- package/dist/translations/languages/my.js +0 -34
- package/dist/translations/languages/my.js.map +0 -1
- package/dist/translations/languages/nb.d.ts +0 -31
- package/dist/translations/languages/nb.d.ts.map +0 -1
- package/dist/translations/languages/nb.js +0 -34
- package/dist/translations/languages/nb.js.map +0 -1
- package/dist/translations/languages/nl.d.ts +0 -31
- package/dist/translations/languages/nl.d.ts.map +0 -1
- package/dist/translations/languages/nl.js +0 -34
- package/dist/translations/languages/nl.js.map +0 -1
- package/dist/translations/languages/pl.d.ts +0 -31
- package/dist/translations/languages/pl.d.ts.map +0 -1
- package/dist/translations/languages/pl.js +0 -34
- package/dist/translations/languages/pl.js.map +0 -1
- package/dist/translations/languages/pt.d.ts +0 -31
- package/dist/translations/languages/pt.d.ts.map +0 -1
- package/dist/translations/languages/pt.js +0 -34
- package/dist/translations/languages/pt.js.map +0 -1
- package/dist/translations/languages/ro.d.ts +0 -31
- package/dist/translations/languages/ro.d.ts.map +0 -1
- package/dist/translations/languages/ro.js +0 -34
- package/dist/translations/languages/ro.js.map +0 -1
- package/dist/translations/languages/rs.d.ts +0 -31
- package/dist/translations/languages/rs.d.ts.map +0 -1
- package/dist/translations/languages/rs.js +0 -34
- package/dist/translations/languages/rs.js.map +0 -1
- package/dist/translations/languages/rsLatin.d.ts +0 -31
- package/dist/translations/languages/rsLatin.d.ts.map +0 -1
- package/dist/translations/languages/rsLatin.js +0 -34
- package/dist/translations/languages/rsLatin.js.map +0 -1
- package/dist/translations/languages/ru.d.ts +0 -31
- package/dist/translations/languages/ru.d.ts.map +0 -1
- package/dist/translations/languages/ru.js +0 -34
- package/dist/translations/languages/ru.js.map +0 -1
- package/dist/translations/languages/sk.d.ts +0 -31
- package/dist/translations/languages/sk.d.ts.map +0 -1
- package/dist/translations/languages/sk.js +0 -34
- package/dist/translations/languages/sk.js.map +0 -1
- package/dist/translations/languages/sl.d.ts +0 -31
- package/dist/translations/languages/sl.d.ts.map +0 -1
- package/dist/translations/languages/sl.js +0 -34
- package/dist/translations/languages/sl.js.map +0 -1
- package/dist/translations/languages/sv.d.ts +0 -31
- package/dist/translations/languages/sv.d.ts.map +0 -1
- package/dist/translations/languages/sv.js +0 -34
- package/dist/translations/languages/sv.js.map +0 -1
- package/dist/translations/languages/ta.d.ts +0 -31
- package/dist/translations/languages/ta.d.ts.map +0 -1
- package/dist/translations/languages/ta.js +0 -34
- package/dist/translations/languages/ta.js.map +0 -1
- package/dist/translations/languages/th.d.ts +0 -31
- package/dist/translations/languages/th.d.ts.map +0 -1
- package/dist/translations/languages/th.js +0 -34
- package/dist/translations/languages/th.js.map +0 -1
- package/dist/translations/languages/tr.d.ts +0 -31
- package/dist/translations/languages/tr.d.ts.map +0 -1
- package/dist/translations/languages/tr.js +0 -34
- package/dist/translations/languages/tr.js.map +0 -1
- package/dist/translations/languages/uk.d.ts +0 -31
- package/dist/translations/languages/uk.d.ts.map +0 -1
- package/dist/translations/languages/uk.js +0 -34
- package/dist/translations/languages/uk.js.map +0 -1
- package/dist/translations/languages/vi.d.ts +0 -31
- package/dist/translations/languages/vi.d.ts.map +0 -1
- package/dist/translations/languages/vi.js +0 -34
- package/dist/translations/languages/vi.js.map +0 -1
- package/dist/translations/languages/zh.d.ts +0 -31
- package/dist/translations/languages/zh.d.ts.map +0 -1
- package/dist/translations/languages/zh.js +0 -34
- package/dist/translations/languages/zh.js.map +0 -1
- package/dist/translations/languages/zhTw.d.ts +0 -31
- package/dist/translations/languages/zhTw.d.ts.map +0 -1
- package/dist/translations/languages/zhTw.js +0 -34
- package/dist/translations/languages/zhTw.js.map +0 -1
- package/dist/translations/types.d.ts +0 -32
- package/dist/translations/types.d.ts.map +0 -1
- package/dist/translations/types.js +0 -3
- package/dist/translations/types.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/localAPIDefaults.d.ts +0 -20
- package/dist/utils/localAPIDefaults.d.ts.map +0 -1
- package/dist/utils/localAPIDefaults.js +0 -19
- package/dist/utils/localAPIDefaults.js.map +0 -1
- package/dist/utils/schemaConversion/getEntityInputSchema.d.ts +0 -11
- package/dist/utils/schemaConversion/getEntityInputSchema.d.ts.map +0 -1
- package/dist/utils/schemaConversion/getEntityInputSchema.js +0 -34
- package/dist/utils/schemaConversion/getEntityInputSchema.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/sanitizeEntitySchema.d.ts +0 -15
- package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts.map +0 -1
- package/dist/utils/schemaConversion/sanitizeEntitySchema.js +0 -464
- package/dist/utils/schemaConversion/sanitizeEntitySchema.js.map +0 -1
- package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js +0 -158
- package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.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/dist/utils/whereSchema.d.ts +0 -9
- package/dist/utils/whereSchema.d.ts.map +0 -1
- package/dist/utils/whereSchema.js +0 -13
- package/dist/utils/whereSchema.js.map +0 -1
- package/src/collection/getAccessField.ts +0 -84
- package/src/collection/index.ts +0 -105
- package/src/components/APIKeyField/index.client.tsx +0 -68
- package/src/components/APIKeyField/index.css +0 -105
- package/src/components/APIKeysEmptyState/index.client.tsx +0 -33
- package/src/components/AccessField/index.client.tsx +0 -296
- package/src/components/AccessField/index.css +0 -99
- package/src/components/SettingsMenu/index.client.tsx +0 -30
- package/src/mcp/builtin/collections/formatCollectionError.ts +0 -84
- package/src/mcp/builtin/validateEntityData.ts +0 -132
- package/src/translations/index.ts +0 -105
- package/src/translations/languages/ar.ts +0 -38
- package/src/translations/languages/az.ts +0 -38
- package/src/translations/languages/bg.ts +0 -39
- package/src/translations/languages/bnBd.ts +0 -39
- package/src/translations/languages/bnIn.ts +0 -39
- package/src/translations/languages/ca.ts +0 -39
- package/src/translations/languages/cs.ts +0 -39
- package/src/translations/languages/da.ts +0 -38
- package/src/translations/languages/de.ts +0 -39
- package/src/translations/languages/en.ts +0 -39
- package/src/translations/languages/es.ts +0 -39
- package/src/translations/languages/et.ts +0 -38
- package/src/translations/languages/fa.ts +0 -39
- package/src/translations/languages/fr.ts +0 -39
- package/src/translations/languages/he.ts +0 -37
- package/src/translations/languages/hr.ts +0 -39
- package/src/translations/languages/hu.ts +0 -39
- package/src/translations/languages/hy.ts +0 -39
- package/src/translations/languages/id.ts +0 -39
- package/src/translations/languages/is.ts +0 -39
- package/src/translations/languages/it.ts +0 -39
- package/src/translations/languages/ja.ts +0 -39
- package/src/translations/languages/ko.ts +0 -39
- package/src/translations/languages/lt.ts +0 -39
- package/src/translations/languages/lv.ts +0 -38
- package/src/translations/languages/my.ts +0 -39
- package/src/translations/languages/nb.ts +0 -39
- package/src/translations/languages/nl.ts +0 -39
- package/src/translations/languages/pl.ts +0 -38
- package/src/translations/languages/pt.ts +0 -39
- package/src/translations/languages/ro.ts +0 -39
- package/src/translations/languages/rs.ts +0 -38
- package/src/translations/languages/rsLatin.ts +0 -38
- package/src/translations/languages/ru.ts +0 -39
- package/src/translations/languages/sk.ts +0 -39
- package/src/translations/languages/sl.ts +0 -38
- package/src/translations/languages/sv.ts +0 -39
- package/src/translations/languages/ta.ts +0 -39
- package/src/translations/languages/th.ts +0 -38
- package/src/translations/languages/tr.ts +0 -38
- package/src/translations/languages/uk.ts +0 -39
- package/src/translations/languages/vi.ts +0 -39
- package/src/translations/languages/zh.ts +0 -36
- package/src/translations/languages/zhTw.ts +0 -36
- package/src/translations/types.ts +0 -34
- package/src/utils/getVirtualFieldNames.ts +0 -53
- package/src/utils/localAPIDefaults.ts +0 -22
- package/src/utils/schemaConversion/getEntityInputSchema.ts +0 -78
- package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +0 -27
- package/src/utils/schemaConversion/sanitizeEntitySchema.spec.ts +0 -103
- package/src/utils/schemaConversion/sanitizeEntitySchema.ts +0 -529
- package/src/utils/transformPointDataToPayload.ts +0 -40
- package/src/utils/whereSchema.ts +0 -24
|
@@ -1,81 +1,133 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createDocumentsInputSchema, getCollectionVirtualFieldNames, hasDraftValidationEnabled, stripVirtualFields, transformPointDataToPayload, validateCollectionData } from 'payload';
|
|
2
|
+
import { defaultAccess } from '../../../defaultAccess.js';
|
|
2
3
|
import { defineCollectionTool } from '../../../defineTool.js';
|
|
3
4
|
import { getLogger } from '../../../utils/getLogger.js';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const DEFAULT_DESCRIPTION = 'Create a document in any collection by passing the collection slug and data.';
|
|
10
|
-
export const createDocumentTool = defineCollectionTool({
|
|
5
|
+
import { formatEntityError } from '../formatEntityError.js';
|
|
6
|
+
import { fileInputSchema, resolveFile } from './fileInput.js';
|
|
7
|
+
const DEFAULT_DESCRIPTION = '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.';
|
|
8
|
+
export const createDocumentsTool = defineCollectionTool({
|
|
9
|
+
access: (args)=>defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.create),
|
|
11
10
|
annotations: {
|
|
12
11
|
destructiveHint: false,
|
|
13
12
|
idempotentHint: false,
|
|
14
13
|
openWorldHint: false,
|
|
15
14
|
readOnlyHint: false,
|
|
16
|
-
title: 'Create
|
|
15
|
+
title: 'Create Documents'
|
|
17
16
|
},
|
|
18
17
|
description: DEFAULT_DESCRIPTION,
|
|
19
|
-
input:
|
|
20
|
-
|
|
21
|
-
depth: z.number().int().min(0).max(10).describe('How many levels deep to populate relationships in response').optional().default(0),
|
|
22
|
-
draft: z.boolean().describe('Whether to create the document as a draft').optional().default(false),
|
|
23
|
-
fallbackLocale: z.string().describe('Optional: fallback locale code to use when requested locale is not available').optional(),
|
|
24
|
-
locale: z.string().describe('Optional: locale code to create the document in (e.g., "en", "es"). Defaults to the default locale').optional(),
|
|
25
|
-
select: z.record(z.string(), z.unknown()).describe('Optional: define exactly which fields you\'d like to return, e.g., {"title": true}').optional()
|
|
18
|
+
input: createDocumentsInputSchema({
|
|
19
|
+
file: fileInputSchema
|
|
26
20
|
})
|
|
27
|
-
}).handler(async ({
|
|
21
|
+
}).handler(async ({ slug, authorizedMCP, input, req })=>{
|
|
28
22
|
const payload = req.payload;
|
|
23
|
+
const collectionConfig = payload.collections[slug]?.config;
|
|
29
24
|
const logger = getLogger({
|
|
30
25
|
payload
|
|
31
26
|
});
|
|
32
|
-
const {
|
|
33
|
-
|
|
27
|
+
const { depth, documents, draft, fallbackLocale, locale, populate, publishAllLocales, returning, select } = input;
|
|
28
|
+
const shouldUsePartialSchema = draft === true && collectionConfig !== undefined && !hasDraftValidationEnabled(collectionConfig);
|
|
29
|
+
logger.info(`Creating ${documents.length} documents in collection: ${slug}`);
|
|
34
30
|
try {
|
|
35
|
-
const virtualFieldNames = getCollectionVirtualFieldNames(payload.config,
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
31
|
+
const virtualFieldNames = getCollectionVirtualFieldNames(payload.config, slug);
|
|
32
|
+
const docs = [];
|
|
33
|
+
const errors = [];
|
|
34
|
+
let validationSchema;
|
|
35
|
+
for (const [index, document] of documents.entries()){
|
|
36
|
+
try {
|
|
37
|
+
const inputData = stripVirtualFields(document.data, virtualFieldNames);
|
|
38
|
+
validateCollectionData({
|
|
39
|
+
slug,
|
|
40
|
+
data: inputData,
|
|
41
|
+
partial: shouldUsePartialSchema,
|
|
42
|
+
req
|
|
43
|
+
});
|
|
44
|
+
const parsedData = transformPointDataToPayload(inputData);
|
|
45
|
+
const file = await resolveFile({
|
|
46
|
+
slug,
|
|
47
|
+
input: document.file,
|
|
48
|
+
req
|
|
49
|
+
});
|
|
50
|
+
const result = await payload.create({
|
|
51
|
+
collection: slug,
|
|
52
|
+
data: parsedData,
|
|
53
|
+
depth,
|
|
54
|
+
draft,
|
|
55
|
+
overrideAccess: authorizedMCP.overrideAccess,
|
|
56
|
+
populate,
|
|
57
|
+
publishAllLocales,
|
|
58
|
+
req,
|
|
59
|
+
...file ? {
|
|
60
|
+
file
|
|
61
|
+
} : {},
|
|
62
|
+
...locale ? {
|
|
63
|
+
locale
|
|
64
|
+
} : {},
|
|
65
|
+
...fallbackLocale !== undefined ? {
|
|
66
|
+
fallbackLocale
|
|
67
|
+
} : {},
|
|
68
|
+
select: returning ? select : {
|
|
69
|
+
id: true
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
docs.push(returning ? {
|
|
73
|
+
doc: result,
|
|
74
|
+
index
|
|
75
|
+
} : {
|
|
76
|
+
id: result.id,
|
|
77
|
+
index
|
|
78
|
+
});
|
|
79
|
+
} catch (error) {
|
|
80
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
81
|
+
const formattedError = formatEntityError({
|
|
82
|
+
slug,
|
|
83
|
+
action: 'creating',
|
|
84
|
+
entity: 'collection',
|
|
85
|
+
error,
|
|
86
|
+
req
|
|
87
|
+
});
|
|
88
|
+
const structuredContent = formattedError.structuredContent;
|
|
89
|
+
const schema = structuredContent?.schema;
|
|
90
|
+
const errorContent = formattedError.content[0];
|
|
91
|
+
const formattedMessage = errorContent?.type === 'text' ? errorContent.text.split('\n\nUse this schema')[0] ?? message : message;
|
|
92
|
+
if (!validationSchema && schema && typeof schema === 'object') {
|
|
93
|
+
validationSchema = schema;
|
|
94
|
+
}
|
|
95
|
+
logger.error(`Error creating document at index ${index} in ${slug}: ${message}`);
|
|
96
|
+
errors.push({
|
|
97
|
+
index,
|
|
98
|
+
message: formattedMessage
|
|
99
|
+
});
|
|
100
|
+
}
|
|
44
101
|
}
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
...
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
...fallbackLocale ? {
|
|
57
|
-
fallbackLocale
|
|
58
|
-
} : {},
|
|
59
|
-
...select ? {
|
|
60
|
-
select: select
|
|
61
|
-
} : {}
|
|
62
|
-
});
|
|
63
|
-
logger.info(`Successfully created document in ${collectionSlug} with ID: ${result.id}`);
|
|
102
|
+
const batchResult = {
|
|
103
|
+
docs,
|
|
104
|
+
errors
|
|
105
|
+
};
|
|
106
|
+
const retryMessage = errors.length > 0 ? '\nRetry failed indexes only.' : '';
|
|
107
|
+
const schemaMessage = validationSchema ? `\n\nUse this schema for data:\n\`\`\`json\n${JSON.stringify(validationSchema)}\n\`\`\`` : '';
|
|
108
|
+
const structuredContent = validationSchema ? {
|
|
109
|
+
...batchResult,
|
|
110
|
+
schema: validationSchema
|
|
111
|
+
} : batchResult;
|
|
112
|
+
logger.info(`Created ${docs.length} of ${documents.length} documents in ${slug}`);
|
|
64
113
|
return {
|
|
65
114
|
content: [
|
|
66
115
|
{
|
|
67
116
|
type: 'text',
|
|
68
|
-
text: `
|
|
117
|
+
text: `Created ${docs.length} of ${documents.length} documents in collection "${slug}".${retryMessage}\nResults:\n\`\`\`json\n${JSON.stringify(batchResult)}\n\`\`\`${schemaMessage}`
|
|
69
118
|
}
|
|
70
119
|
],
|
|
71
|
-
doc:
|
|
120
|
+
doc: structuredContent,
|
|
121
|
+
isError: docs.length === 0 && errors.length > 0,
|
|
122
|
+
structuredContent
|
|
72
123
|
};
|
|
73
124
|
} catch (error) {
|
|
74
|
-
const
|
|
75
|
-
logger.error(`Error creating
|
|
76
|
-
return
|
|
125
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
126
|
+
logger.error(`Error creating documents in ${slug}: ${message}`);
|
|
127
|
+
return formatEntityError({
|
|
128
|
+
slug,
|
|
77
129
|
action: 'creating',
|
|
78
|
-
|
|
130
|
+
entity: 'collection',
|
|
79
131
|
error,
|
|
80
132
|
req
|
|
81
133
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/mcp/builtin/collections/createTool.ts"],"sourcesContent":["import
|
|
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(\n returning ? { doc: result as Record<string, unknown>, index } : { id: result.id, index },\n )\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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteTool.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/collections/deleteTool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deleteTool.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/collections/deleteTool.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,mBAAmB,4CAuF9B,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { deleteDocumentsInputSchema, parseDocumentID } from 'payload';
|
|
2
|
+
import { defaultAccess } from '../../../defaultAccess.js';
|
|
2
3
|
import { defineCollectionTool } from '../../../defineTool.js';
|
|
3
4
|
import { getLogger } from '../../../utils/getLogger.js';
|
|
4
|
-
import { localAPIDefaults } from '../../../utils/localAPIDefaults.js';
|
|
5
|
-
import { whereSchema } from '../../../utils/whereSchema.js';
|
|
6
5
|
const DEFAULT_DESCRIPTION = 'Delete documents in any collection by passing the collection slug and ID or where clause.';
|
|
7
6
|
export const deleteDocumentsTool = defineCollectionTool({
|
|
7
|
+
access: (args)=>defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.delete),
|
|
8
8
|
annotations: {
|
|
9
9
|
destructiveHint: true,
|
|
10
10
|
idempotentHint: false,
|
|
@@ -13,25 +13,44 @@ export const deleteDocumentsTool = defineCollectionTool({
|
|
|
13
13
|
title: 'Delete Documents'
|
|
14
14
|
},
|
|
15
15
|
description: DEFAULT_DESCRIPTION,
|
|
16
|
-
input:
|
|
17
|
-
|
|
18
|
-
z.string(),
|
|
19
|
-
z.number()
|
|
20
|
-
]).describe('Optional: specific document ID to delete').optional(),
|
|
21
|
-
depth: z.number().int().min(0).max(10).describe('Depth of population for relationships in response').optional().default(0),
|
|
22
|
-
fallbackLocale: z.string().describe('Optional: fallback locale code to use when requested locale is not available').optional(),
|
|
23
|
-
locale: z.string().describe('Optional: locale code for the operation (e.g., "en", "es"). Defaults to the default locale').optional(),
|
|
24
|
-
where: whereSchema.describe('Optional: where clause to delete multiple documents. Use field names with Payload operators, and/or arrays for grouping. Example: {"title":{"contains":"test"}}').optional()
|
|
25
|
-
})
|
|
26
|
-
}).handler(async ({ authorizedMCP, collectionSlug, input, req })=>{
|
|
16
|
+
input: deleteDocumentsInputSchema
|
|
17
|
+
}).handler(async ({ slug, authorizedMCP, input, req })=>{
|
|
27
18
|
const payload = req.payload;
|
|
28
19
|
const logger = getLogger({
|
|
29
20
|
payload
|
|
30
21
|
});
|
|
31
22
|
const { id, depth, fallbackLocale, locale, where } = input;
|
|
32
|
-
logger.info(`Deleting document from collection: ${
|
|
23
|
+
logger.info(`Deleting document from collection: ${slug}${id ? ` with ID: ${id}` : ' with where clause'}${locale ? `, locale: ${locale}` : ''}`);
|
|
33
24
|
try {
|
|
34
|
-
if (
|
|
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) {
|
|
35
54
|
return {
|
|
36
55
|
content: [
|
|
37
56
|
{
|
|
@@ -41,39 +60,22 @@ export const deleteDocumentsTool = defineCollectionTool({
|
|
|
41
60
|
]
|
|
42
61
|
};
|
|
43
62
|
}
|
|
44
|
-
const
|
|
45
|
-
collection:
|
|
63
|
+
const result = await payload.delete({
|
|
64
|
+
collection: slug,
|
|
46
65
|
depth,
|
|
66
|
+
overrideAccess: authorizedMCP.overrideAccess,
|
|
47
67
|
req,
|
|
48
|
-
|
|
68
|
+
where,
|
|
49
69
|
...locale && {
|
|
50
70
|
locale
|
|
51
71
|
},
|
|
52
|
-
...fallbackLocale && {
|
|
72
|
+
...fallbackLocale !== undefined && {
|
|
53
73
|
fallbackLocale
|
|
54
74
|
}
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
deleteOptions.where = where;
|
|
60
|
-
}
|
|
61
|
-
const result = await payload.delete(deleteOptions);
|
|
62
|
-
if (id) {
|
|
63
|
-
return {
|
|
64
|
-
content: [
|
|
65
|
-
{
|
|
66
|
-
type: 'text',
|
|
67
|
-
text: `Document deleted successfully from collection "${collectionSlug}"!\nDeleted document:\n\`\`\`json\n${JSON.stringify(result)}\n\`\`\``
|
|
68
|
-
}
|
|
69
|
-
],
|
|
70
|
-
doc: result
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
const bulkResult = result;
|
|
74
|
-
const docs = bulkResult.docs || [];
|
|
75
|
-
const errors = bulkResult.errors || [];
|
|
76
|
-
let responseText = `Document deleted successfully from collection "${collectionSlug}"!\nDeleted: ${docs.length} documents\nErrors: ${errors.length}\n---`;
|
|
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---`;
|
|
77
79
|
if (docs.length > 0) {
|
|
78
80
|
responseText += `\n\nDeleted documents:\n\`\`\`json\n${JSON.stringify(docs)}\n\`\`\``;
|
|
79
81
|
}
|
|
@@ -94,12 +96,12 @@ export const deleteDocumentsTool = defineCollectionTool({
|
|
|
94
96
|
};
|
|
95
97
|
} catch (error) {
|
|
96
98
|
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
97
|
-
logger.error(`Error deleting document from ${
|
|
99
|
+
logger.error(`Error deleting document from ${slug}: ${errorMessage}`);
|
|
98
100
|
return {
|
|
99
101
|
content: [
|
|
100
102
|
{
|
|
101
103
|
type: 'text',
|
|
102
|
-
text: `Error deleting document from collection "${
|
|
104
|
+
text: `Error deleting document from collection "${slug}": ${errorMessage}`
|
|
103
105
|
}
|
|
104
106
|
]
|
|
105
107
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/mcp/builtin/collections/deleteTool.ts"],"sourcesContent":["import {
|
|
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 as Record<string, unknown>,\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 as Record<string, unknown>,\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,EAAY,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7E,OAAO,EAAY,CAAC,EAAE,MAAM,SAAS,CAAA;AAoBrC,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;8BAwBzB,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,CA2E5B"}
|