@plitzi/sdk-server 0.32.24 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (512) hide show
  1. package/CHANGELOG.md +22 -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 -46
  184. package/dist/modules/mcp/proxy/fetch.js +0 -91
  185. package/dist/modules/mcp/proxy/grant.js +0 -65
  186. package/dist/modules/mcp/proxy/guard.js +0 -38
  187. package/dist/modules/mcp/proxy/handler.js +0 -68
  188. package/dist/modules/mcp/proxy/rewrite.js +0 -72
  189. package/dist/modules/mcp/proxy/sign.js +0 -15
  190. package/dist/modules/mcp/proxy/types.js +0 -9
  191. package/dist/modules/mcp/resources/canonical.js +0 -30
  192. package/dist/modules/mcp/resources/core.js +0 -18
  193. package/dist/modules/mcp/resources/envelope.js +0 -14
  194. package/dist/modules/mcp/resources/primer.js +0 -31
  195. package/dist/modules/mcp/resources/register.js +0 -190
  196. package/dist/modules/mcp/resources/renderGuide.js +0 -451
  197. package/dist/modules/mcp/resources/router.js +0 -37
  198. package/dist/modules/mcp/resources/schema.js +0 -43
  199. package/dist/modules/mcp/resources/style.js +0 -34
  200. package/dist/modules/mcp/screenshotClient.js +0 -47
  201. package/dist/modules/mcp/server.js +0 -113
  202. package/dist/modules/mcp/tools/apply/dispatch.js +0 -105
  203. package/dist/modules/mcp/tools/apply/index.js +0 -150
  204. package/dist/modules/mcp/tools/apply/writeResult.js +0 -37
  205. package/dist/modules/mcp/tools/index.js +0 -24
  206. package/dist/modules/mcp/tools/operations/index.js +0 -45
  207. package/dist/modules/mcp/tools/operations/schema/bindings/deleteBinding.js +0 -32
  208. package/dist/modules/mcp/tools/operations/schema/bindings/patchBinding.js +0 -36
  209. package/dist/modules/mcp/tools/operations/schema/bindings/upsertBinding.js +0 -47
  210. package/dist/modules/mcp/tools/operations/schema/elements/deleteElement.js +0 -29
  211. package/dist/modules/mcp/tools/operations/schema/elements/moveElement.js +0 -41
  212. package/dist/modules/mcp/tools/operations/schema/elements/patchElement.js +0 -58
  213. package/dist/modules/mcp/tools/operations/schema/elements/repeatElement.js +0 -148
  214. package/dist/modules/mcp/tools/operations/schema/elements/upsertElement.js +0 -65
  215. package/dist/modules/mcp/tools/operations/schema/folders/deleteFolder.js +0 -30
  216. package/dist/modules/mcp/tools/operations/schema/folders/upsertFolder.js +0 -49
  217. package/dist/modules/mcp/tools/operations/schema/interactions/deleteInteraction.js +0 -52
  218. package/dist/modules/mcp/tools/operations/schema/interactions/patchInteractionNode.js +0 -47
  219. package/dist/modules/mcp/tools/operations/schema/interactions/upsertInteractionFlow.js +0 -44
  220. package/dist/modules/mcp/tools/operations/schema/operations.js +0 -41
  221. package/dist/modules/mcp/tools/operations/schema/pages/deletePage.js +0 -25
  222. package/dist/modules/mcp/tools/operations/schema/pages/upsertPage.js +0 -75
  223. package/dist/modules/mcp/tools/operations/schema/settings/patchSettings.js +0 -45
  224. package/dist/modules/mcp/tools/operations/schema/shared.js +0 -122
  225. package/dist/modules/mcp/tools/operations/schema/translator.js +0 -215
  226. package/dist/modules/mcp/tools/operations/schema/variables/deleteVariable.js +0 -18
  227. package/dist/modules/mcp/tools/operations/schema/variables/upsertVariable.js +0 -42
  228. package/dist/modules/mcp/tools/operations/schema/write.js +0 -109
  229. package/dist/modules/mcp/tools/operations/schemaIds.js +0 -54
  230. package/dist/modules/mcp/tools/operations/style/definitions/deleteDefinition.js +0 -21
  231. package/dist/modules/mcp/tools/operations/style/definitions/patchDefinition.js +0 -28
  232. package/dist/modules/mcp/tools/operations/style/definitions/upsertDefinition.js +0 -24
  233. package/dist/modules/mcp/tools/operations/style/definitions/upsertDefinitions.js +0 -40
  234. package/dist/modules/mcp/tools/operations/style/globalStyles/deleteGlobalStyle.js +0 -21
  235. package/dist/modules/mcp/tools/operations/style/globalStyles/patchGlobalStyle.js +0 -28
  236. package/dist/modules/mcp/tools/operations/style/globalStyles/upsertGlobalStyle.js +0 -24
  237. package/dist/modules/mcp/tools/operations/style/idStyles/deleteIdStyle.js +0 -21
  238. package/dist/modules/mcp/tools/operations/style/idStyles/patchIdStyle.js +0 -28
  239. package/dist/modules/mcp/tools/operations/style/idStyles/upsertIdStyle.js +0 -24
  240. package/dist/modules/mcp/tools/operations/style/operations.js +0 -29
  241. package/dist/modules/mcp/tools/operations/style/shared.js +0 -59
  242. package/dist/modules/mcp/tools/operations/style/translator.js +0 -101
  243. package/dist/modules/mcp/tools/operations/style/variables/deleteStyleVariable.js +0 -21
  244. package/dist/modules/mcp/tools/operations/style/variables/upsertStyleVariable.js +0 -22
  245. package/dist/modules/mcp/tools/operations/style/write.js +0 -108
  246. package/dist/modules/mcp/tools/preview.js +0 -37
  247. package/dist/modules/mcp/tools/read.js +0 -51
  248. package/dist/modules/mcp/tools/render.js +0 -184
  249. package/dist/modules/mcp/tools/screenshot.js +0 -83
  250. package/dist/modules/mcp/tools/search.js +0 -115
  251. package/dist/modules/mcp/tools/shared/expandOperations.js +0 -44
  252. package/dist/modules/mcp/tools/shared/tool.js +0 -33
  253. package/dist/modules/mcp/tools/shared/validator/audit.js +0 -124
  254. package/dist/modules/mcp/tools/shared/validator/batch.js +0 -39
  255. package/dist/modules/mcp/tools/shared/validator/bindings.js +0 -70
  256. package/dist/modules/mcp/tools/shared/validator/context.js +0 -35
  257. package/dist/modules/mcp/tools/shared/validator/css.js +0 -39
  258. package/dist/modules/mcp/tools/shared/validator/elements.js +0 -68
  259. package/dist/modules/mcp/tools/shared/validator/index.js +0 -246
  260. package/dist/modules/mcp/tools/shared/validator/interactions.js +0 -103
  261. package/dist/modules/mcp/tools/shared/validator/refs.js +0 -28
  262. package/dist/modules/mcp/tools/validate.js +0 -47
  263. package/dist/modules/oauth/authorize.js +0 -177
  264. package/dist/modules/oauth/challenge.js +0 -33
  265. package/dist/modules/oauth/consentPage.js +0 -118
  266. package/dist/modules/oauth/metadata.js +0 -69
  267. package/dist/modules/oauth/params.js +0 -5
  268. package/dist/modules/oauth/pkce.js +0 -15
  269. package/dist/modules/oauth/records.js +0 -46
  270. package/dist/modules/oauth/register.js +0 -55
  271. package/dist/modules/oauth/respond.js +0 -44
  272. package/dist/modules/oauth/token.js +0 -100
  273. package/dist/public/.gitkeep +0 -0
  274. package/dist/src/adapters/jsonAdapters.d.ts +0 -7
  275. package/dist/src/core/createServer.d.ts +0 -14
  276. package/dist/src/core/http/stages/health.d.ts +0 -2
  277. package/dist/src/core/http/stages/middlewares.d.ts +0 -2
  278. package/dist/src/core/http/stages/static.d.ts +0 -5
  279. package/dist/src/core/http/types.d.ts +0 -22
  280. package/dist/src/core/server/mcpServer.d.ts +0 -2
  281. package/dist/src/core/server/pageServer.d.ts +0 -10
  282. package/dist/src/core/services/mcp.d.ts +0 -3
  283. package/dist/src/core/services/oauth.d.ts +0 -18
  284. package/dist/src/core/services/preview.d.ts +0 -2
  285. package/dist/src/core/services/proxy.d.ts +0 -2
  286. package/dist/src/core/services/registry.d.ts +0 -4
  287. package/dist/src/helpers/buildServerInfo.d.ts +0 -2
  288. package/dist/src/helpers/compress.d.ts +0 -3
  289. package/dist/src/index.d.ts +0 -15
  290. package/dist/src/mcp.d.ts +0 -14
  291. package/dist/src/middlewares/spaceDeployment.d.ts +0 -2
  292. package/dist/src/modules/ai/AIEngine.d.ts +0 -20
  293. package/dist/src/modules/ai/index.d.ts +0 -4
  294. package/dist/src/modules/ai/toolkit.d.ts +0 -17
  295. package/dist/src/modules/mcp/apps/example/index.d.ts +0 -8
  296. package/dist/src/modules/mcp/apps/index.d.ts +0 -11
  297. package/dist/src/modules/mcp/apps/render/index.d.ts +0 -4
  298. package/dist/src/modules/mcp/apps/render/styles.d.ts +0 -10
  299. package/dist/src/modules/mcp/apps/shared/assets.d.ts +0 -10
  300. package/dist/src/modules/mcp/apps/shared/bundle.d.ts +0 -4
  301. package/dist/src/modules/mcp/apps/shared/index.d.ts +0 -3
  302. package/dist/src/modules/mcp/apps/shared/page.d.ts +0 -2
  303. package/dist/src/modules/mcp/apps/shared/registerApp.d.ts +0 -5
  304. package/dist/src/modules/mcp/apps/shared/resolve.d.ts +0 -1
  305. package/dist/src/modules/mcp/apps/shared/zodEnglishOnly.d.ts +0 -4
  306. package/dist/src/modules/mcp/catalogs/builtinCallbacks.d.ts +0 -23
  307. package/dist/src/modules/mcp/catalogs/builtinComponents.d.ts +0 -4
  308. package/dist/src/modules/mcp/catalogs/builtinElementCallbacks.d.ts +0 -20
  309. package/dist/src/modules/mcp/catalogs/builtinTransformers.d.ts +0 -28
  310. package/dist/src/modules/mcp/catalogs/builtinUtilities.d.ts +0 -18
  311. package/dist/src/modules/mcp/catalogs/cssCatalog/border.d.ts +0 -4
  312. package/dist/src/modules/mcp/catalogs/cssCatalog/box.d.ts +0 -4
  313. package/dist/src/modules/mcp/catalogs/cssCatalog/helpers.d.ts +0 -34
  314. package/dist/src/modules/mcp/catalogs/cssCatalog/index.d.ts +0 -19
  315. package/dist/src/modules/mcp/catalogs/cssCatalog/layout.d.ts +0 -9
  316. package/dist/src/modules/mcp/catalogs/cssCatalog/visual.d.ts +0 -8
  317. package/dist/src/modules/mcp/catalogs/index.d.ts +0 -9
  318. package/dist/src/modules/mcp/catalogs/observed.d.ts +0 -48
  319. package/dist/src/modules/mcp/catalogs/paramSpec.d.ts +0 -42
  320. package/dist/src/modules/mcp/catalogs/registry.d.ts +0 -35
  321. package/dist/src/modules/mcp/e2e/index.d.ts +0 -6
  322. package/dist/src/modules/mcp/e2e/mcpEndpoint.d.ts +0 -27
  323. package/dist/src/modules/mcp/e2e/postMessageChannel.d.ts +0 -22
  324. package/dist/src/modules/mcp/e2e/renderingHost.d.ts +0 -34
  325. package/dist/src/modules/mcp/handler.d.ts +0 -22
  326. package/dist/src/modules/mcp/helpers/agentPrompt.d.ts +0 -4
  327. package/dist/src/modules/mcp/helpers/computeVersion.d.ts +0 -1
  328. package/dist/src/modules/mcp/helpers/guide.d.ts +0 -4
  329. package/dist/src/modules/mcp/helpers/index.d.ts +0 -8
  330. package/dist/src/modules/mcp/helpers/interactions.d.ts +0 -30
  331. package/dist/src/modules/mcp/helpers/log.d.ts +0 -8
  332. package/dist/src/modules/mcp/helpers/opResult.d.ts +0 -13
  333. package/dist/src/modules/mcp/helpers/space.d.ts +0 -115
  334. package/dist/src/modules/mcp/helpers/uris.d.ts +0 -28
  335. package/dist/src/modules/mcp/index.d.ts +0 -13
  336. package/dist/src/modules/mcp/previewClient.d.ts +0 -13
  337. package/dist/src/modules/mcp/proxy/config.d.ts +0 -17
  338. package/dist/src/modules/mcp/proxy/fetch.d.ts +0 -18
  339. package/dist/src/modules/mcp/proxy/grant.d.ts +0 -23
  340. package/dist/src/modules/mcp/proxy/guard.d.ts +0 -6
  341. package/dist/src/modules/mcp/proxy/handler.d.ts +0 -8
  342. package/dist/src/modules/mcp/proxy/index.d.ts +0 -7
  343. package/dist/src/modules/mcp/proxy/rewrite.d.ts +0 -13
  344. package/dist/src/modules/mcp/proxy/sign.d.ts +0 -6
  345. package/dist/src/modules/mcp/proxy/types.d.ts +0 -45
  346. package/dist/src/modules/mcp/resources/canonical.d.ts +0 -6
  347. package/dist/src/modules/mcp/resources/core.d.ts +0 -5
  348. package/dist/src/modules/mcp/resources/envelope.d.ts +0 -10
  349. package/dist/src/modules/mcp/resources/index.d.ts +0 -8
  350. package/dist/src/modules/mcp/resources/primer.d.ts +0 -7
  351. package/dist/src/modules/mcp/resources/register.d.ts +0 -10
  352. package/dist/src/modules/mcp/resources/renderGuide.d.ts +0 -10
  353. package/dist/src/modules/mcp/resources/router.d.ts +0 -10
  354. package/dist/src/modules/mcp/resources/schema.d.ts +0 -5
  355. package/dist/src/modules/mcp/resources/style.d.ts +0 -5
  356. package/dist/src/modules/mcp/screenshotClient.d.ts +0 -13
  357. package/dist/src/modules/mcp/server.d.ts +0 -31
  358. package/dist/src/modules/mcp/tests/helpers.d.ts +0 -13
  359. package/dist/src/modules/mcp/tools/apply/dispatch.d.ts +0 -6
  360. package/dist/src/modules/mcp/tools/apply/index.d.ts +0 -470
  361. package/dist/src/modules/mcp/tools/apply/writeResult.d.ts +0 -8
  362. package/dist/src/modules/mcp/tools/index.d.ts +0 -18
  363. package/dist/src/modules/mcp/tools/operations/index.d.ts +0 -928
  364. package/dist/src/modules/mcp/tools/operations/schema/bindings/deleteBinding.d.ts +0 -17
  365. package/dist/src/modules/mcp/tools/operations/schema/bindings/patchBinding.d.ts +0 -25
  366. package/dist/src/modules/mcp/tools/operations/schema/bindings/upsertBinding.d.ts +0 -27
  367. package/dist/src/modules/mcp/tools/operations/schema/elements/deleteElement.d.ts +0 -10
  368. package/dist/src/modules/mcp/tools/operations/schema/elements/moveElement.d.ts +0 -16
  369. package/dist/src/modules/mcp/tools/operations/schema/elements/patchElement.d.ts +0 -22
  370. package/dist/src/modules/mcp/tools/operations/schema/elements/repeatElement.d.ts +0 -55
  371. package/dist/src/modules/mcp/tools/operations/schema/elements/upsertElement.d.ts +0 -16
  372. package/dist/src/modules/mcp/tools/operations/schema/folders/deleteFolder.d.ts +0 -9
  373. package/dist/src/modules/mcp/tools/operations/schema/folders/upsertFolder.d.ts +0 -12
  374. package/dist/src/modules/mcp/tools/operations/schema/index.d.ts +0 -21
  375. package/dist/src/modules/mcp/tools/operations/schema/interactions/deleteInteraction.d.ts +0 -12
  376. package/dist/src/modules/mcp/tools/operations/schema/interactions/patchInteractionNode.d.ts +0 -18
  377. package/dist/src/modules/mcp/tools/operations/schema/interactions/upsertInteractionFlow.d.ts +0 -27
  378. package/dist/src/modules/mcp/tools/operations/schema/operations.d.ts +0 -229
  379. package/dist/src/modules/mcp/tools/operations/schema/pages/deletePage.d.ts +0 -9
  380. package/dist/src/modules/mcp/tools/operations/schema/pages/upsertPage.d.ts +0 -14
  381. package/dist/src/modules/mcp/tools/operations/schema/settings/patchSettings.d.ts +0 -34
  382. package/dist/src/modules/mcp/tools/operations/schema/shared.d.ts +0 -92
  383. package/dist/src/modules/mcp/tools/operations/schema/translator.d.ts +0 -12
  384. package/dist/src/modules/mcp/tools/operations/schema/variables/deleteVariable.d.ts +0 -9
  385. package/dist/src/modules/mcp/tools/operations/schema/variables/upsertVariable.d.ts +0 -16
  386. package/dist/src/modules/mcp/tools/operations/schema/write.d.ts +0 -42
  387. package/dist/src/modules/mcp/tools/operations/schemaIds.d.ts +0 -6
  388. package/dist/src/modules/mcp/tools/operations/style/definitions/deleteDefinition.d.ts +0 -9
  389. package/dist/src/modules/mcp/tools/operations/style/definitions/patchDefinition.d.ts +0 -37
  390. package/dist/src/modules/mcp/tools/operations/style/definitions/upsertDefinition.d.ts +0 -37
  391. package/dist/src/modules/mcp/tools/operations/style/definitions/upsertDefinitions.d.ts +0 -41
  392. package/dist/src/modules/mcp/tools/operations/style/globalStyles/deleteGlobalStyle.d.ts +0 -9
  393. package/dist/src/modules/mcp/tools/operations/style/globalStyles/patchGlobalStyle.d.ts +0 -37
  394. package/dist/src/modules/mcp/tools/operations/style/globalStyles/upsertGlobalStyle.d.ts +0 -37
  395. package/dist/src/modules/mcp/tools/operations/style/idStyles/deleteIdStyle.d.ts +0 -9
  396. package/dist/src/modules/mcp/tools/operations/style/idStyles/patchIdStyle.d.ts +0 -37
  397. package/dist/src/modules/mcp/tools/operations/style/idStyles/upsertIdStyle.d.ts +0 -37
  398. package/dist/src/modules/mcp/tools/operations/style/index.d.ts +0 -15
  399. package/dist/src/modules/mcp/tools/operations/style/operations.d.ts +0 -264
  400. package/dist/src/modules/mcp/tools/operations/style/shared.d.ts +0 -116
  401. package/dist/src/modules/mcp/tools/operations/style/translator.d.ts +0 -12
  402. package/dist/src/modules/mcp/tools/operations/style/variables/deleteStyleVariable.d.ts +0 -15
  403. package/dist/src/modules/mcp/tools/operations/style/variables/upsertStyleVariable.d.ts +0 -20
  404. package/dist/src/modules/mcp/tools/operations/style/write.d.ts +0 -12
  405. package/dist/src/modules/mcp/tools/preview.d.ts +0 -465
  406. package/dist/src/modules/mcp/tools/read.d.ts +0 -9
  407. package/dist/src/modules/mcp/tools/render.d.ts +0 -499
  408. package/dist/src/modules/mcp/tools/render.test.d.ts +0 -1
  409. package/dist/src/modules/mcp/tools/screenshot.d.ts +0 -470
  410. package/dist/src/modules/mcp/tools/search.d.ts +0 -15
  411. package/dist/src/modules/mcp/tools/shared/expandOperations.d.ts +0 -13
  412. package/dist/src/modules/mcp/tools/shared/tool.d.ts +0 -72
  413. package/dist/src/modules/mcp/tools/shared/validator/audit.d.ts +0 -4
  414. package/dist/src/modules/mcp/tools/shared/validator/batch.d.ts +0 -5
  415. package/dist/src/modules/mcp/tools/shared/validator/bindings.d.ts +0 -6
  416. package/dist/src/modules/mcp/tools/shared/validator/context.d.ts +0 -38
  417. package/dist/src/modules/mcp/tools/shared/validator/css.d.ts +0 -4
  418. package/dist/src/modules/mcp/tools/shared/validator/elements.d.ts +0 -7
  419. package/dist/src/modules/mcp/tools/shared/validator/index.d.ts +0 -8
  420. package/dist/src/modules/mcp/tools/shared/validator/interactions.d.ts +0 -3
  421. package/dist/src/modules/mcp/tools/shared/validator/refs.d.ts +0 -4
  422. package/dist/src/modules/mcp/tools/validate.d.ts +0 -467
  423. package/dist/src/modules/mcp/types/aiSchema.d.ts +0 -218
  424. package/dist/src/modules/mcp/types/appTypes.d.ts +0 -26
  425. package/dist/src/modules/mcp/types/index.d.ts +0 -5
  426. package/dist/src/modules/mcp/types/previewTypes.d.ts +0 -25
  427. package/dist/src/modules/mcp/types/screenshotTypes.d.ts +0 -29
  428. package/dist/src/modules/mcp/types/toolTypes.d.ts +0 -138
  429. package/dist/src/modules/oauth/authorize.d.ts +0 -7
  430. package/dist/src/modules/oauth/challenge.d.ts +0 -11
  431. package/dist/src/modules/oauth/consentPage.d.ts +0 -7
  432. package/dist/src/modules/oauth/metadata.d.ts +0 -40
  433. package/dist/src/modules/oauth/params.d.ts +0 -5
  434. package/dist/src/modules/oauth/pkce.d.ts +0 -6
  435. package/dist/src/modules/oauth/records.d.ts +0 -71
  436. package/dist/src/modules/oauth/register.d.ts +0 -5
  437. package/dist/src/modules/oauth/respond.d.ts +0 -13
  438. package/dist/src/modules/oauth/token.d.ts +0 -5
  439. package/dist/src/modules/ssr/buildBody.d.ts +0 -9
  440. package/dist/src/modules/ssr/handler.d.ts +0 -4
  441. package/dist/src/modules/ssr/preview.d.ts +0 -16
  442. package/dist/src/modules/ssr/streamBody.d.ts +0 -5
  443. package/dist/src/modules/ssr/template.d.ts +0 -6
  444. package/dist/src/standalone/alias-loader.d.mts +0 -2
  445. package/dist/src/standalone/plugins/ClientInfo.d.ts +0 -2
  446. package/dist/src/standalone/plugins/ServerInfo.d.ts +0 -2
  447. package/dist/src/standalone/plugins/SharedInfo.d.ts +0 -2
  448. package/dist/src/standalone/plugins/styles.d.ts +0 -5
  449. package/dist/src/standalone/register-alias.d.mts +0 -1
  450. package/dist/src/standalone/server.d.ts +0 -1
  451. package/dist/src/standalone/stubs/react-syntax-highlighter.d.mts +0 -31
  452. package/skills/plitzi-render/SKILL.md +0 -174
  453. /package/dist/{src/core/http/dispatcher.test.d.ts → core/auth/api.test.d.ts} +0 -0
  454. /package/dist/{src/core/server/mcpServer.test.d.ts → core/auth/authorize.test.d.ts} +0 -0
  455. /package/dist/{src/modules/ai/toolkit.test.d.ts → core/auth/createAuth.test.d.ts} +0 -0
  456. /package/dist/{src/modules/mcp/apps/apps.test.d.ts → core/auth/domains.test.d.ts} +0 -0
  457. /package/dist/{src/modules/mcp/apps/render/styles.test.d.ts → core/auth/identity.test.d.ts} +0 -0
  458. /package/dist/{src/modules → core/auth}/oauth/oauth.test.d.ts +0 -0
  459. /package/dist/{src/modules/mcp/catalogs/builtinTransformers.test.d.ts → core/auth/routes.test.d.ts} +0 -0
  460. /package/dist/{src/modules/mcp/catalogs/cssCatalog/cssCatalog.test.d.ts → core/auth/session.test.d.ts} +0 -0
  461. /package/dist/{src/modules/mcp/e2e/connector.test.d.ts → core/auth/spaceTokens.test.d.ts} +0 -0
  462. /package/dist/{src/modules/mcp/e2e/host.test.d.ts → core/auth/tokens.test.d.ts} +0 -0
  463. /package/dist/{src/modules/mcp/e2e/oauthConnector.test.d.ts → core/createServer.test.d.ts} +0 -0
  464. /package/dist/{src/modules/mcp/helpers/log.test.d.ts → core/handlers/handlers.test.d.ts} +0 -0
  465. /package/dist/{src/core → core}/health.d.ts +0 -0
  466. /package/dist/{src/modules/mcp/mcp.bench.d.ts → core/http/dispatcher.test.d.ts} +0 -0
  467. /package/dist/{src/core → core}/http/securityHeaders.d.ts +0 -0
  468. /package/dist/{src/core → core}/http/stages/authRoutes.d.ts +0 -0
  469. /package/dist/{src/core → core}/http/stages/pluginAssets.d.ts +0 -0
  470. /package/dist/{src/core → core}/mimeTypes.d.ts +0 -0
  471. /package/dist/{src/modules/mcp/constants.d.ts → core/previewToken.d.ts} +0 -0
  472. /package/dist/{src/core → core}/requestParser.d.ts +0 -0
  473. /package/dist/{src/core → core}/server/baseServer.d.ts +0 -0
  474. /package/dist/{src/modules/mcp/proxy/endpoint.test.d.ts → core/server/baseServer.test.d.ts} +0 -0
  475. /package/dist/{src/modules/mcp/proxy/proxy.test.d.ts → core/services/resolve.test.d.ts} +0 -0
  476. /package/dist/{src/core → core}/services/rsc.d.ts +0 -0
  477. /package/dist/{src/core → core}/services/ssr.d.ts +0 -0
  478. /package/dist/{src/core → core}/staticFiles.d.ts +0 -0
  479. /package/dist/{src/modules/mcp/proxy/wiring.test.d.ts → helpers/buildResponseHelpers.test.d.ts} +0 -0
  480. /package/dist/{src/helpers → helpers}/cache/TtlCache.d.ts +0 -0
  481. /package/dist/{src/helpers → helpers}/cache/cacheManager.d.ts +0 -0
  482. /package/dist/{src/helpers → helpers}/cache/defaults.d.ts +0 -0
  483. /package/dist/{src/helpers → helpers}/cache/index.d.ts +0 -0
  484. /package/dist/{src/modules/mcp/tests/apply.test.d.ts → helpers/cache/keys.test.d.ts} +0 -0
  485. /package/dist/{src/helpers → helpers}/cache/serverCaches.d.ts +0 -0
  486. /package/dist/{src/modules/mcp/tests/bindings.test.d.ts → helpers/compress.test.d.ts} +0 -0
  487. /package/dist/{src/helpers → helpers}/escapeJson.d.ts +0 -0
  488. /package/dist/{src/helpers → helpers}/metrics.d.ts +0 -0
  489. /package/dist/{src/helpers → helpers}/normalizePlugins.d.ts +0 -0
  490. /package/dist/{src/modules/mcp/tests/css.test.d.ts → helpers/offlineDataLoader.test.d.ts} +0 -0
  491. /package/dist/{src/helpers → helpers}/readCookie.d.ts +0 -0
  492. /package/dist/{src/modules/mcp/tests/interactions.test.d.ts → helpers/resolveDebugMode.test.d.ts} +0 -0
  493. /package/dist/{src/helpers → helpers}/runMiddlewares.d.ts +0 -0
  494. /package/dist/{src/helpers → helpers}/serverLog.d.ts +0 -0
  495. /package/dist/{src/middlewares → middlewares}/auth.d.ts +0 -0
  496. /package/dist/{src/middlewares → middlewares}/basicAuth.d.ts +0 -0
  497. /package/dist/{src/modules/mcp/tests/pages.test.d.ts → middlewares/spaceDeployment.test.d.ts} +0 -0
  498. /package/dist/{src/modules/mcp/tests/reads.test.d.ts → modules/actions/handler.test.d.ts} +0 -0
  499. /package/dist/{src/modules/mcp/tests/schemaIds.test.d.ts → modules/connectors/engine.test.d.ts} +0 -0
  500. /package/dist/{src/modules/mcp/tests/search.test.d.ts → modules/connectors/projection.test.d.ts} +0 -0
  501. /package/dist/{src/modules/mcp/tests/skill.test.d.ts → modules/connectors/resolver.test.d.ts} +0 -0
  502. /package/dist/{src/modules/mcp/tests/styles.test.d.ts → modules/rsc/resolveRscData.test.d.ts} +0 -0
  503. /package/dist/{src/modules → modules}/ssr/applySSRResult.d.ts +0 -0
  504. /package/dist/{src/modules/mcp/tests/tools.test.d.ts → modules/ssr/loadPluginComponents.test.d.ts} +0 -0
  505. /package/dist/{src/modules/mcp/tests/validation.test.d.ts → modules/ssr/metering.test.d.ts} +0 -0
  506. /package/dist/{src/modules → modules}/ssr/registerExternalPlugins.d.ts +0 -0
  507. /package/dist/{src/plugins → plugins}/compile.d.ts +0 -0
  508. /package/dist/{src/plugins → plugins}/copy.d.ts +0 -0
  509. /package/dist/{src/plugins → plugins}/detect.d.ts +0 -0
  510. /package/dist/{src/plugins → plugins}/manager.d.ts +0 -0
  511. /package/dist/{src/plugins → plugins}/validate.d.ts +0 -0
  512. /package/dist/{src/plugins → plugins}/validate.test.d.ts +0 -0
@@ -1,70 +0,0 @@
1
- import { getTransformer, suggestTransformer } from "../../../catalogs/builtinTransformers.js";
2
- import { descendantIds, elementRefOf, findElementByRef } from "../../../helpers/space.js";
3
- import { warnOnce } from "./context.js";
4
- import getSourceName from "@plitzi/sdk-shared/dataSource/helpers/getSourceName";
5
- //#region src/modules/mcp/tools/shared/validator/bindings.ts
6
- var providerOfSource = (space, source) => {
7
- const head = source.split(".")[0];
8
- const sep = head.indexOf("_");
9
- if (sep < 0) return;
10
- const idRef = head.slice(sep + 1);
11
- const el = findElementByRef(space.schema, idRef);
12
- if (!el || getSourceName(el.definition.type, el) !== head) return;
13
- return {
14
- ref: elementRefOf(el),
15
- id: el.id
16
- };
17
- };
18
- var checkBindingTarget = (ref, category, to, path, ctx) => {
19
- if (category !== "attributes" && category !== "initialState") return;
20
- const type = ctx.elementType(ref);
21
- const targets = type ? ctx.typeMeta.get(type)?.bindingTargets?.[category] : void 0;
22
- if (!targets || targets.size === 0 || targets.has(to)) return;
23
- warnOnce(ctx, `Binding target "${to}" at ${path} is not among the "${category}" targets the type "${type}" declares (${[...targets].sort().join(", ")}). Verify against plitzi://data-sources; it may still be valid.`);
24
- };
25
- var checkBindingSourceScope = (space, ctx, elementRef, source, path) => {
26
- const provider = providerOfSource(space, source);
27
- if (!provider) return;
28
- const bound = findElementByRef(space.schema, elementRef);
29
- if (!bound) return;
30
- if (bound.id !== provider.id && descendantIds(space.schema, provider.id).includes(bound.id)) return;
31
- ctx.errors.push({
32
- path,
33
- message: `Binding source "${source}" is provided by element "${provider.ref}", but "${elementRef}" is not inside its subtree`,
34
- hint: `An element source is scoped to its DESCENDANTS only, so this binding resolves to nothing at runtime (the source is not available outside "${provider.ref}"). Move "${elementRef}" under "${provider.ref}", or bind to a source that is in scope (e.g. a global module source like state/space/navigation).`
35
- });
36
- };
37
- var checkBindingTransformers = (transformers, path, ctx) => {
38
- transformers?.forEach((transformer, i) => {
39
- if (transformer.enabled === false) return;
40
- const base = `${path}[${i}]`;
41
- const spec = getTransformer(transformer.action);
42
- if (!spec) {
43
- const suggestion = suggestTransformer(transformer.action);
44
- ctx.errors.push({
45
- path: `${base}.action`,
46
- message: `Unknown transformer action "${transformer.action}"`,
47
- hint: `The runtime skips an unknown transformer and passes the value through unchanged.${suggestion ? ` Did you mean "${suggestion}"?` : ""} See the transformers list in plitzi://data-sources.`
48
- });
49
- return;
50
- }
51
- const params = transformer.params;
52
- const unknown = Object.keys(params).filter((key) => !(key in spec.params));
53
- if (spec.strictParams && unknown.length > 0) warnOnce(ctx, `Transformer "${transformer.action}" at ${base} got unknown param(s) ${unknown.map((k) => `"${k}"`).join(", ")} — the runtime ignores them. Valid params: ${Object.keys(spec.params).join(", ") || "(none)"}.`);
54
- for (const [key, param] of Object.entries(spec.params)) {
55
- if (param.required && !(key in params)) ctx.errors.push({
56
- path: `${base}.params.${key}`,
57
- message: `Transformer "${transformer.action}" is missing required param "${key}"`,
58
- hint: param.description
59
- });
60
- if (param.type === "select" && param.options && key in params && !param.options.includes(params[key])) ctx.errors.push({
61
- path: `${base}.params.${key}`,
62
- message: `Transformer "${transformer.action}" param "${key}" is "${params[key]}", not one of its options`,
63
- hint: `Use one of: ${param.options.join(", ")}.`,
64
- validValues: param.options
65
- });
66
- }
67
- });
68
- };
69
- //#endregion
70
- export { checkBindingSourceScope, checkBindingTarget, checkBindingTransformers };
@@ -1,35 +0,0 @@
1
- //#region src/modules/mcp/tools/shared/validator/context.ts
2
- var VAR_REF = /\{\{\s*([A-Za-z_][\w.-]*)\s*\}\}/g;
3
- var CSS_VAR = /var\(\s*--([A-Za-z_][\w-]*)\s*\)/g;
4
- var RAW_CODE_TYPES = /* @__PURE__ */ new Set([
5
- "blockJsx",
6
- "blockHtml",
7
- "custom"
8
- ]);
9
- var warnOnce = (ctx, message) => {
10
- if (!ctx.warned.has(message)) {
11
- ctx.warned.add(message);
12
- ctx.warnings.push(message);
13
- }
14
- };
15
- var checkVarRefs = (text, path, ctx) => {
16
- for (const match of text.matchAll(VAR_REF)) {
17
- const name = match[1];
18
- if (!ctx.schemaVars.has(name)) warnOnce(ctx, `Unknown variable {{${name}}} at ${path}: not a space schema variable or a page route param. Read plitzi://schema-variables, or use a route param from the page skeleton (routeParams).`);
19
- }
20
- };
21
- var checkStyleVarRefs = (text, path, ctx) => {
22
- for (const match of text.matchAll(CSS_VAR)) {
23
- const name = match[1];
24
- if (!ctx.styleVars.has(name)) {
25
- const tokens = [...ctx.styleVars];
26
- warnOnce(ctx, `Unknown style variable var(--${name}) at ${path}: not a design token in this space. ${tokens.length > 0 ? `Available tokens: ${tokens.slice(0, 30).join(", ")}${tokens.length > 30 ? ", …" : ""}.` : "Read plitzi://style-variables for the valid token names."}`);
27
- }
28
- }
29
- };
30
- var checkObservedName = (value, observed, kind, resource, path, ctx) => {
31
- if (!value || observed.size === 0 || observed.has(value)) return;
32
- warnOnce(ctx, `${kind} "${value}" at ${path} was not seen in this space. Verify against ${resource}; it may still be valid.`);
33
- };
34
- //#endregion
35
- export { RAW_CODE_TYPES, checkObservedName, checkStyleVarRefs, checkVarRefs, warnOnce };
@@ -1,39 +0,0 @@
1
- import { expandShorthand, isCssProperty, suggestCssProperty } from "../../../catalogs/cssCatalog/index.js";
2
- import { checkStyleVarRefs, checkVarRefs } from "./context.js";
3
- //#region src/modules/mcp/tools/shared/validator/css.ts
4
- var checkCss = (css, path, ctx) => {
5
- if (!css) return;
6
- const declared = {};
7
- for (const [key, value] of Object.entries(css)) if (value !== null) declared[key] = value;
8
- for (const [key, value] of Object.entries(expandShorthand(declared))) {
9
- if (!isCssProperty(key)) {
10
- const suggestion = suggestCssProperty(key);
11
- ctx.errors.push({
12
- path: `${path}.${key}`,
13
- message: `Unknown CSS property "${key}"`,
14
- hint: suggestion ? `Use the kebab-case key "${suggestion}"` : "Read plitzi://css-properties for the valid property keys"
15
- });
16
- }
17
- if (typeof value === "string") {
18
- checkStyleVarRefs(value, `${path}.${key}`, ctx);
19
- checkVarRefs(value, `${path}.${key}`, ctx);
20
- }
21
- }
22
- };
23
- var checkSlotCss = (slot, path, ctx) => {
24
- checkCss(slot.desktop, `${path}.desktop`, ctx);
25
- checkCss(slot.tablet, `${path}.tablet`, ctx);
26
- checkCss(slot.mobile, `${path}.mobile`, ctx);
27
- for (const [state, dm] of Object.entries(slot.states ?? {})) {
28
- checkCss(dm.desktop, `${path}.states.${state}.desktop`, ctx);
29
- checkCss(dm.tablet, `${path}.states.${state}.tablet`, ctx);
30
- checkCss(dm.mobile, `${path}.states.${state}.mobile`, ctx);
31
- }
32
- for (const [name, dm] of Object.entries(slot.variants ?? {})) {
33
- checkCss(dm.desktop, `${path}.variants.${name}.desktop`, ctx);
34
- checkCss(dm.tablet, `${path}.variants.${name}.tablet`, ctx);
35
- checkCss(dm.mobile, `${path}.variants.${name}.mobile`, ctx);
36
- }
37
- };
38
- //#endregion
39
- export { checkCss, checkSlotCss };
@@ -1,68 +0,0 @@
1
- import { definitionVariantNames } from "../../operations/style/translator.js";
2
- import { RAW_CODE_TYPES, checkVarRefs, warnOnce } from "./context.js";
3
- import { checkIdRef } from "./refs.js";
4
- //#region src/modules/mcp/tools/shared/validator/elements.ts
5
- var checkTypeProps = (type, props, path, ctx) => {
6
- if (!props || RAW_CODE_TYPES.has(type)) return;
7
- const meta = ctx.typeMeta.get(type);
8
- const known = meta && meta.attributes.size > 0 ? meta.attributes : ctx.typeProps.get(type);
9
- if (!known || known.size === 0) return;
10
- const strict = meta?.custom === false;
11
- for (const key of Object.keys(props)) {
12
- if (key === "subType" || known.has(key)) continue;
13
- if (strict) ctx.errors.push({
14
- path,
15
- message: `Type "${type}" has no attribute "${key}"`,
16
- hint: `Valid attributes: ${[...known].sort().join(", ")}`,
17
- validValues: [...known].sort()
18
- });
19
- else warnOnce(ctx, `Type "${type}" has no observed prop "${key}" at ${path} (known: ${[...known].sort().join(", ")}). It may still be valid — verify against plitzi://types.`);
20
- }
21
- };
22
- var checkVariantApplication = (initialState, path, ctx) => {
23
- for (const [cls, selectors] of Object.entries(initialState?.styleVariant ?? {})) {
24
- const declared = definitionVariantNames(ctx.style, cls);
25
- const batch = ctx.batchVariants.get(cls);
26
- for (const [selector, variant] of Object.entries(selectors)) {
27
- const names = Array.isArray(variant) ? variant : [variant];
28
- for (const name of names) if (!((declared?.[selector]?.includes(name) ?? false) || (batch?.has(name) ?? false))) {
29
- const avail = declared ? ` (declares: ${Object.entries(declared).map(([s, v]) => `${s}:${v.join("/")}`).join(", ")})` : "";
30
- warnOnce(ctx, `Element applies variant "${name}" on class "${cls}" (${selector}) at ${path}, but that class defines no such variant${avail}. Create it via upsertDefinition/patchDefinition "variants", or fix the name.`);
31
- }
32
- }
33
- }
34
- };
35
- var EXECUTABLE_MARKUP = /<script\b|\son[a-z]+\s*=|javascript:/i;
36
- var checkRawMarkup = (type, props, path, ctx) => {
37
- if (ctx.mode !== "widget" || !props || !RAW_CODE_TYPES.has(type)) return;
38
- for (const [key, value] of Object.entries(props)) if (typeof value === "string" && EXECUTABLE_MARKUP.test(value)) ctx.errors.push({
39
- path: `${path}.props.${key}`,
40
- message: `Executable markup in a "${type}" prop is not allowed in a widget`,
41
- hint: "A widget renders inside the host UI, so <script>, javascript: URLs and inline on* handlers are rejected. Keep the markup inert (an inline <svg> is what this type is for) and wire behaviour with upsertInteractionFlow."
42
- });
43
- };
44
- var checkElementProps = (element, path, ctx) => {
45
- checkRawMarkup(element.type, element.props, path, ctx);
46
- if (!element.props || RAW_CODE_TYPES.has(element.type)) return;
47
- for (const [key, value] of Object.entries(element.props)) if (typeof value === "string") checkVarRefs(value, `${path}.props.${key}`, ctx);
48
- checkTypeProps(element.type, element.props, path, ctx);
49
- };
50
- var checkElementInput = (element, path, ctx, seen) => {
51
- checkIdRef(element.ref, `${path}.ref`, ctx);
52
- if (seen.has(element.ref)) ctx.errors.push({
53
- path: `${path}.ref`,
54
- message: `Duplicate ref "${element.ref}" in this batch`,
55
- hint: "Use a unique ref"
56
- });
57
- seen.add(element.ref);
58
- if (!element.type) ctx.errors.push({
59
- path: `${path}.type`,
60
- message: "Element type is required",
61
- hint: "Read plitzi://types for known types"
62
- });
63
- else if (!ctx.knownTypes.has(element.type)) ctx.warnings.push(`Type "${element.type}" was not seen in this space; ensure a plugin provides it (${path}.type).`);
64
- checkElementProps(element, path, ctx);
65
- element.children?.forEach((child, i) => checkElementInput(child, `${path}.children[${i}]`, ctx, seen));
66
- };
67
- //#endregion
68
- export { checkElementInput, checkRawMarkup, checkTypeProps, checkVariantApplication };
@@ -1,246 +0,0 @@
1
- import { BUILTIN_COMPONENTS } from "../../../catalogs/builtinComponents.js";
2
- import { observedDataSources, observedInteractionActions } from "../../../catalogs/observed.js";
3
- import { buildTypeRegistry } from "../../../catalogs/registry.js";
4
- import { findElementByRef, findFolderByRef, findPageByRef, folderAncestorIds, getPageElements, pageFoldersOf, pageRefOf, resolveRef, routeParamNames } from "../../../helpers/space.js";
5
- import { MAX_OPS } from "../../operations/index.js";
6
- import { batchDeclaredFolders, batchDeclaredPages, batchDeclaredVariants, batchDeclaredVars } from "./batch.js";
7
- import { checkObservedName, checkVarRefs, warnOnce } from "./context.js";
8
- import { checkBindingSourceScope, checkBindingTarget, checkBindingTransformers } from "./bindings.js";
9
- import { checkSlotCss } from "./css.js";
10
- import { checkRef } from "./refs.js";
11
- import { checkElementInput, checkRawMarkup, checkTypeProps, checkVariantApplication } from "./elements.js";
12
- import { checkInteractionNode } from "./interactions.js";
13
- //#region src/modules/mcp/tools/shared/validator/index.ts
14
- var STYLE_CATEGORIES = [
15
- "color",
16
- "spacing",
17
- "shadow",
18
- "custom"
19
- ];
20
- var buildTypeMeta = (catalog) => {
21
- const meta = /* @__PURE__ */ new Map();
22
- for (const [type, entry] of Object.entries(catalog ?? {})) {
23
- const bindingsAllowed = entry.bindingsAllowed;
24
- meta.set(type, {
25
- attributes: new Set(entry.attributes ?? []),
26
- styleSelectors: new Set(entry.styleSelectors ?? []),
27
- custom: entry.custom ?? false,
28
- ...bindingsAllowed ? { bindingTargets: {
29
- attributes: new Set(bindingsAllowed.attributes ?? []),
30
- initialState: new Set(bindingsAllowed.initialState ?? [])
31
- } } : {}
32
- });
33
- }
34
- return meta;
35
- };
36
- /** The shared validation context, derived from a space (+ the batch's ops, for batch-declared names). Extracted so
37
- * the post-apply resource audit (auditResources) can run the same checks against the resulting draft. */
38
- var buildValidationCtx = (space, ops, mode = "space") => {
39
- const registry = buildTypeRegistry(space.schema, space.catalog);
40
- return {
41
- mode,
42
- errors: [],
43
- warnings: [],
44
- warned: /* @__PURE__ */ new Set(),
45
- knownTypes: /* @__PURE__ */ new Set([...Object.keys(registry.types), ...Object.keys(BUILTIN_COMPONENTS)]),
46
- typeProps: new Map(Object.entries(registry.types).map(([type, info]) => [type, new Set(Object.keys(info.props))])),
47
- typeMeta: buildTypeMeta(space.catalog),
48
- elementType: (ref) => (findElementByRef(space.schema, ref) ?? findPageByRef(space.schema, ref))?.definition.type,
49
- schemaVars: /* @__PURE__ */ new Set([
50
- ...space.schema.variables.map((v) => v.name),
51
- ...routeParamNames(space.schema),
52
- ...batchDeclaredVars(ops)
53
- ]),
54
- styleVars: new Set(Object.values(space.style.variables).flatMap((group) => Object.keys(group))),
55
- style: space.style,
56
- batchVariants: batchDeclaredVariants(ops),
57
- observedActions: observedInteractionActions(space.schema),
58
- observedSources: observedDataSources(space.schema)
59
- };
60
- };
61
- var validateOperations = (space, ops, mode = "space") => {
62
- const batchPages = batchDeclaredPages(ops);
63
- const batchFolders = batchDeclaredFolders(ops);
64
- const folderRefs = () => pageFoldersOf(space.schema).map((f) => f.id);
65
- const ctx = buildValidationCtx(space, ops, mode);
66
- if (ops.length > 1e3) ctx.errors.push({
67
- path: "operations",
68
- message: `Batch has ${ops.length} operations (max ${MAX_OPS})`,
69
- hint: `Split into batches of at most ${MAX_OPS}`
70
- });
71
- ops.forEach((op, i) => {
72
- const base = `operations[${i}]`;
73
- if ((op.type === "upsertElement" || op.type === "patchElement" || op.type === "deleteElement" || op.type === "moveElement" || op.type === "upsertBinding" || op.type === "patchBinding" || op.type === "deleteBinding" || op.type === "upsertInteractionFlow" || op.type === "patchInteractionNode" || op.type === "deleteInteraction") && op.pageRef) {
74
- if (!findPageByRef(space.schema, op.pageRef) && !batchPages.has(op.pageRef)) {
75
- const validRefs = getPageElements(space.schema).map(pageRefOf);
76
- ctx.errors.push({
77
- path: `${base}.pageRef`,
78
- message: `Page "${op.pageRef}" does not exist`,
79
- hint: "Use an existing page ref, or create it with upsertPage earlier in the same batch",
80
- validValues: validRefs
81
- });
82
- }
83
- }
84
- switch (op.type) {
85
- case "upsertElement":
86
- checkElementInput(op.element, `${base}.element`, ctx, /* @__PURE__ */ new Set());
87
- checkVariantApplication(op.element.initialState, `${base}.element.initialState`, ctx);
88
- break;
89
- case "patchElement": {
90
- checkRef(op.ref, `${base}.ref`, ctx);
91
- const page = findPageByRef(space.schema, op.pageRef);
92
- const target = page ? resolveRef(space.schema, page, op.ref) : void 0;
93
- if (op.props) {
94
- for (const [key, value] of Object.entries(op.props)) if (typeof value === "string") checkVarRefs(value, `${base}.props.${key}`, ctx);
95
- if (target && target.id !== page?.id) {
96
- checkRawMarkup(target.definition.type, op.props, base, ctx);
97
- checkTypeProps(target.definition.type, op.props, base, ctx);
98
- }
99
- }
100
- checkVariantApplication(op.initialState, `${base}.initialState`, ctx);
101
- break;
102
- }
103
- case "upsertDefinitions": {
104
- const entries = Object.entries(op.definitions);
105
- if (entries.length === 0) ctx.errors.push({
106
- path: `${base}.definitions`,
107
- message: "This operation declares no classes",
108
- hint: "Key each class by its name: { \"definitions\": { \"card\": { \"desktop\": { … } } } }"
109
- });
110
- for (const [ref, { slots, ...slot }] of entries) {
111
- const entry = `${base}.definitions.${ref}`;
112
- checkRef(ref, entry, ctx);
113
- checkSlotCss(slot, entry, ctx);
114
- for (const [slotName, slotDef] of Object.entries(slots ?? {})) checkSlotCss(slotDef, `${entry}.slots.${slotName}`, ctx);
115
- }
116
- break;
117
- }
118
- case "upsertDefinition":
119
- case "patchDefinition": {
120
- const { type, ref, slots, ...slot } = op;
121
- checkRef(ref, `${base}.ref`, ctx);
122
- checkSlotCss(slot, base, ctx);
123
- for (const [slotName, slotDef] of Object.entries(slots ?? {})) checkSlotCss(slotDef, `${base}.slots.${slotName}`, ctx);
124
- break;
125
- }
126
- case "upsertGlobalStyle":
127
- case "patchGlobalStyle": {
128
- const { type, componentType, slots, ...slot } = op;
129
- checkRef(componentType, `${base}.componentType`, ctx);
130
- checkSlotCss(slot, base, ctx);
131
- for (const [slotName, slotDef] of Object.entries(slots ?? {})) checkSlotCss(slotDef, `${base}.slots.${slotName}`, ctx);
132
- break;
133
- }
134
- case "deleteGlobalStyle":
135
- checkRef(op.componentType, `${base}.componentType`, ctx);
136
- break;
137
- case "upsertPage":
138
- checkRef(op.ref, `${base}.ref`, ctx);
139
- if (op.slug === void 0 && !findPageByRef(space.schema, op.ref)) warnOnce(ctx, `Page "${op.ref}" is being created without a slug. Set a slug for a clean, stable URL (good practice); the page ref is used as a fallback.`);
140
- if (typeof op.folder === "string" && op.folder !== "") {
141
- if (!findFolderByRef(space.schema, op.folder) && !batchFolders.has(op.folder)) ctx.errors.push({
142
- path: `${base}.folder`,
143
- message: `Folder "${op.folder}" does not exist`,
144
- hint: "Create it with upsertFolder earlier in the same batch, or read plitzi://folders for valid refs",
145
- validValues: folderRefs()
146
- });
147
- }
148
- break;
149
- case "upsertFolder":
150
- checkRef(op.ref, `${base}.ref`, ctx);
151
- if (typeof op.parentId === "string") {
152
- checkRef(op.parentId, `${base}.parentId`, ctx);
153
- const parent = findFolderByRef(space.schema, op.parentId);
154
- if (!parent && !batchFolders.has(op.parentId)) ctx.errors.push({
155
- path: `${base}.parentId`,
156
- message: `Parent folder "${op.parentId}" does not exist`,
157
- hint: "Create the parent with upsertFolder first, or read plitzi://folders for valid refs",
158
- validValues: folderRefs()
159
- });
160
- const selfId = findFolderByRef(space.schema, op.ref)?.id ?? op.ref;
161
- if ((parent?.id ?? op.parentId) === selfId || parent && folderAncestorIds(pageFoldersOf(space.schema), parent.id).includes(selfId)) ctx.errors.push({
162
- path: `${base}.parentId`,
163
- message: `Folder "${op.ref}" cannot be nested under itself or one of its descendants`,
164
- hint: "Choose a parent that is not this folder or below it"
165
- });
166
- }
167
- break;
168
- case "deleteDefinition":
169
- case "deleteFolder":
170
- case "deletePage":
171
- case "upsertVariable":
172
- case "deleteVariable":
173
- checkRef("ref" in op ? op.ref : op.name, `${base}.${"ref" in op ? "ref" : "name"}`, ctx);
174
- break;
175
- case "upsertStyleVariable":
176
- case "deleteStyleVariable":
177
- if (!STYLE_CATEGORIES.includes(op.category)) ctx.errors.push({
178
- path: `${base}.category`,
179
- message: `Unknown style-variable category "${op.category}"`,
180
- hint: "Use one of the valid categories",
181
- validValues: STYLE_CATEGORIES
182
- });
183
- break;
184
- case "upsertBinding":
185
- checkRef(op.ref, `${base}.ref`, ctx);
186
- checkObservedName(op.binding.source, ctx.observedSources, "Data source", "plitzi://data-sources", `${base}.binding.source`, ctx);
187
- checkBindingTarget(op.ref, op.category, op.binding.to, `${base}.binding.to`, ctx);
188
- checkBindingSourceScope(space, ctx, op.ref, op.binding.source, `${base}.binding.source`);
189
- checkBindingTransformers(op.binding.transformers, `${base}.binding.transformers`, ctx);
190
- break;
191
- case "patchBinding":
192
- checkRef(op.ref, `${base}.ref`, ctx);
193
- checkObservedName(op.source, ctx.observedSources, "Data source", "plitzi://data-sources", `${base}.source`, ctx);
194
- checkBindingTarget(op.ref, op.category, op.to, `${base}.to`, ctx);
195
- if (op.source !== void 0) checkBindingSourceScope(space, ctx, op.ref, op.source, `${base}.source`);
196
- checkBindingTransformers(op.transformers, `${base}.transformers`, ctx);
197
- break;
198
- case "deleteBinding":
199
- checkRef(op.ref, `${base}.ref`, ctx);
200
- break;
201
- case "upsertInteractionFlow":
202
- checkRef(op.ref, `${base}.ref`, ctx);
203
- if (op.nodes[0] && op.nodes[0].nodeType !== "trigger") ctx.errors.push({
204
- path: `${base}.nodes[0].nodeType`,
205
- message: "The first node of a flow must be a trigger",
206
- hint: "Put the trigger first; the callbacks/utilities that run after it follow in order"
207
- });
208
- op.nodes.forEach((node, n) => checkInteractionNode(node, `${base}.nodes[${n}]`, ctx, op.ref));
209
- break;
210
- case "patchInteractionNode": {
211
- checkRef(op.ref, `${base}.ref`, ctx);
212
- const existing = findElementByRef(space.schema, op.ref)?.definition.interactions?.[op.nodeId];
213
- if (existing) {
214
- const merged = {
215
- id: existing.id,
216
- title: op.title ?? existing.title,
217
- nodeType: existing.type,
218
- action: op.action ?? existing.action,
219
- params: {
220
- ...existing.params,
221
- ...op.params ?? {}
222
- },
223
- enabled: op.enabled ?? existing.enabled,
224
- elementId: op.elementId ?? existing.elementId ?? void 0
225
- };
226
- checkInteractionNode(merged, base, ctx, op.ref);
227
- } else checkObservedName(op.action, ctx.observedActions, "Interaction action", "plitzi://interactions", `${base}.action`, ctx);
228
- break;
229
- }
230
- case "deleteInteraction":
231
- checkRef(op.ref, `${base}.ref`, ctx);
232
- if (Boolean(op.flowId) === Boolean(op.nodeId)) ctx.errors.push({
233
- path: `${base}.nodeId`,
234
- message: "Provide exactly one of flowId or nodeId",
235
- hint: "flowId removes a whole flow; nodeId removes a single step"
236
- });
237
- }
238
- });
239
- return {
240
- valid: ctx.errors.length === 0,
241
- errors: ctx.errors,
242
- warnings: ctx.warnings
243
- };
244
- };
245
- //#endregion
246
- export { buildValidationCtx, validateOperations };
@@ -1,103 +0,0 @@
1
- import { hiddenParams, invalidParams, missingRequiredParams, reconcileParams } from "../../../catalogs/paramSpec.js";
2
- import { getGlobalCallback } from "../../../catalogs/builtinCallbacks.js";
3
- import { getElementCallback } from "../../../catalogs/builtinElementCallbacks.js";
4
- import { getUtility } from "../../../catalogs/builtinUtilities.js";
5
- import { NULLISH_ELEMENT_IDS } from "../../../helpers/interactions.js";
6
- import { checkObservedName, warnOnce } from "./context.js";
7
- //#region src/modules/mcp/tools/shared/validator/interactions.ts
8
- var describeType = (type) => {
9
- switch (type) {
10
- case "boolean": return "a boolean";
11
- case "number": return "a number";
12
- case "select": return "one of its allowed values";
13
- case "scalar": return "a string, number or boolean";
14
- default: return "a string";
15
- }
16
- };
17
- var checkParams = (label, action, params, spec, base, ctx) => {
18
- const unknown = Object.keys(params).filter((key) => !(key in spec));
19
- if (unknown.length > 0) warnOnce(ctx, `${label} "${action}" at ${base} got unknown param(s) ${unknown.map((k) => `"${k}"`).join(", ")} — these are dropped on apply. Valid params: ${Object.keys(spec).join(", ")}.`);
20
- const effective = reconcileParams(params, spec, true);
21
- const missing = missingRequiredParams(params, effective, spec);
22
- if (missing.length > 0) warnOnce(ctx, `${label} "${action}" at ${base} is missing required param(s) ${missing.map((k) => `"${k}"`).join(", ")} — the step is malformed without them (see plitzi://interactions for what each does).`);
23
- const hidden = hiddenParams(params, effective, spec);
24
- if (hidden.length > 0) warnOnce(ctx, `${label} "${action}" at ${base}: param(s) ${hidden.map((k) => `"${k}"`).join(", ")} are ignored under the current params (they only apply when a companion param is set — see plitzi://interactions). Set the companion param or drop them.`);
25
- for (const { key, expected, got, options } of invalidParams(params, effective, spec)) {
26
- const detail = options ? ` Allowed values: ${options.join(", ")}.` : "";
27
- ctx.errors.push({
28
- path: `${base}.params.${key}`,
29
- message: `${label} "${action}" at ${base}: param "${key}" must be ${describeType(expected)} but got ${got}.${detail}`,
30
- hint: `Set "${key}" to ${describeType(expected)}.`,
31
- ...options ? { validValues: options } : {}
32
- });
33
- }
34
- };
35
- var checkGlobalCallback = (node, base, ctx) => {
36
- const builtin = getGlobalCallback(node.action);
37
- if (!builtin) {
38
- if (getUtility(node.action)) warnOnce(ctx, `"${node.action}" at ${base} is a utility, not a global callback — use nodeType "utility".`);
39
- else if (getElementCallback(node.action)) warnOnce(ctx, `"${node.action}" at ${base} is an element callback, not a global callback — use nodeType "callback" and set elementId to the element it acts on.`);
40
- return;
41
- }
42
- if (node.elementId !== void 0 && node.elementId !== builtin.source) warnOnce(ctx, `Global callback "${node.action}" at ${base} is registered on "${builtin.source}", not on "${node.elementId}". Omit elementId (the MCP sets "${builtin.source}") or set it to "${builtin.source}".`);
43
- if (node.params && builtin.strictParams) checkParams("Global callback", node.action, node.params, builtin.params, base, ctx);
44
- };
45
- var checkSetStateKey = (node, base, ctx, hostRef) => {
46
- const key = node.params?.key;
47
- if (typeof key !== "string" || key === "") return;
48
- const targetRef = typeof node.elementId === "string" && node.elementId !== "" ? node.elementId : hostRef;
49
- const type = ctx.elementType(targetRef);
50
- const meta = type ? ctx.typeMeta.get(type) : void 0;
51
- if (!meta) return;
52
- const state = node.params?.category === "state";
53
- const validKeys = state ? /* @__PURE__ */ new Set(["visibility", ...[...meta.styleSelectors].map((selector) => `styleSelectors.${selector}`)]) : meta.attributes;
54
- if (validKeys.size === 0 || validKeys.has(key)) return;
55
- const kind = state ? "state" : "attribute";
56
- const valid = [...validKeys].sort();
57
- const detail = `Element setState at ${base} sets ${kind} "${key}" on type "${type}", which has no such ${kind} key`;
58
- if (!meta.custom) ctx.errors.push({
59
- path: base,
60
- message: detail,
61
- hint: `Use one of: ${valid.join(", ")}`,
62
- validValues: valid
63
- });
64
- else warnOnce(ctx, `${detail} (${valid.join(", ")}). It may still be valid — verify against plitzi://types.`);
65
- };
66
- var checkElementCallback = (node, base, ctx, hostRef) => {
67
- const builtin = getElementCallback(node.action);
68
- if (!builtin) {
69
- if (getUtility(node.action)) warnOnce(ctx, `"${node.action}" at ${base} is a utility, not an element callback — use nodeType "utility".`);
70
- else {
71
- const global = getGlobalCallback(node.action);
72
- if (global) warnOnce(ctx, `"${node.action}" at ${base} is a global callback (source "${global.source}"), not an element callback — use nodeType "globalCallback" and omit elementId.`);
73
- }
74
- return;
75
- }
76
- if (node.params && builtin.strictParams) checkParams("Element callback", node.action, node.params, builtin.params, base, ctx);
77
- if (node.action === "setState") checkSetStateKey(node, base, ctx, hostRef);
78
- };
79
- var checkUtility = (node, base, ctx) => {
80
- if (node.elementId && !NULLISH_ELEMENT_IDS.has(node.elementId)) warnOnce(ctx, `Utility "${node.action}" at ${base} has elementId "${node.elementId}" — a utility takes NO element (it is resolved by its action alone). Omit elementId; the MCP stores null. Pointing it at an element is a no-op.`);
81
- const utility = getUtility(node.action);
82
- if (!utility) {
83
- if (getGlobalCallback(node.action)) warnOnce(ctx, `"${node.action}" at ${base} is a global callback, not a utility — use nodeType "globalCallback".`);
84
- else if (getElementCallback(node.action)) warnOnce(ctx, `"${node.action}" at ${base} is an element callback, not a utility — use nodeType "callback".`);
85
- return;
86
- }
87
- if (node.params && utility.strictParams) checkParams("Utility", node.action, node.params, utility.params, base, ctx);
88
- };
89
- var checkInteractionNode = (node, base, ctx, hostRef) => {
90
- checkObservedName(node.action, ctx.observedActions, "Interaction action", "plitzi://interactions", `${base}.action`, ctx);
91
- if (node.elementId === "undefined" || node.elementId === "null") warnOnce(ctx, `Node "${node.action}" at ${base} has the literal string elementId "${node.elementId}" — a stringified nullish value. Re-save the step: elementId must be a real element ref, a source module, or empty for a utility.`);
92
- switch (node.nodeType) {
93
- case "globalCallback":
94
- checkGlobalCallback(node, base, ctx);
95
- break;
96
- case "callback":
97
- checkElementCallback(node, base, ctx, hostRef);
98
- break;
99
- case "utility": checkUtility(node, base, ctx);
100
- }
101
- };
102
- //#endregion
103
- export { checkInteractionNode };
@@ -1,28 +0,0 @@
1
- import { isValidIdRef } from "@plitzi/sdk-schema/helpers/idRef";
2
- //#region src/modules/mcp/tools/shared/validator/refs.ts
3
- var REF_RE = /^[a-zA-Z0-9._-]+$/;
4
- var checkRef = (ref, path, ctx) => {
5
- if (!ref || ref.trim().length === 0) {
6
- ctx.errors.push({
7
- path,
8
- message: "Ref must not be empty",
9
- hint: "Use a semantic name like \"hero.title\""
10
- });
11
- return;
12
- }
13
- if (!REF_RE.test(ref)) ctx.errors.push({
14
- path,
15
- message: `Ref "${ref}" has invalid characters`,
16
- hint: "Allowed characters: letters, numbers, dot, hyphen, underscore"
17
- });
18
- };
19
- var checkIdRef = (ref, path, ctx) => {
20
- checkRef(ref, path, ctx);
21
- if (ref && REF_RE.test(ref) && !isValidIdRef(ref)) ctx.errors.push({
22
- path,
23
- message: `Ref "${ref}" is not a valid idRef`,
24
- hint: "Use only letters, numbers, hyphens and underscores (e.g. \"hero-cta\" or \"my_list_card\"). This ref becomes the element idRef, which the runtime embeds in source names like `apiContainer_<idRef>.field` and in interaction targets — a dot would break those paths."
25
- });
26
- };
27
- //#endregion
28
- export { REF_RE, checkIdRef, checkRef };
@@ -1,47 +0,0 @@
1
- import { cloneSpace } from "../helpers/space.js";
2
- import { environment, operations } from "./operations/index.js";
3
- import { applyOperations } from "./apply/dispatch.js";
4
- import { expandOperations } from "./shared/expandOperations.js";
5
- import { defineTool } from "./shared/tool.js";
6
- import { validateOperations } from "./shared/validator/index.js";
7
- import { auditResources } from "./shared/validator/audit.js";
8
- //#region src/modules/mcp/tools/validate.ts
9
- var validateShape = {
10
- environment,
11
- operations
12
- };
13
- var validate = (input, space) => {
14
- const expansion = expandOperations(input.operations);
15
- if (expansion.errors.length > 0) return {
16
- valid: false,
17
- errors: expansion.errors,
18
- warnings: []
19
- };
20
- const ops = expansion.operations;
21
- const validation = validateOperations(space, ops);
22
- if (!validation.valid) return validation;
23
- const env = input.environment ?? "main";
24
- const draft = cloneSpace(space);
25
- const outcome = applyOperations(draft, env, ops);
26
- if (outcome.errors.length > 0) return {
27
- valid: false,
28
- errors: outcome.errors,
29
- warnings: validation.warnings
30
- };
31
- const audit = auditResources(draft, ops);
32
- return {
33
- valid: audit.errors.length === 0,
34
- errors: audit.errors,
35
- warnings: [...validation.warnings, ...audit.warnings]
36
- };
37
- };
38
- var validateTool = defineTool({
39
- name: "plitzi_validate",
40
- title: "Validate",
41
- description: "Check a batch of operations without executing them. Returns teachable errors and warnings — including any PRE-EXISTING malformation in a resource the batch touches (which blocks a save until fixed).",
42
- inputShape: validateShape,
43
- access: "read",
44
- run: (input, ctx) => validate(input, ctx.space)
45
- });
46
- //#endregion
47
- export { validate, validateShape, validateTool };