@plitzi/sdk-server 0.32.25 → 0.33.1

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 (514) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +326 -162
  3. package/dist/adapters/authAdapters.d.ts +21 -0
  4. package/dist/adapters/authAdapters.js +12 -0
  5. package/dist/adapters/jsonAdapters.d.ts +15 -0
  6. package/dist/adapters/jsonAdapters.js +9 -4
  7. package/dist/core/auth/api.d.ts +148 -0
  8. package/dist/core/auth/api.js +286 -0
  9. package/dist/core/auth/authorize.d.ts +96 -0
  10. package/dist/core/auth/authorize.js +92 -0
  11. package/dist/core/auth/createAuth.d.ts +165 -0
  12. package/dist/core/auth/createAuth.js +105 -0
  13. package/dist/core/auth/credentials.d.ts +29 -0
  14. package/dist/core/auth/credentials.js +48 -0
  15. package/dist/core/auth/domains.d.ts +41 -0
  16. package/dist/core/auth/domains.js +78 -0
  17. package/dist/core/auth/identity.d.ts +108 -0
  18. package/dist/core/auth/identity.js +164 -0
  19. package/dist/core/auth/oauth/client.d.ts +5 -0
  20. package/dist/core/auth/oauth/client.js +47 -0
  21. package/dist/core/auth/oauth/index.d.ts +78 -0
  22. package/dist/core/auth/oauth/index.js +113 -0
  23. package/dist/core/auth/oauth/providers/github.d.ts +2 -0
  24. package/dist/core/auth/oauth/providers/github.js +48 -0
  25. package/dist/core/auth/oauth/providers/google.d.ts +2 -0
  26. package/dist/core/auth/oauth/providers/google.js +30 -0
  27. package/dist/core/auth/oauth/state.d.ts +23 -0
  28. package/dist/core/auth/oauth/state.js +55 -0
  29. package/dist/core/auth/oauth/types.d.ts +51 -0
  30. package/dist/core/auth/oauth/types.js +13 -0
  31. package/dist/core/auth/routes.d.ts +50 -0
  32. package/dist/core/auth/routes.js +129 -0
  33. package/dist/core/auth/session.d.ts +128 -0
  34. package/dist/core/auth/session.js +165 -0
  35. package/dist/core/auth/spaceTokens.d.ts +137 -0
  36. package/dist/core/auth/spaceTokens.js +212 -0
  37. package/dist/core/auth/tokens.d.ts +151 -0
  38. package/dist/core/auth/tokens.js +221 -0
  39. package/dist/core/createServer.d.ts +29 -0
  40. package/dist/core/createServer.js +28 -14
  41. package/dist/core/handlers/authMiddleware.d.ts +27 -0
  42. package/dist/core/handlers/authMiddleware.js +38 -0
  43. package/dist/core/handlers/authRouteHandlers.d.ts +46 -0
  44. package/dist/core/handlers/authRouteHandlers.js +75 -0
  45. package/dist/core/handlers/types.d.ts +37 -0
  46. package/dist/{src/core → core}/http/dispatcher.d.ts +2 -2
  47. package/dist/core/http/dispatcher.js +8 -6
  48. package/dist/core/http/navigation.d.ts +11 -0
  49. package/dist/core/http/navigation.js +16 -0
  50. package/dist/core/http/securityHeaders.js +6 -4
  51. package/dist/core/http/stages/authApi.d.ts +17 -0
  52. package/dist/core/http/stages/authApi.js +66 -0
  53. package/dist/core/http/stages/authRoutes.js +40 -11
  54. package/dist/core/http/stages/exchangeRoute.d.ts +15 -0
  55. package/dist/core/http/stages/exchangeRoute.js +67 -0
  56. package/dist/core/http/stages/health.d.ts +11 -0
  57. package/dist/core/http/stages/health.js +25 -3
  58. package/dist/core/http/stages/middlewares.d.ts +2 -0
  59. package/dist/core/http/stages/static.d.ts +13 -0
  60. package/dist/core/http/stages/static.js +21 -6
  61. package/dist/core/http/types.d.ts +35 -0
  62. package/dist/{modules/mcp/constants.js → core/previewToken.js} +1 -1
  63. package/dist/core/sdkAssets.d.ts +16 -0
  64. package/dist/core/sdkAssets.js +46 -0
  65. package/dist/core/server/baseServer.js +40 -5
  66. package/dist/core/server/pageServer.d.ts +7 -0
  67. package/dist/core/server/pageServer.js +13 -17
  68. package/dist/core/services/action.d.ts +9 -0
  69. package/dist/core/services/action.js +21 -0
  70. package/dist/core/services/registry.d.ts +3 -0
  71. package/dist/core/services/registry.js +9 -19
  72. package/dist/{src/core → core}/services/resolve.d.ts +1 -0
  73. package/dist/core/services/resolve.js +6 -4
  74. package/dist/core/services/rsc.js +3 -2
  75. package/dist/core/staticFiles.js +1 -1
  76. package/dist/{src/core → core}/transports.d.ts +3 -0
  77. package/dist/core/transports.js +7 -6
  78. package/dist/handlers.d.ts +58 -0
  79. package/dist/handlers.js +3 -0
  80. package/dist/{src/helpers → helpers}/buildResponseHelpers.d.ts +2 -1
  81. package/dist/helpers/buildResponseHelpers.js +13 -4
  82. package/dist/helpers/buildServerInfo.d.ts +3 -0
  83. package/dist/helpers/buildServerInfo.js +25 -3
  84. package/dist/{src/helpers → helpers}/cache/keys.d.ts +5 -1
  85. package/dist/helpers/cache/keys.js +1 -1
  86. package/dist/helpers/compress.d.ts +18 -0
  87. package/dist/helpers/compress.js +47 -11
  88. package/dist/helpers/offlineDataLoader.d.ts +11 -0
  89. package/dist/helpers/offlineDataLoader.js +15 -0
  90. package/dist/helpers/resolveDebugMode.d.ts +10 -0
  91. package/dist/helpers/resolveDebugMode.js +13 -0
  92. package/dist/index.d.ts +16 -2
  93. package/dist/index.js +9 -20
  94. package/dist/kernel.d.ts +41 -0
  95. package/dist/kernel.js +22 -0
  96. package/dist/middlewares/spaceDeployment.d.ts +2 -0
  97. package/dist/middlewares/spaceDeployment.js +2 -1
  98. package/dist/modules/actions/handler.d.ts +11 -0
  99. package/dist/modules/actions/handler.js +77 -0
  100. package/dist/modules/connectors/engine.d.ts +42 -0
  101. package/dist/modules/connectors/engine.js +221 -0
  102. package/dist/modules/connectors/getByPath.d.ts +8 -0
  103. package/dist/modules/connectors/getByPath.js +21 -0
  104. package/dist/modules/connectors/index.d.ts +7 -0
  105. package/dist/modules/connectors/projection.d.ts +18 -0
  106. package/dist/modules/connectors/projection.js +108 -0
  107. package/dist/modules/connectors/resolver.d.ts +18 -0
  108. package/dist/modules/connectors/resolver.js +68 -0
  109. package/dist/modules/connectors/types.d.ts +19 -0
  110. package/dist/{src/modules → modules}/rsc/handler.d.ts +2 -2
  111. package/dist/modules/rsc/handler.js +54 -2
  112. package/dist/modules/rsc/resolveRscData.d.ts +35 -0
  113. package/dist/modules/rsc/resolveRscData.js +74 -0
  114. package/dist/{src/modules → modules}/ssr/Component.d.ts +4 -1
  115. package/dist/modules/ssr/Component.js +10 -3
  116. package/dist/modules/ssr/buildBody.d.ts +9 -0
  117. package/dist/modules/ssr/handler.d.ts +4 -0
  118. package/dist/modules/ssr/handler.js +18 -1
  119. package/dist/{src/modules → modules}/ssr/loadPluginComponents.d.ts +5 -2
  120. package/dist/modules/ssr/loadPluginComponents.js +20 -2
  121. package/dist/{src/modules → modules}/ssr/prepareRender.d.ts +2 -2
  122. package/dist/modules/ssr/prepareRender.js +24 -7
  123. package/dist/modules/ssr/preview.d.ts +10 -0
  124. package/dist/modules/ssr/preview.js +5 -78
  125. package/dist/modules/ssr/registerExternalPlugins.js +1 -1
  126. package/dist/modules/ssr/streamBody.d.ts +5 -0
  127. package/dist/modules/ssr/streamBody.js +1 -1
  128. package/dist/modules/ssr/template.d.ts +2 -0
  129. package/dist/modules/ssr/template.js +1 -1
  130. package/dist/plugins/compile.js +1 -1
  131. package/dist/plugins/manager.js +12 -8
  132. package/dist/ssr.d.ts +15 -0
  133. package/dist/ssr.js +4 -0
  134. package/package.json +29 -25
  135. package/dist/.gitkeep +0 -0
  136. package/dist/core/server/mcpServer.js +0 -29
  137. package/dist/core/services/mcp.js +0 -27
  138. package/dist/core/services/oauth.js +0 -116
  139. package/dist/core/services/preview.js +0 -37
  140. package/dist/core/services/proxy.js +0 -12
  141. package/dist/mcp.d.ts +0 -2
  142. package/dist/mcp.js +0 -7
  143. package/dist/modules/ai/AIEngine.js +0 -120
  144. package/dist/modules/ai/toolkit.js +0 -59
  145. package/dist/modules/mcp/apps/example/view/index.tsx +0 -70
  146. package/dist/modules/mcp/apps/index.js +0 -16
  147. package/dist/modules/mcp/apps/render/index.js +0 -17
  148. package/dist/modules/mcp/apps/render/styles.js +0 -54
  149. package/dist/modules/mcp/apps/render/view/heldBatch.ts +0 -107
  150. package/dist/modules/mcp/apps/render/view/index.tsx +0 -314
  151. package/dist/modules/mcp/apps/render/view/streamProgress.ts +0 -137
  152. package/dist/modules/mcp/apps/shared/assets.js +0 -10
  153. package/dist/modules/mcp/apps/shared/bundle.js +0 -23
  154. package/dist/modules/mcp/apps/shared/page.js +0 -34
  155. package/dist/modules/mcp/apps/shared/registerApp.js +0 -43
  156. package/dist/modules/mcp/apps/shared/resolve.js +0 -5
  157. package/dist/modules/mcp/apps/shared/shell.ejs +0 -59
  158. package/dist/modules/mcp/apps/shared/zodEnglishOnly.js +0 -23
  159. package/dist/modules/mcp/catalogs/builtinCallbacks.js +0 -204
  160. package/dist/modules/mcp/catalogs/builtinComponents.js +0 -170
  161. package/dist/modules/mcp/catalogs/builtinElementCallbacks.js +0 -50
  162. package/dist/modules/mcp/catalogs/builtinTransformers.js +0 -148
  163. package/dist/modules/mcp/catalogs/builtinUtilities.js +0 -90
  164. package/dist/modules/mcp/catalogs/cssCatalog/border.js +0 -30
  165. package/dist/modules/mcp/catalogs/cssCatalog/box.js +0 -31
  166. package/dist/modules/mcp/catalogs/cssCatalog/helpers.js +0 -185
  167. package/dist/modules/mcp/catalogs/cssCatalog/index.js +0 -131
  168. package/dist/modules/mcp/catalogs/cssCatalog/layout.js +0 -98
  169. package/dist/modules/mcp/catalogs/cssCatalog/visual.js +0 -144
  170. package/dist/modules/mcp/catalogs/observed.js +0 -90
  171. package/dist/modules/mcp/catalogs/paramSpec.js +0 -69
  172. package/dist/modules/mcp/catalogs/registry.js +0 -89
  173. package/dist/modules/mcp/handler.js +0 -83
  174. package/dist/modules/mcp/helpers/agentPrompt.js +0 -104
  175. package/dist/modules/mcp/helpers/computeVersion.js +0 -16
  176. package/dist/modules/mcp/helpers/guide.js +0 -467
  177. package/dist/modules/mcp/helpers/interactions.js +0 -123
  178. package/dist/modules/mcp/helpers/log.js +0 -64
  179. package/dist/modules/mcp/helpers/opResult.js +0 -18
  180. package/dist/modules/mcp/helpers/space.js +0 -300
  181. package/dist/modules/mcp/helpers/uris.js +0 -44
  182. package/dist/modules/mcp/previewClient.js +0 -31
  183. package/dist/modules/mcp/proxy/config.js +0 -63
  184. package/dist/modules/mcp/proxy/fetch.js +0 -91
  185. package/dist/modules/mcp/proxy/grant.js +0 -67
  186. package/dist/modules/mcp/proxy/guard.js +0 -38
  187. package/dist/modules/mcp/proxy/handler.js +0 -99
  188. package/dist/modules/mcp/proxy/payload.js +0 -29
  189. package/dist/modules/mcp/proxy/rewrite.js +0 -138
  190. package/dist/modules/mcp/proxy/sign.js +0 -15
  191. package/dist/modules/mcp/proxy/types.js +0 -9
  192. package/dist/modules/mcp/resources/canonical.js +0 -30
  193. package/dist/modules/mcp/resources/core.js +0 -18
  194. package/dist/modules/mcp/resources/envelope.js +0 -14
  195. package/dist/modules/mcp/resources/primer.js +0 -31
  196. package/dist/modules/mcp/resources/register.js +0 -190
  197. package/dist/modules/mcp/resources/renderGuide.js +0 -451
  198. package/dist/modules/mcp/resources/router.js +0 -37
  199. package/dist/modules/mcp/resources/schema.js +0 -43
  200. package/dist/modules/mcp/resources/style.js +0 -34
  201. package/dist/modules/mcp/screenshotClient.js +0 -47
  202. package/dist/modules/mcp/server.js +0 -113
  203. package/dist/modules/mcp/tools/apply/dispatch.js +0 -105
  204. package/dist/modules/mcp/tools/apply/index.js +0 -150
  205. package/dist/modules/mcp/tools/apply/writeResult.js +0 -37
  206. package/dist/modules/mcp/tools/index.js +0 -24
  207. package/dist/modules/mcp/tools/operations/index.js +0 -45
  208. package/dist/modules/mcp/tools/operations/schema/bindings/deleteBinding.js +0 -32
  209. package/dist/modules/mcp/tools/operations/schema/bindings/patchBinding.js +0 -36
  210. package/dist/modules/mcp/tools/operations/schema/bindings/upsertBinding.js +0 -47
  211. package/dist/modules/mcp/tools/operations/schema/elements/deleteElement.js +0 -29
  212. package/dist/modules/mcp/tools/operations/schema/elements/moveElement.js +0 -41
  213. package/dist/modules/mcp/tools/operations/schema/elements/patchElement.js +0 -58
  214. package/dist/modules/mcp/tools/operations/schema/elements/repeatElement.js +0 -148
  215. package/dist/modules/mcp/tools/operations/schema/elements/upsertElement.js +0 -65
  216. package/dist/modules/mcp/tools/operations/schema/folders/deleteFolder.js +0 -30
  217. package/dist/modules/mcp/tools/operations/schema/folders/upsertFolder.js +0 -49
  218. package/dist/modules/mcp/tools/operations/schema/interactions/deleteInteraction.js +0 -52
  219. package/dist/modules/mcp/tools/operations/schema/interactions/patchInteractionNode.js +0 -47
  220. package/dist/modules/mcp/tools/operations/schema/interactions/upsertInteractionFlow.js +0 -44
  221. package/dist/modules/mcp/tools/operations/schema/operations.js +0 -41
  222. package/dist/modules/mcp/tools/operations/schema/pages/deletePage.js +0 -25
  223. package/dist/modules/mcp/tools/operations/schema/pages/upsertPage.js +0 -75
  224. package/dist/modules/mcp/tools/operations/schema/settings/patchSettings.js +0 -45
  225. package/dist/modules/mcp/tools/operations/schema/shared.js +0 -122
  226. package/dist/modules/mcp/tools/operations/schema/translator.js +0 -215
  227. package/dist/modules/mcp/tools/operations/schema/variables/deleteVariable.js +0 -18
  228. package/dist/modules/mcp/tools/operations/schema/variables/upsertVariable.js +0 -42
  229. package/dist/modules/mcp/tools/operations/schema/write.js +0 -109
  230. package/dist/modules/mcp/tools/operations/schemaIds.js +0 -54
  231. package/dist/modules/mcp/tools/operations/style/definitions/deleteDefinition.js +0 -21
  232. package/dist/modules/mcp/tools/operations/style/definitions/patchDefinition.js +0 -28
  233. package/dist/modules/mcp/tools/operations/style/definitions/upsertDefinition.js +0 -24
  234. package/dist/modules/mcp/tools/operations/style/definitions/upsertDefinitions.js +0 -40
  235. package/dist/modules/mcp/tools/operations/style/globalStyles/deleteGlobalStyle.js +0 -21
  236. package/dist/modules/mcp/tools/operations/style/globalStyles/patchGlobalStyle.js +0 -28
  237. package/dist/modules/mcp/tools/operations/style/globalStyles/upsertGlobalStyle.js +0 -24
  238. package/dist/modules/mcp/tools/operations/style/idStyles/deleteIdStyle.js +0 -21
  239. package/dist/modules/mcp/tools/operations/style/idStyles/patchIdStyle.js +0 -28
  240. package/dist/modules/mcp/tools/operations/style/idStyles/upsertIdStyle.js +0 -24
  241. package/dist/modules/mcp/tools/operations/style/operations.js +0 -29
  242. package/dist/modules/mcp/tools/operations/style/shared.js +0 -59
  243. package/dist/modules/mcp/tools/operations/style/translator.js +0 -101
  244. package/dist/modules/mcp/tools/operations/style/variables/deleteStyleVariable.js +0 -21
  245. package/dist/modules/mcp/tools/operations/style/variables/upsertStyleVariable.js +0 -22
  246. package/dist/modules/mcp/tools/operations/style/write.js +0 -108
  247. package/dist/modules/mcp/tools/preview.js +0 -37
  248. package/dist/modules/mcp/tools/read.js +0 -51
  249. package/dist/modules/mcp/tools/render.js +0 -184
  250. package/dist/modules/mcp/tools/screenshot.js +0 -83
  251. package/dist/modules/mcp/tools/search.js +0 -115
  252. package/dist/modules/mcp/tools/shared/expandOperations.js +0 -44
  253. package/dist/modules/mcp/tools/shared/tool.js +0 -33
  254. package/dist/modules/mcp/tools/shared/validator/audit.js +0 -124
  255. package/dist/modules/mcp/tools/shared/validator/batch.js +0 -39
  256. package/dist/modules/mcp/tools/shared/validator/bindings.js +0 -70
  257. package/dist/modules/mcp/tools/shared/validator/context.js +0 -35
  258. package/dist/modules/mcp/tools/shared/validator/css.js +0 -39
  259. package/dist/modules/mcp/tools/shared/validator/elements.js +0 -68
  260. package/dist/modules/mcp/tools/shared/validator/index.js +0 -246
  261. package/dist/modules/mcp/tools/shared/validator/interactions.js +0 -103
  262. package/dist/modules/mcp/tools/shared/validator/refs.js +0 -28
  263. package/dist/modules/mcp/tools/validate.js +0 -47
  264. package/dist/modules/oauth/authorize.js +0 -177
  265. package/dist/modules/oauth/challenge.js +0 -33
  266. package/dist/modules/oauth/consentPage.js +0 -118
  267. package/dist/modules/oauth/metadata.js +0 -69
  268. package/dist/modules/oauth/params.js +0 -5
  269. package/dist/modules/oauth/pkce.js +0 -15
  270. package/dist/modules/oauth/records.js +0 -46
  271. package/dist/modules/oauth/register.js +0 -55
  272. package/dist/modules/oauth/respond.js +0 -44
  273. package/dist/modules/oauth/token.js +0 -100
  274. package/dist/public/.gitkeep +0 -0
  275. package/dist/src/adapters/jsonAdapters.d.ts +0 -7
  276. package/dist/src/core/createServer.d.ts +0 -14
  277. package/dist/src/core/http/stages/health.d.ts +0 -2
  278. package/dist/src/core/http/stages/middlewares.d.ts +0 -2
  279. package/dist/src/core/http/stages/static.d.ts +0 -5
  280. package/dist/src/core/http/types.d.ts +0 -22
  281. package/dist/src/core/server/mcpServer.d.ts +0 -2
  282. package/dist/src/core/server/pageServer.d.ts +0 -10
  283. package/dist/src/core/services/mcp.d.ts +0 -3
  284. package/dist/src/core/services/oauth.d.ts +0 -18
  285. package/dist/src/core/services/preview.d.ts +0 -2
  286. package/dist/src/core/services/proxy.d.ts +0 -2
  287. package/dist/src/core/services/registry.d.ts +0 -4
  288. package/dist/src/helpers/buildServerInfo.d.ts +0 -2
  289. package/dist/src/helpers/compress.d.ts +0 -3
  290. package/dist/src/index.d.ts +0 -15
  291. package/dist/src/mcp.d.ts +0 -14
  292. package/dist/src/middlewares/spaceDeployment.d.ts +0 -2
  293. package/dist/src/modules/ai/AIEngine.d.ts +0 -20
  294. package/dist/src/modules/ai/index.d.ts +0 -4
  295. package/dist/src/modules/ai/toolkit.d.ts +0 -17
  296. package/dist/src/modules/mcp/apps/example/index.d.ts +0 -8
  297. package/dist/src/modules/mcp/apps/index.d.ts +0 -11
  298. package/dist/src/modules/mcp/apps/render/index.d.ts +0 -4
  299. package/dist/src/modules/mcp/apps/render/styles.d.ts +0 -10
  300. package/dist/src/modules/mcp/apps/shared/assets.d.ts +0 -10
  301. package/dist/src/modules/mcp/apps/shared/bundle.d.ts +0 -4
  302. package/dist/src/modules/mcp/apps/shared/index.d.ts +0 -3
  303. package/dist/src/modules/mcp/apps/shared/page.d.ts +0 -2
  304. package/dist/src/modules/mcp/apps/shared/registerApp.d.ts +0 -5
  305. package/dist/src/modules/mcp/apps/shared/resolve.d.ts +0 -1
  306. package/dist/src/modules/mcp/apps/shared/zodEnglishOnly.d.ts +0 -4
  307. package/dist/src/modules/mcp/catalogs/builtinCallbacks.d.ts +0 -23
  308. package/dist/src/modules/mcp/catalogs/builtinComponents.d.ts +0 -4
  309. package/dist/src/modules/mcp/catalogs/builtinElementCallbacks.d.ts +0 -20
  310. package/dist/src/modules/mcp/catalogs/builtinTransformers.d.ts +0 -28
  311. package/dist/src/modules/mcp/catalogs/builtinUtilities.d.ts +0 -18
  312. package/dist/src/modules/mcp/catalogs/cssCatalog/border.d.ts +0 -4
  313. package/dist/src/modules/mcp/catalogs/cssCatalog/box.d.ts +0 -4
  314. package/dist/src/modules/mcp/catalogs/cssCatalog/helpers.d.ts +0 -34
  315. package/dist/src/modules/mcp/catalogs/cssCatalog/index.d.ts +0 -19
  316. package/dist/src/modules/mcp/catalogs/cssCatalog/layout.d.ts +0 -9
  317. package/dist/src/modules/mcp/catalogs/cssCatalog/visual.d.ts +0 -8
  318. package/dist/src/modules/mcp/catalogs/index.d.ts +0 -9
  319. package/dist/src/modules/mcp/catalogs/observed.d.ts +0 -48
  320. package/dist/src/modules/mcp/catalogs/paramSpec.d.ts +0 -42
  321. package/dist/src/modules/mcp/catalogs/registry.d.ts +0 -35
  322. package/dist/src/modules/mcp/e2e/index.d.ts +0 -6
  323. package/dist/src/modules/mcp/e2e/mcpEndpoint.d.ts +0 -27
  324. package/dist/src/modules/mcp/e2e/postMessageChannel.d.ts +0 -22
  325. package/dist/src/modules/mcp/e2e/renderingHost.d.ts +0 -34
  326. package/dist/src/modules/mcp/handler.d.ts +0 -22
  327. package/dist/src/modules/mcp/helpers/agentPrompt.d.ts +0 -4
  328. package/dist/src/modules/mcp/helpers/computeVersion.d.ts +0 -1
  329. package/dist/src/modules/mcp/helpers/guide.d.ts +0 -4
  330. package/dist/src/modules/mcp/helpers/index.d.ts +0 -8
  331. package/dist/src/modules/mcp/helpers/interactions.d.ts +0 -30
  332. package/dist/src/modules/mcp/helpers/log.d.ts +0 -8
  333. package/dist/src/modules/mcp/helpers/opResult.d.ts +0 -13
  334. package/dist/src/modules/mcp/helpers/space.d.ts +0 -115
  335. package/dist/src/modules/mcp/helpers/uris.d.ts +0 -28
  336. package/dist/src/modules/mcp/index.d.ts +0 -13
  337. package/dist/src/modules/mcp/previewClient.d.ts +0 -13
  338. package/dist/src/modules/mcp/proxy/config.d.ts +0 -19
  339. package/dist/src/modules/mcp/proxy/fetch.d.ts +0 -18
  340. package/dist/src/modules/mcp/proxy/grant.d.ts +0 -25
  341. package/dist/src/modules/mcp/proxy/guard.d.ts +0 -6
  342. package/dist/src/modules/mcp/proxy/handler.d.ts +0 -8
  343. package/dist/src/modules/mcp/proxy/index.d.ts +0 -8
  344. package/dist/src/modules/mcp/proxy/payload.d.ts +0 -8
  345. package/dist/src/modules/mcp/proxy/rewrite.d.ts +0 -18
  346. package/dist/src/modules/mcp/proxy/sign.d.ts +0 -6
  347. package/dist/src/modules/mcp/proxy/types.d.ts +0 -45
  348. package/dist/src/modules/mcp/resources/canonical.d.ts +0 -6
  349. package/dist/src/modules/mcp/resources/core.d.ts +0 -5
  350. package/dist/src/modules/mcp/resources/envelope.d.ts +0 -10
  351. package/dist/src/modules/mcp/resources/index.d.ts +0 -8
  352. package/dist/src/modules/mcp/resources/primer.d.ts +0 -7
  353. package/dist/src/modules/mcp/resources/register.d.ts +0 -10
  354. package/dist/src/modules/mcp/resources/renderGuide.d.ts +0 -10
  355. package/dist/src/modules/mcp/resources/router.d.ts +0 -10
  356. package/dist/src/modules/mcp/resources/schema.d.ts +0 -5
  357. package/dist/src/modules/mcp/resources/style.d.ts +0 -5
  358. package/dist/src/modules/mcp/screenshotClient.d.ts +0 -13
  359. package/dist/src/modules/mcp/server.d.ts +0 -31
  360. package/dist/src/modules/mcp/tests/helpers.d.ts +0 -13
  361. package/dist/src/modules/mcp/tools/apply/dispatch.d.ts +0 -6
  362. package/dist/src/modules/mcp/tools/apply/index.d.ts +0 -470
  363. package/dist/src/modules/mcp/tools/apply/writeResult.d.ts +0 -8
  364. package/dist/src/modules/mcp/tools/index.d.ts +0 -18
  365. package/dist/src/modules/mcp/tools/operations/index.d.ts +0 -928
  366. package/dist/src/modules/mcp/tools/operations/schema/bindings/deleteBinding.d.ts +0 -17
  367. package/dist/src/modules/mcp/tools/operations/schema/bindings/patchBinding.d.ts +0 -25
  368. package/dist/src/modules/mcp/tools/operations/schema/bindings/upsertBinding.d.ts +0 -27
  369. package/dist/src/modules/mcp/tools/operations/schema/elements/deleteElement.d.ts +0 -10
  370. package/dist/src/modules/mcp/tools/operations/schema/elements/moveElement.d.ts +0 -16
  371. package/dist/src/modules/mcp/tools/operations/schema/elements/patchElement.d.ts +0 -22
  372. package/dist/src/modules/mcp/tools/operations/schema/elements/repeatElement.d.ts +0 -55
  373. package/dist/src/modules/mcp/tools/operations/schema/elements/upsertElement.d.ts +0 -16
  374. package/dist/src/modules/mcp/tools/operations/schema/folders/deleteFolder.d.ts +0 -9
  375. package/dist/src/modules/mcp/tools/operations/schema/folders/upsertFolder.d.ts +0 -12
  376. package/dist/src/modules/mcp/tools/operations/schema/index.d.ts +0 -21
  377. package/dist/src/modules/mcp/tools/operations/schema/interactions/deleteInteraction.d.ts +0 -12
  378. package/dist/src/modules/mcp/tools/operations/schema/interactions/patchInteractionNode.d.ts +0 -18
  379. package/dist/src/modules/mcp/tools/operations/schema/interactions/upsertInteractionFlow.d.ts +0 -27
  380. package/dist/src/modules/mcp/tools/operations/schema/operations.d.ts +0 -229
  381. package/dist/src/modules/mcp/tools/operations/schema/pages/deletePage.d.ts +0 -9
  382. package/dist/src/modules/mcp/tools/operations/schema/pages/upsertPage.d.ts +0 -14
  383. package/dist/src/modules/mcp/tools/operations/schema/settings/patchSettings.d.ts +0 -34
  384. package/dist/src/modules/mcp/tools/operations/schema/shared.d.ts +0 -92
  385. package/dist/src/modules/mcp/tools/operations/schema/translator.d.ts +0 -12
  386. package/dist/src/modules/mcp/tools/operations/schema/variables/deleteVariable.d.ts +0 -9
  387. package/dist/src/modules/mcp/tools/operations/schema/variables/upsertVariable.d.ts +0 -16
  388. package/dist/src/modules/mcp/tools/operations/schema/write.d.ts +0 -42
  389. package/dist/src/modules/mcp/tools/operations/schemaIds.d.ts +0 -6
  390. package/dist/src/modules/mcp/tools/operations/style/definitions/deleteDefinition.d.ts +0 -9
  391. package/dist/src/modules/mcp/tools/operations/style/definitions/patchDefinition.d.ts +0 -37
  392. package/dist/src/modules/mcp/tools/operations/style/definitions/upsertDefinition.d.ts +0 -37
  393. package/dist/src/modules/mcp/tools/operations/style/definitions/upsertDefinitions.d.ts +0 -41
  394. package/dist/src/modules/mcp/tools/operations/style/globalStyles/deleteGlobalStyle.d.ts +0 -9
  395. package/dist/src/modules/mcp/tools/operations/style/globalStyles/patchGlobalStyle.d.ts +0 -37
  396. package/dist/src/modules/mcp/tools/operations/style/globalStyles/upsertGlobalStyle.d.ts +0 -37
  397. package/dist/src/modules/mcp/tools/operations/style/idStyles/deleteIdStyle.d.ts +0 -9
  398. package/dist/src/modules/mcp/tools/operations/style/idStyles/patchIdStyle.d.ts +0 -37
  399. package/dist/src/modules/mcp/tools/operations/style/idStyles/upsertIdStyle.d.ts +0 -37
  400. package/dist/src/modules/mcp/tools/operations/style/index.d.ts +0 -15
  401. package/dist/src/modules/mcp/tools/operations/style/operations.d.ts +0 -264
  402. package/dist/src/modules/mcp/tools/operations/style/shared.d.ts +0 -116
  403. package/dist/src/modules/mcp/tools/operations/style/translator.d.ts +0 -12
  404. package/dist/src/modules/mcp/tools/operations/style/variables/deleteStyleVariable.d.ts +0 -15
  405. package/dist/src/modules/mcp/tools/operations/style/variables/upsertStyleVariable.d.ts +0 -20
  406. package/dist/src/modules/mcp/tools/operations/style/write.d.ts +0 -12
  407. package/dist/src/modules/mcp/tools/preview.d.ts +0 -465
  408. package/dist/src/modules/mcp/tools/read.d.ts +0 -9
  409. package/dist/src/modules/mcp/tools/render.d.ts +0 -499
  410. package/dist/src/modules/mcp/tools/render.test.d.ts +0 -1
  411. package/dist/src/modules/mcp/tools/screenshot.d.ts +0 -470
  412. package/dist/src/modules/mcp/tools/search.d.ts +0 -15
  413. package/dist/src/modules/mcp/tools/shared/expandOperations.d.ts +0 -13
  414. package/dist/src/modules/mcp/tools/shared/tool.d.ts +0 -72
  415. package/dist/src/modules/mcp/tools/shared/validator/audit.d.ts +0 -4
  416. package/dist/src/modules/mcp/tools/shared/validator/batch.d.ts +0 -5
  417. package/dist/src/modules/mcp/tools/shared/validator/bindings.d.ts +0 -6
  418. package/dist/src/modules/mcp/tools/shared/validator/context.d.ts +0 -38
  419. package/dist/src/modules/mcp/tools/shared/validator/css.d.ts +0 -4
  420. package/dist/src/modules/mcp/tools/shared/validator/elements.d.ts +0 -7
  421. package/dist/src/modules/mcp/tools/shared/validator/index.d.ts +0 -8
  422. package/dist/src/modules/mcp/tools/shared/validator/interactions.d.ts +0 -3
  423. package/dist/src/modules/mcp/tools/shared/validator/refs.d.ts +0 -4
  424. package/dist/src/modules/mcp/tools/validate.d.ts +0 -467
  425. package/dist/src/modules/mcp/types/aiSchema.d.ts +0 -218
  426. package/dist/src/modules/mcp/types/appTypes.d.ts +0 -26
  427. package/dist/src/modules/mcp/types/index.d.ts +0 -5
  428. package/dist/src/modules/mcp/types/previewTypes.d.ts +0 -25
  429. package/dist/src/modules/mcp/types/screenshotTypes.d.ts +0 -29
  430. package/dist/src/modules/mcp/types/toolTypes.d.ts +0 -138
  431. package/dist/src/modules/oauth/authorize.d.ts +0 -7
  432. package/dist/src/modules/oauth/challenge.d.ts +0 -11
  433. package/dist/src/modules/oauth/consentPage.d.ts +0 -7
  434. package/dist/src/modules/oauth/metadata.d.ts +0 -40
  435. package/dist/src/modules/oauth/params.d.ts +0 -5
  436. package/dist/src/modules/oauth/pkce.d.ts +0 -6
  437. package/dist/src/modules/oauth/records.d.ts +0 -71
  438. package/dist/src/modules/oauth/register.d.ts +0 -5
  439. package/dist/src/modules/oauth/respond.d.ts +0 -13
  440. package/dist/src/modules/oauth/token.d.ts +0 -5
  441. package/dist/src/modules/ssr/buildBody.d.ts +0 -9
  442. package/dist/src/modules/ssr/handler.d.ts +0 -4
  443. package/dist/src/modules/ssr/preview.d.ts +0 -16
  444. package/dist/src/modules/ssr/streamBody.d.ts +0 -5
  445. package/dist/src/modules/ssr/template.d.ts +0 -6
  446. package/dist/src/standalone/alias-loader.d.mts +0 -2
  447. package/dist/src/standalone/plugins/ClientInfo.d.ts +0 -2
  448. package/dist/src/standalone/plugins/ServerInfo.d.ts +0 -2
  449. package/dist/src/standalone/plugins/SharedInfo.d.ts +0 -2
  450. package/dist/src/standalone/plugins/styles.d.ts +0 -5
  451. package/dist/src/standalone/register-alias.d.mts +0 -1
  452. package/dist/src/standalone/server.d.ts +0 -1
  453. package/dist/src/standalone/stubs/react-syntax-highlighter.d.mts +0 -31
  454. package/skills/plitzi-render/SKILL.md +0 -174
  455. /package/dist/{src/core/http/dispatcher.test.d.ts → core/auth/api.test.d.ts} +0 -0
  456. /package/dist/{src/core/server/mcpServer.test.d.ts → core/auth/authorize.test.d.ts} +0 -0
  457. /package/dist/{src/modules/ai/toolkit.test.d.ts → core/auth/createAuth.test.d.ts} +0 -0
  458. /package/dist/{src/modules/mcp/apps/apps.test.d.ts → core/auth/domains.test.d.ts} +0 -0
  459. /package/dist/{src/modules/mcp/apps/render/styles.test.d.ts → core/auth/identity.test.d.ts} +0 -0
  460. /package/dist/{src/modules → core/auth}/oauth/oauth.test.d.ts +0 -0
  461. /package/dist/{src/modules/mcp/catalogs/builtinTransformers.test.d.ts → core/auth/routes.test.d.ts} +0 -0
  462. /package/dist/{src/modules/mcp/catalogs/cssCatalog/cssCatalog.test.d.ts → core/auth/session.test.d.ts} +0 -0
  463. /package/dist/{src/modules/mcp/e2e/connector.test.d.ts → core/auth/spaceTokens.test.d.ts} +0 -0
  464. /package/dist/{src/modules/mcp/e2e/host.test.d.ts → core/auth/tokens.test.d.ts} +0 -0
  465. /package/dist/{src/modules/mcp/e2e/oauthConnector.test.d.ts → core/createServer.test.d.ts} +0 -0
  466. /package/dist/{src/modules/mcp/helpers/log.test.d.ts → core/handlers/handlers.test.d.ts} +0 -0
  467. /package/dist/{src/core → core}/health.d.ts +0 -0
  468. /package/dist/{src/modules/mcp/mcp.bench.d.ts → core/http/dispatcher.test.d.ts} +0 -0
  469. /package/dist/{src/core → core}/http/securityHeaders.d.ts +0 -0
  470. /package/dist/{src/core → core}/http/stages/authRoutes.d.ts +0 -0
  471. /package/dist/{src/core → core}/http/stages/pluginAssets.d.ts +0 -0
  472. /package/dist/{src/core → core}/mimeTypes.d.ts +0 -0
  473. /package/dist/{src/modules/mcp/constants.d.ts → core/previewToken.d.ts} +0 -0
  474. /package/dist/{src/core → core}/requestParser.d.ts +0 -0
  475. /package/dist/{src/core → core}/server/baseServer.d.ts +0 -0
  476. /package/dist/{src/modules/mcp/proxy/endpoint.test.d.ts → core/server/baseServer.test.d.ts} +0 -0
  477. /package/dist/{src/modules/mcp/proxy/proxy.test.d.ts → core/services/resolve.test.d.ts} +0 -0
  478. /package/dist/{src/core → core}/services/rsc.d.ts +0 -0
  479. /package/dist/{src/core → core}/services/ssr.d.ts +0 -0
  480. /package/dist/{src/core → core}/staticFiles.d.ts +0 -0
  481. /package/dist/{src/modules/mcp/proxy/wiring.test.d.ts → helpers/buildResponseHelpers.test.d.ts} +0 -0
  482. /package/dist/{src/helpers → helpers}/cache/TtlCache.d.ts +0 -0
  483. /package/dist/{src/helpers → helpers}/cache/cacheManager.d.ts +0 -0
  484. /package/dist/{src/helpers → helpers}/cache/defaults.d.ts +0 -0
  485. /package/dist/{src/helpers → helpers}/cache/index.d.ts +0 -0
  486. /package/dist/{src/modules/mcp/tests/apply.test.d.ts → helpers/cache/keys.test.d.ts} +0 -0
  487. /package/dist/{src/helpers → helpers}/cache/serverCaches.d.ts +0 -0
  488. /package/dist/{src/modules/mcp/tests/bindings.test.d.ts → helpers/compress.test.d.ts} +0 -0
  489. /package/dist/{src/helpers → helpers}/escapeJson.d.ts +0 -0
  490. /package/dist/{src/helpers → helpers}/metrics.d.ts +0 -0
  491. /package/dist/{src/helpers → helpers}/normalizePlugins.d.ts +0 -0
  492. /package/dist/{src/modules/mcp/tests/css.test.d.ts → helpers/offlineDataLoader.test.d.ts} +0 -0
  493. /package/dist/{src/helpers → helpers}/readCookie.d.ts +0 -0
  494. /package/dist/{src/modules/mcp/tests/interactions.test.d.ts → helpers/resolveDebugMode.test.d.ts} +0 -0
  495. /package/dist/{src/helpers → helpers}/runMiddlewares.d.ts +0 -0
  496. /package/dist/{src/helpers → helpers}/serverLog.d.ts +0 -0
  497. /package/dist/{src/middlewares → middlewares}/auth.d.ts +0 -0
  498. /package/dist/{src/middlewares → middlewares}/basicAuth.d.ts +0 -0
  499. /package/dist/{src/modules/mcp/tests/pages.test.d.ts → middlewares/spaceDeployment.test.d.ts} +0 -0
  500. /package/dist/{src/modules/mcp/tests/reads.test.d.ts → modules/actions/handler.test.d.ts} +0 -0
  501. /package/dist/{src/modules/mcp/tests/schemaIds.test.d.ts → modules/connectors/engine.test.d.ts} +0 -0
  502. /package/dist/{src/modules/mcp/tests/search.test.d.ts → modules/connectors/projection.test.d.ts} +0 -0
  503. /package/dist/{src/modules/mcp/tests/skill.test.d.ts → modules/connectors/resolver.test.d.ts} +0 -0
  504. /package/dist/{src/modules/mcp/tests/styles.test.d.ts → modules/rsc/resolveRscData.test.d.ts} +0 -0
  505. /package/dist/{src/modules → modules}/ssr/applySSRResult.d.ts +0 -0
  506. /package/dist/{src/modules/mcp/tests/tools.test.d.ts → modules/ssr/loadPluginComponents.test.d.ts} +0 -0
  507. /package/dist/{src/modules/mcp/tests/validation.test.d.ts → modules/ssr/metering.test.d.ts} +0 -0
  508. /package/dist/{src/modules → modules}/ssr/registerExternalPlugins.d.ts +0 -0
  509. /package/dist/{src/plugins → plugins}/compile.d.ts +0 -0
  510. /package/dist/{src/plugins → plugins}/copy.d.ts +0 -0
  511. /package/dist/{src/plugins → plugins}/detect.d.ts +0 -0
  512. /package/dist/{src/plugins → plugins}/manager.d.ts +0 -0
  513. /package/dist/{src/plugins → plugins}/validate.d.ts +0 -0
  514. /package/dist/{src/plugins → plugins}/validate.test.d.ts +0 -0
@@ -1,22 +0,0 @@
1
- import { styleVarUri, styleVarsUri } from "../../../../helpers/uris.js";
2
- import { empty } from "../../../../helpers/opResult.js";
3
- import { styleCategory, themeValue } from "../shared.js";
4
- import { z } from "zod";
5
- //#region src/modules/mcp/tools/operations/style/variables/upsertStyleVariable.ts
6
- var upsertStyleVariableOp = z.object({
7
- type: z.literal("upsertStyleVariable"),
8
- category: styleCategory,
9
- name: z.string().describe("Token name without the -- prefix; referenced in CSS as var(--name)"),
10
- value: themeValue
11
- }).describe("Create or update a design token (referenced in CSS as var(--name); value may differ per light/dark).");
12
- var upsertStyleVariable = (space, env, op) => {
13
- const group = space.style.variables[op.category] ??= {};
14
- group[op.name] = op.value;
15
- return {
16
- ...empty(),
17
- updated: 1,
18
- staleResources: [styleVarUri(env, op.category), styleVarsUri(env)]
19
- };
20
- };
21
- //#endregion
22
- export { upsertStyleVariable, upsertStyleVariableOp };
@@ -1,108 +0,0 @@
1
- import { expandShorthand, expandShorthandPatch } from "../../../catalogs/cssCatalog/index.js";
2
- import { defUri, defsUri, globalUri, globalsUri, idUri, idsUri, styleVarUri, styleVarsUri } from "../../../helpers/uris.js";
3
- import { fail } from "../../../helpers/opResult.js";
4
- import processSelector from "@plitzi/sdk-style/helpers/processSelector";
5
- //#region src/modules/mcp/tools/operations/style/write.ts
6
- var MODES = [
7
- "desktop",
8
- "tablet",
9
- "mobile"
10
- ];
11
- var KIND_LABEL = {
12
- class: "a reusable class definition",
13
- element: "a global style for an element type",
14
- id: "an id rule targeting a single element"
15
- };
16
- var KIND_TOOL = {
17
- class: "upsertDefinition/patchDefinition",
18
- element: "upsertGlobalStyle/patchGlobalStyle",
19
- id: "upsertIdStyle/patchIdStyle"
20
- };
21
- var KIND_FIELD = {
22
- class: "ref",
23
- element: "componentType",
24
- id: "targetId"
25
- };
26
- var guardKind = (style, ref, want) => {
27
- const clash = MODES.map((mode) => style.platform[mode][ref]).find((item) => item !== void 0 && item.type !== want);
28
- if (!clash) return null;
29
- return fail(KIND_FIELD[want], `"${ref}" is already ${KIND_LABEL[clash.type]}; it cannot be edited as ${KIND_LABEL[want]}`, `Edit it with ${KIND_TOOL[clash.type]}, or choose a different ${KIND_FIELD[want]}.`);
30
- };
31
- var slotToBlocks = (slot) => {
32
- const perMode = {};
33
- for (const mode of MODES) {
34
- const block = {};
35
- const baseCss = slot[mode];
36
- if (baseCss && Object.keys(baseCss).length > 0) block.default = expandShorthand(baseCss);
37
- for (const [state, dm] of Object.entries(slot.states ?? {})) if (dm[mode]) (block.states ??= {})[state] = expandShorthand(dm[mode]);
38
- for (const [name, dm] of Object.entries(slot.variants ?? {})) if (dm[mode]) (block.variants ??= {})[name] = { default: expandShorthand(dm[mode]) };
39
- if (Object.keys(block).length > 0) perMode[mode] = block;
40
- }
41
- return perMode;
42
- };
43
- var writeStyleItem = (style, ref, base, slots, itemType, componentType) => {
44
- for (const mode of MODES) {
45
- const attributes = {};
46
- const baseBlocks = slotToBlocks(base);
47
- if (baseBlocks[mode]) attributes.base = baseBlocks[mode];
48
- for (const [slotName, slotDef] of Object.entries(slots ?? {})) {
49
- const blocks = slotToBlocks(slotDef);
50
- if (blocks[mode]) attributes[slotName] = blocks[mode];
51
- }
52
- if (Object.keys(attributes).length === 0) Reflect.deleteProperty(style.platform[mode], ref);
53
- else {
54
- const styleItem = {
55
- name: ref,
56
- type: itemType,
57
- attributes,
58
- cache: ""
59
- };
60
- if (componentType !== void 0) styleItem.componentType = componentType;
61
- styleItem.cache = processSelector(styleItem);
62
- style.platform[mode][ref] = styleItem;
63
- }
64
- }
65
- };
66
- var mergeCss = (base, patch) => {
67
- const merged = { ...base };
68
- for (const [key, value] of Object.entries(expandShorthandPatch(patch ?? {}))) if (value === null) Reflect.deleteProperty(merged, key);
69
- else merged[key] = value;
70
- return Object.keys(merged).length > 0 ? merged : void 0;
71
- };
72
- var mergeDisplayMode = (base, patch) => {
73
- const result = {};
74
- for (const mode of MODES) {
75
- const css = mergeCss(base?.[mode], patch?.[mode]);
76
- if (css) result[mode] = css;
77
- }
78
- return result;
79
- };
80
- var mergeNamedModes = (base, patch) => {
81
- const names = /* @__PURE__ */ new Set([...Object.keys(base ?? {}), ...Object.keys(patch ?? {})]);
82
- const result = {};
83
- for (const name of names) {
84
- const dm = mergeDisplayMode(base?.[name], patch?.[name]);
85
- if (Object.keys(dm).length > 0) result[name] = dm;
86
- }
87
- return Object.keys(result).length > 0 ? result : void 0;
88
- };
89
- var mergeSlot = (base, patch) => {
90
- const merged = mergeDisplayMode(base, patch);
91
- const states = mergeNamedModes(base?.states, patch.states);
92
- if (states) merged.states = states;
93
- const variants = mergeNamedModes(base?.variants, patch.variants);
94
- if (variants) merged.variants = variants;
95
- return merged;
96
- };
97
- var mergePatch = (existing, basePatch, slotsPatch) => {
98
- const base = mergeSlot(existing, basePatch);
99
- const slotNames = /* @__PURE__ */ new Set([...Object.keys(existing.slots ?? {}), ...Object.keys(slotsPatch ?? {})]);
100
- const slots = {};
101
- for (const name of slotNames) slots[name] = mergeSlot(existing.slots?.[name], slotsPatch?.[name] ?? {});
102
- return {
103
- base,
104
- slots: Object.keys(slots).length > 0 ? slots : void 0
105
- };
106
- };
107
- //#endregion
108
- export { MODES, defUri, defsUri, globalUri, globalsUri, guardKind, idUri, idsUri, mergePatch, styleVarUri, styleVarsUri, writeStyleItem };
@@ -1,37 +0,0 @@
1
- import { operation } from "./operations/index.js";
2
- import { defineTool } from "./shared/tool.js";
3
- import { z } from "zod";
4
- //#region src/modules/mcp/tools/preview.ts
5
- var previewShape = {
6
- pageRef: z.string().optional().describe("Page ref or id to preview; defaults to the space default page"),
7
- operations: z.array(operation).max(100).optional().describe("Unsaved edits to apply to a throwaway clone before rendering, so you can preview a change WITHOUT persisting it (same op vocabulary as plitzi_apply). Omit to preview the current saved state.")
8
- };
9
- var previewTool = defineTool({
10
- name: "plitzi_preview",
11
- title: "Preview (HTML)",
12
- description: "Render a page to a full HTML document to inspect the structure of your edits. Pass unsaved `operations` to preview a change before committing (nothing is persisted). Returns the HTML plus the page path and stateVersion. For a real rendered IMAGE that reveals visual issues like overflow, use plitzi_screenshot.",
13
- inputShape: previewShape,
14
- access: "read",
15
- run: async (input, ctx) => {
16
- if (!ctx.preview || ctx.spaceId === void 0) return {
17
- error: "PREVIEW_UNAVAILABLE",
18
- message: "Visual preview is not enabled on this server.",
19
- hint: "Preview needs the SSR render service; it is unavailable in MCP-only mode."
20
- };
21
- const result = await ctx.preview.render({
22
- spaceId: ctx.spaceId,
23
- env: ctx.env,
24
- pageRef: input.pageRef,
25
- operations: input.operations
26
- });
27
- if (!result.ok) return result;
28
- return {
29
- pageRef: input.pageRef ?? "default",
30
- pagePath: result.pagePath,
31
- stateVersion: result.stateVersion,
32
- html: result.html
33
- };
34
- }
35
- });
36
- //#endregion
37
- export { previewShape, previewTool };
@@ -1,51 +0,0 @@
1
- import { noSpaceError, unauthorizedSpaceMessage } from "../helpers/space.js";
2
- import { resourceErrorMessage } from "../resources/canonical.js";
3
- import { RENDER_GUIDE_URI, RENDER_TYPES_URI } from "../resources/renderGuide.js";
4
- import { readPublicResource, readResource } from "../resources/router.js";
5
- import { defineTool } from "./shared/tool.js";
6
- import { z } from "zod";
7
- //#region src/modules/mcp/tools/read.ts
8
- var readShape = { uris: z.array(z.string()).min(1).max(50).describe("Resource URIs to read in one batch (max 50). Use the ready-made uris from search / write responses.") };
9
- var read = (input, space, env) => {
10
- return { results: input.uris.map((uri) => {
11
- const found = readResource(space, env, uri);
12
- if (found) return {
13
- uri,
14
- stateVersion: found.stateVersion,
15
- data: found.data
16
- };
17
- const parsed = JSON.parse(resourceErrorMessage(env, uri));
18
- return {
19
- uri,
20
- error: parsed.error,
21
- message: parsed.message,
22
- hint: parsed.hint
23
- };
24
- }) };
25
- };
26
- var publicHint = `Readable on this connection: ${RENDER_GUIDE_URI}, ${RENDER_TYPES_URI}, plitzi://guide, plitzi://css-properties. Everything else lives in a space this connection has none of.`;
27
- var readPublic = (input, env) => ({ results: input.uris.map((uri) => {
28
- const found = readPublicResource(env, uri);
29
- if (found) return {
30
- uri,
31
- stateVersion: found.stateVersion,
32
- data: found.data
33
- };
34
- return {
35
- uri,
36
- error: noSpaceError,
37
- message: unauthorizedSpaceMessage,
38
- hint: publicHint
39
- };
40
- }) });
41
- var readTool = defineTool({
42
- name: "plitzi_read",
43
- title: "Batch read",
44
- description: "Batch-fetch resource content for URIs you ALREADY HOLD (from plitzi_search or a write response) — the tool form of opening MCP resources, for many at once. Pass an array of URIs (pages, elements, definitions, variables) and get them all in one call. NOT for finding things: to locate an element by label/type use plitzi_search; to browse what exists, list the plitzi:// resources. Each result is { uri, stateVersion, data } or a teachable error, so one bad URI never fails the batch. Never hand-build a URI to guess your way to an element — search for it.",
45
- inputShape: readShape,
46
- access: "read",
47
- run: (input, ctx) => read(input, ctx.space, ctx.env),
48
- runPublic: readPublic
49
- });
50
- //#endregion
51
- export { read, readPublic, readShape, readTool };
@@ -1,184 +0,0 @@
1
- import { iconFontCss } from "../apps/render/styles.js";
2
- import { RENDER_APP_URI } from "../apps/render/index.js";
3
- import { emptySpace } from "../helpers/space.js";
4
- import { proxifyResources } from "../proxy/rewrite.js";
5
- import { operations } from "./operations/index.js";
6
- import { applyOperations } from "./apply/dispatch.js";
7
- import { expandOperations } from "./shared/expandOperations.js";
8
- import { defineTool } from "./shared/tool.js";
9
- import { validateOperations } from "./shared/validator/index.js";
10
- import { auditResources } from "./shared/validator/audit.js";
11
- import { randomUUID } from "node:crypto";
12
- import { z } from "zod";
13
- import { validateSchema } from "@plitzi/sdk-schema/helpers/schemaValidator";
14
- import { generateCache } from "@plitzi/sdk-style/StyleHelper";
15
- //#region src/modules/mcp/tools/render.ts
16
- var HOST_PAGE_REF = "render";
17
- var seedSpace = () => {
18
- const space = emptySpace();
19
- space.schema.definition.name = "Widget";
20
- space.schema.flat[HOST_PAGE_REF] = {
21
- id: HOST_PAGE_REF,
22
- idRef: HOST_PAGE_REF,
23
- attributes: {
24
- slug: "",
25
- name: "Render",
26
- default: true
27
- },
28
- definition: {
29
- rootId: HOST_PAGE_REF,
30
- label: "Page",
31
- type: "page",
32
- items: [],
33
- styleSelectors: { base: "" }
34
- }
35
- };
36
- space.schema.pages = [HOST_PAGE_REF];
37
- return space;
38
- };
39
- var noWarnings = (warnings) => warnings.length > 0 ? warnings : void 0;
40
- var renderShape = {
41
- operations,
42
- patch: z.boolean().optional().describe("Set true to CHANGE a widget you already rendered instead of rebuilding it: send its `renderId` and ONLY the operations that differ (patchDefinition, patchElement, deleteElement, a new repeatElement…). The widget merges them into the batch it was built from and reports back what it applied. The refs it already has (card-1, blk-2-3) are the ones to address. If that widget cannot be recovered — a surface that renders none, a host that keeps no storage — the answer says so and you re-send the whole batch."),
43
- renderId: z.string().optional().describe("Handle returned by a previous render. Required with patch:true; it names the widget being changed.")
44
- };
45
- var render = (input, options = {}) => {
46
- const space = seedSpace();
47
- const expansion = expandOperations(input.operations);
48
- if (expansion.errors.length > 0) return {
49
- rendered: false,
50
- errors: expansion.errors
51
- };
52
- const ops = expansion.operations;
53
- const validation = validateOperations(space, ops, "widget");
54
- if (!validation.valid) return {
55
- rendered: false,
56
- errors: validation.errors,
57
- warnings: noWarnings(validation.warnings)
58
- };
59
- const outcome = applyOperations(space, "main", ops);
60
- if (outcome.errors.length > 0) return {
61
- rendered: false,
62
- errors: outcome.errors,
63
- warnings: noWarnings(validation.warnings)
64
- };
65
- const integrity = validateSchema(space.schema);
66
- if (!integrity.valid) return {
67
- rendered: false,
68
- errors: integrity.errors.map((error) => ({
69
- path: error.elementId ? `schema.${error.elementId}` : "schema",
70
- message: error.message,
71
- hint: "The authored widget is structurally inconsistent (broken parent/child link or a cycle)."
72
- })),
73
- warnings: noWarnings(validation.warnings)
74
- };
75
- const audit = auditResources(space, ops);
76
- const warnings = [...validation.warnings, ...audit.warnings];
77
- if (audit.errors.length > 0) return {
78
- rendered: false,
79
- errors: audit.errors,
80
- warnings: noWarnings(warnings)
81
- };
82
- if (options.proxy) warnings.push(...proxifyResources(space, options.proxy));
83
- space.style.cache = generateCache(space.style);
84
- return {
85
- rendered: true,
86
- operations: ops,
87
- rootRef: HOST_PAGE_REF,
88
- elementCount: Object.keys(space.schema.flat).length - 1,
89
- offlineData: {
90
- schema: space.schema,
91
- style: space.style
92
- },
93
- warnings: noWarnings(warnings)
94
- };
95
- };
96
- /** A patch is not rendered here — it CANNOT be: this server keeps nothing between calls (no session, no store,
97
- * any replica answers any request), so the previous widget only exists on the host side. The delta therefore
98
- * travels as a courier result: the model pays for the delta alone, the view recovers the batch that widget was
99
- * built from (by renderId — see apps/render/heldBatch.ts), merges, and re-calls this same tool with the whole
100
- * thing over the host bridge, never through the model's context, then reports back with ui/update-model-context.
101
- *
102
- * The renderId is the explicit handle the MCP RC asks for in place of implicit session state: the model carries
103
- * it, so a patch names the widget it means and any replica can serve it.
104
- *
105
- * Validation is not skipped, only deferred: the re-call carries the full batch, so refs, integrity and the audit
106
- * all run exactly as they do on a first render, and their errors reach the model through that report. */
107
- var toPatchResult = (ops, renderId) => {
108
- if (ops.length === 0) return { content: [{
109
- type: "text",
110
- text: JSON.stringify({
111
- patch: false,
112
- error: "A patch carries no operations",
113
- hint: "Send the operations that differ from the widget on screen, or drop `patch` to render a new one."
114
- })
115
- }] };
116
- if (renderId === void 0) return { content: [{
117
- type: "text",
118
- text: JSON.stringify({
119
- patch: false,
120
- error: "A patch needs the renderId of the widget it changes",
121
- hint: "Pass the renderId the render answered with, or drop `patch` to render a new widget."
122
- })
123
- }] };
124
- return {
125
- content: [{
126
- type: "text",
127
- text: JSON.stringify({
128
- patch: true,
129
- renderId,
130
- operations: ops.length,
131
- note: "Handed to the widget; it will report what it applied. If nothing reports back, it could not be recovered — re-send the full batch without patch."
132
- })
133
- }],
134
- structuredContent: {
135
- patch: true,
136
- renderId,
137
- operations: ops
138
- }
139
- };
140
- };
141
- var newRenderId = () => `r${randomUUID().slice(0, 8)}`;
142
- var ICON_TYPE = "fontAwesome";
143
- var drawsIcons = (offlineData) => Object.values(offlineData.schema.flat).some((element) => element.definition.type === ICON_TYPE);
144
- var toRenderResult = (res, renderId) => {
145
- if (!res.rendered) return { content: [{
146
- type: "text",
147
- text: JSON.stringify({
148
- rendered: false,
149
- errors: res.errors,
150
- warnings: res.warnings
151
- })
152
- }] };
153
- const summary = {
154
- rendered: true,
155
- renderId,
156
- rootRef: res.rootRef,
157
- elementCount: res.elementCount,
158
- warnings: res.warnings
159
- };
160
- return {
161
- content: [{
162
- type: "text",
163
- text: JSON.stringify(summary)
164
- }],
165
- structuredContent: {
166
- ...summary,
167
- offlineData: res.offlineData,
168
- operations: res.operations,
169
- ...drawsIcons(res.offlineData) ? { iconCss: iconFontCss() } : {}
170
- }
171
- };
172
- };
173
- var renderTool = defineTool({
174
- name: "plitzi_render",
175
- title: "Render widget",
176
- description: "Show the user a real, rendered UI widget instead of describing one — cards, hero sections, pricing tables, forms, menus, checklists, profiles, galleries. It runs the Plitzi SDK fully offline: no backend, account, or setup. Reach for it whenever a visual layout beats prose: the user asks you to design/build/show something, OR your answer is naturally visual (a recipe → a card, a comparison → a table, steps → a checklist). Prefer showing over telling.\n\nAuthor the widget as an ordered list of `operations` that build an element tree under the pre-seeded root page \"render\". Three rules:\n1. STRUCTURE — one upsertElement builds the whole tree: set pageRef:\"render\" and give element a nested `children` array. Each element is { ref (unique), type, subType?, props?, style?, children? }; children render in order. (To attach to something you already made, use a top-level parentRef:\"<existing ref>\" instead.)\n1b. REPEATS — the moment two siblings share a shape and differ only in data (list, steps, cards, table, timeline), do NOT copy-paste them: use repeatElement { pageRef, ref (wrapper), style, template, items }. The template is written once with {{item.field}} placeholders and rendered per row; refs come out numbered (\"step-1\", \"step-2\"…). A list INSIDE each row (days with their own steps) is the same op: give the wrapping node repeat:{ items:\"{{item.<list>}}\", template:… } and put the sub-rows in the row data.\n2. STYLE — declare ALL the classes in ONE upsertDefinitions { definitions: { \"<class>\": { desktop:{ …CSS in kebab-case… } }, … } }, then attach via the element style:{ base:[\"<class ref>\"] }. Lay containers out with flex/grid. Keep the call small: one class per look, not per property.\n2a. GRAPHICS — a logo, a sparkline, a badge, a decorative shape: draw it as an INLINE <svg> in a blockHtml element (props.content), keeping a viewBox with width/height \"100%\" so its class sizes it, and fill/stroke \"currentColor\" so it follows the host theme. Budget it: a handful of paths, drawn once and reused, never a data: URI and never a full illustration — a photo-real scene costs more than the whole widget, so use an https image, a flat colour or a gradient for that. Markup only: scripts and on* handlers are rejected.\n2b. LAYOUT — it renders in a side panel, so width is free and HEIGHT is scarce. Plain containers stack children vertically, which is the tall half-empty default to avoid: put peers (metrics, plans, options, image + text) in a wrapping row — display:flex, flex-direction:row, flex-wrap:wrap, children flex-grow:\"1\" + flex-basis:\"0%\" + min-width — or a grid with grid-template-columns:\"repeat(auto-fit, minmax(160px, 1fr))\". Keep padding 12-16px and gap 8-12px, and let the outer container fill the panel. Stack only what reads in order (heading over paragraph, forms, steps, prose). Nothing carries a minimum size, so an element with no content and no size takes none — give a spacer or a rail its own height/width — while heading/paragraph do keep the margins the browser gives them (zero them, space with the parent gap).\n2c. THEME — it is embedded in the host UI, which MAY BE DARK, so never hardcode a light palette. Take colours from the host variables with a light-dark() fallback — background-color:\"var(--color-background-secondary, light-dark(#ffffff, #1f2430))\", color:\"var(--color-text-primary, light-dark(#0f172a, #e8eaed))\", border-color:\"var(--color-border-primary, light-dark(#e2e8f0, #333a48))\" — and always set `color` wherever you set `background-color` (a brand accent states its own text colour too).\n3. CONTENT — visible copy goes in props.content (text, heading, paragraph, button); heading level is the element subType (\"h1\"..\"h6\"); image/video take props.src. Write real https URLs: everything the widget loads from outside (images, media, fonts, an apiContainer endpoint) is fetched for it by the render server, so redirects and hotlink rules are handled and there is nothing to configure. It must still point at the actual file — use a URL you have seen work, and when you have none, draw the block with a gradient or an inline SVG instead of guessing one. An unknown prop comes back as a warning naming the right one.\n\nCommon types: container, heading, paragraph, text, button, link, image, video, list, listItem, markdown (plitzi://render/types lists every built-in type with descriptions). Widgets can also be data-driven and interactive — an apiContainer fetches at runtime, upsertBinding wires data into elements, and upsertInteractionFlow makes them react to clicks (see the guide).\nREAD the resource plitzi://render/guide first — it has the element/prop table, the style model and a full worked example, and following it is the difference between a widget that renders and repeated failed calls.\nITERATING — to change a widget you already rendered, do NOT rebuild it: call again with patch:true, the `renderId` that render answered with, and ONLY the operations that differ (patchDefinition, patchElement, deleteElement…). The widget merges them and reports back what it applied; address rows by the refs you already know. Patch ONLY to modify that widget: a different subject or a different kind of widget is a fresh render, without patch — a patch is merged into the previous batch, so patching a new idea leaves you with both.\nReturns a compact summary including the renderId (the widget itself is shown to the user); on failure it returns teachable errors (path + hint) — read them and retry.",
177
- inputShape: renderShape,
178
- access: "read",
179
- spaceless: true,
180
- ui: { resourceUri: RENDER_APP_URI },
181
- run: (input, ctx) => input.patch === true ? toPatchResult(input.operations, input.renderId) : toRenderResult(render(input, { proxy: ctx.proxy }), input.renderId ?? newRenderId())
182
- });
183
- //#endregion
184
- export { render, renderShape, renderTool };
@@ -1,83 +0,0 @@
1
- import { operation } from "./operations/index.js";
2
- import { defineTool, imageResult } from "./shared/tool.js";
3
- import { z } from "zod";
4
- //#region src/modules/mcp/tools/screenshot.ts
5
- var VIEWPORTS = {
6
- desktop: {
7
- label: "desktop",
8
- width: 1440,
9
- height: 900
10
- },
11
- mobile: {
12
- label: "mobile",
13
- width: 390,
14
- height: 844
15
- }
16
- };
17
- var resolveViewports = (choice) => {
18
- if (choice === "both") return [VIEWPORTS.desktop, VIEWPORTS.mobile];
19
- if (choice === "mobile") return [VIEWPORTS.mobile];
20
- return [VIEWPORTS.desktop];
21
- };
22
- var screenshotShape = {
23
- pageRef: z.string().optional().describe("Page ref or id to capture; defaults to the space default page"),
24
- operations: z.array(operation).max(100).optional().describe("Unsaved edits to apply before rendering, so you can screenshot a proposed change WITHOUT persisting it (same op vocabulary as plitzi_apply). Omit to capture the current saved state."),
25
- viewport: z.enum([
26
- "desktop",
27
- "mobile",
28
- "both"
29
- ]).optional().describe("Which viewport(s) to capture. \"both\" catches responsive issues (e.g. overflow at one width). Default desktop.")
30
- };
31
- var screenshotTool = defineTool({
32
- name: "plitzi_screenshot",
33
- title: "Screenshot",
34
- description: "Render a page to a real PNG image so you can SEE the visual result of your edits — overflow, misalignment and broken layout that data alone never reveals. Pass unsaved `operations` to screenshot a proposed change before committing, and viewport \"both\" to compare desktop and mobile. Returns the image(s).",
35
- inputShape: screenshotShape,
36
- access: "read",
37
- requires: "screenshot",
38
- run: async (input, ctx) => {
39
- if (!ctx.preview || ctx.spaceId === void 0) return {
40
- error: "PREVIEW_UNAVAILABLE",
41
- message: "Visual preview is not enabled on this server.",
42
- hint: "Preview needs the SSR render service; it is unavailable in MCP-only mode."
43
- };
44
- const pv = await ctx.preview.render({
45
- spaceId: ctx.spaceId,
46
- env: ctx.env,
47
- pageRef: input.pageRef,
48
- operations: input.operations
49
- });
50
- if (!pv.ok) return pv;
51
- const viewports = resolveViewports(input.viewport);
52
- if (!ctx.screenshot) return {
53
- warning: "SCREENSHOT_DISABLED",
54
- message: "The screenshot service is not configured; returning the HTML preview instead.",
55
- pageRef: input.pageRef ?? "default",
56
- pagePath: pv.pagePath,
57
- stateVersion: pv.stateVersion,
58
- html: pv.html
59
- };
60
- const shot = await ctx.screenshot.capture({
61
- pagePath: pv.pagePath,
62
- token: pv.token,
63
- viewports
64
- });
65
- if (!shot.ok) return {
66
- warning: "SCREENSHOT_UNAVAILABLE",
67
- message: `The screenshot service failed (${shot.message}); returning the HTML preview instead.`,
68
- hint: "The dedicated browser service is down or unreachable. Inspect the HTML, or retry later.",
69
- pageRef: input.pageRef ?? "default",
70
- pagePath: pv.pagePath,
71
- stateVersion: pv.stateVersion,
72
- html: pv.html
73
- };
74
- return imageResult(shot.images, {
75
- pageRef: input.pageRef ?? "default",
76
- pagePath: pv.pagePath,
77
- stateVersion: pv.stateVersion,
78
- viewports: viewports.map((v) => v.label)
79
- });
80
- }
81
- });
82
- //#endregion
83
- export { screenshotShape, screenshotTool };
@@ -1,115 +0,0 @@
1
- import { computeVersion } from "../helpers/computeVersion.js";
2
- import { elementRefOf, getPageElements, isPageElement, nameOf, pageRefOf, pageRefOfElement } from "../helpers/space.js";
3
- import { elementUri, pageUri } from "../helpers/uris.js";
4
- import { definitionRefs, definitionToAI } from "./operations/style/translator.js";
5
- import { elementView, pageSkeletonToAI } from "./operations/schema/translator.js";
6
- import { defineTool } from "./shared/tool.js";
7
- import { z } from "zod";
8
- //#region src/modules/mcp/tools/search.ts
9
- var searchShape = {
10
- query: z.string().describe("Case-insensitive match on label, type and attribute values"),
11
- filters: z.object({
12
- type: z.string().optional(),
13
- pageRef: z.string().optional()
14
- }).optional(),
15
- include: z.literal("detail").optional().describe("Set to \"detail\" to inline each hit's full props/style so an edit needs no follow-up read"),
16
- limit: z.number().int().min(1).max(100).optional().describe("Max element hits to return (default 50). Response echoes total and, if more remain, nextOffset."),
17
- offset: z.number().int().min(0).optional().describe("Element hits to skip (default 0). Page by re-calling with offset = nextOffset until it is absent.")
18
- };
19
- var breadcrumb = (schema, el) => {
20
- const chain = [];
21
- let current = el;
22
- const guard = /* @__PURE__ */ new Set();
23
- while (current && !guard.has(current.id)) {
24
- guard.add(current.id);
25
- chain.push(nameOf(current));
26
- current = current.definition.parentId ? schema.flat[current.definition.parentId] : void 0;
27
- }
28
- return chain.reverse();
29
- };
30
- var search = (input, space, env) => {
31
- const query = input.query.toLowerCase();
32
- const matched = [];
33
- for (const el of Object.values(space.schema.flat)) {
34
- if (isPageElement(space.schema, el)) continue;
35
- if (input.filters?.type && el.definition.type !== input.filters.type) continue;
36
- const pageRef = pageRefOfElement(space.schema, el);
37
- if (input.filters?.pageRef && pageRef !== input.filters.pageRef) continue;
38
- const matches = [];
39
- if (el.definition.label.toLowerCase().includes(query)) matches.push(`label: ${el.definition.label}`);
40
- if (el.definition.type.toLowerCase().includes(query)) matches.push(`type: ${el.definition.type}`);
41
- for (const [key, value] of Object.entries(el.attributes)) if (String(value).toLowerCase().includes(query)) matches.push(`${key}: ${String(value).slice(0, 100)}`);
42
- if (matches.length === 0) continue;
43
- matched.push({
44
- el,
45
- pageRef,
46
- ref: elementRefOf(el),
47
- matches
48
- });
49
- }
50
- const offset = input.offset ?? 0;
51
- const limit = input.limit ?? 50;
52
- const total = matched.length;
53
- const nextOffset = offset + limit < total ? offset + limit : void 0;
54
- const results = matched.slice(offset, offset + limit).map((hit) => {
55
- const { detail, version } = elementView(space.schema, hit.el, space.style);
56
- return {
57
- pageRef: hit.pageRef,
58
- ref: hit.ref,
59
- uri: elementUri(env, hit.ref),
60
- pageUri: pageUri(env, hit.pageRef),
61
- stateVersion: version,
62
- parentRef: detail.parentRef,
63
- path: breadcrumb(space.schema, hit.el),
64
- label: hit.el.definition.label,
65
- type: hit.el.definition.type,
66
- matches: hit.matches,
67
- detail: input.include === "detail" ? detail : void 0
68
- };
69
- });
70
- const definitions = [];
71
- for (const ref of definitionRefs(space.style)) {
72
- if (ref.toLowerCase().includes(query)) {
73
- const def = definitionToAI(space.style, ref);
74
- if (def) definitions.push(def);
75
- }
76
- if (definitions.length >= 50) break;
77
- }
78
- const pages = [];
79
- for (const page of getPageElements(space.schema)) {
80
- const label = nameOf(page);
81
- const slug = typeof page.attributes.slug === "string" ? page.attributes.slug : "";
82
- const matches = [];
83
- if (label.toLowerCase().includes(query)) matches.push(`label: ${label}`);
84
- if (slug && slug.toLowerCase().includes(query)) matches.push(`slug: ${slug}`);
85
- if (matches.length === 0) continue;
86
- const ref = pageRefOf(page);
87
- pages.push({
88
- ref,
89
- uri: pageUri(env, ref),
90
- stateVersion: computeVersion(pageSkeletonToAI(space.schema, page, space.style)),
91
- label,
92
- slug,
93
- matches
94
- });
95
- }
96
- return {
97
- results,
98
- total,
99
- offset,
100
- limit,
101
- nextOffset,
102
- definitions: definitions.length > 0 ? definitions : void 0,
103
- pages: pages.length > 0 ? pages : void 0
104
- };
105
- };
106
- var searchTool = defineTool({
107
- name: "plitzi_search",
108
- title: "Search",
109
- description: "FIND elements when you know what you want but not its ref/uri (e.g. \"the hero button\"). Matches label, type or attribute value across all pages. Each hit returns the element uri, its stateVersion (edit with optimistic concurrency, no read needed) and its tree path. Pass include: \"detail\" to inline the full props/style of each hit plus resolvedStyle (the CSS of its classes). Also returns any style definitions matching the query (with full CSS) under `definitions`, and matching pages under `pages`. Element hits are paginated: it returns at most `limit` (default 50) starting at `offset`, plus `total` and — while more remain — `nextOffset` to fetch the next page.",
110
- inputShape: searchShape,
111
- access: "read",
112
- run: (input, ctx) => search(input, ctx.space, ctx.env)
113
- });
114
- //#endregion
115
- export { search, searchShape, searchTool };
@@ -1,44 +0,0 @@
1
- import { expandRepeat } from "../operations/schema/elements/repeatElement.js";
2
- //#region src/modules/mcp/tools/shared/expandOperations.ts
3
- /** Rewrites the sugar ops into the vocabulary the rest of the pipeline knows, BEFORE validation — today that is
4
- * `repeatElement`, which stands for the `upsertElement` its template + rows expand to. Everything downstream
5
- * (validator, dispatch, audit, versions) therefore stays unaware of it, and a row that renders a bad element is
6
- * reported by the ordinary element checks.
7
- *
8
- * One op in, one op out: the indices the agent sent are the indices every error path names, so `operations[3]`
9
- * still means the fourth operation it wrote. */
10
- var expandOperations = (ops) => {
11
- if (!ops.some((op) => op.type === "repeatElement")) return {
12
- operations: ops,
13
- errors: []
14
- };
15
- const operations = [];
16
- const errors = [];
17
- for (const [index, op] of ops.entries()) {
18
- if (op.type !== "repeatElement") {
19
- operations.push(op);
20
- continue;
21
- }
22
- const expanded = expandRepeat(op);
23
- if (!expanded.element) {
24
- errors.push(...expanded.errors.map((error) => ({
25
- ...error,
26
- path: `operations[${index}].${error.path}`
27
- })));
28
- continue;
29
- }
30
- operations.push({
31
- type: "upsertElement",
32
- pageRef: op.pageRef,
33
- element: expanded.element,
34
- ...op.parentRef === void 0 ? {} : { parentRef: op.parentRef },
35
- ...op.position === void 0 ? {} : { position: op.position }
36
- });
37
- }
38
- return {
39
- operations,
40
- errors
41
- };
42
- };
43
- //#endregion
44
- export { expandOperations };