@payloadcms/plugin-mcp 4.0.0-internal.1f9ae9a → 4.0.0-internal.2fddfc0

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 (227) hide show
  1. package/dist/@types/assets.d.js +2 -0
  2. package/dist/@types/assets.d.js.map +1 -0
  3. package/dist/defaultAccess.d.ts +3 -0
  4. package/dist/defaultAccess.d.ts.map +1 -0
  5. package/dist/defaultAccess.js +3 -0
  6. package/dist/defaultAccess.js.map +1 -0
  7. package/dist/endpoint/access.d.ts +17 -5
  8. package/dist/endpoint/access.d.ts.map +1 -1
  9. package/dist/endpoint/access.js +82 -88
  10. package/dist/endpoint/access.js.map +1 -1
  11. package/dist/endpoint/index.d.ts.map +1 -1
  12. package/dist/endpoint/index.js +11 -0
  13. package/dist/endpoint/index.js.map +1 -1
  14. package/dist/exports/client.d.ts +1 -1
  15. package/dist/exports/client.d.ts.map +1 -1
  16. package/dist/exports/client.js +1 -1
  17. package/dist/exports/client.js.map +1 -1
  18. package/dist/exports/internal.d.ts +2 -0
  19. package/dist/exports/internal.d.ts.map +1 -0
  20. package/dist/exports/internal.js +3 -0
  21. package/dist/exports/internal.js.map +1 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +13 -18
  24. package/dist/index.js.map +1 -1
  25. package/dist/mcp/buildMcpServer.d.ts.map +1 -1
  26. package/dist/mcp/buildMcpServer.js +102 -64
  27. package/dist/mcp/buildMcpServer.js.map +1 -1
  28. package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -1
  29. package/dist/mcp/builtin/collections/authTools.js +44 -6
  30. package/dist/mcp/builtin/collections/authTools.js.map +1 -1
  31. package/dist/mcp/builtin/collections/countTool.d.ts +2 -0
  32. package/dist/mcp/builtin/collections/countTool.d.ts.map +1 -0
  33. package/dist/mcp/builtin/collections/countTool.js +69 -0
  34. package/dist/mcp/builtin/collections/countTool.js.map +1 -0
  35. package/dist/mcp/builtin/collections/countVersionsTool.d.ts +2 -0
  36. package/dist/mcp/builtin/collections/countVersionsTool.d.ts.map +1 -0
  37. package/dist/mcp/builtin/collections/countVersionsTool.js +65 -0
  38. package/dist/mcp/builtin/collections/countVersionsTool.js.map +1 -0
  39. package/dist/mcp/builtin/collections/createTool.d.ts +1 -1
  40. package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -1
  41. package/dist/mcp/builtin/collections/createTool.js +38 -38
  42. package/dist/mcp/builtin/collections/createTool.js.map +1 -1
  43. package/dist/mcp/builtin/collections/deleteTool.d.ts +1 -1
  44. package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -1
  45. package/dist/mcp/builtin/collections/deleteTool.js +14 -20
  46. package/dist/mcp/builtin/collections/deleteTool.js.map +1 -1
  47. package/dist/mcp/builtin/collections/duplicateTool.d.ts +2 -0
  48. package/dist/mcp/builtin/collections/duplicateTool.d.ts.map +1 -0
  49. package/dist/mcp/builtin/collections/duplicateTool.js +97 -0
  50. package/dist/mcp/builtin/collections/duplicateTool.js.map +1 -0
  51. package/dist/mcp/builtin/collections/findDistinctTool.d.ts +2 -0
  52. package/dist/mcp/builtin/collections/findDistinctTool.d.ts.map +1 -0
  53. package/dist/mcp/builtin/collections/findDistinctTool.js +93 -0
  54. package/dist/mcp/builtin/collections/findDistinctTool.js.map +1 -0
  55. package/dist/mcp/builtin/collections/findTool.d.ts +1 -1
  56. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -1
  57. package/dist/mcp/builtin/collections/findTool.js +49 -43
  58. package/dist/mcp/builtin/collections/findTool.js.map +1 -1
  59. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts +2 -0
  60. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts.map +1 -0
  61. package/dist/mcp/builtin/collections/findVersionByIDTool.js +84 -0
  62. package/dist/mcp/builtin/collections/findVersionByIDTool.js.map +1 -0
  63. package/dist/mcp/builtin/collections/findVersionsTool.d.ts +2 -0
  64. package/dist/mcp/builtin/collections/findVersionsTool.d.ts.map +1 -0
  65. package/dist/mcp/builtin/collections/findVersionsTool.js +99 -0
  66. package/dist/mcp/builtin/collections/findVersionsTool.js.map +1 -0
  67. package/dist/mcp/builtin/collections/formatCollectionError.d.ts +9 -0
  68. package/dist/mcp/builtin/collections/formatCollectionError.d.ts.map +1 -0
  69. package/dist/mcp/builtin/collections/formatCollectionError.js +60 -0
  70. package/dist/mcp/builtin/collections/formatCollectionError.js.map +1 -0
  71. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts +2 -0
  72. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -0
  73. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +47 -0
  74. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -0
  75. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts +2 -0
  76. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts.map +1 -0
  77. package/dist/mcp/builtin/collections/restoreVersionTool.js +82 -0
  78. package/dist/mcp/builtin/collections/restoreVersionTool.js.map +1 -0
  79. package/dist/mcp/builtin/collections/updateTool.d.ts +1 -1
  80. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -1
  81. package/dist/mcp/builtin/collections/updateTool.js +87 -82
  82. package/dist/mcp/builtin/collections/updateTool.js.map +1 -1
  83. package/dist/mcp/builtin/getConfigInfoTool.d.ts +2 -0
  84. package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -0
  85. package/dist/mcp/builtin/getConfigInfoTool.js +71 -0
  86. package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -0
  87. package/dist/mcp/builtin/globals/countVersionsTool.d.ts +2 -0
  88. package/dist/mcp/builtin/globals/countVersionsTool.d.ts.map +1 -0
  89. package/dist/mcp/builtin/globals/countVersionsTool.js +65 -0
  90. package/dist/mcp/builtin/globals/countVersionsTool.js.map +1 -0
  91. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -1
  92. package/dist/mcp/builtin/globals/findTool.js +18 -21
  93. package/dist/mcp/builtin/globals/findTool.js.map +1 -1
  94. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts +2 -0
  95. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts.map +1 -0
  96. package/dist/mcp/builtin/globals/findVersionByIDTool.js +80 -0
  97. package/dist/mcp/builtin/globals/findVersionByIDTool.js.map +1 -0
  98. package/dist/mcp/builtin/globals/findVersionsTool.d.ts +2 -0
  99. package/dist/mcp/builtin/globals/findVersionsTool.d.ts.map +1 -0
  100. package/dist/mcp/builtin/globals/findVersionsTool.js +95 -0
  101. package/dist/mcp/builtin/globals/findVersionsTool.js.map +1 -0
  102. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts +2 -0
  103. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts.map +1 -0
  104. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +47 -0
  105. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -0
  106. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts +2 -0
  107. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts.map +1 -0
  108. package/dist/mcp/builtin/globals/restoreVersionTool.js +78 -0
  109. package/dist/mcp/builtin/globals/restoreVersionTool.js.map +1 -0
  110. package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -1
  111. package/dist/mcp/builtin/globals/updateTool.js +31 -36
  112. package/dist/mcp/builtin/globals/updateTool.js.map +1 -1
  113. package/dist/mcp/builtin/validateEntityData.d.ts +14 -0
  114. package/dist/mcp/builtin/validateEntityData.d.ts.map +1 -0
  115. package/dist/mcp/builtin/validateEntityData.js +82 -0
  116. package/dist/mcp/builtin/validateEntityData.js.map +1 -0
  117. package/dist/mcp/builtinTools.d.ts +144 -19
  118. package/dist/mcp/builtinTools.d.ts.map +1 -1
  119. package/dist/mcp/builtinTools.js +119 -20
  120. package/dist/mcp/builtinTools.js.map +1 -1
  121. package/dist/mcp/sanitizeMCPConfig.d.ts +0 -1
  122. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -1
  123. package/dist/mcp/sanitizeMCPConfig.js +120 -58
  124. package/dist/mcp/sanitizeMCPConfig.js.map +1 -1
  125. package/dist/stdio.d.ts +3 -2
  126. package/dist/stdio.d.ts.map +1 -1
  127. package/dist/stdio.js +27 -8
  128. package/dist/stdio.js.map +1 -1
  129. package/dist/types.d.ts +62 -108
  130. package/dist/types.d.ts.map +1 -1
  131. package/dist/types.js +4 -4
  132. package/dist/types.js.map +1 -1
  133. package/dist/utils/getPluginConfig.d.ts +1 -1
  134. package/dist/utils/getPluginConfig.js +1 -1
  135. package/dist/utils/getPluginConfig.js.map +1 -1
  136. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts +11 -0
  137. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts.map +1 -0
  138. package/dist/utils/schemaConversion/getEntityInputSchema.js +34 -0
  139. package/dist/utils/schemaConversion/getEntityInputSchema.js.map +1 -0
  140. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts +15 -0
  141. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts.map +1 -0
  142. package/dist/utils/schemaConversion/sanitizeEntitySchema.js +464 -0
  143. package/dist/utils/schemaConversion/sanitizeEntitySchema.js.map +1 -0
  144. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js +158 -0
  145. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js.map +1 -0
  146. package/dist/utils/whereSchema.d.ts +9 -0
  147. package/dist/utils/whereSchema.d.ts.map +1 -0
  148. package/dist/utils/whereSchema.js +13 -0
  149. package/dist/utils/whereSchema.js.map +1 -0
  150. package/package.json +8 -11
  151. package/src/@types/assets.d.ts +3 -0
  152. package/src/defaultAccess.ts +3 -0
  153. package/src/endpoint/access.ts +88 -101
  154. package/src/endpoint/index.ts +14 -1
  155. package/src/exports/client.ts +2 -1
  156. package/src/exports/internal.ts +1 -0
  157. package/src/index.ts +8 -16
  158. package/src/mcp/buildMcpServer.ts +130 -90
  159. package/src/mcp/builtin/collections/authTools.ts +45 -9
  160. package/src/mcp/builtin/collections/countTool.ts +74 -0
  161. package/src/mcp/builtin/collections/countVersionsTool.ts +70 -0
  162. package/src/mcp/builtin/collections/createTool.ts +55 -59
  163. package/src/mcp/builtin/collections/deleteTool.ts +19 -16
  164. package/src/mcp/builtin/collections/duplicateTool.ts +135 -0
  165. package/src/mcp/builtin/collections/findDistinctTool.ts +120 -0
  166. package/src/mcp/builtin/collections/findTool.ts +63 -33
  167. package/src/mcp/builtin/collections/findVersionByIDTool.ts +110 -0
  168. package/src/mcp/builtin/collections/findVersionsTool.ts +155 -0
  169. package/src/mcp/builtin/collections/formatCollectionError.ts +84 -0
  170. package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +46 -0
  171. package/src/mcp/builtin/collections/restoreVersionTool.ts +108 -0
  172. package/src/mcp/builtin/collections/updateTool.ts +111 -105
  173. package/src/mcp/builtin/getConfigInfoTool.ts +69 -0
  174. package/src/mcp/builtin/globals/countVersionsTool.ts +69 -0
  175. package/src/mcp/builtin/globals/findTool.ts +26 -17
  176. package/src/mcp/builtin/globals/findVersionByIDTool.ts +104 -0
  177. package/src/mcp/builtin/globals/findVersionsTool.ts +148 -0
  178. package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +41 -0
  179. package/src/mcp/builtin/globals/restoreVersionTool.ts +100 -0
  180. package/src/mcp/builtin/globals/updateTool.ts +50 -53
  181. package/src/mcp/builtin/validateEntityData.ts +132 -0
  182. package/src/mcp/builtinTools.ts +111 -41
  183. package/src/mcp/sanitizeMCPConfig.ts +116 -78
  184. package/src/stdio.ts +23 -8
  185. package/src/types.ts +77 -112
  186. package/src/utils/getPluginConfig.ts +1 -1
  187. package/src/utils/schemaConversion/getEntityInputSchema.ts +78 -0
  188. package/src/utils/schemaConversion/sanitizeEntitySchema.spec.ts +103 -0
  189. package/src/utils/schemaConversion/sanitizeEntitySchema.ts +529 -0
  190. package/src/utils/whereSchema.ts +24 -0
  191. package/dist/collection/getAccessField.d.ts +0 -12
  192. package/dist/collection/getAccessField.d.ts.map +0 -1
  193. package/dist/collection/getAccessField.js +0 -57
  194. package/dist/collection/getAccessField.js.map +0 -1
  195. package/dist/collection/index.d.ts +0 -6
  196. package/dist/collection/index.d.ts.map +0 -1
  197. package/dist/collection/index.js +0 -59
  198. package/dist/collection/index.js.map +0 -1
  199. package/dist/components/AccessField/index.client.d.ts +0 -10
  200. package/dist/components/AccessField/index.client.d.ts.map +0 -1
  201. package/dist/components/AccessField/index.client.js +0 -305
  202. package/dist/components/AccessField/index.client.js.map +0 -1
  203. package/dist/components/AccessField/index.css +0 -93
  204. package/dist/utils/schemaConversion/prepareCollectionSchema.d.ts +0 -7
  205. package/dist/utils/schemaConversion/prepareCollectionSchema.d.ts.map +0 -1
  206. package/dist/utils/schemaConversion/prepareCollectionSchema.js +0 -37
  207. package/dist/utils/schemaConversion/prepareCollectionSchema.js.map +0 -1
  208. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts +0 -13
  209. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts.map +0 -1
  210. package/dist/utils/schemaConversion/sanitizeJsonSchema.js +0 -56
  211. package/dist/utils/schemaConversion/sanitizeJsonSchema.js.map +0 -1
  212. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts +0 -20
  213. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts.map +0 -1
  214. package/dist/utils/schemaConversion/simplifyRelationshipFields.js +0 -56
  215. package/dist/utils/schemaConversion/simplifyRelationshipFields.js.map +0 -1
  216. package/dist/utils/schemaConversion/transformPointFields.d.ts +0 -3
  217. package/dist/utils/schemaConversion/transformPointFields.d.ts.map +0 -1
  218. package/dist/utils/schemaConversion/transformPointFields.js +0 -57
  219. package/dist/utils/schemaConversion/transformPointFields.js.map +0 -1
  220. package/src/collection/getAccessField.ts +0 -64
  221. package/src/collection/index.ts +0 -63
  222. package/src/components/AccessField/index.client.tsx +0 -344
  223. package/src/components/AccessField/index.css +0 -93
  224. package/src/utils/schemaConversion/prepareCollectionSchema.ts +0 -39
  225. package/src/utils/schemaConversion/sanitizeJsonSchema.ts +0 -62
  226. package/src/utils/schemaConversion/simplifyRelationshipFields.ts +0 -70
  227. package/src/utils/schemaConversion/transformPointFields.ts +0 -56
@@ -1,59 +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
- };
56
- return pluginConfig.overrideApiKeyCollection ? pluginConfig.overrideApiKeyCollection(collection) : collection;
57
- };
58
-
59
- //# 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 }\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","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;IACF;IAEA,OAAOpB,aAAaqB,wBAAwB,GACxCrB,aAAaqB,wBAAwB,CAACpB,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,7 +0,0 @@
1
- import type { JsonSchemaType } from '../../types.js';
2
- /**
3
- * Sanitizes Payload's auto-generated collection JSON Schema so it can be safely
4
- * fed into the MCP server's `fromJsonSchema()` adapter (no zod intermediate step).
5
- */
6
- export declare const prepareCollectionSchema: (schema: JsonSchemaType) => JsonSchemaType;
7
- //# sourceMappingURL=prepareCollectionSchema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prepareCollectionSchema.d.ts","sourceRoot":"","sources":["../../../src/utils/schemaConversion/prepareCollectionSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAapD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAAI,QAAQ,cAAc,KAAG,cAqBhE,CAAA"}
@@ -1,37 +0,0 @@
1
- import { sanitizeJsonSchema } from './sanitizeJsonSchema.js';
2
- import { simplifyRelationshipFields } from './simplifyRelationshipFields.js';
3
- import { transformPointFieldsForMCP } from './transformPointFields.js';
4
- /**
5
- * Fields Payload manages automatically — clients should never be required to provide
6
- * them. Stripped from `required` and `properties` so they don't appear in tool
7
- * inputs.
8
- */ const PAYLOAD_MANAGED_FIELDS = new Set([
9
- '_status',
10
- 'createdAt',
11
- 'id',
12
- 'updatedAt'
13
- ]);
14
- /**
15
- * Sanitizes Payload's auto-generated collection JSON Schema so it can be safely
16
- * fed into the MCP server's `fromJsonSchema()` adapter (no zod intermediate step).
17
- */ export const prepareCollectionSchema = (schema)=>{
18
- // Clone to avoid mutating the original schema (used elsewhere for tool listing)
19
- const schemaClone = JSON.parse(JSON.stringify(schema));
20
- const sanitized = sanitizeJsonSchema(schemaClone);
21
- const pointTransformed = transformPointFieldsForMCP(sanitized);
22
- const simplified = simplifyRelationshipFields(pointTransformed);
23
- if (simplified.properties) {
24
- for (const field of PAYLOAD_MANAGED_FIELDS){
25
- delete simplified.properties[field];
26
- }
27
- }
28
- if (Array.isArray(simplified.required)) {
29
- simplified.required = simplified.required.filter((name)=>!PAYLOAD_MANAGED_FIELDS.has(name));
30
- if (simplified.required.length === 0) {
31
- delete simplified.required;
32
- }
33
- }
34
- return simplified;
35
- };
36
-
37
- //# sourceMappingURL=prepareCollectionSchema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/utils/schemaConversion/prepareCollectionSchema.ts"],"sourcesContent":["import type { JsonSchemaType } from '../../types.js'\n\nimport { sanitizeJsonSchema } from './sanitizeJsonSchema.js'\nimport { simplifyRelationshipFields } from './simplifyRelationshipFields.js'\nimport { transformPointFieldsForMCP } from './transformPointFields.js'\n\n/**\n * Fields Payload manages automatically — clients should never be required to provide\n * them. Stripped from `required` and `properties` so they don't appear in tool\n * inputs.\n */\nconst PAYLOAD_MANAGED_FIELDS = new Set(['_status', 'createdAt', 'id', 'updatedAt'])\n\n/**\n * Sanitizes Payload's auto-generated collection JSON Schema so it can be safely\n * fed into the MCP server's `fromJsonSchema()` adapter (no zod intermediate step).\n */\nexport const prepareCollectionSchema = (schema: JsonSchemaType): JsonSchemaType => {\n // Clone to avoid mutating the original schema (used elsewhere for tool listing)\n const schemaClone = JSON.parse(JSON.stringify(schema)) as JsonSchemaType\n\n const sanitized = sanitizeJsonSchema(schemaClone)\n const pointTransformed = transformPointFieldsForMCP(sanitized)\n const simplified = simplifyRelationshipFields(pointTransformed)\n\n if (simplified.properties) {\n for (const field of PAYLOAD_MANAGED_FIELDS) {\n delete simplified.properties[field]\n }\n }\n if (Array.isArray(simplified.required)) {\n simplified.required = simplified.required.filter((name) => !PAYLOAD_MANAGED_FIELDS.has(name))\n if (simplified.required.length === 0) {\n delete simplified.required\n }\n }\n\n return simplified\n}\n"],"names":["sanitizeJsonSchema","simplifyRelationshipFields","transformPointFieldsForMCP","PAYLOAD_MANAGED_FIELDS","Set","prepareCollectionSchema","schema","schemaClone","JSON","parse","stringify","sanitized","pointTransformed","simplified","properties","field","Array","isArray","required","filter","name","has","length"],"mappings":"AAEA,SAASA,kBAAkB,QAAQ,0BAAyB;AAC5D,SAASC,0BAA0B,QAAQ,kCAAiC;AAC5E,SAASC,0BAA0B,QAAQ,4BAA2B;AAEtE;;;;CAIC,GACD,MAAMC,yBAAyB,IAAIC,IAAI;IAAC;IAAW;IAAa;IAAM;CAAY;AAElF;;;CAGC,GACD,OAAO,MAAMC,0BAA0B,CAACC;IACtC,gFAAgF;IAChF,MAAMC,cAAcC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACJ;IAE9C,MAAMK,YAAYX,mBAAmBO;IACrC,MAAMK,mBAAmBV,2BAA2BS;IACpD,MAAME,aAAaZ,2BAA2BW;IAE9C,IAAIC,WAAWC,UAAU,EAAE;QACzB,KAAK,MAAMC,SAASZ,uBAAwB;YAC1C,OAAOU,WAAWC,UAAU,CAACC,MAAM;QACrC;IACF;IACA,IAAIC,MAAMC,OAAO,CAACJ,WAAWK,QAAQ,GAAG;QACtCL,WAAWK,QAAQ,GAAGL,WAAWK,QAAQ,CAACC,MAAM,CAAC,CAACC,OAAS,CAACjB,uBAAuBkB,GAAG,CAACD;QACvF,IAAIP,WAAWK,QAAQ,CAACI,MAAM,KAAK,GAAG;YACpC,OAAOT,WAAWK,QAAQ;QAC5B;IACF;IAEA,OAAOL;AACT,EAAC"}
@@ -1,13 +0,0 @@
1
- import type { JsonSchemaType } from '../../types.js';
2
- /**
3
- * Removes internal Payload properties (id, createdAt, updatedAt) from a
4
- * JSON Schema so they don't appear in the generated Zod validation schema.
5
- * Also strips `id` from the `required` array when present.
6
- *
7
- * Additionally normalizes nullable type arrays (e.g. `['array', 'null']` →
8
- * `'array'`) throughout the schema tree. Without this, `json-schema-to-zod`
9
- * emits a Zod union which the MCP SDK serialises back as `anyOf`, stripping
10
- * the concrete `type` from the output and breaking schema introspection.
11
- */
12
- export declare function sanitizeJsonSchema(schema: JsonSchemaType): JsonSchemaType;
13
- //# sourceMappingURL=sanitizeJsonSchema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sanitizeJsonSchema.d.ts","sourceRoot":"","sources":["../../../src/utils/schemaConversion/sanitizeJsonSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CA6BzE"}