@payloadcms/plugin-mcp 4.0.0-canary.3 → 4.0.0-canary.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (493) hide show
  1. package/LICENSE.md +1 -1
  2. package/bin.js +7 -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/defineTool.d.ts +8 -8
  8. package/dist/defineTool.d.ts.map +1 -1
  9. package/dist/endpoint/access.d.ts +12 -5
  10. package/dist/endpoint/access.d.ts.map +1 -1
  11. package/dist/endpoint/access.js +74 -103
  12. package/dist/endpoint/access.js.map +1 -1
  13. package/dist/endpoint/index.d.ts +1 -1
  14. package/dist/endpoint/index.d.ts.map +1 -1
  15. package/dist/endpoint/index.js +68 -17
  16. package/dist/endpoint/index.js.map +1 -1
  17. package/dist/exports/client.d.ts +1 -4
  18. package/dist/exports/client.d.ts.map +1 -1
  19. package/dist/exports/client.js +1 -4
  20. package/dist/exports/client.js.map +1 -1
  21. package/dist/exports/internal.d.ts +2 -0
  22. package/dist/exports/internal.d.ts.map +1 -0
  23. package/dist/exports/internal.js +3 -0
  24. package/dist/exports/internal.js.map +1 -0
  25. package/dist/index.d.ts +2 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +3 -56
  28. package/dist/index.js.map +1 -1
  29. package/dist/mcp/buildMcpServer.d.ts +5 -5
  30. package/dist/mcp/buildMcpServer.d.ts.map +1 -1
  31. package/dist/mcp/buildMcpServer.js +67 -33
  32. package/dist/mcp/buildMcpServer.js.map +1 -1
  33. package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -1
  34. package/dist/mcp/builtin/collections/authTools.js +79 -56
  35. package/dist/mcp/builtin/collections/authTools.js.map +1 -1
  36. package/dist/mcp/builtin/collections/countTool.d.ts +2 -0
  37. package/dist/mcp/builtin/collections/countTool.d.ts.map +1 -0
  38. package/dist/mcp/builtin/collections/countTool.js +63 -0
  39. package/dist/mcp/builtin/collections/countTool.js.map +1 -0
  40. package/dist/mcp/builtin/collections/countVersionsTool.d.ts +2 -0
  41. package/dist/mcp/builtin/collections/countVersionsTool.d.ts.map +1 -0
  42. package/dist/mcp/builtin/collections/countVersionsTool.js +60 -0
  43. package/dist/mcp/builtin/collections/countVersionsTool.js.map +1 -0
  44. package/dist/mcp/builtin/collections/createTool.d.ts +1 -1
  45. package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -1
  46. package/dist/mcp/builtin/collections/createTool.js +105 -53
  47. package/dist/mcp/builtin/collections/createTool.js.map +1 -1
  48. package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -1
  49. package/dist/mcp/builtin/collections/deleteTool.js +46 -44
  50. package/dist/mcp/builtin/collections/deleteTool.js.map +1 -1
  51. package/dist/mcp/builtin/collections/duplicateTool.d.ts +2 -0
  52. package/dist/mcp/builtin/collections/duplicateTool.d.ts.map +1 -0
  53. package/dist/mcp/builtin/collections/duplicateTool.js +90 -0
  54. package/dist/mcp/builtin/collections/duplicateTool.js.map +1 -0
  55. package/dist/mcp/builtin/collections/fileInput.d.ts +28 -0
  56. package/dist/mcp/builtin/collections/fileInput.d.ts.map +1 -0
  57. package/dist/mcp/builtin/collections/fileInput.js +123 -0
  58. package/dist/mcp/builtin/collections/fileInput.js.map +1 -0
  59. package/dist/mcp/builtin/collections/fileInput.spec.js +86 -0
  60. package/dist/mcp/builtin/collections/fileInput.spec.js.map +1 -0
  61. package/dist/mcp/builtin/collections/findDistinctTool.d.ts +2 -0
  62. package/dist/mcp/builtin/collections/findDistinctTool.d.ts.map +1 -0
  63. package/dist/mcp/builtin/collections/findDistinctTool.js +77 -0
  64. package/dist/mcp/builtin/collections/findDistinctTool.js.map +1 -0
  65. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -1
  66. package/dist/mcp/builtin/collections/findTool.js +30 -47
  67. package/dist/mcp/builtin/collections/findTool.js.map +1 -1
  68. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts +2 -0
  69. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts.map +1 -0
  70. package/dist/mcp/builtin/collections/findVersionByIDTool.js +74 -0
  71. package/dist/mcp/builtin/collections/findVersionByIDTool.js.map +1 -0
  72. package/dist/mcp/builtin/collections/findVersionsTool.d.ts +2 -0
  73. package/dist/mcp/builtin/collections/findVersionsTool.d.ts.map +1 -0
  74. package/dist/mcp/builtin/collections/findVersionsTool.js +84 -0
  75. package/dist/mcp/builtin/collections/findVersionsTool.js.map +1 -0
  76. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -1
  77. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +54 -9
  78. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -1
  79. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts +2 -0
  80. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts.map +1 -0
  81. package/dist/mcp/builtin/collections/restoreVersionTool.js +69 -0
  82. package/dist/mcp/builtin/collections/restoreVersionTool.js.map +1 -0
  83. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -1
  84. package/dist/mcp/builtin/collections/updateTool.js +68 -86
  85. package/dist/mcp/builtin/collections/updateTool.js.map +1 -1
  86. package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts +2 -0
  87. package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts.map +1 -0
  88. package/dist/mcp/builtin/collections/uploadInstructionsTool.js +55 -0
  89. package/dist/mcp/builtin/collections/uploadInstructionsTool.js.map +1 -0
  90. package/dist/mcp/builtin/formatEntityError.d.ts +16 -0
  91. package/dist/mcp/builtin/formatEntityError.d.ts.map +1 -0
  92. package/dist/mcp/builtin/formatEntityError.js +55 -0
  93. package/dist/mcp/builtin/formatEntityError.js.map +1 -0
  94. package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -1
  95. package/dist/mcp/builtin/getConfigInfoTool.js +23 -10
  96. package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -1
  97. package/dist/mcp/builtin/globals/countVersionsTool.d.ts +2 -0
  98. package/dist/mcp/builtin/globals/countVersionsTool.d.ts.map +1 -0
  99. package/dist/mcp/builtin/globals/countVersionsTool.js +60 -0
  100. package/dist/mcp/builtin/globals/countVersionsTool.js.map +1 -0
  101. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -1
  102. package/dist/mcp/builtin/globals/findTool.js +13 -17
  103. package/dist/mcp/builtin/globals/findTool.js.map +1 -1
  104. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts +2 -0
  105. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts.map +1 -0
  106. package/dist/mcp/builtin/globals/findVersionByIDTool.js +68 -0
  107. package/dist/mcp/builtin/globals/findVersionByIDTool.js.map +1 -0
  108. package/dist/mcp/builtin/globals/findVersionsTool.d.ts +2 -0
  109. package/dist/mcp/builtin/globals/findVersionsTool.d.ts.map +1 -0
  110. package/dist/mcp/builtin/globals/findVersionsTool.js +78 -0
  111. package/dist/mcp/builtin/globals/findVersionsTool.js.map +1 -0
  112. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts.map +1 -1
  113. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +31 -8
  114. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -1
  115. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts +2 -0
  116. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts.map +1 -0
  117. package/dist/mcp/builtin/globals/restoreVersionTool.js +70 -0
  118. package/dist/mcp/builtin/globals/restoreVersionTool.js.map +1 -0
  119. package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -1
  120. package/dist/mcp/builtin/globals/updateTool.js +29 -36
  121. package/dist/mcp/builtin/globals/updateTool.js.map +1 -1
  122. package/dist/mcp/builtinTools.d.ts +73 -2
  123. package/dist/mcp/builtinTools.d.ts.map +1 -1
  124. package/dist/mcp/builtinTools.js +73 -3
  125. package/dist/mcp/builtinTools.js.map +1 -1
  126. package/dist/mcp/sanitizeMCPConfig.d.ts +0 -1
  127. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -1
  128. package/dist/mcp/sanitizeMCPConfig.js +48 -17
  129. package/dist/mcp/sanitizeMCPConfig.js.map +1 -1
  130. package/dist/stdio.d.ts +3 -3
  131. package/dist/stdio.d.ts.map +1 -1
  132. package/dist/stdio.js +84 -46
  133. package/dist/stdio.js.map +1 -1
  134. package/dist/types.d.ts +95 -89
  135. package/dist/types.d.ts.map +1 -1
  136. package/dist/types.js +2 -4
  137. package/dist/types.js.map +1 -1
  138. package/dist/utils/camelCase.d.ts.map +1 -1
  139. package/dist/utils/getPluginConfig.d.ts +1 -1
  140. package/dist/utils/getPluginConfig.js +1 -1
  141. package/dist/utils/getPluginConfig.js.map +1 -1
  142. package/dist/utils/resolveProjectRoot.d.ts.map +1 -1
  143. package/dist/utils/toStandardSchema.d.ts.map +1 -1
  144. package/package.json +10 -18
  145. package/src/defaultAccess.ts +3 -0
  146. package/src/endpoint/access.ts +79 -112
  147. package/src/endpoint/index.ts +58 -16
  148. package/src/exports/client.ts +2 -4
  149. package/src/exports/internal.ts +1 -0
  150. package/src/index.ts +5 -62
  151. package/src/mcp/buildMcpServer.ts +85 -50
  152. package/src/mcp/builtin/collections/authTools.ts +77 -69
  153. package/src/mcp/builtin/collections/countTool.ts +61 -0
  154. package/src/mcp/builtin/collections/countVersionsTool.ts +60 -0
  155. package/src/mcp/builtin/collections/createTool.ts +112 -76
  156. package/src/mcp/builtin/collections/deleteTool.ts +38 -64
  157. package/src/mcp/builtin/collections/duplicateTool.ts +84 -0
  158. package/src/mcp/builtin/collections/fileInput.spec.ts +93 -0
  159. package/src/mcp/builtin/collections/fileInput.ts +169 -0
  160. package/src/mcp/builtin/collections/findDistinctTool.ts +67 -0
  161. package/src/mcp/builtin/collections/findTool.ts +27 -107
  162. package/src/mcp/builtin/collections/findVersionByIDTool.ts +66 -0
  163. package/src/mcp/builtin/collections/findVersionsTool.ts +83 -0
  164. package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +51 -6
  165. package/src/mcp/builtin/collections/restoreVersionTool.ts +65 -0
  166. package/src/mcp/builtin/collections/updateTool.ts +65 -100
  167. package/src/mcp/builtin/collections/uploadInstructionsTool.ts +64 -0
  168. package/src/mcp/builtin/formatEntityError.ts +77 -0
  169. package/src/mcp/builtin/getConfigInfoTool.ts +22 -5
  170. package/src/mcp/builtin/globals/countVersionsTool.ts +60 -0
  171. package/src/mcp/builtin/globals/findTool.ts +15 -51
  172. package/src/mcp/builtin/globals/findVersionByIDTool.ts +64 -0
  173. package/src/mcp/builtin/globals/findVersionsTool.ts +69 -0
  174. package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +34 -6
  175. package/src/mcp/builtin/globals/restoreVersionTool.ts +68 -0
  176. package/src/mcp/builtin/globals/updateTool.ts +40 -60
  177. package/src/mcp/builtinTools.ts +72 -6
  178. package/src/mcp/sanitizeMCPConfig.ts +36 -19
  179. package/src/stdio.ts +79 -46
  180. package/src/types.ts +103 -93
  181. package/src/utils/getPluginConfig.ts +1 -1
  182. package/dist/collection/getAccessField.d.ts +0 -12
  183. package/dist/collection/getAccessField.d.ts.map +0 -1
  184. package/dist/collection/getAccessField.js +0 -72
  185. package/dist/collection/getAccessField.js.map +0 -1
  186. package/dist/collection/index.d.ts +0 -6
  187. package/dist/collection/index.d.ts.map +0 -1
  188. package/dist/collection/index.js +0 -105
  189. package/dist/collection/index.js.map +0 -1
  190. package/dist/components/APIKeyField/index.client.d.ts +0 -9
  191. package/dist/components/APIKeyField/index.client.d.ts.map +0 -1
  192. package/dist/components/APIKeyField/index.client.js +0 -85
  193. package/dist/components/APIKeyField/index.client.js.map +0 -1
  194. package/dist/components/APIKeyField/index.css +0 -105
  195. package/dist/components/APIKeysEmptyState/index.client.d.ts +0 -4
  196. package/dist/components/APIKeysEmptyState/index.client.d.ts.map +0 -1
  197. package/dist/components/APIKeysEmptyState/index.client.js +0 -21
  198. package/dist/components/APIKeysEmptyState/index.client.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 -247
  202. package/dist/components/AccessField/index.client.js.map +0 -1
  203. package/dist/components/AccessField/index.css +0 -99
  204. package/dist/components/SettingsMenu/index.client.d.ts +0 -8
  205. package/dist/components/SettingsMenu/index.client.d.ts.map +0 -1
  206. package/dist/components/SettingsMenu/index.client.js +0 -24
  207. package/dist/components/SettingsMenu/index.client.js.map +0 -1
  208. package/dist/mcp/builtin/collections/formatCollectionError.d.ts +0 -9
  209. package/dist/mcp/builtin/collections/formatCollectionError.d.ts.map +0 -1
  210. package/dist/mcp/builtin/collections/formatCollectionError.js +0 -60
  211. package/dist/mcp/builtin/collections/formatCollectionError.js.map +0 -1
  212. package/dist/mcp/builtin/validateEntityData.d.ts +0 -14
  213. package/dist/mcp/builtin/validateEntityData.d.ts.map +0 -1
  214. package/dist/mcp/builtin/validateEntityData.js +0 -82
  215. package/dist/mcp/builtin/validateEntityData.js.map +0 -1
  216. package/dist/translations/index.d.ts +0 -11
  217. package/dist/translations/index.d.ts.map +0 -1
  218. package/dist/translations/index.js +0 -92
  219. package/dist/translations/index.js.map +0 -1
  220. package/dist/translations/languages/ar.d.ts +0 -31
  221. package/dist/translations/languages/ar.d.ts.map +0 -1
  222. package/dist/translations/languages/ar.js +0 -34
  223. package/dist/translations/languages/ar.js.map +0 -1
  224. package/dist/translations/languages/az.d.ts +0 -31
  225. package/dist/translations/languages/az.d.ts.map +0 -1
  226. package/dist/translations/languages/az.js +0 -34
  227. package/dist/translations/languages/az.js.map +0 -1
  228. package/dist/translations/languages/bg.d.ts +0 -31
  229. package/dist/translations/languages/bg.d.ts.map +0 -1
  230. package/dist/translations/languages/bg.js +0 -34
  231. package/dist/translations/languages/bg.js.map +0 -1
  232. package/dist/translations/languages/bnBd.d.ts +0 -31
  233. package/dist/translations/languages/bnBd.d.ts.map +0 -1
  234. package/dist/translations/languages/bnBd.js +0 -34
  235. package/dist/translations/languages/bnBd.js.map +0 -1
  236. package/dist/translations/languages/bnIn.d.ts +0 -31
  237. package/dist/translations/languages/bnIn.d.ts.map +0 -1
  238. package/dist/translations/languages/bnIn.js +0 -34
  239. package/dist/translations/languages/bnIn.js.map +0 -1
  240. package/dist/translations/languages/ca.d.ts +0 -31
  241. package/dist/translations/languages/ca.d.ts.map +0 -1
  242. package/dist/translations/languages/ca.js +0 -34
  243. package/dist/translations/languages/ca.js.map +0 -1
  244. package/dist/translations/languages/cs.d.ts +0 -31
  245. package/dist/translations/languages/cs.d.ts.map +0 -1
  246. package/dist/translations/languages/cs.js +0 -34
  247. package/dist/translations/languages/cs.js.map +0 -1
  248. package/dist/translations/languages/da.d.ts +0 -31
  249. package/dist/translations/languages/da.d.ts.map +0 -1
  250. package/dist/translations/languages/da.js +0 -34
  251. package/dist/translations/languages/da.js.map +0 -1
  252. package/dist/translations/languages/de.d.ts +0 -31
  253. package/dist/translations/languages/de.d.ts.map +0 -1
  254. package/dist/translations/languages/de.js +0 -34
  255. package/dist/translations/languages/de.js.map +0 -1
  256. package/dist/translations/languages/en.d.ts +0 -31
  257. package/dist/translations/languages/en.d.ts.map +0 -1
  258. package/dist/translations/languages/en.js +0 -34
  259. package/dist/translations/languages/en.js.map +0 -1
  260. package/dist/translations/languages/es.d.ts +0 -31
  261. package/dist/translations/languages/es.d.ts.map +0 -1
  262. package/dist/translations/languages/es.js +0 -34
  263. package/dist/translations/languages/es.js.map +0 -1
  264. package/dist/translations/languages/et.d.ts +0 -31
  265. package/dist/translations/languages/et.d.ts.map +0 -1
  266. package/dist/translations/languages/et.js +0 -34
  267. package/dist/translations/languages/et.js.map +0 -1
  268. package/dist/translations/languages/fa.d.ts +0 -31
  269. package/dist/translations/languages/fa.d.ts.map +0 -1
  270. package/dist/translations/languages/fa.js +0 -34
  271. package/dist/translations/languages/fa.js.map +0 -1
  272. package/dist/translations/languages/fr.d.ts +0 -31
  273. package/dist/translations/languages/fr.d.ts.map +0 -1
  274. package/dist/translations/languages/fr.js +0 -34
  275. package/dist/translations/languages/fr.js.map +0 -1
  276. package/dist/translations/languages/he.d.ts +0 -31
  277. package/dist/translations/languages/he.d.ts.map +0 -1
  278. package/dist/translations/languages/he.js +0 -34
  279. package/dist/translations/languages/he.js.map +0 -1
  280. package/dist/translations/languages/hr.d.ts +0 -31
  281. package/dist/translations/languages/hr.d.ts.map +0 -1
  282. package/dist/translations/languages/hr.js +0 -34
  283. package/dist/translations/languages/hr.js.map +0 -1
  284. package/dist/translations/languages/hu.d.ts +0 -31
  285. package/dist/translations/languages/hu.d.ts.map +0 -1
  286. package/dist/translations/languages/hu.js +0 -34
  287. package/dist/translations/languages/hu.js.map +0 -1
  288. package/dist/translations/languages/hy.d.ts +0 -31
  289. package/dist/translations/languages/hy.d.ts.map +0 -1
  290. package/dist/translations/languages/hy.js +0 -34
  291. package/dist/translations/languages/hy.js.map +0 -1
  292. package/dist/translations/languages/id.d.ts +0 -31
  293. package/dist/translations/languages/id.d.ts.map +0 -1
  294. package/dist/translations/languages/id.js +0 -34
  295. package/dist/translations/languages/id.js.map +0 -1
  296. package/dist/translations/languages/is.d.ts +0 -31
  297. package/dist/translations/languages/is.d.ts.map +0 -1
  298. package/dist/translations/languages/is.js +0 -34
  299. package/dist/translations/languages/is.js.map +0 -1
  300. package/dist/translations/languages/it.d.ts +0 -31
  301. package/dist/translations/languages/it.d.ts.map +0 -1
  302. package/dist/translations/languages/it.js +0 -34
  303. package/dist/translations/languages/it.js.map +0 -1
  304. package/dist/translations/languages/ja.d.ts +0 -31
  305. package/dist/translations/languages/ja.d.ts.map +0 -1
  306. package/dist/translations/languages/ja.js +0 -34
  307. package/dist/translations/languages/ja.js.map +0 -1
  308. package/dist/translations/languages/ko.d.ts +0 -31
  309. package/dist/translations/languages/ko.d.ts.map +0 -1
  310. package/dist/translations/languages/ko.js +0 -34
  311. package/dist/translations/languages/ko.js.map +0 -1
  312. package/dist/translations/languages/lt.d.ts +0 -31
  313. package/dist/translations/languages/lt.d.ts.map +0 -1
  314. package/dist/translations/languages/lt.js +0 -34
  315. package/dist/translations/languages/lt.js.map +0 -1
  316. package/dist/translations/languages/lv.d.ts +0 -31
  317. package/dist/translations/languages/lv.d.ts.map +0 -1
  318. package/dist/translations/languages/lv.js +0 -34
  319. package/dist/translations/languages/lv.js.map +0 -1
  320. package/dist/translations/languages/my.d.ts +0 -31
  321. package/dist/translations/languages/my.d.ts.map +0 -1
  322. package/dist/translations/languages/my.js +0 -34
  323. package/dist/translations/languages/my.js.map +0 -1
  324. package/dist/translations/languages/nb.d.ts +0 -31
  325. package/dist/translations/languages/nb.d.ts.map +0 -1
  326. package/dist/translations/languages/nb.js +0 -34
  327. package/dist/translations/languages/nb.js.map +0 -1
  328. package/dist/translations/languages/nl.d.ts +0 -31
  329. package/dist/translations/languages/nl.d.ts.map +0 -1
  330. package/dist/translations/languages/nl.js +0 -34
  331. package/dist/translations/languages/nl.js.map +0 -1
  332. package/dist/translations/languages/pl.d.ts +0 -31
  333. package/dist/translations/languages/pl.d.ts.map +0 -1
  334. package/dist/translations/languages/pl.js +0 -34
  335. package/dist/translations/languages/pl.js.map +0 -1
  336. package/dist/translations/languages/pt.d.ts +0 -31
  337. package/dist/translations/languages/pt.d.ts.map +0 -1
  338. package/dist/translations/languages/pt.js +0 -34
  339. package/dist/translations/languages/pt.js.map +0 -1
  340. package/dist/translations/languages/ro.d.ts +0 -31
  341. package/dist/translations/languages/ro.d.ts.map +0 -1
  342. package/dist/translations/languages/ro.js +0 -34
  343. package/dist/translations/languages/ro.js.map +0 -1
  344. package/dist/translations/languages/rs.d.ts +0 -31
  345. package/dist/translations/languages/rs.d.ts.map +0 -1
  346. package/dist/translations/languages/rs.js +0 -34
  347. package/dist/translations/languages/rs.js.map +0 -1
  348. package/dist/translations/languages/rsLatin.d.ts +0 -31
  349. package/dist/translations/languages/rsLatin.d.ts.map +0 -1
  350. package/dist/translations/languages/rsLatin.js +0 -34
  351. package/dist/translations/languages/rsLatin.js.map +0 -1
  352. package/dist/translations/languages/ru.d.ts +0 -31
  353. package/dist/translations/languages/ru.d.ts.map +0 -1
  354. package/dist/translations/languages/ru.js +0 -34
  355. package/dist/translations/languages/ru.js.map +0 -1
  356. package/dist/translations/languages/sk.d.ts +0 -31
  357. package/dist/translations/languages/sk.d.ts.map +0 -1
  358. package/dist/translations/languages/sk.js +0 -34
  359. package/dist/translations/languages/sk.js.map +0 -1
  360. package/dist/translations/languages/sl.d.ts +0 -31
  361. package/dist/translations/languages/sl.d.ts.map +0 -1
  362. package/dist/translations/languages/sl.js +0 -34
  363. package/dist/translations/languages/sl.js.map +0 -1
  364. package/dist/translations/languages/sv.d.ts +0 -31
  365. package/dist/translations/languages/sv.d.ts.map +0 -1
  366. package/dist/translations/languages/sv.js +0 -34
  367. package/dist/translations/languages/sv.js.map +0 -1
  368. package/dist/translations/languages/ta.d.ts +0 -31
  369. package/dist/translations/languages/ta.d.ts.map +0 -1
  370. package/dist/translations/languages/ta.js +0 -34
  371. package/dist/translations/languages/ta.js.map +0 -1
  372. package/dist/translations/languages/th.d.ts +0 -31
  373. package/dist/translations/languages/th.d.ts.map +0 -1
  374. package/dist/translations/languages/th.js +0 -34
  375. package/dist/translations/languages/th.js.map +0 -1
  376. package/dist/translations/languages/tr.d.ts +0 -31
  377. package/dist/translations/languages/tr.d.ts.map +0 -1
  378. package/dist/translations/languages/tr.js +0 -34
  379. package/dist/translations/languages/tr.js.map +0 -1
  380. package/dist/translations/languages/uk.d.ts +0 -31
  381. package/dist/translations/languages/uk.d.ts.map +0 -1
  382. package/dist/translations/languages/uk.js +0 -34
  383. package/dist/translations/languages/uk.js.map +0 -1
  384. package/dist/translations/languages/vi.d.ts +0 -31
  385. package/dist/translations/languages/vi.d.ts.map +0 -1
  386. package/dist/translations/languages/vi.js +0 -34
  387. package/dist/translations/languages/vi.js.map +0 -1
  388. package/dist/translations/languages/zh.d.ts +0 -31
  389. package/dist/translations/languages/zh.d.ts.map +0 -1
  390. package/dist/translations/languages/zh.js +0 -34
  391. package/dist/translations/languages/zh.js.map +0 -1
  392. package/dist/translations/languages/zhTw.d.ts +0 -31
  393. package/dist/translations/languages/zhTw.d.ts.map +0 -1
  394. package/dist/translations/languages/zhTw.js +0 -34
  395. package/dist/translations/languages/zhTw.js.map +0 -1
  396. package/dist/translations/types.d.ts +0 -32
  397. package/dist/translations/types.d.ts.map +0 -1
  398. package/dist/translations/types.js +0 -3
  399. package/dist/translations/types.js.map +0 -1
  400. package/dist/utils/getVirtualFieldNames.d.ts +0 -14
  401. package/dist/utils/getVirtualFieldNames.d.ts.map +0 -1
  402. package/dist/utils/getVirtualFieldNames.js +0 -35
  403. package/dist/utils/getVirtualFieldNames.js.map +0 -1
  404. package/dist/utils/localAPIDefaults.d.ts +0 -20
  405. package/dist/utils/localAPIDefaults.d.ts.map +0 -1
  406. package/dist/utils/localAPIDefaults.js +0 -19
  407. package/dist/utils/localAPIDefaults.js.map +0 -1
  408. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts +0 -11
  409. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts.map +0 -1
  410. package/dist/utils/schemaConversion/getEntityInputSchema.js +0 -34
  411. package/dist/utils/schemaConversion/getEntityInputSchema.js.map +0 -1
  412. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts +0 -7
  413. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts.map +0 -1
  414. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js +0 -20
  415. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js.map +0 -1
  416. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts +0 -15
  417. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts.map +0 -1
  418. package/dist/utils/schemaConversion/sanitizeEntitySchema.js +0 -464
  419. package/dist/utils/schemaConversion/sanitizeEntitySchema.js.map +0 -1
  420. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js +0 -158
  421. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js.map +0 -1
  422. package/dist/utils/transformPointDataToPayload.d.ts +0 -7
  423. package/dist/utils/transformPointDataToPayload.d.ts.map +0 -1
  424. package/dist/utils/transformPointDataToPayload.js +0 -28
  425. package/dist/utils/transformPointDataToPayload.js.map +0 -1
  426. package/dist/utils/whereSchema.d.ts +0 -9
  427. package/dist/utils/whereSchema.d.ts.map +0 -1
  428. package/dist/utils/whereSchema.js +0 -13
  429. package/dist/utils/whereSchema.js.map +0 -1
  430. package/src/collection/getAccessField.ts +0 -84
  431. package/src/collection/index.ts +0 -105
  432. package/src/components/APIKeyField/index.client.tsx +0 -68
  433. package/src/components/APIKeyField/index.css +0 -105
  434. package/src/components/APIKeysEmptyState/index.client.tsx +0 -33
  435. package/src/components/AccessField/index.client.tsx +0 -296
  436. package/src/components/AccessField/index.css +0 -99
  437. package/src/components/SettingsMenu/index.client.tsx +0 -30
  438. package/src/mcp/builtin/collections/formatCollectionError.ts +0 -84
  439. package/src/mcp/builtin/validateEntityData.ts +0 -132
  440. package/src/translations/index.ts +0 -105
  441. package/src/translations/languages/ar.ts +0 -38
  442. package/src/translations/languages/az.ts +0 -38
  443. package/src/translations/languages/bg.ts +0 -39
  444. package/src/translations/languages/bnBd.ts +0 -39
  445. package/src/translations/languages/bnIn.ts +0 -39
  446. package/src/translations/languages/ca.ts +0 -39
  447. package/src/translations/languages/cs.ts +0 -39
  448. package/src/translations/languages/da.ts +0 -38
  449. package/src/translations/languages/de.ts +0 -39
  450. package/src/translations/languages/en.ts +0 -39
  451. package/src/translations/languages/es.ts +0 -39
  452. package/src/translations/languages/et.ts +0 -38
  453. package/src/translations/languages/fa.ts +0 -39
  454. package/src/translations/languages/fr.ts +0 -39
  455. package/src/translations/languages/he.ts +0 -37
  456. package/src/translations/languages/hr.ts +0 -39
  457. package/src/translations/languages/hu.ts +0 -39
  458. package/src/translations/languages/hy.ts +0 -39
  459. package/src/translations/languages/id.ts +0 -39
  460. package/src/translations/languages/is.ts +0 -39
  461. package/src/translations/languages/it.ts +0 -39
  462. package/src/translations/languages/ja.ts +0 -39
  463. package/src/translations/languages/ko.ts +0 -39
  464. package/src/translations/languages/lt.ts +0 -39
  465. package/src/translations/languages/lv.ts +0 -38
  466. package/src/translations/languages/my.ts +0 -39
  467. package/src/translations/languages/nb.ts +0 -39
  468. package/src/translations/languages/nl.ts +0 -39
  469. package/src/translations/languages/pl.ts +0 -38
  470. package/src/translations/languages/pt.ts +0 -39
  471. package/src/translations/languages/ro.ts +0 -39
  472. package/src/translations/languages/rs.ts +0 -38
  473. package/src/translations/languages/rsLatin.ts +0 -38
  474. package/src/translations/languages/ru.ts +0 -39
  475. package/src/translations/languages/sk.ts +0 -39
  476. package/src/translations/languages/sl.ts +0 -38
  477. package/src/translations/languages/sv.ts +0 -39
  478. package/src/translations/languages/ta.ts +0 -39
  479. package/src/translations/languages/th.ts +0 -38
  480. package/src/translations/languages/tr.ts +0 -38
  481. package/src/translations/languages/uk.ts +0 -39
  482. package/src/translations/languages/vi.ts +0 -39
  483. package/src/translations/languages/zh.ts +0 -36
  484. package/src/translations/languages/zhTw.ts +0 -36
  485. package/src/translations/types.ts +0 -34
  486. package/src/utils/getVirtualFieldNames.ts +0 -53
  487. package/src/utils/localAPIDefaults.ts +0 -22
  488. package/src/utils/schemaConversion/getEntityInputSchema.ts +0 -78
  489. package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +0 -27
  490. package/src/utils/schemaConversion/sanitizeEntitySchema.spec.ts +0 -103
  491. package/src/utils/schemaConversion/sanitizeEntitySchema.ts +0 -529
  492. package/src/utils/transformPointDataToPayload.ts +0 -40
  493. package/src/utils/whereSchema.ts +0 -24
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/mcp/builtin/collections/findVersionByIDTool.ts"],"sourcesContent":["import { findVersionByIDInputSchema } from 'payload'\n\nimport { defaultAccess } from '../../../defaultAccess.js'\nimport { defineCollectionTool } from '../../../defineTool.js'\nimport { getLogger } from '../../../utils/getLogger.js'\n\nconst DEFAULT_DESCRIPTION =\n 'Find a specific document version in any version-enabled collection by passing the collection slug and version ID.'\n\nexport const findVersionByIDTool = defineCollectionTool({\n access: (args) =>\n defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.readVersions),\n annotations: {\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n readOnlyHint: true,\n title: 'Find Version By ID',\n },\n description: DEFAULT_DESCRIPTION,\n input: findVersionByIDInputSchema,\n}).handler(async ({ slug, authorizedMCP, input, req }) => {\n const payload = req.payload\n const logger = getLogger({ payload })\n const { id, depth, draft, fallbackLocale, locale, populate, select, trash } = input\n\n logger.info(`Finding version in collection: ${slug} with ID: ${id}`)\n\n try {\n const result = await payload.findVersionByID({\n id: String(id),\n collection: slug,\n depth,\n overrideAccess: authorizedMCP.overrideAccess,\n req,\n ...(draft !== undefined ? { draft } : {}),\n ...(fallbackLocale !== undefined ? { fallbackLocale } : {}),\n ...(locale ? { locale } : {}),\n ...(populate ? { populate } : {}),\n ...(select ? { select } : {}),\n ...(trash !== undefined ? { trash } : {}),\n })\n\n return {\n content: [\n {\n type: 'text',\n text: `Version \"${id}\" from collection \"${slug}\":\\n\\`\\`\\`json\\n${JSON.stringify(result)}\\n\\`\\`\\``,\n },\n ],\n doc: result as unknown as Record<string, unknown>,\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n logger.error(`Error finding version ${id} in ${slug}: ${errorMessage}`)\n return {\n content: [\n {\n type: 'text',\n text: `❌ **Error finding version \"${id}\" in collection \"${slug}\":** ${errorMessage}`,\n },\n ],\n isError: true,\n }\n }\n})\n"],"names":["findVersionByIDInputSchema","defaultAccess","defineCollectionTool","getLogger","DEFAULT_DESCRIPTION","findVersionByIDTool","access","args","Boolean","permissions","collections","slug","readVersions","annotations","destructiveHint","idempotentHint","openWorldHint","readOnlyHint","title","description","input","handler","authorizedMCP","req","payload","logger","id","depth","draft","fallbackLocale","locale","populate","select","trash","info","result","findVersionByID","String","collection","overrideAccess","undefined","content","type","text","JSON","stringify","doc","error","errorMessage","Error","message","isError"],"mappings":"AAAA,SAASA,0BAA0B,QAAQ,UAAS;AAEpD,SAASC,aAAa,QAAQ,4BAA2B;AACzD,SAASC,oBAAoB,QAAQ,yBAAwB;AAC7D,SAASC,SAAS,QAAQ,8BAA6B;AAEvD,MAAMC,sBACJ;AAEF,OAAO,MAAMC,sBAAsBH,qBAAqB;IACtDI,QAAQ,CAACC,OACPN,cAAcM,SAASC,QAAQD,KAAKE,WAAW,EAAEC,aAAa,CAACH,KAAKI,IAAI,CAAC,EAAEC;IAC7EC,aAAa;QACXC,iBAAiB;QACjBC,gBAAgB;QAChBC,eAAe;QACfC,cAAc;QACdC,OAAO;IACT;IACAC,aAAaf;IACbgB,OAAOpB;AACT,GAAGqB,OAAO,CAAC,OAAO,EAAEV,IAAI,EAAEW,aAAa,EAAEF,KAAK,EAAEG,GAAG,EAAE;IACnD,MAAMC,UAAUD,IAAIC,OAAO;IAC3B,MAAMC,SAAStB,UAAU;QAAEqB;IAAQ;IACnC,MAAM,EAAEE,EAAE,EAAEC,KAAK,EAAEC,KAAK,EAAEC,cAAc,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,KAAK,EAAE,GAAGb;IAE9EK,OAAOS,IAAI,CAAC,CAAC,+BAA+B,EAAEvB,KAAK,UAAU,EAAEe,IAAI;IAEnE,IAAI;QACF,MAAMS,SAAS,MAAMX,QAAQY,eAAe,CAAC;YAC3CV,IAAIW,OAAOX;YACXY,YAAY3B;YACZgB;YACAY,gBAAgBjB,cAAciB,cAAc;YAC5ChB;YACA,GAAIK,UAAUY,YAAY;gBAAEZ;YAAM,IAAI,CAAC,CAAC;YACxC,GAAIC,mBAAmBW,YAAY;gBAAEX;YAAe,IAAI,CAAC,CAAC;YAC1D,GAAIC,SAAS;gBAAEA;YAAO,IAAI,CAAC,CAAC;YAC5B,GAAIC,WAAW;gBAAEA;YAAS,IAAI,CAAC,CAAC;YAChC,GAAIC,SAAS;gBAAEA;YAAO,IAAI,CAAC,CAAC;YAC5B,GAAIC,UAAUO,YAAY;gBAAEP;YAAM,IAAI,CAAC,CAAC;QAC1C;QAEA,OAAO;YACLQ,SAAS;gBACP;oBACEC,MAAM;oBACNC,MAAM,CAAC,SAAS,EAAEjB,GAAG,mBAAmB,EAAEf,KAAK,gBAAgB,EAAEiC,KAAKC,SAAS,CAACV,QAAQ,QAAQ,CAAC;gBACnG;aACD;YACDW,KAAKX;QACP;IACF,EAAE,OAAOY,OAAO;QACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;QAC9DzB,OAAOsB,KAAK,CAAC,CAAC,sBAAsB,EAAErB,GAAG,IAAI,EAAEf,KAAK,EAAE,EAAEqC,cAAc;QACtE,OAAO;YACLP,SAAS;gBACP;oBACEC,MAAM;oBACNC,MAAM,CAAC,2BAA2B,EAAEjB,GAAG,iBAAiB,EAAEf,KAAK,KAAK,EAAEqC,cAAc;gBACtF;aACD;YACDG,SAAS;QACX;IACF;AACF,GAAE"}
@@ -0,0 +1,2 @@
1
+ export declare const findVersionsTool: import("../../../types.js").CollectionTool;
2
+ //# sourceMappingURL=findVersionsTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findVersionsTool.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/collections/findVersionsTool.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,gBAAgB,4CAyE3B,CAAA"}
@@ -0,0 +1,84 @@
1
+ import { findVersionsInputSchema } from 'payload';
2
+ import { defaultAccess } from '../../../defaultAccess.js';
3
+ import { defineCollectionTool } from '../../../defineTool.js';
4
+ import { getLogger } from '../../../utils/getLogger.js';
5
+ const DEFAULT_DESCRIPTION = 'Find document versions in any version-enabled collection by passing the collection slug and optional where clause.';
6
+ export const findVersionsTool = defineCollectionTool({
7
+ access: (args)=>defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.readVersions),
8
+ annotations: {
9
+ destructiveHint: false,
10
+ idempotentHint: true,
11
+ openWorldHint: false,
12
+ readOnlyHint: true,
13
+ title: 'Find Versions'
14
+ },
15
+ description: DEFAULT_DESCRIPTION,
16
+ input: findVersionsInputSchema
17
+ }).handler(async ({ slug, authorizedMCP, input, req })=>{
18
+ const payload = req.payload;
19
+ const logger = getLogger({
20
+ payload
21
+ });
22
+ const { depth, draft, fallbackLocale, limit, locale, page, pagination, populate, select, sort, trash, where } = input;
23
+ logger.info(`Finding versions in collection: ${slug}, limit: ${limit}, page: ${page}`);
24
+ try {
25
+ const result = await payload.findVersions({
26
+ collection: slug,
27
+ depth,
28
+ limit,
29
+ overrideAccess: authorizedMCP.overrideAccess,
30
+ page,
31
+ req,
32
+ ...draft !== undefined ? {
33
+ draft
34
+ } : {},
35
+ ...fallbackLocale !== undefined ? {
36
+ fallbackLocale
37
+ } : {},
38
+ ...locale ? {
39
+ locale
40
+ } : {},
41
+ ...pagination !== undefined ? {
42
+ pagination
43
+ } : {},
44
+ ...populate ? {
45
+ populate
46
+ } : {},
47
+ ...select ? {
48
+ select
49
+ } : {},
50
+ ...sort ? {
51
+ sort
52
+ } : {},
53
+ ...trash !== undefined ? {
54
+ trash
55
+ } : {},
56
+ ...where ? {
57
+ where
58
+ } : {}
59
+ });
60
+ return {
61
+ content: [
62
+ {
63
+ type: 'text',
64
+ text: `Versions for collection "${slug}":\n\`\`\`json\n${JSON.stringify(result)}\n\`\`\``
65
+ }
66
+ ],
67
+ doc: result
68
+ };
69
+ } catch (error) {
70
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
71
+ logger.error(`Error finding versions in ${slug}: ${errorMessage}`);
72
+ return {
73
+ content: [
74
+ {
75
+ type: 'text',
76
+ text: `❌ **Error finding versions in collection "${slug}":** ${errorMessage}`
77
+ }
78
+ ],
79
+ isError: true
80
+ };
81
+ }
82
+ });
83
+
84
+ //# sourceMappingURL=findVersionsTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/mcp/builtin/collections/findVersionsTool.ts"],"sourcesContent":["import { findVersionsInputSchema } from 'payload'\n\nimport { defaultAccess } from '../../../defaultAccess.js'\nimport { defineCollectionTool } from '../../../defineTool.js'\nimport { getLogger } from '../../../utils/getLogger.js'\n\nconst DEFAULT_DESCRIPTION =\n 'Find document versions in any version-enabled collection by passing the collection slug and optional where clause.'\n\nexport const findVersionsTool = defineCollectionTool({\n access: (args) =>\n defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.readVersions),\n annotations: {\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n readOnlyHint: true,\n title: 'Find Versions',\n },\n description: DEFAULT_DESCRIPTION,\n input: findVersionsInputSchema,\n}).handler(async ({ slug, authorizedMCP, input, req }) => {\n const payload = req.payload\n const logger = getLogger({ payload })\n const {\n depth,\n draft,\n fallbackLocale,\n limit,\n locale,\n page,\n pagination,\n populate,\n select,\n sort,\n trash,\n where,\n } = input\n\n logger.info(`Finding versions in collection: ${slug}, limit: ${limit}, page: ${page}`)\n\n try {\n const result = await payload.findVersions({\n collection: slug,\n depth,\n limit,\n overrideAccess: authorizedMCP.overrideAccess,\n page,\n req,\n ...(draft !== undefined ? { draft } : {}),\n ...(fallbackLocale !== undefined ? { fallbackLocale } : {}),\n ...(locale ? { locale } : {}),\n ...(pagination !== undefined ? { pagination } : {}),\n ...(populate ? { populate } : {}),\n ...(select ? { select } : {}),\n ...(sort ? { sort } : {}),\n ...(trash !== undefined ? { trash } : {}),\n ...(where ? { where } : {}),\n })\n\n return {\n content: [\n {\n type: 'text',\n text: `Versions for collection \"${slug}\":\\n\\`\\`\\`json\\n${JSON.stringify(result)}\\n\\`\\`\\``,\n },\n ],\n doc: result as unknown as Record<string, unknown>,\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n logger.error(`Error finding versions in ${slug}: ${errorMessage}`)\n return {\n content: [\n {\n type: 'text',\n text: `❌ **Error finding versions in collection \"${slug}\":** ${errorMessage}`,\n },\n ],\n isError: true,\n }\n }\n})\n"],"names":["findVersionsInputSchema","defaultAccess","defineCollectionTool","getLogger","DEFAULT_DESCRIPTION","findVersionsTool","access","args","Boolean","permissions","collections","slug","readVersions","annotations","destructiveHint","idempotentHint","openWorldHint","readOnlyHint","title","description","input","handler","authorizedMCP","req","payload","logger","depth","draft","fallbackLocale","limit","locale","page","pagination","populate","select","sort","trash","where","info","result","findVersions","collection","overrideAccess","undefined","content","type","text","JSON","stringify","doc","error","errorMessage","Error","message","isError"],"mappings":"AAAA,SAASA,uBAAuB,QAAQ,UAAS;AAEjD,SAASC,aAAa,QAAQ,4BAA2B;AACzD,SAASC,oBAAoB,QAAQ,yBAAwB;AAC7D,SAASC,SAAS,QAAQ,8BAA6B;AAEvD,MAAMC,sBACJ;AAEF,OAAO,MAAMC,mBAAmBH,qBAAqB;IACnDI,QAAQ,CAACC,OACPN,cAAcM,SAASC,QAAQD,KAAKE,WAAW,EAAEC,aAAa,CAACH,KAAKI,IAAI,CAAC,EAAEC;IAC7EC,aAAa;QACXC,iBAAiB;QACjBC,gBAAgB;QAChBC,eAAe;QACfC,cAAc;QACdC,OAAO;IACT;IACAC,aAAaf;IACbgB,OAAOpB;AACT,GAAGqB,OAAO,CAAC,OAAO,EAAEV,IAAI,EAAEW,aAAa,EAAEF,KAAK,EAAEG,GAAG,EAAE;IACnD,MAAMC,UAAUD,IAAIC,OAAO;IAC3B,MAAMC,SAAStB,UAAU;QAAEqB;IAAQ;IACnC,MAAM,EACJE,KAAK,EACLC,KAAK,EACLC,cAAc,EACdC,KAAK,EACLC,MAAM,EACNC,IAAI,EACJC,UAAU,EACVC,QAAQ,EACRC,MAAM,EACNC,IAAI,EACJC,KAAK,EACLC,KAAK,EACN,GAAGjB;IAEJK,OAAOa,IAAI,CAAC,CAAC,gCAAgC,EAAE3B,KAAK,SAAS,EAAEkB,MAAM,QAAQ,EAAEE,MAAM;IAErF,IAAI;QACF,MAAMQ,SAAS,MAAMf,QAAQgB,YAAY,CAAC;YACxCC,YAAY9B;YACZe;YACAG;YACAa,gBAAgBpB,cAAcoB,cAAc;YAC5CX;YACAR;YACA,GAAII,UAAUgB,YAAY;gBAAEhB;YAAM,IAAI,CAAC,CAAC;YACxC,GAAIC,mBAAmBe,YAAY;gBAAEf;YAAe,IAAI,CAAC,CAAC;YAC1D,GAAIE,SAAS;gBAAEA;YAAO,IAAI,CAAC,CAAC;YAC5B,GAAIE,eAAeW,YAAY;gBAAEX;YAAW,IAAI,CAAC,CAAC;YAClD,GAAIC,WAAW;gBAAEA;YAAS,IAAI,CAAC,CAAC;YAChC,GAAIC,SAAS;gBAAEA;YAAO,IAAI,CAAC,CAAC;YAC5B,GAAIC,OAAO;gBAAEA;YAAK,IAAI,CAAC,CAAC;YACxB,GAAIC,UAAUO,YAAY;gBAAEP;YAAM,IAAI,CAAC,CAAC;YACxC,GAAIC,QAAQ;gBAAEA;YAAM,IAAI,CAAC,CAAC;QAC5B;QAEA,OAAO;YACLO,SAAS;gBACP;oBACEC,MAAM;oBACNC,MAAM,CAAC,yBAAyB,EAAEnC,KAAK,gBAAgB,EAAEoC,KAAKC,SAAS,CAACT,QAAQ,QAAQ,CAAC;gBAC3F;aACD;YACDU,KAAKV;QACP;IACF,EAAE,OAAOW,OAAO;QACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;QAC9D5B,OAAOyB,KAAK,CAAC,CAAC,0BAA0B,EAAEvC,KAAK,EAAE,EAAEwC,cAAc;QACjE,OAAO;YACLP,SAAS;gBACP;oBACEC,MAAM;oBACNC,MAAM,CAAC,0CAA0C,EAAEnC,KAAK,KAAK,EAAEwC,cAAc;gBAC/E;aACD;YACDG,SAAS;QACX;IACF;AACF,GAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"getCollectionSchemaTool.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/collections/getCollectionSchemaTool.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uBAAuB,4CA+BlC,CAAA"}
1
+ {"version":3,"file":"getCollectionSchemaTool.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/collections/getCollectionSchemaTool.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,uBAAuB,4CA0ElC,CAAA"}
@@ -1,6 +1,11 @@
1
+ import { getAccessResults, getCollectionInputSchema, getCollectionSchemaInputSchema } from 'payload';
2
+ import { defaultAccess } from '../../../defaultAccess.js';
1
3
  import { defineCollectionTool } from '../../../defineTool.js';
2
- import { getCollectionInputSchema } from '../../../utils/schemaConversion/getEntityInputSchema.js';
3
4
  export const getCollectionSchemaTool = defineCollectionTool({
5
+ access: (args)=>{
6
+ const permissions = args.permissions?.collections?.[args.slug];
7
+ return defaultAccess(args) && Boolean(permissions?.create || permissions?.update);
8
+ },
4
9
  annotations: {
5
10
  destructiveHint: false,
6
11
  idempotentHint: true,
@@ -8,33 +13,73 @@ export const getCollectionSchemaTool = defineCollectionTool({
8
13
  readOnlyHint: true,
9
14
  title: 'Get Collection Schema'
10
15
  },
11
- description: 'Get the input schema for creating or updating documents in a collection.'
12
- }).handler(({ collectionSlug, req })=>{
13
- const inputSchema = getCollectionInputSchema({
14
- collectionSlug,
16
+ description: 'Get the input schema for creating or updating documents in a collection.',
17
+ input: getCollectionSchemaInputSchema
18
+ }).handler(async ({ slug, authorizedMCP, req })=>{
19
+ const permissions = authorizedMCP.overrideAccess ? null : (await getAccessResults({
15
20
  req
21
+ })).collections?.[slug];
22
+ if (!authorizedMCP.overrideAccess && !permissions?.create && !permissions?.update) {
23
+ return {
24
+ content: [
25
+ {
26
+ type: 'text',
27
+ text: `Error: MCP access to "getCollectionSchema" is not enabled for collection "${slug}"`
28
+ }
29
+ ],
30
+ isError: true
31
+ };
32
+ }
33
+ const inputSchema = getCollectionInputSchema({
34
+ collectionSlug: slug,
35
+ req,
36
+ ...permissions ? {
37
+ permissions
38
+ } : {}
16
39
  });
17
40
  if (!inputSchema) {
18
41
  return {
19
42
  content: [
20
43
  {
21
44
  type: 'text',
22
- text: `Error: Collection "${collectionSlug}" not found`
45
+ text: `Error: Collection "${slug}" not found`
23
46
  }
24
47
  ],
25
48
  isError: true
26
49
  };
27
50
  }
51
+ const uploadConfig = req.payload.collections[slug]?.config.upload;
52
+ const maxFileSize = req.payload.config.upload.limits?.fileSize;
53
+ const upload = uploadConfig ? {
54
+ enabled: true,
55
+ filesRequiredOnCreate: uploadConfig.filesRequiredOnCreate !== false,
56
+ mimeTypes: uploadConfig.mimeTypes ?? [
57
+ '*/*'
58
+ ],
59
+ sources: [
60
+ ...uploadConfig.pasteURL !== false ? [
61
+ 'externalURL'
62
+ ] : [],
63
+ 'base64',
64
+ 'uploadReference'
65
+ ],
66
+ ...typeof maxFileSize === 'number' && Number.isFinite(maxFileSize) ? {
67
+ maxFileSize
68
+ } : {}
69
+ } : {
70
+ enabled: false
71
+ };
28
72
  return {
29
73
  content: [
30
74
  {
31
75
  type: 'text',
32
- text: `Schema for collection "${collectionSlug}":\n\`\`\`json\n${JSON.stringify(inputSchema)}\n\`\`\``
76
+ text: `Schema for collection "${slug}":\n\`\`\`json\n${JSON.stringify(inputSchema)}\n\`\`\`\nUpload configuration:\n\`\`\`json\n${JSON.stringify(upload)}\n\`\`\``
33
77
  }
34
78
  ],
35
79
  structuredContent: {
36
- collectionSlug,
37
- schema: inputSchema
80
+ slug,
81
+ schema: inputSchema,
82
+ upload
38
83
  }
39
84
  };
40
85
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/mcp/builtin/collections/getCollectionSchemaTool.ts"],"sourcesContent":["import { defineCollectionTool } from '../../../defineTool.js'\nimport { getCollectionInputSchema } from '../../../utils/schemaConversion/getEntityInputSchema.js'\n\nexport const getCollectionSchemaTool = defineCollectionTool({\n annotations: {\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n readOnlyHint: true,\n title: 'Get Collection Schema',\n },\n description: 'Get the input schema for creating or updating documents in a collection.',\n}).handler(({ collectionSlug, req }) => {\n const inputSchema = getCollectionInputSchema({ collectionSlug, req })\n\n if (!inputSchema) {\n return {\n content: [{ type: 'text', text: `Error: Collection \"${collectionSlug}\" not found` }],\n isError: true,\n }\n }\n\n return {\n content: [\n {\n type: 'text',\n text: `Schema for collection \"${collectionSlug}\":\\n\\`\\`\\`json\\n${JSON.stringify(inputSchema)}\\n\\`\\`\\``,\n },\n ],\n structuredContent: {\n collectionSlug,\n schema: inputSchema,\n },\n }\n})\n"],"names":["defineCollectionTool","getCollectionInputSchema","getCollectionSchemaTool","annotations","destructiveHint","idempotentHint","openWorldHint","readOnlyHint","title","description","handler","collectionSlug","req","inputSchema","content","type","text","isError","JSON","stringify","structuredContent","schema"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,yBAAwB;AAC7D,SAASC,wBAAwB,QAAQ,0DAAyD;AAElG,OAAO,MAAMC,0BAA0BF,qBAAqB;IAC1DG,aAAa;QACXC,iBAAiB;QACjBC,gBAAgB;QAChBC,eAAe;QACfC,cAAc;QACdC,OAAO;IACT;IACAC,aAAa;AACf,GAAGC,OAAO,CAAC,CAAC,EAAEC,cAAc,EAAEC,GAAG,EAAE;IACjC,MAAMC,cAAcZ,yBAAyB;QAAEU;QAAgBC;IAAI;IAEnE,IAAI,CAACC,aAAa;QAChB,OAAO;YACLC,SAAS;gBAAC;oBAAEC,MAAM;oBAAQC,MAAM,CAAC,mBAAmB,EAAEL,eAAe,WAAW,CAAC;gBAAC;aAAE;YACpFM,SAAS;QACX;IACF;IAEA,OAAO;QACLH,SAAS;YACP;gBACEC,MAAM;gBACNC,MAAM,CAAC,uBAAuB,EAAEL,eAAe,gBAAgB,EAAEO,KAAKC,SAAS,CAACN,aAAa,QAAQ,CAAC;YACxG;SACD;QACDO,mBAAmB;YACjBT;YACAU,QAAQR;QACV;IACF;AACF,GAAE"}
1
+ {"version":3,"sources":["../../../../src/mcp/builtin/collections/getCollectionSchemaTool.ts"],"sourcesContent":["import { getAccessResults, getCollectionInputSchema, getCollectionSchemaInputSchema } from 'payload'\n\nimport { defaultAccess } from '../../../defaultAccess.js'\nimport { defineCollectionTool } from '../../../defineTool.js'\n\nexport const getCollectionSchemaTool = defineCollectionTool({\n access: (args) => {\n const permissions = args.permissions?.collections?.[args.slug]\n\n return defaultAccess(args) && Boolean(permissions?.create || permissions?.update)\n },\n annotations: {\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n readOnlyHint: true,\n title: 'Get Collection Schema',\n },\n description: 'Get the input schema for creating or updating documents in a collection.',\n input: getCollectionSchemaInputSchema,\n}).handler(async ({ slug, authorizedMCP, req }) => {\n const permissions = authorizedMCP.overrideAccess\n ? null\n : (await getAccessResults({ req })).collections?.[slug]\n\n if (!authorizedMCP.overrideAccess && !permissions?.create && !permissions?.update) {\n return {\n content: [\n {\n type: 'text',\n text: `Error: MCP access to \"getCollectionSchema\" is not enabled for collection \"${slug}\"`,\n },\n ],\n isError: true,\n }\n }\n\n const inputSchema = getCollectionInputSchema({\n collectionSlug: slug,\n req,\n ...(permissions ? { permissions } : {}),\n })\n\n if (!inputSchema) {\n return {\n content: [{ type: 'text', text: `Error: Collection \"${slug}\" not found` }],\n isError: true,\n }\n }\n\n const uploadConfig = req.payload.collections[slug]?.config.upload\n const maxFileSize = req.payload.config.upload.limits?.fileSize\n const upload = uploadConfig\n ? {\n enabled: true,\n filesRequiredOnCreate: uploadConfig.filesRequiredOnCreate !== false,\n mimeTypes: uploadConfig.mimeTypes ?? ['*/*'],\n sources: [\n ...(uploadConfig.pasteURL !== false ? ['externalURL'] : []),\n 'base64',\n 'uploadReference',\n ],\n ...(typeof maxFileSize === 'number' && Number.isFinite(maxFileSize) ? { maxFileSize } : {}),\n }\n : { enabled: false }\n\n return {\n content: [\n {\n type: 'text',\n text: `Schema for collection \"${slug}\":\\n\\`\\`\\`json\\n${JSON.stringify(inputSchema)}\\n\\`\\`\\`\\nUpload configuration:\\n\\`\\`\\`json\\n${JSON.stringify(upload)}\\n\\`\\`\\``,\n },\n ],\n structuredContent: {\n slug,\n schema: inputSchema,\n upload,\n },\n }\n})\n"],"names":["getAccessResults","getCollectionInputSchema","getCollectionSchemaInputSchema","defaultAccess","defineCollectionTool","getCollectionSchemaTool","access","args","permissions","collections","slug","Boolean","create","update","annotations","destructiveHint","idempotentHint","openWorldHint","readOnlyHint","title","description","input","handler","authorizedMCP","req","overrideAccess","content","type","text","isError","inputSchema","collectionSlug","uploadConfig","payload","config","upload","maxFileSize","limits","fileSize","enabled","filesRequiredOnCreate","mimeTypes","sources","pasteURL","Number","isFinite","JSON","stringify","structuredContent","schema"],"mappings":"AAAA,SAASA,gBAAgB,EAAEC,wBAAwB,EAAEC,8BAA8B,QAAQ,UAAS;AAEpG,SAASC,aAAa,QAAQ,4BAA2B;AACzD,SAASC,oBAAoB,QAAQ,yBAAwB;AAE7D,OAAO,MAAMC,0BAA0BD,qBAAqB;IAC1DE,QAAQ,CAACC;QACP,MAAMC,cAAcD,KAAKC,WAAW,EAAEC,aAAa,CAACF,KAAKG,IAAI,CAAC;QAE9D,OAAOP,cAAcI,SAASI,QAAQH,aAAaI,UAAUJ,aAAaK;IAC5E;IACAC,aAAa;QACXC,iBAAiB;QACjBC,gBAAgB;QAChBC,eAAe;QACfC,cAAc;QACdC,OAAO;IACT;IACAC,aAAa;IACbC,OAAOnB;AACT,GAAGoB,OAAO,CAAC,OAAO,EAAEZ,IAAI,EAAEa,aAAa,EAAEC,GAAG,EAAE;IAC5C,MAAMhB,cAAce,cAAcE,cAAc,GAC5C,OACA,AAAC,CAAA,MAAMzB,iBAAiB;QAAEwB;IAAI,EAAC,EAAGf,WAAW,EAAE,CAACC,KAAK;IAEzD,IAAI,CAACa,cAAcE,cAAc,IAAI,CAACjB,aAAaI,UAAU,CAACJ,aAAaK,QAAQ;QACjF,OAAO;YACLa,SAAS;gBACP;oBACEC,MAAM;oBACNC,MAAM,CAAC,0EAA0E,EAAElB,KAAK,CAAC,CAAC;gBAC5F;aACD;YACDmB,SAAS;QACX;IACF;IAEA,MAAMC,cAAc7B,yBAAyB;QAC3C8B,gBAAgBrB;QAChBc;QACA,GAAIhB,cAAc;YAAEA;QAAY,IAAI,CAAC,CAAC;IACxC;IAEA,IAAI,CAACsB,aAAa;QAChB,OAAO;YACLJ,SAAS;gBAAC;oBAAEC,MAAM;oBAAQC,MAAM,CAAC,mBAAmB,EAAElB,KAAK,WAAW,CAAC;gBAAC;aAAE;YAC1EmB,SAAS;QACX;IACF;IAEA,MAAMG,eAAeR,IAAIS,OAAO,CAACxB,WAAW,CAACC,KAAK,EAAEwB,OAAOC;IAC3D,MAAMC,cAAcZ,IAAIS,OAAO,CAACC,MAAM,CAACC,MAAM,CAACE,MAAM,EAAEC;IACtD,MAAMH,SAASH,eACX;QACEO,SAAS;QACTC,uBAAuBR,aAAaQ,qBAAqB,KAAK;QAC9DC,WAAWT,aAAaS,SAAS,IAAI;YAAC;SAAM;QAC5CC,SAAS;eACHV,aAAaW,QAAQ,KAAK,QAAQ;gBAAC;aAAc,GAAG,EAAE;YAC1D;YACA;SACD;QACD,GAAI,OAAOP,gBAAgB,YAAYQ,OAAOC,QAAQ,CAACT,eAAe;YAAEA;QAAY,IAAI,CAAC,CAAC;IAC5F,IACA;QAAEG,SAAS;IAAM;IAErB,OAAO;QACLb,SAAS;YACP;gBACEC,MAAM;gBACNC,MAAM,CAAC,uBAAuB,EAAElB,KAAK,gBAAgB,EAAEoC,KAAKC,SAAS,CAACjB,aAAa,6CAA6C,EAAEgB,KAAKC,SAAS,CAACZ,QAAQ,QAAQ,CAAC;YACpK;SACD;QACDa,mBAAmB;YACjBtC;YACAuC,QAAQnB;YACRK;QACF;IACF;AACF,GAAE"}
@@ -0,0 +1,2 @@
1
+ export declare const restoreVersionTool: import("../../../types.js").CollectionTool;
2
+ //# sourceMappingURL=restoreVersionTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restoreVersionTool.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/collections/restoreVersionTool.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,kBAAkB,4CAuD7B,CAAA"}
@@ -0,0 +1,69 @@
1
+ import { restoreVersionInputSchema } from 'payload';
2
+ import { defaultAccess } from '../../../defaultAccess.js';
3
+ import { defineCollectionTool } from '../../../defineTool.js';
4
+ import { getLogger } from '../../../utils/getLogger.js';
5
+ const DEFAULT_DESCRIPTION = 'Restore a document from a previous version in any version-enabled collection.';
6
+ export const restoreVersionTool = defineCollectionTool({
7
+ access: (args)=>defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.update),
8
+ annotations: {
9
+ destructiveHint: true,
10
+ idempotentHint: false,
11
+ openWorldHint: false,
12
+ readOnlyHint: false,
13
+ title: 'Restore Version'
14
+ },
15
+ description: DEFAULT_DESCRIPTION,
16
+ input: restoreVersionInputSchema
17
+ }).handler(async ({ slug, authorizedMCP, input, req })=>{
18
+ const payload = req.payload;
19
+ const logger = getLogger({
20
+ payload
21
+ });
22
+ const { id, depth, draft, fallbackLocale, locale, populate, select } = input;
23
+ logger.info(`Restoring version in collection: ${slug} with ID: ${id}`);
24
+ try {
25
+ const result = await payload.restoreVersion({
26
+ id: String(id),
27
+ collection: slug,
28
+ depth,
29
+ draft,
30
+ overrideAccess: authorizedMCP.overrideAccess,
31
+ req,
32
+ ...fallbackLocale !== undefined ? {
33
+ fallbackLocale
34
+ } : {},
35
+ ...locale ? {
36
+ locale
37
+ } : {},
38
+ ...populate ? {
39
+ populate
40
+ } : {},
41
+ ...select ? {
42
+ select
43
+ } : {}
44
+ });
45
+ return {
46
+ content: [
47
+ {
48
+ type: 'text',
49
+ text: `Version "${id}" restored successfully in collection "${slug}"!\nRestored document:\n\`\`\`json\n${JSON.stringify(result)}\n\`\`\``
50
+ }
51
+ ],
52
+ doc: result
53
+ };
54
+ } catch (error) {
55
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
56
+ logger.error(`Error restoring version ${id} in ${slug}: ${errorMessage}`);
57
+ return {
58
+ content: [
59
+ {
60
+ type: 'text',
61
+ text: `❌ **Error restoring version "${id}" in collection "${slug}":** ${errorMessage}`
62
+ }
63
+ ],
64
+ isError: true
65
+ };
66
+ }
67
+ });
68
+
69
+ //# sourceMappingURL=restoreVersionTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/mcp/builtin/collections/restoreVersionTool.ts"],"sourcesContent":["import { restoreVersionInputSchema } from 'payload'\n\nimport { defaultAccess } from '../../../defaultAccess.js'\nimport { defineCollectionTool } from '../../../defineTool.js'\nimport { getLogger } from '../../../utils/getLogger.js'\n\nconst DEFAULT_DESCRIPTION =\n 'Restore a document from a previous version in any version-enabled collection.'\n\nexport const restoreVersionTool = defineCollectionTool({\n access: (args) =>\n defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.update),\n annotations: {\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: false,\n readOnlyHint: false,\n title: 'Restore Version',\n },\n description: DEFAULT_DESCRIPTION,\n input: restoreVersionInputSchema,\n}).handler(async ({ slug, authorizedMCP, input, req }) => {\n const payload = req.payload\n const logger = getLogger({ payload })\n const { id, depth, draft, fallbackLocale, locale, populate, select } = input\n\n logger.info(`Restoring version in collection: ${slug} with ID: ${id}`)\n\n try {\n const result = await payload.restoreVersion({\n id: String(id),\n collection: slug,\n depth,\n draft,\n overrideAccess: authorizedMCP.overrideAccess,\n req,\n ...(fallbackLocale !== undefined ? { fallbackLocale } : {}),\n ...(locale ? { locale } : {}),\n ...(populate ? { populate } : {}),\n ...(select ? { select } : {}),\n })\n\n return {\n content: [\n {\n type: 'text',\n text: `Version \"${id}\" restored successfully in collection \"${slug}\"!\\nRestored document:\\n\\`\\`\\`json\\n${JSON.stringify(result)}\\n\\`\\`\\``,\n },\n ],\n doc: result as Record<string, unknown>,\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n logger.error(`Error restoring version ${id} in ${slug}: ${errorMessage}`)\n return {\n content: [\n {\n type: 'text',\n text: `❌ **Error restoring version \"${id}\" in collection \"${slug}\":** ${errorMessage}`,\n },\n ],\n isError: true,\n }\n }\n})\n"],"names":["restoreVersionInputSchema","defaultAccess","defineCollectionTool","getLogger","DEFAULT_DESCRIPTION","restoreVersionTool","access","args","Boolean","permissions","collections","slug","update","annotations","destructiveHint","idempotentHint","openWorldHint","readOnlyHint","title","description","input","handler","authorizedMCP","req","payload","logger","id","depth","draft","fallbackLocale","locale","populate","select","info","result","restoreVersion","String","collection","overrideAccess","undefined","content","type","text","JSON","stringify","doc","error","errorMessage","Error","message","isError"],"mappings":"AAAA,SAASA,yBAAyB,QAAQ,UAAS;AAEnD,SAASC,aAAa,QAAQ,4BAA2B;AACzD,SAASC,oBAAoB,QAAQ,yBAAwB;AAC7D,SAASC,SAAS,QAAQ,8BAA6B;AAEvD,MAAMC,sBACJ;AAEF,OAAO,MAAMC,qBAAqBH,qBAAqB;IACrDI,QAAQ,CAACC,OACPN,cAAcM,SAASC,QAAQD,KAAKE,WAAW,EAAEC,aAAa,CAACH,KAAKI,IAAI,CAAC,EAAEC;IAC7EC,aAAa;QACXC,iBAAiB;QACjBC,gBAAgB;QAChBC,eAAe;QACfC,cAAc;QACdC,OAAO;IACT;IACAC,aAAaf;IACbgB,OAAOpB;AACT,GAAGqB,OAAO,CAAC,OAAO,EAAEV,IAAI,EAAEW,aAAa,EAAEF,KAAK,EAAEG,GAAG,EAAE;IACnD,MAAMC,UAAUD,IAAIC,OAAO;IAC3B,MAAMC,SAAStB,UAAU;QAAEqB;IAAQ;IACnC,MAAM,EAAEE,EAAE,EAAEC,KAAK,EAAEC,KAAK,EAAEC,cAAc,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,MAAM,EAAE,GAAGZ;IAEvEK,OAAOQ,IAAI,CAAC,CAAC,iCAAiC,EAAEtB,KAAK,UAAU,EAAEe,IAAI;IAErE,IAAI;QACF,MAAMQ,SAAS,MAAMV,QAAQW,cAAc,CAAC;YAC1CT,IAAIU,OAAOV;YACXW,YAAY1B;YACZgB;YACAC;YACAU,gBAAgBhB,cAAcgB,cAAc;YAC5Cf;YACA,GAAIM,mBAAmBU,YAAY;gBAAEV;YAAe,IAAI,CAAC,CAAC;YAC1D,GAAIC,SAAS;gBAAEA;YAAO,IAAI,CAAC,CAAC;YAC5B,GAAIC,WAAW;gBAAEA;YAAS,IAAI,CAAC,CAAC;YAChC,GAAIC,SAAS;gBAAEA;YAAO,IAAI,CAAC,CAAC;QAC9B;QAEA,OAAO;YACLQ,SAAS;gBACP;oBACEC,MAAM;oBACNC,MAAM,CAAC,SAAS,EAAEhB,GAAG,uCAAuC,EAAEf,KAAK,oCAAoC,EAAEgC,KAAKC,SAAS,CAACV,QAAQ,QAAQ,CAAC;gBAC3I;aACD;YACDW,KAAKX;QACP;IACF,EAAE,OAAOY,OAAO;QACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;QAC9DxB,OAAOqB,KAAK,CAAC,CAAC,wBAAwB,EAAEpB,GAAG,IAAI,EAAEf,KAAK,EAAE,EAAEoC,cAAc;QACxE,OAAO;YACLP,SAAS;gBACP;oBACEC,MAAM;oBACNC,MAAM,CAAC,6BAA6B,EAAEhB,GAAG,iBAAiB,EAAEf,KAAK,KAAK,EAAEoC,cAAc;gBACxF;aACD;YACDG,SAAS;QACX;IACF;AACF,GAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"updateTool.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/collections/updateTool.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,kBAAkB,4CA2L7B,CAAA"}
1
+ {"version":3,"file":"updateTool.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/collections/updateTool.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,kBAAkB,4CAuJ7B,CAAA"}
@@ -1,15 +1,12 @@
1
- import { z } from 'zod';
1
+ import { getCollectionInputSchema, getCollectionVirtualFieldNames, parseDocumentID, stripVirtualFields, transformPointDataToPayload, updateDocumentInputSchema, validateCollectionData } from 'payload';
2
+ import { defaultAccess } from '../../../defaultAccess.js';
2
3
  import { defineCollectionTool } from '../../../defineTool.js';
3
4
  import { getLogger } from '../../../utils/getLogger.js';
4
- import { getCollectionVirtualFieldNames, stripVirtualFields } from '../../../utils/getVirtualFieldNames.js';
5
- import { localAPIDefaults } from '../../../utils/localAPIDefaults.js';
6
- import { getCollectionInputSchema } from '../../../utils/schemaConversion/getEntityInputSchema.js';
7
- import { transformPointDataToPayload } from '../../../utils/transformPointDataToPayload.js';
8
- import { whereSchema } from '../../../utils/whereSchema.js';
9
- import { validateCollectionData } from '../validateEntityData.js';
10
- import { formatCollectionError } from './formatCollectionError.js';
11
- const DEFAULT_DESCRIPTION = 'Update documents in any collection by passing the collection slug and data.';
5
+ import { formatEntityError } from '../formatEntityError.js';
6
+ import { fileInputSchema, resolveFile } from './fileInput.js';
7
+ const DEFAULT_DESCRIPTION = 'Update documents. Prefer uploadReference after upload, externalURL for URLs, or base64 for small local files.';
12
8
  export const updateDocumentTool = defineCollectionTool({
9
+ access: (args)=>defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.update),
13
10
  annotations: {
14
11
  destructiveHint: true,
15
12
  idempotentHint: false,
@@ -18,124 +15,108 @@ export const updateDocumentTool = defineCollectionTool({
18
15
  title: 'Update Document'
19
16
  },
20
17
  description: DEFAULT_DESCRIPTION,
21
- input: z.object({
22
- id: z.union([
23
- z.string(),
24
- z.number()
25
- ]).describe('The ID of the document to update').optional(),
26
- data: z.record(z.string(), z.unknown()).describe('The fields to update'),
27
- depth: z.number().describe('How many levels deep to populate relationships').optional().default(0),
28
- draft: z.boolean().describe('Whether to update the document as a draft').optional().default(false),
29
- fallbackLocale: z.string().describe('Optional: fallback locale code to use when requested locale is not available').optional(),
30
- filePath: z.string().describe('File path for file uploads').optional(),
31
- locale: z.string().describe('Optional: locale code to update the document in (e.g., "en", "es"). Defaults to the default locale').optional(),
32
- overrideLock: z.boolean().describe('Whether to override document locks').optional().default(true),
33
- overwriteExistingFiles: z.boolean().describe('Whether to overwrite existing files').optional().default(false),
34
- select: z.record(z.string(), z.unknown()).describe('Optional: define exactly which fields you\'d like to return in the response, e.g., {"title": true}').optional(),
35
- where: whereSchema.describe('Where clause to update multiple documents. Use field names with Payload operators, and/or arrays for grouping. Example: {"title":{"contains":"test"}}').optional()
18
+ input: updateDocumentInputSchema({
19
+ file: fileInputSchema
36
20
  })
37
- }).handler(async ({ authorizedMCP, collectionSlug, input, req })=>{
21
+ }).handler(async ({ slug, authorizedMCP, input, req })=>{
38
22
  const payload = req.payload;
39
23
  const logger = getLogger({
40
24
  payload
41
25
  });
42
- const { id, data, depth, draft, fallbackLocale, filePath, locale, overrideLock, overwriteExistingFiles, select, where } = input;
43
- logger.info(`Updating document in collection: ${collectionSlug}${id ? ` with ID: ${id}` : ' with where clause'}, draft: ${draft}${locale ? `, locale: ${locale}` : ''}`);
26
+ const { id, data, depth, draft, fallbackLocale, file: fileInput, limit, locale, overrideLock, populate, publishAllLocales, returning, select, sort, trash, unpublishAllLocales, where } = input;
27
+ logger.info(`Updating document in collection: ${slug}${id ? ` with ID: ${id}` : ' with where clause'}, draft: ${draft}${locale ? `, locale: ${locale}` : ''}`);
44
28
  try {
45
- if (!id && !where) {
46
- return {
47
- content: [
48
- {
49
- type: 'text',
50
- text: 'Error: Either id or where clause must be provided'
51
- }
52
- ]
53
- };
54
- }
55
- const virtualFieldNames = getCollectionVirtualFieldNames(payload.config, collectionSlug);
29
+ const virtualFieldNames = getCollectionVirtualFieldNames(payload.config, slug);
56
30
  const inputData = stripVirtualFields(data, virtualFieldNames);
57
- const validationError = validateCollectionData({
58
- collectionSlug,
31
+ validateCollectionData({
32
+ slug,
59
33
  data: inputData,
60
34
  partial: true,
61
35
  req
62
36
  });
63
- if (validationError) {
64
- return validationError;
65
- }
66
37
  const parsedData = transformPointDataToPayload(inputData);
38
+ const file = await resolveFile({
39
+ slug,
40
+ input: fileInput,
41
+ req
42
+ });
67
43
  const whereClause = where ?? {};
68
- if (id) {
44
+ if (id !== undefined) {
69
45
  const result = await payload.update({
70
- id,
71
- collection: collectionSlug,
46
+ id: parseDocumentID({
47
+ id,
48
+ collectionSlug: slug,
49
+ payload
50
+ }),
51
+ collection: slug,
72
52
  data: parsedData,
73
53
  depth,
74
54
  draft,
55
+ fallbackLocale,
56
+ locale,
57
+ overrideAccess: authorizedMCP.overrideAccess,
75
58
  overrideLock,
59
+ populate,
60
+ publishAllLocales,
76
61
  req,
77
- ...localAPIDefaults(authorizedMCP),
78
- ...filePath ? {
79
- filePath
80
- } : {},
81
- ...overwriteExistingFiles ? {
82
- overwriteExistingFiles
83
- } : {},
84
- ...locale ? {
85
- locale
86
- } : {},
87
- ...fallbackLocale ? {
88
- fallbackLocale
89
- } : {},
90
- ...select ? {
91
- select: select
62
+ select: returning ? select : {
63
+ id: true
64
+ },
65
+ trash,
66
+ unpublishAllLocales,
67
+ ...file ? {
68
+ file
92
69
  } : {}
93
70
  });
71
+ const responseResult = returning ? result : {
72
+ id: result.id
73
+ };
94
74
  return {
95
75
  content: [
96
76
  {
97
77
  type: 'text',
98
- text: `Document updated successfully in collection "${collectionSlug}"!\nUpdated document:\n\`\`\`json\n${JSON.stringify(result)}\n\`\`\``
78
+ text: `Document updated successfully in collection "${slug}"!\nResult:\n\`\`\`json\n${JSON.stringify(responseResult)}\n\`\`\``
99
79
  }
100
80
  ],
101
- doc: result
81
+ doc: responseResult
102
82
  };
103
83
  }
104
84
  const result = await payload.update({
105
- collection: collectionSlug,
85
+ collection: slug,
106
86
  data: parsedData,
107
87
  depth,
108
88
  draft,
89
+ fallbackLocale,
90
+ limit,
91
+ locale,
92
+ overrideAccess: authorizedMCP.overrideAccess,
109
93
  overrideLock,
94
+ populate,
95
+ publishAllLocales,
110
96
  req,
97
+ select: returning ? select : {
98
+ id: true
99
+ },
100
+ sort,
101
+ trash,
102
+ unpublishAllLocales,
111
103
  where: whereClause,
112
- ...localAPIDefaults(authorizedMCP),
113
- ...filePath ? {
114
- filePath
115
- } : {},
116
- ...overwriteExistingFiles ? {
117
- overwriteExistingFiles
118
- } : {},
119
- ...locale ? {
120
- locale
121
- } : {},
122
- ...fallbackLocale ? {
123
- fallbackLocale
124
- } : {},
125
- ...select ? {
126
- select: select
104
+ ...file ? {
105
+ file
127
106
  } : {}
128
107
  });
129
- const docs = result.docs || [];
108
+ const docs = returning ? result.docs : result.docs.map(({ id })=>({
109
+ id
110
+ }));
130
111
  const errors = result.errors || [];
131
- let responseText = `Multiple documents updated in collection "${collectionSlug}"!\nUpdated: ${docs.length} documents\nErrors: ${errors.length}\n---`;
112
+ let responseText = `Multiple documents updated in collection "${slug}"!\nUpdated: ${docs.length} documents\nErrors: ${errors.length}\n---`;
132
113
  if (docs.length > 0) {
133
114
  responseText += `\n\nUpdated documents:\n\`\`\`json\n${JSON.stringify(docs)}\n\`\`\``;
134
115
  }
135
116
  if (errors.length > 0) {
136
117
  responseText += `\n\nErrors:\n\`\`\`json\n${JSON.stringify(errors)}\n\`\`\``;
137
118
  const errorSchema = getCollectionInputSchema({
138
- collectionSlug,
119
+ collectionSlug: slug,
139
120
  req
140
121
  });
141
122
  if (errorSchema) {
@@ -155,7 +136,7 @@ export const updateDocumentTool = defineCollectionTool({
155
136
  isError: true,
156
137
  ...errorSchema ? {
157
138
  structuredContent: {
158
- collectionSlug,
139
+ slug,
159
140
  docs,
160
141
  errors,
161
142
  schema: errorSchema
@@ -177,10 +158,11 @@ export const updateDocumentTool = defineCollectionTool({
177
158
  };
178
159
  } catch (error) {
179
160
  const errorMessage = error instanceof Error ? error.message : 'Unknown error';
180
- logger.error(`Error updating document in ${collectionSlug}: ${errorMessage}`);
181
- return formatCollectionError({
161
+ logger.error(`Error updating document in ${slug}: ${errorMessage}`);
162
+ return formatEntityError({
163
+ slug,
182
164
  action: 'updating',
183
- collectionSlug,
165
+ entity: 'collection',
184
166
  error,
185
167
  req
186
168
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/mcp/builtin/collections/updateTool.ts"],"sourcesContent":["import type { SelectType, Where } from 'payload'\n\nimport { z } from 'zod'\n\nimport { defineCollectionTool } from '../../../defineTool.js'\nimport { getLogger } from '../../../utils/getLogger.js'\nimport {\n getCollectionVirtualFieldNames,\n stripVirtualFields,\n} from '../../../utils/getVirtualFieldNames.js'\nimport { localAPIDefaults } from '../../../utils/localAPIDefaults.js'\nimport { getCollectionInputSchema } from '../../../utils/schemaConversion/getEntityInputSchema.js'\nimport { transformPointDataToPayload } from '../../../utils/transformPointDataToPayload.js'\nimport { whereSchema } from '../../../utils/whereSchema.js'\nimport { validateCollectionData } from '../validateEntityData.js'\nimport { formatCollectionError } from './formatCollectionError.js'\n\nconst DEFAULT_DESCRIPTION =\n 'Update documents in any collection by passing the collection slug and data.'\n\nexport const updateDocumentTool = defineCollectionTool({\n annotations: {\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: false,\n readOnlyHint: false,\n title: 'Update Document',\n },\n description: DEFAULT_DESCRIPTION,\n input: z.object({\n id: z.union([z.string(), z.number()]).describe('The ID of the document to update').optional(),\n data: z.record(z.string(), z.unknown()).describe('The fields to update'),\n depth: z\n .number()\n .describe('How many levels deep to populate relationships')\n .optional()\n .default(0),\n draft: z\n .boolean()\n .describe('Whether to update the document as a draft')\n .optional()\n .default(false),\n fallbackLocale: z\n .string()\n .describe('Optional: fallback locale code to use when requested locale is not available')\n .optional(),\n filePath: z.string().describe('File path for file uploads').optional(),\n locale: z\n .string()\n .describe(\n 'Optional: locale code to update the document in (e.g., \"en\", \"es\"). Defaults to the default locale',\n )\n .optional(),\n overrideLock: z\n .boolean()\n .describe('Whether to override document locks')\n .optional()\n .default(true),\n overwriteExistingFiles: z\n .boolean()\n .describe('Whether to overwrite existing files')\n .optional()\n .default(false),\n select: z\n .record(z.string(), z.unknown())\n .describe(\n 'Optional: define exactly which fields you\\'d like to return in the response, e.g., {\"title\": true}',\n )\n .optional(),\n where: whereSchema\n .describe(\n 'Where clause to update multiple documents. Use field names with Payload operators, and/or arrays for grouping. Example: {\"title\":{\"contains\":\"test\"}}',\n )\n .optional(),\n }),\n}).handler(async ({ authorizedMCP, collectionSlug, input, req }) => {\n const payload = req.payload\n const logger = getLogger({ payload })\n\n const {\n id,\n data,\n depth,\n draft,\n fallbackLocale,\n filePath,\n locale,\n overrideLock,\n overwriteExistingFiles,\n select,\n where,\n } = input\n\n logger.info(\n `Updating document in collection: ${collectionSlug}${id ? ` with ID: ${id}` : ' with where clause'}, draft: ${draft}${locale ? `, locale: ${locale}` : ''}`,\n )\n\n try {\n if (!id && !where) {\n return {\n content: [{ type: 'text', text: 'Error: Either id or where clause must be provided' }],\n }\n }\n\n const virtualFieldNames = getCollectionVirtualFieldNames(payload.config, collectionSlug)\n const inputData = stripVirtualFields(data, virtualFieldNames)\n const validationError = validateCollectionData({\n collectionSlug,\n data: inputData,\n partial: true,\n req,\n })\n\n if (validationError) {\n return validationError\n }\n\n const parsedData = transformPointDataToPayload(inputData)\n\n const whereClause: Where = where ?? {}\n\n if (id) {\n const result = await payload.update({\n id,\n collection: collectionSlug,\n data: parsedData,\n depth,\n draft,\n overrideLock,\n req,\n ...localAPIDefaults(authorizedMCP),\n ...(filePath ? { filePath } : {}),\n ...(overwriteExistingFiles ? { overwriteExistingFiles } : {}),\n ...(locale ? { locale } : {}),\n ...(fallbackLocale ? { fallbackLocale } : {}),\n ...(select ? { select: select as SelectType } : {}),\n })\n\n return {\n content: [\n {\n type: 'text',\n text: `Document updated successfully in collection \"${collectionSlug}\"!\\nUpdated document:\\n\\`\\`\\`json\\n${JSON.stringify(result)}\\n\\`\\`\\``,\n },\n ],\n doc: result as Record<string, unknown>,\n }\n }\n\n const result = await payload.update({\n collection: collectionSlug,\n data: parsedData,\n depth,\n draft,\n overrideLock,\n req,\n where: whereClause,\n ...localAPIDefaults(authorizedMCP),\n ...(filePath ? { filePath } : {}),\n ...(overwriteExistingFiles ? { overwriteExistingFiles } : {}),\n ...(locale ? { locale } : {}),\n ...(fallbackLocale ? { fallbackLocale } : {}),\n ...(select ? { select: select as SelectType } : {}),\n })\n\n const docs = result.docs || []\n const errors = result.errors || []\n\n let responseText = `Multiple documents updated in collection \"${collectionSlug}\"!\\nUpdated: ${docs.length} documents\\nErrors: ${errors.length}\\n---`\n if (docs.length > 0) {\n responseText += `\\n\\nUpdated documents:\\n\\`\\`\\`json\\n${JSON.stringify(docs)}\\n\\`\\`\\``\n }\n if (errors.length > 0) {\n responseText += `\\n\\nErrors:\\n\\`\\`\\`json\\n${JSON.stringify(errors)}\\n\\`\\`\\``\n\n const errorSchema = getCollectionInputSchema({ collectionSlug, req })\n\n if (errorSchema) {\n responseText += `\\n\\nUse this schema for data:\\n\\`\\`\\`json\\n${JSON.stringify(errorSchema)}\\n\\`\\`\\``\n }\n\n return {\n content: [{ type: 'text', text: responseText }],\n doc: { docs, errors } as unknown as Record<string, unknown>,\n isError: true,\n ...(errorSchema\n ? {\n structuredContent: {\n collectionSlug,\n docs,\n errors,\n schema: errorSchema,\n },\n }\n : {}),\n }\n }\n\n return {\n content: [{ type: 'text', text: responseText }],\n doc: { docs, errors } as unknown as Record<string, unknown>,\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n logger.error(`Error updating document in ${collectionSlug}: ${errorMessage}`)\n return formatCollectionError({ action: 'updating', collectionSlug, error, req })\n }\n})\n"],"names":["z","defineCollectionTool","getLogger","getCollectionVirtualFieldNames","stripVirtualFields","localAPIDefaults","getCollectionInputSchema","transformPointDataToPayload","whereSchema","validateCollectionData","formatCollectionError","DEFAULT_DESCRIPTION","updateDocumentTool","annotations","destructiveHint","idempotentHint","openWorldHint","readOnlyHint","title","description","input","object","id","union","string","number","describe","optional","data","record","unknown","depth","default","draft","boolean","fallbackLocale","filePath","locale","overrideLock","overwriteExistingFiles","select","where","handler","authorizedMCP","collectionSlug","req","payload","logger","info","content","type","text","virtualFieldNames","config","inputData","validationError","partial","parsedData","whereClause","result","update","collection","JSON","stringify","doc","docs","errors","responseText","length","errorSchema","isError","structuredContent","schema","error","errorMessage","Error","message","action"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/mcp/builtin/collections/updateTool.ts"],"sourcesContent":["import type { Where } from 'payload'\n\nimport {\n getCollectionInputSchema,\n getCollectionVirtualFieldNames,\n parseDocumentID,\n stripVirtualFields,\n transformPointDataToPayload,\n updateDocumentInputSchema,\n validateCollectionData,\n} from 'payload'\n\nimport { defaultAccess } from '../../../defaultAccess.js'\nimport { defineCollectionTool } from '../../../defineTool.js'\nimport { getLogger } from '../../../utils/getLogger.js'\nimport { formatEntityError } from '../formatEntityError.js'\nimport { fileInputSchema, resolveFile } from './fileInput.js'\n\nconst DEFAULT_DESCRIPTION =\n 'Update documents. Prefer uploadReference after upload, externalURL for URLs, or base64 for small local files.'\n\nexport const updateDocumentTool = defineCollectionTool({\n access: (args) =>\n defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.update),\n annotations: {\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: false,\n readOnlyHint: false,\n title: 'Update Document',\n },\n description: DEFAULT_DESCRIPTION,\n input: updateDocumentInputSchema({ file: fileInputSchema }),\n}).handler(async ({ slug, authorizedMCP, input, req }) => {\n const payload = req.payload\n const logger = getLogger({ payload })\n\n const {\n id,\n data,\n depth,\n draft,\n fallbackLocale,\n file: fileInput,\n limit,\n locale,\n overrideLock,\n populate,\n publishAllLocales,\n returning,\n select,\n sort,\n trash,\n unpublishAllLocales,\n where,\n } = input\n\n logger.info(\n `Updating document in collection: ${slug}${id ? ` with ID: ${id}` : ' with where clause'}, draft: ${draft}${locale ? `, locale: ${locale}` : ''}`,\n )\n\n try {\n const virtualFieldNames = getCollectionVirtualFieldNames(payload.config, slug)\n const inputData = stripVirtualFields(data, virtualFieldNames)\n validateCollectionData({\n slug,\n data: inputData,\n partial: true,\n req,\n })\n\n const parsedData = transformPointDataToPayload(inputData)\n const file = await resolveFile({ slug, input: fileInput, req })\n\n const whereClause: Where = where ?? {}\n\n if (id !== undefined) {\n const result = await payload.update({\n id: parseDocumentID({ id, collectionSlug: slug, payload }),\n collection: slug,\n data: parsedData,\n depth,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: authorizedMCP.overrideAccess,\n overrideLock,\n populate,\n publishAllLocales,\n req,\n select: returning ? select : { id: true },\n trash,\n unpublishAllLocales,\n ...(file ? { file } : {}),\n })\n\n const responseResult = returning ? result : { id: result.id }\n\n return {\n content: [\n {\n type: 'text',\n text: `Document updated successfully in collection \"${slug}\"!\\nResult:\\n\\`\\`\\`json\\n${JSON.stringify(responseResult)}\\n\\`\\`\\``,\n },\n ],\n doc: responseResult as Record<string, unknown>,\n }\n }\n\n const result = await payload.update({\n collection: slug,\n data: parsedData,\n depth,\n draft,\n fallbackLocale,\n limit,\n locale,\n overrideAccess: authorizedMCP.overrideAccess,\n overrideLock,\n populate,\n publishAllLocales,\n req,\n select: returning ? select : { id: true },\n sort,\n trash,\n unpublishAllLocales,\n where: whereClause,\n ...(file ? { file } : {}),\n })\n\n const docs = returning ? result.docs : result.docs.map(({ id }) => ({ id }))\n const errors = result.errors || []\n\n let responseText = `Multiple documents updated in collection \"${slug}\"!\\nUpdated: ${docs.length} documents\\nErrors: ${errors.length}\\n---`\n if (docs.length > 0) {\n responseText += `\\n\\nUpdated documents:\\n\\`\\`\\`json\\n${JSON.stringify(docs)}\\n\\`\\`\\``\n }\n if (errors.length > 0) {\n responseText += `\\n\\nErrors:\\n\\`\\`\\`json\\n${JSON.stringify(errors)}\\n\\`\\`\\``\n\n const errorSchema = getCollectionInputSchema({ collectionSlug: slug, req })\n\n if (errorSchema) {\n responseText += `\\n\\nUse this schema for data:\\n\\`\\`\\`json\\n${JSON.stringify(errorSchema)}\\n\\`\\`\\``\n }\n\n return {\n content: [{ type: 'text', text: responseText }],\n doc: { docs, errors } as unknown as Record<string, unknown>,\n isError: true,\n ...(errorSchema\n ? {\n structuredContent: {\n slug,\n docs,\n errors,\n schema: errorSchema,\n },\n }\n : {}),\n }\n }\n\n return {\n content: [{ type: 'text', text: responseText }],\n doc: { docs, errors } as unknown as Record<string, unknown>,\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n logger.error(`Error updating document in ${slug}: ${errorMessage}`)\n return formatEntityError({ slug, action: 'updating', entity: 'collection', error, req })\n }\n})\n"],"names":["getCollectionInputSchema","getCollectionVirtualFieldNames","parseDocumentID","stripVirtualFields","transformPointDataToPayload","updateDocumentInputSchema","validateCollectionData","defaultAccess","defineCollectionTool","getLogger","formatEntityError","fileInputSchema","resolveFile","DEFAULT_DESCRIPTION","updateDocumentTool","access","args","Boolean","permissions","collections","slug","update","annotations","destructiveHint","idempotentHint","openWorldHint","readOnlyHint","title","description","input","file","handler","authorizedMCP","req","payload","logger","id","data","depth","draft","fallbackLocale","fileInput","limit","locale","overrideLock","populate","publishAllLocales","returning","select","sort","trash","unpublishAllLocales","where","info","virtualFieldNames","config","inputData","partial","parsedData","whereClause","undefined","result","collectionSlug","collection","overrideAccess","responseResult","content","type","text","JSON","stringify","doc","docs","map","errors","responseText","length","errorSchema","isError","structuredContent","schema","error","errorMessage","Error","message","action","entity"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const getUploadInstructionsTool: import("../../../types.js").CollectionTool;
2
+ //# sourceMappingURL=uploadInstructionsTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploadInstructionsTool.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/collections/uploadInstructionsTool.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,yBAAyB,4CAyDpC,CAAA"}