@plitzi/sdk-server 0.32.4 → 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 (415) hide show
  1. package/CHANGELOG.md +9 -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/index.js +19 -6
  23. package/dist/modules/ai/AIEngine.js +4 -4
  24. package/dist/modules/ai/toolkit.js +58 -0
  25. package/dist/modules/mcp/constants.js +4 -0
  26. package/dist/modules/mcp/handler.js +15 -21
  27. package/dist/modules/mcp/helpers/computeVersion.js +16 -0
  28. package/dist/modules/mcp/helpers/guide.js +130 -0
  29. package/dist/modules/mcp/helpers/opResult.js +18 -0
  30. package/dist/modules/mcp/helpers/space.js +137 -0
  31. package/dist/modules/mcp/previewClient.js +31 -0
  32. package/dist/modules/mcp/resources/canonical.js +45 -0
  33. package/dist/modules/mcp/resources/core.js +14 -0
  34. package/dist/modules/mcp/resources/envelope.js +14 -0
  35. package/dist/modules/mcp/resources/primer.js +25 -0
  36. package/dist/modules/mcp/resources/register.js +142 -0
  37. package/dist/modules/mcp/resources/router.js +25 -0
  38. package/dist/modules/mcp/resources/schema.js +33 -0
  39. package/dist/modules/mcp/resources/style.js +27 -0
  40. package/dist/modules/mcp/screenshotClient.js +47 -0
  41. package/dist/modules/mcp/server.js +52 -20
  42. package/dist/modules/mcp/tools/apply/dispatch.js +83 -0
  43. package/dist/modules/mcp/tools/apply/index.js +121 -0
  44. package/dist/modules/mcp/tools/apply/writeResult.js +36 -0
  45. package/dist/modules/mcp/tools/index.js +20 -148
  46. package/dist/modules/mcp/tools/operations/index.js +30 -0
  47. package/dist/modules/mcp/tools/operations/schema/deleteElement.js +25 -0
  48. package/dist/modules/mcp/tools/operations/schema/deleteFolder.js +30 -0
  49. package/dist/modules/mcp/tools/operations/schema/deletePage.js +22 -0
  50. package/dist/modules/mcp/tools/operations/schema/deleteVariable.js +18 -0
  51. package/dist/modules/mcp/tools/operations/schema/moveElement.js +39 -0
  52. package/dist/modules/mcp/tools/operations/schema/operations.js +25 -0
  53. package/dist/modules/mcp/tools/operations/schema/patchElement.js +46 -0
  54. package/dist/modules/mcp/tools/operations/schema/registry.js +55 -0
  55. package/dist/modules/mcp/tools/operations/schema/shared.js +27 -0
  56. package/dist/modules/mcp/tools/operations/schema/translator.js +148 -0
  57. package/dist/modules/mcp/tools/operations/schema/upsertElement.js +59 -0
  58. package/dist/modules/mcp/tools/operations/schema/upsertFolder.js +49 -0
  59. package/dist/modules/mcp/tools/operations/schema/upsertPage.js +64 -0
  60. package/dist/modules/mcp/tools/operations/schema/upsertVariable.js +42 -0
  61. package/dist/modules/mcp/tools/operations/schema/write.js +44 -0
  62. package/dist/modules/mcp/tools/operations/style/cssCatalog.js +132 -0
  63. package/dist/modules/mcp/tools/operations/style/deleteDefinition.js +20 -0
  64. package/dist/modules/mcp/tools/operations/style/deleteGlobalStyle.js +20 -0
  65. package/dist/modules/mcp/tools/operations/style/deleteStyleVariable.js +21 -0
  66. package/dist/modules/mcp/tools/operations/style/operations.js +21 -0
  67. package/dist/modules/mcp/tools/operations/style/patchDefinition.js +27 -0
  68. package/dist/modules/mcp/tools/operations/style/patchGlobalStyle.js +27 -0
  69. package/dist/modules/mcp/tools/operations/style/shared.js +59 -0
  70. package/dist/modules/mcp/tools/operations/style/translator.js +77 -0
  71. package/dist/modules/mcp/tools/operations/style/upsertDefinition.js +23 -0
  72. package/dist/modules/mcp/tools/operations/style/upsertGlobalStyle.js +23 -0
  73. package/dist/modules/mcp/tools/operations/style/upsertStyleVariable.js +22 -0
  74. package/dist/modules/mcp/tools/operations/style/write.js +100 -0
  75. package/dist/modules/mcp/tools/preview.js +37 -0
  76. package/dist/modules/mcp/tools/read.js +33 -0
  77. package/dist/modules/mcp/tools/screenshot.js +83 -0
  78. package/dist/modules/mcp/tools/search.js +108 -0
  79. package/dist/modules/mcp/tools/shared/tool.js +26 -0
  80. package/dist/modules/mcp/tools/shared/validator.js +262 -0
  81. package/dist/modules/mcp/tools/validate.js +19 -0
  82. package/dist/modules/ssr/buildBody.js +2 -2
  83. package/dist/modules/ssr/handler.js +6 -4
  84. package/dist/modules/ssr/prepareRender.js +5 -5
  85. package/dist/modules/ssr/preview.js +106 -0
  86. package/dist/modules/ssr/registerExternalPlugins.js +1 -1
  87. package/dist/modules/ssr/streamBody.js +3 -3
  88. package/dist/modules/ssr/template.js +1 -1
  89. package/dist/plugins/compile.js +1 -1
  90. package/dist/plugins/copy.js +1 -1
  91. package/dist/plugins/manager.js +1 -1
  92. package/dist/server.js +34 -9
  93. package/dist/src/core/createServer.d.ts +5 -1
  94. package/dist/src/core/health.d.ts +10 -0
  95. package/dist/src/core/http/dispatcher.d.ts +7 -0
  96. package/dist/src/core/http/securityHeaders.d.ts +2 -0
  97. package/dist/src/core/http/stages/authRoutes.d.ts +4 -0
  98. package/dist/src/core/http/stages/health.d.ts +2 -0
  99. package/dist/src/core/http/stages/middlewares.d.ts +2 -0
  100. package/dist/src/core/http/stages/pluginAssets.d.ts +2 -0
  101. package/dist/src/core/http/stages/static.d.ts +5 -0
  102. package/dist/src/core/http/types.d.ts +19 -0
  103. package/dist/src/core/server/baseServer.d.ts +9 -0
  104. package/dist/src/core/server/mcpServer.d.ts +2 -0
  105. package/dist/src/core/server/ssrServer.d.ts +2 -0
  106. package/dist/src/core/services/mcp.d.ts +3 -0
  107. package/dist/src/core/services/preview.d.ts +2 -0
  108. package/dist/src/core/services/registry.d.ts +4 -0
  109. package/dist/src/core/services/resolve.d.ts +3 -0
  110. package/dist/src/core/services/rsc.d.ts +2 -0
  111. package/dist/src/core/services/ssr.d.ts +3 -0
  112. package/dist/src/core/transports.d.ts +2 -2
  113. package/dist/src/index.d.ts +12 -3
  114. package/dist/src/modules/ai/index.d.ts +1 -0
  115. package/dist/src/modules/ai/toolkit.d.ts +17 -0
  116. package/dist/src/modules/mcp/constants.d.ts +1 -0
  117. package/dist/src/modules/mcp/handler.d.ts +6 -3
  118. package/dist/src/modules/mcp/helpers/computeVersion.d.ts +1 -0
  119. package/dist/src/modules/mcp/helpers/guide.d.ts +2 -0
  120. package/dist/src/modules/mcp/helpers/index.d.ts +4 -0
  121. package/dist/src/modules/mcp/helpers/opResult.d.ts +13 -0
  122. package/dist/src/modules/mcp/helpers/space.d.ts +49 -0
  123. package/dist/src/modules/mcp/index.d.ts +12 -5
  124. package/dist/src/modules/mcp/previewClient.d.ts +13 -0
  125. package/dist/src/modules/mcp/resources/canonical.d.ts +7 -0
  126. package/dist/src/modules/mcp/resources/core.d.ts +5 -0
  127. package/dist/src/modules/mcp/resources/envelope.d.ts +10 -0
  128. package/dist/src/modules/mcp/resources/index.d.ts +8 -10
  129. package/dist/src/modules/mcp/resources/primer.d.ts +6 -0
  130. package/dist/src/modules/mcp/resources/register.d.ts +6 -0
  131. package/dist/src/modules/mcp/resources/router.d.ts +6 -0
  132. package/dist/src/modules/mcp/resources/schema.d.ts +5 -0
  133. package/dist/src/modules/mcp/resources/style.d.ts +5 -0
  134. package/dist/src/modules/mcp/screenshotClient.d.ts +13 -0
  135. package/dist/src/modules/mcp/server.d.ts +18 -3
  136. package/dist/src/modules/mcp/tools/apply/dispatch.d.ts +6 -0
  137. package/dist/src/modules/mcp/tools/apply/index.d.ts +231 -0
  138. package/dist/src/modules/mcp/tools/apply/writeResult.d.ts +8 -0
  139. package/dist/src/modules/mcp/tools/index.d.ts +17 -6
  140. package/dist/src/modules/mcp/tools/operations/index.d.ts +449 -0
  141. package/dist/src/modules/mcp/tools/operations/schema/deleteElement.d.ts +10 -0
  142. package/dist/src/modules/mcp/tools/operations/schema/deleteFolder.d.ts +9 -0
  143. package/dist/src/modules/mcp/tools/operations/schema/deletePage.d.ts +9 -0
  144. package/dist/src/modules/mcp/tools/operations/schema/deleteVariable.d.ts +9 -0
  145. package/dist/src/modules/mcp/tools/operations/schema/index.d.ts +14 -0
  146. package/dist/src/modules/mcp/tools/operations/schema/moveElement.d.ts +16 -0
  147. package/dist/src/modules/mcp/tools/operations/schema/operations.d.ts +79 -0
  148. package/dist/src/modules/mcp/tools/operations/schema/patchElement.d.ts +17 -0
  149. package/dist/src/modules/mcp/tools/operations/schema/registry.d.ts +22 -0
  150. package/dist/src/modules/mcp/tools/operations/schema/shared.d.ts +24 -0
  151. package/dist/src/modules/mcp/tools/operations/schema/translator.d.ts +9 -0
  152. package/dist/src/modules/mcp/tools/operations/schema/upsertElement.d.ts +16 -0
  153. package/dist/src/modules/mcp/tools/operations/schema/upsertFolder.d.ts +12 -0
  154. package/dist/src/modules/mcp/tools/operations/schema/upsertPage.d.ts +13 -0
  155. package/dist/src/modules/mcp/tools/operations/schema/upsertVariable.d.ts +16 -0
  156. package/dist/src/modules/mcp/tools/operations/schema/write.d.ts +12 -0
  157. package/dist/src/modules/mcp/tools/operations/style/cssCatalog.d.ts +10 -0
  158. package/dist/src/modules/mcp/tools/operations/style/deleteDefinition.d.ts +9 -0
  159. package/dist/src/modules/mcp/tools/operations/style/deleteGlobalStyle.d.ts +9 -0
  160. package/dist/src/modules/mcp/tools/operations/style/deleteStyleVariable.d.ts +15 -0
  161. package/dist/src/modules/mcp/tools/operations/style/index.d.ts +12 -0
  162. package/dist/src/modules/mcp/tools/operations/style/operations.d.ts +163 -0
  163. package/dist/src/modules/mcp/tools/operations/style/patchDefinition.d.ts +37 -0
  164. package/dist/src/modules/mcp/tools/operations/style/patchGlobalStyle.d.ts +37 -0
  165. package/dist/src/modules/mcp/tools/operations/style/shared.d.ts +115 -0
  166. package/dist/src/modules/mcp/tools/operations/style/translator.d.ts +9 -0
  167. package/dist/src/modules/mcp/tools/operations/style/upsertDefinition.d.ts +37 -0
  168. package/dist/src/modules/mcp/tools/operations/style/upsertGlobalStyle.d.ts +37 -0
  169. package/dist/src/modules/mcp/tools/operations/style/upsertStyleVariable.d.ts +20 -0
  170. package/dist/src/modules/mcp/tools/operations/style/write.d.ts +17 -0
  171. package/dist/src/modules/mcp/tools/preview.d.ts +226 -0
  172. package/dist/src/modules/mcp/tools/read.d.ts +8 -0
  173. package/dist/src/modules/mcp/tools/screenshot.d.ts +231 -0
  174. package/dist/src/modules/mcp/tools/search.d.ts +15 -0
  175. package/dist/src/modules/mcp/tools/shared/tool.d.ts +50 -0
  176. package/dist/src/modules/mcp/tools/shared/validator.d.ts +4 -0
  177. package/dist/src/modules/mcp/tools/validate.d.ts +228 -0
  178. package/dist/src/modules/mcp/types/aiSchema.d.ts +126 -0
  179. package/dist/src/modules/mcp/types/index.d.ts +4 -0
  180. package/dist/src/modules/mcp/types/previewTypes.d.ts +25 -0
  181. package/dist/src/modules/mcp/types/screenshotTypes.d.ts +29 -0
  182. package/dist/src/modules/mcp/types/toolTypes.d.ts +138 -0
  183. package/dist/src/modules/ssr/buildBody.d.ts +2 -2
  184. package/dist/src/modules/ssr/prepareRender.d.ts +2 -2
  185. package/dist/src/modules/ssr/preview.d.ts +16 -0
  186. package/dist/src/modules/ssr/streamBody.d.ts +2 -2
  187. package/package.json +10 -10
  188. package/dist/_virtual/_rolldown/runtime.js +0 -13
  189. package/dist/core/requestHandler.js +0 -126
  190. package/dist/modules/mcp/helpers.js +0 -75
  191. package/dist/modules/mcp/resources/glossary/binding.js +0 -73
  192. package/dist/modules/mcp/resources/glossary/collection.js +0 -76
  193. package/dist/modules/mcp/resources/glossary/displayMode.js +0 -50
  194. package/dist/modules/mcp/resources/glossary/element.js +0 -68
  195. package/dist/modules/mcp/resources/glossary/environment.js +0 -48
  196. package/dist/modules/mcp/resources/glossary/interaction.js +0 -62
  197. package/dist/modules/mcp/resources/glossary/page.js +0 -70
  198. package/dist/modules/mcp/resources/glossary/plugin.js +0 -96
  199. package/dist/modules/mcp/resources/glossary/resource.js +0 -75
  200. package/dist/modules/mcp/resources/glossary/schema.js +0 -69
  201. package/dist/modules/mcp/resources/glossary/schemaVariable.js +0 -60
  202. package/dist/modules/mcp/resources/glossary/segment.js +0 -59
  203. package/dist/modules/mcp/resources/glossary/space.js +0 -73
  204. package/dist/modules/mcp/resources/glossary/style.js +0 -81
  205. package/dist/modules/mcp/resources/glossary/styleSelector.js +0 -77
  206. package/dist/modules/mcp/resources/glossary/styleVariable.js +0 -72
  207. package/dist/modules/mcp/resources/index.js +0 -71
  208. package/dist/modules/mcp/resources/workflows/data.js +0 -49
  209. package/dist/modules/mcp/resources/workflows/elements.js +0 -53
  210. package/dist/modules/mcp/resources/workflows/segments.js +0 -55
  211. package/dist/modules/mcp/resources/workflows/styles.js +0 -91
  212. package/dist/modules/mcp/tools/collections/createCollection.js +0 -25
  213. package/dist/modules/mcp/tools/collections/createCollectionRecord.js +0 -27
  214. package/dist/modules/mcp/tools/collections/deleteCollection.js +0 -16
  215. package/dist/modules/mcp/tools/collections/deleteCollectionRecord.js +0 -16
  216. package/dist/modules/mcp/tools/collections/getCollection.js +0 -21
  217. package/dist/modules/mcp/tools/collections/getCollectionRecord.js +0 -25
  218. package/dist/modules/mcp/tools/collections/getCollectionRecords.js +0 -29
  219. package/dist/modules/mcp/tools/collections/getCollections.js +0 -19
  220. package/dist/modules/mcp/tools/collections/updateCollection.js +0 -28
  221. package/dist/modules/mcp/tools/collections/updateCollectionRecord.js +0 -31
  222. package/dist/modules/mcp/tools/docs/listResources.js +0 -16
  223. package/dist/modules/mcp/tools/docs/readResource.js +0 -23
  224. package/dist/modules/mcp/tools/plugins/addPlugin.js +0 -24
  225. package/dist/modules/mcp/tools/plugins/listPlugins.js +0 -20
  226. package/dist/modules/mcp/tools/plugins/removePlugin.js +0 -16
  227. package/dist/modules/mcp/tools/plugins/updatePlugin.js +0 -23
  228. package/dist/modules/mcp/tools/resources/addResource.js +0 -33
  229. package/dist/modules/mcp/tools/resources/getResource.js +0 -29
  230. package/dist/modules/mcp/tools/resources/getResources.js +0 -27
  231. package/dist/modules/mcp/tools/resources/moveResource.js +0 -30
  232. package/dist/modules/mcp/tools/resources/removeResource.js +0 -19
  233. package/dist/modules/mcp/tools/segment/createSegment.js +0 -27
  234. package/dist/modules/mcp/tools/segment/deleteSegment.js +0 -16
  235. package/dist/modules/mcp/tools/segment/getSegment.js +0 -19
  236. package/dist/modules/mcp/tools/segment/getSegments.js +0 -27
  237. package/dist/modules/mcp/tools/segment/schema/elements/createSegmentElement.js +0 -24
  238. package/dist/modules/mcp/tools/segment/schema/elements/deleteSegmentElement.js +0 -19
  239. package/dist/modules/mcp/tools/segment/schema/elements/moveSegmentElement.js +0 -28
  240. package/dist/modules/mcp/tools/segment/schema/elements/updateSegmentElement.js +0 -23
  241. package/dist/modules/mcp/tools/segment/schema/variables/createSegmentVariable.js +0 -41
  242. package/dist/modules/mcp/tools/segment/schema/variables/deleteSegmentVariable.js +0 -19
  243. package/dist/modules/mcp/tools/segment/schema/variables/updateSegmentVariable.js +0 -41
  244. package/dist/modules/mcp/tools/segment/style/variables/createSegmentStyleVariable.js +0 -34
  245. package/dist/modules/mcp/tools/segment/style/variables/deleteSegmentStyleVariable.js +0 -21
  246. package/dist/modules/mcp/tools/segment/style/variables/updateSegmentStyleVariable.js +0 -34
  247. package/dist/modules/mcp/tools/segment/updateSegment.js +0 -30
  248. package/dist/modules/mcp/tools/space/schema/applyPreview.js +0 -33
  249. package/dist/modules/mcp/tools/space/schema/elements/cloneElement.js +0 -34
  250. package/dist/modules/mcp/tools/space/schema/elements/createElement.js +0 -50
  251. package/dist/modules/mcp/tools/space/schema/elements/deleteElement.js +0 -16
  252. package/dist/modules/mcp/tools/space/schema/elements/getElement.js +0 -17
  253. package/dist/modules/mcp/tools/space/schema/elements/getElements.js +0 -21
  254. package/dist/modules/mcp/tools/space/schema/elements/listElements.js +0 -28
  255. package/dist/modules/mcp/tools/space/schema/elements/moveElement.js +0 -27
  256. package/dist/modules/mcp/tools/space/schema/elements/updateElement.js +0 -49
  257. package/dist/modules/mcp/tools/space/schema/getSpaceSettings.js +0 -46
  258. package/dist/modules/mcp/tools/space/schema/pageFolders/createPageFolder.js +0 -24
  259. package/dist/modules/mcp/tools/space/schema/pageFolders/deletePageFolder.js +0 -16
  260. package/dist/modules/mcp/tools/space/schema/pageFolders/getPageFolder.js +0 -17
  261. package/dist/modules/mcp/tools/space/schema/pageFolders/getPageFolders.js +0 -17
  262. package/dist/modules/mcp/tools/space/schema/pageFolders/updatePageFolder.js +0 -28
  263. package/dist/modules/mcp/tools/space/schema/pages/createPage.js +0 -37
  264. package/dist/modules/mcp/tools/space/schema/pages/deletePage.js +0 -16
  265. package/dist/modules/mcp/tools/space/schema/pages/getPage.js +0 -28
  266. package/dist/modules/mcp/tools/space/schema/pages/getPageBySlug.js +0 -17
  267. package/dist/modules/mcp/tools/space/schema/pages/getPages.js +0 -17
  268. package/dist/modules/mcp/tools/space/schema/pages/updatePage.js +0 -25
  269. package/dist/modules/mcp/tools/space/schema/schemas.js +0 -53
  270. package/dist/modules/mcp/tools/space/schema/updateSpaceSettings.js +0 -23
  271. package/dist/modules/mcp/tools/space/schema/variables/createVariable.js +0 -38
  272. package/dist/modules/mcp/tools/space/schema/variables/deleteVariable.js +0 -16
  273. package/dist/modules/mcp/tools/space/schema/variables/getVariable.js +0 -17
  274. package/dist/modules/mcp/tools/space/schema/variables/getVariables.js +0 -17
  275. package/dist/modules/mcp/tools/space/schema/variables/updateVariable.js +0 -38
  276. package/dist/modules/mcp/tools/space/style/selectors/createStyleSelector.js +0 -37
  277. package/dist/modules/mcp/tools/space/style/selectors/deleteStyleSelector.js +0 -24
  278. package/dist/modules/mcp/tools/space/style/selectors/getStyleSelectors.js +0 -20
  279. package/dist/modules/mcp/tools/space/style/selectors/updateStyleSelector.js +0 -37
  280. package/dist/modules/mcp/tools/space/style/variables/createStyleVariable.js +0 -33
  281. package/dist/modules/mcp/tools/space/style/variables/deleteStyleVariable.js +0 -20
  282. package/dist/modules/mcp/tools/space/style/variables/getStyleVariable.js +0 -19
  283. package/dist/modules/mcp/tools/space/style/variables/getStyleVariables.js +0 -16
  284. package/dist/modules/mcp/tools/space/style/variables/updateStyleVariable.js +0 -33
  285. package/dist/package.js +0 -77
  286. package/dist/package.json.d.ts +0 -67
  287. package/dist/src/core/requestHandler.d.ts +0 -5
  288. package/dist/src/modules/mcp/helpers.d.ts +0 -9
  289. package/dist/src/modules/mcp/resources/glossary/binding.d.ts +0 -7
  290. package/dist/src/modules/mcp/resources/glossary/collection.d.ts +0 -7
  291. package/dist/src/modules/mcp/resources/glossary/displayMode.d.ts +0 -7
  292. package/dist/src/modules/mcp/resources/glossary/element.d.ts +0 -7
  293. package/dist/src/modules/mcp/resources/glossary/environment.d.ts +0 -7
  294. package/dist/src/modules/mcp/resources/glossary/interaction.d.ts +0 -7
  295. package/dist/src/modules/mcp/resources/glossary/page.d.ts +0 -7
  296. package/dist/src/modules/mcp/resources/glossary/plugin.d.ts +0 -7
  297. package/dist/src/modules/mcp/resources/glossary/resource.d.ts +0 -7
  298. package/dist/src/modules/mcp/resources/glossary/schema.d.ts +0 -7
  299. package/dist/src/modules/mcp/resources/glossary/schemaVariable.d.ts +0 -7
  300. package/dist/src/modules/mcp/resources/glossary/segment.d.ts +0 -7
  301. package/dist/src/modules/mcp/resources/glossary/space.d.ts +0 -7
  302. package/dist/src/modules/mcp/resources/glossary/style.d.ts +0 -7
  303. package/dist/src/modules/mcp/resources/glossary/styleSelector.d.ts +0 -7
  304. package/dist/src/modules/mcp/resources/glossary/styleVariable.d.ts +0 -7
  305. package/dist/src/modules/mcp/resources/workflows/data.d.ts +0 -7
  306. package/dist/src/modules/mcp/resources/workflows/elements.d.ts +0 -7
  307. package/dist/src/modules/mcp/resources/workflows/segments.d.ts +0 -7
  308. package/dist/src/modules/mcp/resources/workflows/styles.d.ts +0 -7
  309. package/dist/src/modules/mcp/tools/collections/createCollection.d.ts +0 -3
  310. package/dist/src/modules/mcp/tools/collections/createCollectionRecord.d.ts +0 -3
  311. package/dist/src/modules/mcp/tools/collections/deleteCollection.d.ts +0 -3
  312. package/dist/src/modules/mcp/tools/collections/deleteCollectionRecord.d.ts +0 -3
  313. package/dist/src/modules/mcp/tools/collections/getCollection.d.ts +0 -3
  314. package/dist/src/modules/mcp/tools/collections/getCollectionRecord.d.ts +0 -3
  315. package/dist/src/modules/mcp/tools/collections/getCollectionRecords.d.ts +0 -3
  316. package/dist/src/modules/mcp/tools/collections/getCollections.d.ts +0 -3
  317. package/dist/src/modules/mcp/tools/collections/index.d.ts +0 -10
  318. package/dist/src/modules/mcp/tools/collections/updateCollection.d.ts +0 -3
  319. package/dist/src/modules/mcp/tools/collections/updateCollectionRecord.d.ts +0 -3
  320. package/dist/src/modules/mcp/tools/docs/index.d.ts +0 -2
  321. package/dist/src/modules/mcp/tools/docs/listResources.d.ts +0 -3
  322. package/dist/src/modules/mcp/tools/docs/readResource.d.ts +0 -3
  323. package/dist/src/modules/mcp/tools/plugins/addPlugin.d.ts +0 -3
  324. package/dist/src/modules/mcp/tools/plugins/index.d.ts +0 -5
  325. package/dist/src/modules/mcp/tools/plugins/listPlugins.d.ts +0 -3
  326. package/dist/src/modules/mcp/tools/plugins/removePlugin.d.ts +0 -3
  327. package/dist/src/modules/mcp/tools/plugins/updatePlugin.d.ts +0 -3
  328. package/dist/src/modules/mcp/tools/resources/addResource.d.ts +0 -3
  329. package/dist/src/modules/mcp/tools/resources/getResource.d.ts +0 -3
  330. package/dist/src/modules/mcp/tools/resources/getResources.d.ts +0 -3
  331. package/dist/src/modules/mcp/tools/resources/index.d.ts +0 -6
  332. package/dist/src/modules/mcp/tools/resources/moveResource.d.ts +0 -3
  333. package/dist/src/modules/mcp/tools/resources/removeResource.d.ts +0 -3
  334. package/dist/src/modules/mcp/tools/resources/resources.test.d.ts +0 -1
  335. package/dist/src/modules/mcp/tools/segment/createSegment.d.ts +0 -3
  336. package/dist/src/modules/mcp/tools/segment/deleteSegment.d.ts +0 -3
  337. package/dist/src/modules/mcp/tools/segment/getSegment.d.ts +0 -3
  338. package/dist/src/modules/mcp/tools/segment/getSegments.d.ts +0 -3
  339. package/dist/src/modules/mcp/tools/segment/index.d.ts +0 -8
  340. package/dist/src/modules/mcp/tools/segment/schema/elements/createSegmentElement.d.ts +0 -3
  341. package/dist/src/modules/mcp/tools/segment/schema/elements/deleteSegmentElement.d.ts +0 -3
  342. package/dist/src/modules/mcp/tools/segment/schema/elements/index.d.ts +0 -5
  343. package/dist/src/modules/mcp/tools/segment/schema/elements/moveSegmentElement.d.ts +0 -3
  344. package/dist/src/modules/mcp/tools/segment/schema/elements/segmentElements.test.d.ts +0 -1
  345. package/dist/src/modules/mcp/tools/segment/schema/elements/updateSegmentElement.d.ts +0 -3
  346. package/dist/src/modules/mcp/tools/segment/schema/index.d.ts +0 -2
  347. package/dist/src/modules/mcp/tools/segment/schema/variables/createSegmentVariable.d.ts +0 -3
  348. package/dist/src/modules/mcp/tools/segment/schema/variables/deleteSegmentVariable.d.ts +0 -3
  349. package/dist/src/modules/mcp/tools/segment/schema/variables/index.d.ts +0 -4
  350. package/dist/src/modules/mcp/tools/segment/schema/variables/segmentVariables.test.d.ts +0 -1
  351. package/dist/src/modules/mcp/tools/segment/schema/variables/updateSegmentVariable.d.ts +0 -3
  352. package/dist/src/modules/mcp/tools/segment/segment.test.d.ts +0 -1
  353. package/dist/src/modules/mcp/tools/segment/style/index.d.ts +0 -1
  354. package/dist/src/modules/mcp/tools/segment/style/variables/createSegmentStyleVariable.d.ts +0 -3
  355. package/dist/src/modules/mcp/tools/segment/style/variables/deleteSegmentStyleVariable.d.ts +0 -3
  356. package/dist/src/modules/mcp/tools/segment/style/variables/index.d.ts +0 -4
  357. package/dist/src/modules/mcp/tools/segment/style/variables/segmentStyleVariables.test.d.ts +0 -1
  358. package/dist/src/modules/mcp/tools/segment/style/variables/updateSegmentStyleVariable.d.ts +0 -3
  359. package/dist/src/modules/mcp/tools/segment/updateSegment.d.ts +0 -3
  360. package/dist/src/modules/mcp/tools/space/index.d.ts +0 -2
  361. package/dist/src/modules/mcp/tools/space/schema/applyPreview.d.ts +0 -3
  362. package/dist/src/modules/mcp/tools/space/schema/elements/cloneElement.d.ts +0 -3
  363. package/dist/src/modules/mcp/tools/space/schema/elements/createElement.d.ts +0 -3
  364. package/dist/src/modules/mcp/tools/space/schema/elements/deleteElement.d.ts +0 -3
  365. package/dist/src/modules/mcp/tools/space/schema/elements/elements.test.d.ts +0 -1
  366. package/dist/src/modules/mcp/tools/space/schema/elements/getElement.d.ts +0 -3
  367. package/dist/src/modules/mcp/tools/space/schema/elements/getElements.d.ts +0 -3
  368. package/dist/src/modules/mcp/tools/space/schema/elements/index.d.ts +0 -9
  369. package/dist/src/modules/mcp/tools/space/schema/elements/listElements.d.ts +0 -3
  370. package/dist/src/modules/mcp/tools/space/schema/elements/moveElement.d.ts +0 -3
  371. package/dist/src/modules/mcp/tools/space/schema/elements/updateElement.d.ts +0 -3
  372. package/dist/src/modules/mcp/tools/space/schema/getSpaceSettings.d.ts +0 -3
  373. package/dist/src/modules/mcp/tools/space/schema/index.d.ts +0 -8
  374. package/dist/src/modules/mcp/tools/space/schema/pageFolders/createPageFolder.d.ts +0 -3
  375. package/dist/src/modules/mcp/tools/space/schema/pageFolders/deletePageFolder.d.ts +0 -3
  376. package/dist/src/modules/mcp/tools/space/schema/pageFolders/getPageFolder.d.ts +0 -3
  377. package/dist/src/modules/mcp/tools/space/schema/pageFolders/getPageFolders.d.ts +0 -3
  378. package/dist/src/modules/mcp/tools/space/schema/pageFolders/index.d.ts +0 -6
  379. package/dist/src/modules/mcp/tools/space/schema/pageFolders/pageFolders.test.d.ts +0 -1
  380. package/dist/src/modules/mcp/tools/space/schema/pageFolders/updatePageFolder.d.ts +0 -3
  381. package/dist/src/modules/mcp/tools/space/schema/pages/createPage.d.ts +0 -3
  382. package/dist/src/modules/mcp/tools/space/schema/pages/deletePage.d.ts +0 -3
  383. package/dist/src/modules/mcp/tools/space/schema/pages/getPage.d.ts +0 -3
  384. package/dist/src/modules/mcp/tools/space/schema/pages/getPageBySlug.d.ts +0 -3
  385. package/dist/src/modules/mcp/tools/space/schema/pages/getPages.d.ts +0 -3
  386. package/dist/src/modules/mcp/tools/space/schema/pages/index.d.ts +0 -7
  387. package/dist/src/modules/mcp/tools/space/schema/pages/pages.test.d.ts +0 -1
  388. package/dist/src/modules/mcp/tools/space/schema/pages/updatePage.d.ts +0 -3
  389. package/dist/src/modules/mcp/tools/space/schema/schemas.d.ts +0 -66
  390. package/dist/src/modules/mcp/tools/space/schema/updateSpaceSettings.d.ts +0 -3
  391. package/dist/src/modules/mcp/tools/space/schema/variables/createVariable.d.ts +0 -3
  392. package/dist/src/modules/mcp/tools/space/schema/variables/deleteVariable.d.ts +0 -3
  393. package/dist/src/modules/mcp/tools/space/schema/variables/getVariable.d.ts +0 -3
  394. package/dist/src/modules/mcp/tools/space/schema/variables/getVariables.d.ts +0 -3
  395. package/dist/src/modules/mcp/tools/space/schema/variables/index.d.ts +0 -6
  396. package/dist/src/modules/mcp/tools/space/schema/variables/updateVariable.d.ts +0 -3
  397. package/dist/src/modules/mcp/tools/space/schema/variables/variables.test.d.ts +0 -1
  398. package/dist/src/modules/mcp/tools/space/space.test.d.ts +0 -1
  399. package/dist/src/modules/mcp/tools/space/style/index.d.ts +0 -2
  400. package/dist/src/modules/mcp/tools/space/style/selectors/createStyleSelector.d.ts +0 -3
  401. package/dist/src/modules/mcp/tools/space/style/selectors/deleteStyleSelector.d.ts +0 -3
  402. package/dist/src/modules/mcp/tools/space/style/selectors/getStyleSelectors.d.ts +0 -3
  403. package/dist/src/modules/mcp/tools/space/style/selectors/index.d.ts +0 -5
  404. package/dist/src/modules/mcp/tools/space/style/selectors/styleSelectors.test.d.ts +0 -1
  405. package/dist/src/modules/mcp/tools/space/style/selectors/updateStyleSelector.d.ts +0 -3
  406. package/dist/src/modules/mcp/tools/space/style/variables/createStyleVariable.d.ts +0 -3
  407. package/dist/src/modules/mcp/tools/space/style/variables/deleteStyleVariable.d.ts +0 -3
  408. package/dist/src/modules/mcp/tools/space/style/variables/getStyleVariable.d.ts +0 -3
  409. package/dist/src/modules/mcp/tools/space/style/variables/getStyleVariables.d.ts +0 -3
  410. package/dist/src/modules/mcp/tools/space/style/variables/index.d.ts +0 -6
  411. package/dist/src/modules/mcp/tools/space/style/variables/styleVariables.test.d.ts +0 -1
  412. package/dist/src/modules/mcp/tools/space/style/variables/updateStyleVariable.d.ts +0 -3
  413. /package/dist/src/{modules/mcp/helpers.test.d.ts → core/server/mcpServer.test.d.ts} +0 -0
  414. /package/dist/src/modules/{mcp/tools/collections/collections.test.d.ts → ai/toolkit.test.d.ts} +0 -0
  415. /package/dist/src/modules/mcp/{tools/plugins/plugins.test.d.ts → mcp.test.d.ts} +0 -0
@@ -0,0 +1,50 @@
1
+ import { z, ZodObject, ZodRawShape } from 'zod';
2
+ import { Space } from '../../helpers';
3
+ import { PreviewClient, ScreenshotClient, ScreenshotImage, Env, Persisters } from '../../types';
4
+ import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
5
+ /** Everything a tool needs at call time: the loaded space, the target environment, and the persisters (only the
6
+ * write tools use them). Built by whoever hosts the tools — the standalone MCP server or the in-process AI
7
+ * engine — so a tool's behavior never touches spaceId resolution or adapters directly. `spaceId`, `preview` and
8
+ * `screenshot` are present only when the host wired them (the visual-preview tools need them). */
9
+ export interface ToolContext {
10
+ space: Space;
11
+ env: Env;
12
+ persisters: Persisters;
13
+ spaceId?: number;
14
+ preview?: PreviewClient;
15
+ screenshot?: ScreenshotClient;
16
+ }
17
+ /** A capability a tool depends on; the host skips registering a tool whose capability it did not wire (so
18
+ * plitzi_screenshot simply does not appear when no browser service is configured). */
19
+ export type ToolRequires = 'screenshot';
20
+ /** Build the MCP CallToolResult for an image-returning tool: a text meta block followed by one image block per
21
+ * PNG, so a vision-capable agent (or MCP client) sees the render directly. */
22
+ export declare const imageResult: (images: ScreenshotImage[], meta: unknown) => CallToolResult;
23
+ /** What a tool author writes: identity, the input schema that is the contract sent to the agent, and a typed
24
+ * `run` (its args are inferred from `inputShape`, so no cast). `access` marks whether it persists — a 'write'
25
+ * tool previews (dryRun) in plan mode and can persist in build mode; a 'read' tool never writes. */
26
+ export interface ToolSpec<Shape extends ZodRawShape> {
27
+ name: string;
28
+ title: string;
29
+ description: string;
30
+ inputShape: Shape;
31
+ access: 'read' | 'write';
32
+ /** A host capability this tool needs; hosts that did not wire it skip registering the tool. */
33
+ requires?: ToolRequires;
34
+ run: (input: z.infer<ZodObject<Shape>>, ctx: ToolContext) => unknown;
35
+ }
36
+ /** What the registry holds and the hosts register from: the same metadata plus a type-erased `execute` that
37
+ * validates raw args against the shape and delegates to the typed `run`. Produced by `defineTool`. */
38
+ export interface ToolDef {
39
+ name: string;
40
+ title: string;
41
+ description: string;
42
+ inputShape: ZodRawShape;
43
+ access: 'read' | 'write';
44
+ requires?: ToolRequires;
45
+ execute: (args: unknown, ctx: ToolContext) => unknown;
46
+ }
47
+ /** Author a tool: give it its metadata, its input shape and a typed `run`. The returned descriptor parses the
48
+ * raw args against the shape before handing them to `run`, so `run` is fully typed and no cast is needed.
49
+ * Adding a tool is: call defineTool in its own file and append it to the `tools` registry. */
50
+ export declare const defineTool: <Shape extends ZodRawShape>(spec: ToolSpec<Shape>) => ToolDef;
@@ -0,0 +1,4 @@
1
+ import { Space } from '../../helpers';
2
+ import { ValidationResult } from '../../types';
3
+ import { Operation } from '../operations';
4
+ export declare const validateOperations: (space: Space, ops: Operation[]) => ValidationResult;
@@ -0,0 +1,228 @@
1
+ import { Space } from '../helpers';
2
+ import { ValidateInput, ValidationResult } from '../types';
3
+ export declare const validateShape: {
4
+ environment: import('zod').ZodOptional<import('zod').ZodString>;
5
+ operations: import('zod').ZodArray<import('zod').ZodDiscriminatedUnion<[import('zod').ZodObject<{
6
+ type: import('zod').ZodLiteral<"upsertElement">;
7
+ pageRef: import('zod').ZodString;
8
+ element: import('zod').ZodType<import('./operations').ElementInput, unknown, import('zod/v4/core').$ZodTypeInternals<import('./operations').ElementInput, unknown>>;
9
+ parentRef: import('zod').ZodOptional<import('zod').ZodString>;
10
+ position: import('zod').ZodOptional<import('zod').ZodEnum<{
11
+ inside: "inside";
12
+ before: "before";
13
+ after: "after";
14
+ }>>;
15
+ }, import('zod/v4/core').$strip>, import('zod').ZodObject<{
16
+ type: import('zod').ZodLiteral<"patchElement">;
17
+ pageRef: import('zod').ZodString;
18
+ ref: import('zod').ZodString;
19
+ label: import('zod').ZodOptional<import('zod').ZodString>;
20
+ subType: import('zod').ZodOptional<import('zod').ZodString>;
21
+ props: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnknown>>;
22
+ style: import('zod').ZodOptional<import('zod').ZodObject<{
23
+ base: import('zod').ZodOptional<import('zod').ZodArray<import('zod').ZodString>>;
24
+ slots: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodArray<import('zod').ZodString>>>;
25
+ }, import('zod/v4/core').$strip>>;
26
+ }, import('zod/v4/core').$strip>, import('zod').ZodObject<{
27
+ type: import('zod').ZodLiteral<"deleteElement">;
28
+ pageRef: import('zod').ZodString;
29
+ ref: import('zod').ZodString;
30
+ }, import('zod/v4/core').$strip>, import('zod').ZodObject<{
31
+ type: import('zod').ZodLiteral<"moveElement">;
32
+ pageRef: import('zod').ZodString;
33
+ ref: import('zod').ZodString;
34
+ toParentRef: import('zod').ZodString;
35
+ position: import('zod').ZodEnum<{
36
+ inside: "inside";
37
+ before: "before";
38
+ after: "after";
39
+ }>;
40
+ }, import('zod/v4/core').$strip>, import('zod').ZodObject<{
41
+ type: import('zod').ZodLiteral<"upsertPage">;
42
+ ref: import('zod').ZodString;
43
+ label: import('zod').ZodOptional<import('zod').ZodString>;
44
+ slug: import('zod').ZodOptional<import('zod').ZodString>;
45
+ folder: import('zod').ZodOptional<import('zod').ZodNullable<import('zod').ZodString>>;
46
+ default: import('zod').ZodOptional<import('zod').ZodBoolean>;
47
+ }, import('zod/v4/core').$strip>, import('zod').ZodObject<{
48
+ type: import('zod').ZodLiteral<"deletePage">;
49
+ ref: import('zod').ZodString;
50
+ }, import('zod/v4/core').$strip>, import('zod').ZodObject<{
51
+ type: import('zod').ZodLiteral<"upsertFolder">;
52
+ ref: import('zod').ZodString;
53
+ name: import('zod').ZodOptional<import('zod').ZodString>;
54
+ slug: import('zod').ZodOptional<import('zod').ZodString>;
55
+ parentId: import('zod').ZodOptional<import('zod').ZodNullable<import('zod').ZodString>>;
56
+ }, import('zod/v4/core').$strip>, import('zod').ZodObject<{
57
+ type: import('zod').ZodLiteral<"deleteFolder">;
58
+ ref: import('zod').ZodString;
59
+ }, import('zod/v4/core').$strip>, import('zod').ZodObject<{
60
+ type: import('zod').ZodLiteral<"upsertVariable">;
61
+ name: import('zod').ZodString;
62
+ variableType: import('zod').ZodString;
63
+ value: import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodBoolean]>;
64
+ category: import('zod').ZodOptional<import('zod').ZodString>;
65
+ subValues: import('zod').ZodOptional<import('zod').ZodArray<import('zod').ZodObject<{
66
+ when: import('zod').ZodUnknown;
67
+ value: import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodBoolean]>;
68
+ }, import('zod/v4/core').$strip>>>;
69
+ }, import('zod/v4/core').$strip>, import('zod').ZodObject<{
70
+ type: import('zod').ZodLiteral<"deleteVariable">;
71
+ name: import('zod').ZodString;
72
+ }, import('zod/v4/core').$strip>, import('zod').ZodObject<{
73
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
74
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
75
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
76
+ states: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
77
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
78
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
79
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
80
+ }, import('zod/v4/core').$strip>>>;
81
+ variants: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
82
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
83
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
84
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
85
+ }, import('zod/v4/core').$strip>>>;
86
+ slots: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
87
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
88
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
89
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
90
+ states: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
91
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
92
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
93
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
94
+ }, import('zod/v4/core').$strip>>>;
95
+ variants: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
96
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
97
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
98
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
99
+ }, import('zod/v4/core').$strip>>>;
100
+ }, import('zod/v4/core').$strip>>>;
101
+ type: import('zod').ZodLiteral<"upsertDefinition">;
102
+ ref: import('zod').ZodString;
103
+ }, import('zod/v4/core').$strip>, import('zod').ZodObject<{
104
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
105
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
106
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
107
+ states: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
108
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
109
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
110
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
111
+ }, import('zod/v4/core').$strip>>>;
112
+ variants: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
113
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
114
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
115
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
116
+ }, import('zod/v4/core').$strip>>>;
117
+ slots: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
118
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
119
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
120
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
121
+ states: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
122
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
123
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
124
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
125
+ }, import('zod/v4/core').$strip>>>;
126
+ variants: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
127
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
128
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
129
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
130
+ }, import('zod/v4/core').$strip>>>;
131
+ }, import('zod/v4/core').$strip>>>;
132
+ type: import('zod').ZodLiteral<"patchDefinition">;
133
+ ref: import('zod').ZodString;
134
+ }, import('zod/v4/core').$strip>, import('zod').ZodObject<{
135
+ type: import('zod').ZodLiteral<"deleteDefinition">;
136
+ ref: import('zod').ZodString;
137
+ }, import('zod/v4/core').$strip>, import('zod').ZodObject<{
138
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
139
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
140
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
141
+ states: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
142
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
143
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
144
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
145
+ }, import('zod/v4/core').$strip>>>;
146
+ variants: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
147
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
148
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
149
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
150
+ }, import('zod/v4/core').$strip>>>;
151
+ slots: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
152
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
153
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
154
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
155
+ states: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
156
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
157
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
158
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
159
+ }, import('zod/v4/core').$strip>>>;
160
+ variants: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
161
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
162
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
163
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber]>>>;
164
+ }, import('zod/v4/core').$strip>>>;
165
+ }, import('zod/v4/core').$strip>>>;
166
+ type: import('zod').ZodLiteral<"upsertGlobalStyle">;
167
+ componentType: import('zod').ZodString;
168
+ }, import('zod/v4/core').$strip>, import('zod').ZodObject<{
169
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
170
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
171
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
172
+ states: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
173
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
174
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
175
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
176
+ }, import('zod/v4/core').$strip>>>;
177
+ variants: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
178
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
179
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
180
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
181
+ }, import('zod/v4/core').$strip>>>;
182
+ slots: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
183
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
184
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
185
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
186
+ states: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
187
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
188
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
189
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
190
+ }, import('zod/v4/core').$strip>>>;
191
+ variants: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodObject<{
192
+ desktop: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
193
+ tablet: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
194
+ mobile: import('zod').ZodOptional<import('zod').ZodRecord<import('zod').ZodString, import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodNull]>>>;
195
+ }, import('zod/v4/core').$strip>>>;
196
+ }, import('zod/v4/core').$strip>>>;
197
+ type: import('zod').ZodLiteral<"patchGlobalStyle">;
198
+ componentType: import('zod').ZodString;
199
+ }, import('zod/v4/core').$strip>, import('zod').ZodObject<{
200
+ type: import('zod').ZodLiteral<"deleteGlobalStyle">;
201
+ componentType: import('zod').ZodString;
202
+ }, import('zod/v4/core').$strip>, import('zod').ZodObject<{
203
+ type: import('zod').ZodLiteral<"upsertStyleVariable">;
204
+ category: import('zod').ZodEnum<{
205
+ color: "color";
206
+ spacing: "spacing";
207
+ shadow: "shadow";
208
+ custom: "custom";
209
+ }>;
210
+ name: import('zod').ZodString;
211
+ value: import('zod').ZodUnion<readonly [import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodObject<{
212
+ light: import('zod').ZodOptional<import('zod').ZodString>;
213
+ dark: import('zod').ZodOptional<import('zod').ZodString>;
214
+ default: import('zod').ZodOptional<import('zod').ZodString>;
215
+ }, import('zod/v4/core').$strip>]>;
216
+ }, import('zod/v4/core').$strip>, import('zod').ZodObject<{
217
+ type: import('zod').ZodLiteral<"deleteStyleVariable">;
218
+ category: import('zod').ZodEnum<{
219
+ color: "color";
220
+ spacing: "spacing";
221
+ shadow: "shadow";
222
+ custom: "custom";
223
+ }>;
224
+ name: import('zod').ZodString;
225
+ }, import('zod/v4/core').$strip>], "type">>;
226
+ };
227
+ export declare const validate: (input: ValidateInput, space: Space) => ValidationResult;
228
+ export declare const validateTool: import('.').ToolDef;
@@ -0,0 +1,126 @@
1
+ import { Environment } from '@plitzi/sdk-shared';
2
+ export type Env = Environment;
3
+ /** CSS declarations for one selector state. Keys are kebab-case CSS properties (see plitzi://css-properties). */
4
+ export type CssProps = Record<string, string | number>;
5
+ export interface DisplayModeCss {
6
+ desktop?: CssProps;
7
+ tablet?: CssProps;
8
+ mobile?: CssProps;
9
+ }
10
+ export interface ResourceEnvelope<T> {
11
+ stateVersion: string;
12
+ data: T;
13
+ }
14
+ /**
15
+ * Read projections follow a filesystem model: list cheap summaries/skeletons, then read one element's detail
16
+ * on demand. Heavy per-element data (props, style) lives only in AIElementDetail, never in the listings.
17
+ */
18
+ export interface AIPageSummary {
19
+ ref: string;
20
+ label: string;
21
+ slug: string;
22
+ default: boolean;
23
+ /** The ref of the folder this page lives in (a PageFolder id), or undefined for a root-level page. */
24
+ folder?: string;
25
+ elementCount: number;
26
+ }
27
+ /** A page folder in the sidebar tree. `ref` is the folder's id (there is no separate aiRef); pages reference it
28
+ * by that id via their `folder`, and nested folders via `parentId`. */
29
+ export interface AIFolder {
30
+ ref: string;
31
+ name: string;
32
+ slug: string;
33
+ parentId?: string;
34
+ }
35
+ export interface AISkeletonNode {
36
+ ref: string;
37
+ type: string;
38
+ label: string;
39
+ subType?: string;
40
+ /** The class refs this node attaches on its base selector — names only, no CSS. Lets an agent map element →
41
+ * class straight from the page skeleton, without a per-element read just to learn which class it uses. */
42
+ base?: string[];
43
+ /** Class refs attached on non-base slots (slot → class refs), names only. */
44
+ slots?: Record<string, string[]>;
45
+ childCount: number;
46
+ children?: AISkeletonNode[];
47
+ }
48
+ export interface AIPageSkeleton {
49
+ ref: string;
50
+ label: string;
51
+ slug: string;
52
+ default: boolean;
53
+ /** Route params bound by the slug (e.g. ":spaceId" → ["spaceId"]). Valid as {{name}} references on this page,
54
+ * alongside the space-level plitzi://schema-variables. */
55
+ routeParams: string[];
56
+ tree: AISkeletonNode[];
57
+ }
58
+ /** Every style a page uses in one payload: the class definitions its elements attach (deduplicated, with CSS)
59
+ * and the global element selectors that affect any element type present on the page. Collapses "what styles
60
+ * does this page use" to a single read, with no reliance on a shared class-naming prefix. */
61
+ export interface AIPageStyles {
62
+ ref: string;
63
+ definitions: AIDefinition[];
64
+ globalStyles: AIGlobalStyle[];
65
+ }
66
+ export interface AIElementDetail {
67
+ ref: string;
68
+ type: string;
69
+ subType?: string;
70
+ label: string;
71
+ pageRef: string;
72
+ parentRef?: string;
73
+ props?: Record<string, unknown>;
74
+ style: {
75
+ base: string[];
76
+ slots: Record<string, string[]>;
77
+ };
78
+ /** CSS of the definitions referenced by `style` (keyed by class ref), inlined so an edit needs no follow-up
79
+ * read of each definition. Present only for refs that resolve to a definition. */
80
+ resolvedStyle?: Record<string, AIDefinition>;
81
+ /** Global (type 'element') styles that also affect this element because they target its type — every element of
82
+ * the type inherits them. Read-only here (not editable as definitions); shown so the effective CSS is complete. */
83
+ globalStyles?: AIGlobalStyle[];
84
+ childRefs?: string[];
85
+ }
86
+ /** A global element style (a type 'element' StyleItem): its CSS applies to every element whose type equals
87
+ * `appliesToType`. It is not an addressable class definition — editing it would change every such element. */
88
+ export interface AIGlobalStyle extends AIDefinition {
89
+ appliesToType: string;
90
+ }
91
+ export interface AIDefinitionSlot extends DisplayModeCss {
92
+ states?: Record<string, DisplayModeCss>;
93
+ variants?: Record<string, DisplayModeCss>;
94
+ }
95
+ export interface AIDefinition extends AIDefinitionSlot {
96
+ ref: string;
97
+ slots?: Record<string, AIDefinitionSlot>;
98
+ }
99
+ export type StyleVariableCategory = 'color' | 'spacing' | 'shadow' | 'custom';
100
+ export type StyleVariableValue = string | number | {
101
+ light?: string;
102
+ dark?: string;
103
+ default?: string;
104
+ };
105
+ export interface AIStyleVariable {
106
+ name: string;
107
+ reference: string;
108
+ value: StyleVariableValue;
109
+ }
110
+ export interface AISchemaVariable {
111
+ name: string;
112
+ reference: string;
113
+ category: string;
114
+ type: string;
115
+ value: string | number | boolean;
116
+ subValues?: Array<{
117
+ when: unknown;
118
+ value: string | number | boolean;
119
+ }>;
120
+ }
121
+ export interface ValidationError {
122
+ path: string;
123
+ message: string;
124
+ hint: string;
125
+ validValues?: unknown[];
126
+ }
@@ -0,0 +1,4 @@
1
+ export type * from './aiSchema';
2
+ export type * from './toolTypes';
3
+ export type * from './previewTypes';
4
+ export type * from './screenshotTypes';
@@ -0,0 +1,25 @@
1
+ import { ValidationError } from './aiSchema';
2
+ import { Operation } from '../tools/operations';
3
+ export type PreviewRequestBody = {
4
+ spaceId: number;
5
+ env?: string;
6
+ pageRef?: string;
7
+ operations?: Operation[];
8
+ };
9
+ export type PreviewResult = {
10
+ ok: true;
11
+ token?: string;
12
+ pagePath: string;
13
+ html: string;
14
+ stateVersion: string;
15
+ } | {
16
+ ok: false;
17
+ error: string;
18
+ message: string;
19
+ errors?: ValidationError[];
20
+ };
21
+ /** How the MCP tools reach the renderer. The consumer injects an implementation (an HTTP client to the SSR
22
+ * `/preview` endpoint, or an in-process call when co-located); absent means preview is not wired. */
23
+ export type PreviewClient = {
24
+ render: (body: PreviewRequestBody) => Promise<PreviewResult>;
25
+ };
@@ -0,0 +1,29 @@
1
+ export type Viewport = {
2
+ label: string;
3
+ width: number;
4
+ height: number;
5
+ };
6
+ export type ScreenshotImage = {
7
+ label: string;
8
+ mimeType: string;
9
+ data: string;
10
+ };
11
+ export type ScreenshotResult = {
12
+ ok: true;
13
+ images: ScreenshotImage[];
14
+ } | {
15
+ ok: false;
16
+ error: string;
17
+ message: string;
18
+ };
19
+ export type ScreenshotInput = {
20
+ pagePath: string;
21
+ token?: string;
22
+ viewports: Viewport[];
23
+ };
24
+ /** How plitzi_screenshot reaches the headless-browser service. The consumer injects an implementation (an HTTP
25
+ * client to the dedicated browser pod); absent → the tool is not registered. A capture that fails (pod down)
26
+ * returns `ok:false` rather than throwing, so the tool can degrade to the HTML preview. */
27
+ export type ScreenshotClient = {
28
+ capture: (input: ScreenshotInput) => Promise<ScreenshotResult>;
29
+ };
@@ -0,0 +1,138 @@
1
+ import { AIDefinition, AIElementDetail, ValidationError } from './aiSchema';
2
+ import { Operation } from '../tools/operations';
3
+ import { Schema, Style } from '@plitzi/sdk-shared';
4
+ /** The element schema and the style schema persist independently (Space model / Style model), so each has
5
+ * its own optional persister. When one is absent, that schema is applied in memory but reported unsaved. */
6
+ export interface Persisters {
7
+ schema?: (schema: Schema) => Promise<void>;
8
+ style?: (style: Style) => Promise<void>;
9
+ }
10
+ export interface Conflict {
11
+ resourceUri: string;
12
+ expectedVersion: string;
13
+ currentVersion: string;
14
+ }
15
+ export interface ChangedResource {
16
+ uri: string;
17
+ stateVersion: string;
18
+ }
19
+ /** Full detail of a created/updated element, plus its own uri and stateVersion so a follow-up edit of the same
20
+ * element can guard with optimistic concurrency without an intermediate read. */
21
+ export type WriteElement = AIElementDetail & {
22
+ uri: string;
23
+ stateVersion: string;
24
+ };
25
+ /** Write result: what changed and the new versions, plus the full detail of every element created/updated (with
26
+ * its uri + stateVersion) so the caller has that context without a follow-up read. Other resources (pages,
27
+ * definitions, variables) still report only uri+version — re-read them if needed. */
28
+ export interface WriteResponse {
29
+ applied: boolean;
30
+ dryRun?: boolean;
31
+ persisted?: boolean;
32
+ summary: {
33
+ created: number;
34
+ updated: number;
35
+ deleted: number;
36
+ };
37
+ changed: ChangedResource[];
38
+ elements?: WriteElement[];
39
+ warnings?: string[];
40
+ errors?: ValidationError[];
41
+ conflict?: {
42
+ message: string;
43
+ conflicts: Conflict[];
44
+ };
45
+ }
46
+ /** The outcome of applying a batch to the space in memory: counts, which schema(s) changed (so the caller can
47
+ * persist each independently), the invalidated resource URIs and the refs of the elements it created/updated. */
48
+ export interface MutationOutcome {
49
+ created: number;
50
+ updated: number;
51
+ deleted: number;
52
+ staleResources: string[];
53
+ elementRefs: string[];
54
+ errors: ValidationError[];
55
+ changedSchema: boolean;
56
+ changedStyle: boolean;
57
+ }
58
+ export interface ApplyInput {
59
+ environment?: string;
60
+ dryRun?: boolean;
61
+ expectedResourceVersions?: Record<string, string>;
62
+ operations: Operation[];
63
+ }
64
+ export interface ValidateInput {
65
+ environment?: string;
66
+ operations: Operation[];
67
+ }
68
+ export interface ValidationResult {
69
+ valid: boolean;
70
+ errors: ValidationError[];
71
+ warnings: string[];
72
+ }
73
+ export interface SearchInput {
74
+ query: string;
75
+ filters?: {
76
+ type?: string;
77
+ pageRef?: string;
78
+ };
79
+ /** 'detail' inlines each hit's full props/style so an edit needs no follow-up read. */
80
+ include?: 'detail';
81
+ /** Max element hits to return in this page (default 50). */
82
+ limit?: number;
83
+ /** Element hits to skip before this page (default 0). */
84
+ offset?: number;
85
+ }
86
+ export interface SearchHit {
87
+ pageRef: string;
88
+ ref: string;
89
+ uri: string;
90
+ pageUri: string;
91
+ stateVersion: string;
92
+ parentRef?: string;
93
+ /** Ancestor labels from the page down to and including this element. */
94
+ path: string[];
95
+ label: string;
96
+ type: string;
97
+ matches: string[];
98
+ detail?: AIElementDetail;
99
+ }
100
+ export interface SearchPageHit {
101
+ ref: string;
102
+ uri: string;
103
+ stateVersion: string;
104
+ label: string;
105
+ slug: string;
106
+ matches: string[];
107
+ }
108
+ export interface SearchResponse {
109
+ results: SearchHit[];
110
+ /** Total element hits matching the query across all pages, before offset/limit. */
111
+ total: number;
112
+ /** Element hits skipped before this page (echoes the request's offset, defaulted). */
113
+ offset: number;
114
+ /** Page size applied to element hits (echoes the request's limit, defaulted). */
115
+ limit: number;
116
+ /** The offset to pass next to fetch the following page. Present only while more hits remain past this page. */
117
+ nextOffset?: number;
118
+ /** Style definitions whose ref matches the query, with their full CSS — so finding a class by name closes the
119
+ * loop to its style without a separate read. Present only when at least one definition matches. */
120
+ definitions?: AIDefinition[];
121
+ /** Pages whose name or slug matches the query (element hits never include pages). Each carries the page uri +
122
+ * stateVersion, ready to open or edit. Present only when at least one page matches. */
123
+ pages?: SearchPageHit[];
124
+ }
125
+ export interface ReadInput {
126
+ uris: string[];
127
+ }
128
+ export interface ReadHit {
129
+ uri: string;
130
+ stateVersion?: string;
131
+ data?: unknown;
132
+ error?: string;
133
+ message?: string;
134
+ hint?: string;
135
+ }
136
+ export interface ReadResponse {
137
+ results: ReadHit[];
138
+ }
@@ -1,9 +1,9 @@
1
1
  import { TtlCache } from '../../helpers/cache';
2
2
  import { RequestMetrics } from '../../helpers/metrics';
3
3
  import { PluginManager } from '../../plugins/manager';
4
- import { Environment, SSRRenderResult, SSRRequest, SSRServerConfig, SSRTemplateFn } from '@plitzi/sdk-shared';
4
+ import { Environment, OfflineDataRaw, SSRRenderResult, SSRRequest, SSRServerConfig, SSRTemplateFn } from '@plitzi/sdk-shared';
5
5
  export type BuildBodyResult = {
6
6
  body?: string;
7
7
  result: SSRRenderResult;
8
8
  };
9
- export declare const buildBody: (req: SSRRequest, config: SSRServerConfig, spaceId: number, environment: Environment, revision: number, renderFn: SSRTemplateFn, pluginManager: PluginManager, offlineDataCache?: TtlCache<string>, metrics?: RequestMetrics) => Promise<BuildBodyResult>;
9
+ export declare const buildBody: (req: SSRRequest, config: SSRServerConfig, spaceId: number, environment: Environment, revision: number, renderFn: SSRTemplateFn, pluginManager: PluginManager, offlineDataCache?: TtlCache<string>, metrics?: RequestMetrics, offlineDataOverride?: OfflineDataRaw) => Promise<BuildBodyResult>;