@salsita-ai/sdk 0.50.0-develop.d37f5db8ff → 0.50.0-develop.d7ce7f7857

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 (429) hide show
  1. package/dist/application-spec/core/components/component-filter.d.ts +53 -0
  2. package/dist/application-spec/core/components/component-filter.js +1 -0
  3. package/dist/application-spec/core/components/index.d.ts +2 -0
  4. package/dist/application-spec/core/components/index.js +1 -0
  5. package/dist/application-spec/core/components/sdk-code-ref.d.ts +9 -0
  6. package/dist/application-spec/core/components/sdk-code-ref.js +1 -0
  7. package/dist/application-spec/core/enhanced-json-value.d.ts +0 -68
  8. package/dist/application-spec/core/enhanced-json-value.js +1 -1
  9. package/dist/application-spec/core/expressions/index.d.ts +2 -0
  10. package/dist/application-spec/core/expressions/index.js +1 -0
  11. package/dist/application-spec/core/expressions/relation-expression-params.d.ts +11 -0
  12. package/dist/application-spec/core/expressions/sdk-expression-implementation.d.ts +24 -0
  13. package/dist/application-spec/core/expressions/sdk-expression-implementation.js +1 -0
  14. package/dist/application-spec/core/index.d.ts +2 -0
  15. package/dist/application-spec/core/index.js +1 -1
  16. package/dist/application-spec/core/json-value.d.ts +1 -1
  17. package/dist/application-spec/{core → enhanced-json}/eval-to-constant.d.ts +1 -1
  18. package/dist/application-spec/enhanced-json/index.d.ts +4 -0
  19. package/dist/application-spec/enhanced-json/index.js +1 -0
  20. package/dist/application-spec/enhanced-json/is-enhanced-json-array.d.ts +2 -0
  21. package/dist/application-spec/enhanced-json/is-enhanced-json-array.js +1 -0
  22. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.d.ts +18 -0
  23. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.js +1 -0
  24. package/dist/application-spec/enhanced-json/schema-from-value.d.ts +24 -0
  25. package/dist/application-spec/enhanced-json/schema-from-value.js +1 -0
  26. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.d.ts +14 -0
  27. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.js +1 -0
  28. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.d.ts +12 -0
  29. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.js +1 -0
  30. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.d.ts +13 -0
  31. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.js +1 -0
  32. package/dist/application-spec/errors/diagnostic-codes.d.ts +5 -0
  33. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  34. package/dist/application-spec/errors/diagnostic-messages.d.ts +8 -0
  35. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  36. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  37. package/dist/application-spec/generate-application/code/standalone-app-files.d.ts +2 -2
  38. package/dist/application-spec/generate-application/code/standalone-app-files.js +1 -1
  39. package/dist/application-spec/generate-application/code/templates/configurator-config.js +6 -4
  40. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.js +4 -4
  41. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.d.ts +4 -2
  42. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.js +1 -1
  43. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +43 -45
  44. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +3 -0
  45. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-relation-expressions.js +1 -1
  46. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.d.ts +6 -8
  47. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.js +11 -11
  48. package/dist/application-spec/generate-application/code/templates/domain-spec/index.d.ts +1 -1
  49. package/dist/application-spec/generate-application/code/templates/domain-spec/index.js +1 -1
  50. package/dist/application-spec/generate-application/code/templates/domain-spec.js +12 -12
  51. package/dist/application-spec/generate-application/code/templates/globals.js +5 -4
  52. package/dist/application-spec/generate-application/code/templates/index.d.ts +0 -1
  53. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  54. package/dist/application-spec/generate-application/code/templates/package-json.js +1 -1
  55. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +8 -2
  56. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  57. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +10 -3
  58. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -2
  59. package/dist/application-spec/generate-application/code/templates/webhook-index.d.ts +6 -1
  60. package/dist/application-spec/generate-application/code/templates/webhook-index.js +10 -1
  61. package/dist/application-spec/generate-application/index.d.ts +2 -0
  62. package/dist/application-spec/generate-application/index.js +1 -1
  63. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.d.ts +6 -2
  64. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.js +1 -1
  65. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +8 -3
  66. package/dist/application-spec/generate-application/runtime/application-runtime.js +1 -1
  67. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +5 -3
  68. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +1 -1
  69. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.d.ts +43 -0
  70. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.js +1 -0
  71. package/dist/application-spec/generate-application/runtime/factory-data/index.d.ts +3 -0
  72. package/dist/application-spec/generate-application/runtime/factory-data/index.js +1 -0
  73. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.d.ts +13 -0
  74. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.js +1 -0
  75. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.d.ts +16 -0
  76. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.js +1 -0
  77. package/dist/application-spec/generate-application/runtime/migrations/index.d.ts +1 -0
  78. package/dist/application-spec/generate-application/runtime/migrations/index.js +1 -0
  79. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.d.ts +53 -0
  80. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.js +1 -0
  81. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.d.ts +1 -1
  82. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +1 -1
  83. package/dist/application-spec/generate-application/runtime/sections/component-optic.d.ts +2 -1
  84. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  85. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +2 -4
  86. package/dist/application-spec/index.d.ts +1 -0
  87. package/dist/application-spec/index.js +1 -1
  88. package/dist/application-spec/parse-application-files/categorize/categorize-files.d.ts +6 -0
  89. package/dist/application-spec/parse-application-files/categorize/categorize-files.js +1 -1
  90. package/dist/application-spec/parse-application-files/categorize/module-analysis.d.ts +1 -1
  91. package/dist/application-spec/parse-application-files/categorize/module-analysis.js +1 -1
  92. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +16 -3
  93. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  94. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.js +1 -1
  95. package/dist/application-spec/parse-application-files/spec/components/component-entry.d.ts +1 -9
  96. package/dist/application-spec/parse-application-files/spec/components/component-entry.js +1 -1
  97. package/dist/application-spec/parse-application-files/spec/components/component-filter.d.ts +1 -54
  98. package/dist/application-spec/parse-application-files/spec/components/component-filter.js +1 -1
  99. package/dist/application-spec/parse-application-files/spec/components/index.d.ts +1 -1
  100. package/dist/application-spec/parse-application-files/spec/components/index.js +1 -1
  101. package/dist/application-spec/parse-application-files/spec/expressions/expression.d.ts +1 -28
  102. package/dist/application-spec/parse-application-files/spec/expressions/expression.js +1 -1
  103. package/dist/application-spec/parse-application-files/spec/expressions/expressions.d.ts +1 -1
  104. package/dist/application-spec/parse-application-files/spec/expressions/expressions.js +1 -1
  105. package/dist/application-spec/parse-application-files/spec/expressions/index.d.ts +0 -1
  106. package/dist/application-spec/parse-application-files/spec/expressions/index.js +1 -1
  107. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.js +1 -1
  108. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.js +1 -1
  109. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +3 -3
  110. package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
  111. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  112. package/dist/application-spec/parse-application-files/spec/sections/infra.d.ts +2 -0
  113. package/dist/application-spec/parse-application-files/spec/sections/infra.js +1 -1
  114. package/dist/client/phoenix-api.d.ts +96 -0
  115. package/dist/configurator/application-runtime/extensions/create-configurator-extensions.js +1 -1
  116. package/dist/configurator/application-runtime/extensions/selectors.d.ts +3 -1
  117. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  118. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +32 -1
  119. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  120. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +7 -1
  121. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
  122. package/dist/configurator/application-runtime/extensions/systems/drag-and-drop-system/drag-and-drop-system.d.ts +3 -3
  123. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +20 -4
  124. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  125. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.d.ts +11 -0
  126. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.js +1 -0
  127. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.d.ts +2 -2
  128. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  129. package/dist/configurator/common/configurator-interface.d.ts +26 -1
  130. package/dist/configurator/common/configurator-interface.js +1 -1
  131. package/dist/configurator/common/frontend-analytics.d.ts +2 -0
  132. package/dist/configurator/common/frontend-analytics.js +1 -1
  133. package/dist/configurator/common/index.d.ts +2 -0
  134. package/dist/configurator/common/index.js +1 -1
  135. package/dist/configurator/common/use-finalize-action.d.ts +31 -0
  136. package/dist/configurator/common/use-finalize-action.js +1 -0
  137. package/dist/configurator/common/use-reset-camera.d.ts +6 -0
  138. package/dist/configurator/common/use-reset-camera.js +1 -0
  139. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +1 -1
  140. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +2 -2
  141. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  142. package/dist/configurator/pages/configurator-layout-name.d.ts +2 -0
  143. package/dist/configurator/pages/configurator-layout-name.js +1 -0
  144. package/dist/configurator/pages/default-configurator-elements.d.ts +7 -0
  145. package/dist/configurator/pages/default-configurator-elements.js +1 -0
  146. package/dist/configurator/pages/index.d.ts +1 -0
  147. package/dist/configurator/pages/index.js +1 -1
  148. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragHandle.d.ts +1 -1
  149. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragSceneHandle.d.ts +1 -1
  150. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicator.d.ts +1 -1
  151. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicatorInternal.d.ts +1 -1
  152. package/dist/configurator/scene/scene-entity/drag-and-drop/shared.d.ts +2 -2
  153. package/dist/configurator/scene/scene-entity/drag-and-drop/use-drag-object.d.ts +1 -1
  154. package/dist/configurator/scene/scene-entity/materials/RemoteReplacedMaterial.js +1 -1
  155. package/dist/configurator/scene/scene-entity/objects/SceneEntityObjectTextDecal.d.ts +1 -1
  156. package/dist/configurator/ui/assistant/AssistantChips.d.ts +8 -2
  157. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  158. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +1 -1
  159. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  160. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  161. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +13 -0
  162. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -0
  163. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.d.ts +22 -0
  164. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.js +1 -0
  165. package/dist/configurator/ui/assistant/entity-link/entity-link-state.d.ts +27 -0
  166. package/dist/configurator/ui/assistant/entity-link/entity-link-state.js +1 -0
  167. package/dist/configurator/ui/assistant/entity-link/entity-link-target.d.ts +5 -0
  168. package/dist/configurator/ui/assistant/entity-link/entity-link-target.js +1 -0
  169. package/dist/configurator/ui/assistant/entity-link/index.d.ts +3 -0
  170. package/dist/configurator/ui/assistant/entity-link/index.js +1 -0
  171. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.d.ts +1 -0
  172. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.js +1 -0
  173. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.d.ts +11 -0
  174. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.js +1 -0
  175. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.d.ts +101 -0
  176. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.js +16 -0
  177. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.d.ts +1 -0
  178. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.js +1 -0
  179. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.d.ts +4 -4
  180. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.js +1 -1
  181. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.d.ts +3 -6
  182. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.js +1 -1
  183. package/dist/configurator/ui/configurator-layout/slots/slots.d.ts +1 -0
  184. package/dist/configurator/ui/configurator-layout/slots/slots.js +1 -1
  185. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.d.ts +0 -74
  186. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -20
  187. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.d.ts +2 -2
  188. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -2
  189. package/dist/docs/dimensions/3d-scene-integration/dimension-indicators.mdx +2 -2
  190. package/dist/docs/dimensions/3d-scene-integration/editable-angle-indicator.mdx +1 -1
  191. package/dist/docs/dimensions/3d-scene-integration/editable-distance-dimension-indicator.mdx +1 -1
  192. package/dist/docs/dimensions/3d-scene-integration/list-selector-dimension-indicator.mdx +1 -1
  193. package/dist/docs/drag-and-drop/drag-handle.mdx +1 -1
  194. package/dist/docs/drag-and-drop/hotspot-handle.mdx +1 -1
  195. package/dist/docs/drag-and-drop/planes.mdx +1 -1
  196. package/dist/docs/drag-and-drop/rotatable.mdx +2 -2
  197. package/dist/docs/index.json +42 -1
  198. package/dist/docs/layouts/custom-layout.mdx +2125 -0
  199. package/dist/docs/layouts/header/fixed.mdx +2 -2
  200. package/dist/docs/layouts/header/floating.mdx +2 -2
  201. package/dist/docs/layouts/sidebar/in-a-custom-layout.mdx +380 -0
  202. package/dist/docs/layouts/sidebar-footer/basic.mdx +32 -77
  203. package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
  204. package/dist/docs/other-features/transformers.mdx +4 -0
  205. package/dist/docs/phoenix/application-states.mdx +9 -7
  206. package/dist/docs/phoenix/configurator-interface.mdx +140 -18
  207. package/dist/docs/phoenix/domain-model.mdx +1 -1
  208. package/dist/docs/phoenix/finalization.mdx +1 -1
  209. package/dist/docs/phoenix/layout-slots.mdx +116 -0
  210. package/dist/docs/phoenix/phoenix-cli.mdx +25 -7
  211. package/dist/docs/phoenix/project-structure.mdx +10 -4
  212. package/dist/docs/phoenix/sdk-builder-workflow.mdx +1 -1
  213. package/dist/docs/phoenix/testing.mdx +140 -0
  214. package/dist/docs/phoenix/webhook-membership.mdx +10 -9
  215. package/dist/docs/phoenix/webhooks.mdx +18 -1
  216. package/dist/domain/admin-domain/implementation/common-admin-publish.d.ts +1 -2
  217. package/dist/domain/admin-domain/index.js +1 -1
  218. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +1 -1
  219. package/dist/domain/application/application-config.d.ts +7 -3
  220. package/dist/domain/application/assistant/assistant-fields.d.ts +12 -0
  221. package/dist/domain/application/assistant/assistant-fields.js +1 -0
  222. package/dist/domain/application/assistant/assistant-manifest.d.ts +9 -1
  223. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +38 -2
  224. package/dist/domain/application/assistant/assistant-resolved-manifest.js +1 -1
  225. package/dist/domain/application/assistant/build-assistant-lenses.d.ts +14 -0
  226. package/dist/domain/application/assistant/build-assistant-lenses.js +5 -0
  227. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  228. package/dist/domain/application/assistant/create-assistant-execution-schema.d.ts +32 -0
  229. package/dist/domain/application/assistant/create-assistant-execution-schema.js +1 -0
  230. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  231. package/dist/domain/application/assistant/index.d.ts +6 -1
  232. package/dist/domain/application/assistant/index.js +1 -1
  233. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +20 -0
  234. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.js +1 -0
  235. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +10 -0
  236. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -0
  237. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +48 -0
  238. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -0
  239. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +15 -0
  240. package/dist/domain/application/assistant/session-setup/create-session-assistant.js +1 -0
  241. package/dist/domain/application/assistant/session-setup/index.d.ts +4 -0
  242. package/dist/domain/application/assistant/session-setup/index.js +1 -0
  243. package/dist/domain/application/configurator-builder.d.ts +5 -2
  244. package/dist/domain/application/configurator-builder.js +1 -1
  245. package/dist/domain/application/create-initial-published-data.d.ts +5 -5
  246. package/dist/domain/application/index.d.ts +0 -1
  247. package/dist/domain/application/index.js +1 -1
  248. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +1 -1
  249. package/dist/domain/application/published-data/map-published-data.d.ts +7 -3
  250. package/dist/domain/core/component/domain-component-optic.d.ts +1 -2
  251. package/dist/domain/core/component/system-component-filter.d.ts +15 -2
  252. package/dist/domain/core/expression/constant-expressions.d.ts +16 -8
  253. package/dist/domain/core/invariant/violation.d.ts +50 -2
  254. package/dist/domain/core/invariant/violation.js +1 -1
  255. package/dist/domain/core/model/model.d.ts +1 -1
  256. package/dist/domain/core/recipe/recipes.d.ts +18 -50
  257. package/dist/domain/core/recipe/recipes.js +1 -1
  258. package/dist/domain/core/relation/all-of-type-relation.d.ts +8 -21
  259. package/dist/domain/core/relation/all-of-type-relation.js +1 -1
  260. package/dist/domain/core/relation/direct-relation.d.ts +13 -24
  261. package/dist/domain/core/relation/index.d.ts +0 -1
  262. package/dist/domain/core/relation/indirect-relation.d.ts +12 -67
  263. package/dist/domain/core/relation/indirect-relation.js +1 -1
  264. package/dist/domain/core/relation/relation-factory.d.ts +19 -15
  265. package/dist/domain/core/relation/relation-factory.js +1 -1
  266. package/dist/domain/core/state/state.d.ts +1 -1
  267. package/dist/domain/domain-context/index.d.ts +1 -1
  268. package/dist/domain/domain-context/undo-system.d.ts +28 -1
  269. package/dist/domain/domain-context/undo-system.js +1 -1
  270. package/dist/domain/domain-runtime/access/selectors.d.ts +9 -0
  271. package/dist/domain/domain-runtime/access/selectors.js +1 -1
  272. package/dist/domain/domain-runtime/access/types.d.ts +2 -0
  273. package/dist/domain/domain-runtime/access/types.js +1 -1
  274. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +14 -13
  275. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  276. package/dist/domain/domain-runtime/domain-context/types.d.ts +4 -1
  277. package/dist/domain/domain-runtime/domain-runtime.d.ts +32 -16
  278. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +19 -0
  279. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -0
  280. package/dist/domain/domain-runtime/errors/implementation-error.d.ts +46 -0
  281. package/dist/domain/domain-runtime/errors/implementation-error.js +1 -0
  282. package/dist/domain/domain-runtime/errors/implementation-errors.d.ts +13 -0
  283. package/dist/domain/domain-runtime/errors/implementation-errors.js +1 -0
  284. package/dist/domain/domain-runtime/errors/index.d.ts +4 -0
  285. package/dist/domain/domain-runtime/errors/index.js +1 -0
  286. package/dist/domain/domain-runtime/errors/to-implementation-errors.d.ts +10 -0
  287. package/dist/domain/domain-runtime/errors/to-implementation-errors.js +1 -0
  288. package/dist/domain/domain-runtime/index.d.ts +1 -0
  289. package/dist/domain/domain-runtime/index.js +1 -1
  290. package/dist/domain/domain-runtime/spec/initialize.d.ts +11 -0
  291. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  292. package/dist/domain/domain-runtime/spec/module-checks/project-modules.d.ts +8 -1
  293. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +1 -1
  294. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.js +1 -1
  295. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -1
  296. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.d.ts +7 -7
  297. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +1 -1
  298. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.js +1 -1
  299. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  300. package/dist/domain/domain-runtime/spec/types.d.ts +2 -0
  301. package/dist/domain/extensions/attribute-switch.d.ts +1 -1
  302. package/dist/domain/extensions/attribute-switch.js +1 -1
  303. package/dist/domain/extensions/canvas-config.d.ts +1 -1
  304. package/dist/domain/extensions/client-side-image.d.ts +2 -2
  305. package/dist/domain/extensions/client-side-image.js +1 -1
  306. package/dist/domain/extensions/common/angle-indicator-schema.d.ts +2 -2
  307. package/dist/domain/extensions/common/dimension-indicator-schema.d.ts +2 -2
  308. package/dist/domain/extensions/editable-angle-indicator.d.ts +1 -1
  309. package/dist/domain/extensions/editable-distance-dimension-indicator.d.ts +1 -1
  310. package/dist/domain/extensions/editable-offset-indicator.d.ts +1 -1
  311. package/dist/domain/extensions/editable-offset-indicator.js +1 -1
  312. package/dist/domain/extensions/fit-selection-orthographic-camera-component.js +1 -1
  313. package/dist/domain/extensions/fit-selection-perspective-camera-component.js +1 -1
  314. package/dist/domain/extensions/horizontal-tabs.d.ts +2 -2
  315. package/dist/domain/extensions/list-selector-dimension-indicator.d.ts +1 -1
  316. package/dist/domain/extensions/navigation-steps.d.ts +2 -2
  317. package/dist/domain/extensions/offset-indicator.js +1 -1
  318. package/dist/domain/extensions/rotation-handle.d.ts +2 -2
  319. package/dist/domain/extensions/save-template-thumbnail.d.ts +2 -2
  320. package/dist/domain/extensions/save-template-thumbnail.js +1 -1
  321. package/dist/domain/extensions/scene-entity-animation.js +1 -1
  322. package/dist/domain/mocks/create-mock-domain-context.d.ts +1 -1
  323. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +18 -9
  324. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  325. package/dist/domain/mocks/create-mock-domain.d.ts +1 -1
  326. package/dist/domain/mocks/create-mock-domain.js +1 -1
  327. package/dist/domain/mocks/create-mock-state.d.ts +2 -2
  328. package/dist/domain/mocks/create-test-application-config.d.ts +59 -0
  329. package/dist/domain/mocks/create-test-application-config.js +1 -0
  330. package/dist/domain/mocks/index.d.ts +1 -0
  331. package/dist/domain/mocks/index.js +1 -1
  332. package/dist/domain/projections/blender-projections/camera.d.ts +1 -1
  333. package/dist/domain/system-components/application-config.d.ts +2 -2
  334. package/dist/domain/system-components/child-entity-selection.js +1 -1
  335. package/dist/domain/system-components/collision-box-geometry.d.ts +4 -2
  336. package/dist/domain/system-components/collision-geometry.d.ts +4 -2
  337. package/dist/domain/system-components/collision-point-geometry.d.ts +4 -2
  338. package/dist/domain/system-components/common/material-override-schema.d.ts +2 -2
  339. package/dist/domain/system-components/common/recipes.d.ts +21 -3
  340. package/dist/domain/system-components/common/recipes.js +1 -1
  341. package/dist/domain/system-components/constraint.d.ts +10 -23
  342. package/dist/domain/system-components/drag-handle.d.ts +1 -1
  343. package/dist/domain/system-components/drag-handle.js +1 -1
  344. package/dist/domain/system-components/fit-entity-orthographic-camera-component.js +1 -1
  345. package/dist/domain/system-components/fit-entity-perspective-camera-component.js +1 -1
  346. package/dist/domain/system-components/fit-root-orthographic-camera-component.js +1 -1
  347. package/dist/domain/system-components/fit-root-perspective-camera-component.js +1 -1
  348. package/dist/domain/system-components/hotspot-drag-handle.d.ts +1 -1
  349. package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
  350. package/dist/domain/system-components/material-swatch.js +1 -1
  351. package/dist/domain/system-components/scene-entity-material-override.d.ts +1 -1
  352. package/dist/domain/system-components/scene-entity-object-material-override.d.ts +1 -1
  353. package/dist/domain/system-components/scene-entity-object-text-decal.d.ts +1 -1
  354. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.d.ts +1 -1
  355. package/dist/domain/system-components/scene-entity-transimissive-material-override.d.ts +1 -1
  356. package/dist/domain/system-components/static-orthographic-camera-component.js +1 -1
  357. package/dist/domain/system-components/static-perspective-camera-component.js +1 -1
  358. package/dist/domain/utils/eval-cache.d.ts +1 -1
  359. package/dist/domain/utils/map-nested-object.d.ts +1 -1
  360. package/dist/editor/domain-editors/use-implementation-files.d.ts +1 -2
  361. package/dist/editor/mocks/EditorMockContext.js +1 -1
  362. package/dist/i18n/locales/cs/messages.js +1 -1
  363. package/dist/i18n/locales/da/messages.js +1 -1
  364. package/dist/i18n/locales/de/messages.js +1 -1
  365. package/dist/i18n/locales/de-AT/messages.js +1 -1
  366. package/dist/i18n/locales/en/messages.js +1 -1
  367. package/dist/i18n/locales/en-AU/messages.js +1 -1
  368. package/dist/i18n/locales/en-GB/messages.js +1 -1
  369. package/dist/i18n/locales/es/messages.js +1 -1
  370. package/dist/i18n/locales/fr/messages.js +1 -1
  371. package/dist/i18n/locales/hu/messages.js +1 -1
  372. package/dist/i18n/locales/it/messages.js +1 -1
  373. package/dist/i18n/locales/nl/messages.js +1 -1
  374. package/dist/i18n/locales/pl/messages.js +1 -1
  375. package/dist/i18n/locales/pt/messages.js +1 -1
  376. package/dist/i18n/locales/ro/messages.js +1 -1
  377. package/dist/i18n/locales/sk/messages.js +1 -1
  378. package/dist/i18n/locales/tr/messages.js +1 -1
  379. package/dist/legacy/domain-cli/gen/configurator-builder.js +13 -12
  380. package/dist/legacy/domain-cli/gen/constant-expressions.js +1 -1
  381. package/dist/legacy/domain-cli/gen/defaults.js +1 -7
  382. package/dist/legacy/domain-cli/gen/relations.js +1 -1
  383. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  384. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  385. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +81 -68
  386. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  387. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  388. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  389. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +7 -1
  390. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +18 -16
  391. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-configurator.js +14 -12
  392. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +13 -11
  393. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-configurator.js +13 -11
  394. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  395. package/dist/phoenix/commands/check.js +1 -1
  396. package/dist/phoenix/commands/deploy.js +1 -1
  397. package/dist/phoenix/commands/dev.js +5 -5
  398. package/dist/phoenix/commands/fix.js +1 -1
  399. package/dist/phoenix/services/application-spec-project-watcher.d.ts +2 -0
  400. package/dist/phoenix/services/application-spec-project-watcher.js +3 -3
  401. package/dist/phoenix/services/source-archive.d.ts +1 -0
  402. package/dist/phoenix/services/source-archive.js +1 -1
  403. package/dist/phoenix/services/swc.js +1 -1
  404. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +2 -0
  405. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  406. package/dist/react-sdk/application-runtime/routing/access-service.d.ts +1 -0
  407. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +33 -16
  408. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  409. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.d.ts +30 -0
  410. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.js +1 -0
  411. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +4 -4
  412. package/dist/react-sdk/domain-context/index.d.ts +2 -1
  413. package/dist/react-sdk/domain-context/index.js +1 -1
  414. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +11 -0
  415. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  416. package/dist/react-sdk/domain-controls/hooks/use-angle-dimension.d.ts +1 -1
  417. package/dist/ui-sdk/theme/types.d.ts +1 -1
  418. package/dist/webhook/builders/webhook-builder.js +1 -1
  419. package/package.json +33 -26
  420. package/schema/domain-spec.json +1115 -209
  421. package/dist/application-spec/generate-application/code/templates/webhook-implementation.d.ts +0 -1
  422. package/dist/application-spec/generate-application/code/templates/webhook-implementation.js +0 -7
  423. package/dist/domain/application/resource-builder.d.ts +0 -13
  424. package/dist/domain/application/resource-builder.js +0 -1
  425. package/dist/domain/core/relation/relation-implementation.d.ts +0 -7
  426. /package/dist/{domain/core/relation/relation-implementation.js → application-spec/core/expressions/relation-expression-params.js} +0 -0
  427. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.d.ts +0 -0
  428. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.js +0 -0
  429. /package/dist/application-spec/{core → enhanced-json}/eval-to-constant.js +0 -0
@@ -0,0 +1,10 @@
1
+ import type { AssistantResolvedManifest } from '../assistant-resolved-manifest.js';
2
+ import { type AssistantSetupManifest, type AssistantSetupSettings } from './assistant-setup-manifest.js';
3
+ /** A project returned a setup that broadens or invalidates its declared whitelist. */
4
+ export declare class AssistantSetupError extends Error {
5
+ constructor(key: string, reason: string);
6
+ }
7
+ export declare const applyAssistantSetup: (resolved: AssistantResolvedManifest, settings: AssistantSetupSettings | null, returned: AssistantSetupManifest | null) => {
8
+ readonly resolved: AssistantResolvedManifest;
9
+ readonly settings: AssistantSetupSettings | null;
10
+ } | null;
@@ -0,0 +1 @@
1
+ import{ASSISTANT_AI_PROVIDERS as e,ASSISTANT_MODEL_TIERS as t,ASSISTANT_REASONING_LEVELS as i}from"@salsita-ai/contracts/assistant";import{describeAssistantValues as s,mergeAssistantFields as n,resolveAssistantField as o}from"../assistant-fields.js";import{ASSISTANT_HINTS as a}from"../assistant-resolved-manifest.js";import{projectAssistantSetupManifest as r}from"./assistant-setup-manifest.js";export class AssistantSetupError extends Error{constructor(e,t){super(`${e}: ${t}`),this.name="AssistantSetupError"}}let l=(e,t)=>{throw new AssistantSetupError(e,t)},p=(e,t,i)=>{for(let s of((null===t||"object"!=typeof t||Array.isArray(t))&&l(i,"expected an object; omit an entry to remove it"),Object.keys(t)))Object.hasOwn(e,s)||l(`${i}.${s}`,"not declared in the spec; remove this key")},d=(e,t)=>Object.hasOwn(e,t)?e[t]:void 0,c=(e,t,i)=>(void 0!==e&&"string"!=typeof e&&l(`${i}.description`,"expected a string"),e??t),u=(e,t,i)=>(void 0!==e&&!1!==e&&l(`${i}.allowDryRuns`,"can only disable dry-runs; omit this flag or set false"),!1!==e&&t);export const applyAssistantSetup=(f,m,b)=>{if(null===b)return null;let y=r(f,m),g=f.declarations;p({entities:{},deletable:{},writable:{},childRecipes:{},replaceRecipes:{},actions:{},instructions:"",ai:{}},b,"assistant"),p(y.entities,b.entities,"assistant.entities"),p(y.deletable,b.deletable,"assistant.deletable"),p(y.writable,b.writable,"assistant.writable"),p(y.actions,b.actions,"assistant.actions");let v=Object.fromEntries(Object.entries(b.entities).map(([e,t])=>{let i=`assistant.entities.${e}`;p(y.entities[e],t,i);let n=g.entities[e];return[e,Object.entries(t).map(([e,t])=>{p({description:""},t,`${i}.${e}`);let o=n.find(t=>t.source===e),a=c(t.description,o.valueDescription,`${i}.${e}`);return{...o,valueDescription:a,description:s(a,o.enumValues),describedByManifest:void 0!==t.description||o.describedByManifest}})]})),w=(e,t,i)=>l(`assistant.entities.${e}`,`conflicting sources ${t} and ${i}`),$=n([],d(v,"AnyDomainEntity")??[],()=>void 0,w),h=new Map([["AnyDomainEntity",$]]);for(let e of Object.keys(f.aliases))"AnyDomainEntity"!==e&&h.set(e,n([$],d(v,e)??[],()=>void 0,w));for(let e of f.entityTypes){let t=Object.entries(f.aliases).filter(([t,i])=>"AnyDomainEntity"!==t&&i.includes(e));h.set(e,n([$,...t.map(([e])=>h.get(e)??[])],d(v,e)??[],t=>g.enumValues[e]?.[t],w))}let j=Object.fromEntries([...h].map(([e,t])=>[e,t.map(t=>o(t,d(v,e)??[]))])),O=new Map,x=new Map;for(let[e,t]of Object.entries(b.writable)){let i=`assistant.writable.${e}`;for(let[s,n]of(p(y.writable[e],t,i),Object.entries(t))){let t=`${i}.${s}`,o=g.writable[e][s];for(let[e,{field:i,options:a,exposedDescription:r}]of(p(Object.values(o.members).some(e=>e.options)?{options:{}}:{},n,t),void 0!==n.options&&(p({validate:!0,allowDryRuns:!1},n.options,`${t}.options`),void 0!==n.options.validate&&!0!==n.options.validate&&l(`${t}.options.validate`,"can only enable validation; omit this flag or set true"),u(n.options.allowDryRuns,!0,`${t}.options`)),Object.entries(o.members))){let p=d(v,e)?.find(e=>e.source===s)?.name??h.get(e)?.find(e=>e.source===s)?.name,c=p??s;void 0===p&&h.get(e)?.some(e=>e.name===s&&e.source!==s)&&l(t,`narrowing leaves ${e}.${s} bound to another read field; retain its original exposure or remove this writable property`);let f=O.get(e)??new Map;if([...f.values()].some(e=>e.name===c&&e.property!==s)&&l(t,`narrowing maps multiple writable properties to ${e}.${c}; retain their original exposures or remove the conflicting property`),f.has(s)||f.set(s,{...i,name:c,...void 0===p?{}:{description:r}}),O.set(e,f),a){let i=o.defaultOptionsName?`${c}Options`:a.options.edgeName;x.get(e)?.some(e=>e.options.edgeName===i||e.options.field===c)&&l(`${t}.options`,`narrowing duplicates options edge ${e}.${i}; retain the original field exposures or remove the conflicting writable declaration`),x.set(e,[...x.get(e)??[],{hints:a.hints,options:{...a.options,field:c,edgeName:i,validate:n.options?.validate??a.options.validate,dryRuns:u(n.options?.allowDryRuns,a.options.dryRuns,`${t}.options`)}}])}}}}for(let[e,t]of Object.entries(f.optionsEdges))for(let i of t){let t=f.writableTypes.find(t=>t.entityType===e)?.fields.find(e=>e.name===i.options.field)?.property;if(i.options.validate&&t&&O.get(e)?.has(t)&&!x.get(e)?.some(i=>i.options.field===O.get(e)?.get(t)?.name&&i.options.validate)){let i=Object.keys(b.writable).find(i=>Object.hasOwn(b.writable[i],t)&&g.writable[i]?.[t]?.members[e]);l(`assistant.writable.${i}.${t}`,`cannot remove declared validation while another declaration keeps ${e}.${t} writable; remove all writable declarations for it`)}}let R=e=>{p(y[e],b[e],`assistant.${e}`);let t=new Map;for(let[i,s]of Object.entries(b[e])){let n=`assistant.${e}.${i}`;p({groups:{}},s,n),p(y[e][i].groups,s.groups,`${n}.groups`);let o=g[e][i],r=Object.entries(s.groups).map(([e,t])=>{let i=`${n}.groups.${e}`;p({description:"",allowDryRuns:!1},t,i);let s=o.groups.find(t=>t.instanceName===e);return{...s,description:c(t.description,s.description,i),dryRuns:u(t.allowDryRuns,s.dryRuns,i)}});for(let e of f.entityTypes.includes(i)?[i]:f.aliases[i]??[]){let i=t.get(e);t.set(e,{groups:[...i?.groups??[],...r],hints:a.filter(e=>o.hints.includes(e)||i?.hints.includes(e))})}}return Object.fromEntries(f.entityTypes.flatMap(e=>{let i=t.get(e);return i?.groups.length?[[e,i]]:[]}))};for(let[e,t]of Object.entries(b.deletable))p({},t,`assistant.deletable.${e}`);let E=new Set(Object.keys(b.deletable).flatMap(e=>f.entityTypes.includes(e)?[e]:f.aliases[e]??[])),T=f.actionFields.flatMap(e=>{let t=d(b.actions,e.actionName);if(void 0===t)return[];let i=`assistant.actions.${e.actionName}`;return p({description:""},t,i),[{...e,description:c(t.description,e.description,i)}]}),D=m;if(m){void 0!==b.ai&&p({...m.ai,maxThreadSize:void 0},b.ai,"assistant.ai");let s={...m.ai,...Object.fromEntries(Object.entries(b.ai??{}).filter(([,e])=>void 0!==e))};e.includes(s.provider)&&t.includes(s.model)&&i.includes(s.reasoning)||l("assistant.ai","expected a supported provider, model and reasoning level"),void 0!==s.maxThreadSize&&(!Number.isInteger(s.maxThreadSize)||s.maxThreadSize<=0)&&l("assistant.ai.maxThreadSize","expected a positive whole number of input tokens"),void 0!==b.instructions&&"string"!=typeof b.instructions&&l("assistant.instructions","expected a string"),D={instructions:""===b.instructions?null:b.instructions??m.instructions,ai:s}}return{resolved:{...f,fields:j,deletableTypes:f.entityTypes.filter(e=>E.has(e)),writableTypes:f.entityTypes.flatMap(e=>{let t=[...O.get(e)?.values()??[]];return t.length?[{entityType:e,fields:t}]:[]}),optionsEdges:Object.fromEntries(x),childRecipes:R("childRecipes"),replaceRecipes:R("replaceRecipes"),actionFields:T},settings:D}};
@@ -0,0 +1,48 @@
1
+ import type { AssistantAiSettings } from '@salsita-ai/contracts/assistant';
2
+ import type { $DomainEntity, ActionTypes, DomainEntity } from '../../../core/index.js';
3
+ import type { AssistantResolvedManifest } from '../assistant-resolved-manifest.js';
4
+ /** Declaration-shaped whitelist a project may narrow; bindings and hints stay internal. */
5
+ export interface AssistantSetupManifest<ENTITIES extends DomainEntity<string> = DomainEntity<string>, $MAP extends Record<keyof $MAP, $DomainEntity<ENTITIES>> = Record<string, $DomainEntity<ENTITIES>>, ACTIONS extends ActionTypes = ActionTypes> {
6
+ readonly entities: string extends keyof $MAP ? Readonly<Record<string, Readonly<Record<string, AssistantSetupField>>>> : {
7
+ readonly [TYPE in keyof $MAP]?: Readonly<Partial<Record<Exclude<keyof $MAP[TYPE], 'id' | 'type' | '_raw' | 'meta'>, AssistantSetupField>>>;
8
+ };
9
+ readonly deletable: Readonly<Record<string, Readonly<Record<never, never>>>>;
10
+ readonly writable: string extends ENTITIES['type'] ? Readonly<Record<string, Readonly<Record<string, AssistantSetupWritableField>>>> : {
11
+ readonly [TYPE in keyof $MAP]?: Readonly<Partial<Record<Exclude<keyof $MAP[TYPE]['_raw'], 'id' | 'type'>, AssistantSetupWritableField>>>;
12
+ };
13
+ readonly childRecipes: Readonly<Record<string, AssistantSetupRecipes>>;
14
+ readonly replaceRecipes: Readonly<Record<string, AssistantSetupRecipes>>;
15
+ readonly actions: {
16
+ readonly [ACTION in keyof ACTIONS]?: AssistantSetupField;
17
+ };
18
+ readonly instructions?: string;
19
+ readonly ai?: Partial<AssistantAiSettings>;
20
+ }
21
+ /** Optional description override; omission preserves the declaration's effective text. */
22
+ export interface AssistantSetupField {
23
+ readonly description?: string;
24
+ }
25
+ /** Only stricter validation and disabled dry-runs are configurable. */
26
+ export interface AssistantSetupOptions {
27
+ readonly validate?: true;
28
+ readonly allowDryRuns?: false;
29
+ }
30
+ /** Keeping a property also keeps its declared options binding and baseline restrictions. */
31
+ export interface AssistantSetupWritableField {
32
+ readonly options?: AssistantSetupOptions;
33
+ }
34
+ /** A recipe group's editable description and dry-run restriction. */
35
+ export interface AssistantSetupRecipeGroup {
36
+ readonly description?: string;
37
+ readonly allowDryRuns?: false;
38
+ }
39
+ /** Only explicitly declared groups appear, under their original entity or alias key. */
40
+ export interface AssistantSetupRecipes {
41
+ readonly groups: Readonly<Record<string, AssistantSetupRecipeGroup>>;
42
+ }
43
+ /** Server settings baseline, kept out of the browser spec. */
44
+ export interface AssistantSetupSettings {
45
+ readonly instructions?: string | null;
46
+ readonly ai: AssistantAiSettings;
47
+ }
48
+ export declare const projectAssistantSetupManifest: (resolved: AssistantResolvedManifest, settings: AssistantSetupSettings | null) => AssistantSetupManifest;
@@ -0,0 +1 @@
1
+ export const projectAssistantSetupManifest=(e,i)=>{let t=e=>Object.fromEntries(Object.entries(e).map(([e,i])=>[e,{groups:Object.fromEntries(i.groups.map(e=>[e.instanceName,{...void 0===e.description?{}:{description:e.description},...!e.dryRuns?{allowDryRuns:!1}:{}}]))}])),s=e.declarations;return{entities:Object.fromEntries(Object.entries(s.entities).map(([e,i])=>[e,Object.fromEntries(i.map(e=>[e.source,{...!e.describedByManifest||void 0===e.valueDescription?{}:{description:e.valueDescription}}]))])),deletable:Object.fromEntries(s.deletable.map(e=>[e,{}])),writable:Object.fromEntries(Object.entries(s.writable).map(([e,i])=>[e,Object.fromEntries(Object.entries(i).map(([e,i])=>{let t=Object.values(i.members).find(e=>e.options)?.options?.options;return[e,t?{options:{...t.validate?{validate:!0}:{},...!t.dryRuns?{allowDryRuns:!1}:{}}}:{}]}))])),childRecipes:t(s.childRecipes),replaceRecipes:t(s.replaceRecipes),actions:Object.fromEntries(e.actionFields.map(e=>[e.actionName,void 0===e.description?{}:{description:e.description}])),...i?{instructions:i.instructions??void 0,ai:{...i.ai}}:{}}};
@@ -0,0 +1,15 @@
1
+ import type { AssistantManifest } from '../assistant-manifest.js';
2
+ import type { AssistantResolvedManifest } from '../assistant-resolved-manifest.js';
3
+ import type { AssistantSetupHandlerProps, TypedCreateAssistantSetupHandler } from './AssistantSetupHandler.js';
4
+ /** Session-derived browser manifest; a rejected setup retains its error without exposing the baseline. */
5
+ export interface SessionAssistantSetup {
6
+ readonly manifest: AssistantManifest | null;
7
+ readonly error: Error | null;
8
+ }
9
+ interface Props {
10
+ readonly resolved: AssistantResolvedManifest | null;
11
+ readonly handler: ReturnType<TypedCreateAssistantSetupHandler<Record<string, unknown>>> | undefined;
12
+ readonly inputs: AssistantSetupHandlerProps<Record<string, unknown>>['inputs'] | null;
13
+ }
14
+ export declare const createSessionAssistant: ({ resolved, handler, inputs }: Props) => SessionAssistantSetup;
15
+ export {};
@@ -0,0 +1 @@
1
+ import{buildAssistantManifest as r}from"../build-assistant-manifest.js";import{applyAssistantSetup as n}from"./apply-assistant-setup.js";import{projectAssistantSetupManifest as t}from"./assistant-setup-manifest.js";export const createSessionAssistant=({resolved:e,handler:s,inputs:l})=>{if(!e)return{manifest:null,error:null};try{if(!s)return{manifest:r(e),error:null};if(!l)return{manifest:null,error:null};let i=n(e,null,s.handler().handler({manifest:t(e,null),inputs:l}));return{manifest:i?r(i.resolved):null,error:null}}catch(r){return{manifest:null,error:r instanceof Error?r:Error(String(r))}}};
@@ -0,0 +1,4 @@
1
+ export * from './assistant-setup-manifest.js';
2
+ export * from './AssistantSetupHandler.js';
3
+ export { applyAssistantSetup, AssistantSetupError } from './apply-assistant-setup.js';
4
+ export { createSessionAssistant, type SessionAssistantSetup } from './create-session-assistant.js';
@@ -0,0 +1 @@
1
+ export*from"./assistant-setup-manifest.js";export*from"./AssistantSetupHandler.js";export{applyAssistantSetup,AssistantSetupError}from"./apply-assistant-setup.js";export{createSessionAssistant}from"./create-session-assistant.js";
@@ -3,9 +3,9 @@ import type { ThemeOptions } from '@mui/material';
3
3
  import type { z } from 'zod';
4
4
  import type { FinalizeTaskResource } from '@salsita-ai/contracts/webhook';
5
5
  import { type $DomainEntity, type DomainEntity, type DomainFactory, type EnumLike, type ProductPreset, type SchemaOfObject } from '../core/index.js';
6
- import { type ProjectModule } from '../domain-runtime/index.js';
6
+ import { type ElementRegistration, type ProjectModule } from '../domain-runtime/index.js';
7
7
  import type { AclConfig, ApplicationConfig, DataSpec, DefaultEnvs, ResourcesConfig, SpecTransformer, TransformersConfig, UserInterfaceConfig } from './application-config.js';
8
- import type { AssistantResolvedManifest } from './assistant/index.js';
8
+ import { type AssistantResolvedManifest } from './assistant/index.js';
9
9
  interface ConfiguratorBuilderContext<ENTITIES extends DomainEntity<string> = never, ALLOWED_ROOT_ENTITIES extends ENTITIES = never, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>> = never, NAVIGATION_STATES extends string = never, VIEW_STATES extends string = never, TOOL_STATES extends string = never, EXPORT_STATES extends string = never, PUBLISHED_DATA extends Record<string, unknown> = never, SESSION_DATA extends Record<string, unknown> = never, FRONTEND_DATA extends Record<string, unknown> = never, ADMIN_ENTITIES extends DomainEntity<string> = never, ADMIN_ALLOWED_ROOT_ENTITIES extends ADMIN_ENTITIES = never, ADMIN_$MAP extends Record<ADMIN_ENTITIES['type'], $DomainEntity<ADMIN_ENTITIES>> = never, ADMIN_NAVIGATION_STATES extends string = never, ADMIN_VIEW_STATES extends string = never, FINALIZE_DATA extends Record<string, unknown> = never, PREFETCHED_FINALIZE_DATA extends Record<string, unknown> = never, FINALIZE_RESULT extends Record<string, unknown> = never, CALLBACK_DATA extends Record<string, unknown> = never, RESOURCE extends string = never> {
10
10
  version?: string;
11
11
  textLanguages?: string[];
@@ -44,6 +44,7 @@ interface ConfiguratorBuilderContext<ENTITIES extends DomainEntity<string> = nev
44
44
  tagName?: string;
45
45
  handlers?: readonly ProjectModule[];
46
46
  elements?: readonly ProjectModule[];
47
+ defaultElements?: readonly ElementRegistration[];
47
48
  }
48
49
  export declare class ConfiguratorBuilder<ENTITIES extends DomainEntity<string> = never, ALLOWED_ROOT_ENTITIES extends ENTITIES = never, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>> = never, NAVIGATION_STATES extends string = never, VIEW_STATES extends string = never, TOOL_STATES extends string = never, EXPORT_STATES extends string = never, PUBLISHED_DATA extends Record<string, unknown> = never, SESSION_DATA extends Record<string, unknown> = never, FRONTEND_DATA extends Record<string, unknown> = never, ADMIN_ENTITIES extends DomainEntity<string> = never, ADMIN_ALLOWED_ROOT_ENTITIES extends ADMIN_ENTITIES = never, ADMIN_$MAP extends Record<ADMIN_ENTITIES['type'], $DomainEntity<ADMIN_ENTITIES>> = never, ADMIN_NAVIGATION_STATES extends string = never, ADMIN_VIEW_STATES extends string = never, FINALIZE_DATA extends Record<string, unknown> = never, PREFETCHED_FINALIZE_DATA extends Record<string, unknown> = never, FINALIZE_RESULT extends Record<string, unknown> = never, CALLBACK_DATA extends Record<string, unknown> = never, RESOURCE extends string = never> {
49
50
  private readonly _context;
@@ -87,6 +88,8 @@ export declare class ConfiguratorBuilder<ENTITIES extends DomainEntity<string> =
87
88
  withHandlers(handlers: readonly ProjectModule[]): ConfiguratorBuilder<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP, ADMIN_NAVIGATION_STATES, ADMIN_VIEW_STATES, FINALIZE_DATA, PREFETCHED_FINALIZE_DATA, FINALIZE_RESULT, CALLBACK_DATA, RESOURCE>;
88
89
  /** Sets the elements as project modules, one per `src/elements/` file, for the runtime spec to validate. */
89
90
  withElements(elements: readonly ProjectModule[]): ConfiguratorBuilder<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP, ADMIN_NAVIGATION_STATES, ADMIN_VIEW_STATES, FINALIZE_DATA, PREFETCHED_FINALIZE_DATA, FINALIZE_RESULT, CALLBACK_DATA, RESOURCE>;
91
+ /** Sets the SDK's default element registrations; a project element with the same name replaces one. */
92
+ withDefaultElements(defaultElements: readonly ElementRegistration[]): ConfiguratorBuilder<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP, ADMIN_NAVIGATION_STATES, ADMIN_VIEW_STATES, FINALIZE_DATA, PREFETCHED_FINALIZE_DATA, FINALIZE_RESULT, CALLBACK_DATA, RESOURCE>;
90
93
  withResources<NEW_RESOURCE extends string>(resources: ReadonlyArray<FinalizeTaskResource<NEW_RESOURCE>>): ConfiguratorBuilder<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP, ADMIN_NAVIGATION_STATES, ADMIN_VIEW_STATES, FINALIZE_DATA, PREFETCHED_FINALIZE_DATA, FINALIZE_RESULT, CALLBACK_DATA, NEW_RESOURCE>;
91
94
  withWebComponentTag(tagName: string): ConfiguratorBuilder<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP, ADMIN_NAVIGATION_STATES, ADMIN_VIEW_STATES, FINALIZE_DATA, PREFETCHED_FINALIZE_DATA, FINALIZE_RESULT, CALLBACK_DATA, RESOURCE>;
92
95
  /**
@@ -1 +1 @@
1
- import{initConsoleLogger as t}from"@salsita-ai/common/utils";import{defaultI18n as e}from"#package/i18n";import{extendedSchemaValidator as i}from"../core/index.js";import{NoopAnalyticsSystem as r}from"../domain-context/index.js";import{createDomainRuntime as n}from"../domain-runtime/index.js";import{isGetApplicationWrapperHandler as o}from"./GetApplicationWrapperHandler.js";import{isGetWebComponentOptionsHandler as a}from"./GetWebComponentOptions.js";import{createInitialPublishedData as s}from"./create-initial-published-data.js";import{isDataRowValidatorHandler as h}from"./published-data/DataRowValidatorHandler.js";import{isFilterPublishedChunksHandler as l}from"./published-data/FilterPublishedChunksHandler.js";import{isMapPublishedChunkedDataHandler as u}from"./published-data/MapPublishedChunkedDataHandler.js";import{isMapPublishedRevisionDataHandler as d}from"./published-data/MapPublishedRevisionDataHandler.js";import{isSheetValidatorHandler as c}from"./published-data/SheetValidatorHandler.js";export class ConfiguratorBuilder{_context;constructor(t){this._context=t}withDefaultEnvs(t){return new ConfiguratorBuilder({...this._context,defaultEnvs:t})}withVersion(t){return new ConfiguratorBuilder({...this._context,version:t})}withTextLanguages(t){return new ConfiguratorBuilder({...this._context,textLanguages:t})}withAcl(t){return new ConfiguratorBuilder({...this._context,acl:t})}withAdminRelease(t){return new ConfiguratorBuilder({...this._context,enableAdminRelease:t})}withUi(t){return new ConfiguratorBuilder({...this._context,ui:t})}withResourcesConfig(t){return new ConfiguratorBuilder({...this._context,resourcesConfig:t})}withChunks(t){return new ConfiguratorBuilder({...this._context,chunks:t})}withPublishedDataHash(t){return new ConfiguratorBuilder({...this._context,publishedDataHash:t})}withAssistant(t){return new ConfiguratorBuilder({...this._context,assistant:t})}withTheme(t){return new ConfiguratorBuilder({...this._context,theme:t})}withDomainFactory(t){return new ConfiguratorBuilder({...this._context,domainFactory:t})}withAdminDomainFactory(t){return new ConfiguratorBuilder({...this._context,adminDomainFactory:t})}withI18n=t=>new ConfiguratorBuilder({...this._context,i18n:t});withPrefetchedFinalizeData(t){return new ConfiguratorBuilder({...this._context,prefetchedFinalizeData:t})}withFinalizeData(t){return new ConfiguratorBuilder({...this._context,finalizeData:t})}withFinalizeResult(t){return new ConfiguratorBuilder({...this._context,finalizeResult:t})}withCallbackData(t){return new ConfiguratorBuilder({...this._context,callbackData:t})}withNavigationState(t){return new ConfiguratorBuilder({...this._context,navigationState:t})}withViewState(t){return new ConfiguratorBuilder({...this._context,viewState:t})}withToolState(t){return new ConfiguratorBuilder({...this._context,toolState:t})}withExportState(t){return new ConfiguratorBuilder({...this._context,exportState:t})}withAdminNavigationState(t){return new ConfiguratorBuilder({...this._context,adminNavigationState:t})}withAdminViewState(t){return new ConfiguratorBuilder({...this._context,adminViewState:t})}withPresets(t){return new ConfiguratorBuilder({...this._context,presets:t})}withAdminPresets(t){return new ConfiguratorBuilder({...this._context,adminPresets:t})}withComponentOptics(t){return new ConfiguratorBuilder({...this._context,componentOptics:[...this._context.componentOptics,...t]})}withAdminComponentOptics(t){return new ConfiguratorBuilder({...this._context,adminComponentOptics:[...this._context.adminComponentOptics??[],...t]})}withHandlers(t){return new ConfiguratorBuilder({...this._context,handlers:t})}withElements(t){return new ConfiguratorBuilder({...this._context,elements:t})}withResources(t){return new ConfiguratorBuilder({...this._context,resources:t})}withWebComponentTag(t){return new ConfiguratorBuilder({...this._context,tagName:t})}withTransformers(t,e){return new ConfiguratorBuilder({...this._context,transformers:{importedTransformers:t,specTransformers:e}})}withInterface(t){return this}withDataSpec=t=>new ConfiguratorBuilder({...this._context,dataSpec:t});_computeInitialPublishedData(t,e,i){if(!this._context.adminDomainFactory)throw Error("adminDomainFactory is required!");return s({adminDomainFactory:this._context.adminDomainFactory,domainRuntime:e,adminPresets:this._context.adminPresets??[],handlers:i,dataSpec:this._context.dataSpec,chunks:this._context.chunks,logger:t})}buildConfig(){return this._buildConfigWithHandlers().config}_buildConfigWithHandlers(){if(!this._context.domainFactory)throw Error("Can not create application config, domainFactory is required! Is it registered with the ConfiguratorBuilder?");if(!this._context.presets)throw Error("Can not create application config, presets are required! Is it registered with the ConfiguratorBuilder?");if(!this._context.adminDomainFactory)throw Error("Can not create application config, adminDomainFactory is required! Is it registered with the ConfiguratorBuilder?");if(!this._context.adminPresets)throw Error("Can not create application config, adminPresets are required! Is it registered with the ConfiguratorBuilder?");if(!this._context.version)throw Error("Can not create application config, version is required!");let i=this._context.tagName??"salsita-configurator",s={defaultEnvs:this._context.defaultEnvs,services:{i18n:this._context.i18n},version:this._context.version,initialPublishedData:{},domain:{textLanguages:this._context.textLanguages,componentOptics:this._context.componentOptics,presets:this._context.presets,domainFactory:this._context.domainFactory},navigation:{navigationStates:this._context.navigationState?.values(),viewStates:this._context.viewState?.values(),toolStates:this._context.toolState?.values(),exportStates:this._context.exportState?.values()},adminNavigation:{navigationStates:this._context.adminNavigationState?.values(),viewStates:this._context.adminViewState?.values()},adminDomain:{textLanguages:this._context.textLanguages,componentOptics:this._context.adminComponentOptics??[],presets:this._context.adminPresets,domainFactory:this._context.adminDomainFactory},mount:{tag:i,options:{}},handlers:this._context.handlers??[],elements:this._context.elements??[],transformers:this._context.transformers,features:{acl:this._context.acl,enableAdminRelease:this._context.enableAdminRelease},ui:{preview:this._context.ui?.preview,alwaysExpand:this._context.ui?.alwaysExpand,theme:this._context.theme},resources:this._context.resourcesConfig,chunks:this._context.chunks,publishedDataHash:this._context.publishedDataHash,assistant:this._context.assistant,dataSpec:this._context.dataSpec},u=t(),d=n({config:s,services:{analyticsService:new r,i18n:e,logger:u}}),f=d.getState().spec.configurator.handlers;if(f.filter(t=>l(t)).length>1)throw Error("Multiple createFilterPublishedChunksHandler handlers found. Only one handler is allowed.");if(f.filter(t=>h(t)).length>1)throw Error("Multiple createDataRowValidatorHandler handlers found. Only one handler is allowed.");if(f.filter(t=>c(t)).length>1)throw Error("Multiple createSheetValidatorHandler handlers found. Only one handler is allowed.");let m=f.find(o)?.handler().handler,x=f.find(a)?.handler().handler(void 0),w=this._computeInitialPublishedData(u,d,f);return{config:{...s,mount:{tag:i,options:x??{},Application:m},initialPublishedData:w},handlers:f}}buildWebhookContext(){if(!this._context.domainFactory)throw Error("domainFactory is required!");if(!this._context.adminDomainFactory)throw Error("adminDomainFactory is required!");if(!this._context.adminPresets)throw Error("adminPresets are required!");let{config:t,handlers:e}=this._buildConfigWithHandlers(),r=t=>{if(null==this._context.finalizeData)return{};let e=i.compile(this._context.finalizeData);if(!e(t))throw console.error("Finalize data validation errors:",e.errors),Error("Invalid finalize data!");return t},n=t=>{if(null==this._context.finalizeResult)return{};let e=i.compile(this._context.finalizeResult);if(!e(t))throw console.error("Finalize result validation errors:",e.errors),Error("Invalid finalize result!");return t},o=t=>{if(null==this._context.callbackData)return{};let e=i.compile(this._context.callbackData);if(!e(t))throw console.error("Callback data validation errors:",e.errors),Error("Invalid callback data!");return t},a=e.find(d)?.handler().handler,s=e.find(u)?.handler().handler,l=e.find(h)?.handler().handler,f=e.find(c)?.handler().handler;return{config:t,parseFinalizeData:r,parseFinalizeResult:n,resources:this._context.resources??[],parseCallbackData:o,mapPublishedRevisionData:a,mapPublishedChunkedData:s,dataRowValidator:l,sheetValidator:f}}}
1
+ import{initConsoleLogger as t}from"@salsita-ai/common/utils";import{defaultI18n as e}from"#package/i18n";import{extendedSchemaValidator as i}from"../core/index.js";import{NoopAnalyticsSystem as r}from"../domain-context/index.js";import{createDomainRuntime as n}from"../domain-runtime/index.js";import{isGetApplicationWrapperHandler as o}from"./GetApplicationWrapperHandler.js";import{isGetWebComponentOptionsHandler as a}from"./GetWebComponentOptions.js";import{isAssistantSetupHandler as s}from"./assistant/index.js";import{createInitialPublishedData as l}from"./create-initial-published-data.js";import{isDataRowValidatorHandler as h}from"./published-data/DataRowValidatorHandler.js";import{isFilterPublishedChunksHandler as u}from"./published-data/FilterPublishedChunksHandler.js";import{isMapPublishedChunkedDataHandler as d}from"./published-data/MapPublishedChunkedDataHandler.js";import{isMapPublishedRevisionDataHandler as c}from"./published-data/MapPublishedRevisionDataHandler.js";import{isSheetValidatorHandler as f}from"./published-data/SheetValidatorHandler.js";export class ConfiguratorBuilder{_context;constructor(t){this._context=t}withDefaultEnvs(t){return new ConfiguratorBuilder({...this._context,defaultEnvs:t})}withVersion(t){return new ConfiguratorBuilder({...this._context,version:t})}withTextLanguages(t){return new ConfiguratorBuilder({...this._context,textLanguages:t})}withAcl(t){return new ConfiguratorBuilder({...this._context,acl:t})}withAdminRelease(t){return new ConfiguratorBuilder({...this._context,enableAdminRelease:t})}withUi(t){return new ConfiguratorBuilder({...this._context,ui:t})}withResourcesConfig(t){return new ConfiguratorBuilder({...this._context,resourcesConfig:t})}withChunks(t){return new ConfiguratorBuilder({...this._context,chunks:t})}withPublishedDataHash(t){return new ConfiguratorBuilder({...this._context,publishedDataHash:t})}withAssistant(t){return new ConfiguratorBuilder({...this._context,assistant:t})}withTheme(t){return new ConfiguratorBuilder({...this._context,theme:t})}withDomainFactory(t){return new ConfiguratorBuilder({...this._context,domainFactory:t})}withAdminDomainFactory(t){return new ConfiguratorBuilder({...this._context,adminDomainFactory:t})}withI18n=t=>new ConfiguratorBuilder({...this._context,i18n:t});withPrefetchedFinalizeData(t){return new ConfiguratorBuilder({...this._context,prefetchedFinalizeData:t})}withFinalizeData(t){return new ConfiguratorBuilder({...this._context,finalizeData:t})}withFinalizeResult(t){return new ConfiguratorBuilder({...this._context,finalizeResult:t})}withCallbackData(t){return new ConfiguratorBuilder({...this._context,callbackData:t})}withNavigationState(t){return new ConfiguratorBuilder({...this._context,navigationState:t})}withViewState(t){return new ConfiguratorBuilder({...this._context,viewState:t})}withToolState(t){return new ConfiguratorBuilder({...this._context,toolState:t})}withExportState(t){return new ConfiguratorBuilder({...this._context,exportState:t})}withAdminNavigationState(t){return new ConfiguratorBuilder({...this._context,adminNavigationState:t})}withAdminViewState(t){return new ConfiguratorBuilder({...this._context,adminViewState:t})}withPresets(t){return new ConfiguratorBuilder({...this._context,presets:t})}withAdminPresets(t){return new ConfiguratorBuilder({...this._context,adminPresets:t})}withComponentOptics(t){return new ConfiguratorBuilder({...this._context,componentOptics:[...this._context.componentOptics,...t]})}withAdminComponentOptics(t){return new ConfiguratorBuilder({...this._context,adminComponentOptics:[...this._context.adminComponentOptics??[],...t]})}withHandlers(t){return new ConfiguratorBuilder({...this._context,handlers:t})}withElements(t){return new ConfiguratorBuilder({...this._context,elements:t})}withDefaultElements(t){return new ConfiguratorBuilder({...this._context,defaultElements:t})}withResources(t){return new ConfiguratorBuilder({...this._context,resources:t})}withWebComponentTag(t){return new ConfiguratorBuilder({...this._context,tagName:t})}withTransformers(t,e){return new ConfiguratorBuilder({...this._context,transformers:{importedTransformers:t,specTransformers:e}})}withInterface(t){return this}withDataSpec=t=>new ConfiguratorBuilder({...this._context,dataSpec:t});_computeInitialPublishedData(t,e,i){if(!this._context.adminDomainFactory)throw Error("adminDomainFactory is required!");return l({adminDomainFactory:this._context.adminDomainFactory,domainRuntime:e,adminPresets:this._context.adminPresets??[],handlers:i,dataSpec:this._context.dataSpec,chunks:this._context.chunks,logger:t})}buildConfig(){return this._buildConfigWithHandlers().config}_buildConfigWithHandlers(){if(!this._context.domainFactory)throw Error("Can not create application config, domainFactory is required! Is it registered with the ConfiguratorBuilder?");if(!this._context.presets)throw Error("Can not create application config, presets are required! Is it registered with the ConfiguratorBuilder?");if(!this._context.adminDomainFactory)throw Error("Can not create application config, adminDomainFactory is required! Is it registered with the ConfiguratorBuilder?");if(!this._context.adminPresets)throw Error("Can not create application config, adminPresets are required! Is it registered with the ConfiguratorBuilder?");if(!this._context.version)throw Error("Can not create application config, version is required!");let i=this._context.tagName??"salsita-configurator",l={defaultEnvs:this._context.defaultEnvs,services:{i18n:this._context.i18n},version:this._context.version,initialPublishedData:{},domain:{textLanguages:this._context.textLanguages,componentOptics:this._context.componentOptics,presets:this._context.presets,domainFactory:this._context.domainFactory},navigation:{navigationStates:this._context.navigationState?.values(),viewStates:this._context.viewState?.values(),toolStates:this._context.toolState?.values(),exportStates:this._context.exportState?.values()},adminNavigation:{navigationStates:this._context.adminNavigationState?.values(),viewStates:this._context.adminViewState?.values()},adminDomain:{textLanguages:this._context.textLanguages,componentOptics:this._context.adminComponentOptics??[],presets:this._context.adminPresets,domainFactory:this._context.adminDomainFactory},mount:{tag:i,options:{}},handlers:this._context.handlers??[],elements:this._context.elements??[],defaultElements:this._context.defaultElements??[],transformers:this._context.transformers,features:{acl:this._context.acl,enableAdminRelease:this._context.enableAdminRelease},ui:{preview:this._context.ui?.preview,alwaysExpand:this._context.ui?.alwaysExpand,theme:this._context.theme},resources:this._context.resourcesConfig,chunks:this._context.chunks,publishedDataHash:this._context.publishedDataHash,assistant:this._context.assistant,dataSpec:this._context.dataSpec},d=t(),c=n({config:l,services:{analyticsService:new r,i18n:e,logger:d}}),m=c.getState().spec.configurator.handlers;if(m.filter(s).length>1)throw Error("Multiple createAssistantSetupHandler handlers found. Only one handler is allowed.");if(m.filter(t=>u(t)).length>1)throw Error("Multiple createFilterPublishedChunksHandler handlers found. Only one handler is allowed.");if(m.filter(t=>h(t)).length>1)throw Error("Multiple createDataRowValidatorHandler handlers found. Only one handler is allowed.");if(m.filter(t=>f(t)).length>1)throw Error("Multiple createSheetValidatorHandler handlers found. Only one handler is allowed.");let w=m.find(o)?.handler().handler,x=m.find(a)?.handler().handler(void 0),_=this._computeInitialPublishedData(d,c,m);return{config:{...l,mount:{tag:i,options:x??{},Application:w},initialPublishedData:_},handlers:m}}buildWebhookContext(){if(!this._context.domainFactory)throw Error("domainFactory is required!");if(!this._context.adminDomainFactory)throw Error("adminDomainFactory is required!");if(!this._context.adminPresets)throw Error("adminPresets are required!");let{config:t,handlers:e}=this._buildConfigWithHandlers(),r=t=>{if(null==this._context.finalizeData)return{};let e=i.compile(this._context.finalizeData);if(!e(t))throw console.error("Finalize data validation errors:",e.errors),Error("Invalid finalize data!");return t},n=t=>{if(null==this._context.finalizeResult)return{};let e=i.compile(this._context.finalizeResult);if(!e(t))throw console.error("Finalize result validation errors:",e.errors),Error("Invalid finalize result!");return t},o=t=>{if(null==this._context.callbackData)return{};let e=i.compile(this._context.callbackData);if(!e(t))throw console.error("Callback data validation errors:",e.errors),Error("Invalid callback data!");return t},a=e.find(c)?.handler().handler,s=e.find(d)?.handler().handler,l=e.find(h)?.handler().handler,u=e.find(f)?.handler().handler;return{config:t,parseFinalizeData:r,parseFinalizeResult:n,resources:this._context.resources??[],parseCallbackData:o,mapPublishedRevisionData:a,mapPublishedChunkedData:s,dataRowValidator:l,sheetValidator:u}}}
@@ -1,14 +1,14 @@
1
1
  import type { Logger } from '@salsita-ai/common/utils';
2
- import type { $DomainEntity, DomainEntity, DomainFactory, ProductPreset } from '../core/index.js';
2
+ import type { DomainEntity, DomainFactory, ProductPreset } from '../core/index.js';
3
3
  import type { DomainRuntime, HandlerRegistration } from '../domain-runtime/index.js';
4
4
  import type { ChunksSpec, DataSpec } from './application-config.js';
5
- export interface CreateInitialPublishedDataProps<ADMIN_ENTITIES extends DomainEntity<string>, ADMIN_ALLOWED_ROOT_ENTITIES extends ADMIN_ENTITIES, ADMIN_$MAP extends Record<ADMIN_ENTITIES['type'], $DomainEntity<ADMIN_ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>> {
6
- readonly adminDomainFactory: DomainFactory<ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>;
5
+ export interface CreateInitialPublishedDataProps<PUBLISHED_DATA extends Record<string, unknown>> {
6
+ readonly adminDomainFactory: DomainFactory<any, any, any, PUBLISHED_DATA, any, any>;
7
7
  readonly domainRuntime: DomainRuntime;
8
- readonly adminPresets: ReadonlyArray<ProductPreset<ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES>>;
8
+ readonly adminPresets: ReadonlyArray<ProductPreset<DomainEntity<string>, DomainEntity<string>>>;
9
9
  readonly handlers?: ReadonlyArray<HandlerRegistration<any, any>>;
10
10
  readonly dataSpec?: DataSpec;
11
11
  readonly chunks?: ChunksSpec;
12
12
  readonly logger: Logger;
13
13
  }
14
- export declare const createInitialPublishedData: <ADMIN_ENTITIES extends DomainEntity<string>, ADMIN_ALLOWED_ROOT_ENTITIES extends ADMIN_ENTITIES, ADMIN_$MAP extends Record<ADMIN_ENTITIES['type'], $DomainEntity<ADMIN_ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>>(props: CreateInitialPublishedDataProps<ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>) => PUBLISHED_DATA;
14
+ export declare const createInitialPublishedData: <PUBLISHED_DATA extends Record<string, unknown>>(props: CreateInitialPublishedDataProps<PUBLISHED_DATA>) => PUBLISHED_DATA;
@@ -9,7 +9,6 @@ export { webComponentAttributeParsers, createWebComponentPropertyDescriptor, typ
9
9
  export { createWebComponentEventDescriptor, type WebComponentEventDescriptor } from './web-component-event.js';
10
10
  export { standardWebComponentProperties, type StandardConfiguratorElement } from './standard-properties.js';
11
11
  export { standardWebComponentEvents } from './standard-events.js';
12
- export { ResourceBuilder } from './resource-builder.js';
13
12
  export { createGetApplicationWrapperHandler, isGetApplicationWrapperHandler, type CreateGetApplicationWrapperHandler, } from './GetApplicationWrapperHandler.js';
14
13
  export { createGetThemeHandler, GetThemeHandlerName, isGetThemeHandler, type CreateGetThemeHandler, } from './GetThemeHandler.js';
15
14
  export { createGetWebComponentOptionsHandler, isGetWebComponentOptionsHandler, type CreateGetWebComponentOptionsHandler, } from './GetWebComponentOptions.js';
@@ -1 +1 @@
1
- export{findAssistantFieldOptions,readAssistantFieldOptions}from"./assistant-field-options.js";export{deleteEntityUpdateTag,findAssistantMutation,modifyEntityUpdateTag}from"./assistant-mutations.js";export{findAssistantRecipeGroups,prepareAssistantRecipeUpdates,readAssistantRecipeGroup}from"./assistant-recipe-groups.js";export{ConfiguratorBuilder}from"./configurator-builder.js";export*from"./admin-page-factories.js";export{createInitialPublishedData}from"./create-initial-published-data.js";export{webComponentAttributeParsers,createWebComponentPropertyDescriptor}from"./web-component-property.js";export{createWebComponentEventDescriptor}from"./web-component-event.js";export{standardWebComponentProperties}from"./standard-properties.js";export{standardWebComponentEvents}from"./standard-events.js";export{ResourceBuilder}from"./resource-builder.js";export{createGetApplicationWrapperHandler,isGetApplicationWrapperHandler}from"./GetApplicationWrapperHandler.js";export{createGetThemeHandler,GetThemeHandlerName,isGetThemeHandler}from"./GetThemeHandler.js";export{createGetWebComponentOptionsHandler,isGetWebComponentOptionsHandler}from"./GetWebComponentOptions.js";export{createFinalizeAdminDomain}from"./published-data/create-finalize-admin-domain.js";export{FilterPublishedChunksHandlerName,isFilterPublishedChunksHandler}from"./published-data/FilterPublishedChunksHandler.js";export{mapPublishedData}from"./published-data/map-published-data.js";export{flattenTabData,mapDefaultValuesToRecords,mapPublishedChunkedData,SYSTEM_CHUNK_KEY,SYSTEM_CHUNK_SCOPE,SWATCH_DEFINITION}from"./published-data/map-published-chunked-data.js";export{buildLegendRows}from"./published-data/build-legend-data.js";export{formatFieldType,getFieldDescription}from"./published-data/format-field-type.js";export{mapDataToSheet}from"./published-data/map-data-to-sheet.js";export{validateRows}from"./published-data/validate-sheet-data.js";export{createDataRowValidatorHandler,DataRowValidatorHandlerName,isDataRowValidatorHandler}from"./published-data/DataRowValidatorHandler.js";export{createSheetValidatorHandler,SheetValidatorHandlerName,isSheetValidatorHandler}from"./published-data/SheetValidatorHandler.js";export{createMapPublishedRevisionDataHandler,createMapPublishedRevisionDataHandlerFactory,isMapPublishedRevisionDataHandler}from"./published-data/MapPublishedRevisionDataHandler.js";export{createMapPublishedChunkedDataHandler,createMapPublishedChunkedDataHandlerFactory,isMapPublishedChunkedDataHandler}from"./published-data/MapPublishedChunkedDataHandler.js";export*from"./assistant/index.js";
1
+ export{findAssistantFieldOptions,readAssistantFieldOptions}from"./assistant-field-options.js";export{deleteEntityUpdateTag,findAssistantMutation,modifyEntityUpdateTag}from"./assistant-mutations.js";export{findAssistantRecipeGroups,prepareAssistantRecipeUpdates,readAssistantRecipeGroup}from"./assistant-recipe-groups.js";export{ConfiguratorBuilder}from"./configurator-builder.js";export*from"./admin-page-factories.js";export{createInitialPublishedData}from"./create-initial-published-data.js";export{webComponentAttributeParsers,createWebComponentPropertyDescriptor}from"./web-component-property.js";export{createWebComponentEventDescriptor}from"./web-component-event.js";export{standardWebComponentProperties}from"./standard-properties.js";export{standardWebComponentEvents}from"./standard-events.js";export{createGetApplicationWrapperHandler,isGetApplicationWrapperHandler}from"./GetApplicationWrapperHandler.js";export{createGetThemeHandler,GetThemeHandlerName,isGetThemeHandler}from"./GetThemeHandler.js";export{createGetWebComponentOptionsHandler,isGetWebComponentOptionsHandler}from"./GetWebComponentOptions.js";export{createFinalizeAdminDomain}from"./published-data/create-finalize-admin-domain.js";export{FilterPublishedChunksHandlerName,isFilterPublishedChunksHandler}from"./published-data/FilterPublishedChunksHandler.js";export{mapPublishedData}from"./published-data/map-published-data.js";export{flattenTabData,mapDefaultValuesToRecords,mapPublishedChunkedData,SYSTEM_CHUNK_KEY,SYSTEM_CHUNK_SCOPE,SWATCH_DEFINITION}from"./published-data/map-published-chunked-data.js";export{buildLegendRows}from"./published-data/build-legend-data.js";export{formatFieldType,getFieldDescription}from"./published-data/format-field-type.js";export{mapDataToSheet}from"./published-data/map-data-to-sheet.js";export{validateRows}from"./published-data/validate-sheet-data.js";export{createDataRowValidatorHandler,DataRowValidatorHandlerName,isDataRowValidatorHandler}from"./published-data/DataRowValidatorHandler.js";export{createSheetValidatorHandler,SheetValidatorHandlerName,isSheetValidatorHandler}from"./published-data/SheetValidatorHandler.js";export{createMapPublishedRevisionDataHandler,createMapPublishedRevisionDataHandlerFactory,isMapPublishedRevisionDataHandler}from"./published-data/MapPublishedRevisionDataHandler.js";export{createMapPublishedChunkedDataHandler,createMapPublishedChunkedDataHandlerFactory,isMapPublishedChunkedDataHandler}from"./published-data/MapPublishedChunkedDataHandler.js";export*from"./assistant/index.js";
@@ -16,4 +16,4 @@ export interface DataRowValidatorHandlers {
16
16
  readonly rowValidator?: DataRowValidator;
17
17
  readonly sheetValidator?: SheetDataValidator;
18
18
  }
19
- export declare const mapPublishedChunkedData: <ADMIN_ENTITIES extends DomainEntity<string>>(adminEntities: readonly ADMIN_ENTITIES[], dataSpec: DataSpec, chunksSpec: ChunksSpec, connectedSheetData?: Record<string, readonly SheetTabData[]>, customChunkedData?: ChunkedPublishedData, validators?: DataRowValidatorHandlers) => ChunkedPublishedData;
19
+ export declare const mapPublishedChunkedData: (adminEntities: ReadonlyArray<DomainEntity<string>>, dataSpec: DataSpec, chunksSpec: ChunksSpec, connectedSheetData?: Record<string, readonly SheetTabData[]>, customChunkedData?: ChunkedPublishedData, validators?: DataRowValidatorHandlers) => ChunkedPublishedData;
@@ -1,4 +1,8 @@
1
- import type { $DomainEntity, DomainEntity, DomainFactory } from '../../core/index.js';
1
+ import type { AnyDomainFactory, DomainEntity } from '../../core/index.js';
2
2
  import type { DomainRuntime } from '../../domain-runtime/index.js';
3
- import type { MapPublishedRevisionDataHandlerProps, MapPublishedRevisionDataResult } from './MapPublishedRevisionDataHandler.js';
4
- export declare const mapPublishedData: <ADMIN_ENTITIES extends DomainEntity<string> = never, ADMIN_ALLOWED_ROOT_ENTITIES extends ADMIN_ENTITIES = never, ADMIN_$MAP extends Record<ADMIN_ENTITIES['type'], $DomainEntity<ADMIN_ENTITIES>> = never, PUBLISHED_DATA extends Record<string, unknown> = never, SESSION_DATA extends Record<string, unknown> = never, FRONTEND_DATA extends Record<string, unknown> = never>(adminDomainFactory: DomainFactory<ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>, domainRuntime: DomainRuntime, mapPublishedDataHandler: (props: MapPublishedRevisionDataHandlerProps<ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP>) => MapPublishedRevisionDataResult<PUBLISHED_DATA>, rootEntityType: ADMIN_ALLOWED_ROOT_ENTITIES['type'], entities: readonly ADMIN_ENTITIES[]) => PUBLISHED_DATA;
3
+ import type { MapPublishedRevisionDataHandlerProps } from './MapPublishedRevisionDataHandler.js';
4
+ /**
5
+ * Finalizes the admin domain and maps its state to the published data of one revision: what the project's
6
+ * handler returns, with the common admin data on top.
7
+ */
8
+ export declare const mapPublishedData: (adminDomainFactory: AnyDomainFactory, domainRuntime: DomainRuntime, mapPublishedDataHandler: (props: MapPublishedRevisionDataHandlerProps<any, any, any>) => Record<string, unknown>, rootEntityType: string, entities: ReadonlyArray<DomainEntity<string>>) => Record<string, unknown>;
@@ -11,8 +11,7 @@ import type { ComponentSystemFilterProps, GradualComponentSystemFilter } from '.
11
11
  type FilterCriterion<KEY extends keyof ComponentSystemFilterProps> = [
12
12
  Required<ComponentSystemFilterProps>[KEY]
13
13
  ] extends [ReadonlyArray<infer ITEM>] ? readonly ITEM[] : Required<ComponentSystemFilterProps>[KEY];
14
- type CustomOpticRead<ENTITIES extends DomainEntity<string>, $ENTITY extends $DomainEntity<ENTITIES>, COMPONENT_STATE extends Record<string, unknown>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, CONTEXT_EXTENSION> = (self: $ENTITY, state: DomainState<ENTITIES>, ctx: OpenExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, CONTEXT_EXTENSION>) => COMPONENT_STATE;
15
- type CustomOpticAttach<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ENTITY extends ENTITIES, $ENTITY extends $DomainEntity<ENTITIES>, COMPONENT_TYPE extends SystemComponentTypeConstraint, CONTEXT_EXTENSION> = (read: CustomOpticRead<ENTITIES, $ENTITY, StateOfComponent<COMPONENT_TYPE>, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, CONTEXT_EXTENSION>, write?: DomainComponentSimpleOptic<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ENTITY, COMPONENT_TYPE, CONTEXT_EXTENSION>['write']) => DomainComponentSimpleOptic<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ENTITY, COMPONENT_TYPE, CONTEXT_EXTENSION>;
14
+ type CustomOpticAttach<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ENTITY extends ENTITIES, $ENTITY extends $DomainEntity<ENTITIES>, COMPONENT_TYPE extends SystemComponentTypeConstraint, CONTEXT_EXTENSION> = (read: CustomExpression<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, $ENTITY, StateOfComponent<COMPONENT_TYPE>, CONTEXT_EXTENSION>, write?: DomainComponentSimpleOptic<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ENTITY, COMPONENT_TYPE, CONTEXT_EXTENSION>['write']) => DomainComponentSimpleOptic<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ENTITY, COMPONENT_TYPE, CONTEXT_EXTENSION>;
16
15
  export interface DomainComponentSimpleOptic<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ENTITY extends ENTITIES, COMPONENT_TYPE extends SystemComponentTypeConstraint, CONTEXT_EXTENSION = unknown> {
17
16
  readonly kind: 'simple';
18
17
  readonly instanceName: string;
@@ -1,5 +1,5 @@
1
1
  import type { SessionRole } from '@salsita-ai/contracts/api';
2
- import type { AnonymousExpression, OpenExpressionContext } from '../expression/index.js';
2
+ import type { AnonymousExpression } from '../expression/index.js';
3
3
  import type { DomainEntity, DomainEntityId } from '../model/index.js';
4
4
  import type { DomainState } from '../state/index.js';
5
5
  import { type Viewport } from './viewport-state-component.js';
@@ -75,7 +75,20 @@ export interface FilterMismatchReason {
75
75
  readonly draggedEntityIds?: readonly IdOrWithId[] | IdOrWithId;
76
76
  readonly active?: boolean;
77
77
  }
78
- export declare const isComponentActive: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, SELF extends ENTITIES, CONTEXT_EXTENSION = unknown>(filterState: ComponentSystemFilterState, filters: ReadonlyArray<GradualComponentSystemFilter<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, CONTEXT_EXTENSION>>, id: SELF['id'], domainState: DomainState<ENTITIES>, context: OpenExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, CONTEXT_EXTENSION>, reportReason?: boolean) => boolean | readonly FilterMismatchReason[];
78
+ /**
79
+ * A filter as `isComponentActive` reads it: every criterion unset, a value, or an expression that
80
+ * is evaluated with the given id, state and context. A `GradualComponentSystemFilter` is one for
81
+ * the ids, the state and the expression context of its project.
82
+ */
83
+ type EvaluableComponentSystemFilter<ID, STATE, CONTEXT> = {
84
+ readonly [KEY in keyof Required<ComponentSystemFilterProps>]: undefined | FilterCriterion<KEY> | {
85
+ readonly evaluate: (id: ID, domainState: STATE, context: CONTEXT) => FilterCriterion<KEY> | undefined;
86
+ };
87
+ };
88
+ export declare const isComponentActive: <ID, STATE, CONTEXT extends {
89
+ readonly mode: 'owner' | 'read' | 'finalize';
90
+ readonly role: SessionRole;
91
+ }>(filterState: ComponentSystemFilterState, filters: ReadonlyArray<EvaluableComponentSystemFilter<ID, STATE, CONTEXT>>, id: ID, domainState: STATE, context: CONTEXT, reportReason?: boolean) => boolean | readonly FilterMismatchReason[];
79
92
  export declare const ComponentSystemFilterPropsSchema: {
80
93
  readonly tsType: 'ComponentSystemFilterProps';
81
94
  readonly import: [{
@@ -1,8 +1,16 @@
1
- import type { DomainEntity, ExpandAlias, TypeOrAlias } from '../model/index.js';
2
- import type { AnonymousExpression } from './expression.js';
3
- export type ConstantExpressions<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ALIASES extends Record<string, ENTITIES>, CONSTANTS extends Partial<Record<TypeOrAlias<ENTITIES, ALIASES>, Record<string, unknown>>>> = {
4
- readonly [TYPE_OR_ALIAS in keyof CONSTANTS & string]: {
5
- readonly [NAME in keyof CONSTANTS[TYPE_OR_ALIAS]]: AnonymousExpression<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ExpandAlias<ENTITIES, ALIASES, TYPE_OR_ALIAS>, CONSTANTS[TYPE_OR_ALIAS][NAME]>;
6
- };
7
- };
8
- export declare const createConstantExpressionFactory: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ALIASES extends Record<string, ENTITIES>>() => <CONSTANTS extends Partial<Record<TypeOrAlias<ENTITIES, ALIASES>, Record<string, unknown>>>>(constants: CONSTANTS) => ConstantExpressions<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ALIASES, CONSTANTS>;
1
+ import type { ExpressionMeta } from './expression.js';
2
+ /**
3
+ * The constant expressions of a domain, keyed by entity type or alias and then by the name of the
4
+ * constant. A constant expression takes no argument: it reads neither the entity nor the state, so
5
+ * the domain of any project accepts it.
6
+ */
7
+ export type ConstantExpressions = Readonly<Record<string, Readonly<Record<string, {
8
+ evaluate(): unknown;
9
+ readonly meta: ExpressionMeta;
10
+ }>>>>;
11
+ /**
12
+ * Makes the function that turns the constants of a spec into expressions: every constant becomes an
13
+ * expression that returns its value. The type a project reads from a constant is the one its
14
+ * generated model declares for the property, not the type of the expression.
15
+ */
16
+ export declare const createConstantExpressionFactory: () => (constants: Readonly<Record<string, Readonly<Record<string, unknown>>>>) => ConstantExpressions;
@@ -1,5 +1,5 @@
1
1
  import type { I18n } from '@lingui/core';
2
- import type { Localizable } from '@salsita-ai/common/utils';
2
+ import { type Localizable } from '@salsita-ai/common/utils';
3
3
  import type { StateEmission } from '../emission/index.js';
4
4
  import type { $DomainEntity, DomainEntity, EntityId } from '../model/index.js';
5
5
  /**
@@ -66,7 +66,55 @@ export declare const ViolationSchema: {
66
66
  readonly enum: ("fatal" | "fixable" | "notice" | "warning")[];
67
67
  };
68
68
  readonly message: {
69
- readonly type: 'string';
69
+ readonly anyOf: [{
70
+ readonly type: 'string';
71
+ }, {
72
+ readonly type: 'object';
73
+ readonly properties: {
74
+ readonly id: {
75
+ readonly type: 'string';
76
+ };
77
+ readonly comment: {
78
+ readonly type: 'string';
79
+ };
80
+ readonly message: {
81
+ readonly type: 'string';
82
+ };
83
+ readonly values: {
84
+ readonly type: 'object';
85
+ readonly additionalProperties: true;
86
+ };
87
+ };
88
+ readonly required: ["id"];
89
+ readonly additionalProperties: false;
90
+ readonly import: [{
91
+ readonly module: '@lingui/core';
92
+ readonly member: 'MessageDescriptor';
93
+ }];
94
+ readonly tsType: 'MessageDescriptor';
95
+ }, {
96
+ readonly import: [{
97
+ readonly module: '@salsita-ai/sdk/common/utils';
98
+ readonly member: 'MultilingualString';
99
+ }];
100
+ readonly tsType: 'MultilingualString';
101
+ readonly type: 'object';
102
+ readonly properties: {
103
+ readonly $lang: {
104
+ readonly type: 'object';
105
+ readonly additionalProperties: {
106
+ readonly type: 'string';
107
+ };
108
+ };
109
+ };
110
+ readonly required: ["$lang"];
111
+ readonly additionalProperties: false;
112
+ }];
113
+ readonly tsType: 'Localizable';
114
+ readonly import: [{
115
+ readonly module: '@salsita-ai/sdk/common/utils';
116
+ readonly member: 'Localizable';
117
+ }];
70
118
  };
71
119
  readonly controlViolationPriority: {
72
120
  readonly type: 'number';
@@ -1 +1 @@
1
- let e=["fatal","fixable","warning","notice"];export const compareSeverity=(t,i)=>e.indexOf(t)-e.indexOf(i);export const ViolationSchema={type:"object",properties:{type:{type:"string"},severity:{enum:e.slice()},message:{type:"string"},controlViolationPriority:{type:"number"}},required:["type","severity"],additionalProperties:!1};
1
+ import{MessageDescriptorSchema as e,MultilingualStringSchema as t}from"@salsita-ai/common/utils";let i=["fatal","fixable","warning","notice"];export const compareSeverity=(e,t)=>i.indexOf(e)-i.indexOf(t);export const ViolationSchema={type:"object",properties:{type:{type:"string"},severity:{enum:i.slice()},message:{anyOf:[{type:"string"},e,t],tsType:"Localizable",import:[{module:"@salsita-ai/sdk/common/utils",member:"Localizable"}]},controlViolationPriority:{type:"number"}},required:["type","severity"],additionalProperties:!1};
@@ -25,7 +25,7 @@ export declare const VirtualEntityIdSchema: {
25
25
  };
26
26
  export declare const createVirtualEntityId: (name: string) => VirtualEntityId;
27
27
  export declare const isVirtualEntityId: (value: EntityId<any>) => value is VirtualEntityId;
28
- export type DomainEntityId<TYPE extends string> = `${TYPE}-${number}` & {
28
+ export type DomainEntityId<TYPE extends string = string> = `${TYPE}-${number}` & {
29
29
  __brand: TYPE;
30
30
  };
31
31
  /**
@@ -1,55 +1,23 @@
1
- import type { OmitEmpty, OmitNever, UnionToIntersection } from '@salsita-ai/common/utils';
2
- import { type AliasMap, type DomainEntity, type DomainEntityId, type DomainEntityReflection, type EntityByType, type EventualAlias, type ExpandAlias, type ExtractFromAliasedRecord, type TypeOrAlias } from '../model/index.js';
3
- export type EntityDefaults<ENTITY extends DomainEntity<string>> = {
4
- [K in Exclude<keyof ENTITY, 'id' | 'type'>]: ENTITY[K] extends DomainEntityId<any> ? null : ENTITY[K];
5
- };
1
+ import { type AnyAliasMap, type DomainEntity, type DomainEntityReflection, type EntityByType } from '../model/index.js';
2
+ /** The entity a recipe yields: a whole entity, which the recipe system gives a new id when it cooks the recipe. */
6
3
  export type EntityRecipe<ENTITY extends DomainEntity<string>> = ENTITY;
4
+ /** What a project passes to its recipe factory: the entity type, and the properties that differ from the defaults. */
7
5
  export type EntityOverrides<ENTITIES extends DomainEntity<string>, TYPE extends ENTITIES['type']> = Partial<Omit<EntityByType<ENTITIES, TYPE>, 'type'>> & {
8
6
  type: TYPE;
9
7
  };
10
- export type DeclaredEntitiesDefaults<ENTITIES extends DomainEntity<string>> = {
11
- [K in ENTITIES['type']]: EntityDefaults<EntityByType<ENTITIES, K>>;
12
- };
13
- type ExpandDefaults<ENTITIES extends DomainEntity<string>, ALIASES extends Readonly<Record<string, ENTITIES>>, ALIASED_DEFAULTS extends Partial<Record<TypeOrAlias<ENTITIES, ALIASES>, Record<string, unknown>>>> = {
14
- [K in ENTITIES['type']]: ExtractFromAliasedRecord<ENTITIES, ALIASES, ALIASED_DEFAULTS, EventualAlias<ENTITIES, ALIASES, K> | K> extends infer DEFAULTS_FROM_ALIAS ? [
15
- DEFAULTS_FROM_ALIAS
16
- ] extends [never] ? Record<never, never> : unknown extends UnionToIntersection<DEFAULTS_FROM_ALIAS> ? never : UnionToIntersection<DEFAULTS_FROM_ALIAS> : never;
17
- };
18
- export type AliasedEntitiesDefaults<ENTITIES extends DomainEntity<string>, ALIASES extends Readonly<Record<string, ENTITIES>>> = {
19
- [K in TypeOrAlias<ENTITIES, ALIASES>]?: Partial<EntityDefaults<ExpandAlias<ENTITIES, ALIASES, K>>>;
20
- };
8
+ /** The function a project creates recipes with, `phx.domain.createRecipe`. */
21
9
  export type RecipeFactory<ENTITIES extends DomainEntity<string>> = <TYPE extends ENTITIES['type']>(overrides: EntityOverrides<ENTITIES, TYPE>) => EntityRecipe<EntityByType<ENTITIES, TYPE>>;
22
- type ConflictingDefaults<PROVIDED extends Record<string, Record<string, unknown>>, EXPECTED extends Record<string, Record<string, unknown>>> = OmitEmpty<OmitNever<{
23
- [TYPE in keyof PROVIDED | keyof EXPECTED]: TYPE extends keyof EXPECTED ? TYPE extends keyof PROVIDED ? PROVIDED[TYPE] extends EXPECTED[TYPE] ? never : OmitNever<Exclude<EXPECTED[TYPE], PROVIDED[TYPE]>> : EXPECTED[TYPE] : never;
24
- }>>;
25
- type Build<ENTITIES extends DomainEntity<string>, PROVIDED extends Record<string, Record<string, unknown>>, EXPECTED extends Record<string, Record<string, unknown>>> = Record<string, never> extends ConflictingDefaults<PROVIDED, EXPECTED> ? {
26
- build: () => RecipeFactory<ENTITIES>;
27
- } : {
28
- /**
29
- * DO NOT USE in runtime!
30
- *
31
- * This is just a dev-time tool to review which defaults you forgot to provide.
32
- * Use your IDEs code-completion to see which entities have missing expressions
33
- * and which expressions these are.
34
- *
35
- * Use the helper when you see the following error on the `.build()` method call:
36
- * ```
37
- * TS2349: This expression is not callable.
38
- * Type never has no call signatures.
39
- * ```
40
- * simply
41
- * ```ts
42
- * .withDefaults({...})
43
- * ._conflicts.Oven. // <- trigger code-completion here
44
- * ```
45
- */
46
- _conflicts: ConflictingDefaults<PROVIDED, EXPECTED>;
47
- };
48
- export declare const RecipeFactoryBuilder: {
49
- forAliases: <ENTITIES extends DomainEntity<string>, ALIASES extends Record<string, ENTITIES>>(aliasMap: AliasMap<ALIASES>) => {
50
- forEntities: (entityReflections: ReadonlyArray<ENTITIES extends any ? DomainEntityReflection<ENTITIES> : never>) => {
51
- withDefaults: <ALIASED_DEFAULTS extends AliasedEntitiesDefaults<ENTITIES, ALIASES>>(entitiesDefaults: ALIASED_DEFAULTS) => Build<ENTITIES, ExpandDefaults<ENTITIES, ALIASES, ALIASED_DEFAULTS>, DeclaredEntitiesDefaults<ENTITIES>>;
52
- };
53
- };
54
- };
55
- export {};
10
+ /**
11
+ * Creates the recipe factory of a domain from the `defaults` of its spec.
12
+ *
13
+ * Defaults declared for an alias apply to every entity type of the alias, and a later key overrides
14
+ * an earlier one. The defaults of an entity type must be a whole entity of that type: they are
15
+ * validated here against the entity's schema, so a domain with invalid defaults fails when its
16
+ * module loads. An entity type without defaults is not checked.
17
+ *
18
+ * `ENTITIES` is the only type the result depends on, and no argument determines it, so the caller
19
+ * states it.
20
+ *
21
+ * @param defaults Property values by entity type or alias.
22
+ */
23
+ export declare const createRecipeFactory: <ENTITIES extends DomainEntity<string>>(aliasMap: AnyAliasMap, entityReflections: ReadonlyArray<ENTITIES extends unknown ? DomainEntityReflection<ENTITIES> : never>, defaults: Readonly<Record<string, Readonly<Record<string, unknown>>>>) => RecipeFactory<ENTITIES>;
@@ -1 +1 @@
1
- import{_unsafeBuildDomainEntityId as e,expandAlias as r}from"../model/index.js";export const RecipeFactoryBuilder={forAliases:t=>({forEntities:o=>({withDefaults:i=>{let a={};Object.entries(i).forEach(([e,o])=>{r(t,e).forEach(e=>{a[e]={...a[e],...o}})});let n=new Map(o.map(e=>[e.type,e._meta.validator]));return Object.entries(a).forEach(([r,t])=>{let o=n.get(r);if(!o)throw Error(`Defaults provided for unknown entity ${r}`);if(!o({id:e(r,1),type:r,...t}))throw console.error(o.errors,t),Error(`Invalid defaults for ${r} entity.`)}),{build:()=>r=>({id:e(r.type,1),...a[r.type],...r})}}})})};
1
+ import{_unsafeBuildDomainEntityId as e,expandAlias as r}from"../model/index.js";export const createRecipeFactory=(t,o,i)=>{let a={};Object.entries(i).forEach(([e,o])=>{r(t,e).forEach(e=>{a[e]={...a[e],...o}})});let n=new Map(o.map(e=>[e.type,e._meta.validator]));return Object.entries(a).forEach(([r,t])=>{let o=n.get(r);if(!o)throw Error(`Defaults provided for unknown entity ${r}`);if(!o({id:e(r,1),type:r,...t}))throw console.error(o.errors,t),Error(`Invalid defaults for ${r} entity.`)}),r=>({id:e(r.type,1),...a[r.type],...r})};
@@ -1,32 +1,19 @@
1
1
  import type { ExpressionMeta } from '../expression/index.js';
2
- import { type AliasMap, type DomainEntity, type DomainEntityId, type TypeOrAlias } from '../model/index.js';
2
+ import { type AnyAliasMap, type DomainEntity, type DomainEntityId } from '../model/index.js';
3
3
  import type { DomainState } from '../state/index.js';
4
- interface AllOfType0Relation<ENTITIES extends DomainEntity<string>, ALIASES extends Record<string, ENTITIES>, TARGET extends TypeOrAlias<ENTITIES, ALIASES>> {
4
+ /** A relation whose related entities are all entities of the target type or alias. */
5
+ export interface AllOfTypeRelation {
5
6
  kind: 'allOfType';
6
- target: TARGET;
7
- cardinality: '0-1';
7
+ target: string;
8
+ cardinality: '0-1' | '1-1' | '0-N' | '1-N';
8
9
  meta?: ExpressionMeta;
9
10
  }
10
- interface AllOfType1Relation<ENTITIES extends DomainEntity<string>, ALIASES extends Record<string, ENTITIES>, TARGET extends TypeOrAlias<ENTITIES, ALIASES>> {
11
- kind: 'allOfType';
12
- target: TARGET;
13
- cardinality: '1-1';
14
- meta?: ExpressionMeta;
15
- }
16
- interface AllOfTypeNRelation<ENTITIES extends DomainEntity<string>, ALIASES extends Record<string, ENTITIES>, TARGET extends TypeOrAlias<ENTITIES, ALIASES>> {
17
- kind: 'allOfType';
18
- target: TARGET;
19
- cardinality: '0-N' | '1-N';
20
- meta?: ExpressionMeta;
21
- }
22
- export type AllOfTypeRelation<ENTITIES extends DomainEntity<string>, ALIASES extends Record<string, ENTITIES>, TARGET extends TypeOrAlias<ENTITIES, ALIASES>> = AllOfType0Relation<ENTITIES, ALIASES, TARGET> | AllOfType1Relation<ENTITIES, ALIASES, TARGET> | AllOfTypeNRelation<ENTITIES, ALIASES, TARGET>;
23
11
  /**
24
12
  * Resolves `allOfType` relations from a per-state index. Relations targeting the same set of types
25
13
  * share one bucket; the first resolution on a state walks the entities once to fill every bucket,
26
14
  * and every later resolution on that state is a lookup. Registration closes once the first state
27
15
  * has been indexed, so a bucket can never be missing from an index that was already built.
28
16
  */
29
- export declare const createAllOfTypeRelation: <ENTITIES extends DomainEntity<string>, ALIASES extends Record<string, ENTITIES>>(aliasMap: AliasMap<ALIASES>) => (relation: {
30
- readonly target: TypeOrAlias<ENTITIES, ALIASES>;
31
- }) => (_selfId: DomainEntityId<string>, state: DomainState<ENTITIES>) => DomainEntityId<string>[];
32
- export {};
17
+ export declare const createAllOfTypeRelation: (aliasMap: AnyAliasMap) => (relation: {
18
+ readonly target: string;
19
+ }) => (_selfId: DomainEntityId<string>, state: DomainState<DomainEntity<string>>) => DomainEntityId<string>[];
@@ -1 +1 @@
1
- import{expandAlias as e}from"../model/index.js";export const createAllOfTypeRelation=t=>{let r=new Map,a=new WeakMap,n=!1;return o=>{if(n)throw Error(`Cannot register all-of-type relation targeting ${String(o.target)} after evaluation started. Create all relation expressions before evaluating the domain state.`);let i=new Set(e(t,o.target)),l=[...i].sort().join("|");return r.set(l,i),(e,t)=>(e=>{let t=a.get(e);if(t)return t;n=!0;let o=new Map([...r.keys()].map(e=>[e,[]]));for(let t of e.entities)for(let[e,a]of r)a.has(t.type)&&o.get(e).push(t.id);return a.set(e,o),o})(t).get(l)}};
1
+ import{expandAlias as e}from"../model/index.js";export const createAllOfTypeRelation=t=>{let r=new Map,a=new WeakMap,n=!1;return o=>{if(n)throw Error(`Cannot register all-of-type relation targeting ${o.target} after evaluation started. Create all relation expressions before evaluating the domain state.`);let l=new Set(e(t,o.target)),i=[...l].sort().join("|");return r.set(i,l),(e,t)=>(e=>{let t=a.get(e);if(t)return t;n=!0;let o=new Map([...r.keys()].map(e=>[e,[]]));for(let t of e.entities)for(let[e,a]of r)a.has(t.type)&&o.get(e).push(t.id);return a.set(e,o),o})(t).get(i)}};