@plitzi/sdk-server 0.32.3 → 0.32.5

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 (416) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/adapters/jsonAdapters.js +6 -1
  3. package/dist/core/createServer.js +8 -44
  4. package/dist/core/health.js +15 -0
  5. package/dist/core/http/dispatcher.js +29 -0
  6. package/dist/core/http/securityHeaders.js +15 -0
  7. package/dist/core/http/stages/authRoutes.js +41 -0
  8. package/dist/core/http/stages/health.js +12 -0
  9. package/dist/core/http/stages/middlewares.js +16 -0
  10. package/dist/core/http/stages/pluginAssets.js +20 -0
  11. package/dist/core/http/stages/static.js +30 -0
  12. package/dist/core/server/baseServer.js +29 -0
  13. package/dist/core/server/mcpServer.js +29 -0
  14. package/dist/core/server/ssrServer.js +54 -0
  15. package/dist/core/services/mcp.js +22 -0
  16. package/dist/core/services/preview.js +37 -0
  17. package/dist/core/services/registry.js +30 -0
  18. package/dist/core/services/resolve.js +12 -0
  19. package/dist/core/services/rsc.js +11 -0
  20. package/dist/core/services/ssr.js +13 -0
  21. package/dist/core/transports.js +9 -9
  22. package/dist/helpers/buildServerInfo.js +11 -11
  23. package/dist/index.js +19 -6
  24. package/dist/modules/ai/AIEngine.js +4 -4
  25. package/dist/modules/ai/toolkit.js +58 -0
  26. package/dist/modules/mcp/constants.js +4 -0
  27. package/dist/modules/mcp/handler.js +15 -21
  28. package/dist/modules/mcp/helpers/computeVersion.js +16 -0
  29. package/dist/modules/mcp/helpers/guide.js +130 -0
  30. package/dist/modules/mcp/helpers/opResult.js +18 -0
  31. package/dist/modules/mcp/helpers/space.js +137 -0
  32. package/dist/modules/mcp/previewClient.js +31 -0
  33. package/dist/modules/mcp/resources/canonical.js +45 -0
  34. package/dist/modules/mcp/resources/core.js +14 -0
  35. package/dist/modules/mcp/resources/envelope.js +14 -0
  36. package/dist/modules/mcp/resources/primer.js +25 -0
  37. package/dist/modules/mcp/resources/register.js +142 -0
  38. package/dist/modules/mcp/resources/router.js +25 -0
  39. package/dist/modules/mcp/resources/schema.js +33 -0
  40. package/dist/modules/mcp/resources/style.js +27 -0
  41. package/dist/modules/mcp/screenshotClient.js +47 -0
  42. package/dist/modules/mcp/server.js +52 -20
  43. package/dist/modules/mcp/tools/apply/dispatch.js +83 -0
  44. package/dist/modules/mcp/tools/apply/index.js +121 -0
  45. package/dist/modules/mcp/tools/apply/writeResult.js +36 -0
  46. package/dist/modules/mcp/tools/index.js +20 -148
  47. package/dist/modules/mcp/tools/operations/index.js +30 -0
  48. package/dist/modules/mcp/tools/operations/schema/deleteElement.js +25 -0
  49. package/dist/modules/mcp/tools/operations/schema/deleteFolder.js +30 -0
  50. package/dist/modules/mcp/tools/operations/schema/deletePage.js +22 -0
  51. package/dist/modules/mcp/tools/operations/schema/deleteVariable.js +18 -0
  52. package/dist/modules/mcp/tools/operations/schema/moveElement.js +39 -0
  53. package/dist/modules/mcp/tools/operations/schema/operations.js +25 -0
  54. package/dist/modules/mcp/tools/operations/schema/patchElement.js +46 -0
  55. package/dist/modules/mcp/tools/operations/schema/registry.js +55 -0
  56. package/dist/modules/mcp/tools/operations/schema/shared.js +27 -0
  57. package/dist/modules/mcp/tools/operations/schema/translator.js +148 -0
  58. package/dist/modules/mcp/tools/operations/schema/upsertElement.js +59 -0
  59. package/dist/modules/mcp/tools/operations/schema/upsertFolder.js +49 -0
  60. package/dist/modules/mcp/tools/operations/schema/upsertPage.js +64 -0
  61. package/dist/modules/mcp/tools/operations/schema/upsertVariable.js +42 -0
  62. package/dist/modules/mcp/tools/operations/schema/write.js +44 -0
  63. package/dist/modules/mcp/tools/operations/style/cssCatalog.js +132 -0
  64. package/dist/modules/mcp/tools/operations/style/deleteDefinition.js +20 -0
  65. package/dist/modules/mcp/tools/operations/style/deleteGlobalStyle.js +20 -0
  66. package/dist/modules/mcp/tools/operations/style/deleteStyleVariable.js +21 -0
  67. package/dist/modules/mcp/tools/operations/style/operations.js +21 -0
  68. package/dist/modules/mcp/tools/operations/style/patchDefinition.js +27 -0
  69. package/dist/modules/mcp/tools/operations/style/patchGlobalStyle.js +27 -0
  70. package/dist/modules/mcp/tools/operations/style/shared.js +59 -0
  71. package/dist/modules/mcp/tools/operations/style/translator.js +77 -0
  72. package/dist/modules/mcp/tools/operations/style/upsertDefinition.js +23 -0
  73. package/dist/modules/mcp/tools/operations/style/upsertGlobalStyle.js +23 -0
  74. package/dist/modules/mcp/tools/operations/style/upsertStyleVariable.js +22 -0
  75. package/dist/modules/mcp/tools/operations/style/write.js +100 -0
  76. package/dist/modules/mcp/tools/preview.js +37 -0
  77. package/dist/modules/mcp/tools/read.js +33 -0
  78. package/dist/modules/mcp/tools/screenshot.js +83 -0
  79. package/dist/modules/mcp/tools/search.js +108 -0
  80. package/dist/modules/mcp/tools/shared/tool.js +26 -0
  81. package/dist/modules/mcp/tools/shared/validator.js +262 -0
  82. package/dist/modules/mcp/tools/validate.js +19 -0
  83. package/dist/modules/ssr/buildBody.js +2 -2
  84. package/dist/modules/ssr/handler.js +6 -4
  85. package/dist/modules/ssr/prepareRender.js +5 -5
  86. package/dist/modules/ssr/preview.js +106 -0
  87. package/dist/modules/ssr/registerExternalPlugins.js +1 -1
  88. package/dist/modules/ssr/streamBody.js +3 -3
  89. package/dist/modules/ssr/template.js +1 -1
  90. package/dist/plugins/compile.js +1 -1
  91. package/dist/plugins/copy.js +1 -1
  92. package/dist/plugins/manager.js +1 -1
  93. package/dist/server.js +34 -9
  94. package/dist/src/core/createServer.d.ts +5 -1
  95. package/dist/src/core/health.d.ts +10 -0
  96. package/dist/src/core/http/dispatcher.d.ts +7 -0
  97. package/dist/src/core/http/securityHeaders.d.ts +2 -0
  98. package/dist/src/core/http/stages/authRoutes.d.ts +4 -0
  99. package/dist/src/core/http/stages/health.d.ts +2 -0
  100. package/dist/src/core/http/stages/middlewares.d.ts +2 -0
  101. package/dist/src/core/http/stages/pluginAssets.d.ts +2 -0
  102. package/dist/src/core/http/stages/static.d.ts +5 -0
  103. package/dist/src/core/http/types.d.ts +19 -0
  104. package/dist/src/core/server/baseServer.d.ts +9 -0
  105. package/dist/src/core/server/mcpServer.d.ts +2 -0
  106. package/dist/src/core/server/ssrServer.d.ts +2 -0
  107. package/dist/src/core/services/mcp.d.ts +3 -0
  108. package/dist/src/core/services/preview.d.ts +2 -0
  109. package/dist/src/core/services/registry.d.ts +4 -0
  110. package/dist/src/core/services/resolve.d.ts +3 -0
  111. package/dist/src/core/services/rsc.d.ts +2 -0
  112. package/dist/src/core/services/ssr.d.ts +3 -0
  113. package/dist/src/core/transports.d.ts +2 -2
  114. package/dist/src/index.d.ts +12 -3
  115. package/dist/src/modules/ai/index.d.ts +1 -0
  116. package/dist/src/modules/ai/toolkit.d.ts +17 -0
  117. package/dist/src/modules/mcp/constants.d.ts +1 -0
  118. package/dist/src/modules/mcp/handler.d.ts +6 -3
  119. package/dist/src/modules/mcp/helpers/computeVersion.d.ts +1 -0
  120. package/dist/src/modules/mcp/helpers/guide.d.ts +2 -0
  121. package/dist/src/modules/mcp/helpers/index.d.ts +4 -0
  122. package/dist/src/modules/mcp/helpers/opResult.d.ts +13 -0
  123. package/dist/src/modules/mcp/helpers/space.d.ts +49 -0
  124. package/dist/src/modules/mcp/index.d.ts +12 -5
  125. package/dist/src/modules/mcp/previewClient.d.ts +13 -0
  126. package/dist/src/modules/mcp/resources/canonical.d.ts +7 -0
  127. package/dist/src/modules/mcp/resources/core.d.ts +5 -0
  128. package/dist/src/modules/mcp/resources/envelope.d.ts +10 -0
  129. package/dist/src/modules/mcp/resources/index.d.ts +8 -10
  130. package/dist/src/modules/mcp/resources/primer.d.ts +6 -0
  131. package/dist/src/modules/mcp/resources/register.d.ts +6 -0
  132. package/dist/src/modules/mcp/resources/router.d.ts +6 -0
  133. package/dist/src/modules/mcp/resources/schema.d.ts +5 -0
  134. package/dist/src/modules/mcp/resources/style.d.ts +5 -0
  135. package/dist/src/modules/mcp/screenshotClient.d.ts +13 -0
  136. package/dist/src/modules/mcp/server.d.ts +18 -3
  137. package/dist/src/modules/mcp/tools/apply/dispatch.d.ts +6 -0
  138. package/dist/src/modules/mcp/tools/apply/index.d.ts +231 -0
  139. package/dist/src/modules/mcp/tools/apply/writeResult.d.ts +8 -0
  140. package/dist/src/modules/mcp/tools/index.d.ts +17 -6
  141. package/dist/src/modules/mcp/tools/operations/index.d.ts +449 -0
  142. package/dist/src/modules/mcp/tools/operations/schema/deleteElement.d.ts +10 -0
  143. package/dist/src/modules/mcp/tools/operations/schema/deleteFolder.d.ts +9 -0
  144. package/dist/src/modules/mcp/tools/operations/schema/deletePage.d.ts +9 -0
  145. package/dist/src/modules/mcp/tools/operations/schema/deleteVariable.d.ts +9 -0
  146. package/dist/src/modules/mcp/tools/operations/schema/index.d.ts +14 -0
  147. package/dist/src/modules/mcp/tools/operations/schema/moveElement.d.ts +16 -0
  148. package/dist/src/modules/mcp/tools/operations/schema/operations.d.ts +79 -0
  149. package/dist/src/modules/mcp/tools/operations/schema/patchElement.d.ts +17 -0
  150. package/dist/src/modules/mcp/tools/operations/schema/registry.d.ts +22 -0
  151. package/dist/src/modules/mcp/tools/operations/schema/shared.d.ts +24 -0
  152. package/dist/src/modules/mcp/tools/operations/schema/translator.d.ts +9 -0
  153. package/dist/src/modules/mcp/tools/operations/schema/upsertElement.d.ts +16 -0
  154. package/dist/src/modules/mcp/tools/operations/schema/upsertFolder.d.ts +12 -0
  155. package/dist/src/modules/mcp/tools/operations/schema/upsertPage.d.ts +13 -0
  156. package/dist/src/modules/mcp/tools/operations/schema/upsertVariable.d.ts +16 -0
  157. package/dist/src/modules/mcp/tools/operations/schema/write.d.ts +12 -0
  158. package/dist/src/modules/mcp/tools/operations/style/cssCatalog.d.ts +10 -0
  159. package/dist/src/modules/mcp/tools/operations/style/deleteDefinition.d.ts +9 -0
  160. package/dist/src/modules/mcp/tools/operations/style/deleteGlobalStyle.d.ts +9 -0
  161. package/dist/src/modules/mcp/tools/operations/style/deleteStyleVariable.d.ts +15 -0
  162. package/dist/src/modules/mcp/tools/operations/style/index.d.ts +12 -0
  163. package/dist/src/modules/mcp/tools/operations/style/operations.d.ts +163 -0
  164. package/dist/src/modules/mcp/tools/operations/style/patchDefinition.d.ts +37 -0
  165. package/dist/src/modules/mcp/tools/operations/style/patchGlobalStyle.d.ts +37 -0
  166. package/dist/src/modules/mcp/tools/operations/style/shared.d.ts +115 -0
  167. package/dist/src/modules/mcp/tools/operations/style/translator.d.ts +9 -0
  168. package/dist/src/modules/mcp/tools/operations/style/upsertDefinition.d.ts +37 -0
  169. package/dist/src/modules/mcp/tools/operations/style/upsertGlobalStyle.d.ts +37 -0
  170. package/dist/src/modules/mcp/tools/operations/style/upsertStyleVariable.d.ts +20 -0
  171. package/dist/src/modules/mcp/tools/operations/style/write.d.ts +17 -0
  172. package/dist/src/modules/mcp/tools/preview.d.ts +226 -0
  173. package/dist/src/modules/mcp/tools/read.d.ts +8 -0
  174. package/dist/src/modules/mcp/tools/screenshot.d.ts +231 -0
  175. package/dist/src/modules/mcp/tools/search.d.ts +15 -0
  176. package/dist/src/modules/mcp/tools/shared/tool.d.ts +50 -0
  177. package/dist/src/modules/mcp/tools/shared/validator.d.ts +4 -0
  178. package/dist/src/modules/mcp/tools/validate.d.ts +228 -0
  179. package/dist/src/modules/mcp/types/aiSchema.d.ts +126 -0
  180. package/dist/src/modules/mcp/types/index.d.ts +4 -0
  181. package/dist/src/modules/mcp/types/previewTypes.d.ts +25 -0
  182. package/dist/src/modules/mcp/types/screenshotTypes.d.ts +29 -0
  183. package/dist/src/modules/mcp/types/toolTypes.d.ts +138 -0
  184. package/dist/src/modules/ssr/buildBody.d.ts +2 -2
  185. package/dist/src/modules/ssr/prepareRender.d.ts +2 -2
  186. package/dist/src/modules/ssr/preview.d.ts +16 -0
  187. package/dist/src/modules/ssr/streamBody.d.ts +2 -2
  188. package/package.json +10 -10
  189. package/dist/_virtual/_rolldown/runtime.js +0 -13
  190. package/dist/core/requestHandler.js +0 -126
  191. package/dist/modules/mcp/helpers.js +0 -75
  192. package/dist/modules/mcp/resources/glossary/binding.js +0 -73
  193. package/dist/modules/mcp/resources/glossary/collection.js +0 -76
  194. package/dist/modules/mcp/resources/glossary/displayMode.js +0 -50
  195. package/dist/modules/mcp/resources/glossary/element.js +0 -68
  196. package/dist/modules/mcp/resources/glossary/environment.js +0 -48
  197. package/dist/modules/mcp/resources/glossary/interaction.js +0 -62
  198. package/dist/modules/mcp/resources/glossary/page.js +0 -70
  199. package/dist/modules/mcp/resources/glossary/plugin.js +0 -96
  200. package/dist/modules/mcp/resources/glossary/resource.js +0 -75
  201. package/dist/modules/mcp/resources/glossary/schema.js +0 -69
  202. package/dist/modules/mcp/resources/glossary/schemaVariable.js +0 -60
  203. package/dist/modules/mcp/resources/glossary/segment.js +0 -59
  204. package/dist/modules/mcp/resources/glossary/space.js +0 -73
  205. package/dist/modules/mcp/resources/glossary/style.js +0 -81
  206. package/dist/modules/mcp/resources/glossary/styleSelector.js +0 -77
  207. package/dist/modules/mcp/resources/glossary/styleVariable.js +0 -72
  208. package/dist/modules/mcp/resources/index.js +0 -71
  209. package/dist/modules/mcp/resources/workflows/data.js +0 -49
  210. package/dist/modules/mcp/resources/workflows/elements.js +0 -53
  211. package/dist/modules/mcp/resources/workflows/segments.js +0 -55
  212. package/dist/modules/mcp/resources/workflows/styles.js +0 -91
  213. package/dist/modules/mcp/tools/collections/createCollection.js +0 -25
  214. package/dist/modules/mcp/tools/collections/createCollectionRecord.js +0 -27
  215. package/dist/modules/mcp/tools/collections/deleteCollection.js +0 -16
  216. package/dist/modules/mcp/tools/collections/deleteCollectionRecord.js +0 -16
  217. package/dist/modules/mcp/tools/collections/getCollection.js +0 -21
  218. package/dist/modules/mcp/tools/collections/getCollectionRecord.js +0 -25
  219. package/dist/modules/mcp/tools/collections/getCollectionRecords.js +0 -29
  220. package/dist/modules/mcp/tools/collections/getCollections.js +0 -19
  221. package/dist/modules/mcp/tools/collections/updateCollection.js +0 -28
  222. package/dist/modules/mcp/tools/collections/updateCollectionRecord.js +0 -31
  223. package/dist/modules/mcp/tools/docs/listResources.js +0 -16
  224. package/dist/modules/mcp/tools/docs/readResource.js +0 -23
  225. package/dist/modules/mcp/tools/plugins/addPlugin.js +0 -24
  226. package/dist/modules/mcp/tools/plugins/listPlugins.js +0 -20
  227. package/dist/modules/mcp/tools/plugins/removePlugin.js +0 -16
  228. package/dist/modules/mcp/tools/plugins/updatePlugin.js +0 -23
  229. package/dist/modules/mcp/tools/resources/addResource.js +0 -33
  230. package/dist/modules/mcp/tools/resources/getResource.js +0 -29
  231. package/dist/modules/mcp/tools/resources/getResources.js +0 -27
  232. package/dist/modules/mcp/tools/resources/moveResource.js +0 -30
  233. package/dist/modules/mcp/tools/resources/removeResource.js +0 -19
  234. package/dist/modules/mcp/tools/segment/createSegment.js +0 -27
  235. package/dist/modules/mcp/tools/segment/deleteSegment.js +0 -16
  236. package/dist/modules/mcp/tools/segment/getSegment.js +0 -19
  237. package/dist/modules/mcp/tools/segment/getSegments.js +0 -27
  238. package/dist/modules/mcp/tools/segment/schema/elements/createSegmentElement.js +0 -24
  239. package/dist/modules/mcp/tools/segment/schema/elements/deleteSegmentElement.js +0 -19
  240. package/dist/modules/mcp/tools/segment/schema/elements/moveSegmentElement.js +0 -28
  241. package/dist/modules/mcp/tools/segment/schema/elements/updateSegmentElement.js +0 -23
  242. package/dist/modules/mcp/tools/segment/schema/variables/createSegmentVariable.js +0 -41
  243. package/dist/modules/mcp/tools/segment/schema/variables/deleteSegmentVariable.js +0 -19
  244. package/dist/modules/mcp/tools/segment/schema/variables/updateSegmentVariable.js +0 -41
  245. package/dist/modules/mcp/tools/segment/style/variables/createSegmentStyleVariable.js +0 -34
  246. package/dist/modules/mcp/tools/segment/style/variables/deleteSegmentStyleVariable.js +0 -21
  247. package/dist/modules/mcp/tools/segment/style/variables/updateSegmentStyleVariable.js +0 -34
  248. package/dist/modules/mcp/tools/segment/updateSegment.js +0 -30
  249. package/dist/modules/mcp/tools/space/schema/applyPreview.js +0 -33
  250. package/dist/modules/mcp/tools/space/schema/elements/cloneElement.js +0 -34
  251. package/dist/modules/mcp/tools/space/schema/elements/createElement.js +0 -50
  252. package/dist/modules/mcp/tools/space/schema/elements/deleteElement.js +0 -16
  253. package/dist/modules/mcp/tools/space/schema/elements/getElement.js +0 -17
  254. package/dist/modules/mcp/tools/space/schema/elements/getElements.js +0 -21
  255. package/dist/modules/mcp/tools/space/schema/elements/listElements.js +0 -28
  256. package/dist/modules/mcp/tools/space/schema/elements/moveElement.js +0 -27
  257. package/dist/modules/mcp/tools/space/schema/elements/updateElement.js +0 -49
  258. package/dist/modules/mcp/tools/space/schema/getSpaceSettings.js +0 -46
  259. package/dist/modules/mcp/tools/space/schema/pageFolders/createPageFolder.js +0 -24
  260. package/dist/modules/mcp/tools/space/schema/pageFolders/deletePageFolder.js +0 -16
  261. package/dist/modules/mcp/tools/space/schema/pageFolders/getPageFolder.js +0 -17
  262. package/dist/modules/mcp/tools/space/schema/pageFolders/getPageFolders.js +0 -17
  263. package/dist/modules/mcp/tools/space/schema/pageFolders/updatePageFolder.js +0 -28
  264. package/dist/modules/mcp/tools/space/schema/pages/createPage.js +0 -37
  265. package/dist/modules/mcp/tools/space/schema/pages/deletePage.js +0 -16
  266. package/dist/modules/mcp/tools/space/schema/pages/getPage.js +0 -28
  267. package/dist/modules/mcp/tools/space/schema/pages/getPageBySlug.js +0 -17
  268. package/dist/modules/mcp/tools/space/schema/pages/getPages.js +0 -17
  269. package/dist/modules/mcp/tools/space/schema/pages/updatePage.js +0 -25
  270. package/dist/modules/mcp/tools/space/schema/schemas.js +0 -53
  271. package/dist/modules/mcp/tools/space/schema/updateSpaceSettings.js +0 -23
  272. package/dist/modules/mcp/tools/space/schema/variables/createVariable.js +0 -38
  273. package/dist/modules/mcp/tools/space/schema/variables/deleteVariable.js +0 -16
  274. package/dist/modules/mcp/tools/space/schema/variables/getVariable.js +0 -17
  275. package/dist/modules/mcp/tools/space/schema/variables/getVariables.js +0 -17
  276. package/dist/modules/mcp/tools/space/schema/variables/updateVariable.js +0 -38
  277. package/dist/modules/mcp/tools/space/style/selectors/createStyleSelector.js +0 -37
  278. package/dist/modules/mcp/tools/space/style/selectors/deleteStyleSelector.js +0 -24
  279. package/dist/modules/mcp/tools/space/style/selectors/getStyleSelectors.js +0 -20
  280. package/dist/modules/mcp/tools/space/style/selectors/updateStyleSelector.js +0 -37
  281. package/dist/modules/mcp/tools/space/style/variables/createStyleVariable.js +0 -33
  282. package/dist/modules/mcp/tools/space/style/variables/deleteStyleVariable.js +0 -20
  283. package/dist/modules/mcp/tools/space/style/variables/getStyleVariable.js +0 -19
  284. package/dist/modules/mcp/tools/space/style/variables/getStyleVariables.js +0 -16
  285. package/dist/modules/mcp/tools/space/style/variables/updateStyleVariable.js +0 -33
  286. package/dist/package.js +0 -77
  287. package/dist/package.json.d.ts +0 -67
  288. package/dist/src/core/requestHandler.d.ts +0 -5
  289. package/dist/src/modules/mcp/helpers.d.ts +0 -9
  290. package/dist/src/modules/mcp/resources/glossary/binding.d.ts +0 -7
  291. package/dist/src/modules/mcp/resources/glossary/collection.d.ts +0 -7
  292. package/dist/src/modules/mcp/resources/glossary/displayMode.d.ts +0 -7
  293. package/dist/src/modules/mcp/resources/glossary/element.d.ts +0 -7
  294. package/dist/src/modules/mcp/resources/glossary/environment.d.ts +0 -7
  295. package/dist/src/modules/mcp/resources/glossary/interaction.d.ts +0 -7
  296. package/dist/src/modules/mcp/resources/glossary/page.d.ts +0 -7
  297. package/dist/src/modules/mcp/resources/glossary/plugin.d.ts +0 -7
  298. package/dist/src/modules/mcp/resources/glossary/resource.d.ts +0 -7
  299. package/dist/src/modules/mcp/resources/glossary/schema.d.ts +0 -7
  300. package/dist/src/modules/mcp/resources/glossary/schemaVariable.d.ts +0 -7
  301. package/dist/src/modules/mcp/resources/glossary/segment.d.ts +0 -7
  302. package/dist/src/modules/mcp/resources/glossary/space.d.ts +0 -7
  303. package/dist/src/modules/mcp/resources/glossary/style.d.ts +0 -7
  304. package/dist/src/modules/mcp/resources/glossary/styleSelector.d.ts +0 -7
  305. package/dist/src/modules/mcp/resources/glossary/styleVariable.d.ts +0 -7
  306. package/dist/src/modules/mcp/resources/workflows/data.d.ts +0 -7
  307. package/dist/src/modules/mcp/resources/workflows/elements.d.ts +0 -7
  308. package/dist/src/modules/mcp/resources/workflows/segments.d.ts +0 -7
  309. package/dist/src/modules/mcp/resources/workflows/styles.d.ts +0 -7
  310. package/dist/src/modules/mcp/tools/collections/createCollection.d.ts +0 -3
  311. package/dist/src/modules/mcp/tools/collections/createCollectionRecord.d.ts +0 -3
  312. package/dist/src/modules/mcp/tools/collections/deleteCollection.d.ts +0 -3
  313. package/dist/src/modules/mcp/tools/collections/deleteCollectionRecord.d.ts +0 -3
  314. package/dist/src/modules/mcp/tools/collections/getCollection.d.ts +0 -3
  315. package/dist/src/modules/mcp/tools/collections/getCollectionRecord.d.ts +0 -3
  316. package/dist/src/modules/mcp/tools/collections/getCollectionRecords.d.ts +0 -3
  317. package/dist/src/modules/mcp/tools/collections/getCollections.d.ts +0 -3
  318. package/dist/src/modules/mcp/tools/collections/index.d.ts +0 -10
  319. package/dist/src/modules/mcp/tools/collections/updateCollection.d.ts +0 -3
  320. package/dist/src/modules/mcp/tools/collections/updateCollectionRecord.d.ts +0 -3
  321. package/dist/src/modules/mcp/tools/docs/index.d.ts +0 -2
  322. package/dist/src/modules/mcp/tools/docs/listResources.d.ts +0 -3
  323. package/dist/src/modules/mcp/tools/docs/readResource.d.ts +0 -3
  324. package/dist/src/modules/mcp/tools/plugins/addPlugin.d.ts +0 -3
  325. package/dist/src/modules/mcp/tools/plugins/index.d.ts +0 -5
  326. package/dist/src/modules/mcp/tools/plugins/listPlugins.d.ts +0 -3
  327. package/dist/src/modules/mcp/tools/plugins/removePlugin.d.ts +0 -3
  328. package/dist/src/modules/mcp/tools/plugins/updatePlugin.d.ts +0 -3
  329. package/dist/src/modules/mcp/tools/resources/addResource.d.ts +0 -3
  330. package/dist/src/modules/mcp/tools/resources/getResource.d.ts +0 -3
  331. package/dist/src/modules/mcp/tools/resources/getResources.d.ts +0 -3
  332. package/dist/src/modules/mcp/tools/resources/index.d.ts +0 -6
  333. package/dist/src/modules/mcp/tools/resources/moveResource.d.ts +0 -3
  334. package/dist/src/modules/mcp/tools/resources/removeResource.d.ts +0 -3
  335. package/dist/src/modules/mcp/tools/resources/resources.test.d.ts +0 -1
  336. package/dist/src/modules/mcp/tools/segment/createSegment.d.ts +0 -3
  337. package/dist/src/modules/mcp/tools/segment/deleteSegment.d.ts +0 -3
  338. package/dist/src/modules/mcp/tools/segment/getSegment.d.ts +0 -3
  339. package/dist/src/modules/mcp/tools/segment/getSegments.d.ts +0 -3
  340. package/dist/src/modules/mcp/tools/segment/index.d.ts +0 -8
  341. package/dist/src/modules/mcp/tools/segment/schema/elements/createSegmentElement.d.ts +0 -3
  342. package/dist/src/modules/mcp/tools/segment/schema/elements/deleteSegmentElement.d.ts +0 -3
  343. package/dist/src/modules/mcp/tools/segment/schema/elements/index.d.ts +0 -5
  344. package/dist/src/modules/mcp/tools/segment/schema/elements/moveSegmentElement.d.ts +0 -3
  345. package/dist/src/modules/mcp/tools/segment/schema/elements/segmentElements.test.d.ts +0 -1
  346. package/dist/src/modules/mcp/tools/segment/schema/elements/updateSegmentElement.d.ts +0 -3
  347. package/dist/src/modules/mcp/tools/segment/schema/index.d.ts +0 -2
  348. package/dist/src/modules/mcp/tools/segment/schema/variables/createSegmentVariable.d.ts +0 -3
  349. package/dist/src/modules/mcp/tools/segment/schema/variables/deleteSegmentVariable.d.ts +0 -3
  350. package/dist/src/modules/mcp/tools/segment/schema/variables/index.d.ts +0 -4
  351. package/dist/src/modules/mcp/tools/segment/schema/variables/segmentVariables.test.d.ts +0 -1
  352. package/dist/src/modules/mcp/tools/segment/schema/variables/updateSegmentVariable.d.ts +0 -3
  353. package/dist/src/modules/mcp/tools/segment/segment.test.d.ts +0 -1
  354. package/dist/src/modules/mcp/tools/segment/style/index.d.ts +0 -1
  355. package/dist/src/modules/mcp/tools/segment/style/variables/createSegmentStyleVariable.d.ts +0 -3
  356. package/dist/src/modules/mcp/tools/segment/style/variables/deleteSegmentStyleVariable.d.ts +0 -3
  357. package/dist/src/modules/mcp/tools/segment/style/variables/index.d.ts +0 -4
  358. package/dist/src/modules/mcp/tools/segment/style/variables/segmentStyleVariables.test.d.ts +0 -1
  359. package/dist/src/modules/mcp/tools/segment/style/variables/updateSegmentStyleVariable.d.ts +0 -3
  360. package/dist/src/modules/mcp/tools/segment/updateSegment.d.ts +0 -3
  361. package/dist/src/modules/mcp/tools/space/index.d.ts +0 -2
  362. package/dist/src/modules/mcp/tools/space/schema/applyPreview.d.ts +0 -3
  363. package/dist/src/modules/mcp/tools/space/schema/elements/cloneElement.d.ts +0 -3
  364. package/dist/src/modules/mcp/tools/space/schema/elements/createElement.d.ts +0 -3
  365. package/dist/src/modules/mcp/tools/space/schema/elements/deleteElement.d.ts +0 -3
  366. package/dist/src/modules/mcp/tools/space/schema/elements/elements.test.d.ts +0 -1
  367. package/dist/src/modules/mcp/tools/space/schema/elements/getElement.d.ts +0 -3
  368. package/dist/src/modules/mcp/tools/space/schema/elements/getElements.d.ts +0 -3
  369. package/dist/src/modules/mcp/tools/space/schema/elements/index.d.ts +0 -9
  370. package/dist/src/modules/mcp/tools/space/schema/elements/listElements.d.ts +0 -3
  371. package/dist/src/modules/mcp/tools/space/schema/elements/moveElement.d.ts +0 -3
  372. package/dist/src/modules/mcp/tools/space/schema/elements/updateElement.d.ts +0 -3
  373. package/dist/src/modules/mcp/tools/space/schema/getSpaceSettings.d.ts +0 -3
  374. package/dist/src/modules/mcp/tools/space/schema/index.d.ts +0 -8
  375. package/dist/src/modules/mcp/tools/space/schema/pageFolders/createPageFolder.d.ts +0 -3
  376. package/dist/src/modules/mcp/tools/space/schema/pageFolders/deletePageFolder.d.ts +0 -3
  377. package/dist/src/modules/mcp/tools/space/schema/pageFolders/getPageFolder.d.ts +0 -3
  378. package/dist/src/modules/mcp/tools/space/schema/pageFolders/getPageFolders.d.ts +0 -3
  379. package/dist/src/modules/mcp/tools/space/schema/pageFolders/index.d.ts +0 -6
  380. package/dist/src/modules/mcp/tools/space/schema/pageFolders/pageFolders.test.d.ts +0 -1
  381. package/dist/src/modules/mcp/tools/space/schema/pageFolders/updatePageFolder.d.ts +0 -3
  382. package/dist/src/modules/mcp/tools/space/schema/pages/createPage.d.ts +0 -3
  383. package/dist/src/modules/mcp/tools/space/schema/pages/deletePage.d.ts +0 -3
  384. package/dist/src/modules/mcp/tools/space/schema/pages/getPage.d.ts +0 -3
  385. package/dist/src/modules/mcp/tools/space/schema/pages/getPageBySlug.d.ts +0 -3
  386. package/dist/src/modules/mcp/tools/space/schema/pages/getPages.d.ts +0 -3
  387. package/dist/src/modules/mcp/tools/space/schema/pages/index.d.ts +0 -7
  388. package/dist/src/modules/mcp/tools/space/schema/pages/pages.test.d.ts +0 -1
  389. package/dist/src/modules/mcp/tools/space/schema/pages/updatePage.d.ts +0 -3
  390. package/dist/src/modules/mcp/tools/space/schema/schemas.d.ts +0 -66
  391. package/dist/src/modules/mcp/tools/space/schema/updateSpaceSettings.d.ts +0 -3
  392. package/dist/src/modules/mcp/tools/space/schema/variables/createVariable.d.ts +0 -3
  393. package/dist/src/modules/mcp/tools/space/schema/variables/deleteVariable.d.ts +0 -3
  394. package/dist/src/modules/mcp/tools/space/schema/variables/getVariable.d.ts +0 -3
  395. package/dist/src/modules/mcp/tools/space/schema/variables/getVariables.d.ts +0 -3
  396. package/dist/src/modules/mcp/tools/space/schema/variables/index.d.ts +0 -6
  397. package/dist/src/modules/mcp/tools/space/schema/variables/updateVariable.d.ts +0 -3
  398. package/dist/src/modules/mcp/tools/space/schema/variables/variables.test.d.ts +0 -1
  399. package/dist/src/modules/mcp/tools/space/space.test.d.ts +0 -1
  400. package/dist/src/modules/mcp/tools/space/style/index.d.ts +0 -2
  401. package/dist/src/modules/mcp/tools/space/style/selectors/createStyleSelector.d.ts +0 -3
  402. package/dist/src/modules/mcp/tools/space/style/selectors/deleteStyleSelector.d.ts +0 -3
  403. package/dist/src/modules/mcp/tools/space/style/selectors/getStyleSelectors.d.ts +0 -3
  404. package/dist/src/modules/mcp/tools/space/style/selectors/index.d.ts +0 -5
  405. package/dist/src/modules/mcp/tools/space/style/selectors/styleSelectors.test.d.ts +0 -1
  406. package/dist/src/modules/mcp/tools/space/style/selectors/updateStyleSelector.d.ts +0 -3
  407. package/dist/src/modules/mcp/tools/space/style/variables/createStyleVariable.d.ts +0 -3
  408. package/dist/src/modules/mcp/tools/space/style/variables/deleteStyleVariable.d.ts +0 -3
  409. package/dist/src/modules/mcp/tools/space/style/variables/getStyleVariable.d.ts +0 -3
  410. package/dist/src/modules/mcp/tools/space/style/variables/getStyleVariables.d.ts +0 -3
  411. package/dist/src/modules/mcp/tools/space/style/variables/index.d.ts +0 -6
  412. package/dist/src/modules/mcp/tools/space/style/variables/styleVariables.test.d.ts +0 -1
  413. package/dist/src/modules/mcp/tools/space/style/variables/updateStyleVariable.d.ts +0 -3
  414. /package/dist/src/{modules/mcp/helpers.test.d.ts → core/server/mcpServer.test.d.ts} +0 -0
  415. /package/dist/src/modules/{mcp/tools/collections/collections.test.d.ts → ai/toolkit.test.d.ts} +0 -0
  416. /package/dist/src/modules/mcp/{tools/plugins/plugins.test.d.ts → mcp.test.d.ts} +0 -0
@@ -0,0 +1,142 @@
1
+ import { guideText } from "../helpers/guide.js";
2
+ import { resourceErrorMessage } from "./canonical.js";
3
+ import { envelope, jsonContents } from "./envelope.js";
4
+ import { cssProperties } from "../tools/operations/style/cssCatalog.js";
5
+ import { readResource } from "./router.js";
6
+ import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp";
7
+ //#region src/modules/mcp/resources/register.ts
8
+ /** Register every resource on the MCP server: fixed listings plus templated per-item reads. The space is
9
+ * loaded lazily via getSpace, so listing resources never touches the store — only reading one does. */
10
+ var registerResources = (server, getSpace, env) => {
11
+ const emit = async (uri) => {
12
+ const result = readResource(await getSpace(), env, uri);
13
+ if (!result) throw new Error(resourceErrorMessage(env, uri));
14
+ return jsonContents(uri, result);
15
+ };
16
+ server.registerResource("Guide", "plitzi://guide", {
17
+ description: "How to read and write this space with mcp-ai",
18
+ mimeType: "text/markdown"
19
+ }, () => ({ contents: [{
20
+ uri: "plitzi://guide",
21
+ mimeType: "text/markdown",
22
+ text: guideText
23
+ }] }));
24
+ server.registerResource("CSS properties", "plitzi://css-properties", {
25
+ description: "Valid kebab-case CSS property keys",
26
+ mimeType: "application/json"
27
+ }, () => jsonContents("plitzi://css-properties", envelope(cssProperties)));
28
+ const fixed = [
29
+ [
30
+ "Primer",
31
+ `plitzi://primer/${env}`,
32
+ "Read this FIRST. Cold-start bundle in one call: guide, types, css-properties and SUMMARIES of pages, definitions and variables — summaries only, never full page/element trees, so it stays small even on a large space. Open a page or element on demand afterwards."
33
+ ],
34
+ [
35
+ "Element types",
36
+ "plitzi://types",
37
+ "Observed element types with props, slots and subTypes"
38
+ ],
39
+ [
40
+ "Pages",
41
+ `plitzi://schema/${env}/pages`,
42
+ "Page summaries (ref, label, elementCount) — no element trees"
43
+ ],
44
+ [
45
+ "Folders",
46
+ `plitzi://folders/${env}`,
47
+ "Page folders (the sidebar tree): ref, name, slug, parentId"
48
+ ],
49
+ [
50
+ "Style definitions",
51
+ `plitzi://definitions/${env}`,
52
+ "Style definition refs (names)"
53
+ ],
54
+ [
55
+ "Global styles",
56
+ `plitzi://global-styles/${env}`,
57
+ "Element types that have a site-wide global style"
58
+ ],
59
+ [
60
+ "Style variables",
61
+ `plitzi://style-variables/${env}`,
62
+ "Design tokens by category"
63
+ ],
64
+ [
65
+ "Schema variables",
66
+ `plitzi://schema-variables/${env}`,
67
+ "Space-level values referenced via {{name}}"
68
+ ],
69
+ [
70
+ "Style definitions (schema alias)",
71
+ `plitzi://schema/${env}/definitions`,
72
+ "Alias of plitzi://definitions/{env}"
73
+ ],
74
+ [
75
+ "Style variables (schema alias)",
76
+ `plitzi://schema/${env}/style-variables`,
77
+ "Alias of plitzi://style-variables/{env}"
78
+ ],
79
+ [
80
+ "Schema variables (schema alias)",
81
+ `plitzi://schema/${env}/schema-variables`,
82
+ "Alias of plitzi://schema-variables/{env}"
83
+ ]
84
+ ];
85
+ for (const [name, uri, description] of fixed) server.registerResource(name, uri, {
86
+ description,
87
+ mimeType: "application/json"
88
+ }, () => emit(uri));
89
+ const templates = [
90
+ [
91
+ "Page",
92
+ `plitzi://schema/${env}/pages/{ref}`,
93
+ "One page as a skeleton tree (ref/type/label/children), no props"
94
+ ],
95
+ [
96
+ "Page styles",
97
+ `plitzi://schema/${env}/pages/{ref}/styles`,
98
+ "Every style a page uses in one read: class definitions its elements attach (with CSS) + global styles"
99
+ ],
100
+ [
101
+ "Element",
102
+ `plitzi://schema/${env}/elements/{ref}`,
103
+ "One element in full detail (props, style) by ref or id"
104
+ ],
105
+ [
106
+ "Folder",
107
+ `plitzi://folders/${env}/{ref}`,
108
+ "One page folder (name, slug, parentId) by folder id"
109
+ ],
110
+ [
111
+ "Style definition",
112
+ `plitzi://definitions/${env}/{ref}`,
113
+ "One style definition (CSS) by class ref"
114
+ ],
115
+ [
116
+ "Global style",
117
+ `plitzi://global-styles/${env}/{componentType}`,
118
+ "The site-wide CSS applied to every element of one type"
119
+ ],
120
+ [
121
+ "Style variables by category",
122
+ `plitzi://style-variables/${env}/{category}`,
123
+ "Design tokens for one category"
124
+ ],
125
+ [
126
+ "Style definition (schema alias)",
127
+ `plitzi://schema/${env}/definitions/{ref}`,
128
+ "Alias of plitzi://definitions/{env}/{ref}"
129
+ ],
130
+ [
131
+ "Style variables by category (schema alias)",
132
+ `plitzi://schema/${env}/style-variables/{category}`,
133
+ "Alias of plitzi://style-variables/{env}/{category}"
134
+ ]
135
+ ];
136
+ for (const [name, tpl, description] of templates) server.registerResource(name, new ResourceTemplate(tpl, { list: void 0 }), {
137
+ description,
138
+ mimeType: "application/json"
139
+ }, (uri) => emit(uri.href));
140
+ };
141
+ //#endregion
142
+ export { registerResources };
@@ -0,0 +1,25 @@
1
+ import { canonicalUri } from "./canonical.js";
2
+ import { readCoreResource } from "./core.js";
3
+ import { readPrimerResource } from "./primer.js";
4
+ import { readSchemaResource } from "./schema.js";
5
+ import { readStyleResource } from "./style.js";
6
+ //#region src/modules/mcp/resources/router.ts
7
+ var resolvers = [
8
+ (space, _env, uri) => readCoreResource(space, uri),
9
+ readPrimerResource,
10
+ readSchemaResource,
11
+ readStyleResource
12
+ ];
13
+ /** Resolve a resource URI to its versioned envelope, or null if unknown / not found. */
14
+ var readResource = (space, env, rawUri) => {
15
+ const uri = canonicalUri(env, rawUri);
16
+ for (const resolve of resolvers) {
17
+ const result = resolve(space, env, uri);
18
+ if (result !== void 0) return result;
19
+ }
20
+ return null;
21
+ };
22
+ /** Current version of a resource, for optimistic-concurrency checks. Null when the URI is unknown. */
23
+ var resourceVersion = (space, env, uri) => readResource(space, env, uri)?.stateVersion ?? null;
24
+ //#endregion
25
+ export { readResource, resourceVersion };
@@ -0,0 +1,33 @@
1
+ import { findElementByRef, findPageByRef } from "../helpers/space.js";
2
+ import { envelope } from "./envelope.js";
3
+ import { elementDetailToAI, folderRefToAI, foldersToAI, pageSkeletonToAI, pageStylesToAI, pageSummariesToAI, schemaVariablesToAI } from "../tools/operations/schema/translator.js";
4
+ //#region src/modules/mcp/resources/schema.ts
5
+ /** Element-schema reads: page listings/skeletons/styles, folders, single elements and schema variables. Returns
6
+ * undefined when the URI belongs to another domain, null when the shape is ours but the ref does not resolve. */
7
+ var readSchemaResource = (space, env, uri) => {
8
+ if (uri === `plitzi://schema/${env}/pages`) return envelope(pageSummariesToAI(space.schema));
9
+ if (uri === `plitzi://folders/${env}`) return envelope(foldersToAI(space.schema));
10
+ if (uri.startsWith(`plitzi://folders/${env}/`)) {
11
+ const ref = uri.slice(`plitzi://folders/${env}/`.length);
12
+ const folder = folderRefToAI(space.schema, ref);
13
+ return folder ? envelope(folder) : null;
14
+ }
15
+ if (uri.startsWith(`plitzi://schema/${env}/pages/`) && uri.endsWith("/styles")) {
16
+ const ref = uri.slice(`plitzi://schema/${env}/pages/`.length, -7);
17
+ const page = findPageByRef(space.schema, ref);
18
+ return page ? envelope(pageStylesToAI(space.schema, space.style, page)) : null;
19
+ }
20
+ if (uri.startsWith(`plitzi://schema/${env}/pages/`)) {
21
+ const ref = uri.slice(`plitzi://schema/${env}/pages/`.length);
22
+ const page = findPageByRef(space.schema, ref);
23
+ return page ? envelope(pageSkeletonToAI(space.schema, page)) : null;
24
+ }
25
+ if (uri.startsWith(`plitzi://schema/${env}/elements/`)) {
26
+ const ref = uri.slice(`plitzi://schema/${env}/elements/`.length);
27
+ const el = findElementByRef(space.schema, ref);
28
+ return el ? envelope(elementDetailToAI(space.schema, el, space.style)) : null;
29
+ }
30
+ if (uri === `plitzi://schema-variables/${env}`) return envelope(schemaVariablesToAI(space.schema));
31
+ };
32
+ //#endregion
33
+ export { readSchemaResource };
@@ -0,0 +1,27 @@
1
+ import { envelope } from "./envelope.js";
2
+ import { definitionRefs, definitionToAI, globalStyleToAI, globalStyleTypes, styleVariablesToAI } from "../tools/operations/style/translator.js";
3
+ //#region src/modules/mcp/resources/style.ts
4
+ /** Style-schema reads: definitions, global (per-type) styles and design-token variables by category. Returns
5
+ * undefined when the URI belongs to another domain, null when the shape is ours but the ref does not resolve. */
6
+ var readStyleResource = (space, env, uri) => {
7
+ if (uri === `plitzi://definitions/${env}`) return envelope(definitionRefs(space.style));
8
+ if (uri.startsWith(`plitzi://definitions/${env}/`)) {
9
+ const ref = uri.slice(`plitzi://definitions/${env}/`.length);
10
+ const def = definitionToAI(space.style, ref);
11
+ return def ? envelope(def) : null;
12
+ }
13
+ if (uri === `plitzi://global-styles/${env}`) return envelope(globalStyleTypes(space.style));
14
+ if (uri.startsWith(`plitzi://global-styles/${env}/`)) {
15
+ const componentType = uri.slice(`plitzi://global-styles/${env}/`.length);
16
+ const global = globalStyleToAI(space.style, componentType);
17
+ return global ? envelope(global) : null;
18
+ }
19
+ if (uri === `plitzi://style-variables/${env}`) return envelope(styleVariablesToAI(space.style));
20
+ if (uri.startsWith(`plitzi://style-variables/${env}/`)) {
21
+ const category = uri.slice(`plitzi://style-variables/${env}/`.length);
22
+ const byCategory = styleVariablesToAI(space.style);
23
+ return envelope(Object.hasOwn(byCategory, category) ? byCategory[category] : []);
24
+ }
25
+ };
26
+ //#endregion
27
+ export { readStyleResource };
@@ -0,0 +1,47 @@
1
+ import { PREVIEW_TOKEN_PARAM } from "./constants.js";
2
+ //#region src/modules/mcp/screenshotClient.ts
3
+ var composeUrl = (base, pagePath, token) => {
4
+ const url = new URL(pagePath, base);
5
+ if (token) url.searchParams.set(PREVIEW_TOKEN_PARAM, token);
6
+ return url.toString();
7
+ };
8
+ /** Default `ScreenshotClient`: composes the navigable preview URL (renderBaseUrl + pagePath + `?__pt=token`) and
9
+ * POSTs it to the browser service. Any network/HTTP failure surfaces as `ok:false` so the tool can fall back to
10
+ * the HTML preview instead of hard-failing. */
11
+ var createHttpScreenshotClient = ({ serviceUrl, renderBaseUrl, fetchImpl = fetch }) => ({ async capture({ pagePath, token, viewports }) {
12
+ const url = composeUrl(renderBaseUrl, pagePath, token);
13
+ let res;
14
+ try {
15
+ res = await fetchImpl(serviceUrl, {
16
+ method: "POST",
17
+ headers: { "content-type": "application/json" },
18
+ body: JSON.stringify({
19
+ url,
20
+ viewports
21
+ })
22
+ });
23
+ } catch (err) {
24
+ return {
25
+ ok: false,
26
+ error: "SCREENSHOT_UNREACHABLE",
27
+ message: `Browser service unreachable: ${String(err)}`
28
+ };
29
+ }
30
+ if (!res.ok) return {
31
+ ok: false,
32
+ error: "SCREENSHOT_FAILED",
33
+ message: `Browser service returned ${res.status}.`
34
+ };
35
+ const body = await res.json();
36
+ if (!body.images || body.images.length === 0) return {
37
+ ok: false,
38
+ error: "SCREENSHOT_EMPTY",
39
+ message: "Browser service returned no images."
40
+ };
41
+ return {
42
+ ok: true,
43
+ images: body.images
44
+ };
45
+ } });
46
+ //#endregion
47
+ export { createHttpScreenshotClient };
@@ -1,29 +1,61 @@
1
- import { bindTools } from "./helpers.js";
2
- import { registerResources } from "./resources/index.js";
3
- import { tools_exports } from "./tools/index.js";
4
- import package_default from "../../package.js";
1
+ import { emptySpaceMessage, unauthorizedSpaceMessage } from "./helpers/space.js";
2
+ import { serverInstructions } from "./helpers/guide.js";
3
+ import { registerResources } from "./resources/register.js";
4
+ import { tools } from "./tools/index.js";
5
+ import { isCallToolResult } from "../ai/toolkit.js";
5
6
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp";
6
7
  //#region src/modules/mcp/server.ts
7
- var createMcpServer = (adapters = {}, engine, tools, prompts, resources) => {
8
- const boundTools = bindTools([...Object.values(tools_exports), ...tools ?? []], adapters);
8
+ var MCP_ENV = "main";
9
+ var asText = (data) => ({ content: [{
10
+ type: "text",
11
+ text: JSON.stringify(data)
12
+ }] });
13
+ var createMcpServer = ({ adapters, getSpaceId, preview, screenshot }) => {
14
+ let spaceIdPromise;
15
+ const requireSpaceId = () => spaceIdPromise ??= getSpaceId().then((id) => {
16
+ if (!id) throw new Error(unauthorizedSpaceMessage);
17
+ return id;
18
+ });
19
+ const loadSpace = async () => {
20
+ const spaceId = await requireSpaceId();
21
+ const [schema, style] = await Promise.all([adapters.getSchema?.(spaceId, MCP_ENV), adapters.getStyle?.(spaceId, MCP_ENV)]);
22
+ if (!schema || !style) throw new Error(emptySpaceMessage);
23
+ return {
24
+ schema,
25
+ style
26
+ };
27
+ };
28
+ const { saveSchema, saveStyle } = adapters;
29
+ const persisters = {
30
+ schema: saveSchema ? async (schema) => saveSchema(await requireSpaceId(), MCP_ENV, schema) : void 0,
31
+ style: saveStyle ? async (style) => saveStyle(await requireSpaceId(), MCP_ENV, style) : void 0
32
+ };
33
+ let spacePromise;
34
+ const getSpace = () => spacePromise ??= loadSpace();
9
35
  const server = new McpServer({
10
36
  name: "plitzi-mcp",
11
- version: package_default.version
37
+ version: "0.3.0"
38
+ }, { instructions: serverInstructions });
39
+ registerResources(server, getSpace, MCP_ENV);
40
+ const toolContext = async () => ({
41
+ space: await getSpace(),
42
+ env: MCP_ENV,
43
+ persisters,
44
+ spaceId: await requireSpaceId(),
45
+ preview,
46
+ screenshot
12
47
  });
13
- engine.setToolsAvailables(boundTools);
14
- registerResources(server, resources, engine.readResource);
15
- for (const tool of boundTools) {
16
- if (!engine.can(tool.name)) continue;
17
- const { title, description, inputSchema, annotations } = tool.mcpDefinition;
18
- const definition = {
19
- title,
20
- description,
21
- inputSchema,
22
- annotations
23
- };
24
- server.registerTool(tool.name, definition, engine.execute(tool.name, tool.handler));
48
+ for (const tool of tools) {
49
+ if (tool.requires === "screenshot" && !screenshot) continue;
50
+ server.registerTool(tool.name, {
51
+ title: tool.title,
52
+ description: tool.description,
53
+ inputSchema: tool.inputShape
54
+ }, async (args) => {
55
+ const result = await tool.execute(args, await toolContext());
56
+ return isCallToolResult(result) ? result : asText(result);
57
+ });
25
58
  }
26
- if (prompts) for (const prompt of prompts) server.registerPrompt(prompt.name, prompt.definition, engine.executePrompt(prompt.name, prompt.handler));
27
59
  return server;
28
60
  };
29
61
  //#endregion
@@ -0,0 +1,83 @@
1
+ import { fail } from "../../helpers/opResult.js";
2
+ import { deleteElement } from "../operations/schema/deleteElement.js";
3
+ import { deleteFolder } from "../operations/schema/deleteFolder.js";
4
+ import { deletePage } from "../operations/schema/deletePage.js";
5
+ import { deleteVariable } from "../operations/schema/deleteVariable.js";
6
+ import { moveElement } from "../operations/schema/moveElement.js";
7
+ import { patchElement } from "../operations/schema/patchElement.js";
8
+ import { upsertElement } from "../operations/schema/upsertElement.js";
9
+ import { upsertFolder } from "../operations/schema/upsertFolder.js";
10
+ import { upsertPage } from "../operations/schema/upsertPage.js";
11
+ import { upsertVariable } from "../operations/schema/upsertVariable.js";
12
+ import { deleteDefinition } from "../operations/style/deleteDefinition.js";
13
+ import { deleteGlobalStyle } from "../operations/style/deleteGlobalStyle.js";
14
+ import { deleteStyleVariable } from "../operations/style/deleteStyleVariable.js";
15
+ import { patchDefinition } from "../operations/style/patchDefinition.js";
16
+ import { patchGlobalStyle } from "../operations/style/patchGlobalStyle.js";
17
+ import { upsertDefinition } from "../operations/style/upsertDefinition.js";
18
+ import { upsertGlobalStyle } from "../operations/style/upsertGlobalStyle.js";
19
+ import { upsertStyleVariable } from "../operations/style/upsertStyleVariable.js";
20
+ import { isStyleOp } from "../operations/index.js";
21
+ //#region src/modules/mcp/tools/apply/dispatch.ts
22
+ var executeOp = (space, env, op) => {
23
+ switch (op.type) {
24
+ case "upsertElement": return upsertElement(space, env, op);
25
+ case "patchElement": return patchElement(space, env, op);
26
+ case "deleteElement": return deleteElement(space, env, op);
27
+ case "moveElement": return moveElement(space, env, op);
28
+ case "upsertPage": return upsertPage(space, env, op);
29
+ case "deletePage": return deletePage(space, env, op);
30
+ case "upsertFolder": return upsertFolder(space, env, op);
31
+ case "deleteFolder": return deleteFolder(space, env, op);
32
+ case "upsertVariable": return upsertVariable(space, env, op);
33
+ case "deleteVariable": return deleteVariable(space, env, op);
34
+ case "upsertDefinition": return upsertDefinition(space, env, op);
35
+ case "patchDefinition": return patchDefinition(space, env, op);
36
+ case "deleteDefinition": return deleteDefinition(space, env, op);
37
+ case "upsertGlobalStyle": return upsertGlobalStyle(space, env, op);
38
+ case "patchGlobalStyle": return patchGlobalStyle(space, env, op);
39
+ case "deleteGlobalStyle": return deleteGlobalStyle(space, env, op);
40
+ case "upsertStyleVariable": return upsertStyleVariable(space, env, op);
41
+ case "deleteStyleVariable": return deleteStyleVariable(space, env, op);
42
+ default: return fail("type", `Unknown operation "${op.type}"`, "See the Operation union");
43
+ }
44
+ };
45
+ /** Apply operations in order to the space (mutating it). Records which schema(s) changed so the caller can
46
+ * persist each independently. Stops collecting counts for a failed op but records its errors. */
47
+ var applyOperations = (space, env, ops) => {
48
+ const outcome = {
49
+ created: 0,
50
+ updated: 0,
51
+ deleted: 0,
52
+ staleResources: [],
53
+ elementRefs: [],
54
+ errors: [],
55
+ changedSchema: false,
56
+ changedStyle: false
57
+ };
58
+ const stale = /* @__PURE__ */ new Set();
59
+ const elements = /* @__PURE__ */ new Set();
60
+ for (let i = 0; i < ops.length; i++) {
61
+ const op = ops[i];
62
+ const result = executeOp(space, env, op);
63
+ if (result.errors) {
64
+ outcome.errors.push(...result.errors.map((e) => ({
65
+ ...e,
66
+ path: `operations[${i}].${e.path}`
67
+ })));
68
+ continue;
69
+ }
70
+ if (isStyleOp(op.type)) outcome.changedStyle = true;
71
+ else outcome.changedSchema = true;
72
+ outcome.created += result.created;
73
+ outcome.updated += result.updated;
74
+ outcome.deleted += result.deleted;
75
+ for (const uri of result.staleResources) stale.add(uri);
76
+ for (const ref of result.elementRefs ?? []) elements.add(ref);
77
+ }
78
+ outcome.staleResources = Array.from(stale);
79
+ outcome.elementRefs = Array.from(elements);
80
+ return outcome;
81
+ };
82
+ //#endregion
83
+ export { applyOperations };
@@ -0,0 +1,121 @@
1
+ import { cloneSpace } from "../../helpers/space.js";
2
+ import { environment, operations } from "../operations/index.js";
3
+ import { applyOperations } from "./dispatch.js";
4
+ import { changedResources, conflictMessage, detectConflicts, resolvedElements } from "./writeResult.js";
5
+ import { defineTool } from "../shared/tool.js";
6
+ import { validateOperations } from "../shared/validator.js";
7
+ import { z } from "zod";
8
+ import { validateSchema } from "@plitzi/sdk-schema";
9
+ //#region src/modules/mcp/tools/apply/index.ts
10
+ var applyShape = {
11
+ environment,
12
+ dryRun: z.boolean().optional().describe("Validate and apply in memory only, WITHOUT persisting. Returns the same result (changed versions + full element detail) so you can inspect the outcome and decide on more changes before committing for real."),
13
+ expectedResourceVersions: z.record(z.string(), z.string()).optional().describe("Resource URI → the stateVersion you read; guards against concurrent edits"),
14
+ operations
15
+ };
16
+ var noWarnings = (warnings) => warnings.length > 0 ? warnings : void 0;
17
+ var schemaErrorToValidation = (error) => ({
18
+ path: error.elementId ? `schema.${error.elementId}` : "schema",
19
+ message: error.message,
20
+ hint: "This batch would leave the schema inconsistent (broken parent/child link or a cycle); nothing was applied."
21
+ });
22
+ var apply = async (input, space, persisters) => {
23
+ const env = input.environment ?? "main";
24
+ const validation = validateOperations(space, input.operations);
25
+ if (!validation.valid) return {
26
+ applied: false,
27
+ persisted: false,
28
+ summary: {
29
+ created: 0,
30
+ updated: 0,
31
+ deleted: 0
32
+ },
33
+ changed: [],
34
+ errors: validation.errors,
35
+ warnings: noWarnings(validation.warnings)
36
+ };
37
+ const conflicts = detectConflicts(space, env, input.expectedResourceVersions);
38
+ if (conflicts.length > 0) return {
39
+ applied: false,
40
+ persisted: false,
41
+ summary: {
42
+ created: 0,
43
+ updated: 0,
44
+ deleted: 0
45
+ },
46
+ changed: [],
47
+ conflict: {
48
+ message: conflictMessage,
49
+ conflicts
50
+ }
51
+ };
52
+ const draft = cloneSpace(space);
53
+ const outcome = applyOperations(draft, env, input.operations);
54
+ if (outcome.errors.length > 0) return {
55
+ applied: false,
56
+ persisted: false,
57
+ summary: {
58
+ created: 0,
59
+ updated: 0,
60
+ deleted: 0
61
+ },
62
+ changed: [],
63
+ errors: outcome.errors,
64
+ warnings: noWarnings(validation.warnings)
65
+ };
66
+ const integrity = validateSchema(draft.schema);
67
+ if (!integrity.valid) return {
68
+ applied: false,
69
+ persisted: false,
70
+ summary: {
71
+ created: 0,
72
+ updated: 0,
73
+ deleted: 0
74
+ },
75
+ changed: [],
76
+ errors: integrity.errors.map(schemaErrorToValidation),
77
+ warnings: noWarnings(validation.warnings)
78
+ };
79
+ if (input.dryRun) return {
80
+ applied: false,
81
+ dryRun: true,
82
+ summary: {
83
+ created: outcome.created,
84
+ updated: outcome.updated,
85
+ deleted: outcome.deleted
86
+ },
87
+ changed: changedResources(draft, env, outcome.staleResources),
88
+ elements: resolvedElements(draft, env, outcome.elementRefs),
89
+ warnings: noWarnings(validation.warnings)
90
+ };
91
+ let persisted = true;
92
+ if (outcome.changedSchema) if (persisters?.schema) await persisters.schema(draft.schema);
93
+ else persisted = false;
94
+ if (outcome.changedStyle) if (persisters?.style) await persisters.style(draft.style);
95
+ else persisted = false;
96
+ return {
97
+ applied: true,
98
+ persisted,
99
+ summary: {
100
+ created: outcome.created,
101
+ updated: outcome.updated,
102
+ deleted: outcome.deleted
103
+ },
104
+ changed: changedResources(draft, env, outcome.staleResources),
105
+ elements: resolvedElements(draft, env, outcome.elementRefs),
106
+ warnings: noWarnings(validation.warnings)
107
+ };
108
+ };
109
+ var applyTool = defineTool({
110
+ name: "plitzi_apply",
111
+ title: "Apply",
112
+ description: "Validate, apply and persist a batch of operations atomically. Returns the changed resources and their new versions, plus the full detail of every element it created or updated. Pass dryRun to apply in memory only (inspect the outcome without committing). Rejects the whole batch on any error or version conflict.",
113
+ inputShape: applyShape,
114
+ access: "write",
115
+ run: (input, ctx) => apply({
116
+ ...input,
117
+ environment: ctx.env
118
+ }, ctx.space, ctx.persisters)
119
+ });
120
+ //#endregion
121
+ export { apply, applyShape, applyTool };
@@ -0,0 +1,36 @@
1
+ import { readResource, resourceVersion } from "../../resources/router.js";
2
+ //#region src/modules/mcp/tools/apply/writeResult.ts
3
+ var detectConflicts = (space, env, expected) => {
4
+ if (!expected) return [];
5
+ const conflicts = [];
6
+ for (const [uri, version] of Object.entries(expected)) {
7
+ const current = resourceVersion(space, env, uri);
8
+ if (current !== null && current !== version) conflicts.push({
9
+ resourceUri: uri,
10
+ expectedVersion: version,
11
+ currentVersion: current
12
+ });
13
+ }
14
+ return conflicts;
15
+ };
16
+ var changedResources = (space, env, uris) => uris.map((uri) => ({
17
+ uri,
18
+ stateVersion: resourceVersion(space, env, uri) ?? ""
19
+ }));
20
+ /** Full detail of each created/updated element (by ref), skipping any that no longer resolve (e.g. deleted later
21
+ * in the same batch). Returns undefined when there is nothing, so the field stays off the response. */
22
+ var resolvedElements = (space, env, refs) => {
23
+ const elements = refs.map((ref) => {
24
+ const uri = `plitzi://schema/${env}/elements/${ref}`;
25
+ const res = readResource(space, env, uri);
26
+ return res ? {
27
+ uri,
28
+ stateVersion: res.stateVersion,
29
+ ...res.data
30
+ } : void 0;
31
+ }).filter((el) => el !== void 0);
32
+ return elements.length > 0 ? elements : void 0;
33
+ };
34
+ var conflictMessage = "Cannot apply: your data is stale. Re-read the changed resources and retry.";
35
+ //#endregion
36
+ export { changedResources, conflictMessage, detectConflicts, resolvedElements };