@payloadcms/plugin-mcp 4.0.0-internal.5b1e7cd → 4.0.0-internal.a0ef1b8

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 (340) hide show
  1. package/bin.js +39 -0
  2. package/dist/@types/assets.d.js +2 -0
  3. package/dist/@types/assets.d.js.map +1 -0
  4. package/dist/collection/getAccessField.d.ts +12 -0
  5. package/dist/collection/getAccessField.d.ts.map +1 -0
  6. package/dist/collection/getAccessField.js +57 -0
  7. package/dist/collection/getAccessField.js.map +1 -0
  8. package/dist/collection/index.d.ts +6 -0
  9. package/dist/collection/index.d.ts.map +1 -0
  10. package/dist/collection/index.js +60 -0
  11. package/dist/collection/index.js.map +1 -0
  12. package/dist/components/AccessField/index.client.d.ts +10 -0
  13. package/dist/components/AccessField/index.client.d.ts.map +1 -0
  14. package/dist/components/AccessField/index.client.js +305 -0
  15. package/dist/components/AccessField/index.client.js.map +1 -0
  16. package/dist/components/AccessField/index.css +93 -0
  17. package/dist/defineTool.d.ts +26 -0
  18. package/dist/defineTool.d.ts.map +1 -0
  19. package/dist/defineTool.js +37 -0
  20. package/dist/defineTool.js.map +1 -0
  21. package/dist/endpoint/access.d.ts +10 -0
  22. package/dist/endpoint/access.d.ts.map +1 -0
  23. package/dist/endpoint/access.js +106 -0
  24. package/dist/endpoint/access.js.map +1 -0
  25. package/dist/endpoint/index.d.ts +3 -0
  26. package/dist/endpoint/index.d.ts.map +1 -0
  27. package/dist/endpoint/index.js +36 -0
  28. package/dist/endpoint/index.js.map +1 -0
  29. package/dist/exports/client.d.ts +2 -0
  30. package/dist/exports/client.d.ts.map +1 -0
  31. package/dist/exports/client.js +4 -0
  32. package/dist/exports/client.js.map +1 -0
  33. package/dist/index.d.ts +4 -7
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +44 -67
  36. package/dist/index.js.map +1 -1
  37. package/dist/mcp/buildMcpServer.d.ts +19 -0
  38. package/dist/mcp/buildMcpServer.d.ts.map +1 -0
  39. package/dist/mcp/buildMcpServer.js +170 -0
  40. package/dist/mcp/buildMcpServer.js.map +1 -0
  41. package/dist/mcp/builtin/collections/authTools.d.ts +7 -0
  42. package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -0
  43. package/dist/mcp/builtin/collections/authTools.js +250 -0
  44. package/dist/mcp/builtin/collections/authTools.js.map +1 -0
  45. package/dist/mcp/builtin/collections/createTool.d.ts +2 -0
  46. package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -0
  47. package/dist/mcp/builtin/collections/createTool.js +91 -0
  48. package/dist/mcp/builtin/collections/createTool.js.map +1 -0
  49. package/dist/mcp/builtin/collections/deleteTool.d.ts +2 -0
  50. package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -0
  51. package/dist/mcp/builtin/collections/deleteTool.js +117 -0
  52. package/dist/mcp/builtin/collections/deleteTool.js.map +1 -0
  53. package/dist/mcp/builtin/collections/findTool.d.ts +2 -0
  54. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -0
  55. package/dist/mcp/builtin/collections/findTool.js +159 -0
  56. package/dist/mcp/builtin/collections/findTool.js.map +1 -0
  57. package/dist/mcp/builtin/collections/updateTool.d.ts +2 -0
  58. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -0
  59. package/dist/mcp/builtin/collections/updateTool.js +191 -0
  60. package/dist/mcp/builtin/collections/updateTool.js.map +1 -0
  61. package/dist/mcp/builtin/globals/findTool.d.ts +2 -0
  62. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -0
  63. package/dist/mcp/builtin/globals/findTool.js +76 -0
  64. package/dist/mcp/builtin/globals/findTool.js.map +1 -0
  65. package/dist/mcp/builtin/globals/updateTool.d.ts +2 -0
  66. package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -0
  67. package/dist/mcp/builtin/globals/updateTool.js +96 -0
  68. package/dist/mcp/builtin/globals/updateTool.js.map +1 -0
  69. package/dist/mcp/builtinTools.d.ts +37 -0
  70. package/dist/mcp/builtinTools.d.ts.map +1 -0
  71. package/dist/mcp/builtinTools.js +64 -0
  72. package/dist/mcp/builtinTools.js.map +1 -0
  73. package/dist/mcp/sanitizeMCPConfig.d.ts +17 -0
  74. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -0
  75. package/dist/mcp/sanitizeMCPConfig.js +167 -0
  76. package/dist/mcp/sanitizeMCPConfig.js.map +1 -0
  77. package/dist/stdio.d.ts +8 -0
  78. package/dist/stdio.d.ts.map +1 -0
  79. package/dist/stdio.js +89 -0
  80. package/dist/stdio.js.map +1 -0
  81. package/dist/types.d.ts +262 -455
  82. package/dist/types.d.ts.map +1 -1
  83. package/dist/types.js +6 -1
  84. package/dist/types.js.map +1 -1
  85. package/dist/utils/camelCase.d.ts.map +1 -1
  86. package/dist/utils/getLogger.d.ts +10 -0
  87. package/dist/utils/getLogger.d.ts.map +1 -0
  88. package/dist/utils/getLogger.js +22 -0
  89. package/dist/utils/getLogger.js.map +1 -0
  90. package/dist/utils/getPluginConfig.d.ts +12 -0
  91. package/dist/utils/getPluginConfig.d.ts.map +1 -0
  92. package/dist/utils/getPluginConfig.js +15 -0
  93. package/dist/utils/getPluginConfig.js.map +1 -0
  94. package/dist/utils/localAPIDefaults.d.ts +20 -0
  95. package/dist/utils/localAPIDefaults.d.ts.map +1 -0
  96. package/dist/utils/localAPIDefaults.js +19 -0
  97. package/dist/utils/localAPIDefaults.js.map +1 -0
  98. package/dist/utils/resolveProjectRoot.d.ts +7 -0
  99. package/dist/utils/resolveProjectRoot.d.ts.map +1 -0
  100. package/dist/utils/resolveProjectRoot.js +15 -0
  101. package/dist/utils/resolveProjectRoot.js.map +1 -0
  102. package/dist/utils/schemaConversion/buildToolInput.d.ts +29 -0
  103. package/dist/utils/schemaConversion/buildToolInput.d.ts.map +1 -0
  104. package/dist/utils/schemaConversion/buildToolInput.js +51 -0
  105. package/dist/utils/schemaConversion/buildToolInput.js.map +1 -0
  106. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts +2 -2
  107. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts.map +1 -1
  108. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js.map +1 -1
  109. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts +15 -0
  110. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts.map +1 -0
  111. package/dist/utils/schemaConversion/sanitizeEntitySchema.js +464 -0
  112. package/dist/utils/schemaConversion/sanitizeEntitySchema.js.map +1 -0
  113. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js +158 -0
  114. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js.map +1 -0
  115. package/dist/utils/toStandardSchema.d.ts +5 -0
  116. package/dist/utils/toStandardSchema.d.ts.map +1 -0
  117. package/dist/utils/toStandardSchema.js +4 -0
  118. package/dist/utils/toStandardSchema.js.map +1 -0
  119. package/package.json +35 -10
  120. package/src/@types/assets.d.ts +3 -0
  121. package/src/collection/getAccessField.ts +64 -0
  122. package/src/collection/index.ts +64 -0
  123. package/src/components/AccessField/index.client.tsx +344 -0
  124. package/src/components/AccessField/index.css +93 -0
  125. package/src/defineTool.ts +44 -0
  126. package/src/endpoint/access.ts +132 -0
  127. package/src/endpoint/index.ts +35 -0
  128. package/src/exports/client.ts +2 -0
  129. package/src/index.ts +35 -85
  130. package/src/mcp/buildMcpServer.ts +229 -0
  131. package/src/mcp/builtin/collections/authTools.ts +233 -0
  132. package/src/mcp/builtin/collections/createTool.ts +116 -0
  133. package/src/mcp/builtin/collections/deleteTool.ts +123 -0
  134. package/src/mcp/builtin/collections/findTool.ts +187 -0
  135. package/src/mcp/builtin/collections/updateTool.ts +210 -0
  136. package/src/mcp/builtin/globals/findTool.ts +96 -0
  137. package/src/mcp/builtin/globals/updateTool.ts +120 -0
  138. package/src/mcp/builtinTools.ts +84 -0
  139. package/src/mcp/sanitizeMCPConfig.ts +239 -0
  140. package/src/stdio.ts +98 -0
  141. package/src/types.ts +295 -490
  142. package/src/utils/getLogger.ts +22 -0
  143. package/src/utils/getPluginConfig.ts +24 -0
  144. package/src/utils/localAPIDefaults.ts +22 -0
  145. package/src/utils/resolveProjectRoot.ts +17 -0
  146. package/src/utils/schemaConversion/buildToolInput.ts +68 -0
  147. package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +3 -3
  148. package/src/utils/schemaConversion/sanitizeEntitySchema.spec.ts +103 -0
  149. package/src/utils/schemaConversion/sanitizeEntitySchema.ts +529 -0
  150. package/src/utils/toStandardSchema.ts +9 -0
  151. package/dist/collections/createApiKeysCollection.d.ts +0 -7
  152. package/dist/collections/createApiKeysCollection.d.ts.map +0 -1
  153. package/dist/collections/createApiKeysCollection.js +0 -317
  154. package/dist/collections/createApiKeysCollection.js.map +0 -1
  155. package/dist/defaults.d.ts +0 -4
  156. package/dist/defaults.d.ts.map +0 -1
  157. package/dist/defaults.js +0 -5
  158. package/dist/defaults.js.map +0 -1
  159. package/dist/endpoints/mcp.d.ts +0 -4
  160. package/dist/endpoints/mcp.d.ts.map +0 -1
  161. package/dist/endpoints/mcp.js +0 -71
  162. package/dist/endpoints/mcp.js.map +0 -1
  163. package/dist/mcp/createRequest.d.ts +0 -3
  164. package/dist/mcp/createRequest.d.ts.map +0 -1
  165. package/dist/mcp/createRequest.js +0 -14
  166. package/dist/mcp/createRequest.js.map +0 -1
  167. package/dist/mcp/getMcpHandler.d.ts +0 -4
  168. package/dist/mcp/getMcpHandler.d.ts.map +0 -1
  169. package/dist/mcp/getMcpHandler.js +0 -231
  170. package/dist/mcp/getMcpHandler.js.map +0 -1
  171. package/dist/mcp/helpers/config.d.ts +0 -22
  172. package/dist/mcp/helpers/config.d.ts.map +0 -1
  173. package/dist/mcp/helpers/config.js +0 -153
  174. package/dist/mcp/helpers/config.js.map +0 -1
  175. package/dist/mcp/helpers/fields.d.ts +0 -19
  176. package/dist/mcp/helpers/fields.d.ts.map +0 -1
  177. package/dist/mcp/helpers/fields.js +0 -102
  178. package/dist/mcp/helpers/fields.js.map +0 -1
  179. package/dist/mcp/helpers/fileValidation.d.ts +0 -67
  180. package/dist/mcp/helpers/fileValidation.d.ts.map +0 -1
  181. package/dist/mcp/helpers/fileValidation.js +0 -267
  182. package/dist/mcp/helpers/fileValidation.js.map +0 -1
  183. package/dist/mcp/registerTool.d.ts +0 -6
  184. package/dist/mcp/registerTool.d.ts.map +0 -1
  185. package/dist/mcp/registerTool.js +0 -18
  186. package/dist/mcp/registerTool.js.map +0 -1
  187. package/dist/mcp/tools/auth/auth.d.ts +0 -4
  188. package/dist/mcp/tools/auth/auth.d.ts.map +0 -1
  189. package/dist/mcp/tools/auth/auth.js +0 -57
  190. package/dist/mcp/tools/auth/auth.js.map +0 -1
  191. package/dist/mcp/tools/auth/forgotPassword.d.ts +0 -4
  192. package/dist/mcp/tools/auth/forgotPassword.d.ts.map +0 -1
  193. package/dist/mcp/tools/auth/forgotPassword.js +0 -48
  194. package/dist/mcp/tools/auth/forgotPassword.js.map +0 -1
  195. package/dist/mcp/tools/auth/login.d.ts +0 -4
  196. package/dist/mcp/tools/auth/login.d.ts.map +0 -1
  197. package/dist/mcp/tools/auth/login.js +0 -51
  198. package/dist/mcp/tools/auth/login.js.map +0 -1
  199. package/dist/mcp/tools/auth/resetPassword.d.ts +0 -4
  200. package/dist/mcp/tools/auth/resetPassword.d.ts.map +0 -1
  201. package/dist/mcp/tools/auth/resetPassword.js +0 -49
  202. package/dist/mcp/tools/auth/resetPassword.js.map +0 -1
  203. package/dist/mcp/tools/auth/unlock.d.ts +0 -4
  204. package/dist/mcp/tools/auth/unlock.d.ts.map +0 -1
  205. package/dist/mcp/tools/auth/unlock.js +0 -48
  206. package/dist/mcp/tools/auth/unlock.js.map +0 -1
  207. package/dist/mcp/tools/auth/verify.d.ts +0 -4
  208. package/dist/mcp/tools/auth/verify.d.ts.map +0 -1
  209. package/dist/mcp/tools/auth/verify.js +0 -45
  210. package/dist/mcp/tools/auth/verify.js.map +0 -1
  211. package/dist/mcp/tools/collection/create.d.ts +0 -10
  212. package/dist/mcp/tools/collection/create.d.ts.map +0 -1
  213. package/dist/mcp/tools/collection/create.js +0 -139
  214. package/dist/mcp/tools/collection/create.js.map +0 -1
  215. package/dist/mcp/tools/collection/delete.d.ts +0 -10
  216. package/dist/mcp/tools/collection/delete.d.ts.map +0 -1
  217. package/dist/mcp/tools/collection/delete.js +0 -154
  218. package/dist/mcp/tools/collection/delete.js.map +0 -1
  219. package/dist/mcp/tools/collection/find.d.ts +0 -10
  220. package/dist/mcp/tools/collection/find.d.ts.map +0 -1
  221. package/dist/mcp/tools/collection/find.js +0 -165
  222. package/dist/mcp/tools/collection/find.js.map +0 -1
  223. package/dist/mcp/tools/collection/update.d.ts +0 -10
  224. package/dist/mcp/tools/collection/update.d.ts.map +0 -1
  225. package/dist/mcp/tools/collection/update.js +0 -209
  226. package/dist/mcp/tools/collection/update.js.map +0 -1
  227. package/dist/mcp/tools/config/find.d.ts +0 -10
  228. package/dist/mcp/tools/config/find.d.ts.map +0 -1
  229. package/dist/mcp/tools/config/find.js +0 -97
  230. package/dist/mcp/tools/config/find.js.map +0 -1
  231. package/dist/mcp/tools/config/update.d.ts +0 -10
  232. package/dist/mcp/tools/config/update.d.ts.map +0 -1
  233. package/dist/mcp/tools/config/update.js +0 -215
  234. package/dist/mcp/tools/config/update.js.map +0 -1
  235. package/dist/mcp/tools/global/find.d.ts +0 -5
  236. package/dist/mcp/tools/global/find.d.ts.map +0 -1
  237. package/dist/mcp/tools/global/find.js +0 -82
  238. package/dist/mcp/tools/global/find.js.map +0 -1
  239. package/dist/mcp/tools/global/update.d.ts +0 -6
  240. package/dist/mcp/tools/global/update.d.ts.map +0 -1
  241. package/dist/mcp/tools/global/update.js +0 -124
  242. package/dist/mcp/tools/global/update.js.map +0 -1
  243. package/dist/mcp/tools/job/create.d.ts +0 -10
  244. package/dist/mcp/tools/job/create.d.ts.map +0 -1
  245. package/dist/mcp/tools/job/create.js +0 -293
  246. package/dist/mcp/tools/job/create.js.map +0 -1
  247. package/dist/mcp/tools/job/run.d.ts +0 -10
  248. package/dist/mcp/tools/job/run.d.ts.map +0 -1
  249. package/dist/mcp/tools/job/run.js +0 -129
  250. package/dist/mcp/tools/job/run.js.map +0 -1
  251. package/dist/mcp/tools/job/update.d.ts +0 -11
  252. package/dist/mcp/tools/job/update.d.ts.map +0 -1
  253. package/dist/mcp/tools/job/update.js +0 -186
  254. package/dist/mcp/tools/job/update.js.map +0 -1
  255. package/dist/mcp/tools/resource/create.d.ts +0 -6
  256. package/dist/mcp/tools/resource/create.d.ts.map +0 -1
  257. package/dist/mcp/tools/resource/create.js +0 -124
  258. package/dist/mcp/tools/resource/create.js.map +0 -1
  259. package/dist/mcp/tools/resource/delete.d.ts +0 -5
  260. package/dist/mcp/tools/resource/delete.d.ts.map +0 -1
  261. package/dist/mcp/tools/resource/delete.js +0 -151
  262. package/dist/mcp/tools/resource/delete.js.map +0 -1
  263. package/dist/mcp/tools/resource/find.d.ts +0 -5
  264. package/dist/mcp/tools/resource/find.d.ts.map +0 -1
  265. package/dist/mcp/tools/resource/find.js +0 -170
  266. package/dist/mcp/tools/resource/find.js.map +0 -1
  267. package/dist/mcp/tools/resource/update.d.ts +0 -6
  268. package/dist/mcp/tools/resource/update.d.ts.map +0 -1
  269. package/dist/mcp/tools/resource/update.js +0 -256
  270. package/dist/mcp/tools/resource/update.js.map +0 -1
  271. package/dist/mcp/tools/schemas.d.ts +0 -457
  272. package/dist/mcp/tools/schemas.d.ts.map +0 -1
  273. package/dist/mcp/tools/schemas.js +0 -243
  274. package/dist/mcp/tools/schemas.js.map +0 -1
  275. package/dist/utils/adminEntitySettings.d.ts +0 -17
  276. package/dist/utils/adminEntitySettings.d.ts.map +0 -1
  277. package/dist/utils/adminEntitySettings.js +0 -41
  278. package/dist/utils/adminEntitySettings.js.map +0 -1
  279. package/dist/utils/createApiKeyFields.d.ts +0 -15
  280. package/dist/utils/createApiKeyFields.d.ts.map +0 -1
  281. package/dist/utils/createApiKeyFields.js +0 -57
  282. package/dist/utils/createApiKeyFields.js.map +0 -1
  283. package/dist/utils/getEnabledSlugs.d.ts +0 -13
  284. package/dist/utils/getEnabledSlugs.d.ts.map +0 -1
  285. package/dist/utils/getEnabledSlugs.js +0 -32
  286. package/dist/utils/getEnabledSlugs.js.map +0 -1
  287. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts +0 -3
  288. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts.map +0 -1
  289. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js +0 -43
  290. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js.map +0 -1
  291. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts +0 -13
  292. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts.map +0 -1
  293. package/dist/utils/schemaConversion/sanitizeJsonSchema.js +0 -56
  294. package/dist/utils/schemaConversion/sanitizeJsonSchema.js.map +0 -1
  295. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts +0 -20
  296. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts.map +0 -1
  297. package/dist/utils/schemaConversion/simplifyRelationshipFields.js +0 -53
  298. package/dist/utils/schemaConversion/simplifyRelationshipFields.js.map +0 -1
  299. package/dist/utils/schemaConversion/transformPointFields.d.ts +0 -3
  300. package/dist/utils/schemaConversion/transformPointFields.d.ts.map +0 -1
  301. package/dist/utils/schemaConversion/transformPointFields.js +0 -51
  302. package/dist/utils/schemaConversion/transformPointFields.js.map +0 -1
  303. package/src/collections/createApiKeysCollection.ts +0 -373
  304. package/src/defaults.ts +0 -3
  305. package/src/endpoints/mcp.ts +0 -91
  306. package/src/mcp/createRequest.ts +0 -13
  307. package/src/mcp/getMcpHandler.ts +0 -545
  308. package/src/mcp/helpers/config.ts +0 -213
  309. package/src/mcp/helpers/fields.ts +0 -154
  310. package/src/mcp/helpers/fileValidation.ts +0 -362
  311. package/src/mcp/registerTool.ts +0 -22
  312. package/src/mcp/tools/auth/auth.ts +0 -71
  313. package/src/mcp/tools/auth/forgotPassword.ts +0 -70
  314. package/src/mcp/tools/auth/login.ts +0 -72
  315. package/src/mcp/tools/auth/resetPassword.ts +0 -61
  316. package/src/mcp/tools/auth/unlock.ts +0 -64
  317. package/src/mcp/tools/auth/verify.ts +0 -57
  318. package/src/mcp/tools/collection/create.ts +0 -210
  319. package/src/mcp/tools/collection/delete.ts +0 -211
  320. package/src/mcp/tools/collection/find.ts +0 -224
  321. package/src/mcp/tools/collection/update.ts +0 -290
  322. package/src/mcp/tools/config/find.ts +0 -128
  323. package/src/mcp/tools/config/update.ts +0 -280
  324. package/src/mcp/tools/global/find.ts +0 -128
  325. package/src/mcp/tools/global/update.ts +0 -207
  326. package/src/mcp/tools/job/create.ts +0 -416
  327. package/src/mcp/tools/job/run.ts +0 -167
  328. package/src/mcp/tools/job/update.ts +0 -274
  329. package/src/mcp/tools/resource/create.ts +0 -211
  330. package/src/mcp/tools/resource/delete.ts +0 -218
  331. package/src/mcp/tools/resource/find.ts +0 -246
  332. package/src/mcp/tools/resource/update.ts +0 -383
  333. package/src/mcp/tools/schemas.ts +0 -520
  334. package/src/utils/adminEntitySettings.ts +0 -40
  335. package/src/utils/createApiKeyFields.ts +0 -72
  336. package/src/utils/getEnabledSlugs.ts +0 -42
  337. package/src/utils/schemaConversion/convertCollectionSchemaToZod.ts +0 -52
  338. package/src/utils/schemaConversion/sanitizeJsonSchema.ts +0 -62
  339. package/src/utils/schemaConversion/simplifyRelationshipFields.ts +0 -65
  340. package/src/utils/schemaConversion/transformPointFields.ts +0 -55
@@ -1,102 +0,0 @@
1
- /** Escapes a value for safe embedding inside a single-quoted TypeScript string literal. */ function escapeSingleQuotedString(value) {
2
- return value.replace(/\\/g, '\\\\').replace(/'/g, "\\'").replace(/\r/g, '\\r').replace(/\n/g, '\\n');
3
- }
4
- /**
5
- * Generates the TypeScript source string for a single field definition block.
6
- * Used when writing collection files to disk.
7
- */ export function generateFieldDefinitionString(field) {
8
- const lines = [];
9
- lines.push(` {`);
10
- lines.push(` name: '${escapeSingleQuotedString(field.name)}',`);
11
- lines.push(` type: '${escapeSingleQuotedString(field.type)}',`);
12
- if (field.required) {
13
- lines.push(` required: true,`);
14
- }
15
- if (field.description || field.position) {
16
- lines.push(` admin: {`);
17
- if (field.description) {
18
- lines.push(` description: '${escapeSingleQuotedString(field.description)}',`);
19
- }
20
- if (field.position) {
21
- lines.push(` position: '${escapeSingleQuotedString(field.position)}',`);
22
- }
23
- lines.push(` },`);
24
- }
25
- if (field.options && field.type === 'select') {
26
- lines.push(` options: [`);
27
- field.options.forEach((option)=>{
28
- lines.push(` { label: '${escapeSingleQuotedString(option.label)}', value: '${escapeSingleQuotedString(option.value)}' },`);
29
- });
30
- lines.push(` ],`);
31
- }
32
- lines.push(` },`);
33
- return lines.join('\n');
34
- }
35
- /**
36
- * Adds new fields to a collection file content
37
- */ export function addFieldsToCollection(content, newFields) {
38
- // Find the fields array closing bracket
39
- const fieldsRegex = /fields:\s*\[([\s\S]*?)\]\s*(?:,\s*)?\}/;
40
- const match = content.match(fieldsRegex);
41
- if (!match) {
42
- throw new Error('Could not find fields array in collection file');
43
- }
44
- const newFieldDefinitions = newFields.map(generateFieldDefinitionString).join('\n');
45
- // Add new fields before the closing bracket
46
- const existingFields = match[1] || '';
47
- const hasTrailingComma = existingFields.trim().endsWith(',');
48
- const separator = hasTrailingComma ? '\n' : ',\n';
49
- return content.replace(fieldsRegex, `fields: [${existingFields}${separator}${newFieldDefinitions}\n ],
50
- }`);
51
- }
52
- /**
53
- * Removes fields from a collection file content
54
- */ export function removeFieldsFromCollection(content, fieldNames) {
55
- let updatedContent = content;
56
- fieldNames.forEach((fieldName)=>{
57
- // Create regex to match the field definition
58
- const fieldRegex = new RegExp(`\\s*{[^}]*name:\\s*['"]${fieldName}['"][^}]*}[^}]*(?:},?|,?\\s*})`, 'gs');
59
- updatedContent = updatedContent.replace(fieldRegex, '');
60
- });
61
- // Clean up any double commas or trailing commas
62
- updatedContent = updatedContent.replace(/,\s*,/g, ',');
63
- updatedContent = updatedContent.replace(/,\s*\]/g, '\n ]');
64
- return updatedContent;
65
- }
66
- /**
67
- * Modifies existing fields in a collection file content
68
- */ export function modifyFieldsInCollection(content, modifications) {
69
- let updatedContent = content;
70
- modifications.forEach((mod)=>{
71
- const { changes, fieldName } = mod;
72
- // Find the field definition
73
- const fieldRegex = new RegExp(`({[^}]*name:\\s*['"]${fieldName}['"][^}]*})`, 'gs');
74
- const fieldMatch = updatedContent.match(fieldRegex);
75
- if (fieldMatch) {
76
- let fieldDef = fieldMatch[0];
77
- // Apply changes
78
- if (changes.type) {
79
- fieldDef = fieldDef.replace(/type:\s*'[^']*'/, `type: '${changes.type}'`);
80
- }
81
- if (changes.required !== undefined) {
82
- if (fieldDef.includes('required:')) {
83
- fieldDef = fieldDef.replace(/required:[^,]*/, `required: ${changes.required}`);
84
- } else {
85
- fieldDef = fieldDef.replace(/type:\s*'[^']*',/, `type: '${changes.type}',\n required: ${changes.required},`);
86
- }
87
- }
88
- if (changes.description) {
89
- const adminRegex = /admin:\s*\{[^}]*\}/;
90
- if (fieldDef.match(adminRegex)) {
91
- fieldDef = fieldDef.replace(/description:\s*'[^']*'/, `description: '${changes.description}'`);
92
- } else {
93
- fieldDef = fieldDef.replace(/\},?\s*$/, `,\n admin: {\n description: '${changes.description}',\n },\n }`);
94
- }
95
- }
96
- updatedContent = updatedContent.replace(fieldRegex, fieldDef);
97
- }
98
- });
99
- return updatedContent;
100
- }
101
-
102
- //# sourceMappingURL=fields.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/mcp/helpers/fields.ts"],"sourcesContent":["import type { FieldDefinition, FieldModification } from '../../types.js'\n\n/** Escapes a value for safe embedding inside a single-quoted TypeScript string literal. */\nfunction escapeSingleQuotedString(value: string): string {\n return value\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\r/g, '\\\\r')\n .replace(/\\n/g, '\\\\n')\n}\n\n/**\n * Generates the TypeScript source string for a single field definition block.\n * Used when writing collection files to disk.\n */\nexport function generateFieldDefinitionString(field: FieldDefinition): string {\n const lines: string[] = []\n lines.push(` {`)\n lines.push(` name: '${escapeSingleQuotedString(field.name)}',`)\n lines.push(` type: '${escapeSingleQuotedString(field.type)}',`)\n\n if (field.required) {\n lines.push(` required: true,`)\n }\n\n if (field.description || field.position) {\n lines.push(` admin: {`)\n if (field.description) {\n lines.push(` description: '${escapeSingleQuotedString(field.description)}',`)\n }\n if (field.position) {\n lines.push(` position: '${escapeSingleQuotedString(field.position)}',`)\n }\n lines.push(` },`)\n }\n\n if (field.options && field.type === 'select') {\n lines.push(` options: [`)\n field.options.forEach((option) => {\n lines.push(\n ` { label: '${escapeSingleQuotedString(option.label)}', value: '${escapeSingleQuotedString(option.value)}' },`,\n )\n })\n lines.push(` ],`)\n }\n\n lines.push(` },`)\n return lines.join('\\n')\n}\n\n/**\n * Adds new fields to a collection file content\n */\nexport function addFieldsToCollection(content: string, newFields: FieldDefinition[]): string {\n // Find the fields array closing bracket\n const fieldsRegex = /fields:\\s*\\[([\\s\\S]*?)\\]\\s*(?:,\\s*)?\\}/\n const match = content.match(fieldsRegex)\n\n if (!match) {\n throw new Error('Could not find fields array in collection file')\n }\n\n const newFieldDefinitions = newFields.map(generateFieldDefinitionString).join('\\n')\n\n // Add new fields before the closing bracket\n const existingFields = match[1] || ''\n const hasTrailingComma = existingFields.trim().endsWith(',')\n const separator = hasTrailingComma ? '\\n' : ',\\n'\n\n return content.replace(\n fieldsRegex,\n `fields: [${existingFields}${separator}${newFieldDefinitions}\\n ],\n}`,\n )\n}\n\n/**\n * Removes fields from a collection file content\n */\nexport function removeFieldsFromCollection(content: string, fieldNames: string[]): string {\n let updatedContent = content\n\n fieldNames.forEach((fieldName) => {\n // Create regex to match the field definition\n const fieldRegex = new RegExp(\n `\\\\s*{[^}]*name:\\\\s*['\"]${fieldName}['\"][^}]*}[^}]*(?:},?|,?\\\\s*})`,\n 'gs',\n )\n updatedContent = updatedContent.replace(fieldRegex, '')\n })\n\n // Clean up any double commas or trailing commas\n updatedContent = updatedContent.replace(/,\\s*,/g, ',')\n updatedContent = updatedContent.replace(/,\\s*\\]/g, '\\n ]')\n\n return updatedContent\n}\n\n/**\n * Modifies existing fields in a collection file content\n */\nexport function modifyFieldsInCollection(\n content: string,\n modifications: FieldModification[],\n): string {\n let updatedContent = content\n\n modifications.forEach((mod) => {\n const { changes, fieldName } = mod\n\n // Find the field definition\n const fieldRegex = new RegExp(`({[^}]*name:\\\\s*['\"]${fieldName}['\"][^}]*})`, 'gs')\n const fieldMatch = updatedContent.match(fieldRegex)\n\n if (fieldMatch) {\n let fieldDef = fieldMatch[0]\n\n // Apply changes\n if (changes.type) {\n fieldDef = fieldDef.replace(/type:\\s*'[^']*'/, `type: '${changes.type}'`)\n }\n\n if (changes.required !== undefined) {\n if (fieldDef.includes('required:')) {\n fieldDef = fieldDef.replace(/required:[^,]*/, `required: ${changes.required}`)\n } else {\n fieldDef = fieldDef.replace(\n /type:\\s*'[^']*',/,\n `type: '${changes.type}',\\n required: ${changes.required},`,\n )\n }\n }\n\n if (changes.description) {\n const adminRegex = /admin:\\s*\\{[^}]*\\}/\n if (fieldDef.match(adminRegex)) {\n fieldDef = fieldDef.replace(\n /description:\\s*'[^']*'/,\n `description: '${changes.description}'`,\n )\n } else {\n fieldDef = fieldDef.replace(\n /\\},?\\s*$/,\n `,\\n admin: {\\n description: '${changes.description}',\\n },\\n }`,\n )\n }\n }\n\n updatedContent = updatedContent.replace(fieldRegex, fieldDef)\n }\n })\n\n return updatedContent\n}\n"],"names":["escapeSingleQuotedString","value","replace","generateFieldDefinitionString","field","lines","push","name","type","required","description","position","options","forEach","option","label","join","addFieldsToCollection","content","newFields","fieldsRegex","match","Error","newFieldDefinitions","map","existingFields","hasTrailingComma","trim","endsWith","separator","removeFieldsFromCollection","fieldNames","updatedContent","fieldName","fieldRegex","RegExp","modifyFieldsInCollection","modifications","mod","changes","fieldMatch","fieldDef","undefined","includes","adminRegex"],"mappings":"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"}
@@ -1,67 +0,0 @@
1
- import type { CollectionConfig } from 'payload';
2
- export type ValidationType = 'collection' | 'task' | 'workflow';
3
- export interface ValidationResult<T = unknown> {
4
- config?: T;
5
- error?: string;
6
- success: boolean;
7
- }
8
- export interface TaskConfig {
9
- handler: (args: {
10
- input: Record<string, unknown>;
11
- job: Record<string, unknown>;
12
- tasks: Record<string, unknown>;
13
- }) => Record<string, unknown>;
14
- inputSchema?: Array<{
15
- label?: string;
16
- name: string;
17
- options?: Array<{
18
- label: string;
19
- value: string;
20
- }>;
21
- required?: boolean;
22
- type: string;
23
- }>;
24
- label?: string;
25
- outputSchema?: Array<{
26
- label?: string;
27
- name: string;
28
- options?: Array<{
29
- label: string;
30
- value: string;
31
- }>;
32
- required?: boolean;
33
- type: string;
34
- }>;
35
- retries?: number;
36
- slug: string;
37
- }
38
- export interface WorkflowConfig {
39
- handler: (args: {
40
- input: Record<string, unknown>;
41
- job: Record<string, unknown>;
42
- tasks: Record<string, unknown>;
43
- }) => void;
44
- inputSchema?: Array<{
45
- label?: string;
46
- name: string;
47
- options?: Array<{
48
- label: string;
49
- value: string;
50
- }>;
51
- required?: boolean;
52
- type: string;
53
- }>;
54
- label?: string;
55
- queue?: string;
56
- retries?: number;
57
- slug: string;
58
- }
59
- /**
60
- * Generic validation function for Payload configuration files
61
- * @param fileName - The name of the file (e.g., 'Users.ts', 'my-task.ts')
62
- * @param type - The type of validation to perform ('collection', 'task', or 'workflow')
63
- * @returns Object containing success status and any error messages
64
- */
65
- export declare const validatePayloadFile: <T = CollectionConfig | TaskConfig | WorkflowConfig>(fileName: string, type: ValidationType) => Promise<ValidationResult<T>>;
66
- export declare const validateCollectionFile: (fileName: string) => Promise<ValidationResult<CollectionConfig>>;
67
- //# sourceMappingURL=fileValidation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fileValidation.d.ts","sourceRoot":"","sources":["../../../src/mcp/helpers/fileValidation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAK/C,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,MAAM,GAAG,UAAU,CAAA;AAE/D,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,OAAO;IAC3C,MAAM,CAAC,EAAE,CAAC,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;CACjB;AAGD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,CAAC,IAAI,EAAE;QACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC9B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC/B,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QACjD,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,IAAI,EAAE,MAAM,CAAA;KACb,CAAC,CAAA;IACF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,KAAK,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QACjD,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,IAAI,EAAE,MAAM,CAAA;KACb,CAAC,CAAA;IACF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAGD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,CAAC,IAAI,EAAE;QACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC9B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC/B,KAAK,IAAI,CAAA;IACV,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QACjD,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,IAAI,EAAE,MAAM,CAAA;KACb,CAAC,CAAA;IACF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAU,CAAC,6DAC/B,MAAM,QACV,cAAc,KACnB,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAwE7B,CAAA;AAyND,eAAO,MAAM,sBAAsB,aACvB,MAAM,KACf,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAE5C,CAAA"}
@@ -1,267 +0,0 @@
1
- import { existsSync } from 'fs';
2
- import { join } from 'path';
3
- /**
4
- * Generic validation function for Payload configuration files
5
- * @param fileName - The name of the file (e.g., 'Users.ts', 'my-task.ts')
6
- * @param type - The type of validation to perform ('collection', 'task', or 'workflow')
7
- * @returns Object containing success status and any error messages
8
- */ export const validatePayloadFile = async (fileName, type)=>{
9
- try {
10
- const basePath = type === 'collection' ? 'collections' : type === 'task' ? 'tasks' : 'workflows';
11
- const fullPath = join(process.cwd(), 'src', basePath);
12
- const filePath = join(fullPath, fileName);
13
- // Check if file exists
14
- if (!existsSync(filePath)) {
15
- return {
16
- error: `${type} file does not exist: ${fileName}`,
17
- success: false
18
- };
19
- }
20
- // Clear require cache to ensure fresh import
21
- delete require.cache[filePath];
22
- // Use relative path for webpack compatibility
23
- const moduleName = fileName.replace('.ts', '');
24
- const relativePath = `../${basePath}/${moduleName}`;
25
- // Dynamic import with relative path
26
- const importedModule = await import(/* webpackIgnore: true */ relativePath);
27
- // Get the configuration based on type
28
- let config;
29
- if (type === 'collection') {
30
- config = getCollectionConfig(importedModule, moduleName);
31
- } else if (type === 'task') {
32
- config = getTaskConfig(importedModule);
33
- } else if (type === 'workflow') {
34
- config = getWorkflowConfig(importedModule);
35
- }
36
- if (!config) {
37
- return {
38
- error: `${type} file does not export a valid ${type} config`,
39
- success: false
40
- };
41
- }
42
- // Validate the configuration
43
- let validationResult;
44
- if (type === 'collection') {
45
- validationResult = validateCollectionConfig(config);
46
- } else if (type === 'task') {
47
- validationResult = validateTaskConfig(config);
48
- } else if (type === 'workflow') {
49
- validationResult = validateWorkflowConfig(config);
50
- } else {
51
- return {
52
- error: `Unknown validation type: ${type}`,
53
- success: false
54
- };
55
- }
56
- if (!validationResult.success) {
57
- return validationResult;
58
- }
59
- return {
60
- config,
61
- success: true
62
- };
63
- } catch (error) {
64
- const errorMessage = error instanceof Error ? error.message : 'Unknown error during validation';
65
- return {
66
- error: `Failed to validate ${type} file: ${errorMessage}`,
67
- success: false
68
- };
69
- }
70
- };
71
- /**
72
- * Extract collection configuration from module exports
73
- */ function getCollectionConfig(importedModule, moduleName) {
74
- if (importedModule.default) {
75
- return importedModule.default;
76
- }
77
- if (importedModule[moduleName]) {
78
- return importedModule[moduleName];
79
- }
80
- return undefined;
81
- }
82
- /**
83
- * Extract task configuration from module exports
84
- */ function getTaskConfig(importedModule) {
85
- // First check for default export
86
- if (importedModule.default) {
87
- return importedModule.default;
88
- }
89
- // Look for named exports ending with "Task"
90
- const exportNames = Object.keys(importedModule);
91
- const taskExport = exportNames.find((name)=>name.endsWith('Task'));
92
- if (taskExport) {
93
- return importedModule[taskExport];
94
- }
95
- return undefined;
96
- }
97
- /**
98
- * Extract workflow configuration from module exports
99
- */ function getWorkflowConfig(importedModule) {
100
- // First check for default export
101
- if (importedModule.default) {
102
- return importedModule.default;
103
- }
104
- // Look for named exports ending with "Workflow"
105
- const exportNames = Object.keys(importedModule);
106
- const workflowExport = exportNames.find((name)=>name.endsWith('Workflow'));
107
- if (workflowExport) {
108
- return importedModule[workflowExport];
109
- }
110
- return undefined;
111
- }
112
- /**
113
- * Validate collection configuration structure
114
- */ function validateCollectionConfig(config) {
115
- if (!config) {
116
- return {
117
- error: 'Collection config is not a valid object',
118
- success: false
119
- };
120
- }
121
- if (!config.slug) {
122
- return {
123
- error: 'Collection config must have a valid slug property',
124
- success: false
125
- };
126
- }
127
- // Validate each field has required properties
128
- if (config.fields) {
129
- for(let i = 0; i < config.fields.length; i++){
130
- const field = config.fields[i];
131
- if (!field || typeof field !== 'object') {
132
- return {
133
- error: `Field at index ${i} is not a valid object`,
134
- success: false
135
- };
136
- }
137
- // Check if field has type property
138
- if (!('type' in field) || !field.type) {
139
- return {
140
- error: `Field at index ${i} is missing a valid type property`,
141
- success: false
142
- };
143
- }
144
- }
145
- }
146
- return {
147
- config,
148
- success: true
149
- };
150
- }
151
- /**
152
- * Validates an array of schema fields (inputSchema / outputSchema).
153
- * Returns an error string on the first invalid field, or null if all fields are valid.
154
- */ function validateSchemaFields(fields, label) {
155
- if (!fields || !Array.isArray(fields)) {
156
- return null;
157
- }
158
- for(let i = 0; i < fields.length; i++){
159
- const field = fields[i];
160
- if (!field) {
161
- return `${label} field at index ${i} is not a valid object`;
162
- }
163
- if (!field.name) {
164
- return `${label} field at index ${i} must have a valid name property`;
165
- }
166
- if (!field.type) {
167
- return `${label} field at index ${i} must have a valid type property`;
168
- }
169
- }
170
- return null;
171
- }
172
- /**
173
- * Validate task configuration structure
174
- */ function validateTaskConfig(config) {
175
- if (!config) {
176
- return {
177
- error: 'Task config is not a valid object',
178
- success: false
179
- };
180
- }
181
- if (!config.slug) {
182
- return {
183
- error: 'Task config must have a valid slug property',
184
- success: false
185
- };
186
- }
187
- if (!config.handler) {
188
- return {
189
- error: 'Task config must have a valid handler function',
190
- success: false
191
- };
192
- }
193
- if (config.retries !== undefined && config.retries < 0) {
194
- return {
195
- error: 'Task config retries must be a non-negative number',
196
- success: false
197
- };
198
- }
199
- const inputError = validateSchemaFields(config.inputSchema, 'Input schema');
200
- if (inputError) {
201
- return {
202
- error: inputError,
203
- success: false
204
- };
205
- }
206
- const outputError = validateSchemaFields(config.outputSchema, 'Output schema');
207
- if (outputError) {
208
- return {
209
- error: outputError,
210
- success: false
211
- };
212
- }
213
- return {
214
- config,
215
- success: true
216
- };
217
- }
218
- /**
219
- * Validate workflow configuration structure
220
- */ function validateWorkflowConfig(config) {
221
- if (!config) {
222
- return {
223
- error: 'Workflow config is not a valid object',
224
- success: false
225
- };
226
- }
227
- if (!config.slug) {
228
- return {
229
- error: 'Workflow config must have a valid slug property',
230
- success: false
231
- };
232
- }
233
- if (!config.handler) {
234
- return {
235
- error: 'Workflow config must have a valid handler function',
236
- success: false
237
- };
238
- }
239
- if (config.queue !== undefined && typeof config.queue !== 'string') {
240
- return {
241
- error: 'Workflow config queue must be a string if provided',
242
- success: false
243
- };
244
- }
245
- if (config.retries !== undefined && config.retries < 0) {
246
- return {
247
- error: 'Workflow config retries must be a non-negative number',
248
- success: false
249
- };
250
- }
251
- const inputError = validateSchemaFields(config.inputSchema, 'Input schema');
252
- if (inputError) {
253
- return {
254
- error: inputError,
255
- success: false
256
- };
257
- }
258
- return {
259
- config,
260
- success: true
261
- };
262
- }
263
- export const validateCollectionFile = async (fileName)=>{
264
- return validatePayloadFile(fileName, 'collection');
265
- };
266
-
267
- //# sourceMappingURL=fileValidation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/mcp/helpers/fileValidation.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\n\nimport { existsSync } from 'fs'\nimport { join } from 'path'\n\nexport type ValidationType = 'collection' | 'task' | 'workflow'\n\nexport interface ValidationResult<T = unknown> {\n config?: T\n error?: string\n success: boolean\n}\n\n// Custom task config interface that matches what we're creating\nexport interface TaskConfig {\n handler: (args: {\n input: Record<string, unknown>\n job: Record<string, unknown>\n tasks: Record<string, unknown>\n }) => Record<string, unknown>\n inputSchema?: Array<{\n label?: string\n name: string\n options?: Array<{ label: string; value: string }>\n required?: boolean\n type: string\n }>\n label?: string\n outputSchema?: Array<{\n label?: string\n name: string\n options?: Array<{ label: string; value: string }>\n required?: boolean\n type: string\n }>\n retries?: number\n slug: string\n}\n\n// Custom workflow config interface that matches what we're creating\nexport interface WorkflowConfig {\n handler: (args: {\n input: Record<string, unknown>\n job: Record<string, unknown>\n tasks: Record<string, unknown>\n }) => void\n inputSchema?: Array<{\n label?: string\n name: string\n options?: Array<{ label: string; value: string }>\n required?: boolean\n type: string\n }>\n label?: string\n queue?: string\n retries?: number\n slug: string\n}\n\n/**\n * Generic validation function for Payload configuration files\n * @param fileName - The name of the file (e.g., 'Users.ts', 'my-task.ts')\n * @param type - The type of validation to perform ('collection', 'task', or 'workflow')\n * @returns Object containing success status and any error messages\n */\nexport const validatePayloadFile = async <T = CollectionConfig | TaskConfig | WorkflowConfig>(\n fileName: string,\n type: ValidationType,\n): Promise<ValidationResult<T>> => {\n try {\n const basePath = type === 'collection' ? 'collections' : type === 'task' ? 'tasks' : 'workflows'\n const fullPath = join(process.cwd(), 'src', basePath)\n const filePath = join(fullPath, fileName)\n\n // Check if file exists\n if (!existsSync(filePath)) {\n return {\n error: `${type} file does not exist: ${fileName}`,\n success: false,\n }\n }\n\n // Clear require cache to ensure fresh import\n delete require.cache[filePath]\n\n // Use relative path for webpack compatibility\n const moduleName = fileName.replace('.ts', '')\n const relativePath = `../${basePath}/${moduleName}`\n\n // Dynamic import with relative path\n const importedModule = await import(/* webpackIgnore: true */ relativePath)\n\n // Get the configuration based on type\n let config: T | undefined\n\n if (type === 'collection') {\n config = getCollectionConfig(importedModule, moduleName) as T\n } else if (type === 'task') {\n config = getTaskConfig(importedModule) as T\n } else if (type === 'workflow') {\n config = getWorkflowConfig(importedModule) as T\n }\n\n if (!config) {\n return {\n error: `${type} file does not export a valid ${type} config`,\n success: false,\n }\n }\n\n // Validate the configuration\n let validationResult: ValidationResult<unknown>\n if (type === 'collection') {\n validationResult = validateCollectionConfig(config as unknown as CollectionConfig)\n } else if (type === 'task') {\n validationResult = validateTaskConfig(config as unknown as TaskConfig)\n } else if (type === 'workflow') {\n validationResult = validateWorkflowConfig(config as unknown as WorkflowConfig)\n } else {\n return {\n error: `Unknown validation type: ${type}`,\n success: false,\n }\n }\n\n if (!validationResult.success) {\n return validationResult as ValidationResult<T>\n }\n\n return {\n config,\n success: true,\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error during validation'\n return {\n error: `Failed to validate ${type} file: ${errorMessage}`,\n success: false,\n }\n }\n}\n\n/**\n * Extract collection configuration from module exports\n */\nfunction getCollectionConfig(\n importedModule: Record<string, unknown>,\n moduleName: string,\n): CollectionConfig | undefined {\n if (importedModule.default) {\n return importedModule.default as CollectionConfig\n }\n\n if (importedModule[moduleName]) {\n return importedModule[moduleName] as CollectionConfig\n }\n\n return undefined\n}\n\n/**\n * Extract task configuration from module exports\n */\nfunction getTaskConfig(importedModule: Record<string, unknown>): TaskConfig | undefined {\n // First check for default export\n if (importedModule.default) {\n return importedModule.default as TaskConfig\n }\n\n // Look for named exports ending with \"Task\"\n const exportNames = Object.keys(importedModule)\n const taskExport = exportNames.find((name) => name.endsWith('Task'))\n\n if (taskExport) {\n return importedModule[taskExport] as TaskConfig\n }\n\n return undefined\n}\n\n/**\n * Extract workflow configuration from module exports\n */\nfunction getWorkflowConfig(importedModule: Record<string, unknown>): undefined | WorkflowConfig {\n // First check for default export\n if (importedModule.default) {\n return importedModule.default as WorkflowConfig\n }\n\n // Look for named exports ending with \"Workflow\"\n const exportNames = Object.keys(importedModule)\n const workflowExport = exportNames.find((name) => name.endsWith('Workflow'))\n\n if (workflowExport) {\n return importedModule[workflowExport] as WorkflowConfig\n }\n\n return undefined\n}\n\n/**\n * Validate collection configuration structure\n */\nfunction validateCollectionConfig(config: CollectionConfig): ValidationResult<CollectionConfig> {\n if (!config) {\n return {\n error: 'Collection config is not a valid object',\n success: false,\n }\n }\n\n if (!config.slug) {\n return {\n error: 'Collection config must have a valid slug property',\n success: false,\n }\n }\n\n // Validate each field has required properties\n if (config.fields) {\n for (let i = 0; i < config.fields.length; i++) {\n const field = config.fields[i]\n if (!field || typeof field !== 'object') {\n return {\n error: `Field at index ${i} is not a valid object`,\n success: false,\n }\n }\n\n // Check if field has type property\n if (!('type' in field) || !field.type) {\n return {\n error: `Field at index ${i} is missing a valid type property`,\n success: false,\n }\n }\n }\n }\n\n return { config, success: true }\n}\n\n/**\n * Validates an array of schema fields (inputSchema / outputSchema).\n * Returns an error string on the first invalid field, or null if all fields are valid.\n */\nfunction validateSchemaFields(fields: TaskConfig['inputSchema'], label: string): null | string {\n if (!fields || !Array.isArray(fields)) {\n return null\n }\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]\n if (!field) {\n return `${label} field at index ${i} is not a valid object`\n }\n if (!field.name) {\n return `${label} field at index ${i} must have a valid name property`\n }\n if (!field.type) {\n return `${label} field at index ${i} must have a valid type property`\n }\n }\n return null\n}\n\n/**\n * Validate task configuration structure\n */\nfunction validateTaskConfig(config: TaskConfig): ValidationResult<TaskConfig> {\n if (!config) {\n return {\n error: 'Task config is not a valid object',\n success: false,\n }\n }\n\n if (!config.slug) {\n return {\n error: 'Task config must have a valid slug property',\n success: false,\n }\n }\n\n if (!config.handler) {\n return {\n error: 'Task config must have a valid handler function',\n success: false,\n }\n }\n\n if (config.retries !== undefined && config.retries < 0) {\n return {\n error: 'Task config retries must be a non-negative number',\n success: false,\n }\n }\n\n const inputError = validateSchemaFields(config.inputSchema, 'Input schema')\n if (inputError) {\n return { error: inputError, success: false }\n }\n\n const outputError = validateSchemaFields(config.outputSchema, 'Output schema')\n if (outputError) {\n return { error: outputError, success: false }\n }\n\n return { config, success: true }\n}\n\n/**\n * Validate workflow configuration structure\n */\nfunction validateWorkflowConfig(config: WorkflowConfig): ValidationResult<WorkflowConfig> {\n if (!config) {\n return {\n error: 'Workflow config is not a valid object',\n success: false,\n }\n }\n\n if (!config.slug) {\n return {\n error: 'Workflow config must have a valid slug property',\n success: false,\n }\n }\n\n if (!config.handler) {\n return {\n error: 'Workflow config must have a valid handler function',\n success: false,\n }\n }\n\n if (config.queue !== undefined && typeof config.queue !== 'string') {\n return {\n error: 'Workflow config queue must be a string if provided',\n success: false,\n }\n }\n\n if (config.retries !== undefined && config.retries < 0) {\n return {\n error: 'Workflow config retries must be a non-negative number',\n success: false,\n }\n }\n\n const inputError = validateSchemaFields(config.inputSchema, 'Input schema')\n if (inputError) {\n return { error: inputError, success: false }\n }\n\n return { config, success: true }\n}\n\nexport const validateCollectionFile = async (\n fileName: string,\n): Promise<ValidationResult<CollectionConfig>> => {\n return validatePayloadFile<CollectionConfig>(fileName, 'collection')\n}\n"],"names":["existsSync","join","validatePayloadFile","fileName","type","basePath","fullPath","process","cwd","filePath","error","success","require","cache","moduleName","replace","relativePath","importedModule","config","getCollectionConfig","getTaskConfig","getWorkflowConfig","validationResult","validateCollectionConfig","validateTaskConfig","validateWorkflowConfig","errorMessage","Error","message","default","undefined","exportNames","Object","keys","taskExport","find","name","endsWith","workflowExport","slug","fields","i","length","field","validateSchemaFields","label","Array","isArray","handler","retries","inputError","inputSchema","outputError","outputSchema","queue","validateCollectionFile"],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export declare const registerTool: (isEnabled: boolean | undefined, toolType: string, registrationFn: () => void, payload: {
2
- logger: {
3
- info: (message: string) => void;
4
- };
5
- }, useVerboseLogs: boolean) => void;
6
- //# sourceMappingURL=registerTool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registerTool.d.ts","sourceRoot":"","sources":["../../src/mcp/registerTool.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,cACZ,OAAO,GAAG,SAAS,YACpB,MAAM,kBACA,MAAM,IAAI,WACjB;IAAE,MAAM,EAAE;QAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAA;CAAE,kBACxC,OAAO,SAgBxB,CAAA"}
@@ -1,18 +0,0 @@
1
- export const registerTool = (isEnabled, toolType, registrationFn, payload, useVerboseLogs)=>{
2
- if (isEnabled) {
3
- try {
4
- registrationFn();
5
- if (useVerboseLogs) {
6
- payload.logger.info(`[payload-mcp] ✅ Tool: ${toolType} Registered.`);
7
- }
8
- } catch (error) {
9
- // Log the error and re-throw
10
- payload.logger.info(`[payload-mcp] ❌ Tool: ${toolType} Failed to register.`);
11
- throw error;
12
- }
13
- } else if (useVerboseLogs) {
14
- payload.logger.info(`[payload-mcp] ⏭️ Tool: ${toolType} Skipped.`);
15
- }
16
- };
17
-
18
- //# sourceMappingURL=registerTool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/mcp/registerTool.ts"],"sourcesContent":["export const registerTool = (\n isEnabled: boolean | undefined,\n toolType: string,\n registrationFn: () => void,\n payload: { logger: { info: (message: string) => void } },\n useVerboseLogs: boolean,\n) => {\n if (isEnabled) {\n try {\n registrationFn()\n if (useVerboseLogs) {\n payload.logger.info(`[payload-mcp] ✅ Tool: ${toolType} Registered.`)\n }\n } catch (error) {\n // Log the error and re-throw\n payload.logger.info(`[payload-mcp] ❌ Tool: ${toolType} Failed to register.`)\n throw error\n }\n } else if (useVerboseLogs) {\n payload.logger.info(`[payload-mcp] ⏭️ Tool: ${toolType} Skipped.`)\n }\n}\n"],"names":["registerTool","isEnabled","toolType","registrationFn","payload","useVerboseLogs","logger","info","error"],"mappings":"AAAA,OAAO,MAAMA,eAAe,CAC1BC,WACAC,UACAC,gBACAC,SACAC;IAEA,IAAIJ,WAAW;QACb,IAAI;YACFE;YACA,IAAIE,gBAAgB;gBAClBD,QAAQE,MAAM,CAACC,IAAI,CAAC,CAAC,sBAAsB,EAAEL,SAAS,YAAY,CAAC;YACrE;QACF,EAAE,OAAOM,OAAO;YACd,6BAA6B;YAC7BJ,QAAQE,MAAM,CAACC,IAAI,CAAC,CAAC,sBAAsB,EAAEL,SAAS,oBAAoB,CAAC;YAC3E,MAAMM;QACR;IACF,OAAO,IAAIH,gBAAgB;QACzBD,QAAQE,MAAM,CAACC,IAAI,CAAC,CAAC,uBAAuB,EAAEL,SAAS,SAAS,CAAC;IACnE;AACF,EAAC"}
@@ -1,4 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import type { PayloadRequest } from 'payload';
3
- export declare const authTool: (server: McpServer, req: PayloadRequest, verboseLogs: boolean) => void;
4
- //# sourceMappingURL=auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/auth/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,eAAO,MAAM,QAAQ,WAAY,SAAS,OAAO,cAAc,eAAe,OAAO,SAiEpF,CAAA"}
@@ -1,57 +0,0 @@
1
- import { toolSchemas } from '../schemas.js';
2
- export const authTool = (server, req, verboseLogs)=>{
3
- const tool = async (headers)=>{
4
- const payload = req.payload;
5
- if (verboseLogs) {
6
- payload.logger.info('[payload-mcp] Checking authentication status');
7
- }
8
- try {
9
- // Parse custom headers if provided, otherwise use empty headers
10
- let authHeaders = new Headers();
11
- if (headers) {
12
- try {
13
- const parsedHeaders = JSON.parse(headers);
14
- authHeaders = new Headers(parsedHeaders);
15
- if (verboseLogs) {
16
- payload.logger.info(`[payload-mcp] Using custom headers: ${headers}`);
17
- }
18
- } catch (_ignore) {
19
- payload.logger.warn(`[payload-mcp] Invalid headers JSON: ${headers}, using empty headers`);
20
- }
21
- }
22
- const result = await payload.auth({
23
- headers: authHeaders
24
- });
25
- if (verboseLogs) {
26
- payload.logger.info('[payload-mcp] Authentication check completed successfully');
27
- }
28
- return {
29
- content: [
30
- {
31
- type: 'text',
32
- text: `# Authentication Status\n\n\`\`\`json\n${JSON.stringify(result)}\n\`\`\``
33
- }
34
- ]
35
- };
36
- } catch (error) {
37
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
38
- payload.logger.error(`[payload-mcp] Error checking authentication: ${errorMessage}`);
39
- return {
40
- content: [
41
- {
42
- type: 'text',
43
- text: `❌ **Error checking authentication**: ${errorMessage}`
44
- }
45
- ]
46
- };
47
- }
48
- };
49
- server.registerTool('auth', {
50
- description: toolSchemas.auth.description,
51
- inputSchema: toolSchemas.auth.parameters.shape
52
- }, async ({ headers })=>{
53
- return await tool(headers);
54
- });
55
- };
56
-
57
- //# sourceMappingURL=auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/mcp/tools/auth/auth.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { PayloadRequest } from 'payload'\n\nimport { toolSchemas } from '../schemas.js'\n\nexport const authTool = (server: McpServer, req: PayloadRequest, verboseLogs: boolean) => {\n const tool = async (headers?: string) => {\n const payload = req.payload\n\n if (verboseLogs) {\n payload.logger.info('[payload-mcp] Checking authentication status')\n }\n\n try {\n // Parse custom headers if provided, otherwise use empty headers\n let authHeaders = new Headers()\n\n if (headers) {\n try {\n const parsedHeaders = JSON.parse(headers)\n authHeaders = new Headers(parsedHeaders)\n if (verboseLogs) {\n payload.logger.info(`[payload-mcp] Using custom headers: ${headers}`)\n }\n } catch (_ignore) {\n payload.logger.warn(`[payload-mcp] Invalid headers JSON: ${headers}, using empty headers`)\n }\n }\n\n const result = await payload.auth({\n headers: authHeaders,\n })\n\n if (verboseLogs) {\n payload.logger.info('[payload-mcp] Authentication check completed successfully')\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `# Authentication Status\\n\\n\\`\\`\\`json\\n${JSON.stringify(result)}\\n\\`\\`\\``,\n },\n ],\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n payload.logger.error(`[payload-mcp] Error checking authentication: ${errorMessage}`)\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `❌ **Error checking authentication**: ${errorMessage}`,\n },\n ],\n }\n }\n }\n\n server.registerTool(\n 'auth',\n {\n description: toolSchemas.auth.description,\n inputSchema: toolSchemas.auth.parameters.shape,\n },\n async ({ headers }) => {\n return await tool(headers)\n },\n )\n}\n"],"names":["toolSchemas","authTool","server","req","verboseLogs","tool","headers","payload","logger","info","authHeaders","Headers","parsedHeaders","JSON","parse","_ignore","warn","result","auth","content","type","text","stringify","error","errorMessage","Error","message","registerTool","description","inputSchema","parameters","shape"],"mappings":"AAGA,SAASA,WAAW,QAAQ,gBAAe;AAE3C,OAAO,MAAMC,WAAW,CAACC,QAAmBC,KAAqBC;IAC/D,MAAMC,OAAO,OAAOC;QAClB,MAAMC,UAAUJ,IAAII,OAAO;QAE3B,IAAIH,aAAa;YACfG,QAAQC,MAAM,CAACC,IAAI,CAAC;QACtB;QAEA,IAAI;YACF,gEAAgE;YAChE,IAAIC,cAAc,IAAIC;YAEtB,IAAIL,SAAS;gBACX,IAAI;oBACF,MAAMM,gBAAgBC,KAAKC,KAAK,CAACR;oBACjCI,cAAc,IAAIC,QAAQC;oBAC1B,IAAIR,aAAa;wBACfG,QAAQC,MAAM,CAACC,IAAI,CAAC,CAAC,oCAAoC,EAAEH,SAAS;oBACtE;gBACF,EAAE,OAAOS,SAAS;oBAChBR,QAAQC,MAAM,CAACQ,IAAI,CAAC,CAAC,oCAAoC,EAAEV,QAAQ,qBAAqB,CAAC;gBAC3F;YACF;YAEA,MAAMW,SAAS,MAAMV,QAAQW,IAAI,CAAC;gBAChCZ,SAASI;YACX;YAEA,IAAIN,aAAa;gBACfG,QAAQC,MAAM,CAACC,IAAI,CAAC;YACtB;YAEA,OAAO;gBACLU,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,uCAAuC,EAAER,KAAKS,SAAS,CAACL,QAAQ,QAAQ,CAAC;oBAClF;iBACD;YACH;QACF,EAAE,OAAOM,OAAO;YACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;YAC9DnB,QAAQC,MAAM,CAACe,KAAK,CAAC,CAAC,6CAA6C,EAAEC,cAAc;YAEnF,OAAO;gBACLL,SAAS;oBACP;wBACEC,MAAM;wBACNC,MAAM,CAAC,qCAAqC,EAAEG,cAAc;oBAC9D;iBACD;YACH;QACF;IACF;IAEAtB,OAAOyB,YAAY,CACjB,QACA;QACEC,aAAa5B,YAAYkB,IAAI,CAACU,WAAW;QACzCC,aAAa7B,YAAYkB,IAAI,CAACY,UAAU,CAACC,KAAK;IAChD,GACA,OAAO,EAAEzB,OAAO,EAAE;QAChB,OAAO,MAAMD,KAAKC;IACpB;AAEJ,EAAC"}
@@ -1,4 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import type { PayloadRequest } from 'payload';
3
- export declare const forgotPasswordTool: (server: McpServer, req: PayloadRequest, verboseLogs: boolean) => void;
4
- //# sourceMappingURL=forgotPassword.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"forgotPassword.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/auth/forgotPassword.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,eAAO,MAAM,kBAAkB,WACrB,SAAS,OACZ,cAAc,eACN,OAAO,SA6DrB,CAAA"}