@strapi/content-manager 5.46.0 → 5.47.0

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 (197) hide show
  1. package/dist/admin/constants/hooks.js +5 -0
  2. package/dist/admin/constants/hooks.js.map +1 -1
  3. package/dist/admin/constants/hooks.mjs +5 -0
  4. package/dist/admin/constants/hooks.mjs.map +1 -1
  5. package/dist/admin/history/components/VersionInputRenderer.js +64 -26
  6. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  7. package/dist/admin/history/components/VersionInputRenderer.mjs +63 -27
  8. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  9. package/dist/admin/pages/ComponentConfigurationPage.js +2 -45
  10. package/dist/admin/pages/ComponentConfigurationPage.js.map +1 -1
  11. package/dist/admin/pages/ComponentConfigurationPage.mjs +3 -46
  12. package/dist/admin/pages/ComponentConfigurationPage.mjs.map +1 -1
  13. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +4 -4
  14. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  15. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +4 -4
  16. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  17. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +11 -3
  18. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  19. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +11 -3
  20. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  21. package/dist/admin/pages/ListView/ListViewPage.js +1 -0
  22. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  23. package/dist/admin/pages/ListView/ListViewPage.mjs +1 -0
  24. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  25. package/dist/admin/pages/ListView/components/Filters.js +38 -4
  26. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  27. package/dist/admin/pages/ListView/components/Filters.mjs +39 -5
  28. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  29. package/dist/admin/pages/formatComponentConfigurationEditLayout.js +58 -0
  30. package/dist/admin/pages/formatComponentConfigurationEditLayout.js.map +1 -0
  31. package/dist/admin/pages/formatComponentConfigurationEditLayout.mjs +56 -0
  32. package/dist/admin/pages/formatComponentConfigurationEditLayout.mjs.map +1 -0
  33. package/dist/admin/src/constants/hooks.d.ts +23 -0
  34. package/dist/admin/src/exports.d.ts +1 -0
  35. package/dist/admin/src/history/components/VersionInputRenderer.d.ts +27 -1
  36. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +9 -5
  37. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.d.ts +4 -2
  38. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +38 -6
  39. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +27 -5
  40. package/dist/admin/src/pages/ListView/components/Filters.d.ts +3 -4
  41. package/dist/admin/src/pages/formatComponentConfigurationEditLayout.d.ts +15 -0
  42. package/dist/admin/translations/cs.json.js +0 -1
  43. package/dist/admin/translations/cs.json.js.map +1 -1
  44. package/dist/admin/translations/cs.json.mjs +0 -1
  45. package/dist/admin/translations/cs.json.mjs.map +1 -1
  46. package/dist/admin/translations/de.json.js +0 -1
  47. package/dist/admin/translations/de.json.js.map +1 -1
  48. package/dist/admin/translations/de.json.mjs +0 -1
  49. package/dist/admin/translations/de.json.mjs.map +1 -1
  50. package/dist/admin/translations/en.json.js +0 -1
  51. package/dist/admin/translations/en.json.js.map +1 -1
  52. package/dist/admin/translations/en.json.mjs +0 -1
  53. package/dist/admin/translations/en.json.mjs.map +1 -1
  54. package/dist/admin/translations/es.json.js +0 -1
  55. package/dist/admin/translations/es.json.js.map +1 -1
  56. package/dist/admin/translations/es.json.mjs +0 -1
  57. package/dist/admin/translations/es.json.mjs.map +1 -1
  58. package/dist/admin/translations/fr.json.js +0 -1
  59. package/dist/admin/translations/fr.json.js.map +1 -1
  60. package/dist/admin/translations/fr.json.mjs +0 -1
  61. package/dist/admin/translations/fr.json.mjs.map +1 -1
  62. package/dist/admin/translations/nl.json.js +0 -1
  63. package/dist/admin/translations/nl.json.js.map +1 -1
  64. package/dist/admin/translations/nl.json.mjs +0 -1
  65. package/dist/admin/translations/nl.json.mjs.map +1 -1
  66. package/dist/admin/translations/pl.json.js +0 -1
  67. package/dist/admin/translations/pl.json.js.map +1 -1
  68. package/dist/admin/translations/pl.json.mjs +0 -1
  69. package/dist/admin/translations/pl.json.mjs.map +1 -1
  70. package/dist/admin/translations/ru.json.js +0 -1
  71. package/dist/admin/translations/ru.json.js.map +1 -1
  72. package/dist/admin/translations/ru.json.mjs +0 -1
  73. package/dist/admin/translations/ru.json.mjs.map +1 -1
  74. package/dist/admin/translations/sk.json.js +175 -9
  75. package/dist/admin/translations/sk.json.js.map +1 -1
  76. package/dist/admin/translations/sk.json.mjs +175 -9
  77. package/dist/admin/translations/sk.json.mjs.map +1 -1
  78. package/dist/admin/translations/uk.json.js +0 -1
  79. package/dist/admin/translations/uk.json.js.map +1 -1
  80. package/dist/admin/translations/uk.json.mjs +0 -1
  81. package/dist/admin/translations/uk.json.mjs.map +1 -1
  82. package/dist/admin/translations/zh-Hans.json.js +0 -1
  83. package/dist/admin/translations/zh-Hans.json.js.map +1 -1
  84. package/dist/admin/translations/zh-Hans.json.mjs +0 -1
  85. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -1
  86. package/dist/server/bootstrap.js +4 -0
  87. package/dist/server/bootstrap.js.map +1 -1
  88. package/dist/server/bootstrap.mjs +4 -0
  89. package/dist/server/bootstrap.mjs.map +1 -1
  90. package/dist/server/controllers/collection-types.js +9 -5
  91. package/dist/server/controllers/collection-types.js.map +1 -1
  92. package/dist/server/controllers/collection-types.mjs +10 -6
  93. package/dist/server/controllers/collection-types.mjs.map +1 -1
  94. package/dist/server/mcp/derive-content-type-mcp-tools.js +524 -0
  95. package/dist/server/mcp/derive-content-type-mcp-tools.js.map +1 -0
  96. package/dist/server/mcp/derive-content-type-mcp-tools.mjs +518 -0
  97. package/dist/server/mcp/derive-content-type-mcp-tools.mjs.map +1 -0
  98. package/dist/server/mcp/handlers/collection-handlers.js +404 -0
  99. package/dist/server/mcp/handlers/collection-handlers.js.map +1 -0
  100. package/dist/server/mcp/handlers/collection-handlers.mjs +395 -0
  101. package/dist/server/mcp/handlers/collection-handlers.mjs.map +1 -0
  102. package/dist/server/mcp/handlers/constants.js +10 -0
  103. package/dist/server/mcp/handlers/constants.js.map +1 -0
  104. package/dist/server/mcp/handlers/constants.mjs +6 -0
  105. package/dist/server/mcp/handlers/constants.mjs.map +1 -0
  106. package/dist/server/mcp/handlers/single-type-handlers.js +344 -0
  107. package/dist/server/mcp/handlers/single-type-handlers.js.map +1 -0
  108. package/dist/server/mcp/handlers/single-type-handlers.mjs +336 -0
  109. package/dist/server/mcp/handlers/single-type-handlers.mjs.map +1 -0
  110. package/dist/server/mcp/permissions.js +138 -0
  111. package/dist/server/mcp/permissions.js.map +1 -0
  112. package/dist/server/mcp/permissions.mjs +131 -0
  113. package/dist/server/mcp/permissions.mjs.map +1 -0
  114. package/dist/server/mcp/register-content-manager-mcp-tools.js +30 -0
  115. package/dist/server/mcp/register-content-manager-mcp-tools.js.map +1 -0
  116. package/dist/server/mcp/register-content-manager-mcp-tools.mjs +28 -0
  117. package/dist/server/mcp/register-content-manager-mcp-tools.mjs.map +1 -0
  118. package/dist/server/mcp/schemas/blocks-schema.js +124 -0
  119. package/dist/server/mcp/schemas/blocks-schema.js.map +1 -0
  120. package/dist/server/mcp/schemas/blocks-schema.mjs +122 -0
  121. package/dist/server/mcp/schemas/blocks-schema.mjs.map +1 -0
  122. package/dist/server/mcp/schemas/data-schema.js +252 -0
  123. package/dist/server/mcp/schemas/data-schema.js.map +1 -0
  124. package/dist/server/mcp/schemas/data-schema.mjs +248 -0
  125. package/dist/server/mcp/schemas/data-schema.mjs.map +1 -0
  126. package/dist/server/mcp/schemas/filters-schema.js +111 -0
  127. package/dist/server/mcp/schemas/filters-schema.js.map +1 -0
  128. package/dist/server/mcp/schemas/filters-schema.mjs +107 -0
  129. package/dist/server/mcp/schemas/filters-schema.mjs.map +1 -0
  130. package/dist/server/mcp/schemas/input-schemas.js +18 -0
  131. package/dist/server/mcp/schemas/input-schemas.js.map +1 -0
  132. package/dist/server/mcp/schemas/input-schemas.mjs +13 -0
  133. package/dist/server/mcp/schemas/input-schemas.mjs.map +1 -0
  134. package/dist/server/mcp/schemas/output-schemas.js +48 -0
  135. package/dist/server/mcp/schemas/output-schemas.js.map +1 -0
  136. package/dist/server/mcp/schemas/output-schemas.mjs +44 -0
  137. package/dist/server/mcp/schemas/output-schemas.mjs.map +1 -0
  138. package/dist/server/mcp/schemas/sort-schema.js +80 -0
  139. package/dist/server/mcp/schemas/sort-schema.js.map +1 -0
  140. package/dist/server/mcp/schemas/sort-schema.mjs +76 -0
  141. package/dist/server/mcp/schemas/sort-schema.mjs.map +1 -0
  142. package/dist/server/mcp/utils.js +43 -0
  143. package/dist/server/mcp/utils.js.map +1 -0
  144. package/dist/server/mcp/utils.mjs +39 -0
  145. package/dist/server/mcp/utils.mjs.map +1 -0
  146. package/dist/server/services/index.js +1 -1
  147. package/dist/server/services/index.js.map +1 -1
  148. package/dist/server/services/permission-checker.js +4 -1
  149. package/dist/server/services/permission-checker.js.map +1 -1
  150. package/dist/server/services/permission-checker.mjs +1 -1
  151. package/dist/server/services/permission-checker.mjs.map +1 -1
  152. package/dist/server/services/utils/populate.js +3 -3
  153. package/dist/server/services/utils/populate.js.map +1 -1
  154. package/dist/server/services/utils/populate.mjs +3 -3
  155. package/dist/server/services/utils/populate.mjs.map +1 -1
  156. package/dist/server/src/bootstrap.d.ts.map +1 -1
  157. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  158. package/dist/server/src/index.d.ts +3 -3
  159. package/dist/server/src/mcp/derive-content-type-mcp-tools.d.ts +12 -0
  160. package/dist/server/src/mcp/derive-content-type-mcp-tools.d.ts.map +1 -0
  161. package/dist/server/src/mcp/handlers/collection-handlers.d.ts +69 -0
  162. package/dist/server/src/mcp/handlers/collection-handlers.d.ts.map +1 -0
  163. package/dist/server/src/mcp/handlers/constants.d.ts +4 -0
  164. package/dist/server/src/mcp/handlers/constants.d.ts.map +1 -0
  165. package/dist/server/src/mcp/handlers/index.d.ts +3 -0
  166. package/dist/server/src/mcp/handlers/index.d.ts.map +1 -0
  167. package/dist/server/src/mcp/handlers/single-type-handlers.d.ts +66 -0
  168. package/dist/server/src/mcp/handlers/single-type-handlers.d.ts.map +1 -0
  169. package/dist/server/src/mcp/permissions.d.ts +49 -0
  170. package/dist/server/src/mcp/permissions.d.ts.map +1 -0
  171. package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts +8 -0
  172. package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts.map +1 -0
  173. package/dist/server/src/mcp/schemas/blocks-schema.d.ts +8 -0
  174. package/dist/server/src/mcp/schemas/blocks-schema.d.ts.map +1 -0
  175. package/dist/server/src/mcp/schemas/data-schema.d.ts +36 -0
  176. package/dist/server/src/mcp/schemas/data-schema.d.ts.map +1 -0
  177. package/dist/server/src/mcp/schemas/filters-schema.d.ts +22 -0
  178. package/dist/server/src/mcp/schemas/filters-schema.d.ts.map +1 -0
  179. package/dist/server/src/mcp/schemas/index.d.ts +7 -0
  180. package/dist/server/src/mcp/schemas/index.d.ts.map +1 -0
  181. package/dist/server/src/mcp/schemas/input-schemas.d.ts +10 -0
  182. package/dist/server/src/mcp/schemas/input-schemas.d.ts.map +1 -0
  183. package/dist/server/src/mcp/schemas/output-schemas.d.ts +18 -0
  184. package/dist/server/src/mcp/schemas/output-schemas.d.ts.map +1 -0
  185. package/dist/server/src/mcp/schemas/sort-schema.d.ts +24 -0
  186. package/dist/server/src/mcp/schemas/sort-schema.d.ts.map +1 -0
  187. package/dist/server/src/mcp/types.d.ts +31 -0
  188. package/dist/server/src/mcp/types.d.ts.map +1 -0
  189. package/dist/server/src/mcp/utils.d.ts +21 -0
  190. package/dist/server/src/mcp/utils.d.ts.map +1 -0
  191. package/dist/server/src/services/index.d.ts +3 -3
  192. package/dist/server/src/services/permission-checker.d.ts +13 -3
  193. package/dist/server/src/services/permission-checker.d.ts.map +1 -1
  194. package/dist/server/src/services/utils/configuration/index.d.ts +2 -2
  195. package/dist/server/src/services/utils/configuration/layouts.d.ts +2 -2
  196. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  197. package/package.json +10 -8
@@ -0,0 +1,524 @@
1
+ 'use strict';
2
+
3
+ var strapiUtils = require('@strapi/utils');
4
+ var permissionChecker = require('../services/permission-checker.js');
5
+ var utils = require('./utils.js');
6
+ var permissions = require('./permissions.js');
7
+ require('./schemas/blocks-schema.js');
8
+ var inputSchemas = require('./schemas/input-schemas.js');
9
+ var dataSchema = require('./schemas/data-schema.js');
10
+ var sortSchema = require('./schemas/sort-schema.js');
11
+ var filtersSchema = require('./schemas/filters-schema.js');
12
+ var outputSchemas = require('./schemas/output-schemas.js');
13
+ var collectionHandlers = require('./handlers/collection-handlers.js');
14
+ var singleTypeHandlers = require('./handlers/single-type-handlers.js');
15
+
16
+ // ---------------------------------------------------------------------------
17
+ // Collection-type tool-definition builder
18
+ // ---------------------------------------------------------------------------
19
+ /**
20
+ * Derives the full set of `DerivedTool` definitions for a single collection-type model.
21
+ * Produces list/get/create/update/delete tools, plus publish/unpublish/discard_draft
22
+ * when draft-and-publish is enabled. Each tool's input/output schema is resolved
23
+ * per-request so RBAC field and locale constraints are applied at call time.
24
+ */ const buildCollectionTools = (strapi, model, ctx)=>{
25
+ const uid = model.uid;
26
+ const slug = utils.slugifyUidForMcpToolName(uid);
27
+ const draftAndPublish = model.options?.draftAndPublish === true;
28
+ const { attributes } = model;
29
+ const runtimeLocaleSchema = permissions.buildLocaleSchema(ctx.localeCodes, ctx.defaultLocale);
30
+ const resolveReadFields = (context)=>permissions.getPermittedFields(strapi, context.userAbility, permissionChecker.ACTIONS.read, uid, attributes);
31
+ const resolveReadOutputSchema = (context)=>outputSchemas.buildDocumentOutputSchema(attributes, resolveReadFields(context));
32
+ const resolveListInputSchema = (context)=>{
33
+ const readFields = resolveReadFields(context);
34
+ const localeSchema = permissions.resolvePermittedLocaleSchema(strapi, context, permissionChecker.ACTIONS.read, uid, ctx.localeCodes, ctx.defaultLocale, runtimeLocaleSchema);
35
+ return strapiUtils.z.object({
36
+ locale: localeSchema,
37
+ status: inputSchemas.statusSchema,
38
+ page: inputSchemas.pageSchema,
39
+ pageSize: inputSchemas.pageSizeSchema,
40
+ sort: sortSchema.buildSortSchema(attributes, readFields),
41
+ filters: filtersSchema.buildFiltersSchema(attributes, readFields)
42
+ });
43
+ };
44
+ const resolveGetInputSchema = (context)=>{
45
+ const localeSchema = permissions.resolvePermittedLocaleSchema(strapi, context, permissionChecker.ACTIONS.read, uid, ctx.localeCodes, ctx.defaultLocale, runtimeLocaleSchema);
46
+ return strapiUtils.z.object({
47
+ documentId: inputSchemas.documentIdSchema,
48
+ locale: localeSchema,
49
+ status: inputSchemas.statusSchema
50
+ });
51
+ };
52
+ const resolveCreateInputSchema = (context)=>{
53
+ const writeFields = permissions.getPermittedFields(strapi, context.userAbility, permissionChecker.ACTIONS.create, uid, attributes);
54
+ const dataSchema$1 = dataSchema.buildDataSchema(strapi, model, attributes, writeFields);
55
+ const localeSchema = permissions.resolvePermittedLocaleSchema(strapi, context, permissionChecker.ACTIONS.create, uid, ctx.localeCodes, ctx.defaultLocale, runtimeLocaleSchema);
56
+ return strapiUtils.z.object({
57
+ data: dataSchema$1,
58
+ locale: localeSchema
59
+ });
60
+ };
61
+ const resolveUpdateInputSchema = (context)=>{
62
+ const writeFields = permissions.getPermittedFields(strapi, context.userAbility, permissionChecker.ACTIONS.update, uid, attributes);
63
+ const dataSchema$1 = dataSchema.buildDataSchema(strapi, model, attributes, writeFields);
64
+ const localeSchema = permissions.resolvePermittedLocaleSchema(strapi, context, permissionChecker.ACTIONS.update, uid, ctx.localeCodes, ctx.defaultLocale, runtimeLocaleSchema);
65
+ return strapiUtils.z.object({
66
+ documentId: inputSchemas.documentIdSchema,
67
+ data: dataSchema$1,
68
+ locale: localeSchema
69
+ });
70
+ };
71
+ const resolveDeleteInputSchema = (context)=>{
72
+ const localeSchema = permissions.resolvePermittedLocaleSchema(strapi, context, permissionChecker.ACTIONS.delete, uid, ctx.localeCodes, ctx.defaultLocale, runtimeLocaleSchema);
73
+ return strapiUtils.z.object({
74
+ documentId: inputSchemas.documentIdSchema,
75
+ locale: localeSchema
76
+ });
77
+ };
78
+ const resolvePublishInputSchema = (context)=>{
79
+ const localeSchema = permissions.resolvePermittedLocaleSchema(strapi, context, permissionChecker.ACTIONS.publish, uid, ctx.localeCodes, ctx.defaultLocale, runtimeLocaleSchema);
80
+ return strapiUtils.z.object({
81
+ documentId: inputSchemas.documentIdSchema,
82
+ locale: localeSchema
83
+ });
84
+ };
85
+ const resolveUnpublishInputSchema = (context)=>{
86
+ const localeSchema = permissions.resolvePermittedLocaleSchema(strapi, context, permissionChecker.ACTIONS.unpublish, uid, ctx.localeCodes, ctx.defaultLocale, runtimeLocaleSchema);
87
+ return strapiUtils.z.object({
88
+ documentId: inputSchemas.documentIdSchema,
89
+ locale: localeSchema,
90
+ discardDraft: strapiUtils.z.boolean().optional().describe('Also discard the draft when unpublishing.')
91
+ });
92
+ };
93
+ const resolveDiscardDraftInputSchema = (context)=>{
94
+ const localeSchema = permissions.resolvePermittedLocaleSchema(strapi, context, permissionChecker.ACTIONS.discard, uid, ctx.localeCodes, ctx.defaultLocale, runtimeLocaleSchema);
95
+ return strapiUtils.z.object({
96
+ documentId: inputSchemas.documentIdSchema,
97
+ locale: localeSchema
98
+ });
99
+ };
100
+ const tools = [
101
+ {
102
+ name: `list_${slug}`,
103
+ telemetry: {
104
+ source: 'content-manager',
105
+ name: 'list'
106
+ },
107
+ ...utils.describeTool({
108
+ apiID: model.apiID,
109
+ uid,
110
+ operation: 'list'
111
+ }),
112
+ auth: {
113
+ policies: [
114
+ {
115
+ action: permissionChecker.ACTIONS.read,
116
+ subject: uid
117
+ }
118
+ ]
119
+ },
120
+ resolveInputSchema: resolveListInputSchema,
121
+ resolveOutputSchema: (context)=>outputSchemas.buildListOutputSchema(attributes, resolveReadFields(context)),
122
+ createHandler: collectionHandlers.createCollectionListHandler(uid)
123
+ },
124
+ {
125
+ name: `get_${slug}`,
126
+ telemetry: {
127
+ source: 'content-manager',
128
+ name: 'get'
129
+ },
130
+ ...utils.describeTool({
131
+ apiID: model.apiID,
132
+ uid,
133
+ operation: 'get'
134
+ }),
135
+ auth: {
136
+ policies: [
137
+ {
138
+ action: permissionChecker.ACTIONS.read,
139
+ subject: uid
140
+ }
141
+ ]
142
+ },
143
+ resolveInputSchema: resolveGetInputSchema,
144
+ resolveOutputSchema: resolveReadOutputSchema,
145
+ createHandler: collectionHandlers.createCollectionGetHandler(uid)
146
+ },
147
+ {
148
+ name: `create_${slug}`,
149
+ telemetry: {
150
+ source: 'content-manager',
151
+ name: 'create'
152
+ },
153
+ ...utils.describeTool({
154
+ apiID: model.apiID,
155
+ uid,
156
+ operation: 'create'
157
+ }),
158
+ auth: {
159
+ policies: [
160
+ {
161
+ action: permissionChecker.ACTIONS.create,
162
+ subject: uid
163
+ }
164
+ ]
165
+ },
166
+ resolveInputSchema: resolveCreateInputSchema,
167
+ resolveOutputSchema: resolveReadOutputSchema,
168
+ createHandler: collectionHandlers.createCollectionCreateHandler(uid)
169
+ },
170
+ {
171
+ name: `update_${slug}`,
172
+ telemetry: {
173
+ source: 'content-manager',
174
+ name: 'update'
175
+ },
176
+ ...utils.describeTool({
177
+ apiID: model.apiID,
178
+ uid,
179
+ operation: 'update'
180
+ }),
181
+ auth: {
182
+ policies: [
183
+ {
184
+ action: permissionChecker.ACTIONS.update,
185
+ subject: uid
186
+ }
187
+ ]
188
+ },
189
+ resolveInputSchema: resolveUpdateInputSchema,
190
+ resolveOutputSchema: resolveReadOutputSchema,
191
+ createHandler: collectionHandlers.createCollectionUpdateHandler(uid)
192
+ },
193
+ {
194
+ name: `delete_${slug}`,
195
+ telemetry: {
196
+ source: 'content-manager',
197
+ name: 'delete'
198
+ },
199
+ ...utils.describeTool({
200
+ apiID: model.apiID,
201
+ uid,
202
+ operation: 'delete'
203
+ }),
204
+ auth: {
205
+ policies: [
206
+ {
207
+ action: permissionChecker.ACTIONS.delete,
208
+ subject: uid
209
+ }
210
+ ]
211
+ },
212
+ resolveInputSchema: resolveDeleteInputSchema,
213
+ resolveOutputSchema: (context)=>outputSchemas.buildDeleteOutputSchema(attributes, resolveReadFields(context)),
214
+ createHandler: collectionHandlers.createCollectionDeleteHandler(uid)
215
+ }
216
+ ];
217
+ if (draftAndPublish === true) {
218
+ tools.push({
219
+ name: `publish_${slug}`,
220
+ telemetry: {
221
+ source: 'content-manager',
222
+ name: 'publish'
223
+ },
224
+ ...utils.describeTool({
225
+ apiID: model.apiID,
226
+ uid,
227
+ operation: 'publish'
228
+ }),
229
+ auth: {
230
+ policies: [
231
+ {
232
+ action: permissionChecker.ACTIONS.publish,
233
+ subject: uid
234
+ }
235
+ ]
236
+ },
237
+ resolveInputSchema: resolvePublishInputSchema,
238
+ resolveOutputSchema: resolveReadOutputSchema,
239
+ createHandler: collectionHandlers.createCollectionPublishHandler(uid)
240
+ }, {
241
+ name: `unpublish_${slug}`,
242
+ telemetry: {
243
+ source: 'content-manager',
244
+ name: 'unpublish'
245
+ },
246
+ ...utils.describeTool({
247
+ apiID: model.apiID,
248
+ uid,
249
+ operation: 'unpublish'
250
+ }),
251
+ auth: {
252
+ policies: [
253
+ {
254
+ action: permissionChecker.ACTIONS.unpublish,
255
+ subject: uid
256
+ }
257
+ ]
258
+ },
259
+ resolveInputSchema: resolveUnpublishInputSchema,
260
+ resolveOutputSchema: resolveReadOutputSchema,
261
+ createHandler: collectionHandlers.createCollectionUnpublishHandler(uid)
262
+ }, {
263
+ name: `discard_${slug}_draft`,
264
+ telemetry: {
265
+ source: 'content-manager',
266
+ name: 'discard_draft'
267
+ },
268
+ ...utils.describeTool({
269
+ apiID: model.apiID,
270
+ uid,
271
+ operation: 'discard_draft'
272
+ }),
273
+ auth: {
274
+ policies: [
275
+ {
276
+ action: permissionChecker.ACTIONS.discard,
277
+ subject: uid
278
+ }
279
+ ]
280
+ },
281
+ resolveInputSchema: resolveDiscardDraftInputSchema,
282
+ resolveOutputSchema: resolveReadOutputSchema,
283
+ createHandler: collectionHandlers.createCollectionDiscardDraftHandler(uid)
284
+ });
285
+ }
286
+ return tools;
287
+ };
288
+ // ---------------------------------------------------------------------------
289
+ // Single-type tool-definition builder
290
+ // ---------------------------------------------------------------------------
291
+ /**
292
+ * Derives the full set of `DerivedTool` definitions for a single single-type model.
293
+ * Produces get/write/delete tools, plus publish/unpublish/discard_draft when
294
+ * draft-and-publish is enabled. Each tool's input/output schema is resolved
295
+ * per-request so RBAC field and locale constraints are applied at call time.
296
+ */ const buildSingleTypeTools = (strapi, model, ctx)=>{
297
+ const uid = model.uid;
298
+ const slug = utils.slugifyUidForMcpToolName(uid);
299
+ const draftAndPublish = model.options?.draftAndPublish === true;
300
+ const { attributes } = model;
301
+ const runtimeLocaleSchema = permissions.buildLocaleSchema(ctx.localeCodes, ctx.defaultLocale);
302
+ const resolveReadFields = (context)=>permissions.getPermittedFields(strapi, context.userAbility, permissionChecker.ACTIONS.read, uid, attributes);
303
+ const resolveReadOutputSchema = (context)=>outputSchemas.buildDocumentOutputSchema(attributes, resolveReadFields(context));
304
+ const resolveGetInputSchema = (context)=>{
305
+ const localeSchema = permissions.resolvePermittedLocaleSchema(strapi, context, permissionChecker.ACTIONS.read, uid, ctx.localeCodes, ctx.defaultLocale, runtimeLocaleSchema);
306
+ return strapiUtils.z.object({
307
+ locale: localeSchema,
308
+ status: inputSchemas.statusSchema
309
+ });
310
+ };
311
+ const resolveWriteInputSchema = (context)=>{
312
+ const createFields = permissions.getPermittedFields(strapi, context.userAbility, permissionChecker.ACTIONS.create, uid, attributes);
313
+ const updateFields = permissions.getPermittedFields(strapi, context.userAbility, permissionChecker.ACTIONS.update, uid, attributes);
314
+ // null means all fields permitted; union of null with anything is null (all permitted)
315
+ const writeFields = createFields === null || updateFields === null ? null : new Set([
316
+ ...createFields,
317
+ ...updateFields
318
+ ]);
319
+ const dataSchema$1 = dataSchema.buildDataSchema(strapi, model, attributes, writeFields);
320
+ const localeSchema = permissions.resolvePermittedLocaleSchema(strapi, context, permissionChecker.ACTIONS.update, uid, ctx.localeCodes, ctx.defaultLocale, runtimeLocaleSchema);
321
+ return strapiUtils.z.object({
322
+ data: dataSchema$1,
323
+ locale: localeSchema
324
+ });
325
+ };
326
+ const resolveDeleteInputSchema = (context)=>{
327
+ const localeSchema = permissions.resolvePermittedLocaleSchema(strapi, context, permissionChecker.ACTIONS.delete, uid, ctx.localeCodes, ctx.defaultLocale, runtimeLocaleSchema);
328
+ return strapiUtils.z.object({
329
+ locale: localeSchema
330
+ });
331
+ };
332
+ const resolvePublishInputSchema = (context)=>{
333
+ const localeSchema = permissions.resolvePermittedLocaleSchema(strapi, context, permissionChecker.ACTIONS.publish, uid, ctx.localeCodes, ctx.defaultLocale, runtimeLocaleSchema);
334
+ return strapiUtils.z.object({
335
+ locale: localeSchema
336
+ });
337
+ };
338
+ const resolveUnpublishInputSchema = (context)=>{
339
+ const localeSchema = permissions.resolvePermittedLocaleSchema(strapi, context, permissionChecker.ACTIONS.unpublish, uid, ctx.localeCodes, ctx.defaultLocale, runtimeLocaleSchema);
340
+ return strapiUtils.z.object({
341
+ locale: localeSchema,
342
+ discardDraft: strapiUtils.z.boolean().optional().describe('Also discard the draft when unpublishing.')
343
+ });
344
+ };
345
+ const resolveDiscardDraftInputSchema = (context)=>{
346
+ const localeSchema = permissions.resolvePermittedLocaleSchema(strapi, context, permissionChecker.ACTIONS.discard, uid, ctx.localeCodes, ctx.defaultLocale, runtimeLocaleSchema);
347
+ return strapiUtils.z.object({
348
+ locale: localeSchema
349
+ });
350
+ };
351
+ const tools = [
352
+ {
353
+ name: `get_${slug}`,
354
+ telemetry: {
355
+ source: 'content-manager',
356
+ name: 'get'
357
+ },
358
+ ...utils.describeTool({
359
+ apiID: model.apiID,
360
+ uid,
361
+ operation: 'get'
362
+ }),
363
+ auth: {
364
+ policies: [
365
+ {
366
+ action: permissionChecker.ACTIONS.read,
367
+ subject: uid
368
+ }
369
+ ]
370
+ },
371
+ resolveInputSchema: resolveGetInputSchema,
372
+ resolveOutputSchema: resolveReadOutputSchema,
373
+ createHandler: singleTypeHandlers.createSingleGetHandler(uid)
374
+ },
375
+ {
376
+ name: `write_${slug}`,
377
+ telemetry: {
378
+ source: 'content-manager',
379
+ name: 'write'
380
+ },
381
+ ...utils.describeTool({
382
+ apiID: model.apiID,
383
+ uid,
384
+ operation: 'write'
385
+ }),
386
+ auth: {
387
+ policies: [
388
+ {
389
+ action: permissionChecker.ACTIONS.create,
390
+ subject: uid
391
+ },
392
+ {
393
+ action: permissionChecker.ACTIONS.update,
394
+ subject: uid
395
+ }
396
+ ]
397
+ },
398
+ resolveInputSchema: resolveWriteInputSchema,
399
+ resolveOutputSchema: resolveReadOutputSchema,
400
+ createHandler: singleTypeHandlers.createSingleWriteHandler(uid)
401
+ },
402
+ {
403
+ name: `delete_${slug}`,
404
+ telemetry: {
405
+ source: 'content-manager',
406
+ name: 'delete'
407
+ },
408
+ ...utils.describeTool({
409
+ apiID: model.apiID,
410
+ uid,
411
+ operation: 'delete'
412
+ }),
413
+ auth: {
414
+ policies: [
415
+ {
416
+ action: permissionChecker.ACTIONS.delete,
417
+ subject: uid
418
+ }
419
+ ]
420
+ },
421
+ resolveInputSchema: resolveDeleteInputSchema,
422
+ resolveOutputSchema: (context)=>outputSchemas.buildDeleteOutputSchema(attributes, resolveReadFields(context)),
423
+ createHandler: singleTypeHandlers.createSingleDeleteHandler(uid)
424
+ }
425
+ ];
426
+ if (draftAndPublish === true) {
427
+ tools.push({
428
+ name: `publish_${slug}`,
429
+ telemetry: {
430
+ source: 'content-manager',
431
+ name: 'publish'
432
+ },
433
+ ...utils.describeTool({
434
+ apiID: model.apiID,
435
+ uid,
436
+ operation: 'publish'
437
+ }),
438
+ auth: {
439
+ policies: [
440
+ {
441
+ action: permissionChecker.ACTIONS.publish,
442
+ subject: uid
443
+ }
444
+ ]
445
+ },
446
+ resolveInputSchema: resolvePublishInputSchema,
447
+ resolveOutputSchema: resolveReadOutputSchema,
448
+ createHandler: singleTypeHandlers.createSinglePublishHandler(uid)
449
+ }, {
450
+ name: `unpublish_${slug}`,
451
+ telemetry: {
452
+ source: 'content-manager',
453
+ name: 'unpublish'
454
+ },
455
+ ...utils.describeTool({
456
+ apiID: model.apiID,
457
+ uid,
458
+ operation: 'unpublish'
459
+ }),
460
+ auth: {
461
+ policies: [
462
+ {
463
+ action: permissionChecker.ACTIONS.unpublish,
464
+ subject: uid
465
+ }
466
+ ]
467
+ },
468
+ resolveInputSchema: resolveUnpublishInputSchema,
469
+ resolveOutputSchema: resolveReadOutputSchema,
470
+ createHandler: singleTypeHandlers.createSingleUnpublishHandler(uid)
471
+ }, {
472
+ name: `discard_${slug}_draft`,
473
+ telemetry: {
474
+ source: 'content-manager',
475
+ name: 'discard_draft'
476
+ },
477
+ ...utils.describeTool({
478
+ apiID: model.apiID,
479
+ uid,
480
+ operation: 'discard_draft'
481
+ }),
482
+ auth: {
483
+ policies: [
484
+ {
485
+ action: permissionChecker.ACTIONS.discard,
486
+ subject: uid
487
+ }
488
+ ]
489
+ },
490
+ resolveInputSchema: resolveDiscardDraftInputSchema,
491
+ resolveOutputSchema: resolveReadOutputSchema,
492
+ createHandler: singleTypeHandlers.createSingleDiscardDraftHandler(uid)
493
+ });
494
+ }
495
+ return tools;
496
+ };
497
+ // ---------------------------------------------------------------------------
498
+ // Main export
499
+ // ---------------------------------------------------------------------------
500
+ /**
501
+ * Builds MCP tool definitions for displayed content-manager models.
502
+ * Visibility is enforced separately via static auth on each tool and MCP session capability sync.
503
+ */ const deriveDisplayedContentTypeMcpToolDefinitions = (strapi, models, ctx = {
504
+ localeCodes: null,
505
+ defaultLocale: null
506
+ })=>{
507
+ const tools = [];
508
+ for (const model of models){
509
+ if (model.kind === 'collectionType') {
510
+ tools.push(...buildCollectionTools(strapi, model, ctx));
511
+ } else if (model.kind === 'singleType') {
512
+ tools.push(...buildSingleTypeTools(strapi, model, ctx));
513
+ }
514
+ }
515
+ return tools;
516
+ };
517
+
518
+ exports.slugifyUidForMcpToolName = utils.slugifyUidForMcpToolName;
519
+ exports.getComponentLeafPaths = permissions.getComponentLeafPaths;
520
+ exports.buildDataSchema = dataSchema.buildDataSchema;
521
+ exports.buildSortSchema = sortSchema.buildSortSchema;
522
+ exports.buildFiltersSchema = filtersSchema.buildFiltersSchema;
523
+ exports.deriveDisplayedContentTypeMcpToolDefinitions = deriveDisplayedContentTypeMcpToolDefinitions;
524
+ //# sourceMappingURL=derive-content-type-mcp-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive-content-type-mcp-tools.js","sources":["../../../server/src/mcp/derive-content-type-mcp-tools.ts"],"sourcesContent":["import { z } from '@strapi/utils';\nimport type { Core, Modules, UID } from '@strapi/types';\n\nimport { ACTIONS } from '../services/permission-checker';\n\nimport type { ContentManagerModelForMcp, McpToolsBuildContext, DerivedTool } from './types';\nimport { slugifyUidForMcpToolName, describeTool } from './utils';\nimport { buildLocaleSchema, resolvePermittedLocaleSchema, getPermittedFields } from './permissions';\nimport {\n statusSchema,\n documentIdSchema,\n pageSchema,\n pageSizeSchema,\n buildDataSchema,\n buildSortSchema,\n buildFiltersSchema,\n buildDocumentOutputSchema,\n buildListOutputSchema,\n buildDeleteOutputSchema,\n} from './schemas';\nimport {\n createCollectionListHandler,\n createCollectionGetHandler,\n createCollectionCreateHandler,\n createCollectionUpdateHandler,\n createCollectionDeleteHandler,\n createCollectionPublishHandler,\n createCollectionUnpublishHandler,\n createCollectionDiscardDraftHandler,\n createSingleGetHandler,\n createSingleWriteHandler,\n createSingleDeleteHandler,\n createSinglePublishHandler,\n createSingleUnpublishHandler,\n createSingleDiscardDraftHandler,\n} from './handlers';\n\n// ---------------------------------------------------------------------------\n// Public re-exports — backward compatibility with existing test imports\n// ---------------------------------------------------------------------------\nexport type { ContentManagerModelForMcp };\nexport { slugifyUidForMcpToolName } from './utils';\nexport { buildSortSchema, buildFiltersSchema, buildDataSchema } from './schemas';\nexport { getComponentLeafPaths } from './permissions';\n\n// ---------------------------------------------------------------------------\n// Collection-type tool-definition builder\n// ---------------------------------------------------------------------------\n\n/**\n * Derives the full set of `DerivedTool` definitions for a single collection-type model.\n * Produces list/get/create/update/delete tools, plus publish/unpublish/discard_draft\n * when draft-and-publish is enabled. Each tool's input/output schema is resolved\n * per-request so RBAC field and locale constraints are applied at call time.\n */\nconst buildCollectionTools = (\n strapi: Core.Strapi,\n model: ContentManagerModelForMcp,\n ctx: McpToolsBuildContext\n): DerivedTool[] => {\n const uid = model.uid as UID.CollectionType;\n const slug = slugifyUidForMcpToolName(uid);\n const draftAndPublish = model.options?.draftAndPublish === true;\n const { attributes } = model;\n const runtimeLocaleSchema = buildLocaleSchema(ctx.localeCodes, ctx.defaultLocale);\n\n const resolveReadFields = (context: Modules.MCP.McpHandlerContext) =>\n getPermittedFields(strapi, context.userAbility, ACTIONS.read, uid, attributes);\n\n const resolveReadOutputSchema = (context: Modules.MCP.McpHandlerContext) =>\n buildDocumentOutputSchema(attributes, resolveReadFields(context));\n\n const resolveListInputSchema = (context: Modules.MCP.McpHandlerContext) => {\n const readFields = resolveReadFields(context);\n const localeSchema = resolvePermittedLocaleSchema(\n strapi,\n context,\n ACTIONS.read,\n uid,\n ctx.localeCodes,\n ctx.defaultLocale,\n runtimeLocaleSchema\n );\n return z.object({\n locale: localeSchema,\n status: statusSchema,\n page: pageSchema,\n pageSize: pageSizeSchema,\n sort: buildSortSchema(attributes, readFields),\n filters: buildFiltersSchema(attributes, readFields),\n });\n };\n\n const resolveGetInputSchema = (context: Modules.MCP.McpHandlerContext) => {\n const localeSchema = resolvePermittedLocaleSchema(\n strapi,\n context,\n ACTIONS.read,\n uid,\n ctx.localeCodes,\n ctx.defaultLocale,\n runtimeLocaleSchema\n );\n return z.object({\n documentId: documentIdSchema,\n locale: localeSchema,\n status: statusSchema,\n });\n };\n\n const resolveCreateInputSchema = (context: Modules.MCP.McpHandlerContext) => {\n const writeFields = getPermittedFields(\n strapi,\n context.userAbility,\n ACTIONS.create,\n uid,\n attributes\n );\n const dataSchema = buildDataSchema(strapi, model, attributes, writeFields);\n const localeSchema = resolvePermittedLocaleSchema(\n strapi,\n context,\n ACTIONS.create,\n uid,\n ctx.localeCodes,\n ctx.defaultLocale,\n runtimeLocaleSchema\n );\n return z.object({ data: dataSchema, locale: localeSchema });\n };\n\n const resolveUpdateInputSchema = (context: Modules.MCP.McpHandlerContext) => {\n const writeFields = getPermittedFields(\n strapi,\n context.userAbility,\n ACTIONS.update,\n uid,\n attributes\n );\n const dataSchema = buildDataSchema(strapi, model, attributes, writeFields);\n const localeSchema = resolvePermittedLocaleSchema(\n strapi,\n context,\n ACTIONS.update,\n uid,\n ctx.localeCodes,\n ctx.defaultLocale,\n runtimeLocaleSchema\n );\n return z.object({\n documentId: documentIdSchema,\n data: dataSchema,\n locale: localeSchema,\n });\n };\n\n const resolveDeleteInputSchema = (context: Modules.MCP.McpHandlerContext) => {\n const localeSchema = resolvePermittedLocaleSchema(\n strapi,\n context,\n ACTIONS.delete,\n uid,\n ctx.localeCodes,\n ctx.defaultLocale,\n runtimeLocaleSchema\n );\n return z.object({\n documentId: documentIdSchema,\n locale: localeSchema,\n });\n };\n\n const resolvePublishInputSchema = (context: Modules.MCP.McpHandlerContext) => {\n const localeSchema = resolvePermittedLocaleSchema(\n strapi,\n context,\n ACTIONS.publish,\n uid,\n ctx.localeCodes,\n ctx.defaultLocale,\n runtimeLocaleSchema\n );\n return z.object({\n documentId: documentIdSchema,\n locale: localeSchema,\n });\n };\n\n const resolveUnpublishInputSchema = (context: Modules.MCP.McpHandlerContext) => {\n const localeSchema = resolvePermittedLocaleSchema(\n strapi,\n context,\n ACTIONS.unpublish,\n uid,\n ctx.localeCodes,\n ctx.defaultLocale,\n runtimeLocaleSchema\n );\n return z.object({\n documentId: documentIdSchema,\n locale: localeSchema,\n discardDraft: z.boolean().optional().describe('Also discard the draft when unpublishing.'),\n });\n };\n\n const resolveDiscardDraftInputSchema = (context: Modules.MCP.McpHandlerContext) => {\n const localeSchema = resolvePermittedLocaleSchema(\n strapi,\n context,\n ACTIONS.discard,\n uid,\n ctx.localeCodes,\n ctx.defaultLocale,\n runtimeLocaleSchema\n );\n return z.object({\n documentId: documentIdSchema,\n locale: localeSchema,\n });\n };\n\n const tools: DerivedTool[] = [\n {\n name: `list_${slug}`,\n telemetry: { source: 'content-manager', name: 'list' },\n ...describeTool({ apiID: model.apiID, uid, operation: 'list' }),\n auth: { policies: [{ action: ACTIONS.read, subject: uid }] },\n resolveInputSchema: resolveListInputSchema,\n resolveOutputSchema: (context) =>\n buildListOutputSchema(attributes, resolveReadFields(context)),\n createHandler: createCollectionListHandler(uid),\n },\n {\n name: `get_${slug}`,\n telemetry: { source: 'content-manager', name: 'get' },\n ...describeTool({ apiID: model.apiID, uid, operation: 'get' }),\n auth: { policies: [{ action: ACTIONS.read, subject: uid }] },\n resolveInputSchema: resolveGetInputSchema,\n resolveOutputSchema: resolveReadOutputSchema,\n createHandler: createCollectionGetHandler(uid),\n },\n {\n name: `create_${slug}`,\n telemetry: { source: 'content-manager', name: 'create' },\n ...describeTool({ apiID: model.apiID, uid, operation: 'create' }),\n auth: { policies: [{ action: ACTIONS.create, subject: uid }] },\n resolveInputSchema: resolveCreateInputSchema,\n resolveOutputSchema: resolveReadOutputSchema,\n createHandler: createCollectionCreateHandler(uid),\n },\n {\n name: `update_${slug}`,\n telemetry: { source: 'content-manager', name: 'update' },\n ...describeTool({ apiID: model.apiID, uid, operation: 'update' }),\n auth: { policies: [{ action: ACTIONS.update, subject: uid }] },\n resolveInputSchema: resolveUpdateInputSchema,\n resolveOutputSchema: resolveReadOutputSchema,\n createHandler: createCollectionUpdateHandler(uid),\n },\n {\n name: `delete_${slug}`,\n telemetry: { source: 'content-manager', name: 'delete' },\n ...describeTool({ apiID: model.apiID, uid, operation: 'delete' }),\n auth: { policies: [{ action: ACTIONS.delete, subject: uid }] },\n resolveInputSchema: resolveDeleteInputSchema,\n resolveOutputSchema: (context) =>\n buildDeleteOutputSchema(attributes, resolveReadFields(context)),\n createHandler: createCollectionDeleteHandler(uid),\n },\n ];\n\n if (draftAndPublish === true) {\n tools.push(\n {\n name: `publish_${slug}`,\n telemetry: { source: 'content-manager', name: 'publish' },\n ...describeTool({ apiID: model.apiID, uid, operation: 'publish' }),\n auth: { policies: [{ action: ACTIONS.publish, subject: uid }] },\n resolveInputSchema: resolvePublishInputSchema,\n resolveOutputSchema: resolveReadOutputSchema,\n createHandler: createCollectionPublishHandler(uid),\n },\n {\n name: `unpublish_${slug}`,\n telemetry: { source: 'content-manager', name: 'unpublish' },\n ...describeTool({ apiID: model.apiID, uid, operation: 'unpublish' }),\n auth: { policies: [{ action: ACTIONS.unpublish, subject: uid }] },\n resolveInputSchema: resolveUnpublishInputSchema,\n resolveOutputSchema: resolveReadOutputSchema,\n createHandler: createCollectionUnpublishHandler(uid),\n },\n {\n name: `discard_${slug}_draft`,\n telemetry: { source: 'content-manager', name: 'discard_draft' },\n ...describeTool({ apiID: model.apiID, uid, operation: 'discard_draft' }),\n auth: { policies: [{ action: ACTIONS.discard, subject: uid }] },\n resolveInputSchema: resolveDiscardDraftInputSchema,\n resolveOutputSchema: resolveReadOutputSchema,\n createHandler: createCollectionDiscardDraftHandler(uid),\n }\n );\n }\n\n return tools;\n};\n\n// ---------------------------------------------------------------------------\n// Single-type tool-definition builder\n// ---------------------------------------------------------------------------\n\n/**\n * Derives the full set of `DerivedTool` definitions for a single single-type model.\n * Produces get/write/delete tools, plus publish/unpublish/discard_draft when\n * draft-and-publish is enabled. Each tool's input/output schema is resolved\n * per-request so RBAC field and locale constraints are applied at call time.\n */\nconst buildSingleTypeTools = (\n strapi: Core.Strapi,\n model: ContentManagerModelForMcp,\n ctx: McpToolsBuildContext\n): DerivedTool[] => {\n const uid = model.uid as UID.SingleType;\n const slug = slugifyUidForMcpToolName(uid);\n const draftAndPublish = model.options?.draftAndPublish === true;\n const { attributes } = model;\n const runtimeLocaleSchema = buildLocaleSchema(ctx.localeCodes, ctx.defaultLocale);\n\n const resolveReadFields = (context: Modules.MCP.McpHandlerContext) =>\n getPermittedFields(strapi, context.userAbility, ACTIONS.read, uid, attributes);\n\n const resolveReadOutputSchema = (context: Modules.MCP.McpHandlerContext) =>\n buildDocumentOutputSchema(attributes, resolveReadFields(context));\n\n const resolveGetInputSchema = (context: Modules.MCP.McpHandlerContext) => {\n const localeSchema = resolvePermittedLocaleSchema(\n strapi,\n context,\n ACTIONS.read,\n uid,\n ctx.localeCodes,\n ctx.defaultLocale,\n runtimeLocaleSchema\n );\n return z.object({\n locale: localeSchema,\n status: statusSchema,\n });\n };\n\n const resolveWriteInputSchema = (context: Modules.MCP.McpHandlerContext) => {\n const createFields = getPermittedFields(\n strapi,\n context.userAbility,\n ACTIONS.create,\n uid,\n attributes\n );\n const updateFields = getPermittedFields(\n strapi,\n context.userAbility,\n ACTIONS.update,\n uid,\n attributes\n );\n // null means all fields permitted; union of null with anything is null (all permitted)\n const writeFields: Set<string> | null =\n createFields === null || updateFields === null\n ? null\n : new Set([...createFields, ...updateFields]);\n const dataSchema = buildDataSchema(strapi, model, attributes, writeFields);\n const localeSchema = resolvePermittedLocaleSchema(\n strapi,\n context,\n ACTIONS.update,\n uid,\n ctx.localeCodes,\n ctx.defaultLocale,\n runtimeLocaleSchema\n );\n return z.object({ data: dataSchema, locale: localeSchema });\n };\n\n const resolveDeleteInputSchema = (context: Modules.MCP.McpHandlerContext) => {\n const localeSchema = resolvePermittedLocaleSchema(\n strapi,\n context,\n ACTIONS.delete,\n uid,\n ctx.localeCodes,\n ctx.defaultLocale,\n runtimeLocaleSchema\n );\n return z.object({\n locale: localeSchema,\n });\n };\n\n const resolvePublishInputSchema = (context: Modules.MCP.McpHandlerContext) => {\n const localeSchema = resolvePermittedLocaleSchema(\n strapi,\n context,\n ACTIONS.publish,\n uid,\n ctx.localeCodes,\n ctx.defaultLocale,\n runtimeLocaleSchema\n );\n return z.object({\n locale: localeSchema,\n });\n };\n\n const resolveUnpublishInputSchema = (context: Modules.MCP.McpHandlerContext) => {\n const localeSchema = resolvePermittedLocaleSchema(\n strapi,\n context,\n ACTIONS.unpublish,\n uid,\n ctx.localeCodes,\n ctx.defaultLocale,\n runtimeLocaleSchema\n );\n return z.object({\n locale: localeSchema,\n discardDraft: z.boolean().optional().describe('Also discard the draft when unpublishing.'),\n });\n };\n\n const resolveDiscardDraftInputSchema = (context: Modules.MCP.McpHandlerContext) => {\n const localeSchema = resolvePermittedLocaleSchema(\n strapi,\n context,\n ACTIONS.discard,\n uid,\n ctx.localeCodes,\n ctx.defaultLocale,\n runtimeLocaleSchema\n );\n return z.object({\n locale: localeSchema,\n });\n };\n\n const tools: DerivedTool[] = [\n {\n name: `get_${slug}`,\n telemetry: { source: 'content-manager', name: 'get' },\n ...describeTool({ apiID: model.apiID, uid, operation: 'get' }),\n auth: { policies: [{ action: ACTIONS.read, subject: uid }] },\n resolveInputSchema: resolveGetInputSchema,\n resolveOutputSchema: resolveReadOutputSchema,\n createHandler: createSingleGetHandler(uid),\n },\n {\n name: `write_${slug}`,\n telemetry: { source: 'content-manager', name: 'write' },\n ...describeTool({ apiID: model.apiID, uid, operation: 'write' }),\n auth: {\n policies: [\n { action: ACTIONS.create, subject: uid },\n { action: ACTIONS.update, subject: uid },\n ],\n },\n resolveInputSchema: resolveWriteInputSchema,\n resolveOutputSchema: resolveReadOutputSchema,\n createHandler: createSingleWriteHandler(uid),\n },\n {\n name: `delete_${slug}`,\n telemetry: { source: 'content-manager', name: 'delete' },\n ...describeTool({ apiID: model.apiID, uid, operation: 'delete' }),\n auth: { policies: [{ action: ACTIONS.delete, subject: uid }] },\n resolveInputSchema: resolveDeleteInputSchema,\n resolveOutputSchema: (context) =>\n buildDeleteOutputSchema(attributes, resolveReadFields(context)),\n createHandler: createSingleDeleteHandler(uid),\n },\n ];\n\n if (draftAndPublish === true) {\n tools.push(\n {\n name: `publish_${slug}`,\n telemetry: { source: 'content-manager', name: 'publish' },\n ...describeTool({ apiID: model.apiID, uid, operation: 'publish' }),\n auth: { policies: [{ action: ACTIONS.publish, subject: uid }] },\n resolveInputSchema: resolvePublishInputSchema,\n resolveOutputSchema: resolveReadOutputSchema,\n createHandler: createSinglePublishHandler(uid),\n },\n {\n name: `unpublish_${slug}`,\n telemetry: { source: 'content-manager', name: 'unpublish' },\n ...describeTool({ apiID: model.apiID, uid, operation: 'unpublish' }),\n auth: { policies: [{ action: ACTIONS.unpublish, subject: uid }] },\n resolveInputSchema: resolveUnpublishInputSchema,\n resolveOutputSchema: resolveReadOutputSchema,\n createHandler: createSingleUnpublishHandler(uid),\n },\n {\n name: `discard_${slug}_draft`,\n telemetry: { source: 'content-manager', name: 'discard_draft' },\n ...describeTool({ apiID: model.apiID, uid, operation: 'discard_draft' }),\n auth: { policies: [{ action: ACTIONS.discard, subject: uid }] },\n resolveInputSchema: resolveDiscardDraftInputSchema,\n resolveOutputSchema: resolveReadOutputSchema,\n createHandler: createSingleDiscardDraftHandler(uid),\n }\n );\n }\n\n return tools;\n};\n\n// ---------------------------------------------------------------------------\n// Main export\n// ---------------------------------------------------------------------------\n\n/**\n * Builds MCP tool definitions for displayed content-manager models.\n * Visibility is enforced separately via static auth on each tool and MCP session capability sync.\n */\nexport const deriveDisplayedContentTypeMcpToolDefinitions = (\n strapi: Core.Strapi,\n models: ContentManagerModelForMcp[],\n ctx: McpToolsBuildContext = { localeCodes: null, defaultLocale: null }\n): DerivedTool[] => {\n const tools: DerivedTool[] = [];\n\n for (const model of models) {\n if (model.kind === 'collectionType') {\n tools.push(...buildCollectionTools(strapi, model, ctx));\n } else if (model.kind === 'singleType') {\n tools.push(...buildSingleTypeTools(strapi, model, ctx));\n }\n }\n\n return tools;\n};\n"],"names":["buildCollectionTools","strapi","model","ctx","uid","slug","slugifyUidForMcpToolName","draftAndPublish","options","attributes","runtimeLocaleSchema","buildLocaleSchema","localeCodes","defaultLocale","resolveReadFields","context","getPermittedFields","userAbility","ACTIONS","read","resolveReadOutputSchema","buildDocumentOutputSchema","resolveListInputSchema","readFields","localeSchema","resolvePermittedLocaleSchema","z","object","locale","status","statusSchema","page","pageSchema","pageSize","pageSizeSchema","sort","buildSortSchema","filters","buildFiltersSchema","resolveGetInputSchema","documentId","documentIdSchema","resolveCreateInputSchema","writeFields","create","dataSchema","buildDataSchema","data","resolveUpdateInputSchema","update","resolveDeleteInputSchema","delete","resolvePublishInputSchema","publish","resolveUnpublishInputSchema","unpublish","discardDraft","boolean","optional","describe","resolveDiscardDraftInputSchema","discard","tools","name","telemetry","source","describeTool","apiID","operation","auth","policies","action","subject","resolveInputSchema","resolveOutputSchema","buildListOutputSchema","createHandler","createCollectionListHandler","createCollectionGetHandler","createCollectionCreateHandler","createCollectionUpdateHandler","buildDeleteOutputSchema","createCollectionDeleteHandler","push","createCollectionPublishHandler","createCollectionUnpublishHandler","createCollectionDiscardDraftHandler","buildSingleTypeTools","resolveWriteInputSchema","createFields","updateFields","Set","createSingleGetHandler","createSingleWriteHandler","createSingleDeleteHandler","createSinglePublishHandler","createSingleUnpublishHandler","createSingleDiscardDraftHandler","deriveDisplayedContentTypeMcpToolDefinitions","models","kind"],"mappings":"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"}