@salsita-ai/sdk 0.50.0-develop.eb204e0da4 → 0.50.0-develop.f03b563886

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 (995) hide show
  1. package/README.md +20 -12
  2. package/dist/admin/create-admin-pages-from-spec.d.ts +1 -1
  3. package/dist/application-spec/errors/diagnostic-codes.d.ts +6 -0
  4. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  5. package/dist/application-spec/errors/diagnostic-messages.d.ts +6 -0
  6. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  7. package/dist/application-spec/generate-application/code/common/index.d.ts +1 -0
  8. package/dist/application-spec/generate-application/code/common/index.js +1 -1
  9. package/dist/application-spec/generate-application/code/common/project-module-list.d.ts +8 -0
  10. package/dist/application-spec/generate-application/code/common/project-module-list.js +3 -0
  11. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  12. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  13. package/dist/application-spec/generate-application/code/templates/admin-domain-code.d.ts +1 -2
  14. package/dist/application-spec/generate-application/code/templates/admin-domain-code.js +6 -14
  15. package/dist/application-spec/generate-application/code/templates/admin-frontend-code.d.ts +1 -2
  16. package/dist/application-spec/generate-application/code/templates/admin-frontend-code.js +4 -4
  17. package/dist/application-spec/generate-application/code/templates/application-types.js +6 -6
  18. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.d.ts +2 -2
  19. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.js +7 -13
  20. package/dist/application-spec/generate-application/code/templates/configurator-frontend-code.d.ts +1 -2
  21. package/dist/application-spec/generate-application/code/templates/configurator-frontend-code.js +7 -9
  22. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.d.ts +2 -2
  23. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.js +1 -1
  24. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.d.ts +3 -1
  25. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +69 -65
  26. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.d.ts +1 -1
  27. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.js +1 -1
  28. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +3 -0
  29. package/dist/application-spec/generate-application/code/templates/domain-spec.js +7 -7
  30. package/dist/application-spec/generate-application/code/templates/domain.js +4 -4
  31. package/dist/application-spec/generate-application/code/templates/env-example.js +4 -0
  32. package/dist/application-spec/generate-application/code/templates/global-definition/generate-action-types.d.ts +11 -0
  33. package/dist/application-spec/generate-application/code/templates/global-definition/generate-action-types.js +8 -0
  34. package/dist/application-spec/generate-application/code/templates/global-definition/index.d.ts +1 -0
  35. package/dist/application-spec/generate-application/code/templates/global-definition/index.js +1 -1
  36. package/dist/application-spec/generate-application/code/templates/globals.js +1 -0
  37. package/dist/application-spec/generate-application/code/templates/index.d.ts +1 -0
  38. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  39. package/dist/application-spec/generate-application/code/templates/skills/agents-md.js +1 -1
  40. package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.js +1 -1
  41. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +95 -41
  42. package/dist/application-spec/generate-application/code/templates/skills/phoenix-feedback-skill.js +39 -16
  43. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +5 -3
  44. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  45. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.d.ts +1 -0
  46. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.js +6 -0
  47. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +32 -3
  48. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +19 -5
  49. package/dist/application-spec/generate-application/code/templates/webhook-builders.js +9 -4
  50. package/dist/application-spec/generate-application/code/templates/webhooks-config.js +2 -2
  51. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +2 -0
  52. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +1 -1
  53. package/dist/application-spec/generate-application/runtime/sections/actions-runtime.d.ts +14 -0
  54. package/dist/application-spec/generate-application/runtime/sections/actions-runtime.js +1 -0
  55. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.d.ts +4 -3
  56. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.js +1 -1
  57. package/dist/application-spec/generate-application/runtime/sections/index.d.ts +1 -0
  58. package/dist/application-spec/generate-application/runtime/sections/index.js +1 -1
  59. package/dist/application-spec/parse-application-files/categorize/categorize-files.d.ts +3 -1
  60. package/dist/application-spec/parse-application-files/categorize/categorize-files.js +1 -1
  61. package/dist/application-spec/parse-application-files/merge/index.d.ts +1 -0
  62. package/dist/application-spec/parse-application-files/merge/index.js +1 -1
  63. package/dist/application-spec/parse-application-files/merge/merged-actions.d.ts +11 -0
  64. package/dist/application-spec/parse-application-files/merge/merged-actions.js +1 -0
  65. package/dist/application-spec/parse-application-files/merge/merged-spec.d.ts +2 -0
  66. package/dist/application-spec/parse-application-files/merge/merged-spec.js +1 -1
  67. package/dist/application-spec/parse-application-files/raw-spec/index.d.ts +1 -0
  68. package/dist/application-spec/parse-application-files/raw-spec/index.js +1 -1
  69. package/dist/application-spec/parse-application-files/raw-spec/raw-actions.d.ts +18 -0
  70. package/dist/application-spec/parse-application-files/raw-spec/raw-actions.js +1 -0
  71. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +14 -2
  72. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  73. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.d.ts +2 -0
  74. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.js +1 -1
  75. package/dist/application-spec/parse-application-files/resolve/resolve-import-modules.js +1 -1
  76. package/dist/application-spec/parse-application-files/spec/application/application-spec.js +1 -1
  77. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.d.ts +4 -2
  78. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  79. package/dist/application-spec/parse-application-files/spec/common/index.d.ts +1 -0
  80. package/dist/application-spec/parse-application-files/spec/common/index.js +1 -1
  81. package/dist/application-spec/parse-application-files/spec/common/schema-ref-resolver.d.ts +23 -0
  82. package/dist/application-spec/parse-application-files/spec/common/schema-ref-resolver.js +1 -0
  83. package/dist/application-spec/parse-application-files/spec/model/names/action-name.d.ts +10 -0
  84. package/dist/application-spec/parse-application-files/spec/model/names/action-name.js +1 -0
  85. package/dist/application-spec/parse-application-files/spec/model/names/index.d.ts +1 -0
  86. package/dist/application-spec/parse-application-files/spec/model/names/index.js +1 -1
  87. package/dist/application-spec/parse-application-files/spec/sections/actions.d.ts +35 -0
  88. package/dist/application-spec/parse-application-files/spec/sections/actions.js +1 -0
  89. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.d.ts +5 -21
  90. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.js +1 -1
  91. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.d.ts +14 -39
  92. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  93. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-server-settings.d.ts +2 -2
  94. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant.d.ts +5 -19
  95. package/dist/application-spec/parse-application-files/spec/sections/index.d.ts +1 -0
  96. package/dist/application-spec/parse-application-files/spec/sections/index.js +1 -1
  97. package/dist/client/authorized-client.d.ts +3 -1
  98. package/dist/client/authorized-client.js +1 -1
  99. package/dist/client/contract.d.ts +34 -0
  100. package/dist/client/contract.js +1 -1
  101. package/dist/client/index.d.ts +2 -2
  102. package/dist/client/index.js +1 -1
  103. package/dist/client/local-authorized-client.d.ts +3 -1
  104. package/dist/client/local-authorized-client.js +1 -1
  105. package/dist/client/memory-authorized-client.d.ts +3 -1
  106. package/dist/client/memory-authorized-client.js +1 -1
  107. package/dist/client/phoenix-api.d.ts +271 -30
  108. package/dist/configurator/application-runtime/extensions/configurator-extension-systems.d.ts +2 -1
  109. package/dist/configurator/application-runtime/extensions/configurator-extension-systems.js +1 -1
  110. package/dist/configurator/application-runtime/extensions/selectors.d.ts +2 -1
  111. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  112. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +267 -0
  113. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -0
  114. package/dist/configurator/{assistant → application-runtime/extensions/systems/assistant-system}/browser-details.d.ts +1 -1
  115. package/dist/configurator/application-runtime/extensions/systems/assistant-system/browser-details.js +1 -0
  116. package/dist/configurator/application-runtime/extensions/systems/assistant-system/change-recorder.d.ts +85 -0
  117. package/dist/configurator/application-runtime/extensions/systems/assistant-system/change-recorder.js +1 -0
  118. package/dist/configurator/{assistant → application-runtime/extensions/systems/assistant-system}/graphql-tools.d.ts +20 -16
  119. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -0
  120. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.d.ts +4 -0
  121. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  122. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +16 -1
  123. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  124. package/dist/configurator/application-runtime/extensions/systems/graphql-system/side-effects.d.ts +9 -0
  125. package/dist/configurator/application-runtime/extensions/systems/graphql-system/side-effects.js +1 -0
  126. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -0
  127. package/dist/configurator/application-runtime/extensions/systems/index.js +1 -1
  128. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.d.ts +2 -0
  129. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  130. package/dist/configurator/common/frontend-analytics.d.ts +21 -21
  131. package/dist/configurator/index.d.ts +0 -1
  132. package/dist/configurator/index.js +1 -1
  133. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  134. package/dist/configurator/scene/scene-analytics/scene-analytics.d.ts +2 -2
  135. package/dist/configurator/ui/assistant/AssistantChips.d.ts +11 -0
  136. package/dist/configurator/ui/assistant/AssistantChips.js +1 -0
  137. package/dist/configurator/ui/assistant/AssistantComposer.d.ts +7 -0
  138. package/dist/configurator/ui/assistant/AssistantComposer.js +1 -0
  139. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +7 -0
  140. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -0
  141. package/dist/configurator/ui/assistant/AssistantPanel.d.ts +11 -0
  142. package/dist/configurator/ui/assistant/AssistantPanel.js +1 -0
  143. package/dist/configurator/ui/assistant/AssistantThread.d.ts +10 -0
  144. package/dist/configurator/ui/assistant/AssistantThread.js +1 -0
  145. package/dist/configurator/ui/assistant/assistant-failure.d.ts +18 -0
  146. package/dist/configurator/ui/assistant/assistant-failure.js +1 -0
  147. package/dist/configurator/ui/assistant/index.d.ts +2 -0
  148. package/dist/configurator/ui/assistant/index.js +1 -0
  149. package/dist/configurator/ui/assistant/streamed-markdown.d.ts +6 -0
  150. package/dist/configurator/ui/assistant/streamed-markdown.js +2 -0
  151. package/dist/configurator/ui/assistant/theme.d.ts +2 -0
  152. package/dist/configurator/ui/assistant/theme.js +1 -0
  153. package/dist/configurator/ui/assistant/thread-items.d.ts +48 -0
  154. package/dist/configurator/ui/assistant/thread-items.js +1 -0
  155. package/dist/configurator/ui/assistant/tool-chip.d.ts +44 -0
  156. package/dist/configurator/ui/assistant/tool-chip.js +1 -0
  157. package/dist/configurator/ui/assistant/use-follow-stream.d.ts +17 -0
  158. package/dist/configurator/ui/assistant/use-follow-stream.js +1 -0
  159. package/dist/configurator/ui/assistant/use-is-assistant-panel-open.d.ts +5 -0
  160. package/dist/configurator/ui/assistant/use-is-assistant-panel-open.js +1 -0
  161. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -5
  162. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.d.ts +2 -0
  163. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +4 -4
  164. package/dist/configurator/ui/legacy/mobile-controls/MobileControls.d.ts +1 -1
  165. package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.d.ts +10 -0
  166. package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.js +1 -0
  167. package/dist/configurator/ui/phoenix-layout-elements/index.d.ts +1 -0
  168. package/dist/configurator/ui/phoenix-layout-elements/index.js +1 -1
  169. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +84 -98
  170. package/dist/docs/complex-use-cases/navigation-reset-selection.mdx +18 -12
  171. package/dist/docs/index.json +12 -2
  172. package/dist/docs/layouts/custom-price.mdx +14 -16
  173. package/dist/docs/layouts/sidebar/tabs.mdx +24 -21
  174. package/dist/docs/layouts/toolbar.mdx +6 -0
  175. package/dist/docs/other-features/domain-actions.mdx +418 -0
  176. package/dist/docs/other-features/side-effects.mdx +68 -34
  177. package/dist/docs/other-features/transformers.mdx +1 -1
  178. package/dist/docs/phoenix/admin.mdx +11 -26
  179. package/dist/docs/phoenix/best-practices.mdx +1 -0
  180. package/dist/docs/phoenix/deployments.mdx +1 -1
  181. package/dist/docs/phoenix/expression-context.mdx +11 -3
  182. package/dist/docs/phoenix/finalization.mdx +1 -1
  183. package/dist/docs/phoenix/integration/headless-mode-external.mdx +5 -5
  184. package/dist/docs/phoenix/integration/widget-mode-external.mdx +5 -5
  185. package/dist/docs/phoenix/localization.mdx +3 -22
  186. package/dist/docs/phoenix/phoenix-cli.mdx +162 -40
  187. package/dist/docs/phoenix/project-structure.mdx +13 -3
  188. package/dist/docs/phoenix/sdk-builder-workflow.mdx +14 -12
  189. package/dist/docs/recipes-and-delete/recipe-hierarchy-selection.mdx +15 -13
  190. package/dist/docs/relations/hierarchy.mdx +13 -2
  191. package/dist/docs/ux-guidelines/choosing-a-control.mdx +11 -0
  192. package/dist/domain/admin-domain/__generated/enhanced-model.d.ts +1 -2
  193. package/dist/domain/admin-domain/__generated/model/versions/v1.d.ts +1 -1
  194. package/dist/domain/admin-domain/__generated/model/versions/v2.d.ts +1 -1
  195. package/dist/domain/admin-domain/__generated/model/versions/v3.d.ts +1 -1
  196. package/dist/domain/admin-domain/__generated/model/versions/v4.d.ts +1 -1
  197. package/dist/domain/admin-domain/__generated/model/versions/v5.d.ts +1 -1
  198. package/dist/domain/admin-domain/__generated/model/versions/v6.d.ts +2 -2
  199. package/dist/domain/admin-domain/__generated/model/versions/v6.js +1 -1
  200. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +10 -13
  201. package/dist/domain/admin-domain/implementation/common-admin-migrations.d.ts +1 -1
  202. package/dist/domain/admin-domain/index.d.ts +9 -5
  203. package/dist/domain/admin-domain/index.js +1 -1
  204. package/dist/domain/application/admin-page-factories.d.ts +1 -2
  205. package/dist/domain/application/application-config.d.ts +24 -92
  206. package/dist/domain/application/assistant/assistant-manifest.d.ts +63 -0
  207. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +95 -0
  208. package/dist/domain/application/assistant/assistant-value-type.d.ts +9 -0
  209. package/dist/domain/application/assistant/assistant-value-type.js +1 -0
  210. package/dist/domain/application/assistant/build-assistant-manifest.d.ts +4 -0
  211. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -0
  212. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +3 -0
  213. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -0
  214. package/dist/domain/application/assistant/index.d.ts +4 -0
  215. package/dist/domain/application/assistant/index.js +1 -0
  216. package/dist/domain/application/assistant-field-options.d.ts +2 -3
  217. package/dist/domain/application/assistant-mutations.d.ts +16 -17
  218. package/dist/domain/application/assistant-mutations.js +1 -1
  219. package/dist/domain/application/assistant-recipe-groups.d.ts +2 -6
  220. package/dist/domain/application/configurator-builder.d.ts +33 -18
  221. package/dist/domain/application/configurator-builder.js +1 -1
  222. package/dist/domain/application/element-registration.d.ts +5 -0
  223. package/dist/domain/application/element-registration.js +1 -1
  224. package/dist/domain/application/handler-registration.d.ts +5 -0
  225. package/dist/domain/application/handler-registration.js +1 -1
  226. package/dist/domain/application/index.d.ts +6 -5
  227. package/dist/domain/application/index.js +1 -1
  228. package/dist/domain/application/published-data/build-legend-data.d.ts +1 -1
  229. package/dist/domain/application/published-data/create-finalize-admin-domain.d.ts +1 -2
  230. package/dist/domain/application/published-data/format-field-type.d.ts +1 -1
  231. package/dist/domain/application/published-data/map-data-to-sheet.d.ts +1 -1
  232. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +2 -2
  233. package/dist/domain/application/published-data/map-published-data.d.ts +1 -2
  234. package/dist/domain/application/published-data/validate-sheet-data.d.ts +1 -1
  235. package/dist/domain/application/resolve-imported-transformers.d.ts +12 -2
  236. package/dist/domain/application/resolve-imported-transformers.js +1 -1
  237. package/dist/domain/available-system-components.js +1 -1
  238. package/dist/domain/core/action/action-factory.d.ts +11 -0
  239. package/dist/domain/core/action/action-factory.js +1 -0
  240. package/dist/domain/core/action/action.d.ts +71 -0
  241. package/dist/domain/core/action/index.d.ts +2 -0
  242. package/dist/domain/core/action/index.js +1 -0
  243. package/dist/domain/{components → core/component}/component-reader-types.d.ts +1 -2
  244. package/dist/domain/{components → core/component}/debug-state-component.d.ts +1 -1
  245. package/dist/domain/core/component/debug-state-component.js +1 -0
  246. package/dist/domain/{components → core/component}/domain-component-optic.d.ts +36 -39
  247. package/dist/domain/{components → core/component}/domain-component-optic.js +2 -2
  248. package/dist/domain/{components → core/component}/drag-state-component.d.ts +1 -1
  249. package/dist/domain/core/component/drag-state-component.js +1 -0
  250. package/dist/domain/{components → core/component}/export-state-component.d.ts +1 -1
  251. package/dist/domain/core/component/export-state-component.js +1 -0
  252. package/dist/domain/{components → core/component}/fullscreen-state-component.d.ts +1 -1
  253. package/dist/domain/core/component/fullscreen-state-component.js +1 -0
  254. package/dist/domain/{components → core/component}/group-components-by-entity-id-and-name.d.ts +1 -2
  255. package/dist/domain/core/component/group-components-by-entity-id-and-name.js +1 -0
  256. package/dist/domain/{components → core/component}/hover-state-component.d.ts +1 -1
  257. package/dist/domain/core/component/hover-state-component.js +1 -0
  258. package/dist/domain/core/component/index.d.ts +18 -0
  259. package/dist/domain/core/component/index.js +1 -0
  260. package/dist/domain/{components → core/component}/legacy-filter.d.ts +2 -2
  261. package/dist/domain/{components → core/component}/navigation-state-component.d.ts +1 -1
  262. package/dist/domain/core/component/navigation-state-component.js +1 -0
  263. package/dist/domain/{components → core/component}/selection-state-component.d.ts +1 -1
  264. package/dist/domain/core/component/selection-state-component.js +1 -0
  265. package/dist/domain/{components → core/component}/system-component-builder.d.ts +1 -2
  266. package/dist/domain/core/component/system-component-builder.js +1 -0
  267. package/dist/domain/{components → core/component}/system-component-filter.d.ts +19 -19
  268. package/dist/domain/core/component/system-virtual-entity.js +1 -0
  269. package/dist/domain/{components → core/component}/tool-state-component.d.ts +1 -1
  270. package/dist/domain/core/component/tool-state-component.js +1 -0
  271. package/dist/domain/{components → core/component}/updates.d.ts +17 -2
  272. package/dist/domain/{components → core/component}/view-state-component.d.ts +1 -1
  273. package/dist/domain/core/component/view-state-component.js +1 -0
  274. package/dist/domain/{components → core/component}/viewport-state-component.d.ts +1 -1
  275. package/dist/domain/core/component/viewport-state-component.js +1 -0
  276. package/dist/domain/core/data-schema/data-cell-value.d.ts +4 -0
  277. package/dist/domain/core/data-schema/data-schema-array-field.d.ts +5 -0
  278. package/dist/domain/core/data-schema/data-schema-field-object.d.ts +4 -0
  279. package/dist/domain/core/data-schema/data-schema-field-object.js +1 -0
  280. package/dist/domain/core/data-schema/data-schema-field.d.ts +2 -0
  281. package/dist/domain/core/data-schema/data-schema-field.js +1 -0
  282. package/dist/domain/core/data-schema/data-schema-localized-field.d.ts +4 -0
  283. package/dist/domain/core/data-schema/data-schema-localized-field.js +1 -0
  284. package/dist/domain/core/data-schema/data-schema-primitive-field.d.ts +5 -0
  285. package/dist/domain/core/data-schema/data-schema-primitive-field.js +1 -0
  286. package/dist/domain/core/data-schema/data-schema.d.ts +2 -0
  287. package/dist/domain/core/data-schema/data-schema.js +1 -0
  288. package/dist/domain/core/data-schema/index.d.ts +7 -0
  289. package/dist/domain/core/data-schema/index.js +1 -0
  290. package/dist/domain/core/decoder/create-decoder.d.ts +6 -0
  291. package/dist/domain/core/decoder/create-decoder.js +1 -0
  292. package/dist/domain/core/decoder/decoder.d.ts +6 -0
  293. package/dist/domain/core/decoder/decoder.js +1 -0
  294. package/dist/domain/core/decoder/index.d.ts +2 -0
  295. package/dist/domain/core/decoder/index.js +1 -0
  296. package/dist/domain/core/domain-factory.d.ts +7 -4
  297. package/dist/domain/core/domain-factory.js +1 -1
  298. package/dist/domain/core/domain.d.ts +4 -5
  299. package/dist/domain/core/domain.js +1 -1
  300. package/dist/domain/core/emission/index.d.ts +8 -0
  301. package/dist/domain/core/emission/index.js +1 -0
  302. package/dist/domain/core/emission/reset-state-emission.d.ts +12 -0
  303. package/dist/domain/core/emission/reset-state-emission.js +1 -0
  304. package/dist/domain/core/emission/state-emission.d.ts +4 -0
  305. package/dist/domain/core/emission/state-emission.js +1 -0
  306. package/dist/domain/core/emission/state-update-emission.d.ts +14 -0
  307. package/dist/domain/core/emission/state-update-emission.js +1 -0
  308. package/dist/domain/core/emission/state-validation-result.d.ts +18 -0
  309. package/dist/domain/core/emission/state-validation-result.js +1 -0
  310. package/dist/domain/core/emission/transformation-log.d.ts +2 -0
  311. package/dist/domain/core/emission/transformation-log.js +1 -0
  312. package/dist/domain/core/emission/transformer-log-entry.d.ts +6 -0
  313. package/dist/domain/core/emission/transformer-log-entry.js +1 -0
  314. package/dist/domain/core/emission/transformer-log.d.ts +11 -0
  315. package/dist/domain/core/emission/transformer-log.js +1 -0
  316. package/dist/domain/core/emission/transformer-phase.d.ts +1 -0
  317. package/dist/domain/core/emission/transformer-phase.js +1 -0
  318. package/dist/domain/core/expression/aliased-expressions.d.ts +10 -0
  319. package/dist/domain/core/expression/aliased-expressions.js +1 -0
  320. package/dist/domain/{expressions → core/expression}/constant-expressions.d.ts +2 -3
  321. package/dist/domain/core/expression/constant-expressions.js +1 -0
  322. package/dist/domain/{expressions → core/expression}/custom-expression.d.ts +9 -10
  323. package/dist/domain/core/expression/custom-expression.js +1 -0
  324. package/dist/domain/core/{expression.d.ts → expression/expression.d.ts} +17 -20
  325. package/dist/domain/core/expression/expression.js +1 -0
  326. package/dist/domain/core/expression/index.d.ts +4 -0
  327. package/dist/domain/core/expression/index.js +1 -0
  328. package/dist/domain/core/index.d.ts +13 -16
  329. package/dist/domain/core/index.js +1 -1
  330. package/dist/domain/{invariants → core/invariant}/builtin-invariant.d.ts +2 -2
  331. package/dist/domain/{invariants → core/invariant}/custom-invariants.d.ts +7 -8
  332. package/dist/domain/core/invariant/custom-invariants.js +1 -0
  333. package/dist/domain/core/invariant/index.d.ts +5 -0
  334. package/dist/domain/core/invariant/index.js +1 -0
  335. package/dist/domain/core/invariant/invariants.d.ts +13 -0
  336. package/dist/domain/core/invariant/invariants.js +1 -0
  337. package/dist/domain/core/invariant/violation-component.js +1 -0
  338. package/dist/domain/{invariants → core/invariant}/violation.d.ts +2 -2
  339. package/dist/domain/core/{component.d.ts → model/component.d.ts} +1 -1
  340. package/dist/domain/core/model/index.d.ts +6 -0
  341. package/dist/domain/core/model/index.js +1 -0
  342. package/dist/domain/core/{reflection.d.ts → model/reflection.d.ts} +1 -1
  343. package/dist/domain/core/model/reflection.js +1 -0
  344. package/dist/domain/core/recipe/index.d.ts +1 -0
  345. package/dist/domain/core/recipe/index.js +1 -0
  346. package/dist/domain/{domain-context/recipe-system → core/recipe}/recipes.d.ts +1 -3
  347. package/dist/domain/core/recipe/recipes.js +1 -0
  348. package/dist/domain/{relations → core/relation}/all-of-type-relation.d.ts +3 -4
  349. package/dist/domain/core/relation/all-of-type-relation.js +1 -0
  350. package/dist/domain/{relations → core/relation}/component-factories.d.ts +1 -2
  351. package/dist/domain/core/relation/component-factories.js +1 -0
  352. package/dist/domain/{relations → core/relation}/composed-of.d.ts +1 -1
  353. package/dist/domain/core/relation/composed-of.js +1 -0
  354. package/dist/domain/{relations → core/relation}/direct-relation.d.ts +2 -3
  355. package/dist/domain/core/relation/index.d.ts +9 -0
  356. package/dist/domain/core/relation/index.js +1 -0
  357. package/dist/domain/{relations → core/relation}/indirect-relation.d.ts +3 -4
  358. package/dist/domain/core/relation/indirect-relation.js +1 -0
  359. package/dist/domain/{relations → core/relation}/reference-component.d.ts +4 -5
  360. package/dist/domain/core/relation/reference-component.js +1 -0
  361. package/dist/domain/{relations → core/relation}/reference-field.d.ts +1 -1
  362. package/dist/domain/core/relation/reference-field.js +1 -0
  363. package/dist/domain/{relations → core/relation}/relation-factory.d.ts +2 -3
  364. package/dist/domain/{relations → core/relation}/relation-implementation.d.ts +3 -4
  365. package/dist/domain/core/relation/relation-implementation.js +1 -0
  366. package/dist/domain/core/schema/enhanced-json-schema.js +1 -0
  367. package/dist/domain/core/schema/extended-schema-validator.js +1 -0
  368. package/dist/domain/core/schema/index.d.ts +3 -0
  369. package/dist/domain/core/schema/index.js +1 -0
  370. package/dist/domain/core/schema/schema-validator.js +1 -0
  371. package/dist/domain/core/state/id-sequence.d.ts +15 -0
  372. package/dist/domain/core/state/id-sequence.js +1 -0
  373. package/dist/domain/core/state/index.d.ts +3 -0
  374. package/dist/domain/core/state/index.js +1 -0
  375. package/dist/domain/core/{migrations.d.ts → state/migrations.d.ts} +1 -2
  376. package/dist/domain/core/{state.d.ts → state/state.d.ts} +1 -2
  377. package/dist/domain/domain-builder.d.ts +16 -9
  378. package/dist/domain/domain-builder.js +1 -1
  379. package/dist/domain/domain-context/action-system/action-system.d.ts +38 -0
  380. package/dist/domain/domain-context/action-system/action-system.js +1 -0
  381. package/dist/domain/domain-context/create-transformer.d.ts +1 -1
  382. package/dist/domain/domain-context/dimension-system/dimension-state.js +1 -1
  383. package/dist/domain/domain-context/dimension-system/dimension-system.d.ts +1 -2
  384. package/dist/domain/domain-context/domain-context-systems.d.ts +5 -4
  385. package/dist/domain/domain-context/index.d.ts +4 -4
  386. package/dist/domain/domain-context/index.js +1 -1
  387. package/dist/domain/domain-context/navigation-system/navigation-system.d.ts +3 -5
  388. package/dist/domain/domain-context/navigation-system/navigation-system.js +1 -1
  389. package/dist/domain/domain-context/navigation-system/navigation-updates.d.ts +1 -12
  390. package/dist/domain/domain-context/navigation-system/navigation-updates.js +1 -1
  391. package/dist/domain/domain-context/navigation-system/selection-transformers.d.ts +1 -1
  392. package/dist/domain/domain-context/navigation-system/selection-transformers.js +1 -1
  393. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.d.ts +1 -3
  394. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.js +1 -1
  395. package/dist/domain/domain-context/relation-transformers/cascade-deletes.d.ts +1 -1
  396. package/dist/domain/domain-context/relation-transformers/cascade-deletes.js +1 -1
  397. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.d.ts +1 -1
  398. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.js +1 -1
  399. package/dist/domain/domain-context/relation-transformers/create-entity-refs.d.ts +1 -1
  400. package/dist/domain/domain-context/relation-transformers/create-entity-refs.js +2 -2
  401. package/dist/domain/domain-context/relation-transformers/replace-refs.d.ts +1 -1
  402. package/dist/domain/domain-context/relation-transformers/replace-refs.js +1 -1
  403. package/dist/domain/domain-context/store-system/apply-updates.d.ts +1 -3
  404. package/dist/domain/domain-context/store-system/apply-updates.js +1 -1
  405. package/dist/domain/domain-context/store-system/next-domain-entity-id.d.ts +1 -13
  406. package/dist/domain/domain-context/store-system/next-domain-entity-id.js +1 -1
  407. package/dist/domain/domain-context/store-system/reconcile-projected-entities.d.ts +1 -2
  408. package/dist/domain/domain-context/store-system/reconcile-projected-entities.js +1 -1
  409. package/dist/domain/domain-context/store-system/store-system.d.ts +1 -36
  410. package/dist/domain/domain-context/store-system/store-system.js +2 -2
  411. package/dist/domain/domain-context/store-system/system-state.d.ts +1 -3
  412. package/dist/domain/domain-context/store-system/system-state.js +1 -1
  413. package/dist/domain/domain-context/transformers/actions-builder.d.ts +1 -2
  414. package/dist/domain/domain-context/transformers/actions-builder.js +1 -1
  415. package/dist/domain/domain-context/transformers/auto-snap-transformer.d.ts +1 -3
  416. package/dist/domain/domain-context/transformers/chain-builder.d.ts +2 -2
  417. package/dist/domain/domain-context/transformers/context.d.ts +1 -6
  418. package/dist/domain/domain-context/transformers/entity-builder.d.ts +1 -5
  419. package/dist/domain/domain-context/transformers/entity-builder.js +1 -1
  420. package/dist/domain/domain-context/transformers/then-builder.d.ts +1 -2
  421. package/dist/domain/domain-context/transformers/then-builder.js +1 -1
  422. package/dist/domain/domain-context/transformers/when-builder.d.ts +1 -6
  423. package/dist/domain/domain-context/transformers/when-builder.js +1 -1
  424. package/dist/domain/domain-context/undo-system.d.ts +1 -2
  425. package/dist/domain/domain-runtime/domain-context/action-context.d.ts +11 -0
  426. package/dist/domain/domain-runtime/domain-context/action-context.js +1 -0
  427. package/dist/domain/domain-runtime/domain-context/component-reader.d.ts +1 -4
  428. package/dist/domain/domain-runtime/domain-context/component-reader.js +1 -1
  429. package/dist/domain/domain-runtime/domain-context/domain-context.js +1 -1
  430. package/dist/domain/domain-runtime/domain-context/expression-context.d.ts +8 -0
  431. package/dist/domain/domain-runtime/domain-context/expression-context.js +1 -0
  432. package/dist/domain/domain-runtime/domain-context/index.d.ts +3 -0
  433. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.d.ts +18 -0
  434. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.js +1 -0
  435. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +7 -4
  436. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  437. package/dist/domain/domain-runtime/domain-runtime.d.ts +24 -12
  438. package/dist/domain/domain-runtime/spec/index.d.ts +8 -0
  439. package/dist/domain/domain-runtime/spec/index.js +1 -1
  440. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  441. package/dist/domain/{invariants/invariants.d.ts → domain-runtime/spec/invariant-builder.d.ts} +7 -14
  442. package/dist/domain/domain-runtime/spec/invariant-builder.js +1 -0
  443. package/dist/domain/{expressions → domain-runtime/spec}/memoize-expression.d.ts +1 -2
  444. package/dist/domain/domain-runtime/spec/prepare-action-implementations.d.ts +15 -0
  445. package/dist/domain/domain-runtime/spec/prepare-action-implementations.js +5 -0
  446. package/dist/domain/{expressions → domain-runtime/spec}/prepare-domain-expressions.d.ts +1 -1
  447. package/dist/domain/domain-runtime/spec/resolve-action-modules.d.ts +4 -0
  448. package/dist/domain/domain-runtime/spec/resolve-action-modules.js +1 -0
  449. package/dist/domain/domain-runtime/spec/resolve-component-optic-modules.d.ts +4 -0
  450. package/dist/domain/domain-runtime/spec/resolve-component-optic-modules.js +1 -0
  451. package/dist/domain/domain-runtime/spec/resolve-expression-modules.d.ts +15 -0
  452. package/dist/domain/domain-runtime/spec/resolve-expression-modules.js +1 -0
  453. package/dist/domain/domain-runtime/spec/resolve-invariant-modules.d.ts +6 -0
  454. package/dist/domain/domain-runtime/spec/resolve-invariant-modules.js +1 -0
  455. package/dist/domain/domain-runtime/spec/selectors.d.ts +2 -2
  456. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  457. package/dist/domain/domain-runtime/spec/types.d.ts +18 -5
  458. package/dist/domain/{system-components → extensions}/angle-indicator.d.ts +1 -1
  459. package/dist/domain/extensions/angle-indicator.js +1 -0
  460. package/dist/domain/extensions/attribute-switch.js +1 -0
  461. package/dist/domain/{system-components → extensions}/autorotate-camera-component.d.ts +1 -1
  462. package/dist/domain/extensions/autorotate-camera-component.js +1 -0
  463. package/dist/domain/{system-components → extensions}/basic-sidebar-footer.d.ts +1 -1
  464. package/dist/domain/extensions/basic-sidebar-footer.js +1 -0
  465. package/dist/domain/extensions/camera-based-hidden-entity-object.js +1 -0
  466. package/dist/domain/extensions/camera-based-hidden-entity.js +1 -0
  467. package/dist/domain/{system-components → extensions}/canvas-config.d.ts +1 -1
  468. package/dist/domain/extensions/canvas-config.js +1 -0
  469. package/dist/domain/extensions/canvas-custom-environment.js +1 -0
  470. package/dist/domain/{system-components → extensions}/canvas-padding.d.ts +1 -1
  471. package/dist/domain/extensions/canvas-padding.js +1 -0
  472. package/dist/domain/{system-components → extensions}/canvas-preset-environment.d.ts +1 -1
  473. package/dist/domain/extensions/canvas-preset-environment.js +1 -0
  474. package/dist/domain/{system-components → extensions}/child-entity-recipe-hierarchy.d.ts +2 -2
  475. package/dist/domain/extensions/child-entity-recipe-hierarchy.js +1 -0
  476. package/dist/domain/extensions/client-side-image.js +1 -0
  477. package/dist/domain/extensions/color-value.js +1 -0
  478. package/dist/domain/{system-components → extensions}/common/angle-indicator-schema.d.ts +1 -1
  479. package/dist/domain/extensions/common/angle-indicator-schema.js +1 -0
  480. package/dist/domain/{system-components → extensions}/common/dimension-indicator-schema.d.ts +1 -1
  481. package/dist/domain/extensions/common/dimension-indicator-schema.js +1 -0
  482. package/dist/domain/extensions/common/index.d.ts +4 -0
  483. package/dist/domain/extensions/common/index.js +1 -0
  484. package/dist/domain/{system-components → extensions}/custom-header.d.ts +2 -2
  485. package/dist/domain/{system-components → extensions}/custom-header.js +1 -1
  486. package/dist/domain/extensions/custom-price-footer.js +1 -0
  487. package/dist/domain/{system-components → extensions}/custom-sidebar-footer.d.ts +2 -2
  488. package/dist/domain/{system-components → extensions}/custom-sidebar-footer.js +1 -1
  489. package/dist/domain/{system-components → extensions}/dimension-indicator.d.ts +1 -1
  490. package/dist/domain/extensions/dimension-indicator.js +1 -0
  491. package/dist/domain/{system-components → extensions}/editable-angle-indicator.d.ts +3 -2
  492. package/dist/domain/extensions/editable-angle-indicator.js +1 -0
  493. package/dist/domain/{system-components → extensions}/editable-distance-dimension-indicator.d.ts +3 -2
  494. package/dist/domain/extensions/editable-distance-dimension-indicator.js +1 -0
  495. package/dist/domain/{system-components → extensions}/editable-offset-indicator.d.ts +3 -2
  496. package/dist/domain/extensions/editable-offset-indicator.js +1 -0
  497. package/dist/domain/{system-components → extensions}/editable-size-indicator.d.ts +3 -2
  498. package/dist/domain/extensions/editable-size-indicator.js +1 -0
  499. package/dist/domain/{system-components → extensions}/entity-header.d.ts +1 -1
  500. package/dist/domain/extensions/entity-header.js +1 -0
  501. package/dist/domain/{system-components → extensions}/exit-tool-mode-fab.d.ts +1 -1
  502. package/dist/domain/extensions/exit-tool-mode-fab.js +1 -0
  503. package/dist/domain/{system-components → extensions}/finalize-action.d.ts +1 -1
  504. package/dist/domain/extensions/finalize-action.js +1 -0
  505. package/dist/domain/extensions/finalize-component.js +1 -0
  506. package/dist/domain/extensions/fit-selection-orthographic-camera-component.js +1 -0
  507. package/dist/domain/extensions/fit-selection-perspective-camera-component.js +1 -0
  508. package/dist/domain/{system-components → extensions}/fixed-header.d.ts +1 -1
  509. package/dist/domain/extensions/fixed-header.js +1 -0
  510. package/dist/domain/{system-components → extensions}/floating-header.d.ts +1 -1
  511. package/dist/domain/extensions/floating-header.js +1 -0
  512. package/dist/domain/{system-components → extensions}/hidden-header.d.ts +1 -1
  513. package/dist/domain/extensions/hidden-header.js +1 -0
  514. package/dist/domain/{system-components → extensions}/hidden-sidebar-footer.d.ts +1 -1
  515. package/dist/domain/extensions/hidden-sidebar-footer.js +1 -0
  516. package/dist/domain/{system-components → extensions}/horizontal-tabs.d.ts +1 -1
  517. package/dist/domain/extensions/horizontal-tabs.js +1 -0
  518. package/dist/domain/extensions/index.d.ts +69 -0
  519. package/dist/domain/extensions/index.js +1 -0
  520. package/dist/domain/{system-components → extensions}/list-selector-dimension-indicator.d.ts +3 -2
  521. package/dist/domain/extensions/list-selector-dimension-indicator.js +1 -0
  522. package/dist/domain/extensions/multilingual-text-value.js +1 -0
  523. package/dist/domain/extensions/navigation-steps.js +1 -0
  524. package/dist/domain/{system-components → extensions}/offset-anchors.d.ts +1 -1
  525. package/dist/domain/extensions/offset-anchors.js +1 -0
  526. package/dist/domain/{system-components → extensions}/offset-indicator.d.ts +1 -2
  527. package/dist/domain/extensions/offset-indicator.js +1 -0
  528. package/dist/domain/{system-components → extensions}/offset.d.ts +1 -1
  529. package/dist/domain/extensions/offset.js +1 -0
  530. package/dist/domain/{system-components → extensions}/other-action.d.ts +1 -1
  531. package/dist/domain/extensions/other-action.js +1 -0
  532. package/dist/domain/{system-components → extensions}/property-page.d.ts +2 -2
  533. package/dist/domain/extensions/property-page.js +1 -0
  534. package/dist/domain/{system-components → extensions}/read-sidebar-footer.d.ts +1 -1
  535. package/dist/domain/extensions/read-sidebar-footer.js +1 -0
  536. package/dist/domain/{system-components → extensions}/replace-entity-recipe-hierarchy.d.ts +2 -2
  537. package/dist/domain/extensions/replace-entity-recipe-hierarchy.js +1 -0
  538. package/dist/domain/extensions/rotatable.js +1 -0
  539. package/dist/domain/extensions/rotation-handle.js +1 -0
  540. package/dist/domain/extensions/save-template-thumbnail.js +1 -0
  541. package/dist/domain/{system-components → extensions}/scene-entity-add-fab.d.ts +1 -1
  542. package/dist/domain/extensions/scene-entity-add-fab.js +1 -0
  543. package/dist/domain/extensions/scene-entity-animation.js +1 -0
  544. package/dist/domain/extensions/scene-entity-control.js +1 -0
  545. package/dist/domain/{system-components → extensions}/scene-entity-delete-fab.d.ts +1 -1
  546. package/dist/domain/extensions/scene-entity-delete-fab.js +1 -0
  547. package/dist/domain/extensions/scene-entity-floor-object.js +1 -0
  548. package/dist/domain/{system-components → extensions}/scene-entity-html-hotspot.d.ts +1 -1
  549. package/dist/domain/extensions/scene-entity-html-hotspot.js +1 -0
  550. package/dist/domain/{system-components → extensions}/scene-entity-navigation-hotspot.d.ts +1 -1
  551. package/dist/domain/extensions/scene-entity-navigation-hotspot.js +1 -0
  552. package/dist/domain/{system-components → extensions}/scene-entity-object-html-hotspot.d.ts +1 -1
  553. package/dist/domain/extensions/scene-entity-object-html-hotspot.js +1 -0
  554. package/dist/domain/{system-components → extensions}/scene-entity-select-hotspot.d.ts +1 -1
  555. package/dist/domain/extensions/scene-entity-select-hotspot.js +1 -0
  556. package/dist/domain/extensions/scene-entity-wall-object.js +1 -0
  557. package/dist/domain/extensions/selectable-component.js +1 -0
  558. package/dist/domain/{system-components → extensions}/sidebar-tabs.d.ts +1 -1
  559. package/dist/domain/extensions/sidebar-tabs.js +1 -0
  560. package/dist/domain/extensions/simple-summary.js +1 -0
  561. package/dist/domain/{system-components → extensions}/size.d.ts +1 -1
  562. package/dist/domain/extensions/size.js +1 -0
  563. package/dist/domain/{system-components → extensions}/sketching-draw.d.ts +1 -1
  564. package/dist/domain/extensions/sketching-draw.js +1 -0
  565. package/dist/domain/{system-components → extensions}/sketching-edit.d.ts +2 -2
  566. package/dist/domain/extensions/sketching-edit.js +1 -0
  567. package/dist/domain/extensions/summary-component.js +1 -0
  568. package/dist/domain/extensions/text-value.js +1 -0
  569. package/dist/domain/extensions/tool-controls.js +1 -0
  570. package/dist/domain/{system-components → extensions}/tool-menu-fab.d.ts +2 -2
  571. package/dist/domain/extensions/tool-menu-fab.js +1 -0
  572. package/dist/domain/{system-components → extensions}/toolbar.d.ts +2 -2
  573. package/dist/domain/{system-components → extensions}/toolbar.js +1 -1
  574. package/dist/domain/{system-components → extensions}/universal-sidebar-footer.d.ts +1 -1
  575. package/dist/domain/extensions/universal-sidebar-footer.js +1 -0
  576. package/dist/domain/extensions/view-controls.js +1 -0
  577. package/dist/domain/index.d.ts +3 -30
  578. package/dist/domain/index.js +1 -1
  579. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +9 -3
  580. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  581. package/dist/domain/project-modules/index.d.ts +1 -0
  582. package/dist/domain/project-modules/index.js +1 -0
  583. package/dist/domain/project-modules/project-modules.d.ts +25 -0
  584. package/dist/domain/project-modules/project-modules.js +1 -0
  585. package/dist/domain/projections/blender-projections/blender-projections.d.ts +1 -1
  586. package/dist/domain/projections/blender-projections/blender-projections.js +1 -1
  587. package/dist/domain/projections/composition-projections.js +1 -1
  588. package/dist/domain/projections/index.d.ts +1 -1
  589. package/dist/domain/projections/projected-entities-projections.d.ts +1 -2
  590. package/dist/domain/projections/snap-matching.d.ts +1 -2
  591. package/dist/domain/projections/snap-utils.d.ts +1 -2
  592. package/dist/domain/projections/validation-projections.d.ts +1 -18
  593. package/dist/domain/projections/validation-projections.js +1 -1
  594. package/dist/domain/system-components/admin-sidebar.d.ts +1 -1
  595. package/dist/domain/system-components/admin-sidebar.js +1 -1
  596. package/dist/domain/system-components/angle-dimension.js +1 -1
  597. package/dist/domain/system-components/application-config.d.ts +1 -1
  598. package/dist/domain/system-components/application-config.js +1 -1
  599. package/dist/domain/system-components/attribute-selection.js +1 -1
  600. package/dist/domain/system-components/bounding-box-component.d.ts +1 -1
  601. package/dist/domain/system-components/bounding-box-component.js +1 -1
  602. package/dist/domain/system-components/bounding-sphere-component.d.ts +1 -1
  603. package/dist/domain/system-components/bounding-sphere-component.js +1 -1
  604. package/dist/domain/system-components/child-entity-recipes.d.ts +1 -1
  605. package/dist/domain/system-components/child-entity-recipes.js +1 -1
  606. package/dist/domain/system-components/child-entity-selection.d.ts +1 -2
  607. package/dist/domain/system-components/child-entity-selection.js +1 -1
  608. package/dist/domain/system-components/collision-box-geometry.d.ts +1 -1
  609. package/dist/domain/system-components/collision-box-geometry.js +1 -1
  610. package/dist/domain/system-components/collision-geometries.d.ts +1 -1
  611. package/dist/domain/system-components/collision-geometry.d.ts +1 -1
  612. package/dist/domain/system-components/collision-geometry.js +1 -1
  613. package/dist/domain/system-components/collision-point-geometry.d.ts +1 -1
  614. package/dist/domain/system-components/collision-point-geometry.js +1 -1
  615. package/dist/domain/system-components/common/index.d.ts +0 -4
  616. package/dist/domain/system-components/common/index.js +1 -1
  617. package/dist/domain/system-components/common/recipes.d.ts +1 -2
  618. package/dist/domain/system-components/constraint.d.ts +1 -1
  619. package/dist/domain/system-components/constraint.js +1 -1
  620. package/dist/domain/system-components/create-blueprint.d.ts +1 -1
  621. package/dist/domain/system-components/custom-scene-entity.d.ts +1 -1
  622. package/dist/domain/system-components/custom-scene-entity.js +1 -1
  623. package/dist/domain/system-components/detail.js +1 -1
  624. package/dist/domain/system-components/distance-dimension-select.d.ts +1 -1
  625. package/dist/domain/system-components/distance-dimension-select.js +1 -1
  626. package/dist/domain/system-components/distance-dimension.d.ts +1 -1
  627. package/dist/domain/system-components/distance-dimension.js +1 -1
  628. package/dist/domain/system-components/drag-handle.d.ts +1 -1
  629. package/dist/domain/system-components/drag-handle.js +1 -1
  630. package/dist/domain/system-components/fit-entity-orthographic-camera-component.js +1 -1
  631. package/dist/domain/system-components/fit-entity-perspective-camera-component.js +1 -1
  632. package/dist/domain/system-components/fit-root-orthographic-camera-component.js +1 -1
  633. package/dist/domain/system-components/fit-root-perspective-camera-component.js +1 -1
  634. package/dist/domain/system-components/generic-dimension.d.ts +1 -1
  635. package/dist/domain/system-components/generic-dimension.js +1 -1
  636. package/dist/domain/system-components/hidden-entity.js +1 -1
  637. package/dist/domain/system-components/hotspot-drag-handle.d.ts +1 -2
  638. package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
  639. package/dist/domain/system-components/index.d.ts +0 -68
  640. package/dist/domain/system-components/index.js +1 -1
  641. package/dist/domain/system-components/material-override-property-transition.js +1 -1
  642. package/dist/domain/system-components/material-override-transformer.js +1 -1
  643. package/dist/domain/system-components/material-swatch.js +1 -1
  644. package/dist/domain/system-components/navigation-page.js +1 -1
  645. package/dist/domain/system-components/navigation-panel-list.js +1 -1
  646. package/dist/domain/system-components/phoenix-entity-elements/admin-data-table-sidebar.d.ts +1 -1
  647. package/dist/domain/system-components/phoenix-layout-elements/admin-connected-resource-page.d.ts +1 -1
  648. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-actions.d.ts +1 -1
  649. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-page.d.ts +1 -1
  650. package/dist/domain/system-components/phoenix-layout-elements/assistant-toolbar-button.d.ts +44 -0
  651. package/dist/domain/system-components/phoenix-layout-elements/assistant-toolbar-button.js +1 -0
  652. package/dist/domain/system-components/phoenix-layout-elements/index.d.ts +1 -0
  653. package/dist/domain/system-components/phoenix-layout-elements/index.js +1 -1
  654. package/dist/domain/system-components/phoenix-layout-elements/phoenix-layout-element.d.ts +2 -1
  655. package/dist/domain/system-components/phoenix-layout-elements/phoenix-layout-element.js +1 -1
  656. package/dist/domain/system-components/pivot-point.d.ts +1 -1
  657. package/dist/domain/system-components/pivot-point.js +1 -1
  658. package/dist/domain/system-components/price.js +1 -1
  659. package/dist/domain/system-components/projected-entities.d.ts +1 -1
  660. package/dist/domain/system-components/projected-entities.js +1 -1
  661. package/dist/domain/system-components/replace-entity-recipes.d.ts +1 -1
  662. package/dist/domain/system-components/replace-entity-recipes.js +1 -1
  663. package/dist/domain/system-components/scene-entity-ambient-light.js +1 -1
  664. package/dist/domain/system-components/scene-entity-box-object.js +1 -1
  665. package/dist/domain/system-components/scene-entity-directional-light.js +1 -1
  666. package/dist/domain/system-components/scene-entity-local-material-override.js +1 -1
  667. package/dist/domain/system-components/scene-entity-material-override.js +1 -1
  668. package/dist/domain/system-components/scene-entity-object-clip.js +1 -1
  669. package/dist/domain/system-components/scene-entity-object-decal.js +1 -1
  670. package/dist/domain/system-components/scene-entity-object-group.js +1 -1
  671. package/dist/domain/system-components/scene-entity-object-local-material-override.js +1 -1
  672. package/dist/domain/system-components/scene-entity-object-material-override.js +1 -1
  673. package/dist/domain/system-components/scene-entity-object-properties.js +1 -1
  674. package/dist/domain/system-components/scene-entity-object-remote-material-override.js +1 -1
  675. package/dist/domain/system-components/scene-entity-object-text-decal.js +1 -1
  676. package/dist/domain/system-components/scene-entity-object-transformer.js +1 -1
  677. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.js +1 -1
  678. package/dist/domain/system-components/scene-entity-object.js +1 -1
  679. package/dist/domain/system-components/scene-entity-point-light.js +1 -1
  680. package/dist/domain/system-components/scene-entity-properties.js +1 -1
  681. package/dist/domain/system-components/scene-entity-rect-area-light.js +1 -1
  682. package/dist/domain/system-components/scene-entity-remote-material-override.js +1 -1
  683. package/dist/domain/system-components/scene-entity-remote-object.js +1 -1
  684. package/dist/domain/system-components/scene-entity-spot-light.js +1 -1
  685. package/dist/domain/system-components/scene-entity-transimissive-material-override.js +1 -1
  686. package/dist/domain/system-components/sketching-line.d.ts +1 -1
  687. package/dist/domain/system-components/sketching-line.js +1 -1
  688. package/dist/domain/system-components/sketching-rectangle.d.ts +1 -1
  689. package/dist/domain/system-components/sketching-rectangle.js +1 -1
  690. package/dist/domain/system-components/sketching.d.ts +1 -1
  691. package/dist/domain/system-components/sketching.js +1 -1
  692. package/dist/domain/system-components/snap-axis.d.ts +1 -1
  693. package/dist/domain/system-components/snap-axis.js +1 -1
  694. package/dist/domain/system-components/snap-edge.d.ts +1 -1
  695. package/dist/domain/system-components/snap-edge.js +1 -1
  696. package/dist/domain/system-components/snap-plane.d.ts +1 -1
  697. package/dist/domain/system-components/snap-plane.js +1 -1
  698. package/dist/domain/system-components/snap-point.d.ts +1 -1
  699. package/dist/domain/system-components/snap-point.js +1 -1
  700. package/dist/domain/system-components/static-orthographic-camera-component.d.ts +1 -1
  701. package/dist/domain/system-components/static-orthographic-camera-component.js +1 -1
  702. package/dist/domain/system-components/static-perspective-camera-component.d.ts +1 -1
  703. package/dist/domain/system-components/static-perspective-camera-component.js +1 -1
  704. package/dist/domain/utils/eval-cache.d.ts +1 -2
  705. package/dist/domain/utils/memo-eval.d.ts +2 -4
  706. package/dist/editor/Editor.js +1 -1
  707. package/dist/editor/domain-editors/DomainSpecContext.js +1 -1
  708. package/dist/editor/domain-editors/apply-spec-update.js +1 -1
  709. package/dist/editor/domain-editors/use-implementation-files.d.ts +11 -6
  710. package/dist/editor/domain-editors/use-implementation-files.js +1 -1
  711. package/dist/editor/graphql/GraphQLPanel.js +1 -1
  712. package/dist/editor/variants/VariantAnswerFooter.d.ts +17 -0
  713. package/dist/editor/variants/VariantAnswerFooter.js +1 -0
  714. package/dist/editor/variants/VariantPreviewHandler.d.ts +6 -0
  715. package/dist/editor/variants/VariantPreviewHandler.js +1 -0
  716. package/dist/editor/variants/variant-preview-styles.d.ts +49 -0
  717. package/dist/editor/variants/variant-preview-styles.js +1 -0
  718. package/dist/i18n/locales/cs/messages.js +1 -1
  719. package/dist/i18n/locales/da/messages.js +1 -1
  720. package/dist/i18n/locales/de/messages.js +1 -1
  721. package/dist/i18n/locales/de-AT/messages.js +1 -1
  722. package/dist/i18n/locales/en/messages.js +1 -1
  723. package/dist/i18n/locales/en-AU/messages.js +1 -1
  724. package/dist/i18n/locales/en-GB/messages.js +1 -1
  725. package/dist/i18n/locales/es/messages.js +1 -1
  726. package/dist/i18n/locales/fr/messages.js +1 -1
  727. package/dist/i18n/locales/hu/messages.js +1 -1
  728. package/dist/i18n/locales/it/messages.js +1 -1
  729. package/dist/i18n/locales/nl/messages.js +1 -1
  730. package/dist/i18n/locales/pl/messages.js +1 -1
  731. package/dist/i18n/locales/pt/messages.js +1 -1
  732. package/dist/i18n/locales/ro/messages.js +1 -1
  733. package/dist/i18n/locales/sk/messages.js +1 -1
  734. package/dist/i18n/locales/tr/messages.js +1 -1
  735. package/dist/legacy/domain-cli/gen/configurator-builder.js +21 -8
  736. package/dist/legacy/domain-cli/gen/implementation.js +5 -5
  737. package/dist/legacy/domain-cli/gen/invariants.js +5 -3
  738. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  739. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  740. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +6 -0
  741. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.d.ts +1 -1
  742. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.js +4 -0
  743. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +18 -19
  744. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-configurator.js +15 -16
  745. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +22 -23
  746. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-configurator.js +15 -16
  747. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/generator-shared.d.ts +7 -2
  748. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/generator-shared.js +8 -12
  749. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/index.d.ts +1 -1
  750. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/index.js +1 -1
  751. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/webhook-builders.js +7 -7
  752. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  753. package/dist/phoenix/application-spec/resolve-deployment-data.d.ts +4 -3
  754. package/dist/phoenix/application-spec/resolve-deployment-data.js +2 -2
  755. package/dist/phoenix/cli.js +1 -1
  756. package/dist/phoenix/commands/build.d.ts +5 -0
  757. package/dist/phoenix/commands/build.js +1 -1
  758. package/dist/phoenix/commands/deploy.js +2 -2
  759. package/dist/phoenix/commands/dev.js +5 -5
  760. package/dist/phoenix/commands/feedback.d.ts +2 -1
  761. package/dist/phoenix/commands/feedback.js +1 -1
  762. package/dist/phoenix/commands/index.d.ts +1 -0
  763. package/dist/phoenix/commands/index.js +1 -1
  764. package/dist/phoenix/commands/login.d.ts +24 -6
  765. package/dist/phoenix/commands/login.js +2 -2
  766. package/dist/phoenix/commands/prepare-deployment-command.js +2 -2
  767. package/dist/phoenix/commands/prepare-local-environment-command.js +1 -1
  768. package/dist/phoenix/commands/story-dev.js +2 -2
  769. package/dist/phoenix/commands/variants.d.ts +35 -0
  770. package/dist/phoenix/commands/variants.js +1 -0
  771. package/dist/phoenix/editor-server/commands-router.d.ts +68 -1
  772. package/dist/phoenix/editor-server/commands-router.js +1 -1
  773. package/dist/phoenix/editor-server/editor-router.d.ts +65 -0
  774. package/dist/phoenix/editor-server/editor-server.d.ts +3 -3
  775. package/dist/phoenix/editor-server/editor-server.js +1 -1
  776. package/dist/phoenix/editor-server/protocol.d.ts +1 -0
  777. package/dist/phoenix/editor-server/spec-router.js +1 -1
  778. package/dist/phoenix/editor-server/trpc.d.ts +3 -0
  779. package/dist/phoenix/scripts/build-admin.js +1 -1
  780. package/dist/phoenix/services/application-spec-project-watcher.d.ts +13 -2
  781. package/dist/phoenix/services/application-spec-project-watcher.js +3 -3
  782. package/dist/phoenix/services/index.d.ts +5 -0
  783. package/dist/phoenix/services/index.js +1 -1
  784. package/dist/phoenix/services/phoenix-application.d.ts +21 -0
  785. package/dist/phoenix/services/phoenix-application.js +1 -0
  786. package/dist/phoenix/services/phoenix-store.d.ts +48 -0
  787. package/dist/phoenix/services/phoenix-store.js +1 -0
  788. package/dist/phoenix/services/phx-banner-plugin.d.ts +32 -0
  789. package/dist/phoenix/services/phx-banner-plugin.js +1 -0
  790. package/dist/phoenix/services/phx-licenses-plugin.d.ts +55 -0
  791. package/dist/phoenix/services/phx-licenses-plugin.js +8 -0
  792. package/dist/phoenix/services/phx-variant-previews-plugin.d.ts +9 -0
  793. package/dist/phoenix/services/phx-variant-previews-plugin.js +1 -0
  794. package/dist/phoenix/services/prepare-development-environment.js +1 -1
  795. package/dist/phoenix/services/variant-file-session.d.ts +36 -0
  796. package/dist/phoenix/services/variant-file-session.js +1 -0
  797. package/dist/phoenix/services/variant-preview-service.d.ts +80 -0
  798. package/dist/phoenix/services/variant-preview-service.js +1 -0
  799. package/dist/phoenix/services/vite-config.d.ts +2 -0
  800. package/dist/phoenix/services/vite-config.js +1 -1
  801. package/dist/phoenix/utils/index.d.ts +1 -0
  802. package/dist/phoenix/utils/index.js +1 -1
  803. package/dist/phoenix/utils/read-git-commit.d.ts +14 -0
  804. package/dist/phoenix/utils/read-git-commit.js +1 -0
  805. package/dist/react-sdk/application-runtime/common-services/analytics/analytics-service.d.ts +2 -2
  806. package/dist/react-sdk/application-runtime/common-services/analytics/domain-controls-analytics.d.ts +21 -21
  807. package/dist/react-sdk/application-runtime/hooks/data/use-published-data.d.ts +1 -1
  808. package/dist/react-sdk/application-runtime/hooks/use-domain-application-props.d.ts +5 -2
  809. package/dist/react-sdk/application-runtime/hooks/use-spec.d.ts +1 -1
  810. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.d.ts +1 -1
  811. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  812. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +16 -4
  813. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +3 -0
  814. package/dist/ui-sdk/common/use-viewport-size.d.ts +4 -1
  815. package/dist/ui-sdk/common/use-viewport-size.js +1 -1
  816. package/dist/ui-sdk/components/mobile-controls/index.d.ts +1 -1
  817. package/dist/ui-sdk/theme/types.d.ts +4 -0
  818. package/dist/webhook/builders/common.d.ts +8 -0
  819. package/dist/webhook/builders/webhook-builder.d.ts +1 -1
  820. package/dist/webhook/builders/webhook-builder.js +1 -1
  821. package/package.json +5 -8
  822. package/schema/domain-spec.json +24 -0
  823. package/dist/configurator/assistant/browser-details.js +0 -1
  824. package/dist/configurator/assistant/graphql-tools.js +0 -1
  825. package/dist/configurator/assistant/index.d.ts +0 -1
  826. package/dist/configurator/assistant/index.js +0 -1
  827. package/dist/configurator/assistant/use-assistant-chat.d.ts +0 -20
  828. package/dist/configurator/assistant/use-assistant-chat.js +0 -1
  829. package/dist/domain/components/debug-state-component.js +0 -1
  830. package/dist/domain/components/drag-state-component.js +0 -1
  831. package/dist/domain/components/export-state-component.js +0 -1
  832. package/dist/domain/components/fullscreen-state-component.js +0 -1
  833. package/dist/domain/components/group-components-by-entity-id-and-name.js +0 -1
  834. package/dist/domain/components/hover-state-component.js +0 -1
  835. package/dist/domain/components/index.d.ts +0 -2
  836. package/dist/domain/components/index.js +0 -1
  837. package/dist/domain/components/navigation-state-component.js +0 -1
  838. package/dist/domain/components/selection-state-component.js +0 -1
  839. package/dist/domain/components/system-component-builder.js +0 -1
  840. package/dist/domain/components/system-virtual-entity.js +0 -1
  841. package/dist/domain/components/tool-state-component.js +0 -1
  842. package/dist/domain/components/view-state-component.js +0 -1
  843. package/dist/domain/components/viewport-state-component.js +0 -1
  844. package/dist/domain/core/json-schema.js +0 -1
  845. package/dist/domain/core/reflection.js +0 -1
  846. package/dist/domain/domain-context/recipe-system/recipes.js +0 -1
  847. package/dist/domain/expressions/constant-expressions.js +0 -1
  848. package/dist/domain/expressions/custom-expression.js +0 -1
  849. package/dist/domain/expressions/index.d.ts +0 -1
  850. package/dist/domain/expressions/index.js +0 -1
  851. package/dist/domain/invariants/custom-invariants.js +0 -1
  852. package/dist/domain/invariants/invariants.js +0 -1
  853. package/dist/domain/invariants/violation-component.js +0 -1
  854. package/dist/domain/relations/all-of-type-relation.js +0 -1
  855. package/dist/domain/relations/component-factories.js +0 -1
  856. package/dist/domain/relations/composed-of.js +0 -1
  857. package/dist/domain/relations/indirect-relation.js +0 -1
  858. package/dist/domain/relations/reference-component.js +0 -1
  859. package/dist/domain/system-components/angle-indicator.js +0 -1
  860. package/dist/domain/system-components/attribute-switch.js +0 -1
  861. package/dist/domain/system-components/autorotate-camera-component.js +0 -1
  862. package/dist/domain/system-components/basic-sidebar-footer.js +0 -1
  863. package/dist/domain/system-components/camera-based-hidden-entity-object.js +0 -1
  864. package/dist/domain/system-components/camera-based-hidden-entity.js +0 -1
  865. package/dist/domain/system-components/canvas-config.js +0 -1
  866. package/dist/domain/system-components/canvas-custom-environment.js +0 -1
  867. package/dist/domain/system-components/canvas-padding.js +0 -1
  868. package/dist/domain/system-components/canvas-preset-environment.js +0 -1
  869. package/dist/domain/system-components/child-entity-recipe-hierarchy.js +0 -1
  870. package/dist/domain/system-components/client-side-image.js +0 -1
  871. package/dist/domain/system-components/color-value.js +0 -1
  872. package/dist/domain/system-components/common/angle-indicator-schema.js +0 -1
  873. package/dist/domain/system-components/common/dimension-indicator-schema.js +0 -1
  874. package/dist/domain/system-components/custom-price-footer.js +0 -1
  875. package/dist/domain/system-components/dimension-indicator.js +0 -1
  876. package/dist/domain/system-components/editable-angle-indicator.js +0 -1
  877. package/dist/domain/system-components/editable-distance-dimension-indicator.js +0 -1
  878. package/dist/domain/system-components/editable-offset-indicator.js +0 -1
  879. package/dist/domain/system-components/editable-size-indicator.js +0 -1
  880. package/dist/domain/system-components/entity-header.js +0 -1
  881. package/dist/domain/system-components/exit-tool-mode-fab.js +0 -1
  882. package/dist/domain/system-components/finalize-action.js +0 -1
  883. package/dist/domain/system-components/finalize-component.js +0 -1
  884. package/dist/domain/system-components/fit-selection-orthographic-camera-component.js +0 -1
  885. package/dist/domain/system-components/fit-selection-perspective-camera-component.js +0 -1
  886. package/dist/domain/system-components/fixed-header.js +0 -1
  887. package/dist/domain/system-components/floating-header.js +0 -1
  888. package/dist/domain/system-components/hidden-header.js +0 -1
  889. package/dist/domain/system-components/hidden-sidebar-footer.js +0 -1
  890. package/dist/domain/system-components/horizontal-tabs.js +0 -1
  891. package/dist/domain/system-components/list-selector-dimension-indicator.js +0 -1
  892. package/dist/domain/system-components/multilingual-text-value.js +0 -1
  893. package/dist/domain/system-components/navigation-steps.js +0 -1
  894. package/dist/domain/system-components/offset-anchors.js +0 -1
  895. package/dist/domain/system-components/offset-indicator.js +0 -1
  896. package/dist/domain/system-components/offset.js +0 -1
  897. package/dist/domain/system-components/other-action.js +0 -1
  898. package/dist/domain/system-components/property-page.js +0 -1
  899. package/dist/domain/system-components/read-sidebar-footer.js +0 -1
  900. package/dist/domain/system-components/replace-entity-recipe-hierarchy.js +0 -1
  901. package/dist/domain/system-components/rotatable.js +0 -1
  902. package/dist/domain/system-components/rotation-handle.js +0 -1
  903. package/dist/domain/system-components/save-template-thumbnail.js +0 -1
  904. package/dist/domain/system-components/scene-entity-add-fab.js +0 -1
  905. package/dist/domain/system-components/scene-entity-animation.js +0 -1
  906. package/dist/domain/system-components/scene-entity-control.js +0 -1
  907. package/dist/domain/system-components/scene-entity-delete-fab.js +0 -1
  908. package/dist/domain/system-components/scene-entity-floor-object.js +0 -1
  909. package/dist/domain/system-components/scene-entity-html-hotspot.js +0 -1
  910. package/dist/domain/system-components/scene-entity-navigation-hotspot.js +0 -1
  911. package/dist/domain/system-components/scene-entity-object-html-hotspot.js +0 -1
  912. package/dist/domain/system-components/scene-entity-select-hotspot.js +0 -1
  913. package/dist/domain/system-components/scene-entity-wall-object.js +0 -1
  914. package/dist/domain/system-components/selectable-component.js +0 -1
  915. package/dist/domain/system-components/sidebar-tabs.js +0 -1
  916. package/dist/domain/system-components/simple-summary.js +0 -1
  917. package/dist/domain/system-components/size.js +0 -1
  918. package/dist/domain/system-components/sketching-draw.js +0 -1
  919. package/dist/domain/system-components/sketching-edit.js +0 -1
  920. package/dist/domain/system-components/summary-component.js +0 -1
  921. package/dist/domain/system-components/text-value.js +0 -1
  922. package/dist/domain/system-components/tool-controls.js +0 -1
  923. package/dist/domain/system-components/tool-menu-fab.js +0 -1
  924. package/dist/domain/system-components/universal-sidebar-footer.js +0 -1
  925. package/dist/domain/system-components/view-controls.js +0 -1
  926. package/dist/extras/assistant/AssistantChat.d.ts +0 -6
  927. package/dist/extras/assistant/AssistantChat.js +0 -1
  928. package/dist/extras/assistant/index.d.ts +0 -1
  929. package/dist/extras/assistant/index.js +0 -1
  930. package/dist/phoenix/application-spec/generate-assistant-prompt.d.ts +0 -12
  931. package/dist/phoenix/application-spec/generate-assistant-prompt.js +0 -1
  932. /package/dist/domain/{components/component-reader-types.js → application/assistant/assistant-manifest.js} +0 -0
  933. /package/dist/domain/{core/enhanced-json-schema.js → application/assistant/assistant-resolved-manifest.js} +0 -0
  934. /package/dist/domain/core/{expression.js → action/action.js} +0 -0
  935. /package/dist/domain/core/{schema-validator.js → component/component-reader-types.js} +0 -0
  936. /package/dist/domain/{components → core/component}/legacy-filter.js +0 -0
  937. /package/dist/domain/{components → core/component}/system-component-filter.js +0 -0
  938. /package/dist/domain/{components → core/component}/system-virtual-entity.d.ts +0 -0
  939. /package/dist/domain/{components → core/component}/updates.js +0 -0
  940. /package/dist/domain/{relations/reference-field.js → core/data-schema/data-cell-value.js} +0 -0
  941. /package/dist/domain/{relations/relation-implementation.js → core/data-schema/data-schema-array-field.js} +0 -0
  942. /package/dist/domain/{invariants → core/invariant}/builtin-invariant.js +0 -0
  943. /package/dist/domain/{invariants → core/invariant}/violation-component.d.ts +0 -0
  944. /package/dist/domain/{invariants → core/invariant}/violation.js +0 -0
  945. /package/dist/domain/core/{alias.d.ts → model/alias.d.ts} +0 -0
  946. /package/dist/domain/core/{alias.js → model/alias.js} +0 -0
  947. /package/dist/domain/core/{common-definitions.d.ts → model/common-definitions.d.ts} +0 -0
  948. /package/dist/domain/core/{common-definitions.js → model/common-definitions.js} +0 -0
  949. /package/dist/domain/core/{component.js → model/component.js} +0 -0
  950. /package/dist/domain/core/{model.d.ts → model/model.d.ts} +0 -0
  951. /package/dist/domain/core/{model.js → model/model.js} +0 -0
  952. /package/dist/domain/core/{preset.d.ts → model/preset.d.ts} +0 -0
  953. /package/dist/domain/core/{preset.js → model/preset.js} +0 -0
  954. /package/dist/domain/{relations → core/relation}/direct-relation.js +0 -0
  955. /package/dist/domain/{relations → core/relation}/relation-factory.js +0 -0
  956. /package/dist/domain/core/{schema-validator-ajv.d.ts → schema/create-ajv-schema-validator.d.ts} +0 -0
  957. /package/dist/domain/core/{schema-validator-ajv.js → schema/create-ajv-schema-validator.js} +0 -0
  958. /package/dist/domain/core/{schema-validator-csp.d.ts → schema/create-csp-schema-validator.d.ts} +0 -0
  959. /package/dist/domain/core/{schema-validator-csp.js → schema/create-csp-schema-validator.js} +0 -0
  960. /package/dist/domain/core/{enhanced-json-schema.d.ts → schema/enhanced-json-schema.d.ts} +0 -0
  961. /package/dist/domain/core/{json-schema.d.ts → schema/extended-schema-validator.d.ts} +0 -0
  962. /package/dist/domain/core/{schema-validator.d.ts → schema/schema-validator.d.ts} +0 -0
  963. /package/dist/domain/core/{migrations.js → state/migrations.js} +0 -0
  964. /package/dist/domain/core/{state.js → state/state.js} +0 -0
  965. /package/dist/domain/{expressions → domain-runtime/spec}/memoize-expression.js +0 -0
  966. /package/dist/domain/{expressions → domain-runtime/spec}/prepare-domain-expressions.js +0 -0
  967. /package/dist/domain/{system-components → extensions}/attribute-switch.d.ts +0 -0
  968. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity-object.d.ts +0 -0
  969. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity.d.ts +0 -0
  970. /package/dist/domain/{system-components → extensions}/canvas-custom-environment.d.ts +0 -0
  971. /package/dist/domain/{system-components → extensions}/client-side-image.d.ts +0 -0
  972. /package/dist/domain/{system-components → extensions}/color-value.d.ts +0 -0
  973. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.d.ts +0 -0
  974. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.js +0 -0
  975. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.d.ts +0 -0
  976. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.js +0 -0
  977. /package/dist/domain/{system-components → extensions}/custom-price-footer.d.ts +0 -0
  978. /package/dist/domain/{system-components → extensions}/finalize-component.d.ts +0 -0
  979. /package/dist/domain/{system-components → extensions}/fit-selection-orthographic-camera-component.d.ts +0 -0
  980. /package/dist/domain/{system-components → extensions}/fit-selection-perspective-camera-component.d.ts +0 -0
  981. /package/dist/domain/{system-components → extensions}/multilingual-text-value.d.ts +0 -0
  982. /package/dist/domain/{system-components → extensions}/navigation-steps.d.ts +0 -0
  983. /package/dist/domain/{system-components → extensions}/rotatable.d.ts +0 -0
  984. /package/dist/domain/{system-components → extensions}/rotation-handle.d.ts +0 -0
  985. /package/dist/domain/{system-components → extensions}/save-template-thumbnail.d.ts +0 -0
  986. /package/dist/domain/{system-components → extensions}/scene-entity-animation.d.ts +0 -0
  987. /package/dist/domain/{system-components → extensions}/scene-entity-control.d.ts +0 -0
  988. /package/dist/domain/{system-components → extensions}/scene-entity-floor-object.d.ts +0 -0
  989. /package/dist/domain/{system-components → extensions}/scene-entity-wall-object.d.ts +0 -0
  990. /package/dist/domain/{system-components → extensions}/selectable-component.d.ts +0 -0
  991. /package/dist/domain/{system-components → extensions}/simple-summary.d.ts +0 -0
  992. /package/dist/domain/{system-components → extensions}/summary-component.d.ts +0 -0
  993. /package/dist/domain/{system-components → extensions}/text-value.d.ts +0 -0
  994. /package/dist/domain/{system-components → extensions}/tool-controls.d.ts +0 -0
  995. /package/dist/domain/{system-components → extensions}/view-controls.d.ts +0 -0
@@ -1,13 +1,14 @@
1
- let e=e=>`webhookHandlers${e}`;export const generateApplicationSpecWebhookBuilders=(o,t)=>{let i=o.appMetadata.useClerk?` clerk: {
1
+ let t=t=>`webhookHandlers${t}`;export const generateApplicationSpecWebhookBuilders=(e,o)=>{let i=e.appMetadata.useClerk?` clerk: {
2
2
  apiKey: phx.webhooksEnv.CLERK_API_KEY,
3
3
  authorizedParties: [phx.webhooksEnv.FRONTEND_URL, phx.webhooksEnv.RESOURCES_URL],
4
4
  jwtSecret: phx.webhooksEnv.JWT_SECRET_BASE64,
5
5
  oauthClientId: phx.webhooksEnv.OAUTH_PROVIDER_CLIENT_ID,
6
6
  oauthClientSecret: phx.webhooksEnv.OAUTH_PROVIDER_CLIENT_SECRET,
7
7
  oauthProviderBaseUrl: phx.webhooksEnv.OAUTH_PROVIDER_BASE_URL,
8
- },`:"",r=t.map((o,t)=>{let i=e(t),r=o.replace(/\.tsx?$/,".js");return`import ${i} from '../${r}'`}).join("\n"),a=t.length>0,n=t.map((o,t)=>e(t)),l=a?`[${n.join(", ")}].flat()`:"[]",s=a?`
9
- .withHandlers(${l})`:"";return`// Auto-generated by application-spec pipeline. Do not edit.
8
+ },`:"",r=o.map((e,o)=>{let i=t(o),r=e.replace(/\.tsx?$/,".js");return`import ${i} from '../${r}'`}).join("\n"),n=o.length>0,s=o.map((e,o)=>`{ origin: '${e}', exports: ${t(o)} }`),a=`[${s.join(", ")}]`,l=n?`
9
+ .withHandlers(${a})`:"";return`// Auto-generated by application-spec pipeline. Do not edit.
10
10
  import { createDomainWebhook } from '@salsita-ai/sdk/webhook'
11
+ import type { DeploymentAssistant } from '@salsita-ai/sdk/contracts/assistant'
11
12
 
12
13
  import { configuratorBuilder, createI18n } from './domain.js'
13
14
  import { customComponentOptics } from './configurator-domain-code.js'
@@ -15,12 +16,14 @@ import { customAdminComponentOptics } from './admin-domain-code.js'
15
16
  ${r?`
16
17
  ${r}
17
18
  `:""}
19
+ const $assistantServerSettings: Pick<DeploymentAssistant, 'instructions' | 'ai'> | null = ${JSON.stringify(e.configurator.assistantServerSettings?{instructions:e.configurator.assistantServerSettings.instructions??void 0,ai:e.configurator.assistantServerSettings.ai}:null)}
20
+
18
21
  const webhookConfiguratorBuilder = configuratorBuilder
19
22
  .withComponentOptics(customComponentOptics)
20
23
  .withAdminComponentOptics(customAdminComponentOptics)
21
24
  .withDefaultEnvs({
22
25
  isDev: phx.webhooksEnv.IS_DEV,
23
- })${s}
26
+ })${l}
24
27
 
25
28
  export const {
26
29
  authHandlerBuilder,
@@ -33,6 +36,8 @@ export const {
33
36
  } = createDomainWebhook({
34
37
  configuratorBuilder: webhookConfiguratorBuilder,
35
38
  createI18n,
39
+ assistantServerSettings: $assistantServerSettings,
40
+ assistantStrictThreads: phx.webhooksEnv.ASSISTANT_STRICT_THREADS,
36
41
  ${i}
37
42
  })
38
43
 
@@ -1,6 +1,6 @@
1
- import{generateEnvReader as e}from"../common/env-reader.js";import{autoHeader as r}from"../common/file-headers.js";let t={IS_DEV:{type:"bool",default:!1,devDefault:!0},AWS_S3_PUBLIC_RESOURCES_BUCKET:{type:"str",required:!0},AWS_S3_RESOURCES_REGION:{type:"str",required:!0},DEPLOYMENT_RESOURCES_PATH:{type:"str",default:"deployment-resources"}},o={CLERK_API_KEY:{type:"str",required:!0},FRONTEND_URL:{type:"str",required:!0},JWT_SECRET_BASE64:{type:"str",required:!0},OAUTH_PROVIDER_CLIENT_ID:{type:"str",required:!0},OAUTH_PROVIDER_CLIENT_SECRET:{type:"str",required:!0},OAUTH_PROVIDER_BASE_URL:{type:"str",required:!0},RESOURCES_URL:{type:"str",required:!0}};export const generateApplicationSpecWebhooksConfig=i=>{let n=i.infra.env?.webhook??{},R=i.appMetadata.useClerk?o:{},{imports:E,config:p}=e({...t,...R,...n}),s=E.length>0?`import { ${E.join(", ")} } from 'envalid'
1
+ import{generateEnvReader as e}from"../common/env-reader.js";import{autoHeader as r}from"../common/file-headers.js";let t={IS_DEV:{type:"bool",default:!1,devDefault:!0},ASSISTANT_STRICT_THREADS:{type:"bool",default:!1},AWS_S3_PUBLIC_RESOURCES_BUCKET:{type:"str",required:!0},AWS_S3_RESOURCES_REGION:{type:"str",required:!0},DEPLOYMENT_RESOURCES_PATH:{type:"str",default:"deployment-resources"}},o={CLERK_API_KEY:{type:"str",required:!0},FRONTEND_URL:{type:"str",required:!0},JWT_SECRET_BASE64:{type:"str",required:!0},OAUTH_PROVIDER_CLIENT_ID:{type:"str",required:!0},OAUTH_PROVIDER_CLIENT_SECRET:{type:"str",required:!0},OAUTH_PROVIDER_BASE_URL:{type:"str",required:!0},RESOURCES_URL:{type:"str",required:!0}};export const generateApplicationSpecWebhooksConfig=i=>{let n=i.infra.env?.webhook??{},R=i.appMetadata.useClerk?o:{},{imports:E,config:p}=e({...t,...R,...n}),_=E.length>0?`import { ${E.join(", ")} } from 'envalid'
2
2
  `:"";return`${r("webhooks.config.ts","Runtime environment config for the webhook server.")}
3
- ${s}import { createEnvReader } from '@salsita-ai/sdk/common/env'
3
+ ${_}import { createEnvReader } from '@salsita-ai/sdk/common/env'
4
4
 
5
5
  const readRuntimeConfig = createEnvReader(${p})
6
6
 
@@ -2,6 +2,7 @@ import { Branded } from '@salsita-ai/common/utils';
2
2
  import type { ImportedTransformer } from '#package/domain';
3
3
  import type { RuntimeReferenceStore } from '../../../caching/index.js';
4
4
  import type { ApplicationSpec } from '../../../parse-application-files/index.js';
5
+ import { ActionsRuntime } from '../sections/actions-runtime.js';
5
6
  import { AssistantRuntime } from '../sections/assistant-runtime.js';
6
7
  import { ComponentOptics } from '../sections/component-optic.js';
7
8
  import { type ExpressionImplementations, ExpressionRuntime, type InvariantImplementations, type MissingExpression } from '../sections/expression-runtime.js';
@@ -20,6 +21,7 @@ export type ConfiguratorRuntime = Branded<'ConfiguratorRuntime', {
20
21
  readonly themeRuntime: ThemeRuntime;
21
22
  readonly transformersRuntime: TransformersRuntime;
22
23
  readonly assistantRuntime: AssistantRuntime;
24
+ readonly actionsRuntime: ActionsRuntime;
23
25
  }>;
24
26
  export type ConfiguratorRuntimeResult = {
25
27
  readonly ok: true;
@@ -1 +1 @@
1
- import{Branded as t}from"@salsita-ai/common/utils";import{AssistantRuntime as e}from"../sections/assistant-runtime.js";import{ComponentOptics as o}from"../sections/component-optic.js";import{ExpressionRuntime as r}from"../sections/expression-runtime.js";import{PresetRuntime as s}from"../sections/preset-runtime.js";import{ThemeRuntime as i}from"../sections/theme-runtime.js";import{TransformersRuntime as n}from"../sections/transformers-runtime.js";import{ConfiguratorModelRuntime as m}from"./configurator-model-runtime.js";import{ConfiguratorStatesRuntime as u}from"./states-runtime.js";export const ConfiguratorRuntime=(p,c,f,a,g)=>{let R=m(p.configurator,c),j=r(p.configurator,c,f,"configuratorExpressionRuntime",g);return j.ok?{ok:!0,runtime:t({modelRuntime:R,componentOptics:o(c,{components:p.configurator.components,referenceScope:"configuratorRuntime/componentOptics",modelRuntime:R}),presetRuntime:s(c,{referenceScope:"configuratorRuntime/presetRuntime",presets:p.configurator.presets.presets}),statesRuntime:u(p,c),expressionRuntime:j.runtime,themeRuntime:i(p,c),transformersRuntime:n(p,c,a),assistantRuntime:e(p,c)})}:{ok:!1,missingExpressions:j.missing}};
1
+ import{Branded as t}from"@salsita-ai/common/utils";import{ActionsRuntime as o}from"../sections/actions-runtime.js";import{AssistantRuntime as e}from"../sections/assistant-runtime.js";import{ComponentOptics as r}from"../sections/component-optic.js";import{ExpressionRuntime as s}from"../sections/expression-runtime.js";import{PresetRuntime as i}from"../sections/preset-runtime.js";import{ThemeRuntime as n}from"../sections/theme-runtime.js";import{TransformersRuntime as m}from"../sections/transformers-runtime.js";import{ConfiguratorModelRuntime as u}from"./configurator-model-runtime.js";import{ConfiguratorStatesRuntime as c}from"./states-runtime.js";export const ConfiguratorRuntime=(p,a,f,g,R)=>{let j=u(p.configurator,a),x=s(p.configurator,a,f,"configuratorExpressionRuntime",R);return x.ok?{ok:!0,runtime:t({modelRuntime:j,componentOptics:r(a,{components:p.configurator.components,referenceScope:"configuratorRuntime/componentOptics",modelRuntime:j}),presetRuntime:i(a,{referenceScope:"configuratorRuntime/presetRuntime",presets:p.configurator.presets.presets}),statesRuntime:c(p,a),expressionRuntime:x.runtime,themeRuntime:n(p,a),transformersRuntime:m(p,a,g),assistantRuntime:e(p,a),actionsRuntime:o(p.configurator.actions,a)})}:{ok:!1,missingExpressions:x.missing}};
@@ -0,0 +1,14 @@
1
+ import { Branded } from '@salsita-ai/common/utils';
2
+ import type { ActionDefinitions } from '#package/domain';
3
+ import type { RuntimeReferenceStore } from '../../../caching/index.js';
4
+ import type { Actions } from '../../../parse-application-files/index.js';
5
+ /**
6
+ * The declared actions as the runtime spec slice holds them, with change tracking: the definitions
7
+ * are rebuilt only when their declaration changes, so a hot reload of an unrelated section keeps
8
+ * the action system's compiled validators.
9
+ */
10
+ export type ActionsRuntime = Branded<'ActionsRuntime', {
11
+ readonly definitions: ActionDefinitions;
12
+ readonly changed: boolean;
13
+ }>;
14
+ export declare const ActionsRuntime: (actions: Actions, referenceStore: RuntimeReferenceStore) => ActionsRuntime;
@@ -0,0 +1 @@
1
+ import i from"lodash-es/isEqual.js";import{Branded as e}from"@salsita-ai/common/utils";export const ActionsRuntime=(t,n)=>{let o=n.createBuilder("configuratorRuntime/actions",{build:i=>i.definition,getKey:i=>i.definition.name,compare:(e,t)=>i(e.definition,t.definition)}),a=!1,r=new Set,d={};for(let i of t.values()){let e={definition:{name:String(i.name),...void 0===i.description?{}:{description:i.description},params:i.paramsSchema}},t=o.build(e);t.changed&&(a=!0),r.add(o.getKey(e)),d[t.output.name]=t.output}return o.cleanup(r)&&(a=!0),e({definitions:d,changed:a})};
@@ -1,9 +1,10 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
+ import type { AssistantResolvedManifest } from '#package/domain';
2
3
  import type { RuntimeReferenceStore } from '../../../caching/index.js';
3
- import type { ApplicationSpec, AssistantSpec } from '../../../parse-application-files/index.js';
4
- /** Parse-time assistant manifest with change tracking, carried to the runtime spec on hot reload. */
4
+ import type { ApplicationSpec } from '../../../parse-application-files/index.js';
5
+ /** Resolved assistant manifest with change tracking, carried to the runtime spec on hot reload. */
5
6
  export type AssistantRuntime = Branded<'AssistantRuntime', {
6
- readonly assistant: AssistantSpec;
7
+ readonly assistant: AssistantResolvedManifest | null;
7
8
  readonly changed: boolean;
8
9
  }>;
9
10
  export declare const AssistantRuntime: (spec: ApplicationSpec, referenceStore: RuntimeReferenceStore) => AssistantRuntime;
@@ -1 +1 @@
1
- import s from"lodash-es/isEqual.js";import{Branded as t}from"@salsita-ai/common/utils";export const AssistantRuntime=(a,i)=>{let n=i.createBuilder("assistant",{build:s=>s,getKey:()=>"assistant",compare:(t,a)=>s(t,a)}).build({assistant:a.configurator.assistant});return t({assistant:n.output.assistant,changed:n.changed})};
1
+ import s from"lodash-es/isEqual.js";import{Branded as t}from"@salsita-ai/common/utils";export const AssistantRuntime=(a,i)=>{let e=i.createBuilder("assistant",{build:s=>s,getKey:()=>"assistant",compare:(t,a)=>s(t,a)}).build({assistant:a.configurator.assistant?.resolved??null});return t({assistant:e.output.assistant,changed:e.changed})};
@@ -1,3 +1,4 @@
1
+ export { ActionsRuntime } from './actions-runtime.js';
1
2
  export { AssistantRuntime } from './assistant-runtime.js';
2
3
  export { ComponentOptics, type ComponentOptic } from './component-optic.js';
3
4
  export { DataRuntime } from './data-runtime.js';
@@ -1 +1 @@
1
- export{AssistantRuntime}from"./assistant-runtime.js";export{ComponentOptics}from"./component-optic.js";export{DataRuntime}from"./data-runtime.js";export{ExpressionRuntime}from"./expression-runtime.js";export{PresetRuntime}from"./preset-runtime.js";export{ThemeRuntime}from"./theme-runtime.js";export{TransformersRuntime}from"./transformers-runtime.js";export{evaluateStaticMemoEvalPlan,generateMemoEvalPlanRuntime}from"./generate-memo-eval-plan-runtime.js";export{evaluateReflectionConstants,findReflectionConstants}from"./reflection-constants-runtime.js";
1
+ export{ActionsRuntime}from"./actions-runtime.js";export{AssistantRuntime}from"./assistant-runtime.js";export{ComponentOptics}from"./component-optic.js";export{DataRuntime}from"./data-runtime.js";export{ExpressionRuntime}from"./expression-runtime.js";export{PresetRuntime}from"./preset-runtime.js";export{ThemeRuntime}from"./theme-runtime.js";export{TransformersRuntime}from"./transformers-runtime.js";export{evaluateStaticMemoEvalPlan,generateMemoEvalPlanRuntime}from"./generate-memo-eval-plan-runtime.js";export{evaluateReflectionConstants,findReflectionConstants}from"./reflection-constants-runtime.js";
@@ -3,7 +3,7 @@ import { type RuntimeReferenceStore } from '../../caching/index.js';
3
3
  import type { ParseContext, RawProjectFiles, TextFile } from '../../core/index.js';
4
4
  import { type ModuleAnalysis, type ModuleAnalyzer, type WebhookMembership } from './module-analysis.js';
5
5
  /** Known file categories used for path-based sorting. */
6
- export type FileCategory = 'spec' | 'expressions' | 'handlers' | 'elements' | 'transformers' | 'components' | 'invariants' | 'migrations' | 'adminMigrations' | 'adminExpressions' | 'adminInvariants' | 'adminComponents' | 'adminElements' | 'webhooks' | 'locales' | 'mockTemplates' | 'projectFiles' | 'customCode';
6
+ export type FileCategory = 'spec' | 'expressions' | 'actions' | 'handlers' | 'elements' | 'transformers' | 'components' | 'invariants' | 'migrations' | 'adminMigrations' | 'adminExpressions' | 'adminInvariants' | 'adminComponents' | 'adminElements' | 'webhooks' | 'locales' | 'mockTemplates' | 'projectFiles' | 'customCode';
7
7
  /**
8
8
  * A text file categorized by path pattern, with dep-aware change tracking.
9
9
  *
@@ -32,6 +32,8 @@ export type CategorizedFiles = Branded<'CategorizedFiles', {
32
32
  readonly specChanged: boolean;
33
33
  readonly expressions: readonly CategorizedFile[];
34
34
  readonly expressionsChanged: boolean;
35
+ readonly actions: readonly CategorizedFile[];
36
+ readonly actionsChanged: boolean;
35
37
  readonly handlers: readonly CategorizedFile[];
36
38
  readonly handlersChanged: boolean;
37
39
  readonly elements: readonly CategorizedFile[];
@@ -1 +1 @@
1
- import e from"lodash-es/isEqual.js";import{Branded as n}from"@salsita-ai/common/utils";import{computeFileDepHashes as s}from"../../caching/index.js";import{DiagnosticCode as o,diagnosticMessages as a}from"../../errors/index.js";import{findWebhookHandlerRegistration as i}from"./module-analysis.js";import{findWebhookSafetyViolation as t}from"./webhook-safety.js";export const buildProjectFileIndex=e=>new Map([...e.spec,...e.expressions,...e.handlers,...e.elements,...e.transformers,...e.components,...e.invariants,...e.migrations,...e.adminMigrations,...e.adminExpressions,...e.adminInvariants,...e.adminComponents,...e.adminElements,...e.webhooks,...e.locales,...e.mockTemplates,...e.projectFiles,...e.customCode].map(e=>[e.file.name,e]));let r=e=>/\/_[^/]+\//.test(e),m=[{path:"spec/",key:"spec"},{path:"src/admin/expressions/",key:"adminExpressions"},{path:"src/admin/invariants/",key:"adminInvariants"},{path:"src/admin/components/",key:"adminComponents"},{path:"src/admin/elements/",key:"adminElements"},{path:"src/admin/migrations/",key:"adminMigrations"},{path:"src/expressions/",key:"expressions"},{path:"src/handlers/",key:"handlers"},{path:"src/elements/",key:"elements"},{path:"src/transformers/",key:"transformers"},{path:"src/components/",key:"components"},{path:"src/invariants/",key:"invariants"},{path:"src/migrations/",key:"migrations"},{path:"src/webhooks/",key:"webhooks"},{path:"src/locales/",key:"locales"},{path:"mocks/",key:"mockTemplates"}],l=new Set(["package.json",".gitignore","CLAUDE.md",".cursor/rules/phoenix.mdc"]),d=new Set(["migrations","adminMigrations"]),p=m.filter(({path:e,key:n})=>e.startsWith("src/")&&d.has(n)),c=(e,n)=>{let s=e.slice(n.length).split("/");return!(s.length<=1)&&s.slice(0,-1).some(e=>!e.startsWith("_"))},h=/\.(ts|tsx|js|jsx)$/,f=(e,n)=>{if("components"===e||"adminComponents"===e)return n.hasUseWebhookDirective?{membership:"pinned",logSuffix:"webhook ('use webhook' directive)"}:{membership:"frontend",logSuffix:"frontend only (no 'use webhook' directive)"};if("handlers"===e){let e=i(n);return void 0!==e?{membership:"named-handler",logSuffix:`webhook (the ${e} registration)`}:n.hasUseWebhookDirective?{membership:"pinned",logSuffix:"webhook ('use webhook' directive)"}:{membership:"frontend",logSuffix:"frontend only (not a named handler or pin)"}}};export const CategorizedFiles=(i,d,g,u)=>{let k={spec:[],expressions:[],handlers:[],elements:[],transformers:[],components:[],invariants:[],migrations:[],adminMigrations:[],adminExpressions:[],adminInvariants:[],adminComponents:[],adminElements:[],webhooks:[],locales:[],mockTemplates:[],projectFiles:[],customCode:[]},b=[];for(let e of i.files){if("text"!==e.kind)continue;if(r(e.name)){k.customCode.push({file:e,category:"customCode"});continue}if(l.has(e.name)){k.projectFiles.push({file:e,category:"projectFiles"});continue}let n=!1;for(let{path:s,key:o}of m)if(e.name.startsWith(s)){k[o].push({file:e,category:o}),n=!0;break}n||b.push(e.name)}for(let e of b)e.startsWith("src/")&&g.error(o.UNKNOWN_SRC_PATH,a.UNKNOWN_SRC_PATH(e));for(let{path:e,key:n}of p)for(let s of k[n])c(s.file.name,e)&&g.error(o.INVALID_SUBDIRECTORY,a.INVALID_SUBDIRECTORY(s.file.name,e));if(k.webhooks.length>0&&!k.webhooks.some(e=>"src/webhooks/index.ts"===e.file.name)&&g.error(o.MISSING_WEBHOOK_INDEX,a.MISSING_WEBHOOK_INDEX()),g.hasErrors)return;let C=[];for(let e of Object.values(k))for(let n of e)C.push(n.file.name);let v=s(i,C),{analyzer:x,logger:E}=u,y=d.createBuilder("categorizedFiles/moduleAnalysis",{build:e=>{try{return{analysis:x(e.name,e.content)}}catch(e){return{error:e instanceof Error?e.message:String(e)}}},getKey:e=>e.name,compare:(e,n)=>e.content===n.content}),I=new Set,w=e=>{if(!h.test(e.name))return;I.add(e.name);let n=y.build({name:e.name,content:e.content}).output;return void 0!==n.error?void g.error(o.MODULE_ANALYSIS_FAILED,a[o.MODULE_ANALYSIS_FAILED](e.name,n.error)):n.analysis},S={},j={};for(let[e,s]of Object.entries(k)){let o=d.createBuilder(`categorizedFiles/${e}`,{build:e=>e,getKey:e=>e.name,compare:(e,n)=>e.depHash===n.depHash}),a=new Set;S[e]=s.map(e=>{let s=v[e.file.name]??{deps:[],hash:""},{changed:i}=o.build({name:e.file.name,depHash:s.hash});a.add(e.file.name);let t=w(e.file),r=void 0===t?void 0:f(e.category,t);return void 0!==r&&E.debug(`Webhook membership: ${e.file.name} -> ${r.logSuffix}`),n({file:e.file,category:e.category,deps:s.deps,depHash:s.hash,changed:i,analysis:t,webhookMembership:r?.membership})}),j[e]=o.cleanup(a)}y.cleanup(I);let _=(e,n)=>n.some(e=>e.changed)||!0===j[e],F=d.createBuilder("categorizedFiles/envs",{build:e=>e.envs,getKey:()=>"singleton",compare:(n,s)=>e(n.envs,s.envs)}).build({envs:i.envs}),M=n({spec:S.spec,specChanged:_("spec",S.spec),expressions:S.expressions,expressionsChanged:_("expressions",S.expressions),handlers:S.handlers,handlersChanged:_("handlers",S.handlers),elements:S.elements,elementsChanged:_("elements",S.elements),transformers:S.transformers,transformersChanged:_("transformers",S.transformers),components:S.components,componentsChanged:_("components",S.components),invariants:S.invariants,invariantsChanged:_("invariants",S.invariants),migrations:S.migrations,migrationsChanged:_("migrations",S.migrations),adminMigrations:S.adminMigrations,adminMigrationsChanged:_("adminMigrations",S.adminMigrations),adminExpressions:S.adminExpressions,adminExpressionsChanged:_("adminExpressions",S.adminExpressions),adminInvariants:S.adminInvariants,adminInvariantsChanged:_("adminInvariants",S.adminInvariants),adminComponents:S.adminComponents,adminComponentsChanged:_("adminComponents",S.adminComponents),adminElements:S.adminElements,adminElementsChanged:_("adminElements",S.adminElements),webhooks:S.webhooks,webhooksChanged:_("webhooks",S.webhooks),locales:S.locales,localesChanged:_("locales",S.locales),mockTemplates:S.mockTemplates,mockTemplatesChanged:_("mockTemplates",S.mockTemplates),projectFiles:S.projectFiles,projectFilesChanged:_("projectFiles",S.projectFiles),customCode:S.customCode,customCodeChanged:_("customCode",S.customCode),envs:F.output,envsChanged:F.changed}),O=buildProjectFileIndex(M);for(let e of O.values()){if("pinned"!==e.webhookMembership&&"named-handler"!==e.webhookMembership)continue;let n=t(e,O);void 0!==n&&g.error(o.WEBHOOK_UNSAFE_IMPORT,a[o.WEBHOOK_UNSAFE_IMPORT](n.fileName,n.inclusionReason,n.importer,n.specifier))}return M};
1
+ import e from"lodash-es/isEqual.js";import{Branded as n}from"@salsita-ai/common/utils";import{computeFileDepHashes as s}from"../../caching/index.js";import{DiagnosticCode as o,diagnosticMessages as a}from"../../errors/index.js";import{findWebhookHandlerRegistration as i}from"./module-analysis.js";import{findWebhookSafetyViolation as t}from"./webhook-safety.js";export const buildProjectFileIndex=e=>new Map([...e.spec,...e.expressions,...e.actions,...e.handlers,...e.elements,...e.transformers,...e.components,...e.invariants,...e.migrations,...e.adminMigrations,...e.adminExpressions,...e.adminInvariants,...e.adminComponents,...e.adminElements,...e.webhooks,...e.locales,...e.mockTemplates,...e.projectFiles,...e.customCode].map(e=>[e.file.name,e]));let r=e=>/\/_[^/]+\//.test(e),m=[{path:"spec/",key:"spec"},{path:"src/admin/expressions/",key:"adminExpressions"},{path:"src/admin/invariants/",key:"adminInvariants"},{path:"src/admin/components/",key:"adminComponents"},{path:"src/admin/elements/",key:"adminElements"},{path:"src/admin/migrations/",key:"adminMigrations"},{path:"src/expressions/",key:"expressions"},{path:"src/actions/",key:"actions"},{path:"src/handlers/",key:"handlers"},{path:"src/elements/",key:"elements"},{path:"src/transformers/",key:"transformers"},{path:"src/components/",key:"components"},{path:"src/invariants/",key:"invariants"},{path:"src/migrations/",key:"migrations"},{path:"src/webhooks/",key:"webhooks"},{path:"src/locales/",key:"locales"},{path:"mocks/",key:"mockTemplates"}],l=new Set(["package.json",".gitignore","CLAUDE.md",".cursor/rules/phoenix.mdc"]),d=new Set(["migrations","adminMigrations"]),c=m.filter(({path:e,key:n})=>e.startsWith("src/")&&d.has(n)),p=(e,n)=>{let s=e.slice(n.length).split("/");return!(s.length<=1)&&s.slice(0,-1).some(e=>!e.startsWith("_"))},h=/\.(ts|tsx|js|jsx)$/,f=(e,n)=>{if("components"===e||"adminComponents"===e)return n.hasUseWebhookDirective?{membership:"pinned",logSuffix:"webhook ('use webhook' directive)"}:{membership:"frontend",logSuffix:"frontend only (no 'use webhook' directive)"};if("handlers"===e){let e=i(n);return void 0!==e?{membership:"named-handler",logSuffix:`webhook (the ${e} registration)`}:n.hasUseWebhookDirective?{membership:"pinned",logSuffix:"webhook ('use webhook' directive)"}:{membership:"frontend",logSuffix:"frontend only (not a named handler or pin)"}}};export const CategorizedFiles=(i,d,g,u)=>{let k={spec:[],expressions:[],actions:[],handlers:[],elements:[],transformers:[],components:[],invariants:[],migrations:[],adminMigrations:[],adminExpressions:[],adminInvariants:[],adminComponents:[],adminElements:[],webhooks:[],locales:[],mockTemplates:[],projectFiles:[],customCode:[]},b=[];for(let e of i.files){if("text"!==e.kind)continue;if(r(e.name)){k.customCode.push({file:e,category:"customCode"});continue}if(l.has(e.name)){k.projectFiles.push({file:e,category:"projectFiles"});continue}let n=!1;for(let{path:s,key:o}of m)if(e.name.startsWith(s)){k[o].push({file:e,category:o}),n=!0;break}n||b.push(e.name)}for(let e of b)e.startsWith("src/")&&g.error(o.UNKNOWN_SRC_PATH,a.UNKNOWN_SRC_PATH(e));for(let{path:e,key:n}of c)for(let s of k[n])p(s.file.name,e)&&g.error(o.INVALID_SUBDIRECTORY,a.INVALID_SUBDIRECTORY(s.file.name,e));if(k.webhooks.length>0&&!k.webhooks.some(e=>"src/webhooks/index.ts"===e.file.name)&&g.error(o.MISSING_WEBHOOK_INDEX,a.MISSING_WEBHOOK_INDEX()),g.hasErrors)return;let C=[];for(let e of Object.values(k))for(let n of e)C.push(n.file.name);let v=s(i,C),{analyzer:x,logger:y}=u,E=d.createBuilder("categorizedFiles/moduleAnalysis",{build:e=>{try{return{analysis:x(e.name,e.content)}}catch(e){return{error:e instanceof Error?e.message:String(e)}}},getKey:e=>e.name,compare:(e,n)=>e.content===n.content}),I=new Set,w=e=>{if(!h.test(e.name))return;I.add(e.name);let n=E.build({name:e.name,content:e.content}).output;return void 0!==n.error?void g.error(o.MODULE_ANALYSIS_FAILED,a[o.MODULE_ANALYSIS_FAILED](e.name,n.error)):n.analysis},S={},j={};for(let[e,s]of Object.entries(k)){let o=d.createBuilder(`categorizedFiles/${e}`,{build:e=>e,getKey:e=>e.name,compare:(e,n)=>e.depHash===n.depHash}),a=new Set;S[e]=s.map(e=>{let s=v[e.file.name]??{deps:[],hash:""},{changed:i}=o.build({name:e.file.name,depHash:s.hash});a.add(e.file.name);let t=w(e.file),r=void 0===t?void 0:f(e.category,t);return void 0!==r&&y.debug(`Webhook membership: ${e.file.name} -> ${r.logSuffix}`),n({file:e.file,category:e.category,deps:s.deps,depHash:s.hash,changed:i,analysis:t,webhookMembership:r?.membership})}),j[e]=o.cleanup(a)}E.cleanup(I);let _=(e,n)=>n.some(e=>e.changed)||!0===j[e],F=d.createBuilder("categorizedFiles/envs",{build:e=>e.envs,getKey:()=>"singleton",compare:(n,s)=>e(n.envs,s.envs)}).build({envs:i.envs}),M=n({spec:S.spec,specChanged:_("spec",S.spec),expressions:S.expressions,expressionsChanged:_("expressions",S.expressions),actions:S.actions,actionsChanged:_("actions",S.actions),handlers:S.handlers,handlersChanged:_("handlers",S.handlers),elements:S.elements,elementsChanged:_("elements",S.elements),transformers:S.transformers,transformersChanged:_("transformers",S.transformers),components:S.components,componentsChanged:_("components",S.components),invariants:S.invariants,invariantsChanged:_("invariants",S.invariants),migrations:S.migrations,migrationsChanged:_("migrations",S.migrations),adminMigrations:S.adminMigrations,adminMigrationsChanged:_("adminMigrations",S.adminMigrations),adminExpressions:S.adminExpressions,adminExpressionsChanged:_("adminExpressions",S.adminExpressions),adminInvariants:S.adminInvariants,adminInvariantsChanged:_("adminInvariants",S.adminInvariants),adminComponents:S.adminComponents,adminComponentsChanged:_("adminComponents",S.adminComponents),adminElements:S.adminElements,adminElementsChanged:_("adminElements",S.adminElements),webhooks:S.webhooks,webhooksChanged:_("webhooks",S.webhooks),locales:S.locales,localesChanged:_("locales",S.locales),mockTemplates:S.mockTemplates,mockTemplatesChanged:_("mockTemplates",S.mockTemplates),projectFiles:S.projectFiles,projectFilesChanged:_("projectFiles",S.projectFiles),customCode:S.customCode,customCodeChanged:_("customCode",S.customCode),envs:F.output,envsChanged:F.changed}),O=buildProjectFileIndex(M);for(let e of O.values()){if("pinned"!==e.webhookMembership&&"named-handler"!==e.webhookMembership)continue;let n=t(e,O);void 0!==n&&g.error(o.WEBHOOK_UNSAFE_IMPORT,a[o.WEBHOOK_UNSAFE_IMPORT](n.fileName,n.inclusionReason,n.importer,n.specifier))}return M};
@@ -1,4 +1,5 @@
1
1
  export * from './classified-spec-file.js';
2
+ export * from './merged-actions.js';
2
3
  export * from './merged-admin-components.js';
3
4
  export * from './merged-admin-expressions.js';
4
5
  export * from './merged-admin-invariants.js';
@@ -1 +1 @@
1
- export*from"./classified-spec-file.js";export*from"./merged-admin-components.js";export*from"./merged-admin-expressions.js";export*from"./merged-admin-invariants.js";export*from"./merged-admin-states.js";export*from"./merged-admin-model.js";export*from"./merged-components.js";export*from"./merged-configurator-states.js";export*from"./merged-defaults.js";export*from"./merged-model.js";export*from"./merged-admin-pages.js";export*from"./merged-admin-presets.js";export*from"./merged-admin-relations.js";export*from"./merged-assistant.js";export*from"./merged-budgets.js";export*from"./merged-data-schemas.js";export*from"./merged-data-spec.js";export*from"./merged-expressions.js";export*from"./merged-presets.js";export*from"./merged-relations.js";export*from"./merged-spec.js";export*from"./merged-theme.js";export*from"./merged-ui.js";export*from"./merged-transformers.js";export*from"./merged-app-metadata.js";export*from"./merged-infra.js";export*from"./merged-invariants.js";export*from"./merged-chunks.js";
1
+ export*from"./classified-spec-file.js";export*from"./merged-actions.js";export*from"./merged-admin-components.js";export*from"./merged-admin-expressions.js";export*from"./merged-admin-invariants.js";export*from"./merged-admin-states.js";export*from"./merged-admin-model.js";export*from"./merged-components.js";export*from"./merged-configurator-states.js";export*from"./merged-defaults.js";export*from"./merged-model.js";export*from"./merged-admin-pages.js";export*from"./merged-admin-presets.js";export*from"./merged-admin-relations.js";export*from"./merged-assistant.js";export*from"./merged-budgets.js";export*from"./merged-data-schemas.js";export*from"./merged-data-spec.js";export*from"./merged-expressions.js";export*from"./merged-presets.js";export*from"./merged-relations.js";export*from"./merged-spec.js";export*from"./merged-theme.js";export*from"./merged-ui.js";export*from"./merged-transformers.js";export*from"./merged-app-metadata.js";export*from"./merged-infra.js";export*from"./merged-invariants.js";export*from"./merged-chunks.js";
@@ -0,0 +1,11 @@
1
+ import { Branded } from '@salsita-ai/common/utils';
2
+ import type { ParseContext } from '../../core/index.js';
3
+ import type { RawActions } from '../raw-spec/index.js';
4
+ import type { ClassifiedSpecFile } from './classified-spec-file.js';
5
+ /**
6
+ * Merged actions from all spec files; an action name declared in two files is a merge conflict.
7
+ * Actions belong to the configurator domain, so an `actions` block in an admin spec file is reported
8
+ * rather than merged.
9
+ */
10
+ export type MergedActions = Branded<'MergedActions', RawActions>;
11
+ export declare const MergedActions: (files: readonly ClassifiedSpecFile[], ctx: ParseContext) => MergedActions;
@@ -0,0 +1 @@
1
+ import{Branded as e}from"@salsita-ai/common/utils";import{DiagnosticCode as n,diagnosticMessages as o}from"../../errors/index.js";export const MergedActions=(t,i)=>{let r={},a={};for(let e of t)if(e.content.actions){if(e.isAdmin){i.inFile(e.name).at("actions").error(n.ACTIONS_IN_ADMIN_FILE,o.ACTIONS_IN_ADMIN_FILE(e.name));continue}for(let[n,o]of Object.entries(e.content.actions)){let t=a[n];if(t){i.error("MERGE_CONFLICT",`Action "${n}" is declared in both "${t}" and "${e.name}". Each action can only be declared once. Keep one declaration and remove the other.`);continue}r[n]=o,a[n]=e.name}}return e(r)};
@@ -1,6 +1,7 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
2
  import type { ParseContext } from '../../core/index.js';
3
3
  import type { ResolvedSpecFiles } from '../resolve/index.js';
4
+ import { MergedActions } from './merged-actions.js';
4
5
  import { MergedAdminPages } from './merged-admin-pages.js';
5
6
  import { MergedAdminStates } from './merged-admin-states.js';
6
7
  import { MergedAppMetadata } from './merged-app-metadata.js';
@@ -31,6 +32,7 @@ export type MergedSpec = Branded<'MergedSpec', {
31
32
  readonly adminPages: MergedAdminPages;
32
33
  readonly expressions: MergedExpressions;
33
34
  readonly adminExpressions: MergedExpressions;
35
+ readonly actions: MergedActions;
34
36
  readonly invariants: MergedInvariants;
35
37
  readonly adminInvariants: MergedInvariants;
36
38
  readonly relations: MergedRelations;
@@ -1 +1 @@
1
- import{Branded as e}from"@salsita-ai/common/utils";import{classifySpecFile as r}from"./classified-spec-file.js";import{MergedAdminComponents as m}from"./merged-admin-components.js";import{MergedAdminExpressions as o}from"./merged-admin-expressions.js";import{MergedAdminInvariants as s}from"./merged-admin-invariants.js";import{MergedAdminModel as t}from"./merged-admin-model.js";import{MergedAdminPages as d}from"./merged-admin-pages.js";import{MergedAdminPresets as i}from"./merged-admin-presets.js";import{MergedAdminRelations as p}from"./merged-admin-relations.js";import{MergedAdminStates as a}from"./merged-admin-states.js";import{MergedAppMetadata as n}from"./merged-app-metadata.js";import{MergedAssistant as g}from"./merged-assistant.js";import{MergedBudgets as f}from"./merged-budgets.js";import{MergedChunks as j}from"./merged-chunks.js";import{MergedComponents as l}from"./merged-components.js";import{MergedConfiguratorStates as c}from"./merged-configurator-states.js";import{MergedDataSchemas as M}from"./merged-data-schemas.js";import{MergedDataSpec as S}from"./merged-data-spec.js";import{MergedDefaults as u}from"./merged-defaults.js";import{MergedExpressions as h}from"./merged-expressions.js";import{MergedInfra as A}from"./merged-infra.js";import{MergedInvariants as x}from"./merged-invariants.js";import{MergedModel as k}from"./merged-model.js";import{MergedPresets as v}from"./merged-presets.js";import{MergedRelations as C}from"./merged-relations.js";import{MergedTheme as b}from"./merged-theme.js";import{MergedTransformers as q}from"./merged-transformers.js";import{MergedUi as w}from"./merged-ui.js";export const MergedSpec=(y,z)=>{let B=y.map(e=>r(e)),D=B.filter(e=>!e.isAdmin),E=B.filter(e=>e.isAdmin),F=z.startSpan("MergedModel","MergedSpec","merged-model.ts"),G=k(D,z);F();let H=z.startSpan("MergedAdminModel","MergedSpec","merged-admin-model.ts"),I=t(E,z);H();let J=z.startSpan("MergedComponents","MergedSpec","merged-components.ts"),K=l(D,z);J();let L=z.startSpan("MergedAdminComponents","MergedSpec","merged-admin-components.ts"),N=m(E,z);L();let O=v(D),P=i(E,z),Q=d(E,z),R=h(D,z),T=o(E,z),U=x(D,z),V=s(E,z),W=C(D,z),X=p(E,z),Y=u(D,z),Z=u(E,z),$=M(B,z),_=S(B,z),ee=c(D,z),er=a(E,z),em=b(B,z),eo=w(B,z),es=q(B,z),et=n(B,z),ed=A(B,z),ei=f(B,z);return e({model:G,adminModel:I,components:K,adminComponents:N,presets:O,adminPresets:P,adminPages:Q,expressions:R,adminExpressions:T,invariants:U,adminInvariants:V,relations:W,adminRelations:X,defaults:Y,adminDefaults:Z,dataSchemas:$,dataSpec:_,configuratorStates:ee,adminStates:er,theme:em,ui:eo,transformers:es,appMetadata:et,infra:ed,budgets:ei,chunks:j(B,z),assistant:g(B,z)})};
1
+ import{Branded as e}from"@salsita-ai/common/utils";import{classifySpecFile as r}from"./classified-spec-file.js";import{MergedActions as m}from"./merged-actions.js";import{MergedAdminComponents as o}from"./merged-admin-components.js";import{MergedAdminExpressions as s}from"./merged-admin-expressions.js";import{MergedAdminInvariants as t}from"./merged-admin-invariants.js";import{MergedAdminModel as i}from"./merged-admin-model.js";import{MergedAdminPages as d}from"./merged-admin-pages.js";import{MergedAdminPresets as p}from"./merged-admin-presets.js";import{MergedAdminRelations as a}from"./merged-admin-relations.js";import{MergedAdminStates as n}from"./merged-admin-states.js";import{MergedAppMetadata as g}from"./merged-app-metadata.js";import{MergedAssistant as f}from"./merged-assistant.js";import{MergedBudgets as j}from"./merged-budgets.js";import{MergedChunks as l}from"./merged-chunks.js";import{MergedComponents as c}from"./merged-components.js";import{MergedConfiguratorStates as M}from"./merged-configurator-states.js";import{MergedDataSchemas as S}from"./merged-data-schemas.js";import{MergedDataSpec as u}from"./merged-data-spec.js";import{MergedDefaults as h}from"./merged-defaults.js";import{MergedExpressions as A}from"./merged-expressions.js";import{MergedInfra as x}from"./merged-infra.js";import{MergedInvariants as k}from"./merged-invariants.js";import{MergedModel as v}from"./merged-model.js";import{MergedPresets as C}from"./merged-presets.js";import{MergedRelations as b}from"./merged-relations.js";import{MergedTheme as q}from"./merged-theme.js";import{MergedTransformers as w}from"./merged-transformers.js";import{MergedUi as y}from"./merged-ui.js";export const MergedSpec=(z,B)=>{let D=z.map(e=>r(e)),E=D.filter(e=>!e.isAdmin),F=D.filter(e=>e.isAdmin),G=B.startSpan("MergedModel","MergedSpec","merged-model.ts"),H=v(E,B);G();let I=B.startSpan("MergedAdminModel","MergedSpec","merged-admin-model.ts"),J=i(F,B);I();let K=B.startSpan("MergedComponents","MergedSpec","merged-components.ts"),L=c(E,B);K();let N=B.startSpan("MergedAdminComponents","MergedSpec","merged-admin-components.ts"),O=o(F,B);N();let P=C(E),Q=p(F,B),R=d(F,B),T=A(E,B),U=s(F,B),V=m(D,B),W=k(E,B),X=t(F,B),Y=b(E,B),Z=a(F,B),$=h(E,B),_=h(F,B),ee=S(D,B),er=u(D,B),em=M(E,B),eo=n(F,B),es=q(D,B),et=y(D,B),ei=w(D,B),ed=g(D,B),ep=x(D,B),ea=j(D,B);return e({model:H,adminModel:J,components:L,adminComponents:O,presets:P,adminPresets:Q,adminPages:R,expressions:T,adminExpressions:U,actions:V,invariants:W,adminInvariants:X,relations:Y,adminRelations:Z,defaults:$,adminDefaults:_,dataSchemas:ee,dataSpec:er,configuratorStates:em,adminStates:eo,theme:es,ui:et,transformers:ei,appMetadata:ed,infra:ep,budgets:ea,chunks:l(D,B),assistant:f(D,B)})};
@@ -1,5 +1,6 @@
1
1
  export * from './raw-admin-pages.js';
2
2
  export * from './raw-acl.js';
3
+ export * from './raw-actions.js';
3
4
  export * from './raw-assistant.js';
4
5
  export * from './raw-budgets.js';
5
6
  export * from './raw-chunks.js';
@@ -1 +1 @@
1
- export*from"./raw-admin-pages.js";export*from"./raw-acl.js";export*from"./raw-assistant.js";export*from"./raw-budgets.js";export*from"./raw-chunks.js";export*from"./raw-components.js";export*from"./raw-constants.js";export*from"./raw-data.js";export*from"./raw-defaults.js";export*from"./raw-env.js";export*from"./raw-expressions.js";export*from"./raw-invariants.js";export*from"./raw-model.js";export*from"./raw-mock-templates.js";export*from"./raw-presets.js";export*from"./raw-relations.js";export*from"./raw-resources.js";export*from"./raw-spec-file.js";export*from"./raw-states.js";export*from"./raw-transformers.js";export*from"./parse-raw-spec.js";
1
+ export*from"./raw-admin-pages.js";export*from"./raw-acl.js";export*from"./raw-actions.js";export*from"./raw-assistant.js";export*from"./raw-budgets.js";export*from"./raw-chunks.js";export*from"./raw-components.js";export*from"./raw-constants.js";export*from"./raw-data.js";export*from"./raw-defaults.js";export*from"./raw-env.js";export*from"./raw-expressions.js";export*from"./raw-invariants.js";export*from"./raw-model.js";export*from"./raw-mock-templates.js";export*from"./raw-presets.js";export*from"./raw-relations.js";export*from"./raw-resources.js";export*from"./raw-spec-file.js";export*from"./raw-states.js";export*from"./raw-transformers.js";export*from"./parse-raw-spec.js";
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ import { type EnhancedJsonSchemaType } from '../../core/enhanced-json-schema.js';
3
+ /**
4
+ * One action declared under the top-level `actions:` block: a domain operation the project
5
+ * implements in `src/actions/` and the application runs through the action system. `params` and
6
+ * `result` are maps of named enhanced JSON schemas; a `phx:DomainEntityId` param with `references`
7
+ * is typed by the referenced entity type or alias, and a `phx:$DomainEntity` result member with
8
+ * `references` is typed as the enhanced entity. The `description` of the action and of each param
9
+ * and result member documents it in the generated types; whoever exposes the action can reuse it.
10
+ */
11
+ export interface RawActionEntry {
12
+ readonly description?: string;
13
+ readonly params: Readonly<Record<string, EnhancedJsonSchemaType>>;
14
+ readonly result: Readonly<Record<string, EnhancedJsonSchemaType>>;
15
+ }
16
+ /** Record of all action entries keyed by action name, produced by `rawSpecFileSchema` for the `actions:` block. */
17
+ export type RawActions = Readonly<Record<string, RawActionEntry>>;
18
+ export declare const rawActionsSchema: z.ZodType<RawActions, z.ZodTypeDef, unknown>;
@@ -0,0 +1 @@
1
+ import{z as e}from"zod";import{enhancedJsonSchema as r}from"../../core/enhanced-json-schema.js";let a=r=>e.string().regex(/^[A-Za-z][A-Za-z0-9_]*$/,`is not a valid ${r} name: use letters, digits and underscores, starting with a letter, e.g. "partId"`),t=e.object({description:e.string().optional(),params:e.record(a("parameter"),r,{required_error:"is required: declare the parameters of the action as a map of named schemas, empty when it takes none",invalid_type_error:"must be a map of parameter names to JSON schemas"}),result:e.record(a("result member"),r,{required_error:"is required: declare the result of the action as a map of named schemas",invalid_type_error:"must be a map of result member names to JSON schemas"})}).strict();export const rawActionsSchema=e.record(e.string(),t).readonly();
@@ -68,6 +68,16 @@ export interface RawAssistantRecipes {
68
68
  readonly hints?: readonly AssistantHint[];
69
69
  readonly groups: Readonly<Record<string, RawAssistantRecipeGroup | null>>;
70
70
  }
71
+ /**
72
+ * One entry of the assistant `actions` map, keyed by the name of an action declared under the
73
+ * top-level `actions` block: it exposes the action as a `Mutation` field named `as` (the action name
74
+ * by default) with `description` (the action's own by default). An empty entry (`movePartBy:` in
75
+ * YAML) exposes the action with its defaults.
76
+ */
77
+ export interface RawAssistantAction {
78
+ readonly description?: string;
79
+ readonly as?: string;
80
+ }
71
81
  /**
72
82
  * Experimental assistant manifest authored under the `assistant` root key. `entities` whitelists the
73
83
  * stored fields the generated GraphQL schema exposes, keyed by entity type or alias name and then by
@@ -77,8 +87,9 @@ export interface RawAssistantRecipes {
77
87
  * have to be exposed in `entities`. `childRecipes` names, per
78
88
  * entity type or alias, the `childEntityRecipes` groups whose recipes the agent may list and add
79
89
  * with `addChild`. `replaceRecipes` names, per entity type or alias, the `replaceEntityRecipes`
80
- * groups whose recipes the agent may list and replace the entity by with `replaceEntity`. Nothing is
81
- * exposed without an entry.
90
+ * groups whose recipes the agent may list and replace the entity by with `replaceEntity`. `actions`
91
+ * names the declared actions the agent may run as custom mutations. Nothing is exposed without an
92
+ * entry.
82
93
  *
83
94
  * `ai` and `instructions` are for the server only: the provider, model tier and reasoning level the
84
95
  * deployment's assistant runs with, and the integrator's own guidance for it, appended to the system
@@ -90,6 +101,7 @@ export interface RawAssistant {
90
101
  readonly writable?: Readonly<Record<string, Readonly<Record<string, RawAssistantWritableField | null>>>>;
91
102
  readonly childRecipes?: Readonly<Record<string, RawAssistantRecipes>>;
92
103
  readonly replaceRecipes?: Readonly<Record<string, RawAssistantRecipes>>;
104
+ readonly actions?: Readonly<Record<string, RawAssistantAction | null>>;
93
105
  readonly instructions?: string;
94
106
  readonly ai: AssistantAiSettings;
95
107
  }
@@ -1 +1 @@
1
- import{z as t}from"zod";import{ASSISTANT_AI_PROVIDERS as e,ASSISTANT_MODEL_TIERS as o,ASSISTANT_REASONING_LEVELS as i}from"@salsita-ai/contracts/assistant";export const ASSISTANT_OPTION_COMPONENT_TYPES=["materialSwatch","attributeSelection","distanceDimensionSelect"];export const ASSISTANT_HINTS=["sameForAllInstances","constantDuringSession"];let n=t.string().regex(/^(?!__)[_A-Za-z][_0-9A-Za-z]*$/,'must be a GraphQL name: letters, digits and "_", not starting with a digit or "__"'),r=e=>t.enum(e,{errorMap:()=>({message:`must be one of: ${e.join(", ")}`})}),s=t.object({description:t.string().optional(),as:n.optional()}).strict(),a=t.array(r(ASSISTANT_HINTS)),c=t.object({options:t.object({componentType:r(ASSISTANT_OPTION_COMPONENT_TYPES),instanceName:t.string().min(1,"must not be empty; name the component instance that holds the choices"),as:n.optional(),validate:t.boolean().optional(),allowDryRuns:t.boolean().optional(),hints:a.optional()}).strict().optional()}).strict(),l=t.object({as:t.string().trim().min(1,"must not be empty; remove the key to use the instance name").optional(),description:t.string().optional(),allowDryRuns:t.boolean().optional()}).strict(),p=e=>t.object({hints:a.optional(),groups:t.record(t.string(),l.nullable(),{required_error:`is required: the recipe groups of the type go under "groups", keyed by the instance name of a "${e}" component`})}).strict(),m=`is required: declare provider (${e.join(", ")}), model (${o.join(", ")}) and reasoning (${i.join(", ")})`,d=t.object({provider:r(e),model:r(o),reasoning:r(i)},{required_error:m,invalid_type_error:m}).strict();export const rawAssistantSchema=t.object({entities:t.record(t.string(),t.record(t.string(),s.nullable())).optional(),deletable:t.record(t.string(),t.object({}).strict().nullable()).optional(),writable:t.record(t.string(),t.record(t.string(),c.nullable())).optional(),childRecipes:t.record(t.string(),p("childEntityRecipes")).optional(),replaceRecipes:t.record(t.string(),p("replaceEntityRecipes")).optional(),instructions:t.string().trim().min(1,"must not be empty; remove the key when there are no instructions").optional(),ai:d}).strict();
1
+ import{z as t}from"zod";import{ASSISTANT_AI_PROVIDERS as e,ASSISTANT_MODEL_TIERS as o,ASSISTANT_REASONING_LEVELS as i}from"@salsita-ai/contracts/assistant";export const ASSISTANT_OPTION_COMPONENT_TYPES=["materialSwatch","attributeSelection","distanceDimensionSelect"];export const ASSISTANT_HINTS=["sameForAllInstances","constantDuringSession"];let n=t.string().regex(/^(?!__)[_A-Za-z][_0-9A-Za-z]*$/,'must be a GraphQL name: letters, digits and "_", not starting with a digit or "__"'),r=e=>t.enum(e,{errorMap:()=>({message:`must be one of: ${e.join(", ")}`})}),s=t.object({description:t.string().optional(),as:n.optional()}).strict(),a=t.array(r(ASSISTANT_HINTS)),l=t.object({options:t.object({componentType:r(ASSISTANT_OPTION_COMPONENT_TYPES),instanceName:t.string().min(1,"must not be empty; name the component instance that holds the choices"),as:n.optional(),validate:t.boolean().optional(),allowDryRuns:t.boolean().optional(),hints:a.optional()}).strict().optional()}).strict(),c=t.object({as:t.string().trim().min(1,"must not be empty; remove the key to use the instance name").optional(),description:t.string().optional(),allowDryRuns:t.boolean().optional()}).strict(),p=e=>t.object({hints:a.optional(),groups:t.record(t.string(),c.nullable(),{required_error:`is required: the recipe groups of the type go under "groups", keyed by the instance name of a "${e}" component`})}).strict(),m=t.object({description:t.string().optional(),as:n.optional()}).strict(),d=`is required: declare provider (${e.join(", ")}), model (${o.join(", ")}) and reasoning (${i.join(", ")})`,u="must be a positive whole number of input tokens; remove the key to use the default of the server",b=t.object({provider:r(e),model:r(o),reasoning:r(i),maxThreadSize:t.number({invalid_type_error:u}).int(u).positive(u).optional()},{required_error:d,invalid_type_error:d}).strict();export const rawAssistantSchema=t.object({entities:t.record(t.string(),t.record(t.string(),s.nullable())).optional(),deletable:t.record(t.string(),t.object({}).strict().nullable()).optional(),writable:t.record(t.string(),t.record(t.string(),l.nullable())).optional(),childRecipes:t.record(t.string(),p("childEntityRecipes")).optional(),replaceRecipes:t.record(t.string(),p("replaceEntityRecipes")).optional(),actions:t.record(t.string(),m.nullable()).optional(),instructions:t.string().trim().min(1,"must not be empty; remove the key when there are no instructions").optional(),ai:b}).strict();
@@ -2,6 +2,7 @@ import { Branded } from '@salsita-ai/common/utils';
2
2
  import { type EnhancedJsonObjectSchemaType, type ParseContext } from '../../core/index.js';
3
3
  import type { ParsedYamlFile } from './parse-yaml-spec-file.js';
4
4
  import { type RawAcl } from './raw-acl.js';
5
+ import { type RawActions } from './raw-actions.js';
5
6
  import { type RawAdminPages } from './raw-admin-pages.js';
6
7
  import { type RawAssistant } from './raw-assistant.js';
7
8
  import { type RawBudgets } from './raw-budgets.js';
@@ -24,6 +25,7 @@ export interface RawSpecContent {
24
25
  readonly presets?: RawPresets;
25
26
  readonly $data?: RawDataSpec;
26
27
  readonly expressions?: RawExpressions;
28
+ readonly actions?: RawActions;
27
29
  readonly invariants?: RawInvariants;
28
30
  readonly relations?: RawRelations;
29
31
  readonly defaults?: RawDefaults;
@@ -1 +1 @@
1
- import{z as o}from"zod";import{Branded as a}from"@salsita-ai/common/utils";import{enhancedJsonObjectSchema as t,validateNoLegacyCodeRef as e}from"../../core/index.js";import{DiagnosticCode as n,diagnosticMessages as r}from"../../errors/index.js";import{rawAclSchema as i}from"./raw-acl.js";import{rawAdminPagesSchema as s}from"./raw-admin-pages.js";import{rawAssistantSchema as l}from"./raw-assistant.js";import{rawBudgetsSchema as p}from"./raw-budgets.js";import{rawChunksSchema as m}from"./raw-chunks.js";import{rawComponentsSchema as c}from"./raw-components.js";import{rawConstantsSchema as f}from"./raw-constants.js";import{rawDataSpecSchema as d}from"./raw-data.js";import{rawDefaultsSchema as u}from"./raw-defaults.js";import{rawEnvSchema as j}from"./raw-env.js";import{rawExpressionsSchema as w}from"./raw-expressions.js";import{rawInvariantsSchema as b}from"./raw-invariants.js";import{rawModelSchema as g}from"./raw-model.js";import{rawPresetsSchema as S}from"./raw-presets.js";import{rawRelationsSchema as D}from"./raw-relations.js";import{rawResourcesConfigSchema as h,rawResourcesSchema as v}from"./raw-resources.js";import{rawStateValuesSchema as O}from"./raw-states.js";import{rawTransformersSchema as E}from"./raw-transformers.js";export const DATA_SCHEMA_KEYS=["publishedData","sessionData","frontendData","backendData","finalizeData","prefetchedFinalizeData","finalizeResult","callbackData"];let R=o.object({$admin:o.boolean().optional(),model:g.optional(),components:c.optional(),presets:S.optional(),$data:d.optional(),expressions:w.optional(),invariants:b.optional(),constants:f.optional(),relations:D.optional(),defaults:u.optional(),publishedData:t.optional(),sessionData:t.optional(),frontendData:t.optional(),backendData:t.optional(),finalizeData:t.optional(),prefetchedFinalizeData:t.optional(),finalizeResult:t.optional(),callbackData:t.optional(),navigationStates:O.optional(),viewStates:O.optional(),toolStates:O.optional(),exportStates:O.optional(),themePreset:o.string().optional(),themeOptions:o.record(o.unknown()).optional(),preview:o.enum(["always","never","auto","hide"]).optional(),alwaysExpand:o.boolean().optional(),availableLocales:o.array(o.string()).optional(),textLanguages:o.array(o.string()).optional(),transformers:E.optional(),project:o.string().regex(/^[a-z0-9-]{3,}$/,"must be a project slug (lowercase letters, digits and dashes, at least 3) or `default`").optional(),applicationVersion:o.string().optional(),workspace:o.boolean().optional(),webComponentTag:o.string().optional(),pageTitle:o.string().optional(),useAuthHook:o.boolean().optional(),useClerk:o.boolean().optional(),enableAdminRelease:o.boolean().optional(),jsonSchemaValidator:o.enum(["ajv","csp-compatible"]).optional(),gltfDecoder:o.enum(["js","wasm"]).optional(),appLoader:o.enum(["legacy","universal"]).optional(),collectFinalizeData:o.boolean().optional(),env:j.optional(),acl:i.optional(),resources:v.optional(),resourcesConfig:h.optional(),budgets:p.optional(),chunks:m.optional(),assistant:l.optional(),$adminPages:s.optional()}).strict();export const parseRawSpecFile=(o,t)=>{e(o.content,t);let i=R.safeParse(o.content);if(!i.success){for(let o of i.error.issues)t.error(n.SCHEMA_PARSE_ERROR,r.SCHEMA_PARSE_ERROR(o.path.join("."),o.message));return}let{constants:s,...l}=i.data,p=((o,a)=>{let t=Object.fromEntries(Object.entries(o.expressions??{}).map(([o,a])=>[o,{...a}]));if(void 0===o.constants)return Object.keys(t).length>0?t:void 0;for(let[e,i]of Object.entries(o.constants))for(let[o,s]of(t[e]||(t[e]={}),Object.entries(i))){if(void 0!==t[e][o]){a.at("constants",e,o).error(n.CONSTANTS_EXPRESSION_CONFLICT,r[n.CONSTANTS_EXPRESSION_CONFLICT](e,o));continue}t[e][o]={kind:"value",constant:!0,value:s,schema:{}}}return Object.keys(t).length>0?t:void 0})(i.data,t);return a({name:o.name,content:{...l,expressions:p}})};
1
+ import{z as o}from"zod";import{Branded as a}from"@salsita-ai/common/utils";import{enhancedJsonObjectSchema as t,validateNoLegacyCodeRef as e}from"../../core/index.js";import{DiagnosticCode as n,diagnosticMessages as i}from"../../errors/index.js";import{rawAclSchema as r}from"./raw-acl.js";import{rawActionsSchema as s}from"./raw-actions.js";import{rawAdminPagesSchema as l}from"./raw-admin-pages.js";import{rawAssistantSchema as p}from"./raw-assistant.js";import{rawBudgetsSchema as m}from"./raw-budgets.js";import{rawChunksSchema as c}from"./raw-chunks.js";import{rawComponentsSchema as f}from"./raw-components.js";import{rawConstantsSchema as d}from"./raw-constants.js";import{rawDataSpecSchema as u}from"./raw-data.js";import{rawDefaultsSchema as j}from"./raw-defaults.js";import{rawEnvSchema as w}from"./raw-env.js";import{rawExpressionsSchema as b}from"./raw-expressions.js";import{rawInvariantsSchema as g}from"./raw-invariants.js";import{rawModelSchema as S}from"./raw-model.js";import{rawPresetsSchema as D}from"./raw-presets.js";import{rawRelationsSchema as h}from"./raw-relations.js";import{rawResourcesConfigSchema as v,rawResourcesSchema as O}from"./raw-resources.js";import{rawStateValuesSchema as E}from"./raw-states.js";import{rawTransformersSchema as R}from"./raw-transformers.js";export const DATA_SCHEMA_KEYS=["publishedData","sessionData","frontendData","backendData","finalizeData","prefetchedFinalizeData","finalizeResult","callbackData"];let k=o.object({$admin:o.boolean().optional(),model:S.optional(),components:f.optional(),presets:D.optional(),$data:u.optional(),expressions:b.optional(),actions:s.optional(),invariants:g.optional(),constants:d.optional(),relations:h.optional(),defaults:j.optional(),publishedData:t.optional(),sessionData:t.optional(),frontendData:t.optional(),backendData:t.optional(),finalizeData:t.optional(),prefetchedFinalizeData:t.optional(),finalizeResult:t.optional(),callbackData:t.optional(),navigationStates:E.optional(),viewStates:E.optional(),toolStates:E.optional(),exportStates:E.optional(),themePreset:o.string().optional(),themeOptions:o.record(o.unknown()).optional(),preview:o.enum(["always","never","auto","hide"]).optional(),alwaysExpand:o.boolean().optional(),availableLocales:o.array(o.string()).optional(),textLanguages:o.array(o.string()).optional(),transformers:R.optional(),project:o.string().regex(/^[a-z0-9-]{3,}$/,"must be a project slug (lowercase letters, digits and dashes, at least 3) or `default`").optional(),applicationVersion:o.string().optional(),workspace:o.boolean().optional(),webComponentTag:o.string().optional(),pageTitle:o.string().optional(),useAuthHook:o.boolean().optional(),useClerk:o.boolean().optional(),enableAdminRelease:o.boolean().optional(),jsonSchemaValidator:o.enum(["ajv","csp-compatible"]).optional(),gltfDecoder:o.enum(["js","wasm"]).optional(),appLoader:o.enum(["legacy","universal"]).optional(),collectFinalizeData:o.boolean().optional(),env:w.optional(),acl:r.optional(),resources:O.optional(),resourcesConfig:v.optional(),budgets:m.optional(),chunks:c.optional(),assistant:p.optional(),$adminPages:l.optional()}).strict();export const parseRawSpecFile=(o,t)=>{e(o.content,t);let r=k.safeParse(o.content);if(!r.success){for(let o of r.error.issues)t.error(n.SCHEMA_PARSE_ERROR,i.SCHEMA_PARSE_ERROR(o.path.join("."),o.message));return}let{constants:s,...l}=r.data,p=((o,a)=>{let t=Object.fromEntries(Object.entries(o.expressions??{}).map(([o,a])=>[o,{...a}]));if(void 0===o.constants)return Object.keys(t).length>0?t:void 0;for(let[e,r]of Object.entries(o.constants))for(let[o,s]of(t[e]||(t[e]={}),Object.entries(r))){if(void 0!==t[e][o]){a.at("constants",e,o).error(n.CONSTANTS_EXPRESSION_CONFLICT,i[n.CONSTANTS_EXPRESSION_CONFLICT](e,o));continue}t[e][o]={kind:"value",constant:!0,value:s,schema:{}}}return Object.keys(t).length>0?t:void 0})(r.data,t);return a({name:o.name,content:{...l,expressions:p}})};
@@ -1 +1 @@
1
- import{mapSchema as e,resolveProjectFileImport as t,resolveProjectPath as r}from"../../core/index.js";import{DiagnosticCode as o,diagnosticMessages as s}from"../../errors/index.js";import{DATA_SCHEMA_KEYS as m}from"../raw-spec/index.js";let n=(m,n,p,i)=>e(m,(e,m)=>e.import?{...e,import:e.import.map((e,a)=>{if(!e.module.startsWith("."))return e;let c=r(n,e.module),O=i.at(...m,"import",String(a),"module");c.escapedProjectRoot?O.warning(o.IMPORT_MODULE_OUTSIDE_PROJECT,s[o.IMPORT_MODULE_OUTSIDE_PROJECT](e.module,c.path)):t(n,e.module,p)||O.error(o.IMPORT_MODULE_NOT_FOUND,s[o.IMPORT_MODULE_NOT_FOUND](e.module,c.path));let d=c.path.startsWith(".")?c.path:`./${c.path}`;return{...e,module:d}})}:e);export const resolveImportModules=(e,t,r)=>{let o=e.content.model?Object.fromEntries(Object.entries(e.content.model).map(([o,s])=>[o,{...s,...s.commonTypes?{commonTypes:Object.fromEntries(Object.entries(s.commonTypes).map(([s,m])=>[s,n(m,e.name,t,r.at("model",o,"commonTypes",s))]))}:{},...s.shapes?{shapes:Object.fromEntries(Object.entries(s.shapes).map(([s,m])=>[s,Object.fromEntries(Object.entries(m).map(([m,p])=>[m,n(p,e.name,t,r.at("model",o,"shapes",s,m))]))]))}:{}}])):void 0,s=e.content.expressions?Object.fromEntries(Object.entries(e.content.expressions).map(([o,s])=>[o,Object.fromEntries(Object.entries(s).map(([s,m])=>[s,{...m,schema:n(m.schema,e.name,t,r.at("expressions",o,s))}]))])):void 0,p=Object.fromEntries(m.flatMap(o=>{let s,m=e.content[o];return m?[[o,{...s=n(m,e.name,t,r.at(o)),type:"object",properties:s.properties??{},required:s.required??[],additionalProperties:!1}]]:[]}));return{...e.content,...o?{model:o}:{},...s?{expressions:s}:{},...p}};
1
+ import{mapSchema as e,resolveProjectFileImport as t,resolveProjectPath as r}from"../../core/index.js";import{DiagnosticCode as o,diagnosticMessages as s}from"../../errors/index.js";import{DATA_SCHEMA_KEYS as n}from"../raw-spec/index.js";let m=(n,m,a,i)=>e(n,(e,n)=>e.import?{...e,import:e.import.map((e,p)=>{if(!e.module.startsWith("."))return e;let c=r(m,e.module),O=i.at(...n,"import",String(p),"module");c.escapedProjectRoot?O.warning(o.IMPORT_MODULE_OUTSIDE_PROJECT,s[o.IMPORT_MODULE_OUTSIDE_PROJECT](e.module,c.path)):t(m,e.module,a)||O.error(o.IMPORT_MODULE_NOT_FOUND,s[o.IMPORT_MODULE_NOT_FOUND](e.module,c.path));let l=c.path.startsWith(".")?c.path:`./${c.path}`;return{...e,module:l}})}:e);export const resolveImportModules=(e,t,r)=>{let o=e.content.model?Object.fromEntries(Object.entries(e.content.model).map(([o,s])=>[o,{...s,...s.commonTypes?{commonTypes:Object.fromEntries(Object.entries(s.commonTypes).map(([s,n])=>[s,m(n,e.name,t,r.at("model",o,"commonTypes",s))]))}:{},...s.shapes?{shapes:Object.fromEntries(Object.entries(s.shapes).map(([s,n])=>[s,Object.fromEntries(Object.entries(n).map(([n,a])=>[n,m(a,e.name,t,r.at("model",o,"shapes",s,n))]))]))}:{}}])):void 0,s=e.content.expressions?Object.fromEntries(Object.entries(e.content.expressions).map(([o,s])=>[o,Object.fromEntries(Object.entries(s).map(([s,n])=>[s,{...n,schema:m(n.schema,e.name,t,r.at("expressions",o,s))}]))])):void 0,a=e.content.actions?Object.fromEntries(Object.entries(e.content.actions).map(([o,s])=>{let n=(s,n)=>Object.fromEntries(Object.entries(s).map(([s,a])=>[s,m(a,e.name,t,r.at("actions",o,n,s))]));return[o,{...s,params:n(s.params,"params"),result:n(s.result,"result")}]})):void 0,i=Object.fromEntries(n.flatMap(o=>{let s,n=e.content[o];return n?[[o,{...s=m(n,e.name,t,r.at(o)),type:"object",properties:s.properties??{},required:s.required??[],additionalProperties:!1}]]:[]}));return{...e.content,...o?{model:o}:{},...s?{expressions:s}:{},...a?{actions:a}:{},...i}};
@@ -1 +1 @@
1
- import{Branded as e}from"@salsita-ai/common/utils";import{AppMetadata as s,BundleSizeBudgets as a,DataSpec as t,Infra as n}from"../sections/index.js";import{AdminSpec as r}from"./admin-spec/index.js";import{ConfiguratorSpec as o}from"./configurator-spec/index.js";export const ApplicationSpec=(i,l)=>{let{merged:m,migrationFiles:p,adminMigrationFiles:d,transformerFiles:c,phxDefinitions:u,evalExpressionParser:w}=i,f=s(m.appMetadata,l);if(!f)return;let S=t({mergedDataSpec:m.dataSpec,mergedChunks:m.chunks},l);if(!S||l.hasErrors)return;let g=l.startSpan("ConfiguratorSpec","ApplicationSpec"),h=o({rawModel:m.model,rawPresets:m.presets,rawExpressions:m.expressions,rawInvariants:m.invariants,rawRelations:m.relations,rawDefaults:m.defaults,dataSchemas:m.dataSchemas,dataSpec:S,appMetadata:f,rawTheme:m.theme,rawUi:m.ui,rawTransformers:m.transformers,rawAssistant:m.assistant,migrationFiles:p,transformerFiles:c,rawComponents:m.components,rawStates:m.configuratorStates,phxDefinitions:u,evalExpressionParser:w,label:"model"},l);if(g(),!h)return;let M=l.startSpan("AdminSpec","ApplicationSpec"),x=r({rawModel:m.adminModel,rawPresets:m.adminPresets,rawExpressions:m.adminExpressions,rawInvariants:m.adminInvariants,rawRelations:m.adminRelations,rawDefaults:m.adminDefaults,migrationFiles:d,rawComponents:m.adminComponents,rawAdminPages:m.adminPages,rawStates:m.adminStates,dataSpec:S,phxDefinitions:u,evalExpressionParser:w,label:"adminModel",requireMigrationFiles:!0},l);if(M(),!x)return;let v=n(m.infra,l);if(!v)return;let y=a(m.budgets);return l.count("entityTypes",h.latestModel.entityTypes.length),l.count("aliases",h.latestModel.aliases.size),l.count("commonTypes",h.latestModel.commonTypes.size),l.count("shapes",h.latestModel.shapes.size),l.count("components",h.components.length),l.count("modelVersions",h.resolvedVersions.versionedModels.length),l.count("presets",h.presets.presets.length),e({configurator:h,admin:x,appMetadata:f,infra:v,budgets:y,dataSpec:S})};
1
+ import{Branded as e}from"@salsita-ai/common/utils";import{AppMetadata as s,BundleSizeBudgets as a,DataSpec as t,Infra as n}from"../sections/index.js";import{AdminSpec as r}from"./admin-spec/index.js";import{ConfiguratorSpec as o}from"./configurator-spec/index.js";export const ApplicationSpec=(i,l)=>{let{merged:m,migrationFiles:p,adminMigrationFiles:d,transformerFiles:c,phxDefinitions:u,evalExpressionParser:w}=i,f=s(m.appMetadata,l);if(!f)return;let S=t({mergedDataSpec:m.dataSpec,mergedChunks:m.chunks},l);if(!S||l.hasErrors)return;let g=l.startSpan("ConfiguratorSpec","ApplicationSpec"),h=o({rawModel:m.model,rawPresets:m.presets,rawExpressions:m.expressions,rawActions:m.actions,rawInvariants:m.invariants,rawRelations:m.relations,rawDefaults:m.defaults,dataSchemas:m.dataSchemas,dataSpec:S,appMetadata:f,rawTheme:m.theme,rawUi:m.ui,rawTransformers:m.transformers,rawAssistant:m.assistant,migrationFiles:p,transformerFiles:c,rawComponents:m.components,rawStates:m.configuratorStates,phxDefinitions:u,evalExpressionParser:w,label:"model"},l);if(g(),!h)return;let M=l.startSpan("AdminSpec","ApplicationSpec"),x=r({rawModel:m.adminModel,rawPresets:m.adminPresets,rawExpressions:m.adminExpressions,rawInvariants:m.adminInvariants,rawRelations:m.adminRelations,rawDefaults:m.adminDefaults,migrationFiles:d,rawComponents:m.adminComponents,rawAdminPages:m.adminPages,rawStates:m.adminStates,dataSpec:S,phxDefinitions:u,evalExpressionParser:w,label:"adminModel",requireMigrationFiles:!0},l);if(M(),!x)return;let A=n(m.infra,l);if(!A)return;let v=a(m.budgets);return l.count("entityTypes",h.latestModel.entityTypes.length),l.count("aliases",h.latestModel.aliases.size),l.count("commonTypes",h.latestModel.commonTypes.size),l.count("shapes",h.latestModel.shapes.size),l.count("components",h.components.length),l.count("modelVersions",h.resolvedVersions.versionedModels.length),l.count("presets",h.presets.presets.length),e({configurator:h,admin:x,appMetadata:f,infra:A,budgets:v,dataSpec:S})};
@@ -1,12 +1,12 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
2
  import { type EvalExpressionParser, type ParseContext, type PhoenixDefinitions } from '../../../../core/index.js';
3
3
  import type { CategorizedFile } from '../../../categorize/index.js';
4
- import type { MergedAssistant, MergedComponents, MergedConfiguratorStates, MergedDataSchemas, MergedDefaults, MergedExpressions, MergedInvariants, MergedModel, MergedPresets, MergedRelations, MergedTheme, MergedTransformers, MergedUi } from '../../../merge/index.js';
4
+ import type { MergedActions, MergedAssistant, MergedComponents, MergedConfiguratorStates, MergedDataSchemas, MergedDefaults, MergedExpressions, MergedInvariants, MergedModel, MergedPresets, MergedRelations, MergedTheme, MergedTransformers, MergedUi } from '../../../merge/index.js';
5
5
  import { Components } from '../../components/index.js';
6
6
  import { Expressions } from '../../expressions/index.js';
7
7
  import { Invariants } from '../../invariants/index.js';
8
8
  import { ConfigurationSchema, DataSchemas, Defaults, ModelVersion, Presets } from '../../model/index.js';
9
- import { type AppMetadata, AssistantServerSettings, AssistantSpec, type DataSpec, Theme, Transformers, Ui } from '../../sections/index.js';
9
+ import { Actions, type AppMetadata, AssistantServerSettings, AssistantSpec, type DataSpec, Theme, Transformers, Ui } from '../../sections/index.js';
10
10
  import { ResolvedVersions } from '../resolved-versions.js';
11
11
  import { ConfiguratorStates } from './states.js';
12
12
  export type ConfiguratorSpec = Branded<'ConfiguratorSpec', {
@@ -17,6 +17,7 @@ export type ConfiguratorSpec = Branded<'ConfiguratorSpec', {
17
17
  readonly configurationSchema: ConfigurationSchema;
18
18
  readonly presets: Presets;
19
19
  readonly expressions: Expressions;
20
+ readonly actions: Actions;
20
21
  readonly invariants: Invariants;
21
22
  readonly dataSchemas: DataSchemas;
22
23
  readonly defaults: Defaults;
@@ -31,6 +32,7 @@ interface ConfiguratorSpecProps {
31
32
  readonly rawModel: MergedModel;
32
33
  readonly rawPresets: MergedPresets;
33
34
  readonly rawExpressions: MergedExpressions;
35
+ readonly rawActions: MergedActions;
34
36
  readonly rawInvariants: MergedInvariants;
35
37
  readonly rawRelations: MergedRelations;
36
38
  readonly rawDefaults: MergedDefaults;
@@ -1 +1 @@
1
- import{Branded as e}from"@salsita-ai/common/utils";import{DiagnosticCode as s,diagnosticMessages as t}from"../../../../errors/index.js";import{Components as r,UserComponents as o}from"../../components/index.js";import{Expressions as i}from"../../expressions/index.js";import{Invariants as n}from"../../invariants/index.js";import{ConfigurationSchema as a,DataSchemas as m,Defaults as p,ModelVersion as l,Presets as d}from"../../model/index.js";import{Relations as f}from"../../relations/index.js";import{AssistantServerSettings as x,AssistantSpec as S,Theme as v,Transformers as c,Ui as j}from"../../sections/index.js";import{ResolvedVersions as u}from"../resolved-versions.js";import{ConfiguratorStates as g}from"./states.js";export const ConfiguratorSpec=(C,I)=>{let{rawModel:M,rawPresets:h,rawExpressions:y,rawInvariants:E,rawRelations:N,rawDefaults:T,dataSchemas:L,dataSpec:G,appMetadata:O,rawTheme:_,rawUi:b,rawTransformers:w,rawAssistant:A,migrationFiles:D,transformerFiles:V,rawComponents:k,phxDefinitions:K,evalExpressionParser:q,label:z}=C;if(0===Object.keys(M).length)return void I.at(z).error(s.MISSING_MODEL,t.MISSING_MODEL(z));M.latest||I.at(z).error(s.MISSING_LATEST,t.MISSING_LATEST(z));let B=new Map;for(let[e,s]of Object.entries(M)){let t=l(e,s,K,I.at(z,e));t&&B.set(t.versionKey,t)}if(I.hasErrors)return;let F=u(B,D,I);if(!F)return;let H=F.versionedModels.find(e=>e.isLatest)?.modelVersion;if(!H)return;let J=F.latestVersion,P=a(H,J),Q=f(N,H,I),R=n({rawInvariants:E,rawExpressions:y,rawRelations:N,rawComponents:k},H,I),U=d(h,H,Q,I),W=o(k,{allNames:H.allNames,resolvedShapes:H.resolvedShapes,parsingContext:I}),X=p(T,H,I.at(z,"defaults")),Y=c(w,V,I),Z=i({rawExpressions:y,inferredExpressions:[...Q.expressions,...R.expressions,...W.expressions]},{latestModel:H,aliases:H.aliases,entityTypes:H.entityTypes,evalExpressionParser:q,parsingContext:I}),$=r({userComponents:W.components,generatedComponents:Q.components,invariantComponents:R.components},{aliases:H.aliases,parsingContext:I}),ee=m({merged:L,dataSpec:G,appMetadata:O,phxDefinitions:K,parsingContext:I}),es=g(C.rawStates,I.at("states"));if(void 0!==X&&void 0!==Z&&void 0!==$&&void 0!==ee)return e({latestModel:H,schemaVersion:J,dataSchemas:ee,resolvedVersions:F,components:$,configurationSchema:P,presets:U,expressions:Z,invariants:R,defaults:X,states:es,theme:v(_),ui:j(b),transformers:Y,assistant:S(A,{model:H,states:es,phxDefinitions:K,expressions:Z,components:$},I),assistantServerSettings:x(A)})};
1
+ import{Branded as e}from"@salsita-ai/common/utils";import{DiagnosticCode as s,diagnosticMessages as t}from"../../../../errors/index.js";import{Components as o,UserComponents as r}from"../../components/index.js";import{Expressions as i}from"../../expressions/index.js";import{Invariants as n}from"../../invariants/index.js";import{ConfigurationSchema as a,DataSchemas as m,Defaults as p,ModelVersion as l,Presets as d}from"../../model/index.js";import{Relations as f}from"../../relations/index.js";import{Actions as x,AssistantServerSettings as S,AssistantSpec as v,Theme as c,Transformers as j,Ui as u}from"../../sections/index.js";import{ResolvedVersions as g}from"../resolved-versions.js";import{ConfiguratorStates as C}from"./states.js";export const ConfiguratorSpec=(I,M)=>{let{rawModel:h,rawPresets:y,rawExpressions:E,rawActions:N,rawInvariants:T,rawRelations:L,rawDefaults:G,dataSchemas:O,dataSpec:_,appMetadata:b,rawTheme:w,rawUi:A,rawTransformers:D,rawAssistant:V,migrationFiles:k,transformerFiles:K,rawComponents:q,phxDefinitions:z,evalExpressionParser:B,label:F}=I;if(0===Object.keys(h).length)return void M.at(F).error(s.MISSING_MODEL,t.MISSING_MODEL(F));h.latest||M.at(F).error(s.MISSING_LATEST,t.MISSING_LATEST(F));let H=new Map;for(let[e,s]of Object.entries(h)){let t=l(e,s,z,M.at(F,e));t&&H.set(t.versionKey,t)}if(M.hasErrors)return;let J=g(H,k,M);if(!J)return;let P=J.versionedModels.find(e=>e.isLatest)?.modelVersion;if(!P)return;let Q=J.latestVersion,R=a(P,Q),U=f(L,P,M),W=n({rawInvariants:T,rawExpressions:E,rawRelations:L,rawComponents:q},P,M),X=d(y,P,U,M),Y=r(q,{allNames:P.allNames,resolvedShapes:P.resolvedShapes,parsingContext:M}),Z=p(G,P,M.at(F,"defaults")),$=j(D,K,M),ee=i({rawExpressions:E,inferredExpressions:[...U.expressions,...W.expressions,...Y.expressions]},{latestModel:P,aliases:P.aliases,entityTypes:P.entityTypes,evalExpressionParser:B,parsingContext:M}),es=o({userComponents:Y.components,generatedComponents:U.components,invariantComponents:W.components},{aliases:P.aliases,parsingContext:M}),et=m({merged:O,dataSpec:_,appMetadata:b,phxDefinitions:z,parsingContext:M}),eo=C(I.rawStates,M.at("states")),er=x(N,{latestModel:P,phxDefinitions:z},M.at("actions"));if(void 0!==Z&&void 0!==ee&&void 0!==er&&void 0!==es&&void 0!==et)return e({latestModel:P,schemaVersion:Q,dataSchemas:et,resolvedVersions:J,components:es,configurationSchema:R,presets:X,expressions:ee,actions:er,invariants:W,defaults:Z,states:eo,theme:c(w),ui:u(A),transformers:$,assistant:v(V,{model:P,states:eo,phxDefinitions:z,expressions:ee,components:es,actions:er},M),assistantServerSettings:S(V)})};
@@ -1 +1,2 @@
1
+ export * from './schema-ref-resolver.js';
1
2
  export * from './validate-schema-refs.js';
@@ -1 +1 @@
1
- export*from"./validate-schema-refs.js";
1
+ export*from"./schema-ref-resolver.js";export*from"./validate-schema-refs.js";
@@ -0,0 +1,23 @@
1
+ import { type EnhancedJsonSchemaType, type PhoenixDefinitions } from '../../../core/index.js';
2
+ /**
3
+ * Resolves a `$ref` to the schema it names, through phoenix definitions and common types.
4
+ * `undefined` for a ref that names nothing known.
5
+ */
6
+ export type SchemaRefResolver = ($ref: string) => EnhancedJsonSchemaType | undefined;
7
+ /** The name of the common type a `common:` or internal `#/model/{version}/commonTypes/{name}` ref names. */
8
+ export declare const commonTypeRefName: ($ref: string) => string | undefined;
9
+ /** The phoenix definition a ref names: full URL, `phx:`, or `#/definitions/` as used inside the definitions. */
10
+ export declare const phxDefinitionRefName: ($ref: string) => string | undefined;
11
+ /**
12
+ * Resolves refs to phoenix definitions (full URL, `phx:`, or `#/definitions/` as used inside the
13
+ * definitions themselves) and to common types (`common:` or internal path).
14
+ */
15
+ export declare const createSchemaRefResolver: (commonTypes: ReadonlyMap<string, {
16
+ readonly schema: EnhancedJsonSchemaType;
17
+ }>, phxDefinitions: PhoenixDefinitions) => SchemaRefResolver;
18
+ /**
19
+ * Whether a value of the schema can be `null`: a `null` type, enum value or const, a nullable
20
+ * `anyOf`/`oneOf` member, or a ref to a nullable schema. A ref that cannot be resolved counts as
21
+ * nullable, since nothing proves otherwise; a ref cycle does not.
22
+ */
23
+ export declare const isNullableSchema: (schema: EnhancedJsonSchemaType, resolveRef: SchemaRefResolver, visitedRefs?: ReadonlySet<string>) => boolean;
@@ -0,0 +1 @@
1
+ import{isArray as e}from"@salsita-ai/common/utils";import{COMMON_SHORT_PREFIX as t,DEFINITION_REF_PATTERN as n,INTERNAL_REF_PATTERN as o,extractPhxDefName as l}from"../../../core/index.js";export const commonTypeRefName=e=>e.startsWith(t)?e.slice(t.length):o.exec(e)?.[2];export const phxDefinitionRefName=e=>l(e)??n.exec(e)?.[1];export const createSchemaRefResolver=(e,t)=>n=>{let o=phxDefinitionRefName(n);if(void 0!==o)return t[o]?.schema;let l=commonTypeRefName(n);return void 0===l?void 0:e.get(l)?.schema};export const isNullableSchema=(t,n,o=new Set)=>{if(t.$ref){if(o.has(t.$ref))return!1;let e=n(t.$ref);return void 0===e||isNullableSchema(e,n,new Set([...o,t.$ref]))}let l=[...t.anyOf??[],...t.oneOf??[]];return"null"===t.type||e(t.type)&&t.type.includes("null")||t.enum?.includes(null)===!0||null===t.const||l.some(e=>isNullableSchema(e,n,o))};
@@ -0,0 +1,10 @@
1
+ import { Branded } from '@salsita-ai/common/utils';
2
+ import type { ParseContext } from '../../../../core/index.js';
3
+ /**
4
+ * Branded action name: camelCase without a prefix (e.g. "movePartBy", "swapCabinets"). An action is
5
+ * a named domain operation, so its name doubles as the key of its implementation and of its
6
+ * generated types.
7
+ */
8
+ export type ActionName = Branded<'ActionName', string>;
9
+ /** Validates that a name follows the action naming convention (camelCase, no prefix). */
10
+ export declare const ActionName: (name: string, ctx: ParseContext) => ActionName | undefined;
@@ -0,0 +1 @@
1
+ import{Branded as o}from"@salsita-ai/common/utils";import{DiagnosticCode as r,diagnosticMessages as t}from"../../../../errors/index.js";let i=/^[a-z][A-Za-z0-9]*$/;export const ActionName=(A,e)=>i.test(A)?o(A):void e.error(r.INVALID_ACTION_NAME,t.INVALID_ACTION_NAME(A));
@@ -1,3 +1,4 @@
1
+ export * from './action-name.js';
1
2
  export * from './alias-name.js';
2
3
  export * from './entity-or-alias-name.js';
3
4
  export * from './entity-type-name.js';
@@ -1 +1 @@
1
- export*from"./alias-name.js";export*from"./entity-or-alias-name.js";export*from"./entity-type-name.js";export*from"./expression-name.js";export*from"./instance-name.js";export*from"./invariant-name.js";export*from"./relation-name.js";export*from"./shape-property-name.js";export*from"./violation-type-name.js";
1
+ export*from"./action-name.js";export*from"./alias-name.js";export*from"./entity-or-alias-name.js";export*from"./entity-type-name.js";export*from"./expression-name.js";export*from"./instance-name.js";export*from"./invariant-name.js";export*from"./relation-name.js";export*from"./shape-property-name.js";export*from"./violation-type-name.js";