@payloadcms/plugin-mcp 4.0.0-internal.a0ef1b8 → 4.0.0-internal.a2d053c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/defaultAccess.d.ts +3 -0
  3. package/dist/defaultAccess.d.ts.map +1 -0
  4. package/dist/defaultAccess.js +3 -0
  5. package/dist/defaultAccess.js.map +1 -0
  6. package/dist/defineTool.d.ts +8 -8
  7. package/dist/defineTool.d.ts.map +1 -1
  8. package/dist/endpoint/access.d.ts +12 -5
  9. package/dist/endpoint/access.d.ts.map +1 -1
  10. package/dist/endpoint/access.js +95 -88
  11. package/dist/endpoint/access.js.map +1 -1
  12. package/dist/endpoint/index.d.ts +1 -1
  13. package/dist/endpoint/index.d.ts.map +1 -1
  14. package/dist/endpoint/index.js +109 -16
  15. package/dist/endpoint/index.js.map +1 -1
  16. package/dist/endpoint/oauth.d.ts +39 -0
  17. package/dist/endpoint/oauth.d.ts.map +1 -0
  18. package/dist/endpoint/oauth.js +94 -0
  19. package/dist/endpoint/oauth.js.map +1 -0
  20. package/dist/endpoint/oauthLoginToken.d.ts +21 -0
  21. package/dist/endpoint/oauthLoginToken.d.ts.map +1 -0
  22. package/dist/endpoint/oauthLoginToken.js +79 -0
  23. package/dist/endpoint/oauthLoginToken.js.map +1 -0
  24. package/dist/endpoint/oauthServer.d.ts +12 -0
  25. package/dist/endpoint/oauthServer.d.ts.map +1 -0
  26. package/dist/endpoint/oauthServer.js +362 -0
  27. package/dist/endpoint/oauthServer.js.map +1 -0
  28. package/dist/exports/client.d.ts +1 -1
  29. package/dist/exports/client.d.ts.map +1 -1
  30. package/dist/exports/client.js +1 -1
  31. package/dist/exports/client.js.map +1 -1
  32. package/dist/exports/internal.d.ts +2 -0
  33. package/dist/exports/internal.d.ts.map +1 -0
  34. package/dist/exports/internal.js +3 -0
  35. package/dist/exports/internal.js.map +1 -0
  36. package/dist/index.d.ts +12 -4
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +30 -22
  39. package/dist/index.js.map +1 -1
  40. package/dist/mcp/buildMcpServer.d.ts +6 -6
  41. package/dist/mcp/buildMcpServer.d.ts.map +1 -1
  42. package/dist/mcp/buildMcpServer.js +146 -81
  43. package/dist/mcp/buildMcpServer.js.map +1 -1
  44. package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -1
  45. package/dist/mcp/builtin/collections/authTools.js +123 -61
  46. package/dist/mcp/builtin/collections/authTools.js.map +1 -1
  47. package/dist/mcp/builtin/collections/countTool.d.ts +2 -0
  48. package/dist/mcp/builtin/collections/countTool.d.ts.map +1 -0
  49. package/dist/mcp/builtin/collections/countTool.js +63 -0
  50. package/dist/mcp/builtin/collections/countTool.js.map +1 -0
  51. package/dist/mcp/builtin/collections/countVersionsTool.d.ts +2 -0
  52. package/dist/mcp/builtin/collections/countVersionsTool.d.ts.map +1 -0
  53. package/dist/mcp/builtin/collections/countVersionsTool.js +60 -0
  54. package/dist/mcp/builtin/collections/countVersionsTool.js.map +1 -0
  55. package/dist/mcp/builtin/collections/createTool.d.ts +1 -1
  56. package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -1
  57. package/dist/mcp/builtin/collections/createTool.js +114 -68
  58. package/dist/mcp/builtin/collections/createTool.js.map +1 -1
  59. package/dist/mcp/builtin/collections/deleteTool.d.ts +1 -1
  60. package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -1
  61. package/dist/mcp/builtin/collections/deleteTool.js +55 -61
  62. package/dist/mcp/builtin/collections/deleteTool.js.map +1 -1
  63. package/dist/mcp/builtin/collections/duplicateTool.d.ts +2 -0
  64. package/dist/mcp/builtin/collections/duplicateTool.d.ts.map +1 -0
  65. package/dist/mcp/builtin/collections/duplicateTool.js +90 -0
  66. package/dist/mcp/builtin/collections/duplicateTool.js.map +1 -0
  67. package/dist/mcp/builtin/collections/fileInput.d.ts +28 -0
  68. package/dist/mcp/builtin/collections/fileInput.d.ts.map +1 -0
  69. package/dist/mcp/builtin/collections/fileInput.js +88 -0
  70. package/dist/mcp/builtin/collections/fileInput.js.map +1 -0
  71. package/dist/mcp/builtin/collections/findDistinctTool.d.ts +2 -0
  72. package/dist/mcp/builtin/collections/findDistinctTool.d.ts.map +1 -0
  73. package/dist/mcp/builtin/collections/findDistinctTool.js +77 -0
  74. package/dist/mcp/builtin/collections/findDistinctTool.js.map +1 -0
  75. package/dist/mcp/builtin/collections/findTool.d.ts +1 -1
  76. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -1
  77. package/dist/mcp/builtin/collections/findTool.js +62 -75
  78. package/dist/mcp/builtin/collections/findTool.js.map +1 -1
  79. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts +2 -0
  80. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts.map +1 -0
  81. package/dist/mcp/builtin/collections/findVersionByIDTool.js +74 -0
  82. package/dist/mcp/builtin/collections/findVersionByIDTool.js.map +1 -0
  83. package/dist/mcp/builtin/collections/findVersionsTool.d.ts +2 -0
  84. package/dist/mcp/builtin/collections/findVersionsTool.d.ts.map +1 -0
  85. package/dist/mcp/builtin/collections/findVersionsTool.js +84 -0
  86. package/dist/mcp/builtin/collections/findVersionsTool.js.map +1 -0
  87. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts +2 -0
  88. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -0
  89. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +103 -0
  90. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -0
  91. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts +2 -0
  92. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts.map +1 -0
  93. package/dist/mcp/builtin/collections/restoreVersionTool.js +69 -0
  94. package/dist/mcp/builtin/collections/restoreVersionTool.js.map +1 -0
  95. package/dist/mcp/builtin/collections/updateTool.d.ts +1 -1
  96. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -1
  97. package/dist/mcp/builtin/collections/updateTool.js +118 -137
  98. package/dist/mcp/builtin/collections/updateTool.js.map +1 -1
  99. package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts +2 -0
  100. package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts.map +1 -0
  101. package/dist/mcp/builtin/collections/uploadInstructionsTool.js +55 -0
  102. package/dist/mcp/builtin/collections/uploadInstructionsTool.js.map +1 -0
  103. package/dist/mcp/builtin/formatEntityError.d.ts +16 -0
  104. package/dist/mcp/builtin/formatEntityError.d.ts.map +1 -0
  105. package/dist/mcp/builtin/formatEntityError.js +55 -0
  106. package/dist/mcp/builtin/formatEntityError.js.map +1 -0
  107. package/dist/mcp/builtin/getConfigInfoTool.d.ts +2 -0
  108. package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -0
  109. package/dist/mcp/builtin/getConfigInfoTool.js +69 -0
  110. package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -0
  111. package/dist/mcp/builtin/globals/countVersionsTool.d.ts +2 -0
  112. package/dist/mcp/builtin/globals/countVersionsTool.d.ts.map +1 -0
  113. package/dist/mcp/builtin/globals/countVersionsTool.js +60 -0
  114. package/dist/mcp/builtin/globals/countVersionsTool.js.map +1 -0
  115. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -1
  116. package/dist/mcp/builtin/globals/findTool.js +27 -36
  117. package/dist/mcp/builtin/globals/findTool.js.map +1 -1
  118. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts +2 -0
  119. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts.map +1 -0
  120. package/dist/mcp/builtin/globals/findVersionByIDTool.js +68 -0
  121. package/dist/mcp/builtin/globals/findVersionByIDTool.js.map +1 -0
  122. package/dist/mcp/builtin/globals/findVersionsTool.d.ts +2 -0
  123. package/dist/mcp/builtin/globals/findVersionsTool.d.ts.map +1 -0
  124. package/dist/mcp/builtin/globals/findVersionsTool.js +78 -0
  125. package/dist/mcp/builtin/globals/findVersionsTool.js.map +1 -0
  126. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts +2 -0
  127. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts.map +1 -0
  128. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +81 -0
  129. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -0
  130. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts +2 -0
  131. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts.map +1 -0
  132. package/dist/mcp/builtin/globals/restoreVersionTool.js +70 -0
  133. package/dist/mcp/builtin/globals/restoreVersionTool.js.map +1 -0
  134. package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -1
  135. package/dist/mcp/builtin/globals/updateTool.js +44 -62
  136. package/dist/mcp/builtin/globals/updateTool.js.map +1 -1
  137. package/dist/mcp/builtinTools.d.ts +150 -19
  138. package/dist/mcp/builtinTools.d.ts.map +1 -1
  139. package/dist/mcp/builtinTools.js +125 -20
  140. package/dist/mcp/builtinTools.js.map +1 -1
  141. package/dist/mcp/sanitizeMCPConfig.d.ts +0 -1
  142. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -1
  143. package/dist/mcp/sanitizeMCPConfig.js +127 -58
  144. package/dist/mcp/sanitizeMCPConfig.js.map +1 -1
  145. package/dist/stdio.d.ts +3 -3
  146. package/dist/stdio.d.ts.map +1 -1
  147. package/dist/stdio.js +86 -47
  148. package/dist/stdio.js.map +1 -1
  149. package/dist/types.d.ts +205 -114
  150. package/dist/types.d.ts.map +1 -1
  151. package/dist/types.js +2 -4
  152. package/dist/types.js.map +1 -1
  153. package/dist/utils/camelCase.d.ts.map +1 -1
  154. package/dist/utils/getPluginConfig.d.ts +1 -1
  155. package/dist/utils/getPluginConfig.js +1 -1
  156. package/dist/utils/getPluginConfig.js.map +1 -1
  157. package/dist/utils/resolveProjectRoot.d.ts.map +1 -1
  158. package/dist/utils/seal.d.ts +18 -0
  159. package/dist/utils/seal.d.ts.map +1 -0
  160. package/dist/utils/seal.js +27 -0
  161. package/dist/utils/seal.js.map +1 -0
  162. package/dist/utils/toStandardSchema.d.ts.map +1 -1
  163. package/dist/utils/toStandardSchema.js.map +1 -1
  164. package/package.json +27 -37
  165. package/src/defaultAccess.ts +3 -0
  166. package/src/endpoint/access.ts +99 -101
  167. package/src/endpoint/index.ts +95 -15
  168. package/src/endpoint/oauth.ts +92 -0
  169. package/src/endpoint/oauthLoginToken.ts +91 -0
  170. package/src/endpoint/oauthServer.ts +396 -0
  171. package/src/exports/client.ts +2 -1
  172. package/src/exports/internal.ts +1 -0
  173. package/src/index.ts +52 -25
  174. package/src/mcp/buildMcpServer.ts +181 -116
  175. package/src/mcp/builtin/collections/authTools.ts +124 -77
  176. package/src/mcp/builtin/collections/countTool.ts +61 -0
  177. package/src/mcp/builtin/collections/countVersionsTool.ts +60 -0
  178. package/src/mcp/builtin/collections/createTool.ts +115 -88
  179. package/src/mcp/builtin/collections/deleteTool.ts +49 -75
  180. package/src/mcp/builtin/collections/duplicateTool.ts +84 -0
  181. package/src/mcp/builtin/collections/fileInput.spec.ts +93 -0
  182. package/src/mcp/builtin/collections/fileInput.ts +127 -0
  183. package/src/mcp/builtin/collections/findDistinctTool.ts +67 -0
  184. package/src/mcp/builtin/collections/findTool.ts +58 -111
  185. package/src/mcp/builtin/collections/findVersionByIDTool.ts +66 -0
  186. package/src/mcp/builtin/collections/findVersionsTool.ts +83 -0
  187. package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +91 -0
  188. package/src/mcp/builtin/collections/restoreVersionTool.ts +65 -0
  189. package/src/mcp/builtin/collections/updateTool.ts +106 -143
  190. package/src/mcp/builtin/collections/uploadInstructionsTool.ts +64 -0
  191. package/src/mcp/builtin/formatEntityError.ts +77 -0
  192. package/src/mcp/builtin/getConfigInfoTool.ts +68 -0
  193. package/src/mcp/builtin/globals/countVersionsTool.ts +60 -0
  194. package/src/mcp/builtin/globals/findTool.ts +28 -58
  195. package/src/mcp/builtin/globals/findVersionByIDTool.ts +64 -0
  196. package/src/mcp/builtin/globals/findVersionsTool.ts +69 -0
  197. package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +73 -0
  198. package/src/mcp/builtin/globals/restoreVersionTool.ts +68 -0
  199. package/src/mcp/builtin/globals/updateTool.ts +52 -80
  200. package/src/mcp/builtinTools.ts +118 -41
  201. package/src/mcp/sanitizeMCPConfig.ts +121 -78
  202. package/src/stdio.ts +80 -47
  203. package/src/types.ts +223 -119
  204. package/src/utils/getPluginConfig.ts +1 -1
  205. package/src/utils/seal.ts +46 -0
  206. package/src/utils/toStandardSchema.ts +1 -1
  207. package/dist/@types/assets.d.js +0 -2
  208. package/dist/@types/assets.d.js.map +0 -1
  209. package/dist/collection/getAccessField.d.ts +0 -12
  210. package/dist/collection/getAccessField.d.ts.map +0 -1
  211. package/dist/collection/getAccessField.js +0 -57
  212. package/dist/collection/getAccessField.js.map +0 -1
  213. package/dist/collection/index.d.ts +0 -6
  214. package/dist/collection/index.d.ts.map +0 -1
  215. package/dist/collection/index.js +0 -60
  216. package/dist/collection/index.js.map +0 -1
  217. package/dist/components/AccessField/index.client.d.ts +0 -10
  218. package/dist/components/AccessField/index.client.d.ts.map +0 -1
  219. package/dist/components/AccessField/index.client.js +0 -305
  220. package/dist/components/AccessField/index.client.js.map +0 -1
  221. package/dist/components/AccessField/index.css +0 -93
  222. package/dist/utils/getVirtualFieldNames.d.ts +0 -14
  223. package/dist/utils/getVirtualFieldNames.d.ts.map +0 -1
  224. package/dist/utils/getVirtualFieldNames.js +0 -35
  225. package/dist/utils/getVirtualFieldNames.js.map +0 -1
  226. package/dist/utils/localAPIDefaults.d.ts +0 -20
  227. package/dist/utils/localAPIDefaults.d.ts.map +0 -1
  228. package/dist/utils/localAPIDefaults.js +0 -19
  229. package/dist/utils/localAPIDefaults.js.map +0 -1
  230. package/dist/utils/schemaConversion/buildToolInput.d.ts +0 -29
  231. package/dist/utils/schemaConversion/buildToolInput.d.ts.map +0 -1
  232. package/dist/utils/schemaConversion/buildToolInput.js +0 -51
  233. package/dist/utils/schemaConversion/buildToolInput.js.map +0 -1
  234. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts +0 -7
  235. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts.map +0 -1
  236. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js +0 -20
  237. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js.map +0 -1
  238. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts +0 -15
  239. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts.map +0 -1
  240. package/dist/utils/schemaConversion/sanitizeEntitySchema.js +0 -464
  241. package/dist/utils/schemaConversion/sanitizeEntitySchema.js.map +0 -1
  242. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js +0 -158
  243. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js.map +0 -1
  244. package/dist/utils/transformPointDataToPayload.d.ts +0 -7
  245. package/dist/utils/transformPointDataToPayload.d.ts.map +0 -1
  246. package/dist/utils/transformPointDataToPayload.js +0 -28
  247. package/dist/utils/transformPointDataToPayload.js.map +0 -1
  248. package/src/@types/assets.d.ts +0 -3
  249. package/src/collection/getAccessField.ts +0 -64
  250. package/src/collection/index.ts +0 -64
  251. package/src/components/AccessField/index.client.tsx +0 -344
  252. package/src/components/AccessField/index.css +0 -93
  253. package/src/utils/getVirtualFieldNames.ts +0 -53
  254. package/src/utils/localAPIDefaults.ts +0 -22
  255. package/src/utils/schemaConversion/buildToolInput.ts +0 -68
  256. package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +0 -27
  257. package/src/utils/schemaConversion/sanitizeEntitySchema.spec.ts +0 -103
  258. package/src/utils/schemaConversion/sanitizeEntitySchema.ts +0 -529
  259. package/src/utils/transformPointDataToPayload.ts +0 -40
@@ -1,60 +0,0 @@
1
- import { getAccessField } from './getAccessField.js';
2
- export const getAPIKeysCollection = ({ pluginConfig })=>{
3
- const collection = {
4
- slug: 'payload-mcp-api-keys',
5
- admin: {
6
- description: 'API keys control which collections, resources, tools, and prompts MCP clients can access',
7
- group: 'MCP',
8
- useAsTitle: 'label'
9
- },
10
- auth: {
11
- disableLocalStrategy: true,
12
- useAPIKey: true
13
- },
14
- fields: [
15
- {
16
- name: 'user',
17
- type: 'relationship',
18
- admin: {
19
- description: 'The user that the API key is associated with.'
20
- },
21
- relationTo: pluginConfig.userCollection,
22
- required: true
23
- },
24
- {
25
- name: 'label',
26
- type: 'text',
27
- admin: {
28
- description: 'A useful label for the API key.'
29
- }
30
- },
31
- {
32
- name: 'description',
33
- type: 'text',
34
- admin: {
35
- description: 'The purpose of the API key.'
36
- }
37
- },
38
- {
39
- name: 'overrideAccess',
40
- type: 'checkbox',
41
- admin: {
42
- description: 'When checked, this key bypasses Payload access control on every operation it performs. Leave unchecked unless you have a specific reason.'
43
- },
44
- defaultValue: false,
45
- label: 'Override access control'
46
- },
47
- getAccessField({
48
- pluginConfig
49
- })
50
- ],
51
- labels: {
52
- plural: 'API Keys',
53
- singular: 'API Key'
54
- },
55
- versions: false
56
- };
57
- return pluginConfig.overrideApiKeyCollection ? pluginConfig.overrideApiKeyCollection(collection) : collection;
58
- };
59
-
60
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/collection/index.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\n\nimport type { SanitizedMCPPluginConfig } from '../types.js'\n\nimport { getAccessField } from './getAccessField.js'\n\nexport const getAPIKeysCollection = ({\n pluginConfig,\n}: {\n pluginConfig: SanitizedMCPPluginConfig\n}): CollectionConfig => {\n const collection: CollectionConfig = {\n slug: 'payload-mcp-api-keys',\n admin: {\n description:\n 'API keys control which collections, resources, tools, and prompts MCP clients can access',\n group: 'MCP',\n useAsTitle: 'label',\n },\n auth: {\n disableLocalStrategy: true,\n useAPIKey: true,\n },\n fields: [\n {\n name: 'user',\n type: 'relationship',\n admin: { description: 'The user that the API key is associated with.' },\n relationTo: pluginConfig.userCollection,\n required: true,\n },\n {\n name: 'label',\n type: 'text',\n admin: { description: 'A useful label for the API key.' },\n },\n {\n name: 'description',\n type: 'text',\n admin: { description: 'The purpose of the API key.' },\n },\n {\n name: 'overrideAccess',\n type: 'checkbox',\n admin: {\n description:\n 'When checked, this key bypasses Payload access control on every operation it performs. Leave unchecked unless you have a specific reason.',\n },\n defaultValue: false,\n label: 'Override access control',\n },\n getAccessField({ pluginConfig }),\n ],\n labels: {\n plural: 'API Keys',\n singular: 'API Key',\n },\n versions: false,\n }\n\n return pluginConfig.overrideApiKeyCollection\n ? pluginConfig.overrideApiKeyCollection(collection)\n : collection\n}\n"],"names":["getAccessField","getAPIKeysCollection","pluginConfig","collection","slug","admin","description","group","useAsTitle","auth","disableLocalStrategy","useAPIKey","fields","name","type","relationTo","userCollection","required","defaultValue","label","labels","plural","singular","versions","overrideApiKeyCollection"],"mappings":"AAIA,SAASA,cAAc,QAAQ,sBAAqB;AAEpD,OAAO,MAAMC,uBAAuB,CAAC,EACnCC,YAAY,EAGb;IACC,MAAMC,aAA+B;QACnCC,MAAM;QACNC,OAAO;YACLC,aACE;YACFC,OAAO;YACPC,YAAY;QACd;QACAC,MAAM;YACJC,sBAAsB;YACtBC,WAAW;QACb;QACAC,QAAQ;YACN;gBACEC,MAAM;gBACNC,MAAM;gBACNT,OAAO;oBAAEC,aAAa;gBAAgD;gBACtES,YAAYb,aAAac,cAAc;gBACvCC,UAAU;YACZ;YACA;gBACEJ,MAAM;gBACNC,MAAM;gBACNT,OAAO;oBAAEC,aAAa;gBAAkC;YAC1D;YACA;gBACEO,MAAM;gBACNC,MAAM;gBACNT,OAAO;oBAAEC,aAAa;gBAA8B;YACtD;YACA;gBACEO,MAAM;gBACNC,MAAM;gBACNT,OAAO;oBACLC,aACE;gBACJ;gBACAY,cAAc;gBACdC,OAAO;YACT;YACAnB,eAAe;gBAAEE;YAAa;SAC/B;QACDkB,QAAQ;YACNC,QAAQ;YACRC,UAAU;QACZ;QACAC,UAAU;IACZ;IAEA,OAAOrB,aAAasB,wBAAwB,GACxCtB,aAAasB,wBAAwB,CAACrB,cACtCA;AACN,EAAC"}
@@ -1,10 +0,0 @@
1
- import type { JSONFieldClientProps } from 'payload';
2
- import React from 'react';
3
- import type { ClientMCPPluginConfig } from '../../types.js';
4
- import './index.css';
5
- type Props = {
6
- pluginConfig: ClientMCPPluginConfig;
7
- } & JSONFieldClientProps;
8
- export declare const AccessField: React.FC<Props>;
9
- export {};
10
- //# sourceMappingURL=index.client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../src/components/AccessField/index.client.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAGnD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,qBAAqB,EAA2B,MAAM,gBAAgB,CAAA;AAEpF,OAAO,aAAa,CAAA;AAQpB,KAAK,KAAK,GAAG;IACX,YAAY,EAAE,qBAAqB,CAAA;CACpC,GAAG,oBAAoB,CAAA;AAoBxB,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA0QvC,CAAA"}
@@ -1,305 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { CheckboxInput, Collapsible, useField } from '@payloadcms/ui';
4
- import React from 'react';
5
- import './index.css';
6
- const baseClass = 'mcp-access-field';
7
- /** Drop a key from an object and return a new object — or `undefined` if it'd be empty. */ const without = (obj, key)=>{
8
- if (!obj || !(key in obj)) {
9
- return obj;
10
- }
11
- const { [key]: _omitted, ...rest } = obj;
12
- return Object.keys(rest).length === 0 ? undefined : rest;
13
- };
14
- const setKey = (obj, key, value)=>({
15
- ...obj ?? {},
16
- [key]: value
17
- });
18
- export const AccessField = ({ path, pluginConfig })=>{
19
- const { setValue, value } = useField({
20
- path
21
- });
22
- const access = value ?? {};
23
- // Bucket items for rendering. (Bucketing is cheap and runs once per render;
24
- // memoizing would mean managing inputs/refs for marginal benefit.)
25
- const collectionsBySlug = {};
26
- const globalsBySlug = {};
27
- const tools = [];
28
- const prompts = [];
29
- const resources = [];
30
- for (const item of pluginConfig.items){
31
- switch(item.type){
32
- case 'collectionTool':
33
- ;
34
- (collectionsBySlug[item.collectionSlug] ??= []).push(item);
35
- break;
36
- case 'globalTool':
37
- ;
38
- (globalsBySlug[item.globalSlug] ??= []).push(item);
39
- break;
40
- case 'prompt':
41
- prompts.push(item);
42
- break;
43
- case 'resource':
44
- resources.push(item);
45
- break;
46
- case 'tool':
47
- tools.push(item);
48
- break;
49
- }
50
- }
51
- const isScopedAllowed = (scope, slug, key)=>access[scope]?.[slug]?.[key] !== false;
52
- const isFlatAllowed = (scope, key)=>access[scope]?.[key] !== false;
53
- const toggleScoped = (scope, slug, key, allow)=>{
54
- if (allow) {
55
- const slugBucket = without(access[scope]?.[slug], key);
56
- const scopeBucket = slugBucket ? setKey(access[scope], slug, slugBucket) : without(access[scope], slug);
57
- setValue(scopeBucket ? setKey(access, scope, scopeBucket) : without(access, scope) ?? {});
58
- } else {
59
- setValue(setKey(access, scope, setKey(access[scope], slug, setKey(access[scope]?.[slug], key, false))));
60
- }
61
- };
62
- const toggleFlat = (scope, key, allow)=>{
63
- if (allow) {
64
- const bucket = without(access[scope], key);
65
- setValue(bucket ? setKey(access, scope, bucket) : without(access, scope) ?? {});
66
- } else {
67
- setValue(setKey(access, scope, setKey(access[scope], key, false)));
68
- }
69
- };
70
- const setAllScoped = (scope, slug, leaves, allow)=>{
71
- if (allow) {
72
- const scopeBucket = without(access[scope], slug);
73
- setValue(scopeBucket ? setKey(access, scope, scopeBucket) : without(access, scope) ?? {});
74
- } else {
75
- const slugBucket = leaves.reduce((acc, leaf)=>({
76
- ...acc,
77
- [leaf.key]: false
78
- }), {});
79
- setValue(setKey(access, scope, setKey(access[scope], slug, slugBucket)));
80
- }
81
- };
82
- const setAllFlat = (scope, leaves, allow)=>{
83
- if (allow) {
84
- setValue(without(access, scope) ?? {});
85
- } else {
86
- const bucket = leaves.reduce((acc, leaf)=>({
87
- ...acc,
88
- [leaf.key]: false
89
- }), {});
90
- setValue(setKey(access, scope, bucket));
91
- }
92
- };
93
- const collectionSlugs = Object.keys(collectionsBySlug);
94
- const globalSlugs = Object.keys(globalsBySlug);
95
- return /*#__PURE__*/ _jsxs("div", {
96
- className: baseClass,
97
- children: [
98
- collectionSlugs.length > 0 && /*#__PURE__*/ _jsxs("section", {
99
- className: `${baseClass}__section`,
100
- children: [
101
- /*#__PURE__*/ _jsxs("header", {
102
- className: `${baseClass}__section-header`,
103
- children: [
104
- /*#__PURE__*/ _jsx("h4", {
105
- children: "Collection-level permissions"
106
- }),
107
- /*#__PURE__*/ _jsx("p", {
108
- children: "Allow MCP clients to perform the following actions within these collections:"
109
- })
110
- ]
111
- }),
112
- collectionSlugs.map((slug)=>{
113
- const leaves = collectionsBySlug[slug];
114
- return /*#__PURE__*/ _jsx(Collapsible, {
115
- actions: /*#__PURE__*/ _jsx(GroupActions, {
116
- onSetAll: (allow)=>setAllScoped('collections', slug, leaves, allow)
117
- }),
118
- className: `${baseClass}__group`,
119
- header: /*#__PURE__*/ _jsx("span", {
120
- className: `${baseClass}__group-label`,
121
- children: titleCase(slug)
122
- }),
123
- initCollapsed: true,
124
- children: /*#__PURE__*/ _jsx("ul", {
125
- className: `${baseClass}__list`,
126
- children: leaves.map((leaf)=>/*#__PURE__*/ _jsx("li", {
127
- children: /*#__PURE__*/ _jsx(CheckboxInput, {
128
- checked: isScopedAllowed('collections', slug, leaf.key),
129
- id: `${path}.collections.${slug}.${leaf.key}`,
130
- label: leaf.label,
131
- onToggle: (e)=>toggleScoped('collections', slug, leaf.key, e.target.checked),
132
- tooltip: leaf.description
133
- })
134
- }, leaf.key))
135
- })
136
- }, `collection-${slug}`);
137
- })
138
- ]
139
- }),
140
- globalSlugs.length > 0 && /*#__PURE__*/ _jsxs("section", {
141
- className: `${baseClass}__section`,
142
- children: [
143
- /*#__PURE__*/ _jsxs("header", {
144
- className: `${baseClass}__section-header`,
145
- children: [
146
- /*#__PURE__*/ _jsx("h4", {
147
- children: "Global-level permissions"
148
- }),
149
- /*#__PURE__*/ _jsx("p", {
150
- children: "Allow MCP clients to perform the following actions on these globals:"
151
- })
152
- ]
153
- }),
154
- globalSlugs.map((slug)=>{
155
- const leaves = globalsBySlug[slug];
156
- return /*#__PURE__*/ _jsx(Collapsible, {
157
- actions: /*#__PURE__*/ _jsx(GroupActions, {
158
- onSetAll: (allow)=>setAllScoped('globals', slug, leaves, allow)
159
- }),
160
- className: `${baseClass}__group`,
161
- header: /*#__PURE__*/ _jsx("span", {
162
- className: `${baseClass}__group-label`,
163
- children: titleCase(slug)
164
- }),
165
- initCollapsed: true,
166
- children: /*#__PURE__*/ _jsx("ul", {
167
- className: `${baseClass}__list`,
168
- children: leaves.map((leaf)=>/*#__PURE__*/ _jsx("li", {
169
- children: /*#__PURE__*/ _jsx(CheckboxInput, {
170
- checked: isScopedAllowed('globals', slug, leaf.key),
171
- id: `${path}.globals.${slug}.${leaf.key}`,
172
- label: leaf.label,
173
- onToggle: (e)=>toggleScoped('globals', slug, leaf.key, e.target.checked),
174
- tooltip: leaf.description
175
- })
176
- }, leaf.key))
177
- })
178
- }, `global-${slug}`);
179
- })
180
- ]
181
- }),
182
- (tools.length > 0 || prompts.length > 0 || resources.length > 0) && /*#__PURE__*/ _jsxs("section", {
183
- className: `${baseClass}__section`,
184
- children: [
185
- /*#__PURE__*/ _jsxs("header", {
186
- className: `${baseClass}__section-header`,
187
- children: [
188
- /*#__PURE__*/ _jsx("h4", {
189
- children: "Project-level permissions"
190
- }),
191
- /*#__PURE__*/ _jsx("p", {
192
- children: "Cross-cutting tools, prompts, and resources not scoped to a single collection."
193
- })
194
- ]
195
- }),
196
- tools.length > 0 && /*#__PURE__*/ _jsx(Collapsible, {
197
- actions: /*#__PURE__*/ _jsx(GroupActions, {
198
- onSetAll: (allow)=>setAllFlat('tools', tools, allow)
199
- }),
200
- className: `${baseClass}__group`,
201
- header: /* TODO: needs i18n once design is finalized */ /*#__PURE__*/ _jsx("span", {
202
- className: `${baseClass}__group-label`,
203
- children: "Tools"
204
- }),
205
- initCollapsed: true,
206
- children: /*#__PURE__*/ _jsx("ul", {
207
- className: `${baseClass}__list`,
208
- children: tools.map((leaf)=>/*#__PURE__*/ _jsx("li", {
209
- children: /*#__PURE__*/ _jsx(CheckboxInput, {
210
- checked: isFlatAllowed('tools', leaf.key),
211
- id: `${path}.tools.${leaf.key}`,
212
- label: leaf.label,
213
- onToggle: (e)=>toggleFlat('tools', leaf.key, e.target.checked),
214
- tooltip: leaf.description
215
- })
216
- }, leaf.key))
217
- })
218
- }),
219
- prompts.length > 0 && /*#__PURE__*/ _jsx(Collapsible, {
220
- actions: /*#__PURE__*/ _jsx(GroupActions, {
221
- onSetAll: (allow)=>setAllFlat('prompts', prompts, allow)
222
- }),
223
- className: `${baseClass}__group`,
224
- header: /* TODO: needs i18n once design is finalized */ /*#__PURE__*/ _jsx("span", {
225
- className: `${baseClass}__group-label`,
226
- children: "Prompts"
227
- }),
228
- initCollapsed: true,
229
- children: /*#__PURE__*/ _jsx("ul", {
230
- className: `${baseClass}__list`,
231
- children: prompts.map((leaf)=>/*#__PURE__*/ _jsx("li", {
232
- children: /*#__PURE__*/ _jsx(CheckboxInput, {
233
- checked: isFlatAllowed('prompts', leaf.key),
234
- id: `${path}.prompts.${leaf.key}`,
235
- label: leaf.label,
236
- onToggle: (e)=>toggleFlat('prompts', leaf.key, e.target.checked),
237
- tooltip: leaf.description
238
- })
239
- }, leaf.key))
240
- })
241
- }),
242
- resources.length > 0 && /*#__PURE__*/ _jsx(Collapsible, {
243
- actions: /*#__PURE__*/ _jsx(GroupActions, {
244
- onSetAll: (allow)=>setAllFlat('resources', resources, allow)
245
- }),
246
- className: `${baseClass}__group`,
247
- header: /* TODO: needs i18n once design is finalized */ /*#__PURE__*/ _jsx("span", {
248
- className: `${baseClass}__group-label`,
249
- children: "Resources"
250
- }),
251
- initCollapsed: true,
252
- children: /*#__PURE__*/ _jsx("ul", {
253
- className: `${baseClass}__list`,
254
- children: resources.map((leaf)=>/*#__PURE__*/ _jsx("li", {
255
- children: /*#__PURE__*/ _jsx(CheckboxInput, {
256
- checked: isFlatAllowed('resources', leaf.key),
257
- id: `${path}.resources.${leaf.key}`,
258
- label: leaf.label,
259
- onToggle: (e)=>toggleFlat('resources', leaf.key, e.target.checked),
260
- tooltip: leaf.description
261
- })
262
- }, leaf.key))
263
- })
264
- })
265
- ]
266
- })
267
- ]
268
- });
269
- };
270
- const GroupActions = ({ onSetAll })=>// TODO: button labels + aria-labels need i18n once design is finalized
271
- /*#__PURE__*/ _jsxs("div", {
272
- className: `${baseClass}__group-actions`,
273
- children: [
274
- /*#__PURE__*/ _jsx("button", {
275
- "aria-label": "Select all",
276
- className: `${baseClass}__action`,
277
- onClick: (e)=>{
278
- e.stopPropagation();
279
- onSetAll(true);
280
- },
281
- title: "Select all",
282
- type: "button",
283
- children: "all"
284
- }),
285
- /*#__PURE__*/ _jsx("span", {
286
- "aria-hidden": true,
287
- className: `${baseClass}__action-sep`,
288
- children: "/"
289
- }),
290
- /*#__PURE__*/ _jsx("button", {
291
- "aria-label": "Clear all",
292
- className: `${baseClass}__action`,
293
- onClick: (e)=>{
294
- e.stopPropagation();
295
- onSetAll(false);
296
- },
297
- title: "Clear all",
298
- type: "button",
299
- children: "none"
300
- })
301
- ]
302
- });
303
- const titleCase = (slug)=>slug.replace(/(^|[-_])(.)/g, (_, sep, ch)=>sep ? ` ${ch.toUpperCase()}` : ch.toUpperCase());
304
-
305
- //# sourceMappingURL=index.client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/AccessField/index.client.tsx"],"sourcesContent":["'use client'\n\nimport type { JSONFieldClientProps } from 'payload'\n\nimport { CheckboxInput, Collapsible, useField } from '@payloadcms/ui'\nimport React from 'react'\n\nimport type { ClientMCPPluginConfig, MCPAPIKeysDocAccessTree } from '../../types.js'\n\nimport './index.css'\n\nconst baseClass = 'mcp-access-field'\n\ntype ClientItem = ClientMCPPluginConfig['items'][number]\ntype ScopeKey = 'collections' | 'globals'\ntype FlatKey = 'prompts' | 'resources' | 'tools'\n\ntype Props = {\n pluginConfig: ClientMCPPluginConfig\n} & JSONFieldClientProps\n\n/** Drop a key from an object and return a new object — or `undefined` if it'd be empty. */\nconst without = <T extends Record<string, unknown>>(\n obj: T | undefined,\n key: string,\n): T | undefined => {\n if (!obj || !(key in obj)) {\n return obj\n }\n const { [key]: _omitted, ...rest } = obj\n return Object.keys(rest).length === 0 ? undefined : (rest as T)\n}\n\nconst setKey = <T extends Record<string, unknown>>(\n obj: T | undefined,\n key: string,\n value: unknown,\n): T => ({ ...(obj ?? {}), [key]: value }) as T\n\nexport const AccessField: React.FC<Props> = ({ path, pluginConfig }) => {\n const { setValue, value } = useField<MCPAPIKeysDocAccessTree>({ path })\n const access = value ?? {}\n\n // Bucket items for rendering. (Bucketing is cheap and runs once per render;\n // memoizing would mean managing inputs/refs for marginal benefit.)\n const collectionsBySlug: Record<string, ClientItem[]> = {}\n const globalsBySlug: Record<string, ClientItem[]> = {}\n const tools: ClientItem[] = []\n const prompts: ClientItem[] = []\n const resources: ClientItem[] = []\n for (const item of pluginConfig.items) {\n switch (item.type) {\n case 'collectionTool':\n ;(collectionsBySlug[item.collectionSlug!] ??= []).push(item)\n break\n case 'globalTool':\n ;(globalsBySlug[item.globalSlug!] ??= []).push(item)\n break\n case 'prompt':\n prompts.push(item)\n break\n case 'resource':\n resources.push(item)\n break\n case 'tool':\n tools.push(item)\n break\n }\n }\n\n const isScopedAllowed = (scope: ScopeKey, slug: string, key: string): boolean =>\n access[scope]?.[slug]?.[key] !== false\n\n const isFlatAllowed = (scope: FlatKey, key: string): boolean => access[scope]?.[key] !== false\n\n const toggleScoped = (scope: ScopeKey, slug: string, key: string, allow: boolean) => {\n if (allow) {\n const slugBucket = without(access[scope]?.[slug], key)\n const scopeBucket = slugBucket\n ? setKey(access[scope], slug, slugBucket)\n : without(access[scope], slug)\n setValue(scopeBucket ? setKey(access, scope, scopeBucket) : (without(access, scope) ?? {}))\n } else {\n setValue(\n setKey(\n access,\n scope,\n setKey(access[scope], slug, setKey(access[scope]?.[slug], key, false)),\n ),\n )\n }\n }\n\n const toggleFlat = (scope: FlatKey, key: string, allow: boolean) => {\n if (allow) {\n const bucket = without(access[scope], key)\n setValue(bucket ? setKey(access, scope, bucket) : (without(access, scope) ?? {}))\n } else {\n setValue(setKey(access, scope, setKey(access[scope], key, false)))\n }\n }\n\n const setAllScoped = (scope: ScopeKey, slug: string, leaves: ClientItem[], allow: boolean) => {\n if (allow) {\n const scopeBucket = without(access[scope], slug)\n setValue(scopeBucket ? setKey(access, scope, scopeBucket) : (without(access, scope) ?? {}))\n } else {\n const slugBucket = leaves.reduce<Record<string, boolean>>(\n (acc, leaf) => ({ ...acc, [leaf.key]: false }),\n {},\n )\n setValue(setKey(access, scope, setKey(access[scope], slug, slugBucket)))\n }\n }\n\n const setAllFlat = (scope: FlatKey, leaves: ClientItem[], allow: boolean) => {\n if (allow) {\n setValue(without(access, scope) ?? {})\n } else {\n const bucket = leaves.reduce<Record<string, boolean>>(\n (acc, leaf) => ({ ...acc, [leaf.key]: false }),\n {},\n )\n setValue(setKey(access, scope, bucket))\n }\n }\n\n const collectionSlugs = Object.keys(collectionsBySlug)\n const globalSlugs = Object.keys(globalsBySlug)\n\n return (\n <div className={baseClass}>\n {collectionSlugs.length > 0 && (\n <section className={`${baseClass}__section`}>\n <header className={`${baseClass}__section-header`}>\n {/* TODO: needs i18n once design is finalized */}\n <h4>Collection-level permissions</h4>\n {/* TODO: needs i18n once design is finalized */}\n <p>Allow MCP clients to perform the following actions within these collections:</p>\n </header>\n {collectionSlugs.map((slug) => {\n const leaves = collectionsBySlug[slug]!\n return (\n <Collapsible\n actions={\n <GroupActions\n onSetAll={(allow) => setAllScoped('collections', slug, leaves, allow)}\n />\n }\n className={`${baseClass}__group`}\n header={<span className={`${baseClass}__group-label`}>{titleCase(slug)}</span>}\n initCollapsed\n key={`collection-${slug}`}\n >\n <ul className={`${baseClass}__list`}>\n {leaves.map((leaf) => (\n <li key={leaf.key}>\n <CheckboxInput\n checked={isScopedAllowed('collections', slug, leaf.key)}\n id={`${path}.collections.${slug}.${leaf.key}`}\n label={leaf.label}\n onToggle={(e) =>\n toggleScoped('collections', slug, leaf.key, e.target.checked)\n }\n tooltip={leaf.description}\n />\n </li>\n ))}\n </ul>\n </Collapsible>\n )\n })}\n </section>\n )}\n\n {globalSlugs.length > 0 && (\n <section className={`${baseClass}__section`}>\n <header className={`${baseClass}__section-header`}>\n {/* TODO: needs i18n once design is finalized */}\n <h4>Global-level permissions</h4>\n {/* TODO: needs i18n once design is finalized */}\n <p>Allow MCP clients to perform the following actions on these globals:</p>\n </header>\n {globalSlugs.map((slug) => {\n const leaves = globalsBySlug[slug]!\n return (\n <Collapsible\n actions={\n <GroupActions\n onSetAll={(allow) => setAllScoped('globals', slug, leaves, allow)}\n />\n }\n className={`${baseClass}__group`}\n header={<span className={`${baseClass}__group-label`}>{titleCase(slug)}</span>}\n initCollapsed\n key={`global-${slug}`}\n >\n <ul className={`${baseClass}__list`}>\n {leaves.map((leaf) => (\n <li key={leaf.key}>\n <CheckboxInput\n checked={isScopedAllowed('globals', slug, leaf.key)}\n id={`${path}.globals.${slug}.${leaf.key}`}\n label={leaf.label}\n onToggle={(e) => toggleScoped('globals', slug, leaf.key, e.target.checked)}\n tooltip={leaf.description}\n />\n </li>\n ))}\n </ul>\n </Collapsible>\n )\n })}\n </section>\n )}\n\n {(tools.length > 0 || prompts.length > 0 || resources.length > 0) && (\n <section className={`${baseClass}__section`}>\n <header className={`${baseClass}__section-header`}>\n {/* TODO: needs i18n once design is finalized */}\n <h4>Project-level permissions</h4>\n {/* TODO: needs i18n once design is finalized */}\n <p>Cross-cutting tools, prompts, and resources not scoped to a single collection.</p>\n </header>\n {tools.length > 0 && (\n <Collapsible\n actions={<GroupActions onSetAll={(allow) => setAllFlat('tools', tools, allow)} />}\n className={`${baseClass}__group`}\n header={\n /* TODO: needs i18n once design is finalized */\n <span className={`${baseClass}__group-label`}>Tools</span>\n }\n initCollapsed\n >\n <ul className={`${baseClass}__list`}>\n {tools.map((leaf) => (\n <li key={leaf.key}>\n <CheckboxInput\n checked={isFlatAllowed('tools', leaf.key)}\n id={`${path}.tools.${leaf.key}`}\n label={leaf.label}\n onToggle={(e) => toggleFlat('tools', leaf.key, e.target.checked)}\n tooltip={leaf.description}\n />\n </li>\n ))}\n </ul>\n </Collapsible>\n )}\n {prompts.length > 0 && (\n <Collapsible\n actions={<GroupActions onSetAll={(allow) => setAllFlat('prompts', prompts, allow)} />}\n className={`${baseClass}__group`}\n header={\n /* TODO: needs i18n once design is finalized */\n <span className={`${baseClass}__group-label`}>Prompts</span>\n }\n initCollapsed\n >\n <ul className={`${baseClass}__list`}>\n {prompts.map((leaf) => (\n <li key={leaf.key}>\n <CheckboxInput\n checked={isFlatAllowed('prompts', leaf.key)}\n id={`${path}.prompts.${leaf.key}`}\n label={leaf.label}\n onToggle={(e) => toggleFlat('prompts', leaf.key, e.target.checked)}\n tooltip={leaf.description}\n />\n </li>\n ))}\n </ul>\n </Collapsible>\n )}\n {resources.length > 0 && (\n <Collapsible\n actions={\n <GroupActions onSetAll={(allow) => setAllFlat('resources', resources, allow)} />\n }\n className={`${baseClass}__group`}\n header={\n /* TODO: needs i18n once design is finalized */\n <span className={`${baseClass}__group-label`}>Resources</span>\n }\n initCollapsed\n >\n <ul className={`${baseClass}__list`}>\n {resources.map((leaf) => (\n <li key={leaf.key}>\n <CheckboxInput\n checked={isFlatAllowed('resources', leaf.key)}\n id={`${path}.resources.${leaf.key}`}\n label={leaf.label}\n onToggle={(e) => toggleFlat('resources', leaf.key, e.target.checked)}\n tooltip={leaf.description}\n />\n </li>\n ))}\n </ul>\n </Collapsible>\n )}\n </section>\n )}\n </div>\n )\n}\n\nconst GroupActions: React.FC<{ onSetAll: (allow: boolean) => void }> = ({ onSetAll }) => (\n // TODO: button labels + aria-labels need i18n once design is finalized\n <div className={`${baseClass}__group-actions`}>\n <button\n aria-label=\"Select all\"\n className={`${baseClass}__action`}\n onClick={(e) => {\n e.stopPropagation()\n onSetAll(true)\n }}\n title=\"Select all\"\n type=\"button\"\n >\n all\n </button>\n <span aria-hidden className={`${baseClass}__action-sep`}>\n /\n </span>\n <button\n aria-label=\"Clear all\"\n className={`${baseClass}__action`}\n onClick={(e) => {\n e.stopPropagation()\n onSetAll(false)\n }}\n title=\"Clear all\"\n type=\"button\"\n >\n none\n </button>\n </div>\n)\n\nconst titleCase = (slug: string): string =>\n slug.replace(/(^|[-_])(.)/g, (_, sep: string, ch: string) =>\n sep ? ` ${ch.toUpperCase()}` : ch.toUpperCase(),\n )\n"],"names":["CheckboxInput","Collapsible","useField","React","baseClass","without","obj","key","_omitted","rest","Object","keys","length","undefined","setKey","value","AccessField","path","pluginConfig","setValue","access","collectionsBySlug","globalsBySlug","tools","prompts","resources","item","items","type","collectionSlug","push","globalSlug","isScopedAllowed","scope","slug","isFlatAllowed","toggleScoped","allow","slugBucket","scopeBucket","toggleFlat","bucket","setAllScoped","leaves","reduce","acc","leaf","setAllFlat","collectionSlugs","globalSlugs","div","className","section","header","h4","p","map","actions","GroupActions","onSetAll","span","titleCase","initCollapsed","ul","li","checked","id","label","onToggle","e","target","tooltip","description","button","aria-label","onClick","stopPropagation","title","aria-hidden","replace","_","sep","ch","toUpperCase"],"mappings":"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"}
@@ -1,93 +0,0 @@
1
- @layer payload-default {
2
- .mcp-access-field {
3
- display: flex;
4
- flex-direction: column;
5
- gap: var(--base);
6
- }
7
-
8
- .mcp-access-field__section {
9
- display: flex;
10
- flex-direction: column;
11
- gap: calc(var(--base) / 2);
12
- padding-bottom: var(--base);
13
- /* Full-bleed separator: extend past the sidebar's horizontal gutter so the
14
- border-block-end spans the entire sidebar width. */
15
- margin-inline-start: calc(-1 * var(--sidebar-gutter-h-left, var(--gutter-h)));
16
- margin-inline-end: calc(-1 * var(--sidebar-gutter-h-right, var(--gutter-h)));
17
- padding-inline-start: var(--sidebar-gutter-h-left, var(--gutter-h));
18
- padding-inline-end: var(--sidebar-gutter-h-right, var(--gutter-h));
19
- border-block-end: 1px solid var(--theme-elevation-100);
20
- }
21
-
22
- .mcp-access-field__section:last-child {
23
- border-block-end: none;
24
- }
25
-
26
- .mcp-access-field__section-header {
27
- display: flex;
28
- flex-direction: column;
29
- }
30
-
31
- .mcp-access-field__section-header h4 {
32
- margin: 0;
33
- color: var(--color-text);
34
- font-family: var(--text-heading-small-font-family);
35
- font-size: var(--text-heading-small-font-size);
36
- font-weight: var(--text-heading-small-font-weight);
37
- line-height: var(--text-heading-small-line-height);
38
- letter-spacing: var(--text-heading-small-letter-spacing);
39
- }
40
-
41
- .mcp-access-field__section-header p {
42
- margin: 0;
43
- color: var(--color-text-secondary);
44
- font-family: var(--text-body-medium-font-family);
45
- font-size: var(--text-body-medium-font-size);
46
- font-weight: var(--text-body-medium-font-weight);
47
- line-height: var(--text-body-medium-line-height);
48
- letter-spacing: var(--text-body-medium-letter-spacing);
49
- }
50
-
51
- .mcp-access-field__group {
52
- margin-block-end: calc(var(--base) / 2);
53
- }
54
-
55
- .mcp-access-field__group-label {
56
- font-weight: 600;
57
- }
58
-
59
- .mcp-access-field__group-actions {
60
- display: flex;
61
- align-items: center;
62
- gap: calc(var(--base) / 6);
63
- }
64
-
65
- .mcp-access-field__action {
66
- appearance: none;
67
- background: none;
68
- border: none;
69
- color: var(--theme-elevation-500);
70
- cursor: pointer;
71
- font-size: 0.75rem;
72
- padding: 0;
73
- }
74
-
75
- .mcp-access-field__action:hover {
76
- color: var(--theme-text);
77
- text-decoration: underline;
78
- }
79
-
80
- .mcp-access-field__action-sep {
81
- color: var(--theme-elevation-300);
82
- font-size: 0.75rem;
83
- }
84
-
85
- .mcp-access-field__list {
86
- list-style: none;
87
- margin: 0;
88
- padding: 0;
89
- display: flex;
90
- flex-direction: column;
91
- gap: calc(var(--base) / 3);
92
- }
93
- }
@@ -1,14 +0,0 @@
1
- import type { SanitizedConfig } from 'payload';
2
- /**
3
- * Returns the names of all top-level virtual fields for a given collection slug.
4
- */
5
- export declare function getCollectionVirtualFieldNames(config: SanitizedConfig, slug: string): string[];
6
- /**
7
- * Returns the names of all top-level virtual fields for a given global slug.
8
- */
9
- export declare function getGlobalVirtualFieldNames(config: SanitizedConfig, slug: string): string[];
10
- /**
11
- * Strips virtual field values from a data object given a list of virtual field names.
12
- */
13
- export declare function stripVirtualFields(data: Record<string, unknown>, virtualFieldNames: string[]): Record<string, unknown>;
14
- //# sourceMappingURL=getVirtualFieldNames.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getVirtualFieldNames.d.ts","sourceRoot":"","sources":["../../src/utils/getVirtualFieldNames.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAI9C;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAU9F;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAU1F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,iBAAiB,EAAE,MAAM,EAAE,GAC1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYzB"}
@@ -1,35 +0,0 @@
1
- import { fieldIsVirtual } from 'payload/shared';
2
- /**
3
- * Returns the names of all top-level virtual fields for a given collection slug.
4
- */ export function getCollectionVirtualFieldNames(config, slug) {
5
- const collection = config.collections.find((c)=>c.slug === slug);
6
- if (!collection) {
7
- return [];
8
- }
9
- return collection.flattenedFields.filter((field)=>'name' in field && fieldIsVirtual(field)).map((field)=>field.name);
10
- }
11
- /**
12
- * Returns the names of all top-level virtual fields for a given global slug.
13
- */ export function getGlobalVirtualFieldNames(config, slug) {
14
- const global = config.globals.find((g)=>g.slug === slug);
15
- if (!global) {
16
- return [];
17
- }
18
- return global.flattenedFields.filter((field)=>'name' in field && fieldIsVirtual(field)).map((field)=>field.name);
19
- }
20
- /**
21
- * Strips virtual field values from a data object given a list of virtual field names.
22
- */ export function stripVirtualFields(data, virtualFieldNames) {
23
- if (virtualFieldNames.length === 0) {
24
- return data;
25
- }
26
- const stripped = {
27
- ...data
28
- };
29
- for (const name of virtualFieldNames){
30
- delete stripped[name];
31
- }
32
- return stripped;
33
- }
34
-
35
- //# sourceMappingURL=getVirtualFieldNames.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/getVirtualFieldNames.ts"],"sourcesContent":["import type { SanitizedConfig } from 'payload'\n\nimport { fieldIsVirtual } from 'payload/shared'\n\n/**\n * Returns the names of all top-level virtual fields for a given collection slug.\n */\nexport function getCollectionVirtualFieldNames(config: SanitizedConfig, slug: string): string[] {\n const collection = config.collections.find((c) => c.slug === slug)\n\n if (!collection) {\n return []\n }\n\n return collection.flattenedFields\n .filter((field) => 'name' in field && fieldIsVirtual(field))\n .map((field) => (field as { name: string }).name)\n}\n\n/**\n * Returns the names of all top-level virtual fields for a given global slug.\n */\nexport function getGlobalVirtualFieldNames(config: SanitizedConfig, slug: string): string[] {\n const global = config.globals.find((g) => g.slug === slug)\n\n if (!global) {\n return []\n }\n\n return global.flattenedFields\n .filter((field) => 'name' in field && fieldIsVirtual(field))\n .map((field) => (field as { name: string }).name)\n}\n\n/**\n * Strips virtual field values from a data object given a list of virtual field names.\n */\nexport function stripVirtualFields(\n data: Record<string, unknown>,\n virtualFieldNames: string[],\n): Record<string, unknown> {\n if (virtualFieldNames.length === 0) {\n return data\n }\n\n const stripped = { ...data }\n\n for (const name of virtualFieldNames) {\n delete stripped[name]\n }\n\n return stripped\n}\n"],"names":["fieldIsVirtual","getCollectionVirtualFieldNames","config","slug","collection","collections","find","c","flattenedFields","filter","field","map","name","getGlobalVirtualFieldNames","global","globals","g","stripVirtualFields","data","virtualFieldNames","length","stripped"],"mappings":"AAEA,SAASA,cAAc,QAAQ,iBAAgB;AAE/C;;CAEC,GACD,OAAO,SAASC,+BAA+BC,MAAuB,EAAEC,IAAY;IAClF,MAAMC,aAAaF,OAAOG,WAAW,CAACC,IAAI,CAAC,CAACC,IAAMA,EAAEJ,IAAI,KAAKA;IAE7D,IAAI,CAACC,YAAY;QACf,OAAO,EAAE;IACX;IAEA,OAAOA,WAAWI,eAAe,CAC9BC,MAAM,CAAC,CAACC,QAAU,UAAUA,SAASV,eAAeU,QACpDC,GAAG,CAAC,CAACD,QAAU,AAACA,MAA2BE,IAAI;AACpD;AAEA;;CAEC,GACD,OAAO,SAASC,2BAA2BX,MAAuB,EAAEC,IAAY;IAC9E,MAAMW,SAASZ,OAAOa,OAAO,CAACT,IAAI,CAAC,CAACU,IAAMA,EAAEb,IAAI,KAAKA;IAErD,IAAI,CAACW,QAAQ;QACX,OAAO,EAAE;IACX;IAEA,OAAOA,OAAON,eAAe,CAC1BC,MAAM,CAAC,CAACC,QAAU,UAAUA,SAASV,eAAeU,QACpDC,GAAG,CAAC,CAACD,QAAU,AAACA,MAA2BE,IAAI;AACpD;AAEA;;CAEC,GACD,OAAO,SAASK,mBACdC,IAA6B,EAC7BC,iBAA2B;IAE3B,IAAIA,kBAAkBC,MAAM,KAAK,GAAG;QAClC,OAAOF;IACT;IAEA,MAAMG,WAAW;QAAE,GAAGH,IAAI;IAAC;IAE3B,KAAK,MAAMN,QAAQO,kBAAmB;QACpC,OAAOE,QAAQ,CAACT,KAAK;IACvB;IAEA,OAAOS;AACT"}
@@ -1,20 +0,0 @@
1
- import type { AuthorizedMCP } from '../types.js';
2
- /**
3
- * Returns the `user` and `overrideAccess` arguments every Payload local API call
4
- * should receive when initiated from an MCP request. Spread the result into the
5
- * call's arg object so the two pieces of caller state can't drift apart.
6
- *
7
- * @example
8
- * ```ts
9
- * await req.payload.create({
10
- * collection: 'posts',
11
- * data,
12
- * ...localAPIDefaults(authorizedMCP),
13
- * })
14
- * ```
15
- */
16
- export declare const localAPIDefaults: (authorizedMCP: AuthorizedMCP) => {
17
- overrideAccess: boolean;
18
- user: AuthorizedMCP["user"];
19
- };
20
- //# sourceMappingURL=localAPIDefaults.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"localAPIDefaults.d.ts","sourceRoot":"","sources":["../../src/utils/localAPIDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,GAC3B,eAAe,aAAa,KAC3B;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAGvD,CAAA"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Returns the `user` and `overrideAccess` arguments every Payload local API call
3
- * should receive when initiated from an MCP request. Spread the result into the
4
- * call's arg object so the two pieces of caller state can't drift apart.
5
- *
6
- * @example
7
- * ```ts
8
- * await req.payload.create({
9
- * collection: 'posts',
10
- * data,
11
- * ...localAPIDefaults(authorizedMCP),
12
- * })
13
- * ```
14
- */ export const localAPIDefaults = (authorizedMCP)=>({
15
- overrideAccess: authorizedMCP.overrideAccess,
16
- user: authorizedMCP.user
17
- });
18
-
19
- //# sourceMappingURL=localAPIDefaults.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/localAPIDefaults.ts"],"sourcesContent":["import type { AuthorizedMCP } from '../types.js'\n\n/**\n * Returns the `user` and `overrideAccess` arguments every Payload local API call\n * should receive when initiated from an MCP request. Spread the result into the\n * call's arg object so the two pieces of caller state can't drift apart.\n *\n * @example\n * ```ts\n * await req.payload.create({\n * collection: 'posts',\n * data,\n * ...localAPIDefaults(authorizedMCP),\n * })\n * ```\n */\nexport const localAPIDefaults = (\n authorizedMCP: AuthorizedMCP,\n): { overrideAccess: boolean; user: AuthorizedMCP['user'] } => ({\n overrideAccess: authorizedMCP.overrideAccess,\n user: authorizedMCP.user,\n})\n"],"names":["localAPIDefaults","authorizedMCP","overrideAccess","user"],"mappings":"AAEA;;;;;;;;;;;;;CAaC,GACD,OAAO,MAAMA,mBAAmB,CAC9BC,gBAC8D,CAAA;QAC9DC,gBAAgBD,cAAcC,cAAc;QAC5CC,MAAMF,cAAcE,IAAI;IAC1B,CAAA,EAAE"}